<snapdata remixID="10749082"><project name="Snap! Blocks to Scratch Blocks Converter" app="Snap! 6, https://snap.berkeley.edu" version="1"><notes>this was part of a block pack. i don&apos;t know who made these blocks in the first place.</notes><thumbnail>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAC95JREFUeF7tnXd0VGUWwH9TwiSTIQUSSTAhSleIICDFpSorKKCAZSWEKkpRmiQKBBKBQASlhLIBZGkubWlyVgV1aS5l5QiIdCRIk5CEEEN6yMzseQOLwAZ8mLzzDsx95/BPuHNv3u/+5pXvfd+Lwel0OpFNCOhEwCAC6kReyroIiIAigq4EREBd8UtxEVAc0JWACKgrfikuAooDuhIQAXXFL8VFQHFAVwIioK74pbgIKA7oSkAE1BW/FBcBxQFdCYiAuuKX4iKgOKArARFQV/xSXAQUB3QlIALqil+Ki4DigK4EREBd8UtxEVAc0JWACKgrfikuAooDuhIQAXXFL8VFQHFAVwIioK74pbgIKA7oSkAE1BW/FBcBxQFdCYiAuuKX4iKgOKArARFQV/xSXAQUB3QlIALqil+Ki4DigK4EREBd8UtxEVAc0JWACKgrfikuAooDuhIQAW/Dn5WRRn5eNgFBoZg9yunaHHcoLgJe77LT6WDH5ytYlzQWT49CjNZQeo9KpMYTTdzBA932UQS8jn7f9i9ZPb0/b/eujK+PmZ/P5rN4dQZdBibQvEM3DAaDbk16kAuLgEDOlUziIv9ExzYmNm69gt1hJrymkZbN/ElakkKn/h/SsmMEiIRl/l0QAYG1c+M59u18MrOcdB/1CdXrNGLtvElcOLiWHq8GkbgghYjoJBq06lDmDXD3hCIgkDCwExkpZ3npjfdo3jHCdbp1OOyM7/tnIp/Pxmw2MHNhOoM+XEX18Mbu7kyZ7r8ICBRfLXJBvfmu9+xPh5g+tBPjRlTGp7yZg0ezWbQmn/eTvqBSSNUybYI7JxMBS+j+meM/MntkJK+0M9Kkge+NiC07L7N5j43R8zfiXd7Pnb0ps30XAW9C6XA42LVxFWvnxBDZxZfHa3mTnWPH39eMh4cR5Q/bLl+XQmpRfYZM+buME5aBhiLgdYiF+XksmTyC84c+p3+PylxMK2L5ZxmYPAPxcKQxuN/DBAVaKC52MnPBOSqFdyNiWDwGg7EM2uC+KURA4GphATOiuuHLj7zeOYjtuzL5dp+ZARMW8ujjT/Lvfy7n6yUxjBkWhpenkdw8O5MST9O25wTadOnzf/Yo+YxmMyaT2X3NUrnnIiCwd9sXzIvtTc2qVi6mO6lcsxl9YxLxCwhyYVT+qPzCSUOwZH1F5CvBrp+lphcx5a8X6BO7mLpN2tzArZzGpw59hUqh1egZPUXGDn9HRBEQUE6/+779AqvNl9AadfALCObyxfPMHNmD8KbP0rnf+xTk5RAX+TQjB1XgoYBrz4hPnMoj6dNMhk1fR1jNJ1w/+/VSKuN7NsajnJkxi76jvH+AymOBe4aJgHfo+8Hdm/l6/htYrSbsPi3o/8Fc1i+YjP38crp1uXZkVLY9+6+wepOD0fM24f9QMMf27WTd1G6uoZvmkUnUb97OPc1Sudci4B1AZaanMLFPMz4YEcKilRcoF/QcHXoOYcbQ9kwaGUa5ctduPpQ74y83X2LvyWCiZ61n8+pPyDo6Fz9fM3l+r/PqoFiVrXDPMBHwDn1XrvumvNOZZ+ufJby2jTmLzvPr1VDSfjnNiLcqUaOq9abrPidL/nGBw6e8MRRn8u6AymRcvsrn34Uwcs4G9zRL5V6LgLeBOrp3B0unRFHvT8+5bkJO75zKgF4hFNud/HAwm/TLRbR+2h8vT9Mtn7TbnSSfySe0ssX1f1lXihmfmMHEVXvxtHqrbIf7hYmAt/X83MkjfDSwLY2ftPHD4XwahFuJ6PrbNZ9aRZRT89jJyfSdsIGqdRqq/ZjbxYmAt7VcmYTw8ZCXaVL9FM2e8sVsMmA0/rG5gOu/TKOo4mv8ZfA4txNL7Q6LgCWQUp4Fz4nuyPjoMDwtf/xJxy8phcxe7iB+2S5MZhmULklKEbAEKsoNSGJ0dxpWOUyLpn980oHy2O6DqT/TZchcGspcwhIPiiLgHc4VR/ftYN3HEcQMe1Tt2aTEuJM/55G0LIexC7feeLJSqoQP2IdFwDs0VHmiMbHPUySMesQ1IbU02/qNaaTaW9B/3DxZW3IbSBHwDmZ9vWoeBzYmEDUwrNRLQfIL7IyZfIZ3Z33Dw1Vrl8blB+6zImAJLc24eI74vq15f1AgQQ9ZyqTpGzalke39IpEjJpdJvgcliQhYQifnjxtIkHE7L7YLLLM+p6YXMn3xVeKX/wezh0eZ5b3fE4mAt3UwOzOD2O6NiBseTF6Bg6MncrmSU8yzzSu4Jhj8b3PawslwNMTLfhTvwj3KU+FbM1mrk2FogUfRCXyu7qawqJjRCWeJTtpCUJVq97s3Zfb7i4C3oTyw6xvmxXR3LU4HA3VqeXPkRC7PP1ORFk39r0UbrZy2vEf8oAgqhYQxLqoKZnvqb5kMJi4FTmJM39eweFlJiGuMl/MMUeNOYLBUIvZv3+BToeyOrmVmgw6JRMCboB/bv5P5sf2o/UgR7doEEBJsYf+hbFZtuEjciGrYvK8//zVaOWeLIeGdHgSHVWP02xUwFd8qYGbQFGLfjMDL28b4UfUwFSYzetJP1K7hTaF3SwbGL5Dp/MpX3KmMuspG8uG9zI5+lX7d/KlTy+YisvfAFZatTWHoW2GEhXjeSslWl2xLSyyFBymXs6OEU3A1cq3tMOYfwyt3G79mFTFh2iliR1RlwvSzRCVtk1OxCHjNKWUNx/g32vJSq1wa1fO5Vb43qxAW6lXqr+j23ZkcOprD231DWbH+IrZa/enU+91S573fE8gRUJnV/K/P2LZ0KFGDwlwTD46dzGXe0vMMuwf5lOlYJlPJA9bKOGDclFM809yf9s8EsO9gNtuP1GL41BX3uz+l/v1FQGBGdHea1zhCo/o+pKQWkjDzDNUf8WRwvyqqB6E3bErHaIRmDX1dNzDKOmJlU8RcvPICqQW1yDh3gFFDQkk+nc+e0/UY/OGSUjfwfk8gAgLxb7bn5daXXDcZiQt+oX2vOLasXcBLrQpp0vC3NyPcrdnKlfTx5FzXsE21R6088ZiNgkIHy9akkGEPZ/DkpWxcNpvta2ZhNJnpFfOJrBeRa8BrSu3+ag0rpw3HiZkuA+Jo3bkX504eZsbwrvTsaqN+3fL3dKBRZk8fP5nL8nVphNXvSM/oj/C02lzLO1PPncJk9iCwcpV7yvmgBssR8Pq636yMVNeRyeemZZTJh75n1nvd6Pe6D3VrKwLBqTP5fH8gi4r+HtSo6u06aiqvDSwscpCWXsSxn3L54UguFt8adOobRYOWz8twy12+PSLgXeA4HQ5ie7am94sFVHnYwsrPUl1vTWhQrzwOx7VhGuW6z9/Xg6vFTjysQbTu0ps6jVsTVrOuS2jZ7k5ABLwLn7ycLOIiniJ2WCCfrkmhyNqU5MPf07mthfMpBRw44YnJZKRDSyfBQeVYszWQmPkbxbl7ICAC3gVWfs4VxkY0on5tSMmvw7CPVzDxrRcIsp3hyPEcXugTy+ONWzFtaFea1DOw95iFyWv2yTthRMB7IHC3U7DTyYrEMRz+bqtr0blfQCW2rF3IsmkjXa/xmLhyFz7+gVw8e5JFCcOx+VVg8KTF8j6Ye8AvR8DfgaXcuTrsxa47V2VTXj50fP8uyvtVJKTaYzc+rcQp/4zKRaFsqgmIgKpRSaAWBERALahKTtUEREDVqCRQCwIioBZUJadqAiKgalQSqAUBEVALqpJTNQERUDUqCdSCgAioBVXJqZqACKgalQRqQUAE1IKq5FRNQARUjUoCtSAgAmpBVXKqJiACqkYlgVoQEAG1oCo5VRMQAVWjkkAtCIiAWlCVnKoJiICqUUmgFgREQC2oSk7VBERA1agkUAsCIqAWVCWnagIioGpUEqgFARFQC6qSUzUBEVA1KgnUgoAIqAVVyamagAioGpUEakFABNSCquRUTUAEVI1KArUgIAJqQVVyqiYgAqpGJYFaEBABtaAqOVUTEAFVo5JALQiIgFpQlZyqCYiAqlFJoBYEREAtqEpO1QREQNWoJFALAiKgFlQlp2oCIqBqVBKoBQERUAuqklM1ARFQNSoJ1IKACKgFVcmpmsB/Aa6eIuSbbduhAAAAAElFTkSuQmCC</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="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" scheduled="false" id="1"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list struct="atomic" id="2"></list></costumes><sounds><list struct="atomic" id="3"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites><sprite name="Alonzo" idx="1" x="0" y="2.842170943040401e-14" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" costume="1" color="80,80,80,1" pen="tip" id="8"><costumes><list id="9"><item><costume name="alonzo (vector)" center-x="47.5" center-y="61.5" image="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iOTVweCIgaGVpZ2h0PSIxMjNweCIgdmlld0JveD0iMCAwIDk1IDEyMyIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgOTUgMTIzIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnIGlkPSJJRDAuODMyMzgyOTczNzQ5MTkwNiIgdHJhbnNmb3JtPSJtYXRyaXgoMSwgMCwgMCwgMSwgMCwgMykiPg0KCTxwYXRoIGlkPSJSX0xlZyIgZmlsbD0iI0ZGQzkzRSIgc3Ryb2tlPSIjNjAzODEzIiBzdHJva2Utd2lkdGg9IjMiIGQ9Ik00Ny4zMTYsMTA0LjI1MWMwLTEuMjc2LDAuMzU4LTMuMTA5LDIuMzM4LTMuNTIzDQoJCWMyLjg1Ny0wLjU5OSw2LjEyNiwyLjI5Myw3LjAxNCwzLjE0NmMtMC4wNjUsMC4zMzgsMS4wNDcsNy4xNzMsMS4wNDcsNy43NjVjMCwyLjAwNC0wLjUzNSwyLjA4My0wLjc0MywyLjExNg0KCQljLTEuOTU2LDAuMjg0LTcuMTY5LTUuMTk3LTkuNTYyLTguMzg3QzQ3LjM3NiwxMDUuMTkzLDQ3LjMxNiwxMDQuODA5LDQ3LjMxNiwxMDQuMjUxTDQ3LjMxNiwxMDQuMjUxTDQ3LjMxNiwxMDQuMjUxeiIvPg0KCTxwYXRoIGlkPSJDZW50ZXJfTGVnIiBmaWxsPSIjRkZDOTNFIiBzdHJva2U9IiM2MDM4MTMiIHN0cm9rZS13aWR0aD0iNCIgZD0iTTM5LjM5NCwxMTMuODI3Yy0xLjQxOC0xLjUzOC0xLjYyMS01LjcwNy0xLjYyMS03LjQ4Mg0KCQljMC0wLjc1MiwwLjAzOS0xLjI1MywwLjA0MS0xLjI2OGwwLjAwMi0wLjAzOWMwLDAtMC4wMDQtMC4xNi0wLjAwNC0wLjIxOWMwLTMuMzQxLDMuMDc1LTQuNTAxLDMuNTk3LTQuNjc1DQoJCWMxLjc4MSwwLjAyMSw0Ljg1OCwwLjg2NCw1LjU5MywyLjEzNmMwLjA3NSwwLjEyOCwwLjE0NCwwLjI4OSwwLjE0NCwwLjQ5NWMwLDAuMTgxLTAuMDU0LDAuNC0wLjIwOCwwLjY2Ng0KCQljLTAuMDcxLDAuMTIxLTEuMzM1LDMuMTA5LTIuNDA1LDUuNGwtMC43NjUsMi4xMTljLTAuNTcyLDEuODUxLTEuNDczLDMuNzAzLTIuNDUyLDMuNzAzDQoJCUM0MC41NDIsMTE0LjY2NiwzOS45MTQsMTE0LjM5MiwzOS4zOTQsMTEzLjgyN0wzOS4zOTQsMTEzLjgyN0wzOS4zOTQsMTEzLjgyN3oiLz4NCgk8cGF0aCBpZD0iUl9Bcm0iIGZpbGw9IiNGRkM5M0UiIHN0cm9rZT0iIzYwMzgxMyIgc3Ryb2tlLXdpZHRoPSIzIiBkPSJNNzkuNTA1LDg5LjYxMWwtMS4zODMtMi40NA0KCQljLTEuNTE2LTIuNjM3LTMuMjY1LTUuMDUyLTQuODA3LTcuMTc3Yy0xLjk4My0yLjczOC0zLjcxLTUuNTcxLTQuMjgxLTcuNTcyYy0wLjIwNy0wLjcyMS0wLjEwNy0xLjQxLDAuMTg5LTEuNzkNCgkJYzAuMDI4LTAuMTAyLDAuMzI3LTAuMjY1LDAuNTM5LTAuMzA5YzIuNTQxLTAuNTUsMTMuMDYsNS40OTEsMTUuNjg1LDguNzE5YzMuODQ1LDQuNzI3LDUuMzgyLDExLjM1OCw0LjUyNCwxNC42OTkNCgkJYy0wLjM1MiwxLjM2NC0xLjEzOSwyLjMzMi0yLjI3OCwyLjc5M0M4NC43ODIsOTcuNzEsODIuODY3LDk1LjU4Niw3OS41MDUsODkuNjExTDc5LjUwNSw4OS42MTFMNzkuNTA1LDg5LjYxMXoiLz4NCgk8cGF0aCBpZD0iQm9keSIgZmlsbD0iI0ZGQzkzRSIgc3Ryb2tlPSIjNjAzODEzIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iDQoJCU0zOC4wOTcsNDMuMDA3YzAsMC0zLjExLTkuNjI5LTYuMDExLTEzLjU5OGMtMS43Mi0yLjc5LTQuMi02LjI2Ny03LjQ3Ny02LjA0OWMtNC4wNjcsMC4xMDYtNi4yODMsNC45ODQtMTAuMjk5LDYuNTQ1DQoJCWMtMi42MDIsMS4wMDMtOS40NjEsMi4zMTQtOC40MDYsMGMyLjgxMy01LjgxNCwxNC4wNC05LjA3OSwxNi44NDQtMTYuMzc5YzEuMjYzLTMuMzA1LTQuMjcyLTcuMjUyLTcuOTQxLTcuOTQyDQoJCWMtMi43NDUtMC41MDEtNC4wMzksNC4yMTctNi41NDUsNS42MTVjLTEuMTUxLDAuNjQzLTQuMzM5LDEuMzA1LTMuNzUzLDBDNi42MjksNi44MzYsOS4wNTIsMS4xNzIsMTMuODQ1LTAuNDk1DQoJCWMzLjYxNy0xLjI1NCw3LjU2MiwyLjQ3MywxMC4yOTksNS4xMTljOC40NjQsOC4xODUsMTUuNjE3LDE3LjkzOCwyMy4yNCwyNi42NWw0LjUxMSw1LjEzOWMwLDAsMy4yMjUsMy45NTYsNS42OTIsNi41NjYNCgkJYzAuMDQ0LDAuMDQ1LDIuMzc4LTAuMzE3LDMuOTg5LTEuNjU3YzEuMzE0LTEuMDk2LDEuMTQxLTIuMzIzLDEuNTU5LTQuOTAyYzAuMzg0LTIuMzcxLDAuODAyLTYuNjU5LDIuMDcyLTYuNjgxDQoJCWMxLjkxNi0wLjAyOSwzLjE3Niw3Ljg2OCwzLjY2NiwxMC43OTNsMC4yNzIsMS41NjVjMC42NDMsMy40NzksMy45OTksMTMuOTQsNC4xNDQsMTQuMzg0YzAuMDQ2LDAuMTA4LDAuMTIxLDAuMjQ5LDAuMTIxLDAuMjQ5DQoJCWwwLjAyNywwLjA1NmwwLjAzOCwwLjA0N2M1LjE4NSw2LjQyOSw5LjAzOCwxNC4yMjMsOS4wMzgsMjEuNTI0YzAsMTUuNDY0LTEzLjU1NSwyNi4zNDktMzEuNjk3LDI2LjM0OQ0KCQljLTMuMzY1LDAtNi42NTctMC40NzMtOS43ODMtMS4zOThsLTAuMTY4LTAuMDQ5YzAsMC00LjkwOC0wLjQxMi0xMS4xODYsNy44NGMtMS4yNiwxLjY1Ny0xLjE0NywzLjIwMS0yLjkyMiwyLjcyNg0KCQljLTAuNTkyLTAuMTU4LTEuMDI2LTAuNTkzLTEuMzgyLTEuMzgzYy0wLjg0OC0xLjg4NC0wLjIyMi02LjM0NywwLjgxNi05LjE5N2wwLjE2My0wLjQ0OGwtMC4zNzUtMC4yOTcNCgkJYy0wLjA5Mi0wLjA3My0xMC4yNzQtNy40OTMtMTEuMzAzLTE4LjEyNWMtMC44OTYtOS4yNjgsMy43ODUtMTQuNTQ1LDUuNzI4LTE3LjQ0NGwxLjExNy0xLjg1OA0KCQljMS40MDktMy40MjgtMS4yNDMtOC4xOTUtMy41ODMtMTIuNDAxYy0xLjM5Ny0yLjUxMS0zLjY1Mi02LjE3Ni0zLjE0My03LjAzOGMwLjU2NS0wLjk1NCwyLjU4NSwwLjA2Miw0LjYyNSwxLjAzNA0KCQljMS42NTQsMC43OTEsMy4yNDUsMS45MDgsNC4zNSwxLjE3MWMxLjE0OS0wLjc2NSwwLjM5Ni0yLjY4Ni0wLjY0OS01LjM0NmMtMC45ODItMi40OTgtMi44NDEtNi40NDMtMi4xMjctOC4wNzINCgkJYzAuMTk3LTAuNDQ3LDAuNTQyLTAuNzYyLDEuMDU1LTAuOTYxYzEuODk3LTAuNzM0LDQuNjA5LDIuNDYxLDYuODA1LDQuOTYxQzMxLjUzMiw0MS40NjksMzQuNTcsNDQuOTI3LDM4LjA5Nyw0My4wMDcNCgkJTDM4LjA5Nyw0My4wMDdMMzguMDk3LDQzLjAwN3oiLz4NCgk8ZyBpZD0iTF9FeWUiPg0KCQk8cGF0aCBpZD0iV2hpdGVfMV8iIGZpbGw9IiNGRkZGRkYiIGQ9Ik00MS4yMjgsNzkuNDg5YzAsMi43ODksMi4yNjMsNS4wNSw1LjA1NCw1LjA1YzIuNzkxLDAsNS4wNTEtMi4yNjEsNS4wNTEtNS4wNQ0KCQkJYzAtMi43OTEtMi4yNjEtNS4wNTYtNS4wNTEtNS4wNTZDNDMuNDksNzQuNDM2LDQxLjIyOCw3Ni42OTgsNDEuMjI4LDc5LjQ4OUw0MS4yMjgsNzkuNDg5TDQxLjIyOCw3OS40ODl6Ii8+DQoJCTxwYXRoIGlkPSJQdXBpbF8xXyIgZmlsbD0iIzYwMzgxMyIgZD0iTTQ2Ljk2MSw3NS43OTZjMC45ODEsMCwxLjg3LDAuMzk4LDIuNTEzLDEuMDQzYzAuNjQ1LDAuNjQzLDEuMDQyLDEuNTMyLDEuMDQyLDIuNTEzDQoJCQljMCwwLjk4MS0wLjM5NywxLjg3LTEuMDQyLDIuNTE0Yy0wLjY0NCwwLjY0NC0xLjUzMiwxLjA0Mi0yLjUxMywxLjA0MnMtMS44Ny0wLjM5OC0yLjUxMy0xLjA0Mg0KCQkJYy0wLjY0NS0wLjY0NC0xLjA0Mi0xLjUzMi0xLjA0Mi0yLjUxNGMwLTAuOTgsMC4zOTgtMS44NywxLjA0Mi0yLjUxM0M0NS4wOTIsNzYuMTk0LDQ1Ljk4LDc1Ljc5Niw0Ni45NjEsNzUuNzk2TDQ2Ljk2MSw3NS43OTZ6Ig0KCQkJLz4NCgk8L2c+DQoJPGcgaWQ9IlJfRXllIj4NCgkJPHBhdGggaWQ9IldoaXRlIiBmaWxsPSIjRkZGRkZGIiBkPSJNNjUuNTY4LDc5LjQ4OWMwLDIuNzg5LDIuMjYyLDUuMDUsNS4wNTQsNS4wNWMyLjc4OCwwLDUuMDUyLTIuMjYxLDUuMDUyLTUuMDUNCgkJCWMwLTIuNzkxLTIuMjYyLTUuMDU2LTUuMDUyLTUuMDU2QzY3LjgzLDc0LjQzNiw2NS41NjgsNzYuNjk4LDY1LjU2OCw3OS40ODlMNjUuNTY4LDc5LjQ4OUw2NS41NjgsNzkuNDg5eiIvPg0KCQk8cGF0aCBpZD0iUHVwaWwiIGZpbGw9IiM2MDM4MTMiIGQ9Ik02Ny43NDUsNzkuMzUyYzAsMS45NjQsMS41OSwzLjU1NSwzLjU1NiwzLjU1NWMxLjk2MywwLDMuNTU2LTEuNTksMy41NTYtMy41NTUNCgkJCWMwLTEuOTYyLTEuNTkzLTMuNTU2LTMuNTU2LTMuNTU2QzY5LjMzNSw3NS43OTYsNjcuNzQ1LDc3LjM4OSw2Ny43NDUsNzkuMzUyTDY3Ljc0NSw3OS4zNTJMNjcuNzQ1LDc5LjM1MnoiLz4NCgk8L2c+DQoJPHBhdGggaWQ9IkxfQXJtIiBmaWxsPSIjRkZDOTNFIiBzdHJva2U9IiM2MDM4MTMiIHN0cm9rZS13aWR0aD0iMyIgZD0iTTYuMzQxLDk4Ljk5NGMtMS4wMzYtMC42NjEtMS42MzMtMS43NTMtMS43MjktMy4xNjENCgkJYy0wLjIzNC0zLjQ0NSwyLjQ5Mi05LjY4Miw3LjEzNC0xMy42MjZjMy4xNy0yLjY5NCwxNC42MTctNi43MDcsMTcuMDE0LTUuNzAzYzAuMTk4LDAuMDgzLDAuNDYzLDAuMjk3LDAuNDcyLDAuNDA0DQoJCWMwLjIyNCwwLjQyNywwLjE5NCwxLjExOS0wLjE0LDEuNzkxYy0wLjkyNywxLjg2NC0zLjE0Miw0LjMzNS01LjU5NCw2LjY2Yy0xLjkwNiwxLjgxNC00LjA2NSwzLjg2My02LjAzNSw2LjE4MWwtMS44MDcsMi4xNDENCgkJQzExLjI1OSw5OC45NDMsOC45ODYsMTAwLjY4NSw2LjM0MSw5OC45OTRMNi4zNDEsOTguOTk0TDYuMzQxLDk4Ljk5NHoiLz4NCgk8cGF0aCBpZD0iTW91dGgiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzYwMzgxMyIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik02My4xNDgsOTUuMzkxDQoJCWMwLDAtNC41OTksMC4wMDQtNy44MTktMi43NTYiLz4NCjwvZz4NCjwvc3ZnPg0K" id="10"/></item></list></costumes><sounds><list struct="atomic" id="11"></list></sounds><blocks></blocks><variables></variables><scripts><script x="21" y="14.5"><block s="receiveGo"></block><block s="bubble"><l>Welcome back to the Snap! blocks to Scratchblocks converter!</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>Welcome back to the Snap blocks to Scratchblocks converter!</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="bubble"><l>For it to work, look inside this project.</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>For it to work, look inside this project.</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="bubble"><l>And make sure JavaScript extensions are turned on!</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>And make sure Java Script extensions are turned on!</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="bubble"><l>Then click on the sprite "Converter".</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>Then click on the sprite "Converter".</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="bubble"><l>Afterwards, follow the steps inside.</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>Afterwards, follow the steps inside.</l><l>en-US</l><l>1</l><l>1</l></custom-block><block s="bubble"><l>Then your code will be turned into Scratchblocks!</l></block><custom-block s="speak %s with %txt accent %br and pitch %n rate %n and wait"><l>Then your code will be turned into Scratchblocks!</l><l>en-US</l><l>1</l><l>1</l></custom-block></script></scripts></sprite><sprite name="Converter" idx="2" x="0" y="0" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="2" color="80,80,80,1" pen="tip" id="58"><costumes><list id="59"><item><costume name="costume1" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==" id="60"/></item><item><costume name="costume2" center-x="86" center-y="90.19999999999999" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAACtCAYAAAAtbZR9AAAAAXNSR0IArs4c6QAAE0FJREFUeF7tnQewdVdVx38QJAGkiFQFBWmJoUlVIAQQUIoiCCg1FKUIMqEYRhAbGIcIhEGkZBSMNAWkKEYQBWkKBKUIUmJUmgoCKkJiUNT5feybvPe+9+49Ze3T7lozd14m3zlr7/0//3vu3qteiJQ2CFwOuA1wM+DbgEsB3wxconwuBhwFHFmUngf8F3Au8NXy+QrwZeCfgPcCfw58oc0ktvnaC23z4tes/c7AHYBjgasBVyjEPKISXl8HJPLngX8EPgK8GTij0nizVZuEhYsD9wB+tLw5rwRceCJP9H+Bfylv4t8HXgOcM5G5jTKNbSXsCYCf6wOXBeaCw/8BXwI+BJxePqMQZ6xB5/KgIvC5J/AY4ObARSMUTkDH14D3AM8BXj2B+VSfwtIJ+4PA44FbAh6Iliwe7N4FPBN441IXukTCXgZ4KvCgclBa6rNbty4PcL8NPAX49yUBsCTCXhv4deB2wEWW9JB6rOV/gLcAPw18ooeeydy6BMLeETilHKCWsJ4a5PCw5kHtJOBPagwwlM45P+BHAT8HaIZKaY6AZrKnAb/R/JbpXDlHwt4WeHkStTeJJO59gbf21jSggjkR9juBl5UT/4AQLX4oLQv3Az45h5XOhbDPAx4G1HKNzuFZ1ZyjruHTgJ+qOUiE7qkT9v5lr2WQSUp9BAzK8Wzw0vpDdRthqoTVXarx+6bdlpV39UTgTECni27gSckUCXurQlZD9lLGQ8BwSEn7zvGmcPjIUyPsM4DHTihaakrPaoy5GC12KvCEMQbfb8ypEDa3AFNhxP7zmMwWYQqEzS3AtMm6mt0ktghjE9YglSflFmAejAXcIpxcgmpGmfSYhH0VYIzqHMU8LU/QnwL+A/jPkq/lXz/+P+XSwCXLx0Ok/+3/+44SOG7+1xzF2Nt7jTHxsQj7NuDWYyy45ZgGSH+6pKiYMPgO4K9a6th0+Y2B40p6jsmNV51JgPnbgeM3LS7638cg7N8A141eSJA+92kfBd4EvLJEOAWpbqXG1J17Az8AHFMyclspGOjiDwPXG2isQ8MMTVjfVlcZcoENxvrvkmaiSe31Da4f45K7FdOS6T3fNMYE1oz5mfKrMMi0hiKs+fx/V/ZvgyxswyDGh54FPBd4PmCg8xzEwPRHAo8GrjXCC+cgjNyzX3OI+gpDEFayejiZQk6Ve9I3AI+bS3TSmm+R0WvPAu46kT2vOWUeJqsWBalNWLNTXYCn4zHl30pmqSYZSbskEWNNg2YEf8vIC9NC4guqGsa1CfvZUtJnLBytovLkEvA91hyGHNeA7F8p1WqGHHfnWJZg+vZag9ck7AdLnlWtua/T62n/ROA3xxh8AmP+BPDsEa0L5o/doAYOtQirjU7b4tCiJ8ashIfM6CBVCyMPaC8q2QRjlF7SZh1ua69BWONYtR8OLQZomOrh6T/lAgS0JvglHiO2WHu2IYphEk1YC5ZZWG1I0STlG/UlQw46w7EeUN64Q9dssICdhfZCJJKwDy6AhEysoRLNZbfPt2pDtL5hu/3TYn5qfFPAhb5QXhygJ8zTdQ3gYwNXXHkdcPcIELZQx2uBHxlw3f4KHg2c3XfMqDesZXD89g4hulL9efu9IQZb8Bg/VrZRQ7l6PVtYTqqXRBBW09FDe82i+c0apm+ylDpRzZdd7UoJ9L4BHTu/BWhy6yx9CWu2gCasvnqaLECDtGT95yYX5zWNEbhyIa09G2qLMRyaujonNvYhms0oJI9/a8vHyx6o9jjbrN8zyHUGAMBSoH5J/Nta+hB2KOeApXR8k6fUR8A3n8Wfa0tnp0JXwpoeYYBzbbECiQeslOEQ0J5txZ3aYoC6aVKtpCthjX6y0nVNcTEuKmV4BHwZ1c7ZsjJ46+iyLoQ1BtNiFzXFortjuHdrrmluunWrWiy6plikw9jkxtKWsG6W9S7VdO+9G/i+xivIC2si8JfA91YcQIeCQd+NLT9tCWvxW1tX1hIdEEOcVGvNf4l6tdD0NvivAcbWpRapbiRtCHuLYj9rc0+jSZSLzAuyTeaiup60AWCi13pWMRDeego1RNusVqC/aKK8DfncCpgzX0OMY/ULYZO0lOkhYLauhKoVV2s2tVuDjdKUsBa5NcO0lpi5Ovnqz7UWPxO9VkE3Y7eWmAm8sVFIU8KaSPitlWYaEhRRaW6pdjcCNYOcvlgSGNdi3oSwGpFrBUeHhZ0lswZBoHYYqU6iteXqmxC2ZrUWf2JeMAjUOUgUAo8oxUei9O3Us7GKzCbCajjWgFxDPgB8Tw3FqbM6Au8HblhpFB1GB3Zr3ERYi30dW2FiWgXUa4RQyvwQMHvgI5WsBuo9sFjgOsL6DfrrSrGu+qqNeE+ZLwJmfNSI9dAueyPAX+DDZB1htbvVcJGeUywOFgVOmS8CFmP2ZH/xCkvQJaxdvjFhLTXjYWvTlqHLXLXpatNLmT8C2s432k47LNO3rE4qS13tkoMI+WuVWt3o4rt6hwXkLdNF4B8q1fKyXu/PNCWs+VNGZkWLqcVTLRocvdZt0WexZVPuo8UIrsPyzPZ7w1p31G9N9HbAduc1vgTRQKW+9ghIriu1v23tHW4L/DXe1WV8P1IaVGvlv2gxFdziZCnLQ8DKLqZwR4sVGHclC+xHWN+EVwwe2ZQaux2mLBcB20C1TnnZAMfn9r659xLWV/DfV8D0icApFfSmyukgcBLw9ArT+a6yRT2kei9hDSHU7BQpFhceonZB5JxTVzcErDUQ3YVds5mhh/sStsbm+XeB+3Rbf941MwReAfx48Jx3HdZ3vmGNJrfQWnRUueWForsHBmOS6oIQsKujtboixbgTC9b5d9eWwELEFiSOlE6555ETSF2DI1CjZoUFkS2MvIuwpwMPDF5ebgeCAZ2Buhrbgt8BTthLWN2mOg0iJbcDkWjOQ1eNbYHOAzOqd71h3b9GFsjI7cA8CFZjltHbAlOpDhVeXh26rO5hSFekZLmhSDTnpatGmSNDXd+9ImwN+6u5Py+cF8452yAEHl4hV++QPXZFWE0R7j2ixMCFS3UtWhs1idQzGgI6ir4cHEClafQmK8JGOwwa5ZiPBmcOPAQC0bUsDjkQVoQ1XeXIwFXk/jUQzJmq6uKAWjmv9lvyecBREtaLvh4Myk9ucWPiYCi3Vp28dGthkcCVHCFhLfRlTdZIsayR4WYpiUAUAhL4whLWAFmrakeJb+tIe27UvFLPAhCQsLq9IhtfpMNgAcSY6hIkrNsBtwVRkj21opBMPYchIGGj03TPAO6SWCcCNRCQsNEp3dY0MF0iJREIR0DCauSPTBBMl2z4Y0qFKwQkrB2yI3OuTJHI1vDJsSoISNhz9SAEal9b3zNwnFS1hQhI2Og42JsBZ24hlrnkARCQsBr6u/h9D5reNYGzB5h7DrGFCEhYQwEjxQZkhpalJALhCNQgrKkMpjSkJALhCEhY870jKxVaIrFxs9vwFaXCRSMgUX0bHhG4yusBNvNISQTCEZCwBsZeNFDz8cDbA/WlqkTgfAQkrMXaIhsrZJXtJFg1BCSs4YCRrcUfBFhFJiURCEdAwn4euHygZhsp2FAhJREIR0DCfqq0mIlSfn4dpCiFqScRWCEgYf8WOCYQEgPCazSkC5xiqporAhLWgOs7BS7A+Fob06UkAuEISNjoJnLWOLhY+ExTYSJQPFw2KbaOa6REes4i55W6Zo6AxLoCYHuZSLEa4nsiFaauREAEVm/C6BDDwxqCJdyJQAQCK8JaDsZqg1Gi5eHYKGWpJxFYIbAi7FmAgddRkgevKCRTzy4EVoT9I+DOwdjcCHh/sM5Ut+UIrAhrtcHTgrHYt9998BipbssQWBHWNG/TvSPlE8B1IhWmrkRgp700uqCGlgcPcuckzFuFgKGq1Z75TsK+BbhtMLRPAJ4ZrDPVbTECOwl7InBqMBa5LQgGdNvV7SRsDY+XCY5W4zZIPGX5CFym9rPe6/OPdiD4iJ4MnLz8Z5UrHAKBvYR9K3Cb4IENEI/uYRs8xVQ3FwT2EtYEwtdWmPxxwDsr6E2VW4bAfmGAmiSi41kPdbHbMmxzuRUQ2I+wbwZuHzyW9bu+G/hYsN5UNw0Ejh7q2e5HWGMKjC2IlrdV2B9HzzH1TRyBgzIDvgJcInjumriuBnw6WG+qGxeBqw75TA8i7BsBK2lHi2/uu0YrTX3bg8BBhL0DYIPjaPEta2B37mWjkR1H32B719Xy1iULRleEWY1pjKyxsimJQGsE1hH2UcBzW2tsdsPdgdc1uzSvSgQuQGBTOnYNV62jG8p4uXwQiUBbBDYR9heAX2yrtOH1v1RRd8Mp5GVzQ2ATYe0uo4kr2vMlTrZbMsYgy8vPizVXrvzM5JyH831lE2G96XnAIyth+kHghpV0p9oFItCEsKa5fAGwO0wNMSPBzISURECurW2Z1YSwwvgawJN9DfH1f4ssbVQD2lCdN5/CM2pKWE/0ltGs9ZY1I+GKwNdCIU5lUQjYtKX2s5Fj/pKvlaaEVYmn+p/fpLDHv/9ZhSixHtPJW6eIQBvCOn+/AeZo1ZIXAQ+tpTz1zh+BtoS9C/CGysv+ZUD7b0oicBgCbQmrAuu+2mK+pjwQeEnNAVL3PBHoQthrANYbiGxZvxc9MxSsDP6qecI6+1mvNd4Hrk4und1GXxfCqt/WRg9oM1CHazV3WYkm24B2AK/HLbcGzJ6WtJ4pLBR4oOepxzidbu1K2IsAXwIu2WnU5jdZn+uHS6eb5nfllV0RMD3qDw5olq1J00baUSKHWuvrSlgnfavy9uujo8ni3R48ONuBNoGq1zUnAC/e0UbgIGURz1vudEr77zv4C4CH94Kp+c22Zzqp+eV5ZQsETgFsudpUbBxoA8Eu0stj1pewTth0l6HqwHoIu3cXlPKeAxF4JXCvAHyOKDqq7ncjCHt14OMV3bZ7sfSbbc6ZYY8p3RGwiLU1KGxRVUskcSiBIwjrYrUYaDkYSqwWfsceP0tDzXOq40hSk0xrH5pX639acQb1Jm8UYZ2YAPjmG0pcvHuvnx1qwIWM86vlLFDTjr4XKt/kvmB6SyRhNVN8tnRW7D2xFgreW2ooZA3a9aBZu/VNA3gp987C7GubZbc2Ye23nEjCqt+Ul49WSqlZ9zi+CjwCeGkLom/TpfcHtOhEV/PZhOG5wDHAJzdd2PTfownruKa8+NarFTu7bm0fBu4D+DcFrgu8gm/8HVrM2TPm5AORA9cgrPPTvWeTj5WpI3LOm3S5t9Vbc7+a3Uw2TWLkf7eTy8uKl3DIvepq2Xoob1fDrV6LsE7cUMQ/bOA5qfVs/Tl6yhZ2sXk88NQRtmWr56hn8ocqVcA8v5t3LdLct3zTa+lvold7rRVszJiwB+4S5ahiNno0oH11TPGX7eW1JlDzDbuas65bN/xjizlJJlM+rnJe/ZDrtEbAs4B7AOZdjS0efF9YcxJDENb5S9rnj7g92Imhe1yLK/uzaRjdHMWwS7c7x1eOS26KjdsAa1dUJauTGYqwjuW+xoYfYxzEDgJej5nJj0+fgddM79QTge8f0EPVhLAesCwB4HmlugxJWBdzY+BdwJHVV9Z+AAvfaVh/NfD6AdKaN83Qn/i7AfcsjpFLb7phhH8/D7glYNOVQWRowrqoawGWKKpRrysKNH/iDFB3nn9c4iT02NQUO1Gay3Yn4AbAZQf+BWy7Nq0wzvOstjf2uX4Mwjpfi2ZIBv/ORXQtWkbH4nXmIX2obCN8YJ9pYPPVNnqV8oX15/36gDlNHpws0aNrey7yuUJW/w4qYxHWRWp+ed+AsbRDAOt+TmLr5VH09knEKe3b++JgKKk910YJ7xyTsCvg3Kxno46+NBrmfmtSeHgeTaZAWBdvPK0ZmnP6WRztoY0wsL8aD5lCrYipENZncO1iYnKflzIdBNyfa0qzFsXoMiXC5hZhdDocNoHRtwB7ZzRFwuYWYXziTmYLMBfCOk/ttQZRZBfwYQms5cagpUHtq02XONU37M756+3xQKYhPaUeAjpKPFjp5ZuszIGwK/BOLr0QxshkmOwDDJiYNuNnAE8K0FVdxZwIKxi6L42k99Q6t7lXf5gtB9D9bOCP8au13c4tp3bw5XN96DctNkFNYXNdQ9hDbKlIomqi0vZ9Zst7R7987g9bf/xzgOMmEhc6+gNdMwHjgN8BPKbEQUx5rgfObe6EXS3MIBqLxVkjynSRlAsQMC3ImmQWexs8WCX6QSyFsCtczBD18PDYtCocCo88FfCw2rtEUDTxuupbGmF34mCe04klN36KAeNdn9m6+wyotibEs0v+Wo0xRtW5ZMLuBNZiveYcmfGwtAAbvVJG/Jszd/qobBpg8G0h7ApKyfqwUtbo6JGq00Q8Vm2n1uU1G/m0qLpVEROrrWPbCLsXTyvqWSDZqosWLJtqoLWB4RbaswqgBYitFLmVsu2E3fvQbUqhH10zmZaHsfa+7kU90WuGMp7ijK1k5z6LTsKuZ4JbCINvzAy1yJ2OCuN1jWswq1X82mKo4d6PhT08yRtvqiHfomlmFBt8ElKacokkbwv2EjHouyZNaXai9nP58ln14/0i8K/lY59eP4sxMfUFrsv9/w9S0rzSezYjXQAAAABJRU5ErkJggg==" id="61"/></item></list></costumes><sounds><list struct="atomic" id="62"></list></sounds><blocks></blocks><variables></variables><scripts><script x="86" y="35"><block s="doSetVar"><l>block to convert</l><block s="reifyReporter"><script></script><list></list><comment w="141" collapsed="false">add your block(s) here for it/them to be converted</comment></block></block></script><script x="141" y="98.69999999999999"><custom-block s="convert!"><comment w="90" collapsed="false">click here for it to convert the code to scratchblocks!</comment></custom-block></script><script x="149.5" y="176.5"><block var="output"><comment w="90" collapsed="false">the output is stored here!</comment></block></script><script x="57" y="240.5"><custom-block s="send converted scratchblocks to clipboard"><comment w="90" collapsed="false">optional: add your converted scratchblocks to the clipboard!</comment></custom-block></script></scripts></sprite><watcher var="block to convert" style="normal" x="10" y="10" color="243,118,29" hidden="true"/><watcher var="output" style="normal" x="10" y="48.000001999999995" color="243,118,29" hidden="true"/></sprites></stage><hidden></hidden><headers></headers><code></code><blocks><block-definition s="speak %&apos;text&apos; with %&apos;lang&apos; accent $nl and pitch %&apos;pitch&apos; rate %&apos;rate&apos;" type="command" category="sound"><header></header><code></code><translations>de:sprich _ mit _ Aussprache _ und Höhe _ Geschwindigkeit _&#xD;pt:fala _ na língua _ _ com tom _ e velocidade _&#xD;</translations><inputs><input type="%s">Hello, World!</input><input type="%txt">en-US<options>العربية=ar&#xD;Български=bg&#xD;বাংলা=bn&#xD;Català=ca&#xD;Català - Valencià=ca-VA&#xD;Česky=cs&#xD;Deutsch=de&#xD;Dansk=dk&#xD;Ελληνικά=el&#xD;English-American=en-US&#xD;English-British=en-GB&#xD;Esperanto=eo&#xD;Español=es&#xD;Eesti=et&#xD;Euskara=eu&#xD;suomi=fi&#xD;Français=fr&#xD;Galego=gl&#xD;Hrvatski=hr&#xD;Magyar=hu&#xD;Interlingua=ia&#xD;Bahasa Indonesia=id&#xD;Italiano=it&#xD;日本語=ja&#xD;にほんご=ja-HIRA&#xD;ಕನ್ನಡ=kn&#xD;한국어=ko&#xD;Malayalam=ml&#xD;Nederlands=nl&#xD;Norsk=no&#xD;Polski=pl&#xD;Português=pt&#xD;Português do Brasil=pt-BR&#xD;Român=ro&#xD;Русский=ru&#xD;Slovenščina=si&#xD;svenska=sv&#xD;Tamil=ta&#xD;Telagu=te&#xD;Türkçe=tr&#xD;Українська=ua&#xD;简体中文=zh-CN&#xD;繁體中文=zh-TW</options></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>msg</l><l>accent</l><l>pitch</l><l>rate</l></list><l>var utter = new SpeechSynthesisUtterance(msg);&#xD;utter.lang = accent;&#xD;utter.pitch = pitch;&#xD;utter.rate = rate;&#xD;window.speechSynthesis.speak(utter);</l></block><list><block var="text"/><block var="lang"/><block var="pitch"/><block var="rate"/></list></block></script></block-definition><block-definition s="speak %&apos;text&apos; with %&apos;lang&apos; accent $nl and pitch %&apos;pitch&apos; rate %&apos;rate&apos; and wait" type="command" category="sound"><header></header><code></code><translations>de:sprich _ mit _ Aussprache _ und Höhe _ Geschwindigkeit _ und warte&#xD;pt:fala _ na língua _ _ com tom _ e velocidade _ , e espera&#xD;</translations><inputs><input type="%s">Hello, World!</input><input type="%txt">en-US<options>العربية=ar&#xD;Български=bg&#xD;বাংলা=bn&#xD;Català=ca&#xD;Català - Valencià=ca-VA&#xD;Česky=cs&#xD;Deutsch=de&#xD;Dansk=dk&#xD;Ελληνικά=el&#xD;English-American=en-US&#xD;English-British=en-GB&#xD;Esperanto=eo&#xD;Español=es&#xD;Eesti=et&#xD;Euskara=eu&#xD;suomi=fi&#xD;Français=fr&#xD;Galego=gl&#xD;Hrvatski=hr&#xD;Magyar=hu&#xD;Interlingua=ia&#xD;Bahasa Indonesia=id&#xD;Italiano=it&#xD;日本語=ja&#xD;にほんご=ja-HIRA&#xD;ಕನ್ನಡ=kn&#xD;한국어=ko&#xD;Malayalam=ml&#xD;Nederlands=nl&#xD;Norsk=no&#xD;Polski=pl&#xD;Português=pt&#xD;Português do Brasil=pt-BR&#xD;Român=ro&#xD;Русский=ru&#xD;Slovenščina=si&#xD;svenska=sv&#xD;Tamil=ta&#xD;Telagu=te&#xD;Türkçe=tr&#xD;Українська=ua&#xD;简体中文=zh-CN&#xD;繁體中文=zh-TW</options></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list><l>msg</l><l>accent</l><l>pitch</l><l>rate</l></list><l>var utter = new SpeechSynthesisUtterance(msg),&#xD;    isDone = false;&#xD;utter.lang = accent;&#xD;utter.pitch = pitch;&#xD;utter.rate = rate;&#xD;utter.onend = function () {isDone = true; };&#xD;window.speechSynthesis.speak(utter);&#xD;return function () {return isDone; };</l></block><list><block var="text"/><block var="lang"/><block var="pitch"/><block var="rate"/></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="test"/><list></list></block></block></script></block-definition><block-definition s="list %&apos;list&apos; $arrowRight string, each item separated by %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportCombine"><block var="list"/><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><block var="text"/><l></l></list></block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="all but %&apos;first/last&apos; %&apos;letter&apos; letters 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 wanted letters of the input.</comment><header></header><code></code><translations>pt:_ sem o último caractere&#xD;</translations><inputs><input type="%s" readonly="true"><options>last&#xD;first</options></input><input type="%n"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportOr"><block s="reportOr"><block s="reportEquals"><block var="string"/><l></l></block><block s="reportEquals"><block var="string"/><l>0</l></block></block><block s="reportOr"><block s="reportEquals"><block var="letter"/><l></l></block><block s="reportEquals"><block var="letter"/><l>0</l></block></block></block><block var="string"/><block s="reportJoinWords"><block s="reportIfElse"><block s="reportEquals"><block var="first/last"/><l>last</l></block><block s="reportNumbers"><l>1</l><block s="reportDifference"><block s="reportStringSize"><block var="string"/></block><block var="letter"/></block></block><block s="reportIfElse"><block s="reportEquals"><block var="first/last"/><l>first</l></block><block s="reportNumbers"><block var="letter"/><block s="reportStringSize"><block var="string"/></block></block><l></l></block></block></block></block></block></script></block-definition><block-definition s="cases: if %&apos;test&apos; then %&apos;result&apos; %&apos;more&apos;" type="command" category="control"><comment x="0" y="0" w="262" collapsed="false">Multi-branched conditional.&#xD;&#xD;If the first (Boolean) input is True, then the script in&#xD;the second (C-slot) input is run, and this block stops.&#xD;&#xD;Additional tests can be added by putting one or more&#xD;ELSE IF blocks in the third (variadic) Boolean slot.&#xD;Use the arrowheads to get the number of Boolean&#xD;slots you need.  Each ELSE IF block provides a Boolean&#xD;slot for a condition to test and a script slot for what to do&#xD;if the condition is True.  You can put an ELSE block in&#xD;the last Boolean input to CASES for a script to run if&#xD;all the tests turn out False.&#xD;&#xD;As soon as a condition is True, no further tests are done&#xD;and no further scripts are run.</comment><header></header><code></code><translations>pt:se _ , então _ _&#xD;</translations><inputs><input type="%b"></input><input type="%cs"></input><input type="%mult%boolUE"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doRun"><block var="result"/><list></list></block></script><script><custom-block s="catch %upvar %cs"><l>tag</l><script><block s="doForEach"><l>item</l><block var="more"/><script><block s="doIf"><block s="evaluate"><block var="item"/><list></list></block><script><custom-block s="throw %s"><block var="tag"/></custom-block></script></block></script></block></script></custom-block></script></block></script></block-definition><block-definition s="else if %&apos;test&apos; then %&apos;action&apos;" type="predicate" category="control"><comment x="0" y="0" w="176" collapsed="false">For use with the CASES block.&#xD;See its help message.</comment><header></header><code></code><translations>pt:senão, se _ , então _&#xD;</translations><inputs><input type="%b"></input><input type="%cs"></input></inputs><script><block s="doIfElse"><block var="test"/><script><block s="doRun"><block var="action"/><list></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></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="else %&apos;action&apos;" type="predicate" category="control"><comment x="0" y="0" w="176" collapsed="false">For use with the CASES block.&#xD;See its help message.</comment><header></header><code></code><translations>pt:senão, _&#xD;</translations><inputs><input type="%cs"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="report error %&apos;msg&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>msg</l></list><l>throw new Error(msg);</l></block><list><block var="msg"/></list></block></block></script></block-definition><block-definition s="safely try %&apos;action&apos; then if %&apos;error&apos; %&apos;handler&apos;" type="command" category="control"><comment x="0" y="0" w="276" collapsed="false">Catch errors.&#xD;&#xD;Runs the first script.  If it succeeds, nothing else happens.&#xD;But if it has an error (something that would otherwise result&#xD;in a red halo around the block), then the second script is run,&#xD;with the text of the error message that would have been shown in the variable ERROR.</comment><header></header><code></code><translations>pt:tenta executar _ e, em caso de erro _ , executa _&#xD;</translations><inputs><input type="%cs"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><custom-block s="let %upvar be %s"><l>reset</l><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>var oldHandleError = proc.handleError,&#xD;    oldCatchingErrors = proc.isCatchingErrors;&#xD;&#xD;return function(){&#xD; proc.handleError = oldHandleError;&#xD; proc.isCatchingErrors = oldCatchingErrors;&#xD;}</l></block><list></list></block></custom-block><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reportJSFunction"><list><l>reset</l><l>action</l><l>handler</l><l>proc</l></list><l>proc.isCatchingErrors = true;&#xD;proc.handleError = function(error, element){&#xD; reset();&#xD; proc.context = handler;&#xD; proc.context.variables.setVar("error", error);&#xD;}&#xD;&#xD;try{&#xD; proc.evaluate(action, new List(), true);&#xD;}&#xD;catch(e){&#xD; proc.handleError(e, null);&#xD;} </l></block><list><block var="reset"/><block var="action"/><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doRun"><block var="handler"/><list></list></block><block s="doRun"><block var="return"/><list></list></block></script><list></list></block><list></list></block></script><list></list></block></list></block></script><list><l>return</l></list></block></block><block s="doRun"><block var="reset"/><list></list></block></script></block-definition><block-definition s="safely try reporting %&apos;this&apos; then if %&apos;error&apos; report %&apos;that&apos;" type="reporter" category="control"><comment x="0" y="0" w="316.6666666666667" collapsed="false">Catch errors in a reporter.&#xD;&#xD;Evaluates its first input.  If that expression successfully reports a value, this block reports that value.  If the expression causes a Snap! error,&#xD;then the final input slot is evaluated with the text of what would have&#xD;been the error message in variable ERROR.  SAFELY TRY then reports the value of that final expression.&#xD;&#xD;Sometimes you&apos;ll want to throw an error in the final expression.  You&#xD;can put an ERROR block inside a CALL block to do that.</comment><header></header><code></code><translations></translations><inputs><input type="%anyUE"></input><input type="%upvar"></input><input type="%anyUE"></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>value</l><block s="evaluate"><block var="this"/><list></list></block></block></script><l>err</l><script><block s="doSetVar"><l>error</l><block var="err"/></block><block s="doSetVar"><l>value</l><block s="evaluate"><block var="that"/><list></list></block></block></script></custom-block><block s="doReport"><block var="value"/></block></script></block-definition><block-definition s="$brush set pen to crayon %&apos;which&apos;" type="command" category="pen"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Reports one of 100 preselected colors, like a box of 100 crayons.&#xD;The colors have names that are meant to be evocative.&#xD;They are organized in families, more or less corresponding&#xD;to spectral (rainbow) colors; the input slot has a two-level menu&#xD;in which you can hover over a family name to see the colors&#xD;of that family, each including a crayon number and an RGB value. &#xD;See Appendix A of the Snap! Reference Manual for more details.</comment><header></header><code></code><translations></translations><inputs><input type="%n"><options>grays={&#xD;0 black #000000=0&#xD;1 gray7 #121212=1&#xD;2 gray14 #242424=2&#xD;3 gray21 #363636=3&#xD;4 gray28 #484848=4&#xD;5 gray36 #5c5c5c=5&#xD;6 gray43 #6d6d6d=6&#xD;7 gray50 #7f7f7f=7&#xD;8 gray57 #919191=8&#xD;9 gray64 #a3a3a3=9&#xD;10 gray71 #b5b5b5=10&#xD;11 gray78 #c8c8c8=11&#xD;12 gray85 #dadada=12&#xD;13 gray92 #ececec=13&#xD;14 white #ffffff=14&#xD;}&#xD;pinks={&#xD;15 deep pink #ff1493=15&#xD;16 hot pink #ff69b4=16&#xD;17 bright pink #ff007f=17&#xD;18 raspberry #e30b5d=18&#xD;19 amaranth #e52b50=19&#xD;}&#xD;reds={&#xD;20 red #ff0000=20&#xD;21 burgundy #900020=21&#xD;22 cherry #990000=22&#xD;23 dark candy apple red #a40000=23&#xD;24 sanguine #c00000=24&#xD;25 maroon #800000=25&#xD;26 crimson #c90016=26&#xD;27 Lists #d94d11=27&#xD;28 candy apple red #ff0800=28&#xD;29 coquelicot #ff3800=29&#xD;}&#xD;browns={&#xD;30 saddle brown #8b4513=30&#xD;31 chocolate #7b3f00=31&#xD;32 kobicha #6b4423=32&#xD;33 sepia #704214=33&#xD;34 chestnut #954535=34&#xD;35 dark brown #654321=35&#xD;36 brown #964b00=36&#xD;37 golden brown #996515=37&#xD;38 cinnamon #b87333=38&#xD;39 copper #d2691e=39&#xD;}&#xD;oranges={&#xD;40 orange #ff7f00=40&#xD;41 Pantone orange #ff5800=41&#xD;42 pumpkin #ff7518=42&#xD;43 Variables #f3761d=43&#xD;44 Spanish orange #e86100=44&#xD;45 burnt orange #cc5500=45&#xD;46 sinopia #cb410b=46&#xD;47 ochre #cc7722=47&#xD;48 carrot #ed9121=48&#xD;49 tangerine #f28500=49&#xD;}&#xD;yellows={&#xD;50 yellow #ffff00=50&#xD;51 Control #e6a822=51&#xD;52 dark goldenrod #b8860b=52&#xD;53 goldenrod #daa520=53&#xD;54 saffron #f4c430=54&#xD;55 sandstorm #ecd540=55&#xD;56 mustard #ffdb58=56&#xD;57 gold #ffd700=57&#xD;58 egg yolk #fee33e=58&#xD;59 rubber duck #fbe108=59&#xD;}&#xD;greens={&#xD;60 lime #00ff00=60&#xD;61 apple green #8db600=61&#xD;62 Operators #62c213=62&#xD;63 forest green #228b22=63&#xD;64 green #008000=64&#xD;65 dark green #006400=65&#xD;66 dark pastel green #03c03c=66&#xD;67 emerald #50c878=67&#xD;68 mint #3eb489=68&#xD;69 Pen #00a178=69&#xD;}&#xD;cyans={&#xD;70 aqua (cyan) #00ffff=70&#xD;71 dark cyan #008b8b=71&#xD;72 cerulean #007ba7=72&#xD;73 iceberg #71a6d2=73&#xD;74 Sensing #0494dc=74&#xD;75 teal #008080=75&#xD;76 light sky blue #87cefa=76&#xD;77 deep sky blue #00bfff=77&#xD;78 dodger blue #1e90ff=78&#xD;79 azure #007fff=79&#xD;}&#xD;blues={&#xD;80 blue #0000ff=80&#xD;81 midnight blue #191970=81&#xD;82 dark powder blue #003399=82&#xD;83 cobalt #0047ab=83&#xD;84 denim #1560bd=84&#xD;85 navy blue #000080=85&#xD;86 steel blue #4682b4=86&#xD;87 Motion #4a6cd4=87&#xD;88 cornflower #6495ed=88&#xD;89 slate blue #6a5acd=89&#xD;}&#xD;purples={&#xD;90 violet #8000ff=90&#xD;91 Looks #8f56e3=91&#xD;92 grape #6f2da8=92&#xD;93 indigo #4b0082=93&#xD;94 x11 purple #a020f0=94&#xD;95 magenta (fuchia) #ff00ff=95&#xD;96 dark orchid #9932cc=96&#xD;97 Sound #cf4ad9=97&#xD;98 purple #7f007f=98&#xD;99 dark magenta #8b008b=99&#xD;}</options></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doSetVar"><l>✐ last crayon</l><block var="which"/></block><block s="doSetVar"><l>✐ last set as</l><l>crayon</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><block s="reportNot"><custom-block s="does var %s exist?"><l>✐ crayon colors</l></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>global</l><list><l>✐ crayon colors</l></list></custom-block><block s="doSetVar"><l>✐ crayon colors</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>18</l><l>18</l><l>18</l></list></block><block s="reportNewList"><list><l>36</l><l>36</l><l>36</l></list></block><block s="reportNewList"><list><l>54</l><l>54</l><l>54</l></list></block><block s="reportNewList"><list><l>72</l><l>72</l><l>72</l></list></block><block s="reportNewList"><list><l>92</l><l>92</l><l>92</l></list></block><block s="reportNewList"><list><l>109</l><l>109</l><l>109</l></list></block><block s="reportNewList"><list><l>127</l><l>127</l><l>127</l></list></block><block s="reportNewList"><list><l>145</l><l>145</l><l>145</l></list></block><block s="reportNewList"><list><l>163</l><l>163</l><l>163</l></list></block><block s="reportNewList"><list><l>181</l><l>181</l><l>181</l></list></block><block s="reportNewList"><list><l>200</l><l>200</l><l>200</l></list></block><block s="reportNewList"><list><l>218</l><l>218</l><l>218</l></list></block><block s="reportNewList"><list><l>236</l><l>236</l><l>236</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>20</l><l>147</l></list></block><block s="reportNewList"><list><l>255</l><l>105</l><l>180</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>127</l></list></block><block s="reportNewList"><list><l>227</l><l>11</l><l>93</l></list></block><block s="reportNewList"><list><l>229</l><l>43</l><l>80</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>144</l><l>0</l><l>32</l></list></block><block s="reportNewList"><list><l>153</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>164</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>192</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>201</l><l>0</l><l>22</l></list></block><block s="reportNewList"><list><l>217</l><l>77</l><l>17</l></list></block><block s="reportNewList"><list><l>255</l><l>8</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>56</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>123</l><l>63</l><l>0</l></list></block><block s="reportNewList"><list><l>107</l><l>68</l><l>35</l></list></block><block s="reportNewList"><list><l>112</l><l>66</l><l>20</l></list></block><block s="reportNewList"><list><l>149</l><l>69</l><l>53</l></list></block><block s="reportNewList"><list><l>101</l><l>67</l><l>33</l></list></block><block s="reportNewList"><list><l>150</l><l>75</l><l>0</l></list></block><block s="reportNewList"><list><l>153</l><l>101</l><l>21</l></list></block><block s="reportNewList"><list><l>184</l><l>115</l><l>51</l></list></block><block s="reportNewList"><list><l>210</l><l>105</l><l>30</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>88</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>117</l><l>24</l></list></block><block s="reportNewList"><list><l>243</l><l>118</l><l>29</l></list></block><block s="reportNewList"><list><l>232</l><l>97</l><l>0</l></list></block><block s="reportNewList"><list><l>204</l><l>85</l><l>0</l></list></block><block s="reportNewList"><list><l>203</l><l>65</l><l>11</l></list></block><block s="reportNewList"><list><l>204</l><l>119</l><l>34</l></list></block><block s="reportNewList"><list><l>237</l><l>145</l><l>33</l></list></block><block s="reportNewList"><list><l>242</l><l>133</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>230</l><l>168</l><l>34</l></list></block><block s="reportNewList"><list><l>184</l><l>134</l><l>11</l></list></block><block s="reportNewList"><list><l>218</l><l>165</l><l>32</l></list></block><block s="reportNewList"><list><l>244</l><l>196</l><l>48</l></list></block><block s="reportNewList"><list><l>236</l><l>213</l><l>64</l></list></block><block s="reportNewList"><list><l>255</l><l>219</l><l>88</l></list></block><block s="reportNewList"><list><l>255</l><l>215</l><l>0</l></list></block><block s="reportNewList"><list><l>254</l><l>227</l><l>62</l></list></block><block s="reportNewList"><list><l>251</l><l>225</l><l>8</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>141</l><l>182</l><l>0</l></list></block><block s="reportNewList"><list><l>98</l><l>194</l><l>19</l></list></block><block s="reportNewList"><list><l>34</l><l>139</l><l>34</l></list></block><block s="reportNewList"><list><l>0</l><l>128</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>100</l><l>0</l></list></block><block s="reportNewList"><list><l>3</l><l>192</l><l>60</l></list></block><block s="reportNewList"><list><l>80</l><l>200</l><l>120</l></list></block><block s="reportNewList"><list><l>62</l><l>180</l><l>137</l></list></block><block s="reportNewList"><list><l>0</l><l>161</l><l>120</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>139</l><l>139</l></list></block><block s="reportNewList"><list><l>0</l><l>123</l><l>167</l></list></block><block s="reportNewList"><list><l>113</l><l>166</l><l>210</l></list></block><block s="reportNewList"><list><l>4</l><l>148</l><l>220</l></list></block><block s="reportNewList"><list><l>0</l><l>128</l><l>128</l></list></block><block s="reportNewList"><list><l>135</l><l>206</l><l>250</l></list></block><block s="reportNewList"><list><l>0</l><l>191</l><l>255</l></list></block><block s="reportNewList"><list><l>30</l><l>144</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>127</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>25</l><l>25</l><l>112</l></list></block><block s="reportNewList"><list><l>0</l><l>51</l><l>153</l></list></block><block s="reportNewList"><list><l>0</l><l>71</l><l>171</l></list></block><block s="reportNewList"><list><l>21</l><l>96</l><l>189</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>128</l></list></block><block s="reportNewList"><list><l>70</l><l>130</l><l>180</l></list></block><block s="reportNewList"><list><l>74</l><l>108</l><l>212</l></list></block><block s="reportNewList"><list><l>100</l><l>149</l><l>237</l></list></block><block s="reportNewList"><list><l>106</l><l>90</l><l>205</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>143</l><l>86</l><l>227</l></list></block><block s="reportNewList"><list><l>111</l><l>45</l><l>168</l></list></block><block s="reportNewList"><list><l>75</l><l>0</l><l>130</l></list></block><block s="reportNewList"><list><l>160</l><l>32</l><l>240</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>153</l><l>50</l><l>204</l></list></block><block s="reportNewList"><list><l>207</l><l>74</l><l>217</l></list></block><block s="reportNewList"><list><l>127</l><l>0</l><l>127</l></list></block><block s="reportNewList"><list><l>139</l><l>0</l><l>139</l></list></block></list></block></block></script></block><block s="doDeclareVariables"><list><l>color</l></list></block><block s="doSetVar"><l>color</l><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block var="which"/><l>100</l></block><l>1</l></block><block var="✐ crayon colors"/></block></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><block var="color"/></block><block s="reportListItem"><l>2</l><block var="color"/></block><block s="reportListItem"><l>3</l><block var="color"/></block></custom-block></script></block-definition><block-definition s="$brush set pen %&apos;dimension&apos; to %&apos;value&apos;" type="command" category="pen"><comment x="0" y="0" w="265.3333333333333" collapsed="false">This block allows you to set the pen&apos;s color, transparency (on a scale from 0=opaque to 100=invisible), or size (in pixels).  The color can be set in many ways, including RGB values, HSV values, HSL values, fair HSV or HSL (based on a modified spectrum that gives each spectral color equal space and promotes brown to a color), or X11/W3C color name.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>size&#xD;color&#xD;fair hue&#xD;transparency&#xD;X11/W3C name&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGB hex&#xD;}&#xD;}</options></input><input type="%s"></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doDeclareVariables"><list><l>colors</l><l>brights</l><l>index</l><l>scale</l><l>oldHSV</l><l>newHSV</l><l>color</l><l>pivots</l></list></block><block s="doSetVar"><l>colors</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l></list></block><block s="reportNewList"><list><l>192</l><l>192</l><l>192</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>85</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>70</l><l>5</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>140</l><l>60</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>114</l><l>93</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>30</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>50</l><l>50</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>64</l></list></block><block s="reportNewList"><list><l>80</l><l>0</l><l>90</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block></list></block></block><block s="doSetVar"><l>brights</l><block s="reportNewList"><list><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>170</l><l>20</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>170</l><l>90</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>160</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>190</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>240</l><l>200</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>127</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>60</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>64</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block></list></block></block><block s="doSetVar"><l>pivots</l><block s="reportNewList"><list><l>0</l><l>5.8</l><l>12.5</l><l>18</l><l>25</l><l>30.5</l><l>37.5</l><l>44.5</l><l>50</l><l>59</l><l>62.5</l><l>69</l><l>75</l><l>79.25</l><l>87.5</l><l>93.75</l><l>97</l><l>100</l></list></block></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>color</l><l>hue</l><l>fair hue</l></list></block><block var="dimension"/></block><script><block s="doSetVar"><l>value</l><block s="reportModulus"><block var="value"/><l>100</l></block></block></script><script><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>red</l><l>green</l><l>blue</l></list></block><block var="dimension"/></block><script><block s="doIf"><block s="reportLessThan"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>value</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><l>255</l></block><script><block s="doSetVar"><l>value</l><l>255</l></block></script></block></script><script><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>saturation (HSV)</l><l>saturation (HSL)</l><l>value (brightness)</l><l>lightness</l><l>fair saturation (HSV)</l><l>fair saturation (HSL)</l><l>fair value (brightness)</l><l>fair lightness</l><l>transparency</l></list></block><block var="dimension"/></block><script><block s="doIf"><block s="reportLessThan"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>value</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><l>100</l></block><script><block s="doSetVar"><l>value</l><l>100</l></block></script></block></script><comment w="164.66666666666666" collapsed="false">We have to do this last test to rule out the vector options, which aren&apos;t numbers; their code makes three recursive calls and we catch range issues then.</comment></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>size</l></block><script><block s="setSize"><block var="value"/></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>hue</l></block><script><block s="setPenHSVA"><l><option>hue</option></l><block var="value"/></block><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doReplaceInList"><l>1</l><block var="✐ HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block></script></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block s="reportNewList"><list><l>HSL</l><l>HSV</l></list></block><block var="✐ last set as"/></block></block><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block></script></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSV)</l></block><script><block s="setPenHSVA"><l><option>saturation</option></l><block var="value"/></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>value (brightness)</l></block><script><block s="setPenHSVA"><l><option>brightness</option></l><block var="value"/></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>transparency</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block var="value"/></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>red</l></block><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l>255</l><l></l><l></l></custom-block></script><list></list></block><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>green</l></block><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l>0</l><l></l></custom-block></script><list></list></block><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>blue</l></block><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l>0</l></custom-block></script><list></list></block><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair hue</l></block><script><block s="doSetVar"><l>oldHSV</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l>100</l><l></l></block></autolambda><list></list></block><custom-block s="HSV color"></custom-block></block></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block s="reportNewList"><list><l>HSL</l><l>HSV</l></list></block><block var="✐ last set as"/></block></block><script><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block><block s="doSetVar"><l>oldHSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block></script></block><block s="doSetVar"><l>value</l><block s="reportModulus"><block var="value"/><l>100</l></block></block><block s="doSetVar"><l>color</l><block s="reportProduct"><block var="value"/><l>3.6</l></block></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportListItem"><block var="index"/><block var="pivots"/></block><block var="value"/></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doChangeVar"><l>index</l><l>-1</l></block><block s="doSetVar"><l>scale</l><block s="reportQuotient"><block s="reportDifference"><block var="value"/><block s="reportListItem"><block var="index"/><block var="pivots"/></block></block><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="pivots"/></block><block s="reportListItem"><block var="index"/><block var="pivots"/></block></block></block></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><script></script><list><l>from</l><l>to</l></list></block><list><l/></list></custom-block></block><block s="doSetVar"><l>newHSV</l><custom-block s="HSV color"></custom-block></block><block s="doIfElse"><block var="✐ fair?"/><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="newHSV"/></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="newHSV"/></block><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block><l>100</l></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="newHSV"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block><l>100</l></block></custom-block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></list></block></block></script><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="newHSV"/></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="newHSV"/></block><block s="reportListItem"><l>2</l><block var="oldHSV"/></block></block><l>100</l></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="newHSV"/></block><block s="reportListItem"><l>3</l><block var="oldHSV"/></block></block><l>100</l></block></custom-block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>2</l><block var="oldHSV"/></block><block s="reportListItem"><l>3</l><block var="oldHSV"/></block></list></block></block></script></block><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block></script><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block></script></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script><comment w="90" collapsed="true">fair hue</comment></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>color</l><comment w="53.333333333333336" collapsed="true">Color</comment></block><script><block s="doSetVar"><l>✐ color scale</l><block var="value"/></block><block s="doSetVar"><l>color</l><block s="reportProduct"><block var="value"/><l>3</l></block></block><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="color"/><l>42</l></block></block><script><block s="doSetVar"><l>color</l><block s="reportModulus"><block s="reportProduct"><block var="color"/><block s="reportQuotient"><l>15</l><l>14</l></block></block><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><script><block s="doIf"><block s="reportLessThan"><block var="color"/><l>60</l><comment w="96.66666666666667" collapsed="true">spread out pink</comment></block><script><block s="doSetVar"><l>color</l><block s="reportSum"><l>45</l><block s="reportProduct"><block s="reportDifference"><block var="color"/><l>42</l></block><block s="reportQuotient"><l>15</l><l>18</l></block></block></block></block></script></block><block s="doSetVar"><l>color</l><block s="reportModulus"><block var="color"/><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><comment w="77.33333333333333" collapsed="true">grayscale</comment></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><script></script><list><l>from</l><l>to</l></list></block><list><l/></list></custom-block></block><block s="doSetVar"><l>✐ last set as</l><l>color</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSL)</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>lightness</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSV)</l></block><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="setPenHSVA"><l><option>saturation</option></l><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="getPenAttribute"><l><option>saturation</option></l></block><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair value (brightness)</l></block><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="setPenHSVA"><l><option>brightness</option></l><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="getPenAttribute"><l><option>brightness</option></l></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSL)</l></block><script><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSV</l></block><script><custom-block s="✐ update HSL"></custom-block></script><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><l>100</l></block></script></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSL"/><block var="value"/></block><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="reportListItem"><l>2</l><block var="✐ HSL"/></block><block s="reportListItem"><l>2</l><block var="✐ raw HSL"/></block></block></block><block var="value"/></block></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ update HSV"></custom-block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair lightness</l></block><script><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSV</l></block><script><custom-block s="✐ update HSL"></custom-block></script><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><l>50</l></block></script></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSL"/><block var="value"/></block><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="reportListItem"><l>3</l><block var="✐ HSL"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSL"/></block></block></block><block var="value"/></block></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ update HSV"></custom-block><custom-block s="✐ make integer RGB"></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSL vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>fair saturation (HSL)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair lightness</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSV vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>fair saturation (HSV)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair value (brightness)</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>fair hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSL vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>saturation (HSL)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>lightness</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSV vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>saturation (HSV)</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>value (brightness)</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>hue</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB vector</l></block><script><custom-block s="$brush set pen %s to %s"><l>red</l><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>green</l><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>blue</l><block s="reportListItem"><l>3</l><block var="value"/></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB hex</l></block><script><block s="doSetVar"><l>value</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>number</option></l></block><l></l><block s="reportSum"><l>10</l><block s="reportDifference"><block s="reportUnicode"><l></l></block><block s="reportIfElse"><block s="reportLessThan"><l></l><l>a</l></block><block s="reportUnicode"><l>A</l></block><block s="reportUnicode"><l>a</l></block></block></block></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="value"/><l><option>letter</option></l></block></block></block><block s="doIf"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="doSetVar"><l>value</l><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><l></l></list></block></autolambda><list></list></block><block var="value"/></block></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportLessThan"><l></l><l>0</l></block><block s="reportGreaterThan"><l></l><l>15</l></block></block></autolambda><list></list></block><block var="value"/></block><l><option>number</option></l></block><script><custom-block s="error %txt"><l>Badly formed hex color.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>6</l></block><script><custom-block s="error %txt"><l>More than six hex digits.</l></custom-block></script></block><block s="doRepeat"><block s="reportDifference"><l>6</l><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block></block><script><block s="doSetVar"><l>value</l><block s="reportCONS"><l>0</l><block var="value"/></block></block></script></block><custom-block s="$brush set pen %s to %s"><l>red</l><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>1</l><block var="value"/></block></block><block s="reportListItem"><l>2</l><block var="value"/></block></block></custom-block><custom-block s="$brush set pen %s to %s"><l>green</l><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>3</l><block var="value"/></block></block><block s="reportListItem"><l>4</l><block var="value"/></block></block></custom-block><custom-block s="$brush set pen %s to %s"><l>blue</l><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>5</l><block var="value"/></block></block><block s="reportListItem"><l>6</l><block var="value"/></block></block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>X11/W3C name</l><comment w="90" collapsed="true">X11/W3C name</comment></block><script><block s="doIf"><block s="reportNot"><custom-block s="does var %s exist?"><l>✐ X11</l></custom-block></block><script><custom-block s="create %s var %mult%txt"><l>global</l><list><l>✐ X11</l></list></custom-block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ X11"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ X11</l><block s="reportNewList"><list><block s="reportNewList"><list><l>255</l><l>250</l><l>250</l><l>snow</l></list></block><block s="reportNewList"><list><l>248</l><l>248</l><l>255</l><l>ghostwhite</l></list></block><block s="reportNewList"><list><l>245</l><l>245</l><l>245</l><l>whitesmoke</l></list></block><block s="reportNewList"><list><l>220</l><l>220</l><l>220</l><l>gainsboro</l></list></block><block s="reportNewList"><list><l>255</l><l>250</l><l>240</l><l>floralwhite</l></list></block><block s="reportNewList"><list><l>253</l><l>245</l><l>230</l><l>oldlace</l></list></block><block s="reportNewList"><list><l>250</l><l>240</l><l>230</l><l>linen</l></list></block><block s="reportNewList"><list><l>250</l><l>235</l><l>215</l><l>antiquewhite</l></list></block><block s="reportNewList"><list><l>255</l><l>239</l><l>213</l><l>papayawhip</l></list></block><block s="reportNewList"><list><l>255</l><l>235</l><l>205</l><l>blanchedalmond</l></list></block><block s="reportNewList"><list><l>255</l><l>228</l><l>196</l><l>bisque</l></list></block><block s="reportNewList"><list><l>255</l><l>218</l><l>185</l><l>peachpuff</l></list></block><block s="reportNewList"><list><l>255</l><l>222</l><l>173</l><l>navajowhite</l></list></block><block s="reportNewList"><list><l>255</l><l>228</l><l>181</l><l>moccasin</l></list></block><block s="reportNewList"><list><l>255</l><l>248</l><l>220</l><l>cornsilk</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>240</l><l>ivory</l></list></block><block s="reportNewList"><list><l>255</l><l>250</l><l>205</l><l>lemonchiffon</l></list></block><block s="reportNewList"><list><l>255</l><l>245</l><l>238</l><l>seashell</l></list></block><block s="reportNewList"><list><l>240</l><l>255</l><l>240</l><l>honeydew</l></list></block><block s="reportNewList"><list><l>245</l><l>255</l><l>250</l><l>mintcream</l></list></block><block s="reportNewList"><list><l>240</l><l>255</l><l>255</l><l>azure</l></list></block><block s="reportNewList"><list><l>240</l><l>248</l><l>255</l><l>aliceblue</l></list></block><block s="reportNewList"><list><l>230</l><l>230</l><l>250</l><l>lavender</l></list></block><block s="reportNewList"><list><l>255</l><l>240</l><l>245</l><l>lavenderblush</l></list></block><block s="reportNewList"><list><l>255</l><l>228</l><l>225</l><l>mistyrose</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l><l>white</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l><l>black</l></list></block><block s="reportNewList"><list><l>47</l><l>79</l><l>79</l><l>darkslategray</l></list></block><block s="reportNewList"><list><l>47</l><l>79</l><l>79</l><l>darkslategrey</l></list></block><block s="reportNewList"><list><l>105</l><l>105</l><l>105</l><l>dimgray</l></list></block><block s="reportNewList"><list><l>105</l><l>105</l><l>105</l><l>dimgrey</l></list></block><block s="reportNewList"><list><l>112</l><l>128</l><l>144</l><l>slategray</l></list></block><block s="reportNewList"><list><l>112</l><l>128</l><l>144</l><l>slategrey</l></list></block><block s="reportNewList"><list><l>119</l><l>136</l><l>153</l><l>lightslategray</l></list></block><block s="reportNewList"><list><l>119</l><l>136</l><l>153</l><l>lightslategrey</l></list></block><block s="reportNewList"><list><l>190</l><l>190</l><l>190</l><l>gray(X11)</l></list></block><block s="reportNewList"><list><l>190</l><l>190</l><l>190</l><l>grey(X11)</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l><l>gray(W3C)</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l><l>grey(W3C)</l></list></block><block s="reportNewList"><list><l>211</l><l>211</l><l>211</l><l>lightgrey</l></list></block><block s="reportNewList"><list><l>211</l><l>211</l><l>211</l><l>lightgray</l></list></block><block s="reportNewList"><list><l>25</l><l>25</l><l>112</l><l>midnightblue</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>128</l><l>navy</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>128</l><l>navyblue</l></list></block><block s="reportNewList"><list><l>100</l><l>149</l><l>237</l><l>cornflowerblue</l></list></block><block s="reportNewList"><list><l>72</l><l>61</l><l>139</l><l>darkslateblue</l></list></block><block s="reportNewList"><list><l>106</l><l>90</l><l>205</l><l>slateblue</l></list></block><block s="reportNewList"><list><l>123</l><l>104</l><l>238</l><l>mediumslateblue</l></list></block><block s="reportNewList"><list><l>132</l><l>112</l><l>255</l><l>lightslateblue</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>205</l><l>mediumblue</l></list></block><block s="reportNewList"><list><l>65</l><l>105</l><l>225</l><l>royalblue</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l><l>blue</l></list></block><block s="reportNewList"><list><l>30</l><l>144</l><l>255</l><l>dodgerblue</l></list></block><block s="reportNewList"><list><l>0</l><l>191</l><l>255</l><l>deepskyblue</l></list></block><block s="reportNewList"><list><l>135</l><l>206</l><l>235</l><l>skyblue</l></list></block><block s="reportNewList"><list><l>135</l><l>206</l><l>250</l><l>lightskyblue</l></list></block><block s="reportNewList"><list><l>70</l><l>130</l><l>180</l><l>steelblue</l></list></block><block s="reportNewList"><list><l>176</l><l>196</l><l>222</l><l>lightsteelblue</l></list></block><block s="reportNewList"><list><l>173</l><l>216</l><l>230</l><l>lightblue</l></list></block><block s="reportNewList"><list><l>176</l><l>224</l><l>230</l><l>powderblue</l></list></block><block s="reportNewList"><list><l>175</l><l>238</l><l>238</l><l>paleturquoise</l></list></block><block s="reportNewList"><list><l>0</l><l>206</l><l>209</l><l>darkturquoise</l></list></block><block s="reportNewList"><list><l>72</l><l>209</l><l>204</l><l>mediumturquoise</l></list></block><block s="reportNewList"><list><l>64</l><l>224</l><l>208</l><l>turquoise</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l><l>cyan</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l><l>aqua</l></list></block><block s="reportNewList"><list><l>224</l><l>255</l><l>255</l><l>lightcyan</l></list></block><block s="reportNewList"><list><l>95</l><l>158</l><l>160</l><l>cadetblue</l></list></block><block s="reportNewList"><list><l>102</l><l>205</l><l>170</l><l>mediumaquamarine</l></list></block><block s="reportNewList"><list><l>127</l><l>255</l><l>212</l><l>aquamarine</l></list></block><block s="reportNewList"><list><l>0</l><l>100</l><l>0</l><l>darkgreen</l></list></block><block s="reportNewList"><list><l>85</l><l>107</l><l>47</l><l>darkolivegreen</l></list></block><block s="reportNewList"><list><l>143</l><l>188</l><l>143</l><l>darkseagreen</l></list></block><block s="reportNewList"><list><l>46</l><l>139</l><l>87</l><l>seagreen</l></list></block><block s="reportNewList"><list><l>60</l><l>179</l><l>113</l><l>mediumseagreen</l></list></block><block s="reportNewList"><list><l>32</l><l>178</l><l>170</l><l>lightseagreen</l></list></block><block s="reportNewList"><list><l>152</l><l>251</l><l>152</l><l>palegreen</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>127</l><l>springgreen</l></list></block><block s="reportNewList"><list><l>124</l><l>252</l><l>0</l><l>lawngreen</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l><l>green(X11)</l></list></block><block s="reportNewList"><list><l>0</l><l>128</l><l>0</l><l>green(W3C)</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l><l>lime</l></list></block><block s="reportNewList"><list><l>127</l><l>255</l><l>0</l><l>chartreuse</l></list></block><block s="reportNewList"><list><l>0</l><l>250</l><l>154</l><l>mediumspringgreen</l></list></block><block s="reportNewList"><list><l>173</l><l>255</l><l>47</l><l>greenyellow</l></list></block><block s="reportNewList"><list><l>50</l><l>205</l><l>50</l><l>limegreen</l></list></block><block s="reportNewList"><list><l>154</l><l>205</l><l>50</l><l>yellowgreen</l></list></block><block s="reportNewList"><list><l>34</l><l>139</l><l>34</l><l>forestgreen</l></list></block><block s="reportNewList"><list><l>107</l><l>142</l><l>35</l><l>olivedrab</l></list></block><block s="reportNewList"><list><l>189</l><l>183</l><l>107</l><l>darkkhaki</l></list></block><block s="reportNewList"><list><l>240</l><l>230</l><l>140</l><l>khaki</l></list></block><block s="reportNewList"><list><l>238</l><l>232</l><l>170</l><l>palegoldenrod</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l><l>210</l><l>lightgoldenrodyellow</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>224</l><l>lightyellow</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l><l>yellow</l></list></block><block s="reportNewList"><list><l>255</l><l>215</l><l>0</l><l>gold</l></list></block><block s="reportNewList"><list><l>238</l><l>221</l><l>130</l><l>lightgoldenrod</l></list></block><block s="reportNewList"><list><l>218</l><l>165</l><l>32</l><l>goldenrod</l></list></block><block s="reportNewList"><list><l>184</l><l>134</l><l>11</l><l>darkgoldenrod</l></list></block><block s="reportNewList"><list><l>188</l><l>143</l><l>143</l><l>rosybrown</l></list></block></list></block></block></script></block><block s="doSetVar"><l>value</l><custom-block s="✐ remove appearences of %txt in %txt"><block var="value"/><l></l></custom-block></block><custom-block s="use case-independent comparisons %b"><l><bool>true</bool></l></custom-block><custom-block s="catch %upvar %cs"><l>x11w3c</l><script><block s="doIf"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="value"/><block s="reportListItem"><l>4</l><l/></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>exact matches</l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>?? multiple exact matches for </l><block var="value"/></list></block></custom-block></script></block><block s="doIf"><block s="reportNot"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>4</l><l/></block><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><l/></block><block var="value"/></custom-block></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>partial matches</l></custom-block></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Color name </l><block var="value"/><l> not found.</l></list></block></custom-block></script></block><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><block var="match"/></block><block var="value"/></custom-block><l></l></block></autolambda><list><l>match</l></list></block><block var="partial matches"/><block var="x11w3c"/><l>head matches</l></custom-block><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="head matches"/><block var="x11w3c"/><l>non-numbered matches</l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="head matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="partial matches"/><block var="x11w3c"/><l>non-numbered matches</l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="partial matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script></block></script><comment w="294.6666666666667" collapsed="true">SUBSET throws here if it handles a unique match</comment></custom-block></script></block><custom-block s="✐ initialize variables"></custom-block></script></block-definition><block-definition s="$brush change pen %&apos;dimension&apos; by %&apos;amount&apos;" type="command" category="pen"><comment x="0" y="0" w="334" collapsed="false">Changes any pen property by the specified amount.  Some color scales can&apos;t be adjusted this way unless the color was first SET using that scale.&#xD;Vectors (e.g., RGB color as a list of three numbers) can be incremented&#xD;by a vector as the amount. X11/W3C names can&apos;t be incremented.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>size&#xD;crayon&#xD;color&#xD;fair hue&#xD;transparency&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGB hex&#xD;}&#xD;}</options></input><input type="%s"></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doDeclareVariables"><list><l>old</l></list></block><block s="doSetVar"><l>old</l><custom-block s="$brush pen %s"><block var="dimension"/></custom-block></block><block s="doIf"><block s="reportEquals"><block var="old"/><l>not set</l></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Dimension </l><block var="dimension"/><l> not set.</l></list></block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>crayon</l></block><script><custom-block s="$brush set pen to crayon %n"><block s="reportSum"><block var="old"/><block var="amount"/></block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB hex</l></block><script><custom-block s="error %txt"><l>Sorry, I don&apos;t know how to add in hexadecimal.</l></custom-block></script></block><block s="doIf"><block s="reportIsA"><block var="amount"/><l><option>number</option></l></block><script><custom-block s="$brush set pen %s to %s"><block var="dimension"/><block s="reportSum"><block var="old"/><block var="amount"/></block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportIsA"><block var="amount"/><l><option>list</option></l></block><script><custom-block s="$brush set pen %s to %s"><block var="dimension"/><custom-block s="map %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block><list><block var="amount"/></list></custom-block></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><custom-block s="error %txt"><block s="reportJoinWords"><list><l>I don&apos;t know how to handle </l><block var="amount"/></list></block></custom-block></script></block-definition><block-definition s="✐ subset %&apos;pred&apos; %&apos;data&apos; %&apos;catchtag&apos; %&apos;result&apos;" type="predicate" category="pen"><comment x="0" y="0" w="228" collapsed="false">Don&apos;t ask.&#xD;Only for internal use by the SET PEN block.</comment><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input><input type="%cmdRing"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>best match</l></list></block><block s="doSetVar"><l>result</l><block s="reportKeep"><block var="pred"/><block var="data"/></block></block><block s="doIf"><block s="reportListIsEmpty"><block var="result"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="result"/></block></block><script><block s="doSetVar"><l>best match</l><block s="reportListItem"><l>1</l><block var="result"/></block></block><custom-block s="$brush set pen %s to %s"><l>red</l><block s="reportListItem"><l>1</l><block var="best match"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>green</l><block s="reportListItem"><l>2</l><block var="best match"/></block></custom-block><custom-block s="$brush set pen %s to %s"><l>blue</l><block s="reportListItem"><l>3</l><block var="best match"/></block></custom-block><block s="doSetVar"><l>✐ last X11</l><block s="reportListItem"><l>4</l><block var="best match"/></block></block><block s="doSetVar"><l>✐ last set as</l><l>X11</l></block><custom-block s="throw %s"><block var="catchtag"/></custom-block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="✐ remove appearences of %&apos;symbols&apos; in %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block s="reportJoinWords"><block var="text"/></block><block s="reportJoinWords"><block var="symbols"/></block></block></block></block></script></block-definition><block-definition s="-- %&apos;n&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%anyUE"></input></inputs><script><block s="doRun"><block s="reifyScript"><script><block s="doChangeVar"><l></l><l>-1</l></block></script><list></list></block><list><block var="n"/></list></block><block s="doReport"><block s="evaluate"><block var="n"/><list></list></block></block></script><scripts><script x="255.49999936421716" y="94.83333333333331"><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list></list></block></script></scripts></block-definition><block-definition s="animate setter %&apos;setter&apos; getter %&apos;getter&apos; delta %&apos;delta&apos; over %&apos;duration&apos; secs easing %&apos;easing&apos;" type="command" category="control"><header></header><code></code><translations>de:animiere Setter _ Getter _ Delta _ über _ Sek. beschleunigt _&#xD;ca:modifica setter _ i getter _ amb delta _ en _ segons de forma _&#xD;pt:anima com modificador _ e inspector _ de _ em _ s de forma _&#xD;</translations><inputs><input type="%cmdRing"></input><input type="%repRing"></input><input type="%n">50</input><input type="%n">1</input><input type="%repRing"></input></inputs><script><block s="doDeclareVariables"><list><l>end time</l><l>destination</l></list></block><block s="doSetVar"><l>end time</l><block s="reportSum"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block s="reportProduct"><block var="duration"/><l>1000</l></block></block></block><block s="doSetVar"><l>destination</l><block s="reportSum"><block s="evaluate"><block var="getter"/><list></list></block><block var="delta"/></block></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="end time"/></block><script><block s="doRun"><block var="setter"/><list><block s="reportDifference"><block var="destination"/><block s="reportProduct"><block var="delta"/><block s="evaluate"><block var="easing"/><list><block s="reportQuotient"><block s="reportDifference"><block var="end time"/><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="reportProduct"><block var="duration"/><l>1000</l></block></block></list></block></block></block></list></block></script></block><block s="doRun"><block var="setter"/><list><block var="destination"/></list></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><header></header><code></code><translations>de:Fehler _&#xD;pt:assinala o erro _&#xD;</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="glide %&apos;steps&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos;" type="command" category="motion"><header></header><code></code><translations>de:gleite _ in _ Sek. beschleunigt: _&#xD;ca:llisca _ en _ segons de forma _&#xD;fr:glisser _ en _ sec. accélérer _&#xD;pt:desliza _ em _ s de forma _&#xD;</translations><inputs><input type="%n">50</input><input type="%n">1</input><input type="%s" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input></inputs><script><block s="doDeclareVariables"><list><l>destX</l><l>destY</l><l>end time</l><l>deltaX</l><l>deltaY</l><l>func</l></list></block><block s="forward"><block var="steps"/></block><block s="doSetVar"><l>destX</l><block s="xPosition"></block></block><block s="doSetVar"><l>destY</l><block s="yPosition"></block></block><block s="forward"><block s="reportProduct"><block var="steps"/><l>-1</l></block></block><block s="doSetVar"><l>end time</l><block s="reportSum"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block s="reportProduct"><block var="duration"/><l>1000</l></block></block></block><block s="doSetVar"><l>deltaX</l><block s="reportDifference"><block var="destX"/><block s="xPosition"></block></block></block><block s="doSetVar"><l>deltaY</l><block s="reportDifference"><block var="destY"/><block s="yPosition"></block></block></block><block s="doIfElse"><block s="reportIsA"><block var="easing"/><l><option>reporter</option></l></block><script><block s="doSetVar"><l>func</l><block var="easing"/></block></script><script><block s="doSetVar"><l>func</l><l></l></block></script></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="end time"/></block><script><block s="setXPosition"><block s="reportDifference"><block var="destX"/><block s="reportProduct"><block var="deltaX"/><block s="evaluate"><block var="func"/><list><block s="reportQuotient"><block s="reportDifference"><block var="end time"/><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="reportProduct"><block var="duration"/><l>1000</l></block></block></list></block></block></block></block><block s="setYPosition"><block s="reportDifference"><block var="destY"/><block s="reportProduct"><block var="deltaY"/><block s="evaluate"><block var="func"/><list><block s="reportQuotient"><block s="reportDifference"><block var="end time"/><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="reportProduct"><block var="duration"/><l>1000</l></block></block></list></block></block></block></block></script></block><block s="gotoXY"><block var="destX"/><block var="destY"/></block></script></block-definition><block-definition s="animate %&apos;attribute&apos; by %&apos;delta&apos; in %&apos;duration&apos; secs easing %&apos;easing&apos;" type="command" category="motion"><header></header><code></code><translations>de:animiere _ um _ in _ Sek. beschleunigt: _&#xD;ca:modifica _ amb _ en _ segons de forma _&#xD;pt:anima _ de _ em _ s de forma _&#xD;</translations><inputs><input type="%s" readonly="true">x position<options>x position&#xD;y position&#xD;direction&#xD;size&#xD;ghost effect&#xD;color effect&#xD;saturation effect&#xD;brightness effect&#xD;fisheye effect&#xD;whirl effect&#xD;pixelate effect&#xD;mosaic effect&#xD;negative effect&#xD;tempo&#xD;volume&#xD;balance</options></input><input type="%n">50</input><input type="%n">1</input><input type="%s" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input></inputs><script><block s="doDeclareVariables"><list><l>accessors</l><l>func</l></list></block><block s="doSetVar"><l>accessors</l><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>x position</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setXPosition"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>y position</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setYPosition"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>direction</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setHeading"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>size</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setScale"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>tempo</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetTempo"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getTempo"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>volume</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setVolume"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getVolume"></block></autolambda><list></list></block></list></block><block s="reportIfElse"><block s="reportEquals"><block var="attribute"/><l>balance</l></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setPan"><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getPan"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setEffect"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block><l></l></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="getEffect"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block></block></autolambda><list></list></block></list></block></block></block></block></block></block></block></block></block><block s="doIfElse"><block s="reportIsA"><block var="easing"/><l><option>reporter</option></l></block><script><block s="doSetVar"><l>func</l><block var="easing"/></block></script><script><block s="doSetVar"><l>func</l><l></l></block></script></block><custom-block s="animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing"><block s="reportListItem"><l>1</l><block var="accessors"/></block><block s="reportListItem"><l>2</l><block var="accessors"/></block><block var="delta"/><block var="duration"/><block var="func"/></custom-block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; $nl in %&apos;time&apos; secs easing %&apos;easing&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations>de:für _ = _ bis _ _ in _ Sek. beschleunigt: _ _&#xD;ca:per _ = _ fins _ _ en _ segons de forma _ _&#xD;pt:para _ de _ a _ _ em _ s de forma _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">0</input><input type="%n">100</input><input type="%n">1</input><input type="%txt" readonly="true">linear<options>linear&#xD;quadratic={&#xD;quadratic-in&#xD;quadratic-out&#xD;quadratic-in-out&#xD;}&#xD;cubic={&#xD;cubic-in&#xD;cubic-out&#xD;cubic-in-out&#xD;}&#xD;quart={&#xD;quart-in&#xD;quart-out&#xD;quart-in-out&#xD;}&#xD;sinusoidal={&#xD;sine-in&#xD;sine-out&#xD;sine-in-out&#xD;}&#xD;elastic</options></input><input type="%ca"></input></inputs><script><block s="doSetVar"><l>i</l><block var="start"/></block><custom-block s="animate setter %cmdRing getter %repRing delta %n over %n secs easing %repRing"><block s="reifyScript"><script><block s="doSetVar"><l>i</l><l></l></block><block s="doRun"><block var="action"/><list></list></block></script><list></list></block><block s="reifyReporter"><autolambda><block var="i"/></autolambda><list></list></block><block s="reportDifference"><block var="end"/><block var="start"/></block><block var="time"/><block s="reportIfElse"><block s="reportIsA"><block var="easing"/><l><option>reporter</option></l></block><block var="easing"/><l></l></block></custom-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 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="reportListAttribute"><l><option>length</option></l><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 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="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="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportEquals"><l></l><l> </l></block></autolambda><list></list></block><block s="reportTextSplit"><block var="sentence"/><l><option>letter</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportAnd"><l/><l/></block></autolambda><list></list></block></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%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="phrase"/></block><script><block s="doReport"><block s="reportNewList"><list></list></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><l></l></block></autolambda><list></list></block><block var="phrase"/></block></block></block></script></block-definition><block-definition s="Hummingbird %&apos;sensor&apos; %&apos;port&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">Light<options>Distance (cm)&#xD;Dial&#xD;Light&#xD;Sound&#xD;Other (V)</options></input><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3</options></input></inputs><script><block s="doDeclareVariables"><list><l>value</l></list></block><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Other (V)</l></block><script><block s="doSetVar"><l>sensor</l><l>Other</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Distance (cm)</l></block><script><block s="doSetVar"><l>sensor</l><l>Distance</l></block></script></block><block s="doSetVar"><l>value</l><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/</l><block var="sensor"/><l>/</l><block var="port"/></list></block></block></block><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><block var="value"/><l>Not Connected</l></block></block><script><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Distance</l></block><script><block s="doReport"><block s="reportRound"><block s="reportProduct"><l>1.17</l><block var="value"/></block></block><comment w="90" collapsed="false">117/100 Scaling factor</comment></block></script></block><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Other</l></block><script><block s="doReport"><block s="reportQuotient"><block s="reportRound"><block s="reportProduct"><block s="reportProduct"><l>0.01294</l><block var="value"/></block><l>100</l></block></block><l>100</l></block><comment w="102" collapsed="false">3.3/255 scale factor</comment></block></script></block><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Sound</l><comment w="155" collapsed="true">If connected, adjust sound level</comment></block><script><block s="doReport"><block s="reportRound"><block s="reportProduct"><l>0.784</l><block var="value"/><comment w="140" collapsed="false">200/255 Scaling factor</comment></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Light</l></block><script><block s="doReport"><block s="reportRound"><block s="reportProduct"><l>0.392</l><block var="value"/><comment w="140" collapsed="false">100/255 Scaling factor</comment></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="sensor"/><l>Dial</l></block><script><block s="doReport"><block s="reportRound"><block s="reportProduct"><l>0.435</l><block var="value"/><comment w="140" collapsed="false">100/230 Scaling factor</comment></block></block></block></script></block></script><script><block s="doReport"><l>Not Connected</l></block></script></block></script></block-definition><block-definition s="Hummingbird Play Note %&apos;note&apos; for %&apos;beats&apos; beats" type="command" category="sound"><header></header><code></code><translations>ko:Hummingbird _ 번 음을 _ 박자로 연주하기&#xD;de:Hummingbird Spiele Note _ für _ Schläge&#xD;pt:Hummingbird Toque Notas _ por _ Batidas&#xD;fr:Hummingbird Jouer la note _ pour _ battement(s)&#xD;nl:Hummingbird Speel Noot _ voor _ Beats&#xD;zh_CN:Hummingbird 演奏 音阶 _ 于 _ 拍&#xD;zh_TW:Hummingbird 演奏 音階 _ 於 _ 拍&#xD;ar:Hummingbird تشغيل الموسيقى  _ _&#xD;dk:Hummingbird Spil tone _ i _ slag&#xD;he:Hummingbird נגן תו   _  במשך  _   פעימות&#xD;es:Hummingbird Emitir un sonido _ por _ pulsos&#xD;ca:Hummingbird Toca nota _ durant _ temps&#xD;fi:Hummingbird Soita sävel _  _ iskun ajan&#xD;sv:Hummingbird Spela not _ _&#xD;</translations><inputs><input type="%n">60</input><input type="%n">0.5</input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block var="note"/><l>135</l></block><script><block s="doSetVar"><l>note</l><l>135</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><l>32</l><block var="note"/></block><script><block s="doSetVar"><l>note</l><l>32</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="beats"/><l>16</l></block><script><block s="doSetVar"><l>beats</l><l>16</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><l>0</l><block var="beats"/></block><script><block s="doSetVar"><l>beats</l><l>0</l></block></script></block><block s="doSetVar"><l>beats</l><block s="reportRound"><block s="reportProduct"><block s="reportQuotient"><l>60000</l><block s="getTempo"></block></block><block var="beats"/></block><comment w="242" collapsed="false">BPM = tempo&#xD;60 * 1000/BPM = BPMS  beats per millisecond&#xD;beats = Duration in ms  = BPMS * number of beats</comment></block></block><block s="doRun"><block s="reifyReporter"><autolambda><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/playnote/</l><block var="note"/><l>/</l><block var="beats"/></list></block></block></autolambda><list></list></block><list></list></block><block s="doWait"><block s="reportQuotient"><block var="beats"/><l>1000</l></block><comment w="205" collapsed="false">block for number of seconds</comment></block></script></block-definition><block-definition s="micro:bit %&apos;device&apos; %&apos;dim&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">Accelerometer (m/s²)<options>Accelerometer (m/s²)&#xD;Magnetometer (µT)</options></input><input type="%txt" readonly="true">X<options>X&#xD;Y&#xD;Z</options></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="device"/><l>Accelerometer (m/s²)</l></block><script><block s="doSetVar"><l>device</l><l>Accelerometer</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="device"/><l>Magnetometer (µT)</l></block><script><block s="doSetVar"><l>device</l><l>Magnetometer</l></block></script></block><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/</l><block var="device"/><l>/</l><block var="dim"/></list></block></block></block></script></block-definition><block-definition s="micro:bit Button %&apos;button&apos;" type="predicate" category="sensing"><header></header><code></code><translations>ko:micro:bit 버튼 _&#xD;de:micro:bit Knopf _&#xD;pt:micro:bit Tecla _&#xD;fr:micro:bit Bouton _&#xD;nl:micro:bit Knop _&#xD;zh_CN:micro:bit 按钮 _&#xD;zh_TW:micro:bit 按鈕 _&#xD;ar:micro:bit زر _&#xD;dk:micro:bit Knap _&#xD;he:micro:bit לחצן  _&#xD;es:micro:bit Pulsador _&#xD;ca:micro:bit Botó _&#xD;fi:micro:bit Painike _&#xD;sv:micro:bit Knapp _&#xD;</translations><inputs><input type="%txt" readonly="true">A<options>A&#xD;B</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/button/</l><block var="button"/></list></block></block><l>true</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></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="micro:bit Compass" type="reporter" category="sensing"><header></header><code></code><translations>ko:micro:bit 나침반 센서&#xD;de:micro:bit Kompass&#xD;pt:micro:bit Bússola&#xD;fr:micro:bit Compas&#xD;nl:micro:bit Kompas&#xD;zh_CN:micro:bit 指南针&#xD;zh_TW:micro:bit 指南針&#xD;ar:micro:bit بوصلة&#xD;dk:micro:bit Kompas&#xD;he:micro:bit מצפן&#xD;es:micro:bit Brujula&#xD;ca:micro:bit Brúixola&#xD;fi:micro:bit Kompassi&#xD;sv:micro:bit Kompass&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/</l><l>Compass</l></list></block></block></block></script></block-definition><block-definition s="micro:bit %&apos;dim&apos;" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true">Screen Up<options>Screen Up&#xD;Screen Down&#xD;Tilt Left&#xD;Tilt Right&#xD;Logo Up&#xD;Logo Down&#xD;Shake</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/in/orientation/</l><block var="dim"/></list></block></block><l>true</l></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></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="stop all" type="command" category="control"><header></header><code></code><translations>ko:모두 멈추기&#xD;de:stoppe alles&#xD;pt:pare todos&#xD;fr:stop tout&#xD;nl:stop alle&#xD;zh_CN:停止 全部&#xD;zh_TW:停止 全部&#xD;ar:توقف الكل&#xD;dk:stop alle&#xD;he:להפסיק הכל&#xD;es:detener todo&#xD;ca:atura tot&#xD;fi:pysäytä kaikki&#xD;sv:stop allt&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/stopall</l></list></block></block></block></script></block-definition><block-definition s="Hummingbird Position Servo %&apos;port&apos; %&apos;position&apos; °" type="command" category="motion"><header></header><code></code><translations>ko:Hummingbird 위치 제어 서보 _ _ °&#xD;de:Hummingbird Position Servo _ _ °&#xD;pt:Hummingbird Posição do Servo _ _ °&#xD;fr:Hummingbird Position Servo _ _ °&#xD;nl:Hummingbird Positie-Servo _ _ °&#xD;zh_CN:Hummingbird 位置伺服 _ _ °&#xD;zh_TW:Hummingbird 位置伺服 _ _ °&#xD;ar:Hummingbird موقف محرك سيرفو المؤازر  _ _&#xD;dk:Hummingbird Positionsservo _ _ °&#xD;he:Hummingbird סרוו כיוון     _ _&#xD;es:Hummingbird Servo de posicion _ _ °&#xD;ca:Hummingbird Servo posicional _ _ °&#xD;fi:Hummingbird Asentoservo _ _ °&#xD;sv:Hummingbird Positionsservo _ _ °&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3&#xD;4</options></input><input type="%n">90</input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="position"/><l>0</l></block><script><block s="doSetVar"><l>position</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="position"/><l>180</l></block><script><block s="doSetVar"><l>position</l><l>180</l></block></script></block><block s="doSetVar"><l>position</l><block s="reportRound"><block s="reportProduct"><block var="position"/><l>1.41</l></block></block><comment w="228" collapsed="false">254/180 Scaling Factor</comment></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>position</l></list><l>var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.servos === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.servos = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setServoAngle: function (port, angle) {&#xD;            function callback() {&#xD;                if (window.birdbrain.servos[port] === angle) {&#xD;                    delete window.birdbrain.servos[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.servos.setServoAngle(port, window.birdbrain.servos[port]);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;         &#xD;            var thisURL = "http://127.0.0.1:30061/hummingbird/out/servo/" + actualPort + "/" + angle;&#xD;            //console.log("thisURL: " + thisURL);&#xD;            xhr.open("GET", thisURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);          &#xD;            &#xD;        }&#xD;    };&#xD;}&#xD;&#xD;//var realAngle = Math.floor(ang*1.25);&#xD;&#xD;//realAngle = Math.max(Math.min(realAngle,225.0),0.0);&#xD;&#xD;if (window.birdbrain.servos[realPort] === undefined) {&#xD;    window.birdbrain.servos.setServoAngle(realPort, position);&#xD;}&#xD;&#xD;window.birdbrain.servos[realPort] = position;</l></block><list><block var="port"/><block var="position"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="187.14285714285717" y="82.28571428571428"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/servo/</l><l></l><l>/</l><l></l></list></block></block></block></script></scripts></block-definition><block-definition s="Hummingbird Rotation Servo %&apos;port&apos; %&apos;speed&apos; %" type="command" category="motion"><header></header><code></code><translations>ko:Hummingbird 회전속도 제어 서보 _ _ %&#xD;de:Hummingbird Drehung Servo _ _ %&#xD;pt:Hummingbird Rotação do Servo _ _ %&#xD;fr:Hummingbird Rotation Servo _ _ %&#xD;nl:Hummingbird Draai-Servo _ _ %&#xD;zh_CN:Hummingbird 旋转伺服 _ _ %&#xD;zh_TW:Hummingbird 旋轉伺服 _ _ %&#xD;ar:Hummingbird فتحة دوران المحرك المؤازر  _ _&#xD;dk:Hummingbird Rotationsservo _ _ %&#xD;he:Hummingbird סרוו סיבובים    _ _ %&#xD;es:Hummingbird Servo de rotacion _ _ %&#xD;ca:Hummingbird Servo rotacional _ _ %&#xD;fi:Hummingbird Kiertoservo _ _ %&#xD;sv:Hummingbird Rotationsservo _ _ %&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3&#xD;4</options></input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="speed"/><l>-100</l></block><script><block s="doSetVar"><l>speed</l><l>-100</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="speed"/><l>100</l></block><script><block s="doSetVar"><l>speed</l><l>100</l></block></script></block><block s="doIfElse"><block s="reportAnd"><block s="reportGreaterThan"><block var="speed"/><l>-10</l></block><block s="reportLessThan"><block var="speed"/><l>10</l></block></block><script><block s="doSetVar"><l>speed</l><l>255</l></block></script><script><block s="doSetVar"><l>speed</l><block s="reportRound"><block s="reportSum"><block s="reportQuotient"><block s="reportProduct"><block var="speed"/><l>23</l></block><l>100</l></block><l>122</l></block></block></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>speed</l></list><l>var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.rotationServos === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.rotationServos = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setServoSpeed: function (port, speed) {&#xD;            function callback() {&#xD;                if (window.birdbrain.rotationServos[port] === speed) {&#xD;                    delete window.birdbrain.rotationServos[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.rotationServos.setServoSpeed(port, window.birdbrain.rotationServos[port]);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;         &#xD;            var thisURL = "http://127.0.0.1:30061/hummingbird/out/rotation/" + actualPort + "/" + speed;&#xD;            //console.log("thisURL: " + thisURL);&#xD;            xhr.open("GET", thisURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);          &#xD;            &#xD;        }&#xD;    };&#xD;}&#xD;&#xD;if (window.birdbrain.rotationServos[realPort] === undefined) {&#xD;    window.birdbrain.rotationServos.setServoSpeed(realPort, speed);&#xD;}&#xD;&#xD;window.birdbrain.rotationServos[realPort] = speed;</l></block><list><block var="port"/><block var="speed"/></list></block></script></block-definition><block-definition s="Hummingbird LED %&apos;port&apos; %&apos;intensity&apos; %" type="command" category="looks"><header></header><code></code><translations>ko:Hummingbird LED _ _ %&#xD;de:Hummingbird LED _ _ %&#xD;pt:Hummingbird LED _ _ %&#xD;fr:Hummingbird LED _ _ %&#xD;nl:Hummingbird LED _ _ %&#xD;zh_CN:Hummingbird LED _ _ %&#xD;zh_TW:Hummingbird LED _ _ %&#xD;ar:Hummingbird ضوء _ _&#xD;dk:Hummingbird LED _ _ %&#xD;he:Hummingbird לד   % _ _&#xD;es:Hummingbird LED _ _ %&#xD;ca:Hummingbird LED _ _ %&#xD;fi:Hummingbird LED _ _ %&#xD;sv:Hummingbird LED _ _ %&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2&#xD;3</options></input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="intensity"/><l>0</l></block><script><block s="doSetVar"><l>intensity</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="intensity"/><l>100</l></block><script><block s="doSetVar"><l>intensity</l><l>100</l></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum,intensitynum</l></list><l>//var hummingbirdAppID = "lfloofocohhfeeoohpokmljiinfmpenj";&#xD;var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.LEDs === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.LEDs = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setLEDIntensity: function(port, intensity) {&#xD;            function callback() {&#xD;                if (window.birdbrain.LEDs[port] === intensity) {&#xD;                    delete window.birdbrain.LEDs[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.LEDs.setLEDIntensity(port, window.birdbrain.LEDs[port]);&#xD;                }&#xD;            }&#xD;            /*&#xD;            var report = {&#xD;                message:"L".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                intensity: intensity&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;            */&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;&#xD;            var ledURL = "http://127.0.0.1:30061/hummingbird/out/led/" + actualPort + "/" + intensity;&#xD;            xhr.open("GET", ledURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var realIntensity = Math.floor(intensitynum*2.55);&#xD;&#xD;realIntensity = Math.max(Math.min(realIntensity,255.0),0.0);&#xD;&#xD;if (window.birdbrain.LEDs[realPort] === undefined) {&#xD;  window.birdbrain.LEDs.setLEDIntensity(realPort, realIntensity);&#xD;}&#xD;&#xD;window.birdbrain.LEDs[realPort] = realIntensity;</l></block><list><block var="port"/><block var="intensity"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="396.42857142857144" y="46.5714285714285"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/led/</l><block var="port"/><l>/</l><block var="intensity"/></list></block></block></block></script><script x="396.42857142857144" y="100.28571428571433"><block s="doSetVar"><l>intensity</l><block s="reportRound"><block s="reportProduct"><block var="intensity"/><l>2.55</l><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block></script></scripts></block-definition><block-definition s="Hummingbird Tri-LED %&apos;port&apos; R %&apos;redLED&apos; % G %&apos;greenLED&apos; % B %&apos;blueLED&apos; %" type="command" category="looks"><header></header><code></code><translations>ko:Hummingbird 삼색 LED _ 빨강 _ % 초록 _ % 파랑 _ %&#xD;de:Hummingbird Dreifarben-LED _ R _ % G _ % B _ %&#xD;pt:Hummingbird LED Tricolor _ R _ % G _ % B _ %&#xD;fr:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;nl:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;zh_CN:Hummingbird 三色LED _ 红 _ % 绿 _ % 蓝 _ %&#xD;zh_TW:Hummingbird 三色LED _ 紅 _ % 綠 _ % 藍 _ %&#xD;ar:Hummingbird ضوء الصمام الثلاثي  _ _ _ _&#xD;dk:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;he:Hummingbird לד שלושה צבעים       % _ R   _   %  G _  %   B  _&#xD;es:Hummingbird Led tricolor _ R _ % G _ % B _ %&#xD;ca:Hummingbird Tri-LED _ vermell _ % verd _ % blau _ %&#xD;fi:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;sv:Hummingbird Tri-LED _ R _ % G _ % B _ %&#xD;</translations><inputs><input type="%n" readonly="true">1<options>1&#xD;2</options></input><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="redLED"/><l>0</l></block><script><block s="doSetVar"><l>redLED</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="redLED"/><l>100</l></block><script><block s="doSetVar"><l>redLED</l><l>100</l></block></script></block><block s="doIf"><block s="reportLessThan"><block var="greenLED"/><l>0</l></block><script><block s="doSetVar"><l>greenLED</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="greenLED"/><l>100</l></block><script><block s="doSetVar"><l>greenLED</l><l>100</l></block></script></block><block s="doIf"><block s="reportLessThan"><block var="blueLED"/><l>0</l></block><script><block s="doSetVar"><l>blueLED</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="blueLED"/><l>100</l></block><script><block s="doSetVar"><l>blueLED</l><l>100</l></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>portnum</l><l>rednum</l><l>greennum</l><l>bluenum</l></list><l>var realPort = portnum-1;&#xD;////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.triLEDs === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.triLEDs = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        setLEDIntensities: function(port, intensities) {&#xD;            function callback() {&#xD;                if (JSON.stringify(window.birdbrain.triLEDs[port]) === JSON.stringify(intensities)) {&#xD;                    delete window.birdbrain.triLEDs[port];&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.triLEDs.setLEDIntensities(port, window.birdbrain.triLEDs[port]);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var actualPort = port+1;&#xD;            /*  Note RGB:&#xD;                red: intensities[0],&#xD;                green: intensities[1],&#xD;                blue: intensities[2]  &#xD;            */&#xD;            &#xD;            var thisURL = "http://127.0.0.1:30061/hummingbird/out/triled/" + actualPort + "/" + intensities[0] + "/" + intensities[1] + "/" + intensities[2];&#xD;            //console.log("thisURL: " + thisURL);&#xD;            xhr.open("GET", thisURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var realIntensities = [rednum, greennum, bluenum].map(function(intensity) {&#xD;    return Math.floor(Math.max(Math.min(intensity*2.55, 255), 0));&#xD;});&#xD;&#xD;if (window.birdbrain.triLEDs[realPort] === undefined) {&#xD;    window.birdbrain.triLEDs.setLEDIntensities(realPort, realIntensities);&#xD;}&#xD;&#xD;window.birdbrain.triLEDs[realPort] = realIntensities;&#xD;</l></block><list><block var="port"/><block var="redLED"/><block var="greenLED"/><block var="blueLED"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="251.42857142857144" y="108.85714285714295"><block s="doSetVar"><l>redLED</l><block s="reportRound"><block s="reportProduct"><block var="redLED"/><l>2.55</l><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block><block s="doSetVar"><l>blueLED</l><block s="reportRound"><block s="reportProduct"><block var="blueLED"/><l>2.55</l><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block><block s="doSetVar"><l>greenLED</l><block s="reportRound"><block s="reportProduct"><block var="greenLED"/><l>2.55</l><comment w="90" collapsed="false">Scale factor 255/100</comment></block></block></block><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/triled/</l><l></l><l>/</l><l></l><l>/</l><l></l><l>/</l><l></l></list></block></block></block></script></scripts></block-definition><block-definition s="micro:bit Print %&apos;string&apos;" type="command" category="looks"><header></header><code></code><translations>ko:micro:bit 출력 _&#xD;de:micro:bit Drucke _&#xD;pt:micro:bit Imprimir _&#xD;fr:micro:bit Imprimer _&#xD;nl:micro:bit Schrijf _&#xD;zh_CN:micro:bit 打印 _&#xD;zh_TW:micro:bit 打印 _&#xD;ar:micro:bit طباعة _&#xD;dk:micro:bit Vis _&#xD;he:micro:bit הדפס  _&#xD;es:micro:bit Imprimir _&#xD;ca:micro:bit Escriu _&#xD;fi:micro:bit Näytä teksti _&#xD;sv:micro:bit Visa text _&#xD;</translations><inputs><input type="%txt">Hello</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>string</l></list><l>////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;// Encode any special characters in the URL&#xD;string = encodeURIComponent(string);&#xD;&#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.printObj === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.printObj = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        printString: function(string) {&#xD;            function callback() {&#xD;                if (window.birdbrain.printObj.stringToPrint === string) {&#xD;                    delete window.birdbrain.printObj.stringToPrint;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.printObj.printString(window.birdbrain.printObj.stringToPrint);&#xD;                }&#xD;            }&#xD;            /*&#xD;            var report = {&#xD;                message:"L".charCodeAt(0),&#xD;                port: port.toString().charCodeAt(0),&#xD;                intensity: intensity&#xD;            };&#xD;            chrome.runtime.sendMessage(hummingbirdAppID, report, callback);&#xD;            */&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var printURL = "http://127.0.0.1:30061/hummingbird/out/print/" + string;&#xD;            xhr.open("GET", printURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;//TODO Turn &apos;/&apos; chars into % &#xD;&#xD;if (window.birdbrain.printObj.stringToPrint === undefined) {&#xD;  window.birdbrain.printObj.printString(string);&#xD;}&#xD;&#xD;window.birdbrain.printObj.stringToPrint = string;</l></block><list><block var="string"/></list></block><block s="doWait"><l>0</l></block></script><scripts><script x="310.9999990000001" y="47"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/print/</l><block var="string"/></list></block></block></block></script><script x="335" y="1024.8333343333334"><block var="intensity"/></script></scripts></block-definition><block-definition s="micro:bit Display $nl %&apos;r1c1&apos; %&apos;r1c2&apos; %&apos;r1c3&apos; %&apos;r1c4&apos; %&apos;r1c5&apos; $nl %&apos;r2c1&apos; %&apos;r2c2&apos; %&apos;r2c3&apos; %&apos;r2c4&apos; %&apos;r2c5&apos; $nl %&apos;r3c1&apos; %&apos;r3c2&apos; %&apos;r3c3&apos; %&apos;r3c4&apos; %&apos;r3c5&apos; $nl %&apos;r4c1&apos; %&apos;r4c2&apos; %&apos;r4c3&apos; %&apos;r4c4&apos; %&apos;r4c5&apos; $nl %&apos;r5c1&apos; %&apos;r5c2&apos; %&apos;r5c3&apos; %&apos;r5c4&apos; %&apos;r5c5&apos;" type="command" category="looks"><header></header><code></code><translations>ko:micro:bit 보이기 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;de:micro:bit LED Anzeige _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;pt:micro:bit Visor _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;fr:micro:bit Display _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;nl:micro:bit Scherm _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;zh_CN:micro:bit 显示 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;zh_TW:micro:bit 顯示 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;ar:micro:bit عرض _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;dk:micro:bit Display _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;he:micro:bit מסך _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;es:micro:bit Monitor _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;ca:micro:bit Pantalla _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;fi:micro:bit Näytä _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;sv:micro:bit Skärm _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _&#xD;</translations><inputs><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input><input type="%b">false</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>r1c1, r1c2, r1c3, r1c4, r1c5, r2c1, r2c2, r2c3, r2c4, r2c5, r3c1, r3c2, r3c3, r3c4, r3c5, r4c1, r4c2, r4c3, r4c4, r4c5, r5c1, r5c2, r5c3, r5c4, r5c5 </l></list><l>////////////////////////////////////////////////////////////////////////////////&#xD;// In order to avoid sending more messages than the app can handle, whenever we&#xD;// send a message we also save it in a persistent global variable. When the&#xD;// message is processed in the app, the callback checks if the global variable&#xD;// still matches what it was changed to. If it was, it deletes the global&#xD;// variable. Otherwise the message is resent with new data.&#xD;//&#xD;// When this block is called it checks if the global value has been set. If it&#xD;// has, it sends a message. Otherwise it just updates the value and lets the&#xD;// callback handle it.&#xD;&#xD;// Create url representation from inputs&#xD;var symbolString =  r1c1 + "\/"+ r1c2 + "\/"+ r1c3 + "\/"+ r1c4 + "\/"+ r1c5 + "\/" +&#xD;                    r2c1 + "\/"+ r2c2 + "\/"+ r2c3 + "\/"+ r2c4 + "\/"+ r2c5 + "\/" +&#xD;                    r3c1 + "\/"+ r3c2 + "\/"+ r3c3 + "\/"+ r3c4 + "\/"+ r3c5 + "\/" +&#xD;                    r4c1 + "\/"+ r4c2 + "\/"+ r4c3 + "\/"+ r4c4 + "\/"+ r4c5 + "\/" +&#xD;                    r5c1 + "\/"+ r5c2 + "\/"+ r5c3 + "\/"+ r5c4 + "\/"+ r5c5 ;&#xD;&#xD;//r1c1, r1c2, r1c3, r1c4, r1c5, r2c1, r2c2, r2c3, r2c4, r2c5, r3c1, r3c2, r3c3, r3c4, r3c5, r4c1, r4c2, r4c3, r4c4, r4c5, r5c1, r5c2, r5c3, r5c4, r5c5 &#xD;&#xD;// We can&apos;t run code beforehand to define values so we must check each block&#xD;// call if they are set.&#xD;if (window.birdbrain === undefined || window.birdbrain.symbolObj === undefined) {&#xD;    window.birdbrain = window.birdbrain || {};&#xD;    window.birdbrain.symbolObj = {&#xD;        // By attaching this function to a global variable, it is only&#xD;        // defined once instead of every time this block is called, improving&#xD;        // performance significantly.&#xD;        printSymbol: function(symbol) {&#xD;            function callback() {&#xD;                if (window.birdbrain.symbolObj.symbolToPrint === symbol) {  // Check if arrays are equal&#xD;                    delete window.birdbrain.symbolObj.symbolToPrint;&#xD;                }&#xD;                else {&#xD;                    window.birdbrain.symbolObj.printSymbol(window.birdbrain.symbolObj.symbolToPrint);&#xD;                }&#xD;            }&#xD;&#xD;            //Create a new XMLHttpRequest object&#xD;            var xhr = new XMLHttpRequest();&#xD;            var symbolURL = "http://127.0.0.1:30061/hummingbird/out/symbol/A/" + symbol;&#xD;            xhr.open("GET", symbolURL, true);&#xD;            xhr.onload = function (e) {&#xD;              if (xhr.readyState === 4) {&#xD;                if (xhr.status === 200) {&#xD;                  callback();&#xD;                } else {&#xD;                  console.error(xhr.statusText);&#xD;                }&#xD;              }&#xD;            };&#xD;            xhr.onerror = function (e) {&#xD;              console.error(xhr.statusText);&#xD;            };&#xD;            xhr.send(null);&#xD;&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;if (window.birdbrain.symbolObj.symbolToPrint === undefined) {&#xD;  window.birdbrain.symbolObj.printSymbol(symbolString);&#xD;}&#xD;&#xD;window.birdbrain.symbolObj.symbolToPrint = symbolString;&#xD;&#xD;&#xD;</l></block><list><block var="r1c1"/><block var="r1c2"/><block var="r1c3"/><block var="r1c4"/><block var="r1c5"/><block var="r2c1"/><block var="r2c2"/><block var="r2c3"/><block var="r2c4"/><block var="r2c5"/><block var="r3c1"/><block var="r3c2"/><block var="r3c3"/><block var="r3c4"/><block var="r3c5"/><block var="r4c1"/><block var="r4c2"/><block var="r4c3"/><block var="r4c4"/><block var="r4c5"/><block var="r5c1"/><block var="r5c2"/><block var="r5c3"/><block var="r5c4"/><block var="r5c5"/></list></block><block s="doWait"><l></l></block></script><scripts><script x="731" y="16"><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>http://127.0.0.1:30061/hummingbird/out/symbol/A/</l><block var="11"/><l>/</l><block var="12"/><l>/</l><block var="r1c3"/><l>/</l><block var="r1c4"/><l>/</l><block var="r1c5"/><l>/</l><block var="r2c1"/><l>/</l><block var="r2c2"/><l>/</l><block var="r2c3"/><l>/</l><block var="r2c4"/><l>/</l><block var="25"/><l>/</l><block var="31"/><l>/</l><block var="r3c2"/><l>/</l><block var="33"/><l>/</l><block var="34"/><l>/</l><block var="35"/><l>/</l><block var="41"/><l>/</l><block var="42"/><l>/</l><block var="43"/><l>/</l><block var="44"/><l>/</l><block var="45"/><l>/</l><block var="51"/><l>/</l><block var="52"/><l>/</l><block var="53"/><l>/</l><block var="54"/><l>/</l><block var="55"/></list></block></block></block></script></scripts></block-definition><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;</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></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="getCostumeIdx"></block></block><block s="up"></block><block s="gotoXY"><l>0</l><l>0</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="doRun"><block s="reportJSFunction"><list><l>costume</l><l>name</l></list><l>costume.name = name;</l></block><list><block var="costume"/><block var="text"/></list></block><block s="gotoXY"><l>0</l><l>0</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="doReport"><block var="costume"/></block></script></block-definition><block-definition s="do nothing" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs></block-definition><block-definition s="%&apos;say/ask/think&apos; %&apos;text&apos; with %&apos;num&apos; delay between each letter" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>say&#xD;think&#xD;ask={&#xD;ask/think&#xD;ask/say&#xD;}</options></input><input type="%txt"></input><input type="%n">0.04</input></inputs><script><block s="doFor"><l>i</l><l>1</l><block s="reportIfElse"><block s="reportNot"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block></block><block s="reportStringSize"><block var="text"/></block><block s="reportListAttribute"><l><option>length</option></l><block var="text"/></block></block><script><block s="doRun"><block s="reportIfElse"><block s="reportAnd"><block s="reportOr"><block s="reportEquals"><block var="say/ask/think"/><l>ask/think</l></block><block s="reportEquals"><block var="say/ask/think"/><l>ask/say</l></block></block><block s="reportEquals"><block var="i"/><block s="reportIfElse"><block s="reportNot"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block></block><block s="reportStringSize"><block var="text"/></block><block s="reportListAttribute"><l><option>length</option></l><block var="text"/></block></block></block></block><block s="reifyScript"><script><block s="doAsk"><l></l></block></script><list></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="say/ask/think"/><l>ask/think</l></block><block s="reportEquals"><block var="say/ask/think"/><l>think</l></block></block><block s="reifyScript"><script><block s="doThink"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="bubble"><l></l></block></script><list></list></block></block></block><list><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><block var="i"/></block><block var="text"/></block><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><l>1</l><block var="i"/></block><block var="text"/></block></block></block></list></block><block s="doWait"><block var="num"/></block></script></block></script></block-definition><block-definition s="for %&apos;variable&apos; = %&apos;s&apos; to %&apos;e&apos; %&apos;action&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_getVarNamesDict</options></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doFor"><l>i</l><block var="s"/><block var="e"/><script><block s="doRun"><block s="reifyScript"><script><block s="doSetVar"><l></l><block var="i"/></block></script><list></list></block><list><block var="variable"/></list></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="%&apos;n&apos; √ %&apos;x&apos; $nl nth root of x" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportPower"><block var="x"/><block s="reportQuotient"><l>1</l><block var="n"/></block></block></block></script></block-definition><block-definition s="letters %&apos;num&apos; through %&apos;place&apos; of %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="letters %n through %n of %txt"><block var="num"/><block var="place"/><l></l></custom-block></autolambda><list></list></block><block var="text"/></block><block s="reportJoinWords"><block s="reportLetter"><block s="reportNumbers"><block var="num"/><block var="place"/></block><block var="text"/></block></block></block></block></script></block-definition><block-definition s="average %&apos;numbers&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportCombine"><block var="numbers"/><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block><block s="reportListAttribute"><l><option>length</option></l><block var="numbers"/></block></block></block></script></block-definition><block-definition s="round %&apos;number&apos; to the nearest %&apos;to the nearest&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="number"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="round %n to the nearest %n"><l></l><block var="to the nearest"/></custom-block></autolambda><list></list></block><block var="number"/></block><block s="reportProduct"><block s="reportRound"><block s="reportQuotient"><block var="number"/><block var="to the nearest"/></block></block><block var="to the nearest"/></block></block></block></script></block-definition><block-definition s="remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations>ca:elimina els duplicats de _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListIndex"><block var="value"/><block var="list"/></block><block var="index"/></block></autolambda><list><l>value</l><l>index</l><l>list</l></list></block><block var="data"/></block></block></script><scripts><script x="14" y="164.2222222222222"><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportCDR"><block var="data"/></block><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block></script></block></script></scripts></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>pt:as amostras de som com _ Hz de _ s amostrado a _ Hz&#xD;</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="reportProduct"><block var="duration"/><block var="sample rate"/></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="reportProduct"><l>2</l><block s="reportProduct"><custom-block s="PI"></custom-block><block s="reportProduct"><block var="frequency"/><block var="time"/></block></block></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="degrees %&apos;radians&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:_ radianos em graus&#xD;</translations><inputs><input type="%n">0.5</input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportProduct"><block var="radians"/><l>180</l></block><custom-block s="PI"></custom-block></block></block></script></block-definition><block-definition s="note from %&apos;pitch&apos; hz" type="reporter" category="sound"><header></header><code></code><translations>pt:a nota com _ Hz&#xD;</translations><inputs><input type="%n">440</input></inputs><script><block s="doReport"><block s="reportRound"><block s="reportSum"><block s="reportProduct"><l>12</l><block s="reportQuotient"><block s="reportMonadic"><l><option>log</option></l><block s="reportQuotient"><block var="pitch"/><l>440</l></block></block><block s="reportMonadic"><l><option>log</option></l><l>2</l></block></block></block><l>69</l></block></block></block></script></block-definition><block-definition s="hz from note %&apos;note&apos;" type="reporter" category="sound"><header></header><code></code><translations>pt:a frequência da nota _&#xD;</translations><inputs><input type="%n">69</input></inputs><script><block s="doReport"><block s="reportProduct"><l>440</l><block s="reportPower"><l>2</l><block s="reportQuotient"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block></block></block></block></script></block-definition><block-definition s="name of note %&apos;note&apos;" type="reporter" category="sound"><header></header><code></code><translations>pt:o nome da nota _&#xD;</translations><inputs><input type="%n">69</input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block s="reportDifference"><block var="note"/><l>69</l></block><l>12</l></block><l>1</l></block><block s="reportNewList"><list><l>A</l><l>Bb</l><l>B</l><l>C</l><l>C#</l><l>D</l><l>D#</l><l>E</l><l>F</l><l>F#</l><l>G</l><l>G#</l></list></block></block></block></script></block-definition><block-definition s="replace all items %&apos;pred&apos; of %&apos;list&apos; with %&apos;thing&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportListItem"><block var="index"/><block s="reportMap"><block var="pred"/><block var="list"/></block></block><block var="thing"/><block var="value"/></block></autolambda><list><l>value</l><l>index</l></list></block><block var="list"/></block></block></script></block-definition><block-definition s="duration of %&apos;thing&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doDeclareVariables"><list><l>old</l></list></block><block s="doSetVar"><l>old</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doRun"><block var="thing"/><list></list></block><block s="doReport"><block s="reportDifference"><block s="reportDate"><l><option>time in milliseconds</option></l></block><block var="old"/></block></block></script></block-definition><block-definition s="last key pressed–JS names" type="reporter" category="sensing"><comment x="0" y="0" w="90" collapsed="false">reports the last key pressed. JavaScript has some special names for keys, so it might not work EXACTLY as you want.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>if (!("jsKeyDetector" in window)) {&#xD;  window.LastKeyPressed = "";&#xD;&#xD;  jsKeyDetector = window.addEventListener("keydown", function(ev) {&#xD;    window.lastKeyPressed = ev.code;&#xD;  });&#xD;}&#xD;&#xD;return window.lastKeyPressed</l></block><list></list></block></block></script></block-definition><block-definition s="set rotation style %&apos;which&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">left-right<options>don&apos;t rotate&#xD;all around&#xD;left-right</options></input></inputs><script><block s="doSetVar"><l><option>my rotation style</option></l><block s="reportDifference"><block s="reportListIndex"><block var="which"/><block s="reportNewList"><list><l>don&apos;t rotate</l><l>all around</l><l>left-right</l></list></block></block><l>1</l></block></block></script></block-definition><block-definition s="value of digit %&apos;digit num&apos; in %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doSetVar"><l>num</l><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="digit num"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="value of digit %n in %n"><l></l><block var="num"/></custom-block></autolambda><list></list></block><block var="digit num"/></block><block s="reportIfElse"><block s="reportIsA"><block var="num"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="value of digit %n in %n"><block var="digit num"/><l></l></custom-block></autolambda><list></list></block><block var="num"/></block><block s="reportMonadic"><l><option>abs</option></l><block s="reportListItem"><block s="reportMonadic"><l><option>abs</option></l><block var="digit num"/></block><block s="reportIfElse"><block s="reportLessThan"><block var="digit num"/><l>0</l></block><block s="reportCDR"><custom-block s="expand %n"><custom-block s="%s decimals %n"><l>only</l><block var="num"/></custom-block></custom-block></block><custom-block s="$flash reverse %l"><custom-block s="expand %n"><custom-block s="%s decimals %n"><l>no</l><block var="num"/></custom-block></custom-block></custom-block></block></block></block></block></block></block></script></block-definition><block-definition s="blockspec of %&apos;block&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return a.expression.blockSpec;</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="JS type of %&apos;a&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return typeof (a)</l></block><list><block var="a"/></list></block></block></script></block-definition><block-definition s="setters or getters for %&apos;expression&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="expression"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><custom-block s="setters or getters for %repRing"><block var="value"/></custom-block><l><option>list</option></l></block><block s="reportIfElse"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="setters or getters for %repRing"><block var="value"/></custom-block></block><l>1</l></block><block s="reportListItem"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><custom-block s="setters or getters for %repRing"><block var="value"/></custom-block></block></block><custom-block s="setters or getters for %repRing"><block var="value"/></custom-block></block><custom-block s="setters or getters for %repRing"><block var="value"/></custom-block></block></autolambda><list><l>value</l></list></block><block var="expression"/></block></block></script><script><block s="doDeclareVariables"><list><l>setters/getters</l></list></block><block s="doSetVar"><l>setters/getters</l><block s="reportIfElse"><block s="reportIsA"><block var="expression"/><l><option>command</option></l></block><l>getters</l><block s="reportIfElse"><block s="reportOr"><block s="reportIsA"><block var="expression"/><l><option>reporter</option></l></block><block s="reportIsA"><block var="expression"/><l><option>predicate</option></l></block></block><l>setters</l><l>error</l></block></block></block><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="errorObsolete"></block></script><list></list></block></list></block><block s="reportJoinWords"><list><block var="expression"/></list></block></block><block s="reportEquals"><block var="setters/getters"/><l>getters</l></block></block><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="errorObsolete"></block></autolambda><list></list></block></block></script><script><block s="doIfElse"><block s="reportAnd"><block s="reportEquals"><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="errorObsolete"></block></autolambda><list></list></block></list></block><block s="reportJoinWords"><list><block var="expression"/></list></block></block><block s="reportEquals"><block var="setters/getters"/><l>setters</l></block></block><script><block s="doReport"><block s="reportNewList"><list><block s="reifyScript"><script><block s="errorObsolete"></block></script><list></list></block></list></block></block></script><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="setters/getters"/><l>setters</l></block><block s="reportEquals"><block var="setters/getters"/><l>getters</l></block></block><script><block s="doIfElse"><block s="reportEquals"><custom-block s="object keys of %repRing"><block var="expression"/></custom-block><l>0</l></block><script><block s="doReport"><l></l></block></script><script><block s="doIf"><custom-block s="variable reporter? %repRing"><block var="expression"/></custom-block><script><block s="doReport"><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetVar"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doChangeVar"><l></l><l></l></block></script><list></list></block></list></block></block></script></block><block s="doReport"><block s="reportListItem"><l>2</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block var="value"/><l></l></block></block></autolambda><list><l>value</l></list></block><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportEquals"><block var="#1"/><l></l></block><block s="reportNewList"><list></list></block><block var="#1"/></block></autolambda><list><l>#1</l></list></block><list><custom-block s="assoc %s %l"><block s="reportJoinWords"><list><block var="expression"/></list></block><block s="reportIfElse"><block s="reportEquals"><block var="setters/getters"/><l>getters</l></block><custom-block s="setters for getters"></custom-block><block s="reportIfElse"><block s="reportEquals"><block var="setters/getters"/><l>setters</l></block><custom-block s="getters for setters"></custom-block><l></l></block></block></custom-block></list></block></block></block></block></script></block></script><script><block s="doReport"><l></l></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="getters for setters" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setHeading"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="turn"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="turnLeft"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="bounceOffEdge"></block></script><list></list></block><block s="reifyScript"><script><block s="doFaceTowards"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setXPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeXPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="gotoXY"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doGlide"><l></l><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setYPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeYPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="gotoXY"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doGlide"><l></l><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getCostumeIdx"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSwitchToCostume"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doWearNextCostume"></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setScale"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeScale"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getTempo"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetTempo"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doChangeTempo"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getVolume"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setVolume"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeVolume"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getPenDown"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="down"></block></script><list></list></block><block s="reifyScript"><script><block s="up"></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getEffect"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setEffect"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeEffect"><l></l><l>25</l></block></script><list></list></block><block s="reifyScript"><script><block s="clearEffects"></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setPenHSVA"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changePenHSVA"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setSize"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeSize"><l></l></block></script><list></list></block><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="$brush set pen to crayon %n"><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="set pen color to h: %n s: %n v: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="$brush set pen %s to %s"><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="$brush change pen %s by %s"><l></l><l></l></custom-block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list></list></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script></script><list></list></block><list></list></block></script><list></list></block><block s="reifyScript"><script><block s="fork"><block s="reifyScript"><script></script><list></list></block><list></list></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reportIfElse"><l/><l></l><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><script><block s="doIfElse"><l/><script></script><script></script></block></script><list></list></block><block s="reifyReporter"><script><block s="doIf"><l/><script></script></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getLastMessage"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><script><block s="doBroadcast"><l></l></block></script><list></list></block><block s="reifyReporter"><script><block s="doBroadcastAndWait"><l></l></block></script><list></list></block><block s="reifyReporter"><script><block s="doSend"><l></l><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reportGet"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetVar"><block s="reifyReporter"><autolambda><block s="reportGet"><l></l></block></autolambda><list></list></block><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><autolambda><block s="reportGlobalFlag"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetGlobalFlag"><l></l><l/></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><custom-block s="does var %s exist?"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><script><custom-block s="create %s var %mult%txt"><l></l><list></list></custom-block></script><list></list></block><block s="reifyReporter"><script><custom-block s="delete var %mult%txt"><list></list></custom-block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><autolambda><custom-block s="setting %s"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><custom-block s="set flag %s to %b"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="set value %s to %s"><l></l><l></l></custom-block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><autolambda><block s="getLastAnswer"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doAsk"><l></l></block></script><list></list></block><block s="reifyReporter"><script><custom-block s="set answer to %mlt"><l></l></custom-block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="changeScale"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setScale"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reportShown"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="show"></block></script><list></list></block><block s="reifyScript"><script><block s="hide"></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="getPan"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setPan"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changePan"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="setPenHSVA"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changePenHSVA"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setSize"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeSize"><l></l></block></script><list></list></block><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="$brush set pen to crayon %n"><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="set pen color to h: %n s: %n v: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="$brush set pen %s to %s"><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="$brush change pen %s by %s"><l></l><l></l></custom-block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setXPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeXPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setYPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeYPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="gotoXY"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doGlide"><l></l><l></l><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><block s="reportTouchingColor"><color>10,227,255,1</color></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setXPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeXPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="setYPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="changeYPosition"><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="gotoXY"><l></l><l></l></block></script><list></list></block><block s="reifyScript"><script><block s="doGlide"><l></l><l></l><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><custom-block s="instrument"></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><block s="doSetInstrument"><l></l></block></script><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><autolambda><custom-block s="categories"></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reifyScript"><script><custom-block s="create/recolor category %txt RGB color %n %n %n %n"><l></l><l></l><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="delete category %txt"><l></l></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="restore categories"></custom-block></script><list></list></block></list></block></list></block></list></block></block></script></block-definition><block-definition s="$flash remove duplicates from %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="209" collapsed="false">Reports a new list whose items are the same as in the input list, except that if two or more equal items appear in the input list, only the last one is kept in the result.</comment><header></header><code></code><translations>ca:elimina els duplicats de _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListIndex"><block var="value"/><block var="list"/></block><block var="index"/></block></autolambda><list><l>value</l><l>index</l><l>list</l></list></block><block var="data"/></block></block></script><scripts><script x="14" y="164.22222222222217"><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportCDR"><block var="data"/></block><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><custom-block s="$flash remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="$flash remove duplicates from %l"><block s="reportCDR"><block var="data"/></block></custom-block></block></block></script></block></script></block></script></scripts></block-definition><block-definition s="$flash assoc %&apos;key&apos; %&apos;a-list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="289.3333333333333" collapsed="false">The second input is an &quot;association list,&quot; a list of two-item lists.  Each of those smaller lists has a &quot;key&quot; as its first item and a &quot;value&quot; as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment><header></header><code></code><translations>ca:associació _ _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="key"/><block s="reportListItem"><l>1</l><l/></block></block></autolambda><list></list></block><block var="a-list"/></block></block></script><scripts><script x="19.33333333333337" y="108.22222222222223"><block s="doIf"><block s="reportEquals"><block var="a-list"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="key"/><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></script></block><block s="doReport"><custom-block s="$flash assoc %s %l"><block var="key"/><block s="reportCDR"><block var="a-list"/></block></custom-block></block></script></scripts></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.&#xD;&#xD;What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doWarp"><script><block s="doIfElse"><custom-block s="☠︎ linked? %l"><block var="data"/></custom-block><script><block s="doSetVar"><l>#</l><l>1</l></block><block s="doUntil"><block s="reportListIsEmpty"><block var="data"/></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><block s="doChangeVar"><l>#</l><l>1</l></block></script></block></script><script><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block var="data"/></block></block><script><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><script><block s="doSetVar"><l>#</l><block var="i"/></block><block s="doSetVar"><l>item</l><block s="reportListItem"><block var="i"/><block var="data"/></block></block><block s="doRun"><block var="action"/><list><block s="reportListItem"><block var="i"/><block var="data"/></block></list></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="$flash reverse %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations>de:$flash umgekehrt _&#xD;pt:$flash uma lista inversa de _&#xD;ca:$flash capgira _&#xD;</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="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="doReport"><block s="reportConcatenatedLists"><block s="reportAtomicMap"><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="$flash zip %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="192" collapsed="false">ZIP takes any number of lists as inputs.  The lists should all be the same length.  ZIP reports a list of lists in which the first item is a list of all the first items, the second item is a list of all the second items, etc.&#xD;Viewing the inputs as the rows of a matrix, ZIP reports its transpose.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="lists"/></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="lists"/></block><custom-block s="$flash zip %mult%l"><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="lists"/></block></custom-block></block></block></script></block-definition><block-definition s="setters for getters" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doFaceTowards"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="bounceOffEdge"></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="turnLeft"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="turn"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setHeading"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="direction"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changeXPosition"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setXPosition"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="gotoXY"><l></l><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doGlide"><l></l><l></l><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changeYPosition"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setYPosition"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changeScale"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setScale"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doWearNextCostume"></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getCostumeIdx"></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportGetImageAttribute"><l><option>name</option></l><l><option>current</option></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doSwitchToCostume"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getCostumeIdx"></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportGetImageAttribute"><l><option>name</option></l><l><option>current</option></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doChangeTempo"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getTempo"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doSetTempo"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getTempo"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changeVolume"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getVolume"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setVolume"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getVolume"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="up"></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getPenDown"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="down"></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getPenDown"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doChangeVar"><l></l><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><custom-block s="var %s"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doSetVar"><l></l><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="var %s"><l></l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportGet"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="clearEffects"></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getEffect"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changeEffect"><l></l><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getEffect"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setEffect"><l></l><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getEffect"><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="changeSize"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changePenHSVA"><l></l><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="setSize"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setPenHSVA"><l></l><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="fork"><block s="reifyScript"><script></script><list></list></block><list></list></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list></list></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doRun"><block s="reifyScript"><script></script><list></list></block><list></list></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reifyReporter"><script></script><list></list></block><list></list></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doIf"><l/><script></script></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="reportIfElse"><l/><l></l><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doIfElse"><l/><script></script><script></script></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="reportIfElse"><l/><l></l><l></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doSend"><l></l><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getLastMessage"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doBroadcastAndWait"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getLastMessage"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doBroadcast"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getLastMessage"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="forward"><l></l></block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="xPosition"></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="yPosition"></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportTouchingObject"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><block s="doSetGlobalFlag"><l></l><l/></block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><block s="reportGlobalFlag"><l><option>turbo mode</option></l></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="create %s var %mult%txt"><l></l><list></list></custom-block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><custom-block s="does var %s exist?"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="delete var %mult%txt"><list></list></custom-block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><custom-block s="does var %s exist?"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="set pen color to h: %n s: %n v: %n"><l></l><l></l><l></l></custom-block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="$brush set pen to crayon %n"><l></l></custom-block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="set flag %s to %b"><l></l><l/></custom-block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><custom-block s="setting %s"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><custom-block s="set value %s to %s"><l></l><l></l></custom-block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><custom-block s="setting %s"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doAsk"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getLastAnswer"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="show"></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="reportShown"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="hide"></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="reportShown"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="setScale"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="changeScale"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getScale"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><script><block s="setPan"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getPan"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><script><block s="changePan"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getPan"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><script><custom-block s="$brush set pen %s to %s"><l></l><l></l></custom-block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><script><custom-block s="$brush change pen %s by %s"><l></l><l></l></custom-block></script><list></list></block></list></block><block s="reportNewList"><list><block s="reifyReporter"><autolambda><custom-block s="$brush pen %s"><l></l></custom-block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyPredicate"><script><block s="doSetInstrument"><l></l></block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><custom-block s="instrument"></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyScript"><script><custom-block s="set answer to %mlt"><l></l></custom-block></script><list></list></block></list></block><block s="reifyReporter"><autolambda><block s="getLastAnswer"></block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>a</l></list></block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><custom-block s="does var %s exist?"><l></l></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="create/recolor category %txt RGB color %n %n %n %n"><l></l><l></l><l></l><l></l><l></l></custom-block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><custom-block s="categories"></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="delete category %txt"><l></l></custom-block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><custom-block s="categories"></custom-block></autolambda><list></list></block></list></block><block s="reportNewList"><list><block s="reportJoinWords"><list><block s="reifyReporter"><script><custom-block s="restore categories"></custom-block></script><list></list></block></list></block><block s="reifyPredicate"><autolambda><custom-block s="categories"></custom-block></autolambda><list></list></block></list></block></list></block></block></script></block-definition><block-definition s="permutations of %&apos;data&apos;" type="reporter" category="other"><comment x="0" y="0" w="235" collapsed="false">Heap&apos;s algorithm&#xD;https://en.wikipedia.org/wiki/Heap%27s_algorithm</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>generate</l><l>result</l></list></block><block s="doSetVar"><l>generate</l><block s="reifyScript"><script><block s="doIfElse"><block s="reportEquals"><block var="level"/><l>1</l></block><script><block s="doAddToList"><custom-block s="copy of %s"><block var="data"/></custom-block><block var="result"/></block></script><script><block s="doWarp"><script><custom-block s="for %upvar = %n to %n %cs"><l>i</l><l>1</l><block var="level"/><script><block s="doRun"><block var="generate"/><list><block var="data"/><block s="reportDifference"><block var="level"/><l>1</l></block></list></block><custom-block s="swap items %n and %n of %l"><custom-block s="if %b then %anyUE else %anyUE"><custom-block s="is %n even?"><block var="level"/></custom-block><block var="i"/><l>1</l></custom-block><block var="level"/><block var="data"/></custom-block></script></custom-block></script></block></script></block></script><list><l>data</l><l>level</l></list></block></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doRun"><block var="generate"/><list><custom-block s="copy of %s"><block var="data"/></custom-block><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></list></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="copy of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="map %repRing over %l"><block s="reifyScript"><script><block s="doReport"><l></l></block></script><list></list></block><block var="data"/></custom-block></block></script></block-definition><block-definition s="is %&apos;n&apos; even?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportEquals"><block s="reportModulus"><block var="n"/><l>2</l></block><l>0</l></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><block-definition s="swap items %&apos;i1&apos; and %&apos;i2&apos; of %&apos;data&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>temp</l></list></block><block s="doSetVar"><l>temp</l><block s="reportListItem"><block var="i1"/><block var="data"/></block></block><block s="doReplaceInList"><block var="i1"/><block var="data"/><block s="reportListItem"><block var="i2"/><block var="data"/></block></block><block s="doReplaceInList"><block var="i2"/><block var="data"/><block var="temp"/></block></script></block-definition><block-definition s="set flag %&apos;which&apos; to %&apos;tf&apos;" type="command" category="sensing"><comment x="0" y="0" w="254.66666666666666" collapsed="false">Allows changing global settings programmatically.&#xD;This block is for Boolean (checkbox) settings; use&#xD;SET VALUE for numeric or text values.&#xD;&#xD;Eisenberg&apos;s Law:  Anything you can do from the user interface you should be able to do in your program, and vice versa.  This library is just a beginning; there are many UI controls outside of the Settings menu.</comment><header></header><code></code><translations>pt:altera o valor da configuração _ para _&#xD;</translations><inputs><input type="%s" readonly="true"><options>Presentation mode&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support&#xD;Hyper blocks support</options></input><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>tf</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph),&#xD;        thisObj = this;&#xD;&#xD;if (tf != !!tf) return;&#xD;&#xD;try{&#xD;ide.savingPreferences = false;&#xD;&#xD;switch (which) {&#xD;    case &apos;Presentation mode&apos;:&#xD;        if (tf != ide.isAppMode) ide.toggleAppMode();&#xD;        break;&#xD;    case &apos;Retina display support&apos;:&#xD;        if (tf != isRetinaEnabled()) ide.toggleRetina();&#xD;        break;&#xD;    case &apos;Long form input dialog&apos;:&#xD;        if (tf != InputSlotDialogMorph.prototype.isLaunchingExpanded)&#xD;            ide.toggleLongFormInputDialog();&#xD;        break;&#xD;    case &apos;Plain prototype labels&apos;:&#xD;        if (tf != BlockLabelPlaceHolderMorph.prototype.plainLabel)&#xD;            ide.togglePlainPrototypeLabels();&#xD;        break;&#xD;    case &apos;Input sliders&apos;:&#xD;        MorphicPreferences.useSliderForInput = tf;&#xD;        break;&#xD;    case &apos;Execute on slider change&apos;:&#xD;        ArgMorph.prototype.executeOnSliderEdit = tf;&#xD;        break;&#xD;    case &apos;Clicking sound&apos;:&#xD;        if (tf != !!BlockMorph.prototype.snapSound)&#xD;            BlockMorph.prototype.toggleSnapSound();&#xD;        break;&#xD;    case &apos;Turbo mode&apos;:&#xD;        if (tf != stage.isFastTracked)&#xD;            ide.toggleFastTracking();&#xD;        break;&#xD;    case &apos;Flat design&apos;:&#xD;        if (tf == MorphicPreferences.isFlat) break;&#xD;        if (tf)&#xD;            ide.flatDesign();&#xD;        else&#xD;            ide.defaultDesign();&#xD;        break;&#xD;    case &apos;Keyboard editing&apos;:&#xD;        if (thisObj.scripts.focus &amp;&amp; !tf) {&#xD;            thisObj.scripts.focus.stopEditing();&#xD;        } else if (tf &amp;&amp; !thisObj.scripts.focus) {&#xD;            thisObj.scripts.toggleKeyboardEntry();&#xD;        };&#xD;        break;&#xD;    case &apos;Visible stepping&apos;:&#xD;        if (tf != Process.prototype.enableSingleStepping)&#xD;            ide.toggleSingleStepping();&#xD;        break;&#xD;    case &apos;Thread safe scripts&apos;:&#xD;        stage.isThreadSafe = tf;&#xD;        break;&#xD;    case &apos;Prefer smooth animations&apos;:&#xD;        if (tf != (StageMorph.prototype.frameRate &gt; 0))&#xD;            ide.toggleVariableFrameRate();&#xD;        break;&#xD;    case &apos;Flat line ends&apos;:&#xD;        SpriteMorph.prototype.useFlatLineEnds = tf;&#xD;        break;&#xD;    case &apos;Codification support&apos;:&#xD;        if (tf != StageMorph.prototype.enableCodeMapping) {&#xD;            StageMorph.prototype.enableCodeMapping = tf;&#xD;            ide.currentSprite.blocksCache.variables = null;&#xD;            ide.currentSprite.paletteCache.variables = null;&#xD;            ide.refreshPalette();&#xD;        }&#xD;        break;&#xD;    case &apos;Inheritance support&apos;:&#xD;        if (tf != StageMorph.prototype.enableInheritance) {&#xD;            StageMorph.prototype.enableInheritance = tf;&#xD;            ide.currentSprite.blocksCache.variables = null;&#xD;            ide.currentSprite.paletteCache.variables = null;&#xD;            ide.refreshPalette();&#xD;        }&#xD;        break;&#xD;    case &apos;Hyper blocks support&apos;:&#xD;        Process.prototype.enableHyperOps = tf;&#xD;        break;&#xD;};&#xD;}&#xD;finally {&#xD;ide.savingPreferences = false;&#xD;};&#xD;</l></block><list><block var="which"/><block var="tf"/></list></block></script></block-definition><block-definition s="set value %&apos;which&apos; to %&apos;value&apos;" type="command" category="sensing"><comment x="0" y="0" w="254.66666666666666" collapsed="false">Allows changing global settings programmatically.&#xD;This block is for numeric or text settings; use&#xD;SET FLAG for Boolean (checkbox) values.&#xD;&#xD;Eisenberg&apos;s Law:  Anything you can do from the user interface you should be able to do in your program, and vice versa.  This library is just a beginning; there are many UI controls outside of the Settings menu.</comment><header></header><code></code><translations>pt:altera o valor da configuração _ para _&#xD;</translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Visible palette</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>value</l></list><l>var   stage = this.parentThatIsA(StageMorph),&#xD;        ide = stage.parentThatIsA(IDE_Morph),&#xD;        world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;try {&#xD;ide.savingPreferences = false;&#xD;&#xD;switch (which) {&#xD;    case &apos;Project notes&apos;:&#xD;        ide.projectNotes = value;&#xD;        break;&#xD;    case &apos;Project name&apos;:&#xD;        ide.setProjectName(value);&#xD;        break;&#xD;    case &apos;Language&apos;:&#xD;        ide.setLanguage(value);&#xD;        break;&#xD;    case &apos;Zoom blocks&apos;:&#xD;        if (!isNaN(value)) ide.setBlocksScale(Math.min(value, 12));&#xD;        break;&#xD;    case &apos;Stage size&apos;:&#xD;        if ((value instanceof List) &amp;&amp; value.length()==2&#xD;                       &amp;&amp; !isNaN(value.at(1)) &amp;&amp; !isNaN(value.at(2)))&#xD;            ide.setStageExtent(new Point(value.at(1), value.at(2)));&#xD;        break;&#xD;    case &apos;Stage scale&apos;:&#xD;        ide.toggleStageSize(value != 1, Math.max(0.1, value));&#xD;        break;&#xD;    case &apos;Visible palette&apos;:&#xD;        ide.currentCategory = value.toLowerCase();&#xD;        ide.categories.children.forEach(function (each) {&#xD;                each.refresh();&#xD;        });&#xD;        ide.refreshPalette(true);&#xD;        break;&#xD;};&#xD;}&#xD;finally {ide.savingPreferences = true;&#xD;};</l></block><list><block var="which"/><block var="value"/></list></block></script></block-definition><block-definition s="throw breakpoint %&apos;catchtag&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">catchtag</input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doRun"><block s="reifyScript"><script><block s="doSetVar"><l></l><block var="innerCont"/></block><block s="doRun"><block s="reportListItem"><l>1</l><block var="catchtag"/></block><list></list></block></script><list></list></block><list><block s="reportListItem"><l>2</l><block var="catchtag"/></block></list></block></script><list><l>innerCont</l></list></block></block></script></block-definition><block-definition s="catch breakpoint %&apos;tag&apos; %&apos;action&apos;" type="command" category="control"><variables><list struct="atomic" id="10685">bp</list></variables><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 s="reportNewList"><list><block var="cont"/><block s="reifyReporter"><autolambda><block var="bp"/></autolambda><list></list></block></list></block></block><block s="doIfElse"><block s="reportEquals"><block var="bp"/><l>0</l></block><script><block s="doRun"><block var="action"/><list></list></block></script><script><block s="doDeclareVariables"><list><l>temp</l></list></block><block s="doSetVar"><l>temp</l><block var="bp"/></block><block s="doSetVar"><l>bp</l><l>0</l></block><block s="doRun"><block var="temp"/><list></list></block></script></block></script><list><l>cont</l></list></block></block></script></block-definition><block-definition s="object keys of %&apos;block&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return Object.keys(a.expression);</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="category of %&apos;block&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>block</l></list><l>return block.expression.category</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="%&apos;bool&apos;" type="predicate" category="other"><comment x="0" y="0" w="90" collapsed="false">for use with the when &lt;&gt; hat block. it will have the effect of checking if the boolean is true, then waits until it is false.</comment><variables><list struct="atomic" id="10764">old</list></variables><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input></inputs><script><block s="doIfElse"><block var="old"/><script><block s="doSetVar"><l>old</l><block s="evaluate"><block var="bool"/><list></list></block></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>old</l><block s="evaluate"><block var="bool"/><list></list></block></block><block s="doReport"><block var="old"/></block></script></block></script></block-definition><block-definition s="OS" type="reporter" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Reports the operating system.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>var userAgent = window.navigator.userAgent,&#xD;      platform = window.navigator.platform,&#xD;      macosPlatforms = [&apos;Macintosh&apos;, &apos;MacIntel&apos;, &apos;MacPPC&apos;, &apos;Mac68K&apos;],&#xD;      windowsPlatforms = [&apos;Win32&apos;, &apos;Win64&apos;, &apos;Windows&apos;, &apos;WinCE&apos;],&#xD;      iosPlatforms = [&apos;iPhone&apos;, &apos;iPad&apos;, &apos;iPod&apos;],&#xD;      os = null;&#xD;&#xD;  if (macosPlatforms.indexOf(platform) !== -1) {&#xD;    os = &apos;Mac OS&apos;;&#xD;  } else if (iosPlatforms.indexOf(platform) !== -1) {&#xD;    os = &apos;iOS&apos;;&#xD;  } else if (windowsPlatforms.indexOf(platform) !== -1) {&#xD;    os = &apos;Windows&apos;;&#xD;  } else if (/Android/.test(userAgent)) {&#xD;    os = &apos;Android&apos;;&#xD;  } else if (!os &amp;&amp; /Linux/.test(platform)) {&#xD;    os = &apos;Linux&apos;;&#xD;  }&#xD;&#xD;  return os;</l></block><list></list></block></block></script></block-definition><block-definition s="%&apos;list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="90" collapsed="false">Replicates a scratch list reporter.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportListIsEmpty"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportNot"><block s="reportEquals"><custom-block s="JS type of %s"><block var="item"/></custom-block><l>string</l></block></block><block s="reportGreaterThan"><block s="reportStringSize"><block var="item"/></block><l>1</l></block></block></autolambda><list><l>item</l></list></block><block var="list"/></block></block><block s="reportJoinWords"><block var="list"/></block><block s="reportCombine"><block var="list"/><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block></block></block></script></block-definition><block-definition s="is %&apos;block&apos; a custom block?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>ring</l></list><l>return ring.expression.selector == "evaluateCustomBlock";</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="broswer" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>var sBrowser, sUsrAg = navigator.userAgent;&#xD;&#xD;// The order matters here, and this may report false positives for unlisted browsers.&#xD;&#xD;if (sUsrAg.indexOf("Firefox") &gt; -1) {&#xD;  sBrowser = "Firefox";&#xD;  // "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"&#xD;} else if (sUsrAg.indexOf("SamsungBrowser") &gt; -1) {&#xD;  sBrowser = "Samsung Internet";&#xD;  // "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36&#xD;} else if (sUsrAg.indexOf("Opera") &gt; -1 || sUsrAg.indexOf("OPR") &gt; -1) {&#xD;  sBrowser = "Opera";&#xD;  // "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 OPR/57.0.3098.106"&#xD;} else if (sUsrAg.indexOf("Trident") &gt; -1) {&#xD;  sBrowser = "Internet Explorer";&#xD;  // "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; Zoom 3.6.0; wbx 1.0.0; rv:11.0) like Gecko"&#xD;} else if (sUsrAg.indexOf("Edge") &gt; -1) {&#xD;  sBrowser = "Edge";&#xD;  // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"&#xD;} else if (sUsrAg.indexOf("Chrome") &gt; -1) {&#xD;  sBrowser = "Chrome";&#xD;  // "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/66.0.3359.181 Chrome/66.0.3359.181 Safari/537.36"&#xD;} else if (sUsrAg.indexOf("Safari") &gt; -1) {&#xD;  sBrowser = "Safari";&#xD;  // "Mozilla/5.0 (iPhone; CPU iPhone OS 11_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1 980x1306"&#xD;} else {&#xD;  sBrowser = "unknown";&#xD;}&#xD;&#xD;return sBrowser</l></block><list></list></block></block></script></block-definition><block-definition s="touchscreen?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return ((&apos;ontouchstart&apos; in window) ||&#xD;     (navigator.maxTouchPoints &gt; 0) ||&#xD;     (navigator.msMaxTouchPoints &gt; 0));</l></block><list></list></block></block></script></block-definition><block-definition s="%&apos;head&apos; in front of stream %&apos;tail&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.6106770833333" collapsed="false">The stream version of IN FRONT OF.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is here in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:a prefixação de _ ao canal _&#xD;</translations><inputs><input type="%s"></input><input type="%anyUE"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="head"/><block var="tail"/><block s="reportBoolean"><l><bool>false</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></list></block></block></script></block-definition><block-definition s="head of stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.6106770833333" collapsed="false">The stream version of ITEM 1 OF.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:o primeiro item do canal _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="stream"/></block></block></script></block-definition><block-definition s="tail of stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.6106770833333" collapsed="false">The stream version of ALL BUT FIRST OF.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:um canal com todos os itens de _ menos o primeiro&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportListItem"><l>3</l><block var="stream"/></block><script><block s="doReport"><block s="reportListItem"><l>4</l><block var="stream"/></block></block></script></block><block s="doReplaceInList"><l>4</l><block var="stream"/><block s="evaluate"><block s="reportListItem"><l>2</l><block var="stream"/></block><list></list></block></block><block s="doReplaceInList"><l>3</l><block var="stream"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doReport"><block s="reportListItem"><l>4</l><block var="stream"/></block></block></script></block></script></block-definition><block-definition s="map %&apos;function&apos; over stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.6106770833333" collapsed="false">The stream version of variadic MAP (any number of input lists, like&#xD;MULTIMAP in the list utilities library).&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:a aplicação de _ aos itens dos canais _&#xD;</translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="stream"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><custom-block s="%s in front of stream %anyUE"><block s="evaluate"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="head of stream %l"><l/></custom-block></autolambda><list></list></block><block var="stream"/></block></block><custom-block s="map %repRing over stream %mult%l"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="tail of stream %l"><l/></custom-block></autolambda><list></list></block><block var="stream"/></block></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="keep items such that %&apos;pred&apos; from stream %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.6106770833333" collapsed="false">The stream version of KEEP.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:os itens tais que _ do canal _&#xD;</translations><inputs><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportEquals"><block var="stream"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIfElse"><block s="evaluate"><block var="pred"/><list><custom-block s="head of stream %l"><block var="stream"/></custom-block></list></block><script><block s="doReport"><custom-block s="%s in front of stream %anyUE"><custom-block s="head of stream %l"><block var="stream"/></custom-block><custom-block s="keep items such that %predRing from stream %l"><block var="pred"/><custom-block s="tail of stream %l"><block var="stream"/></custom-block></custom-block></custom-block></block></script><script><block s="doReport"><custom-block s="keep items such that %predRing from stream %l"><block var="pred"/><custom-block s="tail of stream %l"><block var="stream"/></custom-block></custom-block></block></script></block></script></block></script></block-definition><block-definition s="show stream %&apos;stream&apos; %&apos;number&apos;" type="reporter" category="lists"><comment x="0" y="0" w="364" collapsed="false">The inputs are a stream and a positive integer.  SHOW STREAM reports a&#xD;regular finite list of length less than (for short finite streams) or equal to the&#xD;second input.  It&apos;s useful because an infinite stream can&apos;t be displayed in a&#xD;finite amount of time.</comment><header></header><code></code><translations>pt:uma lista com os itens do canal _ até ao _ º&#xD;</translations><inputs><input type="%l"></input><input type="%n">10</input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="stream"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="number"/><l>0</l></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><custom-block s="head of stream %l"><block var="stream"/></custom-block><custom-block s="show stream %l %n"><custom-block s="tail of stream %l"><block var="stream"/></custom-block><block s="reportDifference"><block var="number"/><l>1</l></block></custom-block></block></block></script></block-definition><block-definition s="stream %&apos;items&apos;" type="reporter" category="lists"><comment x="0" y="0" w="343.3333333333333" collapsed="false">Make a stream from a finite collection of items, like the LIST primitive.&#xD;Since this block is typically used for small amounts of data, it does not&#xD;delay computation of its inputs.</comment><header></header><code></code><translations>pt:um canal com _&#xD;</translations><inputs><input type="%mult%s"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="items"/></block><script><block s="doReport"><block var="items"/></block></script></block><block s="doReport"><custom-block s="%s in front of stream %anyUE"><block s="reportListItem"><l>1</l><block var="items"/></block><custom-block s="stream %mult%s"><block s="reportCDR"><block var="items"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="sieve %&apos;stream&apos;" type="reporter" category="lists"><comment x="0" y="0" w="478" collapsed="false">Call this block with STREAM WITH NUMBERS FROM 2&#xD;as its input to get the infinite stream of all the prime numbers.&#xD;&#xD;It&apos;s called SIEVE because the algorithm it uses is the Sieve of&#xD;Eratosthenes (clickable link):&#xD;https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes&#xD;&#xD;Look inside; it&apos;s a beautifully elegant algorithm.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:a crivagem do canal _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="%s in front of stream %anyUE"><custom-block s="head of stream %l"><block var="stream"/></custom-block><custom-block s="sieve %l"><custom-block s="keep items such that %predRing from stream %l"><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block s="reportModulus"><l></l><custom-block s="head of stream %l"><block var="stream"/></custom-block></block><l>0</l></block></autolambda><list></list></block><custom-block s="tail of stream %l"><block var="stream"/></custom-block></custom-block></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="stream with numbers from %&apos;start&apos;" type="reporter" category="lists"><comment x="0" y="0" w="418.6106770833333" collapsed="false">The stream version of NUMBERS FROM 1 TO, with no&#xD;ending number because it reports the infinite stream of all&#xD;the integers greater than or equal to its input.&#xD;&#xD;Read the code!  It&apos;s deceptively simple.&#xD;&#xD;Streams, also called lazy lists, are like lists except that&#xD;items are not computed until they&apos;re needed.  This allows&#xD;for more efficient handling of large computed lists, and&#xD;even infinite lists.  The only piece of magic is in &#xD;IN FRONT OF STREAM, whose second input is of type &#xD;Unevaluated, which means that it&apos;s a procedure, with &#xD;a sort of invisible gray ring. So HEAD OF STREAM is just &#xD;ITEM 1 OF, but TAIL OF STREAM has a CALL block &#xD;to make the computation happen.&#xD;&#xD;For a tutorial introduction to streams, read SICP 3.5:&#xD;https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-24.html#%_sec_3.5&#xD;or Brian&apos;s lecture notes (start on page 74):&#xD;https://people.eecs.berkeley.edu/&#126;bh/61a-pages/Volume2/notes.pdf&#xD;The above are clickable links!</comment><header></header><code></code><translations>pt:um canal com os números a partir de _&#xD;</translations><inputs><input type="%n">1</input></inputs><script><block s="doReport"><custom-block s="%s in front of stream %anyUE"><block var="start"/><custom-block s="stream with numbers from %n"><block s="reportSum"><block var="start"/><l>1</l></block></custom-block></custom-block></block></script></block-definition><block-definition s="stream demo" type="command" category="lists"><comment x="0" y="0" w="174.66666666666666" collapsed="true">Read the code while running it, </comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>ones</l><l>ints</l><l>primes</l></list></block><block s="doSetVar"><l>ones</l><custom-block s="%s in front of stream %anyUE"><l>1</l><block var="ones"/></custom-block></block><block s="doSetVar"><l>ints</l><custom-block s="%s in front of stream %anyUE"><l>1</l><custom-block s="map %repRing over stream %mult%l"><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block><list><block var="ones"/><block var="ints"/></list></custom-block></custom-block></block><block s="doSetVar"><l>primes</l><custom-block s="sieve %l"><custom-block s="stream with numbers from %n"><l>2</l></custom-block></custom-block></block><block s="doSayFor"><custom-block s="show stream %l %n"><block var="ones"/><l>10</l></custom-block><l>2</l></block><block s="doSayFor"><custom-block s="show stream %l %n"><block var="ints"/><l>10</l></custom-block><l>2</l></block><block s="doSayFor"><custom-block s="show stream %l %n"><block var="primes"/><l>10</l></custom-block><l>2</l></block></script></block-definition><block-definition s="next things I am going to do" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportCallCC"><block s="reifyScript"><script><block s="doReport"><block var="#1"/></block></script><list><l>#1</l></list></block></block></block></script></block-definition><block-definition s="dictionary %&apos;key&apos; %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="90" collapsed="false">useful for encoding/decoding something. reports the second item of the first occurence of when the first item is equal to the &quot;key&quot;. DICTIONARY [a] (LIST [x] [f]) (LIST [a] [s]) will report &quot;s&quot;.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportListItem"><l>2</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><l/></block><block var="key"/></block></autolambda><list></list></block><block var="lists"/></block></block><l>error</l><block s="reportNewList"><list></list></block></custom-block></block></script></block-definition><block-definition s="$flash dictionary %&apos;key&apos; %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="90" collapsed="false">same as DICTIONARY, but compiled.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportListItem"><l>2</l><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><l/></block><block var="key"/></block></autolambda><list></list></block><block var="lists"/></block></block><l>error</l><block s="reportNewList"><list></list></block></custom-block></block></script></block-definition><block-definition s="Undefined!" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reifyReporter"><script><block s="errorObsolete"></block></script><list></list></block><block s="reifyReporter"><autolambda><block s="errorObsolete"></block></autolambda><list></list></block></list></block></block></script></block-definition><block-definition s="cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="cascade until %&apos;pred&apos; %&apos;function&apos; %&apos;init&apos; %&apos;#&apos;" type="reporter" category="control"><comment x="0" y="0" w="210.47493489583334" collapsed="false">Call f(f(f(...(f(x))))) until condition is true, where the three input slots are condition, f, and x from left to right.  The # variable can be used inside f or condition to indicate how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado da invocação em cascata até que _ de _ com argumento inicial _ _&#xD;</translations><inputs><input type="%predRing"></input><input type="%repRing"></input><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doSetVar"><l>#</l><l>0</l></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list><block var="result"/></list></block><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="compose %&apos;f&apos; %&apos;g&apos;" type="reporter" category="control"><comment x="0" y="0" w="151.33333333333334" collapsed="false">Returns the function x↦f(g(x)) where f and g are the two inputs.</comment><header></header><code></code><translations>pt:a composição de _ com _&#xD;</translations><inputs><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="f"/><list><block s="evaluate"><block var="g"/><list><l></l></list></block></list></block></autolambda><list></list></block></block></script></block-definition><block-definition s="repeat %&apos;action&apos; until %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="202.66666666666666" collapsed="false">Like the built-in REPEAT UNTIL block, except that the ending condition is not tested until the script has been run the first time.  So the script is run at least once.</comment><header></header><code></code><translations>pt:repete _ até que _ $loop-0.7&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="evaluate"><block var="pred"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;action&apos; while %&apos;pred&apos;" type="command" category="control"><comment x="0" y="0" w="287.3333333333333" collapsed="false">Run the script repeatedly, as long as the given condition is true.  Runs the script at least once before testing the condition.</comment><header></header><code></code><translations>pt:repete _ enquanto _ $loop-0.7&#xD;</translations><inputs><input type="%cs"></input><input type="%boolUE"></input></inputs><script><block s="doRun"><block var="action"/><list></list></block><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat while %&apos;pred&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="264" collapsed="false">Runs the script repeatedly, as long as the condition is true. Tests the condition before the first time the script is run.  Like the built in REPEAT UNTIL except that in this block the condition must be true, not false.</comment><header></header><code></code><translations>pt:enquanto _ , repete _ $loop-0.7&#xD;</translations><inputs><input type="%boolUE"></input><input type="%cs"></input></inputs><script><block s="doUntil"><block s="reportNot"><block s="evaluate"><block var="pred"/><list></list></block></block><script><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="repeat %&apos;num&apos; %&apos;#&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="171" collapsed="false">Runs the script the specified number of times, like the built-in REPEAT block, but this one provides the # variable that can be used inside the script.  Try&#xD;REPEAT (200)&#xD;                MOVE (#) STEPS&#xD;   RIGHT 92&#xD;with the pen down.</comment><header></header><code></code><translations>pt:repete _ vezes _ _ $loop-0.7&#xD;</translations><inputs><input type="%n"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>#</l><l>0</l></block><block s="doRepeat"><block var="num"/><script><block s="doChangeVar"><l>#</l><l>1</l></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="247.33333333333334" collapsed="false">The primitive FOR block uses an implicit step of ±1 depending on which of the starting and ending values is larger.  This version allows you to provide an explicit step value.  If the sign of the step input is incompatible with the ordering of the starting and ending values, the script will not be run at all.</comment><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportLessThan"><block var="step"/><l>0</l></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><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="let %&apos;a&apos; be %&apos;val&apos; in %&apos;loop&apos; %&apos;body&apos;" type="command" category="control"><comment x="0" y="0" w="238.66666666666666" collapsed="false">Provides LOOP as a function of one input that runs&#xD;the body of the LET with A set to the function input,&#xD;so the body can run itself recursively.&#xD;See COPY block in Variables for an example of use.</comment><header></header><code></code><translations>pt:tendo _ o valor inicial _ , executa _ definido como _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input><input type="%upvar"></input><input type="%cs"></input></inputs><script><block s="doSetVar"><l>a</l><block var="val"/></block><block s="doSetVar"><l>loop</l><block s="reifyScript"><script><block s="doSetVar"><l>a</l><block var="new value"/></block><block s="doRun"><block var="body"/><list><block var="a"/></list></block></script><list><l>new value</l></list></block></block><block s="doRun"><block var="loop"/><list><block var="a"/></list></block></script></block-definition><block-definition s="pipe %&apos;value&apos; $arrowRight %&apos;pipe&apos;" type="reporter" category="control"><comment x="0" y="0" w="339.3333333333333" collapsed="false">The inputs are a starting value and one or more monadic functions.&#xD;The first function is called with the starting value as its input.&#xD;The second function is called with the value reported by the first function as its input, and so on.  PIPE reports the value reported by the last function.  PIPE provides an alternative notation for function composition instead of the usual nesting.&#xD;&#xD;nested acronym:                                                                 &#xD;report (combine (keep items (capital-letter? ( )) from&#xD;                  (map (letter (1) of ( )) over&#xD;                                                 (sentence→list (phrase)))) using (join ( ) ( )))&#xD;&#xD;piped acronym:                                             &#xD;report (pipe (phrase) → (sentence→list ( ))&#xD;                                     (map (letter (1) of ( )) over ( ))&#xD;                                                    (keep items (capital-letter? ( )) from ( ))&#xD;                                      (combine ( ) using (join ( ) ( )))&#xD;&#xD;Some people find PIPE easier to read because the functions are called in the same order in which you read them, whereas in nested composition the innermost function is called first. </comment><header></header><code></code><translations>pt:a aplicação a _ de _&#xD;</translations><inputs><input type="%s"></input><input type="%mult%repRing"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="pipe"/></block><script><block s="doReport"><block var="value"/></block></script></block><block s="doReport"><custom-block s="pipe %s $arrowRight %mult%repRing"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="pipe"/></block><list><block var="value"/></list></block><block s="reportCDR"><block var="pipe"/></block></custom-block></block></script></block-definition><block-definition s="average color of costume %&apos;costume&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doDeclareVariables"><list><l>function</l></list></block><block s="doSetVar"><l>function</l><custom-block s="pipe %s $arrowRight %mult%repRing"><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block><list><block s="reifyReporter"><autolambda><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block s="reportListItem"><l>4</l><l/></block><l>0</l></block></autolambda><list></list></block><l/></block></autolambda><list></list></block><block s="reifyReporter"><autolambda><block s="reportQuotient"><block s="reportCombine"><l/><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block><block s="reportListAttribute"><l><option>length</option></l><l/></block></block></autolambda><list></list></block></list></custom-block></block><block s="doReport"><custom-block s="color with RGBA %l"><block s="reportConcatenatedLists"><list><custom-block s="all but last of %l"><block var="function"/></custom-block><block s="reportNewList"><list><block s="reportProduct"><block s="reportQuotient"><block s="reportListItem"><l><option>last</option></l><block var="function"/></block><l>255</l></block><l>100</l></block></list></block></list></block></custom-block></block></script></block-definition><block-definition s="a %&apos;clone/sprite&apos; of myself" type="reporter" category="control"><comment x="0" y="0" w="90" collapsed="false">creates a permanent clone or sprite with the same scripts as the parent, and reports it.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>clones={&#xD;changed clones={&#xD;permanent clone&#xD;deleted clone&#xD;}&#xD;temporary clone&#xD;}&#xD;duplicate sprite</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="clone/sprite"/><l>temporary clone</l></block><script><block s="doReport"><block s="newClone"><l><option>myself</option></l></block></block></script><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="clone/sprite"/><l>permanent clone</l></block><block s="reportOr"><block s="reportEquals"><block var="clone/sprite"/><l>deleted clone</l></block><block s="reportEquals"><block var="clone/sprite"/><l>duplicate sprite</l></block></block></block><script><block s="doDeclareVariables"><list><l>clone</l></list></block><block s="doSetVar"><l>clone</l><block s="newClone"><l><option>myself</option></l></block></block><block s="doRun"><block s="reportAttributeOf"><block s="reportIfElse"><block s="reportEquals"><block var="clone/sprite"/><l>deleted clone</l></block><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><block s="reifyScript"><script><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><block s="reportEquals"><block var="clone/sprite"/><l>duplicate sprite</l></block><script><block s="doSetVar"><l><option>my parent</option></l><l></l></block></script></block></script><list></list></block></block><block var="clone"/></block><list></list></block><block s="doReport"><block var="clone"/></block></script><script><block s="doReport"><l></l></block></script></block></script></block></script></block-definition><block-definition s="case of %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="case of %s"><l></l></custom-block></autolambda><list></list></block><block var="text"/></block><block s="reportIfElse"><block s="reportAnd"><custom-block s="%s items of %l have %predRing"><l>all</l><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block s="reportConcatenatedLists"><list><block s="reportUnicodeAsLetter"><block s="reportNumbers"><block s="reportUnicode"><l>A</l></block><block s="reportUnicode"><l>Z</l></block></block></block><block s="reportUnicodeAsLetter"><block s="reportNumbers"><block s="reportUnicode"><l>a</l></block><block s="reportUnicode"><l>z</l></block></block></block></list></block><l></l></block></autolambda><list></list></block></custom-block><block s="reportNotEquals"><block var="text"/><l></l></block></block><block s="reportIfElse"><block s="reportIsIdentical"><block var="text"/><custom-block s="to upper case %txt"><block var="text"/></custom-block></block><l>uppercase</l><block s="reportIfElse"><block s="reportIsIdentical"><block var="text"/><custom-block s="to lower case %txt"><block var="text"/></custom-block></block><l>lowercase</l><l>nothing</l></block></block><l>nothing</l></block></block></block></script></block-definition><block-definition s="to upper case %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="275.3333333333333" collapsed="false">Reports the input text with lower case letters instead of capital letters in the input.  Uses the user&apos;s locale&apos;s rules for case conversion.</comment><header></header><code></code><translations>pt:em minúsculas _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>text</l></list><l>return text.toLocaleUpperCase();</l></block><list><block s="reportJoinWords"><list><block var="text"/></list></block></list></block></block></script></block-definition><block-definition s="%&apos;what&apos; items of %&apos;data&apos; have %&apos;pred&apos;" type="predicate" category="lists"><comment x="0" y="0" w="90" collapsed="false">reports true if all/any of the items in the list have the given property. the &quot;input names&quot; advanced thingy for map, find first, and combine work, but you can have unlimited input names, and the input names don&apos;t have the same default names.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">all<options>all&#xD;any</options></input><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block var="pred"/><block var="data"/></block><block s="reportIfElse"><block s="reportEquals"><block var="what"/><l>all</l></block><block s="reifyPredicate"><autolambda><block s="reportAnd"><l/><l/></block></autolambda><list></list></block><block s="reportIfElse"><block s="reportEquals"><block var="what"/><l>any</l></block><block s="reifyPredicate"><autolambda><block s="reportOr"><l/><l/></block></autolambda><list></list></block><l></l></block></block></block></block></script></block-definition><block-definition s="play sound %&apos;sound&apos; at %&apos;hz&apos; Hz until done" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_soundsMenu</options></input><input type="%n">44100<options>22.05 kHz=22050&#xD;44.1 kHz=44100&#xD;48 kHz=48000&#xD;88.2 kHz=88200&#xD;96 kHz=96000</options></input></inputs><script><block s="doPlaySoundUntilDone"><block s="reportNewSoundFromSamples"><block s="reportIfElse"><block s="reportIsA"><block var="sound"/><l><option>list</option></l></block><block var="sound"/><block s="reportGetSoundAttribute"><l><option>samples</option></l><block var="sound"/></block></block><block var="hz"/></block></block></script></block-definition><block-definition s="alert %&apos;Text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello world!</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>a</l></list><l>alert(a)</l></block><list><block var="Text"/></list></block></script></block-definition><block-definition s="pressed &quot;ok&quot; from dialog %&apos;Text&apos; ?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">Are you sure?</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return window.confirm(a);</l></block><list><block var="Text"/></list></block></block></script></block-definition><block-definition s="answer from %&apos;text&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">What is your name?</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return window.prompt(a);</l></block><list><block var="text"/></list></block></block></script></block-definition><block-definition s="ask %&apos;text&apos; set %&apos;answer&apos; to the answer" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">What&apos;s your name?</input><input type="%upvar"></input></inputs><script><block s="doSetVar"><l>answer</l><custom-block s="answer from %txt"><block var="text"/></custom-block></block></script></block-definition><block-definition s="date" 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 Date()</l></block><list></list></block></block></script></block-definition><block-definition s="print this" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>window.print()</l></block><list></list></block></script></block-definition><block-definition s="open website %&apos;text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">https://snap.berkeley.edu</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>a</l></list><l> window.open(a)</l></block><list><block var="text"/></list></block></script></block-definition><block-definition s="Open HTML %&apos;text&apos; tab name %&apos;c&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%code">HTML</input><input type="%s">Tab Name</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>b</l><l>c</l></list><l>var myWindow;&#xD;&#xD; myWindow = window.open("", "myWindow", "width=200,height=100");&#xD;  myWindow.document.write("&lt;title&gt;" + c + "&lt;/title&gt;" + b + "");</l></block><list><block var="text"/><block var="c"/></list></block></script></block-definition><block-definition s="notifcation %&apos;Text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">Hello world!</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>a</l></list><l>&#xD;  if (!("Notification" in window)) {&#xD;    alert("This browser does not support desktop notification");&#xD;  }&#xD;&#xD;  else if (Notification.permission === "granted") {&#xD;    // If it&apos;s okay let&apos;s create a notification&#xD;    var notification = new Notification(a);&#xD;  }&#xD;&#xD; &#xD;  else if (Notification.permission !== "denied") {&#xD;    Notification.requestPermission().then(function (permission) {&#xD;     &#xD;      if (permission === "granted") {&#xD;        var notification = new Notification(a);&#xD;      }&#xD;    });&#xD;  }&#xD;&#xD;  </l></block><list><block var="Text"/></list></block></script></block-definition><block-definition s="// %&apos;text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%mlt">Multi Line Comment</input></inputs></block-definition><block-definition s="switch cursor to costume %&apos;dropdown&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>n-resize&#xD;s-resize&#xD;e-resize&#xD;w-resize&#xD;ne-resize&#xD;se-resize&#xD;nw-resize&#xD;sw-resize&#xD;col-resize&#xD;ew-resize&#xD;ns-resize&#xD;nesw-resize&#xD;nwse-resize&#xD;row-resize&#xD;grabbing&#xD;help&#xD;move&#xD;not-allowed&#xD;pointer&#xD;progress&#xD;text&#xD;auto&#xD;cell&#xD;copy&#xD;crosshair&#xD;default&#xD;grab&#xD;wait&#xD;zoom-in&#xD;zoom-out&#xD;alias&#xD;all-scroll&#xD;context-menu&#xD;no-drop&#xD;none&#xD;not allowed&#xD;vertical-text</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="dropdown"/><l>none</l></block><script><block s="doIf"><custom-block s="pressed &quot;ok&quot; from dialog %txt ?"><l>This will hide the cursor. Are you sure you want to do this?</l></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>c</l></list><l>document.body.style.cursor = c;</l></block><list><block var="dropdown"/></list></block></script></block></script><script><block s="doRun"><block s="reportJSFunction"><list><l>c</l></list><l>document.body.style.cursor = c;</l></block><list><block var="dropdown"/></list></block></script></block></script></block-definition><block-definition s="// %&apos;text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">Comment</input></inputs></block-definition><block-definition s="anywhere url %&apos;url&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Get html contents from anywhere on the internet.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">https://en.wikipedia.org/wiki/Main_page</input></inputs><script><block s="doReport"><block s="reportURL"><block s="reportJoinWords"><list><l>https://cors-anywhere.herokuapp.com/</l><block var="url"/></list></block></block></block></script></block-definition><block-definition s="scratch user stats from user %&apos;user&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportTextSplit"><custom-block s="anywhere url %txt"><block s="reportJoinWords"><list><l>https://api.scratch.mit.edu/users/</l><block var="user"/></list></block></custom-block><l><option>json</option></l></block></block></script></block-definition><block-definition s="username" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>3</l><custom-block s="snap! user stats"></custom-block></block></block></block></script></block-definition><block-definition s="is %&apos;user&apos; a scratch team member?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="user"/><l></l></block><block s="reportBoolean"><l><bool>false</bool></l></block><custom-block s="safely try reporting %anyUE then if %upvar report %anyUE"><block s="reportListItem"><l>2</l><block s="reportListItem"><l>3</l><custom-block s="scratch user stats from user %txt"><block var="user"/></custom-block></block></block><l>error</l><block s="reportBoolean"><l><bool>false</bool></l></block></custom-block></block></block></script></block-definition><block-definition s="day of week" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportDate"><l><option>day of week</option></l></block><block s="reportNewList"><list><l>Sunday</l><l>Monday</l><l>Tuesday</l><l>Wednesday</l><l>Thursday</l><l>Friday</l><l>Saturday</l></list></block></block></block></script></block-definition><block-definition s="JS keys pressed" 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 new List(Object.keys((this.parentThatIsA(StageMorph) || {}).keysPressed))</l></block><list></list></block></block></script></block-definition><block-definition s="delete sprite %&apos;sprite&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_objectsMenu</options></input></inputs><script><custom-block s="delete sprites %mult%s"><list><block var="sprite"/></list></custom-block></script></block-definition><block-definition s="%&apos;show/hide&apos; block %&apos;block&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>show&#xD;hide</options></input><input type="%repRing"></input></inputs><script><block s="doIf"><block s="reportOr"><block s="reportIsA"><block var="block"/><l><option>command</option></l></block><block s="reportOr"><block s="reportIsA"><block var="block"/><l><option>reporter</option></l></block><block s="reportIsA"><block var="block"/><l><option>predicate</option></l></block></block></block><script><block s="doRun"><block s="reportIfElse"><block s="reportEquals"><block var="show/hide"/><l>hide</l></block><block s="reifyScript"><script><block s="doHideVar"><l></l></block></script><list></list></block><block s="reportIfElse"><block s="reportEquals"><block var="show/hide"/><l>show</l></block><block s="reifyScript"><script><block s="doShowVar"><l></l></block></script><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doStopThis"><l><option>this block</option></l></block></script><list></list></block><list></list></block></block></block><list><block var="block"/></list></block></script></block></script></block-definition><block-definition s="costume %&apos;costume&apos; with r: %&apos;r&apos; g: %&apos;g&apos; b: %&apos;b&apos; a: %&apos;a&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>c</l></list></block><block s="doSetVar"><l>c</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>list</option></l></block><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportGetImageAttribute"><l><option>pixels</option></l><l></l></block><block var="costume"/></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block><block var="costume"/></block></block><block s="doReport"><block s="reportNewCostume"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><block s="reportQuotient"><block s="reportNewList"><list><block var="r"/><block var="g"/><block var="b"/><block var="a"/></list></block><l>100</l></block></block></autolambda><list></list></block><list><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>list</option></l></block><block var="costume"/><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block></list></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="c"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="c"/></block></block></block></script></block-definition><block-definition s="delete sprites %&apos;sprites&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><block var="value"/><l><option>sprite</option></l></block><block var="value"/><block s="evaluate"><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>self</option></l></block></autolambda><list></list></block><block var="value"/></block><list></list></block></block></autolambda><list><l>value</l></list></block><block var="sprites"/></block></block><block s="doWarp"><script><block s="doForEach"><l>item</l><block var="a"/><script><block s="doRun"><block s="reportAttributeOf"><block s="reifyScript"><script><block s="doSetVar"><l><option>my parent</option></l><block var="#1"/></block><block s="doSetVar"><l><option>my temporary?</option></l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="removeClone"></block></script><list><l>#1</l></list></block><block var="item"/></block><list><block s="reportGet"><l><option>self</option></l></block></list></block></script></block></script></block></script></block-definition><block-definition s="full blockspec of %&apos;block&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><block var="block"/></list></block></block></script></block-definition><block-definition s="is %&apos;n&apos; prime?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="n"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportJoinWords"><list><l>is </l><l></l><l> prime?</l></list></block><custom-block s="is %n prime?"><l></l></custom-block></list></block></autolambda><list></list></block><block var="n"/></block><block s="reportOr"><block s="reportListIsEmpty"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><l></l><l>0</l></block></autolambda><list></list></block><block s="reportModulus"><block var="n"/><block s="reportNumbers"><l>2</l><block s="reportDifference"><block var="n"/><l>1</l></block></block></block></block></block><block s="reportEquals"><block var="n"/><l>2</l></block></block></block></block></script></block-definition><block-definition s="send %&apos;thing&apos; to clipboard" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportOr"><block s="reportIsA"><block var="thing"/><l><option>text</option></l></block><block s="reportIsA"><block var="thing"/><l><option>number</option></l></block></block><script><block s="doRun"><block s="reportJSFunction"><list><l>thing</l></list><l>if("clipboard" in navigator) {&#xD;  navigator.clipboard.writeText(thing)&#xD;} else {alert("I can&apos;t send thing to clipboard.")}</l></block><list><block var="thing"/></list></block></script></block></script></block-definition><block-definition s="create/recolor category %&apos;category&apos; RGB color %&apos;r&apos; %&apos;g&apos; %&apos;b&apos; %&apos;a&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>prototype</l><l>IDEmorph</l></list></block><block s="doSetVar"><l>prototype</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return SpriteMorph.prototype;</l></block><list></list></block></block><block s="doSetVar"><l>IDEmorph</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.parentThatIsA(IDE_Morph);</l></block><list></list></block></block><block s="doRun"><block s="reportJSFunction"><list><l>prototype</l><l>name</l><l>r</l><l>g</l><l>b</l><l>a</l><l>ide</l></list><l>if(name != "") {&#xD;const cats = prototype.categories;&#xD;if(!cats.includes(name)) {cats.push(name);};&#xD;prototype.blockColor[name] = new Color(r, g, b, a);&#xD;ide.createCategories();&#xD;ide.reactToWorldResize(world.bounds.copy());&#xD;ide.flushBlocksCache();&#xD;ide.refreshPalette();&#xD;}</l></block><list><block var="prototype"/><block var="category"/><block var="r"/><block var="g"/><block var="b"/><block s="reportQuotient"><block var="a"/><l>100</l></block><block var="IDEmorph"/></list></block></script></block-definition><block-definition s="code %&apos;code&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%code"></input></inputs><script><block s="doReport"><block var="code"/></block></script></block-definition><block-definition s="script %&apos;block&apos; $arrowRight scratchblocks" type="reporter" category="other"><comment x="0" y="0" w="90" collapsed="false">turns the specified script into scratchblocks.&#xD;the jsfunction block does not work.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if( !BlockMorph.prototype._userMenu){&#xD;  BlockMorph.prototype._userMenu = BlockMorph.prototype.userMenu;&#xD;}&#xD;&#xD;BlockMorph.prototype.userMenu = function(){&#xD;var&#xD; shiftClicked = world.currentKey === 16 &#xD; ,menu = this._userMenu();&#xD; &#xD; if (shiftClicked){&#xD;   menu.addItem(&#xD;     "to scratchblocks...",&#xD;      function () {&#xD;        var code = &apos;&lt;p&gt;[scratchblocks]\n&apos;+this.topBlock().toScratchblocks()+&apos;\n[/scratchblocks]&apos;;&#xD;        window.prompt(&apos;scratchblocks code for you to copy and paste&apos;, code);&#xD;      },&#xD;      &apos;open a new window\nwith a scratchblocks...&apos;&#xD;   );&#xD; }&#xD;return menu;&#xD;}&#xD;&#xD;SyntaxElementMorph.prototype.toScratchblocks = function () {&#xD;    var nb = this.nextBlock &amp;&amp; this.nextBlock(),&#xD;        result;&#xD;    result = this.parts().map(function(child) {&#xD;        if (child.toScratchblocks) {&#xD;          return child.toScratchblocks();&#xD;        } else if (child instanceof StringMorph) {&#xD;          return child.text;&#xD;        } else {&#xD;          return &apos;&apos;; // should never happen&#xD;        }&#xD;    }).join(&apos; &apos;) + this.toScratchblocksCategory();&#xD;    if (nb) {&#xD;        result += &apos;\n&apos; + nb.toScratchblocks()&#xD;    }&#xD;    return result;&#xD;};&#xD;&#xD;SyntaxElementMorph.prototype.toScratchblocksCategory = function () {&#xD;    // private. answers with scratchblocks category specifier&#xD;    if (!this.category) { return &apos;&apos;; }&#xD;    return &apos; :: &apos; + ({&#xD;        &apos;lists&apos;: &apos;list&apos;,&#xD;        &apos;other&apos;: &apos;grey&apos;,&#xD;    }[this.category] || this.category);&#xD;};&#xD;&#xD;ReporterBlockMorph.prototype.toScratchblocks = function () {&#xD;    var inner = ReporterBlockMorph.uber.toScratchblocks.call(this);&#xD;    if (this.isPredicate) {&#xD;        return &apos;&lt;&apos; + inner + &apos;&gt;&apos;;&#xD;    } else {&#xD;        return &apos;(&apos; + inner + &apos;)&apos;;&#xD;    }&#xD;};&#xD;&#xD;RingMorph.prototype.toScratchblocksCategory = function () {&#xD;    // force rendering as a &apos;ring&apos; shape.&#xD;    return RingMorph.uber.toScratchblocksCategory.call(this) + &apos; ring&apos;;&#xD;};&#xD;&#xD;ArgMorph.prototype.toScratchblocks = function () {&#xD;    if (this.isHole) {&#xD;        if (this.children[0] instanceof ArgMorph) {&#xD;            return this.isPredicate ? &apos;&lt; &gt;&apos; : &apos;( )&apos;;&#xD;        } else {&#xD;            return this.children[0].toScratchblocks();&#xD;        }&#xD;    } else if (this.type === &apos;list&apos;) {&#xD;        return &apos;≡&apos;; // scratchblocks renderer does not have a "list" symbol&#xD;    }&#xD;    return &apos;&apos;; // should never happen&#xD;};&#xD;&#xD;CommandSlotMorph.prototype.toScratchblocks = function () {&#xD;    var inside = this.children.map(function(child) {&#xD;        return child.toScratchblocks();&#xD;    }).join(&apos;\n&apos;);&#xD;    // need line break if empty&#xD;    // otherwise scratchblocks renders an empty embedded block&#xD;    return &apos;{&apos; + (inside || &apos;\n&apos;) + &apos;}&apos;;&#xD;};&#xD;&#xD;InputSlotMorph.prototype.toScratchblocks = function () {&#xD;    var contents = this.contents(),&#xD;        text = contents.text;&#xD;    if (this.isNumeric) {&#xD;        if (this.choices) {&#xD;            return &apos;(&apos; + text + &apos; v)&apos;;&#xD;        } else {&#xD;            return &apos;(&apos; + text + &apos;)&apos;;&#xD;        }&#xD;    } else if (this.choices) {&#xD;        return &apos;[&apos; + text + &apos; v]&apos;;&#xD;    } else {&#xD;        // escape trailing &apos; v&apos;&#xD;        text = text.replace(/ v$/, &apos;\\ v&apos;);&#xD;        return &apos;[&apos; + text + &apos;]&apos;;&#xD;    }&#xD;};&#xD;&#xD;TemplateSlotMorph.prototype.toScratchblocks = function () {&#xD;    var category = this.parent.toScratchblocksCategory() || &apos; :: grey&apos;;&#xD;    return &apos;(&apos; + this.children[0].toScratchblocks() + category + &apos;)&apos;;&#xD;};&#xD;&#xD;BooleanSlotMorph.prototype.toScratchblocks = function () {&#xD;    if (this.value === null) {&#xD;      return &apos;&lt; &gt;&apos;; // empty boolean slot&#xD;    } else {&#xD;      // use unicode symbols to emulate green tick/red cross&#xD;      return this.value ? &apos;&lt;&lt;✔true (::grey):: operators&gt; :: operators&gt;&apos; : &apos;&lt;(::grey)✘false :: obsolete&gt;&apos;;&#xD;    }&#xD;};&#xD;&#xD;SymbolMorph.prototype.toScratchblocks = function () {&#xD;    var symbol = {&#xD;        &apos;flag&apos;: &apos;greenFlag&apos;,&#xD;    }[this.name] || this.name;&#xD;    return &apos;@&apos; + symbol;&#xD;};&#xD;&#xD;MultiArgMorph.prototype.toScratchblocks = function () {&#xD;    var arrows = this.arrows().children,&#xD;        label = this.children[0],&#xD;        result = &apos;&apos;;&#xD;    if (label.isVisible) {&#xD;        result += label.text;&#xD;    }&#xD;    result += this.inputs().map(function(child) {&#xD;        return child.toScratchblocks();&#xD;    }).join(&apos; &apos;);&#xD;    if (arrows[0].isVisible) result += &apos; @delInput&apos;;&#xD;    if (arrows[1].isVisible) result += &apos; @addInput&apos;;&#xD;    return result;&#xD;};&#xD;&#xD;PrototypeHatBlockMorph.prototype.toScratchblocks = function () {&#xD;    var customCommand = this.parts()[0],&#xD;        nb = this.nextBlock(),&#xD;        result;&#xD;    result = &apos;{&apos; + customCommand.toScratchblocks() + &apos;} :: control hat&apos;;&#xD;    if (nb) {&#xD;      result += &apos;\n&apos; + nb.toScratchblocks();&#xD;    }&#xD;    return result;&#xD;};&#xD;&#xD;BlockLabelPlaceHolderMorph.prototype.toScratchblocks = function () {&#xD;    return &apos;&apos;; // don&apos;t include plusses in scratchblocks output&#xD;};&#xD;</l></block><list></list></block><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>b</l></list><l>return (b).expression.toScratchblocks()</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="put %&apos;thing&apos; into slot %&apos;slot&apos; of %&apos;target&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Puts a block/value inside a specified input of another block.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n"></input><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>thing</l><l>slot</l><l>target</l></list><l>//if empty&#xD;if (!(target.expression instanceof BlockMorph)) return thing;&#xD;if (!(thing.expression instanceof BlockMorph || thing.expression instanceof ReporterBlockMorph || typeof(thing) == "string" || typeof(thing) == "number" || typeof(thing) == "boolean")) return target;&#xD;&#xD;var type = typeof(thing);&#xD;var slotNum = 1;&#xD;//console.log();&#xD;&#xD;var outExpr = target.expression;  //.fullCopy();&#xD;var outCtx = new Context(undefined, outExpr);&#xD;//outCtx.inputs = thing.inputs || [];&#xD;&#xD;var block;&#xD;&#xD;if (thing.expression instanceof Morph) block = thing.expression;   //.fullCopy();&#xD;&#xD;for (let i in outExpr.children) {&#xD; let child = outExpr.children[i];&#xD;&#xD; if (type == "boolean") {&#xD;  if (child instanceof BooleanSlotMorph) {&#xD;   child.value = thing;&#xD;   return outCtx;&#xD;  }&#xD; } else&#xD; if (child instanceof InputSlotMorph || child instanceof RingMorph || child instanceof CSlotMorph || child instanceof ArgMorph) {&#xD;  if (slotNum == slot) {&#xD;   //console.log(child);&#xD;&#xD;   if (type == "string" || type == "number") {&#xD;    if (!(child.children[0] instanceof InputSlotStringMorph)) return target;&#xD;&#xD;    child.setContents(thing);&#xD;    delete child.bindingID;&#xD;    return outCtx;     &#xD;   }&#xD;&#xD;   if (child instanceof RingMorph) {&#xD;    child.embed(block, thing.inputs);&#xD;&#xD;    return outCtx;&#xD;   } if (child instanceof CSlotMorph) {&#xD;    let input = child;&#xD;&#xD;    //clear children&#xD;    while (input.children[0] !== undefined) input.removeChild(input.children[0]);&#xD;&#xD;    input.children.push(block);&#xD;    block.parent = input;&#xD;    input.fixLayout(); &#xD;   } else {&#xD;    if (child instanceof InputSlotMorph) {&#xD;     thing.expression.isNumeric = child.isNumeric;&#xD;     thing.expression.fixLayout();&#xD;    }&#xD;&#xD;    outExpr.children.splice(i, 1, block);&#xD;    block.parent = outExpr;&#xD;    outExpr.fixLayout();&#xD;   }&#xD;&#xD;   //target.expression.fixLayout();&#xD;   //outCtx.inputs = thing.inputs; &#xD;   return outCtx;&#xD;  }&#xD;&#xD;  slotNum++;&#xD; }&#xD;}&#xD;&#xD;return target; </l></block><list><block var="thing"/><block var="slot"/><block var="target"/></list></block></block></script></block-definition><block-definition s="%&apos;child&apos; put after %&apos;script&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Puts the blocks in the first script at the end of the second script.</comment><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>child</l><l>script</l></list><l>//if empty&#xD;if (!(script.expression instanceof BlockMorph)) return child;&#xD;if (!(child.expression instanceof BlockMorph)) return script;&#xD;&#xD;var tailBlock = script.expression.fullCopy();&#xD;var outCtx = new Context(undefined, tailBlock);&#xD;var lastChild = tailBlock.nextBlock();&#xD;&#xD;while (lastChild instanceof BlockMorph) {&#xD; tailBlock = lastChild;&#xD; lastChild = lastChild.nextBlock();&#xD;}&#xD;&#xD;tailBlock.add(child.expression.fullCopy());&#xD;tailBlock.fixLayout();&#xD;&#xD;//combine inputs&#xD;outCtx.inputs = script.inputs;&#xD;&#xD;for (let v of child.inputs) {&#xD; if (outCtx.inputs.indexOf(v) &lt; 0) {&#xD;  outCtx.inputs.push(v);&#xD; }&#xD;}&#xD;&#xD;return outCtx;</l></block><list><block var="child"/><block var="script"/></list></block></block></script></block-definition><block-definition s="%&apos;val&apos; into first empty slot of %&apos;expr&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Puts an expression/value inside the first empty slot of another command/expression.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>val</l><l>expr</l></list><l>if (!(expr.expression instanceof BlockMorph)) return expr;&#xD;&#xD;var isBlock = val.expression instanceof BlockMorph;&#xD;var type = typeof(val);&#xD;var block = null;&#xD;&#xD;if (type == "boolean") {&#xD; //Create true/false boolean block&#xD; //Just copying properties from a boolean block i logged to the dev console&#xD; block = new ReporterBlockMorph();&#xD; block.isPredicate = true;&#xD; block.selector = "reportBoolean";&#xD; block.blockSpec = "%bool";&#xD; block.category = "operators";&#xD; block.color = new Color(98, 194, 19, 1);&#xD;&#xD; let slotMorph = new BooleanSlotMorph();&#xD; slotMorph.color = new Color(98, 194, 19);&#xD; slotMorph.value = val;&#xD; //slotMorph.type = null;&#xD; slotMorph.isStatic = true;&#xD; //slotMorph.isTemplate = false;&#xD; //slotMorph.isFreeForm = false;&#xD;&#xD; slotMorph.fixLayout();&#xD; block.add(slotMorph);&#xD; block.fixLayout();&#xD;} else if (isBlock) {&#xD; block = val.expression.fullCopy();&#xD;}&#xD;&#xD;var outCtx = new Context(undefined, expr.expression);&#xD;&#xD;for (let i in outCtx.expression.children) {&#xD; let input = outCtx.expression.children[i];&#xD;&#xD; //console.log(input);&#xD; &#xD; if (input instanceof RingMorph) { //Ring &#xD;  if (input.children[0].children.length == 0) { //If empty&#xD;   if (isBlock) {&#xD;    input.children[0].add(block);&#xD;    input.children[0].fixLayout();&#xD;&#xD;    return outCtx; &#xD;   }&#xD;  }&#xD; } else if (input instanceof CSlotMorph) {&#xD;  if (input.children[0] === undefined) { //is empty&#xD;  //if (input.isEmptySlot()) {&#xD;   if (isBlock || type == "boolean") {&#xD;    if (block instanceof CommandBlockMorph) {&#xD;     input.add(block);&#xD;     input.fixLayout();&#xD;    } else {&#xD;     outCtx.expression.children.splice(i, 1, block);&#xD;     block.parent = outCtx.expression;&#xD;&#xD;     block.fixLayout();&#xD;    }&#xD;&#xD;    return outCtx;&#xD;   }&#xD;  } &#xD; } else if (input instanceof InputSlotMorph) { //Input slot&#xD;  //if (input.children[0].text == "") { //is empty&#xD;  if (input.isEmptySlot()) {&#xD;   if (type == "string" || type == "number") {&#xD;    input.setContents(val);&#xD;    delete input.bindingID; &#xD;   } else {&#xD;    outCtx.expression.children.splice(i, 1, block);&#xD;    block.parent = outCtx.expression;&#xD;&#xD;    block.fixLayout();&#xD;   }&#xD;&#xD;   return outCtx;&#xD;  }&#xD; } else if (input instanceof BooleanSlotMorph) { //Bool slot&#xD;  if (input.value === null) { //is empty&#xD;   if (type == "boolean") {&#xD;    input.value = val;&#xD;    return outCtx;&#xD;   } else if (isBlock) {&#xD;    outCtx.expression.children.splice(i, 1, block);&#xD;    block.parent = outCtx.expression;&#xD;&#xD;    block.fixLayout(); &#xD;   }&#xD;&#xD;   return outCtx; &#xD;  } &#xD; }&#xD;}&#xD;&#xD;return expr; </l></block><list><block var="val"/><block var="expr"/></list></block></block></script><scripts><comment x="409.00000000000136" y="175.1999999999996" w="241.828125" collapsed="false">RingMorph.children[0].children is empty&#xD;InputSlotMorph.children[0.text == &quot;&quot;&#xD;BooleanSlotMorph.value == null&#xD;CSlotMorph.children is empty</comment></scripts></block-definition><block-definition s="slot %&apos;n&apos; of %&apos;block&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Gets the block/value at the nth slot of a block.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>n</l><l>target</l></list><l>//if empty&#xD;if (!(target.expression instanceof BlockMorph)) return new Context();&#xD;&#xD;function get(child) {&#xD;  if (child instanceof BooleanSlotMorph) {&#xD;    return child.value;&#xD;  } else if (child instanceof InputSlotMorph) {&#xD;    return child.children[0].text;&#xD;  } else if (child instanceof CSlotMorph) {&#xD;    var block = child.children[0];&#xD;    //if (block instanceof BlockMorph) block = block.fullCopy();&#xD;&#xD;    return new Context(null, block);&#xD;  } else if (child instanceof RingMorph) {&#xD;    var block = child.children[0].children[0];&#xD;    //if (block instanceof BlockMorph) block = block.fullCopy();&#xD;&#xD;    return new Context(null, block);&#xD;  } else if (child instanceof MultiArgMorph) {&#xD;     var outArr = [];&#xD;&#xD;     for (let j = 0; j &lt; child.children.length - 1; j++) {&#xD;       outArr.push( get(child.children[j]) );&#xD;     }&#xD;&#xD;     return new List(outArr);&#xD;  } else {&#xD;    return new Context(null, child);&#xD;  }&#xD;}&#xD;&#xD;var slotNum = 1;&#xD;for (let i in target.expression.children) {&#xD; let child = target.expression.children[i];&#xD;&#xD; if (child instanceof InputSlotMorph || child instanceof RingMorph || child instanceof CSlotMorph || child instanceof ArgMorph || child instanceof BlockMorph) {&#xD;  if (n === slotNum) {&#xD;   console.log(child);&#xD;&#xD;   return get(child);&#xD;  }&#xD;&#xD;  slotNum++;&#xD; }&#xD;}&#xD;&#xD;return new Context(); </l></block><list><block var="n"/><block var="block"/></list></block></block></script></block-definition><block-definition s="blocks in %&apos;expr&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Reports a list of the blocks in a stack</comment><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>expr</l></list><l>var out = [];&#xD;var block = expr.expression;&#xD;&#xD;while (block) {&#xD;  var itm = block.fullCopy();&#xD;  if (itm.nextBlock())  itm.children.pop();&#xD;  out.push( new Context(0, itm) );&#xD;  block = block.nextBlock();&#xD;}&#xD;&#xD;return new List(out);</l></block><list><block var="expr"/></list></block></block></script></block-definition><block-definition s="# of slots in %&apos;expr&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>expr</l></list><l>return expr.expression.inputs().length;</l></block><list><block var="expr"/></list></block></block></script></block-definition><block-definition s="infinite list" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list></list></block></block><block s="doAddToList"><block var="a"/><block var="a"/></block><block s="doReport"><block var="a"/></block></script></block-definition><block-definition s="reverse %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">hello world</input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="reverse %s"><l></l></custom-block></autolambda><list></list></block><block var="text"/></block><block s="reportIfElse"><block s="reportEquals"><block var="text"/><l></l></block><l></l><block s="reportCombine"><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#2"/><block var="#1"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></block></block></block></block></script></block-definition><block-definition s="tree" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block><block s="getPenDown"></block></list></block></block><block s="down"></block><block s="turnLeft"><l>20</l></block><block s="forward"><l>25</l></block><block s="doRun"><block s="reportListItem"><l><option>any</option></l><block s="reportNewList"><list><block s="reifyScript"><script><custom-block s="square"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="hexagon"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="star"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="tree"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="tree"></custom-block></script><list></list></block></list></block></block><list></list></block><block s="forward"><l>-25</l></block><block s="turn"><l>40</l></block><block s="forward"><l>25</l></block><block s="doRun"><block s="reportListItem"><l><option>any</option></l><block s="reportNewList"><list><block s="reifyScript"><script><custom-block s="square"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="hexagon"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="star"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="tree"></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="tree"></custom-block></script><list></list></block></list></block></block><list></list></block><block s="forward"><l>-25</l></block><block s="turnLeft"><l>20</l></block><block s="up"></block><block s="gotoXY"><block s="reportListItem"><l>1</l><block var="a"/></block><block s="reportListItem"><l>2</l><block var="a"/></block></block><block s="doIf"><block s="reportListItem"><l>3</l><block var="a"/></block><script><block s="down"></block></script></block></script></block-definition><block-definition s="square" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doRepeat"><l>4</l><script><block s="forward"><l>10</l></block><block s="turn"><l>90</l></block></script></block></script></block></script></block-definition><block-definition s="hexagon" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doRepeat"><l>6</l><script><block s="forward"><l>7</l></block><block s="turn"><l>60</l></block></script></block></script></block></script></block-definition><block-definition s="star" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doWarp"><script><block s="doRepeat"><l>5</l><script><block s="forward"><l>15</l></block><block s="turn"><l>144</l></block></script></block></script></block></script></block-definition><block-definition s="variable reporter? %&apos;expression&apos;" type="predicate" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reportAnd"><block s="reportNot"><block s="reportEquals"><custom-block s="object keys of %repRing"><block var="expression"/></custom-block><l>0</l></block></block><block s="reportAnd"><block s="reportOr"><block s="reportAnd"><block s="reportEquals"><custom-block s="category of %repRing"><block var="expression"/></custom-block><l>variables</l></block><block s="reportNot"><custom-block s="is %repRing a custom block?"><block var="expression"/></custom-block></block></block><block s="reportAnd"><block s="reportEquals"><custom-block s="blockspec of %repRing"><block var="expression"/></custom-block><l>var %s</l></block><block s="reportEquals"><custom-block s="category of %repRing"><block var="expression"/></custom-block><l>variables</l></block></block></block><block s="reportIsA"><block var="expression"/><l><option>reporter</option></l></block></block></block></block></script></block-definition><block-definition s="an impossible thing" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reifyScript"><script><block s="doSetVar"><custom-block s="%anyUE"><l></l></custom-block><l></l></block></script><list></list></block></block></script></block-definition><block-definition s="%&apos;thing&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%anyUE"></input></inputs><script><block s="doReport"><block s="evaluate"><block var="thing"/><list></list></block></block></script></block-definition><block-definition s="split %&apos;text&apos; by %&apos;split&apos; – no dropdown" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>text</l><l>split</l></list><l>return new List(text.split(split))</l></block><list><block var="text"/><block var="split"/></list></block></block></script></block-definition><block-definition s="I am right-clicked?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>if (!window.rightclick){&#xD;rightclick = false;&#xD;onmousedown = (e) =&gt; {window.rightclick = (e.button == 2)};&#xD;onmouseup = () =&gt; {window.rightclick = false};&#xD;}&#xD;return rightclick;</l></block><list></list></block></block></script></block-definition><block-definition s="forever if %&apos;boolUE&apos; %&apos;c&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input><input type="%ca"></input></inputs><script><block s="doForever"><script><block s="doIf"><block s="evaluate"><block var="boolUE"/><list></list></block><script><block s="doRun"><block var="c"/><list></list></block></script></block></script></block></script></block-definition><block-definition s="new custom block $nl $- type: %&apos;type&apos; $nl $- category: %&apos;category&apos; $nl $- spec: %&apos;blockSpec&apos; $nl $- %&apos;vars&apos; %&apos;script&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">command<options>command&#xD;reporter&#xD;predicate</options></input><input type="%s" readonly="true">control<options>motion&#xD;looks&#xD;sound&#xD;pen&#xD;lists&#xD;control&#xD;sensing&#xD;operators&#xD;variables&#xD;others</options></input><input type="%mult%txt"></input><input type="%scriptVars"></input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>inputs</l><l>spec</l></list></block><block s="doSetVar"><l>spec</l><l></l></block><block s="doSetVar"><l>inputs</l><custom-block s="xml tag %txt"><l>inputs</l></custom-block></block><block s="doForEach"><l>param</l><block var="blockSpec"/><script><block s="doIfElse"><block s="reportIsA"><block var="param"/><l><option>list</option></l></block><script><custom-block s="add XML child %l %l"><block var="inputs"/><custom-block s="mapParam %l"><block var="param"/></custom-block></custom-block><block s="doSetVar"><l>spec</l><block s="reportJoinWords"><list><block var="spec"/><l>%&apos;</l><block s="reportListItem"><l>1</l><block var="param"/></block><l>&apos;</l><l> </l></list></block></block></script><script><block s="doSetVar"><l>spec</l><block s="reportJoinWords"><list><block var="spec"/><block var="param"/><l> </l></list></block></block></script></block></script></block><block s="doSetVar"><l>inputs</l><custom-block s="compile XML %l"><block var="inputs"/></custom-block></block><block s="doReport"><block s="reportJoinWords"><list><l>&lt;block-definition s="</l><custom-block s="substr %mlt from %n to %n"><block var="spec"/><l></l><l>-1</l></custom-block><l>" type="</l><block var="type"/><l>" category="</l><block var="category"/><l>"&gt;&#xD;&lt;header/&gt;&#xD;&lt;code/&gt;&#xD;&lt;translations/&gt;&#xD;</l><block var="inputs"/><custom-block s="Script : Export %cmdRing"><block var="script"/></custom-block><l>&lt;/block-definition&gt;</l></list></block></block></script></block-definition><block-definition s="Script : Export %&apos;script&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>script</l></list><l>var ide = this.parentThatIsA(IDE_Morph),&#xD;    blockEditor = this.parentThatIsA(BlockEditorMorph);&#xD;if (!ide &amp;&amp; blockEditor) {&#xD;   ide = blockEditor.target.parentThatIsA(IDE_Morph);&#xD;}&#xD;if (ide) {&#xD;   return ide.serializer.serialize( script.expression);&#xD;}</l></block><list><block var="script"/></list></block></block></script></block-definition><block-definition s="I am near variable watcher %&apos;var&apos; ?" type="predicate" category="sensing"><comment x="0" y="0" w="90" collapsed="false">reports true if the sprite is near the selected variable watcher. If the variable doesn&apos;t exist, an error happens.</comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l></list><l>return this.findVariableWatcher(varName).bounds.intersects(this.bounds);</l></block><list><block var="var"/></list></block></block></script></block-definition><block-definition s="instrument" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return this.instrument || 1;</l></block><list></list></block></block></script></block-definition><block-definition s="attribute %&apos;attribute&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="90" collapsed="false">general reporter that serves lots of purposes.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>sensing={&#xD;draggable?&#xD;name&#xD;rotation style&#xD;anchor&#xD;children&#xD;parent&#xD;parts&#xD;synchronous?&#xD;}&#xD;motion={&#xD;direction&#xD;positions={&#xD;x position&#xD;y position&#xD;}&#xD;}&#xD;looks={&#xD;costume attributes={&#xD;costume #&#xD;costume name&#xD;costumes&#xD;}&#xD;effects={&#xD;brightness effect&#xD;color effect&#xD;fisheye effect&#xD;ghost effect&#xD;mosaic effect&#xD;pixelate effect&#xD;negative effect&#xD;comic effect&#xD;confetti effect&#xD;duplicate effect&#xD;saturation effect&#xD;}&#xD;hidden?&#xD;layer #&#xD;size&#xD;}&#xD;sound={&#xD;instrument&#xD;tempo&#xD;volume&#xD;sounds&#xD;}&#xD;pen={&#xD;pen hue&#xD;pen saturation&#xD;pen brightness&#xD;pen transparency&#xD;pen size&#xD;pen down?&#xD;}&#xD;control={&#xD;clones={&#xD;a permanent clone of myself=permanent clone&#xD;a deleted clone of myself=deleted clone&#xD;a duplicate sprite of myself=duplicate sprite&#xD;a temporary clone of myself=temporary clone &#xD;}&#xD;message&#xD;}</options></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>direction</l></block><script><block s="doReport"><block s="direction"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>x position</l></block><script><block s="doReport"><block s="xPosition"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>y position</l></block><script><block s="doReport"><block s="yPosition"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>costume #</l></block><script><block s="doReport"><block s="getCostumeIdx"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>hidden?</l></block><script><block s="doReport"><block s="reportNot"><block s="reportShown"></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>layer #</l></block><script><block s="doReport"><block s="reportListIndex"><block s="reportObject"><l><option>myself</option></l></block><block s="reportAskFor"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><list></list></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>size</l></block><script><block s="doReport"><block s="getScale"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>instrument</l></block><script><block s="doReport"><custom-block s="instrument"></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>tempo</l></block><script><block s="doReport"><block s="getTempo"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>volume</l></block><script><block s="doReport"><block s="getVolume"></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>pen down?</l></block><script><block s="doReport"><block s="getPenDown"></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block><l>pen</l></block><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="getPenAttribute"><l></l></block></autolambda><list></list></block><list><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>2</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block><l>effect</l></block><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="getEffect"><l></l></block></autolambda><list></list></block><list><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="attribute"/><l> </l></block></block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>synchronous?</l></block><script><block s="doReport"><block s="reportNot"><block s="reportGet"><l><option>dangling?</option></l></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>costume name</l></block><script><block s="doReport"><block s="reportAttributeOf"><l><option>costume name</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="attribute"/><l>message</l></block><script><block s="doReport"><block s="getLastMessage"></block></block></script></block><block s="doIf"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportAnd"><block s="reportOr"><block s="reportEquals"><block s="reportListItem"><l><option>last</option></l><block var="#1"/></block><l>clone</l></block><block s="reportEquals"><block s="reportListItem"><l><option>last</option></l><block var="#1"/></block><l>sprite</l></block></block><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="#1"/></block><l>2</l></block></block></autolambda><list><l>#1</l></list></block><list><block s="reportTextSplit"><block var="attribute"/><l> </l></block></list></block><script><block s="doReport"><custom-block s="a %s of myself"><block var="attribute"/></custom-block></block></script></block><block s="doReport"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportGet"><l></l></block></autolambda><list></list></block><list><block var="attribute"/></list></block></block></script></block-definition><block-definition s="set visible pallet to %&apos;pallet&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true"><options>motion&#xD;looks&#xD;sound&#xD;pen&#xD;control&#xD;sensing&#xD;operators&#xD;variables&#xD;lists&#xD;other</options></input></inputs><script><custom-block s="set value %s to %s"><l>Visible palette</l><block var="pallet"/></custom-block></script></block-definition><block-definition s="one of %&apos;bools&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doReport"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="value"/><block s="reportBoolean"><l><bool>true</bool></l></block></block></autolambda><list><l>value</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="value"/><list></list></block></autolambda><list><l>value</l></list></block><block var="bools"/></block></block></block><l>1</l></block></block></script></block-definition><block-definition s="variable watcher %&apos;varName&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l></list><l>return this.findVariableWatcher(varName)</l></block><list><block var="varName"/></list></block></block></script></block-definition><block-definition s="url %&apos;url&apos; as costume" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>url</l><l>proc</l></list><l>if (!proc.img) {&#xD;  proc.img = new Image();&#xD;  proc.img.src = url;&#xD;  proc.img.onload = function() {&#xD;    proc.img.loaded = true;&#xD;  }&#xD;} else if (proc.img.loaded) {&#xD;  const costume = new Costume(proc.img);&#xD;  proc.img = null;&#xD;  return costume;&#xD;}&#xD;proc.pushContext(&apos;doYield&apos;);&#xD;proc.pushContext();</l></block><list><block var="url"/></list></block></block></script></block-definition><block-definition s="expand %&apos;v&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doSetVar"><l>v</l><block s="reportSum"><block var="v"/><l>0</l></block></block><block s="doDeclareVariables"><list><l>digits</l><l>scale</l></list></block><block s="doSetVar"><l>digits</l><block s="reportTextSplit"><block s="reportJoinWords"><list><block s="reportMonadic"><l><option>abs</option></l><block var="v"/></block><l>.</l></list></block><l><option>letter</option></l></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block s="reportListIndex"><l>.</l><block var="digits"/></block><l>1</l></block></block><block s="doSetVar"><l>digits</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNotEquals"><l></l><l>.</l></block></autolambda><list></list></block><block s="reportMonadic"><l><option>id</option></l><block var="digits"/></block></block></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><block s="reportMonadic"><l><option>sign</option></l><block var="v"/></block><block s="reportProduct"><block var="value"/><block s="reportMonadic"><l><option>10^</option></l><block s="reportDifference"><block var="scale"/><block var="index"/></block></block></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="digits"/></block></block></script></block-definition><block-definition s="insert %&apos;thing&apos; at %&apos;num&apos; of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%n">1<options>1&#xD;last</options></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportMonadic"><l><option>id</option></l><block var="data"/></block></block><block s="doInsertInList"><block var="thing"/><block var="num"/><block var="data"/></block><block s="doReport"><block var="data"/></block></script></block-definition><block-definition s="%&apos;which&apos; decimals %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>no&#xD;only</options></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportKeep"><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>no</l></block><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><block var="value"/><l>1</l></block></autolambda><list><l>value</l></list></block><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>only</l></block><block s="reifyPredicate"><autolambda><block s="reportLessThan"><block var="value"/><l>1</l></block></autolambda><list><l>value</l></list></block><block s="reifyReporter"><script></script><list></list></block></block></block><custom-block s="expand %n"><block var="num"/></custom-block></block><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="make every %&apos;thing&apos; effect in Snap! %&apos;amount&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>careful with these effects!=&#xD;hue (out of 360)=hue&#xD;saturation&#xD;brightness&#xD;contrast&#xD;invert&#xD;blur&#xD;sepia</options></input><input type="%n"><options>everything normal</options></input></inputs><script><block s="doRun"><block s="reportIfElse"><block s="reportEquals"><block var="amount"/><l>everything normal</l></block><block s="reportJSFunction"><list></list><l>document.querySelector("canvas").style.filter = ""</l></block><block s="reportJSFunction"><list></list><block s="reportJoinWords"><list><l>document.querySelector("canvas").style.filter = "</l><block s="reportIfElse"><block s="reportEquals"><block var="thing"/><l>blur</l></block><block s="reportJoinWords"><list><l>blur</l><l>(</l><block var="amount"/><l>px)"</l></list></block><block s="reportIfElse"><block s="reportEquals"><block var="thing"/><l>hue</l></block><block s="reportJoinWords"><list><l>hue-rotate</l><l>(</l><block var="amount"/><l>deg)"</l></list></block><block s="reportIfElse"><block s="reportEquals"><block var="thing"/><l>saturation</l></block><block s="reportJoinWords"><list><l>saturate</l><l>(</l><block s="reportSum"><block var="amount"/><l>99</l></block><l>)"</l></list></block><block s="reportJoinWords"><list><block var="thing"/><l>(</l><block var="amount"/><l>)"</l></list></block></block></block></block></list></block></block></block><list></list></block></script></block-definition><block-definition s="costume name" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportAttributeOf"><l><option>costume name</option></l><block s="reportGet"><l><option>self</option></l></block></block></block></script></block-definition><block-definition s="costume %&apos;thing&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>number&#xD;name</options></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="thing"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="costume %s"><l></l></custom-block></autolambda><list></list></block><block var="thing"/></block><block s="reportIfElse"><block s="reportEquals"><block var="thing"/><l>number</l></block><block s="getCostumeIdx"></block><block s="reportIfElse"><block s="reportEquals"><block var="thing"/><l>name</l></block><custom-block s="costume name"></custom-block><l></l></block></block></block></block></script></block-definition><block-definition s="$flag-1.5-0-200-0" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="delete all clones of %s"><l>all sprites</l></custom-block><block s="doStopThis"><l><option>all but this script</option></l></block><block s="doBroadcast"><l><option>__shout__go__</option></l></block><block s="doStopThis"><l><option>this script</option></l></block></script></block-definition><block-definition s="for ( %&apos;setup&apos; ; %&apos;predicate&apos; ; %&apos;increment&apos; ) %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%predRing"></input><input type="%cmdRing"></input><input type="%ca"></input></inputs><script><block s="doRun"><block var="setup"/><list></list></block><block s="doUntil"><block s="evaluate"><block var="predicate"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doRun"><block var="increment"/><list></list></block></script></block></script></block-definition><block-definition s="for each ( %&apos;item&apos; %&apos;index&apos; %&apos;list&apos; ) in %&apos;data&apos; %&apos;action&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doSetVar"><l>index</l><l>0</l></block><block s="doSetVar"><l>list</l><block s="reportMonadic"><l><option>id</option></l><block var="data"/></block></block><block s="doForEach"><l>item (2)</l><block var="data"/><script><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doSetVar"><l>item</l><block var="item (2)"/></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="for each ( %&apos;item&apos; %&apos;index&apos; %&apos;list&apos; ) in %&apos;data&apos; %&apos;action&apos; with breakpoints" type="command" category="lists"><variables><list struct="atomic" id="13826">item #</list></variables><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doSetVar"><l>item #</l><block s="reportSum"><block s="reportModulus"><block var="item #"/><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></block><l>1</l></block></block><block s="doSetVar"><l>index</l><block var="item #"/></block><block s="doSetVar"><l>item</l><block s="reportListItem"><block var="index"/><block var="data"/></block></block><block s="doSetVar"><l>list</l><block s="reportMonadic"><l><option>id</option></l><block var="data"/></block></block><block s="doRun"><block var="action"/><list></list></block></script></block-definition><block-definition s="split %&apos;text&apos; by %&apos;things&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="things"/></block><l>1</l></block><block s="reportTextSplit"><block var="text"/><block s="reportListItem"><l>1</l><block var="things"/></block></block><custom-block s="split %s by %mult%s"><block s="reportJoinWords"><block s="reportTextSplit"><block var="text"/><block s="reportListItem"><l>1</l><block var="things"/></block></block></block><block s="reportCDR"><block var="things"/></block></custom-block></block></block></script></block-definition><block-definition s="x: %&apos;x&apos; y: %&apos;y&apos;" type="reporter" category="lists"><comment x="0" y="0" w="134.4000015258789" collapsed="false">Use as an input for POINT TOWARDS, DISTANCE/DIRECTION, and HUE AT.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="x"/><block var="y"/></list></block></block></script></block-definition><block-definition s="number %&apos;num&apos; in the fibonacci sequence" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportNotEquals"><block s="reportModulus"><block var="num"/><l>1</l></block><l>0</l></block><custom-block s="report error %s"><l>cannot get fibonacci number for decimal numbers</l></custom-block><block s="reportIfElse"><block s="reportLessThanOrEquals"><block var="num"/><l>1</l></block><block var="num"/><block s="reportSum"><custom-block s="number %n in the fibonacci sequence"><block s="reportDifference"><block var="num"/><l>1</l></block></custom-block><custom-block s="number %n in the fibonacci sequence"><block s="reportDifference"><block var="num"/><l>2</l></block></custom-block></block></block></block></block></script></block-definition><block-definition s="glide %&apos;steps&apos; steps in %&apos;secs&apos; seconds" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doGlide"><block var="secs"/><block s="reportSum"><block s="xPosition"></block><block s="reportProduct"><block s="reportMonadic"><l><option>sin</option></l><block s="direction"></block></block><block var="steps"/></block></block><block s="reportSum"><block s="yPosition"></block><block s="reportProduct"><block s="reportMonadic"><l><option>cos</option></l><block s="direction"></block></block><block var="steps"/></block></block></block></script></block-definition><block-definition s="USE BIGNUMS %&apos;bool&apos;" type="command" category="operators"><comment x="0" y="0" w="303.3333333333333" collapsed="false">call with True to turn on the entire Scheme numeric tower, including infinite-precision integers, exact rationals, and complex numbers; call with False to restore native JavaScript arithmetic.</comment><header></header><code></code><translations>pt:altera utilização de aritmética do Scheme para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doDeclareVariables"><list><l>isDone</l></list></block><block s="doSetVar"><l>isDone</l><block s="evaluate"><block s="reportJSFunction"><list><l>useBigNums</l></list><l>var done = false;&#xD;&#xD;function initialize (callback) {&#xD;    var bigScript = document.createElement(&apos;script&apos;);&#xD;    bigScript.src = &apos;//snap.berkeley.edu/snap/libraries/biginteger.js&apos;;&#xD;    bigScript.onload = loadScheme;&#xD;    document.head.appendChild(bigScript);&#xD;&#xD;    function loadScheme () {&#xD;        var schemeScript = document.createElement(&apos;script&apos;);&#xD;        schemeScript.src = &apos;//snap.berkeley.edu/snap/libraries/schemeNumber.js&apos;;&#xD;        schemeScript.onload = finish;&#xD;        document.head.appendChild(schemeScript);&#xD;    }&#xD;&#xD;    function finish () {&#xD;        makeGlobalObject();&#xD;        callback();&#xD;    }&#xD;}&#xD;&#xD;function makeGlobalObject () {&#xD;    window.bigNumbers = {&#xD;        originalEvaluate: InputSlotMorph.prototype.evaluate,&#xD;        originalChangeVar: VariableFrame.prototype.changeVar,&#xD;        originalPrims: {&#xD;            reportBasicSum: Process.prototype.reportBasicSum,&#xD;            reportBasicDifference: Process.prototype.reportBasicDifference,&#xD;            reportBasicProduct: Process.prototype.reportBasicProduct,&#xD;            reportBasicQuotient: Process.prototype.reportBasicQuotient,&#xD;            reportBasicPower: Process.prototype.reportBasicPower,&#xD;            reportBasicModulus: Process.prototype.reportBasicModulus,&#xD;            reportBasicRandom: Process.prototype.reportBasicRandom,&#xD;            reportBasicLessThan: Process.prototype.reportBasicLessThan,&#xD;            reportBasicGreaterThan: Process.prototype.reportBasicGreaterThan,&#xD;            reportEquals: Process.prototype.reportEquals,&#xD;            reportIsIdentical: Process.prototype.reportIsIdentical,&#xD;            reportMonadic: Process.prototype.reportMonadic&#xD;        }&#xD;    };&#xD;}&#xD;&#xD;function loadBlocks () {&#xD;    var fn = SchemeNumber.fn;&#xD;    var originalPrims = window.bigNumbers.originalPrims;&#xD;    if (useBigNums) {&#xD;        InputSlotMorph.prototype.evaluate = function () {&#xD;            var contents = this.contents();&#xD;            if (this.constant) {&#xD;                return this.constant;&#xD;            }&#xD;            if (this.isNumeric) {&#xD;                return parseNumber(contents.text || &apos;0&apos;);&#xD;            }&#xD;            return contents.text;&#xD;        };&#xD;        VariableFrame.prototype.changeVar = function (name, delta, sender) {&#xD;            var frame = this.find(name),&#xD;                value,&#xD;                newValue;&#xD;            if (frame) {&#xD;                value = parseNumber(frame.vars[name].value);&#xD;                newValue = Number.isNaN(value) ? delta : fn[&apos;+&apos;](value, parseNumber(delta));&#xD;                if (sender instanceof SpriteMorph &amp;&amp;&#xD;                        (frame.owner instanceof SpriteMorph) &amp;&amp;&#xD;                        (sender !== frame.owner)) {&#xD;                    sender.shadowVar(name, newValue);&#xD;                } else {&#xD;                    frame.vars[name].value = newValue;&#xD;                }&#xD;&#xD;            }&#xD;        };&#xD;        Object.assign(Process.prototype, {&#xD;            reportBasicSum: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;+&apos;](a, b);&#xD;            },&#xD;            reportBasicDifference: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;-&apos;](a, b);&#xD;            },&#xD;            reportBasicProduct: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;*&apos;](a, b);&#xD;            },&#xD;            reportBasicQuotient: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (fn[&apos;=&apos;](b, &apos;0&apos;) &amp;&amp; !fn[&apos;=&apos;](a, &apos;0&apos;)) {&#xD;                      return (fn[&apos;&lt;&apos;](a, &apos;0&apos;) ? SchemeNumber(&apos;-inf.0&apos;) : SchemeNumber(&apos;+inf.0&apos;))&#xD;                };&#xD;                if (Number.isNaN(a) || Number.isNaN(b) || fn[&apos;=&apos;](b, &apos;0&apos;)) return NaN;&#xD;                return fn[&apos;/&apos;](a, b);&#xD;            },&#xD;            reportBasicPower: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;expt&apos;](a, b);&#xD;            },&#xD;            reportBasicModulus: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                var result = fn.mod(a, b);&#xD;                if (fn[&apos;&lt;&apos;](b, &apos;0&apos;) &amp;&amp; fn[&apos;&gt;&apos;](result, &apos;0&apos;)) {&#xD;                    result = fn[&apos;+&apos;](result, b);&#xD;                }&#xD;                return result;&#xD;            },&#xD;            reportBasicRandom: function (min, max) {&#xD;                var floor = parseNumber(min),&#xD;                    ceil = parseNumber(max);&#xD;                if (Number.isNaN(floor) || Number.isNaN(ceil)) return NaN;&#xD;                if (!fn[&apos;=&apos;](fn.mod(floor, &apos;1&apos;), &apos;0&apos;) || !fn[&apos;=&apos;](fn.mod(ceil, &apos;1&apos;), &apos;0&apos;)) {&#xD;                    // One of the numbers isn&apos;t whole. Include the decimal.&#xD;                    return fn[&apos;+&apos;](&#xD;                        fn[&apos;*&apos;](&#xD;                            Math.random(),&#xD;                            fn[&apos;-&apos;](ceil, floor)&#xD;                        ),&#xD;                        floor&#xD;                    );&#xD;                }&#xD;                return fn.floor(&#xD;                    fn[&apos;+&apos;](&#xD;                        fn[&apos;*&apos;](&#xD;                            Math.random(),&#xD;                            fn[&apos;+&apos;](&#xD;                                fn[&apos;-&apos;](ceil, floor),&#xD;                                &apos;1&apos;&#xD;                            )&#xD;                        ),&#xD;                        floor&#xD;                    )&#xD;                );&#xD;            },&#xD;            reportBasicLessThan: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;&lt;&apos;](a, b);&#xD;            },&#xD;            reportBasicGreaterThan: function (a, b) {&#xD;                a = parseNumber(a);&#xD;                b = parseNumber(b);&#xD;                if (Number.isNaN(a) || Number.isNaN(b)) return NaN;&#xD;                return fn[&apos;&gt;&apos;](a, b);&#xD;            },&#xD;            reportEqual: function (a, b) {&#xD;                x = parseNumber(a);&#xD;                y = parseNumber(b);&#xD;                if (Number.isNaN(x) || Number.isNaN(y)) return snapEquals(a, b);&#xD;                return fn[&apos;=&apos;](x, y);&#xD;            },&#xD;            reportIsIdentical: function (a, b) {&#xD;                x = parseNumber(a);&#xD;                y = parseNumber(b);&#xD;                if (Number.isNaN(x) || Number.isNaN(y)) return originalPrims.reportIsIdentical(a, b);&#xD;                return fn[&apos;=&apos;](x, y);&#xD;            },&#xD;            reportMonadic: function (fname, n) {&#xD;                if (this.enableHyperOps) {&#xD;                    if (n instanceof List) {&#xD;                        return n.map(each =&gt; this.reportMonadic(fname, each));&#xD;                    }&#xD;                }&#xD;&#xD;                n = parseNumber(n);&#xD;                if (Number.isNaN(n)) return NaN;&#xD;&#xD;                switch (Process.prototype.inputOption(fname)) {&#xD;                case &apos;abs&apos;:&#xD;                    return fn.abs(n);&#xD;                case &apos;neg&apos;:&#xD;                    return fn[&apos;-&apos;](n);&#xD;                case &apos;ceiling&apos;:&#xD;                    return fn.ceiling(n);&#xD;                case &apos;floor&apos;:&#xD;                    return fn.floor(n);&#xD;                case &apos;sqrt&apos;:&#xD;                    return sqrt(n);&#xD;                case &apos;sin&apos;:&#xD;                    return fn.sin(radians(n));&#xD;                case &apos;cos&apos;:&#xD;                    return fn.cos(radians(n));&#xD;                case &apos;tan&apos;:&#xD;                    return fn.tan(radians(n));&#xD;                case &apos;asin&apos;:&#xD;                    return degrees(fn.asin(n));&#xD;                case &apos;acos&apos;:&#xD;                    return degrees(fn.acos(n));&#xD;                case &apos;atan&apos;:&#xD;                    return degrees(fn.atan(n));&#xD;                case &apos;ln&apos;:&#xD;                    return fn.log(n);&#xD;                case &apos;log&apos;:&#xD;                    return fn.log(n, &apos;10&apos;);&#xD;                case &apos;lg&apos;:&#xD;                    return fn.log(n, &apos;2&apos;);&#xD;                case &apos;e^&apos;:&#xD;                    return fn.exp(n);&#xD;                case &apos;10^&apos;:&#xD;                    return fn.expt(&apos;10&apos;, n);&#xD;                case &apos;2^&apos;:&#xD;                    return fn.expt(&apos;2&apos;, n);&#xD;                default:&#xD;                    return SchemeNumber(&apos;0&apos;);&#xD;                }&#xD;            }&#xD;        });&#xD;    } else {&#xD;        InputSlotMorph.prototype.evaluate = window.bigNumbers.originalEvaluate;&#xD;        VariableFrame.prototype.changeVar = window.bigNumbers.originalChangeVar;&#xD;        Object.assign(Process.prototype, originalPrims);&#xD;    }&#xD;    done = true;&#xD;}&#xD;&#xD;function parseNumber (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;    if (!fn[&apos;number?&apos;](n)) {&#xD;        n = &apos;&apos; + n;&#xD;        try {&#xD;            return parseENotation(n) || SchemeNumber(n);&#xD;        } catch (err) {&#xD;            return NaN;&#xD;        }&#xD;    }&#xD;    return n;&#xD;}&#xD;&#xD;function parseENotation (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;&#xD;    var numbers = n.match(/^(-?\d+\.?\d*|-?\.\d+)e(-?\d+)$/i);&#xD;    if (!numbers) return null;&#xD;&#xD;    var coefficient = numbers[1];&#xD;    var exponent = numbers[2];&#xD;    return fn[&apos;*&apos;](&#xD;        coefficient,&#xD;        fn.expt(&apos;10&apos;, exponent)&#xD;    );&#xD;}&#xD;&#xD;function sqrt (n) {&#xD;    var fn = SchemeNumber.fn;&#xD;&#xD;    if (!fn[&apos;exact?&apos;](n) || !fn[&apos;rational?&apos;](n) || fn[&apos;&lt;&apos;](n,&apos;0&apos;)) return fn.sqrt(n);&#xD;&#xD;    var rootNumerator = fn[&apos;exact-integer-sqrt&apos;](fn.numerator(n));&#xD;    if (!fn[&apos;=&apos;](rootNumerator[1], &apos;0&apos;)) return fn.sqrt(n);&#xD;&#xD;    var rootDenominator = fn[&apos;exact-integer-sqrt&apos;](fn.denominator(n));&#xD;    if (!fn[&apos;=&apos;](rootDenominator[1], &apos;0&apos;)) return fn.sqrt(n);&#xD;&#xD;    return fn[&apos;/&apos;](rootNumerator[0], rootDenominator[0]);&#xD;}&#xD;&#xD;function isDone () {&#xD;    return done;&#xD;}&#xD;&#xD;if (window.bigNumbers) {&#xD;    loadBlocks();&#xD;} else {&#xD;    initialize(loadBlocks);&#xD;}&#xD;&#xD;return isDone;</l></block><list><block var="bool"/></list></block></block><block s="doWaitUntil"><block s="evaluate"><block var="isDone"/><list></list></block></block></script></block-definition><block-definition s="%&apos;n&apos; !" type="reporter" category="operators"><comment x="0" y="0" w="190.66666666666666" collapsed="false">The factorial function, to make very large numbers, to demo bignums.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="n"/><l>0</l></block><block s="reportSum"><l>0</l><l>1</l></block><block s="reportProduct"><block var="n"/><custom-block s="%n !"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></block></block></block></script></block-definition><block-definition s="hue cycle" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>360</l><script><custom-block s="make every %s effect in Snap! %n"><l>hue</l><block var="i"/></custom-block></script></block></script></block-definition><block-definition s="attach script %&apos;script&apos; to mouse" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>block</l></list><l>if (!(block == block.expression)){&#xD;block = block.expression.fullCopy();&#xD;} else {&#xD;block = block.fullCopy();&#xD;}&#xD;var situation = block.situation() || {origin: world.children[0].currentSprite.scripts};&#xD;situation.action = "extract";&#xD;block.pickUp(situation.origin.world());&#xD;block.parent.grabOrigin = situation;</l></block><list><block var="script"/></list></block></script></block-definition><block-definition s="add %&apos;script&apos; to scripts" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>script</l></list><l>function emptyRing(data) {&#xD;if (!(data instanceof Context)){&#xD;throw new Error("Not a ring");&#xD;}&#xD;return data.expression instanceof Array;&#xD;}&#xD;if (emptyRing(script)){&#xD;this.scripts.children.push(script.expression[0]);&#xD;} else {&#xD;this.scripts.children.push(script.expression);&#xD;}</l></block><list><block var="script"/></list></block></script></block-definition><block-definition s="clear my scripts" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>this.scripts.children = [];</l></block><list></list></block></script></block-definition><block-definition s="scripts" type="reporter" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Reports all the current sprite&apos;s scripts in a list.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return new List(this.scripts.children.map(&#xD;function (e) {if (e instanceof RingMorph){&#xD;return new Context(null,[e]);&#xD;} else {&#xD;return new Context(null,e.fullCopy());}&#xD;}).filter(function (e) {&#xD;return e.expression.constructor.name !== &#xD;"CommentMorph";}));</l></block><list></list></block></block></script></block-definition><block-definition s="delete last updated script" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>this.scripts.children.pop();</l></block><list></list></block></script></block-definition><block-definition s="actual block/script %&apos;block&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>block</l></list><l>return block.expression</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="when $flag-1.5-0-200-0-1 clicked" type="reporter" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reifyScript"><script><block s="receiveGo"></block></script><list></list></block></block></script></block-definition><block-definition s="%&apos;child&apos; put before %&apos;script&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Puts the blocks in the first script at the beginning of the blocks in the second script.</comment><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>child</l><l>script</l></list><l>//if empty&#xD;if (!(script.expression instanceof BlockMorph)) return child;&#xD;if (!(child.expression instanceof BlockMorph)) return script;&#xD;&#xD;//combine inputs&#xD;for (let v of script.inputs) {&#xD; if (child.inputs.indexOf(v) &lt; 0) {&#xD;  child.inputs.push(v);&#xD; }&#xD;}&#xD;&#xD;child.expression.add(script.expression);&#xD;child.expression.fixLayout();&#xD;return child;</l></block><list><block var="child"/><block var="script"/></list></block></block></script></block-definition><block-definition s="%&apos;start&apos; to %&apos;end&apos; from %&apos;script&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Returns the blocks from the first number from the beginning to the second number.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%cmdRing"></input></inputs><script><block s="doIfElse"><block s="evaluate"><block s="reportJSFunction"><list><l>obj</l></list><l>return !(obj.expression instanceof BlockMorph)</l></block><list><block var="script"/></list></block><script><block s="doReport"><block s="reifyScript"><script></script><list></list></block></block></script><script><block s="doIf"><block s="reportLessThan"><block var="end"/><block var="start"/></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>scr</l></list><l>var ctx = new Context();&#xD;ctx.inputs = scr.inputs;&#xD;return ctx;</l></block><list><block var="script"/></list></block></block></script></block></script></block><block s="doDeclareVariables"><list><l>stack</l></list></block><block s="doSetVar"><l>stack</l><custom-block s="blocks after %n of %cmdRing"><block s="reportDifference"><block var="start"/><l>1</l></block><block var="script"/></custom-block></block><block s="doRun"><block s="reportJSFunction"><list><l>start</l><l>scr</l></list><l>function f(n, s) {&#xD; if (n &lt;= 0) {&#xD;  s.destroy();&#xD;  return;&#xD; };&#xD; var nextBlock = s.children[s.children.length - 1];&#xD; if (!(nextBlock instanceof BlockMorph)) return;&#xD; return f(n - 1, nextBlock);&#xD;}&#xD;&#xD;return f(start, scr.expression);</l></block><list><block s="reportDifference"><block s="reportSum"><block var="end"/><l>1</l></block><block var="start"/></block><block var="stack"/></list></block><block s="doReport"><block var="stack"/></block></script></block-definition><block-definition s="blocks after %&apos;n&apos; of %&apos;script&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Gets the blocks after the nth block.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>start</l><l>scr</l></list><l>if (!(scr.expression instanceof BlockMorph)) return scr;&#xD;&#xD;function f(n, s) {&#xD; if (n &lt;= 0) {&#xD;  var context = new Context(0, s);&#xD;  context.inputs = scr.inputs;&#xD;  return context;&#xD; }&#xD; &#xD; var nextBlock = s.children[s.children.length - 1];&#xD; if (!(nextBlock instanceof BlockMorph)) {&#xD;  var context = new Context();&#xD;  context.inputs = scr.inputs;&#xD;  return context;&#xD; }&#xD;&#xD; return f(n - 1, nextBlock);&#xD;}&#xD;&#xD;return f(start, scr.expression);</l></block><list><block var="n"/><block var="script"/></list></block></block></script></block-definition><block-definition s="length of %&apos;script&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Gets the length of a script. Not to be confused with (# of blocks in script), which gets the total amount of blocks in a script. This one does not search inside the inputs of scripts.</comment><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>scr</l></list><l>if (!(scr.expression instanceof BlockMorph)) return 0;&#xD;&#xD;var len = 1;&#xD;&#xD;function f(s) {&#xD; var nextBlock = s.children[s.children.length - 1];&#xD; if (!(nextBlock instanceof BlockMorph)) return;&#xD; len++; &#xD; f(nextBlock);&#xD;}&#xD;&#xD;f(scr.expression);&#xD;return len;</l></block><list><block var="script"/></list></block></block></script></block-definition><block-definition s="when I am %&apos;condition&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">clicked<options>clicked&#xD;pressed&#xD;dropped&#xD;mouse-entered&#xD;mouse-departed&#xD;scrolled-up&#xD;scrolled-down&#xD;stopped</options></input></inputs><script><block s="doReport"><custom-block s="put %s into slot %n of %cmdRing"><block var="condition"/><l>1</l><block s="reifyScript"><script><block s="receiveInteraction"><l></l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="when %&apos;condition&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%boolUE"></input></inputs><script><block s="doReport"><custom-block s="put %s into slot %n of %cmdRing"><block s="reportIfElse"><custom-block s="text %txt contains %txt"><block s="reportJoinWords"><list><block var="condition"/></list></block><l>BooleanSlotMorph</l></custom-block><block s="evaluate"><block var="condition"/><list></list></block><block var="condition"/></block><l>1</l><block s="reifyScript"><script><block s="receiveCondition"><l/></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="when I start as a clone" type="reporter" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reifyScript"><script><block s="receiveOnClone"></block></script><list></list></block></block></script></block-definition><block-definition s="when I receive %&apos;message&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"><options>§_messagesMenu</options></input></inputs><script><block s="doReport"><custom-block s="put %s into slot %n of %cmdRing"><block var="message"/><l>1</l><block s="reifyScript"><script><block s="receiveMessage"><l></l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="when %&apos;key&apos; key pressed" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%key">space<options>0&#xD;1&#xD;2&#xD;3&#xD;4&#xD;5&#xD;6&#xD;7&#xD;8&#xD;9&#xD;any key&#xD;up arrow&#xD;down arrow&#xD;left arrow&#xD;right arrow&#xD;space&#xD;+&#xD;-&#xD;a&#xD;b&#xD;c&#xD;d&#xD;e&#xD;f&#xD;g&#xD;h&#xD;i&#xD;j&#xD;k&#xD;l&#xD;m&#xD;n&#xD;o&#xD;p&#xD;q&#xD;r&#xD;s&#xD;t&#xD;u&#xD;v&#xD;w&#xD;x&#xD;y&#xD;z</options></input></inputs><script><block s="doReport"><custom-block s="put %s into slot %n of %cmdRing"><block var="key"/><l>1</l><block s="reifyScript"><script><block s="receiveKey"><l></l></block></script><list></list></block></custom-block></block></script></block-definition><block-definition s="new %&apos;morph&apos; %&apos;thing&apos; morph" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="morph"/><l>Ring</l></block><l></l><block s="evaluate"><block s="reportJSFunction"><list></list><block s="reportJoinWords"><list><l>return new </l><block var="morph"/><l>Morph</l><l>("</l><block var="thing"/><l>")</l></list></block></block><list></list></block></block></block></script><scripts><script x="12" y="152.46666666666664"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><block s="reportJoinWords"><list><l>return new </l><block var="morph"/><l>Morph</l><l>(null, "</l><block var="thing"/><l>")</l></list></block></block><list></list></block></script></scripts></block-definition><block-definition s="definition of %&apos;block&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return a.expression.definition.body;</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="rename costume %&apos;data&apos; to %&apos;name&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="name"/><l><option>list</option></l></block><script><block s="doRun"><block s="reifyReporter"><autolambda><block s="reportAtomicMap"><block s="reifyReporter"><script><custom-block s="rename costume %s to %s"><block var="data"/><block var="costume"/></custom-block><block s="doReport"><l></l></block></script><list><l>costume</l></list></block><block var="name"/></block></autolambda><list></list></block><list></list></block></script></block><block s="doIf"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block><script><block s="doRun"><block s="reifyReporter"><autolambda><block s="reportAtomicMap"><block s="reifyReporter"><script><custom-block s="rename costume %s to %s"><block var="costume"/><block var="name"/></custom-block><block s="doReport"><l></l></block></script><list><l>costume</l></list></block><block var="data"/></block></autolambda><list></list></block><list></list></block></script></block><block s="doIf"><block s="reportIsA"><block var="data"/><l><option>text</option></l></block><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSwitchToCostume"><block var="data"/></block><block s="doSetVar"><l>data</l><block s="reportGet"><l><option>costume</option></l></block></block><block s="doSwitchToCostume"><block var="a"/></block></script></block><block s="doRun"><block s="reportJSFunction"><list><l>data</l><l>name</l></list><l>data.name = name;</l></block><list><block var="data"/><block var="name"/></list></block></script></block-definition><block-definition s="set web title to %&apos;text&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt">Snap! 6.9.0 Build Your Own Blocks</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>a</l></list><l>document.title = a;</l></block><list><block var="text"/></list></block></script></block-definition><block-definition s="web title" 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 document.title;</l></block><list></list></block></block></script></block-definition><block-definition s="set answer to %&apos;thing&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%mlt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>newAnswer</l></list><l>var ide = world.children[0];&#xD;ide.stage.lastAnswer = newAnswer;&#xD;return ide.stage.lastAnswer</l></block><list><block var="thing"/></list></block></script></block-definition><block-definition s="categories" 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 new List(SpriteMorph.prototype.categories)</l></block><list></list></block></block></script></block-definition><block-definition s="run function ( %&apos;params&apos; ) { %&apos;body&apos; } with %&apos;inputs&apos;" type="command" category="operators"><header></header><code></code><translations>es:ejecutar función ( _ ) { _ } con _&#xD;</translations><inputs><input type="%mult%s"></input><input type="%code"></input><input type="%mult%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><block var="params"/><block var="body"/></block><block var="inputs"/></block></script></block-definition><block-definition s="call function ( %&apos;params&apos; ) { %&apos;body&apos; } with %&apos;inputs&apos;" type="reporter" category="operators"><header></header><code></code><translations>es:llamar función ( _ ) { _ } con _&#xD;</translations><inputs><input type="%mult%s"></input><input type="%code"></input><input type="%mult%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><block var="params"/><block var="body"/></block><block var="inputs"/></block></block></script></block-definition><block-definition s="switch to dev mode" type="command" category="other"><header></header><code></code><translations>es:cambiar a modo des&#xD;</translations><inputs></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>ide.switchToDevMode();</l><list><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="switch to user mode" type="command" category="other"><header></header><code></code><translations>es:cambiar a modo usuario&#xD;</translations><inputs></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>ide.switchToUserMode();</l><list><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="ide" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l></l></list><l>return this.parentThatIsA(IDE_Morph);</l><list><l></l></list></custom-block></block></script></block-definition><block-definition s="in dev mode?" type="predicate" category="other"><header></header><code></code><translations>es:¿en modo des?&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>world</l></list><l>return world.isDevMode;</l><list><custom-block s="world"></custom-block></list></custom-block></block></script></block-definition><block-definition s="inspect %&apos;obj&apos;" type="command" category="other"><header></header><code></code><translations>es:inspeccionar _&#xD;</translations><inputs><input type="%obj"></input></inputs><script><block s="doIf"><block s="reportNot"><custom-block s="in dev mode?"></custom-block></block><script><custom-block s="switch to dev mode"></custom-block></script></block><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>obj</l></list><l>this.inspect(obj);</l><list><block var="obj"/></list></custom-block></script></block-definition><block-definition s="save project" type="command" category="other"><header></header><code></code><translations>es:guadar proyecto&#xD;</translations><inputs></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>ide.save();</l><list><custom-block s="ide"></custom-block></list></custom-block></script></block-definition><block-definition s="world" type="reporter" category="sensing"><header></header><code></code><translations>es:mundo&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>ide</l></list><l>return ide.world();</l><list><custom-block s="ide"></custom-block></list></custom-block></block></script></block-definition><block-definition s="this process" type="reporter" category="sensing"><header></header><code></code><translations>es:este proceso&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l></list><l>proc.toString = function() {return "a SnapProcess";};&#xD;return proc;</l><list></list></custom-block></block></script></block-definition><block-definition s="this script is clicked?" type="predicate" category="sensing"><header></header><code></code><translations>es:¿esta secuencia tiene clic?&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l></list><l>return proc.isClicked;</l><list><custom-block s="this process"></custom-block></list></custom-block></block></script></block-definition><block-definition s="warped?" type="predicate" category="sensing"><header></header><code></code><translations>es:¿atómica?&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l></list><l>return proc.isAtomic;</l><list><custom-block s="this process"></custom-block></list></custom-block></block></script></block-definition><block-definition s="%&apos;thing&apos; assert type(s) %&apos;typeString&apos;" type="command" category="operators"><comment x="0" y="0" w="306" collapsed="false">make sure &quot;thing&quot; is a particular type or any of a number of types&#xD;and raise an error if not&#xD;use responsibly wrt performance implications</comment><header></header><code></code><translations>es:_ aseverar tipo(s) _&#xD;</translations><inputs><input type="%s"></input><input type="%mult%txt"></input></inputs><script><custom-block s="run function ( %mult%s ) { %code } with %mult%s"><list><l>proc</l><l>thing</l><l>typeString</l></list><l>proc.assertType(thing, typeString.asArray());</l><list><custom-block s="this process"></custom-block><block var="thing"/><block var="typeString"/></list></custom-block></script></block-definition><block-definition s="%&apos;property&apos; of %&apos;object&apos;" type="reporter" category="operators"><header></header><code></code><translations>es:_ de _&#xD;</translations><inputs><input type="%s"></input><input type="%obj"></input></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list><l>property</l><l>object</l></list><l>function see(x, c) {alert(x + "\n" + c); return x;}&#xD;return object[property];</l><list><block var="property"/><block var="object"/></list></custom-block></block></script></block-definition><block-definition s="SpriteMorph.prototype" type="reporter" category="sensing"><header></header><code></code><translations>es:SpriteMorph.prototipo&#xD;</translations><inputs></inputs><script><block s="doReport"><custom-block s="call function ( %mult%s ) { %code } with %mult%s"><list></list><l>return SpriteMorph.prototype;</l><list></list></custom-block></block></script></block-definition><block-definition s="is %&apos;thing&apos; deleted?" type="predicate" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_objectsMenu</options></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="thing"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="is %s deleted?"><l></l></custom-block></autolambda><list></list></block><block var="thing"/></block></block></script></block><block s="doDeclareVariables"><list><l>result</l></list></block><custom-block s="safely try %cs then if %upvar %cs"><script><block s="doSetVar"><l>result</l><block s="evaluate"><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportBoolean"><l><bool>false</bool></l></block></autolambda><list></list></block><block var="thing"/></block><list></list></block></block></script><l>error</l><script><block s="doSetVar"><l>result</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></custom-block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="arithmetic operations to get %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><custom-block s="$flash zip %mult%l"><list><block s="reportNumbers"><l>0</l><block var="num"/></block><block s="reportNumbers"><block var="num"/><l>0</l></block></list></custom-block><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><block s="reportQuotient"><block var="num"/><l></l></block></list></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="num"/></block></block></list></block></block></script></block-definition><block-definition s="set pen down to %&apos;Value&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doIfElse"><block var="Value"/><script><block s="down"></block></script><script><block s="up"></block></script></block></script></block-definition><block-definition s="set pen color to %&apos;Color&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>V</l></list><l>if (!(V instanceof ColorSlotMorph) &amp;&amp; !(V instanceof Color))&#xD;{&#xD;    throw (new Error ("Can not set the pen color to a non color."));&#xD;}&#xD;&#xD;this.setColor (new Color (V.r, V.g, V.b, V.a));&#xD;this.changed ();</l></block><list><block var="Color"/></list></block></script></block-definition><block-definition s="pen color" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="color with RGBA %l"><custom-block s="%s of color %n"><l>RGBA</l><block s="evaluate"><block s="reportJSFunction"><list></list><l>return (this.color);</l></block><list></list></block></custom-block></custom-block></block></script></block-definition><block-definition s="touching color %&apos;Color&apos; ?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="evaluate"><block s="reportJSFunction"><list><l>R</l><l>V</l></list><l>R.expression.children[1] = new ColorSlotMorph (V.color);&#xD;R.expression.fixLayout();&#xD;return (R);</l></block><list><block s="reifyPredicate"><autolambda><block s="reportTouchingColor"><color>145,26,68,1</color></block></autolambda><list></list></block><block var="Color"/></list></block><list></list></block></block></script></block-definition><block-definition s="color %&apos;C1&apos; is touching %&apos;C2&apos; ?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="evaluate"><block s="reportJSFunction"><list><l>R</l><l>C1</l><l>C2</l></list><l>R.expression.children[1] = new ColorSlotMorph (C1.color);&#xD;R.expression.children[4] = new ColorSlotMorph (C2.color);&#xD;R.expression.fixLayout();&#xD;return (R);</l></block><list><block s="reifyPredicate"><autolambda><block s="reportColorIsTouchingColor"><color>145,26,68,1</color><color>145,26,68,1</color></block></autolambda><list></list></block><block var="C1"/><block var="C2"/></list></block><list></list></block></block></script></block-definition><block-definition s="color I am touching $nl only pen trails" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>Sprite</l><l>Show</l></list><l>var Stage = this.parentThatIsA (StageMorph);&#xD;var PenTrails = Stage.penTrails ();&#xD;var Costume = Stage.costume;&#xD;&#xD;var CheckCanvas = function (C, P)&#xD;{&#xD;    if (P.x &lt; 0 || P.y &lt; 0 || P.x &gt; C.width || P.y &gt; C.height)&#xD;    {&#xD;        return ([ 0, 0, 0, 0 ]);&#xD;    }&#xD;&#xD;    var Src = C&#xD;        .getContext ("2d")&#xD;        .getImageData (P.x, P.y, 1, 1).data;&#xD;&#xD;    return ([ Src[0], Src[1], Src[2], (Src[3] / 255) * 100 ]);&#xD;};&#xD;&#xD;var Center = new Point (Stage.width () / 2, Stage.height () / 2);&#xD;var RealSpritePos = new Point (Center.x + Sprite.xPosition(), Center.y - Sprite.yPosition());&#xD;&#xD;var Clr = CheckCanvas (PenTrails, RealSpritePos);&#xD;&#xD;if (Clr[0] === 0 &amp;&amp; Clr[1] === 0 &amp;&amp; Clr[2] === 0 &amp;&amp; Clr[3] === 0 &amp;&amp; Costume !== null &amp;&amp; Costume !== undefined)&#xD;{&#xD;    Clr = CheckCanvas (Costume.contents, RealSpritePos);&#xD;}&#xD;&#xD;return (invoke (Show, new List (Clr)));</l></block><list><block s="reportGet"><l><option>self</option></l></block><block s="reifyReporter"><script></script><list></list></block></list></block></block></script></block-definition><block-definition s="JS color layout from RGBA %&apos;r&apos; %&apos;g&apos; %&apos;b&apos; %&apos;a&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l><l>b</l><l>c</l><l>d</l></list><l>return new Color(a,b,c,d)</l></block><list><block var="r"/><block var="g"/><block var="b"/><block var="a"/></list></block></block></script></block-definition><block-definition s="is %&apos;thing&apos; a %&apos;type&apos; ?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s" readonly="true">color<options>number&#xD;text&#xD;Boolean&#xD;list&#xD;sprite&#xD;costume&#xD;sound&#xD;command&#xD;reporter&#xD;predicate&#xD;color</options></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="type"/><l>color</l></block><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return (a instanceof ColorSlotMorph) &amp;&amp; !(a instanceof Color)</l></block><list><block var="thing"/></list></block><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportIsA"><l></l><l></l></block></autolambda><list></list></block><list><block var="thing"/><block var="type"/></list></block></block></block></script></block-definition><block-definition s="costume dropdown %&apos;costume&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doReport"><block var="costume"/></block></script></block-definition><block-definition s="new costume with RGBA color %&apos;R&apos; %&apos;G&apos; %&apos;B&apos; %&apos;A&apos; $nl width %&apos;width&apos; height %&apos;height&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">255</input><input type="%n">255</input><input type="%n">255</input><input type="%n">100</input><input type="%n">200</input><input type="%n">30</input></inputs><script><block s="doReport"><block s="reportNewCostume"><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block var="R"/><block var="G"/><block var="B"/><block var="A"/></list></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block s="reportProduct"><block var="width"/><block var="height"/></block></block></block><block var="width"/><block var="height"/></block></block></script></block-definition><block-definition s="combine pixels from costume %&apos;Costume 1&apos; and %&apos;Costume 2&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doReport"><block s="reportNewCostume"><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>4</l><block s="reportListItem"><l>1</l><l/></block></block><l>0</l></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><l/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l>2</l><l/></block></block></block><block s="reportIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>4</l><block s="reportListItem"><l>1</l><l/></block></block><l>0</l></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><l/></block></block><block s="reportListItem"><l>2</l><block s="reportListItem"><l>2</l><l/></block></block></block><block s="reportIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>4</l><block s="reportListItem"><l>1</l><l/></block></block><l>0</l></block><block s="reportListItem"><l>3</l><block s="reportListItem"><l>1</l><l/></block></block><block s="reportListItem"><l>3</l><block s="reportListItem"><l>2</l><l/></block></block></block><block s="reportIfElse"><block s="reportGreaterThan"><block s="reportListItem"><l>4</l><block s="reportListItem"><l>1</l><l/></block></block><l>0</l></block><block s="reportListItem"><l>4</l><block s="reportListItem"><l>1</l><l/></block></block><block s="reportListItem"><l>4</l><block s="reportListItem"><l>2</l><l/></block></block></block></list></block></autolambda><list></list></block><custom-block s="$flash zip %mult%l"><list><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="Costume 1"/></block><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="Costume 2"/></block></list></custom-block></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="Costume 1"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="Costume 1"/></block></block></block></script></block-definition><block-definition s="restore categories" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>if( world._catg){&#xD; let ide = this.parentThatIsA( IDE_Morph); &#xD; SpriteMorph.prototype.categories = Array.from( world._catg);&#xD; ide.createCategories();&#xD; ide.fixLayout();&#xD;}</l></block><list></list></block></script></block-definition><block-definition s="delete category %&apos;category&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>cat</l></list><l>if( !world._catg){ world._catg = Array.from(SpriteMorph.prototype.categories)};&#xD;let ide = this.parentThatIsA( IDE_Morph);&#xD;let idx = SpriteMorph.prototype.categories.findIndex( el =&gt; el==cat);&#xD;if( idx &lt; 0){ return};&#xD;SpriteMorph.prototype.categories.splice( idx, 1);&#xD;ide.createCategories();&#xD;ide.fixLayout();</l></block><list><block var="category"/></list></block></script></block-definition><block-definition s="new counter" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>count</l></list></block><block s="doReport"><block s="reifyReporter"><script><block s="doIfElse"><block s="reportEquals"><block var="message"/><l>reset</l></block><script><block s="doSetVar"><l>count</l><l>0</l></block></script><script><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="message"/><l>increment</l></block><block s="reportEquals"><block var="message"/><l>next</l></block></block><script><block s="doChangeVar"><l>count</l><l>1</l></block></script><script></script></block></script></block><block s="doReport"><block var="count"/></block></script><list><l>message</l></list></block></block></script></block-definition><block-definition s="save continuation in %&apos;saved continuations&apos;" type="command" category="control"><variables><list struct="atomic" id="15214">tasks 2</list></variables><header></header><code></code><translations></translations><inputs><input type="%upvar"></input></inputs><script><block s="doCallCC"><block s="reifyScript"><script><block s="doIfElse"><block s="reportIsA"><block var="tasks 2"/><l><option>list</option></l></block><script></script><script><block s="doSetVar"><l>tasks 2</l><block s="reportNewList"><list></list></block></block></script></block><block s="doAddToList"><block var="continuation"/><block var="tasks 2"/></block><block s="doSetVar"><l>tasks</l><block s="reportMonadic"><l><option>id</option></l><block var="tasks 2"/></block></block></script><list><l>continuation</l></list></block></block></script></block-definition><block-definition s="the %&apos;cat&apos; category $nl only primitives" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>motion&#xD;looks&#xD;sound&#xD;pen&#xD;control&#xD;sensing&#xD;operators&#xD;variables</options></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="cat"/><l></l></block><block s="reportNewList"><list></list></block><block s="evaluate"><block s="reportJSFunction"><list><l>cat</l></list><l>return new List(this.blockTemplates(cat))</l></block><list><block var="cat"/></list></block></block></block></script></block-definition><block-definition s="all primitives" 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>var stage = this.parentThatIsA(StageMorph),&#xD;    array = this.categories.map(&#xD;(cat) =&gt; (this.blockTemplates(cat)))&#xD;.map(a =&gt; a.filter(e =&gt; e.constructor.name.includes(&#xD;"BlockMorph")).map(f =&gt; new Context(null, f)));&#xD;array.pop(); array.pop();&#xD;var evens = array.filter((x, y) =&gt; y % 2 == 0),&#xD;    odds = array.filter((x, y) =&gt; y % 2 != 0);&#xD;return new List(evens.concat(odds).map(e =&gt; new List(e)))</l></block><list></list></block></block></script></block-definition><block-definition s="my local blocks" 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>var gbs = this.customBlocks,&#xD;    temp;&#xD;return new List(gbs.map(e =&gt; {&#xD;if (e.type == &apos;command&apos;){&#xD;temp = new CustomCommandBlockMorph(e);&#xD;} else {&#xD;temp = new CustomReporterBlockMorph(e, (e.type == &apos;predicate&apos;));&#xD;}&#xD;return new Context(null, temp);&#xD;}))</l></block><list></list></block></block></script></block-definition><block-definition s="all global custom blocks" 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>var stage = this.parentThatIsA(StageMorph),&#xD;    gbs = stage.globalBlocks,&#xD;    temp;&#xD;return new List(gbs.map(e =&gt; {&#xD;if (e.type == &apos;command&apos;){&#xD;temp = new CustomCommandBlockMorph(e);&#xD;} else {&#xD;temp = new CustomReporterBlockMorph(e, (e.type == &apos;predicate&apos;));&#xD;}&#xD;return new Context(null, temp);&#xD;}))</l></block><list></list></block></block></script></block-definition><block-definition s="keys %&apos;keys&apos; pressed in order?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%mult%key"></input></inputs><script><block s="doForEach"><l>item</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNotEquals"><block var="value"/><l></l></block></autolambda><list><l>value</l></list></block><block var="keys"/></block><script><block s="doWaitUntil"><block s="reportKeyPressed"><l><option>any key</option></l></block></block><block s="doIfElse"><block s="reportKeyPressed"><block var="item"/></block><script></script><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="%&apos;kind&apos; mouse down?" type="predicate" category="sensing"><comment x="0" y="0" w="227" collapsed="false">Version of mouse down? block with left, middle or right</comment><header></header><code></code><translations>el:είναι το _ ποντίκι κάτω;&#xD;de:_ Maustaste-gedrückt?&#xD;</translations><inputs><input type="%s" readonly="true">left<options>left&#xD;middle&#xD;right</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>btn</l></list><l>if (!window.rightclick){&#xD;rightclick = false;&#xD;onmousedown = (e) =&gt; {window.rightclick = (e.button == btn)};&#xD;onmouseup = () =&gt; {window.rightclick = false};&#xD;}&#xD;return rightclick;</l></block><list><block s="reportDifference"><block s="reportListIndex"><block var="kind"/><block s="reportNewList"><list><l>left</l><l>middle</l><l>right</l></list></block></block><l>1</l></block></list></block></block></script></block-definition><block-definition s="%&apos;kind&apos; of %&apos;list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="194" collapsed="false">Based on the [ v] of [=] block but not only has the size option but also allows you to put an input into the left slot</comment><header></header><code></code><translations>el:_ του _&#xD;de:_ von _&#xD;</translations><inputs><input type="%s" readonly="true">length<options>length&#xD;size&#xD;rank&#xD;shape&#xD;ravel&#xD;transpose&#xD;csv&#xD;json&#xD;lines</options></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="kind"/><l>lines</l></block><block s="reportIfElse"><block s="reportEquals"><custom-block s="%s of %l"><l>rank</l><l/></custom-block><l>1</l></block><block s="reportCombine"><block var="list"/><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><block s="reportUnicodeAsLetter"><l>10</l></block><l></l></list></block></autolambda><list></list></block></block><custom-block s="report error %s"><l>unable to convert to lines</l></custom-block></block><block s="evaluate"><block s="reportJSFunction"><list><l>list</l><l>option</l></list><l>    switch (option) {&#xD;    case &apos;length&apos;:&#xD;        return list.length();&#xD;    case &apos;size&apos;:&#xD;        return list.size();&#xD;    case &apos;rank&apos;:&#xD;        return list.rank();&#xD;    case &apos;shape&apos;:&#xD;        return list.shape();&#xD;    case &apos;ravel&apos;:&#xD;        return list.ravel();&#xD;    case &apos;transpose&apos;:&#xD;        return list.transpose();&#xD;    case &apos;csv&apos;:&#xD;        if (list.canBeCSV()) {&#xD;            return list.asCSV();&#xD;        }&#xD;        throw new Error(&apos;unable to convert to CSV&apos;);&#xD;    case &apos;json&apos;:&#xD;        if (list.canBeJSON()) {&#xD;            return list.asJSON();&#xD;        }&#xD;        throw new Error(&apos;unable to convert to JSON&apos;);&#xD;    default:&#xD;        return 0;&#xD;    }</l></block><list><block var="list"/><block var="kind"/></list></block></block></block></script></block-definition><block-definition s="the %&apos;cat&apos; category $nl only primitives $nl with rings" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>motion&#xD;looks&#xD;sound&#xD;pen&#xD;control&#xD;sensing&#xD;operators&#xD;variables</options></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return new Context(null, a)</l></block><list><l></l></list></block></autolambda><list></list></block><custom-block s="the %s category %br only primitives"><block var="cat"/></custom-block></block></block></script></block-definition><block-definition s="what I am saying/asking/thinking" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>var contents = this.talkBubble();&#xD;if (!contents) return &apos;&apos;;&#xD;contents = contents.contentsMorph;&#xD;if (!(contents instanceof TextMorph)){&#xD;return contents;&#xD;} else {&#xD;return contents.text;&#xD;}</l></block><list></list></block></block></script></block-definition><block-definition s="stamp with %&apos;eff&apos; effect %&apos;num&apos;" type="command" category="pen"><comment x="0" y="0" w="204" collapsed="false">Stamps with a set graphics effect</comment><header></header><code></code><translations>el:σφραγίδα με το εφέ _ να είναι _&#xD;de:stemple mit _ -Effect auf _&#xD;</translations><inputs><input type="%s" readonly="true">ghost<options>color&#xD;saturation&#xD;brightness&#xD;ghost&#xD;fisheye&#xD;whirl&#xD;pixelate&#xD;mosaic&#xD;negative&#xD;duplicate&#xD;comic&#xD;confetti</options></input><input type="%n">50</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="getEffect"><block var="eff"/></block></block><block s="setEffect"><block var="eff"/><block var="num"/></block><block s="doStamp"></block><block s="setEffect"><block var="eff"/><block var="a"/></block></script></block></script></block-definition><block-definition s="group %&apos;data&apos; using: %&apos;function&apos; checking: %&apos;condition&apos;" type="reporter" category="lists"><comment x="0" y="0" w="148" collapsed="false">Combines the items of a list using a function (see regular COMBINE), but only does so if the condition is met for both current items.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%repRing"></input><input type="%predRing"></input></inputs><script><block s="doIf"><block s="reportOr"><block s="reportListIsEmpty"><block var="data"/></block><block s="reportListIsEmpty"><block s="reportCDR"><block var="data"/></block></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doIf"><block s="evaluate"><block var="condition"/><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block><script><block s="doIf"><block s="evaluate"><block var="condition"/><list><block s="reportListItem"><l>2</l><block var="data"/></block></list></block><script><block s="doReport"><custom-block s="group %l using: %repRing checking: %predRing"><block s="reportCONS"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="data"/></block><block s="reportListItem"><l>2</l><block var="data"/></block></list></block><custom-block s="group %l using: %repRing checking: %predRing"><block s="reportCDR"><block s="reportCDR"><block var="data"/></block></block><block var="function"/><block var="condition"/></custom-block></block><block var="function"/><block var="condition"/></custom-block></block></script></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><custom-block s="group %l using: %repRing checking: %predRing"><block s="reportCDR"><block var="data"/></block><block var="function"/><block var="condition"/></custom-block></block></block></script></block-definition><block-definition s="zip %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="data"/></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="data"/></block><custom-block s="zip %mult%l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="data"/></block></custom-block></block></block></script></block-definition><block-definition s="sort %&apos;data&apos; ordering with: %&apos;function&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="function"/></list></block></block></script></block-definition><block-definition s="rank of %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="146" collapsed="false">Gets the dimensions (depth) of a list without APL blocks.</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"><l>0</l></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>list</option></l></block></autolambda><list></list></block><block var="data"/></block></block><script><block s="doReport"><l>1</l></block></script></block><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsIdentical"><l></l><block var="data"/></block></autolambda><list></list></block><block var="data"/></block></block></block><script><block s="doReport"><block s="reportQuotient"><l>1</l><l>0</l><comment w="90" collapsed="false">infinity, for circular lists</comment></block></block></script></block><block s="doReport"><block s="reportSum"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="rank of %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block><block s="reifyReporter"><autolambda><block s="reportMax"><l></l><l></l></block></autolambda><list></list></block></block><l>1</l></block></block></script></block-definition><block-definition s="mouse button" type="reporter" category="sensing"><comment x="0" y="0" w="274" collapsed="false">Reports the currently pressed mouse button&apos;s ID (i.e. middle click is 1, right-click is 2). If no buttons are currently being pressed, it will report -1. If multiple are pressed at once, it will report the ID of the button most recently pressed. This doesn&apos;t work for left clicks, however. For that you need to use &apos;mouse down?&apos;.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>if (!window.buttonClicked){&#xD;window.buttonClicked = -1;&#xD;window.onmousedown = e =&gt; buttonClicked = e.button;&#xD;window.onmouseup = e =&gt; buttonClicked = -1;&#xD;}&#xD;return buttonClicked || -1;</l></block><list></list></block></block></script></block-definition><block-definition s="alter costume %&apos;costume&apos; r: %&apos;r&apos; g: %&apos;g&apos; b: %&apos;b&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>c</l></list></block><block s="doSetVar"><l>c</l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>list</option></l></block><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportGetImageAttribute"><l><option>pixels</option></l><l></l></block><block var="costume"/></block></autolambda><list></list></block><block s="reportGet"><l><option>costumes</option></l></block></block><block var="costume"/></block></block><block s="doReport"><block s="reportNewCostume"><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><block s="reportQuotient"><block s="reportNewList"><list><block var="r"/><block var="g"/><block var="b"/><l>100</l></list></block><l>100</l></block></block></autolambda><list></list></block><list><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>list</option></l></block><block var="costume"/><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block></list></block><block s="reportGetImageAttribute"><l><option>width</option></l><block var="c"/></block><block s="reportGetImageAttribute"><l><option>height</option></l><block var="c"/></block></block></block></script></block-definition><block-definition s="flip costume %&apos;cos&apos; %&apos;w&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">current<options>§_costumesMenu</options></input><input type="%s" readonly="true"><options>horizontally&#xD;vertically</options></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="w"/><l>horizontally</l></block><block s="reportNewCostumeStretched"><block var="cos"/><l>-100</l><l>100</l></block><block s="reportIfElse"><block s="reportEquals"><block var="w"/><l>vertically</l></block><block s="reportNewCostumeStretched"><block var="cos"/><l>100</l><l>-100</l></block><l></l></block></block></block></script></block-definition><block-definition s="# %&apos;comment&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%mlt">comment...</input></inputs></block-definition><block-definition s="notifications allowed?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return Notification.permission&#xD; == "granted";</l></block><list></list></block></block></script></block-definition><block-definition s="root object" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportIfElse"><custom-block s="clone?"></custom-block><block s="reportAskFor"><block s="reportGet"><l><option>parent</option></l></block><block s="reifyReporter"><autolambda><custom-block s="root object"></custom-block></autolambda><list></list></block><list></list></block><block s="reportObject"><l><option>myself</option></l></block></block></block></script></block-definition><block-definition s="clone?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNot"><block s="reportEquals"><block s="reportGet"><l><option>parent</option></l></block><l></l></block></block></block></script></block-definition><block-definition s="window %&apos;which&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">title<options>url&#xD;hash&#xD;title&#xD;origin</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>which</l></list><l>var result = &apos;&apos;;&#xD;switch (which){&#xD;case &apos;url&apos;:&#xD;result = location.href;&#xD;break;&#xD;case &apos;title&apos;:&#xD;result = document.title;&#xD;break;&#xD;case &apos;origin&apos;:&#xD;result = location.origin;&#xD;break;&#xD;case &apos;hash&apos;:&#xD;result = location.hash;&#xD;}&#xD;return result;</l></block><list><block var="which"/></list></block></block></script></block-definition><block-definition s="inform %&apos;body&apos; titled %&apos;title&apos;" type="command" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Informs something AND waits until the user has pressed OK.</comment><header></header><code></code><translations></translations><inputs><input type="%s">This is some content!</input><input type="%s">!</input></inputs><script><custom-block s="let %upvar be %s"><l>test</l><block s="evaluate"><block s="reportJSFunction"><list><l>body</l><l>title</l></list><l>var dialog = new DialogBoxMorph(),&#xD;    isDone = false;&#xD;dialog.destroy = function () {&#xD;    isDone = true;&#xD;    var world = this.world();&#xD;    world.keyboardFocus = null;&#xD;    world.hand.destroyTemporaries();&#xD;    DialogBoxMorph.uber.destroy.call(this);&#xD;}&#xD;dialog.inform(title, body, this.world());&#xD;return () =&gt; (isDone);</l></block><list><block var="body"/><block var="title"/></list></block></custom-block><block s="doWaitUntil"><block s="evaluate"><block var="test"/><list></list></block></block></script></block-definition><block-definition s="snap! confirm %&apos;body&apos; titled %&apos;title&apos;" type="predicate" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Asks the user a yes/no question, then reports true or false based on whether they clicked yes.</comment><header></header><code></code><translations></translations><inputs><input type="%s">Are you sure?</input><input type="%s">?</input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="evaluate"><block s="reportJSFunction"><list><l>body</l><l>title</l></list><l>var dialog = new DialogBoxMorph(),&#xD;    isDone = false,&#xD;    result = false;&#xD;dialog.destroy = function () {&#xD;    isDone = true;&#xD;    result = this.buttons.children[0].userState == &apos;highlight&apos;;&#xD;    var world = this.world();&#xD;    world.keyboardFocus = null;&#xD;    world.hand.destroyTemporaries();&#xD;    DialogBoxMorph.uber.destroy.call(this);&#xD;}&#xD;dialog.askYesNo(title, body, this.world());&#xD;return new List([() =&gt; (isDone), () =&gt; (result)]);</l></block><list><block var="body"/><block var="title"/></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="a"/></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportListItem"><l>2</l><block var="a"/></block><list></list></block></block></script></block-definition><block-definition s="Snap! prompt %&apos;title&apos; default %&apos;default&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="90" collapsed="false">Waits for user input, then reports the thing they typed. If you press cancel, however, it reports false instead.</comment><header></header><code></code><translations></translations><inputs><input type="%s">What&apos;s your name?</input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="evaluate"><block s="reportJSFunction"><list><l>origin</l><l>title</l></list><l>var dialog = new DialogBoxMorph(),&#xD;    isDone = false,&#xD;    result = false;&#xD;dialog.destroy = function () {&#xD;    isDone = true;&#xD;    result = this.buttons.children[1].userState&#xD;    == &apos;highlight&apos; ? false:this.getInput();&#xD;    var world = this.world();&#xD;    world.keyboardFocus = null;&#xD;    world.hand.destroyTemporaries();&#xD;    DialogBoxMorph.uber.destroy.call(this);&#xD;}&#xD;dialog.prompt(title, origin, this.world());&#xD;return new List([() =&gt; (isDone), () =&gt; (result)]);</l></block><list><block var="default"/><block var="title"/></list></block></block><block s="doWaitUntil"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="a"/></block><list></list></block></block><block s="doReport"><block s="evaluate"><block s="reportListItem"><l>2</l><block var="a"/></block><list></list></block></block></script></block-definition><block-definition s="copy of %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMonadic"><l><option>id</option></l><block var="data"/></block></block></script></block-definition><block-definition s="latin %&apos;latin&apos; as number" type="reporter" category="operators"><comment x="0" y="0" w="211" collapsed="false">Returns the roman number as actual number&#xD;e.g.&#xD;IV = 4&#xD;XL = 40&#xD;CD = 400&#xD;CLM = 1050&#xD;MMMM = 4000</comment><header></header><code></code><translations>el:λατίνα _ ως νούμερο&#xD;de:Latein _ als zahl&#xD;</translations><inputs><input type="%s">MDCLXVI</input></inputs><script><block s="doIf"><block s="reportAnd"><custom-block s="setting %s"><l>hyper blocks support</l></custom-block><block s="reportIsA"><block var="latin"/><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="latin %s as number"><l></l></custom-block></autolambda><list></list></block><block var="latin"/></block></block></script></block><block s="doReport"><custom-block s="reduce list %l using %repRing"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><block s="reportCDR"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="each pair"/></block><block var="each letter"/></block></autolambda><list><l>each pair</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>I</l><l>1</l></list></block><block s="reportNewList"><list><l>V</l><l>5</l></list></block><block s="reportNewList"><list><l>X</l><l>10</l></list></block><block s="reportNewList"><list><l>L</l><l>50</l></list></block><block s="reportNewList"><list><l>C</l><l>100</l></list></block><block s="reportNewList"><list><l>D</l><l>500</l></list></block><block s="reportNewList"><list><l>M</l><l>1000</l></list></block></list></block></block></block></block></autolambda><list><l>each letter</l></list></block><block s="reportTextSplit"><block var="latin"/><l><option>letter</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportLessThan"><block var="#1"/><block var="next"/></block><block s="reportSum"><block s="reportDifference"><block var="next"/><block var="#1"/></block><block s="reportDifference"><block var="#2"/><block var="next"/></block></block><block s="reportSum"><block var="#1"/><block var="#2"/></block></block></autolambda><list><l>#1</l><l>#2</l><l>next</l></list></block></custom-block></block></script></block-definition><block-definition s="reduce list %&apos;list&apos; using %&apos;repo&apos;" type="reporter" category="lists"><comment x="0" y="0" w="90" collapsed="false">Similar to COMBINE, but with a third input that is the definite second value.</comment><header></header><code></code><translations>el:μείωση λίστας _ χρησιμοποιόντας _&#xD;de:liste reduzieren _ mit _&#xD;</translations><inputs><input type="%l">5 10 4</input><input type="%repRing"></input></inputs><script><block s="doIfElse"><block s="reportListIsEmpty"><block s="reportCDR"><block var="list"/></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script><script><block s="doReport"><block s="evaluate"><block var="repo"/><list><block s="reportListItem"><l>1</l><block var="list"/></block><custom-block s="reduce list %l using %repRing"><block s="reportCDR"><block var="list"/></block><block var="repo"/></custom-block><block s="reportListItem"><l>1</l><block s="reportCDR"><block var="list"/></block></block></list></block></block></script></block></script></block-definition><block-definition s="number %&apos;number&apos; as latin" type="reporter" category="operators"><comment x="0" y="0" w="318" collapsed="false">Returns the actual number as roman number, Can be slow for large operations.&#xD;e.g.&#xD;4 = IV&#xD;40 = XL&#xD;400 = CD&#xD;1050 = CLM&#xD;4000 = MMMM</comment><header></header><code></code><translations>el:νούμερο _ ως λατίνα&#xD;de:Zahl _ als Latein&#xD;</translations><inputs><input type="%n">1666</input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="reportAnd"><custom-block s="setting %s"><l>hyper blocks support</l></custom-block><block s="reportIsA"><block var="number"/><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="number %n as latin"><l></l></custom-block></autolambda><list></list></block><block var="number"/></block></block></script></block><block s="doIf"><block s="reportLessThan"><block var="number"/><l>0</l></block><script><custom-block s="error %s"><l>Cannot get latin for negative numbers</l></custom-block></script></block><block s="doDeclareVariables"><list><l>symbols</l><l>output</l></list></block><block s="doSetVar"><l>symbols</l><block s="reportNewList"><list><block s="reportNewList"><list><l>I</l><l>1</l></list></block><block s="reportNewList"><list><l>V</l><l>5</l></list></block><block s="reportNewList"><list><l>X</l><l>10</l></list></block><block s="reportNewList"><list><l>L</l><l>50</l></list></block><block s="reportNewList"><list><l>C</l><l>100</l></list></block><block s="reportNewList"><list><l>D</l><l>500</l></list></block><block s="reportNewList"><list><l>M</l><l>1000</l></list></block></list></block></block><block s="doSetVar"><l>output</l><l></l></block><block s="doUntil"><block s="reportEquals"><block var="number"/><l>0</l></block><script><block s="doDeclareVariables"><list><l>symbol</l><l>higher</l></list></block><block s="doSetVar"><l>symbol</l><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportEquals"><block var="index"/><block s="reportListAttribute"><l><option>length</option></l><block var="symbols"/></block></block><block s="reportAnd"><block s="reportLessThanOrEquals"><block s="reportListItem"><l>2</l><block var="value"/></block><block var="number"/></block><block s="reportGreaterThan"><block s="reportListItem"><l>2</l><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="symbols"/></block></block><block var="number"/></block></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="symbols"/></block></block><block s="doSetVar"><l>higher</l><block s="reportListItem"><block s="reportSum"><block s="reportListIndex"><block var="symbol"/><block var="symbols"/></block><l>1</l></block><block var="symbols"/></block></block><block s="doIf"><block var="higher"/><script><block s="doFor"><l>i</l><l>1</l><block s="reportListIndex"><block var="symbol"/><block var="symbols"/></block><script><block s="doIf"><block var="higher"/><script><block s="doDeclareVariables"><list><l>sn</l><l>hn</l></list></block><block s="doSetVar"><l>sn</l><block s="reportListItem"><l>2</l><block s="reportListItem"><block var="i"/><block var="symbols"/></block></block></block><block s="doSetVar"><l>hn</l><block s="reportListItem"><l>2</l><block var="higher"/></block></block><block s="doIf"><block s="reportAnd"><block s="reportNotEquals"><block s="reportDifference"><block var="hn"/><block var="sn"/></block><block var="sn"/></block><block s="reportEquals"><block s="reportDifference"><block var="hn"/><block var="sn"/></block><block s="reportProduct"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="number"/><block var="sn"/></block></block><block var="sn"/></block></block></block><script><block s="doSetVar"><l>output</l><block s="reportJoinWords"><list><block var="output"/><block s="reportListItem"><l>1</l><block s="reportListItem"><block var="i"/><block var="symbols"/></block></block><block s="reportListItem"><l>1</l><block var="higher"/></block></list></block></block><block s="doChangeVar"><l>number</l><block s="reportDifference"><l></l><block s="reportProduct"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="number"/><block var="sn"/></block></block><block var="sn"/></block></block></block><block s="doSetVar"><l>higher</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>i</l><block s="reportSum"><block s="reportListAttribute"><l><option>length</option></l><block var="symbols"/></block><l>1</l></block></block></script></block></script></block></script></block></script></block><block s="doIf"><block s="reportNotEquals"><block var="higher"/><block s="reportBoolean"><l><bool>false</bool></l></block></block><script><block s="doSetVar"><l>output</l><block s="reportJoinWords"><list><block var="output"/><block s="reportListItem"><l>1</l><block var="symbol"/></block></list></block></block><block s="doChangeVar"><l>number</l><block s="reportDifference"><l></l><block s="reportListItem"><l>2</l><block var="symbol"/></block></block></block></script></block></script></block><block s="doReport"><block var="output"/></block></script></block></script></block-definition><block-definition s="reverse string %&apos;string&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">world</input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l></l></list></block></block></script></block-definition><block-definition s="scramble string %&apos;str&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s">world</input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportTextSplit"><block var="str"/><l><option>letter</option></l></block><block s="reifyReporter"><autolambda><block s="reportIfElse"><custom-block s="%n % chance true"><l>50</l></custom-block><block s="reportJoinWords"><list><block var="#2"/><block var="#1"/></list></block><block s="reportJoinWords"><list><block var="#1"/><block var="#2"/></list></block></block></autolambda><list><l>#1</l><l>#2</l></list></block></block></block></script></block-definition><block-definition s="%&apos;c&apos; % chance true" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">50</input></inputs><script><block s="doReport"><block s="reportLessThanOrEquals"><block s="reportRandom"><l>1</l><l>100</l></block><block var="c"/></block></block></script></block-definition><block-definition s="shuffle %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCombine"><block var="data"/><block s="reifyReporter"><autolambda><block s="reportListAttribute"><l><option>flatten</option></l><block s="reportIfElse"><block s="reportNot"><block s="reportRandom"><l>0</l><l>1</l></block></block><block s="reportNewList"><list><block var="#2"/><block var="#1"/></list></block><block s="reportNewList"><list><block var="#1"/><block var="#2"/></list></block></block></block></autolambda><list><l>#1</l><l>#2</l></list></block></block></block></script></block-definition><block-definition s="for %&apos;index&apos; %&apos;value&apos; in %&apos;data&apos; %&apos;function&apos;" type="command" category="lists"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%ca"></input></inputs><script><block s="doForEach"><l>item</l><block var="data"/><script><block s="doSetVar"><l>value</l><block var="item"/></block><block s="doChangeVar"><l>index</l><l>1</l></block><block s="doRun"><block var="function"/><list></list></block></script></block></script></block-definition><block-definition s="snap! user stats" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportTextSplit"><block s="reportURL"><l>snap.berkeley.edu/api/v1/users/c</l></block><l><option>json</option></l></block></block></script></block-definition><block-definition s="set %&apos;which&apos; to %&apos;data&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">title<options>title&#xD;location</options></input><input type="%s">Snap!</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>which</l><l>data</l></list><l>switch (which) {&#xD;case &apos;title&apos;:&#xD;document.title = data;&#xD;break;&#xD;case &apos;location&apos;:&#xD;location.href = data;&#xD;break;&#xD;}</l></block><list><block var="which"/><block var="data"/></list></block></script></block-definition><block-definition s="%&apos;percentage&apos; % of %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportProduct"><block s="reportQuotient"><block var="percentage"/><l>100</l></block><block var="num"/></block></block></script></block-definition><block-definition s="% of %&apos;percentage&apos; in %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportProduct"><block s="reportQuotient"><block var="percentage"/><block var="num"/></block><l>100</l></block></block></script></block-definition><block-definition s="split %&apos;text&apos; by sentence" type="reporter" category="operators"><header></header><code></code><translations>el:χώρισε το _ ως προς την φράση&#xD;de:trenne _ nach Satz&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="text"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="split %s by sentence"><l></l></custom-block></autolambda><list></list></block><block var="text"/></block></block></script></block><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l><l>b</l><l>d</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>b</l><l></l></block><block s="doSetVar"><l>d</l><l></l></block><block s="doForEach"><l>item</l><block s="reportTextSplit"><block var="text"/><l><option>word</option></l></block><script><block s="doSetVar"><l>b</l><block s="reportJoinWords"><list><block var="b"/><l> </l><block var="item"/></list></block></block><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>.</l><l>!</l><l>?</l></list></block><block s="reportLetter"><l><option>last</option></l><block var="item"/></block></block><script><block s="doAddToList"><block s="reportJoinWords"><block s="reportCDR"><block s="reportTextSplit"><block var="b"/><l><option>letter</option></l></block></block></block><block var="result"/></block><block s="doSetVar"><l>b</l><block var="d"/></block></script></block></script></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="pause %&apos;which&apos; $pause-1-255-220-0" type="command" category="control"><comment x="0" y="0" w="98" collapsed="false">Pause a selected range of processes.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">all<options>all&#xD;this script&#xD;all but this script</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>this script</l></block><script><block s="doRun"><block s="reportJSFunction"><list><l>proc</l></list><l>proc.isPaused = true;</l></block><list></list></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>all but this script</l></block><script><block s="doRun"><block s="reportJSFunction"><list><l>x</l></list><l>var procs = world.children[0].stage.threads.processes;&#xD;if (procs.length &lt; 1) return;&#xD;x.pauseShieldFlag = null;&#xD;procs.forEach(&#xD;function (proc) {&#xD;if (!("pauseShieldFlag" in proc)){&#xD;proc.pause();&#xD;}})&#xD;delete x.pauseShieldFlag;</l></block><list></list></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>all</l></block><script><block s="doPauseAll"></block></script><script></script></block></script></block></script></block></script></block-definition><block-definition s="unpause all $pointRight-1-255-220-0" type="command" category="control"><comment x="0" y="0" w="90" collapsed="false">Unpause each paused process.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>world.children[0].stage.threads.processes.forEach(&#xD;function (proc) {&#xD;proc.isPaused = false;&#xD;})</l></block><list></list></block></script></block-definition><block-definition s="color with RGBA %&apos;RGBA&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l">0</input></inputs><script><block s="doReport"><custom-block s="color with RGBA %n %n %n %n"><block s="reportListItem"><l>1</l><block var="RGBA"/></block><block s="reportListItem"><l>2</l><block var="RGBA"/></block><block s="reportListItem"><l>3</l><block var="RGBA"/></block><block s="reportListItem"><l>4</l><block var="RGBA"/></block></custom-block></block></script></block-definition><block-definition s="costume %&apos;costume&apos; $arrowRight color" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>§_costumesMenu</options></input></inputs><script><block s="doDeclareVariables"><list><l>function</l></list></block><block s="doSetVar"><l>function</l><block s="reportListItem"><l><option>any</option></l><block s="reportIfElse"><block s="reportIsA"><block var="costume"/><l><option>list</option></l></block><block var="costume"/><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block></block></block><block s="doReport"><custom-block s="color with RGBA %l"><block s="reportConcatenatedLists"><list><custom-block s="all but last of %l"><block var="function"/></custom-block><block s="reportProduct"><block s="reportQuotient"><block s="reportListItem"><l><option>last</option></l><block var="costume"/></block><l>255</l></block><l>100</l></block></list></block></custom-block></block></script></block-definition><block-definition s="layer #" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportListIndex"><block s="reportGet"><l><option>self</option></l></block><block s="evaluate"><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><l>Stage</l></block><list></list></block></block></block></script></block-definition><block-definition s="mix colors %&apos;colors&apos; evenly" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%mult%n"></input></inputs><script><block s="doReport"><custom-block s="color with RGBA %l"><custom-block s="average %mult%n"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="%s of color %n"><l>RGBA</l><l></l></custom-block></autolambda><list></list></block><block var="colors"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="delete all clones of %&apos;which&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>all sprites&#xD;this sprite</options></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>item</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportAskFor"><l></l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>temporary?</option></l></block></autolambda><list></list></block><list></list></block></autolambda><list></list></block><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>all sprites</l></block><block s="reportAskFor"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><list></list></block><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>this sprite</l></block><block s="reportGet"><l><option>clones</option></l></block><l></l></block></block></block><script><block s="doTellTo"><block var="item"/><block s="reifyScript"><script><block s="removeClone"></block></script><list></list></block><list></list></block></script></block></script></block></script></block-definition><block-definition s="$flash deep map %&apos;fun&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="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><custom-block s="deep map %repRing over %l"><block var="fun"/><l/></custom-block><block s="evaluate"><block var="fun"/><list><l></l></list></block></block></autolambda><list></list></block><block var="data"/></block></block></script></block-definition><block-definition s="analog time" 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>var date = new Date();&#xD;return String(date.getHours() &gt; 12?&#xD;date.getHours() - 12:date.getHours())&#xD;+ &apos;:&apos; + ((date.getMinutes().toString()&#xD;.length == 1)? &apos;0&apos; + date.getMinutes()&#xD;: date.getMinutes()) + &apos; &apos; +&#xD;String(date.getHours() &gt; 12? &apos;PM&apos;:&apos;AM&apos;)</l></block><list></list></block></block></script></block-definition><block-definition s="stage image" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return new Costume(world.children[0].stage.fullImage());</l></block><list></list></block></block></script></block-definition><block-definition s="all %&apos;which&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="227.9876302083336" collapsed="false">Sprites: All the sprites (not including the stage).&#xD;Clones: Every clone from every sprite.&#xD;Objects: Both sprites and clones.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">sprites<options>sprites&#xD;clones&#xD;objects</options></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>sprites</l></block><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportAskFor"><l></l><block s="reifyReporter"><autolambda><block s="reportEquals"><block s="reportGet"><l><option>parent</option></l></block><l></l></block></autolambda><list></list></block><list></list></block></autolambda><list></list></block><block s="reportAskFor"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><list></list></block></block><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>clones</l></block><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAskFor"><l></l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>clones</option></l></block></autolambda><list></list></block><list></list></block></autolambda><list></list></block><custom-block s="all %s"><l>sprites</l></custom-block></block></block><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>objects</l></block><block s="reportConcatenatedLists"><list><custom-block s="all %s"><l>sprites</l></custom-block><custom-block s="all %s"><l>clones</l></custom-block></list></block><block s="reportNewList"><list></list></block></block></block></block></block></script></block-definition><block-definition s="set cookie %&apos;key&apos; %&apos;value&apos; $nl $- expires in %&apos;exp&apos; days" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">score</input><input type="%s"></input><input type="%n">365</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>cn</l><l>cv</l><l>ex</l><l>proc</l></list><l>var type = proc.reportTypeOf(cv);&#xD;if (!([&apos;text&apos;,&apos;number&apos;].includes(type)))&#xD;throw new Error(&apos;expecting text/number but getting &apos; + type);&#xD;var d = new Date();&#xD;d.setTime(d.getTime() + (ex*24*60*60*1000));&#xD;var expires = "expires="+ d.toUTCString();&#xD;document.cookie = cn + "=" + cv + ";" + expires + ";path=/";</l></block><list><block var="key"/><block var="value"/><block var="exp"/></list></block></script></block-definition><block-definition s="get cookie %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">score</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>cn</l><l>a</l></list><l>  var name = cn + "=";&#xD;  var decodedCookie = decodeURIComponent(document.cookie);&#xD;  var ca = decodedCookie.split(&apos;;&apos;);&#xD;  for(var i = 0; i &lt;ca.length; i++) {&#xD;    var c = ca[i];&#xD;    while (c.charAt(0) == &apos; &apos;) {&#xD;      c = c.substring(1);&#xD;    }&#xD;    if (c.indexOf(name) == 0) {&#xD;      return c.substring(name.length, c.length);&#xD;    }&#xD;  }&#xD;   throw new Error(a);</l></block><list><block var="name"/><block s="reportJoinWords"><list><l>the cookie "</l><block var="name"/><l>" does not exist</l></list></block></list></block></block></script></block-definition><block-definition s="cookie %&apos;name&apos; exists?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">score</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>cn</l></list><l>    return document.cookie.split(&apos;;&apos;).some(c =&gt; {&#xD;        return c.trim().startsWith(cn + &apos;=&apos;)});</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="delete cookie %&apos;name&apos;" type="command" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%s">score</input></inputs><script><block s="doIfElse"><custom-block s="cookie %s exists?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>cn</l></list><l>document.cookie = cn +&apos;=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;&apos;;</l></block><list><block var="name"/></list></block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>the cookie </l><block var="name"/><l> does not exist</l></list></block></custom-block></script></block></script></block-definition><block-definition s="all but last of %&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="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block var="list"/></block></block></block></block></script></block-definition><block-definition s="all but %&apos;which&apos; of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n">first<options>first&#xD;last</options></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>which</l><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>first</l></block><l>1</l><block s="reportIfElse"><block s="reportEquals"><block var="which"/><l>last</l></block><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><block var="which"/></block></block></block><block s="doReport"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNotEquals"><block var="index"/><block var="which"/></block></autolambda><list><l>value</l><l>index</l></list></block><block var="list"/></block></block></script></block-definition><block-definition s="object keys of %&apos;block&apos; as list" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return new List(Object.keys(a.expression));</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="keys pressed" 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>if (!world.repairedKeys){&#xD;StageMorph.prototype.removePressedKey = function(key) {&#xD;   if(key == "Control"){&#xD;     delete this.keysPressed["control"];&#xD;     key = "ctrl";&#xD;   }&#xD;    key = key.toLowerCase();&#xD;     Object.keys(this.keysPressed).forEach(this_key =&gt; {&#xD;        if ((this_key == key) || this_key.split(" ").includes(key)){&#xD;          delete this.keysPressed[this_key.toLowerCase()];&#xD;   }&#xD;  })&#xD;};&#xD;world.repairedKeys = true;&#xD;}&#xD;return new List(Object.keys(world.children[0].stage.keysPressed));</l></block><list></list></block></block></script></block-definition><block-definition s="write as typed $keyboardFilled" type="command" category="pen"><variables><list struct="atomic" id="17249">CAPS?,Saved</list></variables><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>key</l></list></block><block s="doSetVar"><l>key</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportKeyPressed"><l></l></block></autolambda><list></list></block><block s="reportConcatenatedLists"><list><block s="reportUnicodeAsLetter"><block s="reportNumbers"><block s="reportUnicode"><l>a</l></block><block s="reportUnicode"><l>z</l></block></block></block><block s="reportNumbers"><l>0</l><l>9</l></block><block s="reportNewList"><list><l>`</l><l>&#126;</l><l>!</l><l>@</l><l>#</l><l>$</l><l>%</l><l>^</l><l>&amp;</l><l>*</l><l>(</l><l>)</l><l>-</l><l>_</l><l>=</l><l>+</l><l>[</l><l>]</l><l>{</l><l>}</l><l>;</l><l>:</l><l>&apos;</l><l>"</l><l>,</l><l>.</l><l>&lt;</l><l>&gt;</l><l>/</l><l>?</l><l>space</l><l>enter</l></list></block></list></block></block></block><block s="doIfElse"><block s="reportEquals"><block var="key"/><l>space</l></block><script><block s="write"><l> </l><l>24</l></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="key"/><l>enter</l></block><script><block s="changeYPosition"><l>-30</l></block><block s="setXPosition"><l>-230</l></block></script><script><block s="doIfElse"><block s="reportKeyPressed"><block s="reportJoinWords"><list><l>tab</l></list></block></block><script><block s="doSetVar"><l>CAPS?</l><block s="reportNot"><block var="CAPS?"/></block></block></script><script><block s="doIf"><block s="reportKeyPressed"><block s="reportJoinWords"><list><l>shift</l></list></block></block><script><block s="fork"><block s="reifyScript"><script><block s="doSetVar"><l>CAPS?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doWaitUntil"><block s="reportNot"><block s="reportKeyPressed"><block s="reportJoinWords"><list><l>shift</l></list></block></block></block></block><block s="doIf"><block s="reportNot"><block s="reportKeyPressed"><block s="reportJoinWords"><list><l>shift</l></list></block></block></block><script><block s="doSetVar"><l>CAPS?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block></script><list></list></block><list></list></block></script></block><block s="doIfElse"><block s="reportAnd"><block s="reportAnd"><block s="reportLessThanOrEquals"><l>97</l><block s="reportUnicode"><block var="key"/></block></block><block s="reportLessThanOrEquals"><block s="reportUnicode"><block var="key"/></block><l>122</l></block></block><block var="CAPS?"/></block><script><block s="write"><block s="reportUnicodeAsLetter"><block s="reportDifference"><block s="reportUnicode"><block var="key"/></block><l>32</l></block></block><l>24</l></block></script><script><block s="write"><block var="key"/><l>24</l></block></script></block></script></block></script></block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="xPosition"></block><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><l>Stage</l></block><l>10</l></block></block><script><block s="changeYPosition"><l>-30</l></block><block s="setXPosition"><block s="reportDifference"><l>0</l><block s="reportDifference"><block s="reportAttributeOf"><l><option>right</option></l><l>Stage</l></block><l>10</l></block></block></block></script></block></script></block-definition><block-definition s="tell all clones of this sprite to %&apos;which&apos; %&apos;inputs&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input><input type="%inputs"></input></inputs><script><block s="doRun"><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><script><block s="doTellTo"><l></l><block var="which"/><block var="inputs"/></block><block s="doReport"><l></l></block></script><list></list></block><block s="reportGet"><l><option>clones</option></l></block></block></autolambda><list></list></block><list></list></block></script></block-definition><block-definition s="key" type="reporter" category="motion"><comment x="0" y="0" w="90" collapsed="false">move with arrow  keys/WASD</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><block s="reportKeyPressed"><l><option>w</option></l></block></block><block s="reifyScript"><script><block s="changeYPosition"><block var="speed"/></block></script><list><l>speed</l></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><block s="reportKeyPressed"><l><option>s</option></l></block></block><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><l>0</l><block var="speed"/></block></block></script><list><l>speed</l></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>right arrow</option></l></block><block s="reportKeyPressed"><l><option>d</option></l></block></block><block s="reifyScript"><script><block s="changeXPosition"><block var="speed"/></block></script><list><l>speed</l></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>left arrow</option></l></block><block s="reportKeyPressed"><l><option>a</option></l></block></block><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><l>0</l><block var="speed"/></block></block></script><list><l>speed</l></list></block><block s="reifyScript"><script></script><list></list></block></block></block></block></block></block></script></block-definition><block-definition s="reversed key" type="reporter" category="motion"><comment x="0" y="0" w="90" collapsed="false">move backward with arrow  keys/WASD</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>down arrow</option></l></block><block s="reportKeyPressed"><l><option>s</option></l></block></block><block s="reifyScript"><script><block s="changeYPosition"><block var="speed"/></block></script><list><l>speed</l></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>up arrow</option></l></block><block s="reportKeyPressed"><l><option>w</option></l></block></block><block s="reifyScript"><script><block s="changeYPosition"><block s="reportDifference"><l>0</l><block var="speed"/></block></block></script><list><l>speed</l></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>left arrow</option></l></block><block s="reportKeyPressed"><l><option>a</option></l></block></block><block s="reifyScript"><script><block s="changeXPosition"><block var="speed"/></block></script><list><l>speed</l></list></block><block s="reportIfElse"><block s="reportOr"><block s="reportKeyPressed"><l><option>right arrow</option></l></block><block s="reportKeyPressed"><l><option>d</option></l></block></block><block s="reifyScript"><script><block s="changeXPosition"><block s="reportDifference"><l>0</l><block var="speed"/></block></block></script><list><l>speed</l></list></block><block s="reifyScript"><script></script><list></list></block></block></block></block></block></block></script></block-definition><block-definition s="bounce" type="reporter" category="sound"><variables><list struct="atomic" id="17685">samples</list></variables><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="samples"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>samples</l><block s="reportNewList"><list></list></block></block><block s="doWarp"><script><block s="doFor"><l>k</l><l>100</l><l>0</l><script><block s="doFor"><l>i</l><block s="reportMonadic"><l><option>neg</option></l><block var="k"/></block><block var="k"/><script><block s="doAddToList"><block s="reportQuotient"><block var="i"/><l>100</l></block><block var="samples"/></block></script></block></script></block></script></block></script></block><block s="doReport"><block s="reportNewSoundFromSamples"><block var="samples"/><block s="reportGetSoundAttribute"><l><option>sample rate</option></l><block var="samples"/></block></block></block></script></block-definition><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="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><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="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportJoinWords"><list><l> </l><block s="evaluate"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></autolambda><list></list></block><list></list></block></list></block></list></block></block></script></block></script></block-definition><block-definition s="list $arrowRight sentence %&apos;data&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="combine with %repRing items of %l"><block s="reifyReporter"><autolambda><custom-block s="join words %mult%txt"><list><l></l><l></l></list></custom-block></autolambda><list></list></block><block var="data"/></custom-block></block></script></block></script></block-definition><block-definition s="sentence $arrowRight list %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="text"/><l><option>whitespace</option></l></block></block></script></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="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="word $arrowRight list %&apos;word&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></block></script></block></script></block-definition><block-definition s="inner product helper with %&apos;plus&apos; . %&apos;times&apos; %&apos;a&apos; $nl transposed %&apos;tb&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%repRing"></input><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="a"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="a"/></block></block><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportCONS"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="generalized dotproduct %l %l with sum %repRing product %repRing"><block s="reportListItem"><l>1</l><block var="a"/></block><l/><block var="plus"/><block var="times"/></custom-block></autolambda><list></list></block><block var="tb"/></block><custom-block s="inner product helper with %repRing . %repRing %l %br transposed %l"><block var="plus"/><block var="times"/><block s="reportCDR"><block var="a"/></block><block var="tb"/></custom-block></block></block></script></block><block s="doReport"><block s="reportCONS"><custom-block s="inner product helper with %repRing . %repRing %l %br transposed %l"><block var="plus"/><block var="times"/><block s="reportListItem"><l>1</l><block var="a"/></block><block var="tb"/></custom-block><custom-block s="inner product helper with %repRing . %repRing %l %br transposed %l"><block var="plus"/><block var="times"/><block s="reportCDR"><block var="a"/></block><block var="tb"/></custom-block></block></block></script></block-definition><block-definition s="simple log base %&apos;b&apos; of %&apos;n&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><block s="reportMonadic"><l><option>ln</option></l><block var="n"/></block><block s="reportMonadic"><l><option>ln</option></l><block var="b"/></block></block></block></script></block-definition><block-definition s="simple permutations of %&apos;r&apos; items out of %&apos;n&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="r"/><l>0</l></block><l>1</l><block s="reportAtomicCombine"><block s="reportNumbers"><block s="reportSum"><block s="reportDifference"><block var="n"/><block var="r"/></block><l>1</l></block><block var="n"/></block><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block></block></block></script></block-definition><block-definition s="simple combs %&apos;r&apos; out of %&apos;n&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><custom-block s="simple permutations of %n items out of %n"><block var="r"/><block var="n"/></custom-block><custom-block s="factorial $!-1-255-255-0 %n"><block var="r"/></custom-block></block></block></script></block-definition><block-definition s="numbers from %&apos;from&apos; to %&apos;to&apos; ascending" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><custom-block s="simple numbers from %n to %n ascending"><l></l><l></l></custom-block></autolambda><list></list></block></custom-block><list><block var="from"/><block var="to"/></list></block></block></script></block-definition><block-definition s="simple gcd %&apos;a&apos; %&apos;b&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="b"/><l>0</l></block><script><block s="doReport"><block var="a"/></block></script></block><block s="doReport"><custom-block s="simple gcd %n %n"><block var="b"/><block s="reportModulus"><block var="a"/><block var="b"/></block></custom-block></block></script></block-definition><block-definition s="de-boolean %&apos;n&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="n"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="de-boolean %s"><l></l></custom-block></autolambda><list></list></block><block var="n"/></block></block></script><script><block s="doReport"><block s="reportIfElse"><custom-block s="zero? %n"><block var="n"/></custom-block><l>0</l><block s="reportIfElse"><block s="reportEquals"><block var="n"/><block s="reportBoolean"><l><bool>true</bool></l></block></block><l>1</l><block var="n"/></block></block></block></script></block></script></block-definition><block-definition s="simple lcm %&apos;a&apos; %&apos;b&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="b"/><l>0</l></block><script><block s="doReport"><block var="b"/></block></script></block><block s="doReport"><block s="reportProduct"><block var="a"/><block s="reportQuotient"><block var="b"/><custom-block s="simple gcd %n %n"><block var="a"/><block var="b"/></custom-block></block></block></block></script></block-definition><block-definition s="simple numbers from %&apos;from&apos; to %&apos;to&apos; ascending" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportGreaterThan"><block var="from"/><block var="to"/></block><block s="reportNewList"><list></list></block><block s="reportNumbers"><block var="from"/><block var="to"/></block></block></block></script></block-definition><block-definition s="$flash sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="lists"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;</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="function"/></list></block></block></script><scripts><script x="12" y="147.55555555555554"><block s="doDeclareVariables"><list><l>even items</l><l>odd items</l><l>merge</l><l>split</l><l>copy of data</l><l>id</l></list></block><block s="doSetVar"><l>id</l><block s="reifyScript"><script><block s="doReport"><l></l></block></script><list></list></block></block><block s="doSetVar"><l>copy of data</l><block s="reportMap"><block var="id"/><block var="data"/></block></block><block s="doSetVar"><l>split</l><block s="reifyScript"><script><block s="doSetVar"><l>even items</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>odd items</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportListIsEmpty"><block var="copy of data"/></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="copy of data"/></block><block var="odd items"/></block><block s="doDeleteFromList"><l>1</l><block var="copy of data"/></block><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block var="copy of data"/></block></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="copy of data"/></block><block var="even items"/></block><block s="doDeleteFromList"><l>1</l><block var="copy of data"/></block></script></block></script></block></script><list></list></block></block><block s="doSetVar"><l>merge</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="#1"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#2"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="#2"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#1"/></block></script></block><block s="doIfElse"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="reportListItem"><l>1</l><block var="#2"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="evaluate"><block var="merge"/><list><block s="reportCDR"><block var="#1"/></block><block var="#2"/></list></block></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#2"/></block><block s="evaluate"><block var="merge"/><list><block var="#1"/><block s="reportCDR"><block var="#2"/></block></list></block></block></block></script></block></script><list><l>#1</l><l>#2</l></list></block></block><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doRun"><block var="split"/><list></list></block><block s="doReport"><block s="evaluate"><block var="merge"/><list><custom-block s="$flash sort %l ordering with %predRing"><block var="odd items"/><block var="function"/></custom-block><custom-block s="$flash sort %l ordering with %predRing"><block var="even items"/><block var="function"/></custom-block></list></block></block></script></scripts></block-definition><block-definition s="☠︎ linked? %&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="evaluate"><block s="reportJSFunction"><list><l>data</l></list><l>return data.isLinked;</l></block><list><block var="data"/></list></block></block></script></block-definition><block-definition s="☠︎ link %&apos;data&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="data"/></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="data"/></block><block s="reportCDR"><block var="data"/></block></block></block></script></block-definition><block-definition s="multimap %&apos;function&apos; over %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="267.3333333333333" collapsed="false">Takes as input a function of N inputs and N lists.&#xD;The function is called with item 1 of all the lists as its inputs, with item 2 of all the lists as its inputs, and so on.  (The lists should all be the same length.)</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="function"/><custom-block s="%s"><l></l></custom-block></block></autolambda><list></list></block><block s="reportListAttribute"><l><option>columns</option></l><block var="lists"/></block></block></block></script></block-definition><block-definition s="permutations of %&apos;r&apos; items out of %&apos;n&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><custom-block s="simple permutations of %n items out of %n"><l></l><l></l></custom-block></autolambda><list></list></block></custom-block><list><block var="r"/><block var="n"/></list></block></block></script></block-definition><block-definition s="deep map %&apos;function&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="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><custom-block s="deep map %repRing over %l"><block var="fun"/><l/></custom-block><block s="evaluate"><block var="fun"/><list><l></l></list></block></block></autolambda><list></list></block><block var="data"/></block></block></script></block-definition><block-definition s="%&apos;s&apos; digits of PI" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">reports a JS string so you see all the didgits.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThanOrEquals"><block var="s"/><l>0</l></block><block s="reportSum"><l>3</l><l>0</l></block><block s="reportIfElse"><block s="reportNotEquals"><block s="reportModulus"><block var="s"/><l>1</l></block><l>0</l></block><custom-block s="%n digits of PI"><block s="reportRound"><block var="s"/></block></custom-block><block s="evaluate"><block s="reportJSFunction"><list><l>digits</l></list><l>let i = 1n;&#xD;let x = 3n * (10n ** (BigInt(digits)+20n));&#xD;let pi = x;&#xD;while (x &gt; 0) {&#xD;        x = x * i / ((i + 1n) * 4n);&#xD;        pi += x / (i + 2n);&#xD;        i += 2n;&#xD;}&#xD;return "3."+((pi / (10n ** 20n)).toString().slice(1));</l></block><list><block var="s"/></list></block></block></block></block></script></block-definition><block-definition s="sum %&apos;nums&apos;" type="reporter" category="operators"><comment x="0" y="0" w="202" collapsed="false">Takes any number of numbers as inputs (use the left and right arrowheads to adjust the number of input slots) and reports the result of adding them all, so&#xD;(SUM (4) (100) (8))&#xD;reports 112.</comment><header></header><code></code><translations>pt:a soma de _&#xD;</translations><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="nums"/></block><script><block s="doReport"><l>0</l></block></script></block><block s="doReport"><block s="reportSum"><block s="reportListItem"><l>1</l><block var="nums"/></block><custom-block s="sum %mult%n"><block s="reportCDR"><block var="nums"/></block></custom-block></block></block></script></block-definition><block-definition s="product %&apos;nums&apos;" type="reporter" category="operators"><comment x="0" y="0" w="205" collapsed="false">Takes any number of numbers as inputs (use the left and right arrowheads to adjust the number of input slots) and reports the result of multiplying them all, so&#xD;(PRODUCT (4) (100) (8))&#xD;reports 3200.</comment><header></header><code></code><translations>pt:o produto de _&#xD;</translations><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="nums"/></block><script><block s="doReport"><l>1</l></block></script></block><block s="doReport"><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="nums"/></block><custom-block s="product %mult%n"><block s="reportCDR"><block var="nums"/></block></custom-block></block></block></script></block-definition><block-definition s="all of %&apos;preds&apos;" type="predicate" category="operators"><comment x="0" y="0" w="248" collapsed="false">Takes any number of Boolean (true/false) inputs (use the left and right arrowheads to adjust the number of input slots) and reports TRUE only if all of the inputs are TRUE, otherwise FALSE.  Like AND but for multiple inputs.</comment><header></header><code></code><translations>pt:todas as afirmações _ são verdadeiras&#xD;</translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="preds"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doReport"><block s="reportAnd"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="preds"/></block><list></list></block><custom-block s="all of %mult%boolUE"><block s="reportCDR"><block var="preds"/></block></custom-block></block></block></script></block-definition><block-definition s="any of %&apos;preds&apos;" type="predicate" category="operators"><comment x="0" y="0" w="240" collapsed="false">Takes any number of Boolean (true/false) inputs (use the left and right arrowheads to adjust the number of input slots) and reports TRUE if at least one input is TRUE, otherwise FALSE.</comment><header></header><code></code><translations>pt:alguma das afirmações _ é verdadeira&#xD;</translations><inputs><input type="%mult%boolUE"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="preds"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doReport"><block s="reportOr"><block s="evaluate"><block s="reportListItem"><l>1</l><block var="preds"/></block><list></list></block><custom-block s="any of %mult%boolUE"><block s="reportCDR"><block var="preds"/></block></custom-block></block></block></script></block-definition><block-definition s="minimum %&apos;nums&apos;" type="reporter" category="operators"><comment x="0" y="0" w="205" collapsed="false">Takes any number of numbers as inputs (use the left and right arrowheads to adjust the number of input slots) and reports the smallest of them, so&#xD;(MINIMUM (4) (100) (8))&#xD;reports 4.</comment><header></header><code></code><translations>pt:o produto de _&#xD;</translations><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="nums"/></block><script><block s="doReport"><block s="reportQuotient"><l>1</l><l>0</l></block></block></script></block><block s="doReport"><block s="reportMin"><block s="reportListItem"><l>1</l><block var="nums"/></block><custom-block s="minimum %mult%n"><block s="reportCDR"><block var="nums"/></block></custom-block></block></block></script></block-definition><block-definition s="maximum %&apos;nums&apos;" type="reporter" category="operators"><comment x="0" y="0" w="205" collapsed="false">Takes any number of numbers as inputs (use the left and right arrowheads to adjust the number of input slots) and reports the largest of them, so&#xD;(MAXIMUM (4) (100) (8))&#xD;reports 100.</comment><header></header><code></code><translations>pt:o produto de _&#xD;</translations><inputs><input type="%mult%n"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="nums"/></block><script><block s="doReport"><block s="reportQuotient"><l>-1</l><l>0</l></block></block></script></block><block s="doReport"><block s="reportMax"><block s="reportListItem"><l>1</l><block var="nums"/></block><custom-block s="maximum %mult%n"><block s="reportCDR"><block var="nums"/></block></custom-block></block></block></script></block-definition><block-definition s="%&apos;thing&apos; as string" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>return a.toString();</l></block><list><block var="thing"/></list></block></block></script></block-definition><block-definition s="factors of %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="num"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><block s="reportNewList"><list><l></l></list></block></list></block><custom-block s="factors of %n"><l></l></custom-block></list></block></autolambda><list></list></block><block var="num"/></block><block s="reportConcatenatedLists"><list><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportModulus"><block var="num"/><l></l></block><l>0</l></block></autolambda><list></list></block><block s="reportNumbers"><block s="reportMonadic"><l><option>sign</option></l><block var="num"/></block><block s="reportQuotient"><block var="num"/><l>2</l></block></block></block><block s="reportIfElse"><block s="reportEquals"><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block><l>1</l></block><block s="reportNewList"><list></list></block><block s="reportNewList"><list><block var="num"/></list></block></block></list></block></block></block></script></block-definition><block-definition s="%&apos;value&apos; changed?" type="predicate" category="operators"><variables><list struct="atomic" id="19073">old,count</list></variables><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportAnd"><block s="reportNotEquals"><block var="old"/><block var="value"/></block><block s="reportGreaterThan"><block var="count"/><l>0</l></block></block><script><block s="doSetVar"><l>old</l><block var="value"/></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doSetVar"><l>count</l><l>1</l></block><block s="doSetVar"><l>old</l><block var="value"/></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="shape with %&apos;sides&apos; sides, color %&apos;color&apos; , size %&apos;size&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>position</l></list></block><block s="doSetVar"><l>position</l><block s="reportNewList"><list><block s="getPenDown"></block><block s="xPosition"></block><block s="yPosition"></block><custom-block s="pen color"></custom-block><block s="direction"></block></list></block></block><block s="down"></block><block s="doWarp"><script><custom-block s="set pen color to %n"><block var="color"/></custom-block><block s="doRepeat"><block var="sides"/><script><block s="forward"><block var="size"/></block><block s="turn"><block s="reportQuotient"><l>360</l><block var="sides"/></block></block></script></block></script></block><block s="up"></block><block s="doGotoObject"><custom-block s="all but last of %l"><custom-block s="all but last of %l"><block s="reportCDR"><block var="position"/></block></custom-block></custom-block></block><block s="setHeading"><l>-90</l></block><block s="forward"><block s="reportQuotient"><block var="size"/><l>2</l></block></block><block s="setHeading"><l>180</l></block><block s="forward"><block s="reportQuotient"><block var="size"/><l>2</l></block></block><block s="floodFill"></block><block s="doIf"><block s="reportListItem"><l>1</l><block var="position"/></block><script><block s="down"></block></script></block><custom-block s="set pen color to %n"><block s="reportListItem"><l>4</l><block var="position"/></block></custom-block><block s="setHeading"><block s="reportListItem"><l><option>last</option></l><block var="position"/></block></block><block s="doGotoObject"><custom-block s="all but last of %l"><custom-block s="all but last of %l"><block s="reportCDR"><block var="position"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="simplify %&apos;a&apos; : %&apos;b&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>GCD</l></list></block><block s="doSetVar"><l>GCD</l><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportEquals"><block var="2"/><l>0</l></block><block var="1"/><block s="evaluate"><block var="GCD"/><list><block var="2"/><block s="reportModulus"><block var="1"/><block var="2"/></block></list></block></block></autolambda><list><l>1</l><l>2</l></list></block></block><block s="doSetVar"><l>GCD</l><block s="evaluate"><block var="GCD"/><list><block var="a"/><block var="b"/></list></block></block><block s="doReport"><block s="reportNewList"><list><block s="reportQuotient"><block var="a"/><block var="GCD"/></block><block s="reportQuotient"><block var="b"/><block var="GCD"/></block></list></block></block></script></block-definition><block-definition s="%&apos;num1&apos; in %&apos;num2&apos; chance" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><block s="reportNumbers"><l>1</l><block var="num1"/></block><block s="reportListItem"><block s="reportRandom"><l>1</l><block var="num2"/></block><block s="reportNumbers"><l>1</l><block var="num2"/></block></block></block></block></script></block-definition><block-definition s="set arrowhead sizes to %&apos;percent&apos; %" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>exp</l></list><l>MultiArgMorph.prototype.mouseClickLeft = function (pos) {&#xD;    var ide = this.parentThatIsA(IDE_Morph);&#xD;    if (!this.parentThatIsA(ScriptsMorph)) {&#xD;        this.escalateEvent(&apos;mouseClickLeft&apos;, pos);&#xD;        return;&#xD;    }&#xD;    // if the &lt;shift&gt; key is pressed, repeat action 3 times&#xD;    var target = this.selectForEdit(),&#xD;        arrows = target.arrows(),&#xD;        leftArrow = arrows.children[0],&#xD;        rightArrow = arrows.children[1],&#xD;        repetition = target.world().currentKey === 16 ? 3 : 1,&#xD;        i;&#xD;/*** Handling hitboxes ***/&#xD;    if (pos.x &gt;= rightArrow.bounds.origin.x) {&#xD;        for (i = 0; i &lt; repetition; i += 1) {&#xD;            if (rightArrow.isVisible) {&#xD;                target.addInput();&#xD;            }&#xD;        }&#xD;        if (ide) {&#xD;            ide.recordUnsavedChanges();&#xD;        }&#xD;    } else { &#xD;         if( pos.x &gt;= leftArrow.bounds.origin.x){&#xD;            for (i = 0; i &lt; repetition; i += 1) {&#xD;               if (leftArrow.isVisible) {&#xD;                  target.removeInput();&#xD;               }&#xD;            }&#xD;            if (ide) {&#xD;               ide.recordUnsavedChanges();&#xD;            }&#xD;		       } else{&#xD;            target.escalateEvent(&apos;mouseClickLeft&apos;, pos);&#xD;         }&#xD;   };&#xD;/*** Expanding arrows by exp ***/&#xD;   rightArrow.padding=0;&#xD;   leftArrow.padding=0;&#xD;   rightArrow.setSize( this.fontSize*exp);&#xD;   leftArrow.setSize( this.fontSize*exp);&#xD;   rightArrow.parent.padding=0;&#xD;   this.fixArrowsLayout();&#xD;   this.fixLayout();&#xD;};</l></block><list><block s="reportQuotient"><block var="percent"/><l>100</l></block></list></block></script></block-definition><block-definition s="embed %&apos;website&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><custom-block s="set %s to %s"><l>location</l><block s="reportJoinWords"><list><block var="website"/><l>/embed</l></list></block></custom-block></script></block-definition><block-definition s="FPS" 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>if (!window.FPSCount){&#xD;before=performance.now();&#xD;FPSCount=0;&#xD;requestAnimationFrame(&#xD;    function loop(){&#xD;        now=performance.now();&#xD;        FPSCount=Math.round(1000/(now-before));&#xD;        before=now;&#xD;        requestAnimationFrame(loop);&#xD;        &#xD;    }&#xD; );&#xD;}&#xD;return FPSCount;</l></block><list></list></block></block></script></block-definition><block-definition s="assoc %&apos;key&apos; %&apos;a-list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="289.3333333333333" collapsed="false">The second input is an &quot;association list,&quot; a list of two-item lists.  Each of those smaller lists has a &quot;key&quot; as its first item and a &quot;value&quot; as its second.  ASSOC reports the first key-value pair in the association list whose key matches the first input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="a-list"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="key"/><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="a-list"/></block></block></script></block><block s="doReport"><custom-block s="assoc %s %l"><block var="key"/><block s="reportCDR"><block var="a-list"/></block></custom-block></block></script></block-definition><block-definition s="Set Instrument To %&apos;instrument name&apos;" type="command" category="sound"><comment x="0" y="0" w="90" collapsed="false">Sets the global instrument used for playing notes to the selected instrument.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>acoustic guitar&#xD;electric guitar&#xD;piano&#xD;organ&#xD;banjo&#xD;electric bass (finger)&#xD;ukulele&#xD;cabasa&#xD;snare&#xD;bass drum&#xD;closed hi-hat&#xD;open hi-hat&#xD;mid tom&#xD;high tom&#xD;crash cymbal</options></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>setInstrument(</l><block var="instrument name"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Set Volume To %&apos;Percent&apos; %" type="command" category="sound"><comment x="0" y="0" w="403" collapsed="false">Sets the global volume percentage used when playing notes to the provided value. </comment><header></header><code></code><translations></translations><inputs><input type="%n">50</input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>setVolumePercent(</l><block var="Percent"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Set Volume of Instrument %&apos;Instrument&apos; to %&apos;VolumePercent&apos; %" type="command" category="sound"><comment x="0" y="0" w="243" collapsed="false">Sets the default volume percentage of the selected instrument to the specified number.</comment><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true"><options>acoustic guitar&#xD;electric guitar&#xD;piano&#xD;organ&#xD;banjo&#xD;electric bass (finger)&#xD;ukulele&#xD;cabasa&#xD;snare&#xD;bass drum&#xD;closed hi-hat&#xD;open hi-hat&#xD;mid tom&#xD;high tom&#xD;crash cymbal</options></input><input type="%n">50</input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>setVolumeOfInstrument(</l><block var="Instrument"/><l>,</l><block var="VolumePercent"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="%&apos;note duration&apos; Note Length" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportProduct"><block s="reportListItem"><l>2</l><custom-block s="assoc %s %l"><block var="note duration"/><custom-block s="Timing"></custom-block></custom-block></block><block s="reportQuotient"><l>60</l><block s="getTempo"></block></block></block></block></script></block-definition><block-definition s="Play %&apos;Note&apos; for %&apos;Note Length&apos; Note Length" type="command" category="sound"><comment x="0" y="0" w="714" collapsed="false">Starts to play the selected note for the specified number of seconds. A full list of acceptable notes can be found by using the dropdown. This block does not wait for the selected note to finish playing.</comment><header></header><code></code><translations></translations><inputs><input type="%s"><options>C0&#xD;C#0&#xD;D0&#xD;D#0&#xD;E0&#xD;F0&#xD;F#0&#xD;G0&#xD;G#0&#xD;A0&#xD;A#0&#xD;B0&#xD;C1&#xD;C#1&#xD;D1&#xD;D#1&#xD;E1&#xD;F1&#xD;F#1&#xD;G1&#xD;G#1&#xD;A1&#xD;A#1&#xD;B1&#xD;C2&#xD;C#2&#xD;D2&#xD;D#2&#xD;E2&#xD;F2&#xD;F#2&#xD;G2&#xD;G#2&#xD;A2&#xD;A#2&#xD;B2&#xD;C3&#xD;C#3&#xD;D3&#xD;D#3&#xD;E3&#xD;F3&#xD;F#3&#xD;G3&#xD;G#3&#xD;A3&#xD;A#3&#xD;B3&#xD;C4&#xD;C#4&#xD;D4&#xD;D#4&#xD;E4&#xD;F4&#xD;F#4&#xD;G4&#xD;G#4&#xD;A4&#xD;A#4&#xD;B4&#xD;C5&#xD;C#5&#xD;D5&#xD;D#5&#xD;E5&#xD;F5&#xD;F#5&#xD;G5&#xD;G#5&#xD;A5&#xD;A#5&#xD;B5&#xD;C6&#xD;C#6&#xD;D6&#xD;D#6&#xD;E6&#xD;F6&#xD;F#6&#xD;G6&#xD;G#6&#xD;A6&#xD;A#6&#xD;B6&#xD;C7&#xD;C#7&#xD;D7&#xD;D#7&#xD;E7&#xD;F7&#xD;F#7&#xD;G7&#xD;G#7&#xD;A7&#xD;A#7&#xD;B7&#xD;C8&#xD;C#8&#xD;D8&#xD;D#8&#xD;E8&#xD;F8&#xD;F#8&#xD;G8&#xD;G#8&#xD;A8&#xD;A#8&#xD;B8&#xD;C9&#xD;C#9&#xD;D9&#xD;D#9&#xD;E9&#xD;F9&#xD;F#9&#xD;G9&#xD;G#9&#xD;A9&#xD;A#9&#xD;B9&#xD;C10&#xD;C#10&#xD;D10&#xD;D#10&#xD;E10&#xD;F10&#xD;F#10&#xD;G10</options></input><input type="%txt" readonly="true"><options>Whole&#xD;Half&#xD;Quarter&#xD;Eighth&#xD;Sixteenth&#xD;Dotted Half&#xD;Dotted Quarter&#xD;Dotted Eighth&#xD;Dotted Sixteenth</options></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>playSound(</l><block var="Note"/><l>,</l><custom-block s="%txt Note Length"><block var="Note Length"/></custom-block><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Look Up %&apos;Key&apos; %&apos;List&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>2</l><custom-block s="assoc %s %l"><block var="Key"/><block var="List"/></custom-block></block></block></script></block-definition><block-definition s="Play %&apos;Note&apos; For %&apos;Duration&apos; Note Length and Wait" type="command" category="sound"><comment x="0" y="0" w="638" collapsed="false">Plays the selected note for the specified number of seconds. A full list of acceptable notes can be found by using the dropdown. This block waits for the selected note to finish playing.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"><options>C0&#xD;C#0&#xD;D0&#xD;D#0&#xD;E0&#xD;F0&#xD;F#0&#xD;G0&#xD;G#0&#xD;A0&#xD;A#0&#xD;B0&#xD;C1&#xD;C#1&#xD;D1&#xD;D#1&#xD;E1&#xD;F1&#xD;F#1&#xD;G1&#xD;G#1&#xD;A1&#xD;A#1&#xD;B1&#xD;C2&#xD;C#2&#xD;D2&#xD;D#2&#xD;E2&#xD;F2&#xD;F#2&#xD;G2&#xD;G#2&#xD;A2&#xD;A#2&#xD;B2&#xD;C3&#xD;C#3&#xD;D3&#xD;D#3&#xD;E3&#xD;F3&#xD;F#3&#xD;G3&#xD;G#3&#xD;A3&#xD;A#3&#xD;B3&#xD;C4&#xD;C#4&#xD;D4&#xD;D#4&#xD;E4&#xD;F4&#xD;F#4&#xD;G4&#xD;G#4&#xD;A4&#xD;A#4&#xD;B4&#xD;C5&#xD;C#5&#xD;D5&#xD;D#5&#xD;E5&#xD;F5&#xD;F#5&#xD;G5&#xD;G#5&#xD;A5&#xD;A#5&#xD;B5&#xD;C6&#xD;C#6&#xD;D6&#xD;D#6&#xD;E6&#xD;F6&#xD;F#6&#xD;G6&#xD;G#6&#xD;A6&#xD;A#6&#xD;B6&#xD;C7&#xD;C#7&#xD;D7&#xD;D#7&#xD;E7&#xD;F7&#xD;F#7&#xD;G7&#xD;G#7&#xD;A7&#xD;A#7&#xD;B7&#xD;C8&#xD;C#8&#xD;D8&#xD;D#8&#xD;E8&#xD;F8&#xD;F#8&#xD;G8&#xD;G#8&#xD;A8&#xD;A#8&#xD;B8&#xD;C9&#xD;C#9&#xD;D9&#xD;D#9&#xD;E9&#xD;F9&#xD;F#9&#xD;G9&#xD;G#9&#xD;A9&#xD;A#9&#xD;B9&#xD;C10&#xD;C#10&#xD;D10&#xD;D#10&#xD;E10&#xD;F10&#xD;F#10&#xD;G10</options></input><input type="%txt" readonly="true"><options>Whole&#xD;Dotted Half&#xD;Half&#xD;Dotted Quarter&#xD;Quarter&#xD;Dotted Eighth&#xD;Eighth&#xD;Dotted Sixteenth&#xD;Sixteenth&#xD;Dotted Thirty Second&#xD;Thirty Second</options></input></inputs><script><custom-block s="Play %s for %txt Note Length"><block var="Note"/><block var="Duration"/></custom-block><block s="doWait"><custom-block s="%txt Note Length"><block var="Duration"/></custom-block></block></script></block-definition><block-definition s="Scope %&apos;newValue&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>setScopeVisibility(</l><block var="newValue"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Play Chord %&apos;Chord Name&apos; for %&apos;Note Length&apos; Note Length" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%txt" readonly="true"><options>C Chord&#xD;F Chord&#xD;G7 Chord&#xD;A Minor Chord</options></input><input type="%txt"><options>Whole&#xD;Half&#xD;Quarter&#xD;Eighth&#xD;Sixteenth&#xD;Dotted Whole&#xD;Dotted Half&#xD;Dotted Quarter&#xD;Dotted Eighth&#xD;Dotted Sixteenth</options></input></inputs><script><block s="doIfElse"><block s="reportNot"><block s="reportEquals"><l></l><custom-block s="Look Up %s %l"><block var="Chord Name"/><custom-block s="ukulele chords"></custom-block></custom-block></block></block><script><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>1</l><custom-block s="Look Up %s %l"><block var="Chord Name"/><custom-block s="ukulele chords"></custom-block></custom-block></block><block var="Note Length"/></custom-block><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>2</l><custom-block s="Look Up %s %l"><block var="Chord Name"/><custom-block s="ukulele chords"></custom-block></custom-block></block><block var="Note Length"/></custom-block><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>3</l><custom-block s="Look Up %s %l"><block var="Chord Name"/><custom-block s="ukulele chords"></custom-block></custom-block></block><block var="Note Length"/></custom-block><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>4</l><custom-block s="Look Up %s %l"><block var="Chord Name"/><custom-block s="ukulele chords"></custom-block></custom-block></block><block var="Note Length"/></custom-block></script><script><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>1</l><block var="Chord Name"/></block><block var="Note Length"/></custom-block><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>2</l><block var="Chord Name"/></block><block var="Note Length"/></custom-block><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>3</l><block var="Chord Name"/></block><block var="Note Length"/></custom-block><custom-block s="Play %s for %txt Note Length"><block s="reportListItem"><l>4</l><block var="Chord Name"/></block><block var="Note Length"/></custom-block></script></block></script></block-definition><block-definition s="Rest for %&apos;Length&apos; Length of Time" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>Whole&#xD;Half&#xD;Quarter&#xD;Eighth&#xD;Sixteenth&#xD;Dotted Half&#xD;Dotted Quarter&#xD;Dotted Eigth&#xD;Dotted Sixteenth</options></input></inputs><script><block s="doWait"><block s="reportProduct"><custom-block s="%txt Note Length"><block var="Length"/></custom-block><block s="reportQuotient"><l>60</l><block s="getTempo"></block></block></block></block></script></block-definition><block-definition s="Tone Number %&apos;Number&apos; %&apos;newOn&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%b"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>toggleOscillator(</l><block var="Number"/><l>,</l><block var="newOn"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Tone Number %&apos;number&apos; Frequency %&apos;frequency&apos; Amplitude %&apos;amplitude&apos;" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>modifyOscillator(</l><block var="number"/><l>,</l><block var="frequency"/><l>,</l><block var="amplitude"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Tone Off" type="command" category="sound"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doFor"><l>i</l><l>1</l><l>10</l><script><custom-block s="Tone Number %s %b"><block var="i"/><l><bool>false</bool></l></custom-block></script></block></script></block-definition><block-definition s="do in parallel %&apos;actions&apos; and wait" type="command" category="control"><comment x="0" y="0" w="238.66666666666666" collapsed="false">Accepts any number of scripts as inputs.  Launches a separate thread for each of them, so they are done in parallel, then waits for them all to complete.&#xD;&#xD;This doesn&apos;t change how the Snap! scheduler works; the threads are not truly asynchronous. And there is no increase in speed.  Rather, the point of this block is to allow starting synchronized but independent scripts.</comment><header></header><code></code><translations>pt:executa _ em paralelo e espera&#xD;</translations><inputs><input type="%mult%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>threads</l></list></block><block s="doSetVar"><l>threads</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reifyScript"><script><block s="doDeclareVariables"><list><l>is running?</l></list></block><block s="doSetVar"><l>is running?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="fork"><block s="reifyScript"><script><block s="doRun"><block var="each script"/><list></list></block><block s="doSetVar"><l>is running?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><list></list></block><block s="doReport"><block s="reifyScript"><script><block s="doReport"><block var="is running?"/></block></script><list></list></block></block></script><list></list></block><list></list></block></autolambda><list><l>each script</l></list></block><block var="actions"/></block></block><block s="doWaitUntil"><block s="reportListIsEmpty"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="evaluate"><block var="test"/><list></list></block></autolambda><list><l>test</l></list></block><block var="threads"/></block></block></block></script></block-definition><block-definition s="do in parallel %&apos;actions&apos;" type="command" category="control"><comment x="0" y="0" w="238.66666666666666" collapsed="false">Accepts any number of scripts as inputs.  Launches a separate thread for each of them, so they are done in parallel, then continues with the current script while they all run.&#xD;&#xD;This doesn&apos;t change how the Snap! scheduler works; the threads are not truly asynchronous. And there is no increase in speed.  Rather, the point of this block is to allow starting synchronized but independent scripts.</comment><header></header><code></code><translations>pt:executa _ em paralelo&#xD;</translations><inputs><input type="%mult%cs"></input></inputs><script><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="actions"/></block><l>0</l></block><script><block s="fork"><block s="reportListItem"><l>1</l><block var="actions"/></block><list></list></block><custom-block s="do in parallel %mult%cs"><block s="reportCDR"><block var="actions"/></block></custom-block></script></block></script></block-definition><block-definition s="Freeze %&apos;bool&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%b"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>setFreeze(</l><block var="bool"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Timing" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>Whole</l><l>4</l></list></block><block s="reportNewList"><list><l>Half</l><l>2</l></list></block><block s="reportNewList"><list><l>Quarter</l><l>1</l></list></block><block s="reportNewList"><list><l>Eighth</l><l>.5</l></list></block><block s="reportNewList"><list><l>Sixteenth</l><l>.25</l></list></block><block s="reportNewList"><list><l>Thirtysecond</l><l>.125</l></list></block><block s="reportNewList"><list><l>Dotted Whole</l><l>6</l></list></block><block s="reportNewList"><list><l>Dotted Half</l><l>3</l></list></block><block s="reportNewList"><list><l>Dotted Quarter</l><l>1.5</l></list></block><block s="reportNewList"><list><l>Dotted Eighth</l><l>.75</l></list></block><block s="reportNewList"><list><l>Dotted Sixteenth</l><l>.375</l></list></block><block s="reportNewList"><list><l>Dotted Thirtysecond</l><l>.187</l></list></block></list></block></block></script></block-definition><block-definition s="delete var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="217" collapsed="false">This block deletes all the variables with the names given (inside input list).&#xD;&#xD;Each name will make only one variable deletion, and this will be the variable found following the scope order: &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;If we have a &quot;testing&quot; sprite variable and also a &quot;testing&quot; global one, deleting &quot;testing&quot; will delete only the sprite one (Yes! we can also do &quot;delete var (testing, testing)&quot; to delete both.&#xD;&#xD;If one variable does not exists (in any scope) an error happens, stopping block action in that point. You can check it before with the &quot;does var (name) exists?&quot;block. </comment><header></header><code></code><translations>pt:remove as variáveis _&#xD;ca:esborra les variables _&#xD;es:borrar variables _&#xD;de:löschen var _&#xD;</translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (typeof proc.homeContext.variables.vars[varName] !== &apos;undefined&apos;) {&#xD;    delete proc.homeContext.variables.vars[varName];&#xD;} else if (this.deletableVariableNames().indexOf(varName) != -1) {&#xD;    this.deleteVariable(varName);&#xD;} else {&#xD;    throw new Error("variable doesn&apos;t exist: " + varName);&#xD;}</l></block><list><block var="each item"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block-definition><block-definition s="set var %&apos;name&apos; to %&apos;value&apos;" type="command" category="variables"><comment x="0" y="0" w="240.4931640625" collapsed="false">This block sets the given value (last input) to the variable named with the name givent (var input).&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>ca:assigna a _ el valor _&#xD;es:asignar a _ el valor _&#xD;pt:altera _ para _&#xD;de:setze var _ auf _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input><input type="%s"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>value</l><l>proc</l></list><l>if ((typeof varName) != "string") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;proc.homeContext.variables.setVar(varName, value);</l></block><list><block var="name"/><block var="value"/></list></block></script></block-definition><block-definition s="var %&apos;name&apos;" type="reporter" category="variables"><comment x="0" y="0" w="178.00000000000003" collapsed="false">This block reports the value of the variable with the name given.&#xD;&#xD;It looks for that variable following the scope order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos; (the first match it finds).&#xD;&#xD;If that variable does not exist (in any scope) an error happens, stopping their script. You can check it before using the &quot;does var (name) exists?&quot; block. </comment><header></header><code></code><translations>pt:o valor de _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.getVar(varName);</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="show var %&apos;name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns on (show) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:mostra la variable _&#xD;es:mostrar variable _&#xD;pt:mostra a variável _&#xD;de:zeige var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>    var varFrame = proc.homeContext.variables,&#xD;        stage,&#xD;        watcher,&#xD;        target,&#xD;        label,&#xD;        others,&#xD;        isGlobal,&#xD;        name = varName;&#xD;&#xD;    if (name instanceof Context) {&#xD;        if (name.expression.selector === &apos;reportGetVar&apos;) {&#xD;            name = name.expression.blockSpec;&#xD;        } else {&#xD;            proc.doChangePrimitiveVisibility(name.expression, false);&#xD;            return;&#xD;        }&#xD;    }&#xD;    if (proc.homeContext.receiver) {&#xD;        stage = proc.homeContext.receiver.parentThatIsA(StageMorph);&#xD;        if (stage) {&#xD;            target = varFrame.silentFind(name);&#xD;            if (!target) {return; }&#xD;            // first try to find an existing (hidden) watcher&#xD;            watcher = detect(&#xD;                stage.children,&#xD;                morph =&gt; morph instanceof WatcherMorph &amp;&amp;&#xD;                    morph.target === target &amp;&amp;&#xD;                        morph.getter === name&#xD;            );&#xD;            if (watcher !== null) {&#xD;                watcher.show();&#xD;                watcher.fixLayout(); // re-hide hidden parts&#xD;                return;&#xD;            }&#xD;            // if no watcher exists, create a new one&#xD;            isGlobal = contains(&#xD;                proc.homeContext.receiver.globalVariables().names(),&#xD;                varName&#xD;            );&#xD;            if (isGlobal || target.owner) {&#xD;                label = name;&#xD;            } else {&#xD;                label = name + &apos; &apos; + localize(&apos;(temporary)&apos;);&#xD;            }&#xD;            watcher = new WatcherMorph(&#xD;                label,&#xD;                SpriteMorph.prototype.blockColor.variables,&#xD;                target,&#xD;                name&#xD;            );&#xD;            watcher.setPosition(stage.position().add(10));&#xD;            others = stage.watchers(watcher.left());&#xD;            if (others.length &gt; 0) {&#xD;                watcher.setTop(others[others.length - 1].bottom());&#xD;            }&#xD;            stage.add(watcher);&#xD;            watcher.fixLayout();&#xD;        }&#xD;    }</l></block><list><block var="name"/></list></block></script></block></script></block-definition><block-definition s="hide var %&apos;name&apos;" type="command" category="variables"><comment x="0" y="0" w="181" collapsed="false">This block turns off (hide) the watcher view on stage (if it was not already activated) of the variable with the given name (slot input).&#xD;&#xD;It can only access to the closest variable scope (if there different variables with the same name in different scopes) following the order &apos;script&apos; -&gt; &apos;sprite&apos; -&gt; &apos;global&apos;.&#xD;&#xD;No errors if that variable does not exist.</comment><header></header><code></code><translations>ca:amaga la variable _&#xD;es:esconder variable _&#xD;pt:esconde a variável _&#xD;de:verstecke var _&#xD;</translations><inputs><input type="%s"><options>§_getVarNamesDict</options></input></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><block var="name"/></custom-block><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>    // to delete all temporary watchers, use the primitive "hide" with no inputs&#xD;    var varFrame = proc.homeContext.variables,&#xD;        stage,&#xD;        watcher,&#xD;        target,&#xD;        name = varName;&#xD;&#xD;    if (name instanceof Context) {&#xD;        if (name.expression.selector === &apos;reportGetVar&apos;) {&#xD;            name = name.expression.blockSpec;&#xD;        } else {&#xD;            proc.doChangePrimitiveVisibility(name.expression, true);&#xD;            return;&#xD;        }&#xD;    }&#xD;    if (!name) {&#xD;        proc.doRemoveTemporaries();&#xD;        return;&#xD;    }&#xD;    if (proc.homeContext.receiver) {&#xD;        stage = proc.homeContext.receiver.parentThatIsA(StageMorph);&#xD;        if (stage) {&#xD;            target = varFrame.find(name);&#xD;            watcher = detect(&#xD;                stage.children,&#xD;                morph =&gt; morph instanceof WatcherMorph &amp;&amp;&#xD;                    morph.target === target &amp;&amp;&#xD;                        morph.getter === name&#xD;            );&#xD;            if (watcher !== null) {&#xD;                if (watcher.isTemporary()) {&#xD;                    watcher.destroy();&#xD;                } else {&#xD;                    watcher.hide();&#xD;                }&#xD;            }&#xD;        }&#xD;    }&#xD;</l></block><list><block var="name"/></list></block></script></block></script></block-definition><block-definition s="SendMessageToSoundScope %&apos;message&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>message</l></list><l>window.parent.postMessage(message, "*");</l></block><list><block var="message"/></list></block><block s="doBroadcast"><block var="message"/></block></script></block-definition><block-definition s="turbo %&apos;action&apos;" type="command" category="other"><header></header><code></code><translations>pt:executa no modo turbo _&#xD;</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="PI" type="reporter" category="operators"><header></header><code></code><translations>pt:π&#xD;</translations><inputs></inputs><script><block s="doReport"><l>3.141592653589793</l></block></script></block-definition><block-definition s="sound named %&apos;name&apos;" type="reporter" category="sensing"><header></header><code></code><translations>pt:o som _&#xD;</translations><inputs><input type="%s"><options>§_soundsMenu</options></input></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportGetSoundAttribute"><l><option>name</option></l><l></l></block><block var="name"/></block></autolambda><list></list></block><block s="reportGet"><l><option>sounds</option></l></block></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>pt:$circleSolid-1-255-0-0 uma nova gravação&#xD;</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="plot sound %&apos;name&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>pt:desenha o gráfico do som _&#xD;</translations><inputs><input type="%s" readonly="true"><options>§_soundsMenu</options></input></inputs><script><block s="doDeclareVariables"><list><l>samples</l><l>step</l><l>offset</l><l>i</l><l>sound</l></list></block><block s="doSetVar"><l>sound</l><block s="reportIfElse"><block s="reportOr"><block s="reportIsA"><block var="name"/><l><option>list</option></l></block><block s="reportIsA"><block var="name"/><l><option>sound</option></l></block></block><block var="name"/><custom-block s="sound named %s"><block var="name"/></custom-block></block></block><block s="doIfElse"><block s="reportIsA"><block var="sound"/><l><option>sound</option></l></block><script><block s="doSetVar"><l>samples</l><block s="reportGetSoundAttribute"><l><option>samples</option></l><block var="sound"/></block></block><block s="doSetVar"><l>step</l><block s="reportQuotient"><block s="reportGetSoundAttribute"><l><option>length</option></l><block var="sound"/></block><block s="reportProduct"><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><l>2</l></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="reportProduct"><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><l>2</l></block></block></block><block s="doSetVar"><l>offset</l><block s="reportQuotient"><block s="reportAttributeOf"><l><option>height</option></l><l>Stage</l></block><l>4</l></block></block><block s="doForEach"><l>channel</l><block var="samples"/><script><block s="doSetVar"><l>i</l><l>0</l></block><block s="gotoXY"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></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="reportProduct"><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><l>2</l></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportSum"><block s="xPosition"></block><l>0.5</l></block><block s="reportSum"><block s="reportProduct"><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="channel"/></block><block s="reportQuotient"><block s="reportAttributeOf"><l><option>height</option></l><block s="reportGet"><l><option>stage</option></l></block></block><l>6.4</l></block></block><block var="offset"/></block></block></script></block></script></custom-block><block s="up"></block><block s="doChangeVar"><l>offset</l><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><l>-2</l></block></block></script></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="reportProduct"><block s="reportAttributeOf"><l><option>width</option></l><block s="reportGet"><l><option>stage</option></l></block></block><l>2</l></block></block></block><block s="gotoXY"><block s="reportQuotient"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></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="reportProduct"><block s="reportAttributeOf"><l><option>width</option></l><l>Stage</l></block><l>2</l></block><script><block s="doChangeVar"><l>i</l><block var="step"/></block><block s="gotoXY"><block s="reportSum"><block s="xPosition"></block><l>0.5</l></block><block s="reportProduct"><block s="reportListItem"><block s="reportMonadic"><l><option>floor</option></l><block var="i"/></block><block var="samples"/></block><block s="reportQuotient"><block s="reportAttributeOf"><l><option>height</option></l><block s="reportGet"><l><option>stage</option></l></block></block><l>3.2</l></block></block></block></script></block></script></custom-block><block s="up"></block></script></block></script></block-definition><block-definition s="Text Block %&apos;ID&apos; ID %&apos;Title&apos; Title %&apos;Body&apos; Body" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>textGuide(</l><block var="ID"/><l>&#126;**&#126;</l><block var="Title"/><l>&#126;**&#126;</l><block var="Body"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Position Block %&apos;ID&apos; ID %&apos;leftPercent&apos; left % %&apos;topPercent&apos; top %" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>positionGuideFrame(</l><block var="ID"/><l>&#126;**&#126;</l><block var="leftPercent"/><l>&#126;**&#126;</l><block var="topPercent"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Show Block %&apos;ID&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>showGuideFrame(</l><block var="ID"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Hide Block %&apos;ID&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>hideGuideFrame(</l><block var="ID"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Video Block %&apos;ID&apos; ID %&apos;Title&apos; Title %&apos;Link&apos; Link" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>videoGuide(</l><block var="ID"/><l>&#126;**&#126;</l><block var="Title"/><l>&#126;**&#126;</l><block var="Link"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Project URL" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l>http://tunescope.org/index.html#project:</l><block s="reportListItem"><l>3</l><block s="reportTextSplit"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return window.location.href;</l></block><list></list></block><l>:</l></block></block><l>&amp;editMode</l></list></block></block></script></block-definition><block-definition s="Copy Project URL to Clipboard" type="command" category="variables"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="Copy To Clipboard %txt"><custom-block s="Project URL"></custom-block></custom-block><block s="doIfElse"><block s="reportLessThan"><block s="reportStringSize"><custom-block s="Project URL"></custom-block></block><l>50</l></block><script><custom-block s="Text Block %n ID %txt Title %txt Body"><l>1</l><l>TuneScope Project URL</l><l>Note:	A project must be shared before a TuneScope URL can be created. &#xD;&#xD;(Use the “Save As” option under the “File Menu” to access the “Share” option. The shared project will be highlighted in bold on the file menu after this has been done.)&#xD;&#xD;1.	After the project has been shared, click the TuneScope URL block.&#xD;2.	A Project URL variable will appear on the stage.&#xD;3.	Right-click the project URL on the stage.&#xD;4.	Select “Export” from the drop-down menu that appears.&#xD;5.	A text file with the TuneScope Project URL will appear in your download folder.&#xD;</l></custom-block></script><script><custom-block s="Text Block %n ID %txt Title %txt Body"><l>1</l><l>TuneScope Project URL</l><block s="reportJoinWords"><list><l>The following URL has been copied to the clipboard: </l><custom-block s="Project URL"></custom-block></list></block></custom-block></script></block></script></block-definition><block-definition s="Copy To Clipboard %&apos;string&apos;" type="command" category="variables"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>copyToClipboard(</l><block var="string"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Plot Point %&apos;X&apos; %&apos;Y&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>plotPointOnScope(</l><block var="X"/><l>&#126;**&#126;</l><block var="Y"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Plot Points %&apos;Points&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doForEach"><l>item</l><block var="Points"/><script><custom-block s="Plot Point %n %n"><block s="reportListItem"><l>1</l><block var="item"/></block><block s="reportListItem"><l>2</l><block var="item"/></block></custom-block></script></block></script></block-definition><block-definition s="reshape as %&apos;shape&apos; $⍴-1-255-255-0 items of %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="180" collapsed="false">The first input is a shape list as in&#xD;SHAPE OF.  The output is an array with those dimensions containing  the atomic items of the second input,&#xD;repeating values if more are needed.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="reshape helper %l %l"><block var="shape"/><custom-block s="flatten (ravel) $,-1-255-255-0 %l"><block var="data"/></custom-block></custom-block></block></script></block-definition><block-definition s="shape of $⍴-1-255-255-0 %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="310" collapsed="false">Reports a flat list of the maximum size of the input array along&#xD;each dimension: number of rows, number of columns, etc.&#xD;&quot;Maximum&quot; because it works even if the array isn&apos;t uniformly shaped.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>sublists</l></list></block><block s="doIfElse"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block><script><block s="doSetVar"><l>sublists</l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportListIsEmpty"><l/></block></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="shape of $⍴-1-255-255-0 %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block></block></block><block s="doIfElse"><block s="reportListIsEmpty"><block var="sublists"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></list></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><custom-block s="flatten (ravel) $,-1-255-255-0 %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><block var="number"/><l/></block></autolambda><list></list></block><block var="sublists"/></block><block s="reifyReporter"><autolambda><custom-block s="max %s $⌈-1-255-255-0 %s"><l></l><l></l></custom-block></autolambda><list></list></block></block></autolambda><list><l>number</l></list></block><block s="reportNumbers"><l>1</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListAttribute"><l><option>length</option></l><l/></block></autolambda><list></list></block><block var="sublists"/></block><block s="reifyReporter"><autolambda><custom-block s="max %s $⌈-1-255-255-0 %s"><l></l><l></l></custom-block></autolambda><list></list></block></block></block></block></custom-block></block></block></script></block></script><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block></script></block-definition><block-definition s="max %&apos;a&apos; $⌈-1-255-255-0 %&apos;b&apos;" type="reporter" category="operators"><comment x="0" y="0" w="150.66666666666666" collapsed="false">Reports the greater of its two inputs. Works on strings too.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportGreaterThan"><block var="a"/><block var="b"/></block><block var="a"/><block var="b"/></block></autolambda><list><l>a</l><l>b</l></list></block></custom-block><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="flatten (ravel) $,-1-255-255-0 %&apos;data&apos;" type="reporter" category="lists"><comment x="0" y="0" w="216" collapsed="false">Reports a flat list of all the atomic elements &#xD;of sublists of the input list.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="data"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="flatten (ravel) $,-1-255-255-0 %l"><l/></custom-block></autolambda><list></list></block><block var="data"/></block></block></block></script><script><block s="doReport"><block s="reportNewList"><list><block var="data"/></list></block></block></script></block></script></block-definition><block-definition s="outer product %&apos;a&apos; $○.-1-255-255-0 %&apos;function&apos; %&apos;b&apos;" type="reporter" category="lists"><comment x="0" y="0" w="297.99999999999994" collapsed="false">Given two arrays A and B, reports an array whose dimensions are&#xD;APPEND(SHAPE OF (A), SHAPE OF (B))&#xD;in which each atomic item of the result is computed by applying the dyadic function input to an item of A and an item of B.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="a"/></custom-block><l>0</l></block><script><block s="doReport"><block s="evaluate"><block var="function"/><list><block var="a"/><block var="b"/></list></block></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block var="a"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportCONS"><custom-block s="outer product %l $○.-1-255-255-0 %repRing %l"><block s="reportListItem"><l>1</l><block var="a"/></block><block var="function"/><block var="b"/></custom-block><custom-block s="outer product %l $○.-1-255-255-0 %repRing %l"><block s="reportCDR"><block var="a"/></block><block var="function"/><block var="b"/></custom-block></block></block></script></block-definition><block-definition s="identity $+-1-255-255-0 %&apos;x&apos;" type="reporter" category="operators"><comment x="0" y="0" w="210.00000000000003" collapsed="false">Reports its input.&#xD;This is useful to fit a value into a different-type input slot, e.g., number into list slot.</comment><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="rank of $⍴⍴-1-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="240" collapsed="true">Reports the number of dimensions of the input.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="array"/></custom-block></custom-block></block></block></script></block-definition><block-definition s="inner product helper with %&apos;plus&apos; . %&apos;times&apos; %&apos;a&apos; transposed %&apos;tb&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%repRing"></input><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="a"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="a"/></block></block><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportCONS"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="generalized dotproduct %l %l with sum %repRing product %repRing"><block s="reportListItem"><l>1</l><block var="a"/></block><l/><block var="plus"/><block var="times"/></custom-block></autolambda><list></list></block><block var="tb"/></block><custom-block s="inner product helper with %repRing . %repRing %l transposed %l"><block var="plus"/><block var="times"/><block s="reportCDR"><block var="a"/></block><block var="tb"/></custom-block></block></block></script></block><block s="doReport"><block s="reportCONS"><custom-block s="inner product helper with %repRing . %repRing %l transposed %l"><block var="plus"/><block var="times"/><block s="reportListItem"><l>1</l><block var="a"/></block><block var="tb"/></custom-block><custom-block s="inner product helper with %repRing . %repRing %l transposed %l"><block var="plus"/><block var="times"/><block s="reportCDR"><block var="a"/></block><block var="tb"/></custom-block></block></block></script></block-definition><block-definition s="transpose $⍉-1.5-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="168" collapsed="false">Takes a multidimensional array, and&#xD;reports an array whose dimensions&#xD;are reversed (as reported by&#xD;SHAPE OF).  In the case of a&#xD;two-dimensional array, does the usual transposition of rows and columns.</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="array"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="array"/></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block var="array"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list></list></block></list></block></block></script><comment w="290.6666666666667" collapsed="true">If there are no atomic data, we don&apos;t have any shape information, so we can&apos;t really transpose it.  But an empty list is 0 rows of some number of columns, so the transpose should be 0 columns in some number of rows.  We arbitrarily make it 0 columns of one row.  This at least has one dimension of the shape correct.</comment></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="array"/></block><l><option>list</option></l></block></block><script><block s="doReport"><block var="array"/></block></script><comment w="274.6666666666667" collapsed="true">The transpose of a vector is just the vector itself.</comment></block><block s="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="array"/></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><comment w="274.6666666666667" collapsed="true">This is the opposite no-atomic-data situation from above.  We know that there are (length array) rows of 0 columns, so the transpose is 0 rows, i.e., an empty list.  But we lose the number of original rows, transpose columns.</comment></block><block s="doReport"><custom-block s="deep map %repRing %predRing %l"><block s="reifyReporter"><autolambda><custom-block s="nth item 1 %n %l"><block s="reportListAttribute"><l><option>length</option></l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="array"/></custom-block></block><block s="reportListItem"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l></list></block></autolambda><list></list></block><block var="atom"/></block><block var="array"/></block></custom-block></autolambda><list><l>atom</l></list></block><block s="reifyPredicate"><autolambda><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNot"><block s="reportIsA"><l></l><l><option>list</option></l></block></block></autolambda><list></list></block><block var="node"/></block><block s="reifyReporter"><autolambda><block s="reportAnd"><l/><l/></block></autolambda><list></list></block></block></autolambda><list><l>node</l></list></block><custom-block s="$⍳-1.5-255-255-0 %n"><custom-block s="reverse row order (column contents) $⦵-1.5-255-255-0 %l"><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="array"/></custom-block></custom-block></custom-block></custom-block></block></script><scripts><script x="690.0310872395834" y="485.55555555555566"><block var="array"/></script><script x="544.6666666666666" y="306.1111111111114"><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="array"/></block></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l></list></block></autolambda><list></list></block><block s="reportListItem"><l>1</l><block var="array"/></block></block></block></script><comment w="212.66666666666666" collapsed="true">This is one row, n columns.  So the transpose is n rows, one column.</comment></block></script></scripts></block-definition><block-definition s="reverse row order (column contents) $⦵-1.5-255-255-0 %&apos;list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="286" collapsed="false">Reverses the order of the (toplevel) items of the input.&#xD;&#xD;If the input is a matrix, this means it reverses the order of the rows, which is a reflection through a horizontal axis, as the ⦵ symbol suggests.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="list"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="list"/></block></autolambda><list></list></block><block s="reportNumbers"><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><l>1</l></block></block></block></script></block-definition><block-definition s="deep insert %&apos;first&apos; %&apos;rest&apos;" type="reporter" category="other"><comment x="0" y="0" w="131.33333333333334" collapsed="false">Recursively deep-inserts&#xD;the items of the first input&#xD;into the items of the second&#xD;input.  If the first input is not&#xD;a list, then it is inserted with&#xD;IN FRONT OF in the second&#xD;unless the second also isn&apos;t&#xD;a list, in which case they are&#xD;combined with LIST.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="first"/><l><option>list</option></l></block></block><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="rest"/><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportNewList"><list><block var="first"/><block var="rest"/></list></block></block></script></block><block s="doReport"><block s="reportCONS"><block var="first"/><block var="rest"/></block></block></script></block><block s="doIf"><block s="reportAnd"><block s="reportNot"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="first"/></block><l><option>list</option></l></block></block><block s="reportListIsEmpty"><block s="reportCDR"><block var="first"/></block></block></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="first"/></block><block var="rest"/></block></block></script></block><block s="doReport"><custom-block s="multimap %repRing %mult%l"><block s="reifyReporter"><autolambda><custom-block s="deep insert %l %l"><l/><l/></custom-block></autolambda><list></list></block><list><block var="first"/><block var="rest"/></list></custom-block></block></script></block-definition><block-definition s="multimap %&apos;function&apos; %&apos;data&apos;" type="reporter" category="other"><comment x="0" y="0" w="215.33333333333334" collapsed="false">Like MAP, but can take any number of lists&#xD;as inputs.  The lists must all be the same size.&#xD;The function input must take a number of inputs&#xD;equal to the number of lists.  MULTIMAP calls&#xD;the function with all the first items, then all the&#xD;second items, and so on.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%mult%l"></input></inputs><script><block s="doIf"><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block s="reifyReporter"><autolambda><block s="reportOr"><l/><l/></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListIsEmpty"><l/></block></autolambda><list></list></block><block var="data"/></block></custom-block><script><block s="doIfElse"><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block s="reifyReporter"><autolambda><block s="reportAnd"><l/><l/></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListIsEmpty"><l/></block></autolambda><list></list></block><block var="data"/></block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><script><custom-block s="error %txt"><l>Non-conforming shapes.</l></custom-block></script></block></script></block><block s="doReport"><block s="reportCONS"><block s="evaluate"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="data"/></block></block><custom-block s="multimap %repRing %mult%l"><block var="function"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="data"/></block></custom-block></block></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><block-definition s="generalized dotproduct %&apos;a&apos; %&apos;b&apos; with sum %&apos;sum&apos; product %&apos;product&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input><input type="%repRing"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reportCombine"><custom-block s="multimap %repRing %mult%l"><block var="product"/><list><block var="a"/><block var="b"/></list></custom-block><block var="sum"/></block></block></script></block-definition><block-definition s="inner product %&apos;a&apos; %&apos;plus&apos; $.-1-255-255-0 %&apos;times&apos; %&apos;b&apos;" type="reporter" category="lists"><comment x="0" y="0" w="252.66666666666666" collapsed="false">Computes a generalized matrix multiplication.&#xD;&#xD;In normal matrix multiplication, each cell of the result&#xD;is computed by multiplying individual numbers within&#xD;a row of the left input and a column of the right input,&#xD;and then adding those products.  In APL terms this is&#xD;+.× (&quot;plus dot times&quot;)&#xD;Any dyadic functions can replace addition and multiplication in this algorithm; a common case is&#xD;∨.∧ (&quot;or dot and&quot;)</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%repRing"></input><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="a"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>a</l><block s="reportNewList"><list><block var="a"/></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="b"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>b</l><block s="reportNewList"><list><block var="b"/></list></block></block></script></block><block s="doIf"><block s="reportAnd"><block s="reportEquals"><block s="reportListItem"><l><option>last</option></l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="a"/></custom-block></block><l>1</l></block><block s="reportGreaterThan"><block s="reportListItem"><l>1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="b"/></custom-block></block><l>1</l></block></block><script><block s="doDeclareVariables"><list><l>ta</l></list></block><block s="doSetVar"><l>ta</l><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block var="a"/></custom-block></block><block s="doSetVar"><l>a</l><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block var="ta"/></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block s="reportListItem"><l>1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="b"/></custom-block></block></block></block></custom-block></block></script></block><block s="doIf"><block s="reportAnd"><block s="reportGreaterThan"><block s="reportListItem"><l><option>last</option></l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="a"/></custom-block></block><l>1</l></block><block s="reportEquals"><block s="reportListItem"><l>1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="b"/></custom-block></block><l>1</l></block></block><script><block s="doSetVar"><l>b</l><block s="reportMap"><block s="reifyReporter"><autolambda><block var="b"/></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block s="reportListItem"><l><option>last</option></l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="a"/></custom-block></block></block></block></block></script></block><block s="doReport"><custom-block s="inner product helper with %repRing . %repRing %l transposed %l"><block var="plus"/><block var="times"/><block var="a"/><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block var="b"/></custom-block></custom-block></block></script></block-definition><block-definition s="min %&apos;a&apos; $⌊-1.2-255-255-0 %&apos;b&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211.33333333333334" collapsed="true">Reports the smaller of its two inputs.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportLessThan"><block var="a"/><block var="b"/></block><block var="a"/><block var="b"/></block></autolambda><list><l>a</l><l>b</l></list></block></custom-block><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="log base %&apos;b&apos; $⍟-1.5-255-255-0 %&apos;x&apos;" type="reporter" category="operators"><comment x="0" y="0" w="212" collapsed="false">Computes logarithms in any base.&#xD;&#xD;The base is the left input.  It&apos;s usual in APL that if there&apos;s a main data input and some sort of control input, the latter comes on the left.  This is because APL syntax, unless you use parentheses, groups computations from right to left.&#xD;&#xD;APL has a monadic version of this function that computes natural logs (log to the base e).</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><block s="reportQuotient"><block s="reportMonadic"><l><option>ln</option></l><block var="x"/></block><block s="reportMonadic"><l><option>ln</option></l><block var="b"/></block></block></autolambda><list><l>b</l><l>x</l></list></block></custom-block><list><block var="b"/><block var="x"/></list></block></block></script></block-definition><block-definition s="combs %&apos;r&apos; at a time $!-1-255-255-0 of %&apos;n&apos;" type="reporter" category="operators"><comment x="0" y="0" w="218.66666666666666" collapsed="false">Computes the number of combinations of right-input things taken left-input at a time, otherwise known as the elements of Pascal&apos;s triangle.  This block shares the ! symbol with the monadic factorial function, because the formula for computing this function uses factorials.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportAnd"><custom-block s="%s ≥ %s"><block var="n"/><l>0</l></custom-block><block s="reportAnd"><custom-block s="%s ≥ %s"><block var="r"/><l>0</l></custom-block><custom-block s="%s ≤ %s"><block var="r"/><block var="n"/></custom-block></block></block><block s="reportQuotient"><custom-block s="factorial $!-1-255-255-0 %n"><block var="n"/></custom-block><block s="reportProduct"><custom-block s="factorial $!-1-255-255-0 %n"><block var="r"/></custom-block><custom-block s="factorial $!-1-255-255-0 %n"><block s="reportDifference"><block var="n"/><block var="r"/></block></custom-block></block></block><l>0</l></block></autolambda><list><l>r</l><l>n</l></list></block></custom-block><list><block var="r"/><block var="n"/></list></block></block></script></block-definition><block-definition s="factorial $!-1-255-255-0 %&apos;n&apos;" type="reporter" category="operators"><comment x="0" y="0" w="172.66666666666666" collapsed="false">The factorial of a positive integer n is the product of the integers from 1 to n.&#xD;&#xD;In real APL, the domain of this function is extended beyond integers to compute the gamma function.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="n"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="factorial $!-1-255-255-0 %n"><l></l></custom-block></autolambda><list></list></block><block var="n"/></block></block></script><script><block s="doReport"><block s="reportIfElse"><custom-block s="zero? %n"><block var="n"/></custom-block><l>1</l><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="n"/></block></custom-block></block></block></script></block></script></block-definition><block-definition s="combine in rows (reduce by column vectors) %&apos;func&apos; $/-1-255-255-0 %&apos;stuff&apos;" type="reporter" category="lists"><comment x="0" y="0" w="288.6666666666667" collapsed="false">This function has two names because there are two ways&#xD;to understand it.&#xD;&#xD;Lisp way:  A matrix is a list of rows.  This block combines the numbers in each row, producing one value for the entire row.&#xD;&#xD;APL way:  A matrix is made of vectors.  This block takes each column as a vector, and does vector arithmetic on the columns, producing one column as the result.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportGreaterThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="stuff"/></custom-block><l>1</l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block var="func"/><l/></custom-block></autolambda><list></list></block><block var="stuff"/></block></block></script><script><block s="doReport"><block s="reportCombine"><block var="stuff"/><block var="func"/></block></block></script></block></script></block-definition><block-definition s="%&apos;a&apos; scalar %&apos;pred&apos; %&apos;b&apos;" type="predicate" category="operators"><comment x="0" y="0" w="190" collapsed="false">Acts just like the function selected from&#xD;the pulldown menu, but hyperized, so&#xD;comparing two equal-sized lists reports&#xD;a list of the same length as the inputs,&#xD;with the results of item-by-item comparisons.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s" readonly="true">﹦<options>﹦&#xD;≠&#xD;identical to&#xD;and&#xD;or&#xD;is _ a _?</options></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reportListItem"><block s="reportListIndex"><block var="pred"/><block s="reportNewList"><list><l>﹦</l><l>≠</l><l>identical to</l><l>and</l><l>or</l><l>is _ a _?</l></list></block></block><block s="reportNewList"><list><block s="reifyPredicate"><autolambda><block s="reportEquals"><l></l><l></l></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><l></l><l></l></block></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportIsIdentical"><l></l><l></l></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportAnd"><l/><l/></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportOr"><l/><l/></block></autolambda><list></list></block><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l></l></block></autolambda><list></list></block></list></block></block><list><block var="a"/><block var="b"/></list></block></autolambda><list><l>a</l><l>b</l></list></block></custom-block><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="%&apos;howmany&apos; deal $?-1-255-255-0 %&apos;range&apos;" type="reporter" category="operators"><comment x="0" y="0" w="177.33333333333334" collapsed="false">Report a list with left-input random integers in the range 1 to right-input.&#xD;No number appears more than once&#xD;in the result.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><custom-block s="%n deal helper %l"><block var="howmany"/><block s="reportNumbers"><l>1</l><block var="range"/></block></custom-block></autolambda><list><l>howmany</l><l>range</l></list></block></custom-block><list><block var="howmany"/><block var="range"/></list></block></block></script></block-definition><block-definition s="%&apos;howmany&apos; deal helper %&apos;data&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="howmany"/><l>0</l></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doDeclareVariables"><list><l>choice</l></list></block><block s="doSetVar"><l>choice</l><block s="reportListItem"><block s="reportRandom"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></block><block var="data"/></block></block><block s="doReport"><block s="reportCONS"><block var="choice"/><custom-block s="%n deal helper %l"><block s="reportDifference"><block var="howmany"/><l>1</l></block><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><l></l><block var="choice"/></block></block></autolambda><list></list></block><block var="data"/></block></custom-block></block></block></script></block-definition><block-definition s="signum $×-1-255-255-0 %&apos;num&apos;" type="reporter" category="operators"><comment x="0" y="0" w="159.99999999999997" collapsed="false">Reports 1 if the input is positive,&#xD;0 if the input is zero,&#xD;or -1 if the input is negative.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="num"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="signum $×-1-255-255-0 %n"><l></l></custom-block></autolambda><list></list></block><block var="num"/></block></block></script></block><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>0</l><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block var="num"/></block><script><block s="doReport"><l>0</l></block></script></block><block s="doReport"><block s="reportQuotient"><block var="num"/><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block></block></script></block-definition><block-definition s="reciprocal $÷-1-255-255-0 %&apos;num&apos;" type="reporter" category="operators"><comment x="0" y="0" w="102.66666666666667" collapsed="false">reports 1 divided&#xD;by its input.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportQuotient"><l>1</l><block var="num"/></block></block></script></block-definition><block-definition s="roll $?-1-255-255-0 %&apos;num&apos;" type="reporter" category="operators"><comment x="0" y="0" w="180.66666666666666" collapsed="false">This block reports a random integer between 1 and its input.  To roll more than one die, use (for three dice)&#xD;roll (reshape as 3 items of 6)&#xD;APL:  ?3⍴6&#xD;Don&apos;t use reshape as 3 items of roll 6, because that would roll one die and report 3 copies of the same random roll. </comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportRandom"><l>1</l><block var="num"/></block></block></script></block-definition><block-definition s="GCD (or) %&apos;a&apos; $∨-1.2-255-255-0 %&apos;b&apos;" type="reporter" category="operators"><comment x="0" y="0" w="230.66666666666666" collapsed="false">Reports the greatest common divisor of its inputs.&#xD;If the inputs are values in {0,1} then this is equivalent to the logical OR of the values, with 0=False, 1=True.  Hence the APL symbol ∨.&#xD;Also accepts Snap! Booleans as inputs.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><script><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>0</l><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block var="b"/></block><script><block s="doReport"><block var="a"/></block></script></block><block s="doReport"><custom-block s="GCD (or) %n $∨-1.2-255-255-0 %n"><block var="b"/><block s="reportModulus"><block var="a"/><block var="b"/></block></custom-block></block></script><list><l>a</l><l>b</l></list></block></custom-block><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="scalar -&gt; hyper %&apos;func&apos;" type="reporter" category="control"><comment x="0" y="0" w="218" collapsed="false">Takes a dyadic scalar function as input, and&#xD;hyperizes it, so that it can take lists as inputs.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doDeclareVariables"><list><l>hyper func</l></list></block><block s="doSetVar"><l>hyper func</l><block s="reifyReporter"><script><block s="doIfElse"><custom-block s="scalar? %s"><block var="a"/></custom-block><script><block s="doIfElse"><custom-block s="scalar? %s"><block var="b"/></custom-block><script><block s="doReport"><block s="evaluate"><block var="func"/><list><custom-block s="scalar-value helper %s"><block var="a"/></custom-block><custom-block s="scalar-value helper %s"><block var="b"/></custom-block></list></block></block></script><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="hyper func"/><list><custom-block s="scalar-value helper %s"><block var="a"/></custom-block><l></l></list></block></autolambda><list></list></block><block var="b"/></block></block></script></block></script><script><block s="doIfElse"><custom-block s="scalar? %s"><block var="b"/></custom-block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block var="hyper func"/><list><l></l><custom-block s="scalar-value helper %s"><block var="b"/></custom-block></list></block></autolambda><list></list></block><block var="a"/></block></block></script><script><block s="doReport"><custom-block s="multimap %repRing %mult%l"><block var="hyper func"/><list><block var="a"/><block var="b"/></list></custom-block></block></script></block></script></block></script><list><l>a</l><l>b</l></list></block></block><block s="doReport"><block var="hyper func"/></block></script></block-definition><block-definition s="scalar? %&apos;x&apos;" type="predicate" category="other"><comment x="0" y="0" w="199.33333333333334" collapsed="false">Reports True if the input is an APL scalar,&#xD;i.e., either an atomic (non-list) value, or&#xD;an array (list of lists) of any depth with only&#xD;one atomic item, e.g., (list (list (list (3)))).</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="x"/><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doReport"><block s="reportEquals"><block s="reportCombine"><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="x"/></custom-block><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block><l>1</l></block></block></script></block-definition><block-definition s="scalar-value helper %&apos;x&apos;" type="reporter" category="other"><comment x="0" y="0" w="200.66666666666666" collapsed="false">The input must be a value for which SCALAR? reports true, i.e., either an atom or a list of any depth but only one scalar item of item of... etc.  This function returns the underlying scalar (number, etc.).</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="x"/><l><option>list</option></l></block></block><script><block s="doReport"><block var="x"/></block></script></block><block s="doReport"><custom-block s="scalar-value helper %s"><block s="reportListItem"><l>1</l><block var="x"/></block></custom-block></block></script></block-definition><block-definition s="LCM (and) %&apos;a&apos; $∧-1.2-255-255-0 %&apos;b&apos;" type="reporter" category="operators"><comment x="0" y="0" w="230.66666666666666" collapsed="false">Reports the least common multiple of its inputs.&#xD;If the inputs are values in {0,1} then this is equivalent to the logical AND of the values, with 0=False, 1=True.  Hence the APL symbol ∧.&#xD;Also accepts Snap! Booleans as inputs.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><script><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>0</l><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block var="b"/></block><script><block s="doReport"><block var="b"/></block></script></block><block s="doReport"><block s="reportProduct"><block var="a"/><block s="reportQuotient"><block var="b"/><custom-block s="GCD (or) %n $∨-1.2-255-255-0 %n"><block var="a"/><block var="b"/></custom-block></block></block></block></script><list><l>a</l><l>b</l></list></block></custom-block><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="NAND %&apos;a&apos; $⍲-1.4-255-255-0 %&apos;b&apos;" type="predicate" category="operators"><comment x="0" y="0" w="198.66666666666666" collapsed="false">Reports the not-and of its inputs, in the form&#xD;0 for false, 1 for true.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="NOT $&#126;-1-255-255-0 %s"><custom-block s="LCM (and) %n $∧-1.2-255-255-0 %n"><block var="a"/><block var="b"/></custom-block></custom-block></block></script></block-definition><block-definition s="NOT $&#126;-1-255-255-0 %&apos;p&apos;" type="reporter" category="operators"><comment x="0" y="0" w="167.33333333333334" collapsed="false">Reports 1 if the input is False or 0;&#xD;otherwise reports 0.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportDifference"><l>1</l><custom-block s="signum $×-1-255-255-0 %n"><block var="p"/></custom-block></block></block></script></block-definition><block-definition s="NOR %&apos;a&apos; $⍱-1.4-255-255-0 %&apos;b&apos;" type="predicate" category="operators"><comment x="0" y="0" w="198.66666666666666" collapsed="false">Reports the not-and of its inputs, in the form&#xD;0 for false, 1 for true.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="NOT $&#126;-1-255-255-0 %s"><custom-block s="GCD (or) %n $∨-1.2-255-255-0 %n"><block var="a"/><block var="b"/></custom-block></custom-block></block></script></block-definition><block-definition s="%&apos;a&apos; ≤ %&apos;b&apos;" type="predicate" category="operators"><comment x="0" y="0" w="151.33333333333334" collapsed="false">Reports True if the left input is&#xD;less than or equal to the right input.&#xD;&#xD;Reports a Snap! Boolean, not an integer 0 or 1.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="truth %s"><custom-block s="NOT $&#126;-1-255-255-0 %s"><block s="reportGreaterThan"><block var="a"/><block var="b"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="%&apos;a&apos; ≥ %&apos;b&apos;" type="predicate" category="operators"><comment x="0" y="0" w="152.66666666666666" collapsed="false">Reports True if the left input is&#xD;greater than than or equal to&#xD;the right input.&#xD;&#xD;Reports a Snap! Boolean, not an integer 0 or 1.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="truth %s"><custom-block s="NOT $&#126;-1-255-255-0 %s"><block s="reportLessThan"><block var="a"/><block var="b"/></block></custom-block></custom-block></block></script></block-definition><block-definition s="XOR %&apos;a&apos; $≠-1-255-255-0 %&apos;b&apos;" type="predicate" category="operators"><comment x="0" y="0" w="190" collapsed="false">Reports 0 if its inputs are equal;&#xD;reports 1 if its inputs are not equal.&#xD;The inputs can have any non-list values.&#xD;(Lists are hyperized.)  If the inputs are&#xD;Booleans (True/False or 1/0), this is&#xD;also the exclusive-or function.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="%s scalar %s %s"><block var="a"/><l>≠</l><block var="b"/></custom-block></block></script></block-definition><block-definition s="zero? %&apos;n&apos;" type="predicate" category="other"><comment x="0" y="0" w="202.66666666666666" collapsed="true">reports True iff the input is 0 or False.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListContainsItem"><block s="reportNewList"><list><l>0</l><block s="reportBoolean"><l><bool>false</bool></l></block></list></block><block var="n"/></block></block></script></block-definition><block-definition s="truth %&apos;n&apos;" type="predicate" category="other"><comment x="0" y="0" w="198.66666666666666" collapsed="false">Reports a Snap! Boolean False if the input&#xD;is False or 0; reports True otherwise.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="n"/><l><option>Boolean</option></l></block><block var="n"/><block s="reportNot"><block s="reportEquals"><block var="n"/><l>0</l></block></block></block></block></script></block-definition><block-definition s="make scalar %&apos;value&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="scalar? %s"><block var="value"/></custom-block><script><block s="doReport"><custom-block s="scalar-value helper %s"><block var="value"/></custom-block></block></script></block><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Make scalar called with non-singleton input </l><block var="value"/></list></block></custom-block></script></block-definition><block-definition s="$⍳-1.5-255-255-0 %&apos;n&apos;" type="reporter" category="lists"><comment x="0" y="0" w="290.6666666666667" collapsed="false">If the input is a positive integer, reports a list of the numbers&#xD;from 1 to that input.  (If the input is 0, reports an empty list.)&#xD;&#xD;If the input is a list of positive integers, reports an array with&#xD;the shape specified by the input (as in ⍴ reshape) in which&#xD;each item is a list of the indices of that item in the array&#xD;(so technically the shape has one more dimension&#xD;than the input, whose size is the size of the input).</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="n"/><l><option>list</option></l></block><script><block s="doIfElse"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="n"/></custom-block><l>1</l></block><script><block s="doIfElse"><custom-block s="zero? %n"><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block><block var="n"/></custom-block></custom-block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script><script><block s="doReport"><custom-block s="reshape helper %l %l"><block var="n"/><custom-block s="crossproduct %mult%l"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="$⍳-1.5-255-255-0 %n"><l></l></custom-block></autolambda><list></list></block><block var="n"/></block></custom-block></custom-block></block></script></block></script><script><custom-block s="error %txt"><l>Input to ⍳ can&apos;t be a list of lists.</l></custom-block></script></block></script><script><block s="doReport"><block s="reportIfElse"><custom-block s="zero? %n"><block var="n"/></custom-block><block s="reportNewList"><list></list></block><block s="reportNumbers"><l>1</l><block var="n"/></block></block></block></script></block></script></block-definition><block-definition s="where in %&apos;vector&apos; is $⍳-1.5-255-255-0 %&apos;items&apos;" type="reporter" category="lists"><comment x="0" y="0" w="334.6666666666667" collapsed="false">If the rank of the left input is one more than the rank of the right input,&#xD;reports the index of the right input in the left input, or if not found,&#xD;reports one more than the length of the left input.&#xD;&#xD;If the rank of the left input is equal to the rank of the right input,&#xD;reports a vector of the indices of the items of the right input&#xD;in the left input (mapping this function over the right input).&#xD;&#xD;If the rank of the left input is more than that of the right input by 2 or more,&#xD;reports a vector, the location of the right input in the left in each dimension.&#xD;&#xD;It is an error if the rank of the left input is less than that of the right input.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doIf"><block s="reportLessThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="vector"/></custom-block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="items"/></custom-block></block><script><custom-block s="error %txt"><l>Left input to ⍳ must have greater or equal rank to right input.</l></custom-block></script></block><block s="doIf"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="vector"/></custom-block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="items"/></custom-block></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="where in %l is $⍳-1.5-255-255-0 %s"><block var="vector"/><l></l></custom-block></autolambda><list></list></block><block var="items"/></block></block></script></block><block s="doIf"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="vector"/></custom-block><block s="reportSum"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="items"/></custom-block><l>1</l></block></block><script><block s="doSetVar"><l>result</l><block s="reportListIndex"><block var="items"/><block var="vector"/></block></block><block s="doReport"><block s="reportIfElse"><custom-block s="zero? %n"><block var="result"/></custom-block><block s="reportSum"><block s="reportListAttribute"><l><option>length</option></l><block var="vector"/></block><l>1</l></block><block var="result"/></block></block></script></block><block s="doSetVar"><l>result</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><custom-block s="%l deep contains %s"><l/><block var="items"/></custom-block></autolambda><list></list></block><block var="vector"/></block></block><block s="doIf"><block s="reportEquals"><block var="result"/><l></l></block><script><block s="doReport"><block s="reportSum"><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="vector"/></custom-block><l>1</l></block></block></script></block><block s="doReport"><block s="reportCONS"><block s="reportListIndex"><block var="result"/><block var="vector"/></block><custom-block s="flatten (ravel) $,-1-255-255-0 %l"><custom-block s="where in %l is $⍳-1.5-255-255-0 %s"><block var="result"/><block var="items"/></custom-block></custom-block></block></block></script></block-definition><block-definition s="crossproduct %&apos;lists&apos;" type="reporter" category="lists"><comment x="0" y="0" w="305.3333333333333" collapsed="false">This isn&apos;t an APL function, although it&apos;s related to the outer product.&#xD;&#xD;It takes any number of lists, and reports a list of all possible tuples with one item from each of the lists.  The length of the result is the product of the lengths of the inputs.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%l"></input></inputs><script><block s="doIfElse"><block s="reportListIsEmpty"><block var="lists"/></block><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list></list></block></list></block></block></script><script><block s="doDeclareVariables"><list><l>small</l></list></block><block s="doSetVar"><l>small</l><custom-block s="crossproduct %mult%l"><block s="reportCDR"><block var="lists"/></block></custom-block></block><block s="doReport"><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCONS"><block var="newitem"/><l/></block></autolambda><list></list></block><block var="small"/></block></autolambda><list><l>newitem</l></list></block><block s="reportListItem"><l>1</l><block var="lists"/></block></block></block></block></script></block></script></block-definition><block-definition s="%&apos;array&apos; deep contains %&apos;value&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="array"/><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doIf"><block s="reportListContainsItem"><block var="array"/><block var="value"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doReport"><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block s="reifyReporter"><autolambda><block s="reportOr"><l/><l/></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="%l deep contains %s"><l/><block var="value"/></custom-block></autolambda><list></list></block><block var="array"/></block></custom-block></block></script></block-definition><block-definition s="which of %&apos;items&apos; $ϵ-1-255-255-0 contained in %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="214.66666666666666" collapsed="false">Reports an array of Booleans the same shape&#xD;as the left input, indicating which of the atoms&#xD;in the left input appear anywhere in the right&#xD;input.  &#xD;(The structure of the right input doesn&apos;t matter.)</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="items"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="which of %s $ϵ-1-255-255-0 contained in %l"><l></l><block var="array"/></custom-block></autolambda><list></list></block><block var="items"/></block></block></script><script><block s="doReport"><block s="reportListContainsItem"><custom-block s="flatten (ravel) $,-1-255-255-0 %l"><block var="array"/></custom-block><block var="items"/></block></block></script></block></script></block-definition><block-definition s="catenate %&apos;left&apos; $,-1-255-255-0 %&apos;right&apos;" type="reporter" category="lists"><comment x="0" y="0" w="190.66666666666666" collapsed="false">Like append, but:&#xD;&#xD;A scalar input is treated as an array the same shape as the other input except that the last item of the shape is 1.&#xD;&#xD;If the two inputs are of different ranks,&#xD;the function is mapped over the larger ranked input.&#xD;&#xD;Catenate adds new columns, by appending to each row.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="left"/><l><option>list</option></l></block></block><script><block s="doIfElse"><block s="reportGreaterThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="right"/></custom-block><l>1</l></block><script><block s="doSetVar"><l>left</l><custom-block s="reshape as %l $⍴-1-255-255-0 items of %l"><block s="reportConcatenatedLists"><list><custom-block s="drop %n $↓-1-255-255-0 from %l"><l>-1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="right"/></custom-block></custom-block><block s="reportNewList"><list><l>1</l></list></block></list></block><block s="reportNewList"><list><block var="left"/></list></block></custom-block></block></script><script><block s="doSetVar"><l>left</l><block s="reportNewList"><list><block var="left"/></list></block></block></script></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="right"/><l><option>list</option></l></block></block><script><block s="doIfElse"><block s="reportGreaterThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><l>1</l></block><script><block s="doSetVar"><l>right</l><custom-block s="reshape as %l $⍴-1-255-255-0 items of %l"><block s="reportConcatenatedLists"><list><custom-block s="drop %n $↓-1-255-255-0 from %l"><l>-1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="left"/></custom-block></custom-block><block s="reportNewList"><list><l>1</l></list></block></list></block><block s="reportNewList"><list><block var="right"/></list></block></custom-block></block></script><script><block s="doSetVar"><l>right</l><block s="reportNewList"><list><block var="right"/></list></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="right"/></custom-block></block><script><block s="doIfElse"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><l>1</l></block><script><block s="doReport"><block s="reportConcatenatedLists"><list><block var="left"/><block var="right"/></list></block></block></script><script><block s="doReport"><custom-block s="multimap %repRing %mult%l"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><l></l><l></l></custom-block></autolambda><list></list></block><list><block var="left"/><block var="right"/></list></custom-block></block></script></block></script></block><block s="doIfElse"><block s="reportLessThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="right"/></custom-block></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><block var="left"/><l></l></custom-block></autolambda><list></list></block><block var="right"/></block></block></script><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><l></l><block var="right"/></custom-block></autolambda><list></list></block><block var="left"/></block></block></script></block></script></block-definition><block-definition s="scalar value %&apos;value&apos;" type="reporter" category="lists"><comment x="0" y="0" w="221.33333333333334" collapsed="false">If the input is a nesting of length=1 lists, which&#xD;APL treats as a scalar (the innermost item)&#xD;for many purposes, report that innermost scalar.&#xD;Otherwise, report the input as is.&#xD;&#xD;Exposing this block for users is important because Snap! /does not/ treat such a nesting&#xD;as a scalar, so you might need to use this in&#xD;translating an APL program to Snap!.&#xD;(But the functions in the APL library already use&#xD;this block as needed.)</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><custom-block s="scalar? %s"><block var="value"/></custom-block><custom-block s="scalar-value helper %s"><block var="value"/></custom-block><block var="value"/></block></block></script></block-definition><block-definition s="grade up $⍋-1.5-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="190.66666666666666" collapsed="false">Reports a vector of indices of the items of the input, in order of the values of the items, so that&#xD;&#xD;item (grade up (foo)) of (foo)&#xD;&#xD;reports the items in sorted order, smallest to largest.  For a matrix, sorts the rows based on their first items, or if those are equal, based on their second items, etc.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l><option>last</option></l><l/></block></autolambda><list></list></block><custom-block s="sort %l ordering with %predRing"><custom-block s="multimap %repRing %mult%l"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><l></l><l></l></custom-block></autolambda><list></list></block><list><block var="array"/><custom-block s="$⍳-1.5-255-255-0 %n"><block s="reportListAttribute"><l><option>length</option></l><block var="array"/></block></custom-block></list></custom-block><block s="reifyPredicate"><autolambda><custom-block s="sort helper %l %l"><l/><l/></custom-block></autolambda><list></list></block></custom-block></block></block></script></block-definition><block-definition s="sort %&apos;data&apos; ordering with %&apos;function&apos;" type="reporter" category="other"><comment x="0" y="0" w="161.14285714285708" collapsed="false">Reports a sorted version of the list in its first input slot, using the comparison function in the second input slot.  For a list of numbers, using &lt; as the comparison function will sort from low to high; using &gt; will sort from high to low.</comment><header></header><code></code><translations>ca:ordena _ segons criteri _&#xD;</translations><inputs><input type="%l"></input><input type="%predRing"></input></inputs><script><block s="doDeclareVariables"><list><l>even items</l><l>odd items</l><l>merge</l><l>split</l><l>copy of data</l><l>id</l></list></block><block s="doSetVar"><l>id</l><block s="reifyScript"><script><block s="doReport"><l></l></block></script><list></list></block></block><block s="doSetVar"><l>copy of data</l><block s="reportMap"><block var="id"/><block var="data"/></block></block><block s="doSetVar"><l>split</l><block s="reifyScript"><script><block s="doSetVar"><l>even items</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>odd items</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportListIsEmpty"><block var="copy of data"/></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="copy of data"/></block><block var="odd items"/></block><block s="doDeleteFromList"><l>1</l><block var="copy of data"/></block><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block var="copy of data"/></block></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="copy of data"/></block><block var="even items"/></block><block s="doDeleteFromList"><l>1</l><block var="copy of data"/></block></script></block></script></block></script><list></list></block></block><block s="doSetVar"><l>merge</l><block s="reifyScript"><script><block s="doIf"><block s="reportEquals"><block var="#1"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#2"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="#2"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="#1"/></block></script></block><block s="doIfElse"><block s="evaluate"><block var="function"/><list><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="reportListItem"><l>1</l><block var="#2"/></block></list></block><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#1"/></block><block s="evaluate"><block var="merge"/><list><block s="reportCDR"><block var="#1"/></block><block var="#2"/></list></block></block></block></script><script><block s="doReport"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="#2"/></block><block s="evaluate"><block var="merge"/><list><block var="#1"/><block s="reportCDR"><block var="#2"/></block></list></block></block></block></script></block></script><list><l>#1</l><l>#2</l></list></block></block><block s="doIf"><block s="reportEquals"><block var="data"/><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list></list></block></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doRun"><block var="split"/><list></list></block><block s="doReport"><block s="evaluate"><block var="merge"/><list><custom-block s="sort %l ordering with %predRing"><block var="odd items"/><block var="function"/></custom-block><custom-block s="sort %l ordering with %predRing"><block var="even items"/><block var="function"/></custom-block></list></block></block></script></block-definition><block-definition s="sort helper %&apos;rowA&apos; %&apos;rowB&apos;" type="reporter" category="other"><comment x="0" y="0" w="166" collapsed="false">Compares two vectors for sorting.&#xD;Compare first items; if those are equal compare second items; etc.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="rowA"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block var="rowB"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doIf"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="rowA"/></block><block s="reportListItem"><l>1</l><block var="rowB"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListItem"><l>1</l><block var="rowA"/></block><block s="reportListItem"><l>1</l><block var="rowB"/></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doReport"><custom-block s="sort helper %l %l"><block s="reportCDR"><block var="rowA"/></block><block s="reportCDR"><block var="rowB"/></block></custom-block></block></script></block-definition><block-definition s="grade down $⍒-1.5-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="190.66666666666666" collapsed="false">Reports a vector of indices of the items of the input, in order of the values of the items, so that&#xD;&#xD;item (grade down (foo)) of (foo)&#xD;&#xD;reports the items in sorted order, largest to smallest.  For a matrix, sorts the rows based on their first items, or if those are equal, based on their second items, etc.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l><option>last</option></l><l/></block></autolambda><list></list></block><custom-block s="sort %l ordering with %predRing"><custom-block s="multimap %repRing %mult%l"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><l></l><l></l></custom-block></autolambda><list></list></block><list><block var="array"/><custom-block s="$⍳-1.5-255-255-0 %n"><block s="reportListAttribute"><l><option>length</option></l><block var="array"/></block></custom-block></list></custom-block><block s="reifyPredicate"><autolambda><custom-block s="NOT $&#126;-1-255-255-0 %s"><custom-block s="sort helper %l %l"><l/><l/></custom-block></custom-block></autolambda><list></list></block></custom-block></block></block></script></block-definition><block-definition s="select rows (compress columns) %&apos;Booleans&apos; $/-1-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="210.66666666666666" collapsed="false">The left input must be a vector of Booleans&#xD;(either Snap! form or APL form); the right input must be an array whose first dimension is equal to the length of the left input.  The block reports an array of the same rank as the right input, containing only those items (rows, for a matrix) for which the corresponding Boolean is True (or 1).</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="rowize vector %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block s="reportKeep"><block s="reifyPredicate"><autolambda><custom-block s="truth %s"><block s="reportListItem"><l>1</l><l/></block></custom-block></autolambda><list></list></block><custom-block s="multimap %repRing %mult%l"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><l></l><l></l></custom-block></autolambda><list></list></block><list><block var="Booleans"/><block var="array"/></list></custom-block></block></block></custom-block></block></script></block-definition><block-definition s="rowize vector %&apos;vec&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportAnd"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="vec"/></custom-block><l>2</l></block><block s="reportEquals"><block s="reportListItem"><l>2</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="vec"/></custom-block></block><l>1</l></block></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="vec"/></block><block var="vec"/></block></block></script></block-definition><block-definition s="select columns (compress rows) %&apos;bool&apos; $⌿-1.5-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="219.33333333333334" collapsed="false">The left input must be a vector of Booleans&#xD;(either Snap! form or APL form); the right input must be an array whose last dimension is equal to the length of the left input.  The block reports an array of the same rank as the right input, containing only those items (columns, for a matrix) for which the corresponding Boolean is True (or 1).</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="columnwise %repRing %l"><block s="reifyReporter"><autolambda><custom-block s="select rows (compress columns) %l $/-1-255-255-0 %l"><block var="bool"/><l/></custom-block></autolambda><list></list></block><block var="array"/></custom-block></block></script></block-definition><block-definition s="columnwise %&apos;function&apos; %&apos;data&apos;" type="reporter" category="control"><comment x="0" y="0" w="212" collapsed="false">Turns a row-wise (in Lisp terminology) function&#xD;into a column-wise one.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="rowize vector %l"><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block s="evaluate"><block var="function"/><list><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block var="data"/></custom-block></list></block></custom-block></custom-block></block></script></block-definition><block-definition s="reverse column order (row contents) $⏀-1-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="206" collapsed="false">Reverses the order of the columns of the input, which is a reflection through a vertical axis, as the ⏀ symbol suggests.</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="columnwise %repRing %l"><block s="reifyReporter"><autolambda><custom-block s="reverse row order (column contents) $⦵-1.5-255-255-0 %l"><l/></custom-block></autolambda><list></list></block><block var="array"/></custom-block></block></script></block-definition><block-definition s="combine in columns (reduce by row vectors) %&apos;function&apos; $⌿-1.5-255-255-0 %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="285.3333333333333" collapsed="false">This function has two names because there are two ways&#xD;to understand it.&#xD;&#xD;Lisp way:  A matrix is a list of rows.  This block turns it into a list of columns, and combines the numbers in each column, producing one value for the entire column.&#xD;&#xD;APL way:  A matrix is made of vectors.  This block takes each row as a vector, and does vector arithmetic on the rows, producing one row as the result.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%l"></input></inputs><script><block s="doReport"><custom-block s="columnwise %repRing %l"><block s="reifyReporter"><autolambda><custom-block s="combine in rows (reduce by column vectors) %repRing $/-1-255-255-0 %l"><block var="function"/><l/></custom-block></autolambda><list></list></block><block var="array"/></custom-block></block></script></block-definition><block-definition s="catenate vertically %&apos;left&apos; $⍪-1.5-255-255-0 %&apos;right&apos;" type="reporter" category="lists"><comment x="0" y="0" w="190.66666666666666" collapsed="false">Like append, but:&#xD;&#xD;A scalar input is treated as a vector&#xD;of length 1.&#xD;&#xD;If the two inputs are of different ranks,&#xD;the function is mapped over the larger ranked input.&#xD;&#xD;Catenate vertically adds new rows, by appending to each column.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="left"/><l><option>list</option></l></block></block><script><block s="doIfElse"><block s="reportGreaterThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="right"/></custom-block><l>1</l></block><script><block s="doSetVar"><l>left</l><custom-block s="reshape as %l $⍴-1-255-255-0 items of %l"><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><l>1</l></list></block><custom-block s="drop %n $↓-1-255-255-0 from %l"><l>1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="right"/></custom-block></custom-block></list></block><block s="reportNewList"><list><block var="left"/></list></block></custom-block></block></script><script><block s="doSetVar"><l>left</l><block s="reportNewList"><list><block var="left"/></list></block></block></script></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="right"/><l><option>list</option></l></block></block><script><block s="doIfElse"><block s="reportGreaterThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><l>1</l></block><script><block s="doSetVar"><l>right</l><custom-block s="reshape as %l $⍴-1-255-255-0 items of %l"><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><l>1</l></list></block><custom-block s="drop %n $↓-1-255-255-0 from %l"><l>1</l><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="left"/></custom-block></custom-block></list></block><block s="reportNewList"><list><block var="right"/></list></block></custom-block></block></script><script><block s="doSetVar"><l>right</l><block s="reportNewList"><list><block var="right"/></list></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="right"/></custom-block></block><script><block s="doIfElse"><block s="reportEquals"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><l>1</l></block><script><block s="doReport"><block s="reportConcatenatedLists"><list><block var="left"/><block var="right"/></list></block></block></script><script><block s="doReport"><custom-block s="transpose $⍉-1.5-255-255-0 %l"><custom-block s="catenate %s $,-1-255-255-0 %s"><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block var="left"/></custom-block><custom-block s="transpose $⍉-1.5-255-255-0 %l"><block var="right"/></custom-block></custom-block></custom-block></block></script></block></script></block><block s="doIfElse"><block s="reportLessThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="left"/></custom-block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="right"/></custom-block></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><block var="left"/><l></l></custom-block></autolambda><list></list></block><block var="right"/></block></block></script><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="catenate %s $,-1-255-255-0 %s"><l></l><block var="right"/></custom-block></autolambda><list></list></block><block var="left"/></block></block></script></block></script><scripts><script x="254" y="497.7777777777774"><custom-block s="multimap %repRing %mult%l"><block s="reifyReporter"><script></script><list></list></block><list><l/><l/></list></custom-block></script></scripts></block-definition><block-definition s="%&apos;a&apos; scalar join %&apos;b&apos;" type="reporter" category="operators"><comment x="0" y="0" w="219.33333333333334" collapsed="false">A hyperblock version of JOIN.  The regular JOIN isn&apos;t hyperized because it can accept a list as input, representing it as text.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><custom-block s="scalar -&gt; hyper %repRing"><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l></list></block></autolambda><list></list></block></custom-block><list><block var="a"/><block var="b"/></list></block></block></script></block-definition><block-definition s="take %&apos;howmany&apos; $↑-1-255-255-0 from %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="272" collapsed="false">A positive left input selects the first n items of the right input.&#xD;A negative left input selects the last abs(n) items&#xD;of the right input.&#xD;&#xD;If the right input is a matrix, a numeric left input selects rows;&#xD;the left input may also be a two-item vector, in which case&#xD;the first number is applied to the rows&#xD;and the second number is applied to the columns.&#xD;Similarly for higher-dimension arrays. </comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="howmany"/><l><option>number</option></l></block><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="howmany"/><l>0</l></block><block s="reportListItem"><block s="reportSum"><custom-block s="$⍳-1.5-255-255-0 %n"><block s="reportMonadic"><l><option>abs</option></l><block var="howmany"/></block></custom-block><block s="reportSum"><block s="reportListAttribute"><l><option>length</option></l><block var="array"/></block><block var="howmany"/></block></block><block var="array"/></block><block s="reportListItem"><custom-block s="$⍳-1.5-255-255-0 %n"><block var="howmany"/></custom-block><block var="array"/></block></block></block></script></block><block s="doIf"><block s="reportGreaterThan"><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="howmany"/></custom-block><l>1</l></block><script><custom-block s="error %txt"><l>Left input to take can&apos;t be a matrix.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="howmany"/></block><custom-block s="rank of $⍴⍴-1-255-255-0 %l"><block var="array"/></custom-block></block><script><custom-block s="error %txt"><l>Length of item vector &gt; rank of array in take.</l></custom-block></script></block><block s="doReport"><block s="reportListItem"><custom-block s="reverse row order (column contents) $⦵-1.5-255-255-0 %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportLessThan"><block var="value"/><l>0</l></block><block s="reportSum"><custom-block s="$⍳-1.5-255-255-0 %n"><block s="reportMonadic"><l><option>abs</option></l><block var="value"/></block></custom-block><block s="reportSum"><block s="reportListItem"><block var="index"/><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="array"/></custom-block></block><block var="value"/></block></block><custom-block s="$⍳-1.5-255-255-0 %n"><block var="value"/></custom-block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="howmany"/></block></custom-block><block var="array"/></block></block></script></block-definition><block-definition s="drop %&apos;howmany&apos; $↓-1-255-255-0 from %&apos;array&apos;" type="reporter" category="lists"><comment x="0" y="0" w="306" collapsed="false">A positive left input selects all but the first n items of the right input.&#xD;A negative left input selects all but the last abs(n) items&#xD;of the right input.&#xD;&#xD;If the right input is a matrix, a numeric left input selects rows;&#xD;the left input may also be a two-item vector, in which case&#xD;the first number is applied to the rows&#xD;and the second number is applied to the columns.&#xD;Similarly for higher-dimension arrays. </comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="howmany"/><l><option>number</option></l></block><script><block s="doReport"><custom-block s="take %n $↑-1-255-255-0 from %l"><block s="reportProduct"><block s="reportMonadic"><l><option>neg</option></l><custom-block s="signum $×-1-255-255-0 %n"><block var="howmany"/></custom-block></block><block s="reportDifference"><block s="reportListAttribute"><l><option>length</option></l><block var="array"/></block><block s="reportMonadic"><l><option>abs</option></l><block var="howmany"/></block></block></block><block var="array"/></custom-block></block></script></block><block s="doReport"><custom-block s="take %n $↑-1-255-255-0 from %l"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportLessThan"><block var="value"/><l>0</l></block><block s="reportSum"><block s="reportListItem"><block var="index"/><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="array"/></custom-block></block><block var="value"/></block><block s="reportDifference"><block var="value"/><block s="reportListItem"><block var="index"/><custom-block s="shape of $⍴-1-255-255-0 %l"><block var="array"/></custom-block></block></block></block></autolambda><list><l>value</l><l>index</l></list></block><block var="howmany"/></block><block var="array"/></custom-block></block></script></block-definition><block-definition s="reshape helper %&apos;shape&apos; %&apos;data&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportListIsEmpty"><block var="shape"/></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block s="reportCombine"><block var="shape"/><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block><l>0</l></block><script><block s="doReport"><block s="reportNewList"><list></list></block></block></script></block><block s="doDeclareVariables"><list><l>partial</l></list></block><block s="doSetVar"><l>partial</l><block s="reportNewList"><list></list></block></block><block s="doIfElse"><block s="reportListIsEmpty"><block s="reportCDR"><block var="shape"/></block></block><script><block s="doRepeat"><block s="reportListItem"><l>1</l><block var="shape"/></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="data"/></block><block var="partial"/></block><block s="doSetVar"><l>data</l><block s="reportConcatenatedLists"><list><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block></list></block></block></script></block></script><script><block s="doRepeat"><block s="reportListItem"><l>1</l><block var="shape"/></block><script><block s="doAddToList"><custom-block s="reshape helper %l %l"><block s="reportCDR"><block var="shape"/></block><block var="data"/></custom-block><block var="partial"/></block><block s="doRepeat"><block s="reportModulus"><block s="reportCombine"><block s="reportCDR"><block var="shape"/></block><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block></block><script><block s="doSetVar"><l>data</l><block s="reportConcatenatedLists"><list><block s="reportCDR"><block var="data"/></block><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="data"/></block></list></block></list></block></block></script></block></script></block></script></block><block s="doReport"><block var="partial"/></block></script></block-definition><block-definition s="deep map %&apos;function&apos; %&apos;atom?&apos; %&apos;data&apos;" type="reporter" category="other"><comment x="0" y="0" w="320.6666666666667" collapsed="false">Applies the function to each &quot;atom&quot; of the data.  What&apos;s an atom?&#xD;Something for which the predicate input reports true.</comment><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%predRing"></input><input type="%l"></input></inputs><script><block s="doIf"><custom-block s="truth %s"><block s="evaluate"><block var="atom?"/><list><block var="data"/></list></block></custom-block><script><block s="doReport"><block s="evaluate"><block var="function"/><list><block var="data"/></list></block></block></script></block><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="deep map %repRing %predRing %l"><block var="function"/><block var="atom?"/><l/></custom-block></autolambda><list></list></block><block var="data"/></block></block></script></block-definition><block-definition s="nth item 1 %&apos;n&apos; %&apos;data&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="n"/><l>0</l></block><script><block s="doReport"><block var="data"/></block></script></block><block s="doReport"><custom-block s="nth item 1 %n %l"><block s="reportDifference"><block var="n"/><l>1</l></block><block s="reportListItem"><l>1</l><block var="data"/></block></custom-block></block></script></block-definition><block-definition s="Clear Plot" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>clearScope()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Copy Scope (Scope Capture variable)" type="command" category="looks"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>copyScopeToSnap</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Start Snap! Recording" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>startSnapRecording()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Save Snap! Recording" type="command" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>saveSnapRecording()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="RunPlaybackScript %&apos;script&apos;" type="command" category="control"><comment x="0" y="0" w="382" collapsed="false">This block allows for the generation and manipulation of Snap! blocks using syntax that is similar to that of the Logo programming language.&#xD;&#xD;Each line of a valid script is interpreted as an individual command. There are two types of commands:&#xD;1) Generation&#xD;2) Manipulation&#xD;&#xD;The basic format of a Generation command is:&#xD;x = BlockName [arg1 arg2]&#xD;&#xD;where:&#xD;- &quot;x&quot; is a variable name. Variables are stored in the global scope by default and saved between both individual commands and different calls of this block within the current Snap! project.&#xD;- &quot;BlockName&quot; is the name of the block to generate. This can be either a shortened version of a block name, such as, &quot;Move&quot; or the exact, &quot;spec&quot; of a block, such as, &quot;Play %txt For %txt Note Length and Wait&quot;&#xD;- &quot;arg1&quot; and &quot;arg2&quot; refer to the arguments that should be passed into the newly-generated block.&#xD;&#xD;The basic format of a Manipulation command is:&#xD;Manipulate [x arg1 arg2]&#xD;&#xD;where:&#xD;- &quot;x&quot; is a variable name referring to a previously-generated block.&#xD;- &quot;Manipulate&quot; is one of the following commands:&#xD;   - SetInput - sets the input of the specified block to the subsequent arguments (specified by arg1, arg2, etc.)&#xD;   - Snap - snaps the specified block to the block represented by, &quot;arg1&quot; (interpreted as a variable name) such that the block referred to by x is above the block referred to by arg1&#xD;   - Insert - inserts the specified block into the block represented by, &quot;arg1&quot; (interpreted as a variable name) such that the block referred to by x is inside of the C-shaped block referred to by arg1&#xD;   - Delete - deletes the specified block&#xD;   - Exec - executes the specified block (and any blocks snapped to it)&#xD;   - ResetBounds - causes RunPlaybackScript to begin generating blocks from the initial block generation position (top-left of the Snap! script area)</comment><header></header><code></code><translations></translations><inputs><input type="%mlt"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>runPlaybackScript(</l><block var="script"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Get Hint" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>getHint()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Fast Fourier Transform %&apos;input list&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>fastFourierTransform(</l><block var="input list"/><l>)</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Resume Playback" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>resumePlaybackScript()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Pause Playback" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>pausePlaybackScript()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="Stop Playback" type="command" category="control"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>message</l></list></block><block s="doSetVar"><l>message</l><block s="reportJoinWords"><list><l>stopPlaybackScript()</l></list></block></block><custom-block s="SendMessageToSoundScope %s"><block var="message"/></custom-block></script></block-definition><block-definition s="note builder (letter %&apos;letter&apos; symbol %&apos;symbol&apos; octave %&apos;octave&apos; )" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs><input type="%s">C<options>A&#xD;B&#xD;C&#xD;D&#xD;E&#xD;F&#xD;G</options></input><input type="%s"><options>#&#xD;b</options></input><input type="%s">4<options>1&#xD;2&#xD;3&#xD;4&#xD;5&#xD;6&#xD;7</options></input></inputs><script><block s="doIf"><block s="reportEquals"><block var="symbol"/><l>b</l></block><script><block s="doDeclareVariables"><list><l>notes</l><l>index</l></list></block><block s="doSetVar"><l>notes</l><block s="reportNewList"><list><l>A</l><l>B</l><l>C</l><l>D</l><l>E</l><l>F</l><l>G</l></list></block></block><block s="doSetVar"><l>index</l><block s="reportListIndex"><block var="letter"/><block var="notes"/></block></block><block s="doIfElse"><block s="reportEquals"><block var="index"/><l>1</l></block><script><block s="doSetVar"><l>index</l><l>7</l></block></script><script><block s="doSetVar"><l>index</l><block s="reportDifference"><block s="reportListIndex"><block var="letter"/><block var="notes"/></block><l>1</l></block></block></script></block><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="letter"/><l>C</l></block><block s="reportEquals"><block var="letter"/><l>F</l></block></block><script><block s="doSetVar"><l>symbol</l><l></l></block></script><script><block s="doSetVar"><l>symbol</l><l>#</l></block></script></block><block s="doSetVar"><l>letter</l><block s="reportListItem"><block var="index"/><block var="notes"/></block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block var="letter"/><block var="symbol"/><block var="octave"/></list></block></block></script></block-definition><block-definition s="%&apos;p1&apos; XOR %&apos;p2&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%b"></input></inputs><script><block s="doReport"><block s="reportAnd"><block s="reportOr"><block var="p1"/><block var="p2"/></block><block s="reportNot"><block s="reportAnd"><block var="p1"/><block var="p2"/></block></block></block></block></script></block-definition><block-definition s="spec of %&apos;proc&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>console.log( proc.expression);&#xD;return proc.expression.blockSpec || proc.expression.definition.spec</l></block><list><block var="proc"/></list></block></block></script></block-definition><block-definition s="body of %&apos;proc&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>console.log( proc);&#xD;return proc.expression.definition.body;</l></block><list><block var="proc"/></list></block></block></script></block-definition><block-definition s="Palette visible %&apos;onoff&apos;" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">0<options>-1 force off&#xD;0 switch&#xD;1 force on</options></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>enable</l></list><l>/** Enable/disable */&#xD;console.log( world._width);&#xD;if(enable == 0){&#xD; if( world._width){ enable = 1}&#xD; else { enable = -1};&#xD;}&#xD;&#xD;console.log( enable);&#xD;let ide = world.children[ 0];&#xD;if( enable &lt; 0){ /** Hide palette **/&#xD;  world._width = ide.paletteWidth;&#xD;  ide.paletteWidth = 35;&#xD;  ide.fixLayout();&#xD; }&#xD;else{ /** Show palette **/&#xD; ide.paletteWidth = world._width || 200;&#xD; ide.fixLayout();&#xD; delete world._width;&#xD;}</l></block><list><block var="onoff"/></list></block></script></block-definition><block-definition s="keys... %&apos;keys&apos; pressed?" type="predicate" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportKeyPressed"><l></l></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="keys"/><l> </l></block></block></block></block></script></block-definition><block-definition s="params %&apos;x&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%mult%upvar"></input></inputs></block-definition><block-definition s="copy %&apos;pat&apos; as %&apos;prefix&apos; $nl %&apos;isGlobal&apos; %&apos;type&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%repRing"></input><input type="%txt"></input><input type="%b">true<options>command&#xD;reporter&#xD;predicate</options></input><input type="%txt"><options>command&#xD;reporter&#xD;predicate</options></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>pat</l><l>prefix</l><l>isGlobal</l><l>type</l></list><l>let def=new CustomBlockDefinition( prefix+pat.expression.definition.spec);&#xD;//copy properties of pat&#xD;let def_pat = pat.expression.definition;&#xD;def.category = def_pat.category;&#xD;def.declarations = def_pat.declarations;&#xD;def.isGlobal = isGlobal;&#xD;def.type = type;&#xD;console.log( def_pat.body);&#xD;//start procedure body&#xD;def.body = def_pat.body;&#xD;&#xD;//register with IDE&#xD;if( def.isGlobal){&#xD;  this.parentThatIsA(StageMorph).globalBlocks.push( def);&#xD;}else{&#xD;  this.customBlocks.push(def)&#xD;};&#xD;&#xD;world.children[0].flushPaletteCache();&#xD;world.children[0].refreshPalette();</l></block><list><block var="pat"/><block var="prefix"/><block var="isGlobal"/><block var="type"/></list></block></script></block-definition><block-definition s=". %&apos;x&apos; %&apos;y&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs></block-definition><block-definition s="* %&apos;x&apos; %&apos;y&apos;" type="reporter" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs></block-definition><block-definition s="define %&apos;spec&apos; like %&apos;pat&apos; $nl %&apos;body&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%repRing"></input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>spec</l><l>body</l><l>pat</l></list><l>let def=new CustomBlockDefinition( spec+pat.expression.definition.spec);&#xD;//copy properties of pat&#xD;let def_pat = pat.expression.definition;&#xD;def.category = def_pat.category;&#xD;def.isGlobal = def_pat.isGlobal;&#xD;def.type = def_pat.type;&#xD;def.declarations = def_pat.declarations;&#xD;&#xD;//start procedure body&#xD;def.body = new Context( null, body.expression.fullCopy());&#xD;def.body.inputs = Array.from( def.declarations.keys());&#xD;&#xD;//register with IDE&#xD;if( def.isGlobal){&#xD;  this.parentThatIsA(StageMorph).globalBlocks.push( def);&#xD;}else{&#xD;  this.customBlocks.push(def)&#xD;};&#xD;&#xD;world.children[0].flushPaletteCache();&#xD;world.children[0].refreshPalette();</l></block><list><block var="spec"/><block var="body"/><block var="pat"/></list></block></script></block-definition><block-definition s="define %&apos;name&apos; %&apos;param defs&apos; $nl global? %&apos;scope&apos; type %&apos;type&apos; category %&apos;cat&apos; $nl %&apos;body&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%mult%s"></input><input type="%b">true<options>global</options></input><input type="%txt" readonly="true">command<options>command&#xD;reporter&#xD;predicate</options></input><input type="%txt">other<options>motion&#xD;control&#xD;looks&#xD;sensing&#xD;sound&#xD;operators&#xD;pen&#xD;variables&#xD;other</options></input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>name</l><l>body</l><l>scope</l><l>type</l><l>cat</l><l>params</l></list><l>let _params = params.itemsArray();&#xD;let _inputs = Array.from( _params, v =&gt; v[0] );&#xD;let spec = name + (_inputs.length ?" %"+ _inputs.join( " %") : "");&#xD;let _declarations = new Map();&#xD;_params.forEach( p =&gt; _declarations.set( p[0], p[1]));&#xD;&#xD;//build definition&#xD;let def = new CustomBlockDefinition( spec);&#xD;def.category = cat;&#xD;def.isGlobal = scope;&#xD;def.type = type;&#xD;def.declarations = _declarations;&#xD;&#xD;//start procedure body&#xD;def.body = new Context( null, body.expression.fullCopy());&#xD;def.body.inputs = _inputs;&#xD;&#xD;console.log( def);&#xD;&#xD;//register with IDE&#xD;if( def.isGlobal){&#xD;  this.parentThatIsA(StageMorph).globalBlocks.push( def);&#xD;}else{&#xD;  this.customBlocks.push( def)&#xD;};&#xD;&#xD;world.children[0].flushPaletteCache();&#xD;world.children[0].refreshPalette();</l></block><list><block var="name"/><block var="body"/><block var="scope"/><block var="type"/><block var="cat"/><block var="param defs"/></list></block></script></block-definition><block-definition s="param def %&apos;x&apos; %&apos;spec&apos; $nl %&apos;val&apos; %&apos;opt&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s">%s</input><input type="%s"></input><input type="%mlt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>x, spec, val, opt</l></list><l>return [x, [spec, val, opt, false]];</l></block><list><block var="x"/><block var="spec"/><block var="val"/><block var="opt"/></list></block></block></script></block-definition><block-definition s="define %&apos;name&apos; %&apos;params&apos; $nl global? %&apos;scope&apos; type %&apos;type&apos; category %&apos;cat&apos; $nl %&apos;body&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%mult%upvar"></input><input type="%b">true<options>global</options></input><input type="%txt" readonly="true">command<options>command&#xD;reporter&#xD;predicate</options></input><input type="%txt">other<options>motion&#xD;control&#xD;looks&#xD;sensing&#xD;sound&#xD;operators&#xD;pen&#xD;variables&#xD;other</options></input><input type="%cs"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>name</l><l>body</l><l>scope</l><l>type</l><l>cat</l><l>params</l></list><l>let _inputs = params.itemsArray();&#xD;let _declarations = new Map();&#xD;_inputs.forEach( param =&gt; _declarations.set( param, [ "%s","","",false]));&#xD;let spec = name + (_inputs.length ?" %"+ _inputs.join( " %") : "");&#xD;&#xD;//build definition&#xD;let def = new CustomBlockDefinition( spec);&#xD;def.category = cat;&#xD;def.isGlobal = scope;&#xD;def.type = type;&#xD;def.declarations = _declarations;&#xD;&#xD;//start procedure body&#xD;def.body = new Context( null, body.expression.fullCopy());&#xD;def.body.inputs = _inputs;&#xD;&#xD;//register with IDE&#xD;if( def.isGlobal){&#xD;  this.parentThatIsA(StageMorph).globalBlocks.push( def);&#xD;}else{&#xD;  this.customBlocks.push( def)&#xD;};&#xD;&#xD;world.children[0].flushPaletteCache();&#xD;world.children[0].refreshPalette();</l></block><list><block var="name"/><block var="body"/><block var="scope"/><block var="type"/><block var="cat"/><block var="params"/></list></block></script></block-definition><block-definition s="type %&apos;t&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s">%s<options>Upvar=%upvar&#xD;Object=%obj&#xD;Number=%n&#xD;Command (inline)=%cmdRing&#xD;Command (C-shape)=%cs&#xD;Command (C-shape loop)=%ca&#xD;Text=%txt&#xD;Any type=%s&#xD;Reporter=%repRing&#xD;Any (unevaluated)=%anyUE&#xD;List=%l&#xD;Boolean (T/F)=%b&#xD;Predicate=%predRing&#xD;Boolean (unevaluated)=%boolUE&#xD;Special={&#xD;Multi-line=%mlt&#xD;Code=%code&#xD;}&#xD;Menu={&#xD;Messages=%msg&#xD;Objects=%spr&#xD;Costumes=%cst&#xD;Sounds=%snd&#xD;Variables=%var&#xD;Piano keyboard=%note&#xD;360° dial=%dir&#xD;}&#xD;Hidden={&#xD;Attribute=%att&#xD;Boolean=%bool&#xD;Clones=%cln&#xD;Color picker=%clr&#xD;Command=%cl&#xD;Command loop=%cla&#xD;Command (inside)=%cmd&#xD;Destination=%dst &#xD;Expansion=%exp&#xD;Get attribute=%get&#xD;Inheritables=%shd&#xD;Input name=%inputName&#xD;Image source=%imgsource&#xD;Location=%lo&#xD;Objects (includes self)=%self&#xD;Ring parameters=%ringparms&#xD;Script variables=%scriptVars&#xD;Touching=%col&#xD;With inputs=%inputs&#xD;Words=%words&#xD;}&#xD;Lists={&#xD;Audio properties (volume, ..., resolution)=%audio&#xD;Codification list maps (list, item, delimiter)=%codeListPart&#xD;Codification section maps (code, header)=%codeKind&#xD;Codification type maps (String, ..., false)=%mapValue&#xD;Date options (year, ..., time in milliseconds)=%dates&#xD;Delimiters (letter, ..., json)=%delim&#xD;Dimensions (current)=%dim&#xD;Effect (color, ..., negative)=%eff&#xD;Event (clicked, ..., stopped)=%interaction&#xD;Functions (abs, ..., 2^)=%fun&#xD;HSVA (hue, ..., transparency)=%hsva&#xD;Indices (1, last, random)=%idx&#xD;Indices (1, last, all)=%ida&#xD;Instrument ((1) sine, ... (4) triangle)=%inst&#xD;Image properties (name, ..., pixels)=%img&#xD;Keys (0, ..., z)=%key&#xD;Layer depth (front, back)=%layer&#xD;Month (January, ..., December)=%month&#xD;Pen values (size, ..., transparency)=%pen&#xD;Relation (distance, direction)=%rel&#xD;Sample rates (22.05 kHz, ..., 96 kHz)=%rate&#xD;Settings (turbo mode, ..., mirror video)=%setting&#xD;Sound properties (name, ..., samples)=%aa &#xD;Stop choices (all, ..., other scripts in sprite)=%stopChoices&#xD;Text functions (encode URI, ..., hex sha512 hash)=%txtfun&#xD;Types (number, ..., predicate)=%typ&#xD;Value at location (hue, ..., sprites)=%asp&#xD;Video options (snap, motion, direction)=%vid&#xD;}&#xD;Bugged={&#xD;3 lists=%lst&#xD;Code mapping=%codeKind&#xD;Command=%c&#xD;Command loop=%loop&#xD;Command ring=%rc&#xD;Function=%f&#xD;Key (for hat)=%keyHat&#xD;Message (for hat)=%msgHat&#xD;Predicate ring=%rp&#xD;Reporter ring=%rr&#xD;Reporter slot=%r&#xD;Reporter slot (?)=%p&#xD;Template=%t&#xD;}&#xD;Images and labels={&#xD;Break=%br&#xD;Green start flag=%greenflag&#xD;Clockwise arrow=%clockwise&#xD;Counter-clockwise arrow=%counterclockwise&#xD;Lightning=%blitz&#xD;Loop arrow=%loopArrow&#xD;Pause icon=%pause&#xD;Stop sign=%stop&#xD;Turtle=%turtle&#xD;Turtle outline=%turtleOutline&#xD;}</options></input></inputs><script><block s="doReport"><block var="t"/></block></script></block-definition><block-definition s="rep1* %&apos;x&apos; %&apos;y&apos;" type="reporter" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="params %mult%upvar"><list><l>x</l><l>y</l></list></custom-block><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>88</l></block><block s="doReport"><block s="reportSum"><block var="x"/><block s="reportSum"><block var="y"/><block var="a"/></block></block></block></script></block-definition><block-definition s="rep4 %x %y %z" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%s">XX</input><input type="%b">true</input><input type="%ca">X<options>A&#xD;B&#xD;C&#xD;X</options></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>88</l></block><block s="doReport"><block s="reportJoinWords"><list><block var="a"/><block var="x"/><block var="y"/><block var="z"/></list></block></block></script></block-definition><block-definition s="rep2 %x %y" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>88</l></block><block s="doSayFor"><block s="reportSum"><block var="x"/><block s="reportSum"><block var="y"/><block var="a"/></block></block><l>1</l></block></script></block-definition><block-definition s="cmd1. %&apos;x&apos; %&apos;y&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><custom-block s="params %mult%upvar"><list><l>x</l><l>y</l></list></custom-block><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>88</l></block><block s="doSayFor"><block s="reportSum"><block var="x"/><block s="reportSum"><block var="y"/><block var="a"/></block></block><l>1</l></block></script></block-definition><block-definition s="%&apos;width/height/size&apos; of text %&apos;text&apos; with size %&apos;size&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">size<options>width&#xD;height&#xD;size</options></input><input type="%s"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="width/height/size"/><l>size</l></block><block s="reportProduct"><custom-block s="%s of text %s with size %n"><l>width</l><block var="text"/><block var="size"/></custom-block><custom-block s="%s of text %s with size %n"><l>height</l><block var="text"/><block var="size"/></custom-block></block><block s="evaluate"><block s="reifyReporter"><autolambda><block s="reportGetImageAttribute"><l></l><custom-block s="costume from text %s size %n"><block var="text"/><block var="size"/></custom-block></block></autolambda><list></list></block><list><block var="width/height/size"/></list></block></block></block></script></block-definition><block-definition s="set pallette size to %&apos;size&apos;" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">200</input></inputs><script><custom-block s="add %repRing to scripts"><block s="reifyReporter"><script><custom-block s="set pallette size to %n"><l>200</l></custom-block></script><list></list></block></custom-block><block s="doRun"><block s="reportJSFunction"><list><l>s</l></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.setPaletteWidth(s);</l></block><list><block var="size"/></list></block></script></block-definition><block-definition s="toggle palette visibility" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;if (ide.paletteWidth &gt; 0) {&#xD;  ide.setPaletteWidth(0);&#xD;} else {&#xD;  ide.setPaletteWidth(200);&#xD;}&#xD;  </l></block><list></list></block></script></block-definition><block-definition s="my coordinates" type="reporter" category="motion"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block></script></block-definition><block-definition s="glide %&apos;n&apos; seconds to %&apos;object&apos;" type="command" category="motion"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%s" readonly="true">mouse-pointer<options>function () {&#xD;var object = {&#xD;&quot;random position&quot; : &quot;random position&quot;,&#xD;&quot;mouse-pointer&quot; : &quot;mouse-pointer&quot;,&#xD;&quot;center&quot; : &quot;center&quot;,&#xD;&quot;&#126;&quot;: &quot;&#126;&quot;,&#xD;};&#xD;var spritesObj = {&#xD;},&#xD;homeSprite = world.children[0].sprites.itemsArray().find(e =&gt; (e.scripts == this.parent.parent))&#xD;world.children[0].sprites.itemsArray().map(e=&gt;e.name).forEach(&#xD;function (spriteName){&#xD;if (spriteName != (homeSprite||{name:null}).name){&#xD;spritesObj[spriteName] = spriteName;&#xD;}})&#xD;if (Object.keys(spritesObj).length &lt; 1){&#xD;delete object[&quot;&#126;&quot;];&#xD;}&#xD;return Object.assign(object, spritesObj);&#xD;}</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="object"/><l>mouse-pointer</l></block><script><block s="doSetVar"><l>object</l><block s="reportNewList"><list><block s="reportMouseX"></block><block s="reportMouseY"></block></list></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="object"/><l>random position</l></block><script><block s="doSetVar"><l>object</l><block s="reportNewList"><list><block s="reportRandom"><block s="reportAttributeOf"><l><option>left</option></l><l>Stage</l></block><block s="reportAttributeOf"><l><option>right</option></l><l>Stage</l></block></block><block s="reportRandom"><block s="reportAttributeOf"><l><option>top</option></l><l>Stage</l></block><block s="reportAttributeOf"><l><option>bottom</option></l><l>Stage</l></block></block></list></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="object"/><l>center</l></block><script><block s="doSetVar"><l>object</l><block s="reportNewList"><list><l>0</l><l>0</l></list></block></block></script><script><block s="doIfElse"><block s="reportListContainsItem"><block s="reportConcatenatedLists"><list><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportAskFor"><l></l><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>name</option></l></block></autolambda><list></list></block><list></list></block></autolambda><list></list></block><block s="reportAskFor"><block s="reportObject"><l>Stage</l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><list></list></block></block><block s="reportAskFor"><block s="reportObject"><l>Stage</l></block><block s="reifyReporter"><autolambda><block s="reportGet"><l><option>other sprites</option></l></block></autolambda><list></list></block><list></list></block></list></block><block var="object"/></block><script><block s="doSetVar"><l>object</l><block s="evaluate"><block s="reportAttributeOf"><block s="reifyReporter"><autolambda><custom-block s="my coordinates"></custom-block></autolambda><list></list></block><block var="object"/></block><list></list></block></block></script><script><block s="doSetVar"><l>object</l><custom-block s="my coordinates"></custom-block></block></script></block></script></block></script></block></script></block><block s="doGlide"><block var="n"/><block s="reportListItem"><l>1</l><block var="object"/></block><block s="reportListItem"><l>2</l><block var="object"/></block></block></script></block-definition><block-definition s="Base64 %&apos;which&apos; %&apos;input&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">encode<options>encode&#xD;decode</options></input><input type="%s">Hello world!</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>operation</l><l>input</l></list><l>if (!("Base64" in window))&#xD;Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",&#xD;encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f&lt;e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n&gt;&gt;2;o=(n&amp;3)&lt;&lt;4|r&gt;&gt;4;u=(r&amp;15)&lt;&lt;2|i&gt;&gt;6;a=i&amp;63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},&#xD;decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f&lt;e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s&lt;&lt;2|o&gt;&gt;4;r=(o&amp;15)&lt;&lt;4|u&gt;&gt;2;i=(u&amp;3)&lt;&lt;6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n&lt;e.length;n++){var r=e.charCodeAt(n);if(r&lt;128){t+=String.fromCharCode(r)}else if(r&gt;127&amp;&amp;r&lt;2048){t+=String.fromCharCode(r&gt;&gt;6|192);t+=String.fromCharCode(r&amp;63|128)}else{t+=String.fromCharCode(r&gt;&gt;12|224);t+=String.fromCharCode(r&gt;&gt;6&amp;63|128);t+=String.fromCharCode(r&amp;63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n&lt;e.length){r=e.charCodeAt(n);if(r&lt;128){t+=String.fromCharCode(r);n++}else if(r&gt;191&amp;&amp;r&lt;224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&amp;31)&lt;&lt;6|c2&amp;63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&amp;15)&lt;&lt;12|(c2&amp;63)&lt;&lt;6|c3&amp;63);n+=3}}return t}}&#xD;if (!([&apos;encode&apos;,&apos;decode&apos;].includes(operation)))&#xD;throw new Error(&apos;Unknown operation: &apos;+operation);&#xD;return Base64[operation](input);</l></block><list><block var="which"/><block var="input"/></list></block></block></script></block-definition><block-definition s="file save prompt name: %&apos;filename&apos; $nl contents: %&apos;body&apos; extension: %&apos;extension&apos;" type="command" category="other"><comment x="0" y="0" w="260.350692471591" collapsed="false">Downloads a file onto the user&apos;s computer.&#xD;URLs are supported, and required for PNG images and possibly other extensions.&#xD;&#xD;Update: Now supports backslashing of URLs to instead get a file with the URL as its binary contents.</comment><header></header><code></code><translations></translations><inputs><input type="%s">filename</input><input type="%mlt">body</input><input type="%s">.txt<options>.txt&#xD;.png&#xD;.rtf&#xD;.sb2&#xD;.sb3&#xD;.xml&#xD;.html</options></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>contents</l><l>filename</l><l>ext</l></list><l>var pattern = new RegExp(&apos;^(https?:\\/\\/)?&apos;+ // protocol&#xD;    &apos;((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|&apos;+ // domain name&#xD;    &apos;((\\d{1,3}\\.){3}\\d{1,3}))&apos;+ // OR ip (v4) address&#xD;    &apos;(\\:\\d+)?(\\/[-a-z\\d%_.&#126;+]*)*&apos;+ // port and path&#xD;    &apos;(\\?[;&amp;a-z\\d%_.&#126;+=-]*)?&apos;+ // query string&#xD;    &apos;(\\#[-a-z\\d_]*)?$&apos;,&apos;i&apos;); // fragment locator&#xD;if (ext[0] != &apos;.&apos;)&#xD;ext = &apos;.&apos;+ext;&#xD;var lnk = document.createElement(&apos;a&apos;),&#xD;    blob = new Blob([contents]);&#xD;if (pattern.test(contents) || (pattern.test(contents.slice(1)) &amp;&amp;&#xD;pattern[0] == &apos;\\&apos;)){&#xD;lnk.href = contents;&#xD;} else {&#xD;lnk.href = (window.URL||window.webkitURL).createObjectURL(blob);}&#xD;lnk.download = filename + ext;&#xD;lnk.click();</l></block><list><block var="body"/><block var="filename"/><block var="extension"/></list></block></script></block-definition><block-definition s="Script : Build %&apos;blocks&apos; $nl with module name: %&apos;name&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%mult%s"></input><input type="%s">user created</input></inputs><script><block s="doDeclareVariables"><list><l>XML</l></list></block><block s="doSetVar"><l>XML</l><block s="reportJoinWords"><list><l>&lt;blocks app="Snap! 6, https://snap.berkeley.edu" version="1"&gt;</l><block s="reportCombine"><block var="blocks"/><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l></list></block></autolambda><list></list></block></block><l>&lt;/blocks&gt;</l></list></block></block><block s="doRun"><block s="reportJSFunction"><list><l>xmlString</l><l>xmlname</l><l>silent</l></list><l>this.parentThatIsA(IDE_Morph).rawOpenBlocksString(xmlString, xmlname, true)</l></block><list><block var="XML"/><block var="name"/></list></block></script></block-definition><block-definition s="block spec %&apos;block&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="139" collapsed="false">Returns the spec of a block</comment><header></header><code></code><translations></translations><inputs><input type="%cmdRing"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>while (a.expression)    a = a.expression;return a.blockSpec</l></block><list><block var="block"/></list></block></block></script></block-definition><block-definition s="do %&apos;b&apos;" type="command" category="control"><comment x="0" y="0" w="134" collapsed="false">Executes a set of tasks</comment><header></header><code></code><translations></translations><inputs><input type="%mult%cs"></input></inputs><script><block s="doForEach"><l>item</l><block var="b"/><script><block s="doRun"><block var="item"/><list></list></block></script></block></script></block-definition><block-definition s="type %&apos;type&apos;" type="reporter" category="other"><comment x="0" y="0" w="214" collapsed="false">Menu for selecting parameter types</comment><header></header><code></code><translations></translations><inputs><input type="%mlt">%s<options>Upvar=%upvar&#xD;Object=%obj&#xD;Number=%n&#xD;Command (inline)=%cmdRing&#xD;Command (C-shape)=%cs&#xD;Command (C-shape loop)=%ca&#xD;Text=%txt&#xD;Any type=%s&#xD;Reporter=%repRing&#xD;Any (unevaluated)=%anyUE&#xD;List=%l&#xD;Boolean (T/F)=%b&#xD;Predicate=%predRing&#xD;Boolean (unevaluated)=%boolUE&#xD;Special={&#xD;Multi-line=%mlt&#xD;Code=%code&#xD;}&#xD;Menu={&#xD;Messages=%msg&#xD;Objects=%spr&#xD;Costumes=%cst&#xD;Sounds=%snd&#xD;Variables=%var&#xD;Piano keyboard=%note&#xD;360° dial=%dir&#xD;}&#xD;Hidden={&#xD;Attribute=%att&#xD;Boolean=%bool&#xD;Clones=%cln&#xD;Color picker=%clr&#xD;Command=%cl&#xD;Command loop=%cla&#xD;Command (inside)=%cmd&#xD;Destination=%dst &#xD;Expansion=%exp&#xD;Get attribute=%get&#xD;Inheritables=%shd&#xD;Input name=%inputName&#xD;Image source=%imgsource&#xD;Location=%lo&#xD;Objects (includes self)=%self&#xD;Ring parameters=%ringparms&#xD;Script variables=%scriptVars&#xD;Touching=%col&#xD;With inputs=%inputs&#xD;Words=%words&#xD;}&#xD;Lists={&#xD;Audio properties (volume, ..., resolution)=%audio&#xD;Codification list maps (list, item, delimiter)=%codeListPart&#xD;Codification section maps (code, header)=%codeKind&#xD;Codification type maps (String, ..., false)=%mapValue&#xD;Date options (year, ..., time in milliseconds)=%dates&#xD;Delimiters (letter, ..., json)=%delim&#xD;Dimensions (current)=%dim&#xD;Effect (color, ..., negative)=%eff&#xD;Event (clicked, ..., stopped)=%interaction&#xD;Functions (abs, ..., 2^)=%fun&#xD;HSVA (hue, ..., transparency)=%hsva&#xD;Indices (1, last, random)=%idx&#xD;Indices (1, last, all)=%ida&#xD;Instrument ((1) sine, ... (4) triangle)=%inst&#xD;Image properties (name, ..., pixels)=%img&#xD;Keys (0, ..., z)=%key&#xD;Layer depth (front, back)=%layer&#xD;Month (January, ..., December)=%month&#xD;Pen values (size, ..., transparency)=%pen&#xD;Relation (distance, direction)=%rel&#xD;Sample rates (22.05 kHz, ..., 96 kHz)=%rate&#xD;Settings (turbo mode, ..., mirror video)=%setting&#xD;Sound properties (name, ..., samples)=%aa &#xD;Stop choices (all, ..., other scripts in sprite)=%stopChoices&#xD;Text functions (encode URI, ..., hex sha512 hash)=%txtfun&#xD;Types (number, ..., predicate)=%typ&#xD;Value at location (hue, ..., sprites)=%asp&#xD;Video options (snap, motion, direction)=%vid&#xD;}&#xD;Bugged={&#xD;3 lists=%lst&#xD;Code mapping=%codeKind&#xD;Command=%c&#xD;Command loop=%loop&#xD;Command ring=%rc&#xD;Function=%f&#xD;Key (for hat)=%keyHat&#xD;Message (for hat)=%msgHat&#xD;Predicate ring=%rp&#xD;Reporter ring=%rr&#xD;Reporter slot=%r&#xD;Reporter slot (?)=%p&#xD;Template=%t&#xD;}&#xD;Images and labels={&#xD;Break=%br&#xD;Green start flag=%greenflag&#xD;Clockwise arrow=%clockwise&#xD;Counter-clockwise arrow=%counterclockwise&#xD;Lightning=%blitz&#xD;Loop arrow=%loopArrow&#xD;Pause icon=%pause&#xD;Stop sign=%stop&#xD;Turtle=%turtle&#xD;Turtle outline=%turtleOutline&#xD;}</options></input></inputs><script><block s="doReport"><block var="type"/></block></script></block-definition><block-definition s="multiple %&apos;type&apos;" type="reporter" category="other"><comment x="0" y="0" w="241" collapsed="false">Allows for multiples of the specified type</comment><header></header><code></code><translations></translations><inputs><input type="%mlt" readonly="true"><options>use the provided type block=</options></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l>%mult</l><block var="type"/></list></block></block></script></block-definition><block-definition s="throw %&apos;error&apos;" type="command" category="control"><comment x="0" y="0" w="90" collapsed="false">Throws an error</comment><header></header><code></code><translations></translations><inputs><input type="%mlt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>err</l></list><l>throw new Error(err)</l></block><list><block var="error"/></list></block></script></block-definition><block-definition s="xml tag %&apos;name&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="149" collapsed="false">Creates a new XML tag</comment><header></header><code></code><translations></translations><inputs><input type="%txt">name</input></inputs><script><block s="doReport"><block s="reportNewList"><list><l>XML</l><block var="name"/><block s="reportNewList"><list></list></block><l></l></list></block></block></script></block-definition><block-definition s="compile XML %&apos;xmldata&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="230" collapsed="false">Compiles an XML tag into its plain-text version</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportTextFunction"><l><option>XML escape</option></l><custom-block s="XML attribute %l %txt"><block var="xmldata"/><l>tag</l></custom-block></block></block><block s="doForEach"><l>item</l><custom-block s="sub %l from %n to %n"><block var="xmldata"/><l>5</l><l></l></custom-block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><l> </l><custom-block s="%mlt in pair %l"><l>first</l><block var="item"/></custom-block><l>="</l><block s="reportTextFunction"><l><option>XML escape</option></l><custom-block s="%mlt in pair %l"><l>second</l><block var="item"/></custom-block></block><l>"</l></list></block></block></script></block><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><l>&lt;</l><block var="result"/><l>&gt;</l><block s="reportTextFunction"><l><option>XML escape</option></l><custom-block s="XML attribute %l %txt"><block var="xmldata"/><l>contents</l></custom-block></block></list></block></block><block s="doForEach"><l>item</l><custom-block s="XML attribute %l %txt"><block var="xmldata"/><l></l></custom-block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><custom-block s="compile XML %l"><block var="item"/></custom-block></list></block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block var="result"/><l>&lt;/</l><block s="reportTextFunction"><l><option>XML escape</option></l><custom-block s="XML attribute %l %txt"><block var="xmldata"/><l>tag</l></custom-block></block><l>&gt;</l></list></block></block></script></block-definition><block-definition s="pair %&apos;first&apos; %&apos;second&apos;" type="reporter" category="variables"><comment x="0" y="0" w="146" collapsed="false">Makes a pair from two values</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><l>pair</l><block var="first"/><block var="second"/></list></block></block></script></block-definition><block-definition s="%&apos;which&apos; in pair %&apos;pair&apos;" type="reporter" category="variables"><comment x="0" y="0" w="112" collapsed="false">Getter for pair values</comment><header></header><code></code><translations></translations><inputs><input type="%mlt" readonly="true">first<options>first&#xD;second&#xD;&#126;&#xD;random</options></input><input type="%l"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>first</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="pair"/></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>second</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="pair"/></block></block></script><script><block s="doIf"><block s="reportEquals"><block var="which"/><l>random</l></block><script><block s="doReport"><block s="reportListItem"><block s="reportRandom"><l>2</l><l>3</l></block><block var="pair"/></block></block></script></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="set %&apos;which&apos; of pair %&apos;pair&apos; to %&apos;value&apos;" type="command" category="variables"><comment x="0" y="0" w="103" collapsed="false">Setter for pair values</comment><header></header><code></code><translations></translations><inputs><input type="%mlt" readonly="true">first<options>first&#xD;second&#xD;&#126;&#xD;random</options></input><input type="%l"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>first</l></block><script><block s="doReplaceInList"><l>2</l><block var="pair"/><block var="value"/></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="which"/><l>second</l></block><script><block s="doReplaceInList"><l>3</l><block var="pair"/><block var="value"/></block></script><script><block s="doIf"><block s="reportEquals"><block var="which"/><l>random</l></block><script><block s="doReplaceInList"><block s="reportRandom"><l>2</l><l>3</l></block><block var="pair"/><block var="value"/></block></script></block></script></block></script></block></script></block-definition><block-definition s="is %&apos;item&apos; a $pair ?" type="predicate" category="variables"><comment x="0" y="0" w="168" collapsed="false">Whether or not the object is a pair</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="item"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportAnd"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="item"/></block><l>3</l></block><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="item"/></block><l>pair</l></block></block></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="is %&apos;item&apos; $xml ?" type="predicate" category="sensing"><comment x="0" y="0" w="182" collapsed="false">Whether or not a value is an XML tag</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="item"/><l><option>list</option></l></block><script><block s="doIf"><block s="reportAnd"><block s="reportAnd"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="item"/></block><l>XML</l></block><block s="reportIsA"><block s="reportListItem"><l>2</l><block var="item"/></block><l><option>text</option></l></block></block><block s="reportIsA"><block s="reportListItem"><l>3</l><block var="item"/></block><l><option>list</option></l></block></block><script><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="XML attribute %&apos;xml&apos; %&apos;name&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="169" collapsed="false">Get an attribute from an XML tag&#xD;empty -&gt; children&#xD;tag -&gt; tag name&#xD;contents -&gt; contents of tag</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%txt"><options>tag&#xD;contents</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block s="reportListItem"><l>1</l><block s="reportTextSplit"><block var="name"/><l><option>word</option></l></block></block><l></l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="xml"/></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="name"/><l>tag</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="xml"/></block></block></script><script><block s="doIf"><block s="reportEquals"><block var="name"/><l>contents</l></block><script><block s="doReport"><block s="reportListItem"><l>4</l><block var="xml"/></block></block></script></block></script></block></script></block><block s="doDeclareVariables"><list><l>find</l></list></block><block s="doSetVar"><l>find</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="%mlt in pair %l"><l>first</l><l/></custom-block><block var="name"/></block></autolambda><list></list></block><custom-block s="sub %l from %n to %n"><block var="xml"/><l>5</l><l></l></custom-block></block></block><block s="doIf"><block var="find"/><script><block s="doReport"><custom-block s="%mlt in pair %l"><l>second</l><block var="find"/></custom-block></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="set XML attribute %&apos;xml&apos; %&apos;name&apos; %&apos;value&apos;" type="command" category="sensing"><comment x="0" y="0" w="196" collapsed="false">Set the value of an XML tag&apos;s attributestag -&gt; tag namecontents -&gt; contents of tag</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="name"/><l>tag</l></block><script><block s="doReplaceInList"><l>2</l><block var="xml"/><block var="value"/></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="name"/><l>contents</l></block><script><block s="doReplaceInList"><l>4</l><block var="xml"/><block var="value"/></block></script><script><block s="doDeclareVariables"><list><l>find</l></list></block><block s="doSetVar"><l>find</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="%mlt in pair %l"><l>first</l><l/></custom-block><block var="name"/></block></autolambda><list></list></block><custom-block s="sub %l from %n to %n"><block var="xml"/><l>5</l><l></l></custom-block></block></block><block s="doIfElse"><block var="find"/><script><block s="doIfElse"><block s="reportEquals"><block var="value"/><l></l></block><script><block s="doDeleteFromList"><custom-block s="index of %s in %l"><block var="find"/><block var="xml"/></custom-block><block var="xml"/></block></script><script><custom-block s="set %mlt of pair %l to %s"><l>second</l><block var="find"/><block var="value"/></custom-block></script></block></script><script><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="value"/><l></l></block></block><script><block s="doAddToList"><custom-block s="pair %s %s"><block var="name"/><block var="value"/></custom-block><block var="xml"/></block></script></block></script></block></script></block></script></block></script></block-definition><block-definition s="join %&apos;words&apos; by %&apos;delim&apos;" type="reporter" category="operators"><comment x="0" y="0" w="147" collapsed="false">Joins a group of words with a delimeter to separate them</comment><header></header><code></code><translations></translations><inputs><input type="%mult%mlt"></input><input type="%mlt">, </input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportListItem"><l>1</l><block var="words"/></block></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="words"/></block><l>1</l></block><script><block s="doFor"><l>i</l><l>2</l><block s="reportListAttribute"><l><option>length</option></l><block var="words"/></block><script><block s="doSetVar"><l>result</l><block s="reportJoinWords"><list><block var="result"/><block var="delim"/><block s="reportListItem"><block var="i"/><block var="words"/></block></list></block></block></script></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="block spec list %&apos;blocks&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="283" collapsed="false">Returns a matrix with the block and its spec paired together</comment><header></header><code></code><translations></translations><inputs><input type="%mult%cmdRing"></input></inputs><script><block s="doReport"><custom-block s="list from %anyUE for %n"><block s="reportNewList"><list><block s="reportListItem"><l></l><block var="blocks"/></block><custom-block s="block spec %cmdRing"><block s="reportListItem"><l></l><block var="blocks"/></block></custom-block></list></block><block s="reportListAttribute"><l><option>length</option></l><block var="blocks"/></block></custom-block></block></script></block-definition><block-definition s="list from %&apos;value&apos; for %&apos;count&apos;" type="reporter" category="lists"><comment x="0" y="0" w="189" collapsed="false">Creates a new list with a given length, mapping each value with the function</comment><header></header><code></code><translations></translations><inputs><input type="%anyUE">0</input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>new</l></list></block><block s="doSetVar"><l>new</l><block s="reportNewList"><list></list></block></block><block s="doFor"><l>i</l><l>1</l><block var="count"/><script><block s="doAddToList"><block s="evaluate"><block var="value"/><list><block var="i"/></list></block><block var="new"/></block></script></block><block s="doReport"><block var="new"/></block></script></block-definition><block-definition s="index of %&apos;item&apos; in %&apos;list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="124" collapsed="false">Finds the index of an item within an array</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><block var="i"/><block var="list"/></block><block var="item"/></block><script><block s="doReport"><block var="i"/></block></script></block></script></block><block s="doReport"><l>0</l></block></script></block-definition><block-definition s="join %&apos;a&apos; and %&apos;b&apos; with %&apos;c&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">Wraps a set of words between two others</comment><header></header><code></code><translations></translations><inputs><input type="%mlt"></input><input type="%mlt"></input><input type="%mult%mlt"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><block var="a"/><block s="reportJoinWords"><block var="c"/></block><block var="b"/></list></block></block></script></block-definition><block-definition s="sub %&apos;list&apos; from %&apos;indexStart&apos; to %&apos;indexEnd&apos;" type="reporter" category="lists"><comment x="0" y="0" w="170" collapsed="false">Creates a new list from the range specified by the parameters&#xD;start empty -&gt; 1&#xD;end empty -&gt; #list</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doIf"><block s="reportEquals"><block var="indexStart"/><l>0</l></block><script><block s="doSetVar"><l>indexStart</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="indexEnd"/><l>0</l></block><script><block s="doSetVar"><l>indexEnd</l><block s="reportListAttribute"><l><option>length</option></l><block var="list"/></block></block></script></block><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block s="reportNewList"><list></list></block></block><block s="doIf"><block s="reportNot"><block s="reportGreaterThan"><block var="indexStart"/><block var="indexEnd"/></block></block><script><block s="doFor"><l>i</l><block var="indexStart"/><block var="indexEnd"/><script><block s="doAddToList"><block s="reportListItem"><block var="i"/><block var="list"/></block><block var="result"/></block></script></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="add XML child %&apos;xml&apos; %&apos;child&apos;" type="command" category="sensing"><comment x="0" y="0" w="136" collapsed="false">Adds a child to an XML tag</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doAddToList"><block var="child"/><block s="reportListItem"><l>3</l><block var="xml"/></block></block></script></block-definition><block-definition s="ez set XML attribute $nl $- %&apos;xml&apos; $nl $- %&apos;name&apos; %&apos;value&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="243" collapsed="false">See [set XML attribute]Messy form, designed for quick setting of attributes</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set XML attribute %l %txt %txt"><block var="xml"/><block var="name"/><block var="value"/></custom-block></script><list></list></block><list></list></block><block s="doReport"><block var="xml"/></block></script></block-definition><block-definition s="ez add XML children $nl $- %&apos;xml&apos; $nl $- %&apos;child&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="191" collapsed="false">See [add XML child]Messy form, for quickly adding children</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%mult%l"></input></inputs><script><block s="doForEach"><l>item</l><block var="child"/><script><block s="doRun"><block s="reifyScript"><script><custom-block s="add XML child %l %l"><block var="xml"/><block var="item"/></custom-block></script><list></list></block><list></list></block></script></block><block s="doReport"><block var="xml"/></block></script></block-definition><block-definition s="new custom block $nl $- type: %&apos;type&apos; $nl $- category: %&apos;category&apos; $nl $- spec: %&apos;blockSpec&apos;" type="reporter" category="variables"><comment x="0" y="0" w="332" collapsed="false">Generates the XML for a new custom block given the parameters&#xD;The spec represents the label or title for the block &#xD;To add custom variables, use the [variable parameter] object within the spec parameter</comment><header></header><code></code><translations></translations><inputs><input type="%mlt" readonly="true">command<options>command&#xD;reporter&#xD;predicate</options></input><input type="%mlt" readonly="true">control<options>motion&#xD;looks&#xD;sound&#xD;pen&#xD;lists&#xD;control&#xD;sensing&#xD;operators&#xD;variables&#xD;other</options></input><input type="%mult%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>inputs</l><l>spec</l></list></block><block s="doSetVar"><l>spec</l><l></l></block><block s="doSetVar"><l>inputs</l><custom-block s="xml tag %txt"><l>inputs</l></custom-block></block><block s="doForEach"><l>param</l><block var="blockSpec"/><script><block s="doIfElse"><block s="reportIsA"><block var="param"/><l><option>list</option></l></block><script><custom-block s="add XML child %l %l"><block var="inputs"/><custom-block s="mapParam %l"><block var="param"/></custom-block></custom-block><block s="doSetVar"><l>spec</l><block s="reportJoinWords"><list><block var="spec"/><l>%&apos;</l><block s="reportListItem"><l>1</l><block var="param"/></block><l>&apos;</l><l> </l></list></block></block></script><script><block s="doSetVar"><l>spec</l><block s="reportJoinWords"><list><block var="spec"/><block var="param"/><l> </l></list></block></block></script></block></script></block><block s="doReport"><custom-block s="ez add XML children %br $- %l %br $- %mult%l"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="xml tag %txt"><l>blocks</l></custom-block><l>app</l><l>Snap! 5.4, http://snap.berkeley.edu</l></custom-block><l>version</l><l>1</l></custom-block><list><custom-block s="ez add XML children %br $- %l %br $- %mult%l"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="xml tag %txt"><l>block-definition</l></custom-block><l>s</l><custom-block s="substr %mlt from %n to %n"><block var="spec"/><l></l><l>-1</l></custom-block></custom-block><l>type</l><block var="type"/></custom-block><l>category</l><block var="category"/></custom-block><list><custom-block s="xml tag %txt"><l>header</l></custom-block><custom-block s="xml tag %txt"><l>code</l></custom-block><custom-block s="xml tag %txt"><l>translations</l></custom-block><block var="inputs"/></list></custom-block></list></custom-block></block></script></block-definition><block-definition s="mapParam %&apos;paramData&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="204" collapsed="false">Used in [new custom block]&#xD;Converts  [variable parameter] to XML tags</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="xml tag %txt"><l>input</l></custom-block><l>type</l><block s="reportListItem"><l>2</l><block var="paramData"/></block></custom-block></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>3</l><block var="paramData"/></block><l></l></block></block><script><custom-block s="set XML attribute %l %txt %txt"><block var="result"/><l>contents</l><block s="reportListItem"><l>3</l><block var="paramData"/></block></custom-block></script></block><block s="doIf"><block s="reportListItem"><l>5</l><block var="paramData"/></block><script><custom-block s="set XML attribute %l %txt %txt"><block var="result"/><l>readonly</l><l>true</l></custom-block></script></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>4</l><block var="paramData"/></block><l></l></block></block><script><custom-block s="add XML child %l %l"><block var="result"/><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="xml tag %txt"><l>options</l></custom-block><l>contents</l><block s="reportListItem"><l>4</l><block var="paramData"/></block></custom-block></custom-block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="menu %&apos;type&apos;" type="reporter" category="other"><comment x="0" y="0" w="375" collapsed="false">Menu for choosing interfaces or selections that appear when changing a value&#xD;These will go in the [options] section of [variable parameter]s</comment><header></header><code></code><translations></translations><inputs><input type="%mlt" readonly="true">§_messagesMenu<options>Messages=§_messagesMenu&#xD;Objects=§_objectsMenu&#xD;Costumes=§_costumesMenu&#xD;Sounds=§_soundsMenu&#xD;Variables=§_getVarNamesDict&#xD;Piano keyboard=§_pianoKeyboardMenu&#xD;360° dial=§_directionDialMenu</options></input></inputs><script><block s="doReport"><block var="type"/></block></script></block-definition><block-definition s="substr %&apos;string&apos; from %&apos;s&apos; to %&apos;e&apos;" type="reporter" category="operators"><comment x="0" y="0" w="253" collapsed="false">Gets a section of a string based on its parameters&#xD;Negative values are offsets from the end of the string&#xD;start empty -&gt; 1&#xD;last empty -&gt; #string</comment><header></header><code></code><translations></translations><inputs><input type="%mlt"></input><input type="%n">1</input><input type="%n">1</input></inputs><script><block s="doIf"><block s="reportEquals"><block var="s"/><l>0</l></block><script><block s="doSetVar"><l>s</l><l>1</l></block></script></block><block s="doIf"><block s="reportLessThan"><block var="s"/><l>0</l></block><script><block s="doSetVar"><l>s</l><block s="reportSum"><block s="reportStringSize"><block var="string"/></block><block var="s"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="e"/><l>0</l></block><script><block s="doSetVar"><l>e</l><block s="reportStringSize"><block var="string"/></block></block></script></block><block s="doIf"><block s="reportLessThan"><block var="e"/><l>0</l></block><script><block s="doSetVar"><l>e</l><block s="reportSum"><block s="reportStringSize"><block var="string"/></block><block var="e"/></block></block></script></block><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><l></l></block><block s="doIf"><block s="reportNot"><block s="reportGreaterThan"><block var="s"/><block var="e"/></block></block><script><block s="doFor"><l>i</l><block var="s"/><block var="e"/><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></script></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="WIP DO NOT USE, new custom block $nl $- type: %&apos;type&apos; $nl $- category: %&apos;category&apos; $nl $- spec: %&apos;blockSpec&apos; $nl $- %&apos;variables&apos; %&apos;definition&apos;" type="reporter" category="variables"><header></header><code></code><translations></translations><inputs><input type="%mlt" readonly="true">command&#xD;        <options>commandreporterpredicate</options></input><input type="%mlt" readonly="true">control&#xD;        <options>motionlookssoundpenlistscontrolsensingoperatorsvariablesother</options></input><input type="%mult%txt"></input><input type="%scriptVars"></input><input type="%ca"></input></inputs><script><block s="doDeclareVariables"><list><l>inputs</l><l>spec</l></list></block><block s="doSetVar"><l>spec</l><l></l></block><block s="doSetVar"><l>inputs</l><custom-block s="xml tag %txt"><l>inputs</l></custom-block></block><block s="doForEach"><l>param</l><block var="blockSpec"/><script><block s="doIfElse"><block s="reportIsA"><block var="param"/><l><option>list</option></l></block><script><custom-block s="add XML child %l %l"><block var="inputs"/><custom-block s="mapParam %l"><block var="param"/></custom-block></custom-block><block s="doSetVar"><l>spec</l><block s="reportJoinWords"><list><block var="spec"/><l>world</l><l></l></list></block></block></script><script><block s="doSetVar"><l>spec</l><block s="reportJoinWords"><list><block var="spec"/><block var="param"/><l></l></list></block></block></script></block></script></block><block s="doIf"><block s="reportAnd"><custom-block s="is ring %s"><block var="definition"/></custom-block><block s="reportNot"><custom-block s="empty ring %s"><block var="definition"/></custom-block></block></block><script><block s="doSayFor"><block var="definition"/><l>2</l></block><block s="doSayFor"><block s="evaluate"><block s="reportJSFunction"><list><l>a</l></list><l>const ide = this.parentThatIsA(IDE_Morph);return ide.serializer.serialize(a);</l></block><list><block var="definition"/></list></block><l>10</l></block></script></block><block s="doReport"><custom-block s="ez add XML children %br $- %l %br $- %mult%l"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="xml tag %txt"><l>blocks</l></custom-block><l>app</l><l>Snap! 6.7, http://snap.berkeley.edu</l></custom-block><l>version</l><l>1</l></custom-block><list><custom-block s="ez add XML children %br $- %l %br $- %mult%l"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="ez set XML attribute %br $- %l %br $- %txt %txt"><custom-block s="xml tag %txt"><l>block-definition</l></custom-block><l>s</l><custom-block s="substr %mlt from %n to %n"><block var="spec"/><l></l><l>-1</l></custom-block></custom-block><l>type</l><block var="type"/></custom-block><l>category</l><block var="category"/></custom-block><list><custom-block s="xml tag %txt"><l>header</l></custom-block><custom-block s="xml tag %txt"><l>code</l></custom-block><custom-block s="xml tag %txt"><l>translations</l></custom-block><block var="inputs"/></list></custom-block></list></custom-block></block></script></block-definition><block-definition s="variable parameter $nl $- name: %&apos;name&apos; $nl $- type: %&apos;kind&apos; $nl $- default: %&apos;default&apos; $nl $- options: %&apos;s&apos; $nl $- readonly: %&apos;readonly&apos;" type="reporter" category="other"><comment x="0" y="0" w="389" collapsed="false">Creates a new variable parameter to be used when making a [new custom block]&#xD;Types can also be images, for making special labels&#xD;The parameters are much like the regular and right-click menu for input type selection when making a custom block &#xD;</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%mlt" readonly="true"><options>pass in multiple or type block=</options></input><input type="%mlt"></input><input type="%mlt"></input><input type="%b">false</input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="name"/><block var="kind"/><block var="default"/><block var="s"/><block var="readonly"/></list></block></block></script></block-definition><block-definition s="empty ring %&apos;value&apos;" type="reporter" category="operators"><comment x="0" y="0" w="175" collapsed="false">Returns if the value is an empty ring without using JS</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doSetVar"><l>value</l><block s="reportJoinWords"><list><block var="value"/></list></block></block><block s="doReport"><block s="reportOr"><block s="reportOr"><block s="reportEquals"><block var="value"/><block s="reportJoinWords"><list><block s="reifyScript"><script></script><list></list></block></list></block></block><block s="reportEquals"><block var="value"/><block s="reportJoinWords"><list><block s="reifyReporter"><script></script><list></list></block></list></block></block></block><block s="reportEquals"><block var="value"/><block s="reportJoinWords"><list><block s="reifyPredicate"><script></script><list></list></block></list></block></block></block></block></script></block-definition><block-definition s="is ring %&apos;item&apos;" type="reporter" category="operators"><comment x="0" y="0" w="242" collapsed="false">Returns if the item is wrapped in some sort of ring</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportOr"><block s="reportOr"><block s="reportIsA"><block var="item"/><l><option>command</option></l></block><block s="reportIsA"><block var="item"/><l><option>reporter</option></l></block></block><block s="reportIsA"><block var="item"/><l><option>predicate</option></l></block></block></block></script></block-definition><block-definition s="Obsolete!" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reifyReporter"><autolambda><block s="errorObsolete"></block></autolambda><list></list></block></block></script></block-definition><block-definition s="play notes %&apos;notes&apos; for %&apos;beats&apos; beats" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%mult%note">60</input><input type="%n">0.5</input></inputs><script><block s="doForEach"><l>item</l><block var="notes"/><script><block s="fork"><block s="reifyScript"><script><block s="doPlayNote"><block var="item"/><l>0.5</l></block></script><list></list></block><list></list></block></script></block><block s="doRest"><block var="beats"/></block></script></block-definition><block-definition s="log %&apos;stuff&apos; to console" type="command" category="looks"><header></header><code></code><translations></translations><inputs><input type="%mult%mlt"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>items</l></list><l>console.log(items.contents.join(&apos;\n&apos;));</l></block><list><block var="stuff"/></list></block></script></block-definition><block-definition s="strdump %&apos;tbl&apos; %&apos;level&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%n">0</input></inputs><script><block s="doDeclareVariables"><list><l>tab</l><l>str</l><l>item</l></list></block><block s="doSetVar"><l>str</l><l></l></block><block s="doSetVar"><l>tab</l><custom-block s="repeat %mlt %n times"><l>    </l><block var="level"/></custom-block></block><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="tbl"/></block><script><block s="doSetVar"><l>item</l><block s="reportListItem"><block var="i"/><block var="tbl"/></block></block><block s="doIfElse"><block s="reportIsA"><block var="item"/><l><option>list</option></l></block><script><block s="doSetVar"><l>str</l><custom-block s="join %mlt and %mlt with %mult%mlt"><block var="str"/><custom-block s="join %mlt and %mlt with %mult%mlt"><block var="i"/><custom-block s="strdump %l %n"><block var="item"/><block s="reportSum"><block var="level"/><l>1</l></block></custom-block><list><l>:&#xD;</l></list></custom-block><list><block var="tab"/></list></custom-block></block></script><script><block s="doSetVar"><l>str</l><custom-block s="join %mlt and %mlt with %mult%mlt"><block var="str"/><l>&#xD;</l><list><block var="tab"/><custom-block s="join %mlt and %mlt with %mult%mlt"><block var="i"/><block var="item"/><list><l>:   </l></list></custom-block></list></custom-block></block></script></block></script></block><block s="doReport"><block var="str"/></block></script><scripts><script x="297.23144631250034" y="287.200002"><custom-block s="strdump %l %n"><block var="item"/><block s="reportSum"><block var="level"/><l>1</l></block></custom-block></script></scripts></block-definition><block-definition s="repeat %&apos;word&apos; %&apos;d&apos; times" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mlt"></input><input type="%n">1</input></inputs><script><block s="doDeclareVariables"><list><l>out</l></list></block><block s="doSetVar"><l>out</l><l></l></block><block s="doIf"><block s="reportNot"><block s="reportLessThan"><block var="d"/><l>1</l></block></block><script><block s="doFor"><l>i</l><l>1</l><block var="d"/><script><block s="doSetVar"><l>out</l><block s="reportJoinWords"><list><block var="out"/><block var="word"/></list></block></block></script></block></script></block><block s="doReport"><block var="out"/></block></script></block-definition><block-definition s="mix colors %&apos;1&apos; %&apos;2&apos; by %&apos;p&apos; %" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n">50</input></inputs><script><block s="doReport"><custom-block s="color with RGBA %l"><block s="reportSum"><block s="reportProduct"><custom-block s="%s of color %n"><l>RGBA</l><block var="2"/></custom-block><block s="reportQuotient"><block var="p"/><l>100</l></block></block><block s="reportProduct"><custom-block s="%s of color %n"><l>RGBA</l><block var="1"/></custom-block><block s="reportQuotient"><block s="reportDifference"><l>100</l><block var="p"/></block><l>100</l></block></block></block></custom-block></block></script></block-definition><block-definition s="color %&apos;Value&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%clr"></input></inputs><script><block s="doDeclareVariables"><list><l>parts</l></list></block><block s="doSetVar"><l>parts</l><custom-block s="%s of color %n"><l>RGBA</l><block var="Value"/></custom-block></block><block s="doReport"><custom-block s="color with RGBA %n %n %n %n"><block s="reportListItem"><l>1</l><block var="parts"/></block><block s="reportListItem"><l>2</l><block var="parts"/></block><block s="reportListItem"><l>3</l><block var="parts"/></block><block s="reportListItem"><l>4</l><block var="parts"/></block></custom-block></block></script></block-definition><block-definition s="color with RGBA %&apos;red&apos; %&apos;green&apos; %&apos;blue&apos; %&apos;alpha&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%n">0</input><input type="%n">0</input><input type="%n">0</input><input type="%n">100</input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>r</l><l>g</l><l>b</l><l>a</l></list><l>var Clr = new Color(r, g, b, a / 100);&#xD;var M = new ColorSlotMorph (Clr);&#xD;&#xD;M.r = r;&#xD;M.g = g;&#xD;M.b = b;&#xD;M.a = a / 100;&#xD;&#xD;M.eq = Clr.eq;&#xD;&#xD;var C = undefined;&#xD;&#xD;window.$ = M;&#xD;&#xD;var Size = 30;&#xD;&#xD;M.bounds.corner.x = Size;&#xD;M.bounds.corner.y = Size;&#xD;&#xD;M.fullImage = function ()&#xD;{&#xD;    if (C !== undefined)&#xD;    {&#xD;        return (C);&#xD;    }&#xD;&#xD;    C = document.createElement("canvas");&#xD;    C.width = 50;&#xD;    C.height = 50;&#xD;&#xD;    var E = C.getContext("2d");&#xD;&#xD;    E.fillStyle = Clr.toString ();&#xD;    E.fillRect(0, 0, +C.width, +C.height);&#xD;&#xD;    return (C);&#xD;};&#xD;&#xD;M.image = M.fullImage(Size);&#xD;&#xD;return (M);</l></block><list><block var="red"/><block var="green"/><block var="blue"/><block var="alpha"/></list></block></block></script></block-definition><block-definition s="ukulele chords" type="reporter" category="sound"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>Ukulele</l><block s="reportNewList"><list><l>G String</l><l>C String</l><l>E String</l><l>A String</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>G String X</l><l>G String Y</l></list></block><block s="reportNewList"><list><l>C String X</l><l>C String Y</l></list></block><block s="reportNewList"><list><l>E String X</l><l>E String Y</l></list></block><block s="reportNewList"><list><l>A String X</l><l>A String Y</l></list></block></list></block></list></block><block s="reportNewList"><list><l>A Chord</l><block s="reportNewList"><list><l>A4</l><l>C#4</l><l>E4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-55</l><l>104</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>A Major 7 Chord</l><block s="reportNewList"><list><l>G#4</l><l>C#4</l><l>E4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-55</l><l>124</l></list></block><block s="reportNewList"><list><l>-55</l><l>104</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>A Minor Chord</l><block s="reportNewList"><list><l>A4</l><l>C4</l><l>E4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>A Minor 7 Chord</l><block s="reportNewList"><list><l>G4</l><l>E4</l><l>G4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-191</l><l>105</l></list></block><block s="reportNewList"><list><l>-148</l><l>83</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>A7 Chord</l><block s="reportNewList"><list><l>G4</l><l>C#4</l><l>E4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-55</l><l>104</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>B Chord</l><block s="reportNewList"><list><l>B4</l><l>D#4</l><l>F#4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-191</l><l>128</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>B Major 7 Chord</l><block s="reportNewList"><list><l>A#4</l><l>D#4</l><l>G4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-148</l><l>127</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>B Minor Chord</l><block s="reportNewList"><list><l>B4</l><l>D4</l><l>F#4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-191</l><l>128</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>B Minor 7 Chord</l><block s="reportNewList"><list><l>A4</l><l>D4</l><l>F#4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>B7 Chord</l><block s="reportNewList"><list><l>A4</l><l>D#4</l><l>F#4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>C Chord</l><block s="reportNewList"><list><l>G4</l><l>C4</l><l>E4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>C Major 7 Chord</l><block s="reportNewList"><list><l>G4</l><l>C4</l><l>E4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>C Minor Chord</l><block s="reportNewList"><list><l>G4</l><l>D#4</l><l>G4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-148</l><l>83</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>C Minor 7 Chord</l><block s="reportNewList"><list><l>A#4</l><l>D#4</l><l>G4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-148</l><l>127</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-148</l><l>83</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>C7 Chord</l><block s="reportNewList"><list><l>G4</l><l>C4</l><l>E4</l><l>A#4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-55</l><l>63</l></list></block></list></block></list></block><block s="reportNewList"><list><l>D Chord</l><block s="reportNewList"><list><l>A4</l><l>D4</l><l>F#4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>D Major 7 Chord</l><block s="reportNewList"><list><l>A4</l><l>D4</l><l>F#4</l><l>C#5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-191</l><l>60</l></list></block></list></block></list></block><block s="reportNewList"><list><l>D Minor Chord</l><block s="reportNewList"><list><l>A4</l><l>D4</l><l>F4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>D Minor 7 Chord</l><block s="reportNewList"><list><l>A4</l><l>D4</l><l>F4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>D7 Chord</l><block s="reportNewList"><list><l>A4</l><l>C4</l><l>F#4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>E Chord</l><block s="reportNewList"><list><l>B4</l><l>E4</l><l>G#4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-191</l><l>128</l></list></block><block s="reportNewList"><list><l>-191</l><l>105</l></list></block><block s="reportNewList"><list><l>-191</l><l>83</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>E Major 7 Chord</l><block s="reportNewList"><list><l>G#4</l><l>D#4</l><l>E4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-55</l><l>124</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>E Minor Chord</l><block s="reportNewList"><list><l>G4</l><l>E4</l><l>G4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-191</l><l>105</l></list></block><block s="reportNewList"><list><l>-148</l><l>83</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>E Minor 7 Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>E4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>E7 Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>E4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l><l></l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>F Chord</l><block s="reportNewList"><list><l>A4</l><l>C4</l><l>F4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block></list></block></list></block><block s="reportNewList"><list><l>F Major 7 Chord</l><block s="reportNewList"><list><l>A4</l><l>E4</l><l>F4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-191</l><l>105</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>F Minor Chord</l><block s="reportNewList"><list><l>G#4</l><l>C4</l><l>F4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-55</l><l>124</l></list></block><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>F Minor 7 Chord</l><block s="reportNewList"><list><l>G#4</l><l>D#4</l><l>F4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>-55</l><l>124</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>-148</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>F7 Chord</l><block s="reportNewList"><list><l>A4</l><l>D#4</l><l>F4</l><l>A4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>126</l></list></block><block s="reportNewList"><list><l>-148</l><l>105</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block></list></block></list></block><block s="reportNewList"><list><l>G Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>G4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-148</l><l>83</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>G Major 7 Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>F#4</l><l>C5</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-103</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block><block s="reportNewList"><list><l>G Minor Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>G4</l><l>A#4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-148</l><l>83</l></list></block><block s="reportNewList"><list><l>-55</l><l>63</l></list></block></list></block></list></block><block s="reportNewList"><list><l>G Minor 7 Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>F4</l><l>A#4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>-55</l><l>63</l></list></block></list></block></list></block><block s="reportNewList"><list><l>G7 Chord</l><block s="reportNewList"><list><l>G4</l><l>D4</l><l>F4</l><l>B4</l></list></block><block s="reportNewList"><list><block s="reportNewList"><list><l>250</l><l>250</l></list></block><block s="reportNewList"><list><l>-103</l><l>104</l></list></block><block s="reportNewList"><list><l>-55</l><l>82</l></list></block><block s="reportNewList"><list><l>-103</l><l>61</l></list></block></list></block></list></block></list></block></block></script></block-definition><block-definition s="%&apos;how&apos; copy %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>shallow&#xD;deep</options></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="how"/><l>shallow</l></block><block s="reportMap"><block s="reifyReporter"><script></script><list></list></block><block var="list"/></block><block s="reportIfElse"><block s="reportEquals"><block var="how"/><l>deep</l></block><block s="reportMonadic"><l><option>id</option></l><block var="list"/></block><block s="reportNewList"><list></list></block></block></block></block></script></block-definition><block-definition s="point resize costume %&apos;costume&apos; by factor %&apos;factor&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">current<options>§_costumesMenu</options></input><input type="%n">2</input></inputs><script><block s="doDeclareVariables"><list><l>height</l><l>width</l><l>old pixels</l></list></block><block s="doSetVar"><l>height</l><block s="reportGetImageAttribute"><l><option>height</option></l><block var="costume"/></block></block><block s="doSetVar"><l>width</l><block s="reportGetImageAttribute"><l><option>width</option></l><block var="costume"/></block></block><block s="doSetVar"><l>old pixels</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="costume"/></block></block><block s="doSetVar"><l>factor</l><block var="factor"/></block><block s="doReport"><block s="reportNewCostume"><block s="reportReshape"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportReshape"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportReshape"><block s="reportListItem"><block s="reportSum"><block s="reportProduct"><block var="h"/><block var="width"/></block><block var="w"/></block><block var="old pixels"/></block><list><block var="factor"/><l>4</l></list></block></autolambda><list><l>w</l></list></block><block s="reportNumbers"><l>1</l><block var="width"/></block></block><list><block s="reportProduct"><block s="reportProduct"><block var="width"/><block var="factor"/></block><block var="factor"/></block><l>4</l></list></block></autolambda><list><l>h</l></list></block><block s="reportNumbers"><l>0</l><block s="reportDifference"><block var="height"/><l>1</l></block></block></block><list><block s="reportProduct"><block s="reportProduct"><block var="height"/><block var="width"/></block><block s="reportProduct"><block var="factor"/><block var="factor"/></block></block><l>4</l></list></block><block s="reportProduct"><block var="factor"/><block var="width"/></block><block s="reportProduct"><block var="factor"/><block var="height"/></block></block></block></script></block-definition><block-definition s="set volume to %&apos;d&apos; decibels" type="command" category="sound"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="setVolume"><block s="reportRound"><block s="reportProduct"><block s="reportPower"><l>10</l><block s="reportQuotient"><block var="d"/><l>10</l></block></block><l>100</l></block></block></block></script></block-definition><block-definition s="gradient costume %&apos;width&apos; × %&apos;height&apos; $nl with colors %&apos;colors&apos; meeting %&apos;which&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">256</input><input type="%n">256</input><input type="%mult%clr"></input><input type="%s" readonly="true">horizontally<options>horizontally&#xD;vertically</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>w</l><l>h</l><l>c</l><l>v</l><l>b</l></list><l>var canvas = document.createElement(&apos;canvas&apos;),&#xD;    ctx = canvas.getContext(&apos;2d&apos;),&#xD;    grd = ctx.createLinearGradient(0, 0, v?0:w, v?h:0);&#xD;canvas.width = w;&#xD;canvas.height = h;&#xD;c = c.itemsArray();&#xD;if (c.length &gt; 0){&#xD;grd.addColorStop(0, c[0]);&#xD;c.shift();&#xD;c.forEach(function (clr, idx) {&#xD; grd.addColorStop((1/c.length*(idx+1)), clr);&#xD;})}&#xD;ctx.fillStyle = grd;&#xD;ctx.fillRect(0, 0, w, h);&#xD;return new Costume(canvas);</l></block><list><block var="width"/><block var="height"/><block var="colors"/><block s="reportEquals"><block var="which"/><l>vertically</l></block></list></block></block></script></block-definition><block-definition s="gradient costume %&apos;width&apos; × %&apos;height&apos; $nl with colors %&apos;colors&apos; meeting %&apos;which&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">256</input><input type="%n">256</input><input type="%mult%n"></input><input type="%s" readonly="true">horizontally<options>horizontally&#xD;vertically</options></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>horizontally</l><l>vertically</l></list></block><block var="which"/></block><block s="evaluate"><block s="reportJSFunction"><list><l>w</l><l>h</l><l>c</l><l>v</l><l>b</l></list><l>var canvas = document.createElement(&apos;canvas&apos;),&#xD;    ctx = canvas.getContext(&apos;2d&apos;),&#xD;    grd = ctx.createLinearGradient(0, 0, v?0:w, v?h:0);&#xD;canvas.width = w;&#xD;canvas.height = h;&#xD;c = c.itemsArray();&#xD;if (c.length &gt; 0){&#xD;grd.addColorStop(0, c[0]);&#xD;c.shift();&#xD;c.forEach(function (clr, idx) {&#xD; grd.addColorStop((1/c.length*(idx+1)), clr);&#xD;})}&#xD;ctx.fillStyle = grd;&#xD;ctx.fillRect(0, 0, w, h);&#xD;return new Costume(canvas);</l></block><list><block var="width"/><block var="height"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="evaluate"><block s="reifyReporter"><autolambda><custom-block s="JS color layout from RGBA %n %n %n %n"><l></l><l></l><l></l><l></l></custom-block></autolambda><list></list></block><custom-block s="%s of color %n"><l>RGBA</l><block var="value"/></custom-block></block></autolambda><list><l>value</l></list></block><block var="colors"/></block><block s="reportEquals"><block var="which"/><l>vertically</l></block></list></block><l></l></block></block></script></block-definition><block-definition s="filled costume %&apos;width&apos; × %&apos;height&apos; with color %&apos;color&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">80</input><input type="%n">100</input><input type="%n"></input></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="filled costume %&apos;width&apos; × %&apos;height&apos; colored %&apos;color&apos;" type="reporter" category="looks"><header></header><code></code><translations></translations><inputs><input type="%n">80</input><input type="%n">100</input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewCostumeStretched"><block s="reportNewCostume"><block s="reportNewList"><list><block s="reportConcatenatedLists"><list><custom-block s="%s of color %n"><l>RGB</l><block var="color"/></custom-block><block s="reportNewList"><list><block s="reportQuotient"><block s="reportProduct"><custom-block s="%s of color %n"><l>A</l><block var="color"/></custom-block><l>255</l></block><l>100</l></block></list></block></list></block></list></block><l>1</l><l>1</l></block><block s="reportProduct"><block var="width"/><l>100</l></block><block s="reportProduct"><block var="height"/><l>100</l></block></block></block></script></block-definition><block-definition s="unsaved changes?" type="predicate" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list></list><l>return world.children[0].unsavedChanges()</l></block><list></list></block></block></script></block-definition><block-definition s="all of myself (costume)" 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 new Costume(this.fullImage());</l></block><list></list></block></block></script></block-definition><block-definition s="closest sprite" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportRelationTo"><l><option>distance</option></l><l></l></block><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRelationTo"><l><option>distance</option></l><l></l></block></autolambda><list></list></block><block s="reportGet"><l><option>other sprites</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportMin"><l></l><l></l></block></autolambda><list></list></block></block></block></autolambda><list></list></block><block s="reportGet"><l><option>other sprites</option></l></block></block></block></script></block-definition><block-definition s="listify %&apos;jsonString&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:os dados JSON _ em formato de lista&#xD;</translations><inputs><input type="%mlt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>jsonString</l></list><l>return listify(JSON.parse(jsonString));&#xD;&#xD;function listify(jsonObject) {&#xD;  if (jsonObject instanceof Array) {&#xD;    return new List(jsonObject.map(function(eachElement) { return listify(eachElement)}));&#xD;  } else if (jsonObject instanceof Object) {&#xD;    return new List(Object.keys(jsonObject).map(function(eachKey) { return new List([eachKey,listify(jsonObject[eachKey])])} ))&#xD;  } else {&#xD;    return jsonObject&#xD;  }&#xD;}</l></block><list><block var="jsonString"/></list></block></block></script></block-definition><block-definition s="value at key %&apos;key&apos; of %&apos;lst&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o valor com chave _ em _&#xD;</translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doForEach"><l>each item</l><block var="lst"/><script><block s="doIf"><block s="reportEquals"><block s="reportListItem"><l>1</l><block var="each item"/></block><block var="key"/></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="each item"/></block></block></script></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="%&apos;method&apos; url: %&apos;url&apos; send: %&apos;payload&apos; headers: %&apos;headers&apos;" type="reporter" category="sensing"><header></header><code></code><translations>pt:a resposta a _ de _ enviando _ e cabeçalhos _&#xD;</translations><inputs><input type="%s" readonly="true">GET<options>GET&#xD;POST&#xD;PUT&#xD;DELETE</options></input><input type="%s">https://snap.berkeley.edu</input><input type="%s"></input><input type="%mult%l" readonly="true"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>method</l><l>url</l><l>data</l><l>headers</l><l>proc</l></list><l>var response, i, header;&#xD;if (!proc.httpRequest) {&#xD;  proc.httpRequest = new XMLHttpRequest();&#xD;  proc.httpRequest.open(method, url, true);&#xD;  proc.assertType(headers, &apos;list&apos;);&#xD;  for (i = 1; i &lt;= headers.length(); i += 1) {&#xD;    header = headers.at(i);&#xD;    proc.assertType(header, &apos;list&apos;);&#xD;    proc.httpRequest.setRequestHeader(&#xD;      header.at(1),&#xD;      header.at(2)&#xD;    );&#xD;  }&#xD;  proc.httpRequest.send(data || null);&#xD;} else if (proc.httpRequest.readyState === 4) {&#xD;  response = proc.httpRequest.responseText;&#xD;  proc.httpRequest = null;&#xD;  return response;&#xD;}&#xD;proc.pushContext(&apos;doYield&apos;);&#xD;proc.pushContext();</l></block><list><block var="method"/><block var="url"/><block var="payload"/><block var="headers"/></list></block></block></script></block-definition><block-definition s="key: %&apos;key&apos; value: %&apos;value&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:um par (chave: _ , valor: _ )&#xD;</translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="key"/><block var="value"/></list></block></block></script></block-definition><block-definition s="current location" type="reporter" category="sensing"><comment x="0" y="0" w="200" collapsed="false">Reports a three-item list containing the latitude and longitude of the user, and the precision of the measurements.  Works only if the user allows snap.berkeley.edu access to location data.  Some browsers also require an HTTPS connection to Snap!.</comment><header></header><code></code><translations>pt:a localização actual do dispositivo&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>proc</l></list><l>if (!proc.geostarted) {&#xD;  var geo = navigator.geolocation;&#xD;  var cords = [];&#xD;  var options = {&#xD;    enableHighAccuracy: false,&#xD;  };&#xD;&#xD;  function success(pos) {&#xD;    console.log(pos);&#xD;    proc.geocords = [pos.coords.latitude,&#xD;                     pos.coords.longitude,&#xD;                     pos.coords.accuracy];&#xD;  }&#xD;&#xD;  function error(err) {&#xD;    alert("ERROR " + err.code + ": " + err.message);&#xD;  }&#xD;  proc.geostarted = true;&#xD;  proc.geocords = null;&#xD;  console.log("starting geolocation")&#xD;  geo.getCurrentPosition(success, error, options);&#xD;} else if (proc.geocords) {&#xD;  var cords = proc.geocords;&#xD;  proc.geostarted = null;&#xD;  proc.geocords = null;&#xD;  console.log("returning");&#xD;  return new List(cords);&#xD;} else {&#xD;  console.log("yielding");&#xD;  proc.pushContext(&apos;doYield&apos;);&#xD;  proc.pushContext();&#xD;}</l></block><list></list></block></block></script></block-definition><block-definition s="closest sprites with range %&apos;r&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="$flash sort %l ordering with %predRing"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportListContainsItem"><block s="reportListItem"><block s="reportNumbers"><l>1</l><block var="r"/></block><custom-block s="$flash sort %l ordering with %predRing"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRelationTo"><l><option>distance</option></l><l></l></block></autolambda><list></list></block><block s="reportGet"><l><option>other sprites</option></l></block></block><block s="reifyPredicate"><autolambda><block s="reportLessThan"><l></l><l></l></block></autolambda><list></list></block></custom-block></block><block s="reportRelationTo"><l><option>distance</option></l><l></l></block></block></autolambda><list></list></block><block s="reportGet"><l><option>other sprites</option></l></block></block><block s="reifyPredicate"><autolambda><block s="reportLessThan"><l></l><l></l></block></autolambda><list></list></block></custom-block></block></script></block-definition><block-definition s="RGBA %&apos;list&apos; as hex" type="reporter" category="pen"><comment x="0" y="0" w="176" collapsed="false">Returns the list of three to four numbers as a hexadecimal value (Standard or Proper)</comment><header></header><code></code><translations>el:RGB _ ως _&#xD;de:RGB _ als _&#xD;</translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><l>#</l><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="%s as %s value"><l></l><l>hexademical</l></custom-block></autolambda><list></list></block><block s="reportConcatenatedLists"><list><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportCDR"><block s="reportListAttribute"><l><option>reverse</option></l><block var="list"/></block></block></block><block s="reportNewList"><list><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l><option>last</option></l><block var="list"/></block><l>255</l></block><l>100</l></block></list></block></list></block></block></block></list></block></block></script></block-definition><block-definition s="%&apos;num&apos; as %&apos;type&apos; value" type="reporter" category="operators"><comment x="0" y="0" w="251" collapsed="false">NUMERICAL&#xD;Turns the hexadecimal code into an actual number&#xD;e.g.&#xD;00 = 0&#xD;0F = 15&#xD;48 = 72&#xD;96 = 150&#xD;FF = 255&#xD;GG = 0 (Won&apos;t go above FF)&#xD;HEXADECIMAL (Hexademical is the option to choose)&#xD;Turns the actual number into a hexadecimal code&#xD;e.g.&#xD;0 = 00&#xD;15 = 0F&#xD;72 = 48&#xD;150 = 96&#xD;255 = FF&#xD;280 = FF (Won&apos;t go above 255)</comment><header></header><code></code><translations>el:_ ως _ τιμή&#xD;de:_ als _ wert&#xD;</translations><inputs><input type="%s">0A</input><input type="%s" readonly="true">numerical<options>numerical&#xD;hexademical</options></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="type"/><l>numerical</l></block><script><block s="doReport"><custom-block s="%n between %n and %n"><custom-block s="%s of %n decimal as number"><block var="num"/><l>16</l></custom-block><l>0</l><l>255</l></custom-block></block></script><script><custom-block s="let %upvar be %s"><l>num</l><custom-block s="%n as %n decimal number"><custom-block s="%n between %n and %n"><block var="num"/><l>0</l><l>255</l></custom-block><l>16</l></custom-block></custom-block><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block s="reportJoinWords"><block s="reportCDR"><block s="reportTextSplit"><block var="num"/><l><option>letter</option></l></block></block></block><l></l></block><block s="reportJoinWords"><list><l>0</l><block var="num"/></list></block><block var="num"/></block></block></script></block></script></block-definition><block-definition s="%&apos;num&apos; of %&apos;n&apos; decimal as number" type="reporter" category="operators"><comment x="0" y="0" w="251" collapsed="false">Turns the X number of the Y decimal number into an actual number&#xD;e.g.&#xD;X and Y of 1010011010 and 2 respectively = 666&#xD;Χ and Y of 6378 and 7 respectively = 2262&#xD;X and Y of F1F7 and 16 respectively = 61943&#xD;X and Y of -FF0 and 16 respectively = -4080&#xD;X and Y of LAB and 22 respectively = 10395&#xD;X and Y of ZEBRA and 36 respectively = 59454982&#xD;X and Y of 5Y3F and 36 respectively = 277467</comment><header></header><code></code><translations>el:_ του _ δεκαδικού ως νούμερο&#xD;de:_ von _ dezimal als Zahl&#xD;</translations><inputs><input type="%s">100</input><input type="%n">16</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>Result</l><l>letters</l><l>Numbers</l><l>d</l></list></block><block s="doSetVar"><l>letters</l><block s="reportNewList"><list><l>0</l><l>1</l><l>2</l><l>3</l><l>4</l><l>5</l><l>6</l><l>7</l><l>8</l><l>9</l><l>A</l><l>B</l><l>C</l><l>D</l><l>E</l><l>F</l><l>G</l><l>H</l><l>I</l><l>J</l><l>K</l><l>L</l><l>M</l><l>N</l><l>O</l><l>P</l><l>Q</l><l>R</l><l>S</l><l>T</l><l>U</l><l>V</l><l>W</l><l>X</l><l>Y</l><l>Z</l></list></block></block><block s="doSetVar"><l>Numbers</l><block s="reportNumbers"><l>0</l><block s="reportDifference"><block var="n"/><l>1</l></block></block></block><block s="doSetVar"><l>d</l><block s="reportStringSize"><block var="num"/></block></block><block s="doSetVar"><l>Result</l><l>0</l></block><block s="doUntil"><block s="reportEquals"><block var="d"/><l>0</l></block><script><block s="doChangeVar"><l>Result</l><block s="reportProduct"><block s="reportListItem"><block s="reportListIndex"><block s="reportLetter"><block var="d"/><block var="num"/></block><block var="letters"/></block><block var="Numbers"/></block><block s="reportPower"><block var="n"/><block s="reportDifference"><block s="reportStringSize"><block var="num"/></block><block var="d"/></block></block></block></block><block s="doChangeVar"><l>d</l><l>-1</l></block></script></block></script></block><block s="doReport"><block s="reportIfElse"><custom-block s="%s %s %s"><block var="num"/><l>starts with</l><l>-</l></custom-block><block s="reportJoinWords"><list><l>-</l><block var="Result"/></list></block><block var="Result"/></block></block></script></block-definition><block-definition s="%&apos;text&apos; %&apos;type&apos; %&apos;text2&apos;" type="predicate" category="operators"><comment x="0" y="0" w="298" collapsed="false">CONTAINS = True if the 2nd string is included in the 1st one&#xD;STARTS WITH = True if the 1st string starts with the 2nd one&#xD;ENDS WITH = True if the 1st string ends with the 2nd one</comment><header></header><code></code><translations></translations><inputs><input type="%s">raincoat</input><input type="%s" readonly="true">contains<options>contains&#xD;starts with&#xD;ends with</options></input><input type="%s">coat</input></inputs><script><block s="doReport"><block s="reportListItem"><block s="reportListIndex"><block var="type"/><block s="reportNewList"><list><l>contains</l><l>starts with</l><l>ends with</l></list></block></block><block s="reportNewList"><list><custom-block s="%s ≠ %s"><custom-block s="find %s in %s"><block var="text2"/><block var="text"/></custom-block><l>0</l></custom-block><block s="reportEquals"><custom-block s="find %s in %s"><block var="text2"/><block var="text"/></custom-block><l>1</l></block><block s="reportEquals"><custom-block s="letters %n to %n of %s"><block s="reportSum"><block s="reportDifference"><block s="reportStringSize"><block var="text"/></block><block s="reportStringSize"><block var="text2"/></block></block><l>1</l></block><block s="reportStringSize"><block var="text"/></block><block var="text"/></custom-block><block var="text2"/></block></list></block></block></block></script></block-definition><block-definition s="find %&apos;search&apos; in %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211" collapsed="false">Finds the position of the the 1st string in the 2nd ones.</comment><header></header><code></code><translations>el:εύρεση του _ στο _&#xD;de:_ finden in _&#xD;</translations><inputs><input type="%s">Your</input><input type="%s">Build Your Own Blocks</input></inputs><script><block s="doWarp"><script><block s="doReport"><custom-block s="find %s in %s starting from %n"><block var="search"/><block var="string"/><l>1</l></custom-block></block></script></block></script></block-definition><block-definition s="find %&apos;search&apos; in %&apos;string&apos; starting from %&apos;num&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211" collapsed="false">Finds the position of the the 1st string in the 2nd ones.</comment><header></header><code></code><translations>el:εύρεση του _ στο _  αρχίζοντας από το _&#xD;de:_ finden in _ ab _&#xD;</translations><inputs><input type="%s">l</input><input type="%s">Hello World</input><input type="%n">3</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>comparison idx</l><l>found pos</l><l>loop idx</l></list></block><block s="doSetVar"><l>comparison idx</l><l>0</l></block><block s="doSetVar"><l>found pos</l><l>0</l></block><block s="doSetVar"><l>loop idx</l><block s="reportDifference"><block var="num"/><l>1</l></block></block><block s="doUntil"><block s="reportOr"><block s="reportGreaterThan"><block var="found pos"/><l>0</l></block><block s="reportGreaterThan"><block var="loop idx"/><block s="reportDifference"><block s="reportStringSize"><block var="string"/></block><block s="reportStringSize"><block var="search"/></block></block></block></block><script><block s="doChangeVar"><l>loop idx</l><l>1</l></block><block s="doSetVar"><l>comparison idx</l><l>1</l></block><block s="doUntil"><block s="reportOr"><block s="reportNot"><block s="reportEquals"><block s="reportLetter"><block var="comparison idx"/><block var="search"/></block><block s="reportLetter"><block s="reportSum"><block s="reportDifference"><block var="loop idx"/><l>1</l></block><block var="comparison idx"/></block><block var="string"/></block></block></block><block s="reportEquals"><block var="comparison idx"/><block s="reportSum"><block s="reportStringSize"><block var="search"/></block><l>1</l></block></block></block><script><block s="doChangeVar"><l>comparison idx</l><l>1</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="comparison idx"/><block s="reportSum"><block s="reportStringSize"><block var="search"/></block><l>1</l></block></block><script><block s="doSetVar"><l>found pos</l><block var="loop idx"/></block></script></block></script></block><block s="doReport"><block var="found pos"/></block></script></block></script></block-definition><block-definition s="%&apos;s1&apos; ≠ %&apos;s2&apos;" type="predicate" category="operators"><comment x="0" y="0" w="211" collapsed="false">Not equals block</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportEquals"><block var="s1"/><block var="s2"/></block></block></block></script></block-definition><block-definition s="letters %&apos;n1&apos; to %&apos;n2&apos; of %&apos;word&apos;" type="reporter" category="operators"><comment x="0" y="0" w="211" collapsed="false">Returns letters from X to X from the word</comment><header></header><code></code><translations>el:γράμματα _ ως _ του _&#xD;de:Buchstaben _ bis _ von _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">3</input><input type="%s">World</input></inputs><script><block s="doReport"><custom-block s="%l as spaceless text"><custom-block s="items %n to %n of %l"><block var="n1"/><block var="n2"/><block s="reportTextSplit"><block var="word"/><l><option>letter</option></l></block></custom-block></custom-block></block></script></block-definition><block-definition s="items %&apos;num&apos; to %&apos;num2&apos; of %&apos;list&apos;" type="reporter" category="lists"><comment x="0" y="0" w="174" collapsed="false">Returns a list with the items from X to Y from a list</comment><header></header><code></code><translations>el:στοιχεία _ ως _ του _&#xD;de:Elementen _ bis _ von _&#xD;</translations><inputs><input type="%n">1</input><input type="%n">3</input><input type="%l"></input></inputs><script><custom-block s="let %upvar be %s"><l>var</l><block s="reportNumbers"><block var="num"/><block var="num2"/></block></custom-block><block s="doReport"><block s="reportIfElse"><custom-block s="setting %s"><l>Hyper blocks support</l></custom-block><block s="reportListItem"><block var="var"/><block var="list"/></block><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><block var="τιμή"/><block var="list"/></block></autolambda><list><l>τιμή</l></list></block><block var="var"/></block></block></block></script></block-definition><block-definition s="setting %&apos;which&apos;" type="reporter" category="sensing"><comment x="0" y="0" w="254.66666666666666" collapsed="false">Allows reading global settings programmatically.&#xD;&#xD;Eisenberg&apos;s Law:  Anything you can do from the user interface you should be able to do in your program, and vice versa.  This library is just a beginning; there are many UI controls outside of the Settings menu.</comment><header></header><code></code><translations>pt:o valor da configuração _&#xD;el:ρύθμιση _&#xD;de:Einstellung _&#xD;</translations><inputs><input type="%s" readonly="true"><options>Project notes&#xD;Project name&#xD;User&#xD;Presentation mode&#xD;Language&#xD;Zoom blocks&#xD;Stage size&#xD;Stage scale&#xD;Retina display support&#xD;Long form input dialog&#xD;Plain prototype labels&#xD;Input sliders&#xD;Execute on slider change&#xD;Clicking sound&#xD;Turbo mode&#xD;Flat design&#xD;Keyboard editing&#xD;Visible stepping&#xD;Thread safe scripts&#xD;Prefer smooth animations&#xD;Flat line ends&#xD;Codification support&#xD;Inheritance support&#xD;Hyper blocks support&#xD;Visible palette</options></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>which</l></list><l>var stage = this.parentThatIsA(StageMorph),&#xD;    ide = stage.parentThatIsA(IDE_Morph),&#xD;    world = stage.parentThatIsA(WorldMorph);&#xD;&#xD;switch (which) {&#xD;    case &apos;Project notes&apos;:&#xD;        return ide.projectNotes;&#xD;    case &apos;Project name&apos;:&#xD;        return ide.projectName;&#xD;    case &apos;User&apos;:&#xD;        return ide.cloud.username;&#xD;    case &apos;Presentation mode&apos;:&#xD;        return ide.isAppMode;&#xD;    case &apos;Language&apos;:&#xD;        return SnapTranslator.language;&#xD;    case &apos;Zoom blocks&apos;:&#xD;        return SyntaxElementMorph.prototype.scale;&#xD;    case &apos;Stage size&apos;:&#xD;        return new List([StageMorph.prototype.dimensions.x,&#xD;                                   StageMorph.prototype.dimensions.y]);&#xD;    case &apos;Stage scale&apos;:&#xD;       return stage.scale;&#xD;    case &apos;Retina display support&apos;:&#xD;        return isRetinaEnabled();&#xD;    case &apos;Long form input dialog&apos;:&#xD;        return InputSlotDialogMorph.prototype.isLaunchingExpanded;&#xD;    case &apos;Plain prototype labels&apos;:&#xD;        return BlockLabelPlaceHolderMorph.prototype.plainLabel;&#xD;    case &apos;Input sliders&apos;:&#xD;        return MorphicPreferences.useSliderForInput;&#xD;    case &apos;Execute on slider change&apos;:&#xD;        return ArgMorph.prototype.executeOnSliderEdit;&#xD;    case &apos;Clicking sound&apos;:&#xD;        return !!BlockMorph.prototype.snapSound;&#xD;    case &apos;Turbo mode&apos;:&#xD;        return stage.isFastTracked;&#xD;    case &apos;Flat design&apos;:&#xD;        return MorphicPreferences.isFlat;&#xD;    case &apos;Keyboard editing&apos;:&#xD;        return !!this.scripts.focus;&#xD;    case &apos;Visible stepping&apos;:&#xD;        return Process.prototype.enableSingleStepping;&#xD;    case &apos;Thread safe scripts&apos;:&#xD;        return stage.isThreadSafe;&#xD;    case &apos;Prefer smooth animations&apos;:&#xD;        return StageMorph.prototype.frameRate &gt; 0;&#xD;    case &apos;Flat line ends&apos;:&#xD;        return SpriteMorph.prototype.useFlatLineEnds;&#xD;    case &apos;Codification support&apos;:&#xD;        return StageMorph.prototype.enableCodeMapping;&#xD;    case &apos;Inheritance support&apos;:&#xD;        return StageMorph.prototype.enableInheritance;&#xD;    case &apos;Hyper blocks support&apos;:&#xD;        return Process.prototype.enableHyperOps;&#xD;    default: return which;&#xD;    case &apos;Visible palette&apos;:&#xD;        return ide.currentCategory;&#xD;}</l></block><list><block var="which"/></list></block></block></script></block-definition><block-definition s="let %&apos;var&apos; be %&apos;val&apos;" type="command" category="other"><comment x="0" y="0" w="183.33333333333334" collapsed="false">LET (FOO) BE (5)&#xD;is equivalent to&#xD;SCRIPT VARIABLES (FOO)&#xD;SET (FOO) TO (5)</comment><header></header><code></code><translations>pt:cria a variável de guião _ com valor _&#xD;el:άφησε το _ να είναι _&#xD;de:lassen _ auf _&#xD;</translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><block-definition s="%&apos;list&apos; as spaceless text" type="reporter" category="lists"><comment x="0" y="0" w="174" collapsed="false">Returns the list as sentence without spaces</comment><header></header><code></code><translations>el:_ ως αχώριστο κείμενο&#xD;de:_ als untrennen Text&#xD;</translations><inputs><input type="%l" readonly="true"><options>§_getVarNamesDict</options></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block var="list"/></block></block></script></block-definition><block-definition s="%&apos;num&apos; between %&apos;num1&apos; and %&apos;num2&apos;" type="reporter" category="operators"><comment x="0" y="0" w="180" collapsed="false">Returns the specified number but won&apos;t be smaller than the 2nd input and larger than the 3rd ones</comment><header></header><code></code><translations>el:θέση του _ μεταξύ του _ και _&#xD;de:Position von _ innerhalb _ und _&#xD;</translations><inputs><input type="%n">11</input><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doReport"><block s="reportMin"><block s="reportMax"><block var="num"/><block var="num1"/></block><block var="num2"/></block></block></script></block-definition><block-definition s="%&apos;number&apos; as %&apos;n2&apos; decimal number" type="reporter" category="operators"><comment x="0" y="0" w="432" collapsed="false">Returns the number as what Χ would be if Y decimals would be used¨&#xD;&#xD;e.g.&#xD;X/Y of 10/2 = 1010&#xD;X/Y of 37/5 = 122&#xD;X/Y of 100/16 = 64 (See also X AS (Numerical/Hexadecimal) NUMBER for more examples)&#xD;X/Y of 1024/36 = SG</comment><header></header><code></code><translations>el:_ ως _ δεκαδικό νούμερο&#xD;de:_ als _ dezimal Zahl&#xD;</translations><inputs><input type="%n">10</input><input type="%n">2</input></inputs><script><block s="doReport"><custom-block s="%s string %s"><l>uppercase</l><block s="evaluate"><block s="reportJSFunction"><list><l>num</l><l>dec</l></list><l>return Math.floor(num).toString(dec);</l></block><list><block var="number"/><custom-block s="%n between %n and %n"><block var="n2"/><l>2</l><l>36</l></custom-block></list></block></custom-block></block></script></block-definition><block-definition s="%&apos;type&apos; string %&apos;string&apos;" type="reporter" category="operators"><comment x="0" y="0" w="256" collapsed="false">UPPERCASE:&#xD;Turns the whole string capitalized&#xD;LOWERCASE:&#xD;Turns the whole string decapitalized&#xD;CAPITALIZE:&#xD;Turns the first letter of the string capitalized &#xD;LINED CAPITALIZE:&#xD;Turns the first letter of every line capitalized&#xD;FULL CAPITALIZE:&#xD;Turns the first letter every word of every line capitalized</comment><header></header><code></code><translations>el:_ κειμένου _&#xD;de:_ zeichenfolge _&#xD;</translations><inputs><input type="%s" readonly="true">uppercase<options>uppercase&#xD;lowercase</options></input><input type="%s">Pink girl</input></inputs><script><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="%s string %s"><block var="type"/><l></l></custom-block></autolambda><list></list></block><block var="string"/></block></block></script></block><block s="doWarp"><script><block s="doIfElse"><block s="reportEquals"><block var="type"/><l>uppercase</l></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>text</l></list><l>return text.toLocaleUpperCase();</l></block><list><block var="string"/></list></block></block></script><script><block s="doIf"><block s="reportEquals"><block var="type"/><l>lowercase</l></block><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>text</l></list><l>return text.toLocaleLowerCase();</l></block><list><block var="string"/></list></block></block></script></block></script></block></script></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="%&apos;RGBA&apos; of color %&apos;Color&apos;" type="reporter" category="other"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true">RGBA<options>R (red)=R&#xD;G (green)=G&#xD;B (blue)=B&#xD;A (alpha/transparency)=A&#xD;RGBA&#xD;RGB&#xD;name</options></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="RGBA"/><l>name</l></block><block s="evaluate"><block s="reportJSFunction"><list><l>colour</l></list><l>function rgbToHex(r, g, b) {&#xD;  return "#" + ((1 &lt;&lt; 24) + (r &lt;&lt; 16) + (g &lt;&lt; 8) + b).toString(16).slice(1);&#xD;}&#xD;colour = rgbToHex(colour.r, colour.g, colour.b);&#xD;    var colours = {"#f0f8ff":"aliceblue","#faebd7":"antiquewhite","#00ffff":"cyan","#7fffd4":"aquamarine","#f0ffff":"azure","#f5f5dc":"beige","#ffe4c4":"bisque","#000000":"black","#ffebcd":"blanchedalmond","#0000ff":"blue","#8a2be2":"blueviolet","#a52a2a":"brown","#deb887":"burlywood","#5f9ea0":"cadetblue","#7fff00":"chartreuse","#d2691e":"chocolate","#ff7f50":"coral","#6495ed":"cornflowerblue","#fff8dc":"cornsilk","#dc143c":"crimson","#00008b":"darkblue","#008b8b":"darkcyan","#b8860b":"darkgoldenrod","#a9a9a9":"darkgray","#006400":"darkgreen","#bdb76b":"darkkhaki","#8b008b":"darkmagenta","#556b2f":"darkolivegreen","#ff8c00":"darkorange","#9932cc":"darkorchid","#8b0000":"darkred","#e9967a":"darksalmon","#8fbc8f":"darkseagreen","#483d8b":"darkslateblue","#2f4f4f":"darkslategray","#00ced1":"darkturquoise","#9400d3":"darkviolet","#ff1493":"deeppink","#00bfff":"deepskyblue","#696969":"dimgray","#1e90ff":"dodgerblue","#b22222":"firebrick","#fffaf0":"floralwhite","#228b22":"forestgreen","#ff00ff":"magenta","#dcdcdc":"gainsboro","#f8f8ff":"ghostwhite","#ffd700":"gold","#daa520":"goldenrod","#808080":"gray","#008000":"green","#adff2f":"greenyellow","#f0fff0":"honeydew","#ff69b4":"hotpink","#cd5c5c":"indianred ","#4b0082":"indigo","#fffff0":"ivory","#f0e68c":"khaki","#e6e6fa":"lavender","#fff0f5":"lavenderblush","#7cfc00":"lawngreen","#fffacd":"lemonchiffon","#add8e6":"lightblue","#f08080":"lightcoral","#e0ffff":"lightcyan","#fafad2":"lightgoldenrodyellow","#d3d3d3":"lightgrey","#90ee90":"lightgreen","#ffb6c1":"lightpink","#ffa07a":"lightsalmon","#20b2aa":"lightseagreen","#87cefa":"lightskyblue","#778899":"lightslategray","#b0c4de":"lightsteelblue","#ffffe0":"lightyellow","#00ff00":"lime","#32cd32":"limegreen","#faf0e6":"linen","#800000":"maroon","#66cdaa":"mediumaquamarine","#0000cd":"mediumblue","#ba55d3":"mediumorchid","#9370d8":"mediumpurple","#3cb371":"mediumseagreen","#7b68ee":"mediumslateblue","#00fa9a":"mediumspringgreen","#48d1cc":"mediumturquoise","#c71585":"mediumvioletred","#191970":"midnightblue","#f5fffa":"mintcream","#ffe4e1":"mistyrose","#ffe4b5":"moccasin","#ffdead":"navajowhite","#000080":"navy","#fdf5e6":"oldlace","#808000":"olive","#6b8e23":"olivedrab","#ffa500":"orange","#ff4500":"orangered","#da70d6":"orchid","#eee8aa":"palegoldenrod","#98fb98":"palegreen","#afeeee":"paleturquoise","#d87093":"palevioletred","#ffefd5":"papayawhip","#ffdab9":"peachpuff","#cd853f":"peru","#ffc0cb":"pink","#dda0dd":"plum","#b0e0e6":"powderblue","#800080":"purple","#663399":"rebeccapurple","#ff0000":"red","#bc8f8f":"rosybrown","#4169e1":"royalblue","#8b4513":"saddlebrown","#fa8072":"salmon","#f4a460":"sandybrown","#2e8b57":"seagreen","#fff5ee":"seashell","#a0522d":"sienna","#c0c0c0":"silver","#87ceeb":"skyblue","#6a5acd":"slateblue","#708090":"slategray","#fffafa":"snow","#00ff7f":"springgreen","#4682b4":"steelblue","#d2b48c":"tan","#008080":"teal","#d8bfd8":"thistle","#ff6347":"tomato","#40e0d0":"turquoise","#ee82ee":"violet","#f5deb3":"wheat","#ffffff":"white","#f5f5f5":"whitesmoke","#ffff00":"yellow","#9acd32":"yellowgreen"}&#xD;&#xD;    if (typeof colours[colour.toLowerCase()] != &apos;undefined&apos;)&#xD;        return colours[colour.toLowerCase()];&#xD;&#xD;    return false;</l></block><list><block var="Color"/></list></block><block s="reportIfElse"><block s="reportNotEquals"><block var="RGBA"/><l>RGBA</l></block><block s="reportIfElse"><block s="reportEquals"><block var="RGBA"/><l>RGB</l></block><l></l><block s="reportListItem"><block s="reportListIndex"><block var="RGBA"/><block s="reportNewList"><list><l>R</l><l>G</l><l>B</l><l>A</l></list></block></block><custom-block s="%s of color %n"><l>RGBA</l><block var="Color"/></custom-block></block></block><block s="evaluate"><block s="reportJSFunction"><list><l>C</l></list><l>return (new List([ C.r, C.g, C.b, C.a * 100 ]));</l></block><list><block var="Color"/></list></block></block></block></block></script></block-definition><block-definition s="$brush set pen %&apos;dimension&apos; to %&apos;value&apos; %&apos;more value&apos;" type="command" category="pen"><comment x="0" y="0" w="265.3333333333333" collapsed="false">This block allows you to set the pen&apos;s color, transparency (on a scale from 0=opaque to 100=invisible), or size (in pixels).  The color can be set in many ways, including RGB values, HSV values, HSL values, fair HSV or HSL (based on a modified spectrum that gives each spectral color equal space and promotes brown to a color), color number, crayon, or X11/W3C color name.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>color&#xD;color number&#xD;crayon&#xD;fair hue&#xD;&#126;1&#xD;size&#xD;transparency&#xD;X11/W3C name&#xD;&#126;2&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB(A) vector&#xD;RGB(A) hex&#xD;}&#xD;}</options></input><input type="%s"><options>function () {&#xD;&#xD;// add/edit menus but don&apos;t forget to edit other slot manual menu options to match&#xD;&#xD;var color_number=[&#xD;&quot;0 black=0&quot;, &quot;14 white=14&quot;,&#xD;&quot;20 spectral red=20&quot;, &quot;25 darkest red=25&quot;,&#xD;&quot;30 saddle brown=30&quot;, &quot;35 darkest brown=35&quot;,&#xD;&quot;40 spectral orange=40&quot;, &quot;45 darkest orange=45&quot;,&#xD;&quot;50 spectral yellow=50&quot;, &quot;55 darkest yellow=55&quot;,&#xD;&quot;60 spectral green=60&quot;, &quot;65 darkest green=65&quot;,&#xD;&quot;70 spectral cyan=70&quot;, &quot;75 darkest cyan=75&quot;,&#xD;&quot;80 spectral blue=80&quot;, &quot;85 darkest blue=85&quot;,&#xD;&quot;90 spectral violet=90&quot;, &quot;95 magenta=95&quot;];&#xD;&#xD;var fair_hue=[&#xD;&quot;0 red=0&quot;, &quot;12.5 brown=12.5&quot;, &quot;25 orange=25&quot;, &quot;37.5 yellow=37.5&quot;,&#xD;&quot;50 green=50&quot;, &quot;62.5 cyan=62.5&quot;, &quot;75 blue=75&quot;, &quot;87.5 violet=87.5&quot;];&#xD;&#xD;var crayon=[&#xD;&quot;grays&quot;,[&#xD;&quot;0 black #000000=0&quot;,&#xD;&quot;1 gray7 #121212=1&quot;,&#xD;&quot;2 gray14 #242424=2&quot;,&#xD;&quot;3 gray21 #363636=3&quot;,&#xD;&quot;4 gray28 #484848=4&quot;,&#xD;&quot;5 gray36 #5c5c5c=5&quot;,&#xD;&quot;6 gray43 #6d6d6d=6&quot;,&#xD;&quot;7 gray50 #7f7f7f=7&quot;,&#xD;&quot;8 gray57 #919191=8&quot;,&#xD;&quot;9 gray64 #a3a3a3=9&quot;,&#xD;&quot;10 gray71 #b5b5b5=10&quot;,&#xD;&quot;11 gray78 #c8c8c8=11&quot;,&#xD;&quot;12 gray85 #dadada=12&quot;,&#xD;&quot;13 gray92 #ececec=13&quot;,&#xD;&quot;14 white #ffffff=14&quot;],&#xD;&quot;pinks&quot;,[&#xD;&quot;15 deep pink #ff1493=15&quot;,&#xD;&quot;16 hot pink #ff69b4=16&quot;,&#xD;&quot;17 bright pink #ff007f=17&quot;,&#xD;&quot;18 raspberry #e30b5d=18&quot;,&#xD;&quot;19 amaranth #e52b50=19&quot;],&#xD;&quot;reds&quot;,[&#xD;&quot;20 red #ff0000=20&quot;,&#xD;&quot;21 burgundy #900020=21&quot;,&#xD;&quot;22 cherry #990000=22&quot;,&#xD;&quot;23 dark candy apple red #a40000=23&quot;,&#xD;&quot;24 sanguine #c00000=24&quot;,&#xD;&quot;25 maroon #800000=25&quot;,&#xD;&quot;26 crimson #c90016=26&quot;,&#xD;&quot;27 Lists #d94d11=27&quot;,&#xD;&quot;28 candy apple red #ff0800=28&quot;,&#xD;&quot;29 coquelicot #ff3800=29&quot;],&#xD;&quot;browns&quot;,[&#xD;&quot;30 saddle brown #8b4513=30&quot;,&#xD;&quot;31 chocolate #7b3f00=31&quot;,&#xD;&quot;32 kobicha #6b4423=32&quot;,&#xD;&quot;33 sepia #704214=33&quot;,&#xD;&quot;34 chestnut #954535=34&quot;,&#xD;&quot;35 dark brown #654321=35&quot;,&#xD;&quot;36 brown #964b00=36&quot;,&#xD;&quot;37 golden brown #996515=37&quot;,&#xD;&quot;38 cinnamon #b87333=38&quot;,&#xD;&quot;39 copper #d2691e=39&quot;],&#xD;&quot;oranges&quot;,[&#xD;&quot;40 orange #ff7f00=40&quot;,&#xD;&quot;41 Pantone orange #ff5800=41&quot;,&#xD;&quot;42 pumpkin #ff7518=42&quot;,&#xD;&quot;43 Variables #f3761d=43&quot;,&#xD;&quot;44 Spanish orange #e86100=44&quot;,&#xD;&quot;45 burnt orange #cc5500=45&quot;,&#xD;&quot;46 sinopia #cb410b=46&quot;,&#xD;&quot;47 ochre #cc7722=47&quot;,&#xD;&quot;48 carrot #ed9121=48&quot;,&#xD;&quot;49 tangerine #f28500=49&quot;],&#xD;&quot;yellows&quot;,[&#xD;&quot;50 yellow #ffff00=50&quot;,&#xD;&quot;51 Control #e6a822=51&quot;,&#xD;&quot;52 dark goldenrod #b8860b=52&quot;,&#xD;&quot;53 goldenrod #daa520=53&quot;,&#xD;&quot;54 saffron #f4c430=54&quot;,&#xD;&quot;55 sandstorm #ecd540=55&quot;,&#xD;&quot;56 mustard #ffdb58=56&quot;,&#xD;&quot;57 gold #ffd700=57&quot;,&#xD;&quot;58 egg yolk #fee33e=58&quot;,&#xD;&quot;59 rubber duck #fbe108=59&quot;],&#xD;&quot;greens&quot;,[&#xD;&quot;60 lime #00ff00=60&quot;,&#xD;&quot;61 apple green #8db600=61&quot;,&#xD;&quot;62 Operators #62c213=62&quot;,&#xD;&quot;63 forest green #228b22=63&quot;,&#xD;&quot;64 green #008000=64&quot;,&#xD;&quot;65 dark green #006400=65&quot;,&#xD;&quot;66 dark pastel green #03c03c=66&quot;,&#xD;&quot;67 emerald #50c878=67&quot;,&#xD;&quot;68 mint #3eb489=68&quot;,&#xD;&quot;69 Pen #00a178=69&quot;],&#xD;&quot;cyans&quot;,[&#xD;&quot;70 aqua (cyan) #00ffff=70&quot;,&#xD;&quot;71 dark cyan #008b8b=71&quot;,&#xD;&quot;72 cerulean #007ba7=72&quot;,&#xD;&quot;73 iceberg #71a6d2=73&quot;,&#xD;&quot;74 Sensing #0494dc=74&quot;,&#xD;&quot;75 teal #008080=75&quot;,&#xD;&quot;76 light sky blue #87cefa=76&quot;,&#xD;&quot;77 deep sky blue #00bfff=77&quot;,&#xD;&quot;78 dodger blue #1e90ff=78&quot;,&#xD;&quot;79 azure #007fff=79&quot;],&#xD;&quot;blues&quot;,[&#xD;&quot;80 blue #0000ff=80&quot;,&#xD;&quot;81 midnight blue #191970=81&quot;,&#xD;&quot;82 dark powder blue #003399=82&quot;,&#xD;&quot;83 cobalt #0047ab=83&quot;,&#xD;&quot;84 denim #1560bd=84&quot;,&#xD;&quot;85 navy blue #000080=85&quot;,&#xD;&quot;86 steel blue #4682b4=86&quot;,&#xD;&quot;87 Motion #4a6cd4=87&quot;,&#xD;&quot;88 cornflower #6495ed=88&quot;,&#xD;&quot;89 slate blue #6a5acd=89&quot;],&#xD;&quot;purples&quot;,[&#xD;&quot;90 violet #8000ff=90&quot;,&#xD;&quot;91 Looks #8f56e3=91&quot;,&#xD;&quot;92 grape #6f2da8=92&quot;,&#xD;&quot;93 indigo #4b0082=93&quot;,&#xD;&quot;94 x11 purple #a020f0=94&quot;,&#xD;&quot;95 magenta (fuchia) #ff00ff=95&quot;,&#xD;&quot;96 dark orchid #9932cc=96&quot;,&#xD;&quot;97 Sound #cf4ad9=97&quot;,&#xD;&quot;98 purple #7f007f=98&quot;,&#xD;&quot;99 dark magenta #8b008b=99&quot;]];&#xD;&#xD;function makeMenuHelper(items, output) {&#xD;    // in an array, walk through the items in pairs&#xD;    var i = 0;&#xD;    while (i &lt; items.length) {&#xD;        var label = items[i];&#xD;        var possiblyNested = items[i+1];&#xD;        // if possiblyNested is array, it is a nest under label&#xD;        // if possiblyNested is string, it is just a sibling&#xD;        if (possiblyNested === undefined) {&#xD;          // label is actually the last element of the list&#xD;          var hasEquals = label.split(&quot;=&quot;);&#xD;          if (hasEquals.length == 2) {&#xD;            output[hasEquals[0]] = hasEquals[1];&#xD;            i += 1;&#xD;          } else if (hasEquals.length == 3) {&#xD;            output[hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2]] = hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2];&#xD;            i += 1;&#xD;          } else {&#xD;            output[label] = label;&#xD;            i += 1;&#xD;          }&#xD;        } else if (typeof possiblyNested == &quot;string&quot;) {&#xD;          var hasEquals = label.split(&quot;=&quot;);&#xD;          if (hasEquals.length == 2) {&#xD;            output[hasEquals[0]] = hasEquals[1];&#xD;            i += 1;&#xD;          } else if (hasEquals.length == 3) {&#xD;            output[hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2]] = hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2];&#xD;            i += 1;&#xD;          } else {&#xD;            output[label] = label;&#xD;            i += 1;&#xD;          }&#xD;        } else if (Array.isArray(possiblyNested)) {&#xD;          var nestingOutput = {};&#xD;          makeMenuHelper(possiblyNested, nestingOutput);&#xD;          output[label] = nestingOutput;&#xD;          i += 2&#xD;        } else {&#xD;          throw new Error(&quot;Bad value at index &quot; + i);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var ide = world.children[0];&#xD;var menuVarName = this.parent.blockSpec;&#xD;try {&#xD;    menuVarName = this.parent.cachedInputs[0].children[0].text;&#xD;} catch(err) {&#xD;    menuPoss = this.parent.children;&#xD;    menuPoss = menuPoss.filter(function (e) { return (e instanceof InputSlotMorph)});&#xD;    menuVarName = menuPoss[0].children[0].text;&#xD;}&#xD;&#xD;menuVarName = menuVarName.replace(&quot; &quot;,&quot;_&quot;);&#xD;&#xD;try {&#xD;    var menu = eval(menuVarName);&#xD;    var output = {};&#xD;    makeMenuHelper(menu, output);&#xD;    return output;&#xD;} catch(err) {&#xD;}&#xD;}</options></input><input type="%mult%s"></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doRun"><block s="reportListItem"><block s="reportListIndex"><block var="dimension"/><block var="✐ dimension names"/></block><block var="✐ dimension dispatch"/></block><list><block var="value"/><block var="more value"/></list></block></script><scripts><comment x="460.0888671875" y="4175.599999999967" w="251.33333333333334" collapsed="false">Note to myself:  When the user sets a fair dimension, say fair HSL, variable HSL contains the corresponding &quot;unfair&quot; values, and &quot;raw HSL&quot; contains the numbers the user actually gave.  It has to be this way because in the case of HSV, there is no &quot;HSV&quot; variable; rather, we use the pen&apos;s actual remembered-by-Javascript color&apos;s HSV coordinates.  So our HSL variable has to be analogous to that.  In both cases &quot;raw&quot; means the numbers the user gave us.</comment><script x="32.333333333333336" y="187.66666666666666"><block s="evaluate"><block s="reportJSFunction"><list><l>spec</l><l>proc</l></list><l>   var foo = this.parentThatIsA(StageMorph).globalBlocks.find(definition =&gt; {&#xD;                return (definition.localizedSpec() == spec);});&#xD;   return proc.reify(foo.blockInstance(),new List([]));&#xD;</l></block><list><block s="reportJoinWords"><list><l>✐ set pen to </l><block var="dimension"/><l> %s %mult%s</l></list></block></list></block></script></scripts></block-definition><block-definition s="mmap %&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="doIf"><block s="reportListIsEmpty"><block s="reportListItem"><l>1</l><block var="lists"/></block></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"/><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>1</l><l/></block></autolambda><list></list></block><block var="lists"/></block></block><custom-block s="mmap %repRing over %mult%l"><block var="function"/><block s="reportAtomicMap"><block s="reifyReporter"><autolambda><block s="reportCDR"><l/></block></autolambda><list></list></block><block var="lists"/></block></custom-block></block></block></script></block-definition><block-definition s="✐ update HSL" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>L</l></list></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><block s="doSetVar"><l>✐ HSL</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doSetVar"><l>L</l><block s="reportDifference"><block var="V"/><block s="reportQuotient"><block s="reportProduct"><block var="V"/><block var="S"/></block><l>2</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block var="H"/><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="L"/><l>0</l></block><block s="reportEquals"><block var="L"/><l>1</l></block></block><l>0</l><block s="reportQuotient"><block s="reportDifference"><block var="V"/><block var="L"/></block><block s="reportMin"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></block></block></block><block var="L"/></list></block></block></script><list><l>H</l><l>S</l><l>V</l></list></block><custom-block s="HSV color"></custom-block></block></block></block><block s="doSetVar"><l>✐ raw HSL</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="evaluate"><block s="reifyReporter"><script><block s="doSetVar"><l>L</l><block s="reportDifference"><block var="V"/><block s="reportQuotient"><block s="reportProduct"><block var="V"/><block var="S"/></block><l>2</l></block></block></block><block s="doReport"><block s="reportNewList"><list><block var="H"/><block s="reportIfElse"><block s="reportOr"><block s="reportEquals"><block var="L"/><l>0</l></block><block s="reportEquals"><block var="L"/><l>1</l></block></block><l>0</l><block s="reportQuotient"><block s="reportDifference"><block var="V"/><block var="L"/></block><block s="reportMin"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></block></block></block><block var="L"/></list></block></block></script><list><l>H</l><l>S</l><l>V</l></list></block><block s="reportIfElse"><block var="✐ fair?"/><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ raw HSV"/></block><custom-block s="HSV color"></custom-block></block></block></block></block></script></block></script></block-definition><block-definition s="✐ update HSV" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>V</l><l>L</l><l>HSL 0-1</l><l>raw HSL 0-1</l></list></block><block s="doSetVar"><l>HSL 0-1</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ HSL"/></block></block><block s="doSetVar"><l>L</l><block s="reportListItem"><l>3</l><block var="HSL 0-1"/></block></block><block s="doSetVar"><l>V</l><block s="reportSum"><block var="L"/><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="HSL 0-1"/></block><block s="reportMin"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></block></block></block></block><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="HSL 0-1"/></block><block s="reportIfElse"><block s="reportEquals"><block var="V"/><l>0</l></block><l>0</l><block s="reportDifference"><l>2</l><block s="reportProduct"><l>2</l><block s="reportQuotient"><block var="L"/><block var="V"/></block></block></block></block><block var="V"/></custom-block><block s="doIfElse"><block var="✐ fair?"/><script><block s="doSetVar"><l>raw HSL 0-1</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><l></l><l>100</l></block></autolambda><list></list></block><block var="✐ raw HSL"/></block></block><block s="doSetVar"><l>L</l><block s="reportListItem"><l>3</l><block var="raw HSL 0-1"/></block></block><block s="doSetVar"><l>V</l><block s="reportSum"><block var="L"/><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="raw HSL 0-1"/></block><block s="reportMin"><block var="L"/><block s="reportDifference"><l>1</l><block var="L"/></block></block></block></block></block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="raw HSL 0-1"/></block><block s="reportIfElse"><block s="reportEquals"><block var="V"/><l>0</l></block><l>0</l><block s="reportDifference"><l>2</l><block s="reportProduct"><l>2</l><block s="reportQuotient"><block var="L"/><block var="V"/></block></block></block></block><block var="V"/></list></block></block></block></script><script><block s="doSetVar"><l>✐ raw HSV</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l>100</l></block></autolambda><list></list></block><custom-block s="HSV color"></custom-block></block></block></script></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="pen"><comment x="0" y="0" w="226" collapsed="false">The identity function reports its input.</comment><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="$brush pen %&apos;dimension&apos;" type="reporter" category="pen"><comment x="0" y="0" w="380.6666666666667" collapsed="false">This block reports the pen size, color, or transparency, in all the same ways that the SET PEN block allows you to set those pen properties. (It will also report the current crayon number, if the pen color was most recently set with SET PEN TO CRAYON.)&#xD;&#xD;See Appendix A of the Snap! Reference Manual for details. </comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>color&#xD;color number&#xD;crayon&#xD;fair hue&#xD;&#126;1&#xD;size&#xD;transparency&#xD;X11/W3C name&#xD;&#126;2&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGBA vector&#xD;RGB(A) hex&#xD;}&#xD;}</options></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>size</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>size</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>hue</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>hue</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSV)</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>saturation</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>value (brightness)</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>brightness</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>transparency</l></block><script><block s="doReport"><block s="getPenAttribute"><l><option>transparency</option></l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB vector</l></block><script><block s="doReport"><custom-block s="RGB color"></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGBA vector</l></block><script><block s="doReport"><block s="reportConcatenatedLists"><list><custom-block s="RGB color"></custom-block><block s="reportNewList"><list><block s="reportQuotient"><block s="reportProduct"><block s="reportDifference"><l>100</l><block s="getPenAttribute"><l><option>transparency</option></l></block></block><l>255</l></block><l>100</l></block></list></block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>red</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><custom-block s="RGB color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>green</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><custom-block s="RGB color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>blue</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><custom-block s="RGB color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB(A) hex</l></block><script><block s="doDeclareVariables"><list><l>rgb</l></list></block><block s="doSetVar"><l>rgb</l><custom-block s="RGB color"></custom-block></block><block s="doIf"><block s="reportGreaterThan"><block s="getPenAttribute"><l><option>transparency</option></l></block><l>0</l></block><script><block s="doAddToList"><block s="reportQuotient"><block s="reportProduct"><block s="reportDifference"><l>100</l><block s="getPenAttribute"><l><option>transparency</option></l></block></block><l>255</l></block><l>100</l></block><block var="rgb"/></block></script></block><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><custom-block s="✐ hexchar %s"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><l></l><l>16</l></block></block></custom-block><custom-block s="✐ hexchar %s"><block s="reportModulus"><l></l><l>16</l></block></custom-block></list></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRound"><l></l></block></autolambda><list></list></block><block var="rgb"/></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l></l></list></block></autolambda><list></list></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSV vector</l></block><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l>100</l><l></l></block></autolambda><list></list></block><custom-block s="HSV color"></custom-block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>HSL vector</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block var="✐ HSL"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSL)</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>2</l><block var="✐ HSL"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>lightness</l></block><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>3</l><block var="✐ HSL"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>color number</l></block><script><block s="doReport"><block s="reportIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>color</l></block><block var="✐ color scale"/><l>not set</l></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>color</l></block><script><block s="doReport"><custom-block s="✐ current pen color"></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair hue</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="✐ raw HSL"/></block></block></script><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="✐ raw HSV"/></block></block></script></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSL)</l></block><script><block s="doIf"><block var="✐ fair?"/><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>2</l><block var="✐ raw HSL"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair lightness</l></block><script><block s="doIf"><block var="✐ fair?"/><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block s="reportListItem"><l>3</l><block var="✐ raw HSL"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSL vector</l></block><script><block s="doIf"><block var="✐ fair?"/><script><custom-block s="✐ update HSL"></custom-block><block s="doReport"><block var="✐ raw HSL"/></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSV)</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="doReport"><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair value (brightness)</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="doReport"><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair HSV vector</l></block><script><block s="doIf"><block var="✐ fair?"/><script><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="doReport"><block var="✐ raw HSV"/></block></script></block><block s="doReport"><l>not set</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>crayon</l></block><script><block s="doReport"><custom-block s="✐ crayon number of color %s"><custom-block s="✐ current pen color"></custom-block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>X11/W3C name</l></block><script><block s="doReport"><custom-block s="✐ X11 name of color %s"><custom-block s="✐ current pen color"></custom-block></custom-block></block></script></block></script></block-definition><block-definition s="$brush change pen %&apos;dimension&apos; by %&apos;amount&apos;" type="command" category="pen"><comment x="0" y="0" w="334" collapsed="false">Changes any pen property by the specified amount.  Some color scales can&apos;t be adjusted this way unless the color was first SET using that scale.&#xD;Vectors (e.g., RGB color as a list of three numbers) can be incremented&#xD;by a vector as the amount. X11/W3C names can&apos;t be incremented.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>color number&#xD;crayon&#xD;fair hue&#xD;&#126;1&#xD;size&#xD;transparency&#xD;&#126;2&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGBA vector&#xD;}&#xD;}</options></input><input type="%n"></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doDeclareVariables"><list><l>old</l></list></block><block s="doSetVar"><l>old</l><custom-block s="$brush pen %s"><block var="dimension"/></custom-block></block><block s="doIf"><block s="reportEquals"><block var="old"/><l>not set</l></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Dimension </l><block var="dimension"/><l> not set.</l></list></block></custom-block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>crayon</l></block><script><custom-block s="✐ set pen to crayon %s %l"><block s="reportSum"><block var="old"/><block var="amount"/></block><l/></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>RGB hex</l></block><script><custom-block s="error %txt"><l>Sorry, I don&apos;t know how to add in hexadecimal.</l></custom-block></script></block><block s="doIf"><block s="reportIsA"><block var="amount"/><l><option>number</option></l></block><script><custom-block s="$brush set pen %s to %s %mult%s"><block var="dimension"/><block s="reportSum"><block var="old"/><block var="amount"/></block><list><l></l></list></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><block s="doIf"><block s="reportIsA"><block var="amount"/><l><option>list</option></l></block><script><custom-block s="$brush set pen %s to %s %mult%s"><block var="dimension"/><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block><list><block var="old"/><block var="amount"/></list></custom-block><list><l></l></list></custom-block><block s="doStopThis"><l><option>this block</option></l></block></script></block><custom-block s="error %txt"><block s="reportJoinWords"><list><l>I don&apos;t know how to handle </l><block var="dimension"/></list></block></custom-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="✐ make integer RGB" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportRound"><l></l></block></autolambda><list></list></block><custom-block s="RGB color"></custom-block></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;pt:captura _ _&#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;pt:lança _&#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="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;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="✐ no spaces %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportTextSplit"><block var="text"/><l> </l></block></block></block></script></block-definition><block-definition s="create %&apos;scope&apos; var %&apos;names&apos;" type="command" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block creates  new variables on the selected scope: global (for all sprites), sprite (for this sprite only) or script (only for that blocks stack) with the names given (in &apos;names&apos; list).&#xD;&#xD;If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.</comment><header></header><code></code><translations>pt:cria as variáveis _ _&#xD;ca:crea les _ variables _&#xD;es:crear las _ variables _&#xD;de:erstellen _ var _&#xD;</translations><inputs><input type="%s" readonly="true">global<options>global&#xD;sprite&#xD;script</options></input><input type="%mult%txt"></input></inputs><script><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>script</l></block><script><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (!proc.homeContext.variables.vars[varName]) proc.homeContext.variables.addVar(varName);</l></block><list><block var="each item"/></list></block></script></block></script><script><block s="doDeclareVariables"><list><l>global</l></list></block><block s="doIfElse"><block s="reportEquals"><block var="scope"/><l>sprite</l></block><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><script><block s="doSetVar"><l>global</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block><block s="doForEach"><l>each item</l><block var="names"/><script><block s="doRun"><block s="reportJSFunction"><list><l>varName</l><l>global</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;if (global &amp;&amp; !proc.homeContext.variables.parentFrame.parentFrame.vars[varName]) this.addVariable(varName, true);&#xD;if (!global &amp;&amp; !proc.homeContext.variables.parentFrame.vars[varName]) this.addVariable(varName, false);</l></block><list><block var="each item"/><block var="global"/></list></block></script></block><block s="doRun"><block s="reportJSFunction"><list></list><l>var ide = this.parentThatIsA(IDE_Morph);&#xD;ide.flushBlocksCache(&apos;variables&apos;); // b/c of inheritance&#xD;ide.refreshPalette();</l></block><list></list></block></script></block></script></block-definition><block-definition s="does var %&apos;name&apos; exist?" type="predicate" category="variables"><comment x="0" y="0" w="146" collapsed="false">This block reports &quot;true&quot; if there is a variable with this given name (input slot) in that context.&#xD;&#xD;It can be a global, sprite or script variable.&#xD;&#xD;Otherwise it reports &quot;false&quot;.</comment><header></header><code></code><translations>pt:a variável _ existe&#xD;ca:existeix la variable _ ?&#xD;es:existe la variable _ ?&#xD;de:existiert var _ ?&#xD;</translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>varName</l><l>proc</l></list><l>if ((typeof varName) != "string" || varName === "") {&#xD;    throw new Error("name isn&apos;t a string: " + varName);&#xD;}&#xD;return proc.homeContext.variables.silentFind(varName)? true:false;</l></block><list><block var="name"/></list></block></block></script></block-definition><block-definition s="$brush color %&apos;newcolor&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%clr"></input></inputs><script><block s="doReport"><block s="reportNewCostume"><block s="reportNewList"><list><block s="reportProduct"><block s="reportTextSplit"><custom-block s="substring of %txt before %txt"><custom-block s="substring of %txt after %txt"><block var="newcolor"/><l>(</l></custom-block><l>)</l></custom-block><l><option>csv</option></l></block><block s="reportNewList"><list><l>1</l><l>1</l><l>1</l><l>255</l></list></block></block></list></block><l>1</l><l>1</l></block></block></script></block-definition><block-definition s="$brush mix colors %&apos;weighted colors&apos; using %&apos;flavor&apos; rules" type="reporter" category="pen"><comment x="0" y="0" w="304" collapsed="false">combines any number of colors, reporting the result of mixing them, either additively (like colored light beams) or subtractively (like paints).  If the result is too bright (additive) or too dark (subtractive), try the &quot;averaged&quot; versions, which will make the brightness more like the brightnesses of the input colors.</comment><header></header><code></code><translations></translations><inputs><input type="%mult%obj"></input><input type="%s" readonly="true"><options>additive (light)&#xD;additive (averaged)&#xD;subtractive (ideal)&#xD;subtractive (averaged)&#xD;simulated paint&#xD;paint (sRGB corrected)</options></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doDeclareVariables"><list><l>new</l><l>max</l><l>colors</l><l>weights</l></list></block><block s="doSetVar"><l>colors</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><block s="reportListItem"><l>1</l><l/></block><l></l></block></autolambda><list></list></block><block var="weighted colors"/></block></block><block s="doSetVar"><l>weights</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>list</option></l></block><block s="reportListItem"><l>2</l><l/></block><l>1</l></block></autolambda><list></list></block><block var="weighted colors"/></block></block><block s="doIf"><custom-block s="text %txt contains %txt"><block var="flavor"/><l>paint</l></custom-block><script><block s="doDeclareVariables"><list><l>rho-r</l><l>rho-g</l><l>rho-b</l><l>waveforms</l></list><comment w="152.66666666666666" collapsed="true">convert RGB to waveform</comment></block><block s="doSetVar"><l>rho-r</l><block s="reportTextSplit"><l>0.021592459, 0.020293111, 0.021807906, 0.023803297, 0.025208132, 0.025414957, 0.024621282, 0.020973705, 0.015752802, 0.01116804, 0.008578277, 0.006581877, 0.005171723, 0.004545205, 0.00414512, 0.004343112, 0.005238155, 0.007251939, 0.012543656, 0.028067132, 0.091342277, 0.484081092, 0.870378324, 0.939513128, 0.960926994, 0.968623763, 0.971263883, 0.972285819, 0.971898742, 0.972691859, 0.971734812, 0.97234454, 0.97150339, 0.970857997, 0.970553866, 0.969671404</l><l>, </l></block></block><block s="doSetVar"><l>rho-g</l><block s="reportTextSplit"><l>0.010542406, 0.010878976, 0.011063512, 0.010736566, 0.011681813, 0.012434719, 0.014986907, 0.020100392, 0.030356263, 0.063388962, 0.173423837, 0.568321142, 0.827791998, 0.916560468, 0.952002841, 0.964096452, 0.970590861, 0.972502542, 0.969148203, 0.955344651, 0.892637233, 0.5003641, 0.116236717, 0.047951391, 0.027873526, 0.020057963, 0.017382174, 0.015429109, 0.01543808, 0.014546826, 0.015197773, 0.014285896, 0.015069123, 0.015506263, 0.015545797, 0.016302839</l><l>, </l></block></block><block s="doSetVar"><l>rho-b</l><block s="reportTextSplit"><l>0.967865135, 0.968827912, 0.967128582, 0.965460137, 0.963110055, 0.962150324, 0.960391811, 0.958925903, 0.953890935, 0.925442998, 0.817997886, 0.42509696, 0.167036273, 0.078894327, 0.043852038, 0.031560435, 0.024170984, 0.020245519, 0.01830814, 0.016588218, 0.01602049, 0.015554808, 0.013384959, 0.012535491, 0.011199484, 0.011318274, 0.011353953, 0.012285073, 0.012663188, 0.012761325, 0.013067426, 0.013369566, 0.013427487, 0.01363574, 0.013893597, 0.014025757</l><l>, </l></block></block><block s="doSetVar"><l>waveforms</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportQuotient"><custom-block s="✐ RGB from color %s"><l></l></custom-block><l>255</l></block></autolambda><list></list></block><block var="colors"/></block></block><block s="doIf"><custom-block s="text %txt contains %txt"><block var="flavor"/><l>sRGB</l></custom-block><script><block s="doSetVar"><l>waveforms</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportLessThan"><l></l><l>0.04045</l></block><block s="reportQuotient"><l></l><l>12.92</l></block><block s="reportPower"><block s="reportQuotient"><block s="reportSum"><l></l><l>0.055</l></block><l>1.055</l></block><l>2.4</l></block></block></autolambda><list></list></block><l/></block></autolambda><list></list></block><block var="waveforms"/></block></block></script></block><block s="doSetVar"><l>waveforms</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCombine"><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block><list><l/><block s="reportNewList"><list><block var="rho-r"/><block var="rho-g"/><block var="rho-b"/></list></block></list></custom-block><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></autolambda><list></list></block><block var="waveforms"/></block></block><block s="doDeclareVariables"><list><l>sum of weights</l><l>combined waveform</l></list><comment w="214" collapsed="true">weighted geometric mean of waveforms</comment></block><block s="doSetVar"><l>sum of weights</l><block s="reportCombine"><block var="weights"/><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doSetVar"><l>combined waveform</l><block s="reportCombine"><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportPower"><l></l><block s="reportQuotient"><l></l><block var="sum of weights"/></block></block></autolambda><list></list></block><list><block var="waveforms"/><block var="weights"/></list></custom-block><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doDeclareVariables"><list><l>T</l></list><comment w="90" collapsed="true">back to RGB</comment></block><block s="doSetVar"><l>T</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextSplit"><l></l><l><option>word</option></l></block></autolambda><list></list></block><block s="reportNewList"><list><l>5.47813E-05	0.000184722	0.000935514	0.003096265	0.009507714	0.017351596	0.022073595	0.016353161	0.002002407	-0.016177731	-0.033929391	-0.046158952	-0.06381706	-0.083911194	-0.091832385	-0.08258148	-0.052950086	-0.012727224	0.037413037	0.091701812	0.147964686	0.181542886	0.210684154	0.210058081	0.181312094	0.132064724	0.093723787	0.057159281	0.033469657	0.018235464	0.009298756	0.004023687	0.002068643	0.00109484	0.000454231	0.000255925</l><l>-4.65552E-05	-0.000157894	-0.000806935	-0.002707449	-0.008477628	-0.016058258	-0.02200529	-0.020027434	-0.011137726	0.003784809	0.022138944	0.038965605	0.063361718	0.095981626	0.126280277	0.148575844	0.149044804	0.14239936	0.122084916	0.09544734	0.067421931	0.035691251	0.01313278	-0.002384996	-0.009409573	-0.009888983	-0.008379513	-0.005606153	-0.003444663	-0.001921041	-0.000995333	-0.000435322	-0.000224537	-0.000118838	-4.93038E-05	-2.77789E-05</l><l>0.00032594	0.001107914	0.005677477	0.01918448	0.060978641	0.121348231	0.184875618	0.208804428	0.197318551	0.147233899	0.091819086	0.046485543	0.022982618	0.00665036	-0.005816014	-0.012450334	-0.015524259	-0.016712927	-0.01570093	-0.013647887	-0.011317812	-0.008077223	-0.005863171	-0.003943485	-0.002490472	-0.001440876	-0.000852895	-0.000458929	-0.000248389	-0.000129773	-6.41985E-05	-2.71982E-05	-1.38913E-05	-7.35203E-06	-3.05024E-06	-1.71858E-06</l></list></block></block></block><block s="doSetVar"><l>new</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCombine"><block s="reportProduct"><block var="combined waveform"/><l></l></block><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></autolambda><list></list></block><block var="T"/></block></block><block s="doIf"><custom-block s="text %txt contains %txt"><block var="flavor"/><l>sRGB</l></custom-block><script><block s="doSetVar"><l>new</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportLessThan"><l></l><l>0.0031308</l></block><block s="reportProduct"><l>12.92</l><l></l></block><block s="reportDifference"><block s="reportProduct"><l>1.055</l><block s="reportPower"><l></l><block s="reportQuotient"><l>1</l><l>2.4</l></block></block></block><l>0.055</l></block></block></autolambda><list></list></block><block var="new"/></block></block></script></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportProduct"><l>255</l><block var="new"/></block><list><l></l></list></custom-block></block></script></block><block s="doIfElse"><custom-block s="text %txt contains %txt"><block var="flavor"/><l>add</l></custom-block><script><block s="doSetVar"><l>new</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCombine"><l/><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></autolambda><list></list></block><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportProduct"><custom-block s="✐ RGB from color %s"><l></l></custom-block><l></l></block></autolambda><list></list></block><list><block var="colors"/><block var="weights"/></list></custom-block></block></block></block><block s="doIf"><custom-block s="text %txt contains %txt"><block var="flavor"/><l>aver</l></custom-block><script><block s="doSetVar"><l>new</l><block s="reportQuotient"><block var="new"/><block s="reportCombine"><block var="weights"/><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></block></block></script></block><block s="doSetVar"><l>max</l><block s="reportCombine"><block var="new"/><block s="reifyReporter"><autolambda><block s="reportMax"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doIf"><block s="reportGreaterThan"><block var="max"/><l>255</l></block><script><block s="doSetVar"><l>new</l><block s="reportProduct"><block var="new"/><block s="reportQuotient"><l>255</l><block var="max"/></block></block></block></script></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block var="new"/><list><l></l></list></custom-block></block></script><script><block s="doSetVar"><l>new</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportCombine"><l/><block s="reifyReporter"><autolambda><block s="reportProduct"><l></l><l></l></block></autolambda><list></list></block></block></autolambda><list></list></block><block s="reportListAttribute"><l><option>columns</option></l><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportProduct"><custom-block s="✐ RGB from color %s"><l></l></custom-block><block s="reportQuotient"><l></l><l>255</l></block></block></autolambda><list></list></block><list><block var="colors"/><block var="weights"/></list></custom-block></block></block></block><block s="doIfElse"><custom-block s="text %txt contains %txt"><block var="flavor"/><l>aver</l></custom-block><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportProduct"><block s="reportPower"><block var="new"/><block s="reportQuotient"><l>1</l><block s="reportCombine"><block var="weights"/><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block></block></block><l>255</l></block><list><l></l></list></custom-block></block></script><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportProduct"><block var="new"/><l>255</l></block><list><l></l></list></custom-block></block></script></block></script></block></script><scripts><script x="512" y="1525.7777777777785"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><block s="reportQuotient"><custom-block s="✐ RGB from color %s"><l></l></custom-block><l>255</l></block><block s="reportQuotient"><block s="reportDifference"><l>100</l><custom-block s="$brush %s from color %obj"><l>transparency</l><l/></custom-block></block><l>100</l></block></block></autolambda><list></list></block><block var="colors"/></block></script></scripts></block-definition><block-definition s="multiline %&apos;text&apos;" type="reporter" category="operators"><header></header><code></code><translations>pt:o texto multilinha _&#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;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;if (!("stringLibCaseIndependentComparison" in world)) {&#xD;    world["stringLibCaseIndependentComparison"] = true;&#xD;};&#xD;if (world["stringLibCaseIndependentComparison"]) {&#xD;    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());&#xD;    if (index&lt;0) {return string};&#xD;    return string.slice(0,index);&#xD;} else {&#xD;    var index=string.indexOf(marker);&#xD;    if (index&lt;0) {return string};&#xD;    return string.slice(0,index);&#xD;}</l></block><list><block var="string"/><block var="marker"/></list></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;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l><l>markerlength</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;if (!("stringLibCaseIndependentComparison" in world)) {&#xD;    world["stringLibCaseIndependentComparison"] = true;&#xD;};&#xD;string = string+"";&#xD;if (world["stringLibCaseIndependentComparison"]) {&#xD;    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());&#xD;    if (index&lt;0) {return ""};&#xD;    return string.slice(index+markerlength);&#xD;} else {&#xD;    var index=string.indexOf(marker);&#xD;    if (index&lt;0) {return ""};&#xD;    return string.slice(index+markerlength);&#xD;}</l></block><list><block var="string"/><block var="marker"/><block s="reportStringSize"><block var="marker"/></block></list></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;</translations><inputs><input type="%s"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>sub</l><l>sup</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;if (!("stringLibCaseIndependentComparison" in world)) {&#xD;    world["stringLibCaseIndependentComparison"] = true;&#xD;};&#xD;if (world["stringLibCaseIndependentComparison"]) {&#xD;    return 1+sup.toLocaleLowerCase().indexOf(sub.toLocaleLowerCase());&#xD;} else {&#xD;    return 1+sup.indexOf(sub);&#xD;}</l></block><list><block var="small"/><block var="large"/></list></block></block></script></block-definition><block-definition s="use case-independent comparisons %&apos;tf&apos;" type="command" category="operators"><comment x="0" y="0" w="225.33333333333334" collapsed="false">If input is TRUE, comparisons made by functions in the string library will be case-independent (so &quot;FOO&quot; = &quot;foo&quot;).  This is the default.&#xD;If input is FALSE, comparisons will be exact.</comment><header></header><code></code><translations>pt:altera comparações ignorando distinção minúsculas/maiúsculas para _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>flag</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;world[&apos;stringLibCaseIndependentComparison&apos;] = flag;</l></block><list><block var="tf"/></list></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 x="0" y="0" 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;</translations><inputs><input type="%txt"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>str</l><l>start</l><l>end</l></list><l>if (end != "") {&#xD;    return str.slice(start-1,end);&#xD;} else {&#xD;    return str.slice(start-1);&#xD;}</l></block><list><block var="str"/><block var="start"/><block var="end"/></list></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;</translations><inputs><input type="%txt"></input><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>string</l><l>marker</l></list><l>var world=this.parentThatIsA(IDE_Morph);&#xD;if (!("stringLibCaseIndependentComparison" in world)) {&#xD;    world["stringLibCaseIndependentComparison"] = true;&#xD;};&#xD;if (world["stringLibCaseIndependentComparison"]) {&#xD;    var index=string.toLocaleLowerCase().indexOf(marker.toLocaleLowerCase());&#xD;    return !(index&lt;0);&#xD;} else {&#xD;    var index=string.indexOf(marker);&#xD;    return !(index&lt;0);&#xD;}</l></block><list><block var="string"/><block var="marker"/></list></block></block></script></block-definition><block-definition s="to lower case %&apos;text&apos;" type="reporter" category="operators"><comment x="0" y="0" w="275.3333333333333" collapsed="false">Reports the input text with lower case letters instead of capital letters in the input.  Uses the user&apos;s locale&apos;s rules for case conversion.</comment><header></header><code></code><translations>pt:em minúsculas _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l>text</l></list><l>return text.toLocaleLowerCase();</l></block><list><block var="text"/></list></block></block></script></block-definition><block-definition s="$brush color from %&apos;kind&apos; %&apos;value&apos; %&apos;more value&apos;" type="reporter" category="pen"><comment x="0" y="0" w="265.3333333333333" collapsed="false">This block reports a color.  The color can be set in many ways, including RGB values, HSV values, HSL values, fair HSV or HSL (based on a modified spectrum that gives each spectral color equal space and promotes brown to a color), color number, crayon, or X11/W3C color name.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>color&#xD;color number&#xD;crayon&#xD;fair hue&#xD;X11/W3C name&#xD;&#126;&#xD;fair HSL=fair HSL vector&#xD;fair HSV=fair HSV vector&#xD;HSL=HSL vector&#xD;HSV=HSV vector&#xD;RGB (0-255)=RGB vector&#xD;RGB hex</options></input><input type="%s"><options>function () {&#xD;&#xD;// add/edit menus but don&apos;t forget to edit 2nd slot manual menu options as well to match&#xD;var color_number=[&#xD;&quot;0 black=0&quot;, &quot;14 white=14&quot;,&#xD;&quot;20 spectral red=20&quot;, &quot;25 darkest red=25&quot;,&#xD;&quot;30 saddle brown=30&quot;, &quot;35 darkest brown=35&quot;,&#xD;&quot;40 spectral orange=40&quot;, &quot;45 darkest orange=45&quot;,&#xD;&quot;50 spectral yellow=50&quot;, &quot;55 darkest yellow=55&quot;,&#xD;&quot;60 spectral green=60&quot;, &quot;65 darkest green=65&quot;,&#xD;&quot;70 spectral cyan=70&quot;, &quot;75 darkest cyan=75&quot;,&#xD;&quot;80 spectral blue=80&quot;, &quot;85 darkest blue=85&quot;,&#xD;&quot;90 spectral violet=90&quot;, &quot;95 magenta=95&quot;];&#xD;&#xD;var fair_hue=[&#xD;&quot;0 red=0&quot;, &quot;12.5 brown=12.5&quot;, &quot;25 orange=25&quot;, &quot;37.5 yellow=37.5&quot;,&#xD;&quot;50 green=50&quot;, &quot;62.5 cyan=62.5&quot;, &quot;75 blue=75&quot;, &quot;87.5 violet=87.5&quot;];&#xD;&#xD;var crayon=[&#xD;&quot;grays&quot;,[&#xD;&quot;0 black #000000=0&quot;,&#xD;&quot;1 gray7 #121212=1&quot;,&#xD;&quot;2 gray14 #242424=2&quot;,&#xD;&quot;3 gray21 #363636=3&quot;,&#xD;&quot;4 gray28 #484848=4&quot;,&#xD;&quot;5 gray36 #5c5c5c=5&quot;,&#xD;&quot;6 gray43 #6d6d6d=6&quot;,&#xD;&quot;7 gray50 #7f7f7f=7&quot;,&#xD;&quot;8 gray57 #919191=8&quot;,&#xD;&quot;9 gray64 #a3a3a3=9&quot;,&#xD;&quot;10 gray71 #b5b5b5=10&quot;,&#xD;&quot;11 gray78 #c8c8c8=11&quot;,&#xD;&quot;12 gray85 #dadada=12&quot;,&#xD;&quot;13 gray92 #ececec=13&quot;,&#xD;&quot;14 white #ffffff=14&quot;],&#xD;&quot;pinks&quot;,[&#xD;&quot;15 deep pink #ff1493=15&quot;,&#xD;&quot;16 hot pink #ff69b4=16&quot;,&#xD;&quot;17 bright pink #ff007f=17&quot;,&#xD;&quot;18 raspberry #e30b5d=18&quot;,&#xD;&quot;19 amaranth #e52b50=19&quot;],&#xD;&quot;reds&quot;,[&#xD;&quot;20 red #ff0000=20&quot;,&#xD;&quot;21 burgundy #900020=21&quot;,&#xD;&quot;22 cherry #990000=22&quot;,&#xD;&quot;23 dark candy apple red #a40000=23&quot;,&#xD;&quot;24 sanguine #c00000=24&quot;,&#xD;&quot;25 maroon #800000=25&quot;,&#xD;&quot;26 crimson #c90016=26&quot;,&#xD;&quot;27 Lists #d94d11=27&quot;,&#xD;&quot;28 candy apple red #ff0800=28&quot;,&#xD;&quot;29 coquelicot #ff3800=29&quot;],&#xD;&quot;browns&quot;,[&#xD;&quot;30 saddle brown #8b4513=30&quot;,&#xD;&quot;31 chocolate #7b3f00=31&quot;,&#xD;&quot;32 kobicha #6b4423=32&quot;,&#xD;&quot;33 sepia #704214=33&quot;,&#xD;&quot;34 chestnut #954535=34&quot;,&#xD;&quot;35 dark brown #654321=35&quot;,&#xD;&quot;36 brown #964b00=36&quot;,&#xD;&quot;37 golden brown #996515=37&quot;,&#xD;&quot;38 cinnamon #b87333=38&quot;,&#xD;&quot;39 copper #d2691e=39&quot;],&#xD;&quot;oranges&quot;,[&#xD;&quot;40 orange #ff7f00=40&quot;,&#xD;&quot;41 Pantone orange #ff5800=41&quot;,&#xD;&quot;42 pumpkin #ff7518=42&quot;,&#xD;&quot;43 Variables #f3761d=43&quot;,&#xD;&quot;44 Spanish orange #e86100=44&quot;,&#xD;&quot;45 burnt orange #cc5500=45&quot;,&#xD;&quot;46 sinopia #cb410b=46&quot;,&#xD;&quot;47 ochre #cc7722=47&quot;,&#xD;&quot;48 carrot #ed9121=48&quot;,&#xD;&quot;49 tangerine #f28500=49&quot;],&#xD;&quot;yellows&quot;,[&#xD;&quot;50 yellow #ffff00=50&quot;,&#xD;&quot;51 Control #e6a822=51&quot;,&#xD;&quot;52 dark goldenrod #b8860b=52&quot;,&#xD;&quot;53 goldenrod #daa520=53&quot;,&#xD;&quot;54 saffron #f4c430=54&quot;,&#xD;&quot;55 sandstorm #ecd540=55&quot;,&#xD;&quot;56 mustard #ffdb58=56&quot;,&#xD;&quot;57 gold #ffd700=57&quot;,&#xD;&quot;58 egg yolk #fee33e=58&quot;,&#xD;&quot;59 rubber duck #fbe108=59&quot;],&#xD;&quot;greens&quot;,[&#xD;&quot;60 lime #00ff00=60&quot;,&#xD;&quot;61 apple green #8db600=61&quot;,&#xD;&quot;62 Operators #62c213=62&quot;,&#xD;&quot;63 forest green #228b22=63&quot;,&#xD;&quot;64 green #008000=64&quot;,&#xD;&quot;65 dark green #006400=65&quot;,&#xD;&quot;66 dark pastel green #03c03c=66&quot;,&#xD;&quot;67 emerald #50c878=67&quot;,&#xD;&quot;68 mint #3eb489=68&quot;,&#xD;&quot;69 Pen #00a178=69&quot;],&#xD;&quot;cyans&quot;,[&#xD;&quot;70 aqua (cyan) #00ffff=70&quot;,&#xD;&quot;71 dark cyan #008b8b=71&quot;,&#xD;&quot;72 cerulean #007ba7=72&quot;,&#xD;&quot;73 iceberg #71a6d2=73&quot;,&#xD;&quot;74 Sensing #0494dc=74&quot;,&#xD;&quot;75 teal #008080=75&quot;,&#xD;&quot;76 light sky blue #87cefa=76&quot;,&#xD;&quot;77 deep sky blue #00bfff=77&quot;,&#xD;&quot;78 dodger blue #1e90ff=78&quot;,&#xD;&quot;79 azure #007fff=79&quot;],&#xD;&quot;blues&quot;,[&#xD;&quot;80 blue #0000ff=80&quot;,&#xD;&quot;81 midnight blue #191970=81&quot;,&#xD;&quot;82 dark powder blue #003399=82&quot;,&#xD;&quot;83 cobalt #0047ab=83&quot;,&#xD;&quot;84 denim #1560bd=84&quot;,&#xD;&quot;85 navy blue #000080=85&quot;,&#xD;&quot;86 steel blue #4682b4=86&quot;,&#xD;&quot;87 Motion #4a6cd4=87&quot;,&#xD;&quot;88 cornflower #6495ed=88&quot;,&#xD;&quot;89 slate blue #6a5acd=89&quot;],&#xD;&quot;purples&quot;,[&#xD;&quot;90 violet #8000ff=90&quot;,&#xD;&quot;91 Looks #8f56e3=91&quot;,&#xD;&quot;92 grape #6f2da8=92&quot;,&#xD;&quot;93 indigo #4b0082=93&quot;,&#xD;&quot;94 x11 purple #a020f0=94&quot;,&#xD;&quot;95 magenta (fuchia) #ff00ff=95&quot;,&#xD;&quot;96 dark orchid #9932cc=96&quot;,&#xD;&quot;97 Sound #cf4ad9=97&quot;,&#xD;&quot;98 purple #7f007f=98&quot;,&#xD;&quot;99 dark magenta #8b008b=99&quot;]];&#xD;&#xD;function makeMenuHelper(items, output) {&#xD;    // in an array, walk through the items in pairs&#xD;    var i = 0;&#xD;    while (i &lt; items.length) {&#xD;        var label = items[i];&#xD;        var possiblyNested = items[i+1];&#xD;        // if possiblyNested is array, it is a nest under label&#xD;        // if possiblyNested is string, it is just a sibling&#xD;        if (possiblyNested === undefined) {&#xD;          // label is actually the last element of the list&#xD;          var hasEquals = label.split(&quot;=&quot;);&#xD;          if (hasEquals.length == 2) {&#xD;            output[hasEquals[0]] = hasEquals[1];&#xD;            i += 1;&#xD;          } else if (hasEquals.length == 3) {&#xD;            output[hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2]] = hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2];&#xD;            i += 1;&#xD;          } else {&#xD;            output[label] = label;&#xD;            i += 1;&#xD;          }&#xD;        } else if (typeof possiblyNested == &quot;string&quot;) {&#xD;          var hasEquals = label.split(&quot;=&quot;);&#xD;          if (hasEquals.length == 2) {&#xD;            output[hasEquals[0]] = hasEquals[1];&#xD;            i += 1;&#xD;          } else if (hasEquals.length == 3) {&#xD;            output[hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2]] = hasEquals[0]+&quot;\u00A0&quot;+&quot;=&quot;+&quot;\u00A0&quot;+hasEquals[2];&#xD;            i += 1;&#xD;          } else {&#xD;            output[label] = label;&#xD;            i += 1;&#xD;          }&#xD;        } else if (Array.isArray(possiblyNested)) {&#xD;          var nestingOutput = {};&#xD;          makeMenuHelper(possiblyNested, nestingOutput);&#xD;          output[label] = nestingOutput;&#xD;          i += 2&#xD;        } else {&#xD;          throw new Error(&quot;Bad value at index &quot; + i);&#xD;        }&#xD;    }&#xD;}&#xD;&#xD;var ide = world.children[0];&#xD;var menuVarName = this.parent.blockSpec;&#xD;try {&#xD;    menuVarName = this.parent.cachedInputs[0].children[0].text;&#xD;} catch(err) {&#xD;    menuPoss = this.parent.children;&#xD;    menuPoss = menuPoss.filter(function (e) { return (e instanceof InputSlotMorph)});&#xD;    menuVarName = menuPoss[0].children[0].text;&#xD;}&#xD;&#xD;menuVarName = menuVarName.replace(&quot; &quot;,&quot;_&quot;);&#xD;&#xD;try {&#xD;    var menu = eval(menuVarName);&#xD;    var output = {};&#xD;    makeMenuHelper(menu, output);&#xD;    return output;&#xD;} catch(err) {&#xD;}&#xD;}</options></input><input type="%mult%s"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l><l>index</l><l>scale</l><l>transparency</l></list></block><custom-block s="✐ initialize variables"></custom-block><block s="doSetVar"><l>value</l><block s="reportCONS"><block var="value"/><block var="more value"/></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doSetVar"><l>value</l><block s="reportNewList"><list><block s="reportListItem"><l>1</l><block var="value"/></block><l>100</l><l>50</l><block s="reportListItem"><l>2</l><block var="value"/></block></list></block></block><block s="doSetVar"><l>kind</l><l>fair HSL vector</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>color number</l></block><script><block s="doSetVar"><l>color</l><block s="reportModulus"><block s="reportProduct"><block s="reportListItem"><l>1</l><block var="value"/></block><l>3</l></block><l>300</l></block></block><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="color"/><l>42</l><comment w="77.33333333333333" collapsed="true">grayscale</comment></block><script><block s="doSetVar"><l>color</l><block s="reportModulus"><block s="reportProduct"><block var="color"/><block s="reportQuotient"><l>15</l><l>14</l></block></block><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><script><block s="doIf"><block s="reportLessThan"><block var="color"/><l>60</l><comment w="96.66666666666667" collapsed="true">spread out pink</comment></block><script><block s="doSetVar"><l>color</l><block s="reportSum"><l>45</l><block s="reportProduct"><block s="reportDifference"><block var="color"/><l>42</l></block><block s="reportQuotient"><l>15</l><l>18</l></block></block></block></block></script></block><block s="doSetVar"><l>color</l><block s="reportModulus"><block var="color"/><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportMin"><block s="reportRound"><block s="reportSum"><block var="from"/><block s="reportProduct"><block s="reportDifference"><block var="to"/><block var="from"/></block><block s="reportQuotient"><block var="scale"/><l>15</l></block></block></block></block><l>255</l></block></autolambda><list><l>from</l><l>to</l></list></block><list><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ colors"/></block><block s="reportListItem"><block s="reportSum"><block var="index"/><l>2</l></block><block var="✐ colors"/></block></list></custom-block><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>crayon</l></block><script><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="value"/></block><l><option>text</option></l></block><script><block s="doSetVar"><l>color</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>4</l><l/></block><block s="reportListItem"><l>1</l><block var="value"/></block></block></autolambda><list></list></block><block var="✐ crayon colors"/></block></block><block s="doIf"><block s="reportEquals"><block var="color"/><l></l></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>No such crayon: </l><block s="reportListItem"><l>1</l><block var="value"/></block></list></block></custom-block></script></block></script><script><block s="doSetVar"><l>color</l><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block s="reportListItem"><l>1</l><block var="value"/></block><l>100</l></block><l>1</l></block><block var="✐ crayon colors"/></block></block></script></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block var="color"/></block><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>X11/W3C name</l></block><script><block s="doReport"><custom-block s="✐ color from X11 name %s"><block var="value"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>RGB hex</l></block><script><block s="doReport"><custom-block s="✐ color from RGB hex %s"><block var="value"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>color</l></block><script><block s="doReplaceInList"><l>1</l><block var="value"/><custom-block s="✐ RGB from color %s"><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block></block><block s="doSetVar"><l>kind</l><l>RGB vector</l></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>RGB vector</l></block><script><block s="doSetVar"><l>color</l><block s="reportMin"><block s="reportMax"><custom-block s="✐ extract rgba values %l %upvar"><block var="value"/><l>transparency</l></custom-block><l>0</l></block><l>255</l></block></block><block s="doIf"><block s="reportOr"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="value"/></block><l><option>number</option></l></block><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block s="reportListItem"><l>1</l><block var="value"/></block></block><l>3</l></block></block><script><block s="doIf"><block s="reportIsA"><block var="transparency"/><l><option>number</option></l></block><script><block s="doSetVar"><l>transparency</l><block s="reportDifference"><l>100</l><block s="reportQuotient"><block s="reportProduct"><block var="transparency"/><l>100</l></block><l>255</l></block></block></block></script></block></script></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block var="color"/><block var="transparency"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>HSV vector</l></block><script><block s="doSetVar"><l>color</l><custom-block s="✐ RGB from HSV %l"><custom-block s="✐ extract rgba values %l %upvar"><block var="value"/><l>transparency</l></custom-block></custom-block></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block var="color"/><block var="transparency"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>HSL vector</l></block><script><block s="doSetVar"><l>color</l><custom-block s="✐ RGB from HSL %l"><custom-block s="✐ extract rgba values %l %upvar"><block var="value"/><l>transparency</l></custom-block></custom-block></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block var="color"/><block var="transparency"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSV vector</l></block><script><block s="doSetVar"><l>color</l><custom-block s="✐ limits %l"><custom-block s="✐ extract rgba values %l %upvar"><block var="value"/><l>transparency</l></custom-block></custom-block></block><block s="doSetVar"><l>value</l><block s="reportListItem"><l>1</l><block var="color"/></block></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block><block var="value"/></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doChangeVar"><l>index</l><l>-1</l></block><block s="doSetVar"><l>scale</l><block s="reportQuotient"><block s="reportDifference"><block var="value"/><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block></block><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block></block></block></block><block s="doSetVar"><l>index</l><block s="reportSum"><block s="reportListItem"><block var="index"/><block var="✐ HSV brights"/></block><block s="reportProduct"><block var="scale"/><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ HSV brights"/></block><block s="reportListItem"><block var="index"/><block var="✐ HSV brights"/></block></block></block></block></block><block s="doSetVar"><l>color</l><custom-block s="✐ RGB from HSV %l"><block s="reportProduct"><block s="reportCONS"><l>100</l><block s="reportCDR"><block var="color"/></block></block><block var="index"/></block></custom-block></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block var="color"/><block var="transparency"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSL vector</l></block><script><block s="doSetVar"><l>color</l><custom-block s="✐ limits %l"><custom-block s="✐ extract rgba values %l %upvar"><block var="value"/><l>transparency</l></custom-block></custom-block></block><block s="doSetVar"><l>value</l><block s="reportModulus"><block s="reportListItem"><l>1</l><block var="color"/></block><l>100</l></block></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block><block var="value"/></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doChangeVar"><l>index</l><l>-1</l></block><block s="doSetVar"><l>scale</l><block s="reportQuotient"><block s="reportDifference"><block var="value"/><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block></block><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block></block></block></block><block s="doSetVar"><l>index</l><block s="reportSum"><block s="reportListItem"><block var="index"/><block var="✐ HSL brights"/></block><block s="reportProduct"><block var="scale"/><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ HSL brights"/></block><block s="reportListItem"><block var="index"/><block var="✐ HSL brights"/></block></block></block></block></block><block s="doSetVar"><l>color</l><custom-block s="✐ RGB from HSL %l"><block s="reportProduct"><block s="reportCONS"><l>1</l><block s="reportQuotient"><block s="reportCDR"><block var="color"/></block><block s="reportNewList"><list><l>100</l><l>50</l></list></block></block></block><block var="index"/></block></custom-block></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block var="color"/><block var="transparency"/></custom-block></block></script></block></script></block-definition><block-definition s="$brush %&apos;kind&apos; from color %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s" readonly="true"><options>nearest color number&#xD;crayon number&#xD;fair hue&#xD;&#126;1&#xD;transparency&#xD;X11/W3C name&#xD;&#126;2&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;fair HSL vector&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;fair HSV vector&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;HSL vector&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;HSV vector&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;RGB vector&#xD;RGBA vector&#xD;RGB hex&#xD;}&#xD;}</options></input><input type="%obj"></input></inputs><script><custom-block s="✐ initialize variables"></custom-block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>crayon number</l></block><script><block s="doReport"><custom-block s="✐ crayon number of color %s"><block var="color"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>X11/W3C name</l></block><script><block s="doReport"><custom-block s="✐ X11 name of color %s"><block var="color"/></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>nearest color number</l></block><script><block s="doReport"><custom-block s="✐ color number near color %s"><block var="color"/></custom-block></block></script></block><block s="doDeclareVariables"><list><l>rgb</l><l>hsl</l><l>hsv</l></list></block><block s="doSetVar"><l>rgb</l><custom-block s="✐ extract rgba values %l %upvar"><block var="color"/><l>transparency</l></custom-block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>transparency</l></block><script><block s="doReport"><block s="reportDifference"><l>100</l><block s="reportQuotient"><block s="reportProduct"><block var="transparency"/><l>100</l></block><l>255</l></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>RGB vector</l></block><script><block s="doReport"><block var="rgb"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>RGBA vector</l></block><script><block s="doReport"><block s="reportConcatenatedLists"><list><block var="rgb"/><block s="reportNewList"><list><block var="transparency"/></list></block></list></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>RGB hex</l></block><script><block s="doReport"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="✐ byte to hex %n"><l></l></custom-block></autolambda><list></list></block><block var="rgb"/></block></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>red</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="rgb"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>green</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="rgb"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>blue</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="rgb"/></block></block></script></block><block s="doSetVar"><l>hsv</l><custom-block s="✐ HSL/HSV (hsl? %b ) from RGB %s"><l><bool>false</bool></l><block var="rgb"/></custom-block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>HSV vector</l></block><script><block s="doReport"><block var="hsv"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>hue</l></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="hsv"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>saturation (HSV)</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="hsv"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>value (brightness)</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="hsv"/></block></block></script></block><block s="doSetVar"><l>hsl</l><custom-block s="✐ HSL/HSV (hsl? %b ) from RGB %s"><l><bool>true</bool></l><block var="rgb"/></custom-block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>HSL vector</l></block><script><block s="doReport"><block var="hsl"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>saturation (HSL)</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="hsl"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>lightness</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="hsl"/></block></block></script></block><block s="doIfElse"><block s="reportOr"><custom-block s="text %txt contains %txt"><block var="kind"/><l>HSL</l></custom-block><custom-block s="text %txt contains %txt"><block var="kind"/><l>lightness</l></custom-block></block><script><block s="doDeclareVariables"><list><l>fair hue</l><l>fair lightness</l><l>fair saturation (HSL)</l></list><comment w="53.333333333333336" collapsed="true">HSL</comment></block><block s="doIfElse"><block s="reportAnd"><block s="reportLessThan"><block s="reportListItem"><l>3</l><block var="hsl"/></block><l>34</l></block><block s="reportAnd"><block s="reportGreaterThanOrEquals"><block s="reportListItem"><l>1</l><block var="hsl"/></block><l>1.96</l></block><block s="reportLessThanOrEquals"><block s="reportListItem"><l>1</l><block var="hsl"/></block><l>8.82353</l></block></block></block><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="hsl"/></block><l>6.94444445</l></block><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>12.5</l><block s="reportProduct"><block s="reportDifference"><l>5.8</l><l>12.5</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doReport"><block var="fair hue"/></block></script></block><block s="doSetVar"><l>fair lightness</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="hsl"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>30.98</l><block s="reportProduct"><block s="reportDifference"><l>33.3333333</l><l>30.98</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair lightness</l></block><script><block s="doReport"><block var="fair lightness"/></block></script></block><block s="doSetVar"><l>fair saturation (HSL)</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="hsl"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>75.94936</l><block s="reportProduct"><block s="reportDifference"><l>100</l><l>75.94936</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair saturation (HSL)</l></block><script><block s="doReport"><block var="fair saturation (HSL)"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSL vector</l></block><script><block s="doReport"><block s="reportNewList"><list><block var="fair hue"/><block var="fair saturation (HSL)"/><block var="fair lightness"/></list></block></block></script></block></script><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>12.5</l><block s="reportProduct"><block s="reportDifference"><l>18</l><l>12.5</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>6.94444445</l><l>8.823529</l></block></block></block></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doReport"><block var="fair hue"/></block></script></block><block s="doSetVar"><l>fair lightness</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="hsl"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>30.98</l><block s="reportProduct"><block s="reportDifference"><l>33.3333333</l><l>30.98</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>6.94444445</l><l>8.823529</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair lightness</l></block><script><block s="doReport"><block var="fair lightness"/></block></script></block><block s="doSetVar"><l>fair saturation (HSL)</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="hsl"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>75.94936</l><block s="reportProduct"><block s="reportDifference"><l>100</l><l>75.94936</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>6.94444445</l><l>8.823529</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair saturation (HSL)</l></block><script><block s="doReport"><block var="fair saturation (HSL)"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSL vector</l></block><script><block s="doReport"><block s="reportNewList"><list><block var="fair hue"/><block var="fair saturation (HSL)"/><block var="fair lightness"/></list></block></block></script></block></script></block></script><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="hsl"/></block><l>5.5</l><comment w="53.333333333333336" collapsed="true">reds</comment></block><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>0</l><block s="reportProduct"><block s="reportDifference"><l>5.8</l><l>0</l></block><block s="reportQuotient"><block s="reportDifference"><l>5.5</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="reportDifference"><l>5.5</l><l>0</l></block></block></block></block></block></script><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="hsl"/></block><l>8.3</l><comment w="90" collapsed="true">early orange</comment></block><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>18</l><block s="reportProduct"><block s="reportDifference"><l>25</l><l>18</l></block><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="hsl"/></block><l>5.5</l></block><block s="reportDifference"><l>8.3</l><l>5.5</l></block></block></block></block></block></script><script><block s="doDeclareVariables"><list><l>index</l></list><comment w="144.66666666666666" collapsed="true">center orange and up</comment></block><block s="doSetVar"><l>index</l><l>6</l></block><block s="doUntil"><block s="reportLessThanOrEquals"><block s="reportListItem"><l>1</l><block var="hsl"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><block var="index"/><block var="✐ HSL brights"/></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doSetVar"><l>fair hue</l><block s="reportSum"><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block></block><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="hsl"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="✐ HSL brights"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>1</l><block s="reportListItem"><block var="index"/><block var="✐ HSL brights"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="✐ HSL brights"/></block></block></block></block></block></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doReport"><block var="fair hue"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair saturation (HSL)</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="hsl"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair lightness</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="hsl"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSL vector</l></block><script><block s="doReport"><block s="reportNewList"><list><block var="fair hue"/><block s="reportListItem"><l>2</l><block var="hsl"/></block><block s="reportListItem"><l>3</l><block var="hsl"/></block></list></block></block></script></block></script><comment w="53.333333333333336" collapsed="true">brown</comment></block></script><script><block s="doDeclareVariables"><list><l>fair hue</l><l>fair saturation (HSV)</l><l>fair value (brightness)</l><l>scaled HSV brights</l></list><comment w="53.333333333333336" collapsed="true">HSV</comment></block><block s="doSetVar"><l>scaled HSV brights</l><block s="reportProduct"><l>100</l><block var="✐ HSV brights"/></block></block><block s="doIfElse"><block s="reportAnd"><block s="reportLessThan"><block s="reportListItem"><l>3</l><block var="hsv"/></block><l>67</l></block><block s="reportAnd"><block s="reportGreaterThanOrEquals"><block s="reportListItem"><l>1</l><block var="hsv"/></block><l>1.96</l></block><block s="reportLessThanOrEquals"><block s="reportListItem"><l>1</l><block var="hsv"/></block><l>8.82353</l></block></block></block><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="hsv"/></block><l>6.94444445</l><comment w="90" collapsed="true">early brown</comment></block><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>12.5</l><block s="reportProduct"><block s="reportDifference"><l>5.8</l><l>12.5</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doReport"><block var="fair hue"/></block></script></block><block s="doSetVar"><l>fair value (brightness)</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="hsv"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>54.51</l><block s="reportProduct"><block s="reportDifference"><l>66.666666667</l><l>54.51</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair value (brightness)</l></block><script><block s="doReport"><block var="fair value (brightness)"/></block></script></block><block s="doSetVar"><l>fair saturation (HSV)</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="hsv"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>86.33</l><block s="reportProduct"><block s="reportDifference"><l>100</l><l>86.33</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair saturation (HSV)</l></block><script><block s="doReport"><block var="fair saturation (HSV)"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSV vector</l></block><script><block s="doReport"><block s="reportNewList"><list><block var="fair hue"/><block var="fair saturation (HSV)"/><block var="fair value (brightness)"/></list></block></block></script></block></script><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>12.5</l><block s="reportProduct"><block s="reportDifference"><l>18</l><l>12.5</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>6.94444445</l><l>8.823529</l></block></block></block></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doReport"><block var="fair hue"/></block></script></block><block s="doSetVar"><l>fair value (brightness)</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="hsv"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>54.51</l><block s="reportProduct"><block s="reportDifference"><l>66.666666667</l><l>54.51</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair value (brightness)</l></block><script><block s="doReport"><block var="fair value (brightness)"/></block></script></block><block s="doSetVar"><l>fair saturation (HSV)</l><block s="reportMin"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="hsv"/></block><block s="reportQuotient"><l>100</l><block s="reportSum"><l>86.33</l><block s="reportProduct"><block s="reportDifference"><l>100</l><l>86.33</l></block><block s="reportQuotient"><block s="reportDifference"><l>6.94444445</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>6.94444445</l><l>1.96</l></block></block></block></block></block></block><l>100</l></block></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair saturation (HSV)</l></block><script><block s="doReport"><block var="fair saturation (HSV)"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSV vector</l></block><script><block s="doReport"><block s="reportNewList"><list><block var="fair hue"/><block var="fair saturation (HSV)"/><block var="fair value (brightness)"/></list></block></block></script></block></script></block></script><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="hsv"/></block><l>5.5</l><comment w="53.333333333333336" collapsed="true">reds</comment></block><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>0</l><block s="reportProduct"><block s="reportDifference"><l>5.8</l><l>0</l></block><block s="reportQuotient"><block s="reportDifference"><l>5.5</l><block s="reportListItem"><l>1</l><block var="hsv"/></block></block><block s="reportDifference"><l>5.5</l><l>0</l></block></block></block></block></block></script><script><block s="doIfElse"><block s="reportLessThan"><block s="reportListItem"><l>1</l><block var="hsv"/></block><l>8.3</l><comment w="53.333333333333336" collapsed="true">orange</comment></block><script><block s="doSetVar"><l>fair hue</l><block s="reportSum"><l>18</l><block s="reportProduct"><block s="reportDifference"><l>25</l><l>18</l></block><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="hsv"/></block><l>5.5</l></block><block s="reportDifference"><l>8.3</l><l>5.5</l></block></block></block></block></block></script><script><block s="doDeclareVariables"><list><l>index</l></list><comment w="144.66666666666666" collapsed="true">center orange and up</comment></block><block s="doSetVar"><l>index</l><l>6</l></block><block s="doUntil"><block s="reportLessThanOrEquals"><block s="reportListItem"><l>1</l><block var="hsv"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><block var="index"/><block var="scaled HSV brights"/></block></block></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doSetVar"><l>fair hue</l><block s="reportSum"><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block><block s="reportProduct"><block s="reportDifference"><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block></block><block s="reportQuotient"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="hsv"/></block><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="scaled HSV brights"/></block></block></block><block s="reportDifference"><block s="reportListItem"><l>1</l><block s="reportListItem"><block var="index"/><block var="scaled HSV brights"/></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><block s="reportDifference"><block var="index"/><l>1</l></block><block var="scaled HSV brights"/></block></block></block></block></block></block></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair hue</l></block><script><block s="doReport"><block var="fair hue"/></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair saturation (HSV)</l></block><script><block s="doReport"><block s="reportListItem"><l>2</l><block var="hsv"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair value (brightness)</l></block><script><block s="doReport"><block s="reportListItem"><l>3</l><block var="hsv"/></block></block></script></block><block s="doIf"><block s="reportEquals"><block var="kind"/><l>fair HSV vector</l></block><script><block s="doReport"><block s="reportNewList"><list><block var="fair hue"/><block s="reportListItem"><l>2</l><block var="hsv"/></block><block s="reportListItem"><l>3</l><block var="hsv"/></block></list></block></block></script></block></script><comment w="53.333333333333336" collapsed="true">brown</comment></block></script><comment w="98.66666666666667" collapsed="true">fair something</comment></block><custom-block s="error %txt"><l>Can&apos;t get here -- please post project and screenshot to forum.</l></custom-block></script></block-definition><block-definition s="✐ current pen color" type="reporter" category="pen"><comment x="0" y="0" w="172.66666666666666" collapsed="false">This block reports the pen color&#xD;(as a color, not as a list of numbers).</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><custom-block s="RGB color"></custom-block><list><l></l></list></custom-block></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;pt:captura _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%repRing"></input></inputs><script><block s="doReport"><block s="reportCallCC"><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></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;pt:lança _ _&#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="✐ set pen to crayon %&apos;which&apos; %&apos;more&apos;" type="command" category="pen"><comment x="0" y="0" w="297.3333333333333" collapsed="false">Sets the pen color &#xD;to one of 100 preselected colors, like a box of 100 crayons.&#xD;The colors have names that are meant to be evocative.&#xD;They are organized in families, more or less corresponding&#xD;to spectral (rainbow) colors; the input slot has a two-level menu&#xD;in which you can hover over a family name to see the colors&#xD;of that family, each including a crayon number and an RGB value. &#xD;See Appendix A of the Snap! Reference Manual for more details.</comment><header></header><code></code><translations></translations><inputs><input type="%s"><options>grays={&#xD;0 black #000000=0&#xD;1 gray7 #121212=1&#xD;2 gray14 #242424=2&#xD;3 gray21 #363636=3&#xD;4 gray28 #484848=4&#xD;5 gray36 #5c5c5c=5&#xD;6 gray43 #6d6d6d=6&#xD;7 gray50 #7f7f7f=7&#xD;8 gray57 #919191=8&#xD;9 gray64 #a3a3a3=9&#xD;10 gray71 #b5b5b5=10&#xD;11 gray78 #c8c8c8=11&#xD;12 gray85 #dadada=12&#xD;13 gray92 #ececec=13&#xD;14 white #ffffff=14&#xD;}&#xD;pinks={&#xD;15 deep pink #ff1493=15&#xD;16 hot pink #ff69b4=16&#xD;17 bright pink #ff007f=17&#xD;18 raspberry #e30b5d=18&#xD;19 amaranth #e52b50=19&#xD;}&#xD;reds={&#xD;20 red #ff0000=20&#xD;21 burgundy #900020=21&#xD;22 cherry #990000=22&#xD;23 dark candy apple red #a40000=23&#xD;24 sanguine #c00000=24&#xD;25 maroon #800000=25&#xD;26 crimson #c90016=26&#xD;27 Lists #d94d11=27&#xD;28 candy apple red #ff0800=28&#xD;29 coquelicot #ff3800=29&#xD;}&#xD;browns={&#xD;30 saddle brown #8b4513=30&#xD;31 chocolate #7b3f00=31&#xD;32 kobicha #6b4423=32&#xD;33 sepia #704214=33&#xD;34 chestnut #954535=34&#xD;35 dark brown #654321=35&#xD;36 brown #964b00=36&#xD;37 golden brown #996515=37&#xD;38 cinnamon #b87333=38&#xD;39 copper #d2691e=39&#xD;}&#xD;oranges={&#xD;40 orange #ff7f00=40&#xD;41 Pantone orange #ff5800=41&#xD;42 pumpkin #ff7518=42&#xD;43 Variables #f3761d=43&#xD;44 Spanish orange #e86100=44&#xD;45 burnt orange #cc5500=45&#xD;46 sinopia #cb410b=46&#xD;47 ochre #cc7722=47&#xD;48 carrot #ed9121=48&#xD;49 tangerine #f28500=49&#xD;}&#xD;yellows={&#xD;50 yellow #ffff00=50&#xD;51 Control #e6a822=51&#xD;52 dark goldenrod #b8860b=52&#xD;53 goldenrod #daa520=53&#xD;54 saffron #f4c430=54&#xD;55 sandstorm #ecd540=55&#xD;56 mustard #ffdb58=56&#xD;57 gold #ffd700=57&#xD;58 egg yolk #fee33e=58&#xD;59 rubber duck #fbe108=59&#xD;}&#xD;greens={&#xD;60 lime #00ff00=60&#xD;61 apple green #8db600=61&#xD;62 Operators #62c213=62&#xD;63 forest green #228b22=63&#xD;64 green #008000=64&#xD;65 dark green #006400=65&#xD;66 dark pastel green #03c03c=66&#xD;67 emerald #50c878=67&#xD;68 mint #3eb489=68&#xD;69 Pen #00a178=69&#xD;}&#xD;cyans={&#xD;70 aqua (cyan) #00ffff=70&#xD;71 dark cyan #008b8b=71&#xD;72 cerulean #007ba7=72&#xD;73 iceberg #71a6d2=73&#xD;74 Sensing #0494dc=74&#xD;75 teal #008080=75&#xD;76 light sky blue #87cefa=76&#xD;77 deep sky blue #00bfff=77&#xD;78 dodger blue #1e90ff=78&#xD;79 azure #007fff=79&#xD;}&#xD;blues={&#xD;80 blue #0000ff=80&#xD;81 midnight blue #191970=81&#xD;82 dark powder blue #003399=82&#xD;83 cobalt #0047ab=83&#xD;84 denim #1560bd=84&#xD;85 navy blue #000080=85&#xD;86 steel blue #4682b4=86&#xD;87 Motion #4a6cd4=87&#xD;88 cornflower #6495ed=88&#xD;89 slate blue #6a5acd=89&#xD;}&#xD;purples={&#xD;90 violet #8000ff=90&#xD;91 Looks #8f56e3=91&#xD;92 grape #6f2da8=92&#xD;93 indigo #4b0082=93&#xD;94 x11 purple #a020f0=94&#xD;95 magenta (fuchia) #ff00ff=95&#xD;96 dark orchid #9932cc=96&#xD;97 Sound #cf4ad9=97&#xD;98 purple #7f007f=98&#xD;99 dark magenta #8b008b=99&#xD;}</options></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l></list></block><custom-block s="✐ initialize variables"></custom-block><block s="doIfElse"><block s="reportIsA"><block var="which"/><l><option>text</option></l></block><script><block s="doSetVar"><l>color</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportListItem"><l>4</l><l/></block><block var="which"/></block></autolambda><list></list></block><block var="✐ crayon colors"/></block></block><block s="doIfElse"><block s="reportNotEquals"><block var="color"/><l></l></block><script><block s="doSetVar"><l>✐ last crayon</l><block s="reportListItem"><l>5</l><block var="color"/></block></block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>No such crayon: </l><block var="which"/></list></block></custom-block></script></block></script><script><block s="doSetVar"><l>color</l><block s="reportListItem"><block s="reportSum"><block s="reportModulus"><block var="which"/><l>100</l></block><l>1</l></block><block var="✐ crayon colors"/></block></block><block s="doSetVar"><l>✐ last crayon</l><block var="which"/></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>crayon</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><block var="color"/></block><block s="reportListItem"><l>2</l><block var="color"/></block><block s="reportListItem"><l>3</l><block var="color"/></block></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="set pen color to r: %&apos;r&apos; g: %&apos;g&apos; b: %&apos;b&apos;" type="command" category="pen"><comment x="0" y="0" w="220.66666666666666" collapsed="false">Takes three inputs for red, green, and blue&#xD;values, each between 0 and 255.  0,0,0 is black; 255,255,255 is white.  255,255,0 is yellow, and so on.&#xD;&#xD;The SET PEN block in this library lets you set individual red, green, or blue without changing the others, lets you provide a list of three RGB color components, and lets you provide a six-digit hexadecimal number, the form in which RGB color values are usually found online.&#xD;&#xD;See Appendix A of the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:altera a cor da tua caneta para vermelho _ , verde _ e azul _ (0 a 255)&#xD;</translations><inputs><input type="%n">255</input><input type="%n">0</input><input type="%n">0</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>r</l><l>g</l><l>b</l></list><l>this.setColor(new Color(r, g, b, this.color.a));</l></block><list><block var="r"/><block var="g"/><block var="b"/></list></block></script></block-definition><block-definition s="set pen color to h: %&apos;h&apos; s: %&apos;s&apos; v: %&apos;v&apos;" type="command" category="pen"><comment x="0" y="0" w="283.3333333333333" collapsed="false">Takes three inputs for hue, saturation, and value (&quot;brightness&quot;)&#xD;values, each between 0 and 1.  0,0,0 is black; 0,0,1 is white.  0.15,1,1 is yellow, and so on.&#xD;&#xD;The SET PEN block in this library lets you set individual hue, saturation, or value without changing the others, lets you provide a list of three HSV color components, and lets you&#xD;use the very much superior HSL (hue, saturation, lightness)&#xD;color space.&#xD;&#xD;See Appendix A of the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:altera a cor da caneta para matiz _ , saturação _ e brilho _ (0 a 1)&#xD;</translations><inputs><input type="%n">0.3</input><input type="%n">0.7</input><input type="%n">0.6</input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>h</l><l>s</l><l>v</l></list><l>var col = new Color();&#xD;col.set_hsv(h, s, v);&#xD;this.setColor(col);</l></block><list><block var="h"/><block var="s"/><block var="v"/></list></block></script></block-definition><block-definition s="RGB color" type="reporter" category="pen"><comment x="0" y="0" w="266" collapsed="false">Reports the current pen color as a list of three RGB values in the range 0-255.  The PEN block in this library provides a large set of ways to examine the color.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:a cor da caneta em RGB (vermelho, verde e azul; 0 a 255)&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return new List([this.color.r, this.color.g, this.color.b]);</l></block><list></list></block></block></script></block-definition><block-definition s="HSV color" type="reporter" category="pen"><comment x="0" y="0" w="312" collapsed="false">Reports the current pen color as a list of three HSV values&#xD;in the range 0-1.&#xD;&#xD;See Appendix A in the Snap! Reference Manual for details.</comment><header></header><code></code><translations>pt:a cor da caneta em HSV (matiz, saturação e brilho, 0 a 1)&#xD;</translations><inputs></inputs><script><block s="doReport"><block s="evaluate"><block s="reportJSFunction"><list><l></l></list><l>return new List(this.color.hsv());</l></block><list></list></block></block></script></block-definition><block-definition s="✐ hexchar %&apos;nybble&apos;" type="reporter" category="pen"><comment x="0" y="0" w="245.33333333333334" collapsed="false">Takes a value from 0 to 15 and reports&#xD;the corresponding hexadecimal digit.&#xD;&#xD;For internal use of the color library.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportLessThan"><block var="nybble"/><l>10</l></block><block var="nybble"/><block s="reportUnicodeAsLetter"><block s="reportSum"><block s="reportUnicode"><l>a</l></block><block s="reportDifference"><block var="nybble"/><l>10</l></block></block></block></block></block></script></block-definition><block-definition s="✐ subset %&apos;pred&apos; %&apos;data&apos; %&apos;catchtag&apos; %&apos;result&apos; %&apos;set pen?&apos;" type="predicate" category="pen"><comment x="0" y="0" w="228" collapsed="false">Don&apos;t ask.&#xD;Only for internal use by the SET PEN block.</comment><header></header><code></code><translations></translations><inputs><input type="%predRing"></input><input type="%l"></input><input type="%cmdRing"></input><input type="%upvar"></input><input type="%b">true</input></inputs><script><block s="doDeclareVariables"><list><l>best match</l></list></block><block s="doSetVar"><l>result</l><block s="reportKeep"><block var="pred"/><block var="data"/></block></block><block s="doIf"><block s="reportListIsEmpty"><block var="result"/></block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block><block s="doIf"><block s="reportListIsEmpty"><block s="reportCDR"><block var="result"/></block></block><script><block s="doSetVar"><l>best match</l><block s="reportListItem"><l>1</l><block var="result"/></block></block><block s="doIfElse"><block var="set pen?"/><script><custom-block s="$brush set pen %s to %s %mult%s"><l>red</l><block s="reportListItem"><l>1</l><block var="best match"/></block><list><l></l></list></custom-block><custom-block s="$brush set pen %s to %s %mult%s"><l>green</l><block s="reportListItem"><l>2</l><block var="best match"/></block><list><l></l></list></custom-block><custom-block s="$brush set pen %s to %s %mult%s"><l>blue</l><block s="reportListItem"><l>3</l><block var="best match"/></block><list><l></l></list></custom-block><block s="doSetVar"><l>✐ last X11</l><block s="reportListItem"><l>4</l><block var="best match"/></block></block><block s="doSetVar"><l>✐ last set as</l><l>X11</l></block><custom-block s="throw %s"><block var="catchtag"/></custom-block></script><script><block s="doSetVar"><l>✐ X11 catch</l><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block var="best match"/></block></block><custom-block s="throw %s"><block var="catchtag"/></custom-block></script></block></script></block><block s="doReport"><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block-definition><block-definition s="✐ initialize variables" type="command" category="pen"><comment x="0" y="0" w="180" collapsed="false">Creates a bunch of global variables.&#xD;For internal use by Color library.</comment><header></header><code></code><translations></translations><inputs></inputs><script><block s="doIf"><custom-block s="does var %s exist?"><l>✐ last set as</l></custom-block><script><block s="doStopThis"><l><option>this block</option></l></block></script></block><custom-block s="create %s var %mult%txt"><l>global</l><list><l>✐ last set as</l><l>✐ fair?</l><l>✐ color scale</l><l>✐ HSL</l><l>✐ last crayon</l><l>✐ last X11</l><l>✐ raw HSL</l><l>✐ raw HSV</l><l>✐ X11</l><l>✐ crayon colors</l><l>✐ fair hue table</l><l>✐ colors</l><l>✐ brights</l><l>✐ pivots</l><l>✐ HSV brights</l><l>✐ HSL brights</l><l>✐ HSV colors</l><l>✐ HSL colors</l><l>✐ X11 catch</l><l>✐ dimension names</l><l>✐ dimension dispatch</l></list></custom-block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block><block s="doSetVar"><l>✐ HSL</l><block s="reportNewList"><list><l>0</l><l>100</l><l>50</l></list></block></block><block s="doSetVar"><l>✐ raw HSL</l><block s="reportNewList"><list><l>0</l><l>100</l><l>50</l></list></block></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ X11"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ X11</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>255,250,250,snow&#xD;248,248,255,ghostwhite&#xD;245,245,245,whitesmoke&#xD;220,220,220,gainsboro&#xD;255,250,240,floralwhite&#xD;253,245,230,oldlace&#xD;250,240,230,linen&#xD;250,235,215,antiquewhite&#xD;255,239,213,papayawhip&#xD;255,235,205,blanchedalmond&#xD;255,228,196,bisque&#xD;255,218,185,peachpuff&#xD;255,222,173,navajowhite&#xD;255,228,181,moccasin&#xD;255,248,220,cornsilk&#xD;255,255,240,ivory&#xD;255,250,205,lemonchiffon&#xD;255,245,238,seashell&#xD;240,255,240,honeydew&#xD;245,255,250,mintcream&#xD;240,255,255,azure&#xD;240,248,255,aliceblue&#xD;230,230,250,lavender&#xD;255,240,245,lavenderblush&#xD;255,228,225,mistyrose&#xD;255,255,255,white&#xD;0,0,0,black&#xD;47,79,79,darkslategray&#xD;47,79,79,darkslategrey&#xD;105,105,105,dimgray&#xD;105,105,105,dimgrey&#xD;112,128,144,slategray&#xD;112,128,144,slategrey&#xD;119,136,153,lightslategray&#xD;119,136,153,lightslategrey&#xD;190,190,190,gray(X11)&#xD;190,190,190,grey(X11)&#xD;128,128,128,gray(W3C)&#xD;128,128,128,grey(W3C)&#xD;211,211,211,lightgrey&#xD;211,211,211,lightgray&#xD;25,25,112,midnightblue&#xD;0,0,128,navy&#xD;0,0,128,navyblue&#xD;100,149,237,cornflowerblue&#xD;72,61,139,darkslateblue&#xD;106,90,205,slateblue&#xD;123,104,238,mediumslateblue&#xD;132,112,255,lightslateblue&#xD;0,0,205,mediumblue&#xD;65,105,225,royalblue&#xD;0,0,255,blue&#xD;30,144,255,dodgerblue&#xD;0,191,255,deepskyblue&#xD;135,206,235,skyblue&#xD;135,206,250,lightskyblue&#xD;70,130,180,steelblue&#xD;176,196,222,lightsteelblue&#xD;173,216,230,lightblue&#xD;176,224,230,powderblue&#xD;175,238,238,paleturquoise&#xD;0,206,209,darkturquoise&#xD;72,209,204,mediumturquoise&#xD;64,224,208,turquoise&#xD;0,255,255,cyan&#xD;0,255,255,aqua&#xD;224,255,255,lightcyan&#xD;95,158,160,cadetblue&#xD;102,205,170,mediumaquamarine&#xD;127,255,212,aquamarine&#xD;0,100,0,darkgreen&#xD;85,107,47,darkolivegreen&#xD;143,188,143,darkseagreen&#xD;46,139,87,seagreen&#xD;60,179,113,mediumseagreen&#xD;32,178,170,lightseagreen&#xD;152,251,152,palegreen&#xD;0,255,127,springgreen&#xD;124,252,0,lawngreen&#xD;0,255,0,green(X11)&#xD;0,128,0,green(W3C)&#xD;0,255,0,lime&#xD;127,255,0,chartreuse&#xD;0,250,154,mediumspringgreen&#xD;173,255,47,greenyellow&#xD;50,205,50,limegreen&#xD;154,205,50,yellowgreen&#xD;34,139,34,forestgreen&#xD;107,142,35,olivedrab&#xD;189,183,107,darkkhaki&#xD;240,230,140,khaki&#xD;238,232,170,palegoldenrod&#xD;250,250,210,lightgoldenrodyellow&#xD;255,255,224,lightyellow&#xD;255,255,0,yellow&#xD;255,215,0,gold&#xD;238,221,130,lightgoldenrod&#xD;218,165,32,goldenrod&#xD;184,134,11,darkgoldenrod&#xD;188,143,143,rosybrown&#xD;205,92,92,indianred&#xD;139,69,19,saddlebrown&#xD;160,82,45,sienna&#xD;205,133,63,peru&#xD;222,184,135,burlywood&#xD;245,245,220,beige&#xD;245,222,179,wheat&#xD;244,164,96,sandybrown&#xD;210,180,140,tan&#xD;210,105,30,chocolate&#xD;178,34,34,firebrick&#xD;165,42,42,brown&#xD;233,150,122,darksalmon&#xD;250,128,114,salmon&#xD;255,160,122,lightsalmon&#xD;255,165,0,orange&#xD;255,140,0,darkorange&#xD;255,127,80,coral&#xD;240,128,128,lightcoral&#xD;255,99,71,tomato&#xD;255,69,0,orangered&#xD;255,0,0,red&#xD;255,105,180,hotpink&#xD;255,20,147,deeppink&#xD;255,192,203,pink&#xD;255,182,193,lightpink&#xD;219,112,147,palevioletred&#xD;176,48,96,maroon(X11)&#xD;128,0,0,maroon(W3C)&#xD;199,21,133,mediumvioletred&#xD;208,32,144,violetred&#xD;255,0,255,magenta&#xD;255,0,255,fuchsia&#xD;238,130,238,violet&#xD;221,160,221,plum&#xD;218,112,214,orchid&#xD;186,85,211,mediumorchid&#xD;153,50,204,darkorchid&#xD;148,0,211,darkviolet&#xD;138,43,226,blueviolet&#xD;160,32,240,purple(X11)&#xD;128,0,128,purple(W3C)&#xD;147,112,219,mediumpurple&#xD;216,191,216,thistle&#xD;255,250,250,snow1&#xD;238,233,233,snow2&#xD;205,201,201,snow3&#xD;139,137,137,snow4&#xD;255,245,238,seashell1&#xD;238,229,222,seashell2&#xD;205,197,191,seashell3&#xD;139,134,130,seashell4&#xD;255,239,219,AntiqueWhite1&#xD;238,223,204,AntiqueWhite2&#xD;205,192,176,AntiqueWhite3&#xD;139,131,120,AntiqueWhite4&#xD;255,228,196,bisque1&#xD;238,213,183,bisque2&#xD;205,183,158,bisque3&#xD;139,125,107,bisque4&#xD;255,218,185,PeachPuff1&#xD;238,203,173,PeachPuff2&#xD;205,175,149,PeachPuff3&#xD;139,119,101,PeachPuff4&#xD;255,222,173,NavajoWhite1&#xD;238,207,161,NavajoWhite2&#xD;205,179,139,NavajoWhite3&#xD;139,121,94,NavajoWhite4&#xD;255,250,205,LemonChiffon1&#xD;238,233,191,LemonChiffon2&#xD;205,201,165,LemonChiffon3&#xD;139,137,112,LemonChiffon4&#xD;255,248,220,cornsilk1&#xD;238,232,205,cornsilk2&#xD;205,200,177,cornsilk3&#xD;139,136,120,cornsilk4&#xD;255,255,240,ivory1&#xD;238,238,224,ivory2&#xD;205,205,193,ivory3&#xD;139,139,131,ivory4&#xD;240,255,240,honeydew1&#xD;224,238,224,honeydew2&#xD;193,205,193,honeydew3&#xD;131,139,131,honeydew4&#xD;255,240,245,LavenderBlush1&#xD;238,224,229,LavenderBlush2&#xD;205,193,197,LavenderBlush3&#xD;139,131,134,LavenderBlush4&#xD;255,228,225,MistyRose1&#xD;238,213,210,MistyRose2&#xD;205,183,181,MistyRose3&#xD;139,125,123,MistyRose4&#xD;240,255,255,azure1&#xD;224,238,238,azure2&#xD;193,205,205,azure3&#xD;131,139,139,azure4&#xD;131,111,255,SlateBlue1&#xD;122,103,238,SlateBlue2&#xD;105,89,205,SlateBlue3&#xD;71,60,139,SlateBlue4&#xD;72,118,255,RoyalBlue1&#xD;67,110,238,RoyalBlue2&#xD;58,95,205,RoyalBlue3&#xD;39,64,139,RoyalBlue4&#xD;0,0,255,blue1&#xD;0,0,238,blue2&#xD;0,0,205,blue3&#xD;0,0,139,blue4&#xD;30,144,255,DodgerBlue1&#xD;28,134,238,DodgerBlue2&#xD;24,116,205,DodgerBlue3&#xD;16,78,139,DodgerBlue4&#xD;99,184,255,SteelBlue1&#xD;92,172,238,SteelBlue2&#xD;79,148,205,SteelBlue3&#xD;54,100,139,SteelBlue4&#xD;0,191,255,DeepSkyBlue1&#xD;0,178,238,DeepSkyBlue2&#xD;0,154,205,DeepSkyBlue3&#xD;0,104,139,DeepSkyBlue4&#xD;135,206,255,SkyBlue1&#xD;126,192,238,SkyBlue2&#xD;108,166,205,SkyBlue3&#xD;74,112,139,SkyBlue4&#xD;176,226,255,LightSkyBlue1&#xD;164,211,238,LightSkyBlue2&#xD;141,182,205,LightSkyBlue3&#xD;96,123,139,LightSkyBlue4&#xD;198,226,255,SlateGray1&#xD;185,211,238,SlateGray2&#xD;159,182,205,SlateGray3&#xD;108,123,139,SlateGray4&#xD;202,225,255,LightSteelBlue1&#xD;188,210,238,LightSteelBlue2&#xD;162,181,205,LightSteelBlue3&#xD;110,123,139,LightSteelBlue4&#xD;191,239,255,LightBlue1&#xD;178,223,238,LightBlue2&#xD;154,192,205,LightBlue3&#xD;104,131,139,LightBlue4&#xD;224,255,255,LightCyan1&#xD;209,238,238,LightCyan2&#xD;180,205,205,LightCyan3&#xD;122,139,139,LightCyan4&#xD;187,255,255,PaleTurquoise1&#xD;174,238,238,PaleTurquoise2&#xD;150,205,205,PaleTurquoise3&#xD;102,139,139,PaleTurquoise4&#xD;152,245,255,CadetBlue1&#xD;142,229,238,CadetBlue2&#xD;122,197,205,CadetBlue3&#xD;83,134,139,CadetBlue4&#xD;0,245,255,turquoise1&#xD;0,229,238,turquoise2&#xD;0,197,205,turquoise3&#xD;0,134,139,turquoise4&#xD;0,255,255,cyan1&#xD;0,238,238,cyan2&#xD;0,205,205,cyan3&#xD;0,139,139,cyan4&#xD;151,255,255,DarkSlateGray1&#xD;141,238,238,DarkSlateGray2&#xD;121,205,205,DarkSlateGray3&#xD;82,139,139,DarkSlateGray4&#xD;127,255,212,aquamarine1&#xD;118,238,198,aquamarine2&#xD;102,205,170,aquamarine3&#xD;69,139,116,aquamarine4&#xD;193,255,193,DarkSeaGreen1&#xD;180,238,180,DarkSeaGreen2&#xD;155,205,155,DarkSeaGreen3&#xD;105,139,105,DarkSeaGreen4&#xD;84,255,159,SeaGreen1&#xD;78,238,148,SeaGreen2&#xD;67,205,128,SeaGreen3&#xD;46,139,87,SeaGreen4&#xD;154,255,154,PaleGreen1&#xD;144,238,144,PaleGreen2&#xD;124,205,124,PaleGreen3&#xD;84,139,84,PaleGreen4&#xD;0,255,127,SpringGreen1&#xD;0,238,118,SpringGreen2&#xD;0,205,102,SpringGreen3&#xD;0,139,69,SpringGreen4&#xD;0,255,0,green1&#xD;0,238,0,green2&#xD;0,205,0,green3&#xD;0,139,0,green4&#xD;127,255,0,chartreuse1&#xD;118,238,0,chartreuse2&#xD;102,205,0,chartreuse3&#xD;69,139,0,chartreuse4&#xD;192,255,62,OliveDrab1&#xD;179,238,58,OliveDrab2&#xD;154,205,50,OliveDrab3&#xD;105,139,34,OliveDrab4&#xD;202,255,112,DarkOliveGreen1&#xD;188,238,104,DarkOliveGreen2&#xD;162,205,90,DarkOliveGreen3&#xD;110,139,61,DarkOliveGreen4&#xD;255,246,143,khaki1&#xD;238,230,133,khaki2&#xD;205,198,115,khaki3&#xD;139,134,78,khaki4&#xD;255,236,139,LightGoldenrod1&#xD;238,220,130,LightGoldenrod2&#xD;205,190,112,LightGoldenrod3&#xD;139,129,76,LightGoldenrod4&#xD;255,255,224,LightYellow1&#xD;238,238,209,LightYellow2&#xD;205,205,180,LightYellow3&#xD;139,139,122,LightYellow4&#xD;255,255,0,yellow1&#xD;238,238,0,yellow2&#xD;205,205,0,yellow3&#xD;139,139,0,yellow4&#xD;255,215,0,gold1&#xD;238,201,0,gold2&#xD;205,173,0,gold3&#xD;139,117,0,gold4&#xD;255,193,37,goldenrod1&#xD;238,180,34,goldenrod2&#xD;205,155,29,goldenrod3&#xD;139,105,20,goldenrod4&#xD;255,185,15,DarkGoldenrod1&#xD;238,173,14,DarkGoldenrod2&#xD;205,149,12,DarkGoldenrod3&#xD;139,101,8,DarkGoldenrod4&#xD;255,193,193,RosyBrown1&#xD;238,180,180,RosyBrown2&#xD;205,155,155,RosyBrown3&#xD;139,105,105,RosyBrown4&#xD;255,106,106,IndianRed1&#xD;238,99,99,IndianRed2&#xD;205,85,85,IndianRed3&#xD;139,58,58,IndianRed4&#xD;255,130,71,sienna1&#xD;238,121,66,sienna2&#xD;205,104,57,sienna3&#xD;139,71,38,sienna4&#xD;255,211,155,burlywood1&#xD;238,197,145,burlywood2&#xD;205,170,125,burlywood3&#xD;139,115,85,burlywood4&#xD;255,231,186,wheat1&#xD;238,216,174,wheat2&#xD;205,186,150,wheat3&#xD;139,126,102,wheat4&#xD;255,165,79,tan1&#xD;238,154,73,tan2&#xD;205,133,63,tan3&#xD;139,90,43,tan4&#xD;255,127,36,chocolate1&#xD;238,118,33,chocolate2&#xD;205,102,29,chocolate3&#xD;139,69,19,chocolate4&#xD;255,48,48,firebrick1&#xD;238,44,44,firebrick2&#xD;205,38,38,firebrick3&#xD;139,26,26,firebrick4&#xD;255,64,64,brown1&#xD;238,59,59,brown2&#xD;205,51,51,brown3&#xD;139,35,35,brown4&#xD;255,140,105,salmon1&#xD;238,130,98,salmon2&#xD;205,112,84,salmon3&#xD;139,76,57,salmon4&#xD;255,160,122,LightSalmon1&#xD;238,149,114,LightSalmon2&#xD;205,129,98,LightSalmon3&#xD;139,87,66,LightSalmon4&#xD;255,165,0,orange1&#xD;238,154,0,orange2&#xD;205,133,0,orange3&#xD;139,90,0,orange4&#xD;255,127,0,DarkOrange1&#xD;238,118,0,DarkOrange2&#xD;205,102,0,DarkOrange3&#xD;139,69,0,DarkOrange4&#xD;255,114,86,coral1&#xD;238,106,80,coral2&#xD;205,91,69,coral3&#xD;139,62,47,coral4&#xD;255,99,71,tomato1&#xD;238,92,66,tomato2&#xD;205,79,57,tomato3&#xD;139,54,38,tomato4&#xD;255,69,0,OrangeRed1&#xD;238,64,0,OrangeRed2&#xD;205,55,0,OrangeRed3&#xD;139,37,0,OrangeRed4&#xD;255,0,0,red1&#xD;238,0,0,red2&#xD;205,0,0,red3&#xD;139,0,0,red4&#xD;255,20,147,DeepPink1&#xD;238,18,137,DeepPink2&#xD;205,16,118,DeepPink3&#xD;139,10,80,DeepPink4&#xD;255,110,180,HotPink1&#xD;238,106,167,HotPink2&#xD;205,96,144,HotPink3&#xD;139,58,98,HotPink4&#xD;255,181,197,pink1&#xD;238,169,184,pink2&#xD;205,145,158,pink3&#xD;139,99,108,pink4&#xD;255,174,185,LightPink1&#xD;238,162,173,LightPink2&#xD;205,140,149,LightPink3&#xD;139,95,101,LightPink4&#xD;255,130,171,PaleVioletRed1&#xD;238,121,159,PaleVioletRed2&#xD;205,104,137,PaleVioletRed3&#xD;139,71,93,PaleVioletRed4&#xD;255,52,179,maroon1&#xD;238,48,167,maroon2&#xD;205,41,144,maroon3&#xD;139,28,98,maroon4&#xD;255,62,150,VioletRed1&#xD;238,58,140,VioletRed2&#xD;205,50,120,VioletRed3&#xD;139,34,82,VioletRed4&#xD;255,0,255,magenta1&#xD;238,0,238,magenta2&#xD;205,0,205,magenta3&#xD;139,0,139,magenta4&#xD;255,131,250,orchid1&#xD;238,122,233,orchid2&#xD;205,105,201,orchid3&#xD;139,71,137,orchid4&#xD;255,187,255,plum1&#xD;238,174,238,plum2&#xD;205,150,205,plum3&#xD;139,102,139,plum4&#xD;224,102,255,MediumOrchid1&#xD;209,95,238,MediumOrchid2&#xD;180,82,205,MediumOrchid3&#xD;122,55,139,MediumOrchid4&#xD;191,62,255,DarkOrchid1&#xD;178,58,238,DarkOrchid2&#xD;154,50,205,DarkOrchid3&#xD;104,34,139,DarkOrchid4&#xD;155,48,255,purple1&#xD;145,44,238,purple2&#xD;125,38,205,purple3&#xD;85,26,139,purple4&#xD;171,130,255,MediumPurple1&#xD;159,121,238,MediumPurple2&#xD;137,104,205,MediumPurple3&#xD;93,71,139,MediumPurple4&#xD;255,225,255,thistle1&#xD;238,210,238,thistle2&#xD;205,181,205,thistle3&#xD;139,123,139,thistle4&#xD;0,0,0,gray0&#xD;0,0,0,grey0&#xD;3,3,3,gray1&#xD;3,3,3,grey1&#xD;5,5,5,gray2&#xD;5,5,5,grey2&#xD;8,8,8,gray3&#xD;8,8,8,grey3&#xD;10,10,10,gray4&#xD;10,10,10,grey4&#xD;13,13,13,gray5&#xD;13,13,13,grey5&#xD;15,15,15,gray6&#xD;15,15,15,grey6&#xD;18,18,18,gray7&#xD;18,18,18,grey7&#xD;20,20,20,gray8&#xD;20,20,20,grey8&#xD;23,23,23,gray9&#xD;23,23,23,grey9&#xD;26,26,26,gray10&#xD;26,26,26,grey10&#xD;28,28,28,gray11&#xD;28,28,28,grey11&#xD;31,31,31,gray12&#xD;31,31,31,grey12&#xD;33,33,33,gray13&#xD;33,33,33,grey13&#xD;36,36,36,gray14&#xD;36,36,36,grey14&#xD;38,38,38,gray15&#xD;38,38,38,grey15&#xD;41,41,41,gray16&#xD;41,41,41,grey16&#xD;43,43,43,gray17&#xD;43,43,43,grey17&#xD;46,46,46,gray18&#xD;46,46,46,grey18&#xD;48,48,48,gray19&#xD;48,48,48,grey19&#xD;51,51,51,gray20&#xD;51,51,51,grey20&#xD;54,54,54,gray21&#xD;54,54,54,grey21&#xD;56,56,56,gray22&#xD;56,56,56,grey22&#xD;59,59,59,gray23&#xD;59,59,59,grey23&#xD;61,61,61,gray24&#xD;61,61,61,grey24&#xD;64,64,64,gray25&#xD;64,64,64,grey25&#xD;66,66,66,gray26&#xD;66,66,66,grey26&#xD;69,69,69,gray27&#xD;69,69,69,grey27&#xD;71,71,71,gray28&#xD;71,71,71,grey28&#xD;74,74,74,gray29&#xD;74,74,74,grey29&#xD;77,77,77,gray30&#xD;77,77,77,grey30&#xD;79,79,79,gray31&#xD;79,79,79,grey31&#xD;82,82,82,gray32&#xD;82,82,82,grey32&#xD;84,84,84,gray33&#xD;84,84,84,grey33&#xD;87,87,87,gray34&#xD;87,87,87,grey34&#xD;89,89,89,gray35&#xD;89,89,89,grey35&#xD;92,92,92,gray36&#xD;92,92,92,grey36&#xD;94,94,94,gray37&#xD;94,94,94,grey37&#xD;97,97,97,gray38&#xD;97,97,97,grey38&#xD;99,99,99,gray39&#xD;99,99,99,grey39&#xD;102,102,102,gray40&#xD;102,102,102,grey40&#xD;105,105,105,gray41&#xD;105,105,105,grey41&#xD;107,107,107,gray42&#xD;107,107,107,grey42&#xD;110,110,110,gray43&#xD;110,110,110,grey43&#xD;112,112,112,gray44&#xD;112,112,112,grey44&#xD;115,115,115,gray45&#xD;115,115,115,grey45&#xD;117,117,117,gray46&#xD;117,117,117,grey46&#xD;120,120,120,gray47&#xD;120,120,120,grey47&#xD;122,122,122,gray48&#xD;122,122,122,grey48&#xD;125,125,125,gray49&#xD;125,125,125,grey49&#xD;127,127,127,gray50&#xD;127,127,127,grey50&#xD;130,130,130,gray51&#xD;130,130,130,grey51&#xD;133,133,133,gray52&#xD;133,133,133,grey52&#xD;135,135,135,gray53&#xD;135,135,135,grey53&#xD;138,138,138,gray54&#xD;138,138,138,grey54&#xD;140,140,140,gray55&#xD;140,140,140,grey55&#xD;143,143,143,gray56&#xD;143,143,143,grey56&#xD;145,145,145,gray57&#xD;145,145,145,grey57&#xD;148,148,148,gray58&#xD;148,148,148,grey58&#xD;150,150,150,gray59&#xD;150,150,150,grey59&#xD;153,153,153,gray60&#xD;153,153,153,grey60&#xD;156,156,156,gray61&#xD;156,156,156,grey61&#xD;158,158,158,gray62&#xD;158,158,158,grey62&#xD;161,161,161,gray63&#xD;161,161,161,grey63&#xD;163,163,163,gray64&#xD;163,163,163,grey64&#xD;166,166,166,gray65&#xD;166,166,166,grey65&#xD;168,168,168,gray66&#xD;168,168,168,grey66&#xD;171,171,171,gray67&#xD;171,171,171,grey67&#xD;173,173,173,gray68&#xD;173,173,173,grey68&#xD;176,176,176,gray69&#xD;176,176,176,grey69&#xD;179,179,179,gray70&#xD;179,179,179,grey70&#xD;181,181,181,gray71&#xD;181,181,181,grey71&#xD;184,184,184,gray72&#xD;184,184,184,grey72&#xD;186,186,186,gray73&#xD;186,186,186,grey73&#xD;189,189,189,gray74&#xD;189,189,189,grey74&#xD;191,191,191,gray75&#xD;191,191,191,grey75&#xD;194,194,194,gray76&#xD;194,194,194,grey76&#xD;196,196,196,gray77&#xD;196,196,196,grey77&#xD;199,199,199,gray78&#xD;199,199,199,grey78&#xD;201,201,201,gray79&#xD;201,201,201,grey79&#xD;204,204,204,gray80&#xD;204,204,204,grey80&#xD;207,207,207,gray81&#xD;207,207,207,grey81&#xD;209,209,209,gray82&#xD;209,209,209,grey82&#xD;212,212,212,gray83&#xD;212,212,212,grey83&#xD;214,214,214,gray84&#xD;214,214,214,grey84&#xD;217,217,217,gray85&#xD;217,217,217,grey85&#xD;219,219,219,gray86&#xD;219,219,219,grey86&#xD;222,222,222,gray87&#xD;222,222,222,grey87&#xD;224,224,224,gray88&#xD;224,224,224,grey88&#xD;227,227,227,gray89&#xD;227,227,227,grey89&#xD;229,229,229,gray90&#xD;229,229,229,grey90&#xD;232,232,232,gray91&#xD;232,232,232,grey91&#xD;235,235,235,gray92&#xD;235,235,235,grey92&#xD;237,237,237,gray93&#xD;237,237,237,grey93&#xD;240,240,240,gray94&#xD;240,240,240,grey94&#xD;242,242,242,gray95&#xD;242,242,242,grey95&#xD;245,245,245,gray96&#xD;245,245,245,grey96&#xD;247,247,247,gray97&#xD;247,247,247,grey97&#xD;250,250,250,gray98&#xD;250,250,250,grey98&#xD;252,252,252,gray99&#xD;252,252,252,grey99&#xD;255,255,255,gray100&#xD;255,255,255,grey100&#xD;169,169,169,darkgrey&#xD;169,169,169,darkgray&#xD;0,0,139,darkblue&#xD;0,139,139,darkcyan&#xD;139,0,139,darkmagenta&#xD;139,0,0,darkred&#xD;144,238,144,lightgreen</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ crayon colors"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ crayon colors</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>0,0,0,black,0&#xD;18,18,18,gray7,1&#xD;36,36,36,gray14,2&#xD;54,54,54,gray21,3&#xD;72,72,72,gray28,4&#xD;92,92,92,gray36,5&#xD;109,109,109,gray43,6&#xD;127,127,127,gray50,7&#xD;145,145,145,gray57,8&#xD;163,163,163,gray64,9&#xD;181,181,181,gray71,10&#xD;200,200,200,gray78,11&#xD;218,218,218,gray85,12&#xD;236,236,236,gray92,13&#xD;255,255,255,white,14&#xD;255,20,147,deep pink,15&#xD;255,105,180,hot pink,16&#xD;255,0,127,bright pink,17&#xD;227,11,93,raspberry,18&#xD;229,43,80,amaranth,19&#xD;255,0,0,red,20&#xD;144,0,32,burgundy,21&#xD;153,0,0,cherry,22&#xD;164,0,0,dark candy apple red,23&#xD;192,0,0,sanguine,24&#xD;128,0,0,maroon,25&#xD;201,0,22,crimson,26&#xD;217,77,17,Lists,27&#xD;255,8,0,candy apple red,28&#xD;255,56,0,coquelicot,29&#xD;139,69,19,saddle brown,30&#xD;123,63,0,chocolate,31&#xD;107,68,35,kobicha,32&#xD;112,66,20,sepia,33&#xD;149,69,53,chestnut,34&#xD;101,67,33,dark brown,35&#xD;150,75,0,brown,36&#xD;153,101,21,golden brown,37&#xD;184,115,51,cinnamon,38&#xD;210,105,30,copper,39&#xD;255,127,0,orange,40&#xD;255,88,0,Pantone orange,41&#xD;255,117,24,pumpkin,42&#xD;243,118,29,Variables,43&#xD;232,97,0,Spanish orange,44&#xD;204,85,0,burnt orange,45&#xD;203,65,11,sinopia,46&#xD;204,119,34,ochre,47&#xD;237,145,33,carrot,48&#xD;242,133,0,tangerine,49&#xD;255,255,0,yellow,50&#xD;230,168,34,Control,51&#xD;184,134,11,dark goldenrod,52&#xD;218,165,32,goldenrod,53&#xD;244,196,48,saffron,54&#xD;236,213,64,sandstorm,55&#xD;255,219,88,mustard,56&#xD;255,215,0,gold,57&#xD;254,227,62,egg yolk,58&#xD;251,225,8,rubber duck,59&#xD;0,255,0,lime,60&#xD;141,182,0,apple green,61&#xD;98,194,19,Operators,62&#xD;34,139,34,forest green,63&#xD;0,128,0,green,64&#xD;0,100,0,dark green,65&#xD;3,192,60,dark pastel green,66&#xD;80,200,120,emerald,67&#xD;62,180,137,mint,68&#xD;0,161,120,Pen,69&#xD;0,255,255,aqua,70&#xD;0,139,139,dark cyan,71&#xD;0,123,167,cerulean,72&#xD;113,166,210,iceberg,73&#xD;4,148,220,Sensing,74&#xD;0,128,128,teal,75&#xD;135,206,250,light sky blue,76&#xD;0,191,255,deep sky blue,77&#xD;30,144,255,dodger blue,78&#xD;0,127,255,azure,79&#xD;0,0,255,blue,80&#xD;25,25,112,midnight blue,81&#xD;0,51,153,dark powder blue,82&#xD;0,71,171,cobalt,83&#xD;21,96,189,denim,84&#xD;0,0,128,navy blue,85&#xD;70,130,180,steel blue,86&#xD;74,108,212,Motion,87&#xD;100,149,237,cornflower,88&#xD;106,90,205,slate blue,89&#xD;128,0,255,violet,90&#xD;143,86,227,Looks,91&#xD;111,45,168,grape,92&#xD;75,0,130,indigo,93&#xD;160,32,240,x11 purple,94&#xD;255,0,255,magenta,95&#xD;153,50,204,dark orchid,96&#xD;207,74,217,Sound,97&#xD;127,0,127,purple,98&#xD;139,0,139,dark magenta,99&#xD;0,255,255,cyan,100&#xD;255,0,255,fuchia,101&#xD;18,18,18,grey7,102&#xD;36,36,36,grey14,103&#xD;54,54,54,grey21,104&#xD;72,72,72,grey28,105&#xD;92,92,92,grey36,106&#xD;109,109,109,grey43,107&#xD;127,127,127,grey50,108&#xD;145,145,145,grey57,109&#xD;163,163,163,grey64,110&#xD;181,181,181,grey71,111&#xD;200,200,200,grey78,112&#xD;218,218,218,grey85,113&#xD;236,236,236,grey92,114</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ fair hue table"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ fair hue table</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>0,0&#xD;0.1,0.4490048&#xD;0.2,0.7917349397590361&#xD;0.3,1.323783606557377&#xD;0.4,1.5577075630252102&#xD;0.5,1.8819460580912863&#xD;0.6,2.2386749999999993&#xD;0.7,2.7028660714285713&#xD;0.8,3.0121628959276014&#xD;0.9,3.315934497816594&#xD;1,3.6112710280373834&#xD;1.1,3.90595&#xD;1.2,4.127571428571427&#xD;1.3,4.297762318840579&#xD;1.4,4.489283257918553&#xD;1.5,4.7677722772277225&#xD;1.6,5.039333333333333&#xD;1.7,5.304873846153846&#xD;1.8,5.403663157894737&#xD;1.9,5.658512796208531&#xD;2,5.840000000000001&#xD;2.1,6.114844444444445&#xD;2.2,6.204400000000001&#xD;2.3,6.3165000000000004&#xD;2.4,6.566297872340425&#xD;2.5,6.83&#xD;2.6,6.923418181818183&#xD;2.7,7.050461538461539&#xD;2.8,7.275225806451613&#xD;2.9,7.5318&#xD;3,7.621924324324324&#xD;3.1,7.708551724137931&#xD;3.2,7.956799999999999&#xD;3.3,8.1096&#xD;3.4,8.203896774193549&#xD;3.5,8.371&#xD;3.6,8.6184&#xD;3.7,8.717372727272728&#xD;3.8,8.851600000000001&#xD;3.9,9.016399999999999&#xD;4,9.10822857142857&#xD;4.1,9.2424&#xD;4.2,9.4036&#xD;4.3,9.4894&#xD;4.4,9.6224&#xD;4.5,9.725789473684207&#xD;4.6,9.9364&#xD;4.7,10.070061538461541&#xD;4.8,10.1744&#xD;4.9,10.297239999999999&#xD;5,10.379999999999999&#xD;5.1,10.600304&#xD;5.2,10.661408&#xD;5.3,10.7294&#xD;5.4,10.828241860465111&#xD;5.5,11.017183908045975&#xD;5.6,11.075908045977013&#xD;5.7,11.308730635838149&#xD;5.8,11.36599768786127&#xD;5.9,11.4312&#xD;6,11.522086956521738&#xD;6.1,11.70843023255814&#xD;6.2,11.763372093023255&#xD;6.3,11.825&#xD;6.4,11.900000000000002&#xD;6.5,11.99609375&#xD;6.6,12.150512280701754&#xD;6.7,12.204400000000001&#xD;6.8,12.277600000000001&#xD;6.9,12.36096&#xD;7,12.534857142857144&#xD;7.1,12.5976&#xD;7.2,13&#xD;7.3,13.411466666666666&#xD;7.4,13.549833333333334&#xD;7.5,13.69097222222222&#xD;7.6,13.9648&#xD;7.7,14.168931506849315&#xD;7.8,14.458400000000001&#xD;7.9,14.768594594594598&#xD;8,14.865702702702702&#xD;8.1,15.092035443037975&#xD;8.2,15.482090666666668&#xD;8.3,15.939600000000002&#xD;8.4,16.261599999999998&#xD;8.5,16.61513513513513&#xD;8.6,17.015784615384618&#xD;8.7,17.513740506329114&#xD;8.8,17.718825316455696&#xD;8.9,26.517000000000003&#xD;9,26.77&#xD;9.1,27.022999999999996&#xD;9.2,27.276&#xD;9.3,27.528999999999996&#xD;9.4,27.782&#xD;9.5,28.035000000000004&#xD;9.6,28.288&#xD;9.7,28.540999999999997&#xD;9.8,28.794&#xD;9.9,29.046999999999997&#xD;10,29.3&#xD;10.1,29.553000000000004&#xD;10.2,29.906&#xD;10.3,30.058999999999997&#xD;10.4,30.412&#xD;10.5,30.564999999999998&#xD;10.6,30.659000000000002&#xD;10.7,30.770999999999997&#xD;10.8,30.912&#xD;10.9,30.9885&#xD;11,31.130000000000003&#xD;11.1,31.241500000000002&#xD;11.2,31.336000000000002&#xD;11.3,31.444499999999998&#xD;11.4,31.542&#xD;11.5,31.695&#xD;11.6,31.774&#xD;11.7,31.901&#xD;11.8,32.027&#xD;11.9,32.107&#xD;12,32.260000000000005&#xD;12.1,32.3565&#xD;12.2,32.466&#xD;12.3,32.6095&#xD;12.4,32.686&#xD;12.5,32.8125&#xD;12.6,32.888999999999996&#xD;12.7,33.031&#xD;12.8,33.142&#xD;12.9,33.236999999999995&#xD;13,33.39&#xD;13.1,33.4715&#xD;13.2,33.596&#xD;13.3,33.7245&#xD;13.4,33.80200000000001&#xD;13.5,33.927499999999995&#xD;13.6,34.007999999999996&#xD;13.7,34.161&#xD;13.8,34.257&#xD;13.9,34.367&#xD;14,34.510000000000005&#xD;14.1,34.5865&#xD;14.2,34.726&#xD;14.3,34.8395&#xD;14.4,34.931999999999995&#xD;14.5,35.084999999999994&#xD;14.6,35.169&#xD;14.7,35.291&#xD;14.8,35.372&#xD;14.9,35.497&#xD;15,35.625&#xD;15.1,35.703&#xD;15.2,35.856&#xD;15.3,35.9545&#xD;15.4,36.062&#xD;15.5,36.207499999999996&#xD;15.6,36.284&#xD;15.7,36.42100000000001&#xD;15.8,36.537&#xD;15.9,36.626999999999995&#xD;16,36.739999999999995&#xD;16.1,36.833000000000006&#xD;16.2,36.986000000000004&#xD;16.3,37.0695&#xD;16.4,37.192&#xD;16.5,37.322500000000005&#xD;16.6,37.399&#xD;16.7,37.551&#xD;16.8,37.704&#xD;16.9,37.857000000000006&#xD;17,38.010000000000005&#xD;17.1,38.263000000000005&#xD;17.2,38.41600000000001&#xD;17.3,38.569&#xD;17.4,38.722&#xD;17.5,38.875&#xD;17.6,39.028&#xD;17.7,39.181&#xD;17.8,39.334&#xD;17.9,39.486999999999995&#xD;18,39.739999999999995&#xD;18.1,39.892999999999994&#xD;18.2,40.046&#xD;18.3,40.199&#xD;18.4,40.352&#xD;18.5,40.504999999999995&#xD;18.6,40.658&#xD;18.7,40.81099999999999&#xD;18.8,41.064&#xD;18.9,41.217&#xD;19,41.37&#xD;19.1,41.523&#xD;19.2,41.676&#xD;19.3,41.829&#xD;19.4,41.982000000000006&#xD;19.5,42.135&#xD;19.6,42.288&#xD;19.7,42.541&#xD;19.8,42.693999999999996&#xD;19.9,42.847&#xD;20,43&#xD;20.1,43.153&#xD;20.2,43.306&#xD;20.3,43.458999999999996&#xD;20.4,43.611999999999995&#xD;20.5,43.765&#xD;20.6,44.017999999999994&#xD;20.7,44.171&#xD;20.8,44.324&#xD;20.9,44.477&#xD;21,44.54333333333334&#xD;21.1,44.59433333333333&#xD;21.2,44.634&#xD;21.3,44.672250000000005&#xD;21.4,44.714&#xD;21.5,44.765&#xD;21.6,44.812&#xD;21.7,44.85025&#xD;21.8,44.8885&#xD;21.9,44.93566666666667&#xD;22,44.986666666666665&#xD;22.1,45.02825&#xD;22.2,45.066500000000005&#xD;22.3,45.10633333333333&#xD;22.4,45.157333333333334&#xD;22.5,45.20625&#xD;22.6,45.2445&#xD;22.7,45.28275&#xD;22.8,45.327999999999996&#xD;22.9,45.379000000000005&#xD;23,45.4225&#xD;23.1,45.460750000000004&#xD;23.2,45.499&#xD;23.3,45.54966666666667&#xD;23.4,45.60066666666667&#xD;23.5,45.651666666666664&#xD;23.6,45.702000000000005&#xD;23.7,45.74025&#xD;23.8,45.778499999999994&#xD;23.9,45.82233333333333&#xD;24,45.873333333333335&#xD;24.1,45.91825&#xD;24.2,45.9565&#xD;24.3,45.994749999999996&#xD;24.4,46.044&#xD;24.5,46.095&#xD;24.6,46.134499999999996&#xD;24.7,46.17275&#xD;24.8,46.214666666666666&#xD;24.9,46.26566666666666&#xD;25,46.3125&#xD;25.1,46.35075&#xD;25.2,46.388999999999996&#xD;25.3,46.43633333333334&#xD;25.4,46.48733333333333&#xD;25.5,46.52875&#xD;25.6,46.56699999999999&#xD;25.7,46.607&#xD;25.8,46.658&#xD;25.9,46.708999999999996&#xD;26,46.76&#xD;26.1,46.80825&#xD;26.2,46.8465&#xD;26.3,46.88475&#xD;26.4,46.93066666666667&#xD;26.5,46.98166666666667&#xD;26.6,47.0245&#xD;26.7,47.06275&#xD;26.8,47.10133333333333&#xD;26.9,47.15233333333333&#xD;27,47.2025&#xD;27.1,47.24075&#xD;27.2,47.279&#xD;27.3,47.323&#xD;27.4,47.374&#xD;27.5,47.41875&#xD;27.6,47.457&#xD;27.7,47.49525&#xD;27.8,47.544666666666664&#xD;27.9,47.595666666666666&#xD;28,47.635000000000005&#xD;28.1,47.67325&#xD;28.2,47.715333333333334&#xD;28.3,47.766333333333336&#xD;28.4,47.81733333333334&#xD;28.5,47.868333333333325&#xD;28.6,47.9145&#xD;28.7,47.952749999999995&#xD;28.8,47.991&#xD;28.9,48.039&#xD;29,48.089999999999996&#xD;29.1,48.13075&#xD;29.2,48.169&#xD;29.3,48.209666666666664&#xD;29.4,48.260666666666665&#xD;29.5,48.308749999999996&#xD;29.6,48.346999999999994&#xD;29.7,48.38525&#xD;29.8,48.431333333333335&#xD;29.9,48.48233333333333&#xD;30,48.525&#xD;30.1,48.56325&#xD;30.2,48.602000000000004&#xD;30.3,48.653000000000006&#xD;30.4,48.703&#xD;30.5,48.74125&#xD;30.6,48.7795&#xD;30.7,48.82366666666667&#xD;30.8,48.87466666666667&#xD;30.9,48.925666666666665&#xD;31,48.97666666666667&#xD;31.1,49.02075&#xD;31.2,49.059&#xD;31.3,49.097249999999995&#xD;31.4,49.147333333333336&#xD;31.5,49.19833333333334&#xD;31.6,49.237&#xD;31.7,49.27525&#xD;31.8,49.318&#xD;31.9,49.369&#xD;32,49.415&#xD;32.1,49.45325&#xD;32.2,49.4915&#xD;32.3,49.53966666666666&#xD;32.4,49.59066666666667&#xD;32.5,49.63125&#xD;32.6,49.6695&#xD;32.7,49.71033333333334&#xD;32.8,49.76133333333333&#xD;32.9,49.809250000000006&#xD;33,49.847500000000004&#xD;33.1,49.88575&#xD;33.2,49.932&#xD;33.3,49.983000000000004&#xD;33.4,50.051&#xD;33.5,50.127500000000005&#xD;33.6,50.20264239271781&#xD;33.7,50.253178153446036&#xD;33.8,50.305600000000005&#xD;33.9,50.381800000000005&#xD;34,50.458000000000006&#xD;34.1,50.5342&#xD;34.2,50.60693333333333&#xD;34.3,50.65773333333333&#xD;34.4,50.7128&#xD;34.5,50.789&#xD;34.6,50.8652&#xD;34.7,50.939675&#xD;34.8,51.0132&#xD;34.9,51.089099999999995&#xD;35,51.14333333333333&#xD;35.1,51.193933333333334&#xD;35.2,51.2668&#xD;35.3,51.3427&#xD;35.4,51.41859999999999&#xD;35.5,51.4945&#xD;35.6,51.544799999999995&#xD;35.7,51.59310000000001&#xD;35.8,51.6648&#xD;35.9,51.7404&#xD;36,51.81600000000001&#xD;36.1,51.891600000000004&#xD;36.2,51.967200000000005&#xD;36.3,52.028533333333336&#xD;36.4,52.078933333333325&#xD;36.5,52.14008711433756&#xD;36.6,52.20980000000001&#xD;36.7,52.2851&#xD;36.8,52.360400000000006&#xD;36.9,52.42380000000001&#xD;37,52.474000000000004&#xD;37.1,52.536300000000004&#xD;37.2,52.611599999999996&#xD;37.3,52.6869&#xD;37.4,52.755338078291814&#xD;37.5,52.825&#xD;37.6,52.89999999999999&#xD;37.7,52.95&#xD;37.8,53&#xD;37.9,53.075&#xD;38,53.15&#xD;38.1,53.22180385288967&#xD;38.2,53.28721541155867&#xD;38.3,53.340066666666665&#xD;38.4,53.38986666666666&#xD;38.5,53.459500000000006&#xD;38.6,53.5342&#xD;38.7,53.608900000000006&#xD;38.8,53.6836&#xD;38.9,53.7583&#xD;39,53.822&#xD;39.1,53.87179999999999&#xD;39.2,53.927470769230766&#xD;39.3,53.99080615384615&#xD;39.4,54.063599999999994&#xD;39.5,54.138&#xD;39.6,54.20826666666667&#xD;39.7,54.257866666666665&#xD;39.8,54.3112&#xD;39.9,54.3856&#xD;40,54.46&#xD;40.1,54.52851275167785&#xD;40.2,54.590179865771816&#xD;40.3,54.6623&#xD;40.4,54.724266666666665&#xD;40.5,54.77366666666667&#xD;40.6,54.8346&#xD;40.7,54.908699999999996&#xD;40.8,54.9828&#xD;40.9,55.0569&#xD;41,55.117859484777526&#xD;41.1,55.160549414519906&#xD;41.2,55.20559999999999&#xD;41.3,55.279399999999995&#xD;41.4,55.3532&#xD;41.5,55.427&#xD;41.6,55.50079999999999&#xD;41.7,55.5746&#xD;41.8,55.632266666666666&#xD;41.9,55.681466666666665&#xD;42,55.736413570274635&#xD;42.1,55.79483360258481&#xD;42.2,55.867&#xD;42.3,55.9405&#xD;42.4,56.00933333333334&#xD;42.5,56.05833333333334&#xD;42.6,56.111000000000004&#xD;42.7,56.1845&#xD;42.8,56.245070063694264&#xD;42.9,56.302800000000005&#xD;43,56.376&#xD;43.1,56.4492&#xD;43.2,56.51493333333333&#xD;43.3,56.56373333333333&#xD;43.4,56.6188&#xD;43.5,56.69200000000001&#xD;43.6,56.76520000000001&#xD;43.7,56.8384&#xD;43.8,56.906370169491524&#xD;43.9,56.946568135593225&#xD;44,56.98676610169491&#xD;44.1,57.0489&#xD;44.2,57.12179999999999&#xD;44.3,57.1947&#xD;44.4,57.267599999999995&#xD;44.5,57.3405&#xD;44.6,57.40893333333334&#xD;44.7,57.45753333333333&#xD;44.8,57.50681898928025&#xD;44.9,57.56085206738131&#xD;45,57.61999999999999&#xD;45.1,57.692600000000006&#xD;45.2,57.76520000000001&#xD;45.3,57.825199999999995&#xD;45.4,57.873599999999996&#xD;45.5,57.93299999999999&#xD;45.6,58.0056&#xD;45.7,58.0782&#xD;45.8,58.13687590361445&#xD;45.9,58.189576506024096&#xD;46,58.258&#xD;46.1,58.3202&#xD;46.2,58.368399999999994&#xD;46.3,58.4249&#xD;46.4,58.4972&#xD;46.5,58.569500000000005&#xD;46.6,58.6418&#xD;46.7,58.70738864628821&#xD;46.8,58.7452751091703&#xD;46.9,58.78316157205241&#xD;47,58.839999999999996&#xD;47.1,58.912&#xD;47.2,58.983999999999995&#xD;47.3,59.056&#xD;47.4,59.2202&#xD;47.5,59.2925&#xD;47.6,59.4576&#xD;47.7,59.62329999999999&#xD;47.8,59.6962&#xD;47.9,59.769099999999995&#xD;48,59.936&#xD;48.1,60.1035&#xD;48.2,60.177&#xD;48.3,60.345400000000005&#xD;48.4,60.419200000000004&#xD;48.5,60.492999999999995&#xD;48.6,60.66260000000001&#xD;48.7,60.8328&#xD;48.8,61.003600000000006&#xD;48.9,61.0783&#xD;49,61.153&#xD;49.1,61.325&#xD;49.2,61.4&#xD;49.3,61.572900000000004&#xD;49.4,61.746399999999994&#xD;49.5,61.822&#xD;49.6,61.8976&#xD;49.7,62.0723&#xD;49.8,62.2476&#xD;49.9,62.423500000000004&#xD;50,62.5&#xD;50.1,62.576499999999996&#xD;50.2,62.653&#xD;50.3,62.729499999999994&#xD;50.4,62.806000000000004&#xD;50.5,62.88250000000001&#xD;50.6,62.959&#xD;50.7,63.0355&#xD;50.8,63.112&#xD;50.9,63.1885&#xD;51,63.26500000000001&#xD;51.1,63.34150000000001&#xD;51.2,63.41799999999999&#xD;51.3,63.494499999999995&#xD;51.4,63.57099999999999&#xD;51.5,63.647499999999994&#xD;51.6,63.72399999999999&#xD;51.7,63.800499999999985&#xD;51.8,63.87699999999999&#xD;51.9,63.953499999999984&#xD;52,64.03&#xD;52.1,64.11299999999999&#xD;52.2,64.23299999999999&#xD;52.3,64.30949999999999&#xD;52.4,64.386&#xD;52.5,64.4625&#xD;52.6,64.539&#xD;52.7,64.6155&#xD;52.8,64.692&#xD;52.9,64.76849999999999&#xD;53,64.845&#xD;53.1,64.92150000000001&#xD;53.2,64.998&#xD;53.3,65.0745&#xD;53.4,65.151&#xD;53.5,65.22749999999999&#xD;53.6,65.304&#xD;53.7,65.38050000000001&#xD;53.8,65.457&#xD;53.9,65.53349999999999&#xD;54,65.61&#xD;54.1,65.6865&#xD;54.2,65.763&#xD;54.3,65.8395&#xD;54.4,65.916&#xD;54.5,65.99249999999999&#xD;54.6,66.069&#xD;54.7,66.1455&#xD;54.8,66.22200000000001&#xD;54.9,66.2985&#xD;55,66.375&#xD;55.1,66.4515&#xD;55.2,66.528&#xD;55.3,66.6045&#xD;55.4,66.68100000000001&#xD;55.5,66.75750000000001&#xD;55.6,66.834&#xD;55.7,66.9105&#xD;55.8,66.987&#xD;55.9,67.0635&#xD;56,67.14000000000001&#xD;56.1,67.21650000000001&#xD;56.2,67.293&#xD;56.3,67.4195&#xD;56.4,67.496&#xD;56.5,67.5725&#xD;56.6,67.649&#xD;56.7,67.7255&#xD;56.8,67.80199999999999&#xD;56.9,67.8785&#xD;57,67.955&#xD;57.1,68.0315&#xD;57.2,68.10799999999999&#xD;57.3,68.18449999999999&#xD;57.4,68.261&#xD;57.5,68.33749999999999&#xD;57.6,68.41399999999999&#xD;57.7,68.4905&#xD;57.8,68.567&#xD;57.9,68.64349999999999&#xD;58,68.72&#xD;58.1,68.7965&#xD;58.2,68.873&#xD;58.3,68.9495&#xD;58.4,69.026&#xD;58.5,69.10249999999999&#xD;58.6,69.179&#xD;58.7,69.2555&#xD;58.8,69.332&#xD;58.9,69.40566666666666&#xD;59,69.45666666666666&#xD;59.1,69.51149999999998&#xD;59.2,69.588&#xD;59.3,69.6645&#xD;59.4,69.741&#xD;59.5,69.8175&#xD;59.6,69.89399999999999&#xD;59.7,69.9705&#xD;59.8,70.047&#xD;59.9,70.1235&#xD;60,70.2&#xD;60.1,70.251&#xD;60.2,70.303&#xD;60.3,70.37950000000001&#xD;60.4,70.456&#xD;60.5,70.5325&#xD;60.6,70.60900000000001&#xD;60.7,70.6855&#xD;60.8,70.762&#xD;60.9,70.83850000000001&#xD;61,70.915&#xD;61.1,70.9915&#xD;61.2,71.06800000000001&#xD;61.3,71.12966666666667&#xD;61.4,71.18066666666667&#xD;61.5,71.24749999999999&#xD;61.6,71.324&#xD;61.7,71.4005&#xD;61.8,71.477&#xD;61.9,71.5535&#xD;62,71.63&#xD;62.1,71.70649999999999&#xD;62.2,71.783&#xD;62.3,71.8595&#xD;62.4,71.936&#xD;62.5,72.00833333333334&#xD;62.6,72.05933333333334&#xD;62.7,72.1155&#xD;62.8,72.19200000000001&#xD;62.9,72.2685&#xD;63,72.345&#xD;63.1,72.42150000000001&#xD;63.2,72.498&#xD;63.3,72.57450000000001&#xD;63.4,72.65100000000001&#xD;63.5,72.7275&#xD;63.6,72.80266666666667&#xD;63.7,72.85366666666667&#xD;63.8,72.907&#xD;63.9,72.98349999999999&#xD;64,73.05999999999999&#xD;64.1,73.1365&#xD;64.2,73.213&#xD;64.3,73.2895&#xD;64.4,73.366&#xD;64.5,73.44250000000001&#xD;64.6,73.519&#xD;64.7,73.5955&#xD;64.8,73.672&#xD;64.9,73.73233333333334&#xD;65,73.78333333333333&#xD;65.1,73.8515&#xD;65.2,73.928&#xD;65.3,74.0045&#xD;65.4,74.08099999999999&#xD;65.5,74.1575&#xD;65.6,74.23400000000001&#xD;65.7,74.3105&#xD;65.8,74.387&#xD;65.9,74.4635&#xD;66,74.52666666666667&#xD;66.1,74.57766666666666&#xD;66.2,74.643&#xD;66.3,74.71950000000001&#xD;66.4,74.796&#xD;66.5,74.8725&#xD;66.6,74.94900000000001&#xD;66.7,75.05100000000002&#xD;66.8,75.152&#xD;66.9,75.257&#xD;67,75.355&#xD;67.1,75.46300000000001&#xD;67.2,75.608&#xD;67.3,75.68450000000001&#xD;67.4,75.811&#xD;67.5,75.8875&#xD;67.6,76.01400000000001&#xD;67.7,76.0905&#xD;67.8,76.23400000000001&#xD;67.9,76.34350000000002&#xD;68,76.44000000000003&#xD;68.1,76.54650000000001&#xD;68.2,76.64600000000002&#xD;68.3,76.799&#xD;68.4,76.876&#xD;68.5,77.00250000000001&#xD;68.6,77.07900000000001&#xD;68.7,77.21100000000003&#xD;68.8,77.33200000000001&#xD;68.9,77.41699999999999&#xD;69,77.535&#xD;69.1,77.62299999999999&#xD;69.2,77.73799999999999&#xD;69.3,77.82899999999998&#xD;69.4,77.98199999999999&#xD;69.5,78.06749999999998&#xD;69.6,78.18799999999999&#xD;69.7,78.2705&#xD;69.8,78.39399999999999&#xD;69.9,78.5235&#xD;70,78.6&#xD;70.1,78.7265&#xD;70.2,78.806&#xD;70.3,78.95899999999999&#xD;70.4,79.056&#xD;70.5,79.16499999999999&#xD;70.6,79.31799999999998&#xD;70.7,79.47099999999999&#xD;70.8,79.62400000000001&#xD;70.9,79.77700000000002&#xD;71,80.03&#xD;71.1,80.183&#xD;71.2,80.436&#xD;71.3,80.589&#xD;71.4,80.742&#xD;71.5,80.895&#xD;71.6,81.148&#xD;71.7,81.30100000000002&#xD;71.8,81.45400000000001&#xD;71.9,81.70700000000001&#xD;72,81.86&#xD;72.1,82.11300000000001&#xD;72.2,82.266&#xD;72.3,82.41900000000001&#xD;72.4,82.572&#xD;72.5,82.82500000000002&#xD;72.6,82.97800000000001&#xD;72.7,83.131&#xD;72.8,83.38399999999999&#xD;72.9,83.53699999999999&#xD;73,83.68999999999998&#xD;73.1,83.943&#xD;73.2,84.09599999999998&#xD;73.3,84.249&#xD;73.4,84.50199999999998&#xD;73.5,84.655&#xD;73.6,84.80799999999999&#xD;73.7,85.06099999999999&#xD;73.8,85.214&#xD;73.9,85.36699999999999&#xD;74,85.61999999999999&#xD;74.1,85.773&#xD;74.2,85.926&#xD;74.3,86.179&#xD;74.4,86.33199999999998&#xD;74.5,86.48499999999999&#xD;74.6,86.738&#xD;74.7,86.891&#xD;74.8,87.044&#xD;74.9,87.197&#xD;75,87.45&#xD;75.1,87.5515&#xD;75.2,87.628&#xD;75.3,87.7045&#xD;75.4,87.78099999999999&#xD;75.5,87.85749999999999&#xD;75.6,87.934&#xD;75.7,88.01050000000001&#xD;75.8,88.087&#xD;75.9,88.1635&#xD;76,88.24000000000001&#xD;76.1,88.3165&#xD;76.2,88.393&#xD;76.3,88.4695&#xD;76.4,88.54599999999999&#xD;76.5,88.6225&#xD;76.6,88.699&#xD;76.7,88.7755&#xD;76.8,88.852&#xD;76.9,88.9285&#xD;77,89.00333333333334&#xD;77.1,89.05433333333335&#xD;77.2,89.108&#xD;77.3,89.18450000000001&#xD;77.4,89.261&#xD;77.5,89.3375&#xD;77.6,89.414&#xD;77.7,89.4905&#xD;77.8,89.567&#xD;77.9,89.64349999999999&#xD;78,89.72&#xD;78.1,89.79650000000001&#xD;78.2,89.873&#xD;78.3,89.9495&#xD;78.4,90.02600000000001&#xD;78.5,90.1025&#xD;78.6,90.179&#xD;78.7,90.25550000000001&#xD;78.8,90.332&#xD;78.9,90.4085&#xD;79,90.485&#xD;79.1,90.5615&#xD;79.2,90.638&#xD;79.3,90.7145&#xD;79.4,90.79100000000001&#xD;79.5,90.8675&#xD;79.6,90.944&#xD;79.7,91.0205&#xD;79.8,91.09700000000001&#xD;79.9,91.1735&#xD;80,91.25&#xD;80.1,91.32650000000001&#xD;80.2,91.403&#xD;80.3,91.4795&#xD;80.4,91.55600000000001&#xD;80.5,91.63250000000002&#xD;80.6,91.70900000000002&#xD;80.7,91.78550000000001&#xD;80.8,91.86200000000001&#xD;80.9,91.9385&#xD;81,92.015&#xD;81.1,92.09149999999998&#xD;81.2,92.14533333333333&#xD;81.3,92.19633333333333&#xD;81.4,92.27099999999999&#xD;81.5,92.3475&#xD;81.6,92.42399999999999&#xD;81.7,92.50049999999999&#xD;81.8,92.57699999999998&#xD;81.9,92.65349999999998&#xD;82,92.72999999999999&#xD;82.1,92.8065&#xD;82.2,92.883&#xD;82.3,92.95949999999999&#xD;82.4,93.036&#xD;82.5,93.1125&#xD;82.6,93.189&#xD;82.7,93.2655&#xD;82.8,93.342&#xD;82.9,93.4185&#xD;83,93.49499999999999&#xD;83.1,93.5715&#xD;83.2,93.648&#xD;83.3,93.71225&#xD;83.4,93.7505&#xD;83.5,93.78875000000001&#xD;83.6,93.81800000000001&#xD;83.7,93.8435&#xD;83.8,93.869&#xD;83.9,93.8945&#xD;84,93.92&#xD;84.1,93.94550000000001&#xD;84.2,93.971&#xD;84.3,93.9965&#xD;84.4,94.022&#xD;84.5,94.0475&#xD;84.6,94.07300000000001&#xD;84.7,94.0985&#xD;84.8,94.1288&#xD;84.9,94.1594&#xD;85,94.19&#xD;85.1,94.21716666666666&#xD;85.2,94.24266666666666&#xD;85.3,94.26816666666666&#xD;85.4,94.29366666666667&#xD;85.5,94.31916666666666&#xD;85.6,94.34466666666665&#xD;85.7,94.37016666666668&#xD;85.8,94.39566666666667&#xD;85.9,94.42116666666666&#xD;86,94.44666666666667&#xD;86.1,94.47216666666667&#xD;86.2,94.49766666666667&#xD;86.3,94.52316666666667&#xD;86.4,94.54866666666666&#xD;86.5,94.57416666666667&#xD;86.6,94.59966666666666&#xD;86.7,94.62516666666667&#xD;86.8,94.65066666666667&#xD;86.9,94.67616666666666&#xD;87,94.70166666666667&#xD;87.1,94.72716666666666&#xD;87.2,94.75266666666667&#xD;87.3,94.77816666666666&#xD;87.4,94.80366666666666&#xD;87.5,94.82916666666667&#xD;87.6,94.85466666666666&#xD;87.7,94.88016666666667&#xD;87.8,94.9068&#xD;87.9,94.9374&#xD;88,94.968&#xD;88.1,94.9986&#xD;88.2,95.02433333333333&#xD;88.3,95.04983333333334&#xD;88.4,95.07533333333333&#xD;88.5,95.10083333333333&#xD;88.6,95.12633333333333&#xD;88.7,95.15183333333333&#xD;88.8,95.17733333333334&#xD;88.9,95.20283333333333&#xD;89,95.22833333333332&#xD;89.1,95.25383333333333&#xD;89.2,95.27933333333333&#xD;89.3,95.30483333333333&#xD;89.4,95.33033333333333&#xD;89.5,95.35583333333332&#xD;89.6,95.38133333333333&#xD;89.7,95.40683333333332&#xD;89.8,95.43233333333333&#xD;89.9,95.45783333333334&#xD;90,95.48333333333333&#xD;90.1,95.50883333333334&#xD;90.2,95.53433333333334&#xD;90.3,95.55983333333333&#xD;90.4,95.58533333333334&#xD;90.5,95.61083333333333&#xD;90.6,95.63633333333334&#xD;90.7,95.66183333333333&#xD;90.8,95.68733333333333&#xD;90.9,95.7154&#xD;91,95.74600000000001&#xD;91.1,95.7766&#xD;91.2,95.80600000000001&#xD;91.3,95.8315&#xD;91.4,95.857&#xD;91.5,95.88250000000001&#xD;91.6,95.908&#xD;91.7,95.93350000000001&#xD;91.8,95.959&#xD;91.9,95.9845&#xD;92,96.01&#xD;92.1,96.0355&#xD;92.2,96.061&#xD;92.3,96.0865&#xD;92.4,96.112&#xD;92.5,96.1375&#xD;92.6,96.163&#xD;92.7,96.1885&#xD;92.8,96.214&#xD;92.9,96.23949999999999&#xD;93,96.265&#xD;93.1,96.2905&#xD;93.2,96.316&#xD;93.3,96.34150000000001&#xD;93.4,96.367&#xD;93.5,96.39250000000001&#xD;93.6,96.418&#xD;93.7,96.4435&#xD;93.8,96.469&#xD;93.9,96.49449999999999&#xD;94,96.524&#xD;94.1,96.5546&#xD;94.2,96.5852&#xD;94.3,96.61316666666667&#xD;94.4,96.63866666666667&#xD;94.5,96.66416666666666&#xD;94.6,96.68966666666667&#xD;94.7,96.71516666666666&#xD;94.8,96.74066666666667&#xD;94.9,96.76616666666666&#xD;95,96.79166666666666&#xD;95.1,96.81716666666667&#xD;95.2,96.84266666666666&#xD;95.3,96.86816666666667&#xD;95.4,96.89366666666666&#xD;95.5,96.91916666666665&#xD;95.6,96.94466666666666&#xD;95.7,96.97016666666667&#xD;95.8,96.99566666666666&#xD;95.9,97.0635&#xD;96,97.14000000000001&#xD;96.1,97.21650000000001&#xD;96.2,97.293&#xD;96.3,97.34633333333333&#xD;96.4,97.39733333333334&#xD;96.5,97.4725&#xD;96.6,97.54899999999999&#xD;96.7,97.62549999999999&#xD;96.8,97.702&#xD;96.9,97.7785&#xD;97,97.85499999999999&#xD;97.1,97.9315&#xD;97.2,98.008&#xD;97.3,98.0845&#xD;97.4,98.14066666666666&#xD;97.5,98.19166666666666&#xD;97.6,98.264&#xD;97.7,98.3405&#xD;97.8,98.417&#xD;97.9,98.4935&#xD;98,98.57&#xD;98.1,98.64649999999999&#xD;98.2,98.72299999999998&#xD;98.3,98.7995&#xD;98.4,98.85066666666667&#xD;98.5,98.90249999999999&#xD;98.6,98.979&#xD;98.7,99.0555&#xD;98.8,99.13199999999999&#xD;98.9,99.20849999999999&#xD;99,99.285&#xD;99.1,99.3615&#xD;99.2,99.438&#xD;99.3,99.5145&#xD;99.4,99.59100000000001&#xD;99.5,99.64500000000001&#xD;99.6,99.696&#xD;99.7,99.7705&#xD;99.8,99.8235&#xD;99.9,99.86175&#xD;100,100</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ colors"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ colors</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>128</l><l>128</l><l>128</l></list></block><block s="reportNewList"><list><l>192</l><l>192</l><l>192</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>85</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>70</l><l>5</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>140</l><l>60</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>114</l><l>93</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>30</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>50</l><l>50</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>64</l></list></block><block s="reportNewList"><list><l>80</l><l>0</l><l>90</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>0</l></list></block></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ brights"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ brights</l><block s="reportNewList"><list><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block><block s="reportNewList"><list><l>170</l><l>20</l><l>0</l></list></block><block s="reportNewList"><list><l>139</l><l>69</l><l>19</l></list></block><block s="reportNewList"><list><l>170</l><l>90</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>127</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>160</l><l>0</l></list></block><block s="reportNewList"><list><l>255</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>190</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>0</l></list></block><block s="reportNewList"><list><l>0</l><l>240</l><l>200</l></list></block><block s="reportNewList"><list><l>0</l><l>255</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>127</l><l>255</l></list></block><block s="reportNewList"><list><l>0</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>60</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>128</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>255</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>64</l></list></block><block s="reportNewList"><list><l>255</l><l>0</l><l>0</l></list></block></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ pivots"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ pivots</l><block s="reportNewList"><list><l>0</l><l>5.8</l><l>12.5</l><l>18</l><l>25</l><l>30.5</l><l>37.5</l><l>44.5</l><l>50</l><l>59</l><l>62.5</l><l>69</l><l>75</l><l>79.25</l><l>87.5</l><l>93.75</l><l>97</l><l>100</l></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ HSV brights"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ HSV brights</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>0,1,1&#xD;0.0196078431372549,1,0.6666666666666666&#xD;0.06944444444444443,0.8633093525179856,0.5450980392156862&#xD;0.08823529411764708,1,0.6666666666666666&#xD;0.08300653594771241,1,1&#xD;0.10457516339869281,1,1&#xD;0.16666666666666666,1,1&#xD;0.20915032679738563,1,1&#xD;0.3333333333333333,1,1&#xD;0.47222222222222227,1,0.9411764705882353&#xD;0.5,1,1&#xD;0.5836601307189543,1,1&#xD;0.6666666666666666,1,1&#xD;0.7058823529411765,1,1&#xD;0.7503267973856209,1,1&#xD;0.8333333333333334,1,1&#xD;0.9581699346405229,1,1&#xD;1,1,1</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ HSL brights"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ HSL brights</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>0,100,50&#xD;1.9607843137254901,100,33.33333333333333&#xD;6.944444444444444,75.94936708860757,30.980392156862745&#xD;8.823529411764708,100,33.33333333333333&#xD;8.30065359477124,100,50&#xD;10.457516339869281,100,50&#xD;16.666666666666664,100,50&#xD;20.915032679738562,100,50&#xD;33.33333333333333,100,50&#xD;47.22222222222223,100,50&#xD;50,100,50&#xD;58.36601307189543,100,50&#xD;66.66666666666666,100,50&#xD;70.58823529411765,100,50&#xD;75.0326797385621,100,50&#xD;83.33333333333334,100,50&#xD;95.81699346405229,100,50&#xD;100,100,50</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ HSV colors"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ HSV colors</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>0,0,0&#xD;0,0,50.19607843137255&#xD;0,0,75.29411764705883&#xD;0,0,100&#xD;0,100,100&#xD;0,100,33.33333333333333&#xD;6.944444444444444,86.33093525179856,54.509803921568626&#xD;1.1904761904761905,100,27.450980392156865&#xD;8.30065359477124,100,100&#xD;7.142857142857142,100,54.90196078431373&#xD;16.666666666666664,100,100&#xD;13.596491228070173,100,44.70588235294118&#xD;33.33333333333333,100,100&#xD;33.33333333333333,100,11.76470588235294&#xD;50,100,100&#xD;50,100,19.607843137254903&#xD;66.66666666666666,100,100&#xD;66.66666666666666,100,25.098039215686274&#xD;81.4814814814815,100,35.294117647058826&#xD;83.33333333333334,100,100&#xD;100,0,0</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ HSL colors"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ HSL colors</l><block s="reportTextSplit"><custom-block s="multiline %mlt"><l>0,0,0&#xD;0,0,50.19607843137255&#xD;0,0,75.29411764705883&#xD;0,0,100&#xD;0,100,50&#xD;0,100,16.666666666666664&#xD;6.944444444444444,75.94936708860757,30.980392156862745&#xD;1.1904761904761905,100,13.725490196078432&#xD;8.30065359477124,100,50&#xD;7.142857142857142,100,27.450980392156865&#xD;16.666666666666664,100,50&#xD;13.596491228070173,100,22.35294117647059&#xD;33.33333333333333,100,50&#xD;33.33333333333333,100,5.88235294117647&#xD;50,100,50&#xD;50,100,9.803921568627452&#xD;66.66666666666666,100,50&#xD;66.66666666666666,100,12.549019607843137&#xD;81.4814814814815,100,17.647058823529413&#xD;83.33333333333334,100,50&#xD;0,0,0</l></custom-block><l><option>csv</option></l></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ dimension names"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ dimension names</l><block s="reportNewList"><list><l>color</l><l>color number</l><l>crayon</l><l>fair hue</l><l>size</l><l>transparency</l><l>X11/W3C name</l><l>fair saturation (HSL)</l><l>fair lightness</l><l>fair HSL vector</l><l>fair saturation (HSV)</l><l>fair value (brightness)</l><l>fair HSV vector</l><l>hue</l><l>saturation (HSL)</l><l>lightness</l><l>HSL vector</l><l>saturation (HSV)</l><l>value (brightness)</l><l>HSV vector</l><l>red</l><l>green</l><l>blue</l><l>RGB(A) vector</l><l>RGB(A) hex</l></list></block></block></script></block><block s="doIf"><block s="reportNot"><block s="reportIsA"><block var="✐ dimension dispatch"/><l><option>list</option></l></block></block><script><block s="doSetVar"><l>✐ dimension dispatch</l><block s="reportNewList"><list><block s="reifyScript"><script><custom-block s="✐ set pen to color %obj %l"><l/><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to color number %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to crayon %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair hue %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen size to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen transparency to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to X11 name %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair saturation (HSL) %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair lightness %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair HSL vector %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair saturation (HSV) %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair value (brightness) %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to fair HSV vector %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to hue %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to HSL saturation %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to lightness %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to HSL vector %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen saturation (HSV) to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen value (brightness) to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to HSV vector %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen red to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen green to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen blue to %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to RGB vector %s %l"><l></l><l/></custom-block></script><list></list></block><block s="reifyScript"><script><custom-block s="✐ set pen to RGB hex %s %l"><l></l><l/></custom-block></script><list></list></block></list></block></block></script></block></script><scripts><script x="317.1142578125" y="21796.466666666656"><block s="reportTextSplit"><custom-block s="multiline %mlt"><l></l></custom-block><l><option>csv</option></l></block></script></scripts></block-definition><block-definition s="✐ crayon number of color %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>table entry</l></list></block><block s="doSetVar"><l>table entry</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportAnd"><block s="reportIsA"><block var="color"/><l><option>costume</option></l></block><block s="reportEquals"><custom-block s="✐ RGB from color %s"><block var="color"/></custom-block><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><l/></block></block></block><block s="reportEquals"><block var="color"/><block s="reportListItem"><l>4</l><l/></block></block></block></autolambda><list></list></block><block var="✐ crayon colors"/></block></block><block s="doIf"><block s="reportIsA"><block var="table entry"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListItem"><l>5</l><block var="table entry"/></block></block></script></block><block s="doReport"><l>not a crayon</l></block></script></block-definition><block-definition s="✐ RGB from color %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="color"/><l><option>list</option></l></block><script><block s="doReport"><block var="color"/></block></script><script><block s="doReport"><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block s="reportListItem"><l>1</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="color"/></block></block></block></block></script></block></script></block-definition><block-definition s="✐ X11 name of color %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>table entry</l></list></block><block s="doSetVar"><l>table entry</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportAnd"><block s="reportIsA"><block var="color"/><l><option>costume</option></l></block><block s="reportEquals"><custom-block s="✐ RGB from color %s"><block var="color"/></custom-block><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><l/></block></block></block><block s="reportEquals"><block var="color"/><block s="reportListItem"><l>4</l><l/></block></block></block></autolambda><list></list></block><block var="✐ X11"/></block></block><block s="doIf"><block s="reportIsA"><block var="table entry"/><l><option>list</option></l></block><script><block s="doReport"><block s="reportListItem"><l>4</l><block var="table entry"/></block></block></script></block><block s="doReport"><l>not an X11 color</l></block></script></block-definition><block-definition s="✐ make fair hue table" type="command" category="pen"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>hues</l><l>fair hues</l><l>hue table index</l><l>fair hue ceiling</l><l>bottom hue</l></list></block><block s="doSetVar"><l>hues</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l></list></block></list></block></block><block s="doFor"><l>fairhue10</l><l>1</l><l>1000</l><script><custom-block s="$brush set pen %s to %s %mult%s"><l>fair hue</l><block s="reportQuotient"><block var="fairhue10"/><l>10</l></block><list><l></l></list></custom-block><block s="doIf"><block s="reportGreaterThanOrEquals"><block s="reportProduct"><l>10</l><block s="getPenAttribute"><l><option>hue</option></l></block></block><block s="reportListItem"><l>1</l><block s="reportListItem"><l><option>last</option></l><block var="hues"/></block></block></block><script><block s="doAddToList"><block s="reportNewList"><list><block s="reportProduct"><l>10</l><block s="getPenAttribute"><l><option>hue</option></l></block></block><block var="fairhue10"/></list></block><block var="hues"/></block></script></block></script></block><block s="doReplaceInList"><l>1</l><block s="reportListItem"><l><option>last</option></l><block var="hues"/></block><l>1000</l></block><block s="doSetVar"><l>hues</l><block s="reportListAttribute"><l><option>columns</option></l><block s="reportCONS"><block s="reportNumbers"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="hues"/></block></block><block s="reportListAttribute"><l><option>columns</option></l><block var="hues"/></block></block></block></block><block s="doSetVar"><l>fair hues</l><block s="reportNewList"><list><block s="reportNewList"><list><l>0</l><l>0</l></list></block></list></block></block><block s="doFor"><l>hue10</l><l>1</l><l>1000</l><script><block s="doSetVar"><l>fair hue ceiling</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportGreaterThanOrEquals"><block s="reportListItem"><l>2</l><l/></block><block var="hue10"/></block></autolambda><list></list></block><block var="hues"/></block></block><block s="doSetVar"><l>bottom hue</l><block s="reportListItem"><block s="reportDifference"><block s="reportListItem"><l>1</l><block var="fair hue ceiling"/></block><l>1</l></block><block var="hues"/></block></block><block s="doAddToList"><block s="reportNewList"><list><block var="hue10"/><block s="reportSum"><block s="reportListItem"><l>3</l><block var="bottom hue"/></block><block s="reportQuotient"><block s="reportDifference"><block var="hue10"/><block s="reportListItem"><l>2</l><block var="bottom hue"/></block></block><block s="reportDifference"><block s="reportListItem"><l>2</l><block var="fair hue ceiling"/></block><block s="reportListItem"><l>2</l><block var="bottom hue"/></block></block></block></block></list></block><block var="fair hues"/></block></script></block><block s="doReplaceInList"><l>2</l><block s="reportListItem"><l><option>last</option></l><block var="fair hues"/></block><l>1000</l></block><block s="doSetVar"><l>✐ fair hue table</l><block s="reportQuotient"><block var="fair hues"/><l>10</l></block></block></script></block-definition><block-definition s="✐ include transparency %&apos;rgb&apos; %&apos;transparency&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block s="reportIsA"><block var="transparency"/><l><option>number</option></l></block><script><block s="doSetVar"><l>transparency</l><block s="reportQuotient"><block s="reportProduct"><block s="reportDifference"><l>100</l><block var="transparency"/></block><l>255</l></block><l>100</l></block></block></script><script><block s="doSetVar"><l>transparency</l><l>255</l></block></script></block><block s="doReport"><block s="reportNewCostume"><block s="reportNewList"><list><block s="reportConcatenatedLists"><list><block var="rgb"/><block s="reportNewList"><list><block var="transparency"/></list></block></list></block></list></block><l>1</l><l>1</l></block></block></script></block-definition><block-definition s="✐ extract rgba values %&apos;value&apos; %&apos;transparency&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%upvar"></input></inputs><script><block s="doDeclareVariables"><list><l>red</l><l>green</l><l>blue</l></list></block><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>costume</option></l></block><script><block s="doSetVar"><l>value</l><block s="reportListItem"><l>1</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="value"/></block></block></block></script></block><block s="doIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="value"/></block><l><option>number</option></l></block><script><block s="doSetVar"><l>red</l><block s="reportListItem"><l>1</l><block var="value"/></block></block><block s="doSetVar"><l>green</l><block s="reportListItem"><l>2</l><block var="value"/></block></block><block s="doSetVar"><l>blue</l><block s="reportListItem"><l>3</l><block var="value"/></block></block><block s="doSetVar"><l>transparency</l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script><script><block s="doSetVar"><l>red</l><block s="reportListItem"><l>1</l><block s="reportListItem"><l>1</l><block var="value"/></block></block></block><block s="doSetVar"><l>green</l><block s="reportListItem"><l>2</l><block s="reportListItem"><l>1</l><block var="value"/></block></block></block><block s="doSetVar"><l>blue</l><block s="reportListItem"><l>3</l><block s="reportListItem"><l>1</l><block var="value"/></block></block></block><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block s="reportListItem"><l>1</l><block var="value"/></block></block><l>3</l></block><script><block s="doSetVar"><l>transparency</l><block s="reportListItem"><l>4</l><block s="reportListItem"><l>1</l><block var="value"/></block></block></block></script><script><block s="doSetVar"><l>transparency</l><block s="reportListItem"><l>2</l><block var="value"/></block></block></script></block></script></block><block s="doReport"><block s="reportNewList"><list><block var="red"/><block var="green"/><block var="blue"/></list></block></block></script></block-definition><block-definition s="✐ RGB from HSV %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>hue</l><l>saturation</l><l>value</l><l>chroma</l><l>hue prime</l><l>2nd largest component</l><l>red</l><l>green</l><l>blue</l><l>smallest component</l><l>rgb</l></list></block><block s="doSetVar"><l>hue</l><block s="reportQuotient"><block s="reportProduct"><block s="reportModulus"><block s="reportListItem"><l>1</l><block var="color"/></block><l>100</l></block><l>360</l></block><l>100</l></block></block><block s="doSetVar"><l>saturation</l><block s="reportQuotient"><block s="reportMin"><block s="reportMax"><block s="reportListItem"><l>2</l><block var="color"/></block><l>0</l></block><l>100</l></block><l>100</l></block></block><block s="doSetVar"><l>value</l><block s="reportQuotient"><block s="reportMin"><block s="reportMax"><block s="reportListItem"><l>3</l><block var="color"/></block><l>0</l></block><l>100</l></block><l>100</l></block></block><block s="doSetVar"><l>chroma</l><block s="reportProduct"><block var="value"/><block var="saturation"/></block></block><block s="doSetVar"><l>hue prime</l><block s="reportQuotient"><block var="hue"/><l>60</l></block></block><block s="doSetVar"><l>2nd largest component</l><block s="reportProduct"><block var="chroma"/><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block s="reportModulus"><block var="hue prime"/><l>2</l></block><l>1</l></block></block></block></block></block><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>1</l></block><script><block s="doSetVar"><l>red</l><block var="chroma"/></block><block s="doSetVar"><l>green</l><block var="2nd largest component"/></block><block s="doSetVar"><l>blue</l><l>0</l></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>2</l></block><script><block s="doSetVar"><l>red</l><block var="2nd largest component"/></block><block s="doSetVar"><l>green</l><block var="chroma"/></block><block s="doSetVar"><l>blue</l><l>0</l></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>3</l></block><script><block s="doSetVar"><l>red</l><l>0</l></block><block s="doSetVar"><l>green</l><block var="chroma"/></block><block s="doSetVar"><l>blue</l><block var="2nd largest component"/></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>4</l></block><script><block s="doSetVar"><l>red</l><l>0</l></block><block s="doSetVar"><l>green</l><block var="2nd largest component"/></block><block s="doSetVar"><l>blue</l><block var="chroma"/></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>5</l></block><script><block s="doSetVar"><l>red</l><block var="2nd largest component"/></block><block s="doSetVar"><l>green</l><l>0</l></block><block s="doSetVar"><l>blue</l><block var="chroma"/></block></script><script><block s="doSetVar"><l>red</l><block var="chroma"/></block><block s="doSetVar"><l>green</l><l>0</l></block><block s="doSetVar"><l>blue</l><block var="2nd largest component"/></block></script></block></script></block></script></block></script></block></script></block><block s="doSetVar"><l>smallest component</l><block s="reportDifference"><block var="value"/><block var="chroma"/></block></block><block s="doSetVar"><l>rgb</l><block s="reportSum"><block s="reportNewList"><list><block var="red"/><block var="green"/><block var="blue"/></list></block><block var="smallest component"/></block></block><block s="doReport"><block s="reportProduct"><block var="rgb"/><l>255</l></block></block></script></block-definition><block-definition s="✐ RGB from HSL %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>hue</l><l>saturation</l><l>lightness</l><l>chroma</l><l>hue prime</l><l>2nd largest component</l><l>red</l><l>green</l><l>blue</l><l>smallest component</l><l>rgb</l></list></block><block s="doSetVar"><l>hue</l><block s="reportQuotient"><block s="reportProduct"><block s="reportModulus"><block s="reportListItem"><l>1</l><block var="color"/></block><l>100</l></block><l>360</l></block><l>100</l></block></block><block s="doSetVar"><l>saturation</l><block s="reportQuotient"><block s="reportMin"><block s="reportMax"><block s="reportListItem"><l>2</l><block var="color"/></block><l>0</l></block><l>100</l></block><l>100</l></block></block><block s="doSetVar"><l>lightness</l><block s="reportQuotient"><block s="reportMin"><block s="reportMax"><block s="reportListItem"><l>3</l><block var="color"/></block><l>0</l></block><l>100</l></block><l>100</l></block></block><block s="doSetVar"><l>chroma</l><block s="reportProduct"><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block s="reportProduct"><l>2</l><block var="lightness"/></block><l>1</l></block></block></block><block var="saturation"/></block></block><block s="doSetVar"><l>hue prime</l><block s="reportQuotient"><block var="hue"/><l>60</l></block></block><block s="doSetVar"><l>2nd largest component</l><block s="reportProduct"><block var="chroma"/><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block s="reportModulus"><block var="hue prime"/><l>2</l></block><l>1</l></block></block></block></block></block><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>1</l></block><script><block s="doSetVar"><l>red</l><block var="chroma"/></block><block s="doSetVar"><l>green</l><block var="2nd largest component"/></block><block s="doSetVar"><l>blue</l><l>0</l></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>2</l></block><script><block s="doSetVar"><l>red</l><block var="2nd largest component"/></block><block s="doSetVar"><l>green</l><block var="chroma"/></block><block s="doSetVar"><l>blue</l><l>0</l></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>3</l></block><script><block s="doSetVar"><l>red</l><l>0</l></block><block s="doSetVar"><l>green</l><block var="chroma"/></block><block s="doSetVar"><l>blue</l><block var="2nd largest component"/></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>4</l></block><script><block s="doSetVar"><l>red</l><l>0</l></block><block s="doSetVar"><l>green</l><block var="2nd largest component"/></block><block s="doSetVar"><l>blue</l><block var="chroma"/></block></script><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="hue prime"/><l>5</l></block><script><block s="doSetVar"><l>red</l><block var="2nd largest component"/></block><block s="doSetVar"><l>green</l><l>0</l></block><block s="doSetVar"><l>blue</l><block var="chroma"/></block></script><script><block s="doSetVar"><l>red</l><block var="chroma"/></block><block s="doSetVar"><l>green</l><l>0</l></block><block s="doSetVar"><l>blue</l><block var="2nd largest component"/></block></script></block></script></block></script></block></script></block></script></block><block s="doSetVar"><l>smallest component</l><block s="reportDifference"><block var="lightness"/><block s="reportQuotient"><block var="chroma"/><l>2</l></block></block></block><block s="doSetVar"><l>rgb</l><block s="reportSum"><block s="reportNewList"><list><block var="red"/><block var="green"/><block var="blue"/></list></block><block var="smallest component"/></block></block><block s="doReport"><block s="reportProduct"><block var="rgb"/><l>255</l></block></block></script></block-definition><block-definition s="✐ color number near color %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>index</l><l>hue</l><l>saturation</l><l>lightness</l><l>hsl</l></list></block><block s="doSetVar"><l>color</l><custom-block s="✐ extract rgba values %l %upvar"><block var="color"/><l>transparency</l></custom-block></block><block s="doSetVar"><l>hsl</l><custom-block s="✐ HSL/HSV (hsl? %b ) from RGB %s"><l><bool>true</bool></l><block var="color"/></custom-block></block><block s="doSetVar"><l>hue</l><block s="reportListItem"><l>1</l><block var="hsl"/></block></block><block s="doSetVar"><l>saturation</l><block s="reportListItem"><l>2</l><block var="hsl"/></block></block><block s="doSetVar"><l>lightness</l><block s="reportListItem"><l>3</l><block var="hsl"/></block></block><block s="doIf"><block s="reportLessThan"><block var="saturation"/><l>25</l><comment w="107.33333333333333" collapsed="true">Nearly grayscale.</comment></block><script><block s="doIfElse"><block s="reportLessThanOrEquals"><block var="lightness"/><l>50</l></block><script><block s="doReport"><block s="reportQuotient"><block var="lightness"/><l>10</l></block></block></script><script><block s="doReport"><block s="reportProduct"><block s="reportSum"><l>5</l><block s="reportQuotient"><block s="reportDifference"><block var="lightness"/><l>50</l></block><l>5</l></block></block><block s="reportQuotient"><l>14</l><l>15</l></block></block></block></script></block></script></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>2</l><comment w="70.66666666666667" collapsed="true">Red family</comment></block><script><block s="doIfElse"><block s="reportGreaterThanOrEquals"><block var="lightness"/><l>50</l></block><script><block s="doReport"><block s="reportSum"><l>14</l><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><l>100</l><block var="lightness"/></block><block s="reportDifference"><l>100</l><l>50</l></block></block><l>6</l></block></block></block></script><script><block s="doIfElse"><block s="reportGreaterThanOrEquals"><block var="lightness"/><l>16.6</l></block><script><block s="doReport"><block s="reportSum"><l>20</l><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><l>50</l><block var="lightness"/></block><block s="reportDifference"><l>50</l><l>16.6</l></block></block><l>5</l></block></block></block></script><script><block s="doReport"><l>25</l></block></script></block></script></block></script></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>8.7</l><comment w="137.33333333333334" collapsed="true">Brown/orange family</comment></block><script><block s="doIfElse"><block s="reportLessThan"><block s="reportDifference"><block var="lightness"/><block s="reportDifference"><l>100</l><block var="saturation"/></block></block><l>15</l><comment w="62" collapsed="true">brown</comment></block><script><block s="doIfElse"><block s="reportLessThan"><block var="hue"/><l>0.9</l></block><script><block s="doReport"><block s="reportSum"><l>25</l><block s="reportQuotient"><block s="reportDifference"><l>100</l><block var="saturation"/></block><l>5.75</l></block></block></block></script><script><block s="doReport"><block s="reportDifference"><l>35</l><block s="reportQuotient"><block s="reportDifference"><l>100</l><block var="saturation"/></block><l>5.75</l></block></block></block></script></block></script><script><block s="doReport"><custom-block s="✐ color number in %n family, from H: %n S: %n L: %n %br rising hue: %n %br rising min lightness: %n falling min lightness: %n"><l>40</l><block var="hue"/><block var="saturation"/><block var="lightness"/><l>7</l><l>14</l><l>28</l></custom-block></block></script></block></script></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>17</l><comment w="75.33333333333333" collapsed="true">yellow</comment></block><script><block s="doIf"><block s="reportLessThan"><block s="reportCombine"><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block var="color"/><block s="reportNewList"><list><l>114</l><l>93</l><l>0</l></list></block></block></block><block s="reifyReporter"><autolambda><block s="reportSum"><l></l><l></l></block></autolambda><list></list></block></block><l>45</l></block><script><block s="doReport"><l>54.7</l></block></script></block><block s="doReport"><custom-block s="✐ color number in %n family, from H: %n S: %n L: %n %br rising hue: %n %br rising min lightness: %n falling min lightness: %n"><l>50</l><block var="hue"/><block var="saturation"/><block var="lightness"/><l>14</l><l>27.75</l><l>22.3</l></custom-block></block></script></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>34</l><comment w="75.33333333333333" collapsed="true">green</comment></block><script><block s="doReport"><custom-block s="✐ color number in %n family, from H: %n S: %n L: %n %br rising hue: %n %br rising min lightness: %n falling min lightness: %n"><l>60</l><block var="hue"/><block var="saturation"/><block var="lightness"/><l>32</l><l>20</l><l>6</l></custom-block></block></script></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>52</l></block><script><block s="doReport"><custom-block s="✐ color number in %n family, from H: %n S: %n L: %n %br rising hue: %n %br rising min lightness: %n falling min lightness: %n"><l>70</l><block var="hue"/><block var="saturation"/><block var="lightness"/><l>49</l><l>6</l><l>10</l></custom-block></block></script><comment w="75.33333333333333" collapsed="true">cyan</comment></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>67</l><comment w="74" collapsed="true">blue</comment></block><script><block s="doReport"><custom-block s="✐ color number in %n family, from H: %n S: %n L: %n %br rising hue: %n %br rising min lightness: %n falling min lightness: %n"><l>80</l><block var="hue"/><block var="saturation"/><block var="lightness"/><l>64</l><l>10</l><l>13</l></custom-block></block></script></block><block s="doIf"><block s="reportLessThan"><block var="hue"/><l>83.33333333</l><comment w="74" collapsed="true">purple</comment></block><script><block s="doIfElse"><block s="reportLessThan"><block var="hue"/><l>81.5</l></block><script><block s="doIfElse"><block s="reportLessThan"><block var="hue"/><l>82</l></block><script><block s="doReport"><block s="reportSum"><l>85</l><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block var="hue"/><l>66.666</l></block><block s="reportDifference"><l>81.48</l><l>66.666</l></block></block><l>5</l></block></block></block></script><script><block s="doReport"><l>90</l></block></script></block></script><script><block s="doReport"><block s="reportDifference"><l>95</l><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><l>50</l><block var="lightness"/></block><block s="reportDifference"><l>50</l><l>17.6</l></block></block><l>5</l></block></block></block></script></block></script></block><block s="doReport"><block s="reportSum"><l>95</l><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><l>50</l><block var="lightness"/></block><l>50</l></block><l>5</l></block><comment w="90" collapsed="true">left of black</comment></block></block></script></block-definition><block-definition s="✐ HSL/HSV (hsl? %&apos;HSL?&apos; ) from RGB %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%b">false</input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>red</l><l>green</l><l>blue</l><l>max</l><l>min</l><l>chroma</l><l>hue</l><l>value</l><l>lightness</l><l>saturation</l></list></block><block s="doSetVar"><l>red</l><block s="reportQuotient"><block s="reportListItem"><l>1</l><block var="color"/></block><l>255</l></block></block><block s="doSetVar"><l>green</l><block s="reportQuotient"><block s="reportListItem"><l>2</l><block var="color"/></block><l>255</l></block></block><block s="doSetVar"><l>blue</l><block s="reportQuotient"><block s="reportListItem"><l>3</l><block var="color"/></block><l>255</l></block></block><block s="doSetVar"><l>color</l><block s="reportNewList"><list><block var="red"/><block var="green"/><block var="blue"/></list></block></block><block s="doSetVar"><l>max</l><block s="reportCombine"><block var="color"/><block s="reifyReporter"><autolambda><block s="reportMax"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doSetVar"><l>min</l><block s="reportCombine"><block var="color"/><block s="reifyReporter"><autolambda><block s="reportMin"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doSetVar"><l>chroma</l><block s="reportDifference"><block var="max"/><block var="min"/></block></block><block s="doIfElse"><block s="reportEquals"><block var="chroma"/><l>0</l></block><script><block s="doSetVar"><l>hue</l><l>0</l></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="max"/><block var="red"/></block><script><block s="doSetVar"><l>hue</l><block s="reportModulus"><block s="reportQuotient"><block s="reportDifference"><block var="green"/><block var="blue"/></block><block var="chroma"/></block><l>6</l></block></block></script><script><block s="doIfElse"><block s="reportEquals"><block var="max"/><block var="green"/></block><script><block s="doSetVar"><l>hue</l><block s="reportSum"><block s="reportQuotient"><block s="reportDifference"><block var="blue"/><block var="red"/></block><block var="chroma"/></block><l>2</l></block></block></script><script><block s="doSetVar"><l>hue</l><block s="reportSum"><block s="reportQuotient"><block s="reportDifference"><block var="red"/><block var="green"/></block><block var="chroma"/></block><l>4</l></block></block></script></block></script></block></script></block><block s="doSetVar"><l>hue</l><block s="reportProduct"><l>60</l><block var="hue"/></block></block><block s="doIfElse"><block var="HSL?"/><script><block s="doSetVar"><l>lightness</l><block s="reportQuotient"><block s="reportSum"><block var="max"/><block var="min"/></block><l>2</l></block></block><block s="doIfElse"><block s="reportOr"><block s="reportEquals"><block var="lightness"/><l>0</l></block><block s="reportEquals"><block var="lightness"/><l>1</l></block></block><script><block s="doSetVar"><l>saturation</l><l>0</l></block></script><script><block s="doSetVar"><l>saturation</l><block s="reportQuotient"><block var="chroma"/><block s="reportDifference"><l>1</l><block s="reportMonadic"><l><option>abs</option></l><block s="reportDifference"><block s="reportProduct"><l>2</l><block var="lightness"/></block><l>1</l></block></block></block></block></block></script></block><block s="doReport"><block s="reportNewList"><list><block s="reportQuotient"><block var="hue"/><l>3.6</l></block><block s="reportProduct"><l>100</l><block var="saturation"/></block><block s="reportProduct"><l>100</l><block var="lightness"/></block></list></block></block></script><script><block s="doSetVar"><l>value</l><block var="max"/></block><block s="doIfElse"><block s="reportEquals"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>saturation</l><l>0</l></block></script><script><block s="doSetVar"><l>saturation</l><block s="reportQuotient"><block var="chroma"/><block var="value"/></block></block></script></block><block s="doReport"><block s="reportNewList"><list><block s="reportQuotient"><block var="hue"/><l>3.6</l></block><block s="reportProduct"><l>100</l><block var="saturation"/></block><block s="reportProduct"><l>100</l><block var="value"/></block></list></block></block></script></block></script></block-definition><block-definition s="✐ color number in %&apos;family&apos; family, from H: %&apos;hue&apos; S: %&apos;saturation&apos; L: %&apos;lightness&apos; $nl rising hue: %&apos;max hue&apos; $nl rising min lightness: %&apos;rise&apos; falling min lightness: %&apos;fall&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><block var="hue"/><block var="max hue"/></block><script><block s="doIfElse"><block s="reportLessThan"><block var="lightness"/><block var="rise"/></block><script><block s="doReport"><block s="reportDifference"><block var="family"/><l>5</l></block></block></script><script><block s="doReport"><block s="reportSum"><block s="reportDifference"><block var="family"/><l>5</l></block><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block var="lightness"/><block var="rise"/></block><block s="reportDifference"><l>50</l><block var="rise"/></block></block><l>5</l></block></block></block></script></block></script><script><block s="doIfElse"><block s="reportLessThan"><block var="lightness"/><block var="fall"/></block><script><block s="doReport"><block s="reportSum"><block var="family"/><l>5</l></block></block></script><script><block s="doReport"><block s="reportDifference"><block s="reportSum"><block var="family"/><l>5</l></block><block s="reportProduct"><block s="reportQuotient"><block s="reportDifference"><block var="lightness"/><block var="fall"/></block><block s="reportDifference"><l>50</l><block var="fall"/></block></block><l>5</l></block></block></block></script></block></script></block></script></block-definition><block-definition s="✐ byte to hex %&apos;byte&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><list><custom-block s="✐ nybble to hex %n"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="byte"/><l>16</l></block></block></custom-block><custom-block s="✐ nybble to hex %n"><block s="reportModulus"><block var="byte"/><l>16</l></block></custom-block></list></block></block></script></block-definition><block-definition s="✐ nybble to hex %&apos;nybble&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doIfElse"><block s="reportLessThan"><block var="nybble"/><l>10</l></block><script><block s="doReport"><block var="nybble"/></block></script><script><block s="doReport"><block s="reportUnicodeAsLetter"><block s="reportSum"><block s="reportDifference"><block var="nybble"/><l>10</l></block><block s="reportUnicode"><l>a</l></block></block></block></block></script></block></script></block-definition><block-definition s="✐ limits %&apos;color&apos;" type="reporter" category="pen"><comment x="0" y="0" w="90" collapsed="false">hue mod 100, other components cut off at [0, 100]</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCONS"><block s="reportModulus"><block s="reportListItem"><l>1</l><block var="color"/></block><l>100</l></block><block s="reportMin"><block s="reportMax"><block s="reportCDR"><block var="color"/></block><l>0</l></block><l>100</l></block></block></block></script></block-definition><block-definition s="✐ set pen to fair hue %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l><l>old value temp</l><l>index</l><l>scale</l><l>oldHSV</l><l>newHSV</l><l>trans</l></list></block><block s="doSetVar"><l>oldHSV</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportProduct"><l>100</l><l></l></block></autolambda><list></list></block><custom-block s="HSV color"></custom-block></block></block><block s="doSetVar"><l>trans</l><block s="reportIfElse"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><block s="reportListItem"><l>1</l><block var="more"/></block><block s="getPenAttribute"><l><option>transparency</option></l></block></block></block><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block s="reportNewList"><list><l>HSL</l><l>HSV</l></list></block><block var="✐ last set as"/></block></block><script><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block><block s="doSetVar"><l>oldHSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block></script></block><block s="doSetVar"><l>value</l><block s="reportModulus"><block var="value"/><l>100</l></block></block><block s="doSetVar"><l>color</l><block s="reportProduct"><block var="value"/><l>3.6</l></block></block><block s="doSetVar"><l>index</l><l>1</l></block><block s="doUntil"><block s="reportGreaterThan"><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block><block var="value"/></block><script><block s="doChangeVar"><l>index</l><l>1</l></block></script></block><block s="doChangeVar"><l>index</l><l>-1</l></block><block s="doSetVar"><l>scale</l><block s="reportQuotient"><block s="reportDifference"><block var="value"/><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block></block><block s="reportDifference"><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ pivots"/></block><block s="reportListItem"><block var="index"/><block var="✐ pivots"/></block></block></block></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportMin"><block s="reportRound"><block s="reportSum"><block var="from"/><block s="reportProduct"><block s="reportDifference"><block var="to"/><block var="from"/></block><block var="scale"/></block></block></block><l>255</l></block></autolambda><list><l>from</l><l>to</l></list></block><list><block s="reportListItem"><block var="index"/><block var="✐ brights"/></block><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ brights"/></block></list></custom-block></block><block s="doSetVar"><l>newHSV</l><custom-block s="HSV color"></custom-block></block><block s="doIfElse"><block var="✐ fair?"/><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="newHSV"/></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="newHSV"/></block><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block><l>100</l></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="newHSV"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block><l>100</l></block></custom-block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></list></block></block></script><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportListItem"><l>1</l><block var="newHSV"/></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>2</l><block var="newHSV"/></block><block s="reportListItem"><l>2</l><block var="oldHSV"/></block></block><l>100</l></block><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>3</l><block var="newHSV"/></block><block s="reportListItem"><l>3</l><block var="oldHSV"/></block></block><l>100</l></block></custom-block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>2</l><block var="oldHSV"/></block><block s="reportListItem"><l>3</l><block var="oldHSV"/></block></list></block></block></script></block><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block></script><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block></script></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="setPenHSVA"><l><option>transparency</option></l><block var="trans"/></block><custom-block s="✐ make integer RGB"></custom-block></script></block-definition><block-definition s="✐ set pen to color number %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>colors</l><l>brights</l><l>index</l><l>scale</l><l>oldHSV</l><l>newHSV</l><l>color</l><l>pivots</l><l>old value temp</l></list></block><block s="doSetVar"><l>✐ color scale</l><block s="reportModulus"><block var="value"/><l>100</l></block></block><block s="doSetVar"><l>color</l><block s="reportProduct"><block var="value"/><l>3</l></block></block><block s="doIfElse"><block s="reportNot"><block s="reportGreaterThan"><block var="color"/><l>42</l></block></block><script><block s="doSetVar"><l>color</l><block s="reportModulus"><block s="reportProduct"><block var="color"/><block s="reportQuotient"><l>15</l><l>14</l></block></block><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><script><block s="doIf"><block s="reportLessThan"><block var="color"/><l>60</l><comment w="96.66666666666667" collapsed="true">spread out pink</comment></block><script><block s="doSetVar"><l>color</l><block s="reportSum"><l>45</l><block s="reportProduct"><block s="reportDifference"><block var="color"/><l>42</l></block><block s="reportQuotient"><l>15</l><l>18</l></block></block></block></block></script></block><block s="doSetVar"><l>color</l><block s="reportModulus"><block var="color"/><l>300</l></block></block><block s="doSetVar"><l>index</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="color"/><l>15</l></block></block></block><block s="doSetVar"><l>scale</l><block s="reportDifference"><block var="color"/><block s="reportProduct"><block var="index"/><l>15</l></block></block></block></script><comment w="77.33333333333333" collapsed="true">grayscale</comment></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><custom-block s="mmap %repRing over %mult%l"><block s="reifyReporter"><autolambda><block s="reportMin"><block s="reportRound"><block s="reportSum"><block var="from"/><block s="reportProduct"><block s="reportDifference"><block var="to"/><block var="from"/></block><block s="reportQuotient"><block var="scale"/><l>15</l></block></block></block></block><l>255</l></block></autolambda><list><l>from</l><l>to</l></list></block><list><block s="reportListItem"><block s="reportSum"><block var="index"/><l>1</l></block><block var="✐ colors"/></block><block s="reportListItem"><block s="reportSum"><block var="index"/><l>2</l></block><block var="✐ colors"/></block></list></custom-block></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>color number</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><block s="doSetVar"><l>✐ raw HSL</l><block s="reportNewList"><list><block s="getPenAttribute"><l><option>hue</option></l></block><l>100</l><l>50</l></list></block></block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><block s="getPenAttribute"><l><option>hue</option></l></block><l>100</l><l>100</l></list></block></block></script></block-definition><block-definition s="✐ set pen to RGB hex %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>value</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>number</option></l></block><l></l><block s="reportSum"><l>10</l><block s="reportDifference"><block s="reportUnicode"><l></l></block><block s="reportIfElse"><block s="reportLessThan"><l></l><l>a</l></block><block s="reportUnicode"><l>A</l></block><block s="reportUnicode"><l>a</l></block></block></block></block></block></autolambda><list></list></block><block s="reportTextSplit"><block var="value"/><l><option>letter</option></l></block></block></block><block s="doIf"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="doSetVar"><l>value</l><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><l></l></list></block></autolambda><list></list></block><block var="value"/></block></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportLessThan"><l></l><l>0</l></block><block s="reportGreaterThan"><l></l><l>15</l></block></block></autolambda><list></list></block><block var="value"/></block><l><option>number</option></l></block><script><custom-block s="error %txt"><l>Badly formed hex color.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>8</l></block><script><custom-block s="error %txt"><l>More than eight hex digits.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>6</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportDifference"><l>100</l><block s="reportQuotient"><block s="reportProduct"><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>7</l><block var="value"/></block></block><block s="reportListItem"><l>8</l><block var="value"/></block></block><l>100</l></block><l>255</l></block></block></block><block s="doSetVar"><l>value</l><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>6</l></block><block var="value"/></block></block></script></block><block s="doRepeat"><block s="reportDifference"><l>6</l><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block></block><script><block s="doSetVar"><l>value</l><block s="reportCONS"><l>0</l><block var="value"/></block></block></script></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>1</l><block var="value"/></block></block><block s="reportListItem"><l>2</l><block var="value"/></block></block><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>3</l><block var="value"/></block></block><block s="reportListItem"><l>4</l><block var="value"/></block></block><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>5</l><block var="value"/></block></block><block s="reportListItem"><l>6</l><block var="value"/></block></block></custom-block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to X11 name %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>value</l><custom-block s="✐ no spaces %s"><block var="value"/></custom-block></block><custom-block s="use case-independent comparisons %b"><l><bool>true</bool></l></custom-block><custom-block s="catch %upvar %cs"><l>x11w3c</l><script><block s="doIf"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="value"/><block s="reportListItem"><l>4</l><l/></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>exact matches</l><l><bool>true</bool></l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>?? multiple exact matches for </l><block var="value"/></list></block></custom-block></script></block><block s="doIf"><block s="reportNot"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>4</l><l/></block><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><l/></block><block var="value"/></custom-block></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>partial matches</l><l><bool>true</bool></l></custom-block></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Color name </l><block var="value"/><l> not found.</l></list></block></custom-block></script></block><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><block var="match"/></block><block var="value"/></custom-block><l></l></block></autolambda><list><l>match</l></list></block><block var="partial matches"/><block var="x11w3c"/><l>head matches</l><l><bool>true</bool></l></custom-block><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="head matches"/><block var="x11w3c"/><l>non-numbered matches</l><l><bool>true</bool></l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="head matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="partial matches"/><block var="x11w3c"/><l>non-numbered matches</l><l><bool>true</bool></l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="value"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="partial matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script></block></script><comment w="294.6666666666667" collapsed="true">SUBSET throws here if it handles a unique match</comment></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ color from X11 name %&apos;value&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l><l>index</l><l>scale</l><l>transparency</l></list></block><block s="doSetVar"><l>color</l><custom-block s="✐ no spaces %s"><block s="reportListItem"><l>1</l><block var="value"/></block></custom-block></block><custom-block s="use case-independent comparisons %b"><l><bool>true</bool></l></custom-block><custom-block s="catch %upvar %cs"><l>x11w3c</l><script><block s="doIf"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block var="color"/><block s="reportListItem"><l>4</l><l/></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>exact matches</l><l><bool>false</bool></l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>?? multiple exact matches for </l><block var="color"/></list></block></custom-block></script></block><block s="doIf"><block s="reportNot"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportEquals"><block s="reportListItem"><l>4</l><l/></block><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><l/></block><block var="color"/></custom-block></block></block></autolambda><list></list></block><block var="✐ X11"/><block var="x11w3c"/><l>partial matches</l><l><bool>false</bool></l></custom-block></block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Color name </l><block var="color"/><l> not found.</l></list></block></custom-block></script></block><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportEquals"><custom-block s="substring of %txt before %txt"><block s="reportListItem"><l>4</l><block var="match"/></block><block var="color"/></custom-block><l></l></block></autolambda><list><l>match</l></list></block><block var="partial matches"/><block var="x11w3c"/><l>head matches</l><l><bool>false</bool></l></custom-block><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="head matches"/><block var="x11w3c"/><l>non-numbered matches</l><l><bool>false</bool></l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="color"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="color"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="head matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script><script><block s="doIfElse"><custom-block s="✐ subset %predRing %l %cmdRing %upvar %b"><block s="reifyPredicate"><autolambda><block s="reportNot"><block s="reportIsA"><block s="reportLetter"><l><option>last</option></l><block s="reportListItem"><l>4</l><l/></block></block><l><option>number</option></l></block></block></autolambda><list></list></block><block var="partial matches"/><block var="x11w3c"/><l>non-numbered matches</l><l><bool>false</bool></l></custom-block><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="color"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="non-numbered matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script><script><custom-block s="error %txt"><block s="reportJoinWords"><list><l>Multiple partial matches for </l><block var="color"/><l>: </l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l>4</l><l/></block></autolambda><list></list></block><block var="partial matches"/></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> , </l><l></l></list></block></autolambda><list></list></block></block></list></block></custom-block></script></block></script></block></script><comment w="294.6666666666667" collapsed="true">SUBSET throws here if it handles a unique match</comment></custom-block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block var="✐ X11 catch"/><block s="reportListItem"><l>2</l><block var="value"/></block></custom-block></block></script></block-definition><block-definition s="✐ color from RGB hex %&apos;value&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l><l>index</l><l>scale</l><l>transparency</l></list></block><block s="doSetVar"><l>transparency</l><block s="reportListItem"><l>2</l><block var="value"/></block></block><block s="doSetVar"><l>value</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportIsA"><l></l><l><option>number</option></l></block><l></l><block s="reportSum"><l>10</l><block s="reportDifference"><block s="reportUnicode"><l></l></block><block s="reportIfElse"><block s="reportLessThan"><l></l><l>a</l></block><block s="reportUnicode"><l>A</l></block><block s="reportUnicode"><l>a</l></block></block></block></block></block></autolambda><list></list></block><block s="reportTextSplit"><block s="reportListItem"><l>1</l><block var="value"/></block><l><option>letter</option></l></block></block></block><block s="doIf"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="doSetVar"><l>value</l><block s="reportConcatenatedLists"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><l></l><l></l></list></block></autolambda><list></list></block><block var="value"/></block></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportOr"><block s="reportLessThan"><l></l><l>0</l></block><block s="reportGreaterThan"><l></l><l>15</l></block></block></autolambda><list></list></block><block var="value"/></block><l><option>number</option></l></block><script><custom-block s="error %txt"><l>Badly formed hex color.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>8</l></block><script><custom-block s="error %txt"><l>More than eight hex digits.</l></custom-block></script></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>6</l></block><script><block s="doSetVar"><l>transparency</l><block s="reportDifference"><l>100</l><block s="reportQuotient"><block s="reportProduct"><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>7</l><block var="value"/></block></block><block s="reportListItem"><l>8</l><block var="value"/></block></block><l>100</l></block><l>255</l></block></block></block><block s="doSetVar"><l>value</l><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>6</l></block><block var="value"/></block></block></script></block><block s="doRepeat"><block s="reportDifference"><l>6</l><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block></block><script><block s="doSetVar"><l>value</l><block s="reportCONS"><l>0</l><block var="value"/></block></block></script></block><block s="doReport"><custom-block s="✐ include transparency %l %s"><block s="reportNewList"><list><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>1</l><block var="value"/></block></block><block s="reportListItem"><l>2</l><block var="value"/></block></block><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>3</l><block var="value"/></block></block><block s="reportListItem"><l>4</l><block var="value"/></block></block><block s="reportSum"><block s="reportProduct"><l>16</l><block s="reportListItem"><l>5</l><block var="value"/></block></block><block s="reportListItem"><l>6</l><block var="value"/></block></block></list></block><block var="transparency"/></custom-block></block></script></block-definition><block-definition s="✐ CMYK from RGB %&apos;rgb&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>cmy</l><l>k</l></list></block><block s="doSetVar"><l>rgb</l><block s="reportQuotient"><block var="rgb"/><l>255</l></block></block><block s="doSetVar"><l>k</l><block s="reportCombine"><block var="rgb"/><block s="reifyReporter"><autolambda><block s="reportMax"><l></l><l></l></block></autolambda><list></list></block></block></block><block s="doSetVar"><l>cmy</l><block s="reportQuotient"><block s="reportDifference"><block var="k"/><block var="rgb"/></block><block var="k"/></block></block><block s="doReport"><block s="reportConcatenatedLists"><list><block var="cmy"/><block s="reportNewList"><list><block s="reportDifference"><l>1</l><block var="k"/></block></list></block></list></block></block></script></block-definition><block-definition s="✐ RGB from CMYK %&apos;cmyk&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doSetVar"><l>cmyk</l><block s="reportDifference"><l>1</l><block var="cmyk"/></block></block><block s="doReport"><block s="reportProduct"><l>255</l><block s="reportProduct"><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block var="cmyk"/></block><block s="reportListItem"><l>4</l><block var="cmyk"/></block></block></block></block></script></block-definition><block-definition s="lighten %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportSum"><l>50</l><custom-block s="$brush %s from color %obj"><l>RGB vector</l><block var="color"/></custom-block></block><list><l></l></list></custom-block></block></script></block-definition><block-definition s="darken %&apos;color&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportDifference"><custom-block s="$brush %s from color %obj"><l>RGB vector</l><block var="color"/></custom-block><l>100</l></block><list><l></l></list></custom-block></block></script><scripts><script x="191" y="20.28888888888893"><block s="reportCombine"><l/><block s="reifyReporter"><script></script><list></list></block></block></script><script x="101.9951171875" y="193.40000000000006"><block s="reportNewList"><list><l>-75</l><l>-75</l><l>-100</l></list></block></script><script x="39.666666666666664" y="116.77777777777779"><block s="reportCombine"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportGreaterThan"><l></l><l>0</l></block></autolambda><list></list></block><custom-block s="$brush %s from color %obj"><l>RGB vector</l><block var="color"/></custom-block></block><block s="reifyReporter"><autolambda><block s="reportMin"><l></l><l></l></block></autolambda><list></list></block></block></script></scripts></block-definition><block-definition s="$brush color %&apos;color&apos; at weight %&apos;weight&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%obj"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="color"/><block var="weight"/></list></block></block></script></block-definition><block-definition s="plot %&apos;waveform&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="up"></block><block s="gotoXY"><l>-72</l><block s="reportDifference"><block s="reportProduct"><l>100</l><block s="reportListItem"><l>1</l><block var="waveform"/></block></block><l>50</l></block></block><block s="down"></block><block s="doFor"><l>i</l><l>1</l><l>36</l><script><block s="gotoXY"><block s="reportSum"><l>-72</l><block s="reportProduct"><l>4</l><block var="i"/></block></block><block s="reportDifference"><block s="reportProduct"><l>200</l><block s="reportListItem"><block var="i"/><block var="waveform"/></block></block><l>50</l></block></block></script></block></script><scripts><script x="426" y="41.55555555555558"><block s="clear"></block><block s="up"></block><block s="gotoXY"><l>-72</l><l>-50</l></block><block s="down"></block><block s="gotoXY"><l>72</l><l>-50</l></block><block s="up"></block><block s="gotoXY"><l>-72</l><l>-50</l></block><block s="down"></block><block s="gotoXY"><l>-72</l><l>150</l></block></script></scripts></block-definition><block-definition s="$brush color from %&apos;color&apos; and %&apos;dimension&apos; %&apos;value&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%obj"></input><input type="%s" readonly="true"><options>fair hue&#xD;transparency&#xD;&#126;2&#xD;(3D color spaces)={&#xD;fair HSL={&#xD;fair hue&#xD;fair saturation (HSL)&#xD;fair lightness&#xD;}&#xD;fair HSV={&#xD;fair hue&#xD;fair saturation (HSV)&#xD;fair value (brightness)&#xD;}&#xD;HSL={&#xD;hue&#xD;saturation (HSL)&#xD;lightness&#xD;}&#xD;HSV={&#xD;hue&#xD;saturation (HSV)&#xD;value (brightness)&#xD;}&#xD;RGB (0-255)={&#xD;red&#xD;green&#xD;blue&#xD;}&#xD;}</options></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>old</l><l>transp</l></list></block><block s="doSetVar"><l>transp</l><custom-block s="$brush %s from color %obj"><l>transparency</l><block var="color"/></custom-block></block><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>color number</l><l>hue</l><l>fair hue</l></list></block><block var="dimension"/></block><script><block s="doSetVar"><l>value</l><block s="reportModulus"><block var="value"/><l>100</l></block></block></script><script><block s="doIfElse"><block s="reportListContainsItem"><block s="reportNewList"><list><l>red</l><l>green</l><l>blue</l></list></block><block var="dimension"/></block><script><block s="doIf"><block s="reportLessThan"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>value</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><l>255</l></block><script><block s="doSetVar"><l>value</l><l>255</l></block></script></block></script><script><block s="doIf"><block s="reportListContainsItem"><block s="reportNewList"><list><l>saturation (HSV)</l><l>saturation (HSL)</l><l>value (brightness)</l><l>lightness</l><l>fair saturation (HSV)</l><l>fair saturation (HSL)</l><l>fair value (brightness)</l><l>fair lightness</l><l>transparency</l></list></block><block var="dimension"/></block><script><block s="doIf"><block s="reportLessThan"><block var="value"/><l>0</l></block><script><block s="doSetVar"><l>value</l><l>0</l></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><l>100</l></block><script><block s="doSetVar"><l>value</l><l>100</l></block></script></block></script><comment w="164.66666666666666" collapsed="false">We have to do this last test to rule out the vector options, which aren&apos;t numbers; their code makes three recursive calls and we catch range issues then.</comment></block></script></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>hue</l></block><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>HSV vector</l><block s="reportCONS"><block var="value"/><block s="reportCDR"><custom-block s="$brush %s from color %obj"><l>HSV vector</l><block var="color"/></custom-block></block></block><list><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSV)</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>HSV vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>HSV vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block var="value"/><block s="reportListItem"><l>3</l><block var="old"/></block><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>value (brightness)</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>HSV vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>HSV vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block s="reportListItem"><l>2</l><block var="old"/></block><block var="value"/><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>saturation (HSL)</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>HSL vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>HSL vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block var="value"/><block s="reportListItem"><l>3</l><block var="old"/></block><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>lightness</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>HSL vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>HSL vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block s="reportListItem"><l>2</l><block var="old"/></block><block var="value"/><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>transparency</l></block><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>color</l><block var="color"/><list><block var="value"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>red</l></block><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportCONS"><block var="value"/><block s="reportCDR"><custom-block s="$brush %s from color %obj"><l>RGBA vector</l><block var="color"/></custom-block></block></block><list><l></l></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>green</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>RGBA vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block var="value"/><block s="reportListItem"><l>3</l><block var="old"/></block><block s="reportListItem"><l>4</l><block var="old"/></block></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>blue</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>RGBA vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>RGB vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block s="reportListItem"><l>2</l><block var="old"/></block><block var="value"/><block s="reportListItem"><l>4</l><block var="old"/></block></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair hue</l></block><script><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>fair HSV vector</l><block s="reportCONS"><block var="value"/><block s="reportCDR"><custom-block s="$brush %s from color %obj"><l>fair HSV vector</l><block var="color"/></custom-block></block></block><list><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSV)</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>fair HSV vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>fair HSV vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block var="value"/><block s="reportListItem"><l>3</l><block var="old"/></block><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair value (brightness)</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>fair HSV vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>fair HSV vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block s="reportListItem"><l>2</l><block var="old"/></block><block var="value"/><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair saturation (HSL)</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>fair HSL vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>fair HSL vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block var="value"/><block s="reportListItem"><l>3</l><block var="old"/></block><block var="transp"/></list></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><block var="dimension"/><l>fair lightness</l></block><script><block s="doSetVar"><l>old</l><custom-block s="$brush %s from color %obj"><l>fair HSL vector</l><block var="color"/></custom-block></block><block s="doReport"><custom-block s="$brush color from %s %s %mult%s"><l>fair HSL vector</l><block s="reportListItem"><l>1</l><block var="old"/></block><list><block s="reportListItem"><l>2</l><block var="old"/></block><block var="value"/><block var="transp"/></list></custom-block></block></script></block></script></block-definition><block-definition s="✐ set pen to lightness %&apos;value&apos; %&apos;more value&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><custom-block s="✐ update HSL"></custom-block><block s="doIf"><block var="✐ fair?"/><script><block s="doSetVar"><l>✐ HSL</l><block var="✐ raw HSL"/></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><block var="value"/></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more value"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more value"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to color %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%obj"></input><input type="%l"></input></inputs><script><block s="doRun"><block s="reportJSFunction"><list><l>r</l><l>g</l><l>b</l><l>a</l></list><l>this.setColor(new Color(r, g, b, a/255));</l></block><block s="reportListItem"><l>1</l><block s="reportGetImageAttribute"><l><option>pixels</option></l><block var="value"/></block></block></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="✐ set pen size to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="setSize"><block var="value"/></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen transparency to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="setPenHSVA"><l><option>transparency</option></l><block var="value"/></block></script></block-definition><block-definition s="✐ set pen red to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>old rgb</l></list></block><block s="doSetVar"><l>old rgb</l><custom-block s="RGB color"></custom-block></block><custom-block s="set pen color to r: %n g: %n b: %n"><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>255</l></custom-block><block s="reportListItem"><l>2</l><block var="old rgb"/></block><block s="reportListItem"><l>3</l><block var="old rgb"/></block></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="✐ set pen green to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>old rgb</l></list></block><block s="doSetVar"><l>old rgb</l><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>255</l></custom-block></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><block var="old rgb"/></block><block var="value"/><block s="reportListItem"><l>3</l><block var="old rgb"/></block></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="✐ set pen blue to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>old rgb</l></list></block><block s="doSetVar"><l>old rgb</l><custom-block s="RGB color"></custom-block></block><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>255</l></custom-block></block><custom-block s="set pen color to r: %n g: %n b: %n"><block s="reportListItem"><l>1</l><block var="old rgb"/></block><block s="reportListItem"><l>2</l><block var="old rgb"/></block><block var="value"/></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="✐ constrain %&apos;value&apos; %&apos;low&apos; %&apos;high&apos;" type="reporter" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="value"/><block var="low"/></block><script><block s="doReport"><block var="low"/></block></script></block><block s="doIf"><block s="reportGreaterThan"><block var="value"/><block var="high"/></block><script><block s="doReport"><block var="high"/></block></script></block><block s="doReport"><block s="reportSum"><block var="value"/><l>0</l></block></block></script></block-definition><block-definition s="✐ set pen to RGB vector %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>number</option></l></block><script><block s="doSetVar"><l>value</l><block s="reportCONS"><block var="value"/><block var="more"/></block></block><block s="doSetVar"><l>more</l><block s="reportNewList"><list></list></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>4</l><block var="value"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportDifference"><l>100</l><block s="reportQuotient"><block s="reportProduct"><block s="reportListItem"><l>4</l><block var="value"/></block><l>100</l></block><l>255</l></block></block></block></script></block><block s="doSetVar"><l>value</l><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="✐ constrain %s %s %s"><l></l><l>0</l><l>255</l></custom-block></autolambda><list></list></block><block var="value"/></block></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to r: %n g: %n b: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block var="value"/></block></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>RGB</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block></script></block-definition><block-definition s="✐ set pen to HSL saturation %&apos;value&apos; %&apos;more value&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><custom-block s="✐ update HSL"></custom-block><block s="doIf"><block var="✐ fair?"/><script><block s="doSetVar"><l>✐ HSL</l><block var="✐ raw HSL"/></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><block var="value"/></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSL"/><block var="value"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more value"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more value"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to HSL vector %&apos;value&apos; %&apos;more value&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>number</option></l></block><script><block s="doSetVar"><l>value</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>1</l><block var="more value"/></block><block s="reportListItem"><l>2</l><block var="more value"/></block></list></block></block><block s="doSetVar"><l>more value</l><block s="reportNewList"><list><block s="reportListItem"><l>3</l><block var="more value"/></block></list></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doSetVar"><l>✐ HSL</l><block s="reportCONS"><block s="reportModulus"><block s="reportListItem"><l>1</l><block var="value"/></block><l>100</l></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="✐ constrain %s %s %s"><l></l><l>0</l><l>100</l></custom-block></autolambda><list></list></block><block s="reportCDR"><block var="value"/></block></block></block></block><block s="doSetVar"><l>✐ raw HSL</l><block var="✐ HSL"/></block><custom-block s="✐ update HSV"></custom-block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more value"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more value"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen saturation (HSV) to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="setPenHSVA"><l><option>saturation</option></l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSV"/><block s="getPenAttribute"><l><option>saturation</option></l></block></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen value (brightness) to %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="setPenHSVA"><l><option>brightness</option></l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSV"/><block s="getPenAttribute"><l><option>brightness</option></l></block></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to HSV vector %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>number</option></l></block><script><block s="doSetVar"><l>value</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>1</l><block var="more"/></block><block s="reportListItem"><l>2</l><block var="more"/></block></list></block></block><block s="doSetVar"><l>more value</l><block s="reportNewList"><list><block s="reportListItem"><l>3</l><block var="more"/></block></list></block></block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>✐ raw HSV</l><block s="reportListItem"><block s="reportNumbers"><l>1</l><l>3</l></block><block var="value"/></block></block><block s="doRun"><block s="reifyScript"><script><custom-block s="set pen color to h: %n s: %n v: %n"><l></l><l></l><l></l></custom-block></script><list></list></block><block s="reportQuotient"><block var="✐ raw HSV"/><l>100</l></block></block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to hue %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportListContainsItem"><block s="reportNewList"><list><l>HSL</l><l>HSV</l></list></block><block var="✐ last set as"/></block></block><script><block s="doSetVar"><l>✐ raw HSV</l><block s="reportNewList"><list><l>0</l><l>100</l><l>100</l></list></block></block></script></block><block s="setPenHSVA"><l><option>hue</option></l><block s="reportModulus"><block var="value"/><l>100</l></block></block><block s="doIf"><block var="✐ fair?"><comment w="118" collapsed="true">if USED TO BE fair</comment></block><script><custom-block s="set pen color to h: %n s: %n v: %n"><block s="reportQuotient"><block s="reportModulus"><block var="value"/><l>100</l></block><l>100</l></block><block s="reportQuotient"><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block><l>100</l></block><block s="reportQuotient"><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block><l>100</l></block></custom-block></script></block><block s="doIfElse"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><custom-block s="✐ update HSL"></custom-block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block></script><script><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block></script></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block><custom-block s="✐ make integer RGB"></custom-block></script></block-definition><block-definition s="✐ set pen to fair saturation (HSL) %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l><l>newHSV</l><l>index</l><l>scale</l><l>oldHSV</l></list></block><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><custom-block s="✐ update HSL"></custom-block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>2</l><block var="✐ HSL"/><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="reportListItem"><l>2</l><block var="✐ HSL"/></block><block s="reportListItem"><l>2</l><block var="✐ raw HSL"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSL"/><block var="value"/></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ update HSV"></custom-block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to fair lightness %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doDeclareVariables"><list><l>color</l><l>newHSV</l><l>index</l><l>scale</l><l>oldHSV</l></list></block><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><block s="doIf"><block s="reportNot"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block></block><script><custom-block s="✐ update HSL"></custom-block></script></block><block s="doSetVar"><l>✐ last set as</l><l>HSL</l></block><block s="doReplaceInList"><l>3</l><block var="✐ HSL"/><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="reportListItem"><l>3</l><block var="✐ HSL"/></block><block s="reportListItem"><l>3</l><block var="✐ raw HSL"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSL"/><block var="value"/></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ update HSV"></custom-block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to fair HSL vector %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>number</option></l></block><script><block s="doSetVar"><l>value</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>1</l><block var="more"/></block><block s="reportListItem"><l>2</l><block var="more"/></block></list></block></block><block s="doSetVar"><l>more</l><block s="reportNewList"><list><block s="reportListItem"><l>3</l><block var="more"/></block></list></block></block></script></block><custom-block s="✐ set pen to fair saturation (HSL) %s %l"><block s="reportListItem"><l>2</l><block var="value"/></block><block s="reportNewList"><list></list></block></custom-block><custom-block s="✐ set pen to fair lightness %s %l"><block s="reportListItem"><l>3</l><block var="value"/></block><block s="reportNewList"><list></list></block></custom-block><custom-block s="✐ set pen to fair hue %s %l"><block s="reportListItem"><l>1</l><block var="value"/></block><block s="reportNewList"><list></list></block></custom-block><block s="doIfElse"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script><script><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block></script></block-definition><block-definition s="✐ set pen to fair saturation (HSV) %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="setPenHSVA"><l><option>saturation</option></l><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="getPenAttribute"><l><option>saturation</option></l></block><block s="reportListItem"><l>2</l><block var="✐ raw HSV"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>2</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to fair value (brightness) %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doSetVar"><l>value</l><custom-block s="✐ constrain %s %s %s"><block var="value"/><l>0</l><l>100</l></custom-block></block><block s="doIf"><block s="reportEquals"><block var="✐ last set as"/><l>HSL</l></block><script><custom-block s="✐ update HSV"></custom-block></script></block><block s="setPenHSVA"><l><option>brightness</option></l><block s="reportIfElse"><block var="✐ fair?"/><block s="reportProduct"><block var="value"/><block s="reportQuotient"><block s="getPenAttribute"><l><option>brightness</option></l></block><block s="reportListItem"><l>3</l><block var="✐ raw HSV"/></block></block></block><block var="value"/></block></block><block s="doReplaceInList"><l>3</l><block var="✐ raw HSV"/><block var="value"/></block><block s="doSetVar"><l>✐ last set as</l><l>HSV</l></block><block s="doSetVar"><l>✐ fair?</l><block s="reportBoolean"><l><bool>true</bool></l></block></block><custom-block s="✐ make integer RGB"></custom-block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="✐ set pen to fair HSV vector %&apos;value&apos; %&apos;more&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportIsA"><block var="value"/><l><option>number</option></l></block><script><block s="doSetVar"><l>value</l><block s="reportNewList"><list><block var="value"/><block s="reportListItem"><l>1</l><block var="more"/></block><block s="reportListItem"><l>2</l><block var="more"/></block></list></block></block><block s="doSetVar"><l>more</l><block s="reportNewList"><list><block s="reportListItem"><l>3</l><block var="more"/></block></list></block></block></script></block><custom-block s="✐ set pen to fair saturation (HSV) %s %l"><block s="reportListItem"><l>2</l><block var="value"/></block><block s="reportNewList"><list></list></block></custom-block><custom-block s="✐ set pen to fair value (brightness) %s %l"><block s="reportListItem"><l>3</l><block var="value"/></block><block s="reportNewList"><list></list></block></custom-block><custom-block s="✐ set pen to fair hue %s %l"><block s="reportListItem"><l>1</l><block var="value"/></block><block s="reportNewList"><list></list></block></custom-block><block s="doIf"><block s="reportGreaterThan"><block s="reportListAttribute"><l><option>length</option></l><block var="value"/></block><l>3</l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>4</l><block var="value"/></block></block></script></block><block s="doIf"><block s="reportIsA"><block s="reportListItem"><l>1</l><block var="more"/></block><l><option>number</option></l></block><script><block s="setPenHSVA"><l><option>transparency</option></l><block s="reportListItem"><l>1</l><block var="more"/></block></block></script></block></script></block-definition><block-definition s="typewrite %&apos;text&apos; size %&apos;size&apos; wait %&apos;wait&apos;" type="command" category="pen"><header></header><code></code><translations></translations><inputs><input type="%mlt">Hello!</input><input type="%s">12</input><input type="%n">0.05<options>0.01–Gliding/Very Fast=0.01&#xD;0.05–Typewrite=0.05&#xD;0.1–Normal Writing/Slow Typewriting=0.1&#xD;0.5–Slow=0.5&#xD;1.01–Very Slow</options></input></inputs><script><block s="doIf"><block s="reportLessThan"><block var="size"/><l>0</l></block><script><block s="doReport"><block s="evaluate"><block s="reifyReporter"><script><block s="doRun"><block s="reifyScript"><script></script><list></list></block><list></list></block></script><list></list></block><list></list></block><comment w="90" collapsed="false">error script</comment></block></script></block><block s="doDeclareVariables"><list><l>x</l><l>p</l></list></block><block s="doSetVar"><l>x</l><block s="xPosition"></block></block><block s="doSetVar"><l>p</l><block s="reportNewList"><list><block s="xPosition"></block><block s="yPosition"></block></list></block></block><custom-block s="%upvar for each %upvar of %l %upvar %ca"><l>#</l><l>item</l><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block><l>list</l><script><block s="doIfElse"><block s="reportEquals"><block var="item"/><block s="reportUnicodeAsLetter"><l>10</l><comment w="90" collapsed="false">unicode 10 is newline character</comment></block></block><script><block s="doDeclareVariables"><list><l>Pen down?</l></list></block><block s="doSetVar"><l>Pen down?</l><block s="getPenDown"></block></block><block s="up"></block><block s="changeYPosition"><block s="reportDifference"><l>0</l><block var="size"/></block></block><block s="setXPosition"><block var="x"/></block><block s="doIf"><block var="Pen down?"/><script><block s="down"></block></script></block></script><script><block s="write"><block var="item"/><block var="size"/></block><block s="doWait"><block var="wait"/><comment w="90" collapsed="false">put the loop ( ↑↑↑ ) around this block to delete multiline wait       </comment></block></script></block></script></custom-block><block s="doDeclareVariables"><list><l>Pen down?</l></list></block><block s="doSetVar"><l>Pen down?</l><block s="getPenDown"></block></block><block s="up"></block><block s="doGotoObject"><block var="p"/></block><block s="doIf"><block var="Pen down?"/><script><block s="down"></block></script></block></script><scripts><script x="340" y="401.6666666666652"><block s="doIf"><block s="reportNotEquals"><block s="reportListItem"><block s="reportSum"><block var="#"/><l>1</l></block><block var="list"/></block><block s="reportUnicodeAsLetter"><l>10</l></block></block><script></script></block></script></scripts></block-definition><block-definition s="%&apos;#&apos; for each %&apos;item&apos; of %&apos;data&apos; %&apos;list&apos; %&apos;action&apos;" type="command" category="lists"><comment x="0" y="0" w="228.57142857142858" collapsed="false">This block carries out the given script for each item of the given list, like the primitive FOR EACH.&#xD;&#xD;What&apos;s different is that it provides the # variable, which will contain the item number in the list of each item in turn, 1 while processing item 1, and so on.</comment><header></header><code></code><translations>ca:_ per cada _ de _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%upvar"></input><input type="%l"></input><input type="%upvar"></input><input type="%ca"></input></inputs><script><block s="doSetVar"><l>list</l><block var="data"/></block><block s="doFor"><l>i</l><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block var="data"/></block><script><block s="doSetVar"><l>#</l><block var="i"/></block><block s="doSetVar"><l>item</l><block s="reportListItem"><block var="i"/><block var="data"/></block></block><block s="doRun"><block var="action"/><list></list></block></script></block></script></block-definition><block-definition s="%&apos;id&apos; %&apos;input&apos;" type="reporter" category="operators"><comment x="0" y="0" w="90" collapsed="false">better id block. you can use the input multiple times without the code to get the input.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%upvar"></input></inputs><script><block s="doSetVar"><l>input</l><block var="id"/></block><block s="doReport"><block var="id"/></block></script></block-definition><block-definition s="$flash factors of %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportIsA"><block var="num"/><l><option>list</option></l></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportConcatenatedLists"><list><block s="reportNewList"><list><block s="reportNewList"><list><l></l></list></block></list></block><custom-block s="$flash factors of %n"><l></l></custom-block></list></block></autolambda><list></list></block><block var="num"/></block><block s="reportConcatenatedLists"><list><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><block s="reportModulus"><block var="num"/><l></l></block><l>0</l></block></autolambda><list></list></block><block s="reportNumbers"><block s="reportMonadic"><l><option>sign</option></l><block var="num"/></block><block s="reportQuotient"><block var="num"/><l>2</l></block></block></block><block s="reportIfElse"><block s="reportEquals"><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block><l>1</l></block><block s="reportNewList"><list></list></block><block s="reportNewList"><list><block var="num"/></list></block></block></list></block></block></block></script></block-definition><block-definition s="convert!" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSetVar"><l>output</l><custom-block s="script %repRing $arrowRight scratchblocks"><block var="block to convert"/></custom-block></block></script></block-definition><block-definition s="send converted scratchblocks to clipboard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><custom-block s="send %s to clipboard"><block var="output"/></custom-block></script></block-definition></blocks><variables><variable name="block to convert"><context id="39277"><inputs></inputs><variables></variables><script><block s="doWearNextCostume"></block></script><receiver><ref id="58"></ref></receiver><origin><ref id="58"></ref></origin><context id="39281"><inputs></inputs><variables></variables><receiver><ref id="58"></ref></receiver><origin><ref id="58"></ref></origin></context></context></variable><variable name="output"><l>next costume :: looks</l></variable></variables></project><media name="Snap! Blocks to Scratch Blocks Converter" app="Snap! 6, https://snap.berkeley.edu" version="1"></media></snapdata>