Please give credits when using, and also credits to all. 525 kb, see inside. (see code) My scratch username: Danidanijr_2data:image/png;base64,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data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAgAElEQVR4Xu3dC5gkZX3v8X/37OxNWGB3ZpaQk0MIhEfBcDTA3shRVODhsoLyuFw8LCDXREQQeES5ebgoIaACCkFALmJEIMcjN/ESEKPsDVYMRsIhIlETcGcGFhbd2+x0nd/b1TVd3dM9Xd3TM/+Z5TvPs+zS01XvW596u371vvVWdc74QQABBBBAAIFxF8iNe4kUiAACCCCAAAJGANMIEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIDHED2yvWf2WuctOct9WND7d9vyH9Uq7hWbv2DQcneF33VYtHSOrVwxhtVi1QhMCoE+W/juyOzxyKKVM2xg8Sxb3d+o4v224G36LD1S+iwd0mUr/q3RMvweAS8BAngM5bMGcK8t+Fuz3PlxVaKremzFp0aq1qu26O1brHCODky/nWsrPzOGm8CqEXATIIDd6Cl4nAQmVQBHttu0fus6KLLcGfKZpz87KLB+p/D6Tt5yN82xZau1QYVxsmtYTNYAbrYH3GsLT1LhX80S1g0r2YY3rLO9uzZY50Pq6c9vtDr1aH6tXv6490zS+6JeHXVC840eGzg1Z6vXN9oOfj/2AgTw2BtTgq/ApAngV2zfPxm0KbeK66BaZF4H9pF2X9YAbrYJEMDNiulUJXU5gABu3s9jCQ0nzy9Y7gc6MXo26xD0azZvl82Wf1gn6TM9TvQ8nChz8gpMigB+wxb1rLfoblX2vTqU/jJnhbO7bPCHoacS2R5Te23bt+Ysf0zOBu/otlXPT5Td8WYJ4FreE+0kYaz2xURpa1tjPZLruTmLVhRs/ck72jN/aLSdqdGYjhmWO2xbW9bbaBl+j4CXwKQI4DU2/6MK2BsUvk902OCxc+zJ3zYCSw64et+u4ex5vQ1syNuMMzVcfZZem6O/FeCFC7pt5erqdam8uWZ5DXNHx2lYdZd4mNvu1Rn11Zog9Z+1e+BheLz7SI1/n6kDxj5af6eW08lArlvv36F6ElYyvFa9rlqTtbL03pL11BtGrd4mjRhsVD0f1oj9dTppeaLdQ/fNBHB8aSFtF3qsuadUv5u7LXdPzpZvaLS/G/2+2QCW115qc5rME70+1QqHbW+rXqwuQ9v4Tjl+V6//63SzJdvZ8leT9/zO9npLh808Te3hRLWhvfT62vDeKVa4Qm3o2ep1pdrDyZqsd/srtmifgkVXqPz36L2v6M+1srg+sUg+E9rft/TYuo/l7NnNw+s3X209f63WcVG3rfic9rGqUPxPvtfmH6DtO1f/fpden671PKO2+vWptuGWHexnr6XXVVk3u1szoU7X+/9G7989buN2Zbf16wT5l5uq69CsQ3r58oSq6ImslwaSAA7rydprbtR2+D0CYyUw4QP4dVs4e6PZfaH3q8A8VoH5zSwYqQPu/MgKf6OD4IU6YLy7ctnoeV07PqLLlj+XvK7rsXtssfy9Km/P4eVEz+sE4EidAPyi8gC19x9FNvUOvVZzeDy81zOANXy/56B1fCs+YFYJjNE12awBXBrduFk+R9TarwqI+2da7rTR9mSaDeBwUtBn3TeqTrreXljSYyv/MWvA9dmI7WFtXmGtNvdonZC7Uq+/oGD7+/gkrvwjo8902TQF6eNb1tiiXfV5+E4cqPlD59oyLVP+6bP9ti1Y4S4ts6/a/yGarKeANeu1PbYxm/VZrfvjtb2jVXnbcny3PfX/kt+nrsV+XcttW3tfRR9XyH85CfmwbCsO6ToRwFmOdLxnMgtM+ABOehmq6Es6cC3Wgeu/soCXD7i2RAfxAS2/TgePC9UdvftVK3RusdwNCuXjdPi6ULOOPxfW+artvd2AglQ9r8P0u8s7bPP1s2316+EkQN2LM3TWf7F6Zg932uYTw+vxwW+3ab3WfZ3Wr16BhWHyS9SD+VV8sFu0i9YVDuIHjXQbUrPhkDXc4vrtP6XXNl6l8tX7t3PFcHuPPfv78Hq/rf8zHbyX6EB+X7uH7rPUMdShzzZdpnp9Wn8eztnAuV321L/rjq38q7Z+X50IXav9oMl2hU/rxCtsQ7EH18pPs8bx/pv/IXUW76vVy6wXcKVtukaLn6Xlbspbx+Xd9sRLcfBtd7Rev1p//qPDthyRHslJhdx6bWdnaGfaL5/Udr8gywP12t1hJCbpjcflbPyC2rRGXIafmKaunz6Y9B6Fl1M5YQLfrarbKvXGz55tM5/UnT6FftvnzyPr/Lx+d5je95Ue6zsr6dFWjtZEA6qH2nj+OkVsQScpp+j/v6jlVk2z3OHJKECrDgRwK62bZSarwIQP4PKHP7on63WgOHjK9+CGA5d6uselex3xeqMf6Jh0d7dNO129io060B2s9z6g127Ua+eFnkayY0sHPB10ckvzFh2o+wtXht8lBzr9c/k0s2PTw5BZD/pZ35fUJUu4lesdO6jeB3RYTicwy3TAHfufLHUsD/PamupACjXsswV/qSB6UP98ScOlR4Qga7Xm2YbxK28BU8jupN7j/WoTb6kehi4PP0f/lB4eTbZJIbYqfaIWt0nLqb2crW1ScFb2qqtCTjPc150dTpQq27It0Vreq974T+IThLi9ar33pesQB+2CC/TXFelwLm+P7aQTw/erx/rTtGdpoqO21+ame82pz2AI39N1UqCT1Phk6A17Z/d6mx6W2Sk96alVBwK41RbOcpNRYMIHcHIgb/YWkfQBN2+FD3TZynCQGPqpNbyl+3Ev10HrIvW0D6geIiwd8Eq3/9jJPbb8tlJInKoD6s06oOqAuVIBXf7JGqxZ39daAIeD8XzdY5wPQ5s/03FT173XPVrrmmE7G3DGAF6qYP1a9TXKpB7h+mHeZiqMcoemT3paqWcrAVzqMWq4NvTQKwNTvePi9dXq3qeCp7hNCrjTFHA68an8SYVZxf3eqQB+qNM2LK2+DpvcK54eSUkuz6iEXdPhl7psMyt94qI6/5UsH9Ofu7qtT/MqKq/Zhu3Vfvs7lXFeentHOgkuz7XI7VcVwC05VH5GF/6xrqE/FGZBZ70GnIxMqE3tWOsa8Ai3zA19pltpX/WWKZV3nepyVpYHibSz7PFeV+XzDMqX3dKfvWYeqlKv/uHYrbZ6ZpcNqJPU3C2DoS1rbsVpWdvTWBtO+ADus3kaEut4SB+olnvAIw3/JsDq4U7XcOhX9P/HZ0Af+rAmja5WaGcN1qzvayWA4xOHYdf91srz2xrevVPXFDUBq9zTz7Dtmd6SJYBlF3ppIeDqHvxqBU+mClS9qVnjZPE1tnCR2s93deD4ZjLZaa29Y/vNNl3zBHKaXFfZM09O4hrXsbq3PfTUp6buRU5OBNRjPUPXecPlDkvqrH18VXryVTKkHl6v97CX8n5Ln2TWr1u9AG7VIe2WmlD1QtYDZvXky3qhl7xPI2Oa6Ff7CXWN92Hjd7zZAlifiUeCZwhJnTxdM90GTkj2QbssCODG7a5t70idtf9LM7cVNHvAzdZDGtqsYQHcaPay1zXg8gmG5dbaoj0HrHCS6nKsgm/H8DudST42zQZPqTXLdzQ7MWMAF0ccJnIAl05e7lQd35YMQ6cuO3xZB5sL09emq3sB9Q3bE8Cp2dp6fOm6E7rt2T/oLD+c1JyQHkaOgznunY9TAKee7jZSS6p/MlDurdrjjZ4OV27nySUXs5FCu14AV/eQ05/b1MmJPjeNH9pSuy3E21vjeDN0TBmpDrUk49E8u0h13V6f5zn6O1xG+2xS93Q90j3QeHuibTSCd47eu3PSLqrDM+vJSignHcDVvdRaATySQ9x5SB46FI5Vsfkr1rlzsu43zGbGDwGK20iNEY6Kk/vRhPdojof1lp3wPeDkxnptwG5qVIdr6Dfc9tHwp9kAjnd2/EjILD3mpALJmb4OdserB1J8nnPyE3pKAzYjvLbYO4DT9YpvQ5n3FznrCAfqw9S0dc173SfaOSydLYCHnug1NBEuXc9kCFoHiPfI72Dt+6cb7vg6b2ilPSSrSm75SYabSz13HUTt4Lm2fFm6yFo9yCx1Tk3CaqoHnMzWVl1CGztYAbsmvm5tz1QPM6fKqHnrUnoIWvfUL9bEPN2mFq7Ft9IDHjpwjsnQbhbTkd5TK1SqXwsH843WeadGt85TG+xJD12Wwmv3RicG9Xp9pWPN8+FSVrrcLtv8ZJizkfTM03Wo91zr8v3ShY+qnv9L7UC3aeaKz0NILpUlFqW5L4eEeodtUKidFobqw++TbQ3lNArTWraVQT/8iXe1LOo5hF50veHiJESn2cAlCl9NgM09mmxn6fM3bLuT+hLATX5y0rOMFRQ/0kxZ3Yq0+uVGq2nlgJsaoqu4b3KkslLLfKnbputMMh7OjWcfb7hYB8RLwv+3M4BTPZmKMhuZVP++dHtSeHD9b9IzWJtdT+0PY+PHZZZ7ktEzOhk4qnqSVfyIzvx3FAxPV99n22wdW2kP5QCOb/lRPX6kPXtxuIaq/amT73UnJBOlUh/w4tOb9P+aWT78Omu9ercawHFADl2m0WhCpJOU3Lf194erb51KPyWqUxPyZtuyf03XJ9zapOXu1/VrzcIu39rUSgCnRgmacmh2v7b6/loBXC8gQq9O+1425UDLeiCv1+vrt85r1Ia+lIRqEhzTbfMDIVTS14zTYVhre9OBtMk6LwvrVRtcmNQ33YuMl4974emwCh7pOlUHtdb5QqOh+urQbjQEXV1mqFm6TvW2u3zCEXrtlZev6s2xSH0+w9D4B5M7X1ptP+1absL3gMOGhi8fGLAoDDME8B/rjPTSOfb6j0OPLTwJq99mvV2ox2my1U3J7TStHHDLs0Cjt+vM8MopZrfMtpWagWuF+LrftH31YVyssLo0me1cvh8z162ex6k9NuP+fhvo0b8v0Do+EuqvZWa2M4BTBzeFfUGTfd54oF7vNUzI2WTRZ1SXh6ZbfvUsW742DJmWhlZD/T6vg8sd9R7m0GpDy9YDLl6b1vBu7kiVU3Eb0iu2cX99q40mOUW766z+FPU0NXTa+k8r7SEprXzLjx2gusrSviz3S5NrrulalW9lsw+E25fUJq/pspm/CidmcR2mvkP8H0q31ThEW7sGHC8bz9ZWeZqIn+vV/t2u1qzx8i1pufBFHlW3IS14hw7aV2tZ3W9fvt+4Ud3qXQNu1SFtWX5Gek5+m0/McuKtdqeRMlOv0mbrNqujaj30pBhBpbsk0teAt8YA1uTF5RqevqNDD4QJYV8drMEi6YWnAzj49FnnJVNs4MYt1vmBbhu4tdGEp3Rg1grXat/RBHAYgo73o62rNQrRKIhbP5K0d8lJEcBhk/tt4fs0BBQeBFC8dln9ox1R8ZD/Vg+4cTl2n9avL3qoVU7lV6PFM2WHZhmnFoh073FOTzIyDQnaTdUBnOVaYb3rTKUPh54MljtxuEPltanGX5RQ++Eio21mWQI4lNHgwSdFw+ThE6OpU5Zr/CNd1yvfomarVA+dbA1/+EVSv5EefFI6aAz7QorRBHD6tqO4DpVPvkq7NXg4Rli24haosGwrPeB439Z/AEw9h3Rd05+RrJeFqnp7dYe/swxBl66tFsNr+BB0uFwVwmvkby6rN4ScHnpNPqM6GTi/egg6XYeRhqBDIIUh2eoecAjgpCe6rdn6+OtR7beNesBh25JrxDrOvKyQDsfEEX+a7QHHZRQv+xWH4tMOobddGiJ/X/W1/PToQzhJqLcfao1SlIa1r5ooT0mbNAEckOMdNPUj6hWFBxro8X45DZVFL+pvDfkN3thjq34eeqvxhzvbd/HWalFrbcGfDujpS1q3ni9dfBSl7n80DZPag4M2eNdce/LF0ItMlo17Fpv0nb9ReNpWeDxfeLzlxZqB+j3t8BP176+2M4BDuTUe8VesTnWIhINzefJV7hC95a2l9xUfPTjDNt8+FrdHZA3gUJfxeEzmaAM4/UQ2KTcc+k/aqt4bHmcaHkUZfp7T/tGQf+HOdFsNvxhNAMcHsvixmGpnM2pdm0638+Ftp9i+f6Jlv9hl/d+vvj2p1QBOf2azOqTrOd494FB21fBmxaWjqslMma/VV54UxMO/I00WGqkOtY5XjYeg47ktoZOiY5TuQbedsgRwlvBP16feNeBanYDkOFWeRDX0TWoVJ021zNOTsOK2H55zEE+6iwM5+WrX4Zf+COBaLYjXEEBgVAKpW490Mjr82vSoVs7Cb0qB9HD1mxJgHDZ6UvWAx8GDIhCYdALpR6g2c6fApNtQKjwuAqMdjRmXSm4lhRDAW8mOZDPefALh8sIa23eXvE0J1yPDM88rnuH85hNhixGYXAIE8OTaX9QWgarnnA+B6NpttpnCECKAwMQQIIAnxn6gFghkFkhPKAvf46vb8u4YtPU3Z/nC+syF8EYEEBhzAQJ4zIkpAAEEEEAAgeECBDCtAgEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgF5d5Cs2f8Gg5e4Kr3dYtHSOrVwxAapVrEJke8/stc7L9c+/1p+bemzg4pytXt9M/UrruCVnuQ+rwe3fbct/1MzyI7233xa8TXaPlOwO6bIV/9audddbT2T7T+mzjZ/MW25lly1/dKzLY/2xQK8tPEl/fVWt8qoeW/Gp0br02h7bRDbrvA6zR9RuVo52fSyPQLMCBHCzYmPw/l5b8LdmufPjVbfn4NKuaiYBp4ayc2T2a50gNB1yW1MAh/DttQ06CclfElnhsh6bcXnOHt/SLm/WU1+g3QG8xub9D+3He+OTt8Ej59iTv8AfgfEUmDQBHNlu0/pszvsiy52intT+QtpBYfU7Bdd3zAbv6LZVT2hjCuOJ166y6AG3LjmePWCdgOT6bP6J+usr+nO32etn9Nizv69V+7W24E+VyieoQR6p9rqX2uqA2u5TOYu+Od0GvjHLVve3vtU+S4btX2uL9hyw6Extz4Harl302kZ97v45Z4Xbuyx/f86Wbxir2rU7gEM9+23h+7SP7tP2PJOzgWO7bfXLY1V/1otAtcCkCOA3bFHPeotuVmWPqLcL2z20SVNpn8BY9oBfs3m7bLb8wwq3ma30zpvZyj5b8Jcq50EdrP+93sE6hFS/zT86svyN8Uni8J/Iom9oKP/UZofym6lru98bToD7retT2r4LtYmdddZ/co8tv63dZSfrG4sATp9Uad/e1mN9Z+Xsl5vGahtYLwJpgQkfwPEHZMEF+usKHbhW6e9P9Njr6kk8uzkMB/bb+j8zy5+s3z3YYyt/wu6deAJjGcDrbO+uDdb5kHpjHTMsd9i2tqx3LARS2/D+vNkH6137XWOLdlVvUKMytovqdPl023jTNvZ0vz5o0Vp7x/aDNu3dBcst7LaByyZLAMefs00X6LN4adzjjS6fYZtuCdul7cy9avN3Um//cG1vv67NFod0x+JnLAI41LO8b22J9t0HNZr28FjUn3UiUC0w4QP4dVs4e5NFD+hzvp8OfAc0O+lljc2fq4A+Qx+z48KQWTxsbfeqt3S1Jjv9Z60m0coyzTatPlv4bh3MHq+xQ+pOUgrXinWWfkzo6XVYfv1mK1yobfqQtmkb+fxQk4IummPLdHKiY0rVT/U2lQ6kOtAUrqsevk8HZno1WXpucU+p+0gN652pA/U+cW8pel5/d2tdO9QaqVBd8r02/wBdjztX/36XlusIw7UdVrhqjs14eKRrrEkAh3rOsIHFYzW0q4P/wdqOBxr1kuS8VNvxNb33noKtP3lHe+YPWdtGKw5xj3vBO/W35hDkDgzG2k/P5C26QUPCd7VjSFjbtJe2KUx021bbdXS3rfhurTaW7bNka7WOH6i+1yusl9VaT61tCp9bvb6h9BkeNglrtA7xZaC8TpyiH5qtO6HepYWs+5L3IZBFYJIFcOEDXbby/iwbFt6jD9UeWzTJQhu55/BloudrTbxoZZms9Um/r9UA1jrO0Z+rFAQ60NvOVWW/pPB6vw6QP02//ortu+egdXxLB+jdq+taa2JVqwHcZ3v/UWRT71AZB9UzqQ7gcu8quqjW0GajiU7jEcCR7TG112Z9WQf/Y+R18Fxbvqze9pUD2B7qtA1Ld7CfvZalfbTiEEJHJwZLtf6vyHV6jXJ0IlD/OnW2epVHoPT+27qt76NZh2h7bd7/jAbSyC0AABEWSURBVKxDJwHD2qlWVbwmfkGPTbs2fYLVyCGuc+VExXY4xHNMusNlgyWN9nEWN96DQBaBCR/A6eGv+Cw491F9aB9sNPP0Vdt7uwGFgQLpsDAU2GGbr59tq18PPerNZmeol3Cx1vVwp20+MbwesFpZJgtyo/dkHaJNz5aOg3PwpDm26nH1Hru1jdfqeHyMjK5Qz+LipMx41u7Gq7SjNXHGztXZ/e3h7D4Zvte1yjDsdp96weql1v5JThZG6gGHA1ivdV+nck5X3e7W35fodqNfhTX22iINx0bh4HZQdQD32bzDVIf/q2WenmLRWbNtpS4z7J9/1dbvq5MnHZztnSMNC45HAKeuM7+slFuynS1/tZ6VJvW8tWCRThKLJztfU8/x0932xEuN2kArDsk1adkN5G3wjC6b+T0NqhT6bZ8/j6zz8yrzMLWHj+uETCcPw0dFGtUp/L7P9tu2YIUQokfkbHBx1uFZLbdTZINhOHpe+PxNNbshuIVbf8y2O1qvXx3Wr1GOQ9O33emEYomq+g/6bKo9Fs7psTceD5ebwvD9Fptxprb1suoAbpeDJtjpBCuvyXWVn6EsTrwHgVYEJnwAxwfw8KGdFQLm5PD/CoKfq+K3avbzvT32ZBhSHvaTDBlqmRu7bdp51WfZuo/zOv1uqYbqDkzuAWxlmVbQq5dpPoCH997jkCwO7d2XnuCTrFvbekCH5RZ32bInm61zlgDWMOh8Xdv8gda9fJrZsemQqrd9pf16p+q2oFbPvd8W7Tto0UPa4/f32LqPhQNxdd3HI4B1gvNXquNjKvumbpt+TqOTv3hmbfR1LbNjaaj/HoWQZglP00z94bcsteKQPrGqdYKiUY8/2WId4Vrm76baxqOy9sTr+erztpNO+A7JequORgLUU87foPXpEkf156/Yq/6YfK5Xm/1Cj00/P7iEkN1s0zVildunOpjj48Dw+4Db6aD1h6F8Da9HP2z28kGznynej0AQmBQBHIeu5XWQf5cO8roH094b775oQP/5h4INXr6jPVnsbSU/6i3q4RG5i+pdNy5/mG1o5mYry7SjGTUbwDpAnKZezS3pssu340RPVAZw8dYZXR/MX6n3/0xmF3TbukdrhVm9bckSwDqgnqpey83qtZytyXA6uSn/1Ns+9fp21xBluO72VK0DXpZwTXpoWseOY3UNOGkrtdzrmYW6b7ROPbwkFy4ZlGZDR79UuFzSZX3fSg/jtuKQmhsxrdbks9SJ136jmR3eym1eCsXpfbZJt2rZB+sN55Yuizyi3z+XnCCUX8v9NG/5pRo5eKPyMz08gNvpEO622GCRZtRHg2PVltpxvGAdW4/ApAnghDxc71lj+2pIM3+CDmanhV5GGJrWBKTjkglaqQPA8Rl2VTGAW1kmw7ozvaXZANZKh93uUS+AQwVKPazPyurjpQqFiTDflt+d9Xpl6YpnCeBkeLzWCU/9HnDSs6x7W0t8mmXRynoHxHLQ2K5jddAsn1wMd2+0gyNbOKPfBt+rE41gX7o2HulpTut0ohLfQ1zuYWd3KIe27TpSHWpd429U58oTu4V/rAl1YRRiTtYecNKTDcPw9cK/1slVuZ3ZNfpMfrJ62LxWD7idDqkZ9V0abj90pMsyzRjyXgTqCUy6AE5viCZMzdJjCEOwaDjL/tlsy9FhSLreJKI6CKUALj5ysfi4xAzNpa33O451AMchljxEoXCSdvqx8YlL8fXHptngKdvbqhfrbXczAVx7lnPZNv37ehPRquuRMYBtrO6tVUCepREEXQJpPoCTbYln6S7UCI7dWZqUNNSGWnFIP6FsLAO4lbsQkmU0IvLfWgng6mu8yfbVCuB2OhDAGY58vKWtApM6gIOEDmqlM3TbtfJ6bvx4x1qBUE8w6cU1s0w79sZ4BHC6nvHtLvP+ImcdOnkpTtTRdfJ1n6g3LJ0xgItD/pq1fPxcW1l8rnXyE3pEAzYjvLY4bTtSr70dru1aRytD0PXbWBzmOqm4Jbmu3YpDluH5dmx/aga4LjGUr9eOHPpDJ1y6Z7o8xyK9TK3h5tRIwN26bny6rgtvrDyBWXC2Qv0L6YBup0M719UOe9ax9QtsRQFcOUSmD7Puj82HR8xdpOuln8syC7SVZdrRRMY7gJM6JwdB/f9vplnu8Hqze7MF8JD3l9ITldLPTg7lpgO4POkmPGc6f+hcW/ZCOzzbvY7S4wr/SW2pYttaKSfpTeskaGiYtRWHZm6NaqWe6WWSmcnae7/XJYYlWe7F18lseHhOOMG7UmF6SeUkyPS8hPLnM5ltruU2qRxNGFz+X0k9yo+MLD6Cdug+4HY6pD4Py5iENdpWw/JZBCZ8AIdrPAXLh8ks/6iJGT9PJmYkt9EUrON/x0Oqke5zLd9AH2aBDtoU3Q4SvV1n7ldOMbtFt7joPlkrxAe8aftquHmxgufSJHhaWSYLcqP3jGUAl4YDPyODh6ZbfvUsW742nIyUrgt/RHX7vMLgjnqzjEPdswRw+QlQuW71gk/VlxTc328DPfq3nqAUhXIUvrmZ6QAOw7Kp2bCrNEv7gjm2eXl4QlQc3Jt31rU43ZaS+1W9JywpHHbTqnUN32ZPscJRuqXl2Ubezf4+dRvSazNt4xHb2tN99dahCW+61Sv3um4L+t5se8vLSfDEt9FMO1g9uC9q2Tl6z+G6zvndsJ5WHcq3LuV0m1Ph3Km26dEw2zmMcISnU2nCYnh4yHbdtjLcktTyT6mtaNJf8Ta38ECMy6Zb7p7wuUnK0i1jx2qS2q+T/VR+eEcUbpEbug0p3Oo3aFM/oqH4K/X+32juxhEK2udih6F7cU8KJyi6RfCKHWzqZmGHz3e41PQWvS08DKTiQRztckidgF+o7fhcy2AsiEBGgQkfwFmu8ejD+otaB9/Ks+bhIrWuLbayTEbrirdVfgNS7TVU33ebWibzJKzUda35dUoZ9kCSLOZxoJa/WjAOkaHZ1qmiogEdgK/QC2v0npuqh/dL94WG21VGmjBX95p7ajZ7KLOt1+aTjSgHQ6SHXpSDs5Zn4/0ae2jym0ZlyrckteJQPbpQZ/+25av7sjxkJe3f+OEYlRMnk7qXn0g17Dna39dw9tWa83Fr+EKL9NcRtsOBB3G0chRjmdEKTPgATl2vDGff4VF7+maZ4mxRzeS1Vfr9NyL7w/+p98i/8K00A5otrTA7pvQYu3Drkr75xB4ctMG75tqTL1YPT7eyTLM7ovGBujj7t+Kh/a0EcOXkq9whqudbQ13D4wrl+PUZtvn26sc3thLA8TpDr3WTvvM3Cg/s14MootV6+WJdAvieetEn6t9frT1Jq/ig/4PUO/yY6qtHUYanOhUfGapHFRZu67KOx+o9UnE8esBh21L3iN810tOg4h5e52Jtx5FabFEy2U3/fk7mj3Ra/rYdbNkval0SKX3hQVMO4fOhHuB++ivcV1t8FGX6s6Fe5P3Jg2aabaPV70/VT492tXnpsvJW+Ps5lv9+ej/FE88qH5MZ79fc7Z36cpUdbMV/1KqTTuT21iUJ9UCj9+j3r+jv6wq24UtTbOZ/D9/9XB3AcdsbnUPqizb0Xdw8inK0bYXlswlM+ADOthm8C4GxFSg/Jc30lZi2RI+j1FOn+NkaBFJPcfvwSF+0sTVsK9swsQQI4Im1P6jNBBZIPbD/Wc0gPyrLIyYn8OZQtbjnnP6O52FPzQMJgbEUIIDHUpd1b1UCVQdrPTN4dF90sFXhTNKNKc/5iHRZauDYblv98iTdFKo9CQUI4Em406iyn0B6wk/pvlh9JWT5flW/mlFyswLlL84IXwoxeGTW51w3Ww7vR6CeAAFM20CgSYHweMlei87XbVM/znJPbJOr5+3jJFCaeX6FbpW7TQ+P0aREfhAYXwECeHy9KQ0BBBBAAIGiAAFMQ0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAgQwbQABBBBAAAEHAQLYAZ0iEUAAAQQQIIBpAwgggAACCDgIEMAO6BSJAAIIIIAAAUwbQAABBBBAwEGAAHZAp0gEEEAAAQQIYNoAAggggAACDgIEsAM6RSKAAAIIIEAA0wYQQAABBBBwECCAHdApEgEEEEAAAQKYNoAAAggggICDAAHsgE6RCCCAAAIIEMC0AQQQQAABBBwECGAHdIpEAAEEEECAAKYNIIAAAggg4CBAADugUyQCCCCAAAIEMG0AAQQQQAABBwEC2AGdIhFAAAEEECCAaQMIIIAAAgg4CBDADugUiQACCCCAAAFMG0AAAQQQQMBBgAB2QKdIBBBAAAEECGDaAAIIIIAAAg4CBLADOkUigAACCCBAANMGEEAAAQQQcBAggB3QKRIBBBBAAAECmDaAAAIIIICAgwAB7IBOkQgggAACCBDAtAEEEEAAAQQcBAhgB3SKRAABBBBAgACmDSCAAAIIIOAgQAA7oFMkAggggAACBDBtAAEEEEAAAQcBAtgBnSIRQAABBBAggGkDCCCAAAIIOAgQwA7oFIkAAggggAABTBtAAAEEEEDAQYAAdkCnSAQQQAABBAhg2gACCCCAAAIOAgSwAzpFIoAAAgggQADTBhBAAAEEEHAQIIAd0CkSAQQQQAABApg2gAACCCCAgIMAAeyATpEIIIAAAggQwLQBBBBAAAEEHAQIYAd0ikQAAQQQQIAApg0ggAACCCDgIEAAO6BTJAIIIIAAAv8fRGu2pDRY0nQAAAAASUVORK5CYII=(a+bi) * (c+di) = ac + bci + adi + bdii = ac-bd + (bc+ad)ia,b,c,d
calculate the ordinal position from the graphcs row and column.
Calculate the graphics x and (column, row) from the ordinal position.
use with |when<>} to make scratch's |when [timer v] > (10)} blockold result
loudnessloudness timer10old resultfalse
§_directionDialMenu
truemenu item
-1
new firstrest1
Project notes Project name User Presentation mode Language Zoom blocks Stage size Stage scale Retina display support Long form input dialog Plain prototype labels Input sliders Execute on slider change Clicking sound Turbo mode Flat design Keyboard editing Visible stepping Thread safe scripts Prefer smooth animations Flat line ends Codification support Inheritance support Visible palette
Presentation mode Retina display support Long form input dialog Plain prototype labels Input sliders Execute on slider change Clicking sound Turbo mode Flat design Keyboard editing Visible stepping Thread safe scripts Prefer smooth animations Flat line ends Codification support Inheritance support
Project notes Project name Language Zoom blocks Stage size Stage scale Visible palette
de:für _ = _ bis _ _ ca:per _ = _ fins _ _ es:para _ = _ hasta _ _ fr:pour _ allant de _ à _ _ 1101i
de:für _ = _ bis _ _ ca:per _ = _ fins _ _ es:para _ = _ hasta _ _ fr:pour _ allant de _ à _ _ 110i
de:Zahlen von _ bis _ ca:nombres des de _ a _ es:números de _ a _ fr:nombres de _ à _ 1101
de:wende _ an auf _ ca:mapeja _ sobre _ es:mapear _ sobre _ fr:appliquer _ à _ 1
Take any number of input lists, and create a new list containing the items of the input lists. So APPEND [A B] [C D] where the [,,,] are lists reports the list [A B C D] not [[A B] [C D]].
11111
Reports a new list containing the items of the input list, but in the opposite order.
1inputresult
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.
1
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 < as the comparison function will sort from low to high; using > will sort from high to low.
1even itemsmerge11#1#2
The second input is an "association list," a list of two-item lists. Each of those smaller lists has a "key" as its first item and a "value" as its second. ASSOC reports the first key-value pair in the association list whose key matches the first input.
11
#11datacountmapmany##1#1data listscount
#1datacount1
true18012
true
100
de:für _ = _ bis _ _ ca:per _ = _ fins _ _ es:para _ = _ hasta _ _ fr:pour _ allant de _ à _ _ 1101i
PIXEL3PIXEL1
y00false
f(z,c) = z^2 + c
(a+bi) * (c+di) = ac + bci + adi + bdii = ac-bd + (bc+ad)ia,b,c,d
center left=1 center=2 right=3
num1
num1num1false
error
Reports one of 100 preselected colors, like a box of 100 crayons. The colors have names that are meant to be evocative. They are organized in families, more or less corresponding to spectral (rainbow) colors; the input slot has a two-level menu in which you can hover over a family name to see the colors of that family, each including a crayon number and an RGB value. See Appendix A of the Snap! Reference Manual for more details.
grays={ 0 black #000000=0 1 gray7 #121212=1 2 gray14 #242424=2 3 gray21 #363636=3 4 gray28 #484848=4 5 gray36 #5c5c5c=5 6 gray43 #6d6d6d=6 7 gray50 #7f7f7f=7 8 gray57 #919191=8 9 gray64 #a3a3a3=9 10 gray71 #b5b5b5=10 11 gray78 #c8c8c8=11 12 gray85 #dadada=12 13 gray92 #ececec=13 14 white #ffffff=14 } pinks={ 15 deep pink #ff1493=15 16 hot pink #ff69b4=16 17 bright pink #ff007f=17 18 raspberry #e30b5d=18 19 amaranth #e52b50=19 } reds={ 20 red #ff0000=20 21 burgundy #900020=21 22 cherry #990000=22 23 dark candy apple red #a40000=23 24 sanguine #c00000=24 25 maroon #800000=25 26 crimson #c90016=26 27 Lists #d94d11=27 28 candy apple red #ff0800=28 29 coquelicot #ff3800=29 } browns={ 30 saddle brown #8b4513=30 31 chocolate #7b3f00=31 32 kobicha #6b4423=32 33 sepia #704214=33 34 chestnut #954535=34 35 dark brown #654321=35 36 brown #964b00=36 37 golden brown #996515=37 38 cinnamon #b87333=38 39 copper #d2691e=39 } oranges={ 40 orange #ff7f00=40 41 Pantone orange #ff5800=41 42 pumpkin #ff7518=42 43 Variables #f3761d=43 44 Spanish orange #e86100=44 45 burnt orange #cc5500=45 46 sinopia #cb410b=46 47 ochre #cc7722=47 48 carrot #ed9121=48 49 tangerine #f28500=49 } yellows={ 50 yellow #ffff00=50 51 Control #e6a822=51 52 dark goldenrod #b8860b=52 53 goldenrod #daa520=53 54 saffron #f4c430=54 55 sandstorm #ecd540=55 56 mustard #ffdb58=56 57 gold #ffd700=57 58 egg yolk #fee33e=58 59 rubber duck #fbe108=59 } greens={ 60 lime #00ff00=60 61 apple green #8db600=61 62 Operators #62c213=62 63 forest green #228b22=63 64 green #008000=64 65 dark green #006400=65 66 dark pastel green #03c03c=66 67 emerald #50c878=67 68 mint #3eb489=68 69 Pen #00a178=69 } cyans={ 70 aqua (cyan) #00ffff=70 71 dark cyan #008b8b=71 72 cerulean #007ba7=72 73 iceberg #71a6d2=73 74 Sensing #0494dc=74 75 teal #008080=75 76 light sky blue #87cefa=76 77 deep sky blue #00bfff=77 78 dodger blue #1e90ff=78 79 azure #007fff=79 } blues={ 80 blue #0000ff=80 81 midnight blue #191970=81 82 dark powder blue #003399=82 83 cobalt #0047ab=83 84 denim #1560bd=84 85 navy blue #000080=85 86 steel blue #4682b4=86 87 Motion #4a6cd4=87 88 cornflower #6495ed=88 89 slate blue #6a5acd=89 } purples={ 90 violet #8000ff=90 91 Looks #8f56e3=91 92 grape #6f2da8=92 93 indigo #4b0082=93 94 x11 purple #a020f0=94 95 magenta (fuchia) #ff00ff=95 96 dark orchid #9932cc=96 97 Sound #cf4ad9=97 98 purple #7f007f=98 99 dark magenta #8b008b=99 }colorcolor1001123
Takes three inputs for hue, saturation, and value ("brightness") 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. 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 use the very much superior HSL (hue, saturation, lightness) color space. See Appendix A of the Snap! Reference Manual for details.
pt:altera a cor da caneta para matiz _ , saturação _ e brilho _ (0 a 1) 0.30.70.6
Reports the current pen color as a list of three HSV values in the range 0-1. See Appendix A in the Snap! Reference Manual for details.
pt:a cor da caneta em HSV (matiz, saturação e brilho, 0 a 1)
This block allows you to set the pen'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. See Appendix A in the Snap! Reference Manual for details.
size color fair hue transparency X11/W3C name (3D color spaces)={ fair HSL={ fair hue fair saturation (HSL) fair lightness fair HSL vector } fair HSV={ fair hue fair saturation (HSV) fair value (brightness) fair HSV vector } HSL={ hue saturation (HSL) lightness HSL vector } HSV={ hue saturation (HSV) value (brightness) HSV vector } RGB (0-255)={ red green blue RGB vector RGB hex } }255100We have to do this last test to rule out the vector options, which aren't numbers; their code makes three recursive calls and we catch range issues then.sizehueHSLHSV✐ fair?falsesaturation (HSV)value (brightness)transparencyred✐ last set asRGB✐ fair?falsegreen✐ last set asRGB✐ fair?falseblue✐ last set asRGB✐ fair?falsefair huevalue100color3.6index1index-1scale1255fromto1newHSVHSL✐ fair?truefair huecolorColorcolor300index15scale15grayscale15255fromto12✐ last set ascolor✐ fair?falsesaturation (HSL)lightnessfair saturation (HSV)22✐ last set asHSV✐ fair?truefair value (brightness)33✐ last set asHSV✐ fair?truefair saturation (HSL)✐ last set asHSL2222✐ fair?truefair lightness✐ last set asHSL3333✐ fair?truefair HSL vectorfair HSV vectorHSL vectorHSV vectorRGB vectorRGB hex01566red1612green1634blue1656X11/W3C nameX11/W3C namevaluetruex11w3c44partial matches4matchhead matchesSUBSET throws here if it handles a unique match
1
HSVHSV100
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.) See Appendix A of the Snap! Reference Manual for details.
size crayon color fair hue transparency X11/W3C name (3D color spaces)={ fair HSL={ fair hue fair saturation (HSL) fair lightness fair HSL vector } fair HSV={ fair hue fair saturation (HSV) fair value (brightness) fair HSV vector } HSL={ hue saturation (HSL) lightness HSL vector } HSV={ hue saturation (HSV) value (brightness) HSV vector } RGB (0-255)={ red green blue RGB vector RGB hex } }huesaturation (HSV)value (brightness)transparencyRGB vectorredgreenblueRGB hexHSV vectorHSL vectorsaturation (HSL)lightnesscolorfair huenot setfair saturation (HSL)not setfair lightnessnot setfair HSL vectornot setfair saturation (HSV)2not setfair value (brightness)3not setfair HSV vectornot setcrayonnot setX11/W3C namenot set
Takes a value from 0 to 15 and reports the corresponding hexadecimal digit. For internal use of the color library.
Changes any pen property by the specified amount. Some color scales can't be adjusted this way unless the color was first SET using that scale. Vectors (e.g., RGB color as a list of three numbers) can be incremented by a vector as the amount. X11/W3C names can't be incremented.
size crayon color fair hue transparency (3D color spaces)={ fair HSL={ fair hue fair saturation (HSL) fair lightness fair HSL vector } fair HSV={ fair hue fair saturation (HSV) fair value (brightness) fair HSV vector } HSL={ hue saturation (HSL) lightness HSL vector } HSV={ hue saturation (HSV) value (brightness) HSV vector } RGB (0-255)={ red green blue RGB vector RGB hex } }crayonRGB hexI don't know how to handle
Don't ask. Only for internal use by the SET PEN block.
true
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 'names' list). If there is already a variable with that name in that scope, it does nothing: no errors and no overwrites.
pt:cria as variáveis _ _ ca:crea les _ variables _ es:crear las _ variables _ de:erstellen _ var _ globalglobal sprite scripteach itemvar ide = this.parentThatIsA(IDE_Morph); ide.flushBlocksCache('variables'); // b/c of inheritance ide.refreshPalette();
This block reports "true" if there is a variable with this given name (input slot) in that context. It can be a global, sprite or script variable. Otherwise it reports "false".
pt:a variável _ existe ca:existeix la variable _ ? es:existe la variable _ ? de:existiert var _ ?
Creates a bunch of global variables. For internal use by Color library.
global✐ last set as✐ fair?✐ color scale✐ HSL✐ last crayon✐ last X11✐ raw HSL✐ raw HSV✐ last set asRGB✐ fair?false✐ raw HSV0100100
a
10
5
1
10001
5
Hello!2
Hello!
§_getVarNamesDict1
§_getVarNamesDict1
Hello World!enEnglish=en Spanish=es German=de French=fr Polish=pl Chinese=zh Japanese=ja11
Comment
5
es:ejecutar función ( _ ) { _ } con _
es:llamar función ( _ ) { _ } con _ return 0;
es:cambiar a modo des
es:cambiar a modo usuario
es:¿en modo des?
es:inspeccionar _ this.inspect(obj);
es:guadar projeto
es:mundo
es:este proceso
es:¿esta secuencia tiene clic?
es:¿atómica?
make sure "thing" is a particular type or any of a number of types and raise an error if not use responsibly wrt performance implications
es:_ aseverar tipo(s) _
Blocks in custom categories are saved in their categories, but the categories themselves are not; running create category with the same name gets the block back in the palette, but it seems that blocks in the editor are obsolete.
es:TeP: crear/recolorear categoría _ color _ _ _
es:_ de _
es:SpriteMorph.prototipo
A really long text string to scroll in a variable, object property, or whatever thing can be assigned a text string.85311
pt:cria as variáveis globais _ var ide = this.parentThatIsA(IDE_Morph); ide.flushBlocksCache('variables'); // b/c of inheritance ide.refreshPalette();
pt:cria as variáveis de objecto _ var ide = this.parentThatIsA(IDE_Morph); ide.flushBlocksCache('variables'); // b/c of inheritance ide.refreshPalette();
pt:a variável _ existe
§_getVarNamesDictvthrow new ReferenceError(`Variable ${v} does not exist.`)
§_getVarNamesDict
§_getVarNamesDictnormal normal large slider
§_getVarNamesDictNaN
§_getVarNamesDictNaN
§_getVarNamesDict
§_getVarNamesDict
§_getVarNamesDict00
§_getVarNamesDict10
§_getVarNamesDict0
§_getVarNamesDict10
§_getVarNamesDict0
§_getVarNamesDict
§_getVarNamesDict
§_getVarNamesDict §_getVarNamesDict
This block is like Scratch's <(text) contains (text)> predicate. The only thing different is that you can choose to have caps sensitive on or off, which is a feature Scratch doesn't have. HELP: If the text you put in the first input contains the text you put in the second input, it will say true. The drop down menu on the right allows you to choose between caps sensitive or no caps sensitive.
Hello WorldWorld0Cap Senstive=1 No Cap Sensitive=01
LABEL will stamp text on the stage at the given font size. The direction of the text is the direction the sprite is facing, and color will match the pen color.
Hello!12
1datamapmany1data lists
1
1
110i
cont
catchtag
cont
catchtag
Sprite
Sprite
Stylo
StyloPt Roue
your comment here
member_addmembervalue_searchmember_list_nilnilprimitives_add_search_remove_list_nilpublish all primitivesmy selfself21message
thismessagesuperdefine this_addthisdefine super (get parents)_addsuperdefine root_addrootimplement class definitiondefine class !!! IMPORTANT !!! the following block should come after class implementation_addclassmissingmissingnil#i#1
membervalueget a member It is recommended to use a Getter block instead "get"_addget2_searchmemberdefault constructor_addclassrootthissuper
item
xyradial_dot_line_toaPoint_draw_line_toaPoint_clone_to_cartesian_to_radialpublic membersxxxyyyread only public memberradialconstructorPointpublic methodstranslateTodotdrawLineToclonerootthissuper
ltb#4rootthissuper
pt1pt2_drawpublic membersstartstartstartstopstopstopconstructorLinepublic methodsdrawrootthissuper
101
101
3.570
00100i1360offset360pen size10050210-1pen size100333
0.01old_roverlay0
200
parameters are in order gridWidth (number of squares in the width of the grid) gridHeight (numer of squares in the height of the grid) patchSize( is the measure in inches of a patch - or gird cell) patchScale( used for display - not relevant to calculating material) screenWidth and screenHeight are self explanatory. Change the screen size under the gear heading (preferences) sqSize is the size of a grid square columnStart and rowStart offset the grid from the upper left corner
Place a patch using cartesian coordinates of size, with set pen color.
place patch using graphics coorinates. No fill
Set column (x) position to graphics coordinate x.
Set y position to graphics coordinate y.
Place sprite at graphics coordinate gx and gy.
return the graphics x coordinate.
return the graphics y coorindate.
Create a grid based on the startup values. Show text if true.
calculate the ordinal position from the graphcs row and column.
Calculate the graphics x and (column, row) from the ordinal position.
Place a patch at the ordinal position of the graphics coordinate
Define a ninepatch with a single color.
Place solid blocks spacing blocks apart starting at startColumn and startRow..
c6r6
Create a classic 9 square patch at the position specified using the specified colors..
A brute force renidtion of 9 square that illustrates how it alternates. Alternate9Blocks is the abstract.
4050314151324252
Place 9 square blocks spacing blocks apart starting at startColumn and startRow..
c6r6
a1
a1
a1
EmptyEmpty next backdrop previous backdrop random backdropbackdrop switches to
numbernumber name
loudnessloudness timer10
left-rightleft-right don't rotate all aroundxthis.rotationStyle = Number(x); this.changed(); this.drawNew(); this.changed();
§_getVarNamesDict
numbernumber name
applearegion1truecounter1false
thingcounter10
return typeof meter != undefined;return Math.floor(meter.volume * 100);
Hello, world!#00000020Arialerror
regular regular=regular highlighted=highlighted selected=selected
false20
10number of steps
10number of steps
10
10
scientific infinity percentage to infinity log percentage to infinityinfinitypercentage to infinitylog percentage to infinity
5
make graph [repeats] [zoom] [t] [function] [list] example: make graph 240 0.5 [t] [(t mod 10)] [list]
152
1,2,3,4,5,
Hello World!HelloHic b1cb1
Plays a specific note and waits for it to finish
4400.5
Plays a chord and waits for it to finish
0.5
Returns the frequency for a piano note
60 §_pianoKeyboardMenu
Plays all of the notes in order and waits for them to finish
0.5
Plays a note
4400.5
Outputs the note after it has been shifted by the octave
60 §_pianoKeyboardMenu0
Do each block in the order specified
Plays a chord
0.5
Plays all of the notes in order
0.5
Opens a website in a new tab or window. Make sure it starts with https:// or http://
https://www.google.com
Popup with text.
Creates a desktop notification. Any or all of the inputs can be filled. NB: Will ask user for permission first.
Popup with 'Ok' or 'Cancel'
Popup with an input.
Creates a new window with text in.
Text
Creates a browser cookie with the value, title, and expire date.
Returns the value of the specified cookie.
Sets cursor to a specific image. See https://www.w3schools.com/CSSref/playit.asp?filename=playcss_cursor&preval=alias for a list of keywords
"Help! I don't know how to change the cursor back!"
Opens a new window with a website.
https://www.google.com
Get html contents from anywhere on the internet.
https://en.wikipedia.org/wiki/Main_page
pt:altera a cor da tua caneta para vermelho _ , verde _ e azul _ (0 a 255) 25500
Returns list [r,g,b]
ff00ff31
Reports the part of the first string up to the first instance of the second string inside it. If the second string isn't found, reports the entire first string.
pt:o texto de _ antes de _
Reports the portion of the first input string starting after the first occurrence of the second string. If the second string isn't found in the first string, reports an empty string.
pt:o texto de _ depois de _
Reports the character position (starting from 1) of the beginning of the first input string inside the second input string. If it's not found, reports 0.
pt:a posição de _ em _
If input is TRUE, comparisons made by functions in the string library will be case-independent (so "FOO" = "foo"). This is the default. If input is FALSE, comparisons will be exact.
pt:altera comparações ignorando distinção minúsculas/maiúsculas para _
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. If a position number is negative, counts from the end backward, so -1 is the last character, -2 is the next to last, etc.
pt:o texto de _ entre as posições _ e _ , inclusive
123456
pt:a cor da caneta em RGB (vermelho, verde e azul; 0 a 255)
-220160220-160hexmap-out\1using for just in case I need the loop count, even though I don't think I will
Hello!129000010000true
true
60§_pianoKeyboardMenu0.5
Hello!
1.32
123.456789021..theres another way how to do it? answer: yes floor ( number * 1000 ) / 1000 and this reporter is useless
2c1a
,2Hello,Thered1b
110
Hello!12leftpx monospace
Hello, World!110.81
50001000 MS
Hello!12leftpx monospace00truetextsizetextAtextFONTvar stage = this.parentThatIsA(StageMorph), context = stage.penTrails().getContext('2d'), rotation = radians(this.direction() - 90), trans = new Point( this.center().x - stage.left(), this.center().y - stage.top() ), isWarped = this.Warped, len, pos; if (isWarped) {endWarp(); } context.save(); context.font = size + "px " + textFONT; context.textAlign = textA; context.textBaseline = 'alphabetic'; context.fillStyle = this.color.toString(); len = context.measureText(text).width; trans = trans.multiplyBy(1 / stage.scale); context.translate(trans.x, trans.y); context.rotate(rotation); context.fillText(text, 0, 0); context.translate(-trans.x, -trans.y); context.restore(); pos = new Point( len * Math.sin(radians(this.direction())), len * Math.cos(radians(this.direction()))); pos = pos.add(new Point(this.xPosition(), this.yPosition())); this.gotoXY(pos.x, pos.y, false); this.changed(); if (isWarped) {this.startWarp(); } stage.changed();
testinput200 @Yes @LSNo
testinput
test#inputfalse
1234567890
12.34567893
hello worlde
Catch errors. Runs the first script. If it succeeds, nothing else happens. But if it has an error (something that would otherwise result in a red halo around the block), then the second script is run, with the text of the error message that would have been shown in the variable ERROR.
pt:tenta executar _ e, em caso de erro _ , executa _ return
LET (FOO) BE (5) is equivalent to SCRIPT VARIABLES (FOO) SET (FOO) TO (5)
pt:cria a variável de guião _ com valor _
Catch errors in a reporter. Evaluates its first input. If that expression successfully reports a value, this block reports that value. If the expression causes a Snap! error, then the final input slot is evaluated with the text of what would have been the error message in variable ERROR. SAFELY TRY then reports the value of that final expression. Sometimes you'll want to throw an error in the final expression. You can put an ERROR block inside a CALL block to do that.
err
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.
pt:altera utilização de aritmética do Scheme para _
The factorial function, to make very large numbers, to demo bignums.
The identity function: reports its input. It's useful to get things like 3/4 or 5-2i into numeric input slots.
Provides Scheme arithmetic functions not in JavaScript
pt:_ de _ number? complex? real? rational? integer? exact? inexact? exact inexact finite? infinite? nan? numerator denominator real-part imag-part magnitude angle
31
1234567890 >>> 1.234e9
1234567890310000000.0000010
e1-2enull
Takes a text string as input, and reports a new text string containing all but the first character of the input.
pt:_ sem o primeiro caractere resulti2
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->LIST and processing the resulting list instead of doing recursion on sentences in text string form. List operations are faster.)
pt:_ sem a primeira palavra 0
Takes a text string as input, and reports a new text string containing all but the last letter of the input.
pt:_ sem o último caractere resulti1
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->LIST and processing the resulting list instead of doing recursion on sentences in text string form. List operations are faster.)
pt:_ sem a última palavra 01 1 11 1
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.
pt:a primeira palavra de _
Takes a text string as input, and reports the last character in the string.
pt:o último caractere de _ 0
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.
pt:a última palavra de _ index01 1
Takes a text string as input, and reports TRUE if the string has no characters in it of any kind, otherwise false.
pt:a palavra _ está vazia 0
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.
pt:a frase _ está vazia index10
Like JOIN, takes any number of words (text strings) and reports a sentence with its inputs concatenated, but inserts a blank space between the inputs. Consider using SENTENCE (Lists palette) instead.
de:füge Wörter zusammen _ ca:uneix les paraules _ es:unir las palabras _ fr:fusionne les mots _ pt:uma frase com as palavras _ 1121
Takes a sentence in list form and reports the sentence as a text string.
de:Liste $arrowRight Satz _ ca:llista $arrowRight frase _ es:lista $arrowRight frase _ fr:liste $arrowRight phrase _ pt:uma frase com as palavras em _
Takes a sentence in text string form and reports the sentence as a list of its words.
de:Satz $arrowRight Liste _ ca:frase $arrowRight llista _ es:frase $arrowRight lista _ fr:phrase $arrowRight liste _ pt:uma lista com as palavras da frase _
report a list in which each item is one letter from the input word
de:Wort $arrowRight Liste _ ca:paraula $arrowRight llista _ es:palabra $arrowRight lista _ fr:mot $arrowRight liste _ pt:uma lista com os caracteres da palavra _
join all the items of the input list into a single word, and report it
de:Liste $arrowRight Wort _ ca:llista $arrowRight paraula _ es:lista $arrowRight palabra _ fr:liste $arrowRight mot _ pt:uma palavra com os caracteres em _
SENTENCE is the main constructor for sentences, represented as lists of words. It takes zero or more inputs, each of which can be either a list or a text string. If a list, the input is assumed to be a list of words. If a text string, it is converted to a list of words using SENTENCE→LIST. Then all the lists of words are appended to form a new list of words. If the inputs are lists of lists rather than lists of words, SENTENCE, like APPEND, does only one level of flattening, reporting a list of all the items of all the input lists.
pt:lança o erro _
Takes a (possibly deep) list as input, and reports a human-readable text form of the list (namely, Lisp notation).
( )
mem1e20.99999999999999910
1022false
anegnegfalse00a1122
10
1022false
0anegcnegfalse00a10c1
2
0