{"id":1239,"artifact_id":1107,"version":1,"data":{"version":1,"artifact":{"chain":"tezos","title":"window-03","artist":"tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz","tokenId":"24346","description":"Alexandre Rangel, 2021. Infinite code generative composition. NFT: SVG + JavaScript. < @AlexandreRangel www.alexandrerangel.art.br >","contractAddress":"KT1RJ6PbjHpwc3M5rw5s2Nbmefwbuwbdxton"},"snapshot":{"net":[{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmWvKd8oYWNb6fAes4vHB6GhYvUYuTfLZ6PfQr5P597NE3?creator=tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz&viewer=&objkt=24346","host":"ipfs.arkivo.art","path":"/ipfs/QmWvKd8oYWNb6fAes4vHB6GhYvUYuTfLZ6PfQr5P597NE3","type":"http","query":"?creator=tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz&viewer=&objkt=24346","method":"GET","headers":{"sec-ch-ua":"\"HeadlessChrome\";v=\"119\", \"Chromium\";v=\"119\", \"Not?A_Brand\";v=\"24\"","user-agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/119.0.6045.9 Safari/537.36","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"Linux\"","upgrade-insecure-requests":"1"},"fragment":"","postData":null,"protocol":"https:"},"type":1,"external":false,"timestamp":1723844660714},{"data":{"url":"https://ipfs.arkivo.art/ipfs/QmWvKd8oYWNb6fAes4vHB6GhYvUYuTfLZ6PfQr5P597NE3?creator=tz1SvPd1aUYZSkr22JTdRzUEGMb6ZjoPEXTz&viewer=&objkt=24346","body":"","status":200,"headers":{"date":"Fri, 16 Aug 2024 21:44:20 GMT","etag":"\"QmWvKd8oYWNb6fAes4vHB6GhYvUYuTfLZ6PfQr5P597NE3\"","server":"nginx/1.27.0","connection":"keep-alive","x-ipfs-path":"/ipfs/QmWvKd8oYWNb6fAes4vHB6GhYvUYuTfLZ6PfQr5P597NE3","content-type":"image/svg+xml","x-ipfs-roots":"QmWvKd8oYWNb6fAes4vHB6GhYvUYuTfLZ6PfQr5P597NE3","accept-ranges":"bytes","cache-control":"public, max-age=29030400, immutable","content-length":"654836","access-control-allow-origin":"*","access-control-allow-headers":"Content-Type\nRange\nUser-Agent\nX-Requested-With","access-control-allow-methods":"GET\nHEAD\nOPTIONS","access-control-expose-headers":"Content-Length\nContent-Range\nX-Chunked-Output\nX-Ipfs-Path\nX-Ipfs-Roots\nX-Stream-Output"}},"type":2,"external":false,"timestamp":1723844660837}],"browser":{"name":"chromium","version":"119.0.6045.9"},"viewport":{"width":2000,"height":2000},"screenshot":"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JBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAAAAAAAEASAToAAAAAAAAAJBGgAwAA8P/s2YEAAAAAgKD9qRcpjQAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAGD27EAAAAAAQND+1IuURgAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLo7i8RegAAEe5JREFUAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOnB7diAAAAAAIGh/6kVKIwAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAKoEOAAAAAAAAAJVABwAAAAAAAIBKoAMAAAAAAABAJdABAAAAAAAAoBLoAAAAAAAAAFAJdAAAAAAAAACoBDoAAAAAAAAAVAIdAAAAAAAAACqBDgAAAAAAAACVQAcAAAAAAACASqADAAAAAAAAQCXQAQAAAAAAAKAS6AAAAAAAAABQCXQAAAAAAAAAqAQ6AAAAAAAAAFQCHQAAAAAAAAAqgQ4AAAAAAAAAlUAHAAAAAAAAgEqgAwAAAAAAAEAl0AEAAAAAAACgEugAAAAAAAAAUAl0AAAAAAAAAKgEOgAAAAAAAABUAh0AAAAAAAAAqhobcq0DLiFpeAAAAABJRU5ErkJggg==","consoleMessages":[{"text":"class HydraSynth {\n\n            constructor ({\n                pb = null,\n                width = 768,\n                height = 768,\n                numSources = 4,\n                numOutputs = 4,\n                makeGlobal = true,\n                autoLoop = true,\n                detectAudio = false,\n                enableStreamCapture = false,\n                canvas,\n                precision = 'mediump'\n            } = {}) {\n\n                this.bpm = 60\n                this.pb = pb\n                this.width = width\n                this.height = height\n                this.time = 0\n                this.makeGlobal = makeGlobal\n                this.renderAll = false\n                this.detectAudio = detectAudio\n\n                // only allow valid precision options\n                let precisionOptions = ['lowp','mediump','highp']\n                let precisionValid = precisionOptions.includes(precision.toLowerCase())\n\n                this.precision = precisionValid ? precision.toLowerCase() : 'mediump'\n\n                if(!precisionValid){\n                console.warn('[hydra-synth warning]\\nConstructor was provided an invalid floating point precision value of \"' + precision + '\". Using default value of \"mediump\" instead.')\n                }\n\n                // boolean to store when to save screenshot\n                this.saveFrame = false\n\n                // if stream capture is enabled, this object contains the capture stream\n                this.captureStream = null\n\n                this._initCanvas(canvas)\n                this._initRegl()\n                this._initOutputs(numOutputs)\n                this._initSources(numSources)\n                this._generateGlslTransforms()\n\n                window.screencap = () => {\n                this.saveFrame = true\n                }\n\n                if (enableStreamCapture) {\n                this.captureStream = this.canvas.captureStream(25)\n\n                // to do: enable capture stream of specific sources and outputs\n                window.vidRecorder = new VidRecorder(this.captureStream)\n                }\n\n                if(detectAudio) this._initAudio()\n                //if(makeGlobal) {\n                window.mouse = mouse\n                window.time = this.time\n                window['render'] = this.render.bind(this)\n                //  window.bpm = this.bpm\n                window.bpm = this._setBpm.bind(this)\n            //  }\n                if(autoLoop) loop(this.tick.bind(this)).start()\n            }\n\n            getScreenImage(callback) {\n                this.imageCallback = callback\n                this.saveFrame = true\n            }\n\n            resize(width, height) {\n                console.log(width, height)\n                this.canvas = document.querySelector('foreignObject').querySelector('canvas');\n                this.canvas.width = width\n                this.canvas.height = height\n                this.width = width\n                this.height = height\n                this.regl.poll()\n                this.o.forEach((output) => {\n                output.resize(width, height)\n                })\n                this.s.forEach((source) => {\n                source.resize(width, height)\n                })\n            }\n            canvasToImage (callback) {\n                const a = document.createElement('a')\n                a.style.display = 'none'\n\n                let d = new Date()\n                a.download = `hydra-${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}-${d.getHours()}.${d.getMinutes()}.${d.getSeconds()}.png`\n                document.body.appendChild(a)\n                var self = this\n                this.canvas.toBlob( (blob) => {\n                //  var url = window.URL.createObjectURL(blob)\n\n                    if(self.imageCallback){\n                    self.imageCallback(blob)\n                    delete self.imageCallback\n                    } else {\n                    a.href = URL.createObjectURL(blob)\n                    console.log(a.href)\n                    a.click()\n                    }\n                }, 'image/png')\n                setTimeout(() => {\n                document.body.removeChild(a);\n                window.URL.revokeObjectURL(a.href);\n                }, 300);\n            }\n\n            _initAudio () {\n                this.audio = new Audio({\n                numBins: 4\n                })\n                if(this.makeGlobal) window.a = this.audio\n            }\n            // create main output canvas and add to screen\n            _initCanvas (canvas) {\n                if (canvas) {\n                this.canvas = canvas\n                this.width = canvas.width\n                this.height = canvas.height\n                } else {\n                this.canvas = document.createElement('canvas')\n                this.canvas.width = this.width\n                this.canvas.height = this.height\n                this.canvas.style.width = '100%'\n                this.canvas.style.height = '100%'\n                document.body.appendChild(this.canvas)\n                }\n            }\n\n            _initRegl () {\n                this.regl = require('regl')({\n                canvas: this.canvas,\n                pixelRatio: 1,\n                extensions: [\n                    'oes_texture_half_float',\n                    'oes_texture_half_float_linear'\n                ],\n                optionalExtensions: [\n                    'oes_texture_float',\n                    'oes_texture_float_linear'\n                ]})\n\n                // This clears the color buffer to black and the depth buffer to 1\n                this.regl.clear({\n                color: [0, 0, 0, 1]\n                })\n\n                this.renderAll = this.regl({\n                frag: `\n                precision ${this.precision} float;\n                varying vec2 uv;\n                uniform sampler2D tex0;\n                uniform sampler2D tex1;\n                uniform sampler2D tex2;\n                uniform sampler2D tex3;\n\n                void main () {\n                    vec2 st = vec2(1.0 - uv.x, uv.y);\n                    st*= vec2(2);\n                    vec2 q = floor(st).xy*(vec2(2.0, 1.0));\n                    int quad = int(q.x) + int(q.y);\n                    st.x += step(1., mod(st.y,2.0));\n                    st.y += step(1., mod(st.x,2.0));\n                    st = fract(st);\n                    if(quad==0){\n                    gl_FragColor = texture2D(tex0, st);\n                    } else if(quad==1){\n                    gl_FragColor = texture2D(tex1, st);\n                    } else if (quad==2){\n                    gl_FragColor = texture2D(tex2, st);\n                    } else {\n                    gl_FragColor = texture2D(tex3, st);\n                    }\n\n                }\n                `,\n                vert: `\n                precision ${this.precision} float;\n                attribute vec2 position;\n                varying vec2 uv;\n\n                void main () {\n                    uv = position;\n                    gl_Position = vec4(1.0 - 2.0 * position, 0, 1);\n                }`,\n                attributes: {\n                    position: [\n                    [-2, 0],\n                    [0, -2],\n                    [2, 2]\n                    ]\n                },\n                uniforms: {\n                    tex0: this.regl.prop('tex0'),\n                    tex1: this.regl.prop('tex1'),\n                    tex2: this.regl.prop('tex2'),\n                    tex3: this.regl.prop('tex3')\n                },\n                count: 3,\n                depth: { enable: false }\n                })\n\n                this.renderFbo = this.regl({\n                frag: `\n                precision ${this.precision} float;\n                varying vec2 uv;\n                uniform vec2 resolution;\n                uniform sampler2D tex0;\n\n                void main () {\n                    gl_FragColor = texture2D(tex0, vec2(1.0 - uv.x, uv.y));\n                }\n                `,\n                vert: `\n                precision ${this.precision} float;\n                attribute vec2 position;\n                varying vec2 uv;\n\n                void main () {\n                    uv = position;\n                    gl_Position = vec4(1.0 - 2.0 * position, 0, 1);\n                }`,\n                attributes: {\n                    position: [\n                    [-2, 0],\n                    [0, -2],\n                    [2, 2]\n                    ]\n                },\n                uniforms: {\n                    tex0: this.regl.prop('tex0'),\n                    resolution: this.regl.prop('resolution')\n                },\n                count: 3,\n                depth: { enable: false }\n                })\n            }\n\n            _initOutputs (numOutputs) {\n                const self = this\n                this.o = (Array(numOutputs)).fill().map((el, index) => {\n                var o = new Output({\n                    regl: this.regl,\n                    width: this.width,\n                    height: this.height,\n                    precision: this.precision\n                })\n                o.render()\n                o.id = index\n                if (self.makeGlobal) window['o' + index] = o\n                return o\n                })\n\n                // set default output\n                this.output = this.o[0]\n            }\n\n            _initSources (numSources) {\n                this.s = []\n                for(var i = 0; i < numSources; i++) {\n                this.createSource()\n                }\n            }\n\n            _setBpm(bpm) {\n                this.bpm = bpm\n            }\n\n            createSource () {\n                let s = new Source({regl: this.regl, pb: this.pb, width: this.width, height: this.height})\n                if(this.makeGlobal) {\n                window['s' + this.s.length] = s\n                }\n                this.s.push(s)\n                return s\n            }\n\n            _generateGlslTransforms () {\n                const self = this\n                const gen = new GeneratorFactory(this.o[0], this.precision)\n                window.generator = gen\n                Object.keys(gen.functions).forEach((key)=>{\n                self[key] = gen.functions[key]\n                if(self.makeGlobal === true) {\n                    window[key] = gen.functions[key]\n                }\n                })\n            }\n\n            render (output) {\n                if (output) {\n                this.output = output\n                this.isRenderingAll = false\n                } else {\n                this.isRenderingAll = true\n                }\n            }\n\n            tick (dt, uniforms) {\n\n            //  if(self.detectAudio === true) self.fft = self.audio.frequencies()\n            // this.regl.frame(function () {\n                this.time += dt * 0.001\n                // console.log(this.time)\n                // this.regl.clear({\n                //   color: [0, 0, 0, 1]\n                // })\n                window.time = this.time\n                if(this.detectAudio === true) this.audio.tick()\n                for (let i = 0; i < this.s.length; i++) {\n                this.s[i].tick(this.time)\n                }\n\n                for (let i = 0; i < this.o.length; i++) {\n                //  console.log('WIDTH', this.canvas.width, this.o[0].getCurrent())\n                this.o[i].tick({\n                    time: this.time,\n                    mouse: mouse,\n                    bpm: this.bpm,\n                    resolution: [this.canvas.width, this.canvas.height]\n                })\n                }\n\n                // console.log(\"looping\", self.o[0].fbo)\n                if (this.isRenderingAll) {\n                this.renderAll({\n                    tex0: this.o[0].getCurrent(),\n                    tex1: this.o[1].getCurrent(),\n                    tex2: this.o[2].getCurrent(),\n                    tex3: this.o[3].getCurrent(),\n                    resolution: [this.canvas.width, this.canvas.height]\n                })\n                } else {\n                //  console.log('out', self.output.id)\n                this.renderFbo({\n                    tex0: this.output.getCurrent(),\n                    resolution: [this.canvas.width, this.canvas.height]\n                })\n                }\n                if(this.saveFrame === true) {\n                this.canvasToImage()\n                this.saveFrame = false\n                }\n            }\n\n\n            }","level":"log","timestamp":1723844661194},{"text":"[.WebGL-0xc6c00375500]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723844662991},{"text":"[.WebGL-0xc6c00375500]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723844662992},{"text":"[.WebGL-0xc6c00375500]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels","level":"warning","timestamp":1723844662992},{"text":"[.WebGL-0xc6c00375500]GL Driver Message (OpenGL, Performance, GL_CLOSE_PATH_NV, High): GPU stall due to ReadPixels (this message will no longer repeat)","level":"warning","timestamp":1723844662993}],"screenshotDelay":10000},"timestamp":1723844660308},"created_at":"2024-08-16T21:44:36.148+00:00","updated_at":"2024-08-16T21:44:36.148+00:00"}