File: blk03441.txt

text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"bitcoin.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"dale.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"ricky.sats"}h!
text/plain;charset=utf-8
Bj@=:BNB.BNB:bnb177nu692k3r53cgnzthv8q8f0y2kpqcryahe347:32318373::0
Bj@=:BNB.BNB:bnb1s0d02waxw3cy39f7mhfytul0kvdpe7vjx4rcuq:33209000::0
HjF=:BNB.ETH-1C9:bnb13wxs58lvnz80v5nrdrhqvm7rmysh0kvmeqn82k:13926546:te:0
LjJ=:BNB.BUSD-BD1:bnb1hvun4nmcndh3e55cxnhqyddfh593x0v852q93d:33891047170:te:0
2023-02-26T18:01:15+00:00p
2023-02-26T18:01:15+00:00
2023-02-26T18:01:15+00:00V
text/plain;charset=utf-8
  "name": "7797.sats"
text/plain;charset=utf-8
  "name": "1811.sats"
text/plain;charset=utf-8
  "name": "7787.sats"
text/plain;charset=utf-8
  "name": "2322.sats"
text/plain;charset=utf-8
  "name": "8838.sats"
text/plain;charset=utf-8
  "name": "4744.sats"
text/plain;charset=utf-8
  "name": "5955.sats"
text/plain;charset=utf-8
  "name": "7701.sats"
text/plain;charset=utf-8
  "name": "4844.sats"
text/plain;charset=utf-8
  "name": "9905.sats"
text/plain;charset=utf-8
  "name": "5655.sats"
text/plain;charset=utf-8
  "name": "6166.sats"
text/plain;charset=utf-8
  "name": "7977.sats"
text/plain;charset=utf-8
  "name": "4944.sats"
text/plain;charset=utf-8
  "name": "4544.sats"
text/plain;charset=utf-8
  "name": "8807.sats"
text/plain;charset=utf-8
  "name": "5755.sats"
text/plain;charset=utf-8
  "name": "9904.sats"
text/plain;charset=utf-8
  "name": "5855.sats"
text/plain;charset=utf-8
  "name": "5355.sats"
text/plain;charset=utf-8
  "name": "8803.sats"
text/plain;charset=utf-8
  "name": "9899.sats"
text/plain;charset=utf-8
  "name": "7705.sats"
text/plain;charset=utf-8
  "name": "7677.sats"
text/plain;charset=utf-8
  "name": "4344.sats"
text/plain;charset=utf-8
  "name": "7703.sats"
text/plain;charset=utf-8
  "name": "6466.sats"
text/plain;charset=utf-8
  "name": "7577.sats"
text/plain;charset=utf-8
  "name": "4044.sats"
text/plain;charset=utf-8
  "name": "5455.sats"
text/plain;charset=utf-8
  "name": "7877.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "7702.sats"
text/plain;charset=utf-8
  "name": "8804.sats"
text/plain;charset=utf-8
  "name": "9906.sats"
text/plain;charset=utf-8
  "name": "9901.sats"
text/plain;charset=utf-8
  "name": "8838.sats"
text/plain;charset=utf-8
  "name": "6366.sats"
text/plain;charset=utf-8
  "name": "4144.sats"
text/plain;charset=utf-8
  "name": "7704.sats"
text/plain;charset=utf-8
  "name": "5255.sats"
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
text/plain;charset=utf-8
  "name": "8801.sats"
text/plain;charset=utf-8
  "name": "9903.sats"
text/plain;charset=utf-8
  "name": "9908.sats"
text/plain;charset=utf-8
  "name": "6866.sats"
text/plain;charset=utf-8
  "name": "9907.sats"
text/plain;charset=utf-8
  "name": "6266.sats"
text/plain;charset=utf-8
  "name": "9902.sats"
text/plain;charset=utf-8
  "name": "5055.sats"
text/plain;charset=utf-8
  "name": "6966.sats"
text/plain;charset=utf-8
  "name": "6766.sats"
text/plain;charset=utf-8
  "name": "4644.sats"
text/plain;charset=utf-8
  "name": "6566.sats"
text/plain;charset=utf-8
  "name": "7477.sats"
text/plain;charset=utf-8
  "name": "5155.sats"
text/plain;charset=utf-8
  "name": "4244.sats"
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>noise</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="textM
/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2 -->
    <script sandbox="allow-scripts" type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="tM
ext/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <script type="text/javascript">
        let nextLineY = 0;
        let colors = [];
        let colors2 = [];
        let colors3 = [];
        function setup() {
            cSize = min(windowHeight, windowWidth);
            createCanvas(M
            // for (let i = 0; i < 5; i++) {
            //     colors.push(color(mathrand(255, 0), mathrand(255, 0), mathrand(255, 0), mathrand(255, 0)))
            //     colors2.push(color(mathrand(255, 0), mathrand(255, 0), mathrand(255, 0)))
            colors = chroma.scale(['#fff', chroma.random()]).colors(20)
            let randomNumber = mathrand(100, 0);
            if (randomNumber <= 25) {
                colors3 = [
                    ...chroma.scale(['#fff', chromaM
.random()]).colors(6)
            } else if (randomNumber > 25 && randomNumber <= 50) {
                colors3 = [
                    ...chroma.scale(['#fff', chroma.random()]).colors(6),
                    ...chroma.scale(['#fff', chroma.random()]).colors(6),
            } else if (randomNumber > 50 && randomNumber <= 75) {
                colors3 = [
                    ...chroma.scale(['#fff', chroma.random()]).colors(6),
                    ...chroma.scale(['#fff', chroma.M
random()]).colors(6),
                    ...chroma.scale(['#fff', chroma.random()]).colors(6)
            } else if (randomNumber > 75 && randomNumber <= 100) {
                colors3 = [
                    ...chroma.scale(['#fff', chroma.random()]).colors(6),
                    ...chroma.scale(['#fff', chroma.random()]).colors(6),
                    ...chroma.scale(['#fff', chroma.random()]).colors(6),
                    ...chroma.scale(['#fff', chroma.random()]).colors(6)
            noLoop();
        function draw() {
            while (nextLineY < height) {
                drawLine(0, nextLineY)
                nextLineY = nextLineY + 3
            let randomXPoint = mathrand(width, 0);
            let randomYPoint = mathrand(height, 0)
            strokeWeight(1.3)
            stroke('#fff');
            noFill()
            for (let y = 0; y < height; y = y + 2) {
                line(0, y, width, y)
            for (letM
 x = 0; x < width; x = x + 3) {
                line(x, 0, x, height)
            nextLineY = 30;
            while (nextLineY < height - 30) {
                drawSquare(0, nextLineY)
                // strokeWeight(2)
                // line(0, nextLineY, width, nextLineY)
                nextLineY = nextLineY + 30
            // for (let y = 0; y < height; y=y+2) {
            //   line(randomXPoint, randomYPoint, 0, y)
            //   line(randomXPoint, randomYPoint, width, y)
            // for (let x = 0; x < width; x=x+3) {
            //   line(randomXPoint, randomYPoint, x, 0)
            //   line(randomXPoint, randomYPoint, x, height)
        function keyTyped() {
            if (key === 's') {
                saveCanvas('photo-' + mathRand(), 'png');
        function drawSquare(x, y) {
            let maxSquareWidth = mathrand(50,30);
        let maxSquareHeight = 30;
            let sx = mathrand(width / 5, M
            let se = mathrand(width, width - width / 5)
            stroke(0)
            rectMode(CENTER);
            while (sx < se) {
                fill(colors3[mathrand(colors3.length - 1, 0)])
                let sw = mathrand(maxSquareWidth, 5);
                let sh = mathrand(maxSquareHeight, 5);
                let dy = 0//(30 - sh) / 2;
                let dx = 0//(30 - sw) / 2
                rect(sx + dx, y + dy, sw, sh)
                sx = sx + sw + mathrand(mathrand(70, 0), 0);
        function drawLine(x, y) {
            let nextRectX = x;
            noStroke()
            while (nextRectX < width) {
                let rectWidth = mathrand(20, 1);
                let rectHight = mathrand(50, 1);
                fill(colors[mathrand(colors.length - 1, 0)])
                rect(nextRectX, y - rectHight / 2, rectWidth, rectHight);
                nextRectX = nextRectX + rectWidth;
                // if (rectHight / 2 + y > nextLineY) {
                //   nextLineY = rectHigM
                // }
            // for (let x = 0; x < width; x++) {
            //   for (let y = 0; y < height; y++) {
            //     canvas.set(x, y, color(random(0, 100), 20, 255))
            // let numberOfBigBlocks = mathrand(45, 7);
            // for (let i = 0; i < numberOfBigBlocks; i++) {
            //     stroke(colors2[mathrand(colors2.length - 1, 0)]);
            //     strokeWeight(mathrand(3, 1))
            //     noFill()
           //     rectWidth = mathrand(20, 1);
            //     rectHight = mathrand(35, 1);
            //     rect(mathrand(width, 0), y - rectHight / 2, rectWidth, rectHight);
        function mathrand(max, min, float = false) {
            const val = mathRand() * (max - min + 1) + min;
            if (float) return val;
            return Math.floor(val);
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
      let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.leM
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ M
_ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0)M
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0;
            padding: 0;
            /* leave it to hide the scrollbars */
            overflow: hidden;
    <script type="text/javascM
        const rand = mathRand();
        function T1(rand) {
            // calculate rarity by yourself
            if (rand > 0.5) {
                return true;
            } else {
                return false
        // window.$generativeTraits contain list traits for token
        // you need to populate a $generativeTraits object in the window object
ndow.$generativeTraits = {
            "T1": T1(rand),
 Add your code here
        // const container = document.createElement("div")
        // container.innerHTML = "<span>seed: " + seed + "</span><br>";
        // document.body.prepend(container)
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>GENERATIVE BTC LOGO</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
            "tokenId": tokenIdRand,
            "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.iM
mul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            color: rgb(255, 255, 255);
            background-color: rgb(0, 0, 0);
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            padding: 0;
            font-size: 0.8em;
            /* overflow: hidden; */
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
        #fullScreen {
       display: flex;
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            justify-content: center;
            align-items: center;
        #fullScreen canvas {
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
            color: rgb(249, 249, 249);
            opacity: 0.75;
            background-color: rgb(23, 23, 23);
            border-radius: 10px;
        padding-top: 0%;
            width: auto;
            height: auto;
            position: fixed;
            text-align: center;
            justify-content: center;
            align-items: center;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        #progress h2 {
            display: block;
            font-size: 0.9rem;
            color: rgb(239, 239, 239);
            margin: 5%
            font-size: 0.75rem;
            display: block;
            margin: 5%
        #progress hr {
            width: 75%;
            margin-bottom: 10%
    <div id="fullScreen">
        <div id="progress">
            <script type="text/javascript">
                ////////////////INFO & FEATURES
                let title = "Generative BTC Logo";
                let st;
                const rand = mathRand();
                let cnv;
                let maxBrush = Math.floor(randBetween(500, 1500))
                function clr(rand) {
                    if (rand > 0.75) {
                        return 240
                    } else {
                        return 10
                    }
                window.$generativeTraits = {
                    "BG Color": clr(rand),
                    "Force": Math.floor(randBetween(1, 5)),
                    "Brush Size": maxBrush,
                console.loM
g(title + " | smldms 2023.02")
                console.log(window.$generativeTraits)
                let img;
                let balls = [];
                let maxFrame = 1500;
                let maxForce = 1;
                function preload() {
                    img = loadImage('https://gateway.pinata.cloud/ipfs/QmQVs9Xpa5e1JDooNiTPWct2kEorxwqk92A1HkHrn8jx1V');
                function setup() {
                    randomSeed(seed);
                    noiseSeed(seed);
     cnv = createCanvas(1920, 1920, WEBGL);
                    cnv.parent(fullScreen)
                    img.resize(width, height)
                    background(clr(rand));
                function draw() {
                    rotateY(sin(frameCount * 0.05) / 25)
                    translate(-width / 2, -height / 2, frameCount * 0.25)
                    let x = mathRand() * width
                    let y = mathRand() * height
                    for (let i = 0; i < balls.length; i++) {
                      balls[i].draw();
                        balls[i].update();
                        balls[i].changeColour();
                    }
                    for (let i = 0; i < balls.length; i++) {
                        if (balls[i].radius < 0) {
                            balls.splice(i, mathRand() * 2);
                        }
                    }
                    if (frameCount < maxFrame) {
                        for (let i = 0; i < 5; i++) {
                            balls.push(neM
w Ball(x, y, color(img.get(x + mathRand() * 2, y + mathRand() * 2))));
                        }
                    }
                    else {
                        noLoop()
                        print('stop')
                        // saver()
                        // timer(2000)
                    }
                class Ball {
                    constructor(mX, mY, c) {
                        this.location = createVector(mX, mY);
                        this.radius = randBetween(0M
                        this.r = red(c);
                        this.g = green(c);
                        this.b = blue(c);
                        this.a = alpha(c);
                        this.xOff = 0.0;
                        this.yOff = 0.0;
                    }
                    update() {
                        this.radius -= mathRand() * 0.00025;
                        let force = randBetween(0.5, maxForce)
                        this.xOff = this.xOff + randBetween(-force, force);
                      this.nX = noise(this.location.x) * this.xOff;
                        this.yOff = this.yOff + randBetween(-force, force);
                        this.nY = noise(this.location.y) * this.yOff;
                        this.location.x += this.nX;
                        this.location.y += this.nY;
                    }
                    changeColour() {
                        this.c = color(img.get(this.location.x, this.location.y));
                        this.r = red(this.c);
               this.g = green(this.c);
                        this.b = blue(this.c);
                        this.a = alpha(this.c);
                    }
                    draw() {
                        noStroke();
                        fill(this.r, this.g, this.b);
                        let brushSize = round(randBetween(1, maxBrush));
                        if (this.a > 10) {
                            strokeWeight(randBetween(0.25,0.5))
                            if (clr(rand) == 240) {
                    stroke(10)
                            }
                            else {
                                stroke(250)
                            }
                            ellipse(this.location.x, this.location.y, this.radius * brushSize, this.radius * brushSize);
                        }
                        else {
                            fill(this.r, this.g, this.b, 100)
                            noStroke()
                            rect(this.location.x, this.location.y, thisM
.radius * brushSize / randBetween(2.5, 5));
                        }
                    }
                function randBetween(a, b) {
                    if (!b) {
                        return mathRand() * a
                    }
                    return mathRand() * (b - a) + a
                function keyTyped() {
                    if (keyCode === 83) { // if "s" is pressed
                        save(title + '.png');
                    }
          function timer(t) {
                    setTimeout(function () {
                        location.reload(true);
                    }, t);
                function saver() {
                    save(title + '.png');
            </script>
text/plain;charset=utf-8
 d1b4e6aebea16e9c5d62d7c0a696604fF0C
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"Metaverse.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
  "name": "6966.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1388.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"jia.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1902.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"bai.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
c/Foundry USA Pool #dropgold/
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1353664612x
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"umbrel.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"210000000000.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"Ordinal.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"pedro.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"Bitcoin.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"karl.sats"}h!
text/plain;charset=utf-8
5{"p":"sns","op":"reg","name":"bitcointothemoon.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"tothemoon.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"lasereye.sats"}h!
text/plain;charset=utf-8
&CCLL Feb 28 2023, 15 years anniversaryh!
text/plain;charset=utf-8
  "name": "2622.sats"
text/plain;charset=utf-8
  "name": "2522.sats"
text/plain;charset=utf-8
  "name": "2422.sats"
text/plain;charset=utf-8
  "name": "2722.sats"
text/plain;charset=utf-8
  "name": "2822.sats"
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pM
hotoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)" xmp:CreateDate="2018-06-27T16:21:37-04:00" xmp:ModifyDate="2018-06-27T18:46:09-04:00" xmp:MetadataDate="2018-06-27T18:46:09-04:00" dc:format="image/png" photoshop:ColorMode="2" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:e0d8e6b5-f36a-4fb2-aa5f-b3d7db47ab26" xmpMM:DocumentID="adobe:docid:photM
oshop:ca955dd5-09c0-9d4c-b936-fbd6da1eac41" xmpMM:OriginalDocumentID="xmp.did:5b2a8f7c-0075-4fa7-8fc4-486b99269cc1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:5b2a8f7c-0075-4fa7-8fc4-486b99269cc1" stEvt:when="2018-06-27T16:21:37-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:e0d8e6b5-f36a-4fb2-aa5f-b3d7db47ab26" stEvt:when="2018-06-27T18:46:09-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)" stEM
vt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pM
hotoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)" xmp:CreateDate="2018-06-27T15:37:26-04:00" xmp:ModifyDate="2018-06-27T18:14:30-04:00" xmp:MetadataDate="2018-06-27T18:14:30-04:00" dc:format="image/png" photoshop:ColorMode="2" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:b94ee3dc-0817-4d50-aad6-1b17433ad08e" xmpMM:DocumentID="adobe:docid:photM
oshop:3116ef7b-c760-dc44-97b0-33ac136805df" xmpMM:OriginalDocumentID="xmp.did:ccee323a-6f5d-4aed-9b82-f36ebee98415"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:ccee323a-6f5d-4aed-9b82-f36ebee98415" stEvt:when="2018-06-27T15:37:26-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:b94ee3dc-0817-4d50-aad6-1b17433ad08e" stEvt:when="2018-06-27T18:14:30-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)" stEM
vt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"hikimberly.sats"}h!
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="htM
tp://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)" xmp:CreateDate="2018-06-27T16:25:36-04:00" xmp:ModifyDate="2018-06-27T18:48-04:00" xmp:MetadataDate="2018-06-27T18:48-04:00" dc:format="image/png" photoshop:ColorMode="2" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:618503ca-c305-4df9-baf5-d8a93f49c3da" xmpMM:DocumentID="adobe:docid:photoshop:cf91d88b-525M
d-3847-b380-1aae62c74483" xmpMM:OriginalDocumentID="xmp.did:47846dd0-939a-463d-a164-af5625200daf"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:47846dd0-939a-463d-a164-af5625200daf" stEvt:when="2018-06-27T16:25:36-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:618503ca-c305-4df9-baf5-d8a93f49c3da" stEvt:when="2018-06-27T18:48-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)" stEvt:changed="/"/> </rdM
f:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/"M
 xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)" xmp:CreateDate="2018-06-27T16:45:35-04:00" xmp:ModifyDate="2018-06-27T18:53:59-04:00" xmp:MetadataDate="2018-06-27T18:53:59-04:00" dc:format="image/png" photoshop:ColorMode="2" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:c58b2fa7-0afe-4d02-bcb0-15aeb6760e05" xmpMM:DocumentID="adobe:doM
cid:photoshop:f564af28-c0bd-8149-b8e6-a20bed19327d" xmpMM:OriginalDocumentID="xmp.did:dfca3b86-10fb-4d20-9d7a-10ca9fdf6235"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:dfca3b86-10fb-4d20-9d7a-10ca9fdf6235" stEvt:when="2018-06-27T16:45:35-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:c58b2fa7-0afe-4d02-bcb0-15aeb6760e05" stEvt:when="2018-06-27T18:53:59-04:00" stEvt:softwareAgent="Adobe Photoshop CC (MacintoM
sh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pM
hotoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)" xmp:CreateDate="2018-06-27T14:57:19-04:00" xmp:ModifyDate="2018-06-27T17:56:12-04:00" xmp:MetadataDate="2018-06-27T17:56:12-04:00" dc:format="image/png" photoshop:ColorMode="2" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:1712b484-2680-491d-b07c-98713763ab29" xmpMM:DocumentID="adobe:docid:photM
oshop:51b46f60-3954-394b-8654-7ada416d5c87" xmpMM:OriginalDocumentID="xmp.did:6916bab6-68e0-435b-8a4b-36b214368df0"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:6916bab6-68e0-435b-8a4b-36b214368df0" stEvt:when="2018-06-27T14:57:19-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1712b484-2680-491d-b07c-98713763ab29" stEvt:when="2018-06-27T17:56:12-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)" stEM
vt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlM
ns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)" xmp:CreateDate="2018-06-27T16:46:09-04:00" xmp:ModifyDate="2018-06-27T18:54:09-04:00" xmp:MetadataDate="2018-06-27T18:54:09-04:00" dc:format="image/png" photoshop:ColorMode="2" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:49b5b440-3f0e-4cc2-abbe-ab8ee2083fee" xmpMM:DocumentID="adobe:docid:M
photoshop:4c26fece-3cc9-f043-826c-1472be9cf5c0" xmpMM:OriginalDocumentID="xmp.did:cba95473-cc07-4539-95c2-539337fd86f7"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:cba95473-cc07-4539-95c2-539337fd86f7" stEvt:when="2018-06-27T16:46:09-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:49b5b440-3f0e-4cc2-abbe-ab8ee2083fee" stEvt:when="2018-06-27T18:54:09-04:00" stEvt:softwareAgent="Adobe Photoshop CC (Macintosh)"M
 stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>3A:/
text/plain;charset=utf-8
  "name": "6780.sats"
text/plain;charset=utf-8
  "name": "6786.sats"
text/plain;charset=utf-8
  "name": "8002.sats"
text/plain;charset=utf-8
  "name": "8001.sats"
text/plain;charset=utf-8
  "name": "8003.sats"
text/plain;charset=utf-8
  "name": "6781.sats"
text/plain;charset=utf-8
  "name": "2239.sats"
text/plain;charset=utf-8
  "name": "2289.sats"
text/plain;charset=utf-8
  "name": "2675.sats"
text/plain;charset=utf-8
  "name": "2677.sats"
text/plain;charset=utf-8
  "name": "2365.sats"
text/plain;charset=utf-8
  "name": "2429.sats"
text/plain;charset=utf-8
  "name": "2463.sats"
text/plain;charset=utf-8
  "name": "2443.sats"
text/plain;charset=utf-8
  "name": "2611.sats"
text/plain;charset=utf-8
  "name": "2669.sats"
text/plain;charset=utf-8
  "name": "2453.sats"
text/plain;charset=utf-8
  "name": "2653.sats"
text/plain;charset=utf-8
  "name": "2717.sats"
text/plain;charset=utf-8
  "name": "2237.sats"
text/plain;charset=utf-8
  "name": "2713.sats"
text/plain;charset=utf-8
  "name": "2639.sats"
text/plain;charset=utf-8
  "name": "2535.sats"
text/plain;charset=utf-8
  "name": "2607.sats"
text/plain;charset=utf-8
  "name": "2737.sats"
text/plain;charset=utf-8
  "name": "2349.sats"
text/plain;charset=utf-8
  "name": "2711.sats"
text/plain;charset=utf-8
  "name": "2707.sats"
text/plain;charset=utf-8
  "name": "2425.sats"
text/plain;charset=utf-8
  "name": "2447.sats"
text/plain;charset=utf-8
  "name": "2489.sats"
text/plain;charset=utf-8
  "name": "2427.sats"
text/plain;charset=utf-8
  "name": "2257.sats"
text/plain;charset=utf-8
  "name": "2719.sats"
text/plain;charset=utf-8
  "name": "2569.sats"
text/plain;charset=utf-8
  "name": "2331.sats"
text/plain;charset=utf-8
  "name": "2315.sats"
text/plain;charset=utf-8
  "name": "2285.sats"
text/plain;charset=utf-8
  "name": "2465.sats"
text/plain;charset=utf-8
  "name": "2523.sats"
text/plain;charset=utf-8
  "name": "2275.sats"
text/plain;charset=utf-8
  "name": "2395.sats"
text/plain;charset=utf-8
  "name": "2273.sats"
text/plain;charset=utf-8
  "name": "2313.sats"
text/plain;charset=utf-8
  "name": "2265.sats"
text/plain;charset=utf-8
  "name": "2599.sats"
text/plain;charset=utf-8
  "name": "2671.sats"
text/plain;charset=utf-8
  "name": "2411.sats"
text/plain;charset=utf-8
  "name": "2543.sats"
text/plain;charset=utf-8
  "name": "2659.sats"
text/plain;charset=utf-8
  "name": "2495.sats"
text/plain;charset=utf-8
  "name": "2467.sats"
text/plain;charset=utf-8
  "name": "2251.sats"
text/plain;charset=utf-8
  "name": "2695.sats"
text/plain;charset=utf-8
  "name": "2547.sats"
text/plain;charset=utf-8
  "name": "2403.sats"
text/plain;charset=utf-8
  "name": "2689.sats"
text/plain;charset=utf-8
  "name": "2581.sats"
text/plain;charset=utf-8
  "name": "2537.sats"
text/plain;charset=utf-8
  "name": "2591.sats"
text/plain;charset=utf-8
  "name": "2375.sats"
text/plain;charset=utf-8
  "name": "2729.sats"
text/plain;charset=utf-8
  "name": "2399.sats"
text/plain;charset=utf-8
  "name": "2563.sats"
text/plain;charset=utf-8
  "name": "2309.sats"
text/plain;charset=utf-8
  "name": "2633.sats"
text/plain;charset=utf-8
  "name": "2339.sats"
text/plain;charset=utf-8
  "name": "2625.sats"
text/plain;charset=utf-8
  "name": "2553.sats"
text/plain;charset=utf-8
  "name": "2499.sats"
text/plain;charset=utf-8
  "name": "2513.sats"
text/plain;charset=utf-8
  "name": "2295.sats"
text/plain;charset=utf-8
  "name": "2531.sats"
text/plain;charset=utf-8
  "name": "2439.sats"
text/plain;charset=utf-8
  "name": "2325.sats"
text/plain;charset=utf-8
  "name": "2715.sats"
text/plain;charset=utf-8
  "name": "2515.sats"
text/plain;charset=utf-8
  "name": "2637.sats"
text/plain;charset=utf-8
  "name": "2641.sats"
text/plain;charset=utf-8
  "name": "2483.sats"
text/plain;charset=utf-8
  "name": "2679.sats"
text/plain;charset=utf-8
  "name": "2281.sats"
text/plain;charset=utf-8
  "name": "2235.sats"
text/plain;charset=utf-8
  "name": "2471.sats"
text/plain;charset=utf-8
  "name": "2329.sats"
text/plain;charset=utf-8
  "name": "2577.sats"
text/plain;charset=utf-8
  "name": "2491.sats"
text/plain;charset=utf-8
  "name": "2735.sats"
text/plain;charset=utf-8
  "name": "2559.sats"
text/plain;charset=utf-8
  "name": "2401.sats"
text/plain;charset=utf-8
  "name": "2311.sats"
text/plain;charset=utf-8
  "name": "2359.sats"
text/plain;charset=utf-8
  "name": "2627.sats"
text/plain;charset=utf-8
  "name": "2643.sats"
text/plain;charset=utf-8
  "name": "2529.sats"
text/plain;charset=utf-8
  "name": "2283.sats"
text/plain;charset=utf-8
  "name": "2353.sats"
text/plain;charset=utf-8
  "name": "2725.sats"
text/plain;charset=utf-8
  "name": "2337.sats"
text/plain;charset=utf-8
  "name": "2253.sats"
text/plain;charset=utf-8
  "name": "2477.sats"
text/plain;charset=utf-8
  "name": "2407.sats"
text/plain;charset=utf-8
  "name": "2385.sats"
text/plain;charset=utf-8
  "name": "2533.sats"
text/plain;charset=utf-8
  "name": "2519.sats"
text/plain;charset=utf-8
  "name": "2709.sats"
text/plain;charset=utf-8
  "name": "2249.sats"
text/plain;charset=utf-8
  "name": "2705.sats"
text/plain;charset=utf-8
  "name": "2419.sats"
text/plain;charset=utf-8
  "name": "2457.sats"
text/plain;charset=utf-8
  "name": "2587.sats"
text/plain;charset=utf-8
  "name": "2699.sats"
text/plain;charset=utf-8
  "name": "2701.sats"
text/plain;charset=utf-8
  "name": "2305.sats"
text/plain;charset=utf-8
  "name": "2473.sats"
text/plain;charset=utf-8
  "name": "2301.sats"
text/plain;charset=utf-8
  "name": "2731.sats"
text/plain;charset=utf-8
  "name": "2609.sats"
text/plain;charset=utf-8
  "name": "2279.sats"
text/plain;charset=utf-8
  "name": "2697.sats"
text/plain;charset=utf-8
  "name": "2291.sats"
text/plain;charset=utf-8
  "name": "2703.sats"
text/plain;charset=utf-8
  "name": "2583.sats"
text/plain;charset=utf-8
  "name": "2269.sats"
text/plain;charset=utf-8
  "name": "2567.sats"
text/plain;charset=utf-8
  "name": "2509.sats"
text/plain;charset=utf-8
  "name": "2451.sats"
text/plain;charset=utf-8
  "name": "2733.sats"
text/plain;charset=utf-8
  "name": "2615.sats"
text/plain;charset=utf-8
  "name": "2629.sats"
text/plain;charset=utf-8
  "name": "2661.sats"
text/plain;charset=utf-8
  "name": "2335.sats"
text/plain;charset=utf-8
  "name": "2445.sats"
text/plain;charset=utf-8
  "name": "2545.sats"
text/plain;charset=utf-8
  "name": "2635.sats"
text/plain;charset=utf-8
  "name": "2657.sats"
text/plain;charset=utf-8
  "name": "2413.sats"
text/plain;charset=utf-8
  "name": "2351.sats"
text/plain;charset=utf-8
  "name": "2685.sats"
text/plain;charset=utf-8
  "name": "2245.sats"
text/plain;charset=utf-8
  "name": "2595.sats"
text/plain;charset=utf-8
  "name": "2565.sats"
text/plain;charset=utf-8
  "name": "2493.sats"
text/plain;charset=utf-8
  "name": "2355.sats"
text/plain;charset=utf-8
  "name": "2561.sats"
text/plain;charset=utf-8
  "name": "2361.sats"
text/plain;charset=utf-8
  "name": "2459.sats"
text/plain;charset=utf-8
  "name": "2517.sats"
text/plain;charset=utf-8
  "name": "2393.sats"
text/plain;charset=utf-8
  "name": "2367.sats"
text/plain;charset=utf-8
  "name": "2247.sats"
text/plain;charset=utf-8
  "name": "2649.sats"
text/plain;charset=utf-8
  "name": "2241.sats"
text/plain;charset=utf-8
  "name": "2589.sats"
text/plain;charset=utf-8
  "name": "2469.sats"
text/plain;charset=utf-8
  "name": "2267.sats"
text/plain;charset=utf-8
  "name": "2663.sats"
text/plain;charset=utf-8
  "name": "2681.sats"
text/plain;charset=utf-8
  "name": "2623.sats"
text/plain;charset=utf-8
  "name": "2501.sats"
text/plain;charset=utf-8
  "name": "2571.sats"
text/plain;charset=utf-8
  "name": "2503.sats"
text/plain;charset=utf-8
  "name": "2261.sats"
text/plain;charset=utf-8
  "name": "2431.sats"
text/plain;charset=utf-8
  "name": "2363.sats"
text/plain;charset=utf-8
  "name": "2369.sats"
text/plain;charset=utf-8
  "name": "2423.sats"
text/plain;charset=utf-8
  "name": "2631.sats"
text/plain;charset=utf-8
  "name": "2435.sats"
text/plain;charset=utf-8
  "name": "2481.sats"
text/plain;charset=utf-8
  "name": "2683.sats"
text/plain;charset=utf-8
  "name": "2379.sats"
text/plain;charset=utf-8
  "name": "2693.sats"
text/plain;charset=utf-8
  "name": "2687.sats"
text/plain;charset=utf-8
  "name": "2619.sats"
text/plain;charset=utf-8
  "name": "2397.sats"
text/plain;charset=utf-8
  "name": "2317.sats"
text/plain;charset=utf-8
  "name": "2575.sats"
text/plain;charset=utf-8
  "name": "2613.sats"
text/plain;charset=utf-8
  "name": "2617.sats"
text/plain;charset=utf-8
  "name": "2371.sats"
text/plain;charset=utf-8
  "name": "2651.sats"
text/plain;charset=utf-8
  "name": "2449.sats"
text/plain;charset=utf-8
  "name": "2579.sats"
text/plain;charset=utf-8
  "name": "2243.sats"
text/plain;charset=utf-8
  "name": "2415.sats"
text/plain;charset=utf-8
  "name": "2655.sats"
text/plain;charset=utf-8
  "name": "2373.sats"
text/plain;charset=utf-8
  "name": "2691.sats"
text/plain;charset=utf-8
  "name": "2505.sats"
text/plain;charset=utf-8
  "name": "2347.sats"
text/plain;charset=utf-8
  "name": "2673.sats"
text/plain;charset=utf-8
  "name": "2303.sats"
text/plain;charset=utf-8
  "name": "2271.sats"
text/plain;charset=utf-8
  "name": "2231.sats"
text/plain;charset=utf-8
  "name": "2549.sats"
text/plain;charset=utf-8
  "name": "2479.sats"
text/plain;charset=utf-8
  "name": "2391.sats"
text/plain;charset=utf-8
  "name": "2437.sats"
text/plain;charset=utf-8
  "name": "2507.sats"
text/plain;charset=utf-8
  "name": "2327.sats"
text/plain;charset=utf-8
  "name": "2497.sats"
text/plain;charset=utf-8
  "name": "2389.sats"
text/plain;charset=utf-8
  "name": "2287.sats"
text/plain;charset=utf-8
  "name": "2539.sats"
text/plain;charset=utf-8
  "name": "2487.sats"
text/plain;charset=utf-8
  "name": "2387.sats"
text/plain;charset=utf-8
  "name": "2485.sats"
text/plain;charset=utf-8
  "name": "2551.sats"
text/plain;charset=utf-8
  "name": "2527.sats"
text/plain;charset=utf-8
  "name": "2259.sats"
text/plain;charset=utf-8
  "name": "2541.sats"
text/plain;charset=utf-8
  "name": "2647.sats"
text/plain;charset=utf-8
  "name": "2341.sats"
text/plain;charset=utf-8
  "name": "2665.sats"
text/plain;charset=utf-8
  "name": "2409.sats"
text/plain;charset=utf-8
  "name": "2723.sats"
text/plain;charset=utf-8
  "name": "2377.sats"
text/plain;charset=utf-8
  "name": "2667.sats"
text/plain;charset=utf-8
  "name": "2593.sats"
text/plain;charset=utf-8
  "name": "2433.sats"
text/plain;charset=utf-8
  "name": "2381.sats"
text/plain;charset=utf-8
  "name": "2319.sats"
text/plain;charset=utf-8
  "name": "2573.sats"
text/plain;charset=utf-8
  "name": "2511.sats"
text/plain;charset=utf-8
  "name": "2293.sats"
text/plain;charset=utf-8
  "name": "2343.sats"
text/plain;charset=utf-8
  "name": "2557.sats"
text/plain;charset=utf-8
  "name": "2441.sats"
text/plain;charset=utf-8
  "name": "2605.sats"
text/plain;charset=utf-8
  "name": "2417.sats"
text/plain;charset=utf-8
  "name": "2603.sats"
text/plain;charset=utf-8
  "name": "2297.sats"
text/plain;charset=utf-8
  "name": "2307.sats"
text/plain;charset=utf-8
  "name": "2461.sats"
text/plain;charset=utf-8
  "name": "2383.sats"
text/plain;charset=utf-8
  "name": "2475.sats"
text/plain;charset=utf-8
  "name": "2601.sats"
text/plain;charset=utf-8
  "name": "2645.sats"
text/plain;charset=utf-8
  "name": "2597.sats"
text/plain;charset=utf-8
  "name": "2455.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:1A1545EA923311E29242FA40AA53D5ED" xmpMM:DocumentID="xmp.did:1A1545EB923311E29242FA40AA53D5ED"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1A1545E8923311E29242FA40AA53D5ED" stRef:documentID="xmp.did:1A1545E9923311E29242FA40AA53D5ED"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>+t
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"BAYC.sats"}h!
text/plain;charset=utf-8
  "name": "0919.sats"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"goroishihata.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"xrp.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"GORO.sats"}h!
text/plain;charset=utf-8
  "name": "9035.sats"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"buygoro.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"web56.sats"}h!
~)Z""""""""""""""""]
text/plain;charset=utf-8
beat prod by @cryptobeatz2017
RAP @atarimeshimada
MDETA @TezosNinjas_jpn
RAP @plutoplutosawai
Thanks for all GORORIAN.h!
text/plain;charset=utf-8
  "name": "9033.sats"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"Gorodao.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"iphone56.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"GoroIshihata.sats"}h!
text/plain;charset=utf-8
  "name": "9034.sats"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"ikehaya.sats"}h!
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
FjD=:ETH.ETH:0x73dfff557a69dee831d214a992e2ff8d7ae92531:7236704305:t:30
Bj@79e5dd09b0f37637a079b0c1540f4da222b64de9a7360a718fd5054bb596434d
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
<!--    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>-->
    <!-- threejs@r124
    <script sandbox="allow-scripts" typM
e="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/jaM
vascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" tM
ype="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substM
ring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
urn _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | M
0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
        html, body {
            margin: 0;
            padding: 0;
            max-width: 100%;
            max-height: 100%;
            margin: auto;
     overflow: auto;
            position: fixed;
            object-fit: contain;
            bottom: 0;
            left: 0;
            right: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
nst container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
    //License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
    //Author: @devhontran
    //Twitter: https://twitter.com/DevHontran
    //Website: https://hontran.dev
    const scaler = 1;
    let paper, border;
    let shadown = {x: -5, y: 5};
    let layers = [];
    let padding = 40;
    function cyrb128(str) {
= 1779033703, h2 = 3144134277,
            h3 = 1013904242, h4 = 2773480762;
        for (let i = 0, k; i < str.length; i++) {
            k = str.charCodeAt(i);
            h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
            h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
            h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
            h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
        h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
        h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
        h3 = Math.imul(h1 ^ (h3M
 >>> 17), 951274213);
        h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
        return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
    function sfc32_c(a, b, c, d) {
        a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
        var t = (a + b) | 0;
        a = b ^ b >>> 9;
        b = c + (c << 3) | 0;
        c = (c << 21 | c >>> 11);
        d = d + 1 | 0;
        t = t + d | 0;
        c = c + t | 0;
        return (t >>> 0) / 4294967296;
    // return random value from [l -> r]
function consistentRand (seed, l, r) {
        const rand = sfc32_c(...cyrb128(seed.toString()));
        return l + rand * (r - l)
    function getRandomItem (listP, seed) {
        const pref = []
        for (const x of listP) pref.push(x)
        for (let i = 1; i < listP.length; i++) {
            pref[i] += pref[i - 1]
        for (let i = 0; i < pref.length; i++) pref[i] /= pref[pref.length - 1];
        // get random value from 0->1
        const rand = consistentRand(seed, 0, 1)
r (let i = 0; i < pref.length; i++) {
            if (rand < pref[i]) return i;
    function createRadialGradient(x, y, r, x1, y1, r1) {
        const grd = drawingContext.createRadialGradient(x, y, r, x1, y1, r1);
        grd.addColorStop(0,"#FFFFFF");
        grd.addColorStop(1,"#E5E5E3");
        drawingContext.fillStyle = grd;
        drawingContext.fillRect(0, 0, width, height);
    function artNosie(){
        const w = width * 1.2;
        const h = height * 1.2M
        paper = createGraphics(w, h);
        for(let i = 0 ; i< 100000; i++){
            let x = random(w);
            let y = random(h);
            let dotSize = 10.0*(noise(x/(width / 4), y/(height / 4))*2 - noise(x/width, y/height));
            paper.strokeWeight(random(0.25, 3));
            paper.stroke(random(20, 80), random(1+dotSize, 4+dotSize));
            paper.point(x, y);
    function generabox(col, pos, si){
        const layer = createGraphics(width, height);
ill(140, 178, 250, 56);
        layer.noStroke();
        layer.rect(pos.x + shadown.x, pos.y + shadown.y, si.w, si.h);
        layer.filter(BLUR, 3);
        layer.fill(col.r, col.g, col.b, col.a);
        layer.noStroke();
        layer.rect(pos.x, pos.y, si.w, si.h);
        layers.push(layer);
    function setup() {
        const hash = rand ? rand : Math.random();
        const fCol = {r: 255, g: 255, b: 255};
        const s = min(window.innerWidth, window.innerHeight)
        createCanvas(s,s);M
        for(let i=0; i<9; i++){
            const tHash = `${hash}_${i}`;
            const cyrHash = cyrb128(tHash);
            const mixHash_color_r = consistentRand(cyrHash[0], 0, 1);
            const mixHash_color_g = consistentRand(cyrHash[1], 0, 255);
            const mixHash_color_b = consistentRand(cyrHash[2], 0, 255);
            const mixHash_color_a = 255;//consistentRand(cyrHash[3], 100, 255);
            const sw = consistentRand(cyrHash[0],50, width / 2);
            const sh = consistentRaM
nd(cyrHash[3], 50, height / 2);
            const col = {r: mixHash_color_r, g: mixHash_color_g, b: mixHash_color_b, a: mixHash_color_a};
            const si = {w: sw, h: sh};
            const pos_x = consistentRand(cyrHash[1], padding, width- padding - si.w);
            const pos_y = consistentRand(cyrHash[2], padding, height- padding - si.h);
            const pos = {x: pos_x, y: pos_y}
            // console.log('___i', col, pos, si);
            generabox(col, pos, si);
        const borderSize = 30;
        border = createGraphics(width, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(width - borderSize, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, width, borderSize);
        border.fill(fCol.r, fCol.g, fCol.b, 255)M
        border.noStroke();
        border.rect(0, height - borderSize, width, borderSize);
    function draw() {
        background('#ffffff');
        blendMode(BLEND);
        for(let i=0; i<9; i++){
            image(layers[i], 0, 0, width, height);
        blendMode(MULTIPLY)
        createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, height);
        blendMode(MULTIPLY);
        image(paper, 0, 0, width, height);
        image(border,M-
 0, 0, width, height);
    function windowResized() {
        const s = min(window.innerWidth, window.innerHeight)
        resizeCanvas(s, s);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
<!--    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>-->
    <!-- threejs@r124
    <script sandbox="allow-scripts" typM
e="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/jaM
vascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" tM
ype="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substM
ring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
urn _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | M
0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
        html, body {
            margin: 0;
            padding: 0;
            max-width: 100%;
            max-height: 100%;
            margin: auto;
     overflow: auto;
            position: fixed;
            object-fit: contain;
            bottom: 0;
            left: 0;
            right: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
nst container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
    //License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
    //Author: @devhontran
    //Twitter: https://twitter.com/DevHontran
    //Website: https://hontran.dev
    const scaler = 1;
    let paper, border;
    let shadown = {x: -5, y: 5};
    let layers = [];
    let padding = 40;
    function cyrb128(str) {
= 1779033703, h2 = 3144134277,
            h3 = 1013904242, h4 = 2773480762;
        for (let i = 0, k; i < str.length; i++) {
            k = str.charCodeAt(i);
            h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
            h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
            h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
            h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
        h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
        h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
        h3 = Math.imul(h1 ^ (h3M
 >>> 17), 951274213);
        h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
        return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
    function sfc32_c(a, b, c, d) {
        a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
        var t = (a + b) | 0;
        a = b ^ b >>> 9;
        b = c + (c << 3) | 0;
        c = (c << 21 | c >>> 11);
        d = d + 1 | 0;
        t = t + d | 0;
        c = c + t | 0;
        return (t >>> 0) / 4294967296;
    // return random value from [l -> r]
function consistentRand (seed, l, r) {
        const rand = sfc32_c(...cyrb128(seed.toString()));
        return l + rand * (r - l)
    function getRandomItem (listP, seed) {
        const pref = []
        for (const x of listP) pref.push(x)
        for (let i = 1; i < listP.length; i++) {
            pref[i] += pref[i - 1]
        for (let i = 0; i < pref.length; i++) pref[i] /= pref[pref.length - 1];
        // get random value from 0->1
        const rand = consistentRand(seed, 0, 1)
r (let i = 0; i < pref.length; i++) {
            if (rand < pref[i]) return i;
    function createRadialGradient(x, y, r, x1, y1, r1) {
        const grd = drawingContext.createRadialGradient(x, y, r, x1, y1, r1);
        grd.addColorStop(0,"#FFFFFF");
        grd.addColorStop(1,"#E5E5E3");
        drawingContext.fillStyle = grd;
        drawingContext.fillRect(0, 0, width, height);
    function artNosie(){
        const w = width * 1.2;
        const h = height * 1.2M
        paper = createGraphics(w, h);
        for(let i = 0 ; i< 100000; i++){
            let x = random(w);
            let y = random(h);
            let dotSize = 10.0*(noise(x/(width / 4), y/(height / 4))*2 - noise(x/width, y/height));
            paper.strokeWeight(random(0.25, 3));
            paper.stroke(random(20, 80), random(1+dotSize, 4+dotSize));
            paper.point(x, y);
    function generabox(col, pos, si){
        const layer = createGraphics(width, height);
ill(140, 178, 250, 56);
        layer.noStroke();
        layer.rect(pos.x + shadown.x, pos.y + shadown.y, si.w, si.h);
        layer.filter(BLUR, 3);
        layer.fill(col.r, col.g, col.b, col.a);
        layer.noStroke();
        layer.rect(pos.x, pos.y, si.w, si.h);
        layers.push(layer);
    function setup() {
        const hash = rand ? rand : Math.random();
        const fCol = {r: 255, g: 255, b: 255};
        const s = min(window.innerWidth, window.innerHeight)
        createCanvas(s,s);M
        for(let i=0; i<9; i++){
            const tHash = `${hash}_${i}`;
            const cyrHash = cyrb128(tHash);
            const mixHash_color_r = consistentRand(cyrHash[0], 0, 1);
            const mixHash_color_g = consistentRand(cyrHash[1], 0, 255);
            const mixHash_color_b = consistentRand(cyrHash[2], 0, 255);
            const mixHash_color_a = 255;//consistentRand(cyrHash[3], 100, 255);
            const sw = consistentRand(cyrHash[0],50, width / 2);
            const sh = consistentRaM
nd(cyrHash[3], 50, height / 2);
            const col = {r: mixHash_color_r, g: mixHash_color_g, b: mixHash_color_b, a: mixHash_color_a};
            const si = {w: sw, h: sh};
            const pos_x = consistentRand(cyrHash[1], padding, width- padding - si.w);
            const pos_y = consistentRand(cyrHash[2], padding, height- padding - si.h);
            const pos = {x: pos_x, y: pos_y}
            // console.log('___i', col, pos, si);
            generabox(col, pos, si);
        const borderSize = 30;
        border = createGraphics(width, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(width - borderSize, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, width, borderSize);
        border.fill(fCol.r, fCol.g, fCol.b, 255)M
        border.noStroke();
        border.rect(0, height - borderSize, width, borderSize);
    function draw() {
        background('#ffffff');
        blendMode(BLEND);
        for(let i=0; i<9; i++){
            image(layers[i], 0, 0, width, height);
        blendMode(MULTIPLY)
        createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, height);
        blendMode(MULTIPLY);
        image(paper, 0, 0, width, height);
        image(border,M-
 0, 0, width, height);
    function windowResized() {
        const s = min(window.innerWidth, window.innerHeight)
        resizeCanvas(s, s);
 Add your code here
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3133.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9099.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5155.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7877.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1811.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2822.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1511.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3033.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7077.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6166.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1311.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5055.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1979.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1982.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6566.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1411.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5655.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8788.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2722.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7797.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3933.sats"}h!
text/plain;charset=utf-8
  "name": "venusaur.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6966.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3833.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7977.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1918.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"Ordinalsbot.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5755.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1968.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5855.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7787.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1986.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6766.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1974.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1983.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8168.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5955.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7677.sats"}h!
>j<+:BTC.BTC:thor12d79vkclcdvczsxf7wa8p5d0spu2ymhgprshre:wr:100
text/plain;charset=utf-8
  "name": "qwerty.sats"
text/plain;charset=utf-8
  "name": "test.sats"
text/plain;charset=utf-8
  "name": "aipad.sats"
text/plain;charset=utf-8
  "name": "vinted.sats"
Bj@=:BNB.BNB:bnb1s0u9vct2qx367spf35l94v6pggr77lcvwk5l00:74922208::0
Bj@=:BNB.BNB:bnb1ehp4f9gy5gq852nutvumka0fuqjqxevcw7t2ez:12069298::0
FjDOUT:BBEAAA308C78E307DC3F5B0B24E0AE4B7D3D69015B232044F96C03648F2C5396
2023-02-28T05:28:32+00:00
2023-02-28T05:28:32+00:00
2023-02-28T05:28:32+00:00
text/plain;charset=utf-8
  "name": "steiner.sats"
FjDOUT:BF46E4F9E93742AE3C07940F47A52CE808B6407373AF2BB7315749D8D147926F
FjDOUT:A293B2253FE692B65C9E44C01DAF514179489B2F3B7730D90EB2897AD2588566
text/plain;charset=utf-8
  "name": "2922.sats"
text/plain;charset=utf-8
  "name": "3133.sats"
text/plain;charset=utf-8
  "name": "3033.sats"
text/plain;charset=utf-8
  "name": "3233.sats"
text/plain;charset=utf-8
  "name": "3433.sats"
text/plain;charset=utf-8
  "name": "hash_bender.sats"
text/plain;charset=utf-8
  "name": "hashbender.sats"
text/plain;charset=utf-8
  "name": "tropofarmer.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "taprootwizards.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"ooh.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"little.sats"}h!
text/plain;charset=utf-8
  "name": "ordinaliens.sats"
text/plain;charset=utf-8
  "name": "muz.sats"
text/plain;charset=utf-8
  "name": "ordinalpunks.sats"
text/plain;charset=utf-8
  "name": "beautifulnfts.sats"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"ilikebig.sats"}h!
text/plain;charset=utf-8
  "name": "bosch.sats"
text/plain;charset=utf-8
  "name": "volkswagen.sats"
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"cryptowhale.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
FjD=:ETH.ETH:0x73dfff557a69dee831d214a992e2ff8d7ae92531:5142012371:t:30
text/plain;charset=utf-8
text/plain;charset=utf-8
FjDOUT:0EB7EA3D862ABF30081DE74C17B404A6C83F212FA3346098A0B44F8F96D4F7B5
FjDOUT:688AFACAF57F3006F47A1EDA506D5E51082A30E9B044D1D4D771D4CD46E12CF3
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "wartortle.sats"
Aj?=:ETH.ETH:0x870EA37D359FB0922D7d9545d3197D9f5f90ac06:2318348::0
text/plain;charset=utf-8
  "name": "eindhoven.sats"
DjB=:BNB.BNB:bnb15je032mmvw6pg5sslze4k8577ulz63wcm32ncy:11959842:te:0
LjJ=:BNB.BUSD-BD1:bnb158rmxqgs8kfl8pqtscqxqa7p6hxhr76796c2nd:71802329755:te:0
text/plain;charset=utf-8
  "name": "3633.sats"
text/plain;charset=utf-8
  "name": "3533.sats"
text/plain;charset=utf-8
  "name": "3833.sats"
text/plain;charset=utf-8
  "name": "3733.sats"
text/plain;charset=utf-8
  "name": "3933.sats"
text/plain;charset=utf-8
  "name": "ryancarson.sats"
text/plain;charset=utf-8
  "name": "ordswap.sats"
text/plain;charset=utf-8
  "name": "ordinalswallet.sats"
text/plain;charset=utf-8
  "name": "flowstay.sats"
text/plain;charset=utf-8
  "name": "xverse.sats"
text/plain;charset=utf-8
  "name": "twelvefold.sats"
text/plain;charset=utf-8
  "name": "sap.sats"
text/plain;charset=utf-8
  "name": "siemens.sats"
text/plain;charset=utf-8
  "name": "windows.sats"
text/plain;charset=utf-8
  "name": "telekom.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"stiefel.sats"}h!
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:FE6348C3B23D11EDA9D6BCB15CDD0F94" xmpMM:DocumentID="xmp.did:FE6348C4B23D11EDA9D6BCB15CDD0F94"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FE6348C1B23D11EDA9D6BCB15CDD0F94" stRef:documentID="xmp.did:FE6348C2B23D11EDA9D6BCB15CDD0F94"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:FEBCFE68B23D11EDBB01B864AC012F34" xmpMM:DocumentID="xmp.did:FEBCFE69B23D11EDBB01B864AC012F34"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FEBCFE66B23D11EDBB01B864AC012F34" stRef:documentID="xmp.did:FEBCFE67B23D11EDBB01B864AC012F34"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
text/plain;charset=utf-8
  "name": "2851.sats"
text/plain;charset=utf-8
  "name": "2965.sats"
text/plain;charset=utf-8
  "name": "2919.sats"
text/plain;charset=utf-8
  "name": "2825.sats"
text/plain;charset=utf-8
  "name": "2871.sats"
text/plain;charset=utf-8
  "name": "2753.sats"
text/plain;charset=utf-8
  "name": "2757.sats"
text/plain;charset=utf-8
  "name": "2813.sats"
text/plain;charset=utf-8
  "name": "2951.sats"
text/plain;charset=utf-8
  "name": "2955.sats"
text/plain;charset=utf-8
  "name": "2857.sats"
text/plain;charset=utf-8
  "name": "2781.sats"
text/plain;charset=utf-8
  "name": "2775.sats"
text/plain;charset=utf-8
  "name": "2995.sats"
text/plain;charset=utf-8
  "name": "2875.sats"
text/plain;charset=utf-8
  "name": "2815.sats"
text/plain;charset=utf-8
  "name": "2769.sats"
text/plain;charset=utf-8
  "name": "2789.sats"
text/plain;charset=utf-8
  "name": "2971.sats"
text/plain;charset=utf-8
  "name": "2997.sats"
text/plain;charset=utf-8
  "name": "2915.sats"
text/plain;charset=utf-8
  "name": "2889.sats"
text/plain;charset=utf-8
  "name": "2779.sats"
text/plain;charset=utf-8
  "name": "2949.sats"
text/plain;charset=utf-8
  "name": "2873.sats"
text/plain;charset=utf-8
  "name": "2797.sats"
text/plain;charset=utf-8
  "name": "2881.sats"
text/plain;charset=utf-8
  "name": "2983.sats"
text/plain;charset=utf-8
  "name": "2961.sats"
text/plain;charset=utf-8
  "name": "2937.sats"
text/plain;charset=utf-8
  "name": "2827.sats"
text/plain;charset=utf-8
  "name": "2819.sats"
text/plain;charset=utf-8
  "name": "2741.sats"
text/plain;charset=utf-8
  "name": "2755.sats"
text/plain;charset=utf-8
  "name": "2973.sats"
text/plain;charset=utf-8
  "name": "2771.sats"
text/plain;charset=utf-8
  "name": "2795.sats"
text/plain;charset=utf-8
  "name": "2835.sats"
text/plain;charset=utf-8
  "name": "2783.sats"
text/plain;charset=utf-8
  "name": "2867.sats"
text/plain;charset=utf-8
  "name": "2913.sats"
text/plain;charset=utf-8
  "name": "2801.sats"
text/plain;charset=utf-8
  "name": "2749.sats"
text/plain;charset=utf-8
  "name": "2853.sats"
text/plain;charset=utf-8
  "name": "2841.sats"
text/plain;charset=utf-8
  "name": "2947.sats"
text/plain;charset=utf-8
  "name": "2927.sats"
text/plain;charset=utf-8
  "name": "2817.sats"
text/plain;charset=utf-8
  "name": "2855.sats"
text/plain;charset=utf-8
  "name": "2839.sats"
text/plain;charset=utf-8
  "name": "2877.sats"
text/plain;charset=utf-8
  "name": "2893.sats"
text/plain;charset=utf-8
  "name": "2887.sats"
text/plain;charset=utf-8
  "name": "2843.sats"
text/plain;charset=utf-8
  "name": "2863.sats"
text/plain;charset=utf-8
  "name": "2967.sats"
text/plain;charset=utf-8
  "name": "2959.sats"
text/plain;charset=utf-8
  "name": "2849.sats"
text/plain;charset=utf-8
  "name": "2761.sats"
text/plain;charset=utf-8
  "name": "2957.sats"
text/plain;charset=utf-8
  "name": "2891.sats"
text/plain;charset=utf-8
  "name": "2767.sats"
text/plain;charset=utf-8
  "name": "2833.sats"
text/plain;charset=utf-8
  "name": "2991.sats"
text/plain;charset=utf-8
  "name": "2837.sats"
text/plain;charset=utf-8
  "name": "2793.sats"
text/plain;charset=utf-8
  "name": "2975.sats"
text/plain;charset=utf-8
  "name": "2931.sats"
text/plain;charset=utf-8
  "name": "2901.sats"
text/plain;charset=utf-8
  "name": "2845.sats"
text/plain;charset=utf-8
  "name": "2885.sats"
text/plain;charset=utf-8
  "name": "2861.sats"
text/plain;charset=utf-8
  "name": "2831.sats"
text/plain;charset=utf-8
  "name": "2933.sats"
text/plain;charset=utf-8
  "name": "2909.sats"
text/plain;charset=utf-8
  "name": "2895.sats"
text/plain;charset=utf-8
  "name": "2803.sats"
text/plain;charset=utf-8
  "name": "2943.sats"
text/plain;charset=utf-8
  "name": "2987.sats"
text/plain;charset=utf-8
  "name": "2829.sats"
text/plain;charset=utf-8
  "name": "2791.sats"
text/plain;charset=utf-8
  "name": "2865.sats"
text/plain;charset=utf-8
  "name": "2899.sats"
text/plain;charset=utf-8
  "name": "2905.sats"
text/plain;charset=utf-8
  "name": "2743.sats"
text/plain;charset=utf-8
  "name": "2935.sats"
text/plain;charset=utf-8
  "name": "2809.sats"
text/plain;charset=utf-8
  "name": "2869.sats"
text/plain;charset=utf-8
  "name": "2811.sats"
text/plain;charset=utf-8
  "name": "2923.sats"
text/plain;charset=utf-8
  "name": "2805.sats"
text/plain;charset=utf-8
  "name": "2847.sats"
text/plain;charset=utf-8
  "name": "2953.sats"
text/plain;charset=utf-8
  "name": "2883.sats"
text/plain;charset=utf-8
  "name": "2759.sats"
text/plain;charset=utf-8
  "name": "2799.sats"
text/plain;charset=utf-8
  "name": "2989.sats"
text/plain;charset=utf-8
  "name": "2925.sats"
text/plain;charset=utf-8
  "name": "2969.sats"
text/plain;charset=utf-8
  "name": "2917.sats"
text/plain;charset=utf-8
  "name": "2979.sats"
text/plain;charset=utf-8
  "name": "2787.sats"
text/plain;charset=utf-8
  "name": "2945.sats"
text/plain;charset=utf-8
  "name": "2941.sats"
text/plain;charset=utf-8
  "name": "2981.sats"
text/plain;charset=utf-8
  "name": "2985.sats"
text/plain;charset=utf-8
  "name": "2897.sats"
text/plain;charset=utf-8
  "name": "2977.sats"
text/plain;charset=utf-8
  "name": "2859.sats"
text/plain;charset=utf-8
  "name": "2773.sats"
text/plain;charset=utf-8
  "name": "2745.sats"
text/plain;charset=utf-8
  "name": "2763.sats"
text/plain;charset=utf-8
  "name": "2807.sats"
text/plain;charset=utf-8
  "name": "2907.sats"
text/plain;charset=utf-8
  "name": "2739.sats"
text/plain;charset=utf-8
  "name": "2747.sats"
text/plain;charset=utf-8
  "name": "2903.sats"
text/plain;charset=utf-8
  "name": "2765.sats"
text/plain;charset=utf-8
  "name": "2823.sats"
text/plain;charset=utf-8
  "name": "2879.sats"
text/plain;charset=utf-8
  "name": "2993.sats"
text/plain;charset=utf-8
  "name": "2963.sats"
text/plain;charset=utf-8
  "name": "2911.sats"
text/plain;charset=utf-8
  "name": "2939.sats"
text/plain;charset=utf-8
  "name": "2751.sats"
text/plain;charset=utf-8
  "name": "2785.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:1A1545EE923311E29242FA40AA53D5ED" xmpMM:DocumentID="xmp.did:1A1545EF923311E29242FA40AA53D5ED"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1A1545EC923311E29242FA40AA53D5ED" stRef:documentID="xmp.did:1A1545ED923311E29242FA40AA53D5ED"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
  "name": "4490.sats"
text/plain;charset=utf-8
  "name": "3312.sats"
text/plain;charset=utf-8
  "name": "lobster.sats"
text/plain;charset=utf-8
  "name": "6690.sats"
text/plain;charset=utf-8
  "name": "4480.sats"
text/plain;charset=utf-8
  "name": "6640.sats"
text/plain;charset=utf-8
beat prod by @cryptobeatz2017
RAP @atarimeshimada
META @TezosNinjas_jpn
RAP @plutoplutosawaih!
text/plain;charset=utf-8
  "name": "3316.sats"
text/plain;charset=utf-8
  "name": "5530.sats"
text/plain;charset=utf-8
  "name": "6670.sats"
text/plain;charset=utf-8
  "name": "5560.sats"
text/plain;charset=utf-8
  "name": "3315.sats"
text/plain;charset=utf-8
  "name": "3314.sats"
text/plain;charset=utf-8
  "name": "5580.sats"
text/plain;charset=utf-8
  "name": "6610.sats"
text/plain;charset=utf-8
  "name": "3340.sats"
text/plain;charset=utf-8
  "name": "3310.sats"
text/plain;charset=utf-8
  "name": "4460.sats"
text/plain;charset=utf-8
  "name": "3360.sats"
text/plain;charset=utf-8
  "name": "3302.sats"
text/plain;charset=utf-8
  "name": "3308.sats"
text/plain;charset=utf-8
  "name": "6630.sats"
text/plain;charset=utf-8
  "name": "7740.sats"
text/plain;charset=utf-8
  "name": "4420.sats"
text/plain;charset=utf-8
  "name": "3319.sats"
text/plain;charset=utf-8
  "name": "7760.sats"
text/plain;charset=utf-8
  "name": "6650.sats"
text/plain;charset=utf-8
  "name": "3306.sats"
text/plain;charset=utf-8
  "name": "3301.sats"
text/plain;charset=utf-8
  "name": "5570.sats"
text/plain;charset=utf-8
 https://ordinals.com/content/86d9243d8c184f2b6da7ee9f598476d6cbd67ee859383b48585d3665afd1eeb7i0
text/plain;charset=utf-8
  "name": "4430.sats"
text/plain;charset=utf-8
  "name": "3318.sats"
text/plain;charset=utf-8
  "name": "7720.sats"
text/plain;charset=utf-8
  "name": "7710.sats"
text/plain;charset=utf-8
  "name": "5510.sats"
text/plain;charset=utf-8
  "name": "3350.sats"
text/plain;charset=utf-8
  "name": "4470.sats"
text/plain;charset=utf-8
  "name": "3320.sats"
text/plain;charset=utf-8
  "name": "5590.sats"
text/plain;charset=utf-8
  "name": "6630.sats"
text/plain;charset=utf-8
  "name": "3307.sats"
text/plain;charset=utf-8
  "name": "3390.sats"
text/plain;charset=utf-8
  "name": "7730.sats"
text/plain;charset=utf-8
  "name": "4410.sats"
text/plain;charset=utf-8
  "name": "3370.sats"
text/plain;charset=utf-8
  "name": "3317.sats"
text/plain;charset=utf-8
  "name": "5540.sats"
text/plain;charset=utf-8
  "name": "3305.sats"
text/plain;charset=utf-8
  "name": "3304.sats"
text/plain;charset=utf-8
  "name": "4450.sats"
text/plain;charset=utf-8
  "name": "3309.sats"
text/plain;charset=utf-8
  "name": "3380.sats"
FjDOUT:617E5093FB8D90434312748DF698A5CB112A3CFBFC61CE2CB7D1378BAFDE1B8C
text/plain;charset=utf-8
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Leica.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"KENZO.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"LOEWE.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"btcs.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"btcshop.sats"}h!
text/plain;charset=utf-8
  "name": "7277.sats"
text/plain;charset=utf-8
  "name": "breda.sats"
text/plain;charset=utf-8
  "name": "zapdos.sats"
text/plain;charset=utf-8
  "name": "ripcache.sats"
text/plain;charset=utf-8
  "name": "debussy.sats"
text/plain;charset=utf-8
  "name": "drjay.sats"
text/plain;charset=utf-8
  "name": "skinned.sats"
text/plain;charset=utf-8
  "name": "crownjewel.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "articuno.sats"
text/plain;charset=utf-8
  "name": "3011.sats"
text/plain;charset=utf-8
  "name": "3049.sats"
text/plain;charset=utf-8
  "name": "3043.sats"
text/plain;charset=utf-8
  "name": "3017.sats"
text/plain;charset=utf-8
  "name": "3031.sats"
text/plain;charset=utf-8
  "name": "3005.sats"
text/plain;charset=utf-8
  "name": "3001.sats"
text/plain;charset=utf-8
  "name": "3053.sats"
text/plain;charset=utf-8
  "name": "3027.sats"
text/plain;charset=utf-8
  "name": "3019.sats"
text/plain;charset=utf-8
  "name": "3033.sats"
text/plain;charset=utf-8
  "name": "3041.sats"
text/plain;charset=utf-8
  "name": "3039.sats"
text/plain;charset=utf-8
  "name": "3025.sats"
text/plain;charset=utf-8
  "name": "3029.sats"
text/plain;charset=utf-8
  "name": "3035.sats"
text/plain;charset=utf-8
  "name": "3045.sats"
text/plain;charset=utf-8
  "name": "3047.sats"
text/plain;charset=utf-8
  "name": "3015.sats"
text/plain;charset=utf-8
  "name": "3009.sats"
text/plain;charset=utf-8
  "name": "3055.sats"
text/plain;charset=utf-8
  "name": "3023.sats"
text/plain;charset=utf-8
  "name": "3037.sats"
text/plain;charset=utf-8
  "name": "3051.sats"
text/plain;charset=utf-8
  "name": "3013.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:163B8DE596CD11E2BD6DB01F245C56D2" xmpMM:DocumentID="xmp.did:163B8DE696CD11E2BD6DB01F245C56D2"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:163B8DE396CD11E2BD6DB01F245C56D2" stRef:documentID="xmp.did:163B8DE496CD11E2BD6DB01F245C56D2"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
*>eUUUUUUUUUUUUUUUUUUUX
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.9ccc4de93, 2022/03/14-14:07:22        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntaxM
-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:1ffa50f7-e31b-441f-b40b-9c26528c31bc" xmpMM:DocumentID="xmp.did:1D4EE25BA94511ED8BF0A755337559D2" xmpMM:InstanceID="xmp.iid:1D4EE25AA94511ED8BF0A755337559D2" xmp:CreatorTool="Adobe Photoshop 23.3 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:405e2ad1-336c-4c6a-8fd4-4c23461bcb19" stRef:doM
cumentID="xmp.did:1ffa50f7-e31b-441f-b40b-9c26528c31bc"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"9876543210.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
$4A%@CQRTU6DEFSV`abq&e
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"arek.sats"}h!
2023-02-28T08:28:46+00:00
2023-02-28T08:28:46+00:00a
2023-02-28T08:28:46+00:006
text/plain;charset=utf-8
  "name": "ichstack.sats"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"onlyafew.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
  "name": "wes67.sats"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"11111111.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"MetaBB.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"0987654321.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"Hol.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"xiand.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"112233.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"arek420.sats"}h!
2023-02-28T09:18:05+00:00
2023-02-28T09:18:05+00:00
=(tEXtdate:timestamp
2023-02-28T09:18:19+00:00
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"7777777.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"666420.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"muthu.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"Abdurrahman.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "ordapes.sats"
text/plain;charset=utf-8
BLOOD CODE - A B A C A B B
CHEAT MODE - Down, Up, Left, Left, A, Right, Downh!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"amc.sats"}h!
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"freebitcoin.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "doggfather.sats"
FjDOUT:ECBBFFF5D6E9913EB13768E9A45C74160BCAF14DC1FE6D2D66C0C3EA45E6B5E5
{"attributes":[{"trait_type":"Fur","value":"Pink"},{"trait_type":"Background","value":"Yellow"},{"trait_type":"Hat","value":"Bunny Ears"},{"trait_type":"Mouth","value":"Bored Unshaven"},{"trait_type":"Eyes","value":"Bored"}],"external_url":"https://baycbitcoin.com/index/bayc/2334","image":"ipfs://QmWwSKeAhhs1CNNDDkMaYgdWvZjrCUyfczc51JXp81i3H1/2334.png"}
 .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQRO
&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
Bj@=:ETH.ETH:0x90efd865EBd1f96CFB3Be002bC3f9D7F5732AE96:28745308::0
text/plain;charset=utf-8
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1350998874
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"pepechecks.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8579.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9870.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2903.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8578.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9871.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"missbitcoin.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"puntacana.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9875.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"marina.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8576.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8575.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
<!--    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>-->
    <!-- threejs@r124
    <script sandbox="allow-scripts" typM
e="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/jaM
vascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" tM
ype="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substM
ring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
urn _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | M
0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
        html, body {
            margin: 0;
            padding: 0;
            max-width: 100%;
            max-height: 100%;
            margin: auto;
     overflow: auto;
            position: fixed;
            object-fit: contain;
            bottom: 0;
            left: 0;
            right: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
nst container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
    //License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
    //Author: @devhontran
    //Twitter: https://twitter.com/DevHontran
    //Website: https://hontran.dev
    const scaler = 1;
    let paper, border;
    let shadown = {x: -5, y: 5};
    let layers = [];
    let padding = 40;
    function cyrb128(str) {
= 1779033703, h2 = 3144134277,
            h3 = 1013904242, h4 = 2773480762;
        for (let i = 0, k; i < str.length; i++) {
            k = str.charCodeAt(i);
            h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
            h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
            h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
            h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
        h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
        h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
        h3 = Math.imul(h1 ^ (h3M
 >>> 17), 951274213);
        h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
        return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
    function sfc32_c(a, b, c, d) {
        a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
        var t = (a + b) | 0;
        a = b ^ b >>> 9;
        b = c + (c << 3) | 0;
        c = (c << 21 | c >>> 11);
        d = d + 1 | 0;
        t = t + d | 0;
        c = c + t | 0;
        return (t >>> 0) / 4294967296;
    // return random value from [l -> r]
function consistentRand (seed, l, r) {
        const rand = sfc32_c(...cyrb128(seed.toString()));
        return l + rand * (r - l)
    function getRandomItem (listP, seed) {
        const pref = []
        for (const x of listP) pref.push(x)
        for (let i = 1; i < listP.length; i++) {
            pref[i] += pref[i - 1]
        for (let i = 0; i < pref.length; i++) pref[i] /= pref[pref.length - 1];
        // get random value from 0->1
        const rand = consistentRand(seed, 0, 1)
r (let i = 0; i < pref.length; i++) {
            if (rand < pref[i]) return i;
    function createRadialGradient(x, y, r, x1, y1, r1) {
        const grd = drawingContext.createRadialGradient(x, y, r, x1, y1, r1);
        grd.addColorStop(0,"#FFFFFF");
        grd.addColorStop(1,"#E5E5E3");
        drawingContext.fillStyle = grd;
        drawingContext.fillRect(0, 0, width, height);
    function artNosie(){
        const w = width * 1.2;
        const h = height * 1.2M
        paper = createGraphics(w, h);
        for(let i = 0 ; i< 100000; i++){
            let x = random(w);
            let y = random(h);
            let dotSize = 10.0*(noise(x/(width / 4), y/(height / 4))*2 - noise(x/width, y/height));
            paper.strokeWeight(random(0.25, 3));
            paper.stroke(random(20, 80), random(1+dotSize, 4+dotSize));
            paper.point(x, y);
    function generabox(col, pos, si){
        const layer = createGraphics(width, height);
ill(140, 178, 250, 56);
        layer.noStroke();
        layer.rect(pos.x + shadown.x, pos.y + shadown.y, si.w, si.h);
        layer.filter(BLUR, 3);
        layer.fill(col.r, col.g, col.b, col.a);
        layer.noStroke();
        layer.rect(pos.x, pos.y, si.w, si.h);
        layers.push(layer);
    function setup() {
        const hash = rand ? rand : Math.random();
        const fCol = {r: 255, g: 255, b: 255};
        const s = min(window.innerWidth, window.innerHeight)
        createCanvas(s,s);M
        for(let i=0; i<9; i++){
            const tHash = `${hash}_${i}`;
            const cyrHash = cyrb128(tHash);
            const mixHash_color_r = consistentRand(cyrHash[0], 0, 1);
            const mixHash_color_g = consistentRand(cyrHash[1], 0, 255);
            const mixHash_color_b = consistentRand(cyrHash[2], 0, 255);
            const mixHash_color_a = 255;//consistentRand(cyrHash[3], 100, 255);
            const sw = consistentRand(cyrHash[0],50, width / 2);
            const sh = consistentRaM
nd(cyrHash[3], 50, height / 2);
            const col = {r: mixHash_color_r, g: mixHash_color_g, b: mixHash_color_b, a: mixHash_color_a};
            const si = {w: sw, h: sh};
            const pos_x = consistentRand(cyrHash[1], padding, width- padding - si.w);
            const pos_y = consistentRand(cyrHash[2], padding, height- padding - si.h);
            const pos = {x: pos_x, y: pos_y}
            // console.log('___i', col, pos, si);
            generabox(col, pos, si);
        const borderSize = 30;
        border = createGraphics(width, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(width - borderSize, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, width, borderSize);
        border.fill(fCol.r, fCol.g, fCol.b, 255)M
        border.noStroke();
        border.rect(0, height - borderSize, width, borderSize);
    function draw() {
        background('#ffffff');
        blendMode(BLEND);
        for(let i=0; i<9; i++){
            image(layers[i], 0, 0, width, height);
        blendMode(MULTIPLY)
        createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, height);
        blendMode(MULTIPLY);
        image(paper, 0, 0, width, height);
        image(border,M-
 0, 0, width, height);
    function windowResized() {
        const s = min(window.innerWidth, window.innerHeight)
        resizeCanvas(s, s);
 Add your code here
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9877.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1612.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1406.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9872.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"verifiedpepe.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"mrbitcoin.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"msbitcoin.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"badgirl.sats"}h!
text/plain;charset=utf-8
  "name": "clefable.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9873.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"capcana.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8577.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"verifiedord.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"mrsbitcoin.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9879.sats"}h!
text/plain;charset=utf-8
  "name": "bordeaux.sats"
text/plain;charset=utf-8
  "name": "denbosch.sats"
CjA=:ETH.ETH:0xa1c83d5Ef0929728D0A1801Bf6730DE6A6551A10:249217677::0
Aj?=:ETH.ETH:0xc69473Cb41Da667fe69dCdDbC29e72d98A2f0Ef4:6627169::0
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3166.sats"}h!
CjA=:BNB.BNB:bnb10uztpet3klxs7av9suh4vdtc2pqt96f3czku6p:156965860::0
FjDOUT:C38208897810BAA80AD097FF9051443AE4DAB1FA54505B31235E2DE8A4C0634C
FjDOUT:861CBEB3DD410250DD878747EA3D8F535447800294EAA1A89D80E8945B63B524
FjDOUT:0CE7CAA952460886A85531292BC8B1A0B8EA603E6A6D61C90C5A2461261407A1
FjDOUT:9671328C960D7E780EB9CEE3C026EA17007803C80CD9C31EB565E878E06A3A2E
FjDOUT:516398BF97B6005C9396029061144558D31D1483EBB65510E39A56B78C52F404
FjDOUT:8DFEF24065A61DEBEAB4C838AD347656AE0943DB003455A8AD4DF06E3E505BA9
FjDOUT:7322530E3E2A12C8DB841282CBE10136D0DA5A5A2D2795A022C51876914B9640
FjDOUT:7CED3DF0C93AB131F5AA31592111995B7EC58522A9158FA393B27C0D600F458F
FjDOUT:FC8AA2DF7A768A59A19636F95C36418C3DFBC23FC2C4042C42073B5658D280D4
FjDOUT:4D9355DB78235CB3EE61C172F69B3005CC05F394A7336F53F6DF5052E9600FBC
text/plain;charset=utf-8
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"sapdeutschland.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5977.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"deadbirds.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5811.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5833.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5855.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5877.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5955.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"dana.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"ensmaxisnft.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5822.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"titanwarsxyz.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5911.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5933.sats"}h!
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"buymydomainplz.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5899.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5944.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5966.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"suilend.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"fasion.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5999.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"ico.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6909.sats"}h!
text/plain;charset=utf-8
  "name": "klm.sats"
text/plain;charset=utf-8
  "name": "lyon.sats"
Bj@=:BNB.BNB:bnb1amm2m6347zeaq33nzvfgvp4ra0ssfrwhggtjus:97181411::0
Bj@=:BNB.BNB:bnb1s0u9vct2qx367spf35l94v6pggr77lcvwk5l00:17919435::0
FjDOUT:987788F7B4D44CD0D713628BF9FE779A77FCF0E7BC7E8FC62464928FD9CAE413
FjDOUT:E6AD44E4B60F51038304930C885301EA4ACAEE8FB56D599254220B1915AE48B2
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"version.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"gov.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"dock.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"index.sats"}h!
text/plain;charset=utf-8
  "name": "btc.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"psp.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"global.sats"}h!
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"@@.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"content.sats"}h!
c/Foundry USA Pool #dropgold/
7j5ion:23.QmNd26KdNzBzgpUrrjnge8LNnupv5EQaYnTkK4oXkTmgVA
Created with GIMPd.e
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Balance</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js"></script>
      //Balance() by tzC0de.  Made with p5.js
col1 =  ["#267365", "#F2CB05", "#F29F05", "#F28705", "#F23030", "#14140F"]
col2 = ["#D9042B","#270140","#F2B705","#F28705","#F22F1D"]
col3 = ["#0388A6","#04C4D9","#F29F05","#F28705","#A63F03"]
col4 = ["#F2BF27","#404040","#DB005E","#2FB9D4"]
#D9D7D7","#F25F29","#F24822","#F2B1A2","#0D0D0D"]
col6 = ["#012C40","#00708C","#D9D7D7","#FF404C","#1CA5B8"]
col7 = ["#BF1120","#0468BF","#F2D22E","#F29472","#F21905"]
col8 = ["#FF6B00","#FFA000","#22D6FF","#1F70CC","#1930B8"]
col9 = ["#FFFFFF","#CCCCCC","#999999","#666666","#000000"]
bgcol = ["#161F30","#f2eddc","#f2eddc","#f2eddc"]
	createCanvas(530,830);
	let percent = 30 / 100;
aphics = createGraphics(width, height);
  graphics.stroke(255, 10 / 100 * 255);
  for (i = 0; i < graphics.width * graphics.height * percent; i++) {
    graphics.point(random(graphics.width),
    random(graphics.height));
	v = createGraphics(500,800)
	col = random([col1,col2,col3,col4,col5,col6,col7,col8,col9])
	num2 = random([0,1,2,3,4,5])
	v.translate(v.width/2,v.height/2)
	for(let i = v.height; i > v.width/6; i+= -((h1 / 2 + h2 / 2)+2.6)) {
    h2 = random([800/8,800/10,800/12,800/5,800/6]);
		num = random([1,2,3,4])
	  recty(x1-h1/2,i-h1/2,h1,h1)
		  v.strokeWeight(5)
	    v.ellipse(x1,i,h1,h1)
		  v.strokeWeight(5)
	    v.rect(x1,i,h1,h1)
		  v.strokeWeight(5)
	    v.rect(x1,i+h1/3.3,h1,h1*0.4)
v.ellipse(x1,i-h1/4.7,h1*0.6,h1*0.6)
		  v.strokeWeight(5)
	    v.triangle(x1,i-h1/2,x1+h1/2,i+h1/2,x1-h1/2,i+h1/2)
	image(v,width/2,height/2)
	image(graphics, width/2, height/2);
function recty(x,y,w,h) {
	g = createGraphics(j,l)
	g.background(242, 237, 220,0)
	g.fill(random(col))
			g.fill(random(col))
	    g.ellipse(g.width/2,g.height/2,g.width,g.heiM
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.8,g.height*0.8)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.6,g.height*0.6)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.4,g.height*0.4)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.2,g.height*0.2)
		  //g.strokeWeight(5)
	    g.rect(g.width/2,g.height/2,g.width,g.height)
			g.fill(random(col))
dth/2,g.height/2,g.width*0.8,g.height*0.8)
			g.fill(random(col))
			g.rect(g.width/2,g.height/2,g.width*0.6,g.height*0.6)
			g.fill(random(col))
			g.rect(g.width/2,g.height/2,g.width*0.4,g.height*0.4)
			g.fill(random(col))
			g.rect(g.width/2,g.height/2,g.width*0.2,g.height*0.2)
		  //g.rect(x,y,w,h)
		  //g.strokeWeight(5)
			g.fill(random(col))
			g.rect(g.width/2,g.height*0.8,g.width,f)
			g.rect(g.width/2,g.height*0.8,g.width*0.75,f)
			g.fill(random(col))
			g.rect(g.width/2,g.height*0.8,g.width*0.5,f)
			g.fill(random(col))
			g.rect(g.width/2,g.height*0.8,g.width*0.25,f)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l*0.75)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l*0.5)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l*0.25)
		  //g.strokeWeight(5)
			g.fill(random(col))
	    g.triangle(u,p-p,u*2,p*2,u-u,p+p)
			g.fill(random(col))
	    g.triangle(u,p,u*2,p*2,u-u,p+p)
	for(let i = -v.height; i < v.width*2; i += 10) {
		if(bg == "#f2eddc") {
		v.line(i,-v.height,i,v.height)
	for(let i = -v.width; i < v.width; i += 8) {
		for (let j = -v.height; j < v.height; j += 8) {
		  if(bg == "#f2eddc") {
			v.line(i,j,i+5,j+5)
	for (let i = 0; i < 50; i++) {
	  if(bg == "#f2eddc") {
		v.ellipse(0,0,20*i)
	for (let i = 0; i < 50; i++) {
	  if(bg == "#f2eddc") {
	for (let i = -v.width; i < v.width; i+=5) {
		for (let j = -v.height; j < v.height; j+=5) {
	  if(bg == "#f2eddc") {
	var increment = 5;
	for(let j = -v.height; j < v.height; j+=5) {
	for (var i = -v.width; i < v.width; i+=increment) {
		v.vertex(i, j + (sin(k) * (sin(j) * 50)))
function keyTyped() {
  if (key === 's' || key === 'S') {
    saveCanvas('myCanvas', 'png');
text/html;charset=utf-8
<meta charset="UTF-8">
<title>Angular Decay</title>
<script id="snippet-random-code" type="text/javascript">
let seed = window.location.href.split('/').find(t => t.includes('i0'));
const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
let pattern = "seed=";
for (let i = 0; i <M
 seed.length - pattern.length; ++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(lM
 ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
function sfc32($, _, u, i) {
return function () {
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
<style>body {margin: 0px;} </style>M
<canvas id="target"></canvas>
<script type="text/javascript">
const rand = mathRand();
const rand2 = mathRand();
let sqpix,cp,ratio=0.707,bug=false;
if(rand<0.3){sqpix=0;zoom=false;return"Portrait";}
if(rand<0.6){sqpix=0;ratio=1.414;return"Lanscape";}
if(rand<0.95){sqpix=1;return"Square";}
sqpix=1;bug=1;return"Bugged";}
if(rand<0.07){cp=12;return "Paper";}
if(rand<0.14){cp=1;return "DPM";}
if(rand<0.21){cp=2;return "Fecktarn";}
if(rand<0.41){cp=4;return "Desert Drill";}
if(rand<0.5){cp=5;return "Urban";}
if(rand<0.6){cp=6;return "Navy";}
if(rand<0.7){cp=7;return "German Winter";}
if(rand<0.8){cp=8;return "Tree";}
if(rand<0.85){cp=9;return "Orange";}
if(rand<0.9){cp=10;return "Harris";}
if(rand<0.95){cp=11;return "Market";}
cp=0;return "Saint";}
window.$generativeTraits = {"View": T1(rand),"Pallet": T2(rand2) }
const container = document.createElement("div")
container.innerHTML = "<span>seed: " + seed + "</spM
let resizeTmr=null,aniFrame=null;
let ofw,ofh,sz,rz=1;
let gi=0,gj=0,drp=0,drawtot=2,bmp,artcols=[];
var tricount=0,tr=30;
var tx1=[],ty1=[],tx2=[],ty2=[],tx3=[],ty3=[];
var rx1=[],ry1=[],rx2=[],ry2=[],rx3=[],ry3=[];
const init = async () => {
window.addEventListener('resize', async () => {
clearTimeout(resizeTmr)
resizeTmr = setTimeout(async () => {
await layoutCanvas()
await layoutCanvas()
const layoutCanvas = async () => {
const wWidth=window.innerWidth
const wHeight=window.innerHeight
let cHeight=wHeight;
let cWidth=cHeight*ratio;
if(cWidth>wWidth){cWidth=wWidth;cHeight=cWidth/ratio;}
const canvas=document.getElementById('target')
canvas.width=2000*rz;
canvas.height=(2000*rz)/ratio;
canvas.style.position = 'absolute'
canvas.style.width = `${cWidth}px`
canvas.style.height = `${cHeight}px`
canvas.style.left = `${(wWidth - cWidth) / 2}px`
canvas.style.top = `${(wHeight - cHeight) / 2}pM
const drawCanvas = async () => {
if(!tried) setupart();
if (aniFrame) window.cancelAnimationFrame(aniFrame)
const canvas=document.getElementById('target')
const ctx=canvas.getContext('2d')
{let bx=ofw/500,by=ofh/500;
ctx.globalAlpha=0.05;
for(let f=10;f<30; f++){
for(let i=0;i<500; i++){
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'#ffffff');
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'M
if(gj>500) { drp=3; gj=0; }
for(let f=0;f<tc;f++){
if(bug) dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz*sz,ty2[f]*sz, artcols[1], 1*sz);
else dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz,ty2[f]*sz, artcols[1], 1*sz);
dl(ctx, tx2[f]*sz,ty2[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);
dl(ctx, tx1[f]*sz,ty1[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);}
for(let f=0;f<rc;f++){
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx2[f]*sz,ry2[f]*sz, artcols[2], 1*sz);
,ry2[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);}
ctx.fillStyle = artcols[0];
ctx.fillRect(0,0,ofw,ofh);
mathRand = sfc32(...cyrb128(seed));
tc=0;rc=0;tricount=0;tr=30;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
tricount=1000;tr=rir(10,50);dor=true;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
aniFrame = window.requestAnimationM
function triharder( x1,y1, x2,y2)
if(tricount>2500) return;
var x3=x1+rir(-tr,tr);
var y3=y1+rir(-tr,tr);
if(x3<0){x3+=tr;bmp++}
if(x3>1000){x3-=tr;bmp++}
if(y3<0){y3+=tr;bmp++}
if(y3>1000/ratio){y3-=tr;bmp++}
if(dor) {rx1[rc]=x1;ry1[rc]=y1;rx2[rc]=x2;ry2[rc]=y2;rx3[rc]=x3;ry3[rc]=y3;rc++; }
else {tx1[tc]=x1;ty1[tc]=y1;tx2[tc]=x2;ty2[tc]=y2;tx3[tc]=x3;ty3[tc]=y3;tc++;}
if(bmp>15){bmp=0; x3=y3=500;x1=rir(500,500+tr);y1=rir(500,500+tr);x2=rir(500,500-tr);y2=rir(500,500-M
triharder(x3,y3, x1,y1);
if(ri(100)>20) triharder(x3,y3, x2,y2);
const autoDownloadCanvas = async () => {
const element = document.createElement('a')
element.setAttribute('download',`Angular-${ofw}x${ofh}-${seed}`)
element.style.display = 'none'
document.body.appendChild(element)
let imageBlob = null
imageBlob = await new Promise(resolve => document.getElementById('target').toBlob(resolve, 'image/png'))
element.setAttribute('href', window.URL.createObjectURL(imageBlob, {
document.body.removeChild(element)
document.addEventListener('keypress', async (e) => {
e = e || window.event
if (e.key === 's') autoDownloadCanvas()
if (e.key === 'h') { rz++;if(rz>5)rz=1;drp=0;gi=0;gj=0;await layoutCanvas() }
function drawEllipse(ctx,x,y,rx,ry,fill) {
ctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);
if (fill) {ctx.fillStyle = fill;ctx.fill();}
function dl(ctx,lx,ly,ex,ey,stroke,width) {
if (stroke) {ctx.strokeStyle = stroke;}
if (width) {  ctx.linM
ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(ex,ey);ctx.stroke();
if(cp==12)artcols=['#EDECE0','#303030','#880808'];
if(cp==0) artcols=['#F0BEB2','#F25B40','#3A8D3B'];
if(cp==11)artcols=['#4F97BA','#F9E1B5','#BD2C41'];
if(cp==1) artcols=['#25201E','#D3A252','#686C22'];
if(cp==2) artcols=['#B4CBCA','#1F5FB3','#355026'];
if(cp==3) artcols=['#D1C7C5','#6E5247','#8D695D'];
if(cp==4) artcols= ['#E4DBBE','#8BB8B3','#AF799A'];
if(cp==5) artcols= ['#B8B8B3','#474747','M
if(cp==6) artcols= ['#A6B2C7','#323642','#394A69'];
if(cp==7) artcols= ['#E6E6E4','#343523','#B2B2AD'];
if(cp==8) artcols= ['#A9A18E','#706B5C','#606A4D'];
if(cp==9) artcols= ['#EDECE0','#944645','#F25D34'];
if(cp==10) artcols= ['#9FA6A4','#77694E','#B54933'];
function ri( x){  return Math.floor(mathRand()*x);}
function rir(x,y){ let nr = (y - x) ; return  Math.floor((mathRand()*nr) + x); }
text/plain;charset=utf-8
  "name": "0091.sats"
text/plain;charset=utf-8
  "name": "Bitcoin.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"cup.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"1+1.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"type.sats"}h!
text/plain;charset=utf-8
  "name": "BAYC.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>GENERATIVE BTC LOGO</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
            "tokenId": tokenIdRand,
            "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.iM
mul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            color: rgb(255, 255, 255);
            background-color: rgb(0, 0, 0);
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            padding: 0;
            font-size: 0.8em;
            /* overflow: hidden; */
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
        #fullScreen {
       display: flex;
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            justify-content: center;
            align-items: center;
        #fullScreen canvas {
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
            color: rgb(249, 249, 249);
            opacity: 0.75;
            background-color: rgb(23, 23, 23);
            border-radius: 10px;
        padding-top: 0%;
            width: auto;
            height: auto;
            position: fixed;
            text-align: center;
            justify-content: center;
            align-items: center;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        #progress h2 {
            display: block;
            font-size: 0.9rem;
            color: rgb(239, 239, 239);
            margin: 5%
            font-size: 0.75rem;
            display: block;
            margin: 5%
        #progress hr {
            width: 75%;
            margin-bottom: 10%
    <div id="fullScreen">
        <div id="progress">
            <script type="text/javascript">
                ////////////////INFO & FEATURES
                let title = "Generative BTC Logo";
                let st;
                const rand = mathRand();
                let cnv;
                let maxBrush = Math.floor(randBetween(500, 1500))
                function clr(rand) {
                    if (rand > 0.75) {
                        return 240
                    } else {
                        return 10
                    }
                window.$generativeTraits = {
                    "BG Color": clr(rand),
                    "Force": Math.floor(randBetween(1, 5)),
                    "Brush Size": maxBrush,
                console.loM
g(title + " | smldms 2023.02")
                console.log(window.$generativeTraits)
                let img;
                let balls = [];
                let maxFrame = 1500;
                let maxForce = 1;
                function preload() {
                    img = loadImage('https://gateway.pinata.cloud/ipfs/QmQVs9Xpa5e1JDooNiTPWct2kEorxwqk92A1HkHrn8jx1V');
                function setup() {
                    randomSeed(seed);
                    noiseSeed(seed);
     cnv = createCanvas(1920, 1920, WEBGL);
                    cnv.parent(fullScreen)
                    img.resize(width, height)
                    background(clr(rand));
                function draw() {
                    rotateY(sin(frameCount * 0.05) / 25)
                    translate(-width / 2, -height / 2, frameCount * 0.25)
                    let x = mathRand() * width
                    let y = mathRand() * height
                    for (let i = 0; i < balls.length; i++) {
                      balls[i].draw();
                        balls[i].update();
                        balls[i].changeColour();
                    }
                    for (let i = 0; i < balls.length; i++) {
                        if (balls[i].radius < 0) {
                            balls.splice(i, mathRand() * 2);
                        }
                    }
                    if (frameCount < maxFrame) {
                        for (let i = 0; i < 5; i++) {
                            balls.push(neM
w Ball(x, y, color(img.get(x + mathRand() * 2, y + mathRand() * 2))));
                        }
                    }
                    else {
                        noLoop()
                        print('stop')
                        // saver()
                        // timer(2000)
                    }
                class Ball {
                    constructor(mX, mY, c) {
                        this.location = createVector(mX, mY);
                        this.radius = randBetween(0M
                        this.r = red(c);
                        this.g = green(c);
                        this.b = blue(c);
                        this.a = alpha(c);
                        this.xOff = 0.0;
                        this.yOff = 0.0;
                    }
                    update() {
                        this.radius -= mathRand() * 0.00025;
                        let force = randBetween(0.5, maxForce)
                        this.xOff = this.xOff + randBetween(-force, force);
                      this.nX = noise(this.location.x) * this.xOff;
                        this.yOff = this.yOff + randBetween(-force, force);
                        this.nY = noise(this.location.y) * this.yOff;
                        this.location.x += this.nX;
                        this.location.y += this.nY;
                    }
                    changeColour() {
                        this.c = color(img.get(this.location.x, this.location.y));
                        this.r = red(this.c);
               this.g = green(this.c);
                        this.b = blue(this.c);
                        this.a = alpha(this.c);
                    }
                    draw() {
                        noStroke();
                        fill(this.r, this.g, this.b);
                        let brushSize = round(randBetween(1, maxBrush));
                        if (this.a > 10) {
                            strokeWeight(randBetween(0.25,0.5))
                            if (clr(rand) == 240) {
                    stroke(10)
                            }
                            else {
                                stroke(250)
                            }
                            ellipse(this.location.x, this.location.y, this.radius * brushSize, this.radius * brushSize);
                        }
                        else {
                            fill(this.r, this.g, this.b, 100)
                            noStroke()
                            rect(this.location.x, this.location.y, thisM
.radius * brushSize / randBetween(2.5, 5));
                        }
                    }
                function randBetween(a, b) {
                    if (!b) {
                        return mathRand() * a
                    }
                    return mathRand() * (b - a) + a
                function keyTyped() {
                    if (keyCode === 83) { // if "s" is pressed
                        save(title + '.png');
                    }
          function timer(t) {
                    setTimeout(function () {
                        location.reload(true);
                    }, t);
                function saver() {
                    save(title + '.png');
            </script>
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"jupiter.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"asuna.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"bitland.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"core.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"are.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"niconico.sats"}h!
text/plain;charset=utf-8
  "name": "schmuck.sats"
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"trust.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Mandala</title>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <script type="text/javascript" >
        // !!!!!!!!!!!!M
!!!!!!!!!!!!!!!!!!!!!!!!
        // INSERT YOUR GENERATIVE CODE HERE
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get(M
"seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 10139042M
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfM
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
  <script type="module" crossorigin>
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const h of o.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&a(h)}).observe(document,{chM
ildList:!0,subtree:!0});function t(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerpolicy&&(o.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?o.credentials="include":s.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function a(s){if(s.ep)return;s.ep=!0;const o=t(s);fetch(s.href,o)}})();class A{constructor(e,t,a,s=255){this._rgba=[e/255,t/255,a/255,s/255],this._hsla=rt(this._rgba)}set hsla(e){this._hsla=e}get hsla(){return[...this._hsla]}get h(){rM
eturn this._hsla[0]}get s(){return this._hsla[1]}get l(){return this._hsla[2]}get a(){return this._hsla[3]}sat(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[1]=e,t}hue(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[0]=e,t}lum(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[2]=e,t}alpha(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[3]=e,t}toString(){return this.a<1?`hsl(${this.h*360}deg ${this.s*100}% ${this.l*100}% / ${this.a*100}%)`:`hsl(${this.h*360}degM
 ${this.s*100}% ${this.l*100}%)`}static from(e){if(e instanceof A)return e;if(typeof e=="number")return new A(255,0,0);{let t;switch(e.length){case 9:if(t=e.match(/^[#](?<r>[0-9a-f]{2})(?<g>[0-9a-f]{2})(?<b>[0-9a-f]{2})(?<a>[0-9a-f]{2})$/i),t&&t.groups){if(t.groups)return new A(parseInt(t.groups.r,16),parseInt(t.groups.g,16),parseInt(t.groups.b,16),parseInt(t.groups.a,16));throw new Error(`Error parsing color string '${e}'`)}break;case 7:if(t=e.match(/^[#](?<r>[0-9a-f]{2})(?<g>[0-9a-f]{2})(?<b>[0-9a-f]{2})$/i),t&&tM
.groups){if(t.groups)return new A(parseInt(t.groups.r,16),parseInt(t.groups.g,16),parseInt(t.groups.b,16));throw new Error(`Error parsing color string '${e}'`)}break;case 5:if(t=e.match(/^[#](?<r>[0-9a-f])(?<g>[0-9a-f])(?<b>[0-9a-f])(?<a>[0-9a-f])$/i),t&&t.groups){if(t.groups)return new A(parseInt(""+t.groups.r+t.groups.r,16),parseInt(""+t.groups.g+t.groups.g,16),parseInt(""+t.groups.b+t.groups.b,16),parseInt(""+t.groups.a+t.groups.a,16));throw new Error(`Error parsing color string '${e}'`)}break;case 4:if(t=e.matcM
h(/^[#](?<r>[0-9a-f])(?<g>[0-9a-f])(?<b>[0-9a-f])$/i),t&&t.groups){if(t.groups)return new A(parseInt(""+t.groups.r+t.groups.r,16),parseInt(""+t.groups.g+t.groups.g,16),parseInt(""+t.groups.b+t.groups.b,16));throw new Error(`Error parsing color string '${e}'`)}break;default:throw new Error(`Error parsing color string '${e}'`)}}}}function rt([n,e,t,a]){const s=Math.max(n,e,t),o=Math.min(n,e,t);let h;if(s===o)h=0;else{const F=s-o;s===n?h=(e-t)/F%6:s===e?h=(t-n)/F+2:h=(n-e)/F+4,h*=60,h<0&&(h+=360)}const E=s-o,g=(s+o)/2M
,O=E===0?0:E/(1-Math.abs(2*g-1));return[h/360,O,g,a]}const{sin:X,cos:st,abs:ut,PI:mt,acos:Bt,asin:wt,sqrt:ot,round:Dt,floor:Et}=Math,x=(n,e)=>[n[0]+e[0],n[1]+e[1]],it=(n,e)=>[n[0]*e,n[1]*e],lt=n=>ot(n[0]**2+n[1]**2),v=(n,e,t)=>[n[0]+e[0]*t,n[1]+e[1]*t],D=(n,e=1)=>{const t=lt(n);return t===0?[0,0]:it(n,e/t)},at=(n,e,t=2)=>(a,s)=>{let o=0,h=1,E=1;for(let g=0;g<t;g++)o+=h*X(X(a/n*E)+st(s/e*E)),E*=1.97834,h*=.5;return o},C=(n,[e,t])=>{const s=n(e+1e-4,t),o=n(e-1e-4,t),h=n(e,t+1e-4),E=n(e,t-1e-4);return[(s-o)/(2*1e-4),(M
h-E)/(2*1e-4)]},b=(n,e)=>{const[t,a]=C(n,e);return[a,-t]},Y=(n,e,t)=>{const a=[e];for(let s=0;s<t;s++)e=x(e,n(e)),a.push(e);return a},Z=n=>Array.from(n,(e,t)=>n[n.length-1-t]),ct=([n,...e],t=!1)=>{let a=`M ${n.join(" ")}`;return a+=e.map(s=>`L ${s.join(" ")}`).join(" "),a+=t?"z":"",a};class pt{constructor(){this.prng=sfc32(...cyrb128(seed))}unit(){return this.prng()}prob(e){return this.prng()<e}float(e,t){return this.prng()*(t-e)+e}int(e,t){return Math.floor(this.prng()*(t-e)+e)}pick(e){return e[this.int(0,e.lengthM
)]}}const z={SteamPunk:["#696969","#ebcc23","#F5F5DC","#AF9B60","#4F2A0C","#FF7034","#8B2800"],Colorful:["#C6EEFA","#db504a","#084c61","#e3b505","#4f6d7a","#56a3a6"],pal0:["#DEC78E","#192220","#BE3C39","#7E2925","#CCB477","#647657","#2D4C40","#6AB29B"],pal1:["#B4BCA4","#0E525A","#C2502E","#D47651","#0C353B","#F5AF6B","#897563","#6A402B"],pal2:["#F1D8AF","#785C74","#323666","#298D98","#E36075","#CF9A94","#5BE6CA","#F5BA6A"],pal3:["#6D9995","#516F6B","#233C45","#EDDC8D","#E69837","#7ED0D6","#A89E7A","#3E371D"],pal4:[M
"#BDD8C1","#20343C","#3C7179","#EDCD41","#DE694E","#8A3831","#79A791","#33B7C4"],pal5:["#E2DD91","#272C50","#3E9890","#2D5E78","#D53154","#69CFA0","#7C3067","#D78E65"],pal6:["#347179","#20414B","#E9A345","#3BA0A6","#36D8DB","#C7B689","#85B9B3","#975836"],pal7:["#6C95A7","#436FA7","#98A5BB","#EDCDC0","#483F6B","#E8A094","#DC46AB","#AE6362"],pal8:["#9BD7D0","#2C4D57","#172734","#7D5440","#337686","#C59B60","#E18C1F","#27C4CB"],pal9:["#735A82","#B5A5B1","#2D5570","#4CC9D4","#2893A5","#282C4A","#D74855","#EBB137"],pal1M
0:["#6D7B7E","#880B5B","#B28A96","#63BE9F","#27A188","#0D5B50","#C9367B","#CCEDD5"],pal11:["#09272F","#DDAF37","#67A793","#9ED8C7","#53B7AC","#409289","#34736E","#1A514F"],pal12:["#AAB29C","#C95734","#973819","#D27855","#776250","#F5B06B","#0F3438","#0E525A"],pal13:["#A4B1C7","#BD6F68","#EEB5A7","#6C95A7","#2D72C1","#3D3C57","#554A7D","#DC47AB"],pal14:["#101C39","#642E3D","#E14A47","#D7B176","#2EB1B8","#3A5F75","#5D7282","#20415F"],pal15:["#B7BEBC","#C7B55E","#5D9283","#88BCB7","#69AFAB","#2F4047","#51606B","#8F698M
D"],pal16:["#877855","#FBF6CD","#B86B42","#30200E","#5F4D37","#C3A064","#DDC081","#F1DE9A"],pal17:["#100B2C","#119065","#28224B","#160B5B","#433E74","#7F7AA1","#C2BDD9","#B70D44"]},ht=(n,{Palette:e})=>{var Q;const t=new pt,[a,s,...o]=z[e],h=z[e],E=[t.pick(h),t.pick(h)];[t.int(0,h.length/3),t.int(h.length/3,2*h.length/3),t.int(2*h.length/3,h.length)].map(m=>h[m]);const g=at(t.float(89,300),t.float(100,300),t.int(1,5)),O=Y(m=>D(C(g,m),5),[200,200],10).map(m=>Y(i=>D(b(g,i),5),m,140)),F=.67,W=innerWidth/innerHeight>F?(M
innerHeight-10)*F:innerWidth-10,K=W/F,L=600,R=L/F,B=L/2,w=R/2,u=(m,i,f,d)=>{const l=document.getElementById(m),r=document.createElementNS(G,i);return Object.keys(f).forEach(c=>c==="xlink:href"?r.setAttributeNS(J,c,f[c]):r.setAttribute(c,f[c])),l&&(d===void 0?l.appendChild(r):l.insertBefore(r,d)),r},G="http://www.w3.org/2000/svg",J="http://www.w3.org/1999/xlink";document.createElementNS(G,"svg");const j=document.createElement("div");j.setAttribute("id","svgC"),n.style.background="#ddd",n.style.width=`${innerWidth-10M
}px`,n.style.height=`${innerHeight-10}px`,n.style.padding="5px",j.style.width=`${W}px`,j.style.height=`${K}px`,j.style.margin="0 auto",j.style.boxShadow="2px 3px 6px rgba(0,0,0,0.5)",j.style.borderRadius="0.5vh",n.appendChild(j),u("svgC","svg",{id:"art",xmlns:G,"xmlns:xlink":J,"shape-rendering":"geometricPrecision",width:L,height:R,viewBox:`${-B} ${-w} ${L} ${R} `,style:`display:block; width:${W}; height:${K}`}),u("art","defs",{id:"df"}),u("df","filter",{id:"blur"}),u("blur","feGaussianBlur",{stdDeviation:t.int(1,5M
)}),u("df","filter",{id:"colorF"}),u("colorF","feColorMatrix",{type:"matrix",values:`${t.float(.2,.8)} 1 0 0 0
        0 0 0 1 0`}),u("df","pattern",{id:"hash0",x:0,y:0,width:t.float(1,3),height:5,stroke:t.pick(o),patternTransform:`rotate(${t.int(0,90)} 0 0)`,patternUnits:"userSpaceOnUse"}),u("hash0","line",{x1:0,y1:0,x2:0,y2:5,fill:"none","stroke-width":.3}),u("df","linearGradient",{id:"grad2",x1:"0%",x2:"100%",y1:"0",y2:"0"}),u("grad2","stop",{offset:"0%","stop-color":E[0]}M
),u("grad2","stop",{offset:"100%","stop-color":E[1]}),u("art","rect",{x:-B,y:-w,width:L,height:R,fill:a,id:"bg"}),t.int(30,70),t.int(150,250);for(let m=0;m<200;m++){let i=[t.float(-B,B),t.float(-w,w)];const f=t.int(10,50),d=t.int(160,200);let l=`M ${i.join(" ")}`;for(let r=0;r<f;r++){const c=D(C(g,i),5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){const c=D(b(g,i),3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<f;r++){const c=D(C(g,i),-5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){conM
st c=D(b(g,i),-3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}l+=" z",u("art","path",{d:l,stroke:"none",fill:t.pick(o),"fill-opacity":.1})}u("art","g",{id:"stripes",filter:"url(#blur)"});for(let m=0;m<100;m++){let f=[[t.float(-B,B),t.float(-w,w)]],d=f[0];for(let l=0;l<5;l++){let r=v(d,C(g,d),400);f.push(r),d=r}for(let l=0;l<20;l++){let r=[],c=[],p=f[f.length-1],I=f[0];for(let $=0;$<5;$++){let M=v(p,b(g,p),400),S=v(I,b(g,I),400);r.push(M),c.unshift(S),p=M,I=S}d=c[0];let y=[];for(let $=0;$<5;$++){let M=v(d,C(g,d),400);y.unshM
ift(M),d=M}const[T,..._]=[...f,...r,...y,...c];let H=`M ${T.join(" ")}`;H+=_.map($=>`L ${$.join(" ")}`).join(" "),u("stripes","path",{d:H,fill:t.prob(.9)?t.pick(h):"url(#grad2)",stroke:"none"}),f=[c[0],...Z(y)]}}for(let m=0;m<80;m++){let i=[t.float(-B,B),t.float(-w,w)];const f=t.int(10,50),d=t.int(160,200);let l=`M ${i.join(" ")}`;for(let r=0;r<f;r++){const c=D(C(g,i),5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){const c=D(b(g,i),3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<f;r++){const c=D(C(M
g,i),-5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){const c=D(b(g,i),-3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}u("art","path",{d:l,stroke:t.pick(o),fill:"none"})}const et=60,nt=10,U=t.float(1,3);for(let m=0;m<nt;m++){let f=[[t.float(-B,B),t.float(-w,w)]],d=f[0];for(let l=0;l<20;l++){let r=v(d,D(b(g,d)),U);f.push(r),d=r}for(let l=0;l<et;l++){let r=[],c=[],p=f[f.length-1],I=f[0];for(let k=0;k<20;k++){let N=v(p,D(C(g,p)),U),V=v(I,D(C(g,I)),U);r.push(N),c.unshift(V),p=N,I=V}d=c[0];let y=[];const T=r[r.lengtM
h-1];let _=1/0,H=(d[0]-T[0])**2+(d[1]-T[1])**2;for(;H<_;){let k=v(d,D(b(g,d)),U);y.unshift(k),d=k,_=H,H=(d[0]-T[0])**2+(d[1]-T[1])**2}const[$,...M]=[...f,...r,...y,...c];let S=`M ${$.join(" ")}`;S+=M.map(k=>`L ${k.join(" ")}`).join(" "),u("art","path",{d:S,fill:t.prob(.1)?"url(#grad2)":E[l%2],stroke:"none"}),f=[c[0],...Array.from(y,(k,N)=>y[y.length-1-N])]}}u("art","g",{id:"grid"}),O.forEach((m,i)=>{if(i===0)return;const f=O[i-1],d=4;for(let l=0,r=0;l<f.length;l+=d-1,r++){const c=Z(O[i].slice(l,l+d)),p=ct([...f.sliM
ce(l,l+d),...c],!0);u("grid","path",{d:p,fill:(i+r)%2===0?t.pick(o):s,stroke:"none"})}}),u("art","g",{id:"border",filter:"url(#colorF)"}),u("border","rect",{x:-B,y:-w,width:L,height:10,fill:a,"fill-opacity":.6}),u("border","rect",{x:-B,y:w-10,width:L,height:10,fill:a,"fill-opacity":.6}),u("border","rect",{x:-B,y:-w,width:10,height:R,fill:a,"fill-opacity":.6}),u("border","rect",{x:B-10,y:-w,width:10,height:R,fill:a,"fill-opacity":.6}),(Q=A.from(s))==null||Q.sat(1)},dt=n=>typeof n=="string",tt=(n,e,t)=>{const a={expiM
re:1e4,utf8:!1,...t};dt(e)&&a.utf8&&(e=new TextEncoder().encode(e),a.mime+=";charset=UTF-8");const s=URL.createObjectURL(e instanceof Blob?e:new Blob([e],{type:a.mime})),o=document.createElement("a");o.setAttribute("download",n),o.setAttribute("href",s),document.body.appendChild(o),o.click(),document.body.removeChild(o),a.expire>0&&setTimeout(()=>URL.revokeObjectURL(s),a.expire)},ft=(n,e,t="png",a=.95)=>{const s=`image/${t}`;n.toBlob(o=>o?tt(`${e}.${t}`,o,{mime:s}):console.warn("can't download canvas"),s,a)};mathRaM
nd();window.$generativeTraits={Palette:Object.keys(z)[Math.floor(mathRand()*Object.keys(z).length)]};console.log(window.$generativeTraits);function gt(){const n=document.getElementById("art");let[e,t]=[n.getAttribute("width"),n.getAttribute("height")],a=new Blob([n.outerHTML],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(a),o=new Image;o.onload=()=>{const h=document.createElement("canvas");h.width=e*P,h.height=t*P,h.getContext("2d").drawImage(o,0,0,e*P,t*P),ft(h,`${seed} - ${new Date().getTime()}-art.M
png`)},o.src=s}const q=document.createElement("div");q.setAttribute("id","app");document.body.prepend(q);ht(q,window.$generativeTraits);const P=parseInt(new URLSearchParams(window.location.search).get("zoom")||"8");window.addEventListener("keyup",n=>{switch(n.key){case"s":tt(`${seed} - ${new Date().getTime()}-art.svg`,document.getElementById("art").outerHTML,{mime:"image/svg+xml"});return;case"x":gt();return}});
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"cow.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"0+0.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"being.sats"}h!
text/plain;charset=utf-8
  "name": "kaffeebitcoin.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"school.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"^o^.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"shift.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"emojis.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"^0^.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"0x000.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"click.sats"}h!
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"**.sats"}h!
text/plain;charset=utf-8
  "name": "6788.sats"
text/plain;charset=utf-8
  "name": "0122.sats"
text/plain;charset=utf-8
  "name": "5677.sats"
text/plain;charset=utf-8
  "name": "4566.sats"
text/plain;charset=utf-8
  "name": "2344.sats"
text/plain;charset=utf-8
  "name": "peepo.sats"
text/plain;charset=utf-8
  "name": "geoff.sats"
text/plain;charset=utf-8
  "name": "shroom.sats"
text/plain;charset=utf-8
  "name": "vampire.sats"
text/plain;charset=utf-8
  "name": "orc.sats"
text/plain;charset=utf-8
  "name": "wildman.sats"
text/plain;charset=utf-8
  "name": "lowball.sats"
text/plain;charset=utf-8
  "name": "postcapone.sats"
text/plain;charset=utf-8
  "name": "webdesign.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"pjfi.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"dao.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"opensa.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"earning.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "8044.sats"
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "lupcor.sats"
Mined by AntPool874Q
RjLO=:ETH.ETH:0x989b1CA2ECCEEB163Fd59285d76daDb7e12A8293::t:15:f2:B48:1145308184600x
text/plain;charset=utf-8
  "name": "bild.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"akcb.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"arteka.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"tasi.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"c6opoil.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"name.sats"}h!
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"akidcalledbeast.sats"}h!
Bj@=:ETH.ETH:0xe49bb8fDB994aAC8fED929Bdc54a63211BdbE5DD:47809685::0
FjDOUT:0E14BBFB0ACC4379214F586EDFAD13EAAD8F38AAC4EF618653D14BC0F38434FC
FjDOUT:EC51EF0DDEDD8D700011E47CADE34F0ED00E098C394EF9758FDF89D76C86BB7A
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "schiphol.sats"
text/plain;charset=utf-8
  "name": "rotterdam.sats"
text/plain;charset=utf-8
Bj@=:BNB.BNB:bnb1emckm3rr6tvn5c2m3pp7unlgc3u8pmktxdchgf:97228363::0
Bj@=:BNB.BNB:bnb1vkt0ufwacp2e8q46y92t99de39y5456p7l0zkt:23320865::0
CjA=:BNB.BNB:bnb17r583mdd4skj4x7xr5p2ad2cqr523uhxeuvq73:165361070::0
text/plain;charset=utf-8
  "name": "blockchain.sats"
text/plain;charset=utf-8
  "name": "eth.sats"
text/plain;charset=utf-8
  "name": "9913.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "positive.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "opunk.sats"
text/plain;charset=utf-8
  "name": "beard.sats"
text/plain;charset=utf-8
  "name": "believe.sats"
text/plain;charset=utf-8
  "name": "shards.sats"
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
!Powered by Luxor Tech1003
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "69x.sats"
FjDOUT:FB8B7ED72F8834B84EB65E20A93951C14F87DBAE38D964514D282F9398EF322C
text/plain;charset=utf-8
MjK=:BNB.BUSD-BD1:bnb1jp40sgewayq56pk8cu6wqccuehlgs95zqea66x:226131061079:te:0
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "21000.sats"
text/plain;charset=utf-8
  "name": "Markus.sats"
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:FF0EFADFB23D11EDB1E1F1FE18D99D60" xmpMM:DocumentID="xmp.did:FF0EFAE0B23D11EDB1E1F1FE18D99D60"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FF0EFADDB23D11EDB1E1F1FE18D99D60" stRef:documentID="xmp.did:FF0EFADEB23D11EDB1E1F1FE18D99D60"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
text/plain;charset=utf-8
  "name": "3565.sats"
text/plain;charset=utf-8
  "name": "3209.sats"
text/plain;charset=utf-8
  "name": "3161.sats"
text/plain;charset=utf-8
  "name": "3189.sats"
text/plain;charset=utf-8
  "name": "3407.sats"
text/plain;charset=utf-8
  "name": "3385.sats"
text/plain;charset=utf-8
  "name": "3275.sats"
text/plain;charset=utf-8
  "name": "3193.sats"
text/plain;charset=utf-8
  "name": "3207.sats"
text/plain;charset=utf-8
  "name": "3383.sats"
text/plain;charset=utf-8
  "name": "3059.sats"
text/plain;charset=utf-8
  "name": "3071.sats"
text/plain;charset=utf-8
  "name": "3561.sats"
text/plain;charset=utf-8
  "name": "3191.sats"
text/plain;charset=utf-8
  "name": "3319.sats"
text/plain;charset=utf-8
  "name": "3269.sats"
text/plain;charset=utf-8
  "name": "3461.sats"
text/plain;charset=utf-8
  "name": "3081.sats"
text/plain;charset=utf-8
  "name": "3147.sats"
text/plain;charset=utf-8
  "name": "3133.sats"
text/plain;charset=utf-8
  "name": "3181.sats"
text/plain;charset=utf-8
  "name": "3361.sats"
text/plain;charset=utf-8
  "name": "3537.sats"
text/plain;charset=utf-8
  "name": "3427.sats"
text/plain;charset=utf-8
  "name": "3299.sats"
text/plain;charset=utf-8
  "name": "3241.sats"
text/plain;charset=utf-8
  "name": "3459.sats"
text/plain;charset=utf-8
  "name": "3109.sats"
text/plain;charset=utf-8
  "name": "3115.sats"
text/plain;charset=utf-8
  "name": "3077.sats"
text/plain;charset=utf-8
  "name": "3393.sats"
text/plain;charset=utf-8
  "name": "3417.sats"
text/plain;charset=utf-8
  "name": "3343.sats"
text/plain;charset=utf-8
  "name": "3485.sats"
text/plain;charset=utf-8
  "name": "3499.sats"
text/plain;charset=utf-8
  "name": "3153.sats"
text/plain;charset=utf-8
  "name": "3325.sats"
text/plain;charset=utf-8
  "name": "3253.sats"
text/plain;charset=utf-8
  "name": "3411.sats"
text/plain;charset=utf-8
  "name": "3347.sats"
text/plain;charset=utf-8
  "name": "3291.sats"
text/plain;charset=utf-8
  "name": "3315.sats"
text/plain;charset=utf-8
  "name": "3425.sats"
text/plain;charset=utf-8
  "name": "3067.sats"
text/plain;charset=utf-8
  "name": "3091.sats"
text/plain;charset=utf-8
  "name": "3573.sats"
text/plain;charset=utf-8
  "name": "3157.sats"
text/plain;charset=utf-8
  "name": "3259.sats"
text/plain;charset=utf-8
  "name": "3489.sats"
text/plain;charset=utf-8
  "name": "3201.sats"
text/plain;charset=utf-8
  "name": "3389.sats"
text/plain;charset=utf-8
  "name": "3185.sats"
text/plain;charset=utf-8
  "name": "3267.sats"
text/plain;charset=utf-8
  "name": "3491.sats"
text/plain;charset=utf-8
  "name": "3493.sats"
text/plain;charset=utf-8
  "name": "3195.sats"
text/plain;charset=utf-8
  "name": "3433.sats"
text/plain;charset=utf-8
  "name": "3513.sats"
text/plain;charset=utf-8
  "name": "3571.sats"
text/plain;charset=utf-8
  "name": "3465.sats"
text/plain;charset=utf-8
  "name": "3179.sats"
text/plain;charset=utf-8
  "name": "3065.sats"
text/plain;charset=utf-8
  "name": "3287.sats"
text/plain;charset=utf-8
  "name": "3089.sats"
text/plain;charset=utf-8
  "name": "3527.sats"
text/plain;charset=utf-8
  "name": "3409.sats"
text/plain;charset=utf-8
  "name": "3475.sats"
text/plain;charset=utf-8
  "name": "3265.sats"
text/plain;charset=utf-8
  "name": "3145.sats"
text/plain;charset=utf-8
  "name": "3171.sats"
text/plain;charset=utf-8
  "name": "3449.sats"
text/plain;charset=utf-8
  "name": "3097.sats"
text/plain;charset=utf-8
  "name": "3441.sats"
text/plain;charset=utf-8
  "name": "3239.sats"
text/plain;charset=utf-8
  "name": "3549.sats"
text/plain;charset=utf-8
  "name": "3303.sats"
text/plain;charset=utf-8
  "name": "3139.sats"
text/plain;charset=utf-8
  "name": "3541.sats"
text/plain;charset=utf-8
  "name": "3379.sats"
text/plain;charset=utf-8
  "name": "3557.sats"
text/plain;charset=utf-8
  "name": "3137.sats"
text/plain;charset=utf-8
  "name": "3581.sats"
text/plain;charset=utf-8
  "name": "3569.sats"
text/plain;charset=utf-8
  "name": "3471.sats"
text/plain;charset=utf-8
  "name": "3551.sats"
text/plain;charset=utf-8
  "name": "3351.sats"
text/plain;charset=utf-8
  "name": "3243.sats"
text/plain;charset=utf-8
  "name": "3273.sats"
text/plain;charset=utf-8
  "name": "3165.sats"
text/plain;charset=utf-8
  "name": "3369.sats"
text/plain;charset=utf-8
  "name": "3445.sats"
text/plain;charset=utf-8
  "name": "3381.sats"
text/plain;charset=utf-8
  "name": "3457.sats"
text/plain;charset=utf-8
  "name": "3577.sats"
text/plain;charset=utf-8
  "name": "3341.sats"
text/plain;charset=utf-8
  "name": "3531.sats"
text/plain;charset=utf-8
  "name": "3123.sats"
text/plain;charset=utf-8
  "name": "3199.sats"
text/plain;charset=utf-8
  "name": "3289.sats"
text/plain;charset=utf-8
  "name": "3169.sats"
text/plain;charset=utf-8
  "name": "3127.sats"
text/plain;charset=utf-8
  "name": "3359.sats"
text/plain;charset=utf-8
  "name": "3431.sats"
text/plain;charset=utf-8
  "name": "3233.sats"
text/plain;charset=utf-8
  "name": "3307.sats"
text/plain;charset=utf-8
  "name": "3305.sats"
text/plain;charset=utf-8
  "name": "3523.sats"
text/plain;charset=utf-8
  "name": "3529.sats"
text/plain;charset=utf-8
  "name": "3295.sats"
text/plain;charset=utf-8
  "name": "3453.sats"
text/plain;charset=utf-8
  "name": "3151.sats"
text/plain;charset=utf-8
  "name": "3163.sats"
text/plain;charset=utf-8
  "name": "3519.sats"
text/plain;charset=utf-8
  "name": "3367.sats"
text/plain;charset=utf-8
  "name": "3469.sats"
text/plain;charset=utf-8
  "name": "3539.sats"
text/plain;charset=utf-8
  "name": "3095.sats"
text/plain;charset=utf-8
  "name": "3481.sats"
text/plain;charset=utf-8
  "name": "3167.sats"
text/plain;charset=utf-8
  "name": "3463.sats"
text/plain;charset=utf-8
  "name": "3509.sats"
text/plain;charset=utf-8
  "name": "3313.sats"
text/plain;charset=utf-8
  "name": "3177.sats"
text/plain;charset=utf-8
  "name": "3353.sats"
text/plain;charset=utf-8
  "name": "3395.sats"
text/plain;charset=utf-8
  "name": "3309.sats"
text/plain;charset=utf-8
  "name": "3467.sats"
text/plain;charset=utf-8
  "name": "3525.sats"
text/plain;charset=utf-8
  "name": "3237.sats"
text/plain;charset=utf-8
  "name": "3437.sats"
text/plain;charset=utf-8
  "name": "3135.sats"
text/plain;charset=utf-8
  "name": "3245.sats"
text/plain;charset=utf-8
  "name": "3497.sats"
text/plain;charset=utf-8
  "name": "3533.sats"
text/plain;charset=utf-8
  "name": "3175.sats"
text/plain;charset=utf-8
  "name": "3413.sats"
text/plain;charset=utf-8
  "name": "3203.sats"
text/plain;charset=utf-8
  "name": "3229.sats"
text/plain;charset=utf-8
  "name": "3105.sats"
text/plain;charset=utf-8
  "name": "3501.sats"
text/plain;charset=utf-8
  "name": "3487.sats"
text/plain;charset=utf-8
  "name": "3329.sats"
text/plain;charset=utf-8
  "name": "3205.sats"
text/plain;charset=utf-8
  "name": "3477.sats"
text/plain;charset=utf-8
  "name": "3231.sats"
text/plain;charset=utf-8
  "name": "3149.sats"
text/plain;charset=utf-8
  "name": "3075.sats"
text/plain;charset=utf-8
  "name": "3349.sats"
text/plain;charset=utf-8
  "name": "3373.sats"
text/plain;charset=utf-8
  "name": "3087.sats"
text/plain;charset=utf-8
  "name": "3547.sats"
text/plain;charset=utf-8
  "name": "3285.sats"
text/plain;charset=utf-8
  "name": "3483.sats"
text/plain;charset=utf-8
  "name": "3247.sats"
text/plain;charset=utf-8
  "name": "3061.sats"
text/plain;charset=utf-8
  "name": "3563.sats"
text/plain;charset=utf-8
  "name": "3063.sats"
text/plain;charset=utf-8
  "name": "3323.sats"
text/plain;charset=utf-8
  "name": "3083.sats"
text/plain;charset=utf-8
  "name": "3057.sats"
text/plain;charset=utf-8
  "name": "3293.sats"
text/plain;charset=utf-8
  "name": "3429.sats"
text/plain;charset=utf-8
  "name": "3107.sats"
text/plain;charset=utf-8
  "name": "3155.sats"
text/plain;charset=utf-8
  "name": "3363.sats"
text/plain;charset=utf-8
  "name": "3183.sats"
text/plain;charset=utf-8
  "name": "3415.sats"
text/plain;charset=utf-8
  "name": "3587.sats"
text/plain;charset=utf-8
  "name": "3517.sats"
text/plain;charset=utf-8
  "name": "3375.sats"
text/plain;charset=utf-8
  "name": "3279.sats"
text/plain;charset=utf-8
  "name": "3141.sats"
text/plain;charset=utf-8
  "name": "3301.sats"
text/plain;charset=utf-8
  "name": "3257.sats"
text/plain;charset=utf-8
  "name": "3281.sats"
text/plain;charset=utf-8
  "name": "3159.sats"
text/plain;charset=utf-8
  "name": "3387.sats"
text/plain;charset=utf-8
  "name": "3327.sats"
text/plain;charset=utf-8
  "name": "3479.sats"
text/plain;charset=utf-8
  "name": "3401.sats"
text/plain;charset=utf-8
  "name": "3559.sats"
text/plain;charset=utf-8
  "name": "3439.sats"
text/plain;charset=utf-8
  "name": "3249.sats"
text/plain;charset=utf-8
  "name": "3317.sats"
text/plain;charset=utf-8
  "name": "3391.sats"
text/plain;charset=utf-8
  "name": "3515.sats"
text/plain;charset=utf-8
  "name": "3069.sats"
text/plain;charset=utf-8
  "name": "3099.sats"
text/plain;charset=utf-8
  "name": "3079.sats"
text/plain;charset=utf-8
  "name": "3225.sats"
text/plain;charset=utf-8
  "name": "3511.sats"
text/plain;charset=utf-8
  "name": "3143.sats"
text/plain;charset=utf-8
  "name": "3403.sats"
text/plain;charset=utf-8
  "name": "3543.sats"
text/plain;charset=utf-8
  "name": "3255.sats"
text/plain;charset=utf-8
  "name": "3073.sats"
text/plain;charset=utf-8
  "name": "3451.sats"
text/plain;charset=utf-8
  "name": "3251.sats"
text/plain;charset=utf-8
  "name": "3473.sats"
text/plain;charset=utf-8
  "name": "3173.sats"
text/plain;charset=utf-8
  "name": "3579.sats"
text/plain;charset=utf-8
  "name": "3419.sats"
text/plain;charset=utf-8
  "name": "3503.sats"
text/plain;charset=utf-8
  "name": "3235.sats"
text/plain;charset=utf-8
  "name": "3187.sats"
text/plain;charset=utf-8
  "name": "3261.sats"
text/plain;charset=utf-8
  "name": "3117.sats"
text/plain;charset=utf-8
  "name": "3263.sats"
text/plain;charset=utf-8
  "name": "3129.sats"
text/plain;charset=utf-8
  "name": "3103.sats"
text/plain;charset=utf-8
  "name": "3085.sats"
text/plain;charset=utf-8
  "name": "3435.sats"
text/plain;charset=utf-8
  "name": "3397.sats"
text/plain;charset=utf-8
  "name": "3277.sats"
text/plain;charset=utf-8
  "name": "3567.sats"
text/plain;charset=utf-8
  "name": "3505.sats"
text/plain;charset=utf-8
  "name": "3583.sats"
text/plain;charset=utf-8
  "name": "3093.sats"
text/plain;charset=utf-8
  "name": "3101.sats"
text/plain;charset=utf-8
  "name": "3575.sats"
text/plain;charset=utf-8
  "name": "3271.sats"
text/plain;charset=utf-8
  "name": "3447.sats"
text/plain;charset=utf-8
  "name": "3585.sats"
text/plain;charset=utf-8
  "name": "3423.sats"
text/plain;charset=utf-8
  "name": "3507.sats"
text/plain;charset=utf-8
  "name": "3227.sats"
text/plain;charset=utf-8
  "name": "3495.sats"
text/plain;charset=utf-8
  "name": "3405.sats"
text/plain;charset=utf-8
  "name": "3357.sats"
text/plain;charset=utf-8
  "name": "3119.sats"
text/plain;charset=utf-8
  "name": "3125.sats"
text/plain;charset=utf-8
  "name": "3297.sats"
text/plain;charset=utf-8
  "name": "3197.sats"
text/plain;charset=utf-8
  "name": "3371.sats"
text/plain;charset=utf-8
  "name": "3283.sats"
text/plain;charset=utf-8
  "name": "3545.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:163B8DE996CD11E2BD6DB01F245C56D2" xmpMM:DocumentID="xmp.did:163B8DEA96CD11E2BD6DB01F245C56D2"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:163B8DE796CD11E2BD6DB01F245C56D2" stRef:documentID="xmp.did:163B8DE896CD11E2BD6DB01F245C56D2"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>\
text/plain;charset=utf-8
  "name": "4473.sats"
text/plain;charset=utf-8
  "name": "4428.sats"
text/plain;charset=utf-8
  "name": "4451.sats"
text/plain;charset=utf-8
  "name": "8008.sats"
text/plain;charset=utf-8
  "name": "4403.sats"
text/plain;charset=utf-8
  "name": "4406.sats"
text/plain;charset=utf-8
  "name": "4412.sats"
text/plain;charset=utf-8
  "name": "4427.sats"
text/plain;charset=utf-8
feat.ART @onigiriman1998h!
text/plain;charset=utf-8
  "name": "4459.sats"
text/plain;charset=utf-8
  "name": "4461.sats"
text/plain;charset=utf-8
  "name": "4475.sats"
text/plain;charset=utf-8
  "name": "4415.sats"
text/plain;charset=utf-8
  "name": "4478.sats"
text/plain;charset=utf-8
  "name": "4429.sats"
text/plain;charset=utf-8
  "name": "4423.sats"
text/plain;charset=utf-8
  "name": "4437.sats"
text/plain;charset=utf-8
  "name": "4436.sats"
text/plain;charset=utf-8
  "name": "4426.sats"
text/plain;charset=utf-8
  "name": "4462.sats"
text/plain;charset=utf-8
  "name": "4465.sats"
text/plain;charset=utf-8
  "name": "4711.sats"
text/plain;charset=utf-8
  "name": "4407.sats"
text/plain;charset=utf-8
  "name": "4408.sats"
text/plain;charset=utf-8
  "name": "4452.sats"
text/plain;charset=utf-8
  "name": "4413.sats"
text/plain;charset=utf-8
  "name": "4425.sats"
text/plain;charset=utf-8
  "name": "4435.sats"
text/plain;charset=utf-8
  "name": "4419.sats"
text/plain;charset=utf-8
  "name": "4458.sats"
text/plain;charset=utf-8
  "name": "4469.sats"
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
  "name": "4481.sats"
text/plain;charset=utf-8
  "name": "4438.sats"
text/plain;charset=utf-8
  "name": "4468.sats"
text/plain;charset=utf-8
  "name": "4472.sats"
text/plain;charset=utf-8
  "name": "4453.sats"
text/plain;charset=utf-8
  "name": "4401.sats"
text/plain;charset=utf-8
  "name": "8006.sats"
text/plain;charset=utf-8
  "name": "4418.sats"
text/plain;charset=utf-8
  "name": "4457.sats"
text/plain;charset=utf-8
  "name": "4402.sats"
text/plain;charset=utf-8
  "name": "4432.sats"
text/plain;charset=utf-8
  "name": "4431.sats"
text/plain;charset=utf-8
  "name": "4476.sats"
text/plain;charset=utf-8
  "name": "4439.sats"
text/plain;charset=utf-8
  "name": "tobi.sats"
text/plain;charset=utf-8
  "name": "4479.sats"
text/plain;charset=utf-8
  "name": "4417.sats"
text/plain;charset=utf-8
  "name": "4467.sats"
text/plain;charset=utf-8
  "name": "4405.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "4463.sats"
text/plain;charset=utf-8
  "name": "4409.sats"
text/plain;charset=utf-8
  "name": "4416.sats"
text/plain;charset=utf-8
  "name": "4456.sats"
text/plain;charset=utf-8
  "name": "4471.sats"
text/plain;charset=utf-8
  "name": "mystery.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3300.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"(69).sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"merck.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"tsmc.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"btcmetaverse.sats"}h!
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"SatoshiNakamoto.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"bankofbtc.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"bitcoinmeta.sats"}h!
text/plain;charset=utf-8
2023-02-28T09:51:48+00:00H
2023-02-28T09:51:48+00:009
2023-02-28T09:51:48+00:00n
text/plain;charset=utf-8
  "name": "dreamarmy.sats"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"satoshiporn.sats"}h!
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"coinmarketcap.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"binancecz.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"roche.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"btcchina.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"shemale.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"69696969.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"chanel.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"Dior.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"satoshilove.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"69666.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"grey.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"sexyass.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"liveporn.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"17elf.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"toyota.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
JjH=:BNB.BUSD-BD1:bnb1rulawqvaepaav0pkhnz986g7unjlseduekrqhm:36929607546::0
text/plain;charset=utf-8
  "name": "machibigbrother.sats"
DjB=:ETH.ETH:0x88936Aad9f4C24F56b262290704B05a7807BF132:59261718:te:0
text/plain;charset=utf-8
  "name": "Tesla.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "dinatale.sats"
FjDOUT:A9F3443E99B63A9BF31E2FF1A94181E4FA19791BE90C9678C7D04B9BD16AF61F
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"chick.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"gororian.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"cryptomoko.sats"}h!
text/plain;charset=utf-8
  "name": "lasercat.sats"
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"piman.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"celery.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"cactus.sats"}h!
text/plain;charset=utf-8
  "name": "Genius.sats"
text/plain;charset=utf-8
  "name": "inclusion.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "3613.sats"
text/plain;charset=utf-8
  "name": "3633.sats"
text/plain;charset=utf-8
  "name": "3591.sats"
text/plain;charset=utf-8
  "name": "3637.sats"
text/plain;charset=utf-8
  "name": "3617.sats"
text/plain;charset=utf-8
  "name": "3625.sats"
text/plain;charset=utf-8
  "name": "3627.sats"
text/plain;charset=utf-8
  "name": "3589.sats"
text/plain;charset=utf-8
  "name": "3593.sats"
text/plain;charset=utf-8
  "name": "3619.sats"
text/plain;charset=utf-8
  "name": "3603.sats"
text/plain;charset=utf-8
  "name": "3609.sats"
text/plain;charset=utf-8
  "name": "3601.sats"
text/plain;charset=utf-8
  "name": "3635.sats"
text/plain;charset=utf-8
  "name": "3605.sats"
text/plain;charset=utf-8
  "name": "3599.sats"
text/plain;charset=utf-8
  "name": "3641.sats"
text/plain;charset=utf-8
  "name": "3631.sats"
text/plain;charset=utf-8
  "name": "3607.sats"
text/plain;charset=utf-8
  "name": "3595.sats"
text/plain;charset=utf-8
  "name": "3597.sats"
text/plain;charset=utf-8
  "name": "3639.sats"
text/plain;charset=utf-8
  "name": "3623.sats"
text/plain;charset=utf-8
  "name": "3611.sats"
text/plain;charset=utf-8
  "name": "3615.sats"
text/plain;charset=utf-8
  "name": "3629.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:8EEB0498971311E2BD6DB01F245C56D2" xmpMM:DocumentID="xmp.did:8EEB0499971311E2BD6DB01F245C56D2"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:163B8DEB96CD11E2BD6DB01F245C56D2" stRef:documentID="xmp.did:163B8DEC96CD11E2BD6DB01F245C56D2"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
  "name": "strack.sats"
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
  "name": "ace.sats"
(+/1575:=8>A<CFCILINSFQTJQULSYTXZZadbeieloitwtx{~
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"shell.sats"}h!
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"MaxMustermann.sats"}h!
text/plain;charset=utf-8
Hail, Mary, full of grace,
the Lord is with thee.
Blessed art thou amongst women
and blessed is the fruit of thy womb, Jesus.
Holy Mary, Mother of God,
pray for us sinners,
now and at the hour of our death.
text/plain;charset=utf-8
text/plain;charset=utf-8
5{"p":"sns","op":"reg","name":"bitcoinmetaverse.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "cieie.sats"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"satoshigay.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"verizon.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"bitporn.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"linde.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
"name": "Schotte666.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"bestporn.sats"}h!
text/plain;charset=utf-8
2023-02-28T08:55:59+00:00
2023-02-28T08:55:59+00:00
2023-02-28T08:55:59+00:00
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"mastercard.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"bittok.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"pepsico.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"fourtwenty.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"btcmeta.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"asmc.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"milf.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"chinabest.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"butt.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"cisco.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"T-Mobile.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"binance.sats"}h!
text/plain;charset=utf-8
  "name": "bindle.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"kraken.sats"}h!
text/plain;charset=utf-8
((((((((((((((((((((((((((((((((((((((((((((((((((
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
((((((((((((((((((((((((((((((((((((((((((((((((((
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwc
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"gucci.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"Porn.sats"}h!
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="M
http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop CC 2019 (Windows)" xmp:CreateDate="2021-10-04T23:29:03-07:00" xmp:ModifyDate="2021-10-05T00:42:47-07:00" xmp:MetadataDate="2021-10-05T00:42:47-07:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:ed24edad-0bf5-a74c-b11b-ffe32fb38d7e" xmpMM:DocumentID="xmp.did:8bbc2413-cae8-0545-8d99-cde1433ecbab" xmpMM:OriginalDocumentID="xmp.did:8bbc2413-cae8-0545-8d99-cde1433ecbab">M
 <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:8bbc2413-cae8-0545-8d99-cde1433ecbab" stEvt:when="2021-10-04T23:29:03-07:00" stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ed24edad-0bf5-a74c-b11b-ffe32fb38d7e" stEvt:when="2021-10-05T00:42:47-07:00" stEvt:softwareAgent="Adobe Photoshop CC 2019 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>0
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"pattu.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
NiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.89d63a01, 2021/12/10-15:20:20        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://nM
s.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:CreatorTool="Adobe Photoshop 22.5 (Macintosh)" xmp:CreateDate="2023-02-24T19:12:53-05:00" xmp:ModifyDate="2023-02-26T15:47:41-05:00" xmp:MetadataDate="2023-02-26T15:47:41-05:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="Display" xmpMM:InstanceID="xmp.iid:993b301b-661M
8-4892-b2e1-ffce2cca4383" xmpMM:DocumentID="adobe:docid:photoshop:70483701-2fe1-e04b-a4d2-7c1541e64975" xmpMM:OriginalDocumentID="xmp.did:5802ef1e-9645-40b1-9037-1ac1e38d7550" tiff:Orientation="1" tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" exif:ColorSpace="65535" exif:PixelXDimension="32" exif:PixelYDimension="21"> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">OrdBtcES</rdf:li> </rdf:Alt> </dc:title> <dc:creator> <rdf:Seq> <rdf:li>B4Yo</rdf:li> </rdf:Seq> </dc:creatoM
r> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">21 Esp</rdf:li> </rdf:Alt> </dc:description> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:4d494383-f070-9b4f-909f-24065b881cf8</rdf:li> <rdf:li>xmp.did:5802ef1e-9645-40b1-9037-1ac1e38d7550</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:5802ef1e-9645-40b1-9037-1ac1e38d7550" stEvt:when="2023-02-24T19:12:53-05:00" stEvt:softwareAgent="Adobe PhotoshopM
 22.5 (Macintosh)"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/png to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:6d10e0ce-fbec-40af-b536-0a62453dc0c0" stEvt:when="2023-02-24T21:54:39-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:bab2bd45-c904-4681-ae37-0dd571c49b0a" stEvt:when="2023-02-26T15:47:41-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" sM
tEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/png"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:993b301b-6618-4892-b2e1-ffce2cca4383" stEvt:when="2023-02-26T15:47:41-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>G
RjLO=:ETH.ETH:0x989b1CA2ECCEEB163Fd59285d76daDb7e12A8293::t:15:f2:B48:1340651794400
MjK=:AVAX.USDC-A6E:0x29040aaff0d7a95c6d04722fd7ddc93a0bd0166d:30189658260:t:30
text/plain;charset=utf-8
  "name": "987654321.sats"
,2K  -[[bUT\mjs12<!U
,2K  -[[bUT\mjs12<!U
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "magmar.sats"
FjDOUT:4DD62DE6CA859993CF9C4BDDBF956E81253C9F1503D815DDD498037A555D8136
text/plain;charset=utf-8
  "name": "gains.sats"
text/plain;charset=utf-8
  "name": "moneybags.sats"
CjA=:ETH.ETH:0x5F5633CBC323fD8E7657EBe25C9a0545DA8ae41E:109654254::0
FjDOUT:18443BDEB1FD2ADCF3010FFEAF8645EA1B5E675CAADFC47789F36EE7755C129E
Bj@=:BNB.BNB:bnb1yf4j3m3x5t0rs6763wzl82arhu2em7k6uf9e4v:19432154::0
FjDOUT:99910EB8B3FC2F022095D5DDFBC41634C1BD35D8A29402F8AFCAE0C27A1C04C6
HjF=:BNB.TWT-8C2:bnb1jset6jadrmruhk3yfvm6drdjnumya7csq24ump:3457151183::0
text/plain;charset=utf-8
+&.%#%.&D5//5DNB>BN_UU_wqw
+&.%#%.&D5//5DNB>BN_UU_wqw
)j'2pTVHLgJizDTmrbW79nxfrNdrqREk2t9y1zAxxz
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8911.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9811.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9877.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9855.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9822.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8933.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9833.sats"}h!
text/plain;charset=utf-8
  "name": "maximum.sats"
text/plain;charset=utf-8
  "name": "custody.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "break.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "ctrl.sats"
text/plain;charset=utf-8
  "name": "prun.sats"
text/plain;charset=utf-8
  "name": "1422.sats"
text/plain;charset=utf-8
  "name": "spending.sats"
text/plain;charset=utf-8
  "name": "8819.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"colombia.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"ecuador.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"uruguay.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"puertorico.sats"}h!
text/plain;charset=utf-8
  "name": "Cupid.sats"
text/plain;charset=utf-8
  "name": "4350.sats"
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
  "name": "Bettina.sats"
text/plain;charset=utf-8
  "name": "Inklusion.sats"
text/plain;charset=utf-8
beat prod by @cryptobeatz2017
RAP @atarimeshimada
META @TezosNinjas_jpn
RAP @plutoplutosawai
Thanks for all GORORIAN.h!
text/plain;charset=utf-8
  "name": "sil3ntrunning.sats"
text/plain;charset=utf-8
  "name": "bild.sats"
text/plain;charset=utf-8
  "name": "focus.sats"
text/plain;charset=utf-8
  "name": "3701.sats"
text/plain;charset=utf-8
  "name": "3673.sats"
text/plain;charset=utf-8
  "name": "3753.sats"
text/plain;charset=utf-8
  "name": "3729.sats"
text/plain;charset=utf-8
  "name": "3659.sats"
text/plain;charset=utf-8
  "name": "3809.sats"
text/plain;charset=utf-8
  "name": "3751.sats"
text/plain;charset=utf-8
  "name": "3799.sats"
text/plain;charset=utf-8
  "name": "3781.sats"
text/plain;charset=utf-8
  "name": "3797.sats"
text/plain;charset=utf-8
  "name": "3783.sats"
text/plain;charset=utf-8
  "name": "3705.sats"
text/plain;charset=utf-8
  "name": "3743.sats"
text/plain;charset=utf-8
  "name": "3745.sats"
text/plain;charset=utf-8
  "name": "3775.sats"
text/plain;charset=utf-8
  "name": "3685.sats"
text/plain;charset=utf-8
  "name": "3733.sats"
text/plain;charset=utf-8
  "name": "3677.sats"
text/plain;charset=utf-8
  "name": "3681.sats"
text/plain;charset=utf-8
  "name": "3713.sats"
text/plain;charset=utf-8
  "name": "3793.sats"
text/plain;charset=utf-8
  "name": "3725.sats"
text/plain;charset=utf-8
  "name": "3769.sats"
text/plain;charset=utf-8
  "name": "3815.sats"
text/plain;charset=utf-8
  "name": "3653.sats"
text/plain;charset=utf-8
  "name": "3741.sats"
text/plain;charset=utf-8
  "name": "3675.sats"
text/plain;charset=utf-8
  "name": "3693.sats"
text/plain;charset=utf-8
  "name": "3709.sats"
text/plain;charset=utf-8
  "name": "3813.sats"
text/plain;charset=utf-8
  "name": "3703.sats"
text/plain;charset=utf-8
  "name": "3645.sats"
text/plain;charset=utf-8
  "name": "3651.sats"
text/plain;charset=utf-8
  "name": "3649.sats"
text/plain;charset=utf-8
  "name": "3669.sats"
text/plain;charset=utf-8
  "name": "3811.sats"
text/plain;charset=utf-8
  "name": "3803.sats"
text/plain;charset=utf-8
  "name": "3719.sats"
text/plain;charset=utf-8
  "name": "3805.sats"
text/plain;charset=utf-8
  "name": "3657.sats"
text/plain;charset=utf-8
  "name": "3683.sats"
text/plain;charset=utf-8
  "name": "3767.sats"
text/plain;charset=utf-8
  "name": "3689.sats"
text/plain;charset=utf-8
  "name": "3747.sats"
text/plain;charset=utf-8
  "name": "3759.sats"
text/plain;charset=utf-8
  "name": "3807.sats"
text/plain;charset=utf-8
  "name": "3697.sats"
text/plain;charset=utf-8
  "name": "3801.sats"
text/plain;charset=utf-8
  "name": "3671.sats"
text/plain;charset=utf-8
  "name": "3785.sats"
text/plain;charset=utf-8
  "name": "3795.sats"
text/plain;charset=utf-8
  "name": "3655.sats"
text/plain;charset=utf-8
  "name": "3761.sats"
text/plain;charset=utf-8
  "name": "3755.sats"
text/plain;charset=utf-8
  "name": "3727.sats"
text/plain;charset=utf-8
  "name": "3731.sats"
text/plain;charset=utf-8
  "name": "3665.sats"
text/plain;charset=utf-8
  "name": "3787.sats"
text/plain;charset=utf-8
  "name": "3779.sats"
text/plain;charset=utf-8
  "name": "3667.sats"
text/plain;charset=utf-8
  "name": "3789.sats"
text/plain;charset=utf-8
  "name": "3791.sats"
text/plain;charset=utf-8
  "name": "3735.sats"
text/plain;charset=utf-8
  "name": "3647.sats"
text/plain;charset=utf-8
  "name": "3739.sats"
text/plain;charset=utf-8
  "name": "3723.sats"
text/plain;charset=utf-8
  "name": "3771.sats"
text/plain;charset=utf-8
  "name": "3699.sats"
text/plain;charset=utf-8
  "name": "3765.sats"
text/plain;charset=utf-8
  "name": "3711.sats"
text/plain;charset=utf-8
  "name": "3707.sats"
text/plain;charset=utf-8
  "name": "3661.sats"
text/plain;charset=utf-8
  "name": "3691.sats"
text/plain;charset=utf-8
  "name": "3687.sats"
text/plain;charset=utf-8
  "name": "3749.sats"
text/plain;charset=utf-8
  "name": "3717.sats"
text/plain;charset=utf-8
  "name": "3643.sats"
text/plain;charset=utf-8
  "name": "3695.sats"
text/plain;charset=utf-8
  "name": "3763.sats"
text/plain;charset=utf-8
  "name": "3679.sats"
text/plain;charset=utf-8
  "name": "3715.sats"
text/plain;charset=utf-8
  "name": "3757.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:82A324C7984011E2A82EFD2FDFDB40EF" xmpMM:DocumentID="xmp.did:82A324C8984011E2A82EFD2FDFDB40EF"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:14319494942D11E2A82EFD2FDFDB40EF" stRef:documentID="xmp.did:82A324C6984011E2A82EFD2FDFDB40EF"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
  "name": "giveme.sats"
<svg width="797" height="986" viewBox="0 0 707 986" xmlns="http://www.w3.org/2000/svg"><filter id="c"><feTurbulence baseFrequency="0.1"/><feDisplacementMap in="SourceGraphic" scale="3"/></filter><filter id="k" filterUnits="userSpaceOnUse"><feGaussianBlur in="SourceGraphic" stdDeviation="10" result="x"/><feGaussianBlur in="SourceGraphic" stdDeviation="20" result="y"/><feGaussianBlur in="SourceGraphic" stdDeviation="30" result="z"/><feMerge><feMergeNode in="x"/><feMergeNode in="y"/><feMergeNode in="z"/></feMerge></fiM
lter><filter id="r"><feTurbulence numOctaves="5" baseFrequency="0.3"/><feDisplacementMap><animate attributeName="scale" from="45" to="55" dur="0.2s" repeatCount="indefinite"/></feDisplacementMap></filter><image href="data:image/jpeg;base64,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"/><path d="M85 100h537v423H85z"/>
<defs><linearGradient id="a"><stop stop-color="#e7dcc4" offset="0"/><stop stop-color="#af817a" offsetM
="1"/></linearGradient><linearGradient id="n" x1="24" x2="103" y1="358" y2="358" gradientUnits="userSpaceOnUse"><stop stop-color="#094971" offset="0"/><stop stop-color="#3babb5" offset="1"/></linearGradient><linearGradient id="l" x1="86" x2="391" y1="567" y2="567" gradientUnits="userSpaceOnUse"><stop stop-color="#38a4b0" offset="0"/><stop stop-color="#0d335a" offset="1"/></linearGradient><linearGradient id="i" x1="-61" x2="632" y1="579" y2="579" gradientUnits="userSpaceOnUse"><stop stop-color="#57ecfb" offset="0.3"M
/><stop stop-color="#135775" offset="1"/></linearGradient><linearGradient id="m" x1="86" x2="392" y1="567" y2="567" gradientUnits="userSpaceOnUse"><stop stop-color="#fff" offset="0"/><stop stop-color="#c8f4f5" offset="1"/></linearGradient><linearGradient id="r" x1="446" x2="629" y1="544" y2="544" gradientUnits="userSpaceOnUse" href="#a"/><linearGradient id="s" x1="390" x2="607" y1="535" y2="535" gradientTransform="translate(-156 -48)" gradientUnits="userSpaceOnUse"><stop stop-color="#f6f5e4" offset="0"/><stop stop-M
color="#caad9e" offset="1"/></linearGradient><linearGradient id="t" x1="446" x2="629" y1="544" y2="544" gradientTransform="translate(-164 -22)" gradientUnits="userSpaceOnUse" href="#a"/><linearGradient id="u" x1="203" x2="302" y1="174" y2="174" gradientUnits="userSpaceOnUse"><stop stop-color="#f2335d" offset="0"/><stop stop-color="#70dbeb" offset="0.4"/><stop stop-color="#8ad95d" offset="0.7"/><stop stop-color="#fdff4e" offset="0.9"/></linearGradient><linearGradient id="g" x1="427" x2="722" y1="445" y2="445" gradieM
ntUnits="userSpaceOnUse"><stop stop-color="#7c4e7b" offset="0"/><stop stop-color="#521f35" offset="1"/></linearGradient><linearGradient id="h" x1="563" x2="679" y1="381" y2="381" gradientUnits="userSpaceOnUse"><stop stop-color="#5b283f" offset="0"/><stop stop-color="#441c2f" offset="1"/></linearGradient><linearGradient id="f" x1="397" x2="558" y1="123" y2="123" gradientTransform="matrix(1.2 0 0 1.2 -101 7.9)" gradientUnits="userSpaceOnUse"><stop stop-color="#a88c7e" offset="0"/><stop stop-color="#463325" offset="1"M
/></linearGradient><linearGradient id="d" x1="358" x2="567" y1="242" y2="242" gradientUnits="userSpaceOnUse"><stop stop-color="#f7c1a7" offset="0"/><stop stop-color="#a98871" offset="1"/></linearGradient></defs><clipPath id="b"><path d="M85 100h537v423H85z"/></clipPath><g clip-path="url(#b)"><path d="m40 600 140 2-4 120 40 2v35l140 2-2 300-310-2m952-239H630l-6-240 170 2v-40l40 2 2-400 120-40" style="filter:url(#r)"/><g transform="matrix(0.65 0 0 0.65 97.5 78)"><g style="filter:url(#c)"><path d="M630 627c-33 246 345M
 120 166-73-64 67-77 88-166 73Z" fill="#143982"/><g fill-opacity="0.7"><path d="M359 195c2 47 11 68 18 92 4 22 29 61 46 58 63-37 107 42 130 38 34-5 6-62-34-168 15-140-167-155-159-20Z" fill="url(#d)"/><path d="M541 248c11-20 11-38 2-55-17 1-21 23-21 31 6 16-11 30 19 24z" fill="#a98871"/><path d="M543 196c-3-18-2-47-22-61-11-13-9-37-56-41-18-15-23-23-44-20-48 11-75 21-61 139-2-122 64-103 80-105 32 7 10-10 47 17 14 12 29 39 34 102 9-34 5-22 22-32z" fill="url(#f)"/></g><g><path d="M415 172c-21-11-58-3-49 20 34 20 44-4 M
49-20zm67 7c-14-19-51-28-53-3 23 33 41 15 53 3z"/><animate attributeName="fill" from="#000" to="#790707" dur="0.2s" repeatCount="indefinite"/></g><path d="M466 260c-26-23-80-25-76 11 41 40 63 10 76-11z" fill="#400000"/><path d="m396 255 8 10v-16l7 13 1-14 8 16 4-15 6 16 7-15 6 14 8-9 2 11 8-6" fill="#fff6f6"/><path fill="#c17b84" stroke="#fff" stroke-width="0.4"><animate attributeName="d" from="M404 268c-24 5-20 66 7 66 37-9 14-37 43-59-16-15-29 5-50-7z" to="M406 269c-22 3-17 24 11 29 35-6 18-12 38-23-13-13-29 1-48M
-7z" dur="0.2s" repeatCount="indefinite"/></path><path fill="#af535f"><animate attributeName="d" from="m420 272c-15 5-6 15-6 28 0 14-19 1-7 33-1-63 12-53 13-62z" to="M421 273c-15 5-6 1-6 14 0 14-11-12-3 10 1-32 8-16 9-25z" dur="0.2s" repeatCount="indefinite"/></path><path d="M429 334c25-3 4-11 22-14 33-10 46-50 50-102 30 60-91 117-72 116z" fill="#745042"/><path d="M480 283c4-23 8-27-6-38-30-18-113-18-92 41 1-132 126-18 98-3z" fill="#745042"/><path d="M532 206c-10 13 6 2 12-1-4-21-13 31-18 42 30-65 18-6 5-41z" fill=M
"#9b7b6e"/><path d="M427 170c-26 32 5 32-26 53 15-19 12-10 20-3 10-8 20-17 24 5-24-10-28-44-28-68-2 1 10 10 10 13z" fill="#d0a48c" fill-opacity="0.4"/></g><g style="filter:url(#c)"><path d="M493 456c0-7 26-41 30-47 5-6 46 139 53 135 1 0 41 94 68 96 295 18 94-306 21-381-25-26-117 1-137-1 33 66 17 117 2 106-17-12-35-52-52-64-9 18-32 49-37 57-5 7-9 19-13 27 29 17 26 55 65 71z" fill="url(#g)" stroke="#fff"/><path d="M596 319c-3 18-7 35-16 51-6 16-16 63-17 79 24-4 70-14 97 42 18-38 17-63 16-85-5-30 16-100-13-127-28-22-5M
0-4-67 40z" fill="url(#h)"/><path d="M758 552c12-18-14-3-4-39 6-15 32-80-15-104-21 19 53 60 35 82-4 9-34 105-85 133 19-32 62-62 69-72z" fill="#481d2f"/><path d="M695 432c-12 22 19 34 8 78-6 19-89 78-42 106 22-24 3-66 22-94 4-11-7-113 45-149-20 39-25 47-32 59z" fill="#572c3e"/><path d="M554 364c-6 24 15 0 15 46-1 20-8 105 45 121 15-29-68-57-58-89 1-12 2-135 43-183-9 43-42 92-45 105z" fill="#72456B"/><ellipse transform="rotate(8.6)" cx="680" cy="266" rx="27" ry="32" fill="#fff" stroke="#000" stroke-width="4"/><ellipsM
e transform="rotate(4.6)" cx="660" cy="313" fill="#000"><animate attributeName="rx" from="8" to="19" dur="0.2s" repeatCount="indefinite"/><animate attributeName="ry" from="9" to="23" dur="0.2s" repeatCount="indefinite"/></ellipse></g><path d="M275 480c-156-18-455 81-260 145 35 15 186 62 279 56 49-1 280-1 338-93 23-43-275-100-357-108z" fill="url(#i)" stroke="#ccc" stroke-width="3"/><path d="M5 573c19 16 70 34 95 39 56 12-25-31-25-46 0-18 0-59-1-79-12-6-9-5-21-13 0 34 1 73 1 85s-89-16-49 13z" fill="#702631"/><g styleM
="filter:url(#k)"><g id="q"><path d="M111 574c19-1 153 83 171 90 17 7 54-41 70-32 23-12 31-22 40-22-31-10-155-68-198-87-38-20-66-43-108-54 19 27-2 85 25 104z" fill="url(#l)" stroke="url(#m)" stroke-width="2"/><path d="M27 150c-2 109 0 215 0 312 18 8 59 35 78 43 0-111 2-200 0-314-21-9-57-33-77-41z" fill="url(#n)" stroke="#ccc"/><g><g id="p" fill="#fff" font-size="16" transform="matrix(-0.00063 0.95 -1.1 -0.00057 0 0)">><text x="184" y="-40"><tspan>
</tspan></text><text xM
="255" y="-56"><tspan>
</tspan></text><text x="221" y="-74"><tspan>
</tspan></text></g><animate attributeName="fill-opacity" from="1" to="0" dur="0.2s" repeatCount="indefinite"/></g><use href="#p" y="20"><animate attributeName="fill-opacity" from="0" to="1" dur="0.2s" repeatCount="indefinite"/></use><g fill="#fefdfd"><path d="M144 503c21 3 25 23 43 33 12 8 56 22 69 29 17 23 69 40 104 42-9-10-51-7-67-16-63-28-138-88-189-104-6M
 11 38 14 40 15z"/><path d="M152 521c19 3 20 20 37 30 32 18 58 25 69 31 15 21 55 38 86 40-8-9-46-14-61-22-56-25-131-83-177-97-5 10 44 16 45 18zm-4 21c31 2 38 31 53 39 28 16 32 10 42 16 14 19 42 35 70 36-7-8-34-13-47-20-50-22-117-79-158-92-5 9 39 20 40 21zm-2 19c38 6 20 14 45 33 26 15 45 18 55 23 13 17 47 35 53 29-7-8-32-12-43-19-47-21-104-71-141-83-4 8 31 16 32 17zm-3 15c33 5 22 11 44 28 23 13 40 17 48 21 11 15 37 27 47 29-6-7-20-10-30-16-41-18-104-67-137-77-4 7 27 14 28 15z"/></g></g></g><use href="#q"/><g style="M
filter:url(#c)"><path d="M379 620c25-5 215 7 240 1 16-45 23-74 36-125 6-23-31-57-79-48-1 14-1 88 0 102-35 2-52 9-78 15-33 6-85 32-119 32 15 18 1 8 0 23z" fill="#c39b92" fill-opacity="0.7" stroke="#fff"/><path d="M494 576c25-3 27 16 44 13 33 2 75-58 58-127-32-4 54 58-21 106-17 11-207 59-260 19 67 53 164-10 179-12z" fill="#b59684"/><path d="M540 613c25-3-5-14 37-31 19-6 66-42 50-111-32-4 18 109-15 111-12 3-127 47-186 26 43-7 101 6 115 4z" fill="#b59684"/><path d="M378 595c-9-6-55-37-62-41-8-5-27-15-33-14-32 8-94 33-7M
5 32 31-2 53-14 73-17 7-1-15 13-26 14-54 9-43 63-37 51 3-42 76-50 76-52-21 6-34 13-43 14-42 5-36 77-23 51 18-34 10-42 63-46-32 17-78 58-51 55 35-30 54-36 62-36 15 0 38 37 79 12-5-10 17-5-3-24zm57-205c0 12-60 59-21 84-4 3-14-24-35-43-7-9-36-49-40-50-9 7-7 21-26 13 19 29 17 60 35 88 17 49 52 70 66 67 13-17 41-72 67-100-19-10-29-45-45-60z" fill="#c39b92" fill-opacity="0.7" stroke="#fff"/><path d="M351 414c23-3 20 64 37 61 33 2 49 54 51-61-52 0 81 20-25 75-26 6-75-122-126-124 43 25 46 49 62 49z" fill="url(#s)"/><path dM
="M360 479c54-8-11 61 30 44 19-6 45-17 64-58-32-4-10 54-43 60-71 4-20-77-79-98 43-16 13 54 27 52z" fill="url(#t)"/><path d="M340 381c-2-5 1-34 3-42 3-7 1-27-8-49-5-10-27-6-35-27-7-17-27 9 6 37 5 6 5 5 7 22-11-8-17-7-22-14-9-9-3-22-12-36-8-10-11 26-2 46 5 10 6 8 11 14-19-9-16-72-28-35-2 4 6 46 25 45-14 7-24-34-31-36-8-1-6 47 25 50-12 1-21-11-30-29-5-9-12 23 14 41 24 28 40 12 48 26 16 11 21-12 27-13z" fill="#c39b92" fill-opacity="0.7" stroke="#fff"/><g stroke-width="7"><path d="m302 318-43-96" stroke="#8de1c5"/><pathM
 transform="translate(15 20)" d="M250 177c-1 0-1-2 0-2 2-1 4 0 4 2 1 3-1 6-4 7-4 1-8-2-9-6-1-5 2-10 8-12 6-1 13 3 14 10 2 8-4 15-12 16-9 2-17-5-19-13-2-10 6-19 15-21 11-2 22 6 24 17 2 12-7 24-19 26-14 2-26-8-28-21-2-15 9-29 23-31 16-2 31 9 33 25 2 17-10 33-27 35-18 3-35-11-38-29-3-19 12-38 31-40 21-3 40 13 42 33 3 22-13 42-35 45-23 3-44-14-47-37-3-24 15-47 39-50 25-3 49 16 52 41 2 13-2 27-11 37" fill="none" stroke="url(#u)"><animateTransform attributeName="transform" type="rotate" dur="0.5s" repeatCount="indefiniteM
" from="0,250,177" to="360,250,177"/></path></g></g></g></g><g fill="#6B5B49"><text x="163" y="91" font-size="41" font-weight="bold" id="v"><tspan>LEGITIMATE</tspan></text></g><use href="#v" fill="#E9E3E0" x="-3" y="-3"/><text font-size="26" font-weight="bold"><tspan x="110" y="695">&quot;How are inscriptions included in blocks?&quot;</tspan><tspan x="165" y="735">&quot;By lying and tricking the code&quot;</tspan></text><g fill="#6B5B49"><text x="615" y="920" font-size="29" font-weight="bold" id="w"><tspan>5</tspan?></text></g><use href="#w" fill="#E9E3E0" x="-3" y="-3"/></svg>h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"pokemons.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"btcdefi.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"inscription.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"bitcoindefi.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"bitcoin-.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"bitcoinworld.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"btctwitter.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"solana.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"internet.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"ethereum1.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"ordinalnfts.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"petrochina.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"adobe.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"ordinals-.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"bitcoinnft.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"chainlink.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"polygon.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"filecoin.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"bitcoinz.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"uniswap-.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"twitter1.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"nft-.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"btcworld.sats"}h!
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"bitcoinstaking.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"binance.com.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"twitter-.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"btcnfts.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"btcnft.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"twitter..sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"ethmetaverse.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"quant.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"google.com.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"dogecoins.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"elonmusk-.sats"}h!
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"elonmusktwitter.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"stakingbtc.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"dogecoin-.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"btcbridge.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"kondux.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"bitcoin..sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"btc1.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"binance-.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"bitcoiners.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"bestnft.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"lightning.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"stakebtc.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"btc21.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
{"name":"coinyeezy.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"chinabtc.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0195.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP~-U
)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)J
)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP+
)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP;
=,.$2I@LKG@FEPZsbPUmVEFd
;!!;|SFS||||||||||||||||||||||||||||||||||||||||||||||||||
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
2023-02-26T19:38:20+00:00
2023-02-26T19:38:20+00:00e*F
2023-02-26T19:38:20+00:002?g
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"banksyart.sats"}h!
{"attributes":[{"trait_type":"Background","value":"Yellow"},{"trait_type":"Hat","value":"Safari"},{"trait_type":"Mouth","value":"Bored Unshaven"},{"trait_type":"Eyes","value":"3d"},{"trait_type":"Fur","value":"Dark Brown"},{"trait_type":"Clothes","value":"Sailor Shirt"}],"external_url":"https://baycbitcoin.com/index/bayc/7595","image":"ipfs://QmWwSKeAhhs1CNNDDkMaYgdWvZjrCUyfczc51JXp81i3H1/7595.png"}
 .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQRO
&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8977.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8966.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8955.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"darky.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8944.sats"}h!
text/plain;charset=utf-8
  "name": "aerodactyl.sats"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"bolivia.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"espa
text/plain;charset=utf-8
  "name": "ordinalsmarket.sats"
text/plain;charset=utf-8
  "name": "ordinals.market.sats"
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
  "name": "3831.sats"
text/plain;charset=utf-8
  "name": "3833.sats"
text/plain;charset=utf-8
  "name": "3829.sats"
text/plain;charset=utf-8
  "name": "3817.sats"
text/plain;charset=utf-8
  "name": "3827.sats"
text/plain;charset=utf-8
  "name": "3819.sats"
text/plain;charset=utf-8
  "name": "3823.sats"
text/plain;charset=utf-8
  "name": "3825.sats"
text/plain;charset=utf-8
 Oh yeah!! Oh yeah !! Oh yeah
 Oh yeah!! Oh yeah !! Oh yeah
 Oh yeah!! Oh yeah !! Oh yeah
 Oh yeah!! Oh yeah !! Oh yeah
Oh yeah!! Oh yeah !! Oh yeah Oh yeah!! Oh yeah !! Oh yeah
Oh yeah!! Oh yeah !! Oh yeah Oh yeah!! Oh yeah !! Oh yeah
text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"btc.com.sats"}h!
023-02-28T11:13:22+00:00Y
2023-02-28T11:13:22+00:00(
2023-02-28T11:13:23+00:00
text/plain;charset=utf-8
  "name": "solutions.sats"
023-02-28T11:05:42+00:00S
2023-02-28T11:05:42+00:00"G
2023-02-28T11:05:42+00:00uR
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"atoshinakamoto1.sats"}h!
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.2-c000 79.1b65a79b4, 2022/06/13-22:01:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:7518e4ca-2481-4fb7-bcbc-2a9e43da1d39M
" xmpMM:DocumentID="xmp.did:333F6C7AAF5C11EDB097D9A7F6EE10D9" xmpMM:InstanceID="xmp.iid:333F6C79AF5C11EDB097D9A7F6EE10D9" xmp:CreatorTool="Adobe Photoshop 2022 Macintosh"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:7518e4ca-2481-4fb7-bcbc-2a9e43da1d39" stRef:documentID="xmp.did:7518e4ca-2481-4fb7-bcbc-2a9e43da1d39"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
wvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
((((((((((((((((((((((((((((((((((((((((((((((((((
U)JP)JP)JP)JP)JP)JP)JP)JP)JP)JP
33333333333333333333332
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"000.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
NiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.89d63a01, 2021/12/10-15:20:20        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://nM
s.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:CreatorTool="Adobe Photoshop 22.5 (Macintosh)" xmp:CreateDate="2023-02-24T19:12:53-05:00" xmp:ModifyDate="2023-02-26T15:54:07-05:00" xmp:MetadataDate="2023-02-26T15:54:07-05:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="Display" xmpMM:InstanceID="xmp.iid:9c2f877f-b6dM
f-4b58-bff8-417dbaa45f40" xmpMM:DocumentID="adobe:docid:photoshop:e21550d4-057a-ec49-bc82-eeea59c0c6da" xmpMM:OriginalDocumentID="xmp.did:5802ef1e-9645-40b1-9037-1ac1e38d7550" tiff:Orientation="1" tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" exif:ColorSpace="65535" exif:PixelXDimension="32" exif:PixelYDimension="21"> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">OrdBtcES</rdf:li> </rdf:Alt> </dc:title> <dc:creator> <rdf:Seq> <rdf:li>B4Yo</rdf:li> </rdf:Seq> </dc:creatoM
r> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">21 Esp</rdf:li> </rdf:Alt> </dc:description> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:4d494383-f070-9b4f-909f-24065b881cf8</rdf:li> <rdf:li>xmp.did:5802ef1e-9645-40b1-9037-1ac1e38d7550</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:5802ef1e-9645-40b1-9037-1ac1e38d7550" stEvt:when="2023-02-24T19:12:53-05:00" stEvt:softwareAgent="Adobe PhotoshopM
 22.5 (Macintosh)"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/png to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:6d10e0ce-fbec-40af-b536-0a62453dc0c0" stEvt:when="2023-02-24T21:54:39-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:49e471e4-1962-4921-9811-05c428ce5548" stEvt:when="2023-02-26T15:54:07-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" sM
tEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/png"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:9c2f877f-b6df-4b58-bff8-417dbaa45f40" stEvt:when="2023-02-26T15:54:07-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
LEAD Technologies Inc. V1.01
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcM
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3105.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0987.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"Mongraal.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
YgYgYgYgYgYgYgY'YgYgY*
vjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjM
Nw:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s:s!B
""""""""""""""""""""""""""0DDDDZ[LDe
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[_
-------------------------------------->
\\\ZZZZZZZZZZZZZZZZZZZZZZZZZN\Xf
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"Paxful.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"hsbz.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
text/plain;charset=utf-8
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"gachiho.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Bearish Bias Battle Axe</text><text x="10" y="40" class="base">Crypto Crusher Cuirass of Market Dominance</text><text x="10" y="60" class="base">Crypto Crocodile Dundee Hat</text><text x="10" y="80" clasM
s="base">ASIC Imbued Belt of Inflation Resistance</text><text x="10" y="100" class="base">Trustless Treads of the Trustworthy</text><text x="10" y="120" class="base">Miner Mitts of Endurance</text><text x="10" y="140" class="base">Pendant of Risk Taking</text><text x="10" y="160" class="base">Block Header Ring of Transaction Verification</text><text x="10" y="180" class="base">Crypto Caltrops of Chaos and Control</text><text x="10" y="340" fill="#f2a900">639ffff7</text><text x="340" y="340" fill="#f2a900" style="te<xt-anchor:end;alignment-baseline:bottom;">00234</text></svg>h!
2023-02-27T04:51:26+00:00
2023-02-27T04:51:26+00:00f
2023-02-27T04:51:27+00:00
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Crypto Scepter of Royal Power</text><text x="10" y="40" class="base">Normie Denim Battle Vest of Defeat</text><text x="10" y="60" class="base">Nerd Glasses of the Virtual Museums</text><text x="10" y="80M
" class="base">Rope</text><text x="10" y="100" class="base">Sharding Sandals of Scalability</text><text x="10" y="120" class="base">Satoshi Iron Fist of Blockchain</text><text x="10" y="140" class="base">Byzantine Filigree Necklace</text><text x="10" y="160" class="base">Ring of HODLing Might</text><text x="10" y="180" class="base">Phoenix Tail Feather of Wallet Recovery</text><text x="10" y="340" fill="#f2a900">456f9e96</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">0
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Imran.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Swiss.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"999999999.sats"}h!
2023-02-27T07:28:45+00:00
2023-02-27T07:28:45+00:00
2023-02-27T07:28:45+00:00
text/plain;charset=utf-8
text/plain;charset=utf-8
2023-02-27T12:52:06+00:00
2023-02-27T12:52:06+00:00
2023-02-27T12:52:06+00:00
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0299.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"Raheem.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"elonmuskbtc.sats"}h!
text/plain;charset=utf-8
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
  "name": "Bilguun.sats",
text/plain;charset=utf-8
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"stakebitcoin.sats"}h!
text/plain;charset=utf-8
{"name":"xbt.sats"}h!
Das Lied der Deutschen
www.deutschlandlied.de
"$')+.1468;=@CEHJMORUWZ\^adgiknpsvx{}
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"Frankfurt.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"NBA.sats"}h!
2023-02-27T08:47:16+00:00
2023-02-27T08:47:16+00:00
2023-02-27T08:47:17+00:00O
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"binance.sats"}h!
text/plain;charset=utf-8
RjLO=:ETH.ETH:0x989b1CA2ECCEEB163Fd59285d76daDb7e12A8293::t:15:f2:B48:1148881214600
text/plain;charset=utf-8
  "name": "offer.sats"
rosalina all btc from kim
text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"darkinc.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"dark.sats"}h!
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"Darkincstudio.sats"}h!
FjD=:ETH.ETH:0x6d71012007b290Cf9275A84D3eA42A888389944D:1724654398:t:306B
CjA=:ETH.ETH:0x955b9d2EBa3da1641AEd343245C92071c3bcD083:1633207:te:0
text/plain;charset=utf-8
  "name": "9844.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "uefa.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
FjDOUT:3D27D72A64B285F209FB363AD5BA8E99D39FD1E81434C0E00006AEE30EDC65CF
7j5+:BTC.BTC:thor1vvfa6mdt4acdg4zrlzx5l39393t2df2cu6cug7
text/plain;charset=utf-8
  "name": "1026.sats"
text/html;charset=utf-8
<meta charset="UTF-8">
<title>Angular Decay</title>
<script id="snippet-random-code" type="text/javascript">
let seed = window.location.href.split('/').find(t => t.includes('i0'));
const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
let pattern = "seed=";
for (let i = 0; i <M
 seed.length - pattern.length; ++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(lM
 ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
function sfc32($, _, u, i) {
return function () {
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
<style>body {margin: 0px;} </style>M
<canvas id="target"></canvas>
<script type="text/javascript">
const rand = mathRand();
const rand2 = mathRand();
let sqpix,cp,ratio=0.707,bug=false;
if(rand<0.3){sqpix=0;zoom=false;return"Portrait";}
if(rand<0.6){sqpix=0;ratio=1.414;return"Lanscape";}
if(rand<0.95){sqpix=1;return"Square";}
sqpix=1;bug=1;return"Bugged";}
if(rand<0.07){cp=12;return "Paper";}
if(rand<0.14){cp=1;return "DPM";}
if(rand<0.21){cp=2;return "Fecktarn";}
if(rand<0.41){cp=4;return "Desert Drill";}
if(rand<0.5){cp=5;return "Urban";}
if(rand<0.6){cp=6;return "Navy";}
if(rand<0.7){cp=7;return "German Winter";}
if(rand<0.8){cp=8;return "Tree";}
if(rand<0.85){cp=9;return "Orange";}
if(rand<0.9){cp=10;return "Harris";}
if(rand<0.95){cp=11;return "Market";}
cp=0;return "Saint";}
window.$generativeTraits = {"View": T1(rand),"Pallet": T2(rand2) }
const container = document.createElement("div")
container.innerHTML = "<span>seed: " + seed + "</spM
let resizeTmr=null,aniFrame=null;
let ofw,ofh,sz,rz=1;
let gi=0,gj=0,drp=0,drawtot=2,bmp,artcols=[];
var tricount=0,tr=30;
var tx1=[],ty1=[],tx2=[],ty2=[],tx3=[],ty3=[];
var rx1=[],ry1=[],rx2=[],ry2=[],rx3=[],ry3=[];
const init = async () => {
window.addEventListener('resize', async () => {
clearTimeout(resizeTmr)
resizeTmr = setTimeout(async () => {
await layoutCanvas()
await layoutCanvas()
const layoutCanvas = async () => {
const wWidth=window.innerWidth
const wHeight=window.innerHeight
let cHeight=wHeight;
let cWidth=cHeight*ratio;
if(cWidth>wWidth){cWidth=wWidth;cHeight=cWidth/ratio;}
const canvas=document.getElementById('target')
canvas.width=2000*rz;
canvas.height=(2000*rz)/ratio;
canvas.style.position = 'absolute'
canvas.style.width = `${cWidth}px`
canvas.style.height = `${cHeight}px`
canvas.style.left = `${(wWidth - cWidth) / 2}px`
canvas.style.top = `${(wHeight - cHeight) / 2}pM
const drawCanvas = async () => {
if(!tried) setupart();
if (aniFrame) window.cancelAnimationFrame(aniFrame)
const canvas=document.getElementById('target')
const ctx=canvas.getContext('2d')
{let bx=ofw/500,by=ofh/500;
ctx.globalAlpha=0.05;
for(let f=10;f<30; f++){
for(let i=0;i<500; i++){
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'#ffffff');
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'M
if(gj>500) { drp=3; gj=0; }
for(let f=0;f<tc;f++){
if(bug) dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz*sz,ty2[f]*sz, artcols[1], 1*sz);
else dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz,ty2[f]*sz, artcols[1], 1*sz);
dl(ctx, tx2[f]*sz,ty2[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);
dl(ctx, tx1[f]*sz,ty1[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);}
for(let f=0;f<rc;f++){
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx2[f]*sz,ry2[f]*sz, artcols[2], 1*sz);
,ry2[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);}
ctx.fillStyle = artcols[0];
ctx.fillRect(0,0,ofw,ofh);
mathRand = sfc32(...cyrb128(seed));
tc=0;rc=0;tricount=0;tr=30;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
tricount=1000;tr=rir(10,50);dor=true;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
aniFrame = window.requestAnimationM
function triharder( x1,y1, x2,y2)
if(tricount>2500) return;
var x3=x1+rir(-tr,tr);
var y3=y1+rir(-tr,tr);
if(x3<0){x3+=tr;bmp++}
if(x3>1000){x3-=tr;bmp++}
if(y3<0){y3+=tr;bmp++}
if(y3>1000/ratio){y3-=tr;bmp++}
if(dor) {rx1[rc]=x1;ry1[rc]=y1;rx2[rc]=x2;ry2[rc]=y2;rx3[rc]=x3;ry3[rc]=y3;rc++; }
else {tx1[tc]=x1;ty1[tc]=y1;tx2[tc]=x2;ty2[tc]=y2;tx3[tc]=x3;ty3[tc]=y3;tc++;}
if(bmp>15){bmp=0; x3=y3=500;x1=rir(500,500+tr);y1=rir(500,500+tr);x2=rir(500,500-tr);y2=rir(500,500-M
triharder(x3,y3, x1,y1);
if(ri(100)>20) triharder(x3,y3, x2,y2);
const autoDownloadCanvas = async () => {
const element = document.createElement('a')
element.setAttribute('download',`Angular-${ofw}x${ofh}-${seed}`)
element.style.display = 'none'
document.body.appendChild(element)
let imageBlob = null
imageBlob = await new Promise(resolve => document.getElementById('target').toBlob(resolve, 'image/png'))
element.setAttribute('href', window.URL.createObjectURL(imageBlob, {
document.body.removeChild(element)
document.addEventListener('keypress', async (e) => {
e = e || window.event
if (e.key === 's') autoDownloadCanvas()
if (e.key === 'h') { rz++;if(rz>5)rz=1;drp=0;gi=0;gj=0;await layoutCanvas() }
function drawEllipse(ctx,x,y,rx,ry,fill) {
ctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);
if (fill) {ctx.fillStyle = fill;ctx.fill();}
function dl(ctx,lx,ly,ex,ey,stroke,width) {
if (stroke) {ctx.strokeStyle = stroke;}
if (width) {  ctx.linM
ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(ex,ey);ctx.stroke();
if(cp==12)artcols=['#EDECE0','#303030','#880808'];
if(cp==0) artcols=['#F0BEB2','#F25B40','#3A8D3B'];
if(cp==11)artcols=['#4F97BA','#F9E1B5','#BD2C41'];
if(cp==1) artcols=['#25201E','#D3A252','#686C22'];
if(cp==2) artcols=['#B4CBCA','#1F5FB3','#355026'];
if(cp==3) artcols=['#D1C7C5','#6E5247','#8D695D'];
if(cp==4) artcols= ['#E4DBBE','#8BB8B3','#AF799A'];
if(cp==5) artcols= ['#B8B8B3','#474747','M
if(cp==6) artcols= ['#A6B2C7','#323642','#394A69'];
if(cp==7) artcols= ['#E6E6E4','#343523','#B2B2AD'];
if(cp==8) artcols= ['#A9A18E','#706B5C','#606A4D'];
if(cp==9) artcols= ['#EDECE0','#944645','#F25D34'];
if(cp==10) artcols= ['#9FA6A4','#77694E','#B54933'];
function ri( x){  return Math.floor(mathRand()*x);}
function rir(x,y){ let nr = (y - x) ; return  Math.floor((mathRand()*nr) + x); }
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    <script sandbox="allow-scripts" type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript"
        src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <script sandbox="allow-scripts" type="text/javascript"
        src="https://cdn.jsdelivr.nM
et/npm/tonal/browser/tonal.min.js"></script>
    <script type="text/javascript">
        var cnv;let points=[],start=0,speed=2,wdt,margin=60,w=500,h=300,tileWidth=100,tileHeight=100,sclX=5,sclY=10,paletteIndex2=0,paletteType,paletteIndex3=0,globalNote,mainIndex=0,bnd,phi=3.14*(137.51/180),cbn=0,cbn2=0,duration=0,savedTime,startx1=0,starty1=0,start1=0,rootInc=0,format,currentKey,voiceChord=!1,randForm=0,notePlay,pastNote,keyFifths=[],sequence=[],chordArray=[],bassChord=[],reading,state,lastState,oscill,oscill2,trM
ig=!1,bckg=["#F3F3F3","#000000"],palette1=[["#ce2d42","#082880","#7462f9","#f4b53f","#123676","#9c223d","#e6c7b4"],["#f43b79","#1136ed","#6b43dd","#ef9029","#4aa4ae","#69239b","#f7f1b4"],["#7fefe4","#be3edd","#70cfe5","#f2c666","#e6c7b4","#583fc4","#fff57d"],["#80aded","#7b66f7","#658fdb","#f2e18b","#f7f1b4","#773caa","#f4b537"],["#a5e2f2","#a783ed","#61c1db","#f7c872","#6eabf4","#6d52dd","#ff7db2"],["#d8d8d8","#898de0","#89afe5","#f9e78f","#85b2e8","#8110e5","#bf2b6e"],["#7094fc","#643ac9","#306bef","#9100dd","#e6M
c7b4","#e2396d","#ef3a65"],["#80aded","#a28fef","#4688e8","#db003a","#f7f1b4","#d632a4","#bc174e"],["#594499","#db3e3e","#25ceb2","#02827b","#a0a09f","#56661d","#34067c"],["#425999","#bc3f3f","#9fe2cc","#108fc1","#d37676","#132691","#5b3c96"],["#ffeda1","#91205c","#2929e2","#9509b7","#70b9c0","#5474e8","#d30b8c"],["#f9cfc7","#721b74","#1c70ea","#7c1d93","#919bdb","#5574ce","#f25c87"],["#f25a7b","#e960af","#992843","#8b52f7","#6eabf4","#3714a1","#445b96"],["#ff399c","#e73250","#d32f53","#33bbff","#7de7ff","#69239b",M
"#8041f9"],["#6f6674","#34a0a5","#992843","#f98450","#6eabf4","#3714a1","#445b96"],["#4d82aa","#24c6c6","#d32f53","#f973a0","#7de7ff","#69239b","#8041f9"],["#ff6d40","#361ee0","#992843","#e6c7b4","#9370f2","#3714a1","#445b96"],["#e6372f","#3a338e","#d32f53","#f7f1b4","#8092ff","#69239b","#8041f9"],["#ffa943","#2177f4","#35fc93","#f9cfd2","#6eabf4","#3714a1","#445b96"],["#ffce45","#2f7083","#5affdf","#fcf4b7","#7de7ff","#69239b","#8041f9"],["#41d9f2","#528cd1","#3a6eba","#5f64c1","#4a97f4","#7426bf","#f7d52f"],["#71M
f2ff","#249cff","#63a1ea","#7f88db","#56a6f4","#7f0caf","#f7b643"],["#41d9f2","#51fcbb","#d3057b","#295cff","#7d22ff","#51d7e5","#e6c7b4"],["#71f2ff","#81fcca","#f91cb0","#0239c1","#8450d6","#05bdc6","#f7f1b4"],["#43bbef","#53f9e4","#bf2640","#5082ff","#8648ff","#36ffcf","#881ed3"],["#6bcced","#fce586","#f93ebb","#52a1ff","#8e51a8","#05bdc6","#ff0895"],["#a745ed","#fcbbbb","#f20a41","#ffd252","#0606bf","#ff459e","#881ed3"],["#7b19d1","#a7d0f9","#ba0f40","#fcd5bb","#4545ce","#9666ff","#ff0895"],["#31a4dd","#6f3bff",M
"#f20a41","#4470a5","#7171f4","#e710f9","#2e92ff"],["#ffffab","#8e7de2","#ba0f40","#9312b2","#85b5f9","#830591","#034a7f"],["#06a0ba","#6f3bff","#f20a41","#8777f7","#4848c1","#6b11f7","#e6c7b4"],["#2bc5cc","#8e7de2","#ba0f40","#6155bf","#4b4bf7","#a318b7","#f7f1b4"],["#06a0ba","#6f3bff","#8473ff","#fce875","#4848c1","#ffb3c9","#2e92ff"],["#2bc5cc","#8e7de2","#9e61ba","#ffd2c7","#0f0fce","#f7e579","#034a7f"],["#c10839","#6f3bff","#ff06a6","#f2a5bb","#4848c1","#117ff7","#579ef2"],["#a20dd3","#8e7de2","#aa08ff","#f2ecM
79","#0f0fce","#a60abc","#1b64ce"],["#06a0ba","#6f3bff","#fca660","#f7f377","#9149bf","#f71165","#31f0ff"],["#2bc5cc","#8e7de2","#dd582a","#ffe09c","#630ca8","#a8275c","#04717c"],["#e041b3","#3e71ff","#ffec64","#77c1f7","#9149bf","#f71165","#e6c7b4"],["#f95089","#8e7de2","#f99175","#1d6bdd","#630ca8","#a8275c","#f7f1b4"],["#f4d334","#0636cc","#8989ef","#e6c7b4","#8005e0","#fc68a4","#3386ff"],["#fc889e","#3b72a3","#2d5cc4","#f7f1b4","#f938cb","#d61a1a","#04717c"],["#f4d334","#3ef6ff","#5347f4","#b877f7","#9149bf","#M
f71165","#e6c7b4"],["#fc889e","#1fb2b2","#2d5cc4","#6e1ed6","#630ca8","#a8275c","#f7f1b4"],["#f4d334","#3ef6ff","#5347f4","#f7f777","#9149bf","#ef5090","#e6c7b4"],["#fc889e","#1fb2b2","#2d5cc4","#ffce88","#630ca8","#ba0457","#f7f1b4"],["#f4d334","#3ef6ff","#5347f4","#77c4f7","#9149bf","#f71165","#854fba"],["#fc889e","#1fb2b2","#2d5cc4","#2187bf","#630ca8","#a8275c","#e783ea"],["#f4d334","#3ef6ff","#f97575","#f4dc78","#9149bf","#f71165","#e6c7b4"],["#fc889e","#1fb2b2","#cc2929","#f28b79","#630ca8","#a8275c","#f7f1b4M
"],["#f4d334","#3ef6ff","#f97575","#f279ab","#9149bf","#645eea","#e6c7b4"],["#fc889e","#52adff","#cc2929","#e81073","#630ca8","#3a3acc","#f7f1b4"],["#3ac9d8","#6f3bff","#44acf2","#fce875","#bf23f9","#ffb3c9","#2e92ff"],["#44acf2","#8e7de2","#6cffff","#ffd2c7","#9449ce","#f7e579","#034a7f"],["#06a0ba","#6f3bff","#fc4c7e","#f9b175","#6c6ce5","#8f58f9","#e6c7b4"],["#2bc5cc","#8e7de2","#cf4ef9","#f7df77","#4949c1","#a915ff","#f7f1b4"],["#ef01c4","#065ca8","#1c00ba","#ffee94","#c053ba","#8f58f9","#4ea8f9"],["#a60160","#M
30bec3","#5e52db","#ffebae","#da55f2","#a915ff","#4febf7"],["#f44260","#3c5ba0","#845ecc","#f4b53f","#3d9fc1","#9c223d","#e6c7b4"],["#f43b79","#4058ad","#6c3ca5","#ef9029","#317ec4","#69239b","#f7f1b4"],["#f44260","#3c5ba0","#7070e8","#f27740","#3d9fc1","#d34040","#e6c7b4"],["#f43b79","#4058ad","#4d4dc1","#ef9029","#317ec4","#ed5487","#f7f1b4"],["#f244ee","#5c75c6","#7070e8","#3cd3b6","#3d9fc1","#d34040","#e6c7b4"],["#f43b79","#637cc1","#4d4dc1","#1cb7b7","#317ec4","#ed5487","#f7f1b4"],["#e5491f","#2058d3","#7462f9M
","#40f2d0","#123676","#9c223d","#e6c7b4"],["#ef973f","#177199","#6b43dd","#15abba","#4aa4ae","#69239b","#f7f1b4"],["#e22079","#2058d3","#7462f9","#40f2d0","#5a92e5","#9c223d","#e6c7b4"],["#f21c59","#177199","#6b43dd","#15abba","#4658f9","#69239b","#f7f1b4"],["#e22079","#2058d3","#e6c7b4","#40f2d0","#5a92e5","#ba4564","#edf28b"],["#f21c59","#177199","#f7f1b4","#15abba","#4658f9","#e5336a","#43f7c8"],["#e22079","#4b80e0","#e6c7b4","#41a9ef","#5a92e5","#bc0d8b","#f7adf7"],["#f21c59","#197abc","#f7f1b4","#36a9cc","#46M
58f9","#d3057f","#43f7c8"],["#e22079","#4b80e0","#e6c7b4","#435ced","#e2b55a","#ea397d","#f4e2ae"],["#f21c59","#197abc","#f7f1b4","#7f63f7","#f98562","#e84b3a","#e9f49f"],["#0850b7","#6771f9","#8213bc","#75f9e0","#4848c1","#ffb3c9","#2e92ff"],["#3081e2","#5285dd","#9604af","#15abba","#0f0fce","#f7e579","#034a7f"],["#d80e3e","#6771f9","#8213bc","#f7ad77","#4848c1","#ffb3c9","#31b5ff"],["#ef4878","#5285dd","#9604af","#f4cb78","#0f0fce","#f7e579","#2a76d1"],["#f98246","#69acf7","#8213bc","#f7ad77","#4848c1","#ffb3c9",M
"#31b5ff"],["#ed7d4a","#5285dd","#b529d3","#f4cb78","#0f0fce","#f7e579","#2a76d1"],["#f7cd48","#69d6f4","#8213bc","#f7ad77","#7649bf","#ffb3c9","#e6c7b4"],["#f49090","#21b5d8","#b529d3","#f4cb78","#5829b2","#f7e579","#f7f1b4"],["#4a82f4","#f22a51","#8213bc","#f7ad77","#905df4","#ffb3c9","#0c85ba"],["#4cb2f2","#b72c4e","#b529d3","#f4cb78","#542ad3","#f7e579","#096889"],["#4a82f4","#f22a51","#1522ba","#f7ad77","#d32fc0","#b6fffa","#0c85ba"],["#4cb2f2","#b72c4e","#483d9b","#f4cb78","#e50a6e","#f1ffb8","#096889"],["#4aM
82f4","#f22a51","#4b23db","#f7ad77","#d1304b","#5b99f4","#1dbcb4"],["#4cb2f2","#b72c4e","#694eea","#f4cb78","#d61660","#5cd3f2","#096889"],["#ad4cf2","#f22a51","#8213bc","#f478b0","#5ff2f2","#ffb3c9","#0c85ba"],["#8b05e2","#b72c4e","#b529d3","#f4cb78","#3ea6b7","#f7e579","#096889"],["#584def","#f22a51","#a52cdd","#f2c679","#60caef","#d2b6ff","#0d53b7"],["#4f24c6","#b72c4e","#b529d3","#efaa7b","#3ea6b7","#f7e579","#458bdd"],["#584def","#ef592b","#2cdbc1","#f2c679","#6290ed","#b8fff1","#0d53b7"],["#4f24c6","#f27949",M
"#2ec0d8","#efaa7b","#4067b5","#f7e579","#458bdd"],["#584def","#ed2e8a","#2eacd8","#f2c679","#6290ed","#6929ce","#0d53b7"],["#4f24c6","#c11670","#3070d6","#efaa7b","#4067b5","#4a4add","#458bdd"],["#584def","#ed2e8a","#2eacd8","#ef9c7b","#6290ed","#6929ce","#0d53b7"],["#4f24c6","#c11670","#3070d6","#fc583d","#4067b5","#4a4add","#458bdd"],["#b7b7b7","#0a0a0a","#ffffff","#dbdcdd","#b2b2b2","#a7a7a8","#4e4f4f"],["#d8d8d8","#636363","#dbdcdd","#b2b2b2","#4e4f4f","#e0e1e2","#3f3f3f"],],paletteIndex,colorIndex,colorIndex2M
,grayscale,paletteMode,element,flavour,key,trigger=!1,anim=!1,gridIndex=0,count=0,direction,currentChord=0,nextChord=0,keyArray=["C","D","E","F","G","A","B"],flavours=["major","minor"],fifths=[["C","G","D","A","E","B","F#","Db","Ab","Eb","Bb","F"],["A","E","B","F#","C#","G#","D#","Bb","F","C","G","D"]],midSeq4,mapScale,mixer,stereo,synth2,synth4,synth6,synth3,feedback,reverb5,delay5,delay4,delay2,reverb3,lfo,pingPong,pingPong1,panner,autoPan,FFT,wave,meter,pendulum;function centerCanvas(){var e=(windowWidth-width)/M
2,t=(windowHeight-height)/2;cnv.position(e,t)}function setup(){wdt=windowWidth<windowHeight?windowWidth:windowHeight,wdt-=margin,cnv=createCanvas(wdt,wdt),centerCanvas(),bIndex=1,background(0),center=createVector(width/2,height/2),noFill(),noStroke(),smooth(),strokeWeight(1);let e=int(1990*mathRand());noiseSeed(e),randomSeed(e),noiseDetail(2,1),pixelDensity(displayDensity()),initializeAudio();let t=int(map(mathRand(),0,1,0,flavours.length));flavour=flavours[t];let f=int(map(mathRand(),0,1,0,fifths[t].length));key=fM
ifths[t][f],mapScale=(scale=(scale=(scale=(scale=(scale=(scale=(scale=Tonal.Scale.get(key+"1 "+flavour).notes).concat(Tonal.Scale.get(key+"2 "+flavour).notes)).concat(Tonal.Scale.get(key+"3 "+flavour).notes)).concat(Tonal.Scale.get(key+"4 "+flavour).notes)).concat(Tonal.Scale.get(key+"5 "+flavour).notes)).concat(Tonal.Scale.get(key+"6 "+flavour).notes)).concat(Tonal.Scale.get(key+"7 "+flavour).notes)).slice(14,28);for(let i=0;i<mapScale.length;i++){mapScale.length,mapScale[i].length>2?keyFifths.push(mapScale[i].sliM
ce(0,2)):keyFifths.push(mapScale[i].slice(0,1));.5>random(1)?currentKey-=1:currentKey+=1}let a=[];for(let $=0;$<keyFifths.length;$++)a.push(fifths[t].indexOf(keyFifths[$]));for(let s=0;s<a.length;s++)-1===a[s]&&(keyFifths.splice(s,1),a.splice(s,1));for(let c=0;c<a.length;c++)a[c]===a[0]-1&&(sequence.push(keyFifths[0]),sequence.push(keyFifths[c])),a[c]===a[0]+1&&sequence.push(keyFifths[c]),a[c]===a[0]+3&&(sequence.push(keyFifths[0]),sequence.push(keyFifths[c])),a[c]===a[0]+2&&sequence.push(keyFifths[c]),a[c]===a[0]+M
4&&sequence.push(keyFifths[c]);for(let n=0;n<15;n++)for(let d=0;d<sequence.length;d++)chordArray.push(generateChord(`${sequence[d]}2`,!0));for(let _=0;_<15;_++)for(let r=0;r<sequence.length;r++)bassChord.push(generateChord(`${sequence[r]}3`,!0));paletteMode=mathRand(),paletteIndexSub=(paletteIndex=2*int(map(mathRand(),0,1,0,50)))+1,paletteIndex3=2*int(map(mathRand(),0,1,0,50)),colorIndex=int(map(mathRand(),0,1,0,palette1[0].length)),colorIndex2=int(map(mathRand(),0,1,0,palette1[0].length)),paletteType=mathRand(),grM
ayscale=98===paletteIndex,oscill=mathRand(),oscill2=mathRand(),format=mathRand(),direction=int(map(mathRand(),0,1,0,2)),format<.5?(w=width,h=.4*height):(w=.4*width,h=height),tileWidth=floor(w/sclX)+1,tileHeight=floor(h/sclY)+1,chordNotes=chordArray;for(let b=0;b<=w;b+=tileWidth)for(let o=0;o<=h;o+=tileHeight){let l=gridIndex;points.push(new GridPoint(b-w/2,o-h/2,tileWidth,tileHeight,0,l,0)),gridIndex=(gridIndex+1)%14}let p=map(mathRand(),0,1,.1,.5),u=points;for(let y in points)mathRand()>p?(points[y].subdivide(u,y,M
2),points.splice(y,1),count++):(u.push(points[y]),points.splice(y,1));element=(points=u).length;let g;g=paletteMode<.5?7:3,window.$generativeTraits={Type:"Audio",BPM:"60",Aspect:"Grid",Key:key,Flavour:flavour,Elements:element,Subdivision:count,Palette:g,Grayscale:grayscale,Property:"Object"}}function initializeAudio(){Tone.Transport.bpm.value=60,(mixer=new Tone.Gain).toDestination(),FFT=new Tone.FFT(64),Tone.Master.connect(FFT),wave=new Tone.Waveform,(pendulum=new Tone.LFO(.05)).start(),(meter=new Tone.Meter).normaM
lRange=!0,pendulum.connect(meter),panner=new Tone.Panner(0).chain(mixer);let e=new Tone.Chorus({frequency:.83,depth:.7,wet:.85}),t=new Tone.Reverb({decay:3/4,wet:.5});t.generate();let f=new Tone.FeedbackDelay({delayTime:3/8,feedback:.32,wet:.36});(pingPong=new Tone.PingPongDelay(3/4,.5).toDestination()).set({wet:.3});let i=new Tone.Filter(2250,"lowpass",-24),a=new Tone.Filter(320,"highpass",-48);new Tone.LFO(1,250,2250).connect(i.frequency).start();let $=new Tone.FeedbackDelay({delayTime:.005,feedback:.1,wet:.33});M
new Tone.LFO(1,-1,1).connect(panner.pan).start(),(synth4=new Tone.PolySynth(Tone.FMSynth).chain(e,f,t,pingPong,i,a,$,mixer)).set({harmonicity:3,modulationIndex:3,oscillator:{type:"sine"},envelope:{attack:2e-4,decay:.1,sustain:.08,release:.03},modulation:{type:"sine"},modulationEnvelope:{attack:4e-4,decay:.1,sustain:.09,release:.01},filterEnvelope:{attack:2e-4,decay:.2,sustain:.5,release:.4,baseFrequency:200,octaves:2.6},volume:-16}),delay5=new Tone.FeedbackDelay({delayTime:3/8,feedback:.3,wet:.2});let s=new Tone.ReM
verb({decay:3/16,wet:.25});s.generate();let c=new Tone.Filter(2250,"lowpass",-24);(synth6=new Tone.PolySynth(Tone.Synth).chain(delay5,s,pingPong,c,mixer)).set({harmonicity:3,modulationIndex:3,detune:0,oscillator:{pitch:7,type:"sine"},envelope:{attack:1,decay:.1,sustain:.02,release:.03},modulation:{type:"sine"},modulationEnvelope:{attack:1.5,decay:.1,sustain:.02,release:.06},filterEnvelope:{attack:2,decay:.2,sustain:.5,release:.4,baseFrequency:200,octaves:2.6},volume:-24}),synth6.connect(wave),Tone.Transport.schedulM
eRepeat(()=>{pingPong.set({delayTime:random([3/4,3/16,3/8,.25])}),pingPong.set({wet:random([0,.1,.5])}),f.set({delayTime:random([3/8,.25])}),delay5.set({delayTime:random([3/8,.25])})},"2m")}function draw(){background(0,20),translate(center.x,center.y);let e=.5-meter.getValue(0),t=wave.getValue(0),f=FFT.getValue(0),i=map(e,-.5,.5,-PI,PI);for(let a=0;a<points.length;a++)points[a].r=points[a].r3,points[a].move(),points[a].animate(a,i,f),points[a].render(),points[a].display(a,t,f),points[a].start+=.1,points[a].offset+=M
.006;anim&&(start+=.02),trigger&&(playChord(),Tone.Transport.start(),trigger=!1)}function playChord(){Tone.Transport.schedule(bounceChord,"1"),Tone.Transport.start()}function bounceChord(){currentChord=nextChord,Promise.all([playSynthChord(chordNotes[currentChord],12,12),playStringChord(bassChord[currentChord],6,6),]).then(e=>{int(random(2));let t=int(random(6,18))+"m";!function f(i){let a=e[0],$=e[1];new Tone.BufferSource({url:a,playbackRate:.125}).toDestination().start(i),new Tone.BufferSource({url:$,playbackRateM
:.125}).toDestination().start(i),Tone.Transport.scheduleOnce(f,"+"+t)}(Tone.now())}),Tone.Transport.start(),nextChord<chordNotes.length-1?nextChord+=1:nextChord=0,Tone.Transport.schedule(bounceChord,"+2m")}function playSynthChord(e,t,f){let i=Tone.Time(t).toSeconds(),a=Tone.Time(f).toSeconds();return Tone.Offline(()=>{synth6.triggerAttackRelease(e,i)},i+a)}function playStringChord(e,t,f){let i=Tone.Time(t).toSeconds(),a=Tone.Time(f).toSeconds();return Tone.Offline(()=>{synth4.triggerAttackRelease(e,i)},i+a)}functioM
n voicing(e,t){let f=scale.indexOf(e)+t-1,i;if(void 0!==scale[f])i=scale[f];else if(3===(i=scale[f-7]).length)parseInt(i.slice(2));else{let a=parseInt(i.slice(1))+1;i=`${i.slice(0,1)}${a}`}return i}const getNextChordNote=(e,t)=>{let f=scale.indexOf(e)+t-1,i;if(void 0!==scale[f])i=scale[f];else if(3===(i=scale[f-7]).length)parseInt(i.slice(2));else{let a=parseInt(i.slice(1))+1;i=`${i.slice(0,1)}${a}`}return i};function generateChord(e,t){let f=1,i=1,a=1,$=1,s=1,c=1,n=1;t?(f=generateIndice1(),i=generateIndice1(),a=geM
nerateIndice1(),$=generateIndice1(),s=generateIndice(),c=generateIndice2(),n=generateIndice2()):(f=1,i=1,a=1,$=1,s=1,c=1,n=1);let d=voicing(e,f),_=voicing(getNextChordNote(e,3),i),r=voicing(getNextChordNote(e,5),a),b=voicing(getNextChordNote(e,7),$),o=voicing(getNextChordNote(e,9),s);return voicing(getNextChordNote(e,11),c),voicing(getNextChordNote(e,13),n),[d,_,r,b,o]}function generateIndice(){let e=int(map(mathRand(),0,1,0,3));return 0===e?-8:1===e?1:2===e?8:void 0}function generateIndice1(){return mathRand()>.5?M
1:8}function generateIndice2(){return mathRand()>.5?-8:1}class GridPoint{constructor(e,t,f,i,a,$,s){int(map(e+t,-width/2+-height/2,width/2+height/2,0,sclX+sclY)),int(map(t,-height/2,height/2,0,4)),this.x=e,this.y=t,this.w=f,this.c2=f,this.wx=e,this.hy=t,this.ws=f,this.hs=i,this.h=i,this.r=f,this.r2=f,this.r3=f,this.mv=0,this.theta=0,this.centerX=this.x+this.w/2,this.centerY=this.y+this.h/2,this.c=int(map(mathRand(),0,1,0,3)),this.paletteIndex2=int(map(dist(this.centerX,this.centerY,0,0),0,500,0,palette1[0].length))M
,this.randForm=int(map(mathRand(),0,1,0,5)),this.randIndex=paletteMode<.5?int(map(mathRand(),0,1,0,palette1[0].length)):paletteIndex2,this.randIndex2=int(map(mathRand(),0,1,0,palette1[0].length)),this.randIndex3=int(map(mathRand(),0,1,0,palette1[0].length)),this.randIndex4=int(map(mathRand(),0,1,0,palette1[0].length)),this.start=0,this.alpha=255,this.pIndex=paletteIndex,this.pi=paletteIndex3,this.rt=map(mathRand(),0,1,PI/6,PI/3),this.incr,this.rst=random(0,TAU),this.rst2=random(0,TAU),this.rad=0,this.sub=s,this.offM
set=20*mathRand(),this.offset2=0,this.div=int(map(mathRand(),0,1,10,30)),this.strk=1,this.isOn=a,this.note=$,this.init(),paletteIndex2=(paletteIndex2+1)%3}subdivide(e,t,f){let i=this.w/f,a=this.h/f,$=this.sub+1,s=this.note+7;e.push(new GridPoint(this.x,this.y,i,a,this.isOn,s,$),new GridPoint(this.x+i,this.y,i,a,this.isOn,s,$),new GridPoint(this.x,this.y+a,i,a,this.isOn,s,$),new GridPoint(this.x+i,this.y+a,i,a,this.isOn,s,$))}move(){if(0<=this.t&&this.t<this.t1){let e=norm(this.t,0,this.t1-1);this.mv=lerp(0,TAU,easeM
OutQuint(e)),this.rad=lerp(0,this.w/4,easeOutQuint(e))}this.t1<this.t&&this.init(),this.t++}init(){this.t=-int(random(map(speed,1,5,500,100))),this.t1=map(speed,1,5,220,60)}animate(e,t,f){this.theta=t+e*PI/4;let i=int(map(this.x,-width/2,width/2,0,f.length)),a=f[i];a=a===-1/0?0:f[i],this.incr=map(a,0,-100,0,.2),this.i=map(e,0,points.length,0,TWO_PI),this.xoff=map(cos(this.i),-1,1,0,3),this.yoff=map(sin(this.i),-1,1,0,3),this.n=noise(this.xoff+this.offset+this.incr,this.yoff+this.offset+this.incr),this.n4=noise(thisM
.xoff+50,this.yoff+50),this.n5=noise(this.xoff+50+start,this.yoff+50+start),this.n6=noise(this.offset,this.offset),this.angle=noise(this.xoff+this.offset,this.yoff+this.offset)*TAU*4,this.xa=this.x,this.ya=this.y*sin(map(this.n,0,1,0,TAU)),this.xb=this.x*sin(this.mv),this.r=map(this.n,0,1,this.w/2,this.w),this.r3=map(this.n,0,1,this.w/2,this.w),this.r2=map(this.n,0,1,0,5),this.alpha=map(this.n5,0,1,120,180),this.delay=int(map(this.n4,0,1,2,1))}render(){strokeWeight(.1);fill(color(palette1[this.pIndex][this.randIndeM
x])),circle(this.x,this.ya,this.r2),circle(this.x+this.w,this.ya,this.r2),circle(this.x,this.ya+this.h,this.r2),circle(this.x+this.w,this.ya+this.h,this.r2)}display(e,t,f){if(0===direction)for(let i=this.ya;i<=this.ya+this.h;i+=2){beginShape();for(let a=this.xa;a<=this.xa+this.w;a+=5){let $=int(map(this.ya*this.xa,(this.ya+this.h)*(this.xa+this.w),0,f.length)),s=f[$];s=s===-1/0?0:f[$],this.incr2=map(s,0,-100,0,6),this.n3=noise(this.incr2,this.incr2),this.n2=noise(this.xoff+this.offset2+this.incr2,this.yoff+this.offM
set2+this.incr2),this.n4=map(this.n3,0,1,.9,1.1),this.z=oscill<.5?map(this.n2,0,1,.9,1.1):1;let c=int(map(this.n2,0,1,0,255));int(map(this.n2,0,1,0,palette1[0].length));let n=map(i,this.y,this.y+this.h,0,1),d,_=color(palette1[this.pIndex][this.randIndex]),r=color(palette1[this.pIndex+1][this.randIndex]);(d=lerpColor(_,r,n)).setAlpha(c),noFill(),stroke(d),strokeWeight(.5),vertex(a,i*this.z),this.offset2+=.1}endShape()}else if(1===direction)for(let b=this.xa;b<=this.xa+this.w;b+=2){beginShape();for(let o=this.ya;o<=tM
his.ya+this.h;o+=5){let l=int(map(e,points.length,0,f.length)),p=f[l];p=p===-1/0?0:f[l],this.incr2=map(p,0,-100,0,3),this.n3=noise(this.incr2,this.incr2),this.n2=noise(this.xoff+this.offset2+this.incr2,this.yoff+this.offset2+this.incr2),this.n4=map(this.n3,0,1,.9,1.1),this.z=oscill<.5?map(this.n2,0,1,.9,1.1):1,this.z2=oscill2<.5?map(this.n2,0,1,.999,1.009):1;let u=int(map(this.n2,0,1,0,255));int(map(this.n2,0,1,0,palette1[0].length));let y=map(o,this.y,this.y+this.h,0,1),g,x=color(palette1[this.pIndex][this.randIndM
ex]),m=color(palette1[this.pIndex+1][this.randIndex]);(g=lerpColor(x,m,y)).setAlpha(u),noFill(),stroke(g),strokeWeight(.5),vertex(b*this.z2,o*this.z),this.offset2+=.1}endShape()}if(0===this.c);else if(1===this.c){strokeWeight(.5);let v=0;for(let I=1;I<t.length;I++)if(t[I-1]<0&&t[I]>=0){v=I;break}let k=v+t.length/2,F=100*this.h;for(let C=v;C<=k;C++){let S=map(C-1,v,k,this.xb,this.xb+this.w),T=map(t[C-1],-12,12,this.y-F,this.y+F+this.h),P=map(C,v,k,this.xb,this.xb+this.w),q=map(t[C],-12,12,this.y-F,this.y+F+this.h);lM
ine(S,T,P,q)}}}}function mapNote(e,t){let f=t.length,i=t[modulo(e,f)],a=Tonal.Note.octave(t[0])+floor(e/f);return Tonal.Note.pitchClass(i)+a}function modulo(e,t){return(e%t+t)%t}function easeOutQuint(e){return 1+--e*e*e*e*e}function windowResized(){centerCanvas()}function keyTyped(){return"p"===key&&saveCanvas("liquidentropy","jpg"),!1}function touchStarted(){return Tone.start(),anim||(trigger=!0,Tone.Transport.start()),anim=!0,3===touches.length&&saveCanvas("liquidentropy","jpg"),!1}function mousePressed(){return M
Tone.start(),anim||(trigger=!0,Tone.Transport.start()),anim=!0,!1}
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('M
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (M
r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
          var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
 background-color: #000000;
            margin: 0px;
            overflow: hidden;
            width: 100%;
            height: 100%;
    <script type="text/javascript">
text/plain;charset=utf-8
  "name": "bitcoinismoney.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/plain;charset=utf-8
  "name": "3851.sats"
text/plain;charset=utf-8
  "name": "3853.sats"
text/plain;charset=utf-8
  "name": "3905.sats"
text/plain;charset=utf-8
  "name": "3903.sats"
text/plain;charset=utf-8
  "name": "3899.sats"
text/plain;charset=utf-8
  "name": "3897.sats"
text/plain;charset=utf-8
  "name": "3863.sats"
text/plain;charset=utf-8
  "name": "3895.sats"
text/plain;charset=utf-8
  "name": "3849.sats"
text/plain;charset=utf-8
  "name": "3887.sats"
text/plain;charset=utf-8
  "name": "3841.sats"
text/plain;charset=utf-8
  "name": "3843.sats"
text/plain;charset=utf-8
  "name": "3873.sats"
text/plain;charset=utf-8
  "name": "3835.sats"
text/plain;charset=utf-8
  "name": "3859.sats"
text/plain;charset=utf-8
  "name": "3879.sats"
text/plain;charset=utf-8
  "name": "3867.sats"
text/plain;charset=utf-8
  "name": "3865.sats"
text/plain;charset=utf-8
  "name": "3845.sats"
text/plain;charset=utf-8
  "name": "3875.sats"
text/plain;charset=utf-8
  "name": "3893.sats"
text/plain;charset=utf-8
  "name": "3881.sats"
text/plain;charset=utf-8
  "name": "3839.sats"
text/plain;charset=utf-8
  "name": "3857.sats"
text/plain;charset=utf-8
  "name": "3871.sats"
text/plain;charset=utf-8
  "name": "3885.sats"
text/plain;charset=utf-8
  "name": "3901.sats"
text/plain;charset=utf-8
  "name": "3847.sats"
text/plain;charset=utf-8
  "name": "3837.sats"
text/plain;charset=utf-8
  "name": "3869.sats"
text/plain;charset=utf-8
  "name": "3877.sats"
text/plain;charset=utf-8
  "name": "3889.sats"
text/plain;charset=utf-8
  "name": "3891.sats"
text/plain;charset=utf-8
  "name": "3861.sats"
text/plain;charset=utf-8
  "name": "3855.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:4817E33099E611E295E081C2C389BD59" xmpMM:DocumentID="xmp.did:4817E33199E611E295E081C2C389BD59"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:02DD3AF599CB11E295E081C2C389BD59" stRef:documentID="xmp.did:02DD3AF699CB11E295E081C2C389BD59"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>MN
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"fahed.sats"}h!
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"Motoko.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
  "name": "martin.sats"
x264 - core 163 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=10 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 M
b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=2pass mbtree=1 bitrate=96 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 cplxblur=20.0 qblur=0.5 ip_ratio=1.40 aq=1:1.00
NiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.89d63a01, 2021/12/10-15:20:20        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://nM
s.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:exif="http://ns.adobe.com/exif/1.0/" xmp:CreatorTool="Adobe Photoshop 22.5 (Macintosh)" xmp:CreateDate="2023-02-24T19:12:53-05:00" xmp:ModifyDate="2023-02-26T15:56:10-05:00" xmp:MetadataDate="2023-02-26T15:56:10-05:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="Display" xmpMM:InstanceID="xmp.iid:1b14d2cf-f01M
6-4811-96f6-6c14627fabff" xmpMM:DocumentID="adobe:docid:photoshop:427049f2-7d65-6f49-a7dd-dc8c5fab99ab" xmpMM:OriginalDocumentID="xmp.did:5802ef1e-9645-40b1-9037-1ac1e38d7550" tiff:Orientation="1" tiff:XResolution="720000/10000" tiff:YResolution="720000/10000" tiff:ResolutionUnit="2" exif:ColorSpace="65535" exif:PixelXDimension="32" exif:PixelYDimension="21"> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">OrdBtcES</rdf:li> </rdf:Alt> </dc:title> <dc:creator> <rdf:Seq> <rdf:li>B4Yo</rdf:li> </rdf:Seq> </dc:creatoM
r> <dc:description> <rdf:Alt> <rdf:li xml:lang="x-default">21 Esp</rdf:li> </rdf:Alt> </dc:description> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:4d494383-f070-9b4f-909f-24065b881cf8</rdf:li> <rdf:li>xmp.did:5802ef1e-9645-40b1-9037-1ac1e38d7550</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:5802ef1e-9645-40b1-9037-1ac1e38d7550" stEvt:when="2023-02-24T19:12:53-05:00" stEvt:softwareAgent="Adobe PhotoshopM
 22.5 (Macintosh)"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/png to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:6d10e0ce-fbec-40af-b536-0a62453dc0c0" stEvt:when="2023-02-24T21:54:39-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:fdc883c8-9263-48c3-8411-71ef7a5100f8" stEvt:when="2023-02-26T15:56:10-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" sM
tEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/png"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:1b14d2cf-f016-4811-96f6-6c14627fabff" stEvt:when="2023-02-26T15:56:10-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
  "name": "abcde.sats"
2023-02-27T15:27:26+00:00s
2023-02-27T15:27:26+00:00
(tEXt8date:timestamp
2023-02-27T15:27:27+00:00
text/plain;charset=utf-8
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"999.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"btcgoogle.sats"}h!
text/plain;charset=utf-8
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"glasses.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"sister.sats"}h!
RjLO=:ETH.ETH:0x989b1CA2ECCEEB163Fd59285d76daDb7e12A8293::t:15:f2:B48:1149711080500
text/plain;charset=utf-8
  "name": "lapras.sats"
text/plain;charset=utf-8
Created with GIMPd.e
text/html;charset=utf-8
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/addons/p5.sound.min.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css">
    <meta charset="utf-8" />
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == M
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 95127421M
3), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this fuM
nction mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
    let W, H, HR, w, h, l, t, sw, cnv, palette, paletteName, eerie_black = "#151517ff",
    gainsboro = "#D8DCDDff",
    gold_bk = "#CCA43Dff";
// const seed = ~~(123456789 * mathRand());
let palnames = ["Brown Beaver", "Maroon Red", "Grape Copper", "Indigo Jet", "M
Wisteria Lavender", "Spring Flowers", "Green Tea", "Volcano Brown", "Happy Pink"],
    pal = ~~(mathRand() * palnames.length),
    aspectnames = ["Square", "2:3", "3:2", "3:4", "4:3", "16:9", "8:5", "5:8", "5:3", "3:5"],
    aspct = ~~(mathRand() * aspectnames.length),
    mdnames = ["Light", "Dark", "Light", "Dark", "Gold", "Light", "Dark", "Light", "Dark", "Light", "Dark"],
    md = ~~(mathRand() * mdnames.length),
    flwtypnames = ["Prevailing Lollies", "Prevailing Blooms"],
    flwtyp = ~~(mathRand() * flwtypnM
    skytypnames = ["Many Suns", "Many Stars"],
    skytyp = ~~(mathRand() * flwtypnames.length);
  let seed=floor(999999*mathRand());
    switch (w = 3584, h = 3584, sw = 4, aspectnames[aspct]) {
            w = 3072, h = 4608;
            w = 4608, h = 3072;
            w = 3072, h = 4096;
            w = 4096, M
        case "16:9":
            w = 1024 * (5 + 1 / 3), h = 3072;
            w = 4096, h = 3276.8;
            w = 4096, h = 2560;
            w = 2560, h = 4096;
            w = 5120, h = 3072;
            w = 3072, h = 5120;
        case "21.3:9":
            w = 4362.24, M
    windowWidth / windowHeight < w / h ? (W = windowWidth, H = W * h / w) : (H = windowHeight, W = H * w / h), l = min(w, h) / 20, t = l / 8, cnv = createCanvas(W, H).position((windowWidth - W) / 2, (windowHeight - H) / 2), cnv.id("pb67"), HR = createGraphics(w, h), angleMode(DEGREES), noiseDetail(1), HR.pixelDensity(1), noLoop(), palette = [
        ["#C4C8C9ff", "#D8DCDDff", "#D0C3BDff", "#C8AA9Cff", "#B7785Aff", "#AB8168ff", "#9F8A76ff", "#A89582ff"],
        ["#250902ff", "#38040Eff", "#640D14fM
f", "#800E13ff", "#AD2831ff", "#B1323Bff", "#B43C44ff", "#D8DCDDff"],
        ["#c3c8c5ff", "#b23e3fff", "#be5950ff", "#c97361ff", "#915d68ff", "#59466fff", "#554145ff", "#433d40ff"],
        ["#353535ff", "#284b63ff", "#325d6aff", "#3c6e71ff", "#8ba4a5ff", "#b2bfbfff", "#d9d9d9ff", "#ffffffff"],
        ["#f3e0ecff", "#ead5e6ff", "#f2befcff", "#ca9ce1ff", "#b28dc6ff", "#997eabff", "#766e81ff", "#685f74ff"],
        ["#C4AEB1ff", "#E3C1C0ff", "#D29381ff", "#CCB97Eff", "#6667ABff", "#86A293ff", "#884C5Eff", "#9D848EM
        ["#48996Bff", "#759F51ff", "#436A2Fff", "#CFBF54ff", "#B3832Fff", "#8C5896ff", "#6667ABff", "#A1CAC9ff"],
        ["#29282Dff", "#625C60ff", "#7C6560ff", "#AEA392ff", "#D8D4D0ff", "#8E7961ff", "#F0EDE8ff", "#6667ABff"],
        ["#D77E6Fff", "#6667ABff", "#B38F6Aff", "#D75078ff", "#E288B6ff", "#E9445Dff", "#EEC272ff", "#85A0A9ff"]
    ][pal], paletteName = palnames[pal], pbCreateHR()
function pbCreateHR() {
    let e = gold_bk,
        r = eerie_black;
    "Light" === mdnames[md] ? (e = gainsboro, M
r = eerie_black) : "Dark" === mdnames[md] && (e = eerie_black, r = gainsboro), HR.noFill(), HR.noStroke(), HR.angleMode(DEGREES), HR.rectMode(CORNER), HR.strokeWeight(6), HR.noStroke(), HR.background(e);
        f = random(palette),
        n = random(palette);
    for (; f === n;) n = random(palette);
    let o = 0 === skytyp,
        i = 0 === flwtyp,
            r: random(1.5 * l, l),
            x: random(t + 12 * l, w - t - 12 * l),
            y: random(t + 12 * l, a - t - 22M
    for (pass = 0; pass < 16; pass++) {
        let e = h / 13,
            r = -12,
        pass % 2 && (r = 1, i = n), HR.stroke(red(i), green(i), blue(i), 10);
        for (let f = 0; f < e; f++) {
            let e = random(10, 21);
            if (pass % 22) {
                let f = e * e * (h - a),
                    n = random(t),
                    l = w - random(t),
                    o = a + r * f + random(-t, t),
                    i = a + r * f + random(-t, t);
                HR.line(n, o, l, i)
            } else {
                let f = e * e * a,
                    n = a + r * f + random(-t, t),
                    l = a + r * f + random(-t, t),
                    o = random(t),
                    i = w - random(t);
                HR.line(o, n, i, l)
        let d = 5 + 5 * pass * pass,
            c = random(palette),
        for (; p > 0;) {
            let e, r = !0,
                f = random(2.5 * l, l),
     n = random(t + f, w - t - f);
            e = o ? random(t + f, a - t - f) : random(a + t + f, h - t - f);
            for (let t = 0; t < s.length; t++)
                if (dist(n, e, s[t].x, s[t].y) < f + s[t].r) {
                    r = !1;
                    break
                } if (r) {
                s.push({
                    r: f,
                    x: n,
                    y: e
                let r = random(60);
                // pbActionPaintCircle(n, e, f, t / 2, r, rM
 + 60, c, 15, HR), p = d
            } else p--
        for (let r = 0; r < 23; r++) {
            let r, f = random(l, w - l);
            r = o ? random(a, h - l) : random(l, a - l);
            let n = [];
            n = pbActionPaintCurve(f, r, 25, l, 22 * t, c, 255, HR);
            for (let t = 0; t < n.length; t++) {
                let r = n[t].x,
                    a = n[t].y,
                    f = random(palette);
                HR.stroke(red(f), green(f), blue(f), 50);
                for M
(let t = 0; t < e / 100; t++) {
                    let e = random(0, 90),
                        t = e + 90,
                        f = random(l, 4 * l);
                    HR.line(r - f * cos(e), a + f * sin(e), r + f * cos(e), a - f * sin(e)), HR.line(r - f * cos(t), a + f * sin(t), r + f * cos(t), a - f * sin(t))
    HR.noStroke(), pbNoiseFillRect(0, 0, w, h, HR), HR.stroke(red(eerie_black), green(eerie_black), blue(eerie_black), 180);
    let d = 1.25 * l,
            x: random(t + d, w - t - d),
            y: random(a - d, a + h / 3)
    for (maxtries = 2e3, tries = maxtries; tries > 0;) {
            r = random(t + d, w - t - d),
            f = random(a - h / 8, a + h / 3);
        for (let t = 0; t < c.length; t++)
            if (dist(r, f, c[t].x, c[t].y) < d + c[t].r) {
                e = !1;
                break
            } e ? (c.push({
     }), tries = maxtries) : tries--
    c.sort(((e, t) => e.y - t.y));
    for (let e = 0; e < w / 100; e++) {
        let e = random(palette),
            r = random(t, w - t),
            f = random(a - h / 6, a + h / 3),
            n = r + random(-3 * t, 3 * t);
        HR.fill(red(e), green(e), blue(e), 200), HR.beginShape(), HR.curveVertex(r, f), HR.curveVertex(r, f), HR.curveVertex(n, (h + f) / 2), HR.curveVertex(r, f + h), HR.curveVertex(n + t, (h + f) / 2), HR.curveVertex(r, f), HR.endShape(), pbActM
ionPaintCurve(n, (h + f) / 2, 3, l, t, e, 200, HR)
    for (let e = 0; e < c.length; e++) {
        let r = random(palette),
            a = random(palette);
        for (; r === a;) a = random(palette);
        let f = c[e].x + random(-3 * t, 3 * t);
        HR.fill(red(r), green(r), blue(r), 200), HR.beginShape(), HR.curveVertex(c[e].x, c[e].y), HR.curveVertex(c[e].x, c[e].y), HR.curveVertex(f, (h + c[e].y) / 2), HR.curveVertex(c[e].x, c[e].y + h), HR.curveVertex(f + t, (h + c[e].y) / 2), HR.curveVertex(c[eM
].x, c[e].y), HR.endShape(), pbActionPaintCurve(f, (h + c[e].y) / 2, 3, l, t, r, 200, HR);
        if (random([!0, !0, !0, !1, !0, !0, !0]) ^ i) {
            for (let r = 0; r < n; r++) pbActionPaintCurve(c[e].x, c[e].y, 3, l / 2, random(t / 2, 1.5 * t), a, 200, HR);
            for (let a = 0; a < n / 2; a++) pbActionPaintCurve(c[e].x, c[e].y, 2, l / 3, t, r, 200, HR);
            let f = random(360);
            // pbActionPaintCircle(c[e].x, c[e].y, t, t / 2, f, f + 360, r, 200, HR)
            let f = random(6, 10);
            for (flc = 0; flc < f; flc++) {
                let a = random(360);
                // pbActionPaintCircle(c[e].x, c[e].y, flc * t, t / 2, a, a + 360, r, 200, HR)
            for (let r = 0; r < n / 2; r++) pbActionPaintCurve(c[e].x, c[e].y, 2, f * t / 4, t, a, 200, HR)
    image(HR, 0, 0, W, H, 0, 0, w, h)
function keyPressed() {
    "s" === key && (console.log("saving"), save(HR, "wind_garden.png"))
unction windowResized() {
    windowWidth / windowHeight < w / h ? (W = windowWidth, H = W * h / w) : (H = windowHeight, W = H * w / h), cnv.position((windowWidth - W) / 2, (windowHeight - H) / 2), resizeCanvas(W, H)
function pbActionPaintCircle(e, t, r, a, f, n, l, o = 255, i = this) {
    let s = 3 * ~~(1 + (n - f) / 290),
        d = (n - f) / s,
    for (let n = 0; n <= s; n++) {
        let l = r + random(a / 122),
            o = e + l * cos(f + n * d),
            i = t - l * sin(f + n * dM
    for (let n = s - 1; n >= 0; n--) {
        let l = r - random(a / 122),
            o = e + l * cos(f + n * d),
            i = t - l * sin(f + n * d);
    i.fill(red(l), green(l), blue(l), o), i.beginShape(), i.curveVertex(c[0].x, c[0].y);
    for (let e = 0; e < c.length; e++) i.curveVertex(c[e].x, c[e].y);
    i.curveVertex(c[0].x, c[0].y), i.endShape()
function pbActionPaintCurve(e, t, r, a, f, n, l = 255, o = this) {
    o.fill(red(n), green(n), blue(n), l);
    for (let f = 0; f < r; f++) i.push({
    }), e += random(-3 * a, 5 * a), t += random(-3 * a, 3 * a);
    for (let e = r - 6; e >= 0; e--) i.push({
        x: i[e].x + random(-f, f++),
        y: i[e].y + random(-f, f)
    o.beginShape(), o.curveVertex(i[0].x, i[0].y);
    for (let e = 0; e < i.length; e++) o.curveVertex(i[e].x, i[e].y);
urveVertex(i[0].x, i[0].y), o.endShape(), i
function pbNoiseFillRect(e, r, a, f, n = this) {
    for (let l = 0; l < 2; l++) {
        noiseSeed(~~random(700));
        let l = (a + f) / 760,
            o = 1.00000001;
        for (let i = 0; i < l; i++) {
            let l = random(e, e + a),
                i = random(r, r + f),
                s = noise(l * o, i * o),
                d = palette[~~map(s, 0, 2.6, 0, palette.length)];
            n.fill(d), n.ellipse(l, i, random(.1 * t, 4.5 * t), random(8.51*MY
        for (let i = 0; i < 210 * l; i++) {
            let l = random(e, e + a),
                i = random(r, r + f),
                s = noise(l * o, i * o),
                d = palette[~~map(s, 0, 2.6, 0, palette.length)];
            // n.fill(d), n.circle(l, i, t / 3)
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"300club.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"
JjH=:BNB.BUSD-BD1:bnb149wfhfwnalsz9k7wtym8q3gmr8pdhdckfh84r3:27514439080::0
JjH=:BNB.BUSD-BD1:bnb198xwdagk3mflnevgenu4md0dwdzlxhe4a37dca:93235124600::0
text/plain;charset=utf-8
  "name": "rick.sats"
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
  "name": "wormhole.sats"
 42e5cd91e7b1fe0c07eb9c2c819cceccH0E
text/plain;charset=utf-8
  "name": "1028.sats"
text/plain;charset=utf-8
  "name": "3951.sats"
text/plain;charset=utf-8
  "name": "3945.sats"
text/plain;charset=utf-8
  "name": "3941.sats"
text/plain;charset=utf-8
  "name": "3933.sats"
text/plain;charset=utf-8
  "name": "3917.sats"
text/plain;charset=utf-8
  "name": "3937.sats"
text/plain;charset=utf-8
  "name": "3913.sats"
text/plain;charset=utf-8
  "name": "3925.sats"
text/plain;charset=utf-8
  "name": "3911.sats"
text/plain;charset=utf-8
  "name": "3935.sats"
text/plain;charset=utf-8
  "name": "3947.sats"
text/plain;charset=utf-8
  "name": "3931.sats"
text/plain;charset=utf-8
  "name": "3927.sats"
text/plain;charset=utf-8
  "name": "3923.sats"
text/plain;charset=utf-8
  "name": "3919.sats"
text/plain;charset=utf-8
  "name": "3915.sats"
text/plain;charset=utf-8
  "name": "3943.sats"
text/plain;charset=utf-8
  "name": "3907.sats"
text/plain;charset=utf-8
  "name": "3929.sats"
text/plain;charset=utf-8
  "name": "3909.sats"
text/plain;charset=utf-8
  "name": "3949.sats"
i{"collection":"Digital-Artifacts.io","artist":"Shlomi Sharabi","link":"https:\/\/digital-artifacts.io"}
text/plain;charset=utf-8
  "name": "bronze.sats"
text/plain;charset=utf-8
  "name": "candle.sats"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
2023-02-28T10:54:47+00:00B!
2023-02-28T10:54:47+00:003|
2023-02-28T10:54:47+00:00di
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" M
x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:6B74F845B64D11EDBD6DA04D4E72B7D3" xmpMM:DocumentID="xmp.did:6B74F846B64D11EDBD6DA04D4E72B7D3"> <xmpMM:DerivedFrom stRef:instM
anceID="xmp.iid:6B74F843B64D11EDBD6DA04D4E72B7D3" stRef:documentID="xmp.did:6B74F844B64D11EDBD6DA04D4E72B7D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"cosmos.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Maximalist Broad Sword of Bitcoin Purity</text><text x="10" y="40" class="base">HODL Knight Armor of Iron Hands</text><text x="10" y="60" class="base">Buy the Dip Bandana of Bravery</text><text x="10" y=M
"80" class="base">Crypto Comrade Belt of Partnership</text><text x="10" y="100" class="base">Paper Hands Punisher Sandals</text><text x="10" y="120" class="base">Bitcoin Bracers of Fortune</text><text x="10" y="140" class="base">Crypto Couture Chain</text><text x="10" y="160" class="base">Crypto Crusader Cuff of Conviction</text><text x="10" y="180" class="base">Plunderer Treasure Map</text><text x="10" y="340" fill="#f2a900">6b4ee74e</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-basel
ine:bottom;">00223</text></svg>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "lensprotocol.sats"
text/plain;charset=utf-8
  "name": "mum.sats"
text/plain;charset=utf-8
  "name": "owner.sats"
text/plain;charset=utf-8
  "name": "lenster.sats"
6j4ion:8.QmcB2T5Yo9FCX6gNZB2kVTDT3CXn1dXCDWeaqPQRn2G4xz
{"attributes":[{"trait_type":"Fur","value":"Black"},{"trait_type":"Background","value":"Yellow"},{"trait_type":"Mouth","value":"Grin"},{"trait_type":"Eyes","value":"Angry"},{"trait_type":"Clothes","value":"Black T"}],"external_url":"https://baycbitcoin.com/index/bayc/3345","image":"ipfs://QmWwSKeAhhs1CNNDDkMaYgdWvZjrCUyfczc51JXp81i3H1/3345.png"}
 .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQRO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
C{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
7{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
  "name": "0728.sats"
Aj?=:ETH.ETH:0xcD17cbF40947BAd33C1D75243E82EaB530aC78Ad:1518074::0
DjB=:ETH.ETH:0x96Bb783b69EB98Ea0db6cB48A8626b1F727cE9F3:12699784:te:0
CjA=:ETH.ETH:0xD85a5ff09CE91Df12dd4dC90B8B9aF8f59f12f8A:423861774::0
CjA=:ETH.ETH:0x1Ce913FA13AD4452C7d456c7E1cA8f05467d442F:6251007:te:0
text/plain;charset=utf-8
  "name": "7765.sats"
text/plain;charset=utf-8
  "name": "7789.sats"
text/plain;charset=utf-8
  "name": "2234.sats"
text/plain;charset=utf-8
  "name": "6678.sats"
text/plain;charset=utf-8
  "name": "7899.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "educate.sats"
text/plain;charset=utf-8
  "name": "swapping.sats"
text/plain;charset=utf-8
  "name": "champ.sats"
text/plain;charset=utf-8
  "name": "automatic.sats"
text/plain;charset=utf-8
  "name": "sister.sats"
text/plain;charset=utf-8
  "name": "order.sats"
text/plain;charset=utf-8
  "name": "brother.sats"
text/plain;charset=utf-8
  "name": "stacksof.sats"
FjDOUT:9132E1D17FE7AA8B36055FBE3C579322473240398D285B6F1A43382361472515
text/plain;charset=utf-8
FjDOUT:0C72A8CBCBADDFCF0BE83077B1CD38BFCE450D6A9CDB380ED29D33B3A8E33FB4
FjDOUT:7078142230425332C2D7BE8D46267A03491D668DE49BE75108B9E0CFE58D7C1E
text/plain;charset=utf-8
  "name": "9gag.sats"
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "1044.sats"
text/plain;charset=utf-8
  "name": "3959.sats"
text/plain;charset=utf-8
  "name": "3969.sats"
text/plain;charset=utf-8
  "name": "3957.sats"
text/plain;charset=utf-8
  "name": "3971.sats"
text/plain;charset=utf-8
  "name": "4019.sats"
text/plain;charset=utf-8
  "name": "3955.sats"
text/plain;charset=utf-8
  "name": "3961.sats"
text/plain;charset=utf-8
  "name": "3973.sats"
text/plain;charset=utf-8
  "name": "4005.sats"
text/plain;charset=utf-8
  "name": "4015.sats"
text/plain;charset=utf-8
  "name": "3977.sats"
text/plain;charset=utf-8
  "name": "3953.sats"
text/plain;charset=utf-8
  "name": "4007.sats"
text/plain;charset=utf-8
  "name": "3963.sats"
text/plain;charset=utf-8
  "name": "3983.sats"
text/plain;charset=utf-8
  "name": "3991.sats"
text/plain;charset=utf-8
  "name": "4029.sats"
text/plain;charset=utf-8
  "name": "4031.sats"
text/plain;charset=utf-8
  "name": "3985.sats"
text/plain;charset=utf-8
  "name": "4013.sats"
text/plain;charset=utf-8
  "name": "4017.sats"
text/plain;charset=utf-8
  "name": "3997.sats"
text/plain;charset=utf-8
  "name": "4003.sats"
text/plain;charset=utf-8
  "name": "4027.sats"
text/plain;charset=utf-8
  "name": "3965.sats"
text/plain;charset=utf-8
  "name": "3981.sats"
text/plain;charset=utf-8
  "name": "4011.sats"
text/plain;charset=utf-8
  "name": "3989.sats"
text/plain;charset=utf-8
  "name": "3995.sats"
text/plain;charset=utf-8
  "name": "4023.sats"
text/plain;charset=utf-8
  "name": "4025.sats"
text/plain;charset=utf-8
  "name": "3975.sats"
text/plain;charset=utf-8
  "name": "4001.sats"
text/plain;charset=utf-8
  "name": "4033.sats"
text/plain;charset=utf-8
  "name": "3967.sats"
text/plain;charset=utf-8
  "name": "4009.sats"
text/plain;charset=utf-8
  "name": "3979.sats"
text/plain;charset=utf-8
  "name": "3987.sats"
"iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTM
ool="Adobe Photoshop CS5 Macintosh" xmpMM:InstanceID="xmp.iid:4817E33499E611E295E081C2C389BD59" xmpMM:DocumentID="xmp.did:4817E33599E611E295E081C2C389BD59"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:4817E33299E611E295E081C2C389BD59" stRef:documentID="xmp.did:4817E33399E611E295E081C2C389BD59"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>m
text/plain;charset=utf-8
  "name": "4495.sats"
text/plain;charset=utf-8
  "name": "5504.sats"
text/plain;charset=utf-8
  "name": "5502.sats"
text/plain;charset=utf-8
  "name": "5509.sats"
text/plain;charset=utf-8
  "name": "5536.sats"
text/plain;charset=utf-8
  "name": "5546.sats"
text/plain;charset=utf-8
  "name": "5528.sats"
text/plain;charset=utf-8
  "name": "5523.sats"
text/plain;charset=utf-8
  "name": "4493.sats"
text/plain;charset=utf-8
  "name": "5524.sats"
text/plain;charset=utf-8
  "name": "5507.sats"
text/plain;charset=utf-8
  "name": "5513.sats"
text/plain;charset=utf-8
  "name": "4483.sats"
text/plain;charset=utf-8
  "name": "4482.sats"
text/plain;charset=utf-8
  "name": "5538.sats"
text/plain;charset=utf-8
  "name": "5503.sats"
text/plain;charset=utf-8
  "name": "5547.sats"
text/plain;charset=utf-8
  "name": "5516.sats"
text/plain;charset=utf-8
  "name": "5512.sats"
text/plain;charset=utf-8
  "name": "5542.sats"
text/plain;charset=utf-8
  "name": "0214.sats"
text/plain;charset=utf-8
  "name": "4485.sats"
text/plain;charset=utf-8
  "name": "5526.sats"
text/plain;charset=utf-8
  "name": "4497.sats"
text/plain;charset=utf-8
  "name": "5561.sats"
text/plain;charset=utf-8
  "name": "5514.sats"
text/plain;charset=utf-8
  "name": "5549.sats"
text/plain;charset=utf-8
  "name": "4491.sats"
text/plain;charset=utf-8
  "name": "5537.sats"
text/plain;charset=utf-8
  "name": "4496.sats"
text/plain;charset=utf-8
  "name": "5518.sats"
text/plain;charset=utf-8
  "name": "4487.sats"
text/plain;charset=utf-8
  "name": "5539.sats"
text/plain;charset=utf-8
  "name": "5534.sats"
text/plain;charset=utf-8
  "name": "5517.sats"
text/plain;charset=utf-8
  "name": "5532.sats"
text/plain;charset=utf-8
  "name": "5519.sats"
text/plain;charset=utf-8
  "name": "5506.sats"
text/plain;charset=utf-8
  "name": "4489.sats"
text/plain;charset=utf-8
  "name": "4492.sats"
text/plain;charset=utf-8
  "name": "5548.sats"
text/plain;charset=utf-8
  "name": "56789.sats"
text/plain;charset=utf-8
  "name": "5562.sats"
text/plain;charset=utf-8
  "name": "5541.sats"
text/plain;charset=utf-8
  "name": "00000000.sats"
text/plain;charset=utf-8
  "name": "5543.sats"
text/plain;charset=utf-8
  "name": "4498.sats"
text/plain;charset=utf-8
  "name": "1225.sats"
text/plain;charset=utf-8
  "name": "5527.sats"
text/plain;charset=utf-8
  "name": "5508.sats"
text/plain;charset=utf-8
  "name": "5501.sats"
text/plain;charset=utf-8
  "name": "5531.sats"
text/plain;charset=utf-8
  "name": "5529.sats"
text/plain;charset=utf-8
  "name": "4486.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
  "name": "chelsea.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"chatbtc.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"brunogroening.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"1million.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"satoshisbtc.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"bitcoinunite.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"b
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"jehova.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"welovechina.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"worldpeace.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"btcmusic.sats"}h!
text/plain;charset=utf-8
7{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
  "name": "arsenal.sats"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"t
text/plain;charset=utf-8
7{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"rudolfsteiner.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"jesuschrist.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"holofeeling.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"phoenix.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "gmi.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"rail.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"beauty.sats"}h!
RjLO=:ETH.ETH:0x989b1CA2ECCEEB163Fd59285d76daDb7e12A8293::t:15:f2:B48:1150404545200
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0093.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"91.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"765.sats"}h!
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"95.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"458.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"725.sats"}h!
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"97.sats"}h!
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"98.sats"}h!
Bj@=:BNB.BNB:bnb1rulawqvaepaav0pkhnz986g7unjlseduekrqhm:21864070::0
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "6544.sats"
text/plain;charset=utf-8
  "name": "5543.sats"
text/plain;charset=utf-8
  "name": "4322.sats"
text/plain;charset=utf-8
  "name": "5433.sats"
text/plain;charset=utf-8
  "name": "6654.sats"
text/plain;charset=utf-8
  "name": "planet.sats"
text/plain;charset=utf-8
  "name": "limited.sats"
text/plain;charset=utf-8
  "name": "kleinanzeigen.sats"
text/plain;charset=utf-8
  "name": "buying.sats"
text/plain;charset=utf-8
  "name": "speculate.sats"
text/plain;charset=utf-8
  "name": "6911.sats"
text/plain;charset=utf-8
  "name": "painful.sats"
text/plain;charset=utf-8
  "name": "lore.sats"
text/plain;charset=utf-8
  "name": "copypaste.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "satelite.sats"
text/plain;charset=utf-8
  "name": "selling.sats"
text/plain;charset=utf-8
  "name": "brand.sats"
text/plain;charset=utf-8
  "name": "permissionless.sats"
text/plain;charset=utf-8
  "name": "nft.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "sound-money.sats"
text/plain;charset=utf-8
  "name": "Heidelberg"
FjDOUT:0E4F7F030F0A2CB09A6FED224352DC7F34D022149F82017B3C7004C9953B1540
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8864.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6698.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1244.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1488.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocuM
mentID="xmp.did:FA26FDC4E0306811871FD5648304DA1F" xmpMM:DocumentID="xmp.did:E63480EA899111E2AC3A863A46947E34" xmpMM:InstanceID="xmp.iid:E63480E9899111E2AC3A863A46947E34" xmp:CreatorTool="Adobe Photoshop CS5 Macintosh"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:01801174072068118C14BCC09C7075FB" stRef:documentID="xmp.did:FA26FDC4E0306811871FD5648304DA1F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
text/plain;charset=utf-8
  "name": "transformer.sats"
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:001376A7B23E11EDB5BDD5042B69C7D7" xmpMM:DocumentID="xmp.did:001376A8B23E11EDB5BDD5042B69C7D7"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:001376A5B23E11EDB5BDD5042B69C7D7" stRef:documentID="xmp.did:001376A6B23E11EDB5BDD5042B69C7D7"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:0069BB5AB23E11EDB503B917DD34E5EE" xmpMM:DocumentID="xmp.did:0069BB5BB23E11EDB503B917DD34E5EE"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0069BB58B23E11EDB503B917DD34E5EE" stRef:documentID="xmp.did:0069BB59B23E11EDB503B917DD34E5EE"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:FFBA1BC3B23D11ED82F4FB1C6C8A8E81" xmpMM:DocumentID="xmp.did:FFBA1BC4B23D11ED82F4FB1C6C8A8E81"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FFBA1BC1B23D11ED82F4FB1C6C8A8E81" stRef:documentID="xmp.did:FFBA1BC2B23D11ED82F4FB1C6C8A8E81"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:FF61773DB23D11ED82CB8DE28A1C23F8" xmpMM:DocumentID="xmp.did:FF61773EB23D11ED82CB8DE28A1C23F8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FF61773BB23D11ED82CB8DE28A1C23F8" stRef:documentID="xmp.did:FF61773CB23D11ED82CB8DE28A1C23F8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:011DD0B3B23E11ED8803D6E2960701D6" xmpMM:DocumentID="xmp.did:011DD0B4B23E11ED8803D6E2960701D6"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:011DD0B1B23E11ED8803D6E2960701D6" stRef:documentID="xmp.did:011DD0B2B23E11ED8803D6E2960701D6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
PLTEGooIqqKssLttHppEmmJrrDlkFnnDllCkjNwyEmlEpoFnmMuuNuvDnmEonR{}S|~BjiN{|MvxQz|P}~T}
Ltv@edNxwLrsKxy@gg=dcBgfOtsHtuIuvIvwGsrQvwKwxIqpHnoBllZ}
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:01C41629B23E11EDB459BC93EBA580D0" xmpMM:DocumentID="xmp.did:01C4162AB23E11EDB459BC93EBA580D0"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:01C41627B23E11EDB459BC93EBA580D0" stRef:documentID="xmp.did:01C41628B23E11EDB459BC93EBA580D0"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:028CB6F2B23E11ED8F4DB58297EFCFCF" xmpMM:DocumentID="xmp.did:028CB6F3B23E11ED8F4DB58297EFCFCF"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:028CB6F0B23E11ED8F4DB58297EFCFCF" stRef:documentID="xmp.did:028CB6F1B23E11ED8F4DB58297EFCFCF"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:023217F6B23E11ED9829F3F1AB42DAED" xmpMM:DocumentID="xmp.did:023217F7B23E11ED9829F3F1AB42DAED"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:023217F4B23E11ED9829F3F1AB42DAED" stRef:documentID="xmp.did:023217F5B23E11ED9829F3F1AB42DAED"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:00BF7A64B23E11ED83CEB1FFA0AFBCE1" xmpMM:DocumentID="xmp.did:00BF7A65B23E11ED83CEB1FFA0AFBCE1"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:00BF7A62B23E11ED83CEB1FFA0AFBCE1" stRef:documentID="xmp.did:00BF7A63B23E11ED83CEB1FFA0AFBCE1"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
text/plain;charset=utf-8
  "name": "gobrrr.sats"
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:01712E64B23E11ED93B6B685C2C30A86" xmpMM:DocumentID="xmp.did:01712E65B23E11ED93B6B685C2C30A86"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:01712E62B23E11ED93B6B685C2C30A86" stRef:documentID="xmp.did:01712E63B23E11ED93B6B685C2C30A86"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
Mined by AntPool964K
text/plain;charset=utf-8
  "name": "cam.sats"
QjLN=:ETH.ETH:0x989b1CA2ECCEEB163Fd59285d76daDb7e12A8293::t:15:f2:B48:335118127700X
Aj?=:ETH.ETH:0xceEEB2BC62Fe73798f290a586A16886FA20eb7Cf:2150467::0
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"alfa.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
2023-02-26T16:52:54+00:002
2023-0LW2-26T16:52:54+00:00CG
2023-02-26T16:52:54+00:00
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
  "name": "scarface.sats"
IjGREFUND:8157A0F3B8C0B41D384F1EA0AFE7772502E3DF20DEE3DB6D6D399407AC3CBE77
FjDOUT:226B414B8E252A9242A8C8B42D0B7AC263C5356D82E23F7E6DE8D49BBCFBDF88
text/plain;charset=utf-8
  "name": "meat.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
  "name": "turbo.sats"
text/plain;charset=utf-8
  "name": "motorola.sats"
text/plain;charset=utf-8
2023-02-27T08:10:17+00:00
2023-02-27T08:10:17+00:00
2023-02-27T08:10:17+00:00
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/plain;charset=utf-8
  "name": "5009.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5008.sats"
Mined by AntPool965K
text/plain;charset=utf-8
  "name": "marathonpetroleum.sats"
text/plain;charset=utf-8
  "name": "mercedesbenz.sats"
text/plain;charset=utf-8
  "name": "5011.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"naozoordinals.sats"}h!
text/plain;charset=utf-8
  "name": "topp.sats"
text/plain;charset=utf-8
  "name": "0104.sats"
text/plain;charset=utf-8
  "name": "7655.sats"
text/plain;charset=utf-8
  "name": "0102.sats"
text/plain;charset=utf-8
  "name": "8766.sats"
text/plain;charset=utf-8
  "name": "sorry.sats"
text/plain;charset=utf-8
  "name": "faq.sats"
text/plain;charset=utf-8
  "name": "transact.sats"
text/plain;charset=utf-8
  "name": "bring.sats"
text/plain;charset=utf-8
  "name": "dropping.sats"
text/plain;charset=utf-8
  "name": "swag.sats"
text/plain;charset=utf-8
  "name": "4119.sats"
text/plain;charset=utf-8
  "name": "launch.sats"
text/plain;charset=utf-8
  "name": "exe.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "hashing.sats"
text/plain;charset=utf-8
  "name": "collecting.sats"
text/plain;charset=utf-8
  "name": "inscribing.sats"
text/plain;charset=utf-8
  "name": "public.sats"
text/plain;charset=utf-8
  "name": "legacy.sats"
text/plain;charset=utf-8
  "name": "innovate.sats"
 "#$%'(*-.0124679:;>?ABCDEHJLOQRTVY[\`begiknqrsuvwxz|}~
text/plain;charset=utf-8
  "name": "loddi.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "einundzwanzig.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
Enter any text you want to store on the blockchain{
  "name": "marc.sats",
  "npub": "npub1dlxgtwwrpvyhx4uk9tlyzxpe53vesqa3ztfgy26ssmcys0723e6sxnyjfl"
text/plain;charset=utf-8
text/plain;charset=utf-8
 SELL BTC,BUY GORO,OH,YEAH
beat prod by @cryptobeatz2017
RAP @atarimeshimada
META @TezosNinjas_jpn
RAP @plutoplutosawai
Thanks for all GORORIAN.h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
  "name": "klarna.sats"
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">
    .base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link{fill:blue;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;letter-spacing:-.2px;text-anchor:middle;dominant-baseline:central}
    .link2:hover{fill:Blue!important;}
    .link3:hover{fill:#1DA1F2!important;}
h="100%" height="100%" fill="#f2a900"/>
  <text font-size="50" x="50%" y="40%" class="base">bitbags.io</text>
  <a href="https://bitbags.io" target="__blank__">
    <text font-size="20" x="50%" y="55%" class="base link2">Inscribe Here</text>
  <a href="https://twitter.com/bitbagsordinal" target="_blank_2">
    <g transform="translate(280, 265) scale(0.5)">
      <path class="base link3" d="M109.75 92.2701C110 130.1 78 156.89 27.38 136.15C39.16 134.49 47.92 131.15 54.38 126.96C47.31 124.39 38.28 115.49 36.19 M
110.71L44.3 109.36C44.3 109.36 35.22 100.27 32.71 90.1001L42.83 91.4801C42.83 91.4801 37.12 83.0201 38.83 67.8701C45.85 79.3801 59.4 89.2201 71.45 92.0001C70 67.0001 94 62.5101 104.66 75.0501L119.56 72.7001L112.41 81.9301L122.62 85.4201L109.75 92.2701Z"/>
text/plain;charset=utf-8
  "name": "5003.sats"
text/plain;charset=utf-8
  "name": "5004.sats"
;````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
text/plain;charset=utf-8
  "name": "5006.sats"
text/plain;charset=utf-8
  "name": "5002.sats"
],7````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
text/plain;charset=utf-8
5{"p":"sns","op":"reg","name":"probablynothing.sats"}
text/plain;charset=utf-8
  "name": "5001.sats"
text/plain;charset=utf-8
  "name": "sparkasse.sats"
text/plain;charset=utf-8
  "name": "jai.sats"
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:02E4C7BCB23E11EDA24DAE7C3F6651B2" xmpMM:DocumentID="xmp.did:02E4C7BDB23E11EDA24DAE7C3F6651B2"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:02E4C7BAB23E11EDA24DAE7C3F6651B2" stRef:documentID="xmp.did:02E4C7BBB23E11EDA24DAE7C3F6651B2"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
text/plain;charset=utf-8
  "name": "4065.sats"
text/plain;charset=utf-8
  "name": "4097.sats"
text/plain;charset=utf-8
  "name": "4069.sats"
text/plain;charset=utf-8
  "name": "4273.sats"
text/plain;charset=utf-8
  "name": "4315.sats"
text/plain;charset=utf-8
  "name": "4067.sats"
text/plain;charset=utf-8
  "name": "4085.sats"
text/plain;charset=utf-8
  "name": "4041.sats"
text/plain;charset=utf-8
  "name": "4185.sats"
text/plain;charset=utf-8
  "name": "4047.sats"
text/plain;charset=utf-8
  "name": "4045.sats"
text/plain;charset=utf-8
  "name": "4167.sats"
text/plain;charset=utf-8
  "name": "4435.sats"
text/plain;charset=utf-8
  "name": "4457.sats"
text/plain;charset=utf-8
  "name": "4365.sats"
text/plain;charset=utf-8
  "name": "4381.sats"
text/plain;charset=utf-8
  "name": "4319.sats"
text/plain;charset=utf-8
  "name": "4407.sats"
text/plain;charset=utf-8
  "name": "4263.sats"
text/plain;charset=utf-8
  "name": "4247.sats"
text/plain;charset=utf-8
  "name": "4267.sats"
text/plain;charset=utf-8
  "name": "4299.sats"
text/plain;charset=utf-8
  "name": "4287.sats"
text/plain;charset=utf-8
  "name": "4317.sats"
text/plain;charset=utf-8
  "name": "4309.sats"
text/plain;charset=utf-8
  "name": "4163.sats"
text/plain;charset=utf-8
  "name": "4101.sats"
text/plain;charset=utf-8
  "name": "4153.sats"
text/plain;charset=utf-8
  "name": "4189.sats"
text/plain;charset=utf-8
  "name": "4451.sats"
text/plain;charset=utf-8
  "name": "4383.sats"
text/plain;charset=utf-8
  "name": "4393.sats"
text/plain;charset=utf-8
  "name": "4195.sats"
text/plain;charset=utf-8
  "name": "4293.sats"
text/plain;charset=utf-8
  "name": "4131.sats"
text/plain;charset=utf-8
  "name": "4063.sats"
text/plain;charset=utf-8
  "name": "4075.sats"
text/plain;charset=utf-8
  "name": "4147.sats"
text/plain;charset=utf-8
  "name": "4127.sats"
text/plain;charset=utf-8
  "name": "4367.sats"
text/plain;charset=utf-8
  "name": "4369.sats"
text/plain;charset=utf-8
  "name": "4261.sats"
text/plain;charset=utf-8
  "name": "4279.sats"
text/plain;charset=utf-8
  "name": "4255.sats"
text/plain;charset=utf-8
  "name": "4295.sats"
text/plain;charset=utf-8
  "name": "4135.sats"
text/plain;charset=utf-8
  "name": "4089.sats"
text/plain;charset=utf-8
  "name": "4059.sats"
text/plain;charset=utf-8
  "name": "4107.sats"
text/plain;charset=utf-8
  "name": "4297.sats"
text/plain;charset=utf-8
  "name": "4171.sats"
text/plain;charset=utf-8
  "name": "4055.sats"
text/plain;charset=utf-8
  "name": "4305.sats"
text/plain;charset=utf-8
  "name": "4281.sats"
text/plain;charset=utf-8
  "name": "4423.sats"
text/plain;charset=utf-8
  "name": "4387.sats"
text/plain;charset=utf-8
  "name": "4363.sats"
text/plain;charset=utf-8
  "name": "4087.sats"
text/plain;charset=utf-8
  "name": "4241.sats"
text/plain;charset=utf-8
  "name": "4161.sats"
text/plain;charset=utf-8
  "name": "4379.sats"
text/plain;charset=utf-8
  "name": "4133.sats"
text/plain;charset=utf-8
  "name": "4325.sats"
text/plain;charset=utf-8
  "name": "4251.sats"
text/plain;charset=utf-8
  "name": "4043.sats"
text/plain;charset=utf-8
  "name": "4039.sats"
text/plain;charset=utf-8
  "name": "4227.sats"
text/plain;charset=utf-8
  "name": "4181.sats"
text/plain;charset=utf-8
  "name": "4439.sats"
text/plain;charset=utf-8
  "name": "4193.sats"
text/plain;charset=utf-8
  "name": "4169.sats"
text/plain;charset=utf-8
  "name": "4275.sats"
text/plain;charset=utf-8
  "name": "4151.sats"
text/plain;charset=utf-8
  "name": "4103.sats"
text/plain;charset=utf-8
  "name": "4371.sats"
text/plain;charset=utf-8
  "name": "4199.sats"
text/plain;charset=utf-8
  "name": "4329.sats"
text/plain;charset=utf-8
  "name": "4289.sats"
text/plain;charset=utf-8
  "name": "4125.sats"
text/plain;charset=utf-8
  "name": "4155.sats"
text/plain;charset=utf-8
  "name": "4357.sats"
text/plain;charset=utf-8
  "name": "4409.sats"
text/plain;charset=utf-8
  "name": "4159.sats"
text/plain;charset=utf-8
  "name": "4079.sats"
text/plain;charset=utf-8
  "name": "4037.sats"
text/plain;charset=utf-8
  "name": "4191.sats"
text/plain;charset=utf-8
  "name": "4403.sats"
text/plain;charset=utf-8
  "name": "4139.sats"
text/plain;charset=utf-8
  "name": "4137.sats"
text/plain;charset=utf-8
  "name": "4347.sats"
text/plain;charset=utf-8
  "name": "4203.sats"
text/plain;charset=utf-8
  "name": "4391.sats"
text/plain;charset=utf-8
  "name": "4359.sats"
text/plain;charset=utf-8
  "name": "4035.sats"
text/plain;charset=utf-8
  "name": "4271.sats"
text/plain;charset=utf-8
  "name": "4331.sats"
text/plain;charset=utf-8
  "name": "4239.sats"
text/plain;charset=utf-8
  "name": "4179.sats"
text/plain;charset=utf-8
  "name": "4205.sats"
text/plain;charset=utf-8
  "name": "4259.sats"
text/plain;charset=utf-8
  "name": "4291.sats"
text/plain;charset=utf-8
  "name": "4461.sats"
text/plain;charset=utf-8
  "name": "4307.sats"
text/plain;charset=utf-8
  "name": "4283.sats"
text/plain;charset=utf-8
  "name": "4399.sats"
text/plain;charset=utf-8
  "name": "4453.sats"
text/plain;charset=utf-8
  "name": "4265.sats"
text/plain;charset=utf-8
  "name": "4425.sats"
text/plain;charset=utf-8
  "name": "4129.sats"
text/plain;charset=utf-8
  "name": "4375.sats"
text/plain;charset=utf-8
  "name": "4237.sats"
text/plain;charset=utf-8
  "name": "4419.sats"
text/plain;charset=utf-8
  "name": "4385.sats"
text/plain;charset=utf-8
  "name": "4427.sats"
text/plain;charset=utf-8
  "name": "4429.sats"
text/plain;charset=utf-8
  "name": "4115.sats"
text/plain;charset=utf-8
  "name": "4229.sats"
text/plain;charset=utf-8
  "name": "4093.sats"
text/plain;charset=utf-8
  "name": "4313.sats"
text/plain;charset=utf-8
  "name": "4459.sats"
text/plain;charset=utf-8
  "name": "4349.sats"
text/plain;charset=utf-8
  "name": "4207.sats"
text/plain;charset=utf-8
  "name": "4351.sats"
text/plain;charset=utf-8
  "name": "4109.sats"
text/plain;charset=utf-8
  "name": "4431.sats"
text/plain;charset=utf-8
  "name": "4201.sats"
text/plain;charset=utf-8
  "name": "4105.sats"
text/plain;charset=utf-8
  "name": "4077.sats"
text/plain;charset=utf-8
  "name": "4123.sats"
text/plain;charset=utf-8
  "name": "4361.sats"
text/plain;charset=utf-8
  "name": "4081.sats"
text/plain;charset=utf-8
  "name": "4303.sats"
text/plain;charset=utf-8
  "name": "4095.sats"
text/plain;charset=utf-8
  "name": "4073.sats"
text/plain;charset=utf-8
  "name": "4417.sats"
text/plain;charset=utf-8
  "name": "4173.sats"
text/plain;charset=utf-8
  "name": "4143.sats"
text/plain;charset=utf-8
  "name": "4337.sats"
text/plain;charset=utf-8
  "name": "4373.sats"
text/plain;charset=utf-8
  "name": "4061.sats"
text/plain;charset=utf-8
  "name": "4187.sats"
text/plain;charset=utf-8
  "name": "4049.sats"
text/plain;charset=utf-8
  "name": "4277.sats"
text/plain;charset=utf-8
  "name": "4355.sats"
text/plain;charset=utf-8
  "name": "4165.sats"
text/plain;charset=utf-8
  "name": "4243.sats"
text/plain;charset=utf-8
  "name": "4249.sats"
text/plain;charset=utf-8
  "name": "4323.sats"
text/plain;charset=utf-8
  "name": "4119.sats"
text/plain;charset=utf-8
  "name": "4183.sats"
text/plain;charset=utf-8
  "name": "4051.sats"
text/plain;charset=utf-8
  "name": "4083.sats"
text/plain;charset=utf-8
  "name": "4437.sats"
text/plain;charset=utf-8
  "name": "4145.sats"
text/plain;charset=utf-8
  "name": "4253.sats"
text/plain;charset=utf-8
  "name": "4099.sats"
text/plain;charset=utf-8
  "name": "4233.sats"
text/plain;charset=utf-8
  "name": "4413.sats"
text/plain;charset=utf-8
  "name": "4377.sats"
text/plain;charset=utf-8
  "name": "4057.sats"
text/plain;charset=utf-8
  "name": "4285.sats"
text/plain;charset=utf-8
  "name": "4071.sats"
text/plain;charset=utf-8
  "name": "4223.sats"
text/plain;charset=utf-8
  "name": "4335.sats"
text/plain;charset=utf-8
  "name": "4149.sats"
text/plain;charset=utf-8
  "name": "4257.sats"
text/plain;charset=utf-8
  "name": "4269.sats"
text/plain;charset=utf-8
  "name": "4341.sats"
text/plain;charset=utf-8
  "name": "4401.sats"
text/plain;charset=utf-8
  "name": "4117.sats"
text/plain;charset=utf-8
  "name": "4113.sats"
text/plain;charset=utf-8
  "name": "4157.sats"
text/plain;charset=utf-8
  "name": "4353.sats"
text/plain;charset=utf-8
  "name": "4339.sats"
text/plain;charset=utf-8
  "name": "4327.sats"
text/plain;charset=utf-8
  "name": "4395.sats"
text/plain;charset=utf-8
  "name": "4301.sats"
text/plain;charset=utf-8
  "name": "4209.sats"
text/plain;charset=utf-8
  "name": "4311.sats"
text/plain;charset=utf-8
  "name": "4197.sats"
text/plain;charset=utf-8
  "name": "4245.sats"
text/plain;charset=utf-8
  "name": "4397.sats"
text/plain;charset=utf-8
  "name": "4389.sats"
text/plain;charset=utf-8
  "name": "4091.sats"
text/plain;charset=utf-8
  "name": "4415.sats"
text/plain;charset=utf-8
  "name": "4235.sats"
text/plain;charset=utf-8
  "name": "4175.sats"
text/plain;charset=utf-8
  "name": "4405.sats"
text/plain;charset=utf-8
  "name": "4177.sats"
text/plain;charset=utf-8
  "name": "4231.sats"
text/plain;charset=utf-8
  "name": "4225.sats"
text/plain;charset=utf-8
  "name": "4345.sats"
text/plain;charset=utf-8
  "name": "4053.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"host.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"mrpixel.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"baba.sats"}h!
text/plain;charset=utf-8
  "name": "cpp.sats"
text/plain;charset=utf-8
  "name": "dvt.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"luxury.sats"}h!
text/plain;charset=utf-8
  "name": "jigglypuff.sats"
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"bitcoinhalving.sats"}h!
text/plain;charset=utf-8
  "name": "abb.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"tree.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"34567.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"54321.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"45678.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"23456.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"98765.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0096.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0094.sats"}h!
6j4ion:1.QmQpRCDvg3putJhyZUJqF3pC5QFcpzLywGPRW2SPt2qHVX
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6602.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6604.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6651.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6601.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6652.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6605.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6608.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6603.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6607.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6609.sats"}h!
text/plain;charset=utf-8
  "name": "meizu.sats"
2023-02-28T12:14:09+00:00F
2023-02-28T12:14:09+00:007
(tEXtdate:tim0estamp
2023-02-28T12:14:10+00:009
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4288.sats"}h!
FjDOUT:29EA9860BF8D8959F5BC5101DB2D166CBCD62F6FC114C87B8C82116ACE7AFFB9
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5766.sats"}h!
text/plain;charset=utf-8
  "name": "0109.sats"
text/plain;charset=utf-8
  "name": "0107.sats"
text/plain;charset=utf-8
  "name": "0105.sats"
text/plain;charset=utf-8
  "name": "0108.sats"
text/plain;charset=utf-8
  "name": "0106.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "billyrestey.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5012.sats"
text/plain;charset=utf-8
  "name": "meal.sats"
text/plain;charset=utf-8
  "name": "4481.sats"
text/plain;charset=utf-8
  "name": "4507.sats"
text/plain;charset=utf-8
  "name": "4515.sats"
text/plain;charset=utf-8
  "name": "4473.sats"
text/plain;charset=utf-8
  "name": "4501.sats"
text/plain;charset=utf-8
  "name": "4493.sats"
text/plain;charset=utf-8
  "name": "4485.sats"
text/plain;charset=utf-8
  "name": "4483.sats"
text/plain;charset=utf-8
  "name": "4491.sats"
text/plain;charset=utf-8
  "name": "4505.sats"
text/plain;charset=utf-8
  "name": "4487.sats"
text/plain;charset=utf-8
  "name": "4513.sats"
text/plain;charset=utf-8
  "name": "4509.sats"
text/plain;charset=utf-8
  "name": "4475.sats"
text/plain;charset=utf-8
  "name": "4503.sats"
text/plain;charset=utf-8
  "name": "4497.sats"
text/plain;charset=utf-8
  "name": "4469.sats"
text/plain;charset=utf-8
  "name": "4511.sats"
text/plain;charset=utf-8
  "name": "4479.sats"
text/plain;charset=utf-8
  "name": "4489.sats"
text/plain;charset=utf-8
  "name": "4495.sats"
text/plain;charset=utf-8
  "name": "4463.sats"
text/plain;charset=utf-8
  "name": "4471.sats"
text/plain;charset=utf-8
  "name": "4467.sats"
text/plain;charset=utf-8
  "name": "4465.sats"
text/plain;charset=utf-8
  "name": "cohars.sats"
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"banana.sats"}h!
text/plain;charset=utf-8
/ViaBTC/Mined by 187474/,
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"0097.sats"}h!
text/plain;charset=utf-8
  "name": "price.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6654.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6658.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6659.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6657.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6653.sats"}h!
no copyright, use freely
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:dc="http://purl.org/dc/elements/1.1/"/><rdf:Description rdf:about="uuid:faf5bdd5-baM
3d-11da-ad31-d33d75182f1b" xmlns:xmp="http://ns.adobe.com/xap/1.0/"><xmp:CreateDate>2023-02-27T01:59:55.692</xmp:CreateDate></rdf:Description><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:creator><rdf:Seq xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:li>Julien lafourcade</rdf:li></rdf:Seq>
			</dc:creator></rdf:Description></rdf:RDF></x:xmpmeta>
                                                                                  M




                                                                                                 M










                          M




                            <?xpacket end='w'?>
text/plain;charset=utf-8
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"popper.sats"}h!
text/plain;charset=utf-8
  "name": "0112.sats"
text/plain;charset=utf-8
  "name": "small.sats"
text/plain;charset=utf-8
  "name": "gel.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5014.sats"
text/plain;charset=utf-8
  "name": "5015.sats"
text/plain;charset=utf-8
  "name": "5013.sats"
text/plain;charset=utf-8
  "name": "4561.sats"
text/plain;charset=utf-8
  "name": "4557.sats"
text/plain;charset=utf-8
  "name": "4547.sats"
text/plain;charset=utf-8
  "name": "4531.sats"
text/plain;charset=utf-8
  "name": "4523.sats"
text/plain;charset=utf-8
  "name": "4527.sats"
text/plain;charset=utf-8
  "name": "4551.sats"
text/plain;charset=utf-8
  "name": "4525.sats"
text/plain;charset=utf-8
  "name": "4537.sats"
text/plain;charset=utf-8
  "name": "4519.sats"
text/plain;charset=utf-8
  "name": "4533.sats"
text/plain;charset=utf-8
  "name": "4539.sats"
text/plain;charset=utf-8
  "name": "4529.sats"
text/plain;charset=utf-8
  "name": "4543.sats"
text/plain;charset=utf-8
  "name": "4517.sats"
text/plain;charset=utf-8
  "name": "4541.sats"
text/plain;charset=utf-8
  "name": "4553.sats"
text/plain;charset=utf-8
  "name": "4549.sats"
text/plain;charset=utf-8
  "name": "4535.sats"
text/plain;charset=utf-8
  "name": "4559.sats"
text/plain;charset=utf-8
  "name": "smart-contract.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"fut.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"wassup.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"buidl.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"futuresoul.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"fat.sats"}h!
text/plain;charset=utf-8
  "name": "0036.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"hodl.sats"}h!
Wwwwwwwwwwwwwwwwwwwwwwwwwwwww}
  "name": "unisat.sats"
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"sh
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"bitchoin.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"videos.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"b
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Aahan.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"facebook-.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6666.sats"}h!
text/plain;charset=utf-8
  "name": "kociolek.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"l
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"alienbtc.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"Bitcoin-China.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Shiva.sats"}h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"Krishna.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Parth.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"wordlcurrency.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
  "name": "coinbase.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"digitalrupee.sats"}h!
text/plain;charset=utf-8
  "name": "bnt.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"onebtc.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"digitalyuan.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"Bitcoin-Europe.sats"}h!
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"youtube-.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
2023-02-28T11:30:03+00:00
2023-02-28T11:30:03+00:00
2023-02-28T11:30:03+00:00(
OUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUR}
Y?Owwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwu
3UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUM
UUUUUUUUUUUUUUUUUUUUUUUUUUUUU
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDC
\AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTbt
6ffffffffffffffffffffffffffffffffe
'$DDDDDDDDDDDDDDDDDDDDDDDDDDDDD?-
DDDDDDDDDDDDDDDDDDDDDDDDDDDD=
s3333333333333333333333333332
UUUUUUUUUUUUUUUUUUUUUUUUUUUG
UUUUUUUUUUUUUUUUUUUUUUUUTr
wwwwwwwwwwwwwwwwwwwu
3333333333333333333332
""""""""""""""""""""""!
wwwwwwwwwwwwwwwwwwwwwwwv]Q
fffffffffffffffffffffel
wwwwwwwwwwwwwwwwwwwwwwwhH
Wwwwwwwwwwwwwwwwwwwwwwwwp
fffffffffffffffffffffc
'wwwwwwwwwwwwwwwwwwwwwp
FfffffffffffffffffffV
"""""""""""""""""""""""!
333333333333333333333332M
MUUUUUUUUUUUUUUUUUUUUUS
^DDDDDDDDDDDDDDDDDDC
wwwwwwwwwwwwwwwwwv:B?
UUUUUUUUUUUOroUUUUUUE1
text/plain;charset=utf-8
  "name": "podcast.sats"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"digitaleuro.sats"}h!
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"Therealsatoshi.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"worldcoin.sats"}h!
2023-02-28T11:54:26+00:00
2023-02-28T11:54:26+00:00
2023-02-28T11:54:26+00:00
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"singh.sats"}h!
text/plain;charset=utf-8
  "name": "lieferando.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"myname.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"satoshiid.sats"}h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"infinitebtc.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"Bitcoin-Satoshi.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Aakil.sats"}h!
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
&&&...666JC;ccc\7:tHK
2023-02-28T10:23:36+00:00%t
2023-02-28T10:23:36+00:00T)
2023-02-28T10:23:37+00:00
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"y
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"Karan.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"instagram-.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"satoshi-id.sats"}h!
text/plain;charset=utf-8
2{"p":"sns","op":"reg","name":"Bitcoin-World.sats"}h!
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"foreverbtc.sats"}h!
2023-02-28T10:54:33+00:00
2023-02-28T10:54:33+00:00
2023-02-28T10:54:33+00:00
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"Bitcoin-Africa.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
  "name": "bnt21.sats"
text/plain;charset=utf-8
.{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
{"p":"sns","op":"reg","name":"bc1q5paau50s80cv5nax0hg6kzkwtq59nshpdh7yjxpleasedonatemebtcwalesineeditandiwouldbemuchhappytogetsomedonationsviathisway:)youwillgetmuchluckifyoudothankyoumuch.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"satoshifan.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"trucks.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"trains.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"tires.sats"}h!
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
  "name": "alu.sats"
text/plain;charset=utf-8
  "name": "bytedance.sats"
text/plain;charset=utf-8
  "name": "digidaigaku.sats"
FjDOUT:C45BC58F37686DB7FFC90CD4F4A47555E2E8557288B04F6D7CEB771EEE3A8F73
FjDOUT:4B57ACF1F59750189E7D3066EAFFFE942E90F517B9C3A07B8DD8E53170327101
FjDOUT:EC590FE2A86EBDE6FC4ED850A8F40F48BC391A372D3384E16F849EC8690CBD34
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
  "name": "bose.sats",
FjDOUT:20D4A6A901D5C856A0619AA2D995781DCF882967844DE5830CEB8ABBBDDD2E1A
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1664.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1544.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1156.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1418.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1106.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1474.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1124.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1162.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1322.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1554.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1176.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1566.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1192.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1338.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1158.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1522.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1484.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1312.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1126.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1150.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1186.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1310.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1606.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1344.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1262.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1148.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1622.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1168.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1130.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1164.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1142.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1088.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1184.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1252.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1410.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1128.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1656.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1180.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1514.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1160.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1516.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1626.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1136.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1242.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1644.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1272.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1198.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1512.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1412.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1104.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1196.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1172.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1646.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1318.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1316.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1182.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1102.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1132.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1676.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1146.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1610.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1614.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1416.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1178.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1510.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1120.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1138.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1170.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1134.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1174.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1518.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1152.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1556.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1334.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1108.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1140.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1194.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1154.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1292.sats"}h!
Aj?=:ETH.ETH:0xF6a7A5826be3eDAc0D8922869D1E993370AC31e4:1861787::0
EjC=:BNB.BNB:bnb1txg066esnraenhjvuh500xwy6gm3hd8454p77x:124302342:te:0
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1350089779
FjDOUT:AB62B9D942B698FC6D1E9A82A31633CDD53A75762F6E46354402D3870A7A338D
no copyright, use freely
text/plain;charset=utf-8
  "name": "8974.sats"
IjGREFUND:C6D0DA5D0205BA0A18581285A204B9394BE28AD261713A328B64EA1752F62CAB
6j4ion:2.QmQH3jPcM5btcSi51BLmR12idjiXB5zqptijGkVYguuzD6
FjDOUT:4586303705B04BB68650EE7C727DE5603BE26BD0B0458108AB0294307479A6EE
KjISWAPTX:0x12a206260e596deebb9c75c831508e7b0228ecdeaf37483bbdaec2eeff7ff74f
;j9+:BTC/BTC::bc1q3f787hr38pmal87yxtpq8tng09q60ljjqqd759:100
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
:j8=:RUNE:thor1xu76l9jn8hqxh608ym3razjdwxwpejpmcxhqh8::wr:0
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1914.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2682.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2382.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2824.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2274.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2462.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2260.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2582.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1868.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2402.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2774.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1828.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2752.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2286.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2362.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2556.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2512.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1858.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2902.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2324.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2848.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2742.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2782.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2656.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2562.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2338.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2488.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2520.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2528.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2326.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2732.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2428.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2524.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2452.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2554.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2420.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2588.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2770.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2256.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2624.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2542.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2778.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2632.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2236.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1816.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2636.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2620.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2432.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2826.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2294.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2726.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2744.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2728.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2672.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2526.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2412.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2502.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1912.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2492.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2802.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2240.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2290.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2284.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2644.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2246.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2566.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2544.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2334.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2268.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2926.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2320.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2868.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2352.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2766.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2852.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2712.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2592.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2250.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2664.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2426.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2484.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2628.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2642.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2724.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1848.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2248.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2668.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2230.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2278.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2276.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2280.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2328.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2858.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2646.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2820.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2606.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2762.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2928.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2474.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2472.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2920.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2842.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2812.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2602.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2932.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1886.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2482.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1916.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1822.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2258.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2298.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2302.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2238.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2880.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2720.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2372.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2912.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2872.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2942.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2652.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2612.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2296.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2532.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2270.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2264.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2818.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2944.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2862.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2676.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2702.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2342.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2616.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2572.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2792.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1814.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2392.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2776.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2788.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1662.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2254.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2312.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2832.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2585.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1812.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
Bj@=:ETH.ETH:0x98d04bA2eBDaab1f345E6d4Ce8bAbf2e1B376c29:18535252::0
FjDOUT:C295BE382CBEDA1CC02A7737616F01BA77273233207FF51373F6247CBD4FA64B
FjDOUT:E4407E962494987E37614D28DE8254D5E3AF3AE8AE59F5F327A0DC747D799684
FjDOUT:590B8FF3C54F0EB7085B4485886B98A55082BD163B93CAB47226E91D7280A574
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5059.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
Bj@=:DOGE.DOGE:D8GsWEak4tkgnwKqxSx3ZUG7BgjK65YSir:15223323410:xdf:0
text/plain;charset=utf-8
  "name": "5058.sats"
text/plain;charset=utf-8
  "name": "5057.sats"
text/plain;charset=utf-8
  "name": "5046.sats"
text/plain;charset=utf-8
  "name": "5053.sats"
text/plain;charset=utf-8
  "name": "5045.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5056.sats"
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503080642</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503080642   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
text/plain;charset=utf-8
  "name": "5052.sats"
text/plain;charset=utf-8
  "name": "5048.sats"
text/plain;charset=utf-8
  "name": "5047.sats"
text/plain;charset=utf-8
  "name": "5054.sats"
text/plain;charset=utf-8
  "name": "5049.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "vileplume.sats"
FjDOUT:13D1C57B6EC0A0DCD92EEE1B6ABC3AE90A410DE07A39460307AD34866BC40F5B
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
FjDOUT:4EC7C307321AAC790E7516079F268BA4230C5EDBA4816C8BF9180279914825A5
FjDOUT:DEC1F62C0C22C40EDF32D3AF7D89536F51BE064BE9C0C9943AE535B1A731710F
FjDOUT:3D0EC1CCA69F1E5A7479A50599F1F271D58E39DC2CA724D1D3BB0793C8048115
FjDOUT:5E45AB1DE0E3FF8CCA527461DEBAFF4469809BE71CDB0A43414CCBB32E2E1855
text/plain;charset=utf-8
  "name": "5061.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "0750.sats"
FjDOUT:C94E7E194A9ADFE48F4B1B1BC3C574FCAA658DC960F0225CFA42858480D7B345
FjDOUT:D44680D7D310148E705C1F8D839EC0A22F2C5CD9B37E510576C8F6FE37650550
FjDOUT:2877310C07A9AC4F5A566D8BDD5B43B8DBC5741BDC8DD6053EE28E8AC77471A1
FjDOUT:C219FA83B8BB19EC8BB319F067B6A4F7856C1ADCC36AAB1FC8A95C59CB907E69
FjDOUT:B0E95B5007C37FBFE47E1DCC4E5D38654A637172EA01BF09527462BF32867B83
)j'Sent to Graviex to buy 2500 Proton Coin
text/plain;charset=utf-8
FjDOUT:FC757983D3AED3E62F2B9A965162ED894FC454FEE522F12F85D480E18243A8EE
FjDOUT:95CCB273F22F9E8F7E026BAFA950AF2120899DD3EA1AE5B79E97944634FAF40C
FjDOUT:0E3C5B9E2774D2C187121B06DCBDDBDA338561BCF60F97BFC3353190571E5BAF
FjDOUT:E498AACD0B8DC792572083A4530CC91192D4D8F48A39ACFEE76FEEB366298E7C
FjDOUT:EBD07E004A6B3B8B5A80EFFB2AF81F507DC30A857D39146F32125FAB72C0EE06
7j5ion:12.QmQTfVTo3t5oRWgdSMbG7NHSWrSHrj1VRmYAVeV9wD37HD
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "helloworld.sats"
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Mandala</title>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <script type="text/javascript" >
        // !!!!!!!!!!!!M
!!!!!!!!!!!!!!!!!!!!!!!!
        // INSERT YOUR GENERATIVE CODE HERE
        // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get(M
"seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 10139042M
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfM
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
  <script type="module" crossorigin>
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))a(s);new MutationObserver(s=>{for(const o of s)if(o.type==="childList")for(const h of o.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&a(h)}).observe(document,{chM
ildList:!0,subtree:!0});function t(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerpolicy&&(o.referrerPolicy=s.referrerpolicy),s.crossorigin==="use-credentials"?o.credentials="include":s.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function a(s){if(s.ep)return;s.ep=!0;const o=t(s);fetch(s.href,o)}})();class A{constructor(e,t,a,s=255){this._rgba=[e/255,t/255,a/255,s/255],this._hsla=rt(this._rgba)}set hsla(e){this._hsla=e}get hsla(){return[...this._hsla]}get h(){rM
eturn this._hsla[0]}get s(){return this._hsla[1]}get l(){return this._hsla[2]}get a(){return this._hsla[3]}sat(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[1]=e,t}hue(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[0]=e,t}lum(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[2]=e,t}alpha(e){const t=new A(0,0,0);return t._hsla=[...this.hsla],t._hsla[3]=e,t}toString(){return this.a<1?`hsl(${this.h*360}deg ${this.s*100}% ${this.l*100}% / ${this.a*100}%)`:`hsl(${this.h*360}degM
 ${this.s*100}% ${this.l*100}%)`}static from(e){if(e instanceof A)return e;if(typeof e=="number")return new A(255,0,0);{let t;switch(e.length){case 9:if(t=e.match(/^[#](?<r>[0-9a-f]{2})(?<g>[0-9a-f]{2})(?<b>[0-9a-f]{2})(?<a>[0-9a-f]{2})$/i),t&&t.groups){if(t.groups)return new A(parseInt(t.groups.r,16),parseInt(t.groups.g,16),parseInt(t.groups.b,16),parseInt(t.groups.a,16));throw new Error(`Error parsing color string '${e}'`)}break;case 7:if(t=e.match(/^[#](?<r>[0-9a-f]{2})(?<g>[0-9a-f]{2})(?<b>[0-9a-f]{2})$/i),t&&tM
.groups){if(t.groups)return new A(parseInt(t.groups.r,16),parseInt(t.groups.g,16),parseInt(t.groups.b,16));throw new Error(`Error parsing color string '${e}'`)}break;case 5:if(t=e.match(/^[#](?<r>[0-9a-f])(?<g>[0-9a-f])(?<b>[0-9a-f])(?<a>[0-9a-f])$/i),t&&t.groups){if(t.groups)return new A(parseInt(""+t.groups.r+t.groups.r,16),parseInt(""+t.groups.g+t.groups.g,16),parseInt(""+t.groups.b+t.groups.b,16),parseInt(""+t.groups.a+t.groups.a,16));throw new Error(`Error parsing color string '${e}'`)}break;case 4:if(t=e.matcM
h(/^[#](?<r>[0-9a-f])(?<g>[0-9a-f])(?<b>[0-9a-f])$/i),t&&t.groups){if(t.groups)return new A(parseInt(""+t.groups.r+t.groups.r,16),parseInt(""+t.groups.g+t.groups.g,16),parseInt(""+t.groups.b+t.groups.b,16));throw new Error(`Error parsing color string '${e}'`)}break;default:throw new Error(`Error parsing color string '${e}'`)}}}}function rt([n,e,t,a]){const s=Math.max(n,e,t),o=Math.min(n,e,t);let h;if(s===o)h=0;else{const F=s-o;s===n?h=(e-t)/F%6:s===e?h=(t-n)/F+2:h=(n-e)/F+4,h*=60,h<0&&(h+=360)}const E=s-o,g=(s+o)/2M
,O=E===0?0:E/(1-Math.abs(2*g-1));return[h/360,O,g,a]}const{sin:X,cos:st,abs:ut,PI:mt,acos:Bt,asin:wt,sqrt:ot,round:Dt,floor:Et}=Math,x=(n,e)=>[n[0]+e[0],n[1]+e[1]],it=(n,e)=>[n[0]*e,n[1]*e],lt=n=>ot(n[0]**2+n[1]**2),v=(n,e,t)=>[n[0]+e[0]*t,n[1]+e[1]*t],D=(n,e=1)=>{const t=lt(n);return t===0?[0,0]:it(n,e/t)},at=(n,e,t=2)=>(a,s)=>{let o=0,h=1,E=1;for(let g=0;g<t;g++)o+=h*X(X(a/n*E)+st(s/e*E)),E*=1.97834,h*=.5;return o},C=(n,[e,t])=>{const s=n(e+1e-4,t),o=n(e-1e-4,t),h=n(e,t+1e-4),E=n(e,t-1e-4);return[(s-o)/(2*1e-4),(M
h-E)/(2*1e-4)]},b=(n,e)=>{const[t,a]=C(n,e);return[a,-t]},Y=(n,e,t)=>{const a=[e];for(let s=0;s<t;s++)e=x(e,n(e)),a.push(e);return a},Z=n=>Array.from(n,(e,t)=>n[n.length-1-t]),ct=([n,...e],t=!1)=>{let a=`M ${n.join(" ")}`;return a+=e.map(s=>`L ${s.join(" ")}`).join(" "),a+=t?"z":"",a};class pt{constructor(){this.prng=sfc32(...cyrb128(seed))}unit(){return this.prng()}prob(e){return this.prng()<e}float(e,t){return this.prng()*(t-e)+e}int(e,t){return Math.floor(this.prng()*(t-e)+e)}pick(e){return e[this.int(0,e.lengthM
)]}}const z={SteamPunk:["#696969","#ebcc23","#F5F5DC","#AF9B60","#4F2A0C","#FF7034","#8B2800"],Colorful:["#C6EEFA","#db504a","#084c61","#e3b505","#4f6d7a","#56a3a6"],pal0:["#DEC78E","#192220","#BE3C39","#7E2925","#CCB477","#647657","#2D4C40","#6AB29B"],pal1:["#B4BCA4","#0E525A","#C2502E","#D47651","#0C353B","#F5AF6B","#897563","#6A402B"],pal2:["#F1D8AF","#785C74","#323666","#298D98","#E36075","#CF9A94","#5BE6CA","#F5BA6A"],pal3:["#6D9995","#516F6B","#233C45","#EDDC8D","#E69837","#7ED0D6","#A89E7A","#3E371D"],pal4:[M
"#BDD8C1","#20343C","#3C7179","#EDCD41","#DE694E","#8A3831","#79A791","#33B7C4"],pal5:["#E2DD91","#272C50","#3E9890","#2D5E78","#D53154","#69CFA0","#7C3067","#D78E65"],pal6:["#347179","#20414B","#E9A345","#3BA0A6","#36D8DB","#C7B689","#85B9B3","#975836"],pal7:["#6C95A7","#436FA7","#98A5BB","#EDCDC0","#483F6B","#E8A094","#DC46AB","#AE6362"],pal8:["#9BD7D0","#2C4D57","#172734","#7D5440","#337686","#C59B60","#E18C1F","#27C4CB"],pal9:["#735A82","#B5A5B1","#2D5570","#4CC9D4","#2893A5","#282C4A","#D74855","#EBB137"],pal1M
0:["#6D7B7E","#880B5B","#B28A96","#63BE9F","#27A188","#0D5B50","#C9367B","#CCEDD5"],pal11:["#09272F","#DDAF37","#67A793","#9ED8C7","#53B7AC","#409289","#34736E","#1A514F"],pal12:["#AAB29C","#C95734","#973819","#D27855","#776250","#F5B06B","#0F3438","#0E525A"],pal13:["#A4B1C7","#BD6F68","#EEB5A7","#6C95A7","#2D72C1","#3D3C57","#554A7D","#DC47AB"],pal14:["#101C39","#642E3D","#E14A47","#D7B176","#2EB1B8","#3A5F75","#5D7282","#20415F"],pal15:["#B7BEBC","#C7B55E","#5D9283","#88BCB7","#69AFAB","#2F4047","#51606B","#8F698M
D"],pal16:["#877855","#FBF6CD","#B86B42","#30200E","#5F4D37","#C3A064","#DDC081","#F1DE9A"],pal17:["#100B2C","#119065","#28224B","#160B5B","#433E74","#7F7AA1","#C2BDD9","#B70D44"]},ht=(n,{Palette:e})=>{var Q;const t=new pt,[a,s,...o]=z[e],h=z[e],E=[t.pick(h),t.pick(h)];[t.int(0,h.length/3),t.int(h.length/3,2*h.length/3),t.int(2*h.length/3,h.length)].map(m=>h[m]);const g=at(t.float(89,300),t.float(100,300),t.int(1,5)),O=Y(m=>D(C(g,m),5),[200,200],10).map(m=>Y(i=>D(b(g,i),5),m,140)),F=.67,W=innerWidth/innerHeight>F?(M
innerHeight-10)*F:innerWidth-10,K=W/F,L=600,R=L/F,B=L/2,w=R/2,u=(m,i,f,d)=>{const l=document.getElementById(m),r=document.createElementNS(G,i);return Object.keys(f).forEach(c=>c==="xlink:href"?r.setAttributeNS(J,c,f[c]):r.setAttribute(c,f[c])),l&&(d===void 0?l.appendChild(r):l.insertBefore(r,d)),r},G="http://www.w3.org/2000/svg",J="http://www.w3.org/1999/xlink";document.createElementNS(G,"svg");const j=document.createElement("div");j.setAttribute("id","svgC"),n.style.background="#ddd",n.style.width=`${innerWidth-10M
}px`,n.style.height=`${innerHeight-10}px`,n.style.padding="5px",j.style.width=`${W}px`,j.style.height=`${K}px`,j.style.margin="0 auto",j.style.boxShadow="2px 3px 6px rgba(0,0,0,0.5)",j.style.borderRadius="0.5vh",n.appendChild(j),u("svgC","svg",{id:"art",xmlns:G,"xmlns:xlink":J,"shape-rendering":"geometricPrecision",width:L,height:R,viewBox:`${-B} ${-w} ${L} ${R} `,style:`display:block; width:${W}; height:${K}`}),u("art","defs",{id:"df"}),u("df","filter",{id:"blur"}),u("blur","feGaussianBlur",{stdDeviation:t.int(1,5M
)}),u("df","filter",{id:"colorF"}),u("colorF","feColorMatrix",{type:"matrix",values:`${t.float(.2,.8)} 1 0 0 0
        0 0 0 1 0`}),u("df","pattern",{id:"hash0",x:0,y:0,width:t.float(1,3),height:5,stroke:t.pick(o),patternTransform:`rotate(${t.int(0,90)} 0 0)`,patternUnits:"userSpaceOnUse"}),u("hash0","line",{x1:0,y1:0,x2:0,y2:5,fill:"none","stroke-width":.3}),u("df","linearGradient",{id:"grad2",x1:"0%",x2:"100%",y1:"0",y2:"0"}),u("grad2","stop",{offset:"0%","stop-color":E[0]}M
),u("grad2","stop",{offset:"100%","stop-color":E[1]}),u("art","rect",{x:-B,y:-w,width:L,height:R,fill:a,id:"bg"}),t.int(30,70),t.int(150,250);for(let m=0;m<200;m++){let i=[t.float(-B,B),t.float(-w,w)];const f=t.int(10,50),d=t.int(160,200);let l=`M ${i.join(" ")}`;for(let r=0;r<f;r++){const c=D(C(g,i),5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){const c=D(b(g,i),3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<f;r++){const c=D(C(g,i),-5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){conM
st c=D(b(g,i),-3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}l+=" z",u("art","path",{d:l,stroke:"none",fill:t.pick(o),"fill-opacity":.1})}u("art","g",{id:"stripes",filter:"url(#blur)"});for(let m=0;m<100;m++){let f=[[t.float(-B,B),t.float(-w,w)]],d=f[0];for(let l=0;l<5;l++){let r=v(d,C(g,d),400);f.push(r),d=r}for(let l=0;l<20;l++){let r=[],c=[],p=f[f.length-1],I=f[0];for(let $=0;$<5;$++){let M=v(p,b(g,p),400),S=v(I,b(g,I),400);r.push(M),c.unshift(S),p=M,I=S}d=c[0];let y=[];for(let $=0;$<5;$++){let M=v(d,C(g,d),400);y.unshM
ift(M),d=M}const[T,..._]=[...f,...r,...y,...c];let H=`M ${T.join(" ")}`;H+=_.map($=>`L ${$.join(" ")}`).join(" "),u("stripes","path",{d:H,fill:t.prob(.9)?t.pick(h):"url(#grad2)",stroke:"none"}),f=[c[0],...Z(y)]}}for(let m=0;m<80;m++){let i=[t.float(-B,B),t.float(-w,w)];const f=t.int(10,50),d=t.int(160,200);let l=`M ${i.join(" ")}`;for(let r=0;r<f;r++){const c=D(C(g,i),5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){const c=D(b(g,i),3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<f;r++){const c=D(C(M
g,i),-5),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}for(let r=0;r<d;r++){const c=D(b(g,i),-3),p=x(i,c);l+=` L ${p.join(" ")}`,i=p}u("art","path",{d:l,stroke:t.pick(o),fill:"none"})}const et=60,nt=10,U=t.float(1,3);for(let m=0;m<nt;m++){let f=[[t.float(-B,B),t.float(-w,w)]],d=f[0];for(let l=0;l<20;l++){let r=v(d,D(b(g,d)),U);f.push(r),d=r}for(let l=0;l<et;l++){let r=[],c=[],p=f[f.length-1],I=f[0];for(let k=0;k<20;k++){let N=v(p,D(C(g,p)),U),V=v(I,D(C(g,I)),U);r.push(N),c.unshift(V),p=N,I=V}d=c[0];let y=[];const T=r[r.lengtM
h-1];let _=1/0,H=(d[0]-T[0])**2+(d[1]-T[1])**2;for(;H<_;){let k=v(d,D(b(g,d)),U);y.unshift(k),d=k,_=H,H=(d[0]-T[0])**2+(d[1]-T[1])**2}const[$,...M]=[...f,...r,...y,...c];let S=`M ${$.join(" ")}`;S+=M.map(k=>`L ${k.join(" ")}`).join(" "),u("art","path",{d:S,fill:t.prob(.1)?"url(#grad2)":E[l%2],stroke:"none"}),f=[c[0],...Array.from(y,(k,N)=>y[y.length-1-N])]}}u("art","g",{id:"grid"}),O.forEach((m,i)=>{if(i===0)return;const f=O[i-1],d=4;for(let l=0,r=0;l<f.length;l+=d-1,r++){const c=Z(O[i].slice(l,l+d)),p=ct([...f.sliM
ce(l,l+d),...c],!0);u("grid","path",{d:p,fill:(i+r)%2===0?t.pick(o):s,stroke:"none"})}}),u("art","g",{id:"border",filter:"url(#colorF)"}),u("border","rect",{x:-B,y:-w,width:L,height:10,fill:a,"fill-opacity":.6}),u("border","rect",{x:-B,y:w-10,width:L,height:10,fill:a,"fill-opacity":.6}),u("border","rect",{x:-B,y:-w,width:10,height:R,fill:a,"fill-opacity":.6}),u("border","rect",{x:B-10,y:-w,width:10,height:R,fill:a,"fill-opacity":.6}),(Q=A.from(s))==null||Q.sat(1)},dt=n=>typeof n=="string",tt=(n,e,t)=>{const a={expiM
re:1e4,utf8:!1,...t};dt(e)&&a.utf8&&(e=new TextEncoder().encode(e),a.mime+=";charset=UTF-8");const s=URL.createObjectURL(e instanceof Blob?e:new Blob([e],{type:a.mime})),o=document.createElement("a");o.setAttribute("download",n),o.setAttribute("href",s),document.body.appendChild(o),o.click(),document.body.removeChild(o),a.expire>0&&setTimeout(()=>URL.revokeObjectURL(s),a.expire)},ft=(n,e,t="png",a=.95)=>{const s=`image/${t}`;n.toBlob(o=>o?tt(`${e}.${t}`,o,{mime:s}):console.warn("can't download canvas"),s,a)};mathRaM
nd();window.$generativeTraits={Palette:Object.keys(z)[Math.floor(mathRand()*Object.keys(z).length)]};console.log(window.$generativeTraits);function gt(){const n=document.getElementById("art");let[e,t]=[n.getAttribute("width"),n.getAttribute("height")],a=new Blob([n.outerHTML],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(a),o=new Image;o.onload=()=>{const h=document.createElement("canvas");h.width=e*P,h.height=t*P,h.getContext("2d").drawImage(o,0,0,e*P,t*P),ft(h,`${seed} - ${new Date().getTime()}-art.M
png`)},o.src=s}const q=document.createElement("div");q.setAttribute("id","app");document.body.prepend(q);ht(q,window.$generativeTraits);const P=parseInt(new URLSearchParams(window.location.search).get("zoom")||"8");window.addEventListener("keyup",n=>{switch(n.key){case"s":tt(`${seed} - ${new Date().getTime()}-art.svg`,document.getElementById("art").outerHTML,{mime:"image/svg+xml"});return;case"x":gt();return}});
Created with GIMPd.e
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
  "name": "wat.sats"
text/plain;charset=utf-8
  "name": "wot.sats"
text/plain;charset=utf-8
  "name": "dik.sats"
text/plain;charset=utf-8
  "name": "shy.sats"
Aj?=:ETH.ETH:0x9AC38F2E060F058C57A0898a788aD2B0DcE862CA:9977242::0

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

text/plain;charset=utf-8
  "name": "5073.sats"
text/plain;charset=utf-8
  "name": "5077.sats"
text/plain;charset=utf-8
  "name": "5076.sats"
text/plain;charset=utf-8
  "name": "5075.sats"
text/plain;charset=utf-8
  "name": "5071.sats"
text/plain;charset=utf-8
  "name": "5074.sats"
text/plain;charset=utf-8
  "name": "5072.sats"
text/plain;charset=utf-8
  "name": "5078.sats"
text/plain;charset=utf-8

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1946.sats"}h!
Aj?=:ETH.ETH:0xB40D55f248cD40A764A1Ff67126b299d5a36B55C:1644646::0
text/plain;charset=utf-8
  "name": "7645.sats"
text/plain;charset=utf-8
  "name": "1678.sats"
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/
FjDOUT:B52E2050F6CA9806E6781F690A7CB01FA1BD02BC8D31CC4AE8505B496110E4C8
text/plain;charset=utf-8
  "name": "6589.sats"
Aj?=:ETH.ETH:0x90efd865EBd1f96CFB3Be002bC3f9D7F5732AE96:8696838::0
FjDOUT:19641CF83A3467AD5A51821BE67E20B27C62D4074C33285655D6769FC3CC5621
FjDOUT:3818C1EDAC2A8C8FB2F29D8C72E47068CCB7B52DF429243FB553B882EAEB0519
FjDOUT:C8830BEF527A665DD0FAC6C9A1F0138BABF70E35D5DF6895B63F437A1C3AD0C6
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
<!--    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>-->
    <!-- threejs@r124
    <script sandbox="allow-scripts" typM
e="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/jaM
vascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" tM
ype="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substM
ring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
urn _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | M
0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
        html, body {
            margin: 0;
            padding: 0;
            max-width: 100%;
            max-height: 100%;
            margin: auto;
     overflow: auto;
            position: fixed;
            object-fit: contain;
            bottom: 0;
            left: 0;
            right: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
nst container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
    //License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
    //Author: @devhontran
    //Twitter: https://twitter.com/DevHontran
    //Website: https://hontran.dev
    const scaler = 1;
    let paper, border;
    let shadown = {x: -5, y: 5};
    let layers = [];
    let padding = 40;
    function cyrb128(str) {
= 1779033703, h2 = 3144134277,
            h3 = 1013904242, h4 = 2773480762;
        for (let i = 0, k; i < str.length; i++) {
            k = str.charCodeAt(i);
            h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
            h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
            h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
            h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
        h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
        h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
        h3 = Math.imul(h1 ^ (h3M
 >>> 17), 951274213);
        h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
        return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
    function sfc32_c(a, b, c, d) {
        a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
        var t = (a + b) | 0;
        a = b ^ b >>> 9;
        b = c + (c << 3) | 0;
        c = (c << 21 | c >>> 11);
        d = d + 1 | 0;
        t = t + d | 0;
        c = c + t | 0;
        return (t >>> 0) / 4294967296;
    // return random value from [l -> r]
function consistentRand (seed, l, r) {
        const rand = sfc32_c(...cyrb128(seed.toString()));
        return l + rand * (r - l)
    function getRandomItem (listP, seed) {
        const pref = []
        for (const x of listP) pref.push(x)
        for (let i = 1; i < listP.length; i++) {
            pref[i] += pref[i - 1]
        for (let i = 0; i < pref.length; i++) pref[i] /= pref[pref.length - 1];
        // get random value from 0->1
        const rand = consistentRand(seed, 0, 1)
r (let i = 0; i < pref.length; i++) {
            if (rand < pref[i]) return i;
    function createRadialGradient(x, y, r, x1, y1, r1) {
        const grd = drawingContext.createRadialGradient(x, y, r, x1, y1, r1);
        grd.addColorStop(0,"#FFFFFF");
        grd.addColorStop(1,"#E5E5E3");
        drawingContext.fillStyle = grd;
        drawingContext.fillRect(0, 0, width, height);
    function artNosie(){
        const w = width * 1.2;
        const h = height * 1.2M
        paper = createGraphics(w, h);
        for(let i = 0 ; i< 100000; i++){
            let x = random(w);
            let y = random(h);
            let dotSize = 10.0*(noise(x/(width / 4), y/(height / 4))*2 - noise(x/width, y/height));
            paper.strokeWeight(random(0.25, 3));
            paper.stroke(random(20, 80), random(1+dotSize, 4+dotSize));
            paper.point(x, y);
    function generabox(col, pos, si){
        const layer = createGraphics(width, height);
ill(140, 178, 250, 56);
        layer.noStroke();
        layer.rect(pos.x + shadown.x, pos.y + shadown.y, si.w, si.h);
        layer.filter(BLUR, 3);
        layer.fill(col.r, col.g, col.b, col.a);
        layer.noStroke();
        layer.rect(pos.x, pos.y, si.w, si.h);
        layers.push(layer);
    function setup() {
        const hash = rand ? rand : Math.random();
        const fCol = {r: 255, g: 255, b: 255};
        const s = min(window.innerWidth, window.innerHeight)
        createCanvas(s,s);M
        for(let i=0; i<9; i++){
            const tHash = `${hash}_${i}`;
            const cyrHash = cyrb128(tHash);
            const mixHash_color_r = consistentRand(cyrHash[0], 0, 1);
            const mixHash_color_g = consistentRand(cyrHash[1], 0, 255);
            const mixHash_color_b = consistentRand(cyrHash[2], 0, 255);
            const mixHash_color_a = 255;//consistentRand(cyrHash[3], 100, 255);
            const sw = consistentRand(cyrHash[0],50, width / 2);
            const sh = consistentRaM
nd(cyrHash[3], 50, height / 2);
            const col = {r: mixHash_color_r, g: mixHash_color_g, b: mixHash_color_b, a: mixHash_color_a};
            const si = {w: sw, h: sh};
            const pos_x = consistentRand(cyrHash[1], padding, width- padding - si.w);
            const pos_y = consistentRand(cyrHash[2], padding, height- padding - si.h);
            const pos = {x: pos_x, y: pos_y}
            // console.log('___i', col, pos, si);
            generabox(col, pos, si);
        const borderSize = 30;
        border = createGraphics(width, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(width - borderSize, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, width, borderSize);
        border.fill(fCol.r, fCol.g, fCol.b, 255)M
        border.noStroke();
        border.rect(0, height - borderSize, width, borderSize);
    function draw() {
        background('#ffffff');
        blendMode(BLEND);
        for(let i=0; i<9; i++){
            image(layers[i], 0, 0, width, height);
        blendMode(MULTIPLY)
        createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, height);
        blendMode(MULTIPLY);
        image(paper, 0, 0, width, height);
        image(border,M-
 0, 0, width, height);
    function windowResized() {
        const s = min(window.innerWidth, window.innerHeight)
        resizeCanvas(s, s);
 Add your code here
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/
IjGREFUND:BDCE235D144677BB95B7769BFE1F8172E482D340E74FE865F66D97EE584EAB38
FjDOUT:157498742D4A72C62AD48DAA18DFB20BEE2064E1362396D5960F352933A37C2F
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1347823618D
Bj@=:ETH.ETH:0x6798d92102C756AB769E6aB2B7890C4FA70A8834:29587947::0
text/plain;charset=utf-8
  "name": "pixelhaus.sats"
text/plain;charset=utf-8
DjB=:ETH.ETH:0xEE51e71Ef86d37Ec7AdaD92D91d6E907f6A7716D:33756575:te:0
CjA=:ETH.ETH:0x7A09a9F45637BC809Ddc346AA56906Ea63CeCf6D:108295140::0
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1942.sats"}h!
 (B+(%%(Q:=0B`Ued_U][jx
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
text/plain;charset=utf-8
  "name": "faker.sats"
text/html;charset=utf-8
<!-- Thank you, Satoshi -->
<!-- byteEstate #18 -->
<!-- Probably nothing ... -->
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>byteEstate #18</title>
<script>const referUrl = "https://byteestates.app/estate/18";</script>
<link rel="stylesheet" href="https://byteestates.app/assets/estate18/css/style.css"/>
</head><body><div id="byteestate">
<a href="https://byteeL
states.app"><h1>byteEstate #18</h1></a>
</div><script src="https://byteestates.app/assets/estate18/js/app.js"></script>
Bj@=:BNB.BNB:bnb14hyrxw95sjlvuz03t07a8f44na08jy00c33av4:12485833::0
c/Foundry USA Pool #dropgold/	$H
FjDOUT:0B6C8191FF83D3C2465A13F15F92E4E46118A37EEB1A37E41BD32B2D7DF17418
FjDOUT:65E67B715DF9450136D144440A248DBE099ED55CB90A8CFB4859AC32C05C1A91
6j4ion:1.QmX2Zees32HHNGgPEvhAhTYqjFfSdUTYJ1XKZKAsynvMNu1
FjDOUT:D72360532D99F2AB6A7277BD5271DAC9A18398AAC6133A815D5AAE64234A0C5D
FjDOUT:C139D1F3CAA11C1CD2100532B02E68EB6EB8D5EE6B88AF84A17177D143FF1217
text/plain;charset=utf-8

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

{"attributes":[{"trait_type":"Mouth","value":"Bored Unshaven"},{"trait_type":"Background","value":"New Punk Blue"},{"trait_type":"Clothes","value":"Sleeveless T"},{"trait_type":"Eyes","value":"Bored"},{"trait_type":"Hat","value":"Spinner Hat"},{"trait_type":"Fur","value":"Tan"}],"external_url":"https://baycbitcoin.com/index/bayc/4253","image":"ipfs://QmWwSKeAhhs1CNNDDkMaYgdWvZjrCUyfczc51JXp81i3H1/4253.png"}
 .)10.)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQRO
&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/plain;charset=utf-8
CjA=:ETH.ETH:0xD2b0dA25ca3e7264338c1F958F1286bcaD2BbC37:1169293:te:0
application/octet-stream
  "name": "ordinalsfi.sats"
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1347587024
HjF=:BNB.BUSD-BD1:bnb10gh0p6thzjz54jqy9lg0rv733fnl0vqmc789pp:421845884171m
FjDOUT:4309C23F8151E83685368A7B7DB2A0A129F24A74B58159FCCC300E223622036B
FjDOUT:A868AB8867B2615CA107A0F62CC081584AABAE8409B1A979C3CB2CC154C9B402
FjDOUT:BA97C8121FC94B47F453405D38663596D970D455C25DCC20D39454EBCC9798AC
CjA=:ETH.ETH:0x7D8a7222C1BB5E8b1928c7f1335C680CE160F64a:802943587::0
text/plain;charset=utf-8
,{"p": "sns","op": "reg","name": "hate.sats"}h!
text/plain;charset=utf-8
  "name": "7763.sats"
c/Foundry USA Pool #dropgold/
MjKs:ETH.USDT-EC7:0x0333bC88094117A1032A309c6B1B5F10e1eEC2C9:413174849486:ss:0
text/plain;charset=utf-8
,{"p": "sns","op": "reg","name": "mind.sats"}h!
text/plain;charset=utf-8
IjG=:BNB.BUSD-BD1:bnb1dyhz87590hzhr58axtspnkrfl7qy8s3yknnfzp:9857938695::0
{"attributes":[{"trait_type":"Earring","value":"Silver Stud"},{"trait_type":"Eyes","value":"Sleepy"},{"trait_type":"Mouth","value":"Bored Pizza"},{"trait_type":"Hat","value":"Beanie"},{"trait_type":"Fur","value":"Brown"},{"trait_type":"Background","value":"Gray"}],"external_url":"https://baycbitcoin.com/index/bayc/4194","image":"ipfs://QmWwSKeAhhs1CNNDDkMaYgdWvZjrCUyfczc51JXp81i3H1/4194.png"}
)-,3:J>36F7,-@WAFLNRSR2>ZaZP`JQRO
&O5-5OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/plain;charset=utf-8
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-25T22:52:07+08:00" xmp:ModifyDate="2021-11-29T13:26:42+08:00" xmp:MetadataDate="2021-11-29T13:26:42+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:4011bca0-ca53-bf47-8a22-76e114ac28db" xmpMM:DocumentID="xmp.did:7f7f0645-b0f1-8546-bc91-18b44a99a704" xmpMM:OriginalDocumentID="xmp.did:7f7f0645-b0f1-8546-bM
c91-18b44a99a704"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:7f7f0645-b0f1-8546-bc91-18b44a99a704" stEvt:when="2021-11-25T22:52:07+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:4011bca0-ca53-bf47-8a22-76e114ac28db" stEvt:when="2021-11-29T13:26:42+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket M

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

siTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-26T19:42:19+08:00" xmp:ModifyDate="2021-12-14T19:56:12+08:00" xmp:MetadataDate="2021-12-14T19:56:12+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:2a651023-0ed5-6d41-a8c1-6e644c1a1608" xmpMM:DocumentID="xmp.did:b50a16b6-bb5d-0149-8764-0715c5aa00f7" xmpMM:OriginalDocumentID="xmp.did:b50a16b6-bb5d-0149-8M
764-0715c5aa00f7"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>xmp.did:611f1871-7115-3641-978e-efa7f6fcf965</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:b50a16b6-bb5d-0149-8764-0715c5aa00f7" stEvt:when="2021-11-26T19:42:19+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:2a651023-0ed5-6d41-a8c1-6e644c1a1608" stEvt:when="2021-12-14T19:56:12+08:00" stEvt:softM
wareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-26T19:48:55+08:00" xmp:ModifyDate="2021-12-14T20:06:34+08:00" xmp:MetadataDate="2021-12-14T20:06:34+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:77fa4fc9-3029-e740-9d97-98569e0e95ce" xmpMM:DocumentID="xmp.did:86b754ba-eb25-6748-93f4-874fb55fb22c" xmpMM:OriginalDocumentID="xmp.did:86b754ba-eb25-6748-9M
3f4-874fb55fb22c"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>xmp.did:3c88d730-6c2e-f84d-b2a3-927759548059</rdf:li> <rdf:li>xmp.did:89218ea0-0f59-3343-9868-7eef4dbab2ab</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:86b754ba-eb25-6748-93f4-874fb55fb22c" stEvt:when="2021-11-26T19:48:55+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:decf897c-547a-914b-ab76-eM
a4a787f6d3f" stEvt:when="2021-12-01T20:30:17+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:77fa4fc9-3029-e740-9d97-98569e0e95ce" stEvt:when="2021-12-14T20:06:34+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503076942</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503076942   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
text/plain;charset=utf-8
text/html;charset=utf-8
<!-- Thank you, Satoshi -->
<!-- byteEstate #19 -->
<!-- Probably nothing ... -->
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>byteEstate #19</title>
<script>const referUrl = "https://byteestates.app/estate/19";</script>
<link rel="stylesheet" href="https://byteestates.app/assets/estate19/css/style.css"/>
</head><body><div id="byteestate">
<a href="https://byteeL
states.app"><h1>byteEstate #19</h1></a>
</div><script src="https://byteestates.app/assets/estate19/js/app.js"></script>
Mined by AntPool873Q
FjDOUT:43B28880002BBF372A91309C7F083C8301A667BA1E8760020C481DDA11C0DC37
IjGREFUND:625C82165C251A779A49E987685C809107A9024DDA75510D8B91844F209032B8
FjDOUT:8F2AFD344619235E268F9440AAAAA2F3EAF06CA07F51818BCCED3ED9BA84AC2A
FjDOUT:01193A287FE92C16B41D88D87A67130C1CCDE6BE5954CB801BBD832987E8ACF1
FjDOUT:0053479FB62A49A6676978328B8586F5C6EB890D25322AC6FA89C83040A1AB21
FjDOUT:C9E9BD3588EBD5B336ED87EFFAD599BB42EDBD8D13213E57E9464D1364335269
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "helloworld.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "git.sats"
text/plain;charset=utf-8
  "name": "brr.sats"
text/plain;charset=utf-8
  "name": "nix.sats"
text/plain;charset=utf-8
  "name": "yum.sats"
text/plain;charset=utf-8
  "name": "pre.sats"
text/plain;charset=utf-8
  "name": "gnu.sats"
text/plain;charset=utf-8
  "name": "ear.sats"
text/plain;charset=utf-8
  "name": "jar.sats"
text/plain;charset=utf-8
  "name": "mid.sats"
text/plain;charset=utf-8
  "name": "eco.sats"
text/plain;charset=utf-8
  "name": "fur.sats"
text/plain;charset=utf-8
  "name": "geo.sats"
text/plain;charset=utf-8
  "name": "gin.sats"
text/plain;charset=utf-8
  "name": "sob.sats"
text/plain;charset=utf-8
  "name": "non.sats"

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

@iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-03T18:38:49+08:00" xmp:MetadataDate="2021-12-03T18:38:49+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:25085a22-3716-4341-9dbf-6b22a2d727b0" xmpMM:DocumentID="xmp.did:7fa67e94-58e2-5446-b34d-532feed91a98" xmpMM:OriginalDocumentID="xmp.did:7fa67e94-58e2-5446-bM
34d-532feed91a98"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>xmp.did:3c88d730-6c2e-f84d-b2a3-927759548059</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:7fa67e94-58e2-5446-b34d-532feed91a98" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:d234e75f-12d2-1148-80b5-8bab56e3dbdb" stEvt:when="2021-11-29T14:17:29+08:00" stEvt:softM
wareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:25085a22-3716-4341-9dbf-6b22a2d727b0" stEvt:when="2021-12-03T18:38:49+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
  "name": "dup.sats"
text/plain;charset=utf-8
  "name": "duh.sats"
text/plain;charset=utf-8
  "name": "cru.sats"
text/plain;charset=utf-8
  "name": "dub.sats"
@iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-05T17:09:43+08:00" xmp:MetadataDate="2021-12-05T17:09:43+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:4e49e3ac-d2b1-834b-bf4e-51478d3887b3" xmpMM:DocumentID="xmp.did:9f4dae0f-25c0-4647-81b7-00ebf1733480" xmpMM:OriginalDocumentID="xmp.did:9f4dae0f-25c0-4647-8M
1b7-00ebf1733480"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>xmp.did:7ec22db5-bb52-de47-b57f-4f1a076d720d</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:9f4dae0f-25c0-4647-81b7-00ebf1733480" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:902eb1db-de9e-e945-9685-c91849f7e058" stEvt:when="2021-12-01T20:21:53+08:00" stEvt:softM
wareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:4e49e3ac-d2b1-834b-bf4e-51478d3887b3" stEvt:when="2021-12-05T17:09:43+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Fc
text/plain;charset=utf-8
  "name": "cut.sats"
text/plain;charset=utf-8
  "name": "gox.sats"
text/plain;charset=utf-8
  "name": "jaw.sats"
text/plain;charset=utf-8
  "name": "era.sats"
text/plain;charset=utf-8
  "name": "nit.sats"
text/plain;charset=utf-8
  "name": "age.sats"
text/plain;charset=utf-8
  "name": "luv.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "iso.sats"
text/plain;charset=utf-8
  "name": "sin.sats"
text/plain;charset=utf-8
  "name": "dow.sats"
Bj@=:BNB.BNB:bnb1vm7ddrz0w9pqrz0ce7tud37dvcp8gh2muzdkxz:29921719::0
text/plain;charset=utf-8
  "name": "2810.sats"
Aj?=:ETH.ETH:0xA5D671966D24a091Eb5C1e819c8cCC0D1FBAFaD3:4330565::0
c/Foundry USA Pool #dropgold/
FjDOUT:C8BF2ED96F5142EE2BCD01A6F09192762C9C77B40D626C51E1C0CB5315A8852D
FjDOUT:8124D69BEB0B52CAB2CB5CA9B69DCBD80C8B9C2DB4BCFEE8B16573D164D087EA
IjGREFUND:024AE4CBF02C12294F508C76C60F780DB7C74D865E6FC53A95ACD67C7545F109
text/plain;charset=utf-8
  "name": "vader.sats"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
IjG=:BNB.BUSD-BD1:bnb1efdcmhnex2278g7tuzmzxf7pkf73aakr6jzzu7:4860736481::0
text/plain;charset=utf-8
  "name": "portal.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8449.sats"}h!
text/plain;charset=utf-8
  "name": "0250.sats"
text/plain;charset=utf-8
  "name": "4088.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4008.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5664.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7161.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8389.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5658.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7037.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8445.sats"}h!
text/plain;charset=utf-8
  "name": "7780.sats"
text/plain;charset=utf-8
  "name": "8830.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5767.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4284.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5662.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4249.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3036.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5676.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3656.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5852.sats"}h!
text/plain;charset=utf-8
  "name": "9950.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3998.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3114.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4047.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4534.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4247.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3884.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3736.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5953.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7040.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4131.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4335.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8377.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3382.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3744.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3772.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3432.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3384.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7073.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4006.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7167.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7262.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4373.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8551.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7008.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5659.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4541.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4546.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7122.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8386.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4374.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8331.sats"}h!
text/plain;charset=utf-8
  "name": "5099.sats"
text/plain;charset=utf-8
  "name": "8840.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5759.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5848.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5667.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5745.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4304.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5770.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7114.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3230.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3646.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5905.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5825.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3228.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5650.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3352.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4119.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3588.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3644.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4113.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4171.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"986.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3616.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4064.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7115.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3346.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3606.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3554.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8378.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5685.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3436.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3004.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8223.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4146.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "0N1.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4191.sats"}h!
text/plain;charset=utf-8
  "name": "7319.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8458.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3566.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3372.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5887.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8481.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3136.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4024.sats"}h!
text/plain;charset=utf-8
  "name": "9281.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5771.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7175.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7006.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3474.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3374.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5756.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4377.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5850.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4148.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7067.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3034.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7118.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7226.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8428.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5851.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8433.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8441.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4228.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7030.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8348.sats"}h!
text/plain;charset=utf-8
  "name": "1682.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8358.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8353.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3766.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5747.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5772.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7047.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7033.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3118.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7076.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3996.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5752.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7191.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7202.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7166.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5735.sats"}h!
text/plain;charset=utf-8
  "name": "ox666.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3364.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4225.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5754.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8323.sats"}h!
text/plain;charset=utf-8
  "name": "5088.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7141.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7107.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7004.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4511.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5857.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5753.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4142.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5778.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3134.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4331.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8548.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4248.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4241.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6926.sats"}h!
text/plain;charset=utf-8
  "name": "9314.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5758.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3788.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5865.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3988.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3488.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3834.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2924.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8399.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4341.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3818.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3662.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8556.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3122.sats"}h!
text/plain;charset=utf-8
  "name": "8820.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5909.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4147.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3362.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5711.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8313.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3556.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3536.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7097.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3830.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7229.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3622.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4337.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7157.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4388.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3886.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8318.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8393.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3994.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4515.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3144.sats"}h!
text/plain;charset=utf-8
  "name": "1658.sats"
text/plain;charset=utf-8
  "name": "8055.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4042.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3532.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8284.sats"}h!
text/plain;charset=utf-8
  "name": "6099.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5646.sats"}h!
text/plain;charset=utf-8
  "name": "9920.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3368.sats"}h!
text/plain;charset=utf-8
  "name": "9088.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5785.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4181.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3002.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6631.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3226.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7266.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8387.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8515.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4342.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3932.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4292.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3326.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3730.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3776.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4184.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8355.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7101.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2988.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5707.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3438.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8322.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4161.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4514.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8385.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5935.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4313.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8411.sats"}h!
text/plain;charset=utf-8
  "name": "slow.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4274.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5880.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6967.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3868.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4383.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3342.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4041.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3188.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3132.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4043.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"799.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7001.sats"}h!
text/plain;charset=utf-8
  "name": "7099.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3032.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3858.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3778.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4288.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8363.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2998.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7020.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5895.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3832.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8499.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3224.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3538.sats"}h!
text/plain;charset=utf-8
  "name": "0075.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8382.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5774.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7075.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3534.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3638.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4543.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7255.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3116.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8418.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4118.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5925.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3966.sats"}h!
text/plain;charset=utf-8
  "name": "3088.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7131.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7155.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8554.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7188.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8553.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5957.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4140.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7074.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3006.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7072.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6919.sats"}h!
text/plain;charset=utf-8
  "name": "6088.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5875.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3236.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4077.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3238.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4346.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4234.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5952.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3282.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4299.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5795.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3530.sats"}h!
text/plain;charset=utf-8
  "name": "1698.sats"
text/plain;charset=utf-8
  "name": "7055.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4394.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4324.sats"}h!
text/plain;charset=utf-8
  "name": "0960.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4243.sats"}h!
text/plain;charset=utf-8
  "name": "8077.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7223.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5799.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2952.sats"}h!
text/plain;charset=utf-8
  "name": "owl.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3242.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3392.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4504.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4363.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3348.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5751.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4104.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3130.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7066.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7078.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3882.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7071.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4347.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3354.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3484.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8486.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3272.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7172.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5886.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8337.sats"}h!
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"checks.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5661.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4177.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5818.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8511.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7011.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2972.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4229.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2994.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7002.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3992.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7244.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8487.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4354.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3088.sats"}h!
text/plain;charset=utf-8
  "name": "8860.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8339.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8343.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4223.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4054.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3630.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3544.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8468.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3676.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4045.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4252.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5733.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4227.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3632.sats"}h!
text/plain;charset=utf-8
  "name": "7790.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5889.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4399.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8335.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4339.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4188.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4505.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3774.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3376.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3324.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4049.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4266.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2892.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7055.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4547.sats"}h!
text/plain;charset=utf-8
  "name": "9930.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4143.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5722.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4117.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7242.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4145.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4155.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4066.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8381.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7010.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5727.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6964.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7137.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7099.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8528.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3930.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3252.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4046.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7050.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5845.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3038.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4348.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8308.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3550.sats"}h!
text/plain;charset=utf-8
  "name": "9940.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4548.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5668.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7181.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4122.sats"}h!
text/plain;charset=utf-8
  "name": "8850.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5939.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7170.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3266.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8482.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8505.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2982.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4002.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5669.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4254.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5787.sats"}h!
text/plain;charset=utf-8
  "name": "9980.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8422.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3422.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"hub.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7178.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3328.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3522.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8557.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2966.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5779.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4393.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7176.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4349.sats"}h!
text/plain;charset=utf-8
  "name": "9970.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7017.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3430.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4314.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5695.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4524.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4226.sats"}h!
text/plain;charset=utf-8
  "name": "9055.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4014.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3880.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4245.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5882.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2996.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4115.sats"}h!
text/plain;charset=utf-8
  "name": "9886.sats"
application/octet-stream
  "name": "0xsun.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5654.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8483.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5737.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7060.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4255.sats"}h!
text/plain;charset=utf-8
  "name": "9960.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7027.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8477.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4345.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8344.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3770.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4199.sats"}h!
text/plain;charset=utf-8
  "name": "6055.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8438.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3822.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5717.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2962.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5699.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4323.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3668.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4055.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5856.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3244.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7133.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4240.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3732.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4164.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3234.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3288.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5859.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3202.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4340.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3396.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4262.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5950.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4088.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4294.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7090.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7151.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7187.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5805.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7005.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5750.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3688.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3394.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4166.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3722.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5644.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4124.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5725.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4204.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5653.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5675.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5828.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4034.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5949.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7257.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5744.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4533.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4311.sats"}h!
text/plain;charset=utf-8
  "name": "3452.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5868.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7237.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4101.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7179.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5652.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8489.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4535.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4246.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4151.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5715.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4154.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4540.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3936.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4364.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5773.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8498.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4355.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"seed.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8368.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3738.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8443.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7127.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3138.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3934.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4525.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3634.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5954.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4202.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3828.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4116.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5929.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3398.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3938.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5854.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3378.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5883.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4353.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3386.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3008.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4194.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4174.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4264.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7113.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5663.sats"}h!
text/plain;charset=utf-8
  "name": "6077.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7009.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7044.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4303.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7119.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7225.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3044.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5951.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5853.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7173.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7247.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4384.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3626.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3944.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5835.sats"}h!
text/plain;charset=utf-8
  "name": "9910.sats"
text/plain;charset=utf-8
  "name": "7088.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8455.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7116.sats"}h!
text/plain;charset=utf-8
  "name": "8810.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8408.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7197.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3836.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4149.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7057.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3356.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4134.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3066.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8398.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8328.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4542.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4282.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3848.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3734.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5705.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7207.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4133.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7079.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3292.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5651.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"636.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7199.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8508.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5657.sats"}h!
text/plain;charset=utf-8
  "name": "8870.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"666.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5776.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3358.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5797.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8373.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8334.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"2884.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8311.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4048.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5945.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5881.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3664.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"3262.sats"}h!
text/plain;charset=utf-8
  "name": "8099.sats"
CjA=:ETH.ETH:0x3464807bDff9Ee56a56f461552D5ad3abDc744f0:2118891:te:0
text/plain;charset=utf-8
  "name": "yoda.sats"
IjGREFUND:313C7F15EF1977231335EFB604E0087C8C376B8A680ADE39D9F34A88927373DF
text/plain;charset=utf-8
  "name": "sapdeutschland.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5956.sats"}h!
EjC=:BNB.BNB:bnb10gn5e44cugderfx9zu6xc2xnhek9d5kugar65d:716580580:te:0
text/plain;charset=utf-8
Bj@=:ETH.ETH:0x82888626dE0569B5bE85edF6A5e1170a98f2d699:68427603::0
text/plain;charset=utf-8
  "name": "6567.sats"
text/plain;charset=utf-8
  "name": "5063.sats"
no copyright, use freely
no copyright, use freely
no copyright, use freely
no copyright, use freely
no copyright, use freely
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-11-28T19:08:11+08:00" xmp:MetadataDate="2021-11-28T19:08:11+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:235ddd99-396e-e240-8c79-c94c67ff4c0e" xmpMM:DocumentID="xmp.did:235ddd99-396e-e240-8c79-c94c67ff4c0e" xmpMM:OriginalDocumentID="xmp.did:235ddd99-396e-e240-8M
c79-c94c67ff4c0e"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:235ddd99-396e-e240-8c79-c94c67ff4c0e" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>)R
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:34+08:00" xmp:ModifyDate="2021-12-01T19:51:37+08:00" xmp:MetadataDate="2021-12-01T19:51:37+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:7eac9d62-3d1a-de4d-93f1-60def933d447" xmpMM:DocumentID="xmp.did:a61d0cca-33d0-ec48-bc30-648b30239cd4" xmpMM:OriginalDocumentID="xmp.did:a61d0cca-33d0-ec48-bM
c30-648b30239cd4"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:a61d0cca-33d0-ec48-bc30-648b30239cd4" stEvt:when="2021-11-23T21:26:34+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:e11a9621-873d-fc42-b1cc-17fe60444762" stEvt:when="2021-11-29T14:33:31+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:7eac9d62-3d1a-de4d-93f1-60M
def933d447" stEvt:when="2021-12-01T19:51:37+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7278.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4565.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7276.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7271.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5975.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8566.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8568.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5979.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5965.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8582.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7279.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7270.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5969.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4559.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8559.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4564.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "writing.sats"
text/plain;charset=utf-8
  "name": "person.sats"
text/plain;charset=utf-8
  "name": "medals.sats"
text/plain;charset=utf-8
  "name": "gender.sats"
text/plain;charset=utf-8
  "name": "activity.sats"
text/plain;charset=utf-8
  "name": "crafts.sats"
text/plain;charset=utf-8
  "name": "sound.sats"
text/plain;charset=utf-8
  "name": "paper.sats"
text/plain;charset=utf-8
  "name": "places.sats"
text/plain;charset=utf-8
  "name": "zodiac.sats"
text/plain;charset=utf-8
  "name": "religion.sats"
text/plain;charset=utf-8
  "name": "buttons.sats"
text/plain;charset=utf-8
  "name": "arrow.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "tools.sats"
text/plain;charset=utf-8
  "name": "flags.sats"
text/plain;charset=utf-8
  "name": "symbols.sats"
text/plain;charset=utf-8
  "name": "objects.sats"
text/plain;charset=utf-8
  "name": "drinks.sats"
text/plain;charset=utf-8
  "name": "medical.sats"
text/plain;charset=utf-8
  "name": "warning.sats"
text/plain;charset=utf-8
  "name": "animals.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "nature.sats"
text/plain;charset=utf-8
  "name": "clothing.sats"
text/plain;charset=utf-8
  "name": "keycap.sats"
text/plain;charset=utf-8
  "name": "punctuation.sats"
text/plain;charset=utf-8
  "name": "household.sats"
text/plain;charset=utf-8
  "name": "instrument.sats"
text/plain;charset=utf-8
  "name": "geometric.sats"
text/plain;charset=utf-8
  "name": "alphanumeric.sats"
text/plain;charset=utf-8
  "name": "5062.sats"
text/plain;charset=utf-8
  "name": "5064.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5066.sats"
text/plain;charset=utf-8
  "name": "5065.sats"
Bj@=:ETH.ETH:0x811C1b7067292c18e4598f222E27b4B00E93e7d1:19959687::0
CjA=:BNB.BNB:bnb1whk7s7mnn92scnr8h8d6u0x0aq0lkpkxjwdj3r:299410011::0
text/plain;charset=utf-8
  "name": "lowb.sats"
text/plain;charset=utf-8
  "name": "cdb.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5070.sats"
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#707070"/>
   <ref id="color2" param="fill2" default="#5c5c5c"/>
   <ref id="color3" param="fill3" default="#a7a7a7"/>
   <ref id="color4" param="fill4" default="#d6d6d6"/>
  <path fill="url(#color1)" d="M0 0v320h210v-10h-10v-20h-10v-10h-10v-10h-50M
v-10h-20v-10H90v-10H80v-10H70v-20H60v-20H50v-70h10v-20h10V80h10V70h10V60h20V50h20V40h60v10h20v10h20v10h10v10h10v20h10v20h10v70h-10v20h10v10h10v10h10v10h10v20h10v10h10V0H10Z"/>
  <path fill="url(#color2)" d="M130 40v10h60V40h-50zm60 10v10h20V50h-10zm20 10v10h20V60h-10zm20 10v10h10V70Zm10 10v20h10V80Zm10 20v20h10v-20zm10 20v70h10v-70zm0 70h-10v20h-30v10h50v-10h-10v-10zm10 30v10h10v-10zm10 10v10h10v-10zm10 10v20h10v-20zm10 20v10h10v-10zm10 10v10h10v-10zm-90-50h-10v10h10zm-10 10h-10v10h10zm-10 10h-10v20h10v-10zm-10 20hM
-60v10h50v10h10v10h10v-20h-10zm10 30v20h10v-20zm10 20v10h10v-10zm-80-50v-10h-20v10h10zm-20-10v-10H90v10h10zm-20-10v-10H80v10zm-10-10v-20H70v20zm-10-20v-20H60v20zm-10-20v-70H50v70zm0-70h10v-20H60v10zm10-20h10V80H70v10Zm10-20h10V70H80Zm10-10h20V60H90Zm20-10h20V50h-20zm100 160v-20h-10v20zM170 70v90h10V70Zm-30 30v20h10v-20zm60 0v20h10v-20zm-80 20v20h10v-20zm0 20h-10v40h10v-30zm0 40v20h10v-20zm100-60v20h10v-20zm10 20v40h10v-40zm0 40h-10v20h10v-10zm-90 20v10h10v-10zm40 20v10h10v-10zm50 10v10h30v-10h-20zm30 10v10h10v-10zmM
10 10v20h10v-20zm0 20h-10v10h10zm-10 10h-10v10h10zm-10 10h-20v10h20zm-20 0v-10h-10v10zm-10-10v-30h-10v30zm0-30h10v-10h-10zm60 30v10h10v-10zm0 10h-10v10h10zm-10 10h-10v10h10zm-10 10h-10v10h10zm30-10v10h10v-10zm0 10h-10v10h10z"/>
  <path fill="url(#color3)" d="M130 50v10h-20v10H90v10H80v20H70v20H60v70h10v20h10v20h10v10h20v10h20v10h60v-20h10v-10h10v-10h-20v10h-50v-10h-20v-20h-20v-20H90v-40h10v-30h20v-10h30V70h30v30h30v20h20v20h10v40h-10v20h-20v20h10v-10h30v-20h10v-70h-10v-20h-10V80h-10V70h-20V60h-20V50h-50zm90 170v10hM
-10v10h-10v20h-10v10h10v20h10v20h10v10h30v-10h10v-10h10v-10h10v-10h10v10h-10v10h-10v10h-10v10h20v-10h10v-10h10v10h-10v10h30v-40h-10v-10h-10v-10h-10v-20h-10v-10h-10v-10h-40Zm-90-100v20h-10v40h10v20h20v10h30v-10h20v-20h10v-40h-10v-20h-20v40h-30v-40h-10zm100 110h30v10h10v10h10v20h-10v10h-10v10h-10v10h-20v-10h-10v-10h-10v-30h10v-10h10zm0 10v10h-10v20h10v10h20v-10h10v-10h10v-10h-10v-10h-20z"/>
  <path fill="url(#color4)" d="M150 70v90h20V70h-10zm-30 30v10h-20v30H90v40h10v20h20v-20h-10v-40h10v-20h20v-20h-10zm0 100v20h20vM
10h40v-10h20v-20h-20v10h-40v-10h-10zm80 0h20v-20h10v-40h-10v-20h-20v20h10v40h-10v10zm0-80v-20h-20v20h10zm60 140v10h10v-10zm0 10h-10v10h10zm-10 10h-20v10h20zm-20 0v-10h-10v10z"/>
  <script type="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refList.item( r );
= eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
       if (eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
   if ( -1 != href.indexOf("?")M
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
       var valList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
       for ( var i = 0, iLen = paM
rams.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" );
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
       GetIdRefs( eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagName( "*" );
0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachEl.attributes[ a ];
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
           var t = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
           eachEl.setAttributeNS( attr.LenamespaceURI, attr.name, val);
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5067.sats"
text/plain;charset=utf-8
  "name": "5068.sats"
text/plain;charset=utf-8
  "name": "5069.sats"
text/plain;charset=utf-8
  "name": "losercoin.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
 https://ordinals.com/content/86d9243d8c184f2b6da7ee9f598476d6cbd67ee859383b48585d3665afd1eeb7i0
 https://ordinals.com/content/41a4efa185678abadc11203825e55c54616cbf60d20f3c6d9ce5b2d083acc890i0
text/plain;charset=utf-8
CjA=:ETH.ETH:0xF7AA22FaDE4D47680032067cf9f504810885d2E5:5974664:te:0
DjB=:BNB.BNB:bnb1lqajmkvkkakr5sjm5e5szfxjwhtlz85ymhj5q8:11968602:te:0
DjB=:BNB.BNB:bnb1gejcqwmfe9frec576kl0zj7ndf7n57cu780v69:50403916:te:0
DjB=:BNB.BNB:bnb1etzaf3jncyme4hufjyw3yjgda9vw3tu254lqau:74886365:te:0
FjD=:BNB.BNB:bnb1gxe2z223jjemvw7tuapuw68w9ddjvx670ckg28:2557967891:te:0
c/Foundry USA Pool #dropgold/
no copyright, use freely
no copyright, use freely
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-15T20:52:56+08:00" xmp:MetadataDate="2021-12-15T20:52:56+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:70423441-b701-3340-b50e-8810d97d85bc" xmpMM:DocumentID="xmp.did:d2638765-b6a2-4f4f-a4eb-63e2b28994c6" xmpMM:OriginalDocumentID="xmp.did:d2638765-b6a2-4f4f-aM
4eb-63e2b28994c6"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:d2638765-b6a2-4f4f-a4eb-63e2b28994c6" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:4f9e061c-5afb-244e-b8e6-072a255a4873" stEvt:when="2021-11-29T18:08:19+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:70423441-b701-3340-b50e-88M
10d97d85bc" stEvt:when="2021-12-15T20:52:56+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>?c,H
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8581.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
Aj?=:ETH.ETH:0xdDA3d17Cc922AACB01BbbD6625B8b8ea4469Dc93:2072431::0
Bj@=:BNB.BNB:bnb1s0u9vct2qx367spf35l94v6pggr77lcvwk5l00:23932933::0
text/plain;charset=utf-8
  "name": "shabi.sats"
KjI=:BNB.BUSD-BD1:bnb1354mdjlaxt9zw85flgnmcvvgfnrqpm4ut28wyu:288540602531::0
Aj?=:ETH.ETH:0x843705CA0F194AFe69d20F52Aa58028af4c48F6C:5314126::0
text/plain;charset=utf-8
text/plain;charset=utf-8
FjD=:BNB.BNB:bnb148cksggn8s30clh0a0ygzzuf7kgvukuv9kdeee:2530731004:te:0
Bj@=:ETH.ETH:0xaE31b0D76080eCBae42F32BC657d0aBd3c682eF2:71355687::0
no copyright, use freely
no copyright, use freely
IjGREFUND:9397D292E592321BB8E0FE8342E7F39332D60616091E2A08CE8F5609668BE8ED
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8533.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4574.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8586.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5985.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7288.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4575.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4584.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5996.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8538.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7282.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5993.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7287.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512" width="100%" height="100%" data-json="data:application/json;base64,eyJuYW1lIjoiQml0R2x5cGhzICM0MzIiLCJleHRlcm5hbF91cmwiOiJodHRwczovL2JpdGdseXBocy5jb20vIy9nbHlwaC80MzIiLCJhdHRyaWJ1dGVzIjpbeyJ0cmFpdF90eXBlIjoiU2l6ZSIsInZhbHVlIjoiMzJ4MzIifSx7InRyYWl0X3R5cGUiOiJTY2hlbWUiLCJ2YWx1ZSI6IuKWoCB8IC0gKyJ9LHsidHJhaXRfdHlwZSI6IlN5bWJvbCBDb3VudCIsInZhbHVlIjozMzJ9LHsidHJhaXRfdHlwZSI6IlN5bWJvbCBTeW1tZXRyeSIsInZhbHVlIjoiVM
mVydGljYWwifSx7InRyYWl0X3R5cGUiOiIrIENvdW50IiwidmFsdWUiOjcyfSx7InRyYWl0X3R5cGUiOiLilqAgQ291bnQiLCJ2YWx1ZSI6OTB9LHsidHJhaXRfdHlwZSI6InwgQ291bnQiLCJ2YWx1ZSI6ODB9LHsidHJhaXRfdHlwZSI6Ii0gQ291bnQiLCJ2YWx1ZSI6OTB9XX0=" data-message="BitGlyphs #432 - bc1p9jrfdv6a0r653sz2d637cc64ujyge8h3wf44ex6nm7hea4xm8qssy5r88d" data-signature="c7c0299f4d5d70378bf8b81a92120b72033884433d95e75cb31cfb115204ea435c10c11bafdc7a9cd200a9b1d913fb1ac300700154e3049c25bc9171fab5ea98"><defs><style type="text/css">@font-face{font-family:"glyphs";src:uM
rl(data:font/woff2;base64,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)format("woff2");}svg{background-color:#4d4d4e;}tspan{text-anchor:middle;dominant-baseline:middle;font-family:glyphs;font-weight:400;fill:#f2a900;text-rendering:geometricPrecision;}::selection{background-color:#f2a90044;}</style></defs><rect width="100%" height="100%" fill="#222222" /><text x="0" y="256" tranM
sform="translate(256)" font-size="12.8" letter-spacing="-0.8"><tspan x="0" dy="-185.25">..+..
..|..-..+..+..-..|..
..+..</tspan><tspan x="0" dy="12">...|.-|.......|
|.......|-.|...</tspan><tspan x="0" dy="12">+.....
.....+</tspan><tspan x="0" dy="12">.|.-....
....-.|.</tspan><tspan x="0" dy="12">....
......................
....</tspan><tspan x="0" dy="12">
</tspan><tspan x="0" dy="12">.|
.....+-|...+--+...|-+....M
|.</tspan><tspan x="0" dy="12">.........
.........</tspan><tspan x="0" dy="12">|..
..|</tspan><tspan x="0" dy="12">.....
.....</tspan><tspan x="0" dy="12">.....-|.....+|....|+.....|-.....</tspan><tspan x="0" dy="12">-.-
-.-</tspan><tspan x="0" dy="12">..|....
....|..</tspan><tspan x="0" dy="12">..
-.-....|.|......|.|....-.-
..</tspan><tspan x="0" dy="12">+|....+|..M
.....--.......|+....|+</tspan><tspan x="0" dy="12">.
.</tspan><tspan x="0" dy="12">.-....
....-.</tspan><tspan x="0" dy="12">.|+....|+.+....
....+.+|....+|.</tspan><tspan x="0" dy="12">..-
...+|+|......|+|+...
-..</tspan><tspan x="0" dy="12">.+|....-
-....|+.</tspan><tspan x="0" dy="12">
-.|..-..+.+....+.+..-..|.-
</tspan><tspan x="0" dy="12">+....
|+.....|+..+|.....+|
....+</tspan><tspan x="0" dy="12M
-.....</tspan><tspan x="0" dy="12">|..-....-..-
-..-....-..|</tspan><tspan x="0" dy="12">..+....+.-+.-.|..|.-.+-.+....+..</tspan><tspan x="0" dy="12">.|-......
......-|.</tspan><tspan x="0" dy="12">-
-</tspan><tspan x="0" dy="12">.+..-......................-..+.</tspan><tspan x="0" dy="12">.|.
.|.</tspan><tspan x="0" dy="12">......-+...
...+-......</tspan><tspan x="0L
|.....+.|--|.+.....|
+|.+.</tspan><tspan x="0" dy="12">.....-..|.+
+.|..-.....</tspan></text></svg>h!
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512" width="100%" height="100%" data-json="data:application/json;base64,eyJuYW1lIjoiQml0R2x5cGhzICM0MzEiLCJleHRlcm5hbF91cmwiOiJodHRwczovL2JpdGdseXBocy5jb20vIy9nbHlwaC80MzEiLCJhdHRyaWJ1dGVzIjpbeyJ0cmFpdF90eXBlIjoiU2l6ZSIsInZhbHVlIjoiMTZ4MTYifSx7InRyYWl0X3R5cGUiOiJTY2hlbWUiLCJ2YWx1ZSI6IuKWoCJ9LHsidHJhaXRfdHlwZSI6IlN5bWJvbCBDb3VudCIsInZhbHVlIjozOH0seyJ0cmFpdF90eXBlIjoiU3ltYm9sIFN5bW1ldHJ5IiwidmFsdWUiOiJSb3RhdGlvbM
mFsIn0seyJ0cmFpdF90eXBlIjoi4pagIENvdW50IiwidmFsdWUiOjM4fV19" data-message="BitGlyphs #431 - bc1p9n5mc9vdf46tll5thxxvkpcvtrghfu7sjjjswmd849g6nq5dya4sw05wf7" data-signature="7b7b596320c6664b098070a6fb1a65c21b59a8988f98f635fad088a6bedce0c10e93b76af82b838b832ff8f849321c50565f0b626ee4f37661ea042a3ab6f8c3"><defs><style type="text/css">@font-face{font-family:"glyphs";src:url(data:font/woff2;base64,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)format("woff2");}svg{background-color:#4d4d4e;}tspan{text-anchor:middle;dominant-baseline:middle;font-family:glyphs;font-weight:400;fill:#f2a900;text-rendering:geometricPrecision;}::selection{background-color:#f2a90044;}</style></defs><rect width="100%" height="100%" fill="#222222" /><text x="0" y="256" transform="translate(256)" font-size="25.6" letter-spacing="-1.6"><tspan x="0" dy="-178.5">
.</tspan><tspan x="0" dy="24">.......
</tspan><tspan x="0" dy="24">..............
.</tspan><tspan x="0" dy="24">..............
.</tspan><tspan x="0" dy="24">..............
.</tspan><tspan x="0" dy="24">......
.</tspan><tspan x="0" dy="24">.....
.</tspan><tspan x="0" dy="24">
..............</tspan><tspan x="0" dy="24">..............
</tspan><tspan x="0" dy="24">.
.....</tspan><tspan x="0" dy="24">.
......</tspan><tspan x="0" dy="24">.
..............</tspan><tspan x="0" dL
..............</tspan><tspan x="0" dy="24">.
..............</tspan><tspan x="0" dy="24">
.......</tspan><tspan x="0" dy="24">.
</tspan></text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512" width="100%" height="100%" data-json="data:application/json;base64,eyJuYW1lIjoiQml0R2x5cGhzICM0MzAiLCJleHRlcm5hbF91cmwiOiJodHRwczovL2JpdGdseXBocy5jb20vIy9nbHlwaC80MzAiLCJhdHRyaWJ1dGVzIjpbeyJ0cmFpdF90eXBlIjoiU2l6ZSIsInZhbHVlIjoiMTZ4MTYifSx7InRyYWl0X3R5cGUiOiJTY2hlbWUiLCJ2YWx1ZSI6IuKYnyDimJ0ifSx7InRyYWl0X3R5cGUiOiJTeW1ib2wgQ291bnQiLCJ2YWx1ZSI6OTh9LHsidHJhaXRfdHlwZSI6IlN5bWJvbCBTeW1tZXRyeSIsInZhbHVlIjoiUm90YM
XRpb25hbCJ9LHsidHJhaXRfdHlwZSI6IuKYnSBDb3VudCIsInZhbHVlIjo1Mn0seyJ0cmFpdF90eXBlIjoi4pifIENvdW50IiwidmFsdWUiOjQ2fV19" data-message="BitGlyphs #430 - bc1pjqssjgetyae8kpgn2apwhlt5w9jydk305efdppgmmcvez5nr8cgqy3haer" data-signature="822b71c16e3282a7ad7b6b26b01a4214477982a9a3a40f2d52776cca37c939bd3825610a916719c7c589a18b636e5e6748e0b88eee77562413dc991106161600"><defs><style type="text/css">@font-face{font-family:"glyphs";src:url(data:font/woff2;base64,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)format("woff2");}svg{background-color:#4d4d4e;}tspan{text-anchor:middle;dominant-baseline:middle;font-family:glyphs;font-weight:400;fill:#f2a900;text-rendering:geometricPrecision;}::selection{background-color:#f2a90044;}</style></defs><rect width="100%" height="100%" fill="#222222" /><text x="0" y="256" transform="translate(256)" font-size="28.8" letter-spacing="-4.8"><tspan x="0" dy="-178.5">.
.</tspan><tspan x="0" dy="24">
</tspan><tspan x="0" dy="24">.
.</tspan><tspan x="0" dy="24">.
</tspan><tspan x="0" dy="24">
.</tspan><tspan x="0" dy="24">.......
</tspan><tspan x="0" dy="24">....
.</tspan><tspan x="0" dy="24">.....
.</tspan><tspan x="0" dy="24">.
.....</tspan><tspan x="0" dy="24">.
....</tspan><tspan x="0" dy="24">
.......</tspan><tspan x="0" dy="24">.
</tspan><tspan x="0" dy="24">
.</tspan><tspan x="0" dy="24">.
.</tspan><tspan x="0" dy="24">
</tspan><tspan x="0" dy="24">.
.</tspan></text></svg>h!
FjD=:BNB.BNB:bnb1gzqsd7q4k4vq373udkgcpdvyf4ahh5yxfggtuh:2544031817:te:0
text/plain;charset=utf-8
  "name": "binanca.sats"
text/plain;charset=utf-8
  "name": "9691.sats"
text/plain;charset=utf-8
  "name": "7890.sats"
text/plain;charset=utf-8
  "name": "3276.sats"
KjI=:BNB.BUSD-BD1:bnb1wu8vn4sldcaw22ed0uuhf76c6waqchltycdqck:4310589617:te:0
text/plain;charset=utf-8
text/plain;charset=utf-8
EjC=:BNB.BNB:bnb1pa98qwx9c6hngay6hqn5xn8lujufy8v0ncnf4a:392139268:te:0
text/plain;charset=utf-8
  "name": "5588.sats"
application/octet-stream
application/octet-stream
  "name": "1866.sats"
6j4ion:5.QmX3skCwfSzSnopSemVZhFM9xnpyd4uAqgRSK4au5Pieuq
FjDOUT:C9A377AAC93870FDF86E3E9CB70A63217C4979A1AA63ED3E5DBDBB7B1A755A28
Bj@=:BNB.BNB:bnb173tj6xlkh68srjp5jvy5jt8m99ymk5fghuj6fg:35158755::0
text/html;charset=utf-8
<!-- Thank you, Satoshi -->
<!-- byteEstate #20 -->
<!-- Probably nothing ... -->
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>byteEstate #20</title>
<script>const referUrl = "https://byteestates.app/estate/20";</script>
<link rel="stylesheet" href="https://byteestates.app/assets/estate20/css/style.css"/>
</head><body><div id="byteestate">
<a href="https://byteeL
states.app"><h1>byteEstate #20</h1></a>
</div><script src="https://byteestates.app/assets/estate20/js/app.js"></script>
FjDOUT:9ECB5E4E1411EE909D5E3E971343F230EFF3F7A359FC3D90FCA0B4407B435D1F
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7311.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7292.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4577.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5992.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4594.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4595.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8595.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5994.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5997.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4585.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8584.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7297.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8535.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8545.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7307.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7299.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4604.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7303.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5991.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8589.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8544.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5989.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4588.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "blzn.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1420.sats"}h!
,'/&$&/'F7117FQD@DQbXXb|v|
,'/&$&/'F7117FQD@DQbXXb|v|
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9638.sats"}h!
text/plain;charset=utf-8
  "name": "8825.sats"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"lonely.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6996.sats"}h!
text/plain;charset=utf-8
  "name": "0075.sats"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"0xbanana.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5357.sats"}h!
JjH=:BNB.TWT-8C2:bnb1mwxdpy4cnlzwcw8pj2drpa2hkaaf333gz0vzpg:3194719752:te:0
FjDOUT:6BD23BEF4FE589CAD864A503CBF3A131D97B8992B5696E70518BE0A9E088D18A
DjB=:ETH.ETH:0x10c6Bca34D9e58e53AA38B0b9c8A230fe158cd64:1324123562::0
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
<!--    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>-->
    <!-- threejs@r124
    <script sandbox="allow-scripts" typM
e="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/jaM
vascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" tM
ype="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substM
ring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
urn _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | M
0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
        html, body {
            margin: 0;
            padding: 0;
            max-width: 100%;
            max-height: 100%;
            margin: auto;
     overflow: auto;
            position: fixed;
            object-fit: contain;
            bottom: 0;
            left: 0;
            right: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
nst container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
    //License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
    //Author: @devhontran
    //Twitter: https://twitter.com/DevHontran
    //Website: https://hontran.dev
    const scaler = 1;
    let paper, border;
    let shadown = {x: -5, y: 5};
    let layers = [];
    let padding = 40;
    function cyrb128(str) {
= 1779033703, h2 = 3144134277,
            h3 = 1013904242, h4 = 2773480762;
        for (let i = 0, k; i < str.length; i++) {
            k = str.charCodeAt(i);
            h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
            h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
            h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
            h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
        h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
        h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
        h3 = Math.imul(h1 ^ (h3M
 >>> 17), 951274213);
        h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
        return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
    function sfc32_c(a, b, c, d) {
        a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
        var t = (a + b) | 0;
        a = b ^ b >>> 9;
        b = c + (c << 3) | 0;
        c = (c << 21 | c >>> 11);
        d = d + 1 | 0;
        t = t + d | 0;
        c = c + t | 0;
        return (t >>> 0) / 4294967296;
    // return random value from [l -> r]
function consistentRand (seed, l, r) {
        const rand = sfc32_c(...cyrb128(seed.toString()));
        return l + rand * (r - l)
    function getRandomItem (listP, seed) {
        const pref = []
        for (const x of listP) pref.push(x)
        for (let i = 1; i < listP.length; i++) {
            pref[i] += pref[i - 1]
        for (let i = 0; i < pref.length; i++) pref[i] /= pref[pref.length - 1];
        // get random value from 0->1
        const rand = consistentRand(seed, 0, 1)
r (let i = 0; i < pref.length; i++) {
            if (rand < pref[i]) return i;
    function createRadialGradient(x, y, r, x1, y1, r1) {
        const grd = drawingContext.createRadialGradient(x, y, r, x1, y1, r1);
        grd.addColorStop(0,"#FFFFFF");
        grd.addColorStop(1,"#E5E5E3");
        drawingContext.fillStyle = grd;
        drawingContext.fillRect(0, 0, width, height);
    function artNosie(){
        const w = width * 1.2;
        const h = height * 1.2M
        paper = createGraphics(w, h);
        for(let i = 0 ; i< 100000; i++){
            let x = random(w);
            let y = random(h);
            let dotSize = 10.0*(noise(x/(width / 4), y/(height / 4))*2 - noise(x/width, y/height));
            paper.strokeWeight(random(0.25, 3));
            paper.stroke(random(20, 80), random(1+dotSize, 4+dotSize));
            paper.point(x, y);
    function generabox(col, pos, si){
        const layer = createGraphics(width, height);
ill(140, 178, 250, 56);
        layer.noStroke();
        layer.rect(pos.x + shadown.x, pos.y + shadown.y, si.w, si.h);
        layer.filter(BLUR, 3);
        layer.fill(col.r, col.g, col.b, col.a);
        layer.noStroke();
        layer.rect(pos.x, pos.y, si.w, si.h);
        layers.push(layer);
    function setup() {
        const hash = rand ? rand : Math.random();
        const fCol = {r: 255, g: 255, b: 255};
        const s = min(window.innerWidth, window.innerHeight)
        createCanvas(s,s);M
        for(let i=0; i<9; i++){
            const tHash = `${hash}_${i}`;
            const cyrHash = cyrb128(tHash);
            const mixHash_color_r = consistentRand(cyrHash[0], 0, 1);
            const mixHash_color_g = consistentRand(cyrHash[1], 0, 255);
            const mixHash_color_b = consistentRand(cyrHash[2], 0, 255);
            const mixHash_color_a = 255;//consistentRand(cyrHash[3], 100, 255);
            const sw = consistentRand(cyrHash[0],50, width / 2);
            const sh = consistentRaM
nd(cyrHash[3], 50, height / 2);
            const col = {r: mixHash_color_r, g: mixHash_color_g, b: mixHash_color_b, a: mixHash_color_a};
            const si = {w: sw, h: sh};
            const pos_x = consistentRand(cyrHash[1], padding, width- padding - si.w);
            const pos_y = consistentRand(cyrHash[2], padding, height- padding - si.h);
            const pos = {x: pos_x, y: pos_y}
            // console.log('___i', col, pos, si);
            generabox(col, pos, si);
        const borderSize = 30;
        border = createGraphics(width, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(width - borderSize, 0, borderSize, height);
        border.fill(fCol.r, fCol.g, fCol.b, 255);
        border.noStroke();
        border.rect(0, 0, width, borderSize);
        border.fill(fCol.r, fCol.g, fCol.b, 255)M
        border.noStroke();
        border.rect(0, height - borderSize, width, borderSize);
    function draw() {
        background('#ffffff');
        blendMode(BLEND);
        for(let i=0; i<9; i++){
            image(layers[i], 0, 0, width, height);
        blendMode(MULTIPLY)
        createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, height);
        blendMode(MULTIPLY);
        image(paper, 0, 0, width, height);
        image(border,M-
 0, 0, width, height);
    function windowResized() {
        const s = min(window.innerWidth, window.innerHeight)
        resizeCanvas(s, s);
 Add your code here
Aj?=:ETH.ETH:0xA5D671966D24a091Eb5C1e819c8cCC0D1FBAFaD3:3094207::0
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8587.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7322.sats"}h!
text/plain;charset=utf-8
  "name": "9519.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4611.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6003.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7323.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4616.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8599.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6007.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8598.sats"}h!
text/plain;charset=utf-8
  "name": "bassmint.sats",
  "website": "bassmint.wtf",
  "type": "Music NFTs on Bitcoin"
FjD=:BNB.BNB:bnb12wpwf3wys5hcv6ndwf2w7xjnf9jh9sqmc7ljxd:3350844198:te:0
text/plain;charset=utf-8
  "name": "0082.sats"
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#262b43"/>
   <ref id="color2" param="fill2" default="#fee76f"/>
   <ref id="color3" param="fill3" default="#733e3a"/>
   <ref id="color4" param="fill4" default="#fe0f47"/>
  <path fill="url(#color1)" d="M0 0v320h320V0H10Zm120 70h80v10h20v10h10v1M
0h10v10h10v20h10v30h10v10h10v10h-20v20h-10v10h10v10h-10v10h-10v10h-10v10h-20v10H110v-10H90v-10H80v-10H70v-20H60v-30h10v-10H50v-10H40v-10h10v-10h20v-30h10v-10h10V90h10V80h20z"/>
  <path fill="url(#color2)" d="M120 70v10h-20v10H90v10H80v10H70v30h10v10h10v10h10v10h20v10h90v-10h40v-10h10v-30h-10v-20h-10v-10h-10V90h-10V80h-20V70h-70zm140 90v20h20v-10h-10v-10zm0 20h-10v10h10zm-160-10H80v-10H70v-10H60v-10H50v10H40v10h10v10h20v10h20v10h10v-10Zm-30 10H60v20h10v20h10v10h10v10h10v10h20v10h70v-10h30v-10h10v-10h10v-10h10v-20h-1M
0v10h-10v10h-10v10h-10v10h-80v-10h-30v-10H90v-10H80v-20H70Zm40 10v10h10v-10zm10 10v10h20v-10h-10zm100-10v10h10v-10zm-40 10v10h-30v10h10v10h10v-10h20v-10h10v-10h-10z"/>
  <path fill="url(#color3)" d="M60 140v10h10v10h20v-10H80v-10H70Zm30 20v10h10v-10zm160 0v10h10v-10zm-140 10v10h10v-10zm10 10v10h90v-10h-80zm90 0h30v-10h-30zm-140 0v10h10v20h10v-10h10v-10H90v-10H80Zm30 20v10H90v10h10v10h30v10h70v-30h-10v10h-20v10h-10v-10h-10v10h-10v-20h-20v-10h-10zm130-10v10h-20v30h10v-10h10v-10h10v-20zm20 0v10h10v-10ZM60 200v10h10v-1M
0zm190 10v10h10v-10zm0 10h-10v10h10zm-10 10h-10v10h10zm-10 10h-10v10h10zM70 220v10h10v-10zm10 10v10h10v-10zm10 10v10h10v-10zm20 10v10h10v-10zm80 0v10h20v-10h-10z"/>
  <path fill="url(#color4)" d="M80 160v10h10v-10zm20 10v30h10v-10h10v-10h-10v-10zm20 20v10h20v30h10v-20h30v-10h20v40h10v-40h10v-10h20v10h10v-20h10v-10h-20v10h-30v10h-80zm-20 10H90v10h10z"/>
  <script type="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refList.item( r );
       var id = eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
       if (eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
   if ( -1 != href.indexOf("?") )
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
       var valList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
       for ( var i = 0, iLen = params.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" );
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
Refs( eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagName( "*" );
   for ( var i = 0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachEl.attributes[ a ];
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
var t = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
           eachEl.setAttributeNS( attr.namespaceURI, attr.name, val);
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "0114.sats"
text/plain;charset=utf-8
  "name": "0116.sats"
text/plain;charset=utf-8
  "name": "0113.sats"
text/plain;charset=utf-8
  "name": "0115.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "red"}, {"trait_type": "Body", "value": "dark blue"}, {"trait_type": "Mane", "value": "grey"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "mohawk"}, {"trait_type": "Artifacts", "value": "cape"}]}
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
'{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "lucrece.sats"
text/plain;charset=utf-8
  "name": "cozomo.sats"
text/plain;charset=utf-8
  "name": "8852.sats"
text/plain;charset=utf-8
  "name": "fetch.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/plain;charset=utf-8
  "name": "semi.sats"
text/plain;charset=utf-8
  "name": "forgotten.sats"
text/plain;charset=utf-8
  "name": "broken.sats"
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "red"}, {"trait_type": "Body", "value": "dark blue"}, {"trait_type": "Mane", "value": "blue fire"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "none"}, {"trait_type": "Artifacts", "value": "shield"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "carrot"}, {"trait_type": "Mane", "value": "fire"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "wizard hat"}, {"trait_type": "Artifacts", "value": "pickaxe"}]}
text/plain;charset=utf-8
  "name": "usb.sats"
text/plain;charset=utf-8
/{"p":"sns","op":"reg","name":"elonmuskok.sats"}h!
text/plain;charset=utf-8
  "name": "preview.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "green"}, {"trait_type": "Body", "value": "black"}, {"trait_type": "Mane", "value": "dragon"}, {"trait_type": "Claws", "value": "blue fire"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "dark wizard hat"}, {"trait_type": "Artifacts", "value": "ghostly companion"}]}
text/plain;charset=utf-8
  "name": "floor.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "pink"}, {"trait_type": "Body", "value": "dark blue"}, {"trait_type": "Mane", "value": "greenish"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "white"}, {"trait_type": "Headgear", "value": "none"}, {"trait_type": "Artifacts", "value": "lamp"}]}
text/plain;charset=utf-8
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "purple"}, {"trait_type": "Body", "value": "tiger"}, {"trait_type": "Mane", "value": "white"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "mohawk"}, {"trait_type": "Artifacts", "value": "lamp"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "purple"}, {"trait_type": "Body", "value": "brown"}, {"trait_type": "Mane", "value": "greenish"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "bull horns"}, {"trait_type": "Artifacts", "value": "bag"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "golden armor"}, {"trait_type": "Mane", "value": "black"}, {"trait_type": "Claws", "value": "BTC whitepaper"}, {"trait_type": "Eyes", "value": "blue"}, {"trait_type": "Headgear", "value": "unicorn"}, {"trait_type": "Artifacts", "value": "shield"}]}
text/plain;charset=utf-8
  "name": "odd.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "blue"}, {"trait_type": "Body", "value": "tiger"}, {"trait_type": "Mane", "value": "grey"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "white"}, {"trait_type": "Headgear", "value": "wizard hat"}, {"trait_type": "Artifacts", "value": "lamp"}]}
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
  "name": "plant.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "brown"}, {"trait_type": "Mane", "value": "white"}, {"trait_type": "Claws", "value": "BTC whitepaper"}, {"trait_type": "Eyes", "value": "noggles"}, {"trait_type": "Headgear", "value": "mohawk"}, {"trait_type": "Artifacts", "value": "pauldrons"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "golden tribal tattoo"}, {"trait_type": "Mane", "value": "dragon"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "skull"}, {"trait_type": "Artifacts", "value": "lamp"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "tribal tattoo"}, {"trait_type": "Mane", "value": "rainbow"}, {"trait_type": "Claws", "value": "fire"}, {"trait_type": "Eyes", "value": "blue"}, {"trait_type": "Headgear", "value": "unicorn"}, {"trait_type": "Artifacts", "value": "pickaxe"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "blue"}, {"trait_type": "Body", "value": "blue"}, {"trait_type": "Mane", "value": "blue fire"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "mohawk"}, {"trait_type": "Artifacts", "value": "undead staff"}]}
text/plain;charset=utf-8
  "name": "perfect.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Ordinal Stream</title>
    <script type="text/javascript">
       (()=>{var $t=Object.create;var Gt=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Jt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty;var Ut=(o,n)=>()=>(n||o((n={exports:{}}).exports,n),n.exports);var Zt=(o,n,e,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of Jt(n))!Lt.call(o,i)&&i!==e&&Gt(o,i,{M
get:()=>n[i],enumerable:!(t=Ht(n,i))||t.enumerable});return o};var Ot=(o,n,e)=>(e=o!=null?$t(Kt(o)):{},Zt(n||!o||!o.__esModule?Gt(e,"default",{value:o,enumerable:!0}):e,o));var Tt=Ut((Ft,_t)=>{(function(o,n){typeof Ft=="object"?_t.exports=n():typeof define=="function"&&define.amd?define(n):o.Alea=n()})(Ft,function(){"use strict";return o.importState=function(e){var t=new o;return t.importState(e),t},o;function o(){return function(e){var t=0,i=0,r=0,l=1;e.length==0&&(e=[+new Date]);var s=n();t=s(" "),i=s(" "),r=s(" M
");for(var f=0;f<e.length;f++)t-=s(e[f]),t<0&&(t+=1),i-=s(e[f]),i<0&&(i+=1),r-=s(e[f]),r<0&&(r+=1);s=null;var c=function(){var h=2091639*t+l*23283064365386963e-26;return t=i,i=r,r=h-(l=h|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[t,i,r,l]},c.importState=function(h){t=+h[0]||0,i=+h[1]||0,r=+h[2]||0,l=+h[3]||0},c}(Array.prototype.slice.call(arguments))}function n(){vM
ar e=4022871197,t=function(i){i=i.toString();for(var r=0;r<i.length;r++){e+=i.charCodeAt(r);var l=.02519603282416938*e;e=l>>>0,l-=e,l*=e,e=l>>>0,l-=e,e+=l*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var le=.5*(Math.sqrt(3)-1),re=(3-Math.sqrt(3))/6,Qt=1/3,Y=1/6,ae=(Math.sqrt(5)-1)/4,ce=(5-Math.sqrt(5))/20,bt=o=>Math.floor(o)|0;var At=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Dt(o=Math.random){let n=Vt(o),e=nM
ew Float64Array(n).map(r=>At[r%12*3]),t=new Float64Array(n).map(r=>At[r%12*3+1]),i=new Float64Array(n).map(r=>At[r%12*3+2]);return function(l,s,f){let c,h,a,j,d=(l+s+f)*Qt,y=bt(l+d),v=bt(s+d),u=bt(f+d),x=(y+v+u)*Y,C=y-x,I=v-x,b=u-x,k=l-C,G=s-I,R=f-b,S,B,N,A,D,_;k>=G?G>=R?(S=1,B=0,N=0,A=1,D=1,_=0):k>=R?(S=1,B=0,N=0,A=1,D=0,_=1):(S=0,B=0,N=1,A=1,D=0,_=1):G<R?(S=0,B=0,N=1,A=0,D=1,_=1):k<R?(S=0,B=1,N=0,A=0,D=1,_=1):(S=0,B=1,N=0,A=1,D=1,_=0);let V=k-S+Y,tt=G-B+Y,et=R-N+Y,nt=k-A+2*Y,ot=G-D+2*Y,Mt=R-_+2*Y,kt=k-1+3*Y,jt=G-M
1+3*Y,xt=R-1+3*Y,pt=y&255,mt=v&255,dt=u&255,at=.6-k*k-G*G-R*R;if(at<0)c=0;else{let z=pt+n[mt+n[dt]];at*=at,c=at*at*(e[z]*k+t[z]*G+i[z]*R)}let ct=.6-V*V-tt*tt-et*et;if(ct<0)h=0;else{let z=pt+S+n[mt+B+n[dt+N]];ct*=ct,h=ct*ct*(e[z]*V+t[z]*tt+i[z]*et)}let ht=.6-nt*nt-ot*ot-Mt*Mt;if(ht<0)a=0;else{let z=pt+A+n[mt+D+n[dt+_]];ht*=ht,a=ht*ht*(e[z]*nt+t[z]*ot+i[z]*Mt)}let ft=.6-kt*kt-jt*jt-xt*xt;if(ft<0)j=0;else{let z=pt+1+n[mt+1+n[dt+1]];ft*=ft,j=ft*ft*(e[z]*kt+t[z]*jt+i[z]*xt)}return 32*(c+h+a+j)}}function Vt(o){let e=new M
Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let i=t+~~(o()*(256-t)),r=e[t];e[t]=e[i],e[i]=r}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Xt=Ot(Tt(),1),$,p,M=[],qt,Rt,St,q,Z,X=10,wt=0,Q,vt=.06,it=0,w,P,st,lt,K,m=[],W=3,g,F,It=0,Et=0,te=.2,T,Bt;function ee(){var o=document.querySelector("body");$=document.createElement("canvas"),o.appendChild($),p=$.getContext("2d"),window.innerWidth<window.innerHeight?K=window.innerWidth:K=window.innerHeight;let n=J(mathRand(),0,1,0,3)|0,e;n===0?(M
st=K,lt=st*.7,e="7:5"):n===1?(lt=K,st=lt*.7,e="5:7"):n===2&&(st=K,lt=K,e="1:1");let t=window.devicePixelRatio;$.width=st*t|0,$.height=lt*t|0,$.style.width=`${st}px`,$.style.height=`${lt}px`,w=$.width/t,P=$.height/t,p.scale(t,t),Bt=Math.round(Math.min(Math.max(K/700,.5),1)*10)/10,p.imageSmoothingEnabled=!0,p.lineWidth=Bt,p.lineCap="round",p.lineJoin="round";let i=Math.floor(mathRand()*19021990);Q=Dt((0,Xt.default)(i)),X=K/175|0,q=w/X+1|0,Z=P/X+1|0,g=w/W|0,F=P/W|0,qt=new Array(q*Z),St=new Array(q*Z),Rt=new Array(q*Z)M
,vt=ut(.008,.018),T=ne(0,10,te);for(var r=0;r<1;r++){let R=ut(-w/2,w/2)|0,S=ut(-P/2,P/2)|0,B=ut(-w/2,w/2)|0,N=ut(-P/2,P/2)|0;M[r]=new gt(R,S,"major"),M[r+1]=new gt(B,N,"minor")}for(var l=0,s=0;s<Z;s++){for(var f=0,c=0;c<q;c++){var h=c+s*q,a=(Q(f,l,it)*.5+.5)*Math.PI*2,j,d,y,v;j=(Q(f/3+140,l/3+140,it/3)*.5+.5)*325|0,d=(Q(f/3+40,l/3+40,it/3)*.5+.5)*275|0,y=(Q(f/3+190,l/3+190,it/3)*.5+.5)*325|0,v=J(Q(f/2+250,l/2+250,it/2)*.5+.5,0,1,0,100)|0;var u=J(c,0,q,-w/2,w/2),x=J(s,0,Z,-P/2,P/2),C=[u,x];let R=Math.sqrt(Math.pow(CM
[0],2)+Math.pow(C[1],2));C[0]/=R,C[1]/=R;var I;let S=Math.cos(Math.PI/4),B=Math.sin(Math.PI/4);I=[S,B];let N=Math.sqrt(Math.pow(I[0],2)+Math.pow(I[1],2)),A=Math.atan(I[1]/I[0]),D=[[Math.cos(2*A),Math.sin(2*A)],[Math.sin(2*A),-Math.cos(2*A)]];var b=Ct(D)[0],k=Ct(D)[1];H(b,Nt(D)[0]),H(k,Nt(D)[1]);let _=Math.cos(2*A)*Math.cos(2*A)-Math.sin(2*A)*Math.sin(2*A),V=[[Math.cos(a),-Math.sin(a)],[Math.sin(a),Math.cos(a)]],tt=Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)),et=Math.sqrt(Math.pow(k[0],2)+Math.pow(k[1],2));b[0]=b[0]M
*_/tt,b[1]=b[1]*_/tt,k[0]=k[0]*_/et,k[1]=k[1]*_/et;let nt=Wt(V,b),ot=Wt(V,k);qt[h]=[nt[0],nt[1]],Rt[h]=[ot[0],ot[1]],St[h]=[j,d,y,v],f+=vt}l+=vt,it+=3e-4}for(var s=0;s<F;s+=1)for(var c=0;c<g;c+=1){var h=c+s*g;m[h]=new zt(c,s)}for(var r=0;r<30;r++){let S=U("major");S!==null&&M.push(S);let B=U("minor");B!==null&&M.push(B)}let G=q*Z;window.$generativeTraits={Type:"Tensor Field",Integrator:"RK4",Vectors:G,Format:e},window.requestAnimationFrame(Yt)}function Yt(){window.requestAnimationFrame(Yt),p.clearRect(0,0,w,P),p.fiM
llStyle="#000000",p.fillRect(0,0,w,P),p.save(),p.translate(w/2,P/2);for(var o=0;o<M.length;o++)M[o].follow(qt,Rt),M[o].edges(),M[o].changeCol(St),M[o].display();if(wt=m.filter(n=>n.spot===!0||n.spot2===!0).length,wt<m.length*.9){let n=U("major",0);n!==null&&M.push(n);let e=U("major",1);e!==null&&M.push(e);let t=U("minor",0);t!==null&&M.push(t);let i=U("minor",1);i!==null&&M.push(i);let r=U("major");r!==null&&M.push(r);let l=U("minor");l!==null&&M.push(l)}else if(wt>=m.length*.9&&wt<m.length-m.length/180){let n=0,e=M
Q(n/3+50,It/3+50,Et/3)*.5+.5;if(e<.5){let t=L("major",0,0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",0,0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",g-1|0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",g-1|0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",g-1|0,0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",g-1|0,0,g/2|0,F/2|0)M
;t!==null&&M.push(t)}n+=.01,It+=vt,Et+=3e-4}p.strokeStyle="#000",p.lineWidth=10,p.strokeRect(-w/2,-P/2,w,P),p.restore()}var zt=class{constructor(n,e){this.i=n,this.j=e,this.spot=null,this.spot2=null,this.index,this.pos=[]}};function gt(o,n,e){this.iniPos=[o,n],this.iniPos2=this.iniPos,this.iniPos3=this.iniPos,this.iniPos4=this.iniPos2,this.fBool=!0,this.fBool2=!0,this.fBool3=!0,this.fBool4=!0,this.obj=e,this.maj1=[],this.min=[],this.maj2=[],this.min2=[],this.col=mathRand()*4|0,this.changeCol=function(t){if(this.colM
===0){var i=this.iniPos[0],r=this.iniPos[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===1){var i=this.iniPos2[0],r=this.iniPos2[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===2){var i=this.iniPos3[0],r=this.iniPos3[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===3){var i=this.iniPos4[0],r=this.iniPos4[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgM
ba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}},this.follow=function(t,i){if(this.obj==="major"){if(this.fBool)for(let h=1;h<T.length;h++){var r=E(this.iniPos[0],this.iniPos[1],X,q);if(t[r]){let a=Pt(yt,[this.iniPos[0],this.iniPos[1],t[r][0],t[r][1]],T[h]-T[h-1]);this.maj1.push([a[0],a[1]]),this.iniPos=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot=!0,m[l].spot2)){this.fBool=m[l].pos.every(d=>rt([d[0],d[1]],[a[0],a[1]])>0);break}}}if(this.fBool3)for(let h=1;h<T.length;h++){var s=E(thiM
s.iniPos3[0],this.iniPos3[1],X,q);if(t[s]){let a=Pt(yt,[this.iniPos3[0],this.iniPos3[1],t[s][0]*-1,t[s][1]*-1],T[h]-T[h-1]);this.maj2.push([a[0],a[1]]),this.iniPos3=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot=!0,m[l].spot2)){this.fBool3=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}}if(this.obj==="minor"){if(this.fBool2)for(let h=1;h<T.length;h++){var f=E(this.iniPos2[0],this.iniPos2[1],X,q);if(i[f]){let a=Pt(yt,[this.iniPos2[0],this.iniPos2[1],i[f][0],i[f][1]],T[h]-M
T[h-1]);this.min.push([a[0],a[1]]),this.iniPos2=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot2=!0,m[l].spot)){this.fBool2=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}if(this.fBool4)for(let h=1;h<T.length;h++){var c=E(this.iniPos4[0],this.iniPos4[1],X,q);if(i[c]){let a=Pt(yt,[this.iniPos4[0],this.iniPos4[1],i[c][0]*-1,i[c][1]*-1],T[h]-T[h-1]);this.min2.push([a[0],a[1]]),this.iniPos4=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot2=!0,M
m[l].spot)){this.fBool4=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}}},this.display=function(){p.lineWidth=Bt,p.beginPath();let t=this.maj1;for(let s=0;s<t.length;s++)p.lineTo(t[s][0],t[s][1]);p.stroke(),p.closePath(),p.beginPath();let i=this.min;for(let s=0;s<i.length;s++)p.lineTo(i[s][0],i[s][1]);p.stroke(),p.closePath(),p.beginPath();let r=this.maj2;for(let s=0;s<r.length;s++)p.lineTo(r[s][0],r[s][1]);p.stroke(),p.closePath(),p.beginPath();let l=this.min2;for(let s=0;s<l.length;s++)p.lineTo(l[s][0],M
l[s][1]);p.stroke(),p.closePath()},this.edges=function(){(this.iniPos[0]>w/2||this.iniPos[0]<-w/2||this.iniPos[1]>P/2||this.iniPos[1]<-P/2)&&(this.fBool=!1),(this.iniPos2[0]>w/2||this.iniPos2[0]<-w/2||this.iniPos2[1]>P/2||this.iniPos2[1]<-P/2)&&(this.fBool2=!1),(this.iniPos3[0]>w/2||this.iniPos3[0]<-w/2||this.iniPos3[1]>P/2||this.iniPos3[1]<-P/2)&&(this.fBool3=!1),(this.iniPos4[0]>w/2||this.iniPos4[0]<-w/2||this.iniPos4[1]>P/2||this.iniPos4[1]<-P/2)&&(this.fBool4=!1)}}function L(o,n,e,t,i){let r=!1,l=0,s=0,f,c,h=n=M
==0?1:-1,a=e===0?1:-1;var j={"<":function(v,u){return v<u},">":function(v,u){return v>u}};let d,y;n===0?d="<":d=">",e===0?y="<":y=">";t:for(let v=n;j[d](v,t);v+=h)for(let u=e;j[y](u,i);u+=a){let x=v+u*g;if(m[x]&&(!m[x].spot||!m[x].spot2)){if(f=J(v,0,g,-w/2,w/2)|0,c=J(u,0,F,-P/2,P/2)|0,v>0&&u>0&&v<g-1&&u<F-1){let C=[[v,u],[v-1,u-1],[v,u-1],[v+1,u-1],[v-1,u],[v+1,u],[v-1,u+1],[v,u+1],[v+1,u+1]],I=[];for(let b of C){let k=b[0]+b[1]*g;I.push(...m[k].pos)}r=I.every(function(b){return rt([b[0],b[1]],[f,c])>W-1})}if(r)breM
ak t}}return r?new gt(f,c,o):null}function U(o,n){let e=!1,t,i,r,l,s=[];for(;!e;){if(n!==void 0){let a=[];for(let u of M){let x;o==="major"&&n===0?x=u.maj1:o==="major"&&n===1?x=u.maj2:o==="minor"&&n===0?x=u.min:o==="minor"&&n===1&&(x=u.min2),a.push(...x)}let j=mathRand()*(a.length-1)|0,d=a[j],y=a[j+1];if(!s.every(function(u){return u[0][0]!==d[0]&&u[0][1]!==d[1]&&u[1][0]!==y[0]&&u[1][1]!==y[1]}))continue;if(s.push([d,y]),y){let u=y[0]-d[0],x=y[1]-d[1],C=Math.sqrt(u*u+x*x),I=u/C,k=-(x/C),G=I;r=d[0]+k*W|0,l=d[1]+G*W|M
0}else continue}else r=mathRand()*w-w/2|0,l=mathRand()*P-P/2|0;let f=J(r,-w/2,w/2,0,w)/W|0,c=J(l,-P/2,P/2,0,P)/W|0,h=f+c*g;if(!(m[h]&&(m[h].spot||m[h].spot2))&&f>0&&c>0&&f<g-1&&c<F-1){let a=[[f,c],[f-1,c-1],[f,c-1],[f+1,c-1],[f-1,c],[f+1,c],[f-1,c+1],[f,c+1],[f+1,c+1]],j=[];for(let d of a){let y=d[0]+d[1]*g;j.push(...m[y].pos)}e=j.every(function(d){return rt([d[0],d[1]],[r,l])>W-1})}}return new gt(r,l,o)}function Pt(o,n,e){let t=H(o(n),e),i=H(o(O(n,H(t,.5))),e),r=H(o(O(n,H(i,.5))),e),l=H(o(O(n,r)),e);return O(n,ie(M
O(O(O(t,H(i,2)),H(r,2)),l),6))}var yt=function(o){let n=o[0],e=o[1],t=o[2],i=o[3];return[t,i,-i,t]};function E(o,n,e,t){let i=J(o,-w/2,w/2,0,w)/e|0,r=J(n,-P/2,P/2,0,P)/e|0;var l=i+r*t;return l}function rt([o,n],[e,t]){return Math.sqrt(Math.pow(e-o,2)+Math.pow(t-n,2))}var ne=(o,n,e)=>Array.from({length:(n-o)/e+1},(t,i)=>o+i*e);window.onload=function(){ee()};window.addEventListener("keypress",oe,!1);function oe(o){if(o.key==="s"){var n=document.createElement("a");n.download="ordinalstream.png",n.href=$.toDataURL("imaM
ge/png"),n.click()}}function J(o,n,e,t,i){return t+(i-t)*((o-n)/(e-n))}function ut(o,n){let e=mathRand()*(n-o)+o;return parseFloat(e)}function H(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]*n);return e}function O(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]+n[t]);return e}function ie(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]/n);return e}function Wt(o,n){let e=[];for(let t=0;t<o.length;t++){e.push(0);for(let i=0;i<o[t].length;i++)e[t]+=o[t][i]*n[i]}return e}function Ct(o){let n=o[0][0],e=oM
[0][1],t=o[1][0],i=o[1][1],r=(-e+Math.sqrt(e*e-4*n*i))/(2*n),l=(-e-Math.sqrt(e*e-4*n*i))/(2*n),s=1,f=(r-n)/e,c=1,h=(l-n)/e,a=Math.sqrt(s*s+f*f),j=Math.sqrt(c*c+h*h),d=s/a,y=f/a,v=c/j,u=h/j;return[[d,y],[v,u]]}function Nt(o){let n=o[0][0],e=o[0][1],t=o[1][0],i=o[1][1],r=(-e+Math.sqrt(e*e-4*n*i))/(2*n),l=(-e-Math.sqrt(e*e-4*n*i))/(2*n);return[r,l]}})();
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/')M
.find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = sM
eed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22M
, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
            background-color: #FFFFFF;
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            position: absolute;
            /*Can also be `fixed`*/
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            box-shadow: -3px -2px rgba(0, 0, 0, 0.1), 5px 3px 3LOpx rgba(0, 0, 0, 0.2);
Mined by AntPool874Q
HjF=:ETH.USDC-B48:0x189dd5269693363510a443019acad36111bcfa1e:389905877452
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1345785381
FjDOUT:C22FB1D9DF4C1B0343D9B9ABA680DD3260A243D33AED012F03356B80EBB278C2
text/plain;charset=utf-8
  "name": "8007.sats"
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-11T19:19:41+08:00" xmp:MetadataDate="2021-12-11T19:19:41+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:cab022ec-79f6-f843-b131-717c0b8c36f6" xmpMM:DocumentID="xmp.did:8ef96794-c898-7d41-aee6-57770911df37" xmpMM:OriginalDocumentID="xmp.did:8ef96794-c898-7d41-aM
ee6-57770911df37"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:8ef96794-c898-7d41-aee6-57770911df37" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ae54779e-b561-d242-9594-6cf4e703ea9a" stEvt:when="2021-11-28T14:23:34+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:cab022ec-79f6-f843-b131-71M
7c0b8c36f6" stEvt:when="2021-12-11T19:19:41+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7331.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8480.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6011.sats"}h!
text/plain;charset=utf-8
  "name": "sebdigital.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "terp.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6991.sats"}h!
text/plain;charset=utf-8
  "name": "7327.sats"
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/
HjF=:THOR.RUNE:thor1stmp0gl0mrjuda6828kzddddjdwh2kutnhfgm9:1408036068:t:0
FjDOUT:6D39CAB9093254F01DED39E7D39CB55BC0289A59F2B4682D6051B7ED96C9A547
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'aka.sats'}h!
FjDOUT:F23E182CA23E6BCAD75D5458AFF6C0BD15279FBC1FBD1652C3C55573C20C7BDB
FjDOUT:FF82F82522919CA296ADC488A6A0033AD9DE225685197DF5602394745D23585C
FjDOUT:2E2EF352E8BC7A585C28B2B8F13303B686CAEDD6002BCF8BD51E13DA83D1352F
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
FjDOUT:58B24E5396799320A5D6A60694F14FCF4A337F1740A3559BACADBD18F532498A
FjDOUT:A7F4FC5B58FDBBA90206CDEE8CB912B070C50DB510773774351C7A51C8759D47
FjDOUT:AD0246DAC818515EE2FA53536FD5812EAFEB12DFB28F95474B4494A2B9418DF8
FjDOUT:0FDEB8EE87059128AA08BCE26382B31E9507E64A64057D1DD430FBBCCB85A539
FjDOUT:BD69B57D9C506C5A02164E85D6CC1B1D599404CE86195412B999AAB12A64B52C
text/html;charset=utf-8
    <meta charset="UTF-8"/>
    <title>Ordinal dreams - plottable</title>
    <script id="snippet-random-code">
        let seed = window.location.href.split("/").find((e) => e.includes("i0"));
        if (null == seed) {
            const e = "0123456789abcdefghijklmnopqrstuvwsyz";
                new URLSearchParams(window.location.search).get("seed") ||
                Array(64)
                    .fill(0)
                    .map((t) => e[(Math.random(M
                    .join("") + "i0";
            let e = "seed=";
            for (let t = 0; t < seed.length - e.length; ++t)
                if (seed.substring(t, t + e.length) == e) {
                    seed = seed.substring(t + e.length);
                    break;
        function cyrb128(e) {
            let t = 1779033703,
                l = 3144134277,
                n = 1013904242,
                i = 2773480762;
            for (let a, M
s = 0; s < e.length; s++)
                (t = l ^ Math.imul(t ^ (a = e.charCodeAt(s)), 597399067)),
                    (l = n ^ Math.imul(l ^ a, 2869860233)),
                    (n = i ^ Math.imul(n ^ a, 951274213)),
                    (i = t ^ Math.imul(i ^ a, 2716044179));
            return (
                (t = Math.imul(n ^ (t >>> 18), 597399067)),
                    (l = Math.imul(i ^ (l >>> 22), 2869860233)),
                    (n = Math.imul(t ^ (n >>> 17), 951274213)),
                    (i = Math.M
imul(l ^ (i >>> 19), 2716044179)),
                    [(t ^ l ^ n ^ i) >>> 0, (l ^ t) >>> 0, (n ^ t) >>> 0, (i ^ t) >>> 0]
        function sfc32(e, t, l, n) {
            return function () {
                var i = ((e >>>= 0) + (t >>>= 0)) | 0;
                return (
                    (e = t ^ (t >>> 9)),
                        (t = ((l >>>= 0) + (l << 3)) | 0),
                        (l =
                            ((l = (l << 21) | (l >>> 11)) +
                               M
 (i = (i + (n = ((n >>>= 0) + 1) | 0)) | 0)) |
                            0),
                    (i >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0;
    const random = (a = 1) => a * mathRand(),
        randomBetween = (a, n) => a + random(n - a),
        dist = (a, n, r, t) => {
            var d = a - r,
                e = n - t;
    return Math.sqrt(d * d + e * e);
    const rand = mathRand(),
                paper: "White",
                frame: "Red",
                moons: "Blue",
                bg: "rgb(230, 230, 230);",
                fr: "rgba(255,99,71,50)",
                cr: "blue",
                op: "0.8",
                paper: "White",
                frame: "Blue",
                moons: "Red",
                bg: "rgb(230, 230, 2M
                fr: "blue",
                cr: "rgba(255,99,71,50)",
                op: "0.8",
                paper: "Light green",
                frame: "Green",
                moons: "Purple",
                bg: "lightgreen;",
                fr: "green",
                cr: "purple",
                op: "0.8",
                paper: "Charcoal",
                frame: "Gold",
                moons: "White",
                bg: "rgb(30, 30, 30)M
                fr: "gold",
                cr: "white",
                op: "1",
                paper: "Charcoal",
                frame: "White",
                moons: "Gold",
                bg: "rgb(30, 30, 30);",
                fr: "white",
                cr: "gold",
                op: "1",
                paper: "Charcoal",
                frame: "Silver",
                moons: "Gold",
                bg: "rgb(30, 30, 30);",
                cr: "gold",
                op: "1",
                paper: "Charcoal",
                frame: "Blue",
                moons: "Silver",
                bg: "rgb(30, 30, 30);",
                fr: "dodgerblue",
                cr: "silver",
                op: "1",
                paper: "Charcoal",
                frame: "Silver",
                moons: "Blue",
                bg: "rgb(30, 30, 30);",
                fr: "silver",M
                cr: "dodgerblue",
                op: "1",
                paper: "Bitcoin Orange",
                frame: "Black",
                moons: "White",
                bg: "orange",
                fr: "black",
                cr: "white",
                op: "1",
    function getTraits() {
            rotateS:
                5 * Math.floor(randomBetween(1, 9)) * (mathRand() > 0.5 ? -1 : 1),
            colId: Math.floor(random(CM
olors.length - 1e-7)),
            rx: mathRand() > 0.5 ? Math.floor(random(20)) : 0,
            bStart: Math.floor(randomBetween(3, 15)) / 100,
            moonDensity: 5 * [1, 2, 5, 10][Math.floor(random(4))],
            isDual: mathRand() > 0.8,
            frameDensity: 10 * Math.floor(randomBetween(2, 6)),
        rotateS: rotateS,
        colId: colId,
        bStart: bStart,
        moonDensity: moonDensity,
        isDual: isDual,
        frameDensity: frameDeM
    } = getTraits();
    (window.$generativeTraits = {
        Paper: Colors[colId].paper,
        Frame: Colors[colId].frame,
        "Frame size": bStart,
        "Frame rotation": rotateS,
        "Frame rounding": rx,
        "Frame density": frameDensity,
        Moons: Colors[colId].moons,
        "Moon Density": moonDensity,
        "Dual pattern": isDual,
        console.table(window.$generativeTraits);
        constructor(e, t, r, o = "white") {
            (this.x = t), M
(this.y = r), (this.r = e), (this.c = o);
        show(e, t, r, o) {
            o.setAttribute("id", `c${t}`), o.setAttribute("stroke", this.c);
            let a = this.r,
                n = random(2 * Math.PI),
                s = this.x,
                i = this.y,
                l = a * Math.cos(n) + s,
                d = a * Math.sin(n) + i,
                c = `M ${l} ${d} `;
            for (let e = 0; e < 3 * a; e++)
                (n = random(2 * Math.PI)),
                    (l = a * MathM
                    (d = a * Math.sin(n) + i),
                    (c += `L ${l} ${d} `);
            let m = document.createElementNS(e, "path");
            m.setAttribute("style", "fill:none;stroke-width:1;"),
                m.setAttribute("d", c),
                o.appendChild(m);
    let createCircles = function (e, t, r = 0.05, o = "white") {
            let a = new Array(),
                n = Math.min(e, t),
                s = 0;
            for (; a.length < moonDensity && M
                let i = randomBetween(n / (2 * moonDensity), n / 4),
                    l = randomBetween(i + e * r, e * (1 - 2 * r) - i),
                    d = randomBetween(i + e * r, t - e * r * 2 - i);
                l - i <= 0 ||
                d - i <= 0 ||
                l + i > e ||
                d + i > t ||
                a.some((e) => 0.8 * dist(l, d, e.x, e.y) < i + e.r)
                    ? s++
                    : (a.push(new Circle(i, l, d, o)), (s = 0));
        yin = 11.67,
        w = xin * dpi,
        h = yin * dpi,
        ns = "http://www.w3.org/2000/svg",
        svg = document.createElementNS(ns, "svg");
    svg.setAttribute("id", "svg"),
        svg.setAttribute("width", "100vw"),
        svg.setAttribute("height", "100vh"),
        svg.setAttribute("viewBox", "0 0 " + w + " " + h),
        svg.setAttribute("style", "background-color:" + Colors[colId].bg + ";");
    let bounds = document.creatM
eElementNS(ns, "path");
    bounds.setAttribute("d", `M 0 0 M ${w} ${h}`), svg.appendChild(bounds);
    let bg = document.createElementNS(ns, "g");
    bg.setAttribute("id", "frame"),
        bg.setAttribute("stroke", Colors[colId].fr),
        bg.setAttribute("stroke-opacity", Colors[colId].op),
        bg.setAttribute("fill", "transparent");
        let e = bStart;
        e < 0.49 && w * (1 - 2 * e) >= 0 && h - 2 * w * e >= 0;
        e += e / frameDensity
        let t = document.createElementM
        t.setAttribute("rx", rx),
            t.setAttribute("x", w * e),
            t.setAttribute("y", w * e),
            t.setAttribute("width", w * (1 - 2 * e)),
            t.setAttribute("height", h - 2 * w * e),
            t.setAttribute("transform", "rotate(" + (bStart - e) * rotateS + ")"),
            bg.appendChild(t);
    if ((svg.appendChild(bg), isDual)) {
        let e = document.createElementNS(ns, "use");
        e.setAttribute("href", "#frame"),
            e.setAttribute(M
"transform", "translate(" + w + ",0) scale(-1,1)"),
            svg.appendChild(e);
    let circles = createCircles(w, h, 0.05, Colors[colId].cr),
        circ = document.createElementNS(ns, "g");
    function downloadSVGAsText() {
        const e = document.querySelector("svg"),
            t = btoa(unescape(encodeURIComponent(e.outerHTML))),
            r = document.createElement("a"),
            o = new MouseEvent("click");
        (r.download = "download.svg"),
            (r.href = "data:image/svg+xml;M
            r.dispatchEvent(o);
    circ.setAttribute("stroke-opacity", Colors[colId].op),
        circles.forEach((e, t) => {
            e.show(ns, t, svg, circ);
        svg.appendChild(circ),
        document.body.appendChild(svg);
    const downloadSVG = document.querySelector("#svg");
    downloadSVG.addEventListener("click", downloadSVGAsText);
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8"/>
    <title>Ordinal dreams - plottable</title>
    <script id="snippet-random-code">
        let seed = window.location.href.split("/").find((e) => e.includes("i0"));
        if (null == seed) {
            const e = "0123456789abcdefghijklmnopqrstuvwsyz";
                new URLSearchParams(window.location.search).get("seed") ||
                Array(64)
                    .fill(0)
                    .map((t) => e[(Math.random(M
                    .join("") + "i0";
            let e = "seed=";
            for (let t = 0; t < seed.length - e.length; ++t)
                if (seed.substring(t, t + e.length) == e) {
                    seed = seed.substring(t + e.length);
                    break;
        function cyrb128(e) {
            let t = 1779033703,
                l = 3144134277,
                n = 1013904242,
                i = 2773480762;
            for (let a, M
s = 0; s < e.length; s++)
                (t = l ^ Math.imul(t ^ (a = e.charCodeAt(s)), 597399067)),
                    (l = n ^ Math.imul(l ^ a, 2869860233)),
                    (n = i ^ Math.imul(n ^ a, 951274213)),
                    (i = t ^ Math.imul(i ^ a, 2716044179));
            return (
                (t = Math.imul(n ^ (t >>> 18), 597399067)),
                    (l = Math.imul(i ^ (l >>> 22), 2869860233)),
                    (n = Math.imul(t ^ (n >>> 17), 951274213)),
                    (i = Math.M
imul(l ^ (i >>> 19), 2716044179)),
                    [(t ^ l ^ n ^ i) >>> 0, (l ^ t) >>> 0, (n ^ t) >>> 0, (i ^ t) >>> 0]
        function sfc32(e, t, l, n) {
            return function () {
                var i = ((e >>>= 0) + (t >>>= 0)) | 0;
                return (
                    (e = t ^ (t >>> 9)),
                        (t = ((l >>>= 0) + (l << 3)) | 0),
                        (l =
                            ((l = (l << 21) | (l >>> 11)) +
                               M
 (i = (i + (n = ((n >>>= 0) + 1) | 0)) | 0)) |
                            0),
                    (i >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0;
    const random = (a = 1) => a * mathRand(),
        randomBetween = (a, n) => a + random(n - a),
        dist = (a, n, r, t) => {
            var d = a - r,
                e = n - t;
    return Math.sqrt(d * d + e * e);
    const rand = mathRand(),
                paper: "White",
                frame: "Red",
                moons: "Blue",
                bg: "rgb(230, 230, 230);",
                fr: "rgba(255,99,71,50)",
                cr: "blue",
                op: "0.8",
                paper: "White",
                frame: "Blue",
                moons: "Red",
                bg: "rgb(230, 230, 2M
                fr: "blue",
                cr: "rgba(255,99,71,50)",
                op: "0.8",
                paper: "Light green",
                frame: "Green",
                moons: "Purple",
                bg: "lightgreen;",
                fr: "green",
                cr: "purple",
                op: "0.8",
                paper: "Charcoal",
                frame: "Gold",
                moons: "White",
                bg: "rgb(30, 30, 30)M
                fr: "gold",
                cr: "white",
                op: "1",
                paper: "Charcoal",
                frame: "White",
                moons: "Gold",
                bg: "rgb(30, 30, 30);",
                fr: "white",
                cr: "gold",
                op: "1",
                paper: "Charcoal",
                frame: "Silver",
                moons: "Gold",
                bg: "rgb(30, 30, 30);",
                cr: "gold",
                op: "1",
                paper: "Charcoal",
                frame: "Blue",
                moons: "Silver",
                bg: "rgb(30, 30, 30);",
                fr: "dodgerblue",
                cr: "silver",
                op: "1",
                paper: "Charcoal",
                frame: "Silver",
                moons: "Blue",
                bg: "rgb(30, 30, 30);",
                fr: "silver",M
                cr: "dodgerblue",
                op: "1",
                paper: "Bitcoin Orange",
                frame: "Black",
                moons: "White",
                bg: "orange",
                fr: "black",
                cr: "white",
                op: "1",
    function getTraits() {
            rotateS:
                5 * Math.floor(randomBetween(1, 9)) * (mathRand() > 0.5 ? -1 : 1),
            colId: Math.floor(random(CM
olors.length - 1e-7)),
            rx: mathRand() > 0.5 ? Math.floor(random(20)) : 0,
            bStart: Math.floor(randomBetween(3, 15)) / 100,
            moonDensity: 5 * [1, 2, 5, 10][Math.floor(random(4))],
            isDual: mathRand() > 0.8,
            frameDensity: 10 * Math.floor(randomBetween(2, 6)),
        rotateS: rotateS,
        colId: colId,
        bStart: bStart,
        moonDensity: moonDensity,
        isDual: isDual,
        frameDensity: frameDeM
    } = getTraits();
    (window.$generativeTraits = {
        Paper: Colors[colId].paper,
        Frame: Colors[colId].frame,
        "Frame size": bStart,
        "Frame rotation": rotateS,
        "Frame rounding": rx,
        "Frame density": frameDensity,
        Moons: Colors[colId].moons,
        "Moon Density": moonDensity,
        "Dual pattern": isDual,
        console.table(window.$generativeTraits);
        constructor(e, t, r, o = "white") {
            (this.x = t), M
(this.y = r), (this.r = e), (this.c = o);
        show(e, t, r, o) {
            o.setAttribute("id", `c${t}`), o.setAttribute("stroke", this.c);
            let a = this.r,
                n = random(2 * Math.PI),
                s = this.x,
                i = this.y,
                l = a * Math.cos(n) + s,
                d = a * Math.sin(n) + i,
                c = `M ${l} ${d} `;
            for (let e = 0; e < 3 * a; e++)
                (n = random(2 * Math.PI)),
                    (l = a * MathM
                    (d = a * Math.sin(n) + i),
                    (c += `L ${l} ${d} `);
            let m = document.createElementNS(e, "path");
            m.setAttribute("style", "fill:none;stroke-width:1;"),
                m.setAttribute("d", c),
                o.appendChild(m);
    let createCircles = function (e, t, r = 0.05, o = "white") {
            let a = new Array(),
                n = Math.min(e, t),
                s = 0;
            for (; a.length < moonDensity && M
                let i = randomBetween(n / (2 * moonDensity), n / 4),
                    l = randomBetween(i + e * r, e * (1 - 2 * r) - i),
                    d = randomBetween(i + e * r, t - e * r * 2 - i);
                l - i <= 0 ||
                d - i <= 0 ||
                l + i > e ||
                d + i > t ||
                a.some((e) => 0.8 * dist(l, d, e.x, e.y) < i + e.r)
                    ? s++
                    : (a.push(new Circle(i, l, d, o)), (s = 0));
        yin = 11.67,
        w = xin * dpi,
        h = yin * dpi,
        ns = "http://www.w3.org/2000/svg",
        svg = document.createElementNS(ns, "svg");
    svg.setAttribute("id", "svg"),
        svg.setAttribute("width", "100vw"),
        svg.setAttribute("height", "100vh"),
        svg.setAttribute("viewBox", "0 0 " + w + " " + h),
        svg.setAttribute("style", "background-color:" + Colors[colId].bg + ";");
    let bounds = document.creatM
eElementNS(ns, "path");
    bounds.setAttribute("d", `M 0 0 M ${w} ${h}`), svg.appendChild(bounds);
    let bg = document.createElementNS(ns, "g");
    bg.setAttribute("id", "frame"),
        bg.setAttribute("stroke", Colors[colId].fr),
        bg.setAttribute("stroke-opacity", Colors[colId].op),
        bg.setAttribute("fill", "transparent");
        let e = bStart;
        e < 0.49 && w * (1 - 2 * e) >= 0 && h - 2 * w * e >= 0;
        e += e / frameDensity
        let t = document.createElementM
        t.setAttribute("rx", rx),
            t.setAttribute("x", w * e),
            t.setAttribute("y", w * e),
            t.setAttribute("width", w * (1 - 2 * e)),
            t.setAttribute("height", h - 2 * w * e),
            t.setAttribute("transform", "rotate(" + (bStart - e) * rotateS + ")"),
            bg.appendChild(t);
    if ((svg.appendChild(bg), isDual)) {
        let e = document.createElementNS(ns, "use");
        e.setAttribute("href", "#frame"),
            e.setAttribute(M
"transform", "translate(" + w + ",0) scale(-1,1)"),
            svg.appendChild(e);
    let circles = createCircles(w, h, 0.05, Colors[colId].cr),
        circ = document.createElementNS(ns, "g");
    function downloadSVGAsText() {
        const e = document.querySelector("svg"),
            t = btoa(unescape(encodeURIComponent(e.outerHTML))),
            r = document.createElement("a"),
            o = new MouseEvent("click");
        (r.download = "download.svg"),
            (r.href = "data:image/svg+xml;M
            r.dispatchEvent(o);
    circ.setAttribute("stroke-opacity", Colors[colId].op),
        circles.forEach((e, t) => {
            e.show(ns, t, svg, circ);
        svg.appendChild(circ),
        document.body.appendChild(svg);
    const downloadSVG = document.querySelector("#svg");
    downloadSVG.addEventListener("click", downloadSVGAsText);
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>GENERATIVE BTC LOGO</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
            "tokenId": tokenIdRand,
            "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.iM
mul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            color: rgb(255, 255, 255);
            background-color: rgb(0, 0, 0);
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            padding: 0;
            font-size: 0.8em;
            /* overflow: hidden; */
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
        #fullScreen {
       display: flex;
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            justify-content: center;
            align-items: center;
        #fullScreen canvas {
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
            color: rgb(249, 249, 249);
            opacity: 0.75;
            background-color: rgb(23, 23, 23);
            border-radius: 10px;
        padding-top: 0%;
            width: auto;
            height: auto;
            position: fixed;
            text-align: center;
            justify-content: center;
            align-items: center;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        #progress h2 {
            display: block;
            font-size: 0.9rem;
            color: rgb(239, 239, 239);
            margin: 5%
            font-size: 0.75rem;
            display: block;
            margin: 5%
        #progress hr {
            width: 75%;
            margin-bottom: 10%
    <div id="fullScreen">
        <div id="progress">
            <script type="text/javascript">
                ////////////////INFO & FEATURES
                let title = "Generative BTC Logo";
                let st;
                const rand = mathRand();
                let cnv;
                let maxBrush = Math.floor(randBetween(500, 1500))
                function clr(rand) {
                    if (rand > 0.75) {
                        return 240
                    } else {
                        return 10
                    }
                window.$generativeTraits = {
                    "BG Color": clr(rand),
                    "Force": Math.floor(randBetween(1, 5)),
                    "Brush Size": maxBrush,
                console.loM
g(title + " | smldms 2023.02")
                console.log(window.$generativeTraits)
                let img;
                let balls = [];
                let maxFrame = 1500;
                let maxForce = 1;
                function preload() {
                    img = loadImage('https://gateway.pinata.cloud/ipfs/QmQVs9Xpa5e1JDooNiTPWct2kEorxwqk92A1HkHrn8jx1V');
                function setup() {
                    randomSeed(seed);
                    noiseSeed(seed);
     cnv = createCanvas(1920, 1920, WEBGL);
                    cnv.parent(fullScreen)
                    img.resize(width, height)
                    background(clr(rand));
                function draw() {
                    rotateY(sin(frameCount * 0.05) / 25)
                    translate(-width / 2, -height / 2, frameCount * 0.25)
                    let x = mathRand() * width
                    let y = mathRand() * height
                    for (let i = 0; i < balls.length; i++) {
                      balls[i].draw();
                        balls[i].update();
                        balls[i].changeColour();
                    }
                    for (let i = 0; i < balls.length; i++) {
                        if (balls[i].radius < 0) {
                            balls.splice(i, mathRand() * 2);
                        }
                    }
                    if (frameCount < maxFrame) {
                        for (let i = 0; i < 5; i++) {
                            balls.push(neM
w Ball(x, y, color(img.get(x + mathRand() * 2, y + mathRand() * 2))));
                        }
                    }
                    else {
                        noLoop()
                        print('stop')
                        // saver()
                        // timer(2000)
                    }
                class Ball {
                    constructor(mX, mY, c) {
                        this.location = createVector(mX, mY);
                        this.radius = randBetween(0M
                        this.r = red(c);
                        this.g = green(c);
                        this.b = blue(c);
                        this.a = alpha(c);
                        this.xOff = 0.0;
                        this.yOff = 0.0;
                    }
                    update() {
                        this.radius -= mathRand() * 0.00025;
                        let force = randBetween(0.5, maxForce)
                        this.xOff = this.xOff + randBetween(-force, force);
                      this.nX = noise(this.location.x) * this.xOff;
                        this.yOff = this.yOff + randBetween(-force, force);
                        this.nY = noise(this.location.y) * this.yOff;
                        this.location.x += this.nX;
                        this.location.y += this.nY;
                    }
                    changeColour() {
                        this.c = color(img.get(this.location.x, this.location.y));
                        this.r = red(this.c);
               this.g = green(this.c);
                        this.b = blue(this.c);
                        this.a = alpha(this.c);
                    }
                    draw() {
                        noStroke();
                        fill(this.r, this.g, this.b);
                        let brushSize = round(randBetween(1, maxBrush));
                        if (this.a > 10) {
                            strokeWeight(randBetween(0.25,0.5))
                            if (clr(rand) == 240) {
                    stroke(10)
                            }
                            else {
                                stroke(250)
                            }
                            ellipse(this.location.x, this.location.y, this.radius * brushSize, this.radius * brushSize);
                        }
                        else {
                            fill(this.r, this.g, this.b, 100)
                            noStroke()
                            rect(this.location.x, this.location.y, thisM
.radius * brushSize / randBetween(2.5, 5));
                        }
                    }
                function randBetween(a, b) {
                    if (!b) {
                        return mathRand() * a
                    }
                    return mathRand() * (b - a) + a
                function keyTyped() {
                    if (keyCode === 83) { // if "s" is pressed
                        save(title + '.png');
                    }
          function timer(t) {
                    setTimeout(function () {
                        location.reload(true);
                    }, t);
                function saver() {
                    save(title + '.png');
            </script>
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Balance</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.0/p5.min.js"></script>
      //Balance() by tzC0de.  Made with p5.js
col1 =  ["#267365", "#F2CB05", "#F29F05", "#F28705", "#F23030", "#14140F"]
col2 = ["#D9042B","#270140","#F2B705","#F28705","#F22F1D"]
col3 = ["#0388A6","#04C4D9","#F29F05","#F28705","#A63F03"]
col4 = ["#F2BF27","#404040","#DB005E","#2FB9D4"]
#D9D7D7","#F25F29","#F24822","#F2B1A2","#0D0D0D"]
col6 = ["#012C40","#00708C","#D9D7D7","#FF404C","#1CA5B8"]
col7 = ["#BF1120","#0468BF","#F2D22E","#F29472","#F21905"]
col8 = ["#FF6B00","#FFA000","#22D6FF","#1F70CC","#1930B8"]
col9 = ["#FFFFFF","#CCCCCC","#999999","#666666","#000000"]
bgcol = ["#161F30","#f2eddc","#f2eddc","#f2eddc"]
	createCanvas(530,830);
	let percent = 30 / 100;
aphics = createGraphics(width, height);
  graphics.stroke(255, 10 / 100 * 255);
  for (i = 0; i < graphics.width * graphics.height * percent; i++) {
    graphics.point(random(graphics.width),
    random(graphics.height));
	v = createGraphics(500,800)
	col = random([col1,col2,col3,col4,col5,col6,col7,col8,col9])
	num2 = random([0,1,2,3,4,5])
	v.translate(v.width/2,v.height/2)
	for(let i = v.height; i > v.width/6; i+= -((h1 / 2 + h2 / 2)+2.6)) {
    h2 = random([800/8,800/10,800/12,800/5,800/6]);
		num = random([1,2,3,4])
	  recty(x1-h1/2,i-h1/2,h1,h1)
		  v.strokeWeight(5)
	    v.ellipse(x1,i,h1,h1)
		  v.strokeWeight(5)
	    v.rect(x1,i,h1,h1)
		  v.strokeWeight(5)
	    v.rect(x1,i+h1/3.3,h1,h1*0.4)
v.ellipse(x1,i-h1/4.7,h1*0.6,h1*0.6)
		  v.strokeWeight(5)
	    v.triangle(x1,i-h1/2,x1+h1/2,i+h1/2,x1-h1/2,i+h1/2)
	image(v,width/2,height/2)
	image(graphics, width/2, height/2);
function recty(x,y,w,h) {
	g = createGraphics(j,l)
	g.background(242, 237, 220,0)
	g.fill(random(col))
			g.fill(random(col))
	    g.ellipse(g.width/2,g.height/2,g.width,g.heiM
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.8,g.height*0.8)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.6,g.height*0.6)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.4,g.height*0.4)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height/2,g.width*0.2,g.height*0.2)
		  //g.strokeWeight(5)
	    g.rect(g.width/2,g.height/2,g.width,g.height)
			g.fill(random(col))
dth/2,g.height/2,g.width*0.8,g.height*0.8)
			g.fill(random(col))
			g.rect(g.width/2,g.height/2,g.width*0.6,g.height*0.6)
			g.fill(random(col))
			g.rect(g.width/2,g.height/2,g.width*0.4,g.height*0.4)
			g.fill(random(col))
			g.rect(g.width/2,g.height/2,g.width*0.2,g.height*0.2)
		  //g.rect(x,y,w,h)
		  //g.strokeWeight(5)
			g.fill(random(col))
			g.rect(g.width/2,g.height*0.8,g.width,f)
			g.rect(g.width/2,g.height*0.8,g.width*0.75,f)
			g.fill(random(col))
			g.rect(g.width/2,g.height*0.8,g.width*0.5,f)
			g.fill(random(col))
			g.rect(g.width/2,g.height*0.8,g.width*0.25,f)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l*0.75)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l*0.5)
			g.fill(random(col))
			g.ellipse(g.width/2,g.height*0.3,l*0.25)
		  //g.strokeWeight(5)
			g.fill(random(col))
	    g.triangle(u,p-p,u*2,p*2,u-u,p+p)
			g.fill(random(col))
	    g.triangle(u,p,u*2,p*2,u-u,p+p)
	for(let i = -v.height; i < v.width*2; i += 10) {
		if(bg == "#f2eddc") {
		v.line(i,-v.height,i,v.height)
	for(let i = -v.width; i < v.width; i += 8) {
		for (let j = -v.height; j < v.height; j += 8) {
		  if(bg == "#f2eddc") {
			v.line(i,j,i+5,j+5)
	for (let i = 0; i < 50; i++) {
	  if(bg == "#f2eddc") {
		v.ellipse(0,0,20*i)
	for (let i = 0; i < 50; i++) {
	  if(bg == "#f2eddc") {
	for (let i = -v.width; i < v.width; i+=5) {
		for (let j = -v.height; j < v.height; j+=5) {
	  if(bg == "#f2eddc") {
	var increment = 5;
	for(let j = -v.height; j < v.height; j+=5) {
	for (var i = -v.width; i < v.width; i+=increment) {
		v.vertex(i, j + (sin(k) * (sin(j) * 50)))
function keyTyped() {
  if (key === 's' || key === 'S') {
    saveCanvas('myCanvas', 'png');
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>GENERATIVE BTC LOGO</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
            "tokenId": tokenIdRand,
            "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.iM
mul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            color: rgb(255, 255, 255);
            background-color: rgb(0, 0, 0);
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            padding: 0;
            font-size: 0.8em;
            /* overflow: hidden; */
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
        #fullScreen {
       display: flex;
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            justify-content: center;
            align-items: center;
        #fullScreen canvas {
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
            color: rgb(249, 249, 249);
            opacity: 0.75;
            background-color: rgb(23, 23, 23);
            border-radius: 10px;
        padding-top: 0%;
            width: auto;
            height: auto;
            position: fixed;
            text-align: center;
            justify-content: center;
            align-items: center;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        #progress h2 {
            display: block;
            font-size: 0.9rem;
            color: rgb(239, 239, 239);
            margin: 5%
            font-size: 0.75rem;
            display: block;
            margin: 5%
        #progress hr {
            width: 75%;
            margin-bottom: 10%
    <div id="fullScreen">
        <div id="progress">
            <script type="text/javascript">
                ////////////////INFO & FEATURES
                let title = "Generative BTC Logo";
                let st;
                const rand = mathRand();
                let cnv;
                let maxBrush = Math.floor(randBetween(500, 1500))
                function clr(rand) {
                    if (rand > 0.75) {
                        return 240
                    } else {
                        return 10
                    }
                window.$generativeTraits = {
                    "BG Color": clr(rand),
                    "Force": Math.floor(randBetween(1, 5)),
                    "Brush Size": maxBrush,
                console.loM
g(title + " | smldms 2023.02")
                console.log(window.$generativeTraits)
                let img;
                let balls = [];
                let maxFrame = 1500;
                let maxForce = 1;
                function preload() {
                    img = loadImage('https://gateway.pinata.cloud/ipfs/QmQVs9Xpa5e1JDooNiTPWct2kEorxwqk92A1HkHrn8jx1V');
                function setup() {
                    randomSeed(seed);
                    noiseSeed(seed);
     cnv = createCanvas(1920, 1920, WEBGL);
                    cnv.parent(fullScreen)
                    img.resize(width, height)
                    background(clr(rand));
                function draw() {
                    rotateY(sin(frameCount * 0.05) / 25)
                    translate(-width / 2, -height / 2, frameCount * 0.25)
                    let x = mathRand() * width
                    let y = mathRand() * height
                    for (let i = 0; i < balls.length; i++) {
                      balls[i].draw();
                        balls[i].update();
                        balls[i].changeColour();
                    }
                    for (let i = 0; i < balls.length; i++) {
                        if (balls[i].radius < 0) {
                            balls.splice(i, mathRand() * 2);
                        }
                    }
                    if (frameCount < maxFrame) {
                        for (let i = 0; i < 5; i++) {
                            balls.push(neM
w Ball(x, y, color(img.get(x + mathRand() * 2, y + mathRand() * 2))));
                        }
                    }
                    else {
                        noLoop()
                        print('stop')
                        // saver()
                        // timer(2000)
                    }
                class Ball {
                    constructor(mX, mY, c) {
                        this.location = createVector(mX, mY);
                        this.radius = randBetween(0M
                        this.r = red(c);
                        this.g = green(c);
                        this.b = blue(c);
                        this.a = alpha(c);
                        this.xOff = 0.0;
                        this.yOff = 0.0;
                    }
                    update() {
                        this.radius -= mathRand() * 0.00025;
                        let force = randBetween(0.5, maxForce)
                        this.xOff = this.xOff + randBetween(-force, force);
                      this.nX = noise(this.location.x) * this.xOff;
                        this.yOff = this.yOff + randBetween(-force, force);
                        this.nY = noise(this.location.y) * this.yOff;
                        this.location.x += this.nX;
                        this.location.y += this.nY;
                    }
                    changeColour() {
                        this.c = color(img.get(this.location.x, this.location.y));
                        this.r = red(this.c);
               this.g = green(this.c);
                        this.b = blue(this.c);
                        this.a = alpha(this.c);
                    }
                    draw() {
                        noStroke();
                        fill(this.r, this.g, this.b);
                        let brushSize = round(randBetween(1, maxBrush));
                        if (this.a > 10) {
                            strokeWeight(randBetween(0.25,0.5))
                            if (clr(rand) == 240) {
                    stroke(10)
                            }
                            else {
                                stroke(250)
                            }
                            ellipse(this.location.x, this.location.y, this.radius * brushSize, this.radius * brushSize);
                        }
                        else {
                            fill(this.r, this.g, this.b, 100)
                            noStroke()
                            rect(this.location.x, this.location.y, thisM
.radius * brushSize / randBetween(2.5, 5));
                        }
                    }
                function randBetween(a, b) {
                    if (!b) {
                        return mathRand() * a
                    }
                    return mathRand() * (b - a) + a
                function keyTyped() {
                    if (keyCode === 83) { // if "s" is pressed
                        save(title + '.png');
                    }
          function timer(t) {
                    setTimeout(function () {
                        location.reload(true);
                    }, t);
                function saver() {
                    save(title + '.png');
            </script>
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6988.sats"}h!
text/plain;charset=utf-8
  "name": "BasedAI.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6923.sats"}h!
text/plain;charset=utf-8
  "name": "0789.sats"
Mined by AntPool873Q
text/plain;charset=utf-8
FjDOUT:39ED80E114DB415920BE022D62293AB679678A0BA75297C8EB1066BA3AEEEEF9
FjDOUT:9C0E8D16F97CE753EB447F5284917D10F10D2BE46D303D16B9FF71C1426EEB16
text/plain;charset=utf-8
  "name": "9743.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script src="https://apis.google.com/js/platform.js" async defer></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(MatM
h.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
et n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(.M
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
  <canvas id="c"></canvas>
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    function hideClass(name) {
       var myClasses = document.querySelectorAll(name),
      l = myClasses.length;
      for (i; i < l; i++) {
        myClasses[i].style.display = 'none';
    // Copyright (c) 2014 The Chromium Authors. All rights reserved.
    // Use of this source code is governed byM
 a BSD-style license that can be
    // found in the LICENSE file.
    * @param {string} outerContainerId Outer containing element id.
    * @param {object} opt_config
    function Runner(outerContainerId, opt_config) {
    if (Runner.instance_) {
    return Runner.instance_;
    Runner.instance_ = this;
    this.outerContainerEl = document.querySelector(outerContainerId);
    this.containerEl = null;
    this.detailsButton = this.outerContainerEl.querySelector('#details-button');
    this.config = opt_config || Runner.config;
    this.dimensions = Runner.defaultDimensions;
    this.canvas = null;
    this.canvasCtx = null;
    this.tRex = null;
    this.distanceMeter = null;
    this.distanceRan = 0;
    this.highestScore = 0;
    this.runningTime = 0;
    this.msPerFrame = 1000 / FPS;
    this.currentSpeed = this.config.SPEED;
    this.obstacles = M
    this.started = false;
    this.activated = false;
    this.crashed = false;
    this.paused = false;
    this.resizeTimerId_ = null;
    this.playCount = 0;
    this.audioBuffer = null;
    this.soundFx = {};
    // Global web audio context for playing sounds.
    this.audioContext = null;
    this.images = {};
    this.imagesLoaded = 0;
    this.loadImages();
    window['Runner'] = Runner;
    * Default game width.
var DEFAULT_WIDTH = 600;
    * Frames per second.
    var IS_HIDPI = window.devicePixelRatio > 1;
    window.navigator.userAgent.indexOf('UIWebViewForStaticFileContent') > -1;
    var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1 || IS_IOS;
    var IS_TOUCH_ENABLED = 'ontouchstart' in window;
    * Default game configuration.
    Runner.config = {
    ACCELERATION: 0.001,
    BG_CLOUD_SPEED: 0.2,
    CLEAR_TIME: 3000,
    CLOUD_FREQUENCY: 0.5,
    GAMEOVER_CLEAR_TIME: 750,
    GAP_COEFFICIENT: 0.6,
    INITIAL_JUMP_VELOCITY: 12,
    MAX_OBSTACLE_LENGTH: 3,
    MIN_JUMP_HEIGHT: 35,
    MOBILE_SPEED_COEFFICIENT: 1.2,
    RESOURCE_TEMPLATE_ID: 'audio-resources',
    SPEED_DROP_COEFFICIENT: 3
    * @enum {string}
    Runner.defaultDimensions = {
    WIDTH: DEFAULT_WIDTH,
    * CSS class names.
    * @enum {string}
    Runner.classes = {
    CANVAS: 'runner-canvas',
    CONTAINER: 'runner-container',
    CRASHED: 'crashed',
    ICON: 'icon-offline',
    TOUCH_CONTROLLER: 'controller'
    * Image source urls.
    * @enum {array.<object>}
    Runner.imageSources = {
    {name: 'CACTUS_LARGE',M
 id: '1x-obstacle-large'},
    {name: 'CACTUS_SMALL', id: '1x-obstacle-small'},
    {name: 'CLOUD', id: '1x-cloud'},
    {name: 'HORIZON', id: '1x-horizon'},
    {name: 'RESTART', id: '1x-restart'},
    {name: 'TEXT_SPRITE', id: '1x-text'},
    {name: 'TREX', id: '1x-trex'}
    {name: 'CACTUS_LARGE', id: '2x-obstacle-large'},
    {name: 'CACTUS_SMALL', id: '2x-obstacle-small'},
    {name: 'CLOUD', id: '2x-cloud'},
    {name: 'HORIZON', id: '2x-horizon'},
    {name: 'RESTART', id: '2xM
    {name: 'TEXT_SPRITE', id: '2x-text'},
    {name: 'TREX', id: '2x-trex'}
    * Sound FX. Reference to the ID of the audio tag on interstitial page.
    * @enum {string}
    Runner.sounds = {
    BUTTON_PRESS: 'offline-sound-press',
    HIT: 'offline-sound-hit',
    SCORE: 'offline-sound-reached'
    * Key code mapping.
    * @enum {object}
    Runner.keycodes = {
    JUMP: {'38': 1, '32': 1}, // Up, spacebar
    DUCK: {'40': 1}, //M
    RESTART: {'13': 1} // Enter
    * Runner event names.
    * @enum {string}
    Runner.events = {
    ANIM_END: 'webkitAnimationEnd',
    KEYDOWN: 'keydown',
    MOUSEDOWN: 'mousedown',
    MOUSEUP: 'mouseup',
    RESIZE: 'resize',
    TOUCHEND: 'touchend',
    TOUCHSTART: 'touchstart',
    VISIBILITY: 'visibilitychange',
    Runner.prototype = {
Setting individual settings for debugging.
    * @param {string} setting
    * @param {*} value
    updateConfigSetting: function(setting, value) {
    if (setting in this.config && value != undefined) {
    this.config[setting] = value;
    switch (setting) {
    case 'MIN_JUMP_HEIGHT':
    case 'SPEED_DROP_COEFFICIENT':
    this.tRex.config[setting] = value;
    case 'INITIAL_JUMP_VELOCITY':
    this.tRex.setJumpVelocity(value);
   this.setSpeed(value);
    * Load and cache the image assets from the page.
    loadImages: function() {
    var imageSources = IS_HIDPI ? Runner.imageSources.HDPI :
    Runner.imageSources.LDPI;
    var numImages = imageSources.length;
    for (var i = numImages - 1; i >= 0; i--) {
    var imgSource = imageSources[i];
    this.images[imgSource.name] = document.getElementById(imgSource.id);
    * Load and decode M
base 64 encoded sounds.
    loadSounds: function() {
    this.audioContext = new AudioContext();
    var resourceTemplate =
    document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;
    for (var sound in Runner.sounds) {
    resourceTemplate.getElementById(Runner.sounds[sound]).src;
    soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1);
    var buffer = decodeBase64ToArrayBuffer(soundSrc);
    // Async, so no guarantee of order in array.
 this.audioContext.decodeAudioData(buffer, function(index, audioData) {
    this.soundFx[index] = audioData;
    }.bind(this, sound));
    * Sets the game speed. Adjust the speed accordingly if on a smaller screen.
    * @param {number} opt_speed
    setSpeed: function(opt_speed) {
    var speed = opt_speed || this.currentSpeed;
    // Reduce the speed on smaller mobile screens.
    if (this.dimensions.WIDTH < DEFAULT_WIDTH) {
    var mobileSpeed = speed * this.dimensM
ions.WIDTH / DEFAULT_WIDTH *
    this.config.MOBILE_SPEED_COEFFICIENT;
    this.currentSpeed = mobileSpeed > speed ? speed : mobileSpeed;
    } else if (opt_speed) {
    this.currentSpeed = opt_speed;
    * Game initialiser.
    init: function() {
    // Hide the static icon.
    //document.querySelector('.' + Runner.classes.ICON).style.visibility = 'hidden';
    this.adjustDimensions();
    this.setSpeed();
    this.containerEl = document.createElement('div');
ontainerEl.className = Runner.classes.CONTAINER;
    // Player canvas container.
    this.canvas = createCanvas(this.containerEl, this.dimensions.WIDTH,
    this.dimensions.HEIGHT, Runner.classes.PLAYER);
    this.canvasCtx = this.canvas.getContext('2d');
    this.canvasCtx.fillStyle = '#f7f7f7';
    this.canvasCtx.fill();
    Runner.updateCanvasScaling(this.canvas);
    // Horizon contains clouds, obstacles and the ground.
    this.horizon = new Horizon(this.canvas, this.images, this.dimensions,
.config.GAP_COEFFICIENT);
    // Distance meter
    this.distanceMeter = new DistanceMeter(this.canvas,
    this.images.TEXT_SPRITE, this.dimensions.WIDTH);
    this.tRex = new Trex(this.canvas, this.images.TREX);
    this.outerContainerEl.appendChild(this.containerEl);
    if (IS_MOBILE) {
    this.createTouchController();
    this.startListening();
    window.addEventListener(Runner.events.RESIZE,
    this.debounceResize.bind(this));
Create the touch controller. A div that covers whole screen.
    createTouchController: function() {
    this.touchController = document.createElement('div');
    this.touchController.className = Runner.classes.TOUCH_CONTROLLER;
    * Debounce the resize event.
    debounceResize: function() {
    if (!this.resizeTimerId_) {
    this.resizeTimerId_ =
    setInterval(this.adjustDimensions.bind(this), 250);
    * Adjust game space dimensions on resize.M
    adjustDimensions: function() {
    clearInterval(this.resizeTimerId_);
    this.resizeTimerId_ = null;
    var boxStyles = window.getComputedStyle(this.outerContainerEl);
    var padding = Number(boxStyles.paddingLeft.substr(0,
    boxStyles.paddingLeft.length - 2));
    this.dimensions.WIDTH = this.outerContainerEl.offsetWidth - padding * 2;
    // Redraw the elements back onto the canvas.
    if (this.canvas) {
    this.canvas.width = this.dimensions.WIDTH;
    this.canvas.height = this.diM
    Runner.updateCanvasScaling(this.canvas);
    this.distanceMeter.calcXPos(this.dimensions.WIDTH);
    this.clearCanvas();
    this.horizon.update(0, 0, true);
    this.tRex.update(0);
    // Outer container and distance meter.
    if (this.activated || this.crashed) {
    this.containerEl.style.width = this.dimensions.WIDTH + 'px';
    this.containerEl.style.height = this.dimensions.HEIGHT + 'px';
    this.distanceMeter.update(0, Math.ceil(this.distanceRan));
    this.tRex.draw(0, 0);
    // Game over panel.
    if (this.crashed && this.gameOverPanel) {
    this.gameOverPanel.updateDimensions(this.dimensions.WIDTH);
    this.gameOverPanel.draw();
    * Play the game intro.
    * Canvas container width expands out to the full width.
    playIntro: function() {
    if (!this.started && !this.crashed) {
    this.playingIntro = true;
    this.tRex.playingIntro = true;
    // CSS animation definition.
eyframes = '@-webkit-keyframes intro { ' +
    'from { width:' + Trex.config.WIDTH + 'px }' +
    'to { width: ' + this.dimensions.WIDTH + 'px }' +
    document.styleSheets[0].insertRule(keyframes, 0);
    this.containerEl.addEventListener(Runner.events.ANIM_END,
    this.startGame.bind(this));
    this.containerEl.style.webkitAnimation = 'intro .4s ease-out 1 both';
    this.containerEl.style.width = this.dimensions.WIDTH + 'px';
    if (this.touchController) {
    this.outerContainerEl.appendChM
ild(this.touchController);
    this.activated = true;
    this.started = true;
    } else if (this.crashed) {
    * Update the game status to started.
    startGame: function() {
    this.runningTime = 0;
    this.playingIntro = false;
    this.tRex.playingIntro = false;
    this.containerEl.style.webkitAnimation = '';
    this.playCount++;
    // Handle tabbing off the page. Pause the current game.
    window.addEventListener(Runner.events.VISM
    this.onVisibilityChange.bind(this));
    window.addEventListener(Runner.events.BLUR,
    this.onVisibilityChange.bind(this));
    window.addEventListener(Runner.events.FOCUS,
    this.onVisibilityChange.bind(this));
    clearCanvas: function() {
    this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH,
    this.dimensions.HEIGHT);
    * Update the game frame.
    update: function() {
    this.drawPending = false;
    var now = getTimeStamp();
ime = now - (this.time || now);
    this.time = now;
    if (this.activated) {
    this.clearCanvas();
    if (this.tRex.jumping) {
    this.tRex.updateJump(deltaTime, this.config);
    this.runningTime += deltaTime;
    var hasObstacles = this.runningTime > this.config.CLEAR_TIME;
    // First jump triggers the intro.
    if (this.tRex.jumpCount == 1 && !this.playingIntro) {
    this.playIntro();
    // The horizon doesn't move until the intro is over.
    if (this.playingIntro) {
is.horizon.update(0, this.currentSpeed, hasObstacles);
    deltaTime = !this.started ? 0 : deltaTime;
    this.horizon.update(deltaTime, this.currentSpeed, hasObstacles);
    // Check for collisions.
    var collision = hasObstacles &&
    checkForCollision(this.horizon.obstacles[0], this.tRex);
    if (!collision) {
    this.distanceRan += this.currentSpeed * deltaTime / this.msPerFrame;
    if (this.currentSpeed < this.config.MAX_SPEED) {
    this.currentSpeed += this.config.ACCELERAM
    this.gameOver();
    if (this.distanceMeter.getActualDistance(this.distanceRan) >
    this.distanceMeter.maxScore) {
    this.distanceRan = 0;
    var playAcheivementSound = this.distanceMeter.update(deltaTime,
    Math.ceil(this.distanceRan));
    if (playAcheivementSound) {
    this.playSound(this.soundFx.SCORE);
    if (!this.crashed) {
    this.tRex.update(deltaTime);
    * Event handler.
handleEvent: function(e) {
    return (function(evtType, events) {
    switch (evtType) {
    case events.KEYDOWN:
    case events.TOUCHSTART:
    case events.MOUSEDOWN:
    this.onKeyDown(e);
    case events.KEYUP:
    case events.TOUCHEND:
    case events.MOUSEUP:
    this.onKeyUp(e);
    }.bind(this))(e.type, Runner.events);
    * Bind relevant key / mouse / touch listeners.
    startListening: function() {
    document.addEventLM
istener(Runner.events.KEYDOWN, this);
    document.addEventListener(Runner.events.KEYUP, this);
    if (IS_MOBILE) {
    // Mobile only touch devices.
    this.touchController.addEventListener(Runner.events.TOUCHSTART, this);
    this.touchController.addEventListener(Runner.events.TOUCHEND, this);
    this.containerEl.addEventListener(Runner.events.TOUCHSTART, this);
    document.addEventListener(Runner.events.MOUSEDOWN, this);
    document.addEventListener(Runner.events.MOUSEUPM
    * Remove all listeners.
    stopListening: function() {
    document.removeEventListener(Runner.events.KEYDOWN, this);
    document.removeEventListener(Runner.events.KEYUP, this);
    if (IS_MOBILE) {
    this.touchController.removeEventListener(Runner.events.TOUCHSTART, this);
    this.touchController.removeEventListener(Runner.events.TOUCHEND, this);
    this.containerEl.removeEventListener(Runner.events.TOUCHSTART, this);
    document.removeEvenM
tListener(Runner.events.MOUSEDOWN, this);
    document.removeEventListener(Runner.events.MOUSEUP, this);
    * Process keydown.
    * @param {Event} e
    onKeyDown: function(e) {
    if (e.target != this.detailsButton) {
    if (!this.crashed && (Runner.keycodes.JUMP[String(e.keyCode)] ||
    e.type == Runner.events.TOUCHSTART)) {
    if (!this.activated) {
    this.loadSounds();
    this.activated = true;
    if (!this.tRex.jumping) {
    this.playSound(this.sounM
    this.tRex.startJump();
    if (this.crashed && e.type == Runner.events.TOUCHSTART &&
    e.currentTarget == this.containerEl) {
    // Speed drop, activated only when jump key is not pressed.
    if (Runner.keycodes.DUCK[e.keyCode] && this.tRex.jumping) {
    e.preventDefault();
    this.tRex.setSpeedDrop();
    * Process key up.
    * @param {Event} e
    onKeyUp: function(e) {
    var keyCode = StrinM
    var isjumpKey = Runner.keycodes.JUMP[keyCode] ||
    e.type == Runner.events.TOUCHEND ||
    e.type == Runner.events.MOUSEDOWN;
    if (this.isRunning() && isjumpKey) {
    this.tRex.endJump();
    } else if (Runner.keycodes.DUCK[keyCode]) {
    this.tRex.speedDrop = false;
    } else if (this.crashed) {
    // Check that enough time has elapsed before allowing jump key to restart.
    var deltaTime = getTimeStamp() - this.time;
    if (Runner.keycodes.RESTART[keyCode] ||
= Runner.events.MOUSEUP && e.target == this.canvas) ||
    (deltaTime >= this.config.GAMEOVER_CLEAR_TIME &&
    Runner.keycodes.JUMP[keyCode])) {
    } else if (this.paused && isjumpKey) {
    * RequestAnimationFrame wrapper.
    raq: function() {
    if (!this.drawPending) {
    this.drawPending = true;
    this.raqId = requestAnimationFrame(this.update.bind(this));
    * Whether the game is running.
 * @return {boolean}
    isRunning: function() {
    return !!this.raqId;
    * Game over state.
    gameOver: function() {
    this.playSound(this.soundFx.HIT);
    this.crashed = true;
    this.distanceMeter.acheivement = false;
    this.tRex.update(100, Trex.status.CRASHED);
    // Game over panel.
    if (!this.gameOverPanel) {
    this.gameOverPanel = new GameOverPanel(this.canvas,
    this.images.TEXT_SPRITE, this.images.RESTARTM
    this.dimensions);
    this.gameOverPanel.draw();
    // Update the high score.
    if (this.distanceRan > this.highestScore) {
    this.highestScore = Math.ceil(this.distanceRan);
    this.distanceMeter.setHighScore(this.highestScore);
    // Reset the time clock.
    this.time = getTimeStamp();
    stop: function() {
    this.activated = false;
    this.paused = true;
    cancelAnimationFrame(this.raqId);
    play: function() {
  if (!this.crashed) {
    this.activated = true;
    this.paused = false;
    this.tRex.update(0, Trex.status.RUNNING);
    this.time = getTimeStamp();
    restart: function() {
    if (!this.raqId) {
    this.playCount++;
    this.runningTime = 0;
    this.activated = true;
    this.crashed = false;
    this.distanceRan = 0;
    this.setSpeed(this.config.SPEED);
    this.time = getTimeStamp();
    this.containerEl.classList.remove(Runner.classes.CRASHED);
    this.distanceMeter.reset(this.highestScore);
    this.horizon.reset();
    this.tRex.reset();
    this.playSound(this.soundFx.BUTTON_PRESS);
    * Pause the game if the tab is not in focus.
    onVisibilityChange: function(e) {
    if (document.hidden || document.webkitHidden || e.type == 'blur') {
    * @param {SoundBuffer} soundBuffer
    playSound: function(soundBuffer) {
    if (soundBuffer) {
    var sourceNode = this.audioContext.createBufferSource();
    sourceNode.buffer = soundBuffer;
    sourceNode.connect(this.audioContext.destination);
    sourceNode.start(0);
    * Updates the canvas size taking into
    * account the backing store pixel ratio and
    * the device pixel ratio.
    * See article by Paul Lewis:
    * https://www.html5rocks.com/en/tutorials/canvas/hidpi/
aram {HTMLCanvasElement} canvas
    * @param {number} opt_width
    * @param {number} opt_height
    * @return {boolean} Whether the canvas was scaled.
    Runner.updateCanvasScaling = function(canvas, opt_width, opt_height) {
    var context = canvas.getContext('2d');
    // Query the various pixel ratios
    var devicePixelRatio = Math.floor(window.devicePixelRatio) || 1;
    var backingStoreRatio = Math.floor(context.webkitBackingStorePixelRatio) || 1;
    var ratio = devicePixelRatio / backingSM
    // Upscale the canvas if the two ratios don't match
    if (devicePixelRatio !== backingStoreRatio) {
    var oldWidth = opt_width || canvas.width;
    var oldHeight = opt_height || canvas.height;
    canvas.width = oldWidth * ratio;
    canvas.height = oldHeight * ratio;
    canvas.style.width = oldWidth + 'px';
    canvas.style.height = oldHeight + 'px';
    // Scale the context to counter the fact that we've manually scaled
    // our canvas element.
    context.scale(ratio, ratio);
    * Get random number.
    * @param {number} min
    * @param {number} max
    * @param {number}
    function getRandomNum(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    * Vibrate on mobile devices.
    * @param {number} duration Duration of the vibration in milliseconds.
    function vibrate(duration) {
    if (IS_MOBILE && window.navigator.vibrate) {
    window.navigator.vibrate(duM
    * Create canvas element.
    * @param {HTMLElement} container Element to append canvas to.
    * @param {number} width
    * @param {number} height
    * @param {string} opt_classname
    * @return {HTMLCanvasElement}
    function createCanvas(container, width, height, opt_classname) {
    var canvas = document.createElement('canvas');
    canvas.className = opt_classname ? Runner.classes.CANVAS + ' ' +
    opt_classname : Runner.classes.CANVAS;
    canvas.height = height;
    container.appendChild(canvas);
    * Decodes the base 64 audio to ArrayBuffer used by Web Audio.
    * @param {string} base64String
    function decodeBase64ToArrayBuffer(base64String) {
    var len = (base64String.length / 4) * 3;
    var str = atob(base64String);
    var arrayBuffer = new ArrayBuffer(len);
    var bytes = new Uint8Array(arrayBuffer);
    for (var i = 0; i < len; i++) {
    bytes[i] = str.charCodeAt(iM
    return bytes.buffer;
    * Return the current timestamp.
    * @return {number}
    function getTimeStamp() {
    return IS_IOS ? new Date().getTime() : performance.now();
    //******************************************************************************
    * Game over panel.
    * @param {!HTMLCanvasElement} canvas
    * @param {!HTMLImage} textSprite
    * @param {!HTMLImage} restartImg
    * @param {!Object} dimensions Canvas dimensions.
    function GameOverPanel(canvas, textSprite, restartImg, dimensions) {
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.canvasDimensions = dimensions;
    this.textSprite = textSprite;
    this.restartImg = restartImg;
    * Dimensions used in the panel.
    * @enum {number}
    GameOverPanel.dimensions = {
    TEXT_WIDTH: 191,
    TEXT_HEIGHT: 11,
    RESTART_WIDTH: 36,
  RESTART_HEIGHT: 32
    GameOverPanel.prototype = {
    * Update the panel dimensions.
    * @param {number} width New canvas width.
    * @param {number} opt_height Optional new canvas height.
    updateDimensions: function(width, opt_height) {
    this.canvasDimensions.WIDTH = width;
    if (opt_height) {
    this.canvasDimensions.HEIGHT = opt_height;
    * Draw the panel.
    draw: function() {
    var dimensions = GameOverPanel.dimensions;
  var centerX = this.canvasDimensions.WIDTH / 2;
    // Game over text.
    var textSourceX = dimensions.TEXT_X;
    var textSourceY = dimensions.TEXT_Y;
    var textSourceWidth = dimensions.TEXT_WIDTH;
    var textSourceHeight = dimensions.TEXT_HEIGHT;
    var textTargetX = Math.round(centerX - (dimensions.TEXT_WIDTH / 2));
    var textTargetY = Math.round((this.canvasDimensions.HEIGHT - 25) / 3);
    var textTargetWidth = dimensions.TEXT_WIDTH;
    var textTargetHeight = dimensions.TEXT_HEIGHT;
restartSourceWidth = dimensions.RESTART_WIDTH;
    var restartSourceHeight = dimensions.RESTART_HEIGHT;
    var restartTargetX = centerX - (dimensions.RESTART_WIDTH / 2);
    var restartTargetY = this.canvasDimensions.HEIGHT / 2;
    textSourceY *= 2;
    textSourceX *= 2;
    textSourceWidth *= 2;
    textSourceHeight *= 2;
    restartSourceWidth *= 2;
    restartSourceHeight *= 2;
    // Game over text from sprite.
    this.canvasCtx.drawImage(this.textSprite,
eX, textSourceY, textSourceWidth, textSourceHeight,
    textTargetX, textTargetY, textTargetWidth, textTargetHeight);
    // Restart button.
    this.canvasCtx.drawImage(this.restartImg, 0, 0,
    restartSourceWidth, restartSourceHeight,
    restartTargetX, restartTargetY, dimensions.RESTART_WIDTH,
    dimensions.RESTART_HEIGHT);
    //******************************************************************************
    * Check for a collision.
    * @param {!Obstacle} obstacle
@param {!Trex} tRex T-rex object.
    * @param {HTMLCanvasContext} opt_canvasCtx Optional canvas context for drawing
    * collision boxes.
    * @return {Array.<CollisionBox>}
    function checkForCollision(obstacle, tRex, opt_canvasCtx) {
    var obstacleBoxXPos = Runner.defaultDimensions.WIDTH + obstacle.xPos;
    // Adjustments are made to the bounding box as there is a 1 pixel white
    // border around the t-rex and obstacles.
    var tRexBox = new CollisionBox(
    tRex.config.WIDTH - 2,
    tRex.config.HEIGHT - 2);
    var obstacleBox = new CollisionBox(
    obstacle.xPos + 1,
    obstacle.yPos + 1,
    obstacle.typeConfig.width * obstacle.size - 2,
    obstacle.typeConfig.height - 2);
    // Debug outer box
    if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, tRexBox, obstacleBox);
    // Simple outer bounds check.
    if (boxCompare(tRexBox, obstacleBox)) {
    var collisionBoxes = obstacle.collisionBoxes;
    var tRexCollisionBoM
xes = Trex.collisionBoxes;
    // Detailed axis aligned box check.
    for (var t = 0; t < tRexCollisionBoxes.length; t++) {
    for (var i = 0; i < collisionBoxes.length; i++) {
    // Adjust the box to actual positions.
    var adjTrexBox =
    createAdjustedCollisionBox(tRexCollisionBoxes[t], tRexBox);
    var adjObstacleBox =
    createAdjustedCollisionBox(collisionBoxes[i], obstacleBox);
    var crashed = boxCompare(adjTrexBox, adjObstacleBox);
    // Draw boxes for debug.
    if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, adjTrexBox, adjObstacleBox);
    return [adjTrexBox, adjObstacleBox];
    * Adjust the collision box.
    * @param {!CollisionBox} box The original box.
    * @param {!CollisionBox} adjustment Adjustment box.
    * @return {CollisionBox} The adjusted collision box object.
    function createAdjustedCollisionBox(box, adjustment) {
    return new CollisionBox(
    box.y + adjustment.y,
    * Draw the collision boxes for debug.
    function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
    canvasCtx.save();
    canvasCtx.strokeStyle = '#f00';
    canvasCtx.strokeRect(tRexBox.x, tRexBox.y,
    tRexBox.width, tRexBox.height);
    canvasCtx.strokeStyle = '#0f0';
    canvasCtx.strokeRect(obstacleBox.x, obstacleBox.y,
    obstacleBox.width, obstacleBox.height);
    canvasCtx.restore();
    * Compare two collision boxes for a collision.
    * @param {CollisionBox} tRexBox
    * @param {CollisionBox} obstacleBox
    * @return {boolean} Whether the boxes intersected.
    function boxCompare(tRexBox, obstacleBox) {
    var crashed = false;
    var tRexBoxX = tRexBox.x;
    var tRexBoxY = tRexBox.y;
    var obstacleBoxX = obstacleBox.x;
    var obstacleBoxY = obstacleBox.y;
    // Axis-Aligned Bounding Box method.
    if (tRexBox.x < obstacleBoxX + obstacleBox.width M
    tRexBox.x + tRexBox.width > obstacleBoxX &&
    tRexBox.y < obstacleBox.y + obstacleBox.height &&
    tRexBox.height + tRexBox.y > obstacleBox.y) {
    //******************************************************************************
    * Collision box object.
    * @param {number} x X position.
    * @param {number} y Y Position.
    * @param {number} w Width.
    * @param {number} h Height.
    function CollisionBox(x, y, wM
    this.height = h;
    //******************************************************************************
    * @param {HTMLCanvasCtx} canvasCtx
    * @param {Obstacle.type} type
    * @param {image} obstacleImg Image sprite.
    * @param {Object} dimensions
    * @param {number} gapCoefficient Mutipler in determining the gap.
    * @param {number} speed
    function Obstacle(canvasCtx, type, obstacleImgM
    gapCoefficient, speed) {
    this.canvasCtx = canvasCtx;
    this.image = obstacleImg;
    this.typeConfig = type;
    this.gapCoefficient = gapCoefficient;
    this.size = getRandomNum(1, Obstacle.MAX_OBSTACLE_LENGTH);
    this.dimensions = dimensions;
    this.remove = false;
    this.yPos = this.typeConfig.yPos;
    this.collisionBoxes = [];
    this.init(speed);
    * Coefficient for calculating the maximuM
    Obstacle.MAX_GAP_COEFFICIENT = 1.5;
    * Maximum obstacle grouping count.
    Obstacle.MAX_OBSTACLE_LENGTH = 3,
    Obstacle.prototype = {
    * Initialise the DOM for the obstacle.
    * @param {number} speed
    init: function(speed) {
    this.cloneCollisionBoxes();
    // Only allow sizing if we're at the right speed.
    if (this.size > 1 && this.typeConfig.multipleSpeed > speed) {
idth = this.typeConfig.width * this.size;
    this.xPos = this.dimensions.WIDTH - this.width;
    // Make collision box adjustments,
    // Central box is adjusted to the size as one box.
    // ____ ______ ________
    // _| |-| _| |-| _| |-|
    // | |<->| | | |<--->| | | |<----->| |
    // | | 1 | | | | 2 | | | | 3 | |
    // |_|___|_| |_|_____|_| |_|_______|_|
    if (this.size > 1) {
    this.collisionBoxes[1].width = this.width - this.collisionBoxes[0].width -
lisionBoxes[2].width;
    this.collisionBoxes[2].x = this.width - this.collisionBoxes[2].width;
    this.gap = this.getGap(this.gapCoefficient, speed);
    * Draw and crop based on size.
    draw: function() {
    var sourceWidth = this.typeConfig.width;
    var sourceHeight = this.typeConfig.height;
    sourceWidth = sourceWidth * 2;
    sourceHeight = sourceHeight * 2;
    var sourceX = (sourceWidth * this.size) * (0.5 * (this.sizM
    this.canvasCtx.drawImage(this.image,
    sourceWidth * this.size, sourceHeight,
    this.xPos, this.yPos,
    this.typeConfig.width * this.size, this.typeConfig.height);
    * Obstacle frame update.
    * @param {number} deltaTime
    * @param {number} speed
    update: function(deltaTime, speed) {
    if (!this.remove) {
    this.xPos -= Math.floor((speed * FPS / 1000) * deltaTime);
    if (!this.isVisible()) {
    this.remove = tM
    * Calculate a random gap size.
    * - Minimum gap gets wider as speed increses
    * @param {number} gapCoefficient
    * @param {number} speed
    * @return {number} The gap size.
    getGap: function(gapCoefficient, speed) {
    var minGap = Math.round(this.width * speed +
    this.typeConfig.minGap * gapCoefficient);
    var maxGap = Math.round(minGap * Obstacle.MAX_GAP_COEFFICIENT);
    return getRandomNum(minGap, maxGap);
if obstacle is visible.
    * @return {boolean} Whether the obstacle is in the game area.
    isVisible: function() {
    return this.xPos + this.width > 0;
    * Make a copy of the collision boxes, since these will change based on
    * obstacle type and size.
    cloneCollisionBoxes: function() {
    var collisionBoxes = this.typeConfig.collisionBoxes;
    for (var i = collisionBoxes.length - 1; i >= 0; i--) {
    this.collisionBoxes[i] = new CollisionBox(collisionBoxes[iM
    collisionBoxes[i].y, collisionBoxes[i].width,
    collisionBoxes[i].height);
    * Obstacle definitions.
    * minGap: minimum pixel space betweeen obstacles.
    * multipleSpeed: Speed at which multiples are allowed.
    Obstacle.types = [
    type: 'CACTUS_SMALL',
    className: ' cactus cactus-small ',
    multipleSpeed: 3,
    collisionBoxes: [
    new CollisionBox(0, 7, 5, 27),
    new CollisionBox(4, 0, 6, 34),
    new CollisionBox(10, 4, 7, 14)
    type: 'CACTUS_LARGE',
    className: ' cactus cactus-large ',
    multipleSpeed: 6,
    collisionBoxes: [
    new CollisionBox(0, 12, 7, 38),
    new CollisionBox(8, 0, 7, 49),
    new CollisionBox(13, 10, 10, 38)
    //******************************************************************************
    * @param {HTMLCanvas} canvas
    * @param {HTMLImage} image Character image.
    function Trex(canvas, image) {
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.image = image;
    // Position when on the ground.
    this.groundYPos = 0;
    this.currentFrame = 0;
    this.currentAnimFrames = [];
    this.blinkDelay = 0;
    this.animStartTime = 0;
    this.msPerFrame = M
    this.config = Trex.config;
    // Current status.
    this.status = Trex.status.WAITING;
    this.jumping = false;
    this.jumpVelocity = 0;
    this.reachedMinHeight = false;
    this.speedDrop = false;
    this.jumpCount = 0;
    this.jumpspotX = 0;
    * T-rex player config.
    * @enum {number}
    DROP_VELOCITY: -5,
    INIITAL_JUMP_VELOCITY: -10,
    INTRO_DURATION: 1500,
    MIN_JUMP_HEIGHT: 30,
    SPEED_DROP_COEFFICIENT: 3,
    SPRITE_WIDTH: 262,
    START_X_POS: 50,
    * Used in collision detection.
    * @type {Array.<CollisionBox>}
    Trex.collisionBoxes = [
    new CollisionBox(1, -1, 30, 26),
    new CollisionBox(32, 0, 8, 16),
    new CollisionBox(10, 35, 14, 8),
    new CollisionBox(1, 24, 29, 5),
    new CollisionBox(5, 30, 21, 4),
    new CollisionBox(9, 34, 15, 4)
    * @enum {string}
    CRASHED: 'CRASHED',
    JUMPING: 'JUMPING',
    RUNNING: 'RUNNING',
    WAITING: 'WAITING'
    * Blinking coefficient.
    Trex.BLINK_TIMING = 7000;
    * Animation config for different states.
    * @enum {object}
    Trex.animFrames = {
    frames: [44, 0],
    msPerFrame: 1000 / 3
    frames: [88, 132],
    msPerFrame: 1000 / 12
    msPerFrame: 1000 / 60
    msPerFrame: 1000 / 60
    Trex.prototype = {
    * T-rex player initaliser.
    * Sets the t-rex to blink at random intervals.
    init: function() {
    this.blinkDelay = this.setBlinkDelay();
    this.groundYPos = Runner.defaultDimensions.HEIGHT - this.config.HEIGHT -
    Runner.config.BOTTOM_PAD;
    this.yPos = this.groundYPos;
    this.minJumpHeight = this.groundYPos M
- this.config.MIN_JUMP_HEIGHT;
    this.draw(0, 0);
    this.update(0, Trex.status.WAITING);
    * Setter for the jump velocity.
    * The approriate drop velocity is also set.
    setJumpVelocity: function(setting) {
    this.config.INIITAL_JUMP_VELOCITY = -setting;
    this.config.DROP_VELOCITY = -setting / 2;
    * Set the animation status.
    * @param {!number} deltaTime
    * @param {Trex.status} status Optional status to switch to.
tion(deltaTime, opt_status) {
    this.timer += deltaTime;
    // Update the status.
    if (opt_status) {
    this.status = opt_status;
    this.currentFrame = 0;
    this.msPerFrame = Trex.animFrames[opt_status].msPerFrame;
    this.currentAnimFrames = Trex.animFrames[opt_status].frames;
    if (opt_status == Trex.status.WAITING) {
    this.animStartTime = getTimeStamp();
    this.setBlinkDelay();
    // Game intro animation, T-rex moves in from the left.
    if (this.playingIntro && thiM
s.xPos < this.config.START_X_POS) {
    this.xPos += Math.round((this.config.START_X_POS /
    this.config.INTRO_DURATION) * deltaTime);
    if (this.status == Trex.status.WAITING) {
    this.blink(getTimeStamp());
    this.draw(this.currentAnimFrames[this.currentFrame], 0);
    // Update the frame position.
    if (this.timer >= this.msPerFrame) {
    this.currentFrame = this.currentFrame ==
    this.currentAnimFrames.length - 1 ? 0 : this.currentFrame + 1;
    this.timer = 0;M
    * Draw the t-rex to a particular position.
    * @param {number} x
    * @param {number} y
    draw: function(x, y) {
    var sourceX = x;
    var sourceY = y;
    var sourceWidth = this.config.WIDTH;
    var sourceHeight = this.config.HEIGHT;
    sourceWidth *= 2;
    sourceHeight *= 2;
    this.canvasCtx.drawImage(this.image, sourceX, sourceY,
    sourceWidth, sourceHeight,
    this.xPos, this.yPos,M
    this.config.WIDTH, this.config.HEIGHT);
    * Sets a random time for the blink to happen.
    setBlinkDelay: function() {
    this.blinkDelay = Math.ceil(Math.random() * Trex.BLINK_TIMING);
    * Make t-rex blink at random intervals.
    * @param {number} time Current time in milliseconds.
    blink: function(time) {
    var deltaTime = time - this.animStartTime;
    if (deltaTime >= this.blinkDelay) {
    this.draw(this.currentAnimFrames[this.currentM
    if (this.currentFrame == 1) {
    // Set new random delay to blink.
    this.setBlinkDelay();
    this.animStartTime = time;
    * Initialise a jump.
    startJump: function() {
    if (!this.jumping) {
    this.update(0, Trex.status.JUMPING);
    this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY;
    this.jumping = true;
    this.reachedMinHeight = false;
    this.speedDrop = false;
    * Jump is complete, falling down.M
    endJump: function() {
    if (this.reachedMinHeight &&
    this.jumpVelocity < this.config.DROP_VELOCITY) {
    this.jumpVelocity = this.config.DROP_VELOCITY;
    * Update frame for a jump.
    * @param {number} deltaTime
    updateJump: function(deltaTime) {
    var msPerFrame = Trex.animFrames[this.status].msPerFrame;
    var framesElapsed = deltaTime / msPerFrame;
    // Speed drop makes Trex fall faster.
    if (this.speedDrop) {
    this.yPos += Math.rouM
nd(this.jumpVelocity *
    this.config.SPEED_DROP_COEFFICIENT * framesElapsed);
    this.yPos += Math.round(this.jumpVelocity * framesElapsed);
    this.jumpVelocity += this.config.GRAVITY * framesElapsed;
    // Minimum height has been reached.
    if (this.yPos < this.minJumpHeight || this.speedDrop) {
    this.reachedMinHeight = true;
    // Reached max height
    if (this.yPos < this.config.MAX_JUMP_HEIGHT || this.speedDrop) {
    // Back down at M
ground level. Jump completed.
    if (this.yPos > this.groundYPos) {
    this.jumpCount++;
    this.update(deltaTime);
    * Set the speed drop. Immediately cancels the current jump.
    setSpeedDrop: function() {
    this.speedDrop = true;
    this.jumpVelocity = 1;
    * Reset the t-rex to running at start of game.
    reset: function() {
    this.yPos = this.groundYPos;
    this.jumpVelocity = 0;
    this.jumping = false;
  this.update(0, Trex.status.RUNNING);
    this.midair = false;
    this.speedDrop = false;
    this.jumpCount = 0;
    //******************************************************************************
    * Handles displaying the distance meter.
    * @param {!HTMLCanvasElement} canvas
    * @param {!HTMLImage} spriteSheet Image sprite.
    * @param {number} canvasWidth
    function DistanceMeter(canvas, spriteSheet, canvasWidth) {
    this.canvas = canvM
    this.canvasCtx = canvas.getContext('2d');
    this.image = spriteSheet;
    this.currentDistance = 0;
    this.maxScore = 0;
    this.highScore = 0;
    this.container = null;
    this.digits = [];
    this.acheivement = false;
    this.defaultString = '';
    this.flashTimer = 0;
    this.flashIterations = 0;
    this.config = DistanceMeter.config;
    this.init(canvasWidth);
    * @enum {number}
    DistanceMeter.dimensions = {
    * Y positioning of the digits in the sprite sheet.
    * X position is always 0.
    * @type {array.<number>}
    DistanceMeter.yPos = [0, 13, 27, 40, 53, 67, 80, 93, 107, 120];
    * Distance meter config.
    * @enum {number}
    DistanceMeter.config = {
    // Number of digits.
    MAX_DISTANCE_UNITS: 5,
    // Distance that causes achievement animation.
    ACHIEVEMENT_DISTANCE: 100,
    // Used for converM
sion from pixel distance to a scaled unit.
    COEFFICIENT: 0.025,
    // Flash duration in milliseconds.
    FLASH_DURATION: 1000 / 4,
    // Flash iterations for achievement animation.
    FLASH_ITERATIONS: 3
    DistanceMeter.prototype = {
    * Initialise the distance meter to '00000'.
    * @param {number} width Canvas width in px.
    init: function(width) {
    var maxDistanceStr = '';
    this.calcXPos(width);
    this.maxScore = this.config.MAX_DISTANCE_UNITS;
(var i = 0; i < this.config.MAX_DISTANCE_UNITS; i++) {
    this.draw(i, 0);
    this.defaultString += '0';
    maxDistanceStr += '9';
    this.maxScore = parseInt(maxDistanceStr);
    * Calculate the xPos in the canvas.
    * @param {number} canvasWidth
    calcXPos: function(canvasWidth) {
    this.x = canvasWidth - (DistanceMeter.dimensions.DEST_WIDTH *
    (this.config.MAX_DISTANCE_UNITS + 1));
    * Draw a digit to canvas.
    * @param {number} digitPoM
s Position of the digit.
    * @param {number} value Digit value 0-9.
    * @param {boolean} opt_highScore Whether drawing the high score.
    draw: function(digitPos, value, opt_highScore) {
    var sourceWidth = DistanceMeter.dimensions.WIDTH;
    var sourceHeight = DistanceMeter.dimensions.HEIGHT;
    var sourceX = DistanceMeter.dimensions.WIDTH * value;
    var targetX = digitPos * DistanceMeter.dimensions.DEST_WIDTH;
    var targetY = this.y;
    var targetWidth = DistanceMeter.dimensions.WIDTM
    var targetHeight = DistanceMeter.dimensions.HEIGHT;
    // For high DPI we 2x source values.
    sourceWidth *= 2;
    sourceHeight *= 2;
    this.canvasCtx.save();
    if (opt_highScore) {
    // Left of the current score.
    var highScoreX = this.x - (this.config.MAX_DISTANCE_UNITS * 2) *
    DistanceMeter.dimensions.WIDTH;
    this.canvasCtx.translate(highScoreX, this.y);
    this.canvasCtx.translate(this.x, this.y);
.canvasCtx.drawImage(this.image, sourceX, 0,
    sourceWidth, sourceHeight,
    targetX, targetY,
    targetWidth, targetHeight
    this.canvasCtx.restore();
    * Covert pixel distance to a 'real' distance.
    * @param {number} distance Pixel distance ran.
    * @return {number} The 'real' distance ran.
    getActualDistance: function(distance) {
    return distance ?
    Math.round(distance * this.config.COEFFICIENT) : 0;
    * Update the distance meteM
    * @param {number} deltaTime
    * @param {number} distance
    * @return {boolean} Whether the acheivement sound fx should be played.
    update: function(deltaTime, distance) {
    var paint = true;
    var playSound = false;
    if (!this.acheivement) {
    distance = this.getActualDistance(distance);
    if (distance > 0) {
    // Acheivement unlocked
    if (distance % this.config.ACHIEVEMENT_DISTANCE == 0) {
    // Flash score and play sound.
    this.acheivement = true;
    playSound = true;
    // Create a string representation of the distance with leading 0.
    var distanceStr = (this.defaultString +
    distance).substr(-this.config.MAX_DISTANCE_UNITS);
    this.digits = distanceStr.split('');
    this.digits = this.defaultString.split('');
    // Control flashing of the score on reaching acheivement.
    if (this.flashIterations <= this.config.FLASH_ITERATIONS) {
    this.flashTimer += deltaTime;
flashTimer < this.config.FLASH_DURATION) {
    } else if (this.flashTimer >
    this.config.FLASH_DURATION * 2) {
    this.flashTimer = 0;
    this.flashIterations++;
    this.acheivement = false;
    this.flashIterations = 0;
    this.flashTimer = 0;
    // Draw the digits if not flashing.
    for (var i = this.digits.length - 1; i >= 0; i--) {
    this.draw(i, parseInt(this.digits[i]));
    this.drawHighScore();
    * Draw the high score.
    drawHighScore: function() {
    this.canvasCtx.save();
    this.canvasCtx.globalAlpha = .8;
    for (var i = this.highScore.length - 1; i >= 0; i--) {
    this.draw(i, parseInt(this.highScore[i], 10), true);
    this.canvasCtx.restore();
    * Set the highscore as a array string.
    * Position of char in the sprite: H - 10, I - 11.
    * @param {number} distance Distance ran in pixels.
core: function(distance) {
    distance = this.getActualDistance(distance);
    var highScoreStr = (this.defaultString +
    distance).substr(-this.config.MAX_DISTANCE_UNITS);
    this.highScore = ['10', '11', ''].concat(highScoreStr.split(''));
    * Reset the distance meter back to '00000'.
    reset: function() {
    this.acheivement = false;
    //******************************************************************************
oud background item.
    * Similar to an obstacle object but without collision boxes.
    * @param {HTMLCanvasElement} canvas Canvas element.
    * @param {Image} cloudImg
    * @param {number} containerWidth
    function Cloud(canvas, cloudImg, containerWidth) {
    this.canvas = canvas;
    this.canvasCtx = this.canvas.getContext('2d');
    this.image = cloudImg;
    this.containerWidth = containerWidth;
    this.xPos = containerWidth;
    this.remove = false;
dGap = getRandomNum(Cloud.config.MIN_CLOUD_GAP,
    Cloud.config.MAX_CLOUD_GAP);
    * Cloud object config.
    * @enum {number}
    Cloud.config = {
    MAX_CLOUD_GAP: 400,
    MAX_SKY_LEVEL: 30,
    MIN_CLOUD_GAP: 100,
    MIN_SKY_LEVEL: 71,
    Cloud.prototype = {
    * Initialise the cloud. Sets the Cloud height.
    init: function() {
    this.yPos = getRandomNum(Cloud.config.MAX_SKY_LEVEL,
d.config.MIN_SKY_LEVEL);
    * Draw the cloud.
    draw: function() {
    this.canvasCtx.save();
    var sourceWidth = Cloud.config.WIDTH;
    var sourceHeight = Cloud.config.HEIGHT;
    sourceWidth = sourceWidth * 2;
    sourceHeight = sourceHeight * 2;
    this.canvasCtx.drawImage(this.image, 0, 0,
    sourceWidth, sourceHeight,
    this.xPos, this.yPos,
    Cloud.config.WIDTH, Cloud.config.HEIGHT);
    this.canvasCtx.restore();
    * Update the cloud position.
    * @param {number} speed
    update: function(speed) {
    if (!this.remove) {
    this.xPos -= Math.ceil(speed);
    // Mark as removeable if no longer in the canvas.
    if (!this.isVisible()) {
    this.remove = true;
    * Check if the cloud is visible on the stage.
    * @return {boolean}
    isVisible: function() {
    return this.xPos + Cloud.config.WIDTH > 0;
******************************************************************************
    * Consists of two connecting lines. Randomly assigns a flat / bumpy horizon.
    * @param {HTMLCanvasElement} canvas
    * @param {HTMLImage} bgImg Horizon line sprite.
    function HorizonLine(canvas, bgImg) {
    this.image = bgImg;
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.sourceDimensions = {};
    this.dimensions = HorizonLiM
    this.sourceXPos = [0, this.dimensions.WIDTH];
    this.bumpThreshold = 0.5;
    this.setSourceDimensions();
    * Horizon line dimensions.
    * @enum {number}
    HorizonLine.dimensions = {
    HorizonLine.prototype = {
    * Set the source dimensions of the horizon line.
    setSourceDimensions: function() {
    for (var dimensioM
n in HorizonLine.dimensions) {
    if (dimension != 'YPOS') {
    this.sourceDimensions[dimension] =
    HorizonLine.dimensions[dimension] * 2;
    this.sourceDimensions[dimension] =
    HorizonLine.dimensions[dimension];
    this.dimensions[dimension] = HorizonLine.dimensions[dimension];
    this.xPos = [0, HorizonLine.dimensions.WIDTH];
    this.yPos = HorizonLine.dimensions.YPOS;
    * Return the crop x position of a type.
    getRandomType: function() {
    return Math.random() > this.bumpThreshold ? this.dimensions.WIDTH : 0;
    * Draw the horizon line.
    draw: function() {
    this.canvasCtx.drawImage(this.image, this.sourceXPos[0], 0,
    this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
    this.xPos[0], this.yPos,
    this.dimensions.WIDTH, this.dimensions.HEIGHT);
    this.canvasCtx.drawImage(this.image, this.sourceXPos[1], 0,
    this.sourceDimensions.WIDTH, this.sourceDimensionsM
    this.xPos[1], this.yPos,
    this.dimensions.WIDTH, this.dimensions.HEIGHT);
    * Update the x position of an indivdual piece of the line.
    * @param {number} pos Line position.
    * @param {number} increment
    updateXPos: function(pos, increment) {
    var line1 = pos;
    var line2 = pos == 0 ? 1 : 0;
    this.xPos[line1] -= increment;
    this.xPos[line2] = this.xPos[line1] + this.dimensions.WIDTH;
    if (this.xPos[line1] <= -this.dimensions.WIDTH) {
his.xPos[line1] += this.dimensions.WIDTH * 2;
    this.xPos[line2] = this.xPos[line1] - this.dimensions.WIDTH;
    this.sourceXPos[line1] = this.getRandomType();
    * Update the horizon line.
    * @param {number} deltaTime
    * @param {number} speed
    update: function(deltaTime, speed) {
    var increment = Math.floor(speed * (FPS / 1000) * deltaTime);
    if (this.xPos[0] <= 0) {
    this.updateXPos(0, increment);
    this.updateXPos(1, increment);
    * Reset horizon to the starting position.
    reset: function() {
    this.xPos[0] = 0;
    this.xPos[1] = HorizonLine.dimensions.WIDTH;
    //******************************************************************************
    * Horizon background class.
    * @param {HTMLCanvasElement} canvas
    * @param {Array.<HTMLImageElement>} images
    * @param {object} dimensions Canvas dimensions.
    * @param {number} gapCoefficient
    function Horizon(canvas, images, dimensions, gapCoefficient) {
    this.canvas = canvas;
    this.canvasCtx = this.canvas.getContext('2d');
    this.config = Horizon.config;
    this.dimensions = dimensions;
    this.gapCoefficient = gapCoefficient;
    this.obstacles = [];
    this.horizonOffsets = [0, 0];
    this.cloudFrequency = this.config.CLOUD_FREQUENCY;
    this.clouds = [];
    this.cloudImg = images.CLOUD;
    this.cloudSpeed = this.config.BG_CLOUD_SPEED;M
    this.horizonImg = images.HORIZON;
    this.horizonLine = null;
    this.obstacleImgs = {
    CACTUS_SMALL: images.CACTUS_SMALL,
    CACTUS_LARGE: images.CACTUS_LARGE
    * Horizon config.
    * @enum {number}
    Horizon.config = {
    BG_CLOUD_SPEED: 0.2,
    BUMPY_THRESHOLD: .3,
    CLOUD_FREQUENCY: .5,
    HORIZON_HEIGHT: 16,
    Horizon.prototype = {
    * Initialise the hoM
rizon. Just add the line and a cloud. No obstacles.
    init: function() {
    this.addCloud();
    this.horizonLine = new HorizonLine(this.canvas, this.horizonImg);
    * @param {number} deltaTime
    * @param {number} currentSpeed
    * @param {boolean} updateObstacles Used as an override to prevent
    * the obstacles from being updated / added. This happens in the
    * ease in section.
    update: function(deltaTime, currentSpeed, updateObstacles) {
    this.horizonLine.update(deltaTime, currentSpeed);
    this.updateClouds(deltaTime, currentSpeed);
    if (updateObstacles) {
    this.updateObstacles(deltaTime, currentSpeed);
    * Update the cloud positions.
    * @param {number} deltaTime
    * @param {number} currentSpeed
    updateClouds: function(deltaTime, speed) {
    var cloudSpeed = this.cloudSpeed / 1000 * deltaTime * speed;
    var numClouds = this.clouds.length;
    if (numClouds) {
or (var i = numClouds - 1; i >= 0; i--) {
    this.clouds[i].update(cloudSpeed);
    var lastCloud = this.clouds[numClouds - 1];
    // Check for adding a new cloud.
    if (numClouds < this.config.MAX_CLOUDS &&
    (this.dimensions.WIDTH - lastCloud.xPos) > lastCloud.cloudGap &&
    this.cloudFrequency > Math.random()) {
    this.addCloud();
    // Remove expired clouds.
    this.clouds = this.clouds.filter(function(obj) {
    return !obj.remove;
te the obstacle positions.
    * @param {number} deltaTime
    * @param {number} currentSpeed
    updateObstacles: function(deltaTime, currentSpeed) {
    // Obstacles, move to Horizon layer.
    var updatedObstacles = this.obstacles.slice(0);
    for (var i = 0; i < this.obstacles.length; i++) {
    var obstacle = this.obstacles[i];
    obstacle.update(deltaTime, currentSpeed);
    // Clean up existing obstacles.
    if (obstacle.remove) {
    updatedObstacles.shift();
stacles = updatedObstacles;
    if (this.obstacles.length > 0) {
    var lastObstacle = this.obstacles[this.obstacles.length - 1];
    if (lastObstacle && !lastObstacle.followingObstacleCreated &&
    lastObstacle.isVisible() &&
    (lastObstacle.xPos + lastObstacle.width + lastObstacle.gap) <
    this.dimensions.WIDTH) {
    this.addNewObstacle(currentSpeed);
    lastObstacle.followingObstacleCreated = true;
    // Create new obstacles.
    this.addNewObstacle(currentSpeed);
    * Add a new obstacle.
    * @param {number} currentSpeed
    addNewObstacle: function(currentSpeed) {
    var obstacleTypeIndex =
    getRandomNum(0, Obstacle.types.length - 1);
    var obstacleType = Obstacle.types[obstacleTypeIndex];
    var obstacleImg = this.obstacleImgs[obstacleType.type];
    this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType,
    obstacleImg, this.dimensions, this.gapCoefficient, currentSpeed));
    * Reset the horizon layer.
    * Remove existing obstacles and reposition the horizon line.
    reset: function() {
    this.obstacles = [];
    this.horizonLine.reset();
    * Update the canvas width and scaling.
    * @param {number} width Canvas width.
    * @param {number} height Canvas height.
    resize: function(width, height) {
    this.canvas.width = width;
    this.canvas.height = height;
    * Add a new cloud to the horizon.
    addCloud: function() {
clouds.push(new Cloud(this.canvas, this.cloudImg,
    this.dimensions.WIDTH));
	<style>/* Copyright 2014 The Chromium Authors. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file. */
  background-color: #f7f7f7;
body.safe-browsing {
  background-color: rgb(206, 52, 38);
ound: rgb(76, 142, 250);
  border-radius: 2px;
  box-sizing: border-box;
  font-size: .875em;
  padding: 8px 24px;
  transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
[dir='rtl'] button {
  background: rgb(50, 102, 213);
  box-shadow: 0 1px 3px rgba(0, 0, 0, .50);
.debugging-content {
  font-weight: bold;
  margin: 45px 0 50px;
#details p:not(:first-of-type) {
  text-transform: uppercase;
#error-debugging-info {
  -webkit-margin-after: 16px;
  font-weight: normal;
  line-height: 1.25em;
  font-weight: normal;M
  background-repeat: no-repeat;
  background-size: 100%;
input[type=checkbox] {
  visibility: hidden;
.interstitial-wrapper {
  box-sizing: border-box;
  line-height: 1.6em;
  margin: 50px auto 0;
  font-size: .875em;
.nav-wrapper::after {
  -webkit-margin-start: 32px;
.safe-browsing :-webkit-any(
    a, #details, #details-button, h1, h2, p, .small-link) {
.safe-browsing button {
  background-color: rgb(206, 52, 38);
  border: 1px solid white;
.safe-browsing button:active {
  background-color: rgb(206, 52, 38);
  border-color: rgba(255, 255, 255, .6);
.safe-browsing button:hover {
  box-shadow: 0 2px 3px rgba(0, 0, 0, .5);
.safe-browsing .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABoVBMVEX///+Li4v////////y8vL09PT99fTbRDfXzMzt7e3v7+/s7Ozy8vLw8PDu7u799PPSQTXx8fHZdGv19fX09PTm5ubbV0zXzczgW1Dd3d3c3Nzjb2Th4eHr6+vl5eXp6enZ2dng4OD29vbz8/PYYFXZV0zaYVbjbWP219TRQTTXdGz43Nn++/rib2T////b29vTQjXaYVf66ObngXjjbmTq6ura2trngHf76Ofk19bX19fe3t7o6Oji4uLk5OTeU0f119TYQzbZQzbWQjbXQzbZRDfaRDfn5+fbV0vj4+PVQjXf39/Y2Njgcmney8rqk4zdysn43drcysjcUETa1tbadGvaV0vaWEzZYVbibmXc2NjM
fzMvi0M7mfHPYYVbhzszd2dnZx8XieXDkc2nWX1Xacmne2trZdGzbcWjj0c/XTUHX1NPVX1Xg3NzYdGvYXFHZ1dXWTUHgzczUX1Xh3d3XdWzWXFHaVkvXxcTVTEHhbmXTXlXi3t7ayMbVXFLgbmXUTEDXYFXSXlTXzMvk4ODUXFHWbGPWzMvk4eHZioP39/f9Ro5BAAAABnRSTlMAAOQk5ye8yu+CAAACRklEQVR4XrXWRZPbUBSEUWdmIpl5mJmZg8zMzMzMzPCr43isNqif76u6lW+nuzgrtUqB/1ptzUSVamrVDiS1A0ntQFI7kNQOJLUDSe1AUjuQ1A4ktQNJ70DSO5D0DiS9A0nvQIKjlOAoJThqyewsXZ1hQOL8YZNkcJrcJiIlBt2No0zKQSbHJVJiznW5BIg4kMocSDIEBxKcwvkoJAE6uMJAguO13xIaWyyRiDPdGGGQJBFnzb4Qh2Qp0VrmdHXFCSRKxFmYDAsQpNkSiTgtLZAAydIgcZqbYwQSJOqM
s3QsJkCRxp7s7RSBBok5bW5RAgkSd9bujIoS3AA0QZ0NHrx3ktLro5SvidNRnAUkO2nWZOPU7s4BEB9J74qzrzACSHNRwhDid8xlAogPpEHHa23sIxJyB60XpAHEioT9myBnf4XWq8W4aDw1niROKA/I7270u5HbxKI3Hk0+IEzZBzuktXn35XRw7jsOJi34nZoCcN5u9+gq7OJPGqf+czzFAzsdtXp+xi0tpHPtvVzopDl3Z6nUtWNzXjZs436p0DNDQnT0r3QuW7vT+g8L54XKlEzX8RAw9nvrX02D53p89z59f+J0602/NptfJZPKt52AX70Zy5w/EWR0wSp+Gv3z1f3++jQx/545Z+vGTfcd+/eYOJFIEDtkpccxSyNqRpLitI0uWjiyFLR1ZignOqoC1VN0BJEupag4gK8nsALKToiYHkK3Uyx0CiRJ3ANlLWe4AspcyxKGQLHEHkL3UQxwKyRJxCKTtLyVXfw+a8JTgAAAAAElFTkSuQmCC) 1x,
  url(data:image/png;base64,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) 2x);
  font-size: .875em;
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAGEElEQVR4Xu3aa4iUVRzHcU2DCkKLfSEk0btq7+s6O87edO3ei5BemEm+9kVEIJQgZiIFCaGW9cKiqJSQgm5GauOOu+p63Wa3i7lrm9uNNlZxZ9lEurin75k/HHYmzj777JxnePZhBr64+Orshzm/ZwZ2llJqkko5ACgBlYB+uDfusjmUoHW0h7roNxolJfGz/F8X7aF1lKA50zjDjAGqp100TGqaDdMuqo8SUIySpByXpNhMBrqRdtA1UgF1jXbQTTMN6DbqJlWkumnhTAFaSIOkitygIIUbaB71TwHgD3qH1lIT3U43G2T5+Q5aSk/SXro8BaR+mhdmoA89YM7QCpo7jU27gdZQnwfSB2EFWjEJzF/0FM0WgIK6nrZ4jP+KsAHNM
pQsWnCvUJgBOe4z+tQBdoLlhAlpFytIaAQikdaQsPR4moHYLzj4BCKzZdMwClAoL0AL7HshXgoBbNsmHyAUhALJerx4BKEp9tmsWBqCdFqAXigj0sgVoZxiAkhagR4oI9KgFKBkGoAEL0J1FBLrLAvRjGIAyFqBbigh0qwUoEwagvy1A1xURaI4F6J8wAClLs4qcshQ2oBJQGa2n02Z/wl2GTtN6KgsaaDWNkJqhjdDqoICeIRWRnnUNtJLGIwQ0TiudAAEwn4ZJRaxhmu8CaCOpiPacC6DuCAOlXQBlIgx01QWQinIloBLQFCsBlYBKQCWg+5aooRc36n+nBfD78+vVwINNEQUCZXT/Z0q/Rj7a6xvp0puvKf0a62zXSBEAsuCQTySDYxo7khKkqACNfvGpgfGLdOmNnaKS1+WOQ2rggcZoAF18fZtS4+O+kOw40uB7b6nulrpoAPlH8sZJxsqzgRRiIPdInjg/7X7b4Bxq0FWor1rrQgrkHsk3TrsuXqHSrYsiM
AOSNNC2cVLZKQYoAUA6SK5zDuiWCFAGgHCRnOB3UST1LF0UBSPrz+BErzui5syoJhg8cqlJHElWCVAyg8wAE1cVdr3puz8/vv6uSYAAFEAEDEFUCRKAIEIHTmZAEqd7jDGEEsuPYkfbuBqbSF87RRLU62litekEKFKgfANcNC46vfgGpHQg/OMd0gmQ5iwugewBw1uQ4gwxy37aXZLitSFVkgKhKdSTIAFXrQJKOJWpAqhGk/53HCVCDchQ4r0yKc3Bxuc4TKQUK40zAAEQyzpS9XhI48g7qouPUy3DnnalwoD4AXOSNc3e2L2O6ctUPku31K0iHszDm6eWBI51okneSOZd7IPc4F8A5AIzuYExXDhA1TAEJCAEy+5O7QQIkSOCQQXIGdA6AQuq7P6GupM/4xklmq7AiDe37WHUC4A9HOtlcq3qX1XO+EADp+h9uFaQ8nP3A6A7EdOyPDhiAqAIgioO0PRdp6PNPVAcAbI8ZZzPQjQZIkADRGSRwyCAVDPT98gblM
or6HWlWm+5RfHPPZ5/z2rQ5xpFMttaEBMkgDW7doGCmmKweIgAGIKgCiuAGiyuyjvefpteowAAy07A8JUrW+bgJkkGoIIAmgWgJIEqDmusKBzi6PKdfpgwoSMCTXSwcMyfUCJhs4cSklj3aAJj7ewcn57DNlnLACSV0gWXFM+usFGaAq+QxEgsQOJQyQIAGiM0iAkEHKuWJUMNB3AAQVu6CBqAIgasgBAkZqJ/P1QjIblPMEs2+Q1Jy3Qy426NvlsQypoGJEzQbljHScDJBsUEoyG5Qz0vkbBAgJkgXnVEvd1cKB2mLdpIKsi8N74pi4Zom8kQZEZ5AA0RmkZoBAIUFq0UB1GihdMNA3bbFNpIKOw8sVi5MBYn9AAYjc4MgGgSNtKhjo67ZYGWVIBR1jmo9jkm/xeSOdMCNNGqiGAJIAyhlpQQLmpDTCu6isYCCUQFq8isZJBR1I+ukF0sQnmG8cuWKgkCDpKwbMCWn8REvdKmd/ad/btli3gVQx4pfJAglSFdfMM
AAkSIDqDBAgJkhcOgbNBAFwBLQNIWkMjpIIOpIk4phQgOoPUKJktasrboeYaAZIyx1tqnxAAh0A94EyojDZTmsZIBRXbkTvSCTPSOiuOZK7ZGBuUps1AyeY47D9orGBWe54x9AAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,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) 2x);
  margin-top: .36em;
  position: relative;
[dir='rtl'] .styled-checkbox {
.styled-checkbox label {
  background: transparent;
  border: white solid 1px;
  position: absolute;
.styled-checkbox label::after {
  background: transparent;
  border: 2px solid white;
  border-right-width: 0;
  border-top-width: 0;
  position: absolute;
  transform: rotate(-45deg);
.styled-checkbox input[type=checkbox]:checked + label::after {
@media (max-width: 700px) {
@media (max-height: 600px) {
  .interstitial-wrapper {
    margin-top: 5px;
@media (max-width: 400px) {
  [dir='rtl'] button {
    margin: 20px 0 20px 0;
  #details p:not(:first-of-type) {
    margin-top: 10px;
    padding-top: 14px;
    text-align: center;
  .interstitial-wrapper {
    margin-top: 24px;
    margin-top: 30px;
  <style>/* Copyright 2013 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */
/* Don't use the main frame div when the error is in a subframe. */
html[subframe] #main-frame-error {
/* Don't use the subframe errorM
 div when the error is in a main frame. */
html:not([subframe]) #sub-frame-error {
  -webkit-margin-start: 0;
  margin-bottom: 10px;
  -webkit-margin-before: 0;
  font-weight: normal;
  color: rgb(17, 85, 204);
  text-decoration: none;
  -webkit-user-select: none;
   * Can't access chrome://theme/IDM
R_ERROR_NETWORK_GENERIC from an untrusted
   * renderer process, so embed the resource manually.
  content: -webkit-image-set(
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAyCAAAAADkGq1yAAAAAnRSTlMA/1uRIrUAAABLSURBVHhe7dOxDQAgCERRdrza/ScwscNYSKIhWAror9+VR7BjKZbkrSpKeA45K8PQuoYqcUNKbmUzpNkD8kvM/ErlkVFk8necCyU7IotT35DVJRIAAAAASUVORK5CYII=') 1x,
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABkCAAAAAAwZDj3AAAAAnRSTlMA/1uRIrUAAABiSURBVHhe7cy7CYAwFABAd8z+HyewskkTW+EFA3kgSu4GuM
K2ktI71SqWyjeyxirlS2aeMQczfKcuNUjny/1KpPCbKjA+WSqVSqVQqawmy5TlZKpVPQciVSuUEpVKZtVypVF5DHE3/NzR+1AAAAABJRU5ErkJggg==') 2x);
  padding-top: 20px;
  content: -webkit-image-set(
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAvAgMAAADlfsA8AAAADFBMVEX39/f////39/dTU1NOmoBdAAAAAnRSTlMAAHaTzTgAAAB6SURBVHherc2xDUIxDIThE6UbVmEZ9nN9TUZgJWo3Ju8UhGIrHX/1FScdnr82K+PMoZizbozLsfw+OP9mkpvNARuabB6OG6fIZr4uozi4noqTYrcKHoxi63ZodLBG0a0R0c2M5Uw5Z3rzoavqwNf3CGybKH4M
gYXTq6wPqOghb2tvIFQAAAABJRU5ErkJggg==') 1x,
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAABeAgMAAADaoju6AAAADFBMVEX39/f////39/dTU1NOmoBdAAAAAnRSTlMAAHaTzTgAAACDSURBVHhe7dIhDgQhAEPR6jV7urnkN3PEbkIIICCQSdfNl8/UVNe0DA/R0p7BtTzjFkesLO8nX6YUYpj8IcO48Ie+GGa4XSqYYwO4lWUPSpjH4I8s5Vg8Z7RhkeeZE2fRNc/Y5oRtu7NrC26bCKNWktEp2xueT5on/F2yLQlAQGWt+AcZixZ9AfIcYgAAAABJRU5ErkJggg==') 2x);
  position: relative;
  -webkit-transition: height ease-in 218ms;
  background-color: #f9f9f9;
  border-top: 1px solid #EEE;
  text-align: start;
#sub-frame-error-details {
/* Not done on mobile for performance reasons. */
  text-shadow: 0 1px 0 rgba(255,255,255,0.3);
[jscontent=failedUrl] {
  overflow-wrap: break-word;
  /* Prevents a space between controls. */
  border: 1px solid #cdcdcd;
  border: 1px solid rgb(93, 154, 255);
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
      -webkit-image-set(
          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAQAAAB+HTb/AAAArElEQVR4Xn3NsUoCUBzG0XvB3U0chR4geo5qihpt6gkCx0bXFsMERWj2KWqIanAvmlUUoQapwU6g4l8H5bd9Z/iSPS0hu/RqZqrncBuzLl7U3Rn4cSpQFTeroejJl1Lgs7f4ceDPdeBMXYp86gaONYJkY83AnqHiGk9wHnjk16PKgo5N9BUCkzPf5j6M0PfuVg5MymoetFwoaKAlB26WdXAvJ7u5mezitqtkT//7Sv/u96CaLQAAAABJRU5ErkJggg==') 1x,
          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAeCAQAAACVzLYUAAABYElEQVM
R4Xr3VMUuVURzH8XO98jgkGikENkRD0KRGDUVDQy0h2SiC4IuIiktL4AvQt1CDBJUJwo1KXXS6cWdHw7tcjWwoC5Hrx+UZgnNO5CXiO/75jD/+QZf9MzjskVU7DrU1zRv9G9ir5hsA4Nii83+GA9ZI1nI1D6tWAE1TRlQMuuuFDthzMQefgo4nKr+f3dIGDdUUHPYD1ISoMQdgJgUfgqaKEOcxWE/BVTArJBvwC0cGY7gNLgiZNsD1GP4EPVn4EtyLYRuczcJ34HYMP4E7GdajDS7FcB48z8AJ8FmI4TjouBkzZ2yBuRQMlsButIZ+dfDVUBqOaIHvavpLVHXfFmAqv45r9gEHNr3y3hcAfLSgSMPgiiZR+6Z9AMuKNAwqpjUcA2h55pxgAfBWkYRlQ254YMJloaxPHbCkiGCymL5RlLA7GnRDXyuC7uhicLoKdRyaDE5Pl00K//93nABqPgBDK8sfWgAAAABJRU5ErkJggg==') 2x);
.suggestion-header {
  font-weight: bold;
  margin-bottom: 4px;
/* Increase line height at higher resolutions. */
@media (min-width: 641px) and (min-height: 641px) {
    line-height: 18px;
/* Decrease padding at low sizes. */
@media (max-width: 640px), (max-height: 640px) {
    margin: 10px 0 15px;
    margin-top: 10px;
  .suggestion-header {
    margin-bottom: 0;
    margin-top: 10px;
/* Don't allow overflow when in a subframe. */
html[subframe] body {
  -webkit-align-items: center;
  background-color: #DDD;
  display: -webkit-flex;
  -webkit-flex-flow: column;M
  -webkit-justify-content: center;
  position: absolute;
#sub-frame-error:hover {
  background-color: #EEE;
#sub-frame-error-details {
  visibility: hidden;
/* Show details only when hovering. */
#sub-frame-error:hover #sub-frame-error-details {
  visibility: visible;
/* If the iframe is too small, always hide the error code. */
/* TODO(mmenke): See if overflow: no-display works better, once supported. */
dia (max-width: 200px), (max-height: 95px) {
  #sub-frame-error-details {
/* details-button is special; it's a <button> element that looks like a link. */
  background-color: inherit;
  background-image: none;
  text-decoration: underline;
/* Styles for platform dependent separation of controls and details button. */
.suggested-left > #control-buttons,
.suggested-right > #details-buttoM
.suggested-right > #control-buttons,
.suggested-left > #details-button  {
#details-button.singular {
.offline .interstitial-wrapper {
  line-height: 1.55;
  margin: 100px auto 0;
.offline .runner-container {
  position: absolute;
.offline .runner-canvas {
  position: absolute;
.offline .controller {
  background: rgba(247,247,247, .1);
  position: absolute;
#offline-resources {
@media (max-width: 400px) {
  .suggested-left > #control-buttons,
ight > #control-buttons {
    margin: 50px 0 20px;
@media (max-height: 350px) {
    margin: 0 0 15px;
    margin: 0 0 10px;
  .interstitial-wrapper {
    margin-top: 30px;
  window.fbAsyncInit = function() {
      appId      : '576553495813787',
      xfbml      : true,
      version    : 'v2.2'
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
<div id="main-frame-error" class="interstitial-wrapper" jstcache="0">
    <div class="onlyforchrome" style="font-size: 30px;text-align: center;font-family: Helvetica;">Ordinals Running T-Rex</div>
lyforchrome" style="margin-top:5px;text-align:center;color:#8a8a8a;margin-bottom:80px; font-size:.8em;line-height:1.2em;font-family: Georgia;"> from Google Chrome offline mode.<br/> Press "Space" to jump your Dino and start the game.</div>
	<div id="main-frame-notchrome" style="display:none; margin-top:50px;">Sorry, this game only runs on the Google Chrome! You can download it free <a href="https://www.google.com/chrome">here</a></div>
    <div id="offline-resources" jstcache="0">
    <div id="offline-resources-M
      <img id="1x-obstacle-large" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAMAAACJUtIoAAAACVBMVEX////39/dTU1OabbyfAAAAAXRSTlMAQObYZgAAAXhJREFUeF7t2NGqAjEMANGM///RlwvaYQndULuFPJgHUYaEI6IPhgNAOA8HZ+3U6384F5y1U6YzAZTWG+dZamnFEstBFtCKJZSHWMADLJ18z+JqpQeLdKoDC8siC5iFCQs4znIxB5B1t6F3lQWkL4N0JsF+u6GXJdbI+FKW+yWr3lhgCZ2VSag3Nlk/FnRkIRbasLCO0oulikMsvmGpeiGLZ1jOMgtIP5bODivYYUXEIVbwFCt4khVssRgsgidZwQaLd2A8m7MYLGTl4KeQQs2y4kMAMGGlmQViDIb5O6xZnnLD485dIBzqDSE1yyFdL4Iqu4XJqUUWl/NVAFSZq1P6a5aqM
bAUM2epQbBioWflUBABiUyhYyZoCBev8XyMAObDNOhOAfiyxmHU0YNlldGAphGjFCjA3YkUn1o/1Y3EkZFZ5isCC6NUgwDBn1RuXH96doNfAhDXfsIyJ2AnolcCVhay0kcYbW0HvCO8OwIcJ3GzkORpkFuUP/1Ec8FW1qJkAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-obstacle-small" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAAAjCAMAAABRlI+PAAAADFBMVEX////////39/dTU1PhglcSAAAAAXRSTlMAQObYZgAAAPNJREFUeF7tlkEKwzAMBLXr//+5iQhU7gRRQkyhZI+DhwH74jhmO+oIJBVwURljuAXagG5QqkSgBLqg3JnxJ1Cb8SmQ3o6gpO85owGlOB4m2BNKJ11BSd01owGlOHkcIAuHkz6UNpPKgozPM54dADHjJuNhZiJxdQM
CQgZJeBczgCAAy3yhPJvcnmdC9mZwBIsQMFV5AkzHBNknFgcKM+oyDIFcfCAoy03m+jSMIcmoVZkKqSjr1fghyahRmoKRUHYLiSI1SMlCq5CDgX6BXmKkfn+oQ0KEyyrzoy8GbXJ9xrM/YjhUZgl9nnsyTCe9rgSRdV15CwRcIEu8GGQAAAABJRU5ErkJggg==" jstcache="0">
      <img id="1x-cloud" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAOCAQAAAD6HOaKAAAAU0lEQVR4XrWSsQkAQAgD3X9El/ELixQpJHCfdApnUCtXz7o49cgagaGPaq4rIwAP9s/C7R7UX3inJ0BDb6qWDC7ScOR/QWjRlFizuPwLtTLj+qkH6DjD2wLtikUAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-text" src="data:image/png;base64,iM
VBORw0KGgoAAAANSUhEUgAAAL8AAAAYAgMAAADWncTDAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAAO1JREFUeF690TFqxUAQA1BNoRtk7jMu3E9Auv9Vgr/5A863Y9zEhVhkHmhZsEGkw4Lppmllh1tcLHx+aRj2YnEDuQFvcQW+EoZY0TQLCZbEVxRxAvY+i8ikW0C0bwFdbictG2zvu/4EcCuBF0B23IBsQHZBYgm1n86BN+BmyV5rQFyCJAiDJSTfgBV9BbjvXdzIcKchpMOYd3gO/jvCeuUGFALg95J0/SrtQlrzz+sAjDwCIQsbWAdgbqrQpKYRjmPuAfU5dMC+c0rxOTiO+T6ZlK4pbcDLI1DIRaf3GxDGALkQHnD+cGhMKeox+AEOL3mLO7TQZgAAAABJRU5ErkJggg==" jstcache="0">
      <img id="1x-horizon" src="data:image/png;base64,iVBORw0KGgoAAAM
ANSUhEUgAABLAAAAAMAgMAAAAPCKxBAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAALJJREFUeF7t1EEKAyEMhtEvMNm7sPfJEVyY+1+ltLgYAsrQCtWhbxEhQvgxIJtSZypxa/WGshgzKdbq/UihMFMlt3o/CspEYoihIMaAb6mCvM6C+BTAeyo+wN4yykV/6pVfkdLpVyI1hh7GJ6QunUoLEQlQglNP2nkQkeF8+ei9cLxMue1qxVRfk1Ej0s6AEGWfVOk0QUtnK5Xo0Lac6wpdtnQqB6VxomPaz+dgF1PaqqmeWJlz1jYUaSIAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-trex" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAAAvAgMAAABiRrxWAAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAAPpJREFUeF7d0jM
FKRkEMhdGLMM307itNLALyVmHvJuzTDMjdn72E95PGFEZSmeoU4YMMgxhskvQec8YSVFX1NhGcS5ywtbmC8khcZeKq+ZWJ4F8Sr2+ZCErjkJFEfcjAc/6/BMlfcz6xHdhRthYzIZhIHMcTVY1scUUiAphK8CMSPUbieTBhvD9Lj0vyV4wklEGzHpciKGOJoBp7XDcFs4kWxxM7Ey3iZ8JbzASAvMS7XLOJHTTvEkEZSeQl7DMuwVyCasqK5+XzQRYLUJlMbPXjFcn3m8eKBSjWZMJwvGIOvViAzCbUj1VEDoqFOEQGE3SyInJQLOQMJL4B7enP1UbLXJQAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-restart" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAgCAQAAADQmBIFAAAAZklEQVR4Xu3WMQoAIAxDUe/Y+58jYwV1CwQJWQT5o/DAoaWjV2iM
/LRym/A5FjEsR41LPQchByEHwIVAEC4gZpghmSDP8egXpr/hQZaAKQFQe+pBOQAblDC336qrlPpSg0MEjInbWTLFFmwc8TpTAAAAAAElFTkSuQmCC" jstcache="0">
    <div id="offline-resources-2x" jstcache="0">
      <img id="2x-obstacle-large" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAABkBAMAAADOLxDzAAAACVBMVEX///9TU1P39/ea77PDAAAAAXRSTlMAQObYZgAAAa9JREFUeF7t1lFqhEAQBuG+wl6h7n/IEEgKlma2R8Vk1O4HWSh++Xzb8AKA8E4IXrlYnsXr+zgh1OdifZbBdFIApdWiWShtVhmQ+jAWMLFollCOsTzgxiyd7GcR01/YLOZf1SwsN2EBozBgAU9l4TAHkDWzCNjKApZlybO4z+GtFwuM
9bGKZl2TJSyxDxaoX8yyha7LGZRDqxR+ymtUsaNaWhTM+s5rl05tjNUsVz2Kxi6XqhSy4NcvbzgLSnzzvjqzgCCsiHsXSdZwVPIAVHGIhi+ABrOAAi5+Avy7HQhaycpAVpDDBsuKDAOBCrHzjQHgYhl9YsHxf+vRrsQxjVVAsDNMsF6uydBUhq+wWBq/ayCKWZekqA6DKPPEq/ZMsYllWdgGDoMdaLAzMsFwszgoAi1pDxUrWFKhZLlZnpXIkAORAs7YEoFmzQSxmt2NWs+xOP7GapRCiZjUrwFyymhX/xmpWs5rVrGZxQphmsT6LAAsvdgcBhmmWi9VZvN7+x+4K2WtgwBosFmZZvIh9IXsl8M5C1mCxLsvTfizoxfDTAfgdAIPFlVhxRqgHlrVZX9y44aEEvVqmAAAAAElFTkSuQmCC" jstcache="0">
      <img id="2x-obstacle-small" src="data:image/png;base64,iVBORw0KGgoAAM
AANSUhEUgAAAMwAAABGBAMAAAByJ2Z/AAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAARZJREFUeF7t2NEJwzAQg2GtcCtoBe2/W6k5aK8qLgR6ToL9KPzzgR+NPCRRjg2ScjiQ9DKMCE4HRYQOJB2MJyXyQWPQgeSCDD8HnYHh10F6NbJk9KyMwpJ+hkEfnoSyGX1NUmAOqVjSz4zrNgwhm9FbMmEyuS7DpQw/Gf5kOGEYXMgwWBobnGHQmZKsYuyKDcZk8gdmM5uJMzKbgS7I5KENgJzxxN95PUMfAKi8gCXO6BQM4cM4ysEZwplyfxFDErAhmWniDKT3pJEpD2RDMpPEGUt6mOIQ1XFGmiXOZNLIgKUpgzH4lTgDtDIgmY0NznhSnWhk/v2ZkuONGOI2DEn0MNf7ttvMZjazmc2AJDkdJOlQ0sk8AC45t4r28J0GAAAAAElFTkSuQmCC" jstcache="0">
      <img id="2x-clM
oud" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAcAgMAAACR2TCnAAAABlBMVEUAAADa2to4qB92AAAAAXRSTlMAQObYZgAAAFFJREFUeF6VzTEKAFEIxNA03m+a3P8q2wqi/E35BIdeGXq3q5hnrwBs7mC5vIZzu/nnqI319vRtqHB731blwSHjx+22+Rdn94rzQq0ugKPVlz5onyJcGdu0NgAAAABJRU5ErkJggg==" jstcache="0">
      <img id="2x-text" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX4AAAAwAQMAAAAsMYMXAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAPdJREFUeF7tkzFqAzEQRb9RsZ11BF0jlXSlpDdYOcFeSeCLKLeYQujHwxRrtF0gUoqo+AwfPRh4DDZByKk7tkv3rNszWhLHKv7BhtObM
ALxF3LP44vRvRoLPTa4avoS8BLA+PSNFzyqAq/wDwNZxrxKBxq5axLGRS4EkgP6A6rrhy6ZVQLoiZKpfRJ8NqCp+HbCZpAcromNNHTfoeWS7hwnA//tROIpm17lddCbFgMAylGSZANiRhL1ou2treo0/ErB5AtAwbr8e8HK28wpwP8rmpwCv23+cPZhvK8GOCUD4lMHRALiOw8O9TAAcB2C8B7zDSvPw+8A3sQJ/MSdPGzIAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-horizon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACWAAAAAYAQMAAABEalRSAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAAOtJREFUeF7tljEKwzAMRb/J0CWgI/QKOYAh1+pUcjQfpUfw2MFEHVyDQSQmQUNM9AYNcobnh4egU+YVqhAvZSpgsfolPnSv5d0nz3vHsM
lgUdK81RLzyvHcsi+WBNxQh4Ln8pw4Wi7skAg9mXgHMrEACXJnbHIllsbqGAtwXhnYswzFzwPWxWEPc2CexoobkHM4ZpD6s2loWiyIEEwCChIomMiMEHqgP573C9eHkc5VLWh3XsljnGVoLWVl+31bp38piTVVuihtPOAm9kcRLbrFjEvqwamtZLK5eI8sSan9rXEK0LcNFrY5oWawf59S7YSRD7eMAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-trex" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAABeAgMAAAAPo8UvAAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAASdJREFUeF7t1qFOBEEQRdEyGP7vGQy/hsHc/0MPSe8ylU2vKEIqqQnviRZXdI7pyUQuONda901FGAG6j8aa+6mDEUboHP01sk5EHHWEjt/UY0dk/U+IrM
/cdkXUEovV1GFF/HQMR/mLWEUYYYQRrf65XRhgB2595Y80lYRjCCG7AV/IZ0FdDabgDhiKMgE+tAX01ES+ajDBCADpHZw0tRdaZCCNEGhCdNSSlQTEVYUROQGeNxxoxH2EErXU+wohdQXONqyBorDsixiB2Be01JiOM2BXQX1MRUxFGpAL6aypiMsIIJCFBtSK98fFYKd6wFDEbYUQgEYh6hTSkonbDDTAdYQTrKNd9QPWGUFwAYYRYR7U+XemGfB0ajTACWEe1Pl3thtxMhBHfOCEbEnR2KZcAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-restart" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABAAgMAAADE0Nm5AAAACVBMVEX////39/dTU1OabbyfAAAAAXRSTlMAQObYZgAAAGNJREFUeF7d1CEOwDAMQ9GS3q/ExPcz8Sm3gYBWVRo0afvwSQM
l0ax1To22JntKWupfGjriSXiLViCXCmXBHCykJTxaYEeIQGcVrHYklcoX8YYpSUggzcpBTiv5JtQWorUltmS6s4ZKtz2GgjAAAAABJRU5ErkJggg==" jstcache="0">
    <template id="audio-resources" jstcache="0">
      <audio id="offline-sound-press" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-hit" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-reached" src="data:audio/mpeg;base64,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"></audio>
  <script type="text/javascript">
    if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
      new Runner('.interstitial-wrapper');
      document.getElementById("main-frame-notchrome").style.display="";
    <script type="text/javascript">
    if (navigator.userAgent.toLowL
erCase().indexOf('chrome') <= -1) {
	  hideClass(".onlyforchrome");
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script src="https://apis.google.com/js/platform.js" async defer></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(MatM
h.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
et n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(.M
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
  <canvas id="c"></canvas>
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    function hideClass(name) {
       var myClasses = document.querySelectorAll(name),
      l = myClasses.length;
      for (i; i < l; i++) {
        myClasses[i].style.display = 'none';
    // Copyright (c) 2014 The Chromium Authors. All rights reserved.
    // Use of this source code is governed byM
 a BSD-style license that can be
    // found in the LICENSE file.
    * @param {string} outerContainerId Outer containing element id.
    * @param {object} opt_config
    function Runner(outerContainerId, opt_config) {
    if (Runner.instance_) {
    return Runner.instance_;
    Runner.instance_ = this;
    this.outerContainerEl = document.querySelector(outerContainerId);
    this.containerEl = null;
    this.detailsButton = this.outerContainerEl.querySelector('#details-button');
    this.config = opt_config || Runner.config;
    this.dimensions = Runner.defaultDimensions;
    this.canvas = null;
    this.canvasCtx = null;
    this.tRex = null;
    this.distanceMeter = null;
    this.distanceRan = 0;
    this.highestScore = 0;
    this.runningTime = 0;
    this.msPerFrame = 1000 / FPS;
    this.currentSpeed = this.config.SPEED;
    this.obstacles = M
    this.started = false;
    this.activated = false;
    this.crashed = false;
    this.paused = false;
    this.resizeTimerId_ = null;
    this.playCount = 0;
    this.audioBuffer = null;
    this.soundFx = {};
    // Global web audio context for playing sounds.
    this.audioContext = null;
    this.images = {};
    this.imagesLoaded = 0;
    this.loadImages();
    window['Runner'] = Runner;
    * Default game width.
var DEFAULT_WIDTH = 600;
    * Frames per second.
    var IS_HIDPI = window.devicePixelRatio > 1;
    window.navigator.userAgent.indexOf('UIWebViewForStaticFileContent') > -1;
    var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1 || IS_IOS;
    var IS_TOUCH_ENABLED = 'ontouchstart' in window;
    * Default game configuration.
    Runner.config = {
    ACCELERATION: 0.001,
    BG_CLOUD_SPEED: 0.2,
    CLEAR_TIME: 3000,
    CLOUD_FREQUENCY: 0.5,
    GAMEOVER_CLEAR_TIME: 750,
    GAP_COEFFICIENT: 0.6,
    INITIAL_JUMP_VELOCITY: 12,
    MAX_OBSTACLE_LENGTH: 3,
    MIN_JUMP_HEIGHT: 35,
    MOBILE_SPEED_COEFFICIENT: 1.2,
    RESOURCE_TEMPLATE_ID: 'audio-resources',
    SPEED_DROP_COEFFICIENT: 3
    * @enum {string}
    Runner.defaultDimensions = {
    WIDTH: DEFAULT_WIDTH,
    * CSS class names.
    * @enum {string}
    Runner.classes = {
    CANVAS: 'runner-canvas',
    CONTAINER: 'runner-container',
    CRASHED: 'crashed',
    ICON: 'icon-offline',
    TOUCH_CONTROLLER: 'controller'
    * Image source urls.
    * @enum {array.<object>}
    Runner.imageSources = {
    {name: 'CACTUS_LARGE',M
 id: '1x-obstacle-large'},
    {name: 'CACTUS_SMALL', id: '1x-obstacle-small'},
    {name: 'CLOUD', id: '1x-cloud'},
    {name: 'HORIZON', id: '1x-horizon'},
    {name: 'RESTART', id: '1x-restart'},
    {name: 'TEXT_SPRITE', id: '1x-text'},
    {name: 'TREX', id: '1x-trex'}
    {name: 'CACTUS_LARGE', id: '2x-obstacle-large'},
    {name: 'CACTUS_SMALL', id: '2x-obstacle-small'},
    {name: 'CLOUD', id: '2x-cloud'},
    {name: 'HORIZON', id: '2x-horizon'},
    {name: 'RESTART', id: '2xM
    {name: 'TEXT_SPRITE', id: '2x-text'},
    {name: 'TREX', id: '2x-trex'}
    * Sound FX. Reference to the ID of the audio tag on interstitial page.
    * @enum {string}
    Runner.sounds = {
    BUTTON_PRESS: 'offline-sound-press',
    HIT: 'offline-sound-hit',
    SCORE: 'offline-sound-reached'
    * Key code mapping.
    * @enum {object}
    Runner.keycodes = {
    JUMP: {'38': 1, '32': 1}, // Up, spacebar
    DUCK: {'40': 1}, //M
    RESTART: {'13': 1} // Enter
    * Runner event names.
    * @enum {string}
    Runner.events = {
    ANIM_END: 'webkitAnimationEnd',
    KEYDOWN: 'keydown',
    MOUSEDOWN: 'mousedown',
    MOUSEUP: 'mouseup',
    RESIZE: 'resize',
    TOUCHEND: 'touchend',
    TOUCHSTART: 'touchstart',
    VISIBILITY: 'visibilitychange',
    Runner.prototype = {
Setting individual settings for debugging.
    * @param {string} setting
    * @param {*} value
    updateConfigSetting: function(setting, value) {
    if (setting in this.config && value != undefined) {
    this.config[setting] = value;
    switch (setting) {
    case 'MIN_JUMP_HEIGHT':
    case 'SPEED_DROP_COEFFICIENT':
    this.tRex.config[setting] = value;
    case 'INITIAL_JUMP_VELOCITY':
    this.tRex.setJumpVelocity(value);
   this.setSpeed(value);
    * Load and cache the image assets from the page.
    loadImages: function() {
    var imageSources = IS_HIDPI ? Runner.imageSources.HDPI :
    Runner.imageSources.LDPI;
    var numImages = imageSources.length;
    for (var i = numImages - 1; i >= 0; i--) {
    var imgSource = imageSources[i];
    this.images[imgSource.name] = document.getElementById(imgSource.id);
    * Load and decode M
base 64 encoded sounds.
    loadSounds: function() {
    this.audioContext = new AudioContext();
    var resourceTemplate =
    document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;
    for (var sound in Runner.sounds) {
    resourceTemplate.getElementById(Runner.sounds[sound]).src;
    soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1);
    var buffer = decodeBase64ToArrayBuffer(soundSrc);
    // Async, so no guarantee of order in array.
 this.audioContext.decodeAudioData(buffer, function(index, audioData) {
    this.soundFx[index] = audioData;
    }.bind(this, sound));
    * Sets the game speed. Adjust the speed accordingly if on a smaller screen.
    * @param {number} opt_speed
    setSpeed: function(opt_speed) {
    var speed = opt_speed || this.currentSpeed;
    // Reduce the speed on smaller mobile screens.
    if (this.dimensions.WIDTH < DEFAULT_WIDTH) {
    var mobileSpeed = speed * this.dimensM
ions.WIDTH / DEFAULT_WIDTH *
    this.config.MOBILE_SPEED_COEFFICIENT;
    this.currentSpeed = mobileSpeed > speed ? speed : mobileSpeed;
    } else if (opt_speed) {
    this.currentSpeed = opt_speed;
    * Game initialiser.
    init: function() {
    // Hide the static icon.
    //document.querySelector('.' + Runner.classes.ICON).style.visibility = 'hidden';
    this.adjustDimensions();
    this.setSpeed();
    this.containerEl = document.createElement('div');
ontainerEl.className = Runner.classes.CONTAINER;
    // Player canvas container.
    this.canvas = createCanvas(this.containerEl, this.dimensions.WIDTH,
    this.dimensions.HEIGHT, Runner.classes.PLAYER);
    this.canvasCtx = this.canvas.getContext('2d');
    this.canvasCtx.fillStyle = '#f7f7f7';
    this.canvasCtx.fill();
    Runner.updateCanvasScaling(this.canvas);
    // Horizon contains clouds, obstacles and the ground.
    this.horizon = new Horizon(this.canvas, this.images, this.dimensions,
.config.GAP_COEFFICIENT);
    // Distance meter
    this.distanceMeter = new DistanceMeter(this.canvas,
    this.images.TEXT_SPRITE, this.dimensions.WIDTH);
    this.tRex = new Trex(this.canvas, this.images.TREX);
    this.outerContainerEl.appendChild(this.containerEl);
    if (IS_MOBILE) {
    this.createTouchController();
    this.startListening();
    window.addEventListener(Runner.events.RESIZE,
    this.debounceResize.bind(this));
Create the touch controller. A div that covers whole screen.
    createTouchController: function() {
    this.touchController = document.createElement('div');
    this.touchController.className = Runner.classes.TOUCH_CONTROLLER;
    * Debounce the resize event.
    debounceResize: function() {
    if (!this.resizeTimerId_) {
    this.resizeTimerId_ =
    setInterval(this.adjustDimensions.bind(this), 250);
    * Adjust game space dimensions on resize.M
    adjustDimensions: function() {
    clearInterval(this.resizeTimerId_);
    this.resizeTimerId_ = null;
    var boxStyles = window.getComputedStyle(this.outerContainerEl);
    var padding = Number(boxStyles.paddingLeft.substr(0,
    boxStyles.paddingLeft.length - 2));
    this.dimensions.WIDTH = this.outerContainerEl.offsetWidth - padding * 2;
    // Redraw the elements back onto the canvas.
    if (this.canvas) {
    this.canvas.width = this.dimensions.WIDTH;
    this.canvas.height = this.diM
    Runner.updateCanvasScaling(this.canvas);
    this.distanceMeter.calcXPos(this.dimensions.WIDTH);
    this.clearCanvas();
    this.horizon.update(0, 0, true);
    this.tRex.update(0);
    // Outer container and distance meter.
    if (this.activated || this.crashed) {
    this.containerEl.style.width = this.dimensions.WIDTH + 'px';
    this.containerEl.style.height = this.dimensions.HEIGHT + 'px';
    this.distanceMeter.update(0, Math.ceil(this.distanceRan));
    this.tRex.draw(0, 0);
    // Game over panel.
    if (this.crashed && this.gameOverPanel) {
    this.gameOverPanel.updateDimensions(this.dimensions.WIDTH);
    this.gameOverPanel.draw();
    * Play the game intro.
    * Canvas container width expands out to the full width.
    playIntro: function() {
    if (!this.started && !this.crashed) {
    this.playingIntro = true;
    this.tRex.playingIntro = true;
    // CSS animation definition.
eyframes = '@-webkit-keyframes intro { ' +
    'from { width:' + Trex.config.WIDTH + 'px }' +
    'to { width: ' + this.dimensions.WIDTH + 'px }' +
    document.styleSheets[0].insertRule(keyframes, 0);
    this.containerEl.addEventListener(Runner.events.ANIM_END,
    this.startGame.bind(this));
    this.containerEl.style.webkitAnimation = 'intro .4s ease-out 1 both';
    this.containerEl.style.width = this.dimensions.WIDTH + 'px';
    if (this.touchController) {
    this.outerContainerEl.appendChM
ild(this.touchController);
    this.activated = true;
    this.started = true;
    } else if (this.crashed) {
    * Update the game status to started.
    startGame: function() {
    this.runningTime = 0;
    this.playingIntro = false;
    this.tRex.playingIntro = false;
    this.containerEl.style.webkitAnimation = '';
    this.playCount++;
    // Handle tabbing off the page. Pause the current game.
    window.addEventListener(Runner.events.VISM
    this.onVisibilityChange.bind(this));
    window.addEventListener(Runner.events.BLUR,
    this.onVisibilityChange.bind(this));
    window.addEventListener(Runner.events.FOCUS,
    this.onVisibilityChange.bind(this));
    clearCanvas: function() {
    this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH,
    this.dimensions.HEIGHT);
    * Update the game frame.
    update: function() {
    this.drawPending = false;
    var now = getTimeStamp();
ime = now - (this.time || now);
    this.time = now;
    if (this.activated) {
    this.clearCanvas();
    if (this.tRex.jumping) {
    this.tRex.updateJump(deltaTime, this.config);
    this.runningTime += deltaTime;
    var hasObstacles = this.runningTime > this.config.CLEAR_TIME;
    // First jump triggers the intro.
    if (this.tRex.jumpCount == 1 && !this.playingIntro) {
    this.playIntro();
    // The horizon doesn't move until the intro is over.
    if (this.playingIntro) {
is.horizon.update(0, this.currentSpeed, hasObstacles);
    deltaTime = !this.started ? 0 : deltaTime;
    this.horizon.update(deltaTime, this.currentSpeed, hasObstacles);
    // Check for collisions.
    var collision = hasObstacles &&
    checkForCollision(this.horizon.obstacles[0], this.tRex);
    if (!collision) {
    this.distanceRan += this.currentSpeed * deltaTime / this.msPerFrame;
    if (this.currentSpeed < this.config.MAX_SPEED) {
    this.currentSpeed += this.config.ACCELERAM
    this.gameOver();
    if (this.distanceMeter.getActualDistance(this.distanceRan) >
    this.distanceMeter.maxScore) {
    this.distanceRan = 0;
    var playAcheivementSound = this.distanceMeter.update(deltaTime,
    Math.ceil(this.distanceRan));
    if (playAcheivementSound) {
    this.playSound(this.soundFx.SCORE);
    if (!this.crashed) {
    this.tRex.update(deltaTime);
    * Event handler.
handleEvent: function(e) {
    return (function(evtType, events) {
    switch (evtType) {
    case events.KEYDOWN:
    case events.TOUCHSTART:
    case events.MOUSEDOWN:
    this.onKeyDown(e);
    case events.KEYUP:
    case events.TOUCHEND:
    case events.MOUSEUP:
    this.onKeyUp(e);
    }.bind(this))(e.type, Runner.events);
    * Bind relevant key / mouse / touch listeners.
    startListening: function() {
    document.addEventLM
istener(Runner.events.KEYDOWN, this);
    document.addEventListener(Runner.events.KEYUP, this);
    if (IS_MOBILE) {
    // Mobile only touch devices.
    this.touchController.addEventListener(Runner.events.TOUCHSTART, this);
    this.touchController.addEventListener(Runner.events.TOUCHEND, this);
    this.containerEl.addEventListener(Runner.events.TOUCHSTART, this);
    document.addEventListener(Runner.events.MOUSEDOWN, this);
    document.addEventListener(Runner.events.MOUSEUPM
    * Remove all listeners.
    stopListening: function() {
    document.removeEventListener(Runner.events.KEYDOWN, this);
    document.removeEventListener(Runner.events.KEYUP, this);
    if (IS_MOBILE) {
    this.touchController.removeEventListener(Runner.events.TOUCHSTART, this);
    this.touchController.removeEventListener(Runner.events.TOUCHEND, this);
    this.containerEl.removeEventListener(Runner.events.TOUCHSTART, this);
    document.removeEvenM
tListener(Runner.events.MOUSEDOWN, this);
    document.removeEventListener(Runner.events.MOUSEUP, this);
    * Process keydown.
    * @param {Event} e
    onKeyDown: function(e) {
    if (e.target != this.detailsButton) {
    if (!this.crashed && (Runner.keycodes.JUMP[String(e.keyCode)] ||
    e.type == Runner.events.TOUCHSTART)) {
    if (!this.activated) {
    this.loadSounds();
    this.activated = true;
    if (!this.tRex.jumping) {
    this.playSound(this.sounM
    this.tRex.startJump();
    if (this.crashed && e.type == Runner.events.TOUCHSTART &&
    e.currentTarget == this.containerEl) {
    // Speed drop, activated only when jump key is not pressed.
    if (Runner.keycodes.DUCK[e.keyCode] && this.tRex.jumping) {
    e.preventDefault();
    this.tRex.setSpeedDrop();
    * Process key up.
    * @param {Event} e
    onKeyUp: function(e) {
    var keyCode = StrinM
    var isjumpKey = Runner.keycodes.JUMP[keyCode] ||
    e.type == Runner.events.TOUCHEND ||
    e.type == Runner.events.MOUSEDOWN;
    if (this.isRunning() && isjumpKey) {
    this.tRex.endJump();
    } else if (Runner.keycodes.DUCK[keyCode]) {
    this.tRex.speedDrop = false;
    } else if (this.crashed) {
    // Check that enough time has elapsed before allowing jump key to restart.
    var deltaTime = getTimeStamp() - this.time;
    if (Runner.keycodes.RESTART[keyCode] ||
= Runner.events.MOUSEUP && e.target == this.canvas) ||
    (deltaTime >= this.config.GAMEOVER_CLEAR_TIME &&
    Runner.keycodes.JUMP[keyCode])) {
    } else if (this.paused && isjumpKey) {
    * RequestAnimationFrame wrapper.
    raq: function() {
    if (!this.drawPending) {
    this.drawPending = true;
    this.raqId = requestAnimationFrame(this.update.bind(this));
    * Whether the game is running.
 * @return {boolean}
    isRunning: function() {
    return !!this.raqId;
    * Game over state.
    gameOver: function() {
    this.playSound(this.soundFx.HIT);
    this.crashed = true;
    this.distanceMeter.acheivement = false;
    this.tRex.update(100, Trex.status.CRASHED);
    // Game over panel.
    if (!this.gameOverPanel) {
    this.gameOverPanel = new GameOverPanel(this.canvas,
    this.images.TEXT_SPRITE, this.images.RESTARTM
    this.dimensions);
    this.gameOverPanel.draw();
    // Update the high score.
    if (this.distanceRan > this.highestScore) {
    this.highestScore = Math.ceil(this.distanceRan);
    this.distanceMeter.setHighScore(this.highestScore);
    // Reset the time clock.
    this.time = getTimeStamp();
    stop: function() {
    this.activated = false;
    this.paused = true;
    cancelAnimationFrame(this.raqId);
    play: function() {
  if (!this.crashed) {
    this.activated = true;
    this.paused = false;
    this.tRex.update(0, Trex.status.RUNNING);
    this.time = getTimeStamp();
    restart: function() {
    if (!this.raqId) {
    this.playCount++;
    this.runningTime = 0;
    this.activated = true;
    this.crashed = false;
    this.distanceRan = 0;
    this.setSpeed(this.config.SPEED);
    this.time = getTimeStamp();
    this.containerEl.classList.remove(Runner.classes.CRASHED);
    this.distanceMeter.reset(this.highestScore);
    this.horizon.reset();
    this.tRex.reset();
    this.playSound(this.soundFx.BUTTON_PRESS);
    * Pause the game if the tab is not in focus.
    onVisibilityChange: function(e) {
    if (document.hidden || document.webkitHidden || e.type == 'blur') {
    * @param {SoundBuffer} soundBuffer
    playSound: function(soundBuffer) {
    if (soundBuffer) {
    var sourceNode = this.audioContext.createBufferSource();
    sourceNode.buffer = soundBuffer;
    sourceNode.connect(this.audioContext.destination);
    sourceNode.start(0);
    * Updates the canvas size taking into
    * account the backing store pixel ratio and
    * the device pixel ratio.
    * See article by Paul Lewis:
    * https://www.html5rocks.com/en/tutorials/canvas/hidpi/
aram {HTMLCanvasElement} canvas
    * @param {number} opt_width
    * @param {number} opt_height
    * @return {boolean} Whether the canvas was scaled.
    Runner.updateCanvasScaling = function(canvas, opt_width, opt_height) {
    var context = canvas.getContext('2d');
    // Query the various pixel ratios
    var devicePixelRatio = Math.floor(window.devicePixelRatio) || 1;
    var backingStoreRatio = Math.floor(context.webkitBackingStorePixelRatio) || 1;
    var ratio = devicePixelRatio / backingSM
    // Upscale the canvas if the two ratios don't match
    if (devicePixelRatio !== backingStoreRatio) {
    var oldWidth = opt_width || canvas.width;
    var oldHeight = opt_height || canvas.height;
    canvas.width = oldWidth * ratio;
    canvas.height = oldHeight * ratio;
    canvas.style.width = oldWidth + 'px';
    canvas.style.height = oldHeight + 'px';
    // Scale the context to counter the fact that we've manually scaled
    // our canvas element.
    context.scale(ratio, ratio);
    * Get random number.
    * @param {number} min
    * @param {number} max
    * @param {number}
    function getRandomNum(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    * Vibrate on mobile devices.
    * @param {number} duration Duration of the vibration in milliseconds.
    function vibrate(duration) {
    if (IS_MOBILE && window.navigator.vibrate) {
    window.navigator.vibrate(duM
    * Create canvas element.
    * @param {HTMLElement} container Element to append canvas to.
    * @param {number} width
    * @param {number} height
    * @param {string} opt_classname
    * @return {HTMLCanvasElement}
    function createCanvas(container, width, height, opt_classname) {
    var canvas = document.createElement('canvas');
    canvas.className = opt_classname ? Runner.classes.CANVAS + ' ' +
    opt_classname : Runner.classes.CANVAS;
    canvas.height = height;
    container.appendChild(canvas);
    * Decodes the base 64 audio to ArrayBuffer used by Web Audio.
    * @param {string} base64String
    function decodeBase64ToArrayBuffer(base64String) {
    var len = (base64String.length / 4) * 3;
    var str = atob(base64String);
    var arrayBuffer = new ArrayBuffer(len);
    var bytes = new Uint8Array(arrayBuffer);
    for (var i = 0; i < len; i++) {
    bytes[i] = str.charCodeAt(iM
    return bytes.buffer;
    * Return the current timestamp.
    * @return {number}
    function getTimeStamp() {
    return IS_IOS ? new Date().getTime() : performance.now();
    //******************************************************************************
    * Game over panel.
    * @param {!HTMLCanvasElement} canvas
    * @param {!HTMLImage} textSprite
    * @param {!HTMLImage} restartImg
    * @param {!Object} dimensions Canvas dimensions.
    function GameOverPanel(canvas, textSprite, restartImg, dimensions) {
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.canvasDimensions = dimensions;
    this.textSprite = textSprite;
    this.restartImg = restartImg;
    * Dimensions used in the panel.
    * @enum {number}
    GameOverPanel.dimensions = {
    TEXT_WIDTH: 191,
    TEXT_HEIGHT: 11,
    RESTART_WIDTH: 36,
  RESTART_HEIGHT: 32
    GameOverPanel.prototype = {
    * Update the panel dimensions.
    * @param {number} width New canvas width.
    * @param {number} opt_height Optional new canvas height.
    updateDimensions: function(width, opt_height) {
    this.canvasDimensions.WIDTH = width;
    if (opt_height) {
    this.canvasDimensions.HEIGHT = opt_height;
    * Draw the panel.
    draw: function() {
    var dimensions = GameOverPanel.dimensions;
  var centerX = this.canvasDimensions.WIDTH / 2;
    // Game over text.
    var textSourceX = dimensions.TEXT_X;
    var textSourceY = dimensions.TEXT_Y;
    var textSourceWidth = dimensions.TEXT_WIDTH;
    var textSourceHeight = dimensions.TEXT_HEIGHT;
    var textTargetX = Math.round(centerX - (dimensions.TEXT_WIDTH / 2));
    var textTargetY = Math.round((this.canvasDimensions.HEIGHT - 25) / 3);
    var textTargetWidth = dimensions.TEXT_WIDTH;
    var textTargetHeight = dimensions.TEXT_HEIGHT;
restartSourceWidth = dimensions.RESTART_WIDTH;
    var restartSourceHeight = dimensions.RESTART_HEIGHT;
    var restartTargetX = centerX - (dimensions.RESTART_WIDTH / 2);
    var restartTargetY = this.canvasDimensions.HEIGHT / 2;
    textSourceY *= 2;
    textSourceX *= 2;
    textSourceWidth *= 2;
    textSourceHeight *= 2;
    restartSourceWidth *= 2;
    restartSourceHeight *= 2;
    // Game over text from sprite.
    this.canvasCtx.drawImage(this.textSprite,
eX, textSourceY, textSourceWidth, textSourceHeight,
    textTargetX, textTargetY, textTargetWidth, textTargetHeight);
    // Restart button.
    this.canvasCtx.drawImage(this.restartImg, 0, 0,
    restartSourceWidth, restartSourceHeight,
    restartTargetX, restartTargetY, dimensions.RESTART_WIDTH,
    dimensions.RESTART_HEIGHT);
    //******************************************************************************
    * Check for a collision.
    * @param {!Obstacle} obstacle
@param {!Trex} tRex T-rex object.
    * @param {HTMLCanvasContext} opt_canvasCtx Optional canvas context for drawing
    * collision boxes.
    * @return {Array.<CollisionBox>}
    function checkForCollision(obstacle, tRex, opt_canvasCtx) {
    var obstacleBoxXPos = Runner.defaultDimensions.WIDTH + obstacle.xPos;
    // Adjustments are made to the bounding box as there is a 1 pixel white
    // border around the t-rex and obstacles.
    var tRexBox = new CollisionBox(
    tRex.config.WIDTH - 2,
    tRex.config.HEIGHT - 2);
    var obstacleBox = new CollisionBox(
    obstacle.xPos + 1,
    obstacle.yPos + 1,
    obstacle.typeConfig.width * obstacle.size - 2,
    obstacle.typeConfig.height - 2);
    // Debug outer box
    if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, tRexBox, obstacleBox);
    // Simple outer bounds check.
    if (boxCompare(tRexBox, obstacleBox)) {
    var collisionBoxes = obstacle.collisionBoxes;
    var tRexCollisionBoM
xes = Trex.collisionBoxes;
    // Detailed axis aligned box check.
    for (var t = 0; t < tRexCollisionBoxes.length; t++) {
    for (var i = 0; i < collisionBoxes.length; i++) {
    // Adjust the box to actual positions.
    var adjTrexBox =
    createAdjustedCollisionBox(tRexCollisionBoxes[t], tRexBox);
    var adjObstacleBox =
    createAdjustedCollisionBox(collisionBoxes[i], obstacleBox);
    var crashed = boxCompare(adjTrexBox, adjObstacleBox);
    // Draw boxes for debug.
    if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, adjTrexBox, adjObstacleBox);
    return [adjTrexBox, adjObstacleBox];
    * Adjust the collision box.
    * @param {!CollisionBox} box The original box.
    * @param {!CollisionBox} adjustment Adjustment box.
    * @return {CollisionBox} The adjusted collision box object.
    function createAdjustedCollisionBox(box, adjustment) {
    return new CollisionBox(
    box.y + adjustment.y,
    * Draw the collision boxes for debug.
    function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
    canvasCtx.save();
    canvasCtx.strokeStyle = '#f00';
    canvasCtx.strokeRect(tRexBox.x, tRexBox.y,
    tRexBox.width, tRexBox.height);
    canvasCtx.strokeStyle = '#0f0';
    canvasCtx.strokeRect(obstacleBox.x, obstacleBox.y,
    obstacleBox.width, obstacleBox.height);
    canvasCtx.restore();
    * Compare two collision boxes for a collision.
    * @param {CollisionBox} tRexBox
    * @param {CollisionBox} obstacleBox
    * @return {boolean} Whether the boxes intersected.
    function boxCompare(tRexBox, obstacleBox) {
    var crashed = false;
    var tRexBoxX = tRexBox.x;
    var tRexBoxY = tRexBox.y;
    var obstacleBoxX = obstacleBox.x;
    var obstacleBoxY = obstacleBox.y;
    // Axis-Aligned Bounding Box method.
    if (tRexBox.x < obstacleBoxX + obstacleBox.width M
    tRexBox.x + tRexBox.width > obstacleBoxX &&
    tRexBox.y < obstacleBox.y + obstacleBox.height &&
    tRexBox.height + tRexBox.y > obstacleBox.y) {
    //******************************************************************************
    * Collision box object.
    * @param {number} x X position.
    * @param {number} y Y Position.
    * @param {number} w Width.
    * @param {number} h Height.
    function CollisionBox(x, y, wM
    this.height = h;
    //******************************************************************************
    * @param {HTMLCanvasCtx} canvasCtx
    * @param {Obstacle.type} type
    * @param {image} obstacleImg Image sprite.
    * @param {Object} dimensions
    * @param {number} gapCoefficient Mutipler in determining the gap.
    * @param {number} speed
    function Obstacle(canvasCtx, type, obstacleImgM
    gapCoefficient, speed) {
    this.canvasCtx = canvasCtx;
    this.image = obstacleImg;
    this.typeConfig = type;
    this.gapCoefficient = gapCoefficient;
    this.size = getRandomNum(1, Obstacle.MAX_OBSTACLE_LENGTH);
    this.dimensions = dimensions;
    this.remove = false;
    this.yPos = this.typeConfig.yPos;
    this.collisionBoxes = [];
    this.init(speed);
    * Coefficient for calculating the maximuM
    Obstacle.MAX_GAP_COEFFICIENT = 1.5;
    * Maximum obstacle grouping count.
    Obstacle.MAX_OBSTACLE_LENGTH = 3,
    Obstacle.prototype = {
    * Initialise the DOM for the obstacle.
    * @param {number} speed
    init: function(speed) {
    this.cloneCollisionBoxes();
    // Only allow sizing if we're at the right speed.
    if (this.size > 1 && this.typeConfig.multipleSpeed > speed) {
idth = this.typeConfig.width * this.size;
    this.xPos = this.dimensions.WIDTH - this.width;
    // Make collision box adjustments,
    // Central box is adjusted to the size as one box.
    // ____ ______ ________
    // _| |-| _| |-| _| |-|
    // | |<->| | | |<--->| | | |<----->| |
    // | | 1 | | | | 2 | | | | 3 | |
    // |_|___|_| |_|_____|_| |_|_______|_|
    if (this.size > 1) {
    this.collisionBoxes[1].width = this.width - this.collisionBoxes[0].width -
lisionBoxes[2].width;
    this.collisionBoxes[2].x = this.width - this.collisionBoxes[2].width;
    this.gap = this.getGap(this.gapCoefficient, speed);
    * Draw and crop based on size.
    draw: function() {
    var sourceWidth = this.typeConfig.width;
    var sourceHeight = this.typeConfig.height;
    sourceWidth = sourceWidth * 2;
    sourceHeight = sourceHeight * 2;
    var sourceX = (sourceWidth * this.size) * (0.5 * (this.sizM
    this.canvasCtx.drawImage(this.image,
    sourceWidth * this.size, sourceHeight,
    this.xPos, this.yPos,
    this.typeConfig.width * this.size, this.typeConfig.height);
    * Obstacle frame update.
    * @param {number} deltaTime
    * @param {number} speed
    update: function(deltaTime, speed) {
    if (!this.remove) {
    this.xPos -= Math.floor((speed * FPS / 1000) * deltaTime);
    if (!this.isVisible()) {
    this.remove = tM
    * Calculate a random gap size.
    * - Minimum gap gets wider as speed increses
    * @param {number} gapCoefficient
    * @param {number} speed
    * @return {number} The gap size.
    getGap: function(gapCoefficient, speed) {
    var minGap = Math.round(this.width * speed +
    this.typeConfig.minGap * gapCoefficient);
    var maxGap = Math.round(minGap * Obstacle.MAX_GAP_COEFFICIENT);
    return getRandomNum(minGap, maxGap);
if obstacle is visible.
    * @return {boolean} Whether the obstacle is in the game area.
    isVisible: function() {
    return this.xPos + this.width > 0;
    * Make a copy of the collision boxes, since these will change based on
    * obstacle type and size.
    cloneCollisionBoxes: function() {
    var collisionBoxes = this.typeConfig.collisionBoxes;
    for (var i = collisionBoxes.length - 1; i >= 0; i--) {
    this.collisionBoxes[i] = new CollisionBox(collisionBoxes[iM
    collisionBoxes[i].y, collisionBoxes[i].width,
    collisionBoxes[i].height);
    * Obstacle definitions.
    * minGap: minimum pixel space betweeen obstacles.
    * multipleSpeed: Speed at which multiples are allowed.
    Obstacle.types = [
    type: 'CACTUS_SMALL',
    className: ' cactus cactus-small ',
    multipleSpeed: 3,
    collisionBoxes: [
    new CollisionBox(0, 7, 5, 27),
    new CollisionBox(4, 0, 6, 34),
    new CollisionBox(10, 4, 7, 14)
    type: 'CACTUS_LARGE',
    className: ' cactus cactus-large ',
    multipleSpeed: 6,
    collisionBoxes: [
    new CollisionBox(0, 12, 7, 38),
    new CollisionBox(8, 0, 7, 49),
    new CollisionBox(13, 10, 10, 38)
    //******************************************************************************
    * @param {HTMLCanvas} canvas
    * @param {HTMLImage} image Character image.
    function Trex(canvas, image) {
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.image = image;
    // Position when on the ground.
    this.groundYPos = 0;
    this.currentFrame = 0;
    this.currentAnimFrames = [];
    this.blinkDelay = 0;
    this.animStartTime = 0;
    this.msPerFrame = M
    this.config = Trex.config;
    // Current status.
    this.status = Trex.status.WAITING;
    this.jumping = false;
    this.jumpVelocity = 0;
    this.reachedMinHeight = false;
    this.speedDrop = false;
    this.jumpCount = 0;
    this.jumpspotX = 0;
    * T-rex player config.
    * @enum {number}
    DROP_VELOCITY: -5,
    INIITAL_JUMP_VELOCITY: -10,
    INTRO_DURATION: 1500,
    MIN_JUMP_HEIGHT: 30,
    SPEED_DROP_COEFFICIENT: 3,
    SPRITE_WIDTH: 262,
    START_X_POS: 50,
    * Used in collision detection.
    * @type {Array.<CollisionBox>}
    Trex.collisionBoxes = [
    new CollisionBox(1, -1, 30, 26),
    new CollisionBox(32, 0, 8, 16),
    new CollisionBox(10, 35, 14, 8),
    new CollisionBox(1, 24, 29, 5),
    new CollisionBox(5, 30, 21, 4),
    new CollisionBox(9, 34, 15, 4)
    * @enum {string}
    CRASHED: 'CRASHED',
    JUMPING: 'JUMPING',
    RUNNING: 'RUNNING',
    WAITING: 'WAITING'
    * Blinking coefficient.
    Trex.BLINK_TIMING = 7000;
    * Animation config for different states.
    * @enum {object}
    Trex.animFrames = {
    frames: [44, 0],
    msPerFrame: 1000 / 3
    frames: [88, 132],
    msPerFrame: 1000 / 12
    msPerFrame: 1000 / 60
    msPerFrame: 1000 / 60
    Trex.prototype = {
    * T-rex player initaliser.
    * Sets the t-rex to blink at random intervals.
    init: function() {
    this.blinkDelay = this.setBlinkDelay();
    this.groundYPos = Runner.defaultDimensions.HEIGHT - this.config.HEIGHT -
    Runner.config.BOTTOM_PAD;
    this.yPos = this.groundYPos;
    this.minJumpHeight = this.groundYPos M
- this.config.MIN_JUMP_HEIGHT;
    this.draw(0, 0);
    this.update(0, Trex.status.WAITING);
    * Setter for the jump velocity.
    * The approriate drop velocity is also set.
    setJumpVelocity: function(setting) {
    this.config.INIITAL_JUMP_VELOCITY = -setting;
    this.config.DROP_VELOCITY = -setting / 2;
    * Set the animation status.
    * @param {!number} deltaTime
    * @param {Trex.status} status Optional status to switch to.
tion(deltaTime, opt_status) {
    this.timer += deltaTime;
    // Update the status.
    if (opt_status) {
    this.status = opt_status;
    this.currentFrame = 0;
    this.msPerFrame = Trex.animFrames[opt_status].msPerFrame;
    this.currentAnimFrames = Trex.animFrames[opt_status].frames;
    if (opt_status == Trex.status.WAITING) {
    this.animStartTime = getTimeStamp();
    this.setBlinkDelay();
    // Game intro animation, T-rex moves in from the left.
    if (this.playingIntro && thiM
s.xPos < this.config.START_X_POS) {
    this.xPos += Math.round((this.config.START_X_POS /
    this.config.INTRO_DURATION) * deltaTime);
    if (this.status == Trex.status.WAITING) {
    this.blink(getTimeStamp());
    this.draw(this.currentAnimFrames[this.currentFrame], 0);
    // Update the frame position.
    if (this.timer >= this.msPerFrame) {
    this.currentFrame = this.currentFrame ==
    this.currentAnimFrames.length - 1 ? 0 : this.currentFrame + 1;
    this.timer = 0;M
    * Draw the t-rex to a particular position.
    * @param {number} x
    * @param {number} y
    draw: function(x, y) {
    var sourceX = x;
    var sourceY = y;
    var sourceWidth = this.config.WIDTH;
    var sourceHeight = this.config.HEIGHT;
    sourceWidth *= 2;
    sourceHeight *= 2;
    this.canvasCtx.drawImage(this.image, sourceX, sourceY,
    sourceWidth, sourceHeight,
    this.xPos, this.yPos,M
    this.config.WIDTH, this.config.HEIGHT);
    * Sets a random time for the blink to happen.
    setBlinkDelay: function() {
    this.blinkDelay = Math.ceil(Math.random() * Trex.BLINK_TIMING);
    * Make t-rex blink at random intervals.
    * @param {number} time Current time in milliseconds.
    blink: function(time) {
    var deltaTime = time - this.animStartTime;
    if (deltaTime >= this.blinkDelay) {
    this.draw(this.currentAnimFrames[this.currentM
    if (this.currentFrame == 1) {
    // Set new random delay to blink.
    this.setBlinkDelay();
    this.animStartTime = time;
    * Initialise a jump.
    startJump: function() {
    if (!this.jumping) {
    this.update(0, Trex.status.JUMPING);
    this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY;
    this.jumping = true;
    this.reachedMinHeight = false;
    this.speedDrop = false;
    * Jump is complete, falling down.M
    endJump: function() {
    if (this.reachedMinHeight &&
    this.jumpVelocity < this.config.DROP_VELOCITY) {
    this.jumpVelocity = this.config.DROP_VELOCITY;
    * Update frame for a jump.
    * @param {number} deltaTime
    updateJump: function(deltaTime) {
    var msPerFrame = Trex.animFrames[this.status].msPerFrame;
    var framesElapsed = deltaTime / msPerFrame;
    // Speed drop makes Trex fall faster.
    if (this.speedDrop) {
    this.yPos += Math.rouM
nd(this.jumpVelocity *
    this.config.SPEED_DROP_COEFFICIENT * framesElapsed);
    this.yPos += Math.round(this.jumpVelocity * framesElapsed);
    this.jumpVelocity += this.config.GRAVITY * framesElapsed;
    // Minimum height has been reached.
    if (this.yPos < this.minJumpHeight || this.speedDrop) {
    this.reachedMinHeight = true;
    // Reached max height
    if (this.yPos < this.config.MAX_JUMP_HEIGHT || this.speedDrop) {
    // Back down at M
ground level. Jump completed.
    if (this.yPos > this.groundYPos) {
    this.jumpCount++;
    this.update(deltaTime);
    * Set the speed drop. Immediately cancels the current jump.
    setSpeedDrop: function() {
    this.speedDrop = true;
    this.jumpVelocity = 1;
    * Reset the t-rex to running at start of game.
    reset: function() {
    this.yPos = this.groundYPos;
    this.jumpVelocity = 0;
    this.jumping = false;
  this.update(0, Trex.status.RUNNING);
    this.midair = false;
    this.speedDrop = false;
    this.jumpCount = 0;
    //******************************************************************************
    * Handles displaying the distance meter.
    * @param {!HTMLCanvasElement} canvas
    * @param {!HTMLImage} spriteSheet Image sprite.
    * @param {number} canvasWidth
    function DistanceMeter(canvas, spriteSheet, canvasWidth) {
    this.canvas = canvM
    this.canvasCtx = canvas.getContext('2d');
    this.image = spriteSheet;
    this.currentDistance = 0;
    this.maxScore = 0;
    this.highScore = 0;
    this.container = null;
    this.digits = [];
    this.acheivement = false;
    this.defaultString = '';
    this.flashTimer = 0;
    this.flashIterations = 0;
    this.config = DistanceMeter.config;
    this.init(canvasWidth);
    * @enum {number}
    DistanceMeter.dimensions = {
    * Y positioning of the digits in the sprite sheet.
    * X position is always 0.
    * @type {array.<number>}
    DistanceMeter.yPos = [0, 13, 27, 40, 53, 67, 80, 93, 107, 120];
    * Distance meter config.
    * @enum {number}
    DistanceMeter.config = {
    // Number of digits.
    MAX_DISTANCE_UNITS: 5,
    // Distance that causes achievement animation.
    ACHIEVEMENT_DISTANCE: 100,
    // Used for converM
sion from pixel distance to a scaled unit.
    COEFFICIENT: 0.025,
    // Flash duration in milliseconds.
    FLASH_DURATION: 1000 / 4,
    // Flash iterations for achievement animation.
    FLASH_ITERATIONS: 3
    DistanceMeter.prototype = {
    * Initialise the distance meter to '00000'.
    * @param {number} width Canvas width in px.
    init: function(width) {
    var maxDistanceStr = '';
    this.calcXPos(width);
    this.maxScore = this.config.MAX_DISTANCE_UNITS;
(var i = 0; i < this.config.MAX_DISTANCE_UNITS; i++) {
    this.draw(i, 0);
    this.defaultString += '0';
    maxDistanceStr += '9';
    this.maxScore = parseInt(maxDistanceStr);
    * Calculate the xPos in the canvas.
    * @param {number} canvasWidth
    calcXPos: function(canvasWidth) {
    this.x = canvasWidth - (DistanceMeter.dimensions.DEST_WIDTH *
    (this.config.MAX_DISTANCE_UNITS + 1));
    * Draw a digit to canvas.
    * @param {number} digitPoM
s Position of the digit.
    * @param {number} value Digit value 0-9.
    * @param {boolean} opt_highScore Whether drawing the high score.
    draw: function(digitPos, value, opt_highScore) {
    var sourceWidth = DistanceMeter.dimensions.WIDTH;
    var sourceHeight = DistanceMeter.dimensions.HEIGHT;
    var sourceX = DistanceMeter.dimensions.WIDTH * value;
    var targetX = digitPos * DistanceMeter.dimensions.DEST_WIDTH;
    var targetY = this.y;
    var targetWidth = DistanceMeter.dimensions.WIDTM
    var targetHeight = DistanceMeter.dimensions.HEIGHT;
    // For high DPI we 2x source values.
    sourceWidth *= 2;
    sourceHeight *= 2;
    this.canvasCtx.save();
    if (opt_highScore) {
    // Left of the current score.
    var highScoreX = this.x - (this.config.MAX_DISTANCE_UNITS * 2) *
    DistanceMeter.dimensions.WIDTH;
    this.canvasCtx.translate(highScoreX, this.y);
    this.canvasCtx.translate(this.x, this.y);
.canvasCtx.drawImage(this.image, sourceX, 0,
    sourceWidth, sourceHeight,
    targetX, targetY,
    targetWidth, targetHeight
    this.canvasCtx.restore();
    * Covert pixel distance to a 'real' distance.
    * @param {number} distance Pixel distance ran.
    * @return {number} The 'real' distance ran.
    getActualDistance: function(distance) {
    return distance ?
    Math.round(distance * this.config.COEFFICIENT) : 0;
    * Update the distance meteM
    * @param {number} deltaTime
    * @param {number} distance
    * @return {boolean} Whether the acheivement sound fx should be played.
    update: function(deltaTime, distance) {
    var paint = true;
    var playSound = false;
    if (!this.acheivement) {
    distance = this.getActualDistance(distance);
    if (distance > 0) {
    // Acheivement unlocked
    if (distance % this.config.ACHIEVEMENT_DISTANCE == 0) {
    // Flash score and play sound.
    this.acheivement = true;
    playSound = true;
    // Create a string representation of the distance with leading 0.
    var distanceStr = (this.defaultString +
    distance).substr(-this.config.MAX_DISTANCE_UNITS);
    this.digits = distanceStr.split('');
    this.digits = this.defaultString.split('');
    // Control flashing of the score on reaching acheivement.
    if (this.flashIterations <= this.config.FLASH_ITERATIONS) {
    this.flashTimer += deltaTime;
flashTimer < this.config.FLASH_DURATION) {
    } else if (this.flashTimer >
    this.config.FLASH_DURATION * 2) {
    this.flashTimer = 0;
    this.flashIterations++;
    this.acheivement = false;
    this.flashIterations = 0;
    this.flashTimer = 0;
    // Draw the digits if not flashing.
    for (var i = this.digits.length - 1; i >= 0; i--) {
    this.draw(i, parseInt(this.digits[i]));
    this.drawHighScore();
    * Draw the high score.
    drawHighScore: function() {
    this.canvasCtx.save();
    this.canvasCtx.globalAlpha = .8;
    for (var i = this.highScore.length - 1; i >= 0; i--) {
    this.draw(i, parseInt(this.highScore[i], 10), true);
    this.canvasCtx.restore();
    * Set the highscore as a array string.
    * Position of char in the sprite: H - 10, I - 11.
    * @param {number} distance Distance ran in pixels.
core: function(distance) {
    distance = this.getActualDistance(distance);
    var highScoreStr = (this.defaultString +
    distance).substr(-this.config.MAX_DISTANCE_UNITS);
    this.highScore = ['10', '11', ''].concat(highScoreStr.split(''));
    * Reset the distance meter back to '00000'.
    reset: function() {
    this.acheivement = false;
    //******************************************************************************
oud background item.
    * Similar to an obstacle object but without collision boxes.
    * @param {HTMLCanvasElement} canvas Canvas element.
    * @param {Image} cloudImg
    * @param {number} containerWidth
    function Cloud(canvas, cloudImg, containerWidth) {
    this.canvas = canvas;
    this.canvasCtx = this.canvas.getContext('2d');
    this.image = cloudImg;
    this.containerWidth = containerWidth;
    this.xPos = containerWidth;
    this.remove = false;
dGap = getRandomNum(Cloud.config.MIN_CLOUD_GAP,
    Cloud.config.MAX_CLOUD_GAP);
    * Cloud object config.
    * @enum {number}
    Cloud.config = {
    MAX_CLOUD_GAP: 400,
    MAX_SKY_LEVEL: 30,
    MIN_CLOUD_GAP: 100,
    MIN_SKY_LEVEL: 71,
    Cloud.prototype = {
    * Initialise the cloud. Sets the Cloud height.
    init: function() {
    this.yPos = getRandomNum(Cloud.config.MAX_SKY_LEVEL,
d.config.MIN_SKY_LEVEL);
    * Draw the cloud.
    draw: function() {
    this.canvasCtx.save();
    var sourceWidth = Cloud.config.WIDTH;
    var sourceHeight = Cloud.config.HEIGHT;
    sourceWidth = sourceWidth * 2;
    sourceHeight = sourceHeight * 2;
    this.canvasCtx.drawImage(this.image, 0, 0,
    sourceWidth, sourceHeight,
    this.xPos, this.yPos,
    Cloud.config.WIDTH, Cloud.config.HEIGHT);
    this.canvasCtx.restore();
    * Update the cloud position.
    * @param {number} speed
    update: function(speed) {
    if (!this.remove) {
    this.xPos -= Math.ceil(speed);
    // Mark as removeable if no longer in the canvas.
    if (!this.isVisible()) {
    this.remove = true;
    * Check if the cloud is visible on the stage.
    * @return {boolean}
    isVisible: function() {
    return this.xPos + Cloud.config.WIDTH > 0;
******************************************************************************
    * Consists of two connecting lines. Randomly assigns a flat / bumpy horizon.
    * @param {HTMLCanvasElement} canvas
    * @param {HTMLImage} bgImg Horizon line sprite.
    function HorizonLine(canvas, bgImg) {
    this.image = bgImg;
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.sourceDimensions = {};
    this.dimensions = HorizonLiM
    this.sourceXPos = [0, this.dimensions.WIDTH];
    this.bumpThreshold = 0.5;
    this.setSourceDimensions();
    * Horizon line dimensions.
    * @enum {number}
    HorizonLine.dimensions = {
    HorizonLine.prototype = {
    * Set the source dimensions of the horizon line.
    setSourceDimensions: function() {
    for (var dimensioM
n in HorizonLine.dimensions) {
    if (dimension != 'YPOS') {
    this.sourceDimensions[dimension] =
    HorizonLine.dimensions[dimension] * 2;
    this.sourceDimensions[dimension] =
    HorizonLine.dimensions[dimension];
    this.dimensions[dimension] = HorizonLine.dimensions[dimension];
    this.xPos = [0, HorizonLine.dimensions.WIDTH];
    this.yPos = HorizonLine.dimensions.YPOS;
    * Return the crop x position of a type.
    getRandomType: function() {
    return Math.random() > this.bumpThreshold ? this.dimensions.WIDTH : 0;
    * Draw the horizon line.
    draw: function() {
    this.canvasCtx.drawImage(this.image, this.sourceXPos[0], 0,
    this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
    this.xPos[0], this.yPos,
    this.dimensions.WIDTH, this.dimensions.HEIGHT);
    this.canvasCtx.drawImage(this.image, this.sourceXPos[1], 0,
    this.sourceDimensions.WIDTH, this.sourceDimensionsM
    this.xPos[1], this.yPos,
    this.dimensions.WIDTH, this.dimensions.HEIGHT);
    * Update the x position of an indivdual piece of the line.
    * @param {number} pos Line position.
    * @param {number} increment
    updateXPos: function(pos, increment) {
    var line1 = pos;
    var line2 = pos == 0 ? 1 : 0;
    this.xPos[line1] -= increment;
    this.xPos[line2] = this.xPos[line1] + this.dimensions.WIDTH;
    if (this.xPos[line1] <= -this.dimensions.WIDTH) {
his.xPos[line1] += this.dimensions.WIDTH * 2;
    this.xPos[line2] = this.xPos[line1] - this.dimensions.WIDTH;
    this.sourceXPos[line1] = this.getRandomType();
    * Update the horizon line.
    * @param {number} deltaTime
    * @param {number} speed
    update: function(deltaTime, speed) {
    var increment = Math.floor(speed * (FPS / 1000) * deltaTime);
    if (this.xPos[0] <= 0) {
    this.updateXPos(0, increment);
    this.updateXPos(1, increment);
    * Reset horizon to the starting position.
    reset: function() {
    this.xPos[0] = 0;
    this.xPos[1] = HorizonLine.dimensions.WIDTH;
    //******************************************************************************
    * Horizon background class.
    * @param {HTMLCanvasElement} canvas
    * @param {Array.<HTMLImageElement>} images
    * @param {object} dimensions Canvas dimensions.
    * @param {number} gapCoefficient
    function Horizon(canvas, images, dimensions, gapCoefficient) {
    this.canvas = canvas;
    this.canvasCtx = this.canvas.getContext('2d');
    this.config = Horizon.config;
    this.dimensions = dimensions;
    this.gapCoefficient = gapCoefficient;
    this.obstacles = [];
    this.horizonOffsets = [0, 0];
    this.cloudFrequency = this.config.CLOUD_FREQUENCY;
    this.clouds = [];
    this.cloudImg = images.CLOUD;
    this.cloudSpeed = this.config.BG_CLOUD_SPEED;M
    this.horizonImg = images.HORIZON;
    this.horizonLine = null;
    this.obstacleImgs = {
    CACTUS_SMALL: images.CACTUS_SMALL,
    CACTUS_LARGE: images.CACTUS_LARGE
    * Horizon config.
    * @enum {number}
    Horizon.config = {
    BG_CLOUD_SPEED: 0.2,
    BUMPY_THRESHOLD: .3,
    CLOUD_FREQUENCY: .5,
    HORIZON_HEIGHT: 16,
    Horizon.prototype = {
    * Initialise the hoM
rizon. Just add the line and a cloud. No obstacles.
    init: function() {
    this.addCloud();
    this.horizonLine = new HorizonLine(this.canvas, this.horizonImg);
    * @param {number} deltaTime
    * @param {number} currentSpeed
    * @param {boolean} updateObstacles Used as an override to prevent
    * the obstacles from being updated / added. This happens in the
    * ease in section.
    update: function(deltaTime, currentSpeed, updateObstacles) {
    this.horizonLine.update(deltaTime, currentSpeed);
    this.updateClouds(deltaTime, currentSpeed);
    if (updateObstacles) {
    this.updateObstacles(deltaTime, currentSpeed);
    * Update the cloud positions.
    * @param {number} deltaTime
    * @param {number} currentSpeed
    updateClouds: function(deltaTime, speed) {
    var cloudSpeed = this.cloudSpeed / 1000 * deltaTime * speed;
    var numClouds = this.clouds.length;
    if (numClouds) {
or (var i = numClouds - 1; i >= 0; i--) {
    this.clouds[i].update(cloudSpeed);
    var lastCloud = this.clouds[numClouds - 1];
    // Check for adding a new cloud.
    if (numClouds < this.config.MAX_CLOUDS &&
    (this.dimensions.WIDTH - lastCloud.xPos) > lastCloud.cloudGap &&
    this.cloudFrequency > Math.random()) {
    this.addCloud();
    // Remove expired clouds.
    this.clouds = this.clouds.filter(function(obj) {
    return !obj.remove;
te the obstacle positions.
    * @param {number} deltaTime
    * @param {number} currentSpeed
    updateObstacles: function(deltaTime, currentSpeed) {
    // Obstacles, move to Horizon layer.
    var updatedObstacles = this.obstacles.slice(0);
    for (var i = 0; i < this.obstacles.length; i++) {
    var obstacle = this.obstacles[i];
    obstacle.update(deltaTime, currentSpeed);
    // Clean up existing obstacles.
    if (obstacle.remove) {
    updatedObstacles.shift();
stacles = updatedObstacles;
    if (this.obstacles.length > 0) {
    var lastObstacle = this.obstacles[this.obstacles.length - 1];
    if (lastObstacle && !lastObstacle.followingObstacleCreated &&
    lastObstacle.isVisible() &&
    (lastObstacle.xPos + lastObstacle.width + lastObstacle.gap) <
    this.dimensions.WIDTH) {
    this.addNewObstacle(currentSpeed);
    lastObstacle.followingObstacleCreated = true;
    // Create new obstacles.
    this.addNewObstacle(currentSpeed);
    * Add a new obstacle.
    * @param {number} currentSpeed
    addNewObstacle: function(currentSpeed) {
    var obstacleTypeIndex =
    getRandomNum(0, Obstacle.types.length - 1);
    var obstacleType = Obstacle.types[obstacleTypeIndex];
    var obstacleImg = this.obstacleImgs[obstacleType.type];
    this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType,
    obstacleImg, this.dimensions, this.gapCoefficient, currentSpeed));
    * Reset the horizon layer.
    * Remove existing obstacles and reposition the horizon line.
    reset: function() {
    this.obstacles = [];
    this.horizonLine.reset();
    * Update the canvas width and scaling.
    * @param {number} width Canvas width.
    * @param {number} height Canvas height.
    resize: function(width, height) {
    this.canvas.width = width;
    this.canvas.height = height;
    * Add a new cloud to the horizon.
    addCloud: function() {
clouds.push(new Cloud(this.canvas, this.cloudImg,
    this.dimensions.WIDTH));
	<style>/* Copyright 2014 The Chromium Authors. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file. */
  background-color: #f7f7f7;
body.safe-browsing {
  background-color: rgb(206, 52, 38);
ound: rgb(76, 142, 250);
  border-radius: 2px;
  box-sizing: border-box;
  font-size: .875em;
  padding: 8px 24px;
  transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
[dir='rtl'] button {
  background: rgb(50, 102, 213);
  box-shadow: 0 1px 3px rgba(0, 0, 0, .50);
.debugging-content {
  font-weight: bold;
  margin: 45px 0 50px;
#details p:not(:first-of-type) {
  text-transform: uppercase;
#error-debugging-info {
  -webkit-margin-after: 16px;
  font-weight: normal;
  line-height: 1.25em;
  font-weight: normal;M
  background-repeat: no-repeat;
  background-size: 100%;
input[type=checkbox] {
  visibility: hidden;
.interstitial-wrapper {
  box-sizing: border-box;
  line-height: 1.6em;
  margin: 50px auto 0;
  font-size: .875em;
.nav-wrapper::after {
  -webkit-margin-start: 32px;
.safe-browsing :-webkit-any(
    a, #details, #details-button, h1, h2, p, .small-link) {
.safe-browsing button {
  background-color: rgb(206, 52, 38);
  border: 1px solid white;
.safe-browsing button:active {
  background-color: rgb(206, 52, 38);
  border-color: rgba(255, 255, 255, .6);
.safe-browsing button:hover {
  box-shadow: 0 2px 3px rgba(0, 0, 0, .5);
.safe-browsing .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABoVBMVEX///+Li4v////////y8vL09PT99fTbRDfXzMzt7e3v7+/s7Ozy8vLw8PDu7u799PPSQTXx8fHZdGv19fX09PTm5ubbV0zXzczgW1Dd3d3c3Nzjb2Th4eHr6+vl5eXp6enZ2dng4OD29vbz8/PYYFXZV0zaYVbjbWP219TRQTTXdGz43Nn++/rib2T////b29vTQjXaYVf66ObngXjjbmTq6ura2trngHf76Ofk19bX19fe3t7o6Oji4uLk5OTeU0f119TYQzbZQzbWQjbXQzbZRDfaRDfn5+fbV0vj4+PVQjXf39/Y2Njgcmney8rqk4zdysn43drcysjcUETa1tbadGvaV0vaWEzZYVbibmXc2NjM
fzMvi0M7mfHPYYVbhzszd2dnZx8XieXDkc2nWX1Xacmne2trZdGzbcWjj0c/XTUHX1NPVX1Xg3NzYdGvYXFHZ1dXWTUHgzczUX1Xh3d3XdWzWXFHaVkvXxcTVTEHhbmXTXlXi3t7ayMbVXFLgbmXUTEDXYFXSXlTXzMvk4ODUXFHWbGPWzMvk4eHZioP39/f9Ro5BAAAABnRSTlMAAOQk5ye8yu+CAAACRklEQVR4XrXWRZPbUBSEUWdmIpl5mJmZg8zMzMzMzPCr43isNqif76u6lW+nuzgrtUqB/1ptzUSVamrVDiS1A0ntQFI7kNQOJLUDSe1AUjuQ1A4ktQNJ70DSO5D0DiS9A0nvQIKjlOAoJThqyewsXZ1hQOL8YZNkcJrcJiIlBt2No0zKQSbHJVJiznW5BIg4kMocSDIEBxKcwvkoJAE6uMJAguO13xIaWyyRiDPdGGGQJBFnzb4Qh2Qp0VrmdHXFCSRKxFmYDAsQpNkSiTgtLZAAydIgcZqbYwQSJOqM
s3QsJkCRxp7s7RSBBok5bW5RAgkSd9bujIoS3AA0QZ0NHrx3ktLro5SvidNRnAUkO2nWZOPU7s4BEB9J74qzrzACSHNRwhDid8xlAogPpEHHa23sIxJyB60XpAHEioT9myBnf4XWq8W4aDw1niROKA/I7270u5HbxKI3Hk0+IEzZBzuktXn35XRw7jsOJi34nZoCcN5u9+gq7OJPGqf+czzFAzsdtXp+xi0tpHPtvVzopDl3Z6nUtWNzXjZs436p0DNDQnT0r3QuW7vT+g8L54XKlEzX8RAw9nvrX02D53p89z59f+J0602/NptfJZPKt52AX70Zy5w/EWR0wSp+Gv3z1f3++jQx/545Z+vGTfcd+/eYOJFIEDtkpccxSyNqRpLitI0uWjiyFLR1ZignOqoC1VN0BJEupag4gK8nsALKToiYHkK3Uyx0CiRJ3ANlLWe4AspcyxKGQLHEHkL3UQxwKyRJxCKTtLyVXfw+a8JTgAAAAAElFTkSuQmCC) 1x,
  url(data:image/png;base64,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) 2x);
  font-size: .875em;
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAGEElEQVR4Xu3aa4iUVRzHcU2DCkKLfSEk0btq7+s6O87edO3ei5BemEm+9kVEIJQgZiIFCaGW9cKiqJSQgm5GauOOu+p63Wa3i7lrm9uNNlZxZ9lEurin75k/HHYmzj777JxnePZhBr64+Orshzm/ZwZ2llJqkko5ACgBlYB+uDfusjmUoHW0h7roNxolJfGz/F8X7aF1lKA50zjDjAGqp100TGqaDdMuqo8SUIySpByXpNhMBrqRdtA1UgF1jXbQTTMN6DbqJlWkumnhTAFaSIOkitygIIUbaB71TwHgD3qH1lIT3U43G2T5+Q5aSk/SXro8BaR+mhdmoA89YM7QCpo7jU27gdZQnwfSB2EFWjEJzF/0FM0WgIK6nrZ4jP+KsAHNM
pQsWnCvUJgBOe4z+tQBdoLlhAlpFytIaAQikdaQsPR4moHYLzj4BCKzZdMwClAoL0AL7HshXgoBbNsmHyAUhALJerx4BKEp9tmsWBqCdFqAXigj0sgVoZxiAkhagR4oI9KgFKBkGoAEL0J1FBLrLAvRjGIAyFqBbigh0qwUoEwagvy1A1xURaI4F6J8wAClLs4qcshQ2oBJQGa2n02Z/wl2GTtN6KgsaaDWNkJqhjdDqoICeIRWRnnUNtJLGIwQ0TiudAAEwn4ZJRaxhmu8CaCOpiPacC6DuCAOlXQBlIgx01QWQinIloBLQFCsBlYBKQCWg+5aooRc36n+nBfD78+vVwINNEQUCZXT/Z0q/Rj7a6xvp0puvKf0a62zXSBEAsuCQTySDYxo7khKkqACNfvGpgfGLdOmNnaKS1+WOQ2rggcZoAF18fZtS4+O+kOw40uB7b6nulrpoAPlH8sZJxsqzgRRiIPdInjg/7X7b4Bxq0FWor1rrQgrkHsk3TrsuXqHSrYsiM
AOSNNC2cVLZKQYoAUA6SK5zDuiWCFAGgHCRnOB3UST1LF0UBSPrz+BErzui5syoJhg8cqlJHElWCVAyg8wAE1cVdr3puz8/vv6uSYAAFEAEDEFUCRKAIEIHTmZAEqd7jDGEEsuPYkfbuBqbSF87RRLU62litekEKFKgfANcNC46vfgGpHQg/OMd0gmQ5iwugewBw1uQ4gwxy37aXZLitSFVkgKhKdSTIAFXrQJKOJWpAqhGk/53HCVCDchQ4r0yKc3Bxuc4TKQUK40zAAEQyzpS9XhI48g7qouPUy3DnnalwoD4AXOSNc3e2L2O6ctUPku31K0iHszDm6eWBI51okneSOZd7IPc4F8A5AIzuYExXDhA1TAEJCAEy+5O7QQIkSOCQQXIGdA6AQuq7P6GupM/4xklmq7AiDe37WHUC4A9HOtlcq3qX1XO+EADp+h9uFaQ8nP3A6A7EdOyPDhiAqAIgioO0PRdp6PNPVAcAbI8ZZzPQjQZIkADRGSRwyCAVDPT98gblM
or6HWlWm+5RfHPPZ5/z2rQ5xpFMttaEBMkgDW7doGCmmKweIgAGIKgCiuAGiyuyjvefpteowAAy07A8JUrW+bgJkkGoIIAmgWgJIEqDmusKBzi6PKdfpgwoSMCTXSwcMyfUCJhs4cSklj3aAJj7ewcn57DNlnLACSV0gWXFM+usFGaAq+QxEgsQOJQyQIAGiM0iAkEHKuWJUMNB3AAQVu6CBqAIgasgBAkZqJ/P1QjIblPMEs2+Q1Jy3Qy426NvlsQypoGJEzQbljHScDJBsUEoyG5Qz0vkbBAgJkgXnVEvd1cKB2mLdpIKsi8N74pi4Zom8kQZEZ5AA0RmkZoBAIUFq0UB1GihdMNA3bbFNpIKOw8sVi5MBYn9AAYjc4MgGgSNtKhjo67ZYGWVIBR1jmo9jkm/xeSOdMCNNGqiGAJIAyhlpQQLmpDTCu6isYCCUQFq8isZJBR1I+ukF0sQnmG8cuWKgkCDpKwbMCWn8REvdKmd/ad/btli3gVQx4pfJAglSFdfMM
AAkSIDqDBAgJkhcOgbNBAFwBLQNIWkMjpIIOpIk4phQgOoPUKJktasrboeYaAZIyx1tqnxAAh0A94EyojDZTmsZIBRXbkTvSCTPSOiuOZK7ZGBuUps1AyeY47D9orGBWe54x9AAAAABJRU5ErkJggg==) 1x,
      url(data:image/png;base64,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) 2x);
  margin-top: .36em;
  position: relative;
[dir='rtl'] .styled-checkbox {
.styled-checkbox label {
  background: transparent;
  border: white solid 1px;
  position: absolute;
.styled-checkbox label::after {
  background: transparent;
  border: 2px solid white;
  border-right-width: 0;
  border-top-width: 0;
  position: absolute;
  transform: rotate(-45deg);
.styled-checkbox input[type=checkbox]:checked + label::after {
@media (max-width: 700px) {
@media (max-height: 600px) {
  .interstitial-wrapper {
    margin-top: 5px;
@media (max-width: 400px) {
  [dir='rtl'] button {
    margin: 20px 0 20px 0;
  #details p:not(:first-of-type) {
    margin-top: 10px;
    padding-top: 14px;
    text-align: center;
  .interstitial-wrapper {
    margin-top: 24px;
    margin-top: 30px;
  <style>/* Copyright 2013 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */
/* Don't use the main frame div when the error is in a subframe. */
html[subframe] #main-frame-error {
/* Don't use the subframe errorM
 div when the error is in a main frame. */
html:not([subframe]) #sub-frame-error {
  -webkit-margin-start: 0;
  margin-bottom: 10px;
  -webkit-margin-before: 0;
  font-weight: normal;
  color: rgb(17, 85, 204);
  text-decoration: none;
  -webkit-user-select: none;
   * Can't access chrome://theme/IDM
R_ERROR_NETWORK_GENERIC from an untrusted
   * renderer process, so embed the resource manually.
  content: -webkit-image-set(
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAyCAAAAADkGq1yAAAAAnRSTlMA/1uRIrUAAABLSURBVHhe7dOxDQAgCERRdrza/ScwscNYSKIhWAror9+VR7BjKZbkrSpKeA45K8PQuoYqcUNKbmUzpNkD8kvM/ErlkVFk8necCyU7IotT35DVJRIAAAAASUVORK5CYII=') 1x,
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABkCAAAAAAwZDj3AAAAAnRSTlMA/1uRIrUAAABiSURBVHhe7cy7CYAwFABAd8z+HyewskkTW+EFA3kgSu4GuM
K2ktI71SqWyjeyxirlS2aeMQczfKcuNUjny/1KpPCbKjA+WSqVSqVQqawmy5TlZKpVPQciVSuUEpVKZtVypVF5DHE3/NzR+1AAAAABJRU5ErkJggg==') 2x);
  padding-top: 20px;
  content: -webkit-image-set(
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAvAgMAAADlfsA8AAAADFBMVEX39/f////39/dTU1NOmoBdAAAAAnRSTlMAAHaTzTgAAAB6SURBVHherc2xDUIxDIThE6UbVmEZ9nN9TUZgJWo3Ju8UhGIrHX/1FScdnr82K+PMoZizbozLsfw+OP9mkpvNARuabB6OG6fIZr4uozi4noqTYrcKHoxi63ZodLBG0a0R0c2M5Uw5Z3rzoavqwNf3CGybKH4M
gYXTq6wPqOghb2tvIFQAAAABJRU5ErkJggg==') 1x,
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAABeAgMAAADaoju6AAAADFBMVEX39/f////39/dTU1NOmoBdAAAAAnRSTlMAAHaTzTgAAACDSURBVHhe7dIhDgQhAEPR6jV7urnkN3PEbkIIICCQSdfNl8/UVNe0DA/R0p7BtTzjFkesLO8nX6YUYpj8IcO48Ie+GGa4XSqYYwO4lWUPSpjH4I8s5Vg8Z7RhkeeZE2fRNc/Y5oRtu7NrC26bCKNWktEp2xueT5on/F2yLQlAQGWt+AcZixZ9AfIcYgAAAABJRU5ErkJggg==') 2x);
  position: relative;
  -webkit-transition: height ease-in 218ms;
  background-color: #f9f9f9;
  border-top: 1px solid #EEE;
  text-align: start;
#sub-frame-error-details {
/* Not done on mobile for performance reasons. */
  text-shadow: 0 1px 0 rgba(255,255,255,0.3);
[jscontent=failedUrl] {
  overflow-wrap: break-word;
  /* Prevents a space between controls. */
  border: 1px solid #cdcdcd;
  border: 1px solid rgb(93, 154, 255);
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
      -webkit-image-set(
          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAQAAAB+HTb/AAAArElEQVR4Xn3NsUoCUBzG0XvB3U0chR4geo5qihpt6gkCx0bXFsMERWj2KWqIanAvmlUUoQapwU6g4l8H5bd9Z/iSPS0hu/RqZqrncBuzLl7U3Rn4cSpQFTeroejJl1Lgs7f4ceDPdeBMXYp86gaONYJkY83AnqHiGk9wHnjk16PKgo5N9BUCkzPf5j6M0PfuVg5MymoetFwoaKAlB26WdXAvJ7u5mezitqtkT//7Sv/u96CaLQAAAABJRU5ErkJggg==') 1x,
          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAeCAQAAACVzLYUAAABYElEQVM
R4Xr3VMUuVURzH8XO98jgkGikENkRD0KRGDUVDQy0h2SiC4IuIiktL4AvQt1CDBJUJwo1KXXS6cWdHw7tcjWwoC5Hrx+UZgnNO5CXiO/75jD/+QZf9MzjskVU7DrU1zRv9G9ir5hsA4Nii83+GA9ZI1nI1D6tWAE1TRlQMuuuFDthzMQefgo4nKr+f3dIGDdUUHPYD1ISoMQdgJgUfgqaKEOcxWE/BVTArJBvwC0cGY7gNLgiZNsD1GP4EPVn4EtyLYRuczcJ34HYMP4E7GdajDS7FcB48z8AJ8FmI4TjouBkzZ2yBuRQMlsButIZ+dfDVUBqOaIHvavpLVHXfFmAqv45r9gEHNr3y3hcAfLSgSMPgiiZR+6Z9AMuKNAwqpjUcA2h55pxgAfBWkYRlQ254YMJloaxPHbCkiGCymL5RlLA7GnRDXyuC7uhicLoKdRyaDE5Pl00K//93nABqPgBDK8sfWgAAAABJRU5ErkJggg==') 2x);
.suggestion-header {
  font-weight: bold;
  margin-bottom: 4px;
/* Increase line height at higher resolutions. */
@media (min-width: 641px) and (min-height: 641px) {
    line-height: 18px;
/* Decrease padding at low sizes. */
@media (max-width: 640px), (max-height: 640px) {
    margin: 10px 0 15px;
    margin-top: 10px;
  .suggestion-header {
    margin-bottom: 0;
    margin-top: 10px;
/* Don't allow overflow when in a subframe. */
html[subframe] body {
  -webkit-align-items: center;
  background-color: #DDD;
  display: -webkit-flex;
  -webkit-flex-flow: column;M
  -webkit-justify-content: center;
  position: absolute;
#sub-frame-error:hover {
  background-color: #EEE;
#sub-frame-error-details {
  visibility: hidden;
/* Show details only when hovering. */
#sub-frame-error:hover #sub-frame-error-details {
  visibility: visible;
/* If the iframe is too small, always hide the error code. */
/* TODO(mmenke): See if overflow: no-display works better, once supported. */
dia (max-width: 200px), (max-height: 95px) {
  #sub-frame-error-details {
/* details-button is special; it's a <button> element that looks like a link. */
  background-color: inherit;
  background-image: none;
  text-decoration: underline;
/* Styles for platform dependent separation of controls and details button. */
.suggested-left > #control-buttons,
.suggested-right > #details-buttoM
.suggested-right > #control-buttons,
.suggested-left > #details-button  {
#details-button.singular {
.offline .interstitial-wrapper {
  line-height: 1.55;
  margin: 100px auto 0;
.offline .runner-container {
  position: absolute;
.offline .runner-canvas {
  position: absolute;
.offline .controller {
  background: rgba(247,247,247, .1);
  position: absolute;
#offline-resources {
@media (max-width: 400px) {
  .suggested-left > #control-buttons,
ight > #control-buttons {
    margin: 50px 0 20px;
@media (max-height: 350px) {
    margin: 0 0 15px;
    margin: 0 0 10px;
  .interstitial-wrapper {
    margin-top: 30px;
  window.fbAsyncInit = function() {
      appId      : '576553495813787',
      xfbml      : true,
      version    : 'v2.2'
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
<div id="main-frame-error" class="interstitial-wrapper" jstcache="0">
    <div class="onlyforchrome" style="font-size: 30px;text-align: center;font-family: Helvetica;">Ordinals Running T-Rex</div>
lyforchrome" style="margin-top:5px;text-align:center;color:#8a8a8a;margin-bottom:80px; font-size:.8em;line-height:1.2em;font-family: Georgia;"> from Google Chrome offline mode.<br/> Press "Space" to jump your Dino and start the game.</div>
	<div id="main-frame-notchrome" style="display:none; margin-top:50px;">Sorry, this game only runs on the Google Chrome! You can download it free <a href="https://www.google.com/chrome">here</a></div>
    <div id="offline-resources" jstcache="0">
    <div id="offline-resources-M
      <img id="1x-obstacle-large" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAMAAACJUtIoAAAACVBMVEX////39/dTU1OabbyfAAAAAXRSTlMAQObYZgAAAXhJREFUeF7t2NGqAjEMANGM///RlwvaYQndULuFPJgHUYaEI6IPhgNAOA8HZ+3U6384F5y1U6YzAZTWG+dZamnFEstBFtCKJZSHWMADLJ18z+JqpQeLdKoDC8siC5iFCQs4znIxB5B1t6F3lQWkL4N0JsF+u6GXJdbI+FKW+yWr3lhgCZ2VSag3Nlk/FnRkIRbasLCO0oulikMsvmGpeiGLZ1jOMgtIP5bODivYYUXEIVbwFCt4khVssRgsgidZwQaLd2A8m7MYLGTl4KeQQs2y4kMAMGGlmQViDIb5O6xZnnLD485dIBzqDSE1yyFdL4Iqu4XJqUUWl/NVAFSZq1P6a5aqM
bAUM2epQbBioWflUBABiUyhYyZoCBev8XyMAObDNOhOAfiyxmHU0YNlldGAphGjFCjA3YkUn1o/1Y3EkZFZ5isCC6NUgwDBn1RuXH96doNfAhDXfsIyJ2AnolcCVhay0kcYbW0HvCO8OwIcJ3GzkORpkFuUP/1Ec8FW1qJkAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-obstacle-small" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAAAjCAMAAABRlI+PAAAADFBMVEX////////39/dTU1PhglcSAAAAAXRSTlMAQObYZgAAAPNJREFUeF7tlkEKwzAMBLXr//+5iQhU7gRRQkyhZI+DhwH74jhmO+oIJBVwURljuAXagG5QqkSgBLqg3JnxJ1Cb8SmQ3o6gpO85owGlOB4m2BNKJ11BSd01owGlOHkcIAuHkz6UNpPKgozPM54dADHjJuNhZiJxdQM
CQgZJeBczgCAAy3yhPJvcnmdC9mZwBIsQMFV5AkzHBNknFgcKM+oyDIFcfCAoy03m+jSMIcmoVZkKqSjr1fghyahRmoKRUHYLiSI1SMlCq5CDgX6BXmKkfn+oQ0KEyyrzoy8GbXJ9xrM/YjhUZgl9nnsyTCe9rgSRdV15CwRcIEu8GGQAAAABJRU5ErkJggg==" jstcache="0">
      <img id="1x-cloud" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAOCAQAAAD6HOaKAAAAU0lEQVR4XrWSsQkAQAgD3X9El/ELixQpJHCfdApnUCtXz7o49cgagaGPaq4rIwAP9s/C7R7UX3inJ0BDb6qWDC7ScOR/QWjRlFizuPwLtTLj+qkH6DjD2wLtikUAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-text" src="data:image/png;base64,iM
VBORw0KGgoAAAANSUhEUgAAAL8AAAAYAgMAAADWncTDAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAAO1JREFUeF690TFqxUAQA1BNoRtk7jMu3E9Auv9Vgr/5A863Y9zEhVhkHmhZsEGkw4Lppmllh1tcLHx+aRj2YnEDuQFvcQW+EoZY0TQLCZbEVxRxAvY+i8ikW0C0bwFdbictG2zvu/4EcCuBF0B23IBsQHZBYgm1n86BN+BmyV5rQFyCJAiDJSTfgBV9BbjvXdzIcKchpMOYd3gO/jvCeuUGFALg95J0/SrtQlrzz+sAjDwCIQsbWAdgbqrQpKYRjmPuAfU5dMC+c0rxOTiO+T6ZlK4pbcDLI1DIRaf3GxDGALkQHnD+cGhMKeox+AEOL3mLO7TQZgAAAABJRU5ErkJggg==" jstcache="0">
      <img id="1x-horizon" src="data:image/png;base64,iVBORw0KGgoAAAM
ANSUhEUgAABLAAAAAMAgMAAAAPCKxBAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAALJJREFUeF7t1EEKAyEMhtEvMNm7sPfJEVyY+1+ltLgYAsrQCtWhbxEhQvgxIJtSZypxa/WGshgzKdbq/UihMFMlt3o/CspEYoihIMaAb6mCvM6C+BTAeyo+wN4yykV/6pVfkdLpVyI1hh7GJ6QunUoLEQlQglNP2nkQkeF8+ei9cLxMue1qxVRfk1Ej0s6AEGWfVOk0QUtnK5Xo0Lac6wpdtnQqB6VxomPaz+dgF1PaqqmeWJlz1jYUaSIAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-trex" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAAAvAgMAAABiRrxWAAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAAPpJREFUeF7d0jM
FKRkEMhdGLMM307itNLALyVmHvJuzTDMjdn72E95PGFEZSmeoU4YMMgxhskvQec8YSVFX1NhGcS5ywtbmC8khcZeKq+ZWJ4F8Sr2+ZCErjkJFEfcjAc/6/BMlfcz6xHdhRthYzIZhIHMcTVY1scUUiAphK8CMSPUbieTBhvD9Lj0vyV4wklEGzHpciKGOJoBp7XDcFs4kWxxM7Ey3iZ8JbzASAvMS7XLOJHTTvEkEZSeQl7DMuwVyCasqK5+XzQRYLUJlMbPXjFcn3m8eKBSjWZMJwvGIOvViAzCbUj1VEDoqFOEQGE3SyInJQLOQMJL4B7enP1UbLXJQAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-restart" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAgCAQAAADQmBIFAAAAZklEQVR4Xu3WMQoAIAxDUe/Y+58jYwV1CwQJWQT5o/DAoaWjV2iM
/LRym/A5FjEsR41LPQchByEHwIVAEC4gZpghmSDP8egXpr/hQZaAKQFQe+pBOQAblDC336qrlPpSg0MEjInbWTLFFmwc8TpTAAAAAAElFTkSuQmCC" jstcache="0">
    <div id="offline-resources-2x" jstcache="0">
      <img id="2x-obstacle-large" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAABkBAMAAADOLxDzAAAACVBMVEX///9TU1P39/ea77PDAAAAAXRSTlMAQObYZgAAAa9JREFUeF7t1lFqhEAQBuG+wl6h7n/IEEgKlma2R8Vk1O4HWSh++Xzb8AKA8E4IXrlYnsXr+zgh1OdifZbBdFIApdWiWShtVhmQ+jAWMLFollCOsTzgxiyd7GcR01/YLOZf1SwsN2EBozBgAU9l4TAHkDWzCNjKApZlybO4z+GtFwuM
9bGKZl2TJSyxDxaoX8yyha7LGZRDqxR+ymtUsaNaWhTM+s5rl05tjNUsVz2Kxi6XqhSy4NcvbzgLSnzzvjqzgCCsiHsXSdZwVPIAVHGIhi+ABrOAAi5+Avy7HQhaycpAVpDDBsuKDAOBCrHzjQHgYhl9YsHxf+vRrsQxjVVAsDNMsF6uydBUhq+wWBq/ayCKWZekqA6DKPPEq/ZMsYllWdgGDoMdaLAzMsFwszgoAi1pDxUrWFKhZLlZnpXIkAORAs7YEoFmzQSxmt2NWs+xOP7GapRCiZjUrwFyymhX/xmpWs5rVrGZxQphmsT6LAAsvdgcBhmmWi9VZvN7+x+4K2WtgwBosFmZZvIh9IXsl8M5C1mCxLsvTfizoxfDTAfgdAIPFlVhxRqgHlrVZX9y44aEEvVqmAAAAAElFTkSuQmCC" jstcache="0">
      <img id="2x-obstacle-small" src="data:image/png;base64,iVBORw0KGgoAAM
AANSUhEUgAAAMwAAABGBAMAAAByJ2Z/AAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAARZJREFUeF7t2NEJwzAQg2GtcCtoBe2/W6k5aK8qLgR6ToL9KPzzgR+NPCRRjg2ScjiQ9DKMCE4HRYQOJB2MJyXyQWPQgeSCDD8HnYHh10F6NbJk9KyMwpJ+hkEfnoSyGX1NUmAOqVjSz4zrNgwhm9FbMmEyuS7DpQw/Gf5kOGEYXMgwWBobnGHQmZKsYuyKDcZk8gdmM5uJMzKbgS7I5KENgJzxxN95PUMfAKi8gCXO6BQM4cM4ysEZwplyfxFDErAhmWniDKT3pJEpD2RDMpPEGUt6mOIQ1XFGmiXOZNLIgKUpgzH4lTgDtDIgmY0NznhSnWhk/v2ZkuONGOI2DEn0MNf7ttvMZjazmc2AJDkdJOlQ0sk8AC45t4r28J0GAAAAAElFTkSuQmCC" jstcache="0">
      <img id="2x-clM
oud" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAcAgMAAACR2TCnAAAABlBMVEUAAADa2to4qB92AAAAAXRSTlMAQObYZgAAAFFJREFUeF6VzTEKAFEIxNA03m+a3P8q2wqi/E35BIdeGXq3q5hnrwBs7mC5vIZzu/nnqI319vRtqHB731blwSHjx+22+Rdn94rzQq0ugKPVlz5onyJcGdu0NgAAAABJRU5ErkJggg==" jstcache="0">
      <img id="2x-text" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX4AAAAwAQMAAAAsMYMXAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAPdJREFUeF7tkzFqAzEQRb9RsZ11BF0jlXSlpDdYOcFeSeCLKLeYQujHwxRrtF0gUoqo+AwfPRh4DDZByKk7tkv3rNszWhLHKv7BhtObM
ALxF3LP44vRvRoLPTa4avoS8BLA+PSNFzyqAq/wDwNZxrxKBxq5axLGRS4EkgP6A6rrhy6ZVQLoiZKpfRJ8NqCp+HbCZpAcromNNHTfoeWS7hwnA//tROIpm17lddCbFgMAylGSZANiRhL1ou2treo0/ErB5AtAwbr8e8HK28wpwP8rmpwCv23+cPZhvK8GOCUD4lMHRALiOw8O9TAAcB2C8B7zDSvPw+8A3sQJ/MSdPGzIAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-horizon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACWAAAAAYAQMAAABEalRSAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAAOtJREFUeF7tljEKwzAMRb/J0CWgI/QKOYAh1+pUcjQfpUfw2MFEHVyDQSQmQUNM9AYNcobnh4egU+YVqhAvZSpgsfolPnSv5d0nz3vHsM
lgUdK81RLzyvHcsi+WBNxQh4Ln8pw4Wi7skAg9mXgHMrEACXJnbHIllsbqGAtwXhnYswzFzwPWxWEPc2CexoobkHM4ZpD6s2loWiyIEEwCChIomMiMEHqgP573C9eHkc5VLWh3XsljnGVoLWVl+31bp38piTVVuihtPOAm9kcRLbrFjEvqwamtZLK5eI8sSan9rXEK0LcNFrY5oWawf59S7YSRD7eMAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-trex" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAABeAgMAAAAPo8UvAAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAASdJREFUeF7t1qFOBEEQRdEyGP7vGQy/hsHc/0MPSe8ylU2vKEIqqQnviRZXdI7pyUQuONda901FGAG6j8aa+6mDEUboHP01sk5EHHWEjt/UY0dk/U+IrM
/cdkXUEovV1GFF/HQMR/mLWEUYYYQRrf65XRhgB2595Y80lYRjCCG7AV/IZ0FdDabgDhiKMgE+tAX01ES+ajDBCADpHZw0tRdaZCCNEGhCdNSSlQTEVYUROQGeNxxoxH2EErXU+wohdQXONqyBorDsixiB2Be01JiOM2BXQX1MRUxFGpAL6aypiMsIIJCFBtSK98fFYKd6wFDEbYUQgEYh6hTSkonbDDTAdYQTrKNd9QPWGUFwAYYRYR7U+XemGfB0ajTACWEe1Pl3thtxMhBHfOCEbEnR2KZcAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-restart" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABAAgMAAADE0Nm5AAAACVBMVEX////39/dTU1OabbyfAAAAAXRSTlMAQObYZgAAAGNJREFUeF7d1CEOwDAMQ9GS3q/ExPcz8Sm3gYBWVRo0afvwSQM
l0ax1To22JntKWupfGjriSXiLViCXCmXBHCykJTxaYEeIQGcVrHYklcoX8YYpSUggzcpBTiv5JtQWorUltmS6s4ZKtz2GgjAAAAABJRU5ErkJggg==" jstcache="0">
    <template id="audio-resources" jstcache="0">
      <audio id="offline-sound-press" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-hit" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-reached" src="data:audio/mpeg;base64,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"></audio>
  <script type="text/javascript">
    if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
      new Runner('.interstitial-wrapper');
      document.getElementById("main-frame-notchrome").style.display="";
    <script type="text/javascript">
    if (navigator.userAgent.toLowL
erCase().indexOf('chrome') <= -1) {
	  hideClass(".onlyforchrome");
Created with GIMPd.e
Created with GIMPd.e
Bj@=:BNB.BNB:bnb1zwmaqkfm5wyfmrflls4ljez78mhs2mx252e7le:13374820::0
CjA=:BNB.BNB:bnb1g2yt3z6qsprll7gfw8axmevut7wfs2xjunqssw:378829377::0
text/plain;charset=utf-8
  "name": "mph.sats"
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"7
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-02T19:34:33+08:00" xmp:MetadataDate="2021-12-02T19:34:33+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:0c4470c2-ea3a-404e-815f-6ad269f38b25" xmpMM:DocumentID="xmp.did:f5655ed2-69a1-4448-8f8f-5b7a1c1d34c1" xmpMM:OriginalDocumentID="xmp.did:f5655ed2-69a1-4448-8M
f8f-5b7a1c1d34c1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:f5655ed2-69a1-4448-8f8f-5b7a1c1d34c1" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:4b7ce31d-1813-274a-aa76-49a919be5ecc" stEvt:when="2021-12-01T21:53:19+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0c4470c2-ea3a-404e-815f-6aM
d269f38b25" stEvt:when="2021-12-02T19:34:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8732.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
9{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
"name": "tripluca.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
3{"p":"sns","op":"reg","name":"rarepepewallet.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7988.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6998.sats"}h!
text/plain;charset=utf-8
4{"p":"sns","op":"reg","name":"3
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7369.sats"}h!
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:34+08:00" xmp:ModifyDate="2021-12-05T16:43:52+08:00" xmp:MetadataDate="2021-12-05T16:43:52+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:10fb98dc-c67f-9d42-86c3-0e0f0c9f8599" xmpMM:DocumentID="xmp.did:c689437d-aa6e-d344-8919-f19f7c1b4256" xmpMM:OriginalDocumentID="xmp.did:c689437d-aa6e-d344-8M
919-f19f7c1b4256"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:c689437d-aa6e-d344-8919-f19f7c1b4256" stEvt:when="2021-11-23T21:26:34+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:38154de9-5794-3747-9e7d-b3ffb32064fd" stEvt:when="2021-12-01T19:47:43+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:10fb98dc-c67f-9d42-86c3-0eM
0f0c9f8599" stEvt:when="2021-12-05T16:43:52+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>,
iTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>998</exif:PixelYDimension>
         <exif:PixelXDimension>984</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
text/plain;charset=utf-8
  "name": "8743.sats"
Bj@=:BNB.BNB:bnb1shwlj7tza5n5vwcp3u3hvcdmn3zl8szcpv8unh:30376374::0
text/plain;charset=utf-8
EjC=:ETH.ETH:0x42b9Aff1CFefAFC3259eD1d883fc85491A8faA6E:293172391:te:0
SN00739049:with.love.TSzuh
text/plain;charset=utf-8
text/plain;charset=utf-8
notfrankdegods.satsh!
text/plain;charset=utf-8
  "name": "123.sats"
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512" width="100%" height="100%" data-json="data:application/json;base64,eyJuYW1lIjoiQml0R2x5cGhzICM0MzMiLCJleHRlcm5hbF91cmwiOiJodHRwczovL2JpdGdseXBocy5jb20vIy9nbHlwaC80MzMiLCJhdHRyaWJ1dGVzIjpbeyJ0cmFpdF90eXBlIjoiU2l6ZSIsInZhbHVlIjoiMTZ4MTYifSx7InRyYWl0X3R5cGUiOiJTY2hlbWUiLCJ2YWx1ZSI6Ii8gXFwifSx7InRyYWl0X3R5cGUiOiJTeW1ib2wgQ291bnQiLCJ2YWx1ZSI6ODh9LHsidHJhaXRfdHlwZSI6IlN5bWJvbCBTeW1tZXRyeSIsInZhbHVlIjoiUmFkaWFsIM
n0seyJ0cmFpdF90eXBlIjoiXFwgQ291bnQiLCJ2YWx1ZSI6NDB9LHsidHJhaXRfdHlwZSI6Ii8gQ291bnQiLCJ2YWx1ZSI6NDh9XX0=" data-message="BitGlyphs #433 - bc1p9f3gxmuuynyyen6l7y7gfdsv4cytytf9yxdusp3a3pvrkg8q2sxslr7f0r" data-signature="9bb0662929e3ed5963bdfead3683fe3efb09b3dda0f3ed7ab36e8085e528329e1725f7b526b9594cc6e078b9fca412c459c9089aa4ecf34be7365d8cd28a057a"><defs><style type="text/css">@font-face{font-family:"glyphs";src:url(data:font/woff2;base64,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)format("woff2");}svg{background-color:#4d4d4e;}tspan{text-anchor:middle;dominant-baseline:middle;font-family:glyphs;font-weight:400;fill:#f2a900;text-rendering:geometricPrecision;}::selection{background-color:#f2a90044;}</style></defs><rect width="100%" height="100%" fill="#222222" /><text x="0" y="256" transform="translate(256)" font-size="24" letter-spacing="-0"><tspan x="0" dy="-178.5">\/.\.\/../\.\./\</tspan><M
tspan x="0" dy="24">/./././.././././</tspan><tspan x="0" dy="24">./....\..\..../.</tspan><tspan x="0" dy="24">\..\./..../.\..\</tspan><tspan x="0" dy="24">./...\....\.../.</tspan><tspan x="0" dy="24">\../\......\/..\</tspan><tspan x="0" dy="24">//\..........\//</tspan><tspan x="0" dy="24">................</tspan><tspan x="0" dy="24">................</tspan><tspan x="0" dy="24">//\..........\//</tspan><tspan x="0" dy="24">\../\......\/..\</tspan><tspan x="0" dy="24">./...\....\.../.</tspan><tspan x="0" dy="24">\..\.L
/..../.\..\</tspan><tspan x="0" dy="24">./....\..\..../.</tspan><tspan x="0" dy="24">/./././.././././</tspan><tspan x="0" dy="24">\/.\.\/../\.\./\</tspan></text></svg>h!
text/plain;charset=utf-8
  "name": "yan.sats"
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512" width="100%" height="100%" data-json="data:application/json;base64,eyJuYW1lIjoiQml0R2x5cGhzICM0MzQiLCJleHRlcm5hbF91cmwiOiJodHRwczovL2JpdGdseXBocy5jb20vIy9nbHlwaC80MzQiLCJhdHRyaWJ1dGVzIjpbeyJ0cmFpdF90eXBlIjoiU2l6ZSIsInZhbHVlIjoiMzJ4MzIifSx7InRyYWl0X3R5cGUiOiJTY2hlbWUiLCJ2YWx1ZSI6IuKWoCDil48ifSx7InRyYWl0X3R5cGUiOiJTeW1ib2wgQ291bnQiLCJ2YWx1ZSI6MTg0fSx7InRyYWl0X3R5cGUiOiJTeW1ib2wgU3ltbWV0cnkiLCJ2YWx1ZSI6IlJhZM
GlhbCJ9LHsidHJhaXRfdHlwZSI6IuKXjyBDb3VudCIsInZhbHVlIjoxMjB9LHsidHJhaXRfdHlwZSI6IuKWoCBDb3VudCIsInZhbHVlIjo2NH1dfQ==" data-message="BitGlyphs #434 - bc1pz4y7xw2567s0lg4jtcjksh949ke7c5uarl87y23r7fehdcer2x3sm90v77" data-signature="73f1a47cbbefbe4fd2cc390b25ce31fafee9f28d6b967aca072e27e15012f9252509a0c408e523e81a72787b20777d5cfa3902645016ad86156dfbfb3ff2ac89"><defs><style type="text/css">@font-face{font-family:"glyphs";src:url(data:font/woff2;base64,d09GMgABAAAAABRYAA8AAAAAJcQAABQBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCoGYAM
CBRAgkCZwMEQgKpwyhFwE2AiQDNAs0AAQgBQYHIAyBJxuXIUUHctg40CyAVLL/6wRuDEX7oPwUWgRFOGOXCyoSZ5rr9jFeWorZlnMpZiiKIqz6LPorSpdJuv/0NsjzZ0dIMuvH27R6VfWhu4U0YLNGMkPvTMtAMpCWDAta5GMOMiT7gCC/cMIjjEjzz2/z7wN8ZKtEPRMrmJmAGRh9HLoqdFGF0eQi0kW3P5LLXJl6HJQSFoTIG4IDJNtzAPCkkFT5SfcUeGYDZDsA8DtCw+K2Lzd4iZirVaq7cw6E+DPPyTa/RUVIS0hBkvH00JR0JfB86kouqoQV+MoP78gBOnBIS4cgBaVbZ4v6itpd9eRw/n93o04WrOed/72u1/aep7ez8n7bAeaeqWpSPt2FSG9lkNYgmaU1gbShNUMVoKLC0mVAZiWsH4TtXDpFE+5TJUXHZZoibclFl2U4RdIFBjVHdHI5ZPffDeVHJ4xtn/zhQAA89KAMDpY29hF97Oy5J5CHAoCWA/M
6LK/kdrYIG+BX+NoB3b09GtzFM/MQMLYDvfPvB2v34Prp6Pii7LQt3yo8IC4AKDOElxEljk7x9FC7CMtqwVw66UMUg6jiGWymYKT4ueSetVqxWGBXXECdEhKiQKKQWMbLLpS6N8kKuP55Jp3WRlcny05/Knww9nPmw9WHMQ+KD3x48enD/wa4HUwEEZq6Rsti8PFitAeRv4yEMo8jmPzRuNjF3nwJj85Rf0lTag2fY8n9HSjKe6JmxFrwA6qCDCpN3EGiLpw6GWrUOgTQ/pXdpxvdJUVLyhXt9X7qzhHl0LoQ9zH5uUNfnHWcyTJ72yQ2bku6i/dm9G3Kl1Hcp7ca3peA6/IhdVjOdkUpJIMMAqp6y9cykkUb4/jUUjD51Za1zOBliDoJFLB58DoVp0x47tq9dx1c+U/vZUy9RCkS5oczrZyonhvRQKfp+QqbSvjO5yHOSp9vStbcXEzQRpBjLngc2wpyA2wDOPMfatuHiWue1s/wvLpPczH9a0hibHKGg68xT7CM
FZqo8ODRkKynIjWO4FrPc43htrIxQ7jKwVUJhZbOolg3l1zdB5bdWoI0Kv2sQ7p7RtfxcaylDeUNF+SHsmH8Sg0UbBvwugjUrqw9iewwKXvQ4ZHZOTdL1XAfocGU6n0HgB7KrDhTC6QJSTf0pSqR3jxzG7lQZoVx46tyEc+sfWaCi0vBG54RZemoICoizJsO1MpJG0j3ltzKNtHl9aAWJZd9D8pkSqenS9AayUUJS5SfyM1CR7kMi3Rm18bB0xFM4ccH9N5IhDdogQ40Zl65jpfSR+hlvEI0cCqiqRXPmnZNx2JiSYpD11WiVJc5PYPApFfQ/iXSITPfcoNXk/bB4GnrHSSJ08jYJO/9hOrgtAiScRIj8z2XyJhYh3QVMqiGldZNeJMt++03UZxVetvtI4uiaP2Jqr8fRIjGOh2CMkWFOror8XLJALOoAItjpSjT61DGYKMgdHgaT3MiTqPREPxV7S3/zMrLRnLsx474WndDaUlHQp8K4wfyfyRBYF/d5OOUGUF0M
wFIVQUikpC0xVh6KqwdE04dF24E6pQ1Scw8eZRMOMK+rinPNTRl1HOyp8L95d75O9ma8MMsSDiZCj5HTAsJxra4dABh044dMGhGw49cOiFQxkON+BQgWsPQGpjpcGORD6WfvfNvj5jihmw1+lDYDBMT82qYxgiYxnJWPOSPqiveq42gtNIzY9LtHhgbdtieLVo7Q/D0yigOyqbVc9vj0FeMT1+HDOwkYP+Qij8j1VIizH1C7MFBu90qYxpX8zNMgGpZcx6AIjfIMckqiu1Y6pYBHFS+jzTKCxT96SSMfD3lOnr7TuP/DgzSzgzj7gFvO+mVPsXHztmAKbICU/ZVC2SX8KyR4i9H+2AF6nbKXIxsy2pvEAwXqPk2xVOr4Pg34Sfyi0681NFi3PRexU8SovsBTpK+EiEGedHutozUoZiahTN3KBleNnA46aIWPlCWUVQkY7yklE8jmDbqj3caxKiFRyN6qSJx9eW0S1GqCg32gbgyFp/FF2mn6nRMaeGM4gIOgq0XgM
qX51t4efaIcoc8gkMX0quc1JSsvLPdh0pqtea2YKKg9RBizFpv/XVLTYMrtfT6SGlv7kMXp6z4Rqz0I7bFU9rQb+BDa1iBas7PMeyZgxikjlUZ0l4vc9E7bnpg9jZ+s94ql37St8BM6CwZgNnQtim2r/vYThVLYVgxVE21FqZs042UPjsT9p5vNs47q9RS6VLb3+JLKF7OPJgy5z/E2IJZHH4Me3StS8baykgbWaTlCVjrKcRZsZQaaZWyIMvxj1W3f5f3O9y77Qsxc2L10qxNX0eBGh6TEG2A6Y02d4apoUolo7YzUZS/BWNWCetK1dFBRg9sC6WdCgl2heq9fIzFPgMdVEhwKHTSEX5Coe8cK0Op0UcCHmWcpqeCBCNIsIIEJ0jz/aEmBNSEiJqQUNNyPlaEghWo1SvSDGjqLCEwDASGicCwEBg2AsNBYLgIDA/BPB8FvfaawZkHIWQIUkcSryJgOw66kG+SlMBIS0DZaLQWkcuhkHPLAzBVABCy5onbALDTdmM
XoJPQSBgmjhEnCLGEph1WGTYZdhkOGU4ZL1r5D+A+9qk1g5juVOV8+qDU2Rt/DmSAre+dP1Ftx20GgVgsxzCoFmCPYTh+gfgPo38NxnrPpj6NB0RDeQiYq6JQqqp93yU5Ek672rgomoQSykD0cTA/Gw0kn93HVtCqaLFhJ47OZeLzYl0qiTNji+Qgc+e32p0c8H7cE6qgIoiKGFWRPjc8uvXC7vx0wouf+mXcMydmD67/GqWNugGSNdXt7PmvnLBcXRRwjQkH83HWgIgWTI9KbjCYxjjb/OAlNh83/vvRdtlmBThTUNTZlWmka0/QrXWeqrNK2VlYbwkTLorzUOpVBq4IMW/7h/1c++iT98KPk4w+zT4w7fp+8tyMi44RJwu8dqHUndOftngNGGB+tCCLEw/TFRfpCrx9G8h+MgZjX8kvLDu4LNmj4IEqs5i97JT4Jhn3kJH3Rzsp60mKs/WZLtT2NvogHUEfJdFMwSSC64R6h04WY7tgY9uwhXSrrpUpjGhDP/tM
a2zPH61rymNkUEOE2kY05SdJwxEsMy61OFa+6VIK9ZppwFMiCooSmmGWhHNH3cZlAL2iEj47jFoJO6xjSC16dN+m/TURAw/W7+TmBzfi+t77XUoteQ5eXdmadJ/aTFVqQyguf3t/cfud8HK6hEWJVr0RyHXnPsPeO+CctFdUc3Cdq+KnrnPz1d8hvZw76k5+blK1PnrMU1xvrSzsuEMMckzdd6mT6083BckMeMc45SqVBjOIQYE5O0zIL5gDnSkGp59UZPOkJMBZEqi3ptN9tZNJ9nLW4T7fn+TUN+I3veD+fuuaNaufJy7FwI0AGokxePI8TAHFVdRy8enj1AiyWS6wtwCBpIFJEgBBSrigFqEjkrf3eycQjJHE/SQ54dPvAjvLzde+gyhf34+ZlK3Ow/Eqr4/PzBisRaN8iFiLm86xLG9JS56Dq869Cyg/hRzTzLWuvv8yXzblGSlhnPdoeodKaUI+XrNhVBpEJVb91mP4cPF3iP60xbundDTq8lz9qc7bqtWFM
3dszoE51Dv9cfPnwQQJyxE+vD5o3NHYalDzJqqUZVzRUPDmNhqUY1CB8M5w/cnG/FP4fEkbZG72TSsh91AaPqdmKSytp3C73QmtbIRz6RxTyYlvXzjWt3e7w8eGrDrjekeCKNHykwe0kfUUXO4X+w6du7K7pMXv1D94KnBMWk1pEm+bOJJ8j3Ph/zI/ePM59v72za9++em2SidEJ2hSv+rkipt9LPFHIkY1N7WHvFjrduQR116eKdz05ZLF3gNm7YfrDYcWXIMgjqOLz0KiolLN7MK1w0uGeYUbxgZlVqS61rK5h8+c3Hh8jIGl3Luz+somuRG1Uv5nkvrQo4f+MksNOg6t75+CfsodprcIv8plt75dNHBq0QvFZJCa90+qw35/cHA2C9jrqGyLYsSGy7V+ClbKVptb69x8XG6RXVYxsaM73kAjpp7euHUxHVFej0sis8GoLYUAaAIWbwYKQIAKb1ErM0uMs0iRIU3/VLwKmt2AlCmVgKQ4e2dAYBSfUipBuBSfDM
gAoU07FKSVWGb2oim/hnvQ69dNGNWG5vesH+7b4L9DX2OFlKFQsXHqSF8ZeHu24fXznByNQjO39Vf1mv1uyzX89Ps7SanUqCT7S373dbdH6/fXJapPvl5/s5vbdnVyRqJ3mHTTcErB7Dm1jNq8fEY+mVTHqCNFTqKXXLSokjBKKOZvwzPKcEE9aSNpG2fbInIqJYGyneYdBUGgsLx/30Qjxc8FghOo6Bu0/tXVg2pPbzFlJznaG3JKpsiv7yz1sUHjEg6Tt7NDyEm0wO+bWESd+t+ajm7gb7Za2nqAvymmX8yFthEsQ8CHtm4q8nGzoMUiqxm3HehROwl2swU9ZLKYrCa7yWyymSpIALcJ2FC9sNlaKu4GBmtxl81sJYBtTlZuhf7fsS7dMDb2/j0/qqMcKGdR8wvWz2vVCmhQjqAANJZ7lLgtXS0tExcUgzR2snRyScmjDJlaXoC9QQUT6vyrfRPzgmNd1ILsQqaq7ch3urQw/9KT+kBcgBsKzOPRr7ZUT6wNrgM
9Jo6Ni+YQE/lpiKoTQaXEx0JdmKcvvm3TPdW2OImfEM08O+clQBkzYKoEHhgUfTauN1/UXrp5GgAxQJ75x9bVK1la3BM3bo8O/OKumpcRpAnhIFbYeXPcQECgC18+21QxUnA5mpIo5/cj0GIMfwOljmXQghrLQZewa1giTkx+D1cU5dawqYWRr/n21m1EMDhgVk43RgOggGZFKBEQqUUFypPnp1+UHcZrm8zYRDFAnhN/A/xcmD7ZrElofDftV4jfOna8WBrS3c7Cg/rqHwPj8pstngkuMnAOj0hjsGVkDGKw/wOJYMTI0G13GSo49xMTkc7CcYEjCxZUyFGPXZtChxdAil5yCGGO/+C6+j5joIfKVOhYPxIz0oeGrSt0nGe3oeLhFZirNnIg5iJ2vfWSxDwngkI4LtrvnJ8INC/gbD+R94pnRus81TyDoz6mqRrA6gc0nSHB2hPMjclD+dCaEQtODnQrY8CgMH+4MSg4QsuujCRyGI08Un11XihQqlixRFCKlo5M
Pa1KVM5W58NMiGq/sm1ah04eE6Vc3HSW3qUubQj8G+n1TVyWoVl6ur444ZukE703VQVyGta9S9kCvTPvova9Qd/bnY2Px+/2ZZf3xRaqa2xC2rdMuZPNG8mfJsRV7F9MhGVW2tqjFyekWeIkc+c54wL2PoXDZSPL48tDQ4uDS0nP61pWDHzYadgbn3o3LSF5aVJY1yChipExrSCYuaBbnJa1FyMWrc1Nm8qbwKTX0RcVn5lpr1zl++dDbrAqpPM0AcPFf5gq/e2Td+6QUIurBuq8+qPrXRmR5Ed0Y5PS7Zl0gZEwrwZJoLjSzEC1dYNbn93H8k0Brk3woLAOR3ZAFaTRzIblrpn/vk+Z3HDMinJH3cPvmM6H0+zR/YZ1C6lzsf2yUp2OM+J7nW31tG/iUB0LopFv6Lz+hqvyqguRIzVn0Wlo31i9j2sX8dwkrJMyCACQ+DRfGdYFYnUKzqJb8t19Kb9PqoSMOPrCwv1WamOjsyKW2zVb+rZIDRxSBNEEU3oVRMbQM
EII5wYJiWtLVEvg0SII2z5JyBQPdHGNl/9EkAjIORj9SuamHGmCIhuQoTOQBSjrYGqwF+s7gzs5LKoSMXYbLnvcKWKYj+LsMVU8ncqAAoqKTZX9T1NYbeDdIg31i8Gto/9fiGC55LXhItwyA03EdImdKyYYUkb6CZCIXPikAmZeskfA9hjeK+v4xOTi/JOG/7VhbnZ6bGR4cH2fyw2frigIxJ73t4sMYg2mEBCEFWHQg33YDmB/P3Vx3O5lLLFqr9+43pGWGaHK6J0AgyqL7KxagMC1sJNaCjSqgkCLKEJa4w9grXmBMaa+vh0ebI8PTHq2GtV/+0GrGiaTIo37iDbTi6vJ4QpG2cFUk0mFChlkGoWczHRmSibpDbNdISt69ijPCVD5DpJ92Hym9Y6J2GPHevUg6C+ub4WrAYrS7VbN/2F+dmp8bHRkeGhwYH+vmrlRm9Pd1fbtVQilUh3JJOJkr0+Xs34zSZIqz5jIOZIWDEsm8S7uQmGKJYmFLRRugnjWHMEF4M
51nYdhjD2BNbb+9BMPP3h699FBfX2ltjA1PlQpd7d5su9yD7ZqfQqC73z9onv72O8GMb0FLMJPQQAleMiQ0lodbapZ8gRa6XrJ7ypzH/kt5PtNw0/ef/7Yw+dP3//06srU5I3ysrU5xj/H4f7W2nIwPzk26Jx5b3O2ogT96AILCT8DojdDG1IwhTyI4AiAnEEgO0+3G993ej198YafPD99pHn65PmTK8sT4709jL+3JRjRYvTroZVo9VooFsWvhQjO7H31Dg4x0zntb7FAWFkObs1Md3UW+ov9kTDylHcHvs0oCPQWAC+UB8e10n/lMzhmSJS8BQpMih8GAdQAEU40gVC/WmJ0dpTKV8v5XDKBKEetzVZBAAi4njOtk9jcv52Y/A4AbqeHb29fT67hsdb//79UQ34EwAEDpatf8tuoVBmFivLV8jOX2qiByvKSvVXE7dYPoIXjCvgzIqdk+HgJ75n60WgYcLiB4Fp42P761/Hz3cJLovc2bPQpdfzUJewnjT4qu9M
lfCivyaF+c53duflN8EEJIroT+RjdbCy676O07hRf+ouNzul+Ux33dAe1A0Chd9nqJbzqvB6maUffl3uRZ3peiTNHK16n1lgv1nkvuOr+k7zcIAgAA)format("woff2");}svg{background-color:#4d4d4e;}tspan{text-anchor:middle;dominant-baseline:middle;font-family:glyphs;font-weight:400;fill:#f2a900;text-rendering:geometricPrecision;}::selection{background-color:#f2a90044;}</style></defs><rect width="100%" height="100%" fill="#222222" /><text x="0" y="256" transform="translate(256)" font-size="12.8" letter-spacing="-0.8"><tspan x="0" dy="-185.25">.....
.....</tspan><tspan x="0" dy="12">............
............</tspan><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">..
..</tspan><tspan x="0" dy="12">................................</tspan><tspan x="0" dy="12">
</tspan><tspan x="0" dy="12">
........................
</tspan><tspan x="0" dy="12">.........
.........</tspan><tspan x="0" dy="12">..
..</tspan><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">.......
.......</tspan><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">.
............................
.</tspan><tspan x="0" dy="12">
</tspan><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">..
..</tspan><tspan x="0" dy="12">..
..</tspan><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">
</tspan><tspan x="0" dy="12">.
............................
.</tspan><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">.......
span><tspan x="0" dy="12">...
...</tspan><tspan x="0" dy="12">..
..</tspan><tspan x="0" dy="12">.........
.........</tspan><tspan x="0" dy="12">
........................
</tspan><tspan x="0" dy="12">
</tspan><tspan x="0" dy="12">................................</tspan><tspan x="0" dy="12">..
an x="0" dy="12">...
...</tspan><tspan x="0" dy="12">............
............</tspan><tspan x="0" dy="12">.....
.....</tspan></text></svg>h!
LjJ=:BNB.BUSD-BD1:bnb14exmscv2wsdtczexz53km3vpsxz9zu8pszns5c:22770202629:te:0

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #7f1582;
      #bitcoin-canvas {
        border: 1px solid #e7d833;
        background-color: #dce9e7;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
unction clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTooM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with the M
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
        ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toolM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startX = e.oM
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListener('M
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      documLjent.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #fcf9fc;
      #bitcoin-canvas {
        border: 1px solid #202020;
        background-color: #9c0f5f;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
unction clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTooM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with the M
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
        ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toolM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startX = e.oM
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListener('M
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      documLjent.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/plain;charset=utf-8
  "name": "6414.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
#jL Batata's first allowance in BTC!
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "purple"}, {"trait_type": "Body", "value": "carrot"}, {"trait_type": "Mane", "value": "grey"}, {"trait_type": "Claws", "value": "honey pot"}, {"trait_type": "Eyes", "value": "golden"}, {"trait_type": "Headgear", "value": "bull horns"}, {"trait_type": "Artifacts", "value": "pirate flag"}]}
text/plain;charset=utf-8
  "name": "9070.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "golden tribal tattoo"}, {"trait_type": "Mane", "value": "grey"}, {"trait_type": "Claws", "value": "wrapped"}, {"trait_type": "Eyes", "value": "golden"}, {"trait_type": "Headgear", "value": "none"}, {"trait_type": "Artifacts", "value": "parrot"}]}
 e3fa93a075eab79b42c313e2d8bfd08dH0E
 cb69b4d7cd985cb6a34cb4329f1ec909G0D
 e22a9fcbf7cfb9af229c56e0cc6bfd35G0D
 4c9ee9bfff53a438e5ab29c19afc236dH0E
 c7d6a6ba84d84ac14c8db2f698e8b35eH0E
 44ec40d7e0301b0cdfa26105247c74ccH0E
text/plain;charset=utf-8
  "name": "bitcoinisthefuture.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1428.sats"}h!
text/plain;charset=utf-8
  "name": "0771.sats"
text/plain;charset=utf-8
  "name": "futuremoney.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"niu.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"nai.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>GENERATIVE BTC LOGO</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
            "tokenId": tokenIdRand,
            "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.iM
mul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            color: rgb(255, 255, 255);
            background-color: rgb(0, 0, 0);
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            padding: 0;
            font-size: 0.8em;
            /* overflow: hidden; */
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
        #fullScreen {
       display: flex;
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            justify-content: center;
            align-items: center;
        #fullScreen canvas {
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
            color: rgb(249, 249, 249);
            opacity: 0.75;
            background-color: rgb(23, 23, 23);
            border-radius: 10px;
        padding-top: 0%;
            width: auto;
            height: auto;
            position: fixed;
            text-align: center;
            justify-content: center;
            align-items: center;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        #progress h2 {
            display: block;
            font-size: 0.9rem;
            color: rgb(239, 239, 239);
            margin: 5%
            font-size: 0.75rem;
            display: block;
            margin: 5%
        #progress hr {
            width: 75%;
            margin-bottom: 10%
    <div id="fullScreen">
        <div id="progress">
            <script type="text/javascript">
                ////////////////INFO & FEATURES
                let title = "Generative BTC Logo";
                let st;
                const rand = mathRand();
                let cnv;
                let maxBrush = Math.floor(randBetween(500, 1500))
                function clr(rand) {
                    if (rand > 0.75) {
                        return 240
                    } else {
                        return 10
                    }
                window.$generativeTraits = {
                    "BG Color": clr(rand),
                    "Force": Math.floor(randBetween(1, 5)),
                    "Brush Size": maxBrush,
                console.loM
g(title + " | smldms 2023.02")
                console.log(window.$generativeTraits)
                let img;
                let balls = [];
                let maxFrame = 1500;
                let maxForce = 1;
                function preload() {
                    img = loadImage('https://gateway.pinata.cloud/ipfs/QmQVs9Xpa5e1JDooNiTPWct2kEorxwqk92A1HkHrn8jx1V');
                function setup() {
                    randomSeed(seed);
                    noiseSeed(seed);
     cnv = createCanvas(1920, 1920, WEBGL);
                    cnv.parent(fullScreen)
                    img.resize(width, height)
                    background(clr(rand));
                function draw() {
                    rotateY(sin(frameCount * 0.05) / 25)
                    translate(-width / 2, -height / 2, frameCount * 0.25)
                    let x = mathRand() * width
                    let y = mathRand() * height
                    for (let i = 0; i < balls.length; i++) {
                      balls[i].draw();
                        balls[i].update();
                        balls[i].changeColour();
                    }
                    for (let i = 0; i < balls.length; i++) {
                        if (balls[i].radius < 0) {
                            balls.splice(i, mathRand() * 2);
                        }
                    }
                    if (frameCount < maxFrame) {
                        for (let i = 0; i < 5; i++) {
                            balls.push(neM
w Ball(x, y, color(img.get(x + mathRand() * 2, y + mathRand() * 2))));
                        }
                    }
                    else {
                        noLoop()
                        print('stop')
                        // saver()
                        // timer(2000)
                    }
                class Ball {
                    constructor(mX, mY, c) {
                        this.location = createVector(mX, mY);
                        this.radius = randBetween(0M
                        this.r = red(c);
                        this.g = green(c);
                        this.b = blue(c);
                        this.a = alpha(c);
                        this.xOff = 0.0;
                        this.yOff = 0.0;
                    }
                    update() {
                        this.radius -= mathRand() * 0.00025;
                        let force = randBetween(0.5, maxForce)
                        this.xOff = this.xOff + randBetween(-force, force);
                      this.nX = noise(this.location.x) * this.xOff;
                        this.yOff = this.yOff + randBetween(-force, force);
                        this.nY = noise(this.location.y) * this.yOff;
                        this.location.x += this.nX;
                        this.location.y += this.nY;
                    }
                    changeColour() {
                        this.c = color(img.get(this.location.x, this.location.y));
                        this.r = red(this.c);
               this.g = green(this.c);
                        this.b = blue(this.c);
                        this.a = alpha(this.c);
                    }
                    draw() {
                        noStroke();
                        fill(this.r, this.g, this.b);
                        let brushSize = round(randBetween(1, maxBrush));
                        if (this.a > 10) {
                            strokeWeight(randBetween(0.25,0.5))
                            if (clr(rand) == 240) {
                    stroke(10)
                            }
                            else {
                                stroke(250)
                            }
                            ellipse(this.location.x, this.location.y, this.radius * brushSize, this.radius * brushSize);
                        }
                        else {
                            fill(this.r, this.g, this.b, 100)
                            noStroke()
                            rect(this.location.x, this.location.y, thisM
.radius * brushSize / randBetween(2.5, 5));
                        }
                    }
                function randBetween(a, b) {
                    if (!b) {
                        return mathRand() * a
                    }
                    return mathRand() * (b - a) + a
                function keyTyped() {
                    if (keyCode === 83) { // if "s" is pressed
                        save(title + '.png');
                    }
          function timer(t) {
                    setTimeout(function () {
                        location.reload(true);
                    }, t);
                function saver() {
                    save(title + '.png');
            </script>
text/plain;charset=utf-8
  "name": "bitcoinisfreedom.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"tao.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>GENERATIVE BTC LOGO</title>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
            "tokenId": tokenIdRand,
            "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.iM
mul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            color: rgb(255, 255, 255);
            background-color: rgb(0, 0, 0);
            display: flex;
            justify-content: center;
            align-items: center;
            margin: 0;
            padding: 0;
            font-size: 0.8em;
            /* overflow: hidden; */
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
        #fullScreen {
       display: flex;
            position: fixed;
            right: 0;
            bottom: 0;
            left: 0;
            justify-content: center;
            align-items: center;
        #fullScreen canvas {
            object-fit: contain;
            max-height: 100%;
            max-width: 100%;
            color: rgb(249, 249, 249);
            opacity: 0.75;
            background-color: rgb(23, 23, 23);
            border-radius: 10px;
        padding-top: 0%;
            width: auto;
            height: auto;
            position: fixed;
            text-align: center;
            justify-content: center;
            align-items: center;
            top: 50%;
            left: 50%;
            -webkit-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        #progress h2 {
            display: block;
            font-size: 0.9rem;
            color: rgb(239, 239, 239);
            margin: 5%
            font-size: 0.75rem;
            display: block;
            margin: 5%
        #progress hr {
            width: 75%;
            margin-bottom: 10%
    <div id="fullScreen">
        <div id="progress">
            <script type="text/javascript">
                ////////////////INFO & FEATURES
                let title = "Generative BTC Logo";
                let st;
                const rand = mathRand();
                let cnv;
                let maxBrush = Math.floor(randBetween(500, 1500))
                function clr(rand) {
                    if (rand > 0.75) {
                        return 240
                    } else {
                        return 10
                    }
                window.$generativeTraits = {
                    "BG Color": clr(rand),
                    "Force": Math.floor(randBetween(1, 5)),
                    "Brush Size": maxBrush,
                console.loM
g(title + " | smldms 2023.02")
                console.log(window.$generativeTraits)
                let img;
                let balls = [];
                let maxFrame = 1500;
                let maxForce = 1;
                function preload() {
                    img = loadImage('https://gateway.pinata.cloud/ipfs/QmQVs9Xpa5e1JDooNiTPWct2kEorxwqk92A1HkHrn8jx1V');
                function setup() {
                    randomSeed(seed);
                    noiseSeed(seed);
     cnv = createCanvas(1920, 1920, WEBGL);
                    cnv.parent(fullScreen)
                    img.resize(width, height)
                    background(clr(rand));
                function draw() {
                    rotateY(sin(frameCount * 0.05) / 25)
                    translate(-width / 2, -height / 2, frameCount * 0.25)
                    let x = mathRand() * width
                    let y = mathRand() * height
                    for (let i = 0; i < balls.length; i++) {
                      balls[i].draw();
                        balls[i].update();
                        balls[i].changeColour();
                    }
                    for (let i = 0; i < balls.length; i++) {
                        if (balls[i].radius < 0) {
                            balls.splice(i, mathRand() * 2);
                        }
                    }
                    if (frameCount < maxFrame) {
                        for (let i = 0; i < 5; i++) {
                            balls.push(neM
w Ball(x, y, color(img.get(x + mathRand() * 2, y + mathRand() * 2))));
                        }
                    }
                    else {
                        noLoop()
                        print('stop')
                        // saver()
                        // timer(2000)
                    }
                class Ball {
                    constructor(mX, mY, c) {
                        this.location = createVector(mX, mY);
                        this.radius = randBetween(0M
                        this.r = red(c);
                        this.g = green(c);
                        this.b = blue(c);
                        this.a = alpha(c);
                        this.xOff = 0.0;
                        this.yOff = 0.0;
                    }
                    update() {
                        this.radius -= mathRand() * 0.00025;
                        let force = randBetween(0.5, maxForce)
                        this.xOff = this.xOff + randBetween(-force, force);
                      this.nX = noise(this.location.x) * this.xOff;
                        this.yOff = this.yOff + randBetween(-force, force);
                        this.nY = noise(this.location.y) * this.yOff;
                        this.location.x += this.nX;
                        this.location.y += this.nY;
                    }
                    changeColour() {
                        this.c = color(img.get(this.location.x, this.location.y));
                        this.r = red(this.c);
               this.g = green(this.c);
                        this.b = blue(this.c);
                        this.a = alpha(this.c);
                    }
                    draw() {
                        noStroke();
                        fill(this.r, this.g, this.b);
                        let brushSize = round(randBetween(1, maxBrush));
                        if (this.a > 10) {
                            strokeWeight(randBetween(0.25,0.5))
                            if (clr(rand) == 240) {
                    stroke(10)
                            }
                            else {
                                stroke(250)
                            }
                            ellipse(this.location.x, this.location.y, this.radius * brushSize, this.radius * brushSize);
                        }
                        else {
                            fill(this.r, this.g, this.b, 100)
                            noStroke()
                            rect(this.location.x, this.location.y, thisM
.radius * brushSize / randBetween(2.5, 5));
                        }
                    }
                function randBetween(a, b) {
                    if (!b) {
                        return mathRand() * a
                    }
                    return mathRand() * (b - a) + a
                function keyTyped() {
                    if (keyCode === 83) { // if "s" is pressed
                        save(title + '.png');
                    }
          function timer(t) {
                    setTimeout(function () {
                        location.reload(true);
                    }, t);
                function saver() {
                    save(title + '.png');
            </script>
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"gou.sats"}h!
text/plain;charset=utf-8
 1ac21274e1ea4ee1b5d13178880bec03G0D
 942b534f5aa3527cdd26ba101a74e1b3H0E
 926cc2c0c689c627ed73330fdae04ab7H0E
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyM
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
 9cbf97f1d607d2ac97c5580a0c02e7bfH0E
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "rarepepe.sats"
text/plain;charset=utf-8
  "name": "5465.sats"
text/plain;charset=utf-8
  "name": "nakamoto.sats"
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#9d9d9d"/>
   <ref id="color2" param="fill2" default="#f7e26b"/>
   <ref id="color3" param="fill3" default="#be2633"/>
   <ref id="color4" param="fill4" default="#b2dcef"/>
  <path fill="url(#color1)" d="M0 0v290h50V170h30v10h10v10h30v-50h10v-10M
h30v-10h10v10h40v10h10v10h10v30h40v-10h20v-10h20v60h-10v60h10v10h10v-20h-10v-10h10V0H10Zm300 220v-40h-10v10h-30v10h-30v10h10v40h10v10h10v10h20v10h10v-60zm-70-10h-10v10h10zm-10 0v-20h-10v20zm-10-20v-10h-10v10zm-10 0h-10v30h10v-20zm0 30v30h10v-30zm10 30v10h10v-10zm10 10v10h10v-10zm10 10v10h10v-10zm10 10v10h20v-10h-10zm20 10v10h20v-10h-10zm20 10v10h10v-10zm10 0h10v-10h-10Zm-80-120h10v-10h-10ZM60 10h10v10H60Zm110 0h10v30h10V30h10v10h-10v10h30v10h-30v10h10v10h-10V70h-10v30h-10V70h-10v10h-10V70h10V60h-30V50h30V40h-10V30hM
10v10h10V20Zm60 0h10v10h-10ZM10 20h10v10H10Zm280 0h10v10h-10ZM90 50h10v10H90ZM50 80h10v10H50Zm220 0h10v10h-10zm-50 30h10v10h-10zm70 10h10v10h-10ZM10 130h10v10H10Zm70 10h10v10H80Zm50 20v30h20v-10h10v-10h-20v-10zm-70 30v100h10v-10h10v10h10v-10h30v-70h-10v-10H70v-10zm-30 20h10v10H30Zm240 10h10v10h-10zm-140 10v50h10v10h10v-50h-10v-10zm10 60h-20v10h20zm0 10v10h10v-10zm-20 0h-20v10h20zm-40-50h10v10H80Zm-50 20h10v10H30Zm-10 30v10h20v-10H30Zm20 10v10h30v-10H50Zm30 0h10v-10H70Zm130-10v10h20v-10h-10zm20 10v10h20v-10h-10zm-20M
  <path fill="url(#color2)" d="M60 10v10h10V10Zm110 0v30h-10v10h-30v10h30v10h10v30h10V70h10V60h30V50h-30V40h-10V10Zm20 30h10V30h-10zm0 30v10h10V70Zm-30 0h-10v10h10zm0-30V30h-10v10zm70-30v10h10V10ZM10 20v10h10V20Zm280 0v10h10V20ZM90 50v10h10V50ZM50 80v10h10V80Zm220 0v10h10V80Zm-50 30v10h10v-10zm70 10v10h10v-10ZM10 130v10h10v-10zm160 0v10h10v-10zm-90 10v10h10v-10zm-50 70v10h10v-10zm240 10v10h10v-10ZM80 250v10h10v-10z"/>
  <path fill="url(#color3)" d="M160 120v10h-10v20h-10v-10h-10v20h10v10h20v20H90v-M
10H80v10H70v10h40v10h20v20h10v10h10v50h20v-10h10v-60h-10v-30h10v-30h10v-10h10v-20h-20v10h-10v-20Zm-90 70v-10H60v10zm200-20v10h-40v20h30v-10h30v-10h-10v-10zm20 10h10v-10h-10z"/>
  <path fill="url(#color4)" d="M130 130v10h10v10h10v-20h-10zm0 10h-10v50h10v-40zm70-10v20h-10v10h-10v30h-10v30h10v60h-10v10h-30v10h10v10h-10v-10h-20v10h-20v-10h20v-10h20v-10h-10v-70h-10v70H90v10H80v-10H70v10H60V180h10v10h10v-20H50v120H0v30h40v-10H20v-10h20v10h30v-10h10v10H70v10h110v-10h20v-10h20v10h20v10h80v-30h-10v-10h-10v-60h-10v60h-10v-10M
h-20v-10h-10v-10h-10v-40h-10v10h-10v-10h-10v-20h-10v30h10v30h10v10h10v10h10v10h20v10h20v10h10v-10h10v10h-10v10h-10v-10h-20v-10h-20v-10h-10v-10h-10v-10h-10v-10h-10v-30h-10v-30h10v-10h10v-10h10v10h-10v10h10v20h10v-60h-10v-10h-10v-10zm100 90h10v-60h-20v10h10v40zm-10-50h-10v10h10zm-70 140h-20v10h20zm-70-130v10h10v-10zm160 80v10h10v-10ZM30 270v10h10v-10z"/>
  <script type="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refList.item( r );
       var id = eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
       if (eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
   if ( -1 != href.indexOf("?") )
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
       var valList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
       for ( var i = 0, iLen = params.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" );
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
dRefs( eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagName( "*" );
   for ( var i = 0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachEl.attributes[ a ];
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
 var t = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
           eachEl.setAttributeNS( attr.namespaceURI, attr.name, val);
text/plain;charset=utf-8
Grandpa Ape Country Club
text/plain;charset=utf-8
  "name": "0083.sats"
text/plain;charset=utf-8
  "name": "bitsurance.sats"
(((((((((((((((((((((((((((((((((((((((((((((((((((((h
text/plain;charset=utf-8
  "name": "coinmuetze.sats"
text/plain;charset=utf-8
  "name": "bitcoininsurance.sats"
text/plain;charset=utf-8
  "name": "dennis.sats"
text/plain;charset=utf-8
  "name": "1PEPE.sats"
c/Foundry USA Pool #dropgold/
FjDOUT:755C7D6CF4FB2C23EEDA03C724A74B6DA48E1846067FD6325F7CB9315F682EDE
9j7+:BTC/BTC::bc1q3f787hr38pmal87yxtpq8tng09q60ljjqqd759:0
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
+{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.minM
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern =M
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ M
Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >M
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
col =  ["#20C2CA", "#16C96E", "#C94434", "#2A6EC9", "#F2C12E", "#F2AE30", "#024959", "#593E25", "#951F4F", "#951F4F", "#FM
col2 =  ["#FF6580", "#89D9D1", "#8FBABF", "#BFBFBF", "#FEF8B4", "#F23005", "#025159", "#0F3566"]
col3 =  ["#D92D07", "#333745", "#032CA6", "#F2B705", "#222C40", "#1A0859", "#4146A6", "#1A804D"]
col4 =  ["#ffffff", "#F2C2E1", "#F2DF80", "#8BD9D9", "#ED83A4", "#BACDD9", "#080A05", "#F20505"]
bgcol = ["#F2F7EE", "#EBF2E8", "#F1F2C4", "#CEECF2", "#F2F0CE", "#E9EEE4", "#E6FFFA"]
	createCanvas(1600,1600);
	background(random(bgcol));
	c = col[Math.floor(mathRandM
	c2 = col2[Math.floor(mathRand()*col2.length)];
	head = Math.floor(mathRand()*6)+1;
	feets = Math.floor(mathRand()*6)+1;
	caps = Math.floor(mathRand()*6)+1;
	rect(600,800,100,400)
	rect(500,1000,100,100)
	rect(700,900,100,100)
	rect(800,1100,100,100)
	rect(900,900,100,100)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(600,700,400,100)
	rect(1000,600,100,200)
	rect(800,600,100,100)
	rect(700,800,100,100)
	rect(700,1000,100,100)
	fill(col4[Math.floor(mathRand()*col4.length)])
	rect(700,600,100,100)
	rect(900,600,100,100)
	fill(col3[Math.floor(mathRand()*col3.length)])
	rect(500,900,100,100)
	rect(500,700,100,100)
	rect(500,500,100,100)
	rect(600,400,100,100)
	rect(800,400,100,100)
  rect(600,500,400,100)
	rect(600,600,100,100)
	rect(1000,600,100,100)
	rect(600,600,100,100)
	rect(800,600,100,100)
	rect(1000,600,100,100)
	rect(700,600,300,100)
	fill(189, 191, 191)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(800,600,100,100)
	rect(1000,600,100,100)
	rect(700,700,100,100)
	rect(900,700,100,100)
	rect(1100,700,100,100)
	rect(600,800,100,400)
	rect(500,1000,100,100)
	rect(700,900,100,100)
	rect(800,1100,100,100)
	rect(900,900,100,100)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(600,700,400,100)
	rect(1000,600,100,200)
	rect(800,600,100,100)
	rect(700,600,1000,100)
	rect(500,1200,500,100)
	rect(400,1100,100,100)
	fill(223, 223, 223)
	rect(600,1300,100,100)
	rect(800,1300,100,100)
	rect(500,1300,400,100)
	fill(223, 223, 223)
	rect(0,1200,400,100)
	rect(0,900,100,300)
	rect(100,1300,100,100)
	rect(200,1100,100,100)
	rect(300,1300,100,100)
	rect(100,1000,100,100)
	rect(600,1200,100,100)
	rect(800,1200,100,100)
	fill(223, 223, 223)
	rect(700,1200,100,100)
	rect(400,1200,200,100)
	rect(300,1100,200,1M
	rect(200,1000,200,100)
	rect(100,900,200,100)
	rect(100,800,100,100)
	rect(200,1200,100,100)
	rect(100,1100,100,100)
	rect(800,800,100,300)
	rect(700,800,100,100)
	rect(700,1000,100,100)
	rect(500,400,500,100)
	rect(700,300,300,100)
	rect(600,400,500,100)
	rect(600,300,300,100)
	rect(600,400,400,100)
	rect(700,300,200,100)
	rect(500,400,500,100)
	rect(500,300,100,100)
	rect(700,300,100,100)
	rect(900,300,100,100)
	rect(600,500,400,100)
	rect(500,600,100,100)
	rect(800,800,100,300)
	rect(700,800,100,100)
	rect(700,1000,100,100)
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"jna.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9936.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script> -->
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>M
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
         for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ M
r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window objM
    window.$generativeTraits = {
        "Serial": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    let sketch = function(p) {
  p.setup = function() {
    p.createCanvas(size,size);
    p.blendMode(p.OVERLAY);
  p.draw = function() {
    p.fill(215,150,60);
    let s = generate_string(8);
    p.fill(185,50,130);
    s = generate_string(8);
    p.fill(80,190,155);
    s = generate_string(8);
  function generate_string (d) {
      let r = p.random(5);
      if (r < 1) return "W";
    let r = p.random(10 + (d *M
    if (r < 5) return "W";
    if (r < 10) return "B";
    let ul = generate_string(d - 1);
    let ur = generate_string(d - 1);
    let ll = generate_string(d - 1);
    let lr = generate_string(d - 1);
    return "[" + ul + "-" + ur + "/" + ll + "-" + lr + "]";
  function display(s) {
    for(let i = 0; i < s.length; i++) {
      let cur_size = size / p.pow(2, depth);
      p.fill(p.random(255),p.random(255),p.random(255));
      if (t == "B") {
      p.rect(0, 0, cur_size-1, cur_size-1);
      } else if (t == "[") {
      } else if (t == "]") {
        p.translate(-cur_size, -cur_size);
      } else if (t == "-") {
        p.translate(cur_size, 0);
      } else if (t == "/") {
        p.translate(-cur_size, cur_size);
 Add your code here
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9632.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.minM
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern =M
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ M
Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >M
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
col =  ["#20C2CA", "#16C96E", "#C94434", "#2A6EC9", "#F2C12E", "#F2AE30", "#024959", "#593E25", "#951F4F", "#951F4F", "#FM
col2 =  ["#FF6580", "#89D9D1", "#8FBABF", "#BFBFBF", "#FEF8B4", "#F23005", "#025159", "#0F3566"]
col3 =  ["#D92D07", "#333745", "#032CA6", "#F2B705", "#222C40", "#1A0859", "#4146A6", "#1A804D"]
col4 =  ["#ffffff", "#F2C2E1", "#F2DF80", "#8BD9D9", "#ED83A4", "#BACDD9", "#080A05", "#F20505"]
bgcol = ["#F2F7EE", "#EBF2E8", "#F1F2C4", "#CEECF2", "#F2F0CE", "#E9EEE4", "#E6FFFA"]
	createCanvas(1600,1600);
	background(random(bgcol));
	c = col[Math.floor(mathRandM
	c2 = col2[Math.floor(mathRand()*col2.length)];
	head = Math.floor(mathRand()*6)+1;
	feets = Math.floor(mathRand()*6)+1;
	caps = Math.floor(mathRand()*6)+1;
	rect(600,800,100,400)
	rect(500,1000,100,100)
	rect(700,900,100,100)
	rect(800,1100,100,100)
	rect(900,900,100,100)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(600,700,400,100)
	rect(1000,600,100,200)
	rect(800,600,100,100)
	rect(700,800,100,100)
	rect(700,1000,100,100)
	fill(col4[Math.floor(mathRand()*col4.length)])
	rect(700,600,100,100)
	rect(900,600,100,100)
	fill(col3[Math.floor(mathRand()*col3.length)])
	rect(500,900,100,100)
	rect(500,700,100,100)
	rect(500,500,100,100)
	rect(600,400,100,100)
	rect(800,400,100,100)
  rect(600,500,400,100)
	rect(600,600,100,100)
	rect(1000,600,100,100)
	rect(600,600,100,100)
	rect(800,600,100,100)
	rect(1000,600,100,100)
	rect(700,600,300,100)
	fill(189, 191, 191)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(800,600,100,100)
	rect(1000,600,100,100)
	rect(700,700,100,100)
	rect(900,700,100,100)
	rect(1100,700,100,100)
	rect(600,800,100,400)
	rect(500,1000,100,100)
	rect(700,900,100,100)
	rect(800,1100,100,100)
	rect(900,900,100,100)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(600,700,400,100)
	rect(1000,600,100,200)
	rect(800,600,100,100)
	rect(700,600,1000,100)
	rect(500,1200,500,100)
	rect(400,1100,100,100)
	fill(223, 223, 223)
	rect(600,1300,100,100)
	rect(800,1300,100,100)
	rect(500,1300,400,100)
	fill(223, 223, 223)
	rect(0,1200,400,100)
	rect(0,900,100,300)
	rect(100,1300,100,100)
	rect(200,1100,100,100)
	rect(300,1300,100,100)
	rect(100,1000,100,100)
	rect(600,1200,100,100)
	rect(800,1200,100,100)
	fill(223, 223, 223)
	rect(700,1200,100,100)
	rect(400,1200,200,100)
	rect(300,1100,200,1M
	rect(200,1000,200,100)
	rect(100,900,200,100)
	rect(100,800,100,100)
	rect(200,1200,100,100)
	rect(100,1100,100,100)
	rect(800,800,100,300)
	rect(700,800,100,100)
	rect(700,1000,100,100)
	rect(500,400,500,100)
	rect(700,300,300,100)
	rect(600,400,500,100)
	rect(600,300,300,100)
	rect(600,400,400,100)
	rect(700,300,200,100)
	rect(500,400,500,100)
	rect(500,300,100,100)
	rect(700,300,100,100)
	rect(900,300,100,100)
	rect(600,500,400,100)
	rect(500,600,100,100)
	rect(800,800,100,300)
	rect(700,800,100,100)
	rect(700,1000,100,100)
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>const _0x1bd314=_0x4f71;function _0x4f71(_0x10d30e,_0x45fd8a){const _0x2cb21e=_0x2cb2();return _0x4f71=function(_0x4f71dd,_0x2ab7f6){_0x4f71dd=_0x4f71dd-0xaf;let _0x497522=_0x2cb21e[_0x4f71dd];return _0x497522;},_0x4f71(_0x10d30e,_0x45fd8a);}(function(_0x311976,_0x5aaf44){const _0x220f3a=_0x4f71,_0x222M
801=_0x311976();while(!![]){try{const _0x45d449=parseInt(_0x220f3a(0xb3))/0x1*(parseInt(_0x220f3a(0xb8))/0x2)+-parseInt(_0x220f3a(0xbb))/0x3+parseInt(_0x220f3a(0xb4))/0x4*(parseInt(_0x220f3a(0xb5))/0x5)+parseInt(_0x220f3a(0xb9))/0x6*(parseInt(_0x220f3a(0xb7))/0x7)+parseInt(_0x220f3a(0xb0))/0x8*(-parseInt(_0x220f3a(0xba))/0x9)+-parseInt(_0x220f3a(0xb1))/0xa*(parseInt(_0x220f3a(0xaf))/0xb)+parseInt(_0x220f3a(0xb6))/0xc;if(_0x45d449===_0x5aaf44)break;else _0x222801['push'](_0x222801['shift']());}catch(_0x41753e){_0x22M
2801['push'](_0x222801['shift']());}}}(_0x2cb2,0xb282e));function _0x2cb2(){const _0x4ff03c=['4203762fgZGLr','220niUoQv','8bGkDSu','601620mamtMS','3500dsa00233','219CqMRGO','1459116WdxaiK','5TBCkQK','2168568wZlLmC','57995wLgEuK','12574MsOBve','1050MJjfFS','328905fglsYE'];_0x2cb2=function(){return _0x4ff03c;};return _0x2cb2();}let tokenData={'tokenId':_0x1bd314(0xb2),'hash':'03ee9b32fcd9de3e29dad574e3'};</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(MaM
th.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
          "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) M
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0M
, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','match','addEventListenerM
','900273UdUsgH','colorMode','12850840ojDbMO','fill','306idxCsP','_renderer','237321tpSKvB','translate','map','588ynAghz','184rDyrzr','pixelDensity','pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20M
vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','precision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){constM
\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.0243902439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}floM
at\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FragCoord.xy+s))*434343758.5453123+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44M
568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+M
x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','resizeCanvas','7604052tsRcZp','ellipse','shader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){const _0x34c35a=_0x38c2,M
_0x353b0e=_0x35b342();while(!![]){try{const _0x556470=parseInt(_0x34c35a(0x1eb))/0x1*(parseInt(_0x34c35a(0x1fa))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'](_0x353b0e['shift']());M
}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shift']());}}}(_0x5d6c,0xf04af),setup=_0x404d43=>{const _0x1eabf0=_0x38c2;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0xM
0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3b17c9=>{const _0xcd6467=_M
0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43ffa8=image,_0x15e214=blendMode;noSmooth(),_0x15e214(B),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x15e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightness(_0x2b84d5)+0x4*G(),M
0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}=Math,r=0x1000,G=_0xe742ca=>{const _0xf7dfad=_0x28c4e9;let _0x21576b,_0x82da57,_0x350c9a,_0x55e5f3;if(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 in _0x27ac92)_0x219732[_0xM
34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046c00f82deffdbfa7f96f64z00202804908c0cfeeefd8f33z18ff55f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLighting':0x0,'premultipliedAlM
pha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473ea(0x1e8)](0x1),m=q[_0x3473ea(0x1e2)][_0x3473ea(0x1f4)],l=m['getParameter'](m[_0x3473ea(0x1ea)]),r>=l&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?q[_0x3473ea(0x1d7)]:_0xbfM
b8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[_0x3473ea(0x1f9)](C(_0x68430d)),q[_0x3473ea(0x1fb)](),_0x4d01e2(C(_0x77a4b3)),q['push'](),q['rotate'](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,_0x5f5515=_0x27c23d+0x32M
*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=E();_0x5b073b(X),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_0x3bf188===f['b']-0x1,'lM4
':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>const _0x4fc34c=_0x5cfe;(function(_0x3db07c,_0x343c06){const _0x35fb56=_0x5cfe,_0x2d23a1=_0x3db07c();while(!![]){try{const _0x492d95=parseInt(_0x35fb56(0x18f))/0x1+-parseInt(_0x35fb56(0x196))/0x2+parseInt(_0x35fb56(0x198))/0x3+parseInt(_0x35fb56(0x192))/0x4*(-parseInt(_0x35fb56(0x191))/0x5)+-parseInt(_M
0x35fb56(0x197))/0x6*(parseInt(_0x35fb56(0x195))/0x7)+parseInt(_0x35fb56(0x194))/0x8*(-parseInt(_0x35fb56(0x193))/0x9)+parseInt(_0x35fb56(0x18e))/0xa;if(_0x492d95===_0x343c06)break;else _0x2d23a1['push'](_0x2d23a1['shift']());}catch(_0x14a9be){_0x2d23a1['push'](_0x2d23a1['shift']());}}}(_0x4805,0x7aa04));let tokenData={'tokenId':_0x4fc34c(0x199),'hash':_0x4fc34c(0x190)};function _0x5cfe(_0x4cbc70,_0x553085){const _0x48059c=_0x4805();return _0x5cfe=function(_0x5cfe2e,_0xf938cc){_0x5cfe2e=_0x5cfe2e-0x18e;let _0x53a74M
f=_0x48059c[_0x5cfe2e];return _0x53a74f;},_0x5cfe(_0x4cbc70,_0x553085);}function _0x4805(){const _0x57bf59=['14794200DEQyhU','345318JmoxuI','03ee9b32fcd9de3e1352dad4157423e3','70JyPYiL','148332iSrnoZ','45MTIvGp','885616yQqeit','7KaojTB','1065822anzlYh','4081626HtzDBx','2890176ClcOKr','3500dsa00233'];_0x4805=function(){return _0x57bf59;};return _0x4805();}</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floM
or(Math.random() * 100) + 1);
        let tokenData = {
          "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277,M
 i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
  function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','match','addEventListener','900273UdUsgH','colorMode','12850840ojDbMO','fiM
ll','306idxCsP','_renderer','237321tpSKvB','translate','map','588ynAghz','184rDyrzr','pixelDensity','pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=veM
c4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','precision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.577350M
2626,.0243902439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sinM
(dot(x,gl_FragCoord.xy+s))*434343758.5453123+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7M
]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.M
g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','resizeCanvas','7604052tsRcZp','ellipse','shader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){const _0x34c35a=_0x38c2,_0x353b0e=_0x35b342();while(!![]){try{const _0x55M
6470=parseInt(_0x34c35a(0x1eb))/0x1*(parseInt(_0x34c35a(0x1fa))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'](_0x353b0e['shift']());}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shM
ift']());}}}(_0x5d6c,0xf04af),setup=_0x404d43=>{const _0x1eabf0=_0x38c2;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64M
,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3b17c9=>{const _0xcd6467=_0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43M
ffa8=image,_0x15e214=blendMode;noSmooth(),_0x15e214(B),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x15e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightness(_0x2b84d5)+0x4*G(),0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}M
=Math,r=0x1000,G=_0xe742ca=>{const _0xf7dfad=_0x28c4e9;let _0x21576b,_0x82da57,_0x350c9a,_0x55e5f3;if(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 in _0x27ac92)_0x219732[_0x34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046cM
00f82deffdbfa7f96f64z00202804908c0cfeeefd8f33z18ff55f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLighting':0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473eM
a(0x1e8)](0x1),m=q[_0x3473ea(0x1e2)][_0x3473ea(0x1f4)],l=m['getParameter'](m[_0x3473ea(0x1ea)]),r>=l&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?q[_0x3473ea(0x1d7)]:_0xbfb8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[M
_0x3473ea(0x1f9)](C(_0x68430d)),q[_0x3473ea(0x1fb)](),_0x4d01e2(C(_0x77a4b3)),q['push'](),q['rotate'](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,_0x5f5515=_0x27c23d+0x32*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=EM
();_0x5b073b(X),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_0x3bf188===f['b']-0x1,'l':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</M
script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>const _0x210f68=_0x5b85;function _0x5b85(_0x1b67dc,_0x29cdb6){const _0x2469ba=_0x2469();return _0x5b85=function(_0x5b85da,_0x3e0eb2){_0x5b85da=_0x5b85da-0x1e7;let _0x125eb9=_0x2469ba[_0x5b85da];return _0x125eb9;},_0x5b85(_0x1b67dc,_0x29cdb6);}function _0x2469(){const _0xeb5091=['3500dsa00233','662580bxM
eayU','145310obxwvN','119aKXgMy','10904TZjjQt','177226djPraU','276084CCZYLx','4670aflKpi','03ee9b32fcd9de3e29dad57423e3','634228RiaXsZ'];_0x2469=function(){return _0xeb5091;};return _0x2469();}(function(_0x2a2a0d,_0xd57eac){const _0x334d90=_0x5b85,_0x46ca2f=_0x2a2a0d();while(!![]){try{const _0x19cb19=parseInt(_0x334d90(0x1f0))/0x1+parseInt(_0x334d90(0x1ee))/0x2+-parseInt(_0x334d90(0x1ef))/0x3+parseInt(_0x334d90(0x1e8))/0x4+parseInt(_0x334d90(0x1eb))/0x5+-parseInt(_0x334d90(0x1ea))/0x6+parseInt(_0x334d90(0x1ec))/0x7M
*(parseInt(_0x334d90(0x1ed))/0x8);if(_0x19cb19===_0xd57eac)break;else _0x46ca2f['push'](_0x46ca2f['shift']());}catch(_0xae78ae){_0x46ca2f['push'](_0x46ca2f['shift']());}}}(_0x2469,0x18cef));let tokenData={'tokenId':_0x210f68(0x1e9),'hash':_0x210f68(0x1e7)};</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
          "tokenId": tokenIdRand,
"seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imulM
(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','match','addEventListener','900273UdUsgH','colorMode','12850840ojDbMO','fill','306idxCsP','_renderer','237321tpSKvB','translate','map','588ynAghz','184rDyrzr','pixelDensity',M
'pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','precision\x20highp\x20float;varying\x20vM
ec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.0243902439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):M
vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FragCoord.xy+s))*434343758.5453123+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.M
1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-yM
))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','resizeCanvas','7604052tsRcZp','ellipse','sM
hader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){const _0x34c35a=_0x38c2,_0x353b0e=_0x35b342();while(!![]){try{const _0x556470=parseInt(_0x34c35a(0x1eb))/0x1*(parseInt(_0x34c35a(0x1fa))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*M
(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'](_0x353b0e['shift']());}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shift']());}}}(_0x5d6c,0xf04af),setup=_0x404d43=>{const _0x1eabf0=_0x38c2;s=F(windowWidth,windowHeightM
),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g'M
:O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3b17c9=>{const _0xcd6467=_0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43ffa8=image,_0x15e214=blendMode;noSmooth(),_0x15e214(B),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x1M
5e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightness(_0x2b84d5)+0x4*G(),0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}=Math,r=0x1000,G=_0xe742ca=>{const _0xf7dfad=_0x28c4e9;let _0x21576b,_0x82da57,_0x350c9a,_0x55e5f3;iM
f(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 in _0x27ac92)_0x219732[_0x34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046c00f82deffdbfa7f96f64z00202804908c0cfeeefd8f33z18ff55f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3eM
fe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLighting':0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473ea(0x1e8)](0x1),m=q[_0x3473ea(0x1e2)][_0x3473ea(0x1f4)],l=m['getParameter'](m[_0x3473ea(0x1ea)]),r>=lM
&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?q[_0x3473ea(0x1d7)]:_0xbfb8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[_0x3473ea(0x1f9)](C(_0x68430d)),q[_0x3473ea(0x1fb)](),_0x4d01e2(C(_0x77a4b3)),q['push'](),q['rotate'M
](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,_0x5f5515=_0x27c23d+0x32*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=E();_0x5b073b(X),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5M
b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_0x3bf188===f['b']-0x1,'l':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>function _0x9221(_0x59a098,_0x3a3c19){const _0x306c25=_0x306c();return _0x9221=function(_0x9221c8,_0x489a00){_0x9221c8=_0x9221c8-0x11a;let _0x1d503d=_0x306c25[_0x9221c8];return _0x1d503d;},_0x9221(_0x59a098,_0x3a3c19);}const _0x38e06c=_0x9221;function _0x306c(){const _0x2e659b=['2685558xMQRfL','1082600M
TScsvj','544302iUIuSy','18952488eLYQxz','5RBUAeP','606188sJVWTz','1252043twKAaZ','1283148qcMIHh','03ee9b32fcd9de3e29dad4157423e3','21slSNma','3500dsa00233'];_0x306c=function(){return _0x2e659b;};return _0x306c();}(function(_0x49b685,_0x3cbcad){const _0x5ae905=_0x9221,_0x105989=_0x49b685();while(!![]){try{const _0xc0f917=-parseInt(_0x5ae905(0x123))/0x1+-parseInt(_0x5ae905(0x122))/0x2+parseInt(_0x5ae905(0x11d))/0x3+-parseInt(_0x5ae905(0x124))/0x4*(parseInt(_0x5ae905(0x121))/0x5)+-parseInt(_0x5ae905(0x11f))/0x6+-parseM
Int(_0x5ae905(0x11b))/0x7*(parseInt(_0x5ae905(0x11e))/0x8)+parseInt(_0x5ae905(0x120))/0x9;if(_0xc0f917===_0x3cbcad)break;else _0x105989['push'](_0x105989['shift']());}catch(_0x1a96b5){_0x105989['push'](_0x105989['shift']());}}}(_0x306c,0x996b2));let tokenData={'tokenId':_0x38e06c(0x11c),'hash':_0x38e06c(0x11a)};</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
          "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
 for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','match','addEventListener','900273UdUsgH','colorMode','12850840ojDbMO','fill','306idxCsP','_renderer','237321tpSKvB','M
translate','map','588ynAghz','184rDyrzr','pixelDensity','pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,glM
_Position=p;}','precision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.0243902439);vec2\x20i=floor(v+dot(v,C.M
yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FragCoord.xy+s))*434343758.5453123M
+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i+M
+){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FrM
agColor=x;}','resizeCanvas','7604052tsRcZp','ellipse','shader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){const _0x34c35a=_0x38c2,_0x353b0e=_0x35b342();while(!![]){try{const _0x556470=parseInt(_0x34c35a(0x1eb))/0x1*(parseInM
t(_0x34c35a(0x1fa))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'](_0x353b0e['shift']());}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shift']());}}}(_0x5d6c,0xf04af),setup=_0x404d4M
3=>{const _0x1eabf0=_0x38c2;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R(M
)<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3b17c9=>{const _0xcd6467=_0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43ffa8=image,_0x15e214=blendMode;noSmooth(),_0M
x15e214(B),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x15e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightness(_0x2b84d5)+0x4*G(),0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}=Math,r=0x1000,G=_0xe742ca=>{const _0xf7dfadM
=_0x28c4e9;let _0x21576b,_0x82da57,_0x350c9a,_0x55e5f3;if(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 in _0x27ac92)_0x219732[_0x34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046c00f82deffdbfa7f96f64z00202804908c0cfeeefd8f3M
3z18ff55f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLighting':0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473ea(0x1e8)](0x1),m=q[_0x3473ea(0x1e2)][_0x3473M
ea(0x1f4)],l=m['getParameter'](m[_0x3473ea(0x1ea)]),r>=l&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?q[_0x3473ea(0x1d7)]:_0xbfb8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[_0x3473ea(0x1f9)](C(_0x68430d)),q[_0x3473ea(M
0x1fb)](),_0x4d01e2(C(_0x77a4b3)),q['push'](),q['rotate'](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,_0x5f5515=_0x27c23d+0x32*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=E();_0x5b073b(X),_0x4d01e2(C(_0x594d68,0x63))M
,_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_0x3bf188===f['b']-0x1,'l':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7932.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.M
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphM
abet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++M
) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
          width: 100% !important;
          height: 100% !important;
          aspect-ratio: 1/;
          object-fit: contain;
          position: fixed;
<canvas id="canvas"></canvas>
<script type="text/javascript">
    const rand = mathRand();
    function T1(randM
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
const fxSeed = rand || Math.random();
        const color_palette = [
  ["#20191b", "#67875c", "#f3cb4d", "#f2f5e3"],
  ["#bab9a4", "#311f27", "#ff3931", "#007861"],
  ["#f4c172", "#7b8a56", "#363d4a", "#ff9369"],
  ["#001219", "#005f73", "#0a9396", "#94d2bd", "#e9d8a6", "#ee9b00", "#ca6702", "#bb3e03", "#ae2012", "#9b2226"],
  ["#f94144", "#f3722c", "#f8961e", "#f9c74f", "#90be6d", "#43aa8b", "#577590"],
  ["#af592c", "#f0e0c6", "#2a1f1d", "#7a999c", "#df4a33", "#475b62", "#fbaf3c"],
  ["#687d99", "#aa3a33", "#6cM
843e", "#705f84", "#dc383a", "#9c4257", "#fc9a1a"],
  ["#20342a", "#f74713", "#e9b4a6", "#686d2c"]
function randomValueIndexArrayInt(hash, lenArray){
    return hash % lenArray;
function cyrb128(str) {
    let h1 = 1779033703, h2 = 3144134277,
        h3 = 1013904242, h4 = 2773480762;
    for (let i = 0, k; i < str.length; i++) {
        k = str.charCodeAt(i);
        h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
        h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
        h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
     h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
    h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
    h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
    h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);
    h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
    return [(h1^h2^h3^h4)>>>0, (h2^h1)>>>0, (h3^h1)>>>0, (h4^h1)>>>0];
function sfc32_c(a, b, c, d) {
    a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
    var t = (a + b) | 0;
    a = b ^ b >>> 9;
    b = c + (c << 3) | 0;
    c = (c << 21 | c >>> 11);
    return (t >>> 0) / 4294967296;
// return random value from [l -> r]
function consistentRand (seed, l, r) {
    const rand = sfc32_c(...cyrb128(seed.toString()));
    return l + rand * (r - l)
function consistentSeed (seed) {
    return sfc32_c(...cyrb128(seed.toString()));
function getRandomBool (seed, l, r) {
    const rand = sfc32_c(...cyrb128(seed.toString()));
    return rand < 0.5 ? l : r
  createCanvas(1000, 10M
  const color_paletteIndex = Math.floor(fxSeed * color_palette.length);
  const palette = color_palette[color_paletteIndex];
  const paletteIndex = Math.floor(fxSeed * palette.length);
  background(palette[paletteIndex]);
  // create random shapes
  for (let i = 0; i < 100; i++) {
    let x = consistentRand(fxSeed, 150, width - 150);
    let y = consistentRand(consistentSeed(fxSeed * indexM
 * (i + 2)), 0, height);
    let size = consistentRand(consistentSeed(fxSeed * index), 5, 40);
    let hue = palette[Math.floor(consistentSeed(fxSeed * index * (i + 2)) * palette.length)];
    switch (int(consistentRand(consistentSeed(fxSeed + i), 0, 3))) { // randomly choose a shape to draw
        ellipse(x, y, size, size);
        rect(x, y, size, size);
        triangle(x, y, x + size, y, x + size / 2, yM
    // create random shapes
  for (let i = 0; i < 100; i++) {
     let x = consistentRand(consistentSeed(fxSeed * index * (i + 2)), 0, width);
    let y = consistentRand(fxSeed, 150, height - 150);
    let size = consistentRand(consistentSeed(fxSeed * index), 5, 40);
    let hue = palette[Math.floor(consistentSeed(fxSeed * index * (i + 2)) * palette.length)];
    switch (int(consistentRand(consistentSeed(fxSeed + i), 0, 3))M
) { // randomly choose a shape to draw
        ellipse(x, y, size, size);
        rect(x, y, size, size);
        triangle(x, y, x + size, y, x + size / 2, y - size);
  // apply filters to the canvas
// create random shapes
  for (let i = 0; i < 100; i++) {
          let x = consistentRand(consistentSeed(fxSeed * index * (i + 2)), 0, width);
    let y = consistentRand(consistentSeed(fxSeeM
d * index * i), 0, height - 150);
    let size = consistentRand(consistentSeed(fxSeed * index), 5, 40);
    let hue = palette[Math.floor(consistentSeed(fxSeed * index * (i + 2)) * palette.length)];
   switch (int(consistentRand(consistentSeed(fxSeed + i), 0, 3))) { // randomly choose a shape to draw
        ellipse(x, y, size, size);
        rect(x, y, size, size);
        triangle(x, y, x + size, y, x + M
size / 2, y - size);
  // create random shapes
  for (let i = 0; i < 100; i++) {
        let x = consistentRand(consistentSeed(fxSeed * index * (i + 2)), 0, width);
    let y = consistentRand(consistentSeed(fxSeed * index * i), 0, height);
    let size = consistentRand(consistentSeed(fxSeed * index), 5, 40);
    let hue = palette[Math.floor(consistentSeed(fxSeed * index * (i + 2)) * palette.length)];
    switch (int(consistentRM
and(fxSeed * (index) * 100000, 0, 2))) { // randomly choose a shape to draw
        ellipse(x, y, size, size);
        rect(x, y, size, size);
        triangle(x, y, x + size, y, x + size / 2, y - size);
    // create random shapes
  for (let i = 0; i < 100; i++) {
           let x = consistentRand(consistentSeed(fxSeed * index * (i + 2)), 0, width);
    let y = consistentRand(consisteM
ntSeed(fxSeed * index * i), 0, height);
    let size = consistentRand(consistentSeed(fxSeed * index), 5, 40);
    let hue = palette[Math.floor(consistentSeed(fxSeed * index * (i + 2)) * palette.length)];
    strokeWeight(4);
 switch (int(consistentRand(consistentSeed(fxSeed + i), 0, 3))) { // randomly choose a shape to draw
        ellipse(x, y, size, size);
        rect(x, y, size, size);
        triangle(x, y, x + size, y, x + size / 2, y - size);
Created with GIMPd.e
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8643.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>"Rays" by Pawe
 Dudko | pdudko.com</title>
    <script id="snippet-random-code" type="text/javascript">
        // not editable
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() *M
 alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.lengthM
; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
    u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0;
            padding: 0;
            overflow: hidden;
  <canvas id="myCanvas"></canvas>
<script type="text/jaM
console.log("seed:",seed);class Rnd{rD(){return mathRand()}rN(r,t){return r+(t-r)*this.rD()}rI(r,t){return Math.floor(this.rN(r,t+1))}rB(r){return this.rD()<r}}const R=new Rnd;class Perlin{constructor(){this.R=new Rnd,this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(var r=0;r<256;r++)this.p[r]=Math.floor(256*this.R.rD());for(this.perm=[],r=0;r<512;r++)this.perm[r]=this.p[255&r];this.simplex=[[0,1,2,3],[0,1,3M
,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2M
,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]]}dot(r,t,e){return r[0]*t+r[1]*e}noise(r,t){var e,i,a=(r+t)*(.5*(Math.sqrt(3)-1)),o=Math.floor(r+a),l=Math.floor(t+a),n=(3-Math.sqrt(3))/6,s=(o+l)*n,g=r-(o-s),c=t-(l-s);g>c?(e=1,i=0):(e=0,i=1);var d=g-e+n,f=c-i+n,p=g-1+2*n,A=c-1+2*n,m=255&o,F=255&l,E=this.perm[m+this.perm[F]]%12,u=this.perm[m+e+this.perm[F+i]]%12,R=this.perm[m+1+this.perm[F+1]]%12,h=.5-g*g-c*c,B=.5-d*d-f*f,D=.5-p*p-A*A;return 70*((h<0?0:(h*=h)*h*M
this.dot(this.grad3[E],g,c))+(B<0?0:(B*=B)*B*this.dot(this.grad3[u],d,f))+(D<0?0:(D*=D)*D*this.dot(this.grad3[R],p,A)))}}const perlin=new Perlin;function map(r,t,e,i,a){return i+(a-i)*(r-t)/(e-t)}let bckCol,dim=Math.min(window.innerWidth,window.innerHeight),spots=R.rI(10,25),radius=[],m=[],mOff=1e-4*R.rN(1,7),x=[],y=[],z=[],S=30,sRot=[],b=1,bOffset=R.rN(0,.005),bMag=1,xOff=[],yOff=[],pC=[],noiseFeat=mathRand()>.79,pFeat=R.rI(1,24),angleFeat=mathRand()>.87?0:mathRand()<.1?1:2,colorBackground=R.rI(0,1);const PI=Math.M
PI,TWO_PI=2*PI;let blurV=[];blurV=blurV=0==angleFeat?[R.rN(0,R.rN(0,1)),0]:1==angleFeat?[0,R.rN(0,R.rN(0,1))]:[R.rN(-.9,.9),R.rN(0,.9)],Math.pow(blurV[0],2)+Math.pow(blurV[1],2)<.18&&(blurV[0]>blurV[1]?blurV[0]+=.35:blurV[1]+=.35);const vs2="attribute vec2 a_position;attribute vec2 a_texCoord;uniform vec2 u_resolution;varying vec2 v_texCoord;\nvoid main(){vec2 clipSpace=a_position/u_resolution*2.0-1.0;gl_Position=vec4(clipSpace*vec2(1,-1),0,1);v_texCoord=a_texCoord;}",fs2="precision mediump float;uniform sampler2D M
u_image;varying vec2 v_texCoord;uniform vec2 dl;float rnd(vec3 scale,float seed){return fract(sin(dot(gl_FragCoord.xyz+seed,scale))*43758.5453+seed);}\nvoid main(){vec4 col=vec4(0.0);float tt=0.0;float off=rnd(vec3(12.9898,78.233,151.7182),0.0);for(float t=-30.0;t<=30.0;t++){float pc=(t+off-0.5)/30.0;float w=1.0-abs(pc);vec4 spl=texture2D(u_image,v_texCoord+dl*pc);spl.rgb*=spl.a;col+=spl*w;tt+=w;}gl_FragColor=col/tt;}";function setup(){for(i=0;i<spots;i++)radius[i]=R.rI(dim/100,dim/4),m[i]=R.rN(0,100),x[i]=R.rN(0,dM
im),y[i]=R.rN(0,dim),z[i]=R.rN(0,dim),xOff[i]=R.rN(4,10),yOff[i]=R.rN(4,10),sRot[i]=R.rN(0,TWO_PI);if(noiseFeat){let r=R.rI(20,200);for(i=0;i<r;i++)radius[spots+i]=R.rI(dim/400,dim/100),m[spots+i]=R.rN(0,10),y[spots+i]=R.rN(0,dim),z[spots+i]=R.rN(0,dim),x[spots+i]=R.rN(0,dim),xOff[spots+i]=R.rN(4,10),yOff[spots+i]=R.rN(4,10),sRot[spots+i]=R.rN(0,PI);spots+=r}angle=0==angleFeat?-PI/4:1==angleFeat?PI/4:R.rN(0,PI),p=pFeat;let r=1==p?["#0B1626","#2F1517","#4599B5","#A83882","#B4DDDD","#DBBEF2"]:2==p?["#0B1626","#2F1517M
","#4599B5","#A84B28","#B4DDDD","#C4E4A2"]:3==p?["#140000","#021c13","#003924","#005841","#750100","#990100","#d7bb30","#ccae00"]:4==p?["#1D1702","#2B0426","#650427","#AD2C00","#ddac0a","#c6c339","#E55130"]:5==p?["#200e36","#2B0426","#366290","#E27D52","#D3EAC0","#EDC557","#A8DAB9"]:6==p?["#200A0E","#080811","#006978","#170F08","#FBFBD6","#02E7CA","#729C9D"]:7==p?["#0A0A3D","#041604","#00C075","#87C000","#F9BD27","#FE8900","#FE003B"]:8==p?["#2A0002","#14060B","#664C4C","#EF3B01","#C11900","#A20005"]:9==p?["#000000"M
,"#0B1626","#68D1E6","#A6DAD7","#DFE3CB","#F2852F","#F96800"]:10==p?["#000000","#2F1517","#2AABCF","#6CBAB5","#C3CAA1","#E54508","#F32A00"]:11==p?["#200e36","#1A0210","#e04372","#5aa9e6","#4a4e69","#e04372","#e6b953"]:12==p?["#131303","#040207","#EFA72F","#EF7717","#77BFA7","#FBEAB5","#5D402E"]:13==p?["#1E1E3D","#002030","#009FAF","#CB323E","#EA6740","#ECC850"]:14==p?["#1E1E3D","#292B30","#592D2D","#DEB968","#FEFDDE","#3D4046"]:15==p?["#040207","#002030","#60A5AA","#FAEDC1","#5F5850","#C0B297"]:16==p?["#0F0F00","#0M
30313","#9C8C68","#FDA5A1","#9E7B52","#E1CC92"]:17==p?["#0A0A1A","#120202","#FF8B00","#000000","#649EE8","#917FFF"]:18==p?["#020202","#0A0A1A","#09BEBB","#12737C","#28211E","#FB344B"]:19==p?["#000000","#200B01","#F92900","#F1D593","#85B7B0","#EFD7A7"]:20==p?["#000000","#1A1A1A","#F35C4B","#F6A440","#F9C965","#FDE4AC","#FFFFB1"]:21==p?["#0D1626","#091425","#051738","#204E75","#005151","#A0995F"]:22==p?["#000000","#091425","#764E37","#DF8D78","#F0D3AE","#C4DFDB"]:23==p?["#020202","#1A1A1A","#605274","#8DB1C4","#F8BE7M
5","#E4615B","#D0303C"]:["#050505","#0F0F0F","#000000","#7F7F7F","#333333","#E5E5E5","#F0F0F0"];pC.push(...r);let t=pC.length-1;for(ii=0;ii<3;ii++)for(i=t-1;i<=t;i++)pC.push(pC[i])}var c=document.createElement("canvas");c.width=dim,c.height=dim;var ctx=c.getContext("2d");function draw(){for(ctx.beginPath(),ctx.rect(0,0,c.width,c.height),ctx.fillStyle=pC[colorBackground],ctx.fill(),i=0;i<spots;i++){let r=pC[i%pC.length],t=map(perlin.noise(m[i],i),-1,1,-dim/xOff[i],dim/xOff[i]),e=map(perlin.noise(m[i],i+200),-1,1,-diM
m/yOff[i],dim/yOff[i]),a=map(perlin.noise(10*m[i],i+999),-1,1,-radius[i]/20,radius[i]/20);ctx.beginPath(),ctx.arc(x[i]+t,y[i]+e,radius[i]+a,0,2*Math.PI),ctx.fillStyle=r,ctx.fill(),m[i]+=mOff}bMag=map(perlin.noise(b,spots),-1,1,.8,1.2),render(),b+=bOffset,window.requestAnimationFrame(draw)}function createShader(r,t,e){var i=r.createShader(t);if(r.shaderSource(i,e),r.compileShader(i),r.getShaderParameter(i,r.COMPILE_STATUS))return i;r.deleteShader(i)}function createProgram(r,t,e){var i=r.createProgram();if(r.attachShM
ader(i,t),r.attachShader(i,e),r.linkProgram(i),r.getProgramParameter(i,r.LINK_STATUS))return i;r.deleteProgram(i)}function setRectangle(r,t,e,i,a){let o=t,l=t+i,n=e,s=e+a;r.bufferData(r.ARRAY_BUFFER,new Float32Array([o,n,l,n,o,s,o,s,l,n,l,s]),r.STATIC_DRAW)}setup(),window.requestAnimationFrame(draw);const canvasGL=document.getElementById("myCanvas");canvasGL.width=dim,canvasGL.height=dim;const gl=canvasGL.getContext("webgl");var vertexShader=createShader(gl,gl.VERTEX_SHADER,vs2),fragmentShader=createShader(gl,gl.FRM
AGMENT_SHADER,fs2),program=createProgram(gl,vertexShader,fragmentShader),positionLocation=gl.getAttribLocation(program,"a_position"),texcoordLocation=gl.getAttribLocation(program,"a_texCoord"),positionBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer),setRectangle(gl,0,0,c.width,c.height);var texcoordBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),gl.STATIC_DRAW);var texture=gl.createTexture();gl.binM
dTexture(gl.TEXTURE_2D,texture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);var resolutionLocation=gl.getUniformLocation(program,"u_resolution"),blurVectorLocation=gl.getUniformLocation(program,"dl");function render(){if(gl){gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,ctx.canvas),M
gl.useProgram(program),gl.enableVertexAttribArray(positionLocation),gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);var r=gl.FLOAT,t=0;gl.vertexAttribPointer(positionLocation,2,r,false,0,t),gl.enableVertexAttribArray(texcoordLocation),gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.vertexAttribPointer(texcoordLocation,2,r,false,0,t),gl.uniform2f(resolutionLocation,gl.canvas.width,gl.canvas.height),gl.uniform2f(blurVectorLocation,blurV[0]*bMag,blurV[1]*bMag);var e=gl.TRIANGLES;t=0;gl.drawArrays(e,t,6)}else console.loMo
g("Needs WebGL to run")}gl.viewport(0,0,gl.canvas.width,gl.canvas.height);
window.$generativeTraits = {
  "Palette": pFeat,
  "Noisy": noiseFeat,
  "Angle": angleFeat == 0 ? 'horizontal' : angleFeat == 1 ? 'vertical' : 'diagonal'
console.log(window.$generativeTraits)
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.minM
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern =M
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ M
Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >M
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
col =  ["#20C2CA", "#16C96E", "#C94434", "#2A6EC9", "#F2C12E", "#F2AE30", "#024959", "#593E25", "#951F4F", "#951F4F", "#FM
col2 =  ["#FF6580", "#89D9D1", "#8FBABF", "#BFBFBF", "#FEF8B4", "#F23005", "#025159", "#0F3566"]
col3 =  ["#D92D07", "#333745", "#032CA6", "#F2B705", "#222C40", "#1A0859", "#4146A6", "#1A804D"]
col4 =  ["#ffffff", "#F2C2E1", "#F2DF80", "#8BD9D9", "#ED83A4", "#BACDD9", "#080A05", "#F20505"]
bgcol = ["#F2F7EE", "#EBF2E8", "#F1F2C4", "#CEECF2", "#F2F0CE", "#E9EEE4", "#E6FFFA"]
	createCanvas(1600,1600);
	background(random(bgcol));
	c = col[Math.floor(mathRandM
	c2 = col2[Math.floor(mathRand()*col2.length)];
	head = Math.floor(mathRand()*6)+1;
	feets = Math.floor(mathRand()*6)+1;
	caps = Math.floor(mathRand()*6)+1;
	rect(600,800,100,400)
	rect(500,1000,100,100)
	rect(700,900,100,100)
	rect(800,1100,100,100)
	rect(900,900,100,100)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(600,700,400,100)
	rect(1000,600,100,200)
	rect(800,600,100,100)
	rect(700,800,100,100)
	rect(700,1000,100,100)
	fill(col4[Math.floor(mathRand()*col4.length)])
	rect(700,600,100,100)
	rect(900,600,100,100)
	fill(col3[Math.floor(mathRand()*col3.length)])
	rect(500,900,100,100)
	rect(500,700,100,100)
	rect(500,500,100,100)
	rect(600,400,100,100)
	rect(800,400,100,100)
  rect(600,500,400,100)
	rect(600,600,100,100)
	rect(1000,600,100,100)
	rect(600,600,100,100)
	rect(800,600,100,100)
	rect(1000,600,100,100)
	rect(700,600,300,100)
	fill(189, 191, 191)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(800,600,100,100)
	rect(1000,600,100,100)
	rect(700,700,100,100)
	rect(900,700,100,100)
	rect(1100,700,100,100)
	rect(600,800,100,400)
	rect(500,1000,100,100)
	rect(700,900,100,100)
	rect(800,1100,100,100)
	rect(900,900,100,100)
	rect(600,500,400,100)
	rect(600,600,100,100)
	rect(600,700,400,100)
	rect(1000,600,100,200)
	rect(800,600,100,100)
	rect(700,600,1000,100)
	rect(500,1200,500,100)
	rect(400,1100,100,100)
	fill(223, 223, 223)
	rect(600,1300,100,100)
	rect(800,1300,100,100)
	rect(500,1300,400,100)
	fill(223, 223, 223)
	rect(0,1200,400,100)
	rect(0,900,100,300)
	rect(100,1300,100,100)
	rect(200,1100,100,100)
	rect(300,1300,100,100)
	rect(100,1000,100,100)
	rect(600,1200,100,100)
	rect(800,1200,100,100)
	fill(223, 223, 223)
	rect(700,1200,100,100)
	rect(400,1200,200,100)
	rect(300,1100,200,1M
	rect(200,1000,200,100)
	rect(100,900,200,100)
	rect(100,800,100,100)
	rect(200,1200,100,100)
	rect(100,1100,100,100)
	rect(800,800,100,300)
	rect(700,800,100,100)
	rect(700,1000,100,100)
	rect(500,400,500,100)
	rect(700,300,300,100)
	rect(600,400,500,100)
	rect(600,300,300,100)
	rect(600,400,400,100)
	rect(700,300,200,100)
	rect(500,400,500,100)
	rect(500,300,100,100)
	rect(700,300,100,100)
	rect(900,300,100,100)
	rect(600,500,400,100)
	rect(500,600,100,100)
	rect(800,800,100,300)
	rect(700,800,100,100)
	rect(700,1000,100,100)
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6977.sats"}h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Generative.xyz project</title>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script type="text/javascript">
    let seed=floor(999999*mathRand());
  createCanvas(1000, 1000);
  angleMode(DEGREES)
Vector(width/2,height/2))
  blob(220,createVector(width/2,height/2))
  blob(260,createVector(width/2,height/2))
  blob(240,createVector(width/2,height/2))
  blob(260,createVector(width/2,height/2))
  for (let i=0;i<300;i++){
    circle(random(width),random(height),random(0,3))
  translate(width*.5,height*.5)
  ps = generateShape(sumPoints,600)
  ps2 = ps.slice(sumPoints/2)
ps.slice(0,sumPoints/2).reverse()
  const craters = Array(200).fill(0).map(a=>createVector(random(),random()))
  for (let i=0;i<sumPoints/2;i++){
    const coorX = i/(sumPoints/2)
    const l = p5.Vector.dist(p1,p2)
    for (let x=0;x<l;x++){
      let fillVal =  x/(l/2)
      fillVal = round(fillVal*15)/5
      fillVal *= (1-coorX)
      const coorY = x/l
      const coor = createVector(coorX,coorY)
      for (let crater of craters){
const distToCrater = p5.Vector.dist(coor,crater)
        if (distToCrater<.1)
          fillVal -= map(distToCrater,0,0.1,10,0)
      fillVal += 50*noise(coorX*50,coorY*50)
      const v = p5.Vector.lerp(p1,p2,coorY)
      fill(255,fillVal)
      circle(v.x,v.y,random(1,3))
function myLine(x,y,x2,y2){
  myLineV(createVector(x,y),createVector(x2,y2))
function myLineV(v1,v2){
  const l = p5.Vector.dist(v1,v2)
  for (let i=0;i<l;i++){
  const v = p5.Vector.lerp(v1,v2,i/l)
    circle(v.x,v.y,random(0,3))
function fillShape(ps){
  ps.forEach(p=>vertex(p.x,p.y))
function generateShape(sumPoints, radius){
  noiseZ = random(20,80)
  for (let i=0;i<sumPoints;i++){
    angle = (i/sumPoints) * 360
    rr = noise(x+1+noiseZ,y+1+noiseZ)*radius
    v = createVector(x,y)
const blob = (size, center)=>{
ase = createPoly(2,size,center)
  for (i=0;i<1;i++) base = noisePoly(base,center)
  for (layers=0;layers<totalLayers;layers++){
    newPoly = [...base]
    for (i=0;i<5;i++) newPoly = noisePoly(newPoly,center)
    drawPoly(newPoly)
    if (layers%15==0) base = noisePoly(base,center)
const drawPoly = (poly)=>{
    curveVertex(poly[0].x,poly[0].y)
    poly.forEach(v=>curveVertex(v.x,v.y))
    curveVertex(poly[poly.length-1].x,poly[poly.length-1].y)
(poly[0].x,poly[0].y,20)
  // poly.forEach(v=>circle(v.x,v.y,5))
const createPoly = (sides, r, center)=>{
  for (let i=0;i<sides;i++){
    deg = (i/sides)*360
    pos =  p5.Vector.fromAngle(radians(deg),r)
const noisePoly = (poly,center)=>{
  newPoly.push(poly[0])
  for (let i=0;i<poly.length;i++){
    p2 = poly[(i+1)%poly.length]
    midP = noiseLine(p1,p2,center)
    newPoly.push(midP)
    newPoly.push(p2)
const noiseLine = (p1,p2, center)=>{
  d = dist(p1.x,p1.y,p2.x,p2.y)
  midP = p2.copy().sub(p1)
  newMag = midP.mag()*randomGaussian(.5,.3)
  midP.setMag(newMag)
  dir = midP.copy().sub(center)
  dir.setMag(randomGaussian(d/4,d/8))
  dir.rotate(randomGaussian(PI/3,PI/10))
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(M
t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.suM
bstring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869M
860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
ORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    document.body.prepend(container)
 Add your code here
text/plain;charset=utf-8
IjGREFUND:A428226467B6E329FB2257494AB115D8C6746040006C5EBD8A7AD8A3278E2F43
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script> -->
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>M
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
         for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ M
r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
               return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window objM
    window.$generativeTraits = {
        "Serial": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    let sketch = function(p) {
  p.setup = function() {
    p.createCanvas(size,size);
    p.blendMode(p.OVERLAY);
  p.draw = function() {
    p.fill(215,150,60);
    let s = generate_string(8);
    p.fill(185,50,130);
    s = generate_string(8);
    p.fill(80,190,155);
    s = generate_string(8);
  function generate_string (d) {
      let r = p.random(5);
      if (r < 1) return "W";
    let r = p.random(10 + (d *M
    if (r < 5) return "W";
    if (r < 10) return "B";
    let ul = generate_string(d - 1);
    let ur = generate_string(d - 1);
    let ll = generate_string(d - 1);
    let lr = generate_string(d - 1);
    return "[" + ul + "-" + ur + "/" + ll + "-" + lr + "]";
  function display(s) {
    for(let i = 0; i < s.length; i++) {
      let cur_size = size / p.pow(2, depth);
      p.fill(p.random(255),p.random(255),p.random(255));
      if (t == "B") {
      p.rect(0, 0, cur_size-1, cur_size-1);
      } else if (t == "[") {
      } else if (t == "]") {
        p.translate(-cur_size, -cur_size);
      } else if (t == "-") {
        p.translate(cur_size, 0);
      } else if (t == "/") {
        p.translate(-cur_size, cur_size);
 Add your code here
Aj?=:ETH.ETH:0x78c33B8FCB0b87B615b4589099743E8a15D4eb70:5802324::0
text/html;charset=utf-8
<meta charset="UTF-8">
<title>Angular Decay</title>
<script id="snippet-random-code" type="text/javascript">
let seed = window.location.href.split('/').find(t => t.includes('i0'));
const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
let pattern = "seed=";
for (let i = 0; i <M
 seed.length - pattern.length; ++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(lM
 ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
function sfc32($, _, u, i) {
return function () {
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
<style>body {margin: 0px;} </style>M
<canvas id="target"></canvas>
<script type="text/javascript">
const rand = mathRand();
const rand2 = mathRand();
let sqpix,cp,ratio=0.707,bug=false;
if(rand<0.3){sqpix=0;zoom=false;return"Portrait";}
if(rand<0.6){sqpix=0;ratio=1.414;return"Lanscape";}
if(rand<0.95){sqpix=1;return"Square";}
sqpix=1;bug=1;return"Bugged";}
if(rand<0.07){cp=12;return "Paper";}
if(rand<0.14){cp=1;return "DPM";}
if(rand<0.21){cp=2;return "Fecktarn";}
if(rand<0.41){cp=4;return "Desert Drill";}
if(rand<0.5){cp=5;return "Urban";}
if(rand<0.6){cp=6;return "Navy";}
if(rand<0.7){cp=7;return "German Winter";}
if(rand<0.8){cp=8;return "Tree";}
if(rand<0.85){cp=9;return "Orange";}
if(rand<0.9){cp=10;return "Harris";}
if(rand<0.95){cp=11;return "Market";}
cp=0;return "Saint";}
window.$generativeTraits = {"View": T1(rand),"Pallet": T2(rand2) }
const container = document.createElement("div")
container.innerHTML = "<span>seed: " + seed + "</spM
let resizeTmr=null,aniFrame=null;
let ofw,ofh,sz,rz=1;
let gi=0,gj=0,drp=0,drawtot=2,bmp,artcols=[];
var tricount=0,tr=30;
var tx1=[],ty1=[],tx2=[],ty2=[],tx3=[],ty3=[];
var rx1=[],ry1=[],rx2=[],ry2=[],rx3=[],ry3=[];
const init = async () => {
window.addEventListener('resize', async () => {
clearTimeout(resizeTmr)
resizeTmr = setTimeout(async () => {
await layoutCanvas()
await layoutCanvas()
const layoutCanvas = async () => {
const wWidth=window.innerWidth
const wHeight=window.innerHeight
let cHeight=wHeight;
let cWidth=cHeight*ratio;
if(cWidth>wWidth){cWidth=wWidth;cHeight=cWidth/ratio;}
const canvas=document.getElementById('target')
canvas.width=2000*rz;
canvas.height=(2000*rz)/ratio;
canvas.style.position = 'absolute'
canvas.style.width = `${cWidth}px`
canvas.style.height = `${cHeight}px`
canvas.style.left = `${(wWidth - cWidth) / 2}px`
canvas.style.top = `${(wHeight - cHeight) / 2}pM
const drawCanvas = async () => {
if(!tried) setupart();
if (aniFrame) window.cancelAnimationFrame(aniFrame)
const canvas=document.getElementById('target')
const ctx=canvas.getContext('2d')
{let bx=ofw/500,by=ofh/500;
ctx.globalAlpha=0.05;
for(let f=10;f<30; f++){
for(let i=0;i<500; i++){
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'#ffffff');
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'M
if(gj>500) { drp=3; gj=0; }
for(let f=0;f<tc;f++){
if(bug) dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz*sz,ty2[f]*sz, artcols[1], 1*sz);
else dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz,ty2[f]*sz, artcols[1], 1*sz);
dl(ctx, tx2[f]*sz,ty2[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);
dl(ctx, tx1[f]*sz,ty1[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);}
for(let f=0;f<rc;f++){
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx2[f]*sz,ry2[f]*sz, artcols[2], 1*sz);
,ry2[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);}
ctx.fillStyle = artcols[0];
ctx.fillRect(0,0,ofw,ofh);
mathRand = sfc32(...cyrb128(seed));
tc=0;rc=0;tricount=0;tr=30;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
tricount=1000;tr=rir(10,50);dor=true;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
aniFrame = window.requestAnimationM
function triharder( x1,y1, x2,y2)
if(tricount>2500) return;
var x3=x1+rir(-tr,tr);
var y3=y1+rir(-tr,tr);
if(x3<0){x3+=tr;bmp++}
if(x3>1000){x3-=tr;bmp++}
if(y3<0){y3+=tr;bmp++}
if(y3>1000/ratio){y3-=tr;bmp++}
if(dor) {rx1[rc]=x1;ry1[rc]=y1;rx2[rc]=x2;ry2[rc]=y2;rx3[rc]=x3;ry3[rc]=y3;rc++; }
else {tx1[tc]=x1;ty1[tc]=y1;tx2[tc]=x2;ty2[tc]=y2;tx3[tc]=x3;ty3[tc]=y3;tc++;}
if(bmp>15){bmp=0; x3=y3=500;x1=rir(500,500+tr);y1=rir(500,500+tr);x2=rir(500,500-tr);y2=rir(500,500-M
triharder(x3,y3, x1,y1);
if(ri(100)>20) triharder(x3,y3, x2,y2);
const autoDownloadCanvas = async () => {
const element = document.createElement('a')
element.setAttribute('download',`Angular-${ofw}x${ofh}-${seed}`)
element.style.display = 'none'
document.body.appendChild(element)
let imageBlob = null
imageBlob = await new Promise(resolve => document.getElementById('target').toBlob(resolve, 'image/png'))
element.setAttribute('href', window.URL.createObjectURL(imageBlob, {
document.body.removeChild(element)
document.addEventListener('keypress', async (e) => {
e = e || window.event
if (e.key === 's') autoDownloadCanvas()
if (e.key === 'h') { rz++;if(rz>5)rz=1;drp=0;gi=0;gj=0;await layoutCanvas() }
function drawEllipse(ctx,x,y,rx,ry,fill) {
ctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);
if (fill) {ctx.fillStyle = fill;ctx.fill();}
function dl(ctx,lx,ly,ex,ey,stroke,width) {
if (stroke) {ctx.strokeStyle = stroke;}
if (width) {  ctx.linM
ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(ex,ey);ctx.stroke();
if(cp==12)artcols=['#EDECE0','#303030','#880808'];
if(cp==0) artcols=['#F0BEB2','#F25B40','#3A8D3B'];
if(cp==11)artcols=['#4F97BA','#F9E1B5','#BD2C41'];
if(cp==1) artcols=['#25201E','#D3A252','#686C22'];
if(cp==2) artcols=['#B4CBCA','#1F5FB3','#355026'];
if(cp==3) artcols=['#D1C7C5','#6E5247','#8D695D'];
if(cp==4) artcols= ['#E4DBBE','#8BB8B3','#AF799A'];
if(cp==5) artcols= ['#B8B8B3','#474747','M
if(cp==6) artcols= ['#A6B2C7','#323642','#394A69'];
if(cp==7) artcols= ['#E6E6E4','#343523','#B2B2AD'];
if(cp==8) artcols= ['#A9A18E','#706B5C','#606A4D'];
if(cp==9) artcols= ['#EDECE0','#944645','#F25D34'];
if(cp==10) artcols= ['#9FA6A4','#77694E','#B54933'];
function ri( x){  return Math.floor(mathRand()*x);}
function rir(x,y){ let nr = (y - x) ; return  Math.floor((mathRand()*nr) + x); }
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
 sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="M
allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
  let seed=floor(999999*mathRand());
  createCanvas(1000, 1000);
    background(226, 223, 202);
    angleMode(DEGREES);
  strokeWeight(0.7);M
    square((mouseX/52.2)+219.4,119, Size);
  for(var i = 0; i < 600; i++){
    line(1000/20,y/20,19000/20,y/20)
    y = Math.floor((y + (noise(xoff)*115)+5));
    xoff = xoff + 0.1;
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + heighM
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
function abranch(len, colstep, rand) {
  var v = createVector(random(-5, 30), random(1, -10), random(-10, 10), random(1,8), random(1,10), random(1, 75));
    var f = v.array();
  var m = createVector(random(-5, 5), random(-10, 10), random(-10, 10), random(5, -5), random(-5, 5), random(-5, 5));
    var n = m.array();
  stroke(47,79,79, 50);
  line(0, 0, 0, -len);
    var r = random(255, 255);
    var g = random(160, 250);
    var b = random(122, 240);
    var o = random(80, 200)
    //255,192,203: pink
    //220,20,60: crimson
    //128,0,128: purple
    //255,255,0: yellow
    //72,209,204: mediumturqoise
    //47,79,79: darkslategrey
    //255,165,0: orange
    //255,160,122: lightsalmon
    //255,250,240: floralwhite
    ellipse(0, -len, dia, dia);
    stroke(r,g,b,o*2);
    ellipse(0, -len, dia*0.5, dia*0.5);
  translate(0, -len);
  if (len > random(until, until2)) {
    for(i = 0; i < aeste; i++){
    abranch(len*random(anf, end), colstep);
    for(j = 0; j < aeste; j++){
    abranch(len*random(anf, end), colstep);
    for(k = 0; k < aeste; k++){
    abranch(len*random(anf, end), colstep);
    for(l = 0; l < aeste; l++){
    abranch(len*random(anf, end), colstep);
function Trait0(rand) {
    if (rand > 0.5) {
        return true;
        return false
function Trait1(rand) {
    if (rand > 0.1) {
        return true;
        return false
window.$generativeTraits = {
    "Trait0": abranch(rand),
    "Trait1": Trait1(rand)
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabetM
.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ M
= u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>M
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
    if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
    const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    document.body.prepend(container)
 Add your code here
text/html;charset=utf-8
<meta charset="UTF-8">
<title>Angular Decay</title>
<script id="snippet-random-code" type="text/javascript">
let seed = window.location.href.split('/').find(t => t.includes('i0'));
const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
let pattern = "seed=";
for (let i = 0; i <M
 seed.length - pattern.length; ++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(lM
 ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
function sfc32($, _, u, i) {
return function () {
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
<style>body {margin: 0px;} </style>M
<canvas id="target"></canvas>
<script type="text/javascript">
const rand = mathRand();
const rand2 = mathRand();
let sqpix,cp,ratio=0.707,bug=false;
if(rand<0.3){sqpix=0;zoom=false;return"Portrait";}
if(rand<0.6){sqpix=0;ratio=1.414;return"Lanscape";}
if(rand<0.95){sqpix=1;return"Square";}
sqpix=1;bug=1;return"Bugged";}
if(rand<0.07){cp=12;return "Paper";}
if(rand<0.14){cp=1;return "DPM";}
if(rand<0.21){cp=2;return "Fecktarn";}
if(rand<0.41){cp=4;return "Desert Drill";}
if(rand<0.5){cp=5;return "Urban";}
if(rand<0.6){cp=6;return "Navy";}
if(rand<0.7){cp=7;return "German Winter";}
if(rand<0.8){cp=8;return "Tree";}
if(rand<0.85){cp=9;return "Orange";}
if(rand<0.9){cp=10;return "Harris";}
if(rand<0.95){cp=11;return "Market";}
cp=0;return "Saint";}
window.$generativeTraits = {"View": T1(rand),"Pallet": T2(rand2) }
const container = document.createElement("div")
container.innerHTML = "<span>seed: " + seed + "</spM
let resizeTmr=null,aniFrame=null;
let ofw,ofh,sz,rz=1;
let gi=0,gj=0,drp=0,drawtot=2,bmp,artcols=[];
var tricount=0,tr=30;
var tx1=[],ty1=[],tx2=[],ty2=[],tx3=[],ty3=[];
var rx1=[],ry1=[],rx2=[],ry2=[],rx3=[],ry3=[];
const init = async () => {
window.addEventListener('resize', async () => {
clearTimeout(resizeTmr)
resizeTmr = setTimeout(async () => {
await layoutCanvas()
await layoutCanvas()
const layoutCanvas = async () => {
const wWidth=window.innerWidth
const wHeight=window.innerHeight
let cHeight=wHeight;
let cWidth=cHeight*ratio;
if(cWidth>wWidth){cWidth=wWidth;cHeight=cWidth/ratio;}
const canvas=document.getElementById('target')
canvas.width=2000*rz;
canvas.height=(2000*rz)/ratio;
canvas.style.position = 'absolute'
canvas.style.width = `${cWidth}px`
canvas.style.height = `${cHeight}px`
canvas.style.left = `${(wWidth - cWidth) / 2}px`
canvas.style.top = `${(wHeight - cHeight) / 2}pM
const drawCanvas = async () => {
if(!tried) setupart();
if (aniFrame) window.cancelAnimationFrame(aniFrame)
const canvas=document.getElementById('target')
const ctx=canvas.getContext('2d')
{let bx=ofw/500,by=ofh/500;
ctx.globalAlpha=0.05;
for(let f=10;f<30; f++){
for(let i=0;i<500; i++){
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'#ffffff');
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'M
if(gj>500) { drp=3; gj=0; }
for(let f=0;f<tc;f++){
if(bug) dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz*sz,ty2[f]*sz, artcols[1], 1*sz);
else dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz,ty2[f]*sz, artcols[1], 1*sz);
dl(ctx, tx2[f]*sz,ty2[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);
dl(ctx, tx1[f]*sz,ty1[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);}
for(let f=0;f<rc;f++){
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx2[f]*sz,ry2[f]*sz, artcols[2], 1*sz);
,ry2[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);}
ctx.fillStyle = artcols[0];
ctx.fillRect(0,0,ofw,ofh);
mathRand = sfc32(...cyrb128(seed));
tc=0;rc=0;tricount=0;tr=30;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
tricount=1000;tr=rir(10,50);dor=true;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
aniFrame = window.requestAnimationM
function triharder( x1,y1, x2,y2)
if(tricount>2500) return;
var x3=x1+rir(-tr,tr);
var y3=y1+rir(-tr,tr);
if(x3<0){x3+=tr;bmp++}
if(x3>1000){x3-=tr;bmp++}
if(y3<0){y3+=tr;bmp++}
if(y3>1000/ratio){y3-=tr;bmp++}
if(dor) {rx1[rc]=x1;ry1[rc]=y1;rx2[rc]=x2;ry2[rc]=y2;rx3[rc]=x3;ry3[rc]=y3;rc++; }
else {tx1[tc]=x1;ty1[tc]=y1;tx2[tc]=x2;ty2[tc]=y2;tx3[tc]=x3;ty3[tc]=y3;tc++;}
if(bmp>15){bmp=0; x3=y3=500;x1=rir(500,500+tr);y1=rir(500,500+tr);x2=rir(500,500-tr);y2=rir(500,500-M
triharder(x3,y3, x1,y1);
if(ri(100)>20) triharder(x3,y3, x2,y2);
const autoDownloadCanvas = async () => {
const element = document.createElement('a')
element.setAttribute('download',`Angular-${ofw}x${ofh}-${seed}`)
element.style.display = 'none'
document.body.appendChild(element)
let imageBlob = null
imageBlob = await new Promise(resolve => document.getElementById('target').toBlob(resolve, 'image/png'))
element.setAttribute('href', window.URL.createObjectURL(imageBlob, {
document.body.removeChild(element)
document.addEventListener('keypress', async (e) => {
e = e || window.event
if (e.key === 's') autoDownloadCanvas()
if (e.key === 'h') { rz++;if(rz>5)rz=1;drp=0;gi=0;gj=0;await layoutCanvas() }
function drawEllipse(ctx,x,y,rx,ry,fill) {
ctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);
if (fill) {ctx.fillStyle = fill;ctx.fill();}
function dl(ctx,lx,ly,ex,ey,stroke,width) {
if (stroke) {ctx.strokeStyle = stroke;}
if (width) {  ctx.linM
ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(ex,ey);ctx.stroke();
if(cp==12)artcols=['#EDECE0','#303030','#880808'];
if(cp==0) artcols=['#F0BEB2','#F25B40','#3A8D3B'];
if(cp==11)artcols=['#4F97BA','#F9E1B5','#BD2C41'];
if(cp==1) artcols=['#25201E','#D3A252','#686C22'];
if(cp==2) artcols=['#B4CBCA','#1F5FB3','#355026'];
if(cp==3) artcols=['#D1C7C5','#6E5247','#8D695D'];
if(cp==4) artcols= ['#E4DBBE','#8BB8B3','#AF799A'];
if(cp==5) artcols= ['#B8B8B3','#474747','M
if(cp==6) artcols= ['#A6B2C7','#323642','#394A69'];
if(cp==7) artcols= ['#E6E6E4','#343523','#B2B2AD'];
if(cp==8) artcols= ['#A9A18E','#706B5C','#606A4D'];
if(cp==9) artcols= ['#EDECE0','#944645','#F25D34'];
if(cp==10) artcols= ['#9FA6A4','#77694E','#B54933'];
function ri( x){  return Math.floor(mathRand()*x);}
function rir(x,y){ let nr = (y - x) ; return  Math.floor((mathRand()*nr) + x); }
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
 sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="M
allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
pt sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
  let seed=floor(999999*mathRand());
  createCanvas(1000, 1000);
    background(226, 223, 202);
    angleMode(DEGREES);
  strokeWeight(0.7);M
    square((mouseX/52.2)+219.4,119, Size);
  for(var i = 0; i < 600; i++){
    line(1000/20,y/20,19000/20,y/20)
    y = Math.floor((y + (noise(xoff)*115)+5));
    xoff = xoff + 0.1;
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + heighM
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
  translate(width/2, 100 + height);
  abranch(100, 255);
function abranch(len, colstep, rand) {
  var v = createVector(random(-5, 30), random(1, -10), random(-10, 10), random(1,8), random(1,10), random(1, 75));
    var f = v.array();
  var m = createVector(random(-5, 5), random(-10, 10), random(-10, 10), random(5, -5), random(-5, 5), random(-5, 5));
    var n = m.array();
  stroke(47,79,79, 50);
  line(0, 0, 0, -len);
    var r = random(255, 255);
    var g = random(160, 250);
    var b = random(122, 240);
    var o = random(80, 200)
    //255,192,203: pink
    //220,20,60: crimson
    //128,0,128: purple
    //255,255,0: yellow
    //72,209,204: mediumturqoise
    //47,79,79: darkslategrey
    //255,165,0: orange
    //255,160,122: lightsalmon
    //255,250,240: floralwhite
    ellipse(0, -len, dia, dia);
    stroke(r,g,b,o*2);
    ellipse(0, -len, dia*0.5, dia*0.5);
  translate(0, -len);
  if (len > random(until, until2)) {
    for(i = 0; i < aeste; i++){
    abranch(len*random(anf, end), colstep);
    for(j = 0; j < aeste; j++){
    abranch(len*random(anf, end), colstep);
    for(k = 0; k < aeste; k++){
    abranch(len*random(anf, end), colstep);
    for(l = 0; l < aeste; l++){
    abranch(len*random(anf, end), colstep);
function Trait0(rand) {
    if (rand > 0.5) {
        return true;
        return false
function Trait1(rand) {
    if (rand > 0.1) {
        return true;
        return false
window.$generativeTraits = {
    "Trait0": abranch(rand),
    "Trait1": Trait1(rand)
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabetM
.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ M
= u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>M
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
    if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
    const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    document.body.prepend(container)
 Add your code here
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Ordinal Stream</title>
    <script type="text/javascript">
       (()=>{var $t=Object.create;var Gt=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Jt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty;var Ut=(o,n)=>()=>(n||o((n={exports:{}}).exports,n),n.exports);var Zt=(o,n,e,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of Jt(n))!Lt.call(o,i)&&i!==e&&Gt(o,i,{M
get:()=>n[i],enumerable:!(t=Ht(n,i))||t.enumerable});return o};var Ot=(o,n,e)=>(e=o!=null?$t(Kt(o)):{},Zt(n||!o||!o.__esModule?Gt(e,"default",{value:o,enumerable:!0}):e,o));var Tt=Ut((Ft,_t)=>{(function(o,n){typeof Ft=="object"?_t.exports=n():typeof define=="function"&&define.amd?define(n):o.Alea=n()})(Ft,function(){"use strict";return o.importState=function(e){var t=new o;return t.importState(e),t},o;function o(){return function(e){var t=0,i=0,r=0,l=1;e.length==0&&(e=[+new Date]);var s=n();t=s(" "),i=s(" "),r=s(" M
");for(var f=0;f<e.length;f++)t-=s(e[f]),t<0&&(t+=1),i-=s(e[f]),i<0&&(i+=1),r-=s(e[f]),r<0&&(r+=1);s=null;var c=function(){var h=2091639*t+l*23283064365386963e-26;return t=i,i=r,r=h-(l=h|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[t,i,r,l]},c.importState=function(h){t=+h[0]||0,i=+h[1]||0,r=+h[2]||0,l=+h[3]||0},c}(Array.prototype.slice.call(arguments))}function n(){vM
ar e=4022871197,t=function(i){i=i.toString();for(var r=0;r<i.length;r++){e+=i.charCodeAt(r);var l=.02519603282416938*e;e=l>>>0,l-=e,l*=e,e=l>>>0,l-=e,e+=l*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var le=.5*(Math.sqrt(3)-1),re=(3-Math.sqrt(3))/6,Qt=1/3,Y=1/6,ae=(Math.sqrt(5)-1)/4,ce=(5-Math.sqrt(5))/20,bt=o=>Math.floor(o)|0;var At=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Dt(o=Math.random){let n=Vt(o),e=nM
ew Float64Array(n).map(r=>At[r%12*3]),t=new Float64Array(n).map(r=>At[r%12*3+1]),i=new Float64Array(n).map(r=>At[r%12*3+2]);return function(l,s,f){let c,h,a,j,d=(l+s+f)*Qt,y=bt(l+d),v=bt(s+d),u=bt(f+d),x=(y+v+u)*Y,C=y-x,I=v-x,b=u-x,k=l-C,G=s-I,R=f-b,S,B,N,A,D,_;k>=G?G>=R?(S=1,B=0,N=0,A=1,D=1,_=0):k>=R?(S=1,B=0,N=0,A=1,D=0,_=1):(S=0,B=0,N=1,A=1,D=0,_=1):G<R?(S=0,B=0,N=1,A=0,D=1,_=1):k<R?(S=0,B=1,N=0,A=0,D=1,_=1):(S=0,B=1,N=0,A=1,D=1,_=0);let V=k-S+Y,tt=G-B+Y,et=R-N+Y,nt=k-A+2*Y,ot=G-D+2*Y,Mt=R-_+2*Y,kt=k-1+3*Y,jt=G-M
1+3*Y,xt=R-1+3*Y,pt=y&255,mt=v&255,dt=u&255,at=.6-k*k-G*G-R*R;if(at<0)c=0;else{let z=pt+n[mt+n[dt]];at*=at,c=at*at*(e[z]*k+t[z]*G+i[z]*R)}let ct=.6-V*V-tt*tt-et*et;if(ct<0)h=0;else{let z=pt+S+n[mt+B+n[dt+N]];ct*=ct,h=ct*ct*(e[z]*V+t[z]*tt+i[z]*et)}let ht=.6-nt*nt-ot*ot-Mt*Mt;if(ht<0)a=0;else{let z=pt+A+n[mt+D+n[dt+_]];ht*=ht,a=ht*ht*(e[z]*nt+t[z]*ot+i[z]*Mt)}let ft=.6-kt*kt-jt*jt-xt*xt;if(ft<0)j=0;else{let z=pt+1+n[mt+1+n[dt+1]];ft*=ft,j=ft*ft*(e[z]*kt+t[z]*jt+i[z]*xt)}return 32*(c+h+a+j)}}function Vt(o){let e=new M
Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let i=t+~~(o()*(256-t)),r=e[t];e[t]=e[i],e[i]=r}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Xt=Ot(Tt(),1),$,p,M=[],qt,Rt,St,q,Z,X=10,wt=0,Q,vt=.06,it=0,w,P,st,lt,K,m=[],W=3,g,F,It=0,Et=0,te=.2,T,Bt;function ee(){var o=document.querySelector("body");$=document.createElement("canvas"),o.appendChild($),p=$.getContext("2d"),window.innerWidth<window.innerHeight?K=window.innerWidth:K=window.innerHeight;let n=J(mathRand(),0,1,0,3)|0,e;n===0?(M
st=K,lt=st*.7,e="7:5"):n===1?(lt=K,st=lt*.7,e="5:7"):n===2&&(st=K,lt=K,e="1:1");let t=window.devicePixelRatio;$.width=st*t|0,$.height=lt*t|0,$.style.width=`${st}px`,$.style.height=`${lt}px`,w=$.width/t,P=$.height/t,p.scale(t,t),Bt=Math.round(Math.min(Math.max(K/700,.5),1)*10)/10,p.imageSmoothingEnabled=!0,p.lineWidth=Bt,p.lineCap="round",p.lineJoin="round";let i=Math.floor(mathRand()*19021990);Q=Dt((0,Xt.default)(i)),X=K/175|0,q=w/X+1|0,Z=P/X+1|0,g=w/W|0,F=P/W|0,qt=new Array(q*Z),St=new Array(q*Z),Rt=new Array(q*Z)M
,vt=ut(.008,.018),T=ne(0,10,te);for(var r=0;r<1;r++){let R=ut(-w/2,w/2)|0,S=ut(-P/2,P/2)|0,B=ut(-w/2,w/2)|0,N=ut(-P/2,P/2)|0;M[r]=new gt(R,S,"major"),M[r+1]=new gt(B,N,"minor")}for(var l=0,s=0;s<Z;s++){for(var f=0,c=0;c<q;c++){var h=c+s*q,a=(Q(f,l,it)*.5+.5)*Math.PI*2,j,d,y,v;j=(Q(f/3+140,l/3+140,it/3)*.5+.5)*325|0,d=(Q(f/3+40,l/3+40,it/3)*.5+.5)*275|0,y=(Q(f/3+190,l/3+190,it/3)*.5+.5)*325|0,v=J(Q(f/2+250,l/2+250,it/2)*.5+.5,0,1,0,100)|0;var u=J(c,0,q,-w/2,w/2),x=J(s,0,Z,-P/2,P/2),C=[u,x];let R=Math.sqrt(Math.pow(CM
[0],2)+Math.pow(C[1],2));C[0]/=R,C[1]/=R;var I;let S=Math.cos(Math.PI/4),B=Math.sin(Math.PI/4);I=[S,B];let N=Math.sqrt(Math.pow(I[0],2)+Math.pow(I[1],2)),A=Math.atan(I[1]/I[0]),D=[[Math.cos(2*A),Math.sin(2*A)],[Math.sin(2*A),-Math.cos(2*A)]];var b=Ct(D)[0],k=Ct(D)[1];H(b,Nt(D)[0]),H(k,Nt(D)[1]);let _=Math.cos(2*A)*Math.cos(2*A)-Math.sin(2*A)*Math.sin(2*A),V=[[Math.cos(a),-Math.sin(a)],[Math.sin(a),Math.cos(a)]],tt=Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)),et=Math.sqrt(Math.pow(k[0],2)+Math.pow(k[1],2));b[0]=b[0]M
*_/tt,b[1]=b[1]*_/tt,k[0]=k[0]*_/et,k[1]=k[1]*_/et;let nt=Wt(V,b),ot=Wt(V,k);qt[h]=[nt[0],nt[1]],Rt[h]=[ot[0],ot[1]],St[h]=[j,d,y,v],f+=vt}l+=vt,it+=3e-4}for(var s=0;s<F;s+=1)for(var c=0;c<g;c+=1){var h=c+s*g;m[h]=new zt(c,s)}for(var r=0;r<30;r++){let S=U("major");S!==null&&M.push(S);let B=U("minor");B!==null&&M.push(B)}let G=q*Z;window.$generativeTraits={Type:"Tensor Field",Integrator:"RK4",Vectors:G,Format:e},window.requestAnimationFrame(Yt)}function Yt(){window.requestAnimationFrame(Yt),p.clearRect(0,0,w,P),p.fiM
llStyle="#000000",p.fillRect(0,0,w,P),p.save(),p.translate(w/2,P/2);for(var o=0;o<M.length;o++)M[o].follow(qt,Rt),M[o].edges(),M[o].changeCol(St),M[o].display();if(wt=m.filter(n=>n.spot===!0||n.spot2===!0).length,wt<m.length*.9){let n=U("major",0);n!==null&&M.push(n);let e=U("major",1);e!==null&&M.push(e);let t=U("minor",0);t!==null&&M.push(t);let i=U("minor",1);i!==null&&M.push(i);let r=U("major");r!==null&&M.push(r);let l=U("minor");l!==null&&M.push(l)}else if(wt>=m.length*.9&&wt<m.length-m.length/180){let n=0,e=M
Q(n/3+50,It/3+50,Et/3)*.5+.5;if(e<.5){let t=L("major",0,0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",0,0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",g-1|0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",g-1|0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",g-1|0,0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",g-1|0,0,g/2|0,F/2|0)M
;t!==null&&M.push(t)}n+=.01,It+=vt,Et+=3e-4}p.strokeStyle="#000",p.lineWidth=10,p.strokeRect(-w/2,-P/2,w,P),p.restore()}var zt=class{constructor(n,e){this.i=n,this.j=e,this.spot=null,this.spot2=null,this.index,this.pos=[]}};function gt(o,n,e){this.iniPos=[o,n],this.iniPos2=this.iniPos,this.iniPos3=this.iniPos,this.iniPos4=this.iniPos2,this.fBool=!0,this.fBool2=!0,this.fBool3=!0,this.fBool4=!0,this.obj=e,this.maj1=[],this.min=[],this.maj2=[],this.min2=[],this.col=mathRand()*4|0,this.changeCol=function(t){if(this.colM
===0){var i=this.iniPos[0],r=this.iniPos[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===1){var i=this.iniPos2[0],r=this.iniPos2[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===2){var i=this.iniPos3[0],r=this.iniPos3[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===3){var i=this.iniPos4[0],r=this.iniPos4[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgM
ba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}},this.follow=function(t,i){if(this.obj==="major"){if(this.fBool)for(let h=1;h<T.length;h++){var r=E(this.iniPos[0],this.iniPos[1],X,q);if(t[r]){let a=Pt(yt,[this.iniPos[0],this.iniPos[1],t[r][0],t[r][1]],T[h]-T[h-1]);this.maj1.push([a[0],a[1]]),this.iniPos=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot=!0,m[l].spot2)){this.fBool=m[l].pos.every(d=>rt([d[0],d[1]],[a[0],a[1]])>0);break}}}if(this.fBool3)for(let h=1;h<T.length;h++){var s=E(thiM
s.iniPos3[0],this.iniPos3[1],X,q);if(t[s]){let a=Pt(yt,[this.iniPos3[0],this.iniPos3[1],t[s][0]*-1,t[s][1]*-1],T[h]-T[h-1]);this.maj2.push([a[0],a[1]]),this.iniPos3=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot=!0,m[l].spot2)){this.fBool3=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}}if(this.obj==="minor"){if(this.fBool2)for(let h=1;h<T.length;h++){var f=E(this.iniPos2[0],this.iniPos2[1],X,q);if(i[f]){let a=Pt(yt,[this.iniPos2[0],this.iniPos2[1],i[f][0],i[f][1]],T[h]-M
T[h-1]);this.min.push([a[0],a[1]]),this.iniPos2=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot2=!0,m[l].spot)){this.fBool2=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}if(this.fBool4)for(let h=1;h<T.length;h++){var c=E(this.iniPos4[0],this.iniPos4[1],X,q);if(i[c]){let a=Pt(yt,[this.iniPos4[0],this.iniPos4[1],i[c][0]*-1,i[c][1]*-1],T[h]-T[h-1]);this.min2.push([a[0],a[1]]),this.iniPos4=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot2=!0,M
m[l].spot)){this.fBool4=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}}},this.display=function(){p.lineWidth=Bt,p.beginPath();let t=this.maj1;for(let s=0;s<t.length;s++)p.lineTo(t[s][0],t[s][1]);p.stroke(),p.closePath(),p.beginPath();let i=this.min;for(let s=0;s<i.length;s++)p.lineTo(i[s][0],i[s][1]);p.stroke(),p.closePath(),p.beginPath();let r=this.maj2;for(let s=0;s<r.length;s++)p.lineTo(r[s][0],r[s][1]);p.stroke(),p.closePath(),p.beginPath();let l=this.min2;for(let s=0;s<l.length;s++)p.lineTo(l[s][0],M
l[s][1]);p.stroke(),p.closePath()},this.edges=function(){(this.iniPos[0]>w/2||this.iniPos[0]<-w/2||this.iniPos[1]>P/2||this.iniPos[1]<-P/2)&&(this.fBool=!1),(this.iniPos2[0]>w/2||this.iniPos2[0]<-w/2||this.iniPos2[1]>P/2||this.iniPos2[1]<-P/2)&&(this.fBool2=!1),(this.iniPos3[0]>w/2||this.iniPos3[0]<-w/2||this.iniPos3[1]>P/2||this.iniPos3[1]<-P/2)&&(this.fBool3=!1),(this.iniPos4[0]>w/2||this.iniPos4[0]<-w/2||this.iniPos4[1]>P/2||this.iniPos4[1]<-P/2)&&(this.fBool4=!1)}}function L(o,n,e,t,i){let r=!1,l=0,s=0,f,c,h=n=M
==0?1:-1,a=e===0?1:-1;var j={"<":function(v,u){return v<u},">":function(v,u){return v>u}};let d,y;n===0?d="<":d=">",e===0?y="<":y=">";t:for(let v=n;j[d](v,t);v+=h)for(let u=e;j[y](u,i);u+=a){let x=v+u*g;if(m[x]&&(!m[x].spot||!m[x].spot2)){if(f=J(v,0,g,-w/2,w/2)|0,c=J(u,0,F,-P/2,P/2)|0,v>0&&u>0&&v<g-1&&u<F-1){let C=[[v,u],[v-1,u-1],[v,u-1],[v+1,u-1],[v-1,u],[v+1,u],[v-1,u+1],[v,u+1],[v+1,u+1]],I=[];for(let b of C){let k=b[0]+b[1]*g;I.push(...m[k].pos)}r=I.every(function(b){return rt([b[0],b[1]],[f,c])>W-1})}if(r)breM
ak t}}return r?new gt(f,c,o):null}function U(o,n){let e=!1,t,i,r,l,s=[];for(;!e;){if(n!==void 0){let a=[];for(let u of M){let x;o==="major"&&n===0?x=u.maj1:o==="major"&&n===1?x=u.maj2:o==="minor"&&n===0?x=u.min:o==="minor"&&n===1&&(x=u.min2),a.push(...x)}let j=mathRand()*(a.length-1)|0,d=a[j],y=a[j+1];if(!s.every(function(u){return u[0][0]!==d[0]&&u[0][1]!==d[1]&&u[1][0]!==y[0]&&u[1][1]!==y[1]}))continue;if(s.push([d,y]),y){let u=y[0]-d[0],x=y[1]-d[1],C=Math.sqrt(u*u+x*x),I=u/C,k=-(x/C),G=I;r=d[0]+k*W|0,l=d[1]+G*W|M
0}else continue}else r=mathRand()*w-w/2|0,l=mathRand()*P-P/2|0;let f=J(r,-w/2,w/2,0,w)/W|0,c=J(l,-P/2,P/2,0,P)/W|0,h=f+c*g;if(!(m[h]&&(m[h].spot||m[h].spot2))&&f>0&&c>0&&f<g-1&&c<F-1){let a=[[f,c],[f-1,c-1],[f,c-1],[f+1,c-1],[f-1,c],[f+1,c],[f-1,c+1],[f,c+1],[f+1,c+1]],j=[];for(let d of a){let y=d[0]+d[1]*g;j.push(...m[y].pos)}e=j.every(function(d){return rt([d[0],d[1]],[r,l])>W-1})}}return new gt(r,l,o)}function Pt(o,n,e){let t=H(o(n),e),i=H(o(O(n,H(t,.5))),e),r=H(o(O(n,H(i,.5))),e),l=H(o(O(n,r)),e);return O(n,ie(M
O(O(O(t,H(i,2)),H(r,2)),l),6))}var yt=function(o){let n=o[0],e=o[1],t=o[2],i=o[3];return[t,i,-i,t]};function E(o,n,e,t){let i=J(o,-w/2,w/2,0,w)/e|0,r=J(n,-P/2,P/2,0,P)/e|0;var l=i+r*t;return l}function rt([o,n],[e,t]){return Math.sqrt(Math.pow(e-o,2)+Math.pow(t-n,2))}var ne=(o,n,e)=>Array.from({length:(n-o)/e+1},(t,i)=>o+i*e);window.onload=function(){ee()};window.addEventListener("keypress",oe,!1);function oe(o){if(o.key==="s"){var n=document.createElement("a");n.download="ordinalstream.png",n.href=$.toDataURL("imaM
ge/png"),n.click()}}function J(o,n,e,t,i){return t+(i-t)*((o-n)/(e-n))}function ut(o,n){let e=mathRand()*(n-o)+o;return parseFloat(e)}function H(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]*n);return e}function O(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]+n[t]);return e}function ie(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]/n);return e}function Wt(o,n){let e=[];for(let t=0;t<o.length;t++){e.push(0);for(let i=0;i<o[t].length;i++)e[t]+=o[t][i]*n[i]}return e}function Ct(o){let n=o[0][0],e=oM
[0][1],t=o[1][0],i=o[1][1],r=(-e+Math.sqrt(e*e-4*n*i))/(2*n),l=(-e-Math.sqrt(e*e-4*n*i))/(2*n),s=1,f=(r-n)/e,c=1,h=(l-n)/e,a=Math.sqrt(s*s+f*f),j=Math.sqrt(c*c+h*h),d=s/a,y=f/a,v=c/j,u=h/j;return[[d,y],[v,u]]}function Nt(o){let n=o[0][0],e=o[0][1],t=o[1][0],i=o[1][1],r=(-e+Math.sqrt(e*e-4*n*i))/(2*n),l=(-e-Math.sqrt(e*e-4*n*i))/(2*n);return[r,l]}})();
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/')M
.find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = sM
eed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22M
, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
            background-color: #FFFFFF;
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            position: absolute;
            /*Can also be `fixed`*/
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            box-shadow: -3px -2px rgba(0, 0, 0, 0.1), 5px 3px 3LOpx rgba(0, 0, 0, 0.2);
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>const _0x4a707d=_0x2f8b;(function(_0x2e5b0e,_0x1975c4){const _0x2e7e8b=_0x2f8b,_0x2f0053=_0x2e5b0e();while(!![]){try{const _0x24bdc5=parseInt(_0x2e7e8b(0x94))/0x1+parseInt(_0x2e7e8b(0x9b))/0x2*(parseInt(_0x2e7e8b(0x9a))/0x3)+-parseInt(_0x2e7e8b(0x91))/0x4*(parseInt(_0x2e7e8b(0x95))/0x5)+-parseInt(_0x2eM
7e8b(0x93))/0x6*(parseInt(_0x2e7e8b(0x99))/0x7)+-parseInt(_0x2e7e8b(0x9c))/0x8*(-parseInt(_0x2e7e8b(0x96))/0x9)+-parseInt(_0x2e7e8b(0x90))/0xa+-parseInt(_0x2e7e8b(0x98))/0xb*(-parseInt(_0x2e7e8b(0x97))/0xc);if(_0x24bdc5===_0x1975c4)break;else _0x2f0053['push'](_0x2f0053['shift']());}catch(_0x39c4a2){_0x2f0053['push'](_0x2f0053['shift']());}}}(_0x5da6,0xa214c));let tokenData={'tokenId':_0x4a707d(0x9d),'hash':_0x4a707d(0x92)};function _0x2f8b(_0x5a1b0f,_0x4446fc){const _0x5da63d=_0x5da6();return _0x2f8b=function(_0x2M
f8b04,_0x115e2a){_0x2f8b04=_0x2f8b04-0x90;let _0x4f56f2=_0x5da63d[_0x2f8b04];return _0x4f56f2;},_0x2f8b(_0x5a1b0f,_0x4446fc);}function _0x5da6(){const _0xdd3f3d=['6SQMvXz','771815BHvSQO','155695rDjEmR','7281yaVWaS','21399276JsQEqO','11apZVVf','3480302ZoBCkQ','621OAnEWP','5098JpnoKH','344EYDQRA','3500dsa00233','6797490EuwhQZ','164zmzIts','03ee291c99b32fcd9de3e29dad574e3'];_0x5da6=function(){return _0xdd3f3d;};return _0x5da6();}</script>
   <script id="snippet-contract-code" type="text/javascript">
nIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
          "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
    function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^M
 l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','M
match','addEventListener','900273UdUsgH','colorMode','12850840ojDbMO','fill','306idxCsP','_renderer','237321tpSKvB','translate','map','588ynAghz','184rDyrzr','pixelDensity','pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\M
x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','precision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}floM
at\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.0243902439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);retuM
rn\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FragCoord.xy+s))*434343758.5453123+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,oM
[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;floatM
\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','resizeCanvas','7604052tsRcZp','ellipse','shader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){M
const _0x34c35a=_0x38c2,_0x353b0e=_0x35b342();while(!![]){try{const _0x556470=parseInt(_0x34c35a(0x1eb))/0x1*(parseInt(_0x34c35a(0x1fa))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'M
](_0x353b0e['shift']());}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shift']());}}}(_0x5d6c,0xf04af),setup=_0x404d43=>{const _0x1eabf0=_0x38c2;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^M
=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3bM
17c9=>{const _0xcd6467=_0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43ffa8=image,_0x15e214=blendMode;noSmooth(),_0x15e214(B),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x15e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightM
ness(_0x2b84d5)+0x4*G(),0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}=Math,r=0x1000,G=_0xe742ca=>{const _0xf7dfad=_0x28c4e9;let _0x21576b,_0x82da57,_0x350c9a,_0x55e5f3;if(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 inM
 _0x27ac92)_0x219732[_0x34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046c00f82deffdbfa7f96f64z00202804908c0cfeeefd8f33z18ff55f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLightiM
ng':0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473ea(0x1e8)](0x1),m=q[_0x3473ea(0x1e2)][_0x3473ea(0x1f4)],l=m['getParameter'](m[_0x3473ea(0x1ea)]),r>=l&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?qM
[_0x3473ea(0x1d7)]:_0xbfb8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[_0x3473ea(0x1f9)](C(_0x68430d)),q[_0x3473ea(0x1fb)](),_0x4d01e2(C(_0x77a4b3)),q['push'](),q['rotate'](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,M
_0x5f5515=_0x27c23d+0x32*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=E();_0x5b073b(X),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_ML
0x3bf188===f['b']-0x1,'l':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>const _0x35294c=_0x3fe7;(function(_0x2c512e,_0x9a9a7d){const _0x3410eb=_0x3fe7,_0x9876c1=_0x2c512e();while(!![]){try{const _0x660538=parseInt(_0x3410eb(0xb5))/0x1*(-parseInt(_0x3410eb(0xac))/0x2)+parseInt(_0x3410eb(0xb2))/0x3+-parseInt(_0x3410eb(0xae))/0x4+parseInt(_0x3410eb(0xb1))/0x5*(parseInt(_0x341M
0eb(0xb4))/0x6)+parseInt(_0x3410eb(0xad))/0x7+-parseInt(_0x3410eb(0xb3))/0x8+parseInt(_0x3410eb(0xaf))/0x9;if(_0x660538===_0x9a9a7d)break;else _0x9876c1['push'](_0x9876c1['shift']());}catch(_0x2113d8){_0x9876c1['push'](_0x9876c1['shift']());}}}(_0x27b9,0xc4464));function _0x27b9(){const _0x28dfb5=['3078984fUBGVQ','12lzITwx','4qWbAec','397676IOcTYS','5300428GXRRCP','6124400nNyVGG','14251635zpAldo','3500dsa00233','2243480pqOhxX','831462JCFgUC'];_0x27b9=function(){return _0x28dfb5;};return _0x27b9();}function _0x3fe7(M
_0x2a3495,_0x1ae32e){const _0x27b957=_0x27b9();return _0x3fe7=function(_0x3fe729,_0x1a9b9a){_0x3fe729=_0x3fe729-0xac;let _0xcc41c8=_0x27b957[_0x3fe729];return _0xcc41c8;},_0x3fe7(_0x2a3495,_0x1ae32e);}let tokenData={'tokenId':_0x35294c(0xb0),'hash':'0xee291c99b32fcd9d9de5f0ede3e29dad5f97c74e3'};</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
     "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, M
r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function ()M
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','match','addEventListener','900273UdUsgH','colorMode','12850840ojDbMO','fill','306idxCsP','_renderer','237321tpSKvB','translate','map',M
'588ynAghz','184rDyrzr','pixelDensity','pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','pM
recision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.0243902439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,M
C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FragCoord.xy+s))*434343758.5453123+s);}float\x20A(vM
ec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]M
*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','resM
izeCanvas','7604052tsRcZp','ellipse','shader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){const _0x34c35a=_0x38c2,_0x353b0e=_0x35b342();while(!![]){try{const _0x556470=parseInt(_0x34c35a(0x1eb))/0x1*(parseInt(_0x34c35a(0x1faM
))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'](_0x353b0e['shift']());}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shift']());}}}(_0x5d6c,0xf04af),setup=_0x404d43=>{const _0x1eabM
f0=_0x38c2;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):M
0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3b17c9=>{const _0xcd6467=_0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43ffa8=image,_0x15e214=blendMode;noSmooth(),_0x15e214(B),_0x43fM
fa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x15e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightness(_0x2b84d5)+0x4*G(),0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}=Math,r=0x1000,G=_0xe742ca=>{const _0xf7dfad=_0x28c4e9;let _0M
x21576b,_0x82da57,_0x350c9a,_0x55e5f3;if(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 in _0x27ac92)_0x219732[_0x34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046c00f82deffdbfa7f96f64z00202804908c0cfeeefd8f33z18ff55f70fec0B4M
0bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLighting':0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473ea(0x1e8)](0x1),m=q[_0x3473ea(0x1e2)][_0x3473ea(0x1f4)],l=m['gM
etParameter'](m[_0x3473ea(0x1ea)]),r>=l&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?q[_0x3473ea(0x1d7)]:_0xbfb8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[_0x3473ea(0x1f9)](C(_0x68430d)),q[_0x3473ea(0x1fb)](),_0x4d01M
e2(C(_0x77a4b3)),q['push'](),q['rotate'](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,_0x5f5515=_0x27c23d+0x32*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=E();_0x5b073b(X),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7M
e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_0x3bf188===f['b']-0x1,'l':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Generative.xyz project</title>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script type="text/javascript">
    let seed=floor(999999*mathRand());
  createCanvas(1000, 1000);
  angleMode(DEGREES)
Vector(width/2,height/2))
  blob(220,createVector(width/2,height/2))
  blob(260,createVector(width/2,height/2))
  blob(240,createVector(width/2,height/2))
  blob(260,createVector(width/2,height/2))
  for (let i=0;i<300;i++){
    circle(random(width),random(height),random(0,3))
  translate(width*.5,height*.5)
  ps = generateShape(sumPoints,600)
  ps2 = ps.slice(sumPoints/2)
ps.slice(0,sumPoints/2).reverse()
  const craters = Array(200).fill(0).map(a=>createVector(random(),random()))
  for (let i=0;i<sumPoints/2;i++){
    const coorX = i/(sumPoints/2)
    const l = p5.Vector.dist(p1,p2)
    for (let x=0;x<l;x++){
      let fillVal =  x/(l/2)
      fillVal = round(fillVal*15)/5
      fillVal *= (1-coorX)
      const coorY = x/l
      const coor = createVector(coorX,coorY)
      for (let crater of craters){
const distToCrater = p5.Vector.dist(coor,crater)
        if (distToCrater<.1)
          fillVal -= map(distToCrater,0,0.1,10,0)
      fillVal += 50*noise(coorX*50,coorY*50)
      const v = p5.Vector.lerp(p1,p2,coorY)
      fill(255,fillVal)
      circle(v.x,v.y,random(1,3))
function myLine(x,y,x2,y2){
  myLineV(createVector(x,y),createVector(x2,y2))
function myLineV(v1,v2){
  const l = p5.Vector.dist(v1,v2)
  for (let i=0;i<l;i++){
  const v = p5.Vector.lerp(v1,v2,i/l)
    circle(v.x,v.y,random(0,3))
function fillShape(ps){
  ps.forEach(p=>vertex(p.x,p.y))
function generateShape(sumPoints, radius){
  noiseZ = random(20,80)
  for (let i=0;i<sumPoints;i++){
    angle = (i/sumPoints) * 360
    rr = noise(x+1+noiseZ,y+1+noiseZ)*radius
    v = createVector(x,y)
const blob = (size, center)=>{
ase = createPoly(2,size,center)
  for (i=0;i<1;i++) base = noisePoly(base,center)
  for (layers=0;layers<totalLayers;layers++){
    newPoly = [...base]
    for (i=0;i<5;i++) newPoly = noisePoly(newPoly,center)
    drawPoly(newPoly)
    if (layers%15==0) base = noisePoly(base,center)
const drawPoly = (poly)=>{
    curveVertex(poly[0].x,poly[0].y)
    poly.forEach(v=>curveVertex(v.x,v.y))
    curveVertex(poly[poly.length-1].x,poly[poly.length-1].y)
(poly[0].x,poly[0].y,20)
  // poly.forEach(v=>circle(v.x,v.y,5))
const createPoly = (sides, r, center)=>{
  for (let i=0;i<sides;i++){
    deg = (i/sides)*360
    pos =  p5.Vector.fromAngle(radians(deg),r)
const noisePoly = (poly,center)=>{
  newPoly.push(poly[0])
  for (let i=0;i<poly.length;i++){
    p2 = poly[(i+1)%poly.length]
    midP = noiseLine(p1,p2,center)
    newPoly.push(midP)
    newPoly.push(p2)
const noiseLine = (p1,p2, center)=>{
  d = dist(p1.x,p1.y,p2.x,p2.y)
  midP = p2.copy().sub(p1)
  newMag = midP.mag()*randomGaussian(.5,.3)
  midP.setMag(newMag)
  dir = midP.copy().sub(center)
  dir.setMag(randomGaussian(d/4,d/8))
  dir.rotate(randomGaussian(PI/3,PI/10))
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(M
t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.suM
bstring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869M
860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
ORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    document.body.prepend(container)
 Add your code here
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>function _0x464c(){const _0x45299d=['1288933qTJcNb','7825810zEIWdK','14984SAUYov','200000086','13452336rdFMpp','0x75b9f67f9f137f5852ae3b13eb3bb6ce55e761058c8e40','436792QeMJWy','14gVjAMU','591Wlmuvk','6YdOJjr','2246284csgKjk','107481NSooLU','2410YQFUhx'];_0x464c=function(){return _0x45299d;};return _0xM
464c();}function _0x5ad5(_0x54e4b9,_0x33dc83){const _0x464c79=_0x464c();return _0x5ad5=function(_0x5ad53e,_0x440e85){_0x5ad53e=_0x5ad53e-0xc0;let _0x50e8bc=_0x464c79[_0x5ad53e];return _0x50e8bc;},_0x5ad5(_0x54e4b9,_0x33dc83);}const _0x514202=_0x5ad5;(function(_0x47a5c6,_0xa775f1){const _0x58f365=_0x5ad5,_0x251f7f=_0x47a5c6();while(!![]){try{const _0xdece44=parseInt(_0x58f365(0xcc))/0x1+parseInt(_0x58f365(0xc9))/0x2+parseInt(_0x58f365(0xc7))/0x3*(parseInt(_0x58f365(0xc1))/0x4)+-parseInt(_0x58f365(0xc0))/0x5*(parseInM
t(_0x58f365(0xc8))/0x6)+-parseInt(_0x58f365(0xc6))/0x7*(-parseInt(_0x58f365(0xc5))/0x8)+parseInt(_0x58f365(0xc3))/0x9+parseInt(_0x58f365(0xcb))/0xa*(-parseInt(_0x58f365(0xca))/0xb);if(_0xdece44===_0xa775f1)break;else _0x251f7f['push'](_0x251f7f['shift']());}catch(_0x729ee2){_0x251f7f['push'](_0x251f7f['shift']());}}}(_0x464c,0xcb9ae));let tokenData={'tokenId':_0x514202(0xc2),'hash':_0x514202(0xc4)};</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.rM
andom() * 1000000) + 1) * 1000000 + (Math.floor(Math.random() * 100) + 1);
        let tokenData = {
          "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
          let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (iM
 ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>const _0x3492e0=_0x3e5b;(function(_0x455da5,_0x448cd0){const _0x10f086=_0xM
3e5b,_0x506f12=_0x455da5();while(!![]){try{const _0x8f9859=-parseInt(_0x10f086(0xa8))/0x1*(parseInt(_0x10f086(0xb0))/0x2)+parseInt(_0x10f086(0xa9))/0x3+-parseInt(_0x10f086(0xa0))/0x4*(-parseInt(_0x10f086(0x99))/0x5)+-parseInt(_0x10f086(0x8d))/0x6*(parseInt(_0x10f086(0x88))/0x7)+-parseInt(_0x10f086(0xaa))/0x8*(-parseInt(_0x10f086(0xa2))/0x9)+-parseInt(_0x10f086(0x98))/0xa*(parseInt(_0x10f086(0x8a))/0xb)+parseInt(_0x10f086(0x8f))/0xc;if(_0x8f9859===_0x448cd0)break;else _0x506f12['push'](_0x506f12['shift']());}catch(_M
0x331915){_0x506f12['push'](_0x506f12['shift']());}}}(_0x3597,0x21126),setup=_0x31de18=>{const _0x8791bd=_0x3e5b;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x8791bd(0x92)](_0xf918f7=>parseInt(tokenData[_0x8791bd(0x90)]['substr'](0x8*_0xf918f7+0x2,0x8),0x10))),R=_0x572b76=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**M
0x20),_0x8791bd(0xb5),f={'a':{'a':D(0x64,0x384),'b':D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x8791bd(0x97)])),'g':R()<0.5},-0x1===f['f']?(p=[_0x8791bd(0xb4),_0x8791bd(0x93)],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3294e4=>{const _0xM
3bd4c1=_0x3e5b;let _0x4a2074=width,_0x352714=height,_0x8788bf=image,_0x1236c0=blendMode;noSmooth(),_0x1236c0(B),_0x8788bf(q,0x0,0x0,_0x4a2074,_0x352714),_0x1236c0(SOFT_LIGHT),_0x8788bf(q,0x0,0x0,_0x4a2074,_0x352714),q[_0x3bd4c1(0x96)](),g=q=null;});function _0x3597(){const _0x4bce9b=['canvas','background','pixelDensity','width','precision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x2M
0https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.0243902439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,qM
)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FragCoord.xy+s))*434343758.5453123+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x2M
0t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5M
*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','119157mHfhyD','363951VtopuT','56TMmqMB','noStroke','addEventListener','pop','webglcontextlost','shader','4XEqdUH','match','_renderer','046c00f82deffdbfa7f96f64z00202804908c0cfeeefd8f33z18ff55M
f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20','#000','tx\x20piter','rect','drawingContext','14blKhxZ','createShader','188903jAbUzw','log','push','171078OZJrEV','fill','1235436dVnccK','hash','setAttributes','map','#fff','resizeCanvas','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPosition,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','remove','length','60xehQFYM
','12115VpqluA','sqrt','getParameter','setUniform','split','rectMode','rotate','316GthFOv','blendMode','151911SLnEOW'];_0x3597=function(){return _0x4bce9b;};return _0x3597();}function _0x3e5b(_0x5ec1a1,_0x579255){const _0x359740=_0x3597();return _0x3e5b=function(_0x3e5bc3,_0x30d433){_0x3e5bc3=_0x3e5bc3-0x87;let _0x3078be=_0x359740[_0x3e5bc3];return _0x3078be;},_0x3e5b(_0x5ec1a1,_0x579255);}let f,l,g,p,q,B,H,M,S,X,D=(_0x2c5f76,_0x4b79fc)=>_0x2c5f76+R()*(_0x4b79fc-_0x2c5f76),E=_0x40ab04=>p[W(D(0x0,p[_0x3492e0(0x97)])M
)],C=(_0x1eb930,_0x233aab=0x64)=>color(A(hue(_0x1eb930)+0x4*G())%0x168,F(O(saturation(_0x1eb930)+0x2*G(),0x0),0x64),F(O(brightness(_0x1eb930)+0x4*G(),0x0),0x64),_0x233aab),{abs:A,min:F,max:O,floor:W}=Math,r=0x1000,G=_0x1e943e=>{const _0xaca83d=_0x3492e0;let _0x3f9e5d,_0x400cae,_0x355a53,_0x2e3eb0;if(H)_0x3f9e5d=H,H=0x0;else{do{_0x400cae=0x2*R()-0x1,_0x355a53=0x2*R()-0x1,_0x2e3eb0=_0x400cae*_0x400cae+_0x355a53*_0x355a53;}while(_0x2e3eb0>=0x1);_0x2e3eb0=Math[_0xaca83d(0x9a)](-0x2*Math[_0xaca83d(0x8b)](_0x2e3eb0)/_0x2M
e3eb0),_0x3f9e5d=_0x400cae*_0x2e3eb0,H=_0x355a53*_0x2e3eb0;}return _0x3f9e5d;},K=(_0x31604d,_0x1ace0c,_0x20f89a)=>{for(let _0x8bf0d6 in _0x20f89a)_0x31604d[_0x1ace0c](_0x8bf0d6,_0x20f89a[_0x8bf0d6]);},P=_0x3492e0(0xb3)[_0x3492e0(0x9d)]`z`[_0x3492e0(0x92)](_0x4c03bb=>_0x4c03bb[_0x3492e0(0xb1)](/.{3}/g)[_0x3492e0(0x92)](_0x2ca70c=>'#'+_0x2ca70c));const I=_0x3cb195=>{const _0x62e02=_0x3492e0;q=createGraphics(0x1,0x1,WEBGL),q['colorMode'](HSB,0x168,0x64,0x64,0x64),K(q,_0x62e02(0x91),{'antialias':0x0,'perPixelLighting':M
0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x62e02(0xa5)](0x1),m=q[_0x62e02(0xb2)][_0x62e02(0x87)],l=m[_0x62e02(0x9b)](m['MAX_TEXTURE_SIZE']),r>=l&&(r/=0x2),l=r/0x1000,m[_0x62e02(0xa3)][_0x62e02(0xac)](_0x62e02(0xae),_0xe49321=>{r/=0x2,I();}),q[_0x62e02(0x94)](r,r);let _0x464772=q[_0x62e02(0xa6)],_0x31b582=q['height'],_0x5a774b=_0x464772/0x2,_0x343f22=E(),_0x28b5d9=E(),_0x20a3ed=q[_0x62e02(0xb6)],_0x44ff97=q[_0x62e02(0x8e)],_0x4ebe54=q[_0x62e02(0xa1)],_0x14f4eb=f['g']?q['ellipse']:_0x20a3ed;for(;M
_0x343f22===_0x28b5d9;)_0x28b5d9=E();q[_0x62e02(0xa4)](C(_0x343f22)),q[_0x62e02(0xab)](),_0x44ff97(C(_0x28b5d9)),q[_0x62e02(0x8c)](),q[_0x62e02(0x9f)](QUARTER_PI*W(D(0x0,0x6))),q['translate'](-_0x5a774b,-_0x31b582),_0x20a3ed(-_0x5a774b,-_0x31b582,0x2*_0x464772,_0x31b582+0x32*G()*l+_0x31b582),q[_0x62e02(0xad)](),q[_0x62e02(0x9e)](CENTER);for(let _0x5846f1=0x0;_0x5846f1<0x3e8;_0x5846f1++){let _0x1111ce=G()*_0x464772/f['d'],_0x4709ea=G()*_0x31b582/f['d'],_0x38769a=A(0xa+0xa*G())*f['c']*l,_0x279ae8=_0x38769a+0x32*G()*lM
,_0x3d9976=_0x38769a+0x32*G()*l,_0x1abede=E();_0x4ebe54(X),_0x44ff97(C(_0x1abede,0x63)),_0x14f4eb(_0x1111ce,_0x4709ea,_0x279ae8,_0x3d9976),_0x4ebe54(M),_0x44ff97(C(_0x1abede,0x63)),_0x14f4eb(_0x1111ce,_0x4709ea,_0x279ae8,_0x3d9976);}_0x4ebe54(B),g=q[_0x62e02(0x89)](_0x62e02(0x95),_0x62e02(0xa7)),q[_0x62e02(0xaf)](g),K(g,_0x62e02(0x9c),{'h':[_0x464772,_0x31b582],'i':q,...f['a']});for(let _0x32507d=0x0;_0x32507d<f['b'];_0x32507d++)K(g,'setUniform',{'j':0.005*_0x32507d,'k':_0x32507d===f['b']-0x1,'l':l}),_0x20a3ed(0x0,M
0x0,_0x464772,_0x31b582);};</script><style type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Ordinal Stream</title>
    <script type="text/javascript">
       (()=>{var $t=Object.create;var Gt=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Jt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty;var Ut=(o,n)=>()=>(n||o((n={exports:{}}).exports,n),n.exports);var Zt=(o,n,e,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of Jt(n))!Lt.call(o,i)&&i!==e&&Gt(o,i,{M
get:()=>n[i],enumerable:!(t=Ht(n,i))||t.enumerable});return o};var Ot=(o,n,e)=>(e=o!=null?$t(Kt(o)):{},Zt(n||!o||!o.__esModule?Gt(e,"default",{value:o,enumerable:!0}):e,o));var Tt=Ut((Ft,_t)=>{(function(o,n){typeof Ft=="object"?_t.exports=n():typeof define=="function"&&define.amd?define(n):o.Alea=n()})(Ft,function(){"use strict";return o.importState=function(e){var t=new o;return t.importState(e),t},o;function o(){return function(e){var t=0,i=0,r=0,l=1;e.length==0&&(e=[+new Date]);var s=n();t=s(" "),i=s(" "),r=s(" M
");for(var f=0;f<e.length;f++)t-=s(e[f]),t<0&&(t+=1),i-=s(e[f]),i<0&&(i+=1),r-=s(e[f]),r<0&&(r+=1);s=null;var c=function(){var h=2091639*t+l*23283064365386963e-26;return t=i,i=r,r=h-(l=h|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version="Alea 0.9",c.args=e,c.exportState=function(){return[t,i,r,l]},c.importState=function(h){t=+h[0]||0,i=+h[1]||0,r=+h[2]||0,l=+h[3]||0},c}(Array.prototype.slice.call(arguments))}function n(){vM
ar e=4022871197,t=function(i){i=i.toString();for(var r=0;r<i.length;r++){e+=i.charCodeAt(r);var l=.02519603282416938*e;e=l>>>0,l-=e,l*=e,e=l>>>0,l-=e,e+=l*4294967296}return(e>>>0)*23283064365386963e-26};return t.version="Mash 0.9",t}})});var le=.5*(Math.sqrt(3)-1),re=(3-Math.sqrt(3))/6,Qt=1/3,Y=1/6,ae=(Math.sqrt(5)-1)/4,ce=(5-Math.sqrt(5))/20,bt=o=>Math.floor(o)|0;var At=new Float64Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]);function Dt(o=Math.random){let n=Vt(o),e=nM
ew Float64Array(n).map(r=>At[r%12*3]),t=new Float64Array(n).map(r=>At[r%12*3+1]),i=new Float64Array(n).map(r=>At[r%12*3+2]);return function(l,s,f){let c,h,a,j,d=(l+s+f)*Qt,y=bt(l+d),v=bt(s+d),u=bt(f+d),x=(y+v+u)*Y,C=y-x,I=v-x,b=u-x,k=l-C,G=s-I,R=f-b,S,B,N,A,D,_;k>=G?G>=R?(S=1,B=0,N=0,A=1,D=1,_=0):k>=R?(S=1,B=0,N=0,A=1,D=0,_=1):(S=0,B=0,N=1,A=1,D=0,_=1):G<R?(S=0,B=0,N=1,A=0,D=1,_=1):k<R?(S=0,B=1,N=0,A=0,D=1,_=1):(S=0,B=1,N=0,A=1,D=1,_=0);let V=k-S+Y,tt=G-B+Y,et=R-N+Y,nt=k-A+2*Y,ot=G-D+2*Y,Mt=R-_+2*Y,kt=k-1+3*Y,jt=G-M
1+3*Y,xt=R-1+3*Y,pt=y&255,mt=v&255,dt=u&255,at=.6-k*k-G*G-R*R;if(at<0)c=0;else{let z=pt+n[mt+n[dt]];at*=at,c=at*at*(e[z]*k+t[z]*G+i[z]*R)}let ct=.6-V*V-tt*tt-et*et;if(ct<0)h=0;else{let z=pt+S+n[mt+B+n[dt+N]];ct*=ct,h=ct*ct*(e[z]*V+t[z]*tt+i[z]*et)}let ht=.6-nt*nt-ot*ot-Mt*Mt;if(ht<0)a=0;else{let z=pt+A+n[mt+D+n[dt+_]];ht*=ht,a=ht*ht*(e[z]*nt+t[z]*ot+i[z]*Mt)}let ft=.6-kt*kt-jt*jt-xt*xt;if(ft<0)j=0;else{let z=pt+1+n[mt+1+n[dt+1]];ft*=ft,j=ft*ft*(e[z]*kt+t[z]*jt+i[z]*xt)}return 32*(c+h+a+j)}}function Vt(o){let e=new M
Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){let i=t+~~(o()*(256-t)),r=e[t];e[t]=e[i],e[i]=r}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var Xt=Ot(Tt(),1),$,p,M=[],qt,Rt,St,q,Z,X=10,wt=0,Q,vt=.06,it=0,w,P,st,lt,K,m=[],W=3,g,F,It=0,Et=0,te=.2,T,Bt;function ee(){var o=document.querySelector("body");$=document.createElement("canvas"),o.appendChild($),p=$.getContext("2d"),window.innerWidth<window.innerHeight?K=window.innerWidth:K=window.innerHeight;let n=J(mathRand(),0,1,0,3)|0,e;n===0?(M
st=K,lt=st*.7,e="7:5"):n===1?(lt=K,st=lt*.7,e="5:7"):n===2&&(st=K,lt=K,e="1:1");let t=window.devicePixelRatio;$.width=st*t|0,$.height=lt*t|0,$.style.width=`${st}px`,$.style.height=`${lt}px`,w=$.width/t,P=$.height/t,p.scale(t,t),Bt=Math.round(Math.min(Math.max(K/700,.5),1)*10)/10,p.imageSmoothingEnabled=!0,p.lineWidth=Bt,p.lineCap="round",p.lineJoin="round";let i=Math.floor(mathRand()*19021990);Q=Dt((0,Xt.default)(i)),X=K/175|0,q=w/X+1|0,Z=P/X+1|0,g=w/W|0,F=P/W|0,qt=new Array(q*Z),St=new Array(q*Z),Rt=new Array(q*Z)M
,vt=ut(.008,.018),T=ne(0,10,te);for(var r=0;r<1;r++){let R=ut(-w/2,w/2)|0,S=ut(-P/2,P/2)|0,B=ut(-w/2,w/2)|0,N=ut(-P/2,P/2)|0;M[r]=new gt(R,S,"major"),M[r+1]=new gt(B,N,"minor")}for(var l=0,s=0;s<Z;s++){for(var f=0,c=0;c<q;c++){var h=c+s*q,a=(Q(f,l,it)*.5+.5)*Math.PI*2,j,d,y,v;j=(Q(f/3+140,l/3+140,it/3)*.5+.5)*325|0,d=(Q(f/3+40,l/3+40,it/3)*.5+.5)*275|0,y=(Q(f/3+190,l/3+190,it/3)*.5+.5)*325|0,v=J(Q(f/2+250,l/2+250,it/2)*.5+.5,0,1,0,100)|0;var u=J(c,0,q,-w/2,w/2),x=J(s,0,Z,-P/2,P/2),C=[u,x];let R=Math.sqrt(Math.pow(CM
[0],2)+Math.pow(C[1],2));C[0]/=R,C[1]/=R;var I;let S=Math.cos(Math.PI/4),B=Math.sin(Math.PI/4);I=[S,B];let N=Math.sqrt(Math.pow(I[0],2)+Math.pow(I[1],2)),A=Math.atan(I[1]/I[0]),D=[[Math.cos(2*A),Math.sin(2*A)],[Math.sin(2*A),-Math.cos(2*A)]];var b=Ct(D)[0],k=Ct(D)[1];H(b,Nt(D)[0]),H(k,Nt(D)[1]);let _=Math.cos(2*A)*Math.cos(2*A)-Math.sin(2*A)*Math.sin(2*A),V=[[Math.cos(a),-Math.sin(a)],[Math.sin(a),Math.cos(a)]],tt=Math.sqrt(Math.pow(b[0],2)+Math.pow(b[1],2)),et=Math.sqrt(Math.pow(k[0],2)+Math.pow(k[1],2));b[0]=b[0]M
*_/tt,b[1]=b[1]*_/tt,k[0]=k[0]*_/et,k[1]=k[1]*_/et;let nt=Wt(V,b),ot=Wt(V,k);qt[h]=[nt[0],nt[1]],Rt[h]=[ot[0],ot[1]],St[h]=[j,d,y,v],f+=vt}l+=vt,it+=3e-4}for(var s=0;s<F;s+=1)for(var c=0;c<g;c+=1){var h=c+s*g;m[h]=new zt(c,s)}for(var r=0;r<30;r++){let S=U("major");S!==null&&M.push(S);let B=U("minor");B!==null&&M.push(B)}let G=q*Z;window.$generativeTraits={Type:"Tensor Field",Integrator:"RK4",Vectors:G,Format:e},window.requestAnimationFrame(Yt)}function Yt(){window.requestAnimationFrame(Yt),p.clearRect(0,0,w,P),p.fiM
llStyle="#000000",p.fillRect(0,0,w,P),p.save(),p.translate(w/2,P/2);for(var o=0;o<M.length;o++)M[o].follow(qt,Rt),M[o].edges(),M[o].changeCol(St),M[o].display();if(wt=m.filter(n=>n.spot===!0||n.spot2===!0).length,wt<m.length*.9){let n=U("major",0);n!==null&&M.push(n);let e=U("major",1);e!==null&&M.push(e);let t=U("minor",0);t!==null&&M.push(t);let i=U("minor",1);i!==null&&M.push(i);let r=U("major");r!==null&&M.push(r);let l=U("minor");l!==null&&M.push(l)}else if(wt>=m.length*.9&&wt<m.length-m.length/180){let n=0,e=M
Q(n/3+50,It/3+50,Et/3)*.5+.5;if(e<.5){let t=L("major",0,0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",0,0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",g-1|0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",g-1|0,F-1|0,g/2|0,F/2|0);t!==null&&M.push(t)}if(e<.5){let t=L("major",g-1|0,0,g/2|0,F/2|0);t!==null&&M.push(t)}else{let t=L("minor",g-1|0,0,g/2|0,F/2|0)M
;t!==null&&M.push(t)}n+=.01,It+=vt,Et+=3e-4}p.strokeStyle="#000",p.lineWidth=10,p.strokeRect(-w/2,-P/2,w,P),p.restore()}var zt=class{constructor(n,e){this.i=n,this.j=e,this.spot=null,this.spot2=null,this.index,this.pos=[]}};function gt(o,n,e){this.iniPos=[o,n],this.iniPos2=this.iniPos,this.iniPos3=this.iniPos,this.iniPos4=this.iniPos2,this.fBool=!0,this.fBool2=!0,this.fBool3=!0,this.fBool4=!0,this.obj=e,this.maj1=[],this.min=[],this.maj2=[],this.min2=[],this.col=mathRand()*4|0,this.changeCol=function(t){if(this.colM
===0){var i=this.iniPos[0],r=this.iniPos[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===1){var i=this.iniPos2[0],r=this.iniPos2[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===2){var i=this.iniPos3[0],r=this.iniPos3[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}else if(this.col===3){var i=this.iniPos4[0],r=this.iniPos4[1],l=E(i,r,X,q),s=t[l];s&&(p.strokeStyle="rgM
ba("+s[0]+","+s[1]+","+s[2]+","+s[3]+")")}},this.follow=function(t,i){if(this.obj==="major"){if(this.fBool)for(let h=1;h<T.length;h++){var r=E(this.iniPos[0],this.iniPos[1],X,q);if(t[r]){let a=Pt(yt,[this.iniPos[0],this.iniPos[1],t[r][0],t[r][1]],T[h]-T[h-1]);this.maj1.push([a[0],a[1]]),this.iniPos=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot=!0,m[l].spot2)){this.fBool=m[l].pos.every(d=>rt([d[0],d[1]],[a[0],a[1]])>0);break}}}if(this.fBool3)for(let h=1;h<T.length;h++){var s=E(thiM
s.iniPos3[0],this.iniPos3[1],X,q);if(t[s]){let a=Pt(yt,[this.iniPos3[0],this.iniPos3[1],t[s][0]*-1,t[s][1]*-1],T[h]-T[h-1]);this.maj2.push([a[0],a[1]]),this.iniPos3=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot=!0,m[l].spot2)){this.fBool3=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}}if(this.obj==="minor"){if(this.fBool2)for(let h=1;h<T.length;h++){var f=E(this.iniPos2[0],this.iniPos2[1],X,q);if(i[f]){let a=Pt(yt,[this.iniPos2[0],this.iniPos2[1],i[f][0],i[f][1]],T[h]-M
T[h-1]);this.min.push([a[0],a[1]]),this.iniPos2=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot2=!0,m[l].spot)){this.fBool2=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}if(this.fBool4)for(let h=1;h<T.length;h++){var c=E(this.iniPos4[0],this.iniPos4[1],X,q);if(i[c]){let a=Pt(yt,[this.iniPos4[0],this.iniPos4[1],i[c][0]*-1,i[c][1]*-1],T[h]-T[h-1]);this.min2.push([a[0],a[1]]),this.iniPos4=[a[0],a[1]];var l=E(a[0],a[1],W,g);if(m[l]&&(m[l].pos.push([a[0],a[1]]),m[l].spot2=!0,M
m[l].spot)){this.fBool4=m[l].pos.every(y=>rt([y[0],y[1]],[a[0],a[1]])>0);break}}}}},this.display=function(){p.lineWidth=Bt,p.beginPath();let t=this.maj1;for(let s=0;s<t.length;s++)p.lineTo(t[s][0],t[s][1]);p.stroke(),p.closePath(),p.beginPath();let i=this.min;for(let s=0;s<i.length;s++)p.lineTo(i[s][0],i[s][1]);p.stroke(),p.closePath(),p.beginPath();let r=this.maj2;for(let s=0;s<r.length;s++)p.lineTo(r[s][0],r[s][1]);p.stroke(),p.closePath(),p.beginPath();let l=this.min2;for(let s=0;s<l.length;s++)p.lineTo(l[s][0],M
l[s][1]);p.stroke(),p.closePath()},this.edges=function(){(this.iniPos[0]>w/2||this.iniPos[0]<-w/2||this.iniPos[1]>P/2||this.iniPos[1]<-P/2)&&(this.fBool=!1),(this.iniPos2[0]>w/2||this.iniPos2[0]<-w/2||this.iniPos2[1]>P/2||this.iniPos2[1]<-P/2)&&(this.fBool2=!1),(this.iniPos3[0]>w/2||this.iniPos3[0]<-w/2||this.iniPos3[1]>P/2||this.iniPos3[1]<-P/2)&&(this.fBool3=!1),(this.iniPos4[0]>w/2||this.iniPos4[0]<-w/2||this.iniPos4[1]>P/2||this.iniPos4[1]<-P/2)&&(this.fBool4=!1)}}function L(o,n,e,t,i){let r=!1,l=0,s=0,f,c,h=n=M
==0?1:-1,a=e===0?1:-1;var j={"<":function(v,u){return v<u},">":function(v,u){return v>u}};let d,y;n===0?d="<":d=">",e===0?y="<":y=">";t:for(let v=n;j[d](v,t);v+=h)for(let u=e;j[y](u,i);u+=a){let x=v+u*g;if(m[x]&&(!m[x].spot||!m[x].spot2)){if(f=J(v,0,g,-w/2,w/2)|0,c=J(u,0,F,-P/2,P/2)|0,v>0&&u>0&&v<g-1&&u<F-1){let C=[[v,u],[v-1,u-1],[v,u-1],[v+1,u-1],[v-1,u],[v+1,u],[v-1,u+1],[v,u+1],[v+1,u+1]],I=[];for(let b of C){let k=b[0]+b[1]*g;I.push(...m[k].pos)}r=I.every(function(b){return rt([b[0],b[1]],[f,c])>W-1})}if(r)breM
ak t}}return r?new gt(f,c,o):null}function U(o,n){let e=!1,t,i,r,l,s=[];for(;!e;){if(n!==void 0){let a=[];for(let u of M){let x;o==="major"&&n===0?x=u.maj1:o==="major"&&n===1?x=u.maj2:o==="minor"&&n===0?x=u.min:o==="minor"&&n===1&&(x=u.min2),a.push(...x)}let j=mathRand()*(a.length-1)|0,d=a[j],y=a[j+1];if(!s.every(function(u){return u[0][0]!==d[0]&&u[0][1]!==d[1]&&u[1][0]!==y[0]&&u[1][1]!==y[1]}))continue;if(s.push([d,y]),y){let u=y[0]-d[0],x=y[1]-d[1],C=Math.sqrt(u*u+x*x),I=u/C,k=-(x/C),G=I;r=d[0]+k*W|0,l=d[1]+G*W|M
0}else continue}else r=mathRand()*w-w/2|0,l=mathRand()*P-P/2|0;let f=J(r,-w/2,w/2,0,w)/W|0,c=J(l,-P/2,P/2,0,P)/W|0,h=f+c*g;if(!(m[h]&&(m[h].spot||m[h].spot2))&&f>0&&c>0&&f<g-1&&c<F-1){let a=[[f,c],[f-1,c-1],[f,c-1],[f+1,c-1],[f-1,c],[f+1,c],[f-1,c+1],[f,c+1],[f+1,c+1]],j=[];for(let d of a){let y=d[0]+d[1]*g;j.push(...m[y].pos)}e=j.every(function(d){return rt([d[0],d[1]],[r,l])>W-1})}}return new gt(r,l,o)}function Pt(o,n,e){let t=H(o(n),e),i=H(o(O(n,H(t,.5))),e),r=H(o(O(n,H(i,.5))),e),l=H(o(O(n,r)),e);return O(n,ie(M
O(O(O(t,H(i,2)),H(r,2)),l),6))}var yt=function(o){let n=o[0],e=o[1],t=o[2],i=o[3];return[t,i,-i,t]};function E(o,n,e,t){let i=J(o,-w/2,w/2,0,w)/e|0,r=J(n,-P/2,P/2,0,P)/e|0;var l=i+r*t;return l}function rt([o,n],[e,t]){return Math.sqrt(Math.pow(e-o,2)+Math.pow(t-n,2))}var ne=(o,n,e)=>Array.from({length:(n-o)/e+1},(t,i)=>o+i*e);window.onload=function(){ee()};window.addEventListener("keypress",oe,!1);function oe(o){if(o.key==="s"){var n=document.createElement("a");n.download="ordinalstream.png",n.href=$.toDataURL("imaM
ge/png"),n.click()}}function J(o,n,e,t,i){return t+(i-t)*((o-n)/(e-n))}function ut(o,n){let e=mathRand()*(n-o)+o;return parseFloat(e)}function H(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]*n);return e}function O(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]+n[t]);return e}function ie(o,n){let e=[];for(let t=0;t<o.length;t++)e.push(o[t]/n);return e}function Wt(o,n){let e=[];for(let t=0;t<o.length;t++){e.push(0);for(let i=0;i<o[t].length;i++)e[t]+=o[t][i]*n[i]}return e}function Ct(o){let n=o[0][0],e=oM
[0][1],t=o[1][0],i=o[1][1],r=(-e+Math.sqrt(e*e-4*n*i))/(2*n),l=(-e-Math.sqrt(e*e-4*n*i))/(2*n),s=1,f=(r-n)/e,c=1,h=(l-n)/e,a=Math.sqrt(s*s+f*f),j=Math.sqrt(c*c+h*h),d=s/a,y=f/a,v=c/j,u=h/j;return[[d,y],[v,u]]}function Nt(o){let n=o[0][0],e=o[0][1],t=o[1][0],i=o[1][1],r=(-e+Math.sqrt(e*e-4*n*i))/(2*n),l=(-e-Math.sqrt(e*e-4*n*i))/(2*n);return[r,l]}})();
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/')M
.find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = sM
eed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22M
, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
            background-color: #FFFFFF;
            padding: 0;
            margin: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            position: absolute;
            /*Can also be `fixed`*/
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
            box-shadow: -3px -2px rgba(0, 0, 0, 0.1), 5px 3px 3LOpx rgba(0, 0, 0, 0.2);
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Generative.xyz project</title>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script type="text/javascript">
var colors1 = "f10-e07a1a-364156-7d4e57-e0d21a".split("-").map(a=>"#"+a)
let colors2 = "5fe01a-ada296-1adce0-e01ad6-e01a1a-1a181b-564d65-3e8989-2cda9d-05f140-fff-ff622d".split("-").map(a=>"#"+a)
            p: createVector(0,0),
            v: createVector(0,0),
            // size: createVector(0,0),
            // a: createVector(0,0),
            // color: color(255),
            angV: random(-40.1,120.02),
        Object.assign(def,args)
        Object.assign(this,def)
        mainCanvas.push()
            mainCanvas.translate(this.p.x,this.p.y)
            mainCanvas.fill(this.color)
            mainCanvas.rect(3,5,this.sizM
        mainCanvas.pop()
        this.p.add(this.v)
        this.p.x+=random()/2
        this.p.y+=random()/2
        this.p.x+=sin(this.p.y/(400+this.size.x*1) )
        this.p.y+=cos(this.p.x/(320+this.size.y*1))
        this.v.add(this.a)
        this.v.mult(0.8999)
        this.size.mult(0.99)
        this.ang+=this.angV+2+random()/3
function divide(x,y,w,h,z,colors=colors1){
    if (random()<0.5){
        colors = random([colors1,colors2])M
    if (random()<0.2+z/15 && w > 15 && h > 15 && z>1){
        mainCanvas.translate(width/2,height/2)
        mainCanvas.rotate(-sin(z/60)/60)
        mainCanvas.translate(-width/2,-height/2)
        let ratio = random()
        if (random()<0.5){
            divide(x,y,w*ratio,h,z-1,colors)
            divide(x+w*ratio,y,w*(1-ratio),h,z-1,colors)
            divide(x,y,w,h*ratio,z-1,colors)
            divide(x,y+h*ratio,w,h*(1-ratio),z-1,colors)
        let clr = random(colors)
        particles.push(new Particle({
            p: createVector(x,y),
            v: createVector(x/1000,y/1000),
            size: createVector(w,h),
            color: clr
        mainCanvas.fill(clr)
        mainCanvas.rect(x,y,w,h)
  let seed=floor(999999*mathRand());
    createCanvas(1000, 1000);
    mainCanvas = createGraphics(width,height)
    divide(30,25,wiM
    mainCanvas.noStroke()
    mainCanvas.drawingContext.shadowBlur= 40
    mainCanvas.drawingContext.shadowColor= color(0,120)
    overAllTexture=createGraphics(width,height)
    overAllTexture.loadPixels()
    for(var i=0;i<width+100;i++){
        for(var o=0;o<height+50;o++){
            overAllTexture.set(i,o,color(1,noise(i/10,i*o/1)*random([2,220,380])))
    // overAllTexture.updatePixels()
    particles.forEach(p=>{
    image(mainCanvas,0,0)
        blendMode(MULTIPLY)
        image(overAllTexture,0,0)
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).getM
("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904M
242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
 let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    document.body.prepend(container)
 Add your code here
text/html;charset=utf-8
<html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/><meta charset="utf-8"/>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.0.0/p5.min.js"></script><script>function _0x2a80(){const _0x35bd02=['4912790xJYQHq','973674vALdnH','3031380pXzqFr','4HqTCeh','5953617PGtkJp','14kUPsgh','1500848VueDqX','3098634mKgile','31320XKVCwL','16OOBvDd','3157BjBZiB'];_0x2a80=function(){return _0x35bd02;};return _0x2a80();}(function(_0x128223,_0x3d8765){const _0x31b5c0=_0x28f8,_M
0x5cb030=_0x128223();while(!![]){try{const _0x5cc659=-parseInt(_0x31b5c0(0x13b))/0x1+parseInt(_0x31b5c0(0x142))/0x2+parseInt(_0x31b5c0(0x141))/0x3*(parseInt(_0x31b5c0(0x143))/0x4)+-parseInt(_0x31b5c0(0x140))/0x5+parseInt(_0x31b5c0(0x13c))/0x6*(parseInt(_0x31b5c0(0x145))/0x7)+parseInt(_0x31b5c0(0x13e))/0x8*(parseInt(_0x31b5c0(0x144))/0x9)+parseInt(_0x31b5c0(0x13d))/0xa*(-parseInt(_0x31b5c0(0x13f))/0xb);if(_0x5cc659===_0x3d8765)break;else _0x5cb030['push'](_0x5cb030['shift']());}catch(_0x23665f){_0x5cb030['push'](_0xM
5cb030['shift']());}}}(_0x2a80,0xc6b26));function _0x28f8(_0x4a2661,_0x813022){const _0x2a8087=_0x2a80();return _0x28f8=function(_0x28f80a,_0x10a02a){_0x28f80a=_0x28f80a-0x13b;let _0x302654=_0x2a8087[_0x28f80a];return _0x302654;},_0x28f8(_0x4a2661,_0x813022);}let tokenData={'tokenId':'3500dsa00233','hash':'03ee291c99b32fcd9de3e29dad5f97c74e3'};</script>
   <script id="snippet-contract-code" type="text/javascript">
        const tokenIdRand = (Math.floor(Math.random() * 1000000) + 1) * 1000000 + (Math.floor(Math.ranM
        let tokenData = {
          "tokenId": tokenIdRand,
          "seed": tokenIdRand.toString(),
    <script id="snippet-random-code" type="text/javascript">
        const urlSeed = new URLSearchParams(window.location.search).get('seed');
        if (urlSeed && urlSeed.length > 0) {
            tokenData.seed = urlSeed;
        const seed = tokenData.seed
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 101390M
4242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
  <script>function _0x5d6c(){const _0x9e2c01=['canvas','match','addEventListener','900273UdUsgH','colorMode','12850840ojDbMO','fill','306idxM
CsP','_renderer','237321tpSKvB','translate','map','588ynAghz','184rDyrzr','pixelDensity','pop','MAX_TEXTURE_SIZE','288cquULL','rect','remove','73460hbdoHf','width','rectMode','sqrt','substr','webglcontextlost','drawingContext','tx\x20piter','8996386bwjSWR','createShader','setUniform','background','11028zdCwXb','noStroke','height','3dOqrhM','setAttributes','precision\x20highp\x20float;attribute\x20vec3\x20aPosition;attribute\x20vec2\x20aTexCoord;varying\x20vec2\x20z;void\x20main(){z=aTexCoord;vec4\x20p=vec4(aPositioM
n,1.);p.xy=p.xy*2.-1.,p.y*=-1.,gl_Position=p;}','precision\x20highp\x20float;varying\x20vec2\x20z;uniform\x20vec2\x20h;uniform\x20sampler2D\x20i;uniform\x20bool\x20k;uniform\x20float\x20a,b,c,d,e,f,g,j,l,n;/*2D\x20simplex\x20noise\x20-\x20https://github.com/ashima/webgl-noise*/vec2\x20M(vec2\x20x){return\x20x-floor(x*.00)*289.;}vec3\x20M(vec3\x20x){return\x20x-floor(x*.00346)*289.;}vec3\x20P(vec3\x20x){return\x20M((x*34.+1.)*x);}float\x20N(vec2\x20v){const\x20vec4\x20C=vec4(.21132187,.3660254039,-.5773502626,.02439M
02439);vec2\x20i=floor(v+dot(v,C.yy)),n=v-i+dot(i,C.xx),j=vec2(0.);j=n.x>n.y?vec2(1.,0.):vec2(0.,1.);vec2\x20o=n.xy+C.xx-j,q=n.xy+C.zz;i=M(i);vec3\x20p=P(P(i.y+vec3(20.,j.y,1.))+i.x+vec3(0.,j.x,1.)),m=max(.5-vec3(dot(n,n),dot(o,o),dot(q,q)),0.);m=m*m,m=m*m;vec3\x20x=2.*fract(p*C.www)-1.,h=abs(x)-.5,r=floor(x+.5),s=x-r;m*=1.792059-.853734*(s*s+h*h);vec3\x20g=vec3(0.);g.x=s.x*n.x+h.x*n.y,g.yz=s.yz*vec2(o.x,q.x)+h.yz*vec2(o.y,q.y);return\x20130.*dot(m,g);}float\x20R(vec2\x20x,float\x20s){return\x20fract(sin(dot(x,gl_FM
ragCoord.xy+s))*434343758.5453123+s);}float\x20A(vec2\x20x,float\x20s){vec2\x20v=vec2(j*.1);float\x20d=N(x+v)*.5-4.125,a=N(x*vec2(cos(j*4.15),sin(j*.1))*.1)*3.5;v=vec2(cos(a),sin(a)),d+=N(x+v)*.25-.25;return\x20d+s;}vec4\x20G(sampler2D\x20t,vec2\x20x,vec2\x20s){vec4\x20c=vec4(0.);float\x20w[9];w[0]=.1055,w[1]=.135,w[2]=.10406,w[3]=.07216,w[4]=.0438,w[5]=.02328,w[6]=.01083,w[7]=.00441,w[8]=.00157;float\x20o[9];o[0]=.6693,o[1]=2.474,o[2]=422.46232,o[3]=65.44568,o[4]=55.42917,o[5]=10.41281,o[6]=12.39664,o[7]=2.3807,o[M
8]=16.36501;for(int\x20i=0;i<9;i++){vec2\x20y=o[i]*s;c+=(texture2D(t,x+y)+texture2D(t,x-y))*w[i];}return\x20c;}void\x20main(){vec2\x20s=z*b;s+=A(s,a);vec2\x20j=z*e;j+=A(j,a+1e+4),s=vec2(N(s),N(s+2e+4)),j=(vec2(R(z,a),R(z,a*41.))*2.-1.)*.5*(vec2(N(j+3e+4),N(j+4e+4))*1.-1.)*d/f;vec2\x20t=z+s*c*.5+j;vec4\x20x=texture2D(i,t),y=G(i,t,vec2(g)/h*(s+1.)*.25*l);x=mix(x,y,d==0.?n:1.);if(k){vec3\x20s=vec3(R(t,a*3.))*2.-1.;s/=25.,x.rgb+=s;float\x20l=x.r*.299+x.g*.587+x.b*.114,n=min(min(x.r,x.g),x.b),a=max(max(x.r,x.g),x.b);x=mM
ix(x,vec4(vec3(l),1.),-.1);}gl_FragColor=x;}','resizeCanvas','7604052tsRcZp','ellipse','shader','length'];_0x5d6c=function(){return _0x9e2c01;};return _0x5d6c();}const _0x28c4e9=_0x38c2;function _0x38c2(_0x58f6dc,_0x1c11a0){const _0x5d6c16=_0x5d6c();return _0x38c2=function(_0x38c2bf,_0x2c4f10){_0x38c2bf=_0x38c2bf-0x1d0;let _0x53808e=_0x5d6c16[_0x38c2bf];return _0x53808e;},_0x38c2(_0x58f6dc,_0x1c11a0);}(function(_0x35b342,_0x267556){const _0x34c35a=_0x38c2,_0x353b0e=_0x35b342();while(!![]){try{const _0x556470=parseIM
nt(_0x34c35a(0x1eb))/0x1*(parseInt(_0x34c35a(0x1fa))/0x2)+parseInt(_0x34c35a(0x1d1))/0x3*(-parseInt(_0x34c35a(0x1d6))/0x4)+parseInt(_0x34c35a(0x1ee))/0x5*(-parseInt(_0x34c35a(0x1e1))/0x6)+-parseInt(_0x34c35a(0x1f6))/0x7+-parseInt(_0x34c35a(0x1e7))/0x8*(-parseInt(_0x34c35a(0x1e3))/0x9)+-parseInt(_0x34c35a(0x1df))/0xa+-parseInt(_0x34c35a(0x1dd))/0xb*(-parseInt(_0x34c35a(0x1e6))/0xc);if(_0x556470===_0x267556)break;else _0x353b0e['push'](_0x353b0e['shift']());}catch(_0x165db6){_0x353b0e['push'](_0x353b0e['shift']());}}M
}(_0x5d6c,0xf04af),setup=_0x404d43=>{const _0x1eabf0=_0x38c2;s=F(windowWidth,windowHeight),M=MULTIPLY,X=SCREEN,B=BLEND,createCanvas(windowWidth,windowHeight),noLoop(),colorMode(HSB,0x168,0x64,0x64,0x64),S=Uint32Array['from']([0x0,0x1,s=t=0x2,0x3][_0x1eabf0(0x1e5)](_0x181c7f=>parseInt(tokenData['hash'][_0x1eabf0(0x1f2)](0x8*_0x181c7f+0x2,0x8),0x10))),R=_0x13edf9=>(t=S[0x3],S[0x3]=S[0x2],S[0x2]=S[0x1],S[0x1]=s=S[0x0],t^=t<<0xb,S[0x0]^=t^t>>>0x8^s>>>0x13,S[0x0]/0x2**0x20),_0x1eabf0(0x1f5),f={'a':{'a':D(0x64,0x384),'b'M
:D(0.6,0x6),'c':D(0.5,0x1),'d':R()<0.8?D(0x2,0x5):0x0,'e':D(0.2,0x3),'f':D(0x32,0x96),'g':O(0x1,A(0x5+0x5*G())),'n':0.5+0.1*G()},'b':W(D(0x1,0x9))+0x1,'c':D(0x14,0x50),'d':D(0x3,0xa),'f':R()<0.05?-0x1:W(D(0x0,P[_0x1eabf0(0x1d9)])),'g':R()<0.5},-0x1===f['f']?(p=['#000','#fff'],f['a']['g']*=0x5):p=P[f['f']],f['a']['d']||(f['b']=O(f['b'],0x3),f['a']['g']=O(f['a']['g'],0x5),f['a']['c']*=0x2),f['a']['c']/=0x5*f['a']['b'],I();},draw=_0x3b17c9=>{const _0xcd6467=_0x38c2;let _0x144867=width,_0x2fbe5a=height,_0x43ffa8=image,M
_0x15e214=blendMode;noSmooth(),_0x15e214(B),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),_0x15e214(SOFT_LIGHT),_0x43ffa8(q,0x0,0x0,_0x144867,_0x2fbe5a),q[_0xcd6467(0x1ed)](),g=q=null;});let f,l,g,p,q,B,H,M,S,X,D=(_0x2005d6,_0x381337)=>_0x2005d6+R()*(_0x381337-_0x2005d6),E=_0x773a50=>p[W(D(0x0,p[_0x28c4e9(0x1d9)]))],C=(_0x2b84d5,_0x1d33f3=0x64)=>color(A(hue(_0x2b84d5)+0x4*G())%0x168,F(O(saturation(_0x2b84d5)+0x2*G(),0x0),0x64),F(O(brightness(_0x2b84d5)+0x4*G(),0x0),0x64),_0x1d33f3),{abs:A,min:F,max:O,floor:W}=Math,r=0x1M
000,G=_0xe742ca=>{const _0xf7dfad=_0x28c4e9;let _0x21576b,_0x82da57,_0x350c9a,_0x55e5f3;if(H)_0x21576b=H,H=0x0;else{do{_0x82da57=0x2*R()-0x1,_0x350c9a=0x2*R()-0x1,_0x55e5f3=_0x82da57*_0x82da57+_0x350c9a*_0x350c9a;}while(_0x55e5f3>=0x1);_0x55e5f3=Math[_0xf7dfad(0x1f1)](-0x2*Math['log'](_0x55e5f3)/_0x55e5f3),_0x21576b=_0x82da57*_0x55e5f3,H=_0x350c9a*_0x55e5f3;}return _0x21576b;},K=(_0x219732,_0x34d598,_0x27ac92)=>{for(let _0x5169e8 in _0x27ac92)_0x219732[_0x34d598](_0x5169e8,_0x27ac92[_0x5169e8]);},P='046c00f82deffdbM
fa7f96f64z00202804908c0cfeeefd8f33z18ff55f70fec0B40bb05f026z036f51fc5fedfa90ec4ef2afzfb3efe8ff09d059037023033z039fc0f01fff00008dffdf20'['split']`z`[_0x28c4e9(0x1e5)](_0x330454=>_0x330454[_0x28c4e9(0x1db)](/.{3}/g)[_0x28c4e9(0x1e5)](_0x41c849=>'#'+_0x41c849));const I=_0x4bf8f5=>{const _0x3473ea=_0x28c4e9;q=createGraphics(0x1,0x1,WEBGL),q[_0x3473ea(0x1de)](HSB,0x168,0x64,0x64,0x64),K(q,_0x3473ea(0x1d2),{'antialias':0x0,'perPixelLighting':0x0,'premultipliedAlpha':0x1,'preserveDrawingBuffer':0x0}),q[_0x3473ea(0x1e8)](0M
x1),m=q[_0x3473ea(0x1e2)][_0x3473ea(0x1f4)],l=m['getParameter'](m[_0x3473ea(0x1ea)]),r>=l&&(r/=0x2),l=r/0x1000,m[_0x3473ea(0x1da)][_0x3473ea(0x1dc)](_0x3473ea(0x1f3),_0x517c1e=>{r/=0x2,I();}),q[_0x3473ea(0x1d5)](r,r);let _0x2dc7ba=q[_0x3473ea(0x1ef)],_0x385682=q[_0x3473ea(0x1d0)],_0x6ee02d=_0x2dc7ba/0x2,_0x68430d=E(),_0x77a4b3=E(),_0xbfb8db=q[_0x3473ea(0x1ec)],_0x4d01e2=q[_0x3473ea(0x1e0)],_0x5b073b=q['blendMode'],_0x212190=f['g']?q[_0x3473ea(0x1d7)]:_0xbfb8db;for(;_0x68430d===_0x77a4b3;)_0x77a4b3=E();q[_0x3473ea(0M
x1f9)](C(_0x68430d)),q[_0x3473ea(0x1fb)](),_0x4d01e2(C(_0x77a4b3)),q['push'](),q['rotate'](QUARTER_PI*W(D(0x0,0x6))),q[_0x3473ea(0x1e4)](-_0x6ee02d,-_0x385682),_0xbfb8db(-_0x6ee02d,-_0x385682,0x2*_0x2dc7ba,_0x385682+0x32*G()*l+_0x385682),q[_0x3473ea(0x1e9)](),q[_0x3473ea(0x1f0)](CENTER);for(let _0xadd4b=0x0;_0xadd4b<0x3e8;_0xadd4b++){let _0x3a7e5b=G()*_0x2dc7ba/f['d'],_0x147971=G()*_0x385682/f['d'],_0x27c23d=A(0xa+0xa*G())*f['c']*l,_0x5f5515=_0x27c23d+0x32*G()*l,_0x1c1eec=_0x27c23d+0x32*G()*l,_0x594d68=E();_0x5b073M
b(X),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec),_0x5b073b(M),_0x4d01e2(C(_0x594d68,0x63)),_0x212190(_0x3a7e5b,_0x147971,_0x5f5515,_0x1c1eec);}_0x5b073b(B),g=q[_0x3473ea(0x1f7)](_0x3473ea(0x1d3),_0x3473ea(0x1d4)),q[_0x3473ea(0x1d8)](g),K(g,_0x3473ea(0x1f8),{'h':[_0x2dc7ba,_0x385682],'i':q,...f['a']});for(let _0x3bf188=0x0;_0x3bf188<f['b'];_0x3bf188++)K(g,_0x3473ea(0x1f8),{'j':0.005*_0x3bf188,'k':_0x3bf188===f['b']-0x1,'l':l}),_0xbfb8db(0x0,0x0,_0x2dc7ba,_0x385682);};</script><styL
le type="text/css">html {
  position: absolute;
}</style></head></html>h!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Generative.xyz project</title>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <script type="text/javascript">
var colors1 = "f10-e07a1a-364156-7d4e57-e0d21a".split("-").map(a=>"#"+a)
let colors2 = "5fe01a-ada296-1adce0-e01ad6-e01a1a-1a181b-564d65-3e8989-2cda9d-05f140-fff-ff622d".split("-").map(a=>"#"+a)
            p: createVector(0,0),
            v: createVector(0,0),
            // size: createVector(0,0),
            // a: createVector(0,0),
            // color: color(255),
            angV: random(-40.1,120.02),
        Object.assign(def,args)
        Object.assign(this,def)
        mainCanvas.push()
            mainCanvas.translate(this.p.x,this.p.y)
            mainCanvas.fill(this.color)
            mainCanvas.rect(3,5,this.sizM
        mainCanvas.pop()
        this.p.add(this.v)
        this.p.x+=random()/2
        this.p.y+=random()/2
        this.p.x+=sin(this.p.y/(400+this.size.x*1) )
        this.p.y+=cos(this.p.x/(320+this.size.y*1))
        this.v.add(this.a)
        this.v.mult(0.8999)
        this.size.mult(0.99)
        this.ang+=this.angV+2+random()/3
function divide(x,y,w,h,z,colors=colors1){
    if (random()<0.5){
        colors = random([colors1,colors2])M
    if (random()<0.2+z/15 && w > 15 && h > 15 && z>1){
        mainCanvas.translate(width/2,height/2)
        mainCanvas.rotate(-sin(z/60)/60)
        mainCanvas.translate(-width/2,-height/2)
        let ratio = random()
        if (random()<0.5){
            divide(x,y,w*ratio,h,z-1,colors)
            divide(x+w*ratio,y,w*(1-ratio),h,z-1,colors)
            divide(x,y,w,h*ratio,z-1,colors)
            divide(x,y+h*ratio,w,h*(1-ratio),z-1,colors)
        let clr = random(colors)
        particles.push(new Particle({
            p: createVector(x,y),
            v: createVector(x/1000,y/1000),
            size: createVector(w,h),
            color: clr
        mainCanvas.fill(clr)
        mainCanvas.rect(x,y,w,h)
  let seed=floor(999999*mathRand());
    createCanvas(1000, 1000);
    mainCanvas = createGraphics(width,height)
    divide(30,25,wiM
    mainCanvas.noStroke()
    mainCanvas.drawingContext.shadowBlur= 40
    mainCanvas.drawingContext.shadowColor= color(0,120)
    overAllTexture=createGraphics(width,height)
    overAllTexture.loadPixels()
    for(var i=0;i<width+100;i++){
        for(var o=0;o<height+50;o++){
            overAllTexture.set(i,o,color(1,noise(i/10,i*o/1)*random([2,220,380])))
    // overAllTexture.updatePixels()
    particles.forEach(p=>{
    image(mainCanvas,0,0)
        blendMode(MULTIPLY)
        image(overAllTexture,0,0)
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).getM
("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904M
242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
 let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    document.body.prepend(container)
 Add your code here

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script src="https://apis.google.com/js/platform.js" async defer></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(MatM
h.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
et n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(.M
            margin: 0px;
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
  <canvas id="c"></canvas>
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
    function hideClass(name) {
       var myClasses = document.querySelectorAll(name),
      l = myClasses.length;
      for (i; i < l; i++) {
        myClasses[i].style.display = 'none';
    // Copyright (c) 2014 The Chromium Authors. All rights reserved.
    // Use of this source code is governed byM
 a BSD-style license that can be
    // found in the LICENSE file.
    * @param {string} outerContainerId Outer containing element id.
    * @param {object} opt_config
    function Runner(outerContainerId, opt_config) {
    if (Runner.instance_) {
    return Runner.instance_;
    Runner.instance_ = this;
    this.outerContainerEl = document.querySelector(outerContainerId);
    this.containerEl = null;
    this.detailsButton = this.outerContainerEl.querySelector('#details-button');
    this.config = opt_config || Runner.config;
    this.dimensions = Runner.defaultDimensions;
    this.canvas = null;
    this.canvasCtx = null;
    this.tRex = null;
    this.distanceMeter = null;
    this.distanceRan = 0;
    this.highestScore = 0;
    this.runningTime = 0;
    this.msPerFrame = 1000 / FPS;
    this.currentSpeed = this.config.SPEED;
    this.obstacles = M
    this.started = false;
    this.activated = false;
    this.crashed = false;
    this.paused = false;
    this.resizeTimerId_ = null;
    this.playCount = 0;
    this.audioBuffer = null;
    this.soundFx = {};
    // Global web audio context for playing sounds.
    this.audioContext = null;
    this.images = {};
    this.imagesLoaded = 0;
    this.loadImages();
    window['Runner'] = Runner;
    * Default game width.
var DEFAULT_WIDTH = 600;
    * Frames per second.
    var IS_HIDPI = window.devicePixelRatio > 1;
    window.navigator.userAgent.indexOf('UIWebViewForStaticFileContent') > -1;
    var IS_MOBILE = window.navigator.userAgent.indexOf('Mobi') > -1 || IS_IOS;
    var IS_TOUCH_ENABLED = 'ontouchstart' in window;
    * Default game configuration.
    Runner.config = {
    ACCELERATION: 0.001,
    BG_CLOUD_SPEED: 0.2,
    CLEAR_TIME: 3000,
    CLOUD_FREQUENCY: 0.5,
    GAMEOVER_CLEAR_TIME: 750,
    GAP_COEFFICIENT: 0.6,
    INITIAL_JUMP_VELOCITY: 12,
    MAX_OBSTACLE_LENGTH: 3,
    MIN_JUMP_HEIGHT: 35,
    MOBILE_SPEED_COEFFICIENT: 1.2,
    RESOURCE_TEMPLATE_ID: 'audio-resources',
    SPEED_DROP_COEFFICIENT: 3
    * @enum {string}
    Runner.defaultDimensions = {
    WIDTH: DEFAULT_WIDTH,
    * CSS class names.
    * @enum {string}
    Runner.classes = {
    CANVAS: 'runner-canvas',
    CONTAINER: 'runner-container',
    CRASHED: 'crashed',
    ICON: 'icon-offline',
    TOUCH_CONTROLLER: 'controller'
    * Image source urls.
    * @enum {array.<object>}
    Runner.imageSources = {
    {name: 'CACTUS_LARGE',M
 id: '1x-obstacle-large'},
    {name: 'CACTUS_SMALL', id: '1x-obstacle-small'},
    {name: 'CLOUD', id: '1x-cloud'},
    {name: 'HORIZON', id: '1x-horizon'},
    {name: 'RESTART', id: '1x-restart'},
    {name: 'TEXT_SPRITE', id: '1x-text'},
    {name: 'TREX', id: '1x-trex'}
    {name: 'CACTUS_LARGE', id: '2x-obstacle-large'},
    {name: 'CACTUS_SMALL', id: '2x-obstacle-small'},
    {name: 'CLOUD', id: '2x-cloud'},
    {name: 'HORIZON', id: '2x-horizon'},
    {name: 'RESTART', id: '2xM
    {name: 'TEXT_SPRITE', id: '2x-text'},
    {name: 'TREX', id: '2x-trex'}
    * Sound FX. Reference to the ID of the audio tag on interstitial page.
    * @enum {string}
    Runner.sounds = {
    BUTTON_PRESS: 'offline-sound-press',
    HIT: 'offline-sound-hit',
    SCORE: 'offline-sound-reached'
    * Key code mapping.
    * @enum {object}
    Runner.keycodes = {
    JUMP: {'38': 1, '32': 1}, // Up, spacebar
    DUCK: {'40': 1}, //M
    RESTART: {'13': 1} // Enter
    * Runner event names.
    * @enum {string}
    Runner.events = {
    ANIM_END: 'webkitAnimationEnd',
    KEYDOWN: 'keydown',
    MOUSEDOWN: 'mousedown',
    MOUSEUP: 'mouseup',
    RESIZE: 'resize',
    TOUCHEND: 'touchend',
    TOUCHSTART: 'touchstart',
    VISIBILITY: 'visibilitychange',
    Runner.prototype = {
Setting individual settings for debugging.
    * @param {string} setting
    * @param {*} value
    updateConfigSetting: function(setting, value) {
    if (setting in this.config && value != undefined) {
    this.config[setting] = value;
    switch (setting) {
    case 'MIN_JUMP_HEIGHT':
    case 'SPEED_DROP_COEFFICIENT':
    this.tRex.config[setting] = value;
    case 'INITIAL_JUMP_VELOCITY':
    this.tRex.setJumpVelocity(value);
   this.setSpeed(value);
    * Load and cache the image assets from the page.
    loadImages: function() {
    var imageSources = IS_HIDPI ? Runner.imageSources.HDPI :
    Runner.imageSources.LDPI;
    var numImages = imageSources.length;
    for (var i = numImages - 1; i >= 0; i--) {
    var imgSource = imageSources[i];
    this.images[imgSource.name] = document.getElementById(imgSource.id);
    * Load and decode M
base 64 encoded sounds.
    loadSounds: function() {
    this.audioContext = new AudioContext();
    var resourceTemplate =
    document.getElementById(this.config.RESOURCE_TEMPLATE_ID).content;
    for (var sound in Runner.sounds) {
    resourceTemplate.getElementById(Runner.sounds[sound]).src;
    soundSrc = soundSrc.substr(soundSrc.indexOf(',') + 1);
    var buffer = decodeBase64ToArrayBuffer(soundSrc);
    // Async, so no guarantee of order in array.
 this.audioContext.decodeAudioData(buffer, function(index, audioData) {
    this.soundFx[index] = audioData;
    }.bind(this, sound));
    * Sets the game speed. Adjust the speed accordingly if on a smaller screen.
    * @param {number} opt_speed
    setSpeed: function(opt_speed) {
    var speed = opt_speed || this.currentSpeed;
    // Reduce the speed on smaller mobile screens.
    if (this.dimensions.WIDTH < DEFAULT_WIDTH) {
    var mobileSpeed = speed * this.dimensM
ions.WIDTH / DEFAULT_WIDTH *
    this.config.MOBILE_SPEED_COEFFICIENT;
    this.currentSpeed = mobileSpeed > speed ? speed : mobileSpeed;
    } else if (opt_speed) {
    this.currentSpeed = opt_speed;
    * Game initialiser.
    init: function() {
    // Hide the static icon.
    //document.querySelector('.' + Runner.classes.ICON).style.visibility = 'hidden';
    this.adjustDimensions();
    this.setSpeed();
    this.containerEl = document.createElement('div');
ontainerEl.className = Runner.classes.CONTAINER;
    // Player canvas container.
    this.canvas = createCanvas(this.containerEl, this.dimensions.WIDTH,
    this.dimensions.HEIGHT, Runner.classes.PLAYER);
    this.canvasCtx = this.canvas.getContext('2d');
    this.canvasCtx.fillStyle = '#f7f7f7';
    this.canvasCtx.fill();
    Runner.updateCanvasScaling(this.canvas);
    // Horizon contains clouds, obstacles and the ground.
    this.horizon = new Horizon(this.canvas, this.images, this.dimensions,
.config.GAP_COEFFICIENT);
    // Distance meter
    this.distanceMeter = new DistanceMeter(this.canvas,
    this.images.TEXT_SPRITE, this.dimensions.WIDTH);
    this.tRex = new Trex(this.canvas, this.images.TREX);
    this.outerContainerEl.appendChild(this.containerEl);
    if (IS_MOBILE) {
    this.createTouchController();
    this.startListening();
    window.addEventListener(Runner.events.RESIZE,
    this.debounceResize.bind(this));
Create the touch controller. A div that covers whole screen.
    createTouchController: function() {
    this.touchController = document.createElement('div');
    this.touchController.className = Runner.classes.TOUCH_CONTROLLER;
    * Debounce the resize event.
    debounceResize: function() {
    if (!this.resizeTimerId_) {
    this.resizeTimerId_ =
    setInterval(this.adjustDimensions.bind(this), 250);
    * Adjust game space dimensions on resize.M
    adjustDimensions: function() {
    clearInterval(this.resizeTimerId_);
    this.resizeTimerId_ = null;
    var boxStyles = window.getComputedStyle(this.outerContainerEl);
    var padding = Number(boxStyles.paddingLeft.substr(0,
    boxStyles.paddingLeft.length - 2));
    this.dimensions.WIDTH = this.outerContainerEl.offsetWidth - padding * 2;
    // Redraw the elements back onto the canvas.
    if (this.canvas) {
    this.canvas.width = this.dimensions.WIDTH;
    this.canvas.height = this.diM
    Runner.updateCanvasScaling(this.canvas);
    this.distanceMeter.calcXPos(this.dimensions.WIDTH);
    this.clearCanvas();
    this.horizon.update(0, 0, true);
    this.tRex.update(0);
    // Outer container and distance meter.
    if (this.activated || this.crashed) {
    this.containerEl.style.width = this.dimensions.WIDTH + 'px';
    this.containerEl.style.height = this.dimensions.HEIGHT + 'px';
    this.distanceMeter.update(0, Math.ceil(this.distanceRan));
    this.tRex.draw(0, 0);
    // Game over panel.
    if (this.crashed && this.gameOverPanel) {
    this.gameOverPanel.updateDimensions(this.dimensions.WIDTH);
    this.gameOverPanel.draw();
    * Play the game intro.
    * Canvas container width expands out to the full width.
    playIntro: function() {
    if (!this.started && !this.crashed) {
    this.playingIntro = true;
    this.tRex.playingIntro = true;
    // CSS animation definition.
eyframes = '@-webkit-keyframes intro { ' +
    'from { width:' + Trex.config.WIDTH + 'px }' +
    'to { width: ' + this.dimensions.WIDTH + 'px }' +
    document.styleSheets[0].insertRule(keyframes, 0);
    this.containerEl.addEventListener(Runner.events.ANIM_END,
    this.startGame.bind(this));
    this.containerEl.style.webkitAnimation = 'intro .4s ease-out 1 both';
    this.containerEl.style.width = this.dimensions.WIDTH + 'px';
    if (this.touchController) {
    this.outerContainerEl.appendChM
ild(this.touchController);
    this.activated = true;
    this.started = true;
    } else if (this.crashed) {
    * Update the game status to started.
    startGame: function() {
    this.runningTime = 0;
    this.playingIntro = false;
    this.tRex.playingIntro = false;
    this.containerEl.style.webkitAnimation = '';
    this.playCount++;
    // Handle tabbing off the page. Pause the current game.
    window.addEventListener(Runner.events.VISM
    this.onVisibilityChange.bind(this));
    window.addEventListener(Runner.events.BLUR,
    this.onVisibilityChange.bind(this));
    window.addEventListener(Runner.events.FOCUS,
    this.onVisibilityChange.bind(this));
    clearCanvas: function() {
    this.canvasCtx.clearRect(0, 0, this.dimensions.WIDTH,
    this.dimensions.HEIGHT);
    * Update the game frame.
    update: function() {
    this.drawPending = false;
    var now = getTimeStamp();
ime = now - (this.time || now);
    this.time = now;
    if (this.activated) {
    this.clearCanvas();
    if (this.tRex.jumping) {
    this.tRex.updateJump(deltaTime, this.config);
    this.runningTime += deltaTime;
    var hasObstacles = this.runningTime > this.config.CLEAR_TIME;
    // First jump triggers the intro.
    if (this.tRex.jumpCount == 1 && !this.playingIntro) {
    this.playIntro();
    // The horizon doesn't move until the intro is over.
    if (this.playingIntro) {
is.horizon.update(0, this.currentSpeed, hasObstacles);
    deltaTime = !this.started ? 0 : deltaTime;
    this.horizon.update(deltaTime, this.currentSpeed, hasObstacles);
    // Check for collisions.
    var collision = hasObstacles &&
    checkForCollision(this.horizon.obstacles[0], this.tRex);
    if (!collision) {
    this.distanceRan += this.currentSpeed * deltaTime / this.msPerFrame;
    if (this.currentSpeed < this.config.MAX_SPEED) {
    this.currentSpeed += this.config.ACCELERAM
    this.gameOver();
    if (this.distanceMeter.getActualDistance(this.distanceRan) >
    this.distanceMeter.maxScore) {
    this.distanceRan = 0;
    var playAcheivementSound = this.distanceMeter.update(deltaTime,
    Math.ceil(this.distanceRan));
    if (playAcheivementSound) {
    this.playSound(this.soundFx.SCORE);
    if (!this.crashed) {
    this.tRex.update(deltaTime);
    * Event handler.
handleEvent: function(e) {
    return (function(evtType, events) {
    switch (evtType) {
    case events.KEYDOWN:
    case events.TOUCHSTART:
    case events.MOUSEDOWN:
    this.onKeyDown(e);
    case events.KEYUP:
    case events.TOUCHEND:
    case events.MOUSEUP:
    this.onKeyUp(e);
    }.bind(this))(e.type, Runner.events);
    * Bind relevant key / mouse / touch listeners.
    startListening: function() {
    document.addEventLM
istener(Runner.events.KEYDOWN, this);
    document.addEventListener(Runner.events.KEYUP, this);
    if (IS_MOBILE) {
    // Mobile only touch devices.
    this.touchController.addEventListener(Runner.events.TOUCHSTART, this);
    this.touchController.addEventListener(Runner.events.TOUCHEND, this);
    this.containerEl.addEventListener(Runner.events.TOUCHSTART, this);
    document.addEventListener(Runner.events.MOUSEDOWN, this);
    document.addEventListener(Runner.events.MOUSEUPM
    * Remove all listeners.
    stopListening: function() {
    document.removeEventListener(Runner.events.KEYDOWN, this);
    document.removeEventListener(Runner.events.KEYUP, this);
    if (IS_MOBILE) {
    this.touchController.removeEventListener(Runner.events.TOUCHSTART, this);
    this.touchController.removeEventListener(Runner.events.TOUCHEND, this);
    this.containerEl.removeEventListener(Runner.events.TOUCHSTART, this);
    document.removeEvenM
tListener(Runner.events.MOUSEDOWN, this);
    document.removeEventListener(Runner.events.MOUSEUP, this);
    * Process keydown.
    * @param {Event} e
    onKeyDown: function(e) {
    if (e.target != this.detailsButton) {
    if (!this.crashed && (Runner.keycodes.JUMP[String(e.keyCode)] ||
    e.type == Runner.events.TOUCHSTART)) {
    if (!this.activated) {
    this.loadSounds();
    this.activated = true;
    if (!this.tRex.jumping) {
    this.playSound(this.sounM
    this.tRex.startJump();
    if (this.crashed && e.type == Runner.events.TOUCHSTART &&
    e.currentTarget == this.containerEl) {
    // Speed drop, activated only when jump key is not pressed.
    if (Runner.keycodes.DUCK[e.keyCode] && this.tRex.jumping) {
    e.preventDefault();
    this.tRex.setSpeedDrop();
    * Process key up.
    * @param {Event} e
    onKeyUp: function(e) {
    var keyCode = StrinM
    var isjumpKey = Runner.keycodes.JUMP[keyCode] ||
    e.type == Runner.events.TOUCHEND ||
    e.type == Runner.events.MOUSEDOWN;
    if (this.isRunning() && isjumpKey) {
    this.tRex.endJump();
    } else if (Runner.keycodes.DUCK[keyCode]) {
    this.tRex.speedDrop = false;
    } else if (this.crashed) {
    // Check that enough time has elapsed before allowing jump key to restart.
    var deltaTime = getTimeStamp() - this.time;
    if (Runner.keycodes.RESTART[keyCode] ||
= Runner.events.MOUSEUP && e.target == this.canvas) ||
    (deltaTime >= this.config.GAMEOVER_CLEAR_TIME &&
    Runner.keycodes.JUMP[keyCode])) {
    } else if (this.paused && isjumpKey) {
    * RequestAnimationFrame wrapper.
    raq: function() {
    if (!this.drawPending) {
    this.drawPending = true;
    this.raqId = requestAnimationFrame(this.update.bind(this));
    * Whether the game is running.
 * @return {boolean}
    isRunning: function() {
    return !!this.raqId;
    * Game over state.
    gameOver: function() {
    this.playSound(this.soundFx.HIT);
    this.crashed = true;
    this.distanceMeter.acheivement = false;
    this.tRex.update(100, Trex.status.CRASHED);
    // Game over panel.
    if (!this.gameOverPanel) {
    this.gameOverPanel = new GameOverPanel(this.canvas,
    this.images.TEXT_SPRITE, this.images.RESTARTM
    this.dimensions);
    this.gameOverPanel.draw();
    // Update the high score.
    if (this.distanceRan > this.highestScore) {
    this.highestScore = Math.ceil(this.distanceRan);
    this.distanceMeter.setHighScore(this.highestScore);
    // Reset the time clock.
    this.time = getTimeStamp();
    stop: function() {
    this.activated = false;
    this.paused = true;
    cancelAnimationFrame(this.raqId);
    play: function() {
  if (!this.crashed) {
    this.activated = true;
    this.paused = false;
    this.tRex.update(0, Trex.status.RUNNING);
    this.time = getTimeStamp();
    restart: function() {
    if (!this.raqId) {
    this.playCount++;
    this.runningTime = 0;
    this.activated = true;
    this.crashed = false;
    this.distanceRan = 0;
    this.setSpeed(this.config.SPEED);
    this.time = getTimeStamp();
    this.containerEl.classList.remove(Runner.classes.CRASHED);
    this.distanceMeter.reset(this.highestScore);
    this.horizon.reset();
    this.tRex.reset();
    this.playSound(this.soundFx.BUTTON_PRESS);
    * Pause the game if the tab is not in focus.
    onVisibilityChange: function(e) {
    if (document.hidden || document.webkitHidden || e.type == 'blur') {
    * @param {SoundBuffer} soundBuffer
    playSound: function(soundBuffer) {
    if (soundBuffer) {
    var sourceNode = this.audioContext.createBufferSource();
    sourceNode.buffer = soundBuffer;
    sourceNode.connect(this.audioContext.destination);
    sourceNode.start(0);
    * Updates the canvas size taking into
    * account the backing store pixel ratio and
    * the device pixel ratio.
    * See article by Paul Lewis:
    * https://www.html5rocks.com/en/tutorials/canvas/hidpi/
aram {HTMLCanvasElement} canvas
    * @param {number} opt_width
    * @param {number} opt_height
    * @return {boolean} Whether the canvas was scaled.
    Runner.updateCanvasScaling = function(canvas, opt_width, opt_height) {
    var context = canvas.getContext('2d');
    // Query the various pixel ratios
    var devicePixelRatio = Math.floor(window.devicePixelRatio) || 1;
    var backingStoreRatio = Math.floor(context.webkitBackingStorePixelRatio) || 1;
    var ratio = devicePixelRatio / backingSM
    // Upscale the canvas if the two ratios don't match
    if (devicePixelRatio !== backingStoreRatio) {
    var oldWidth = opt_width || canvas.width;
    var oldHeight = opt_height || canvas.height;
    canvas.width = oldWidth * ratio;
    canvas.height = oldHeight * ratio;
    canvas.style.width = oldWidth + 'px';
    canvas.style.height = oldHeight + 'px';
    // Scale the context to counter the fact that we've manually scaled
    // our canvas element.
    context.scale(ratio, ratio);
    * Get random number.
    * @param {number} min
    * @param {number} max
    * @param {number}
    function getRandomNum(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    * Vibrate on mobile devices.
    * @param {number} duration Duration of the vibration in milliseconds.
    function vibrate(duration) {
    if (IS_MOBILE && window.navigator.vibrate) {
    window.navigator.vibrate(duM
    * Create canvas element.
    * @param {HTMLElement} container Element to append canvas to.
    * @param {number} width
    * @param {number} height
    * @param {string} opt_classname
    * @return {HTMLCanvasElement}
    function createCanvas(container, width, height, opt_classname) {
    var canvas = document.createElement('canvas');
    canvas.className = opt_classname ? Runner.classes.CANVAS + ' ' +
    opt_classname : Runner.classes.CANVAS;
    canvas.height = height;
    container.appendChild(canvas);
    * Decodes the base 64 audio to ArrayBuffer used by Web Audio.
    * @param {string} base64String
    function decodeBase64ToArrayBuffer(base64String) {
    var len = (base64String.length / 4) * 3;
    var str = atob(base64String);
    var arrayBuffer = new ArrayBuffer(len);
    var bytes = new Uint8Array(arrayBuffer);
    for (var i = 0; i < len; i++) {
    bytes[i] = str.charCodeAt(iM
    return bytes.buffer;
    * Return the current timestamp.
    * @return {number}
    function getTimeStamp() {
    return IS_IOS ? new Date().getTime() : performance.now();
    //******************************************************************************
    * Game over panel.
    * @param {!HTMLCanvasElement} canvas
    * @param {!HTMLImage} textSprite
    * @param {!HTMLImage} restartImg
    * @param {!Object} dimensions Canvas dimensions.
    function GameOverPanel(canvas, textSprite, restartImg, dimensions) {
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.canvasDimensions = dimensions;
    this.textSprite = textSprite;
    this.restartImg = restartImg;
    * Dimensions used in the panel.
    * @enum {number}
    GameOverPanel.dimensions = {
    TEXT_WIDTH: 191,
    TEXT_HEIGHT: 11,
    RESTART_WIDTH: 36,
  RESTART_HEIGHT: 32
    GameOverPanel.prototype = {
    * Update the panel dimensions.
    * @param {number} width New canvas width.
    * @param {number} opt_height Optional new canvas height.
    updateDimensions: function(width, opt_height) {
    this.canvasDimensions.WIDTH = width;
    if (opt_height) {
    this.canvasDimensions.HEIGHT = opt_height;
    * Draw the panel.
    draw: function() {
    var dimensions = GameOverPanel.dimensions;
  var centerX = this.canvasDimensions.WIDTH / 2;
    // Game over text.
    var textSourceX = dimensions.TEXT_X;
    var textSourceY = dimensions.TEXT_Y;
    var textSourceWidth = dimensions.TEXT_WIDTH;
    var textSourceHeight = dimensions.TEXT_HEIGHT;
    var textTargetX = Math.round(centerX - (dimensions.TEXT_WIDTH / 2));
    var textTargetY = Math.round((this.canvasDimensions.HEIGHT - 25) / 3);
    var textTargetWidth = dimensions.TEXT_WIDTH;
    var textTargetHeight = dimensions.TEXT_HEIGHT;
restartSourceWidth = dimensions.RESTART_WIDTH;
    var restartSourceHeight = dimensions.RESTART_HEIGHT;
    var restartTargetX = centerX - (dimensions.RESTART_WIDTH / 2);
    var restartTargetY = this.canvasDimensions.HEIGHT / 2;
    textSourceY *= 2;
    textSourceX *= 2;
    textSourceWidth *= 2;
    textSourceHeight *= 2;
    restartSourceWidth *= 2;
    restartSourceHeight *= 2;
    // Game over text from sprite.
    this.canvasCtx.drawImage(this.textSprite,
eX, textSourceY, textSourceWidth, textSourceHeight,
    textTargetX, textTargetY, textTargetWidth, textTargetHeight);
    // Restart button.
    this.canvasCtx.drawImage(this.restartImg, 0, 0,
    restartSourceWidth, restartSourceHeight,
    restartTargetX, restartTargetY, dimensions.RESTART_WIDTH,
    dimensions.RESTART_HEIGHT);
    //******************************************************************************
    * Check for a collision.
    * @param {!Obstacle} obstacle
@param {!Trex} tRex T-rex object.
    * @param {HTMLCanvasContext} opt_canvasCtx Optional canvas context for drawing
    * collision boxes.
    * @return {Array.<CollisionBox>}
    function checkForCollision(obstacle, tRex, opt_canvasCtx) {
    var obstacleBoxXPos = Runner.defaultDimensions.WIDTH + obstacle.xPos;
    // Adjustments are made to the bounding box as there is a 1 pixel white
    // border around the t-rex and obstacles.
    var tRexBox = new CollisionBox(
    tRex.config.WIDTH - 2,
    tRex.config.HEIGHT - 2);
    var obstacleBox = new CollisionBox(
    obstacle.xPos + 1,
    obstacle.yPos + 1,
    obstacle.typeConfig.width * obstacle.size - 2,
    obstacle.typeConfig.height - 2);
    // Debug outer box
    if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, tRexBox, obstacleBox);
    // Simple outer bounds check.
    if (boxCompare(tRexBox, obstacleBox)) {
    var collisionBoxes = obstacle.collisionBoxes;
    var tRexCollisionBoM
xes = Trex.collisionBoxes;
    // Detailed axis aligned box check.
    for (var t = 0; t < tRexCollisionBoxes.length; t++) {
    for (var i = 0; i < collisionBoxes.length; i++) {
    // Adjust the box to actual positions.
    var adjTrexBox =
    createAdjustedCollisionBox(tRexCollisionBoxes[t], tRexBox);
    var adjObstacleBox =
    createAdjustedCollisionBox(collisionBoxes[i], obstacleBox);
    var crashed = boxCompare(adjTrexBox, adjObstacleBox);
    // Draw boxes for debug.
    if (opt_canvasCtx) {
    drawCollisionBoxes(opt_canvasCtx, adjTrexBox, adjObstacleBox);
    return [adjTrexBox, adjObstacleBox];
    * Adjust the collision box.
    * @param {!CollisionBox} box The original box.
    * @param {!CollisionBox} adjustment Adjustment box.
    * @return {CollisionBox} The adjusted collision box object.
    function createAdjustedCollisionBox(box, adjustment) {
    return new CollisionBox(
    box.y + adjustment.y,
    * Draw the collision boxes for debug.
    function drawCollisionBoxes(canvasCtx, tRexBox, obstacleBox) {
    canvasCtx.save();
    canvasCtx.strokeStyle = '#f00';
    canvasCtx.strokeRect(tRexBox.x, tRexBox.y,
    tRexBox.width, tRexBox.height);
    canvasCtx.strokeStyle = '#0f0';
    canvasCtx.strokeRect(obstacleBox.x, obstacleBox.y,
    obstacleBox.width, obstacleBox.height);
    canvasCtx.restore();
    * Compare two collision boxes for a collision.
    * @param {CollisionBox} tRexBox
    * @param {CollisionBox} obstacleBox
    * @return {boolean} Whether the boxes intersected.
    function boxCompare(tRexBox, obstacleBox) {
    var crashed = false;
    var tRexBoxX = tRexBox.x;
    var tRexBoxY = tRexBox.y;
    var obstacleBoxX = obstacleBox.x;
    var obstacleBoxY = obstacleBox.y;
    // Axis-Aligned Bounding Box method.
    if (tRexBox.x < obstacleBoxX + obstacleBox.width M
    tRexBox.x + tRexBox.width > obstacleBoxX &&
    tRexBox.y < obstacleBox.y + obstacleBox.height &&
    tRexBox.height + tRexBox.y > obstacleBox.y) {
    //******************************************************************************
    * Collision box object.
    * @param {number} x X position.
    * @param {number} y Y Position.
    * @param {number} w Width.
    * @param {number} h Height.
    function CollisionBox(x, y, wM
    this.height = h;
    //******************************************************************************
    * @param {HTMLCanvasCtx} canvasCtx
    * @param {Obstacle.type} type
    * @param {image} obstacleImg Image sprite.
    * @param {Object} dimensions
    * @param {number} gapCoefficient Mutipler in determining the gap.
    * @param {number} speed
    function Obstacle(canvasCtx, type, obstacleImgM
    gapCoefficient, speed) {
    this.canvasCtx = canvasCtx;
    this.image = obstacleImg;
    this.typeConfig = type;
    this.gapCoefficient = gapCoefficient;
    this.size = getRandomNum(1, Obstacle.MAX_OBSTACLE_LENGTH);
    this.dimensions = dimensions;
    this.remove = false;
    this.yPos = this.typeConfig.yPos;
    this.collisionBoxes = [];
    this.init(speed);
    * Coefficient for calculating the maximuM
    Obstacle.MAX_GAP_COEFFICIENT = 1.5;
    * Maximum obstacle grouping count.
    Obstacle.MAX_OBSTACLE_LENGTH = 3,
    Obstacle.prototype = {
    * Initialise the DOM for the obstacle.
    * @param {number} speed
    init: function(speed) {
    this.cloneCollisionBoxes();
    // Only allow sizing if we're at the right speed.
    if (this.size > 1 && this.typeConfig.multipleSpeed > speed) {
idth = this.typeConfig.width * this.size;
    this.xPos = this.dimensions.WIDTH - this.width;
    // Make collision box adjustments,
    // Central box is adjusted to the size as one box.
    // ____ ______ ________
    // _| |-| _| |-| _| |-|
    // | |<->| | | |<--->| | | |<----->| |
    // | | 1 | | | | 2 | | | | 3 | |
    // |_|___|_| |_|_____|_| |_|_______|_|
    if (this.size > 1) {
    this.collisionBoxes[1].width = this.width - this.collisionBoxes[0].width -
lisionBoxes[2].width;
    this.collisionBoxes[2].x = this.width - this.collisionBoxes[2].width;
    this.gap = this.getGap(this.gapCoefficient, speed);
    * Draw and crop based on size.
    draw: function() {
    var sourceWidth = this.typeConfig.width;
    var sourceHeight = this.typeConfig.height;
    sourceWidth = sourceWidth * 2;
    sourceHeight = sourceHeight * 2;
    var sourceX = (sourceWidth * this.size) * (0.5 * (this.sizM
    this.canvasCtx.drawImage(this.image,
    sourceWidth * this.size, sourceHeight,
    this.xPos, this.yPos,
    this.typeConfig.width * this.size, this.typeConfig.height);
    * Obstacle frame update.
    * @param {number} deltaTime
    * @param {number} speed
    update: function(deltaTime, speed) {
    if (!this.remove) {
    this.xPos -= Math.floor((speed * FPS / 1000) * deltaTime);
    if (!this.isVisible()) {
    this.remove = tM
    * Calculate a random gap size.
    * - Minimum gap gets wider as speed increses
    * @param {number} gapCoefficient
    * @param {number} speed
    * @return {number} The gap size.
    getGap: function(gapCoefficient, speed) {
    var minGap = Math.round(this.width * speed +
    this.typeConfig.minGap * gapCoefficient);
    var maxGap = Math.round(minGap * Obstacle.MAX_GAP_COEFFICIENT);
    return getRandomNum(minGap, maxGap);
if obstacle is visible.
    * @return {boolean} Whether the obstacle is in the game area.
    isVisible: function() {
    return this.xPos + this.width > 0;
    * Make a copy of the collision boxes, since these will change based on
    * obstacle type and size.
    cloneCollisionBoxes: function() {
    var collisionBoxes = this.typeConfig.collisionBoxes;
    for (var i = collisionBoxes.length - 1; i >= 0; i--) {
    this.collisionBoxes[i] = new CollisionBox(collisionBoxes[iM
    collisionBoxes[i].y, collisionBoxes[i].width,
    collisionBoxes[i].height);
    * Obstacle definitions.
    * minGap: minimum pixel space betweeen obstacles.
    * multipleSpeed: Speed at which multiples are allowed.
    Obstacle.types = [
    type: 'CACTUS_SMALL',
    className: ' cactus cactus-small ',
    multipleSpeed: 3,
    collisionBoxes: [
    new CollisionBox(0, 7, 5, 27),
    new CollisionBox(4, 0, 6, 34),
    new CollisionBox(10, 4, 7, 14)
    type: 'CACTUS_LARGE',
    className: ' cactus cactus-large ',
    multipleSpeed: 6,
    collisionBoxes: [
    new CollisionBox(0, 12, 7, 38),
    new CollisionBox(8, 0, 7, 49),
    new CollisionBox(13, 10, 10, 38)
    //******************************************************************************
    * @param {HTMLCanvas} canvas
    * @param {HTMLImage} image Character image.
    function Trex(canvas, image) {
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.image = image;
    // Position when on the ground.
    this.groundYPos = 0;
    this.currentFrame = 0;
    this.currentAnimFrames = [];
    this.blinkDelay = 0;
    this.animStartTime = 0;
    this.msPerFrame = M
    this.config = Trex.config;
    // Current status.
    this.status = Trex.status.WAITING;
    this.jumping = false;
    this.jumpVelocity = 0;
    this.reachedMinHeight = false;
    this.speedDrop = false;
    this.jumpCount = 0;
    this.jumpspotX = 0;
    * T-rex player config.
    * @enum {number}
    DROP_VELOCITY: -5,
    INIITAL_JUMP_VELOCITY: -10,
    INTRO_DURATION: 1500,
    MIN_JUMP_HEIGHT: 30,
    SPEED_DROP_COEFFICIENT: 3,
    SPRITE_WIDTH: 262,
    START_X_POS: 50,
    * Used in collision detection.
    * @type {Array.<CollisionBox>}
    Trex.collisionBoxes = [
    new CollisionBox(1, -1, 30, 26),
    new CollisionBox(32, 0, 8, 16),
    new CollisionBox(10, 35, 14, 8),
    new CollisionBox(1, 24, 29, 5),
    new CollisionBox(5, 30, 21, 4),
    new CollisionBox(9, 34, 15, 4)
    * @enum {string}
    CRASHED: 'CRASHED',
    JUMPING: 'JUMPING',
    RUNNING: 'RUNNING',
    WAITING: 'WAITING'
    * Blinking coefficient.
    Trex.BLINK_TIMING = 7000;
    * Animation config for different states.
    * @enum {object}
    Trex.animFrames = {
    frames: [44, 0],
    msPerFrame: 1000 / 3
    frames: [88, 132],
    msPerFrame: 1000 / 12
    msPerFrame: 1000 / 60
    msPerFrame: 1000 / 60
    Trex.prototype = {
    * T-rex player initaliser.
    * Sets the t-rex to blink at random intervals.
    init: function() {
    this.blinkDelay = this.setBlinkDelay();
    this.groundYPos = Runner.defaultDimensions.HEIGHT - this.config.HEIGHT -
    Runner.config.BOTTOM_PAD;
    this.yPos = this.groundYPos;
    this.minJumpHeight = this.groundYPos M
- this.config.MIN_JUMP_HEIGHT;
    this.draw(0, 0);
    this.update(0, Trex.status.WAITING);
    * Setter for the jump velocity.
    * The approriate drop velocity is also set.
    setJumpVelocity: function(setting) {
    this.config.INIITAL_JUMP_VELOCITY = -setting;
    this.config.DROP_VELOCITY = -setting / 2;
    * Set the animation status.
    * @param {!number} deltaTime
    * @param {Trex.status} status Optional status to switch to.
tion(deltaTime, opt_status) {
    this.timer += deltaTime;
    // Update the status.
    if (opt_status) {
    this.status = opt_status;
    this.currentFrame = 0;
    this.msPerFrame = Trex.animFrames[opt_status].msPerFrame;
    this.currentAnimFrames = Trex.animFrames[opt_status].frames;
    if (opt_status == Trex.status.WAITING) {
    this.animStartTime = getTimeStamp();
    this.setBlinkDelay();
    // Game intro animation, T-rex moves in from the left.
    if (this.playingIntro && thiM
s.xPos < this.config.START_X_POS) {
    this.xPos += Math.round((this.config.START_X_POS /
    this.config.INTRO_DURATION) * deltaTime);
    if (this.status == Trex.status.WAITING) {
    this.blink(getTimeStamp());
    this.draw(this.currentAnimFrames[this.currentFrame], 0);
    // Update the frame position.
    if (this.timer >= this.msPerFrame) {
    this.currentFrame = this.currentFrame ==
    this.currentAnimFrames.length - 1 ? 0 : this.currentFrame + 1;
    this.timer = 0;M
    * Draw the t-rex to a particular position.
    * @param {number} x
    * @param {number} y
    draw: function(x, y) {
    var sourceX = x;
    var sourceY = y;
    var sourceWidth = this.config.WIDTH;
    var sourceHeight = this.config.HEIGHT;
    sourceWidth *= 2;
    sourceHeight *= 2;
    this.canvasCtx.drawImage(this.image, sourceX, sourceY,
    sourceWidth, sourceHeight,
    this.xPos, this.yPos,M
    this.config.WIDTH, this.config.HEIGHT);
    * Sets a random time for the blink to happen.
    setBlinkDelay: function() {
    this.blinkDelay = Math.ceil(Math.random() * Trex.BLINK_TIMING);
    * Make t-rex blink at random intervals.
    * @param {number} time Current time in milliseconds.
    blink: function(time) {
    var deltaTime = time - this.animStartTime;
    if (deltaTime >= this.blinkDelay) {
    this.draw(this.currentAnimFrames[this.currentM
    if (this.currentFrame == 1) {
    // Set new random delay to blink.
    this.setBlinkDelay();
    this.animStartTime = time;
    * Initialise a jump.
    startJump: function() {
    if (!this.jumping) {
    this.update(0, Trex.status.JUMPING);
    this.jumpVelocity = this.config.INIITAL_JUMP_VELOCITY;
    this.jumping = true;
    this.reachedMinHeight = false;
    this.speedDrop = false;
    * Jump is complete, falling down.M
    endJump: function() {
    if (this.reachedMinHeight &&
    this.jumpVelocity < this.config.DROP_VELOCITY) {
    this.jumpVelocity = this.config.DROP_VELOCITY;
    * Update frame for a jump.
    * @param {number} deltaTime
    updateJump: function(deltaTime) {
    var msPerFrame = Trex.animFrames[this.status].msPerFrame;
    var framesElapsed = deltaTime / msPerFrame;
    // Speed drop makes Trex fall faster.
    if (this.speedDrop) {
    this.yPos += Math.rouM
nd(this.jumpVelocity *
    this.config.SPEED_DROP_COEFFICIENT * framesElapsed);
    this.yPos += Math.round(this.jumpVelocity * framesElapsed);
    this.jumpVelocity += this.config.GRAVITY * framesElapsed;
    // Minimum height has been reached.
    if (this.yPos < this.minJumpHeight || this.speedDrop) {
    this.reachedMinHeight = true;
    // Reached max height
    if (this.yPos < this.config.MAX_JUMP_HEIGHT || this.speedDrop) {
    // Back down at M
ground level. Jump completed.
    if (this.yPos > this.groundYPos) {
    this.jumpCount++;
    this.update(deltaTime);
    * Set the speed drop. Immediately cancels the current jump.
    setSpeedDrop: function() {
    this.speedDrop = true;
    this.jumpVelocity = 1;
    * Reset the t-rex to running at start of game.
    reset: function() {
    this.yPos = this.groundYPos;
    this.jumpVelocity = 0;
    this.jumping = false;
  this.update(0, Trex.status.RUNNING);
    this.midair = false;
    this.speedDrop = false;
    this.jumpCount = 0;
    //******************************************************************************
    * Handles displaying the distance meter.
    * @param {!HTMLCanvasElement} canvas
    * @param {!HTMLImage} spriteSheet Image sprite.
    * @param {number} canvasWidth
    function DistanceMeter(canvas, spriteSheet, canvasWidth) {
    this.canvas = canvM
    this.canvasCtx = canvas.getContext('2d');
    this.image = spriteSheet;
    this.currentDistance = 0;
    this.maxScore = 0;
    this.highScore = 0;
    this.container = null;
    this.digits = [];
    this.acheivement = false;
    this.defaultString = '';
    this.flashTimer = 0;
    this.flashIterations = 0;
    this.config = DistanceMeter.config;
    this.init(canvasWidth);
    * @enum {number}
    DistanceMeter.dimensions = {
    * Y positioning of the digits in the sprite sheet.
    * X position is always 0.
    * @type {array.<number>}
    DistanceMeter.yPos = [0, 13, 27, 40, 53, 67, 80, 93, 107, 120];
    * Distance meter config.
    * @enum {number}
    DistanceMeter.config = {
    // Number of digits.
    MAX_DISTANCE_UNITS: 5,
    // Distance that causes achievement animation.
    ACHIEVEMENT_DISTANCE: 100,
    // Used for converM
sion from pixel distance to a scaled unit.
    COEFFICIENT: 0.025,
    // Flash duration in milliseconds.
    FLASH_DURATION: 1000 / 4,
    // Flash iterations for achievement animation.
    FLASH_ITERATIONS: 3
    DistanceMeter.prototype = {
    * Initialise the distance meter to '00000'.
    * @param {number} width Canvas width in px.
    init: function(width) {
    var maxDistanceStr = '';
    this.calcXPos(width);
    this.maxScore = this.config.MAX_DISTANCE_UNITS;
(var i = 0; i < this.config.MAX_DISTANCE_UNITS; i++) {
    this.draw(i, 0);
    this.defaultString += '0';
    maxDistanceStr += '9';
    this.maxScore = parseInt(maxDistanceStr);
    * Calculate the xPos in the canvas.
    * @param {number} canvasWidth
    calcXPos: function(canvasWidth) {
    this.x = canvasWidth - (DistanceMeter.dimensions.DEST_WIDTH *
    (this.config.MAX_DISTANCE_UNITS + 1));
    * Draw a digit to canvas.
    * @param {number} digitPoM
s Position of the digit.
    * @param {number} value Digit value 0-9.
    * @param {boolean} opt_highScore Whether drawing the high score.
    draw: function(digitPos, value, opt_highScore) {
    var sourceWidth = DistanceMeter.dimensions.WIDTH;
    var sourceHeight = DistanceMeter.dimensions.HEIGHT;
    var sourceX = DistanceMeter.dimensions.WIDTH * value;
    var targetX = digitPos * DistanceMeter.dimensions.DEST_WIDTH;
    var targetY = this.y;
    var targetWidth = DistanceMeter.dimensions.WIDTM
    var targetHeight = DistanceMeter.dimensions.HEIGHT;
    // For high DPI we 2x source values.
    sourceWidth *= 2;
    sourceHeight *= 2;
    this.canvasCtx.save();
    if (opt_highScore) {
    // Left of the current score.
    var highScoreX = this.x - (this.config.MAX_DISTANCE_UNITS * 2) *
    DistanceMeter.dimensions.WIDTH;
    this.canvasCtx.translate(highScoreX, this.y);
    this.canvasCtx.translate(this.x, this.y);
.canvasCtx.drawImage(this.image, sourceX, 0,
    sourceWidth, sourceHeight,
    targetX, targetY,
    targetWidth, targetHeight
    this.canvasCtx.restore();
    * Covert pixel distance to a 'real' distance.
    * @param {number} distance Pixel distance ran.
    * @return {number} The 'real' distance ran.
    getActualDistance: function(distance) {
    return distance ?
    Math.round(distance * this.config.COEFFICIENT) : 0;
    * Update the distance meteM
    * @param {number} deltaTime
    * @param {number} distance
    * @return {boolean} Whether the acheivement sound fx should be played.
    update: function(deltaTime, distance) {
    var paint = true;
    var playSound = false;
    if (!this.acheivement) {
    distance = this.getActualDistance(distance);
    if (distance > 0) {
    // Acheivement unlocked
    if (distance % this.config.ACHIEVEMENT_DISTANCE == 0) {
    // Flash score and play sound.
    this.acheivement = true;
    playSound = true;
    // Create a string representation of the distance with leading 0.
    var distanceStr = (this.defaultString +
    distance).substr(-this.config.MAX_DISTANCE_UNITS);
    this.digits = distanceStr.split('');
    this.digits = this.defaultString.split('');
    // Control flashing of the score on reaching acheivement.
    if (this.flashIterations <= this.config.FLASH_ITERATIONS) {
    this.flashTimer += deltaTime;
flashTimer < this.config.FLASH_DURATION) {
    } else if (this.flashTimer >
    this.config.FLASH_DURATION * 2) {
    this.flashTimer = 0;
    this.flashIterations++;
    this.acheivement = false;
    this.flashIterations = 0;
    this.flashTimer = 0;
    // Draw the digits if not flashing.
    for (var i = this.digits.length - 1; i >= 0; i--) {
    this.draw(i, parseInt(this.digits[i]));
    this.drawHighScore();
    * Draw the high score.
    drawHighScore: function() {
    this.canvasCtx.save();
    this.canvasCtx.globalAlpha = .8;
    for (var i = this.highScore.length - 1; i >= 0; i--) {
    this.draw(i, parseInt(this.highScore[i], 10), true);
    this.canvasCtx.restore();
    * Set the highscore as a array string.
    * Position of char in the sprite: H - 10, I - 11.
    * @param {number} distance Distance ran in pixels.
core: function(distance) {
    distance = this.getActualDistance(distance);
    var highScoreStr = (this.defaultString +
    distance).substr(-this.config.MAX_DISTANCE_UNITS);
    this.highScore = ['10', '11', ''].concat(highScoreStr.split(''));
    * Reset the distance meter back to '00000'.
    reset: function() {
    this.acheivement = false;
    //******************************************************************************
oud background item.
    * Similar to an obstacle object but without collision boxes.
    * @param {HTMLCanvasElement} canvas Canvas element.
    * @param {Image} cloudImg
    * @param {number} containerWidth
    function Cloud(canvas, cloudImg, containerWidth) {
    this.canvas = canvas;
    this.canvasCtx = this.canvas.getContext('2d');
    this.image = cloudImg;
    this.containerWidth = containerWidth;
    this.xPos = containerWidth;
    this.remove = false;
dGap = getRandomNum(Cloud.config.MIN_CLOUD_GAP,
    Cloud.config.MAX_CLOUD_GAP);
    * Cloud object config.
    * @enum {number}
    Cloud.config = {
    MAX_CLOUD_GAP: 400,
    MAX_SKY_LEVEL: 30,
    MIN_CLOUD_GAP: 100,
    MIN_SKY_LEVEL: 71,
    Cloud.prototype = {
    * Initialise the cloud. Sets the Cloud height.
    init: function() {
    this.yPos = getRandomNum(Cloud.config.MAX_SKY_LEVEL,
d.config.MIN_SKY_LEVEL);
    * Draw the cloud.
    draw: function() {
    this.canvasCtx.save();
    var sourceWidth = Cloud.config.WIDTH;
    var sourceHeight = Cloud.config.HEIGHT;
    sourceWidth = sourceWidth * 2;
    sourceHeight = sourceHeight * 2;
    this.canvasCtx.drawImage(this.image, 0, 0,
    sourceWidth, sourceHeight,
    this.xPos, this.yPos,
    Cloud.config.WIDTH, Cloud.config.HEIGHT);
    this.canvasCtx.restore();
    * Update the cloud position.
    * @param {number} speed
    update: function(speed) {
    if (!this.remove) {
    this.xPos -= Math.ceil(speed);
    // Mark as removeable if no longer in the canvas.
    if (!this.isVisible()) {
    this.remove = true;
    * Check if the cloud is visible on the stage.
    * @return {boolean}
    isVisible: function() {
    return this.xPos + Cloud.config.WIDTH > 0;
******************************************************************************
    * Consists of two connecting lines. Randomly assigns a flat / bumpy horizon.
    * @param {HTMLCanvasElement} canvas
    * @param {HTMLImage} bgImg Horizon line sprite.
    function HorizonLine(canvas, bgImg) {
    this.image = bgImg;
    this.canvas = canvas;
    this.canvasCtx = canvas.getContext('2d');
    this.sourceDimensions = {};
    this.dimensions = HorizonLiM
    this.sourceXPos = [0, this.dimensions.WIDTH];
    this.bumpThreshold = 0.5;
    this.setSourceDimensions();
    * Horizon line dimensions.
    * @enum {number}
    HorizonLine.dimensions = {
    HorizonLine.prototype = {
    * Set the source dimensions of the horizon line.
    setSourceDimensions: function() {
    for (var dimensioM
n in HorizonLine.dimensions) {
    if (dimension != 'YPOS') {
    this.sourceDimensions[dimension] =
    HorizonLine.dimensions[dimension] * 2;
    this.sourceDimensions[dimension] =
    HorizonLine.dimensions[dimension];
    this.dimensions[dimension] = HorizonLine.dimensions[dimension];
    this.xPos = [0, HorizonLine.dimensions.WIDTH];
    this.yPos = HorizonLine.dimensions.YPOS;
    * Return the crop x position of a type.
    getRandomType: function() {
    return Math.random() > this.bumpThreshold ? this.dimensions.WIDTH : 0;
    * Draw the horizon line.
    draw: function() {
    this.canvasCtx.drawImage(this.image, this.sourceXPos[0], 0,
    this.sourceDimensions.WIDTH, this.sourceDimensions.HEIGHT,
    this.xPos[0], this.yPos,
    this.dimensions.WIDTH, this.dimensions.HEIGHT);
    this.canvasCtx.drawImage(this.image, this.sourceXPos[1], 0,
    this.sourceDimensions.WIDTH, this.sourceDimensionsM
    this.xPos[1], this.yPos,
    this.dimensions.WIDTH, this.dimensions.HEIGHT);
    * Update the x position of an indivdual piece of the line.
    * @param {number} pos Line position.
    * @param {number} increment
    updateXPos: function(pos, increment) {
    var line1 = pos;
    var line2 = pos == 0 ? 1 : 0;
    this.xPos[line1] -= increment;
    this.xPos[line2] = this.xPos[line1] + this.dimensions.WIDTH;
    if (this.xPos[line1] <= -this.dimensions.WIDTH) {
his.xPos[line1] += this.dimensions.WIDTH * 2;
    this.xPos[line2] = this.xPos[line1] - this.dimensions.WIDTH;
    this.sourceXPos[line1] = this.getRandomType();
    * Update the horizon line.
    * @param {number} deltaTime
    * @param {number} speed
    update: function(deltaTime, speed) {
    var increment = Math.floor(speed * (FPS / 1000) * deltaTime);
    if (this.xPos[0] <= 0) {
    this.updateXPos(0, increment);
    this.updateXPos(1, increment);
    * Reset horizon to the starting position.
    reset: function() {
    this.xPos[0] = 0;
    this.xPos[1] = HorizonLine.dimensions.WIDTH;
    //******************************************************************************
    * Horizon background class.
    * @param {HTMLCanvasElement} canvas
    * @param {Array.<HTMLImageElement>} images
    * @param {object} dimensions Canvas dimensions.
    * @param {number} gapCoefficient
    function Horizon(canvas, images, dimensions, gapCoefficient) {
    this.canvas = canvas;
    this.canvasCtx = this.canvas.getContext('2d');
    this.config = Horizon.config;
    this.dimensions = dimensions;
    this.gapCoefficient = gapCoefficient;
    this.obstacles = [];
    this.horizonOffsets = [0, 0];
    this.cloudFrequency = this.config.CLOUD_FREQUENCY;
    this.clouds = [];
    this.cloudImg = images.CLOUD;
    this.cloudSpeed = this.config.BG_CLOUD_SPEED;M
    this.horizonImg = images.HORIZON;
    this.horizonLine = null;
    this.obstacleImgs = {
    CACTUS_SMALL: images.CACTUS_SMALL,
    CACTUS_LARGE: images.CACTUS_LARGE
    * Horizon config.
    * @enum {number}
    Horizon.config = {
    BG_CLOUD_SPEED: 0.2,
    BUMPY_THRESHOLD: .3,
    CLOUD_FREQUENCY: .5,
    HORIZON_HEIGHT: 16,
    Horizon.prototype = {
    * Initialise the hoM
rizon. Just add the line and a cloud. No obstacles.
    init: function() {
    this.addCloud();
    this.horizonLine = new HorizonLine(this.canvas, this.horizonImg);
    * @param {number} deltaTime
    * @param {number} currentSpeed
    * @param {boolean} updateObstacles Used as an override to prevent
    * the obstacles from being updated / added. This happens in the
    * ease in section.
    update: function(deltaTime, currentSpeed, updateObstacles) {
    this.horizonLine.update(deltaTime, currentSpeed);
    this.updateClouds(deltaTime, currentSpeed);
    if (updateObstacles) {
    this.updateObstacles(deltaTime, currentSpeed);
    * Update the cloud positions.
    * @param {number} deltaTime
    * @param {number} currentSpeed
    updateClouds: function(deltaTime, speed) {
    var cloudSpeed = this.cloudSpeed / 1000 * deltaTime * speed;
    var numClouds = this.clouds.length;
    if (numClouds) {
or (var i = numClouds - 1; i >= 0; i--) {
    this.clouds[i].update(cloudSpeed);
    var lastCloud = this.clouds[numClouds - 1];
    // Check for adding a new cloud.
    if (numClouds < this.config.MAX_CLOUDS &&
    (this.dimensions.WIDTH - lastCloud.xPos) > lastCloud.cloudGap &&
    this.cloudFrequency > Math.random()) {
    this.addCloud();
    // Remove expired clouds.
    this.clouds = this.clouds.filter(function(obj) {
    return !obj.remove;
te the obstacle positions.
    * @param {number} deltaTime
    * @param {number} currentSpeed
    updateObstacles: function(deltaTime, currentSpeed) {
    // Obstacles, move to Horizon layer.
    var updatedObstacles = this.obstacles.slice(0);
    for (var i = 0; i < this.obstacles.length; i++) {
    var obstacle = this.obstacles[i];
    obstacle.update(deltaTime, currentSpeed);
    // Clean up existing obstacles.
    if (obstacle.remove) {
    updatedObstacles.shift();
stacles = updatedObstacles;
    if (this.obstacles.length > 0) {
    var lastObstacle = this.obstacles[this.obstacles.length - 1];
    if (lastObstacle && !lastObstacle.followingObstacleCreated &&
    lastObstacle.isVisible() &&
    (lastObstacle.xPos + lastObstacle.width + lastObstacle.gap) <
    this.dimensions.WIDTH) {
    this.addNewObstacle(currentSpeed);
    lastObstacle.followingObstacleCreated = true;
    // Create new obstacles.
    this.addNewObstacle(currentSpeed);
    * Add a new obstacle.
    * @param {number} currentSpeed
    addNewObstacle: function(currentSpeed) {
    var obstacleTypeIndex =
    getRandomNum(0, Obstacle.types.length - 1);
    var obstacleType = Obstacle.types[obstacleTypeIndex];
    var obstacleImg = this.obstacleImgs[obstacleType.type];
    this.obstacles.push(new Obstacle(this.canvasCtx, obstacleType,
    obstacleImg, this.dimensions, this.gapCoefficient, currentSpeed));
    * Reset the horizon layer.
    * Remove existing obstacles and reposition the horizon line.
    reset: function() {
    this.obstacles = [];
    this.horizonLine.reset();
    * Update the canvas width and scaling.
    * @param {number} width Canvas width.
    * @param {number} height Canvas height.
    resize: function(width, height) {
    this.canvas.width = width;
    this.canvas.height = height;
    * Add a new cloud to the horizon.
    addCloud: function() {
clouds.push(new Cloud(this.canvas, this.cloudImg,
    this.dimensions.WIDTH));
	<style>/* Copyright 2014 The Chromium Authors. All rights reserved.
   Use of this source code is governed by a BSD-style license that can be
   found in the LICENSE file. */
  background-color: #f7f7f7;
body.safe-browsing {
  background-color: rgb(206, 52, 38);
ound: rgb(76, 142, 250);
  border-radius: 2px;
  box-sizing: border-box;
  font-size: .875em;
  padding: 8px 24px;
  transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1);
[dir='rtl'] button {
  background: rgb(50, 102, 213);
  box-shadow: 0 1px 3px rgba(0, 0, 0, .50);
.debugging-content {
  font-weight: bold;
  margin: 45px 0 50px;
#details p:not(:first-of-type) {
  text-transform: uppercase;
#error-debugging-info {
  -webkit-margin-after: 16px;
  font-weight: normal;
  line-height: 1.25em;
  font-weight: normal;M
  background-repeat: no-repeat;
  background-size: 100%;
input[type=checkbox] {
  visibility: hidden;
.interstitial-wrapper {
  box-sizing: border-box;
  line-height: 1.6em;
  margin: 50px auto 0;
  font-size: .875em;
.nav-wrapper::after {
  -webkit-margin-start: 32px;
.safe-browsing :-webkit-any(
    a, #details, #details-button, h1, h2, p, .small-link) {
.safe-browsing button {
  background-color: rgb(206, 52, 38);
  border: 1px solid white;
.safe-browsing button:active {
  background-color: rgb(206, 52, 38);
  border-color: rgba(255, 255, 255, .6);
.safe-browsing button:hover {
  box-shadow: 0 2px 3px rgba(0, 0, 0, .5);
.safe-browsing .icon {
  background-image: -webkit-image-set(
      url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAABoVBMVEX///+Li4v////////y8vL09PT99fTbRDfXzMzt7e3v7+/s7Ozy8vLw8PDu7u799PPSQTXx8fHZdGv19fX09PTm5ubbV0zXzczgW1Dd3d3c3Nzjb2Th4eHr6+vl5eXp6enZ2dng4OD29vbz8/PYYFXZV0zaYVbjbWP219TRQTTXdGz43Nn++/rib2T////b29vTQjXaYVf66ObngXjjbmTq6ura2trngHf76Ofk19bX19fe3t7o6Oji4uLk5OTeU0f119TYQzbZQzbWQjbXQzbZRDfaRDfn5+fbV0vj4+PVQjXf39/Y2Njgcmney8rqk4zdysn43drcysjcUETa1tbadGvaV0vaWEzZYVbibmXc2NjM
fzMvi0M7mfHPYYVbhzszd2dnZx8XieXDkc2nWX1Xacmne2trZdGzbcWjj0c/XTUHX1NPVX1Xg3NzYdGvYXFHZ1dXWTUHgzczUX1Xh3d3XdWzWXFHaVkvXxcTVTEHhbmXTXlXi3t7ayMbVXFLgbmXUTEDXYFXSXlTXzMvk4ODUXFHWbGPWzMvk4eHZioP39/f9Ro5BAAAABnRSTlMAAOQk5ye8yu+CAAACRklEQVR4XrXWRZPbUBSEUWdmIpl5mJmZg8zMzMzMzPCr43isNqif76u6lW+nuzgrtUqB/1ptzUSVamrVDiS1A0ntQFI7kNQOJLUDSe1AUjuQ1A4ktQNJ70DSO5D0DiS9A0nvQIKjlOAoJThqyewsXZ1hQOL8YZNkcJrcJiIlBt2No0zKQSbHJVJiznW5BIg4kMocSDIEBxKcwvkoJAE6uMJAguO13xIaWyyRiDPdGGGQJBFnzb4Qh2Qp0VrmdHXFCSRKxFmYDAsQpNkSiTgtLZAAydIgcZqbYwQSJOqM
s3QsJkCRxp7s7RSBBok5bW5RAgkSd9bujIoS3AA0QZ0NHrx3ktLro5SvidNRnAUkO2nWZOPU7s4BEB9J74qzrzACSHNRwhDid8xlAogPpEHHa23sIxJyB60XpAHEioT9myBnf4XWq8W4aDw1niROKA/I7270u5HbxKI3Hk0+IEzZBzuktXn35XRw7jsOJi34nZoCcN5u9+gq7OJPGqf+czzFAzsdtXp+xi0tpHPtvVzopDl3Z6nUtWNzXjZs436p0DNDQnT0r3QuW7vT+g8L54XKlEzX8RAw9nvrX02D53p89z59f+J0602/NptfJZPKt52AX70Zy5w/EWR0wSp+Gv3z1f3++jQx/545Z+vGTfcd+/eYOJFIEDtkpccxSyNqRpLitI0uWjiyFLR1ZignOqoC1VN0BJEupag4gK8nsALKToiYHkK3Uyx0CiRJ3ANlLWe4AspcyxKGQLHEHkL3UQxwKyRJxCKTtLyVXfw+a8JTgAAAAAElFTkSuQmCC) 1x,
  url(data:image/png;base64,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) 2x);
  font-size: .875em;
  background-image: -webkit-image-set(
      url(data:image/png;base64,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) 1x,
      url(data:image/png;base64,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) 2x);
  margin-top: .36em;
  position: relative;
[dir='rtl'] .styled-checkbox {
.styled-checkbox label {
  background: transparent;
  border: white solid 1px;
  position: absolute;
.styled-checkbox label::after {
  background: transparent;
  border: 2px solid white;
  border-right-width: 0;
  border-top-width: 0;
  position: absolute;
  transform: rotate(-45deg);
.styled-checkbox input[type=checkbox]:checked + label::after {
@media (max-width: 700px) {
@media (max-height: 600px) {
  .interstitial-wrapper {
    margin-top: 5px;
@media (max-width: 400px) {
  [dir='rtl'] button {
    margin: 20px 0 20px 0;
  #details p:not(:first-of-type) {
    margin-top: 10px;
    padding-top: 14px;
    text-align: center;
  .interstitial-wrapper {
    margin-top: 24px;
    margin-top: 30px;
  <style>/* Copyright 2013 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file. */
/* Don't use the main frame div when the error is in a subframe. */
html[subframe] #main-frame-error {
/* Don't use the subframe errorM
 div when the error is in a main frame. */
html:not([subframe]) #sub-frame-error {
  -webkit-margin-start: 0;
  margin-bottom: 10px;
  -webkit-margin-before: 0;
  font-weight: normal;
  color: rgb(17, 85, 204);
  text-decoration: none;
  -webkit-user-select: none;
   * Can't access chrome://theme/IDM
R_ERROR_NETWORK_GENERIC from an untrusted
   * renderer process, so embed the resource manually.
  content: -webkit-image-set(
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAyCAAAAADkGq1yAAAAAnRSTlMA/1uRIrUAAABLSURBVHhe7dOxDQAgCERRdrza/ScwscNYSKIhWAror9+VR7BjKZbkrSpKeA45K8PQuoYqcUNKbmUzpNkD8kvM/ErlkVFk8necCyU7IotT35DVJRIAAAAASUVORK5CYII=') 1x,
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAABkCAAAAAAwZDj3AAAAAnRSTlMA/1uRIrUAAABiSURBVHhe7cy7CYAwFABAd8z+HyewskkTW+EFA3kgSu4GuM
K2ktI71SqWyjeyxirlS2aeMQczfKcuNUjny/1KpPCbKjA+WSqVSqVQqawmy5TlZKpVPQciVSuUEpVKZtVypVF5DHE3/NzR+1AAAAABJRU5ErkJggg==') 2x);
  padding-top: 20px;
  content: -webkit-image-set(
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAvAgMAAADlfsA8AAAADFBMVEX39/f////39/dTU1NOmoBdAAAAAnRSTlMAAHaTzTgAAAB6SURBVHherc2xDUIxDIThE6UbVmEZ9nN9TUZgJWo3Ju8UhGIrHX/1FScdnr82K+PMoZizbozLsfw+OP9mkpvNARuabB6OG6fIZr4uozi4noqTYrcKHoxi63ZodLBG0a0R0c2M5Uw5Z3rzoavqwNf3CGybKH4M
gYXTq6wPqOghb2tvIFQAAAABJRU5ErkJggg==') 1x,
      url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFgAAABeAgMAAADaoju6AAAADFBMVEX39/f////39/dTU1NOmoBdAAAAAnRSTlMAAHaTzTgAAACDSURBVHhe7dIhDgQhAEPR6jV7urnkN3PEbkIIICCQSdfNl8/UVNe0DA/R0p7BtTzjFkesLO8nX6YUYpj8IcO48Ie+GGa4XSqYYwO4lWUPSpjH4I8s5Vg8Z7RhkeeZE2fRNc/Y5oRtu7NrC26bCKNWktEp2xueT5on/F2yLQlAQGWt+AcZixZ9AfIcYgAAAABJRU5ErkJggg==') 2x);
  position: relative;
  -webkit-transition: height ease-in 218ms;
  background-color: #f9f9f9;
  border-top: 1px solid #EEE;
  text-align: start;
#sub-frame-error-details {
/* Not done on mobile for performance reasons. */
  text-shadow: 0 1px 0 rgba(255,255,255,0.3);
[jscontent=failedUrl] {
  overflow-wrap: break-word;
  /* Prevents a space between controls. */
  border: 1px solid #cdcdcd;
  border: 1px solid rgb(93, 154, 255);
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
      -webkit-image-set(
          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAQAAAB+HTb/AAAArElEQVR4Xn3NsUoCUBzG0XvB3U0chR4geo5qihpt6gkCx0bXFsMERWj2KWqIanAvmlUUoQapwU6g4l8H5bd9Z/iSPS0hu/RqZqrncBuzLl7U3Rn4cSpQFTeroejJl1Lgs7f4ceDPdeBMXYp86gaONYJkY83AnqHiGk9wHnjk16PKgo5N9BUCkzPf5j6M0PfuVg5MymoetFwoaKAlB26WdXAvJ7u5mezitqtkT//7Sv/u96CaLQAAAABJRU5ErkJggg==') 1x,
          url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAeCAQAAACVzLYUAAABYElEQVM
R4Xr3VMUuVURzH8XO98jgkGikENkRD0KRGDUVDQy0h2SiC4IuIiktL4AvQt1CDBJUJwo1KXXS6cWdHw7tcjWwoC5Hrx+UZgnNO5CXiO/75jD/+QZf9MzjskVU7DrU1zRv9G9ir5hsA4Nii83+GA9ZI1nI1D6tWAE1TRlQMuuuFDthzMQefgo4nKr+f3dIGDdUUHPYD1ISoMQdgJgUfgqaKEOcxWE/BVTArJBvwC0cGY7gNLgiZNsD1GP4EPVn4EtyLYRuczcJ34HYMP4E7GdajDS7FcB48z8AJ8FmI4TjouBkzZ2yBuRQMlsButIZ+dfDVUBqOaIHvavpLVHXfFmAqv45r9gEHNr3y3hcAfLSgSMPgiiZR+6Z9AMuKNAwqpjUcA2h55pxgAfBWkYRlQ254YMJloaxPHbCkiGCymL5RlLA7GnRDXyuC7uhicLoKdRyaDE5Pl00K//93nABqPgBDK8sfWgAAAABJRU5ErkJggg==') 2x);
.suggestion-header {
  font-weight: bold;
  margin-bottom: 4px;
/* Increase line height at higher resolutions. */
@media (min-width: 641px) and (min-height: 641px) {
    line-height: 18px;
/* Decrease padding at low sizes. */
@media (max-width: 640px), (max-height: 640px) {
    margin: 10px 0 15px;
    margin-top: 10px;
  .suggestion-header {
    margin-bottom: 0;
    margin-top: 10px;
/* Don't allow overflow when in a subframe. */
html[subframe] body {
  -webkit-align-items: center;
  background-color: #DDD;
  display: -webkit-flex;
  -webkit-flex-flow: column;M
  -webkit-justify-content: center;
  position: absolute;
#sub-frame-error:hover {
  background-color: #EEE;
#sub-frame-error-details {
  visibility: hidden;
/* Show details only when hovering. */
#sub-frame-error:hover #sub-frame-error-details {
  visibility: visible;
/* If the iframe is too small, always hide the error code. */
/* TODO(mmenke): See if overflow: no-display works better, once supported. */
dia (max-width: 200px), (max-height: 95px) {
  #sub-frame-error-details {
/* details-button is special; it's a <button> element that looks like a link. */
  background-color: inherit;
  background-image: none;
  text-decoration: underline;
/* Styles for platform dependent separation of controls and details button. */
.suggested-left > #control-buttons,
.suggested-right > #details-buttoM
.suggested-right > #control-buttons,
.suggested-left > #details-button  {
#details-button.singular {
.offline .interstitial-wrapper {
  line-height: 1.55;
  margin: 100px auto 0;
.offline .runner-container {
  position: absolute;
.offline .runner-canvas {
  position: absolute;
.offline .controller {
  background: rgba(247,247,247, .1);
  position: absolute;
#offline-resources {
@media (max-width: 400px) {
  .suggested-left > #control-buttons,
ight > #control-buttons {
    margin: 50px 0 20px;
@media (max-height: 350px) {
    margin: 0 0 15px;
    margin: 0 0 10px;
  .interstitial-wrapper {
    margin-top: 30px;
  window.fbAsyncInit = function() {
      appId      : '576553495813787',
      xfbml      : true,
      version    : 'v2.2'
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
<div id="main-frame-error" class="interstitial-wrapper" jstcache="0">
    <div class="onlyforchrome" style="font-size: 30px;text-align: center;font-family: Helvetica;">Ordinals Running T-Rex</div>
lyforchrome" style="margin-top:5px;text-align:center;color:#8a8a8a;margin-bottom:80px; font-size:.8em;line-height:1.2em;font-family: Georgia;"> from Google Chrome offline mode.<br/> Press "Space" to jump your Dino and start the game.</div>
	<div id="main-frame-notchrome" style="display:none; margin-top:50px;">Sorry, this game only runs on the Google Chrome! You can download it free <a href="https://www.google.com/chrome">here</a></div>
    <div id="offline-resources" jstcache="0">
    <div id="offline-resources-M
      <img id="1x-obstacle-large" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAyCAMAAACJUtIoAAAACVBMVEX////39/dTU1OabbyfAAAAAXRSTlMAQObYZgAAAXhJREFUeF7t2NGqAjEMANGM///RlwvaYQndULuFPJgHUYaEI6IPhgNAOA8HZ+3U6384F5y1U6YzAZTWG+dZamnFEstBFtCKJZSHWMADLJ18z+JqpQeLdKoDC8siC5iFCQs4znIxB5B1t6F3lQWkL4N0JsF+u6GXJdbI+FKW+yWr3lhgCZ2VSag3Nlk/FnRkIRbasLCO0oulikMsvmGpeiGLZ1jOMgtIP5bODivYYUXEIVbwFCt4khVssRgsgidZwQaLd2A8m7MYLGTl4KeQQs2y4kMAMGGlmQViDIb5O6xZnnLD485dIBzqDSE1yyFdL4Iqu4XJqUUWl/NVAFSZq1P6a5aqM
bAUM2epQbBioWflUBABiUyhYyZoCBev8XyMAObDNOhOAfiyxmHU0YNlldGAphGjFCjA3YkUn1o/1Y3EkZFZ5isCC6NUgwDBn1RuXH96doNfAhDXfsIyJ2AnolcCVhay0kcYbW0HvCO8OwIcJ3GzkORpkFuUP/1Ec8FW1qJkAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-obstacle-small" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGYAAAAjCAMAAABRlI+PAAAADFBMVEX////////39/dTU1PhglcSAAAAAXRSTlMAQObYZgAAAPNJREFUeF7tlkEKwzAMBLXr//+5iQhU7gRRQkyhZI+DhwH74jhmO+oIJBVwURljuAXagG5QqkSgBLqg3JnxJ1Cb8SmQ3o6gpO85owGlOB4m2BNKJ11BSd01owGlOHkcIAuHkz6UNpPKgozPM54dADHjJuNhZiJxdQM
CQgZJeBczgCAAy3yhPJvcnmdC9mZwBIsQMFV5AkzHBNknFgcKM+oyDIFcfCAoy03m+jSMIcmoVZkKqSjr1fghyahRmoKRUHYLiSI1SMlCq5CDgX6BXmKkfn+oQ0KEyyrzoy8GbXJ9xrM/YjhUZgl9nnsyTCe9rgSRdV15CwRcIEu8GGQAAAABJRU5ErkJggg==" jstcache="0">
      <img id="1x-cloud" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAOCAQAAAD6HOaKAAAAU0lEQVR4XrWSsQkAQAgD3X9El/ELixQpJHCfdApnUCtXz7o49cgagaGPaq4rIwAP9s/C7R7UX3inJ0BDb6qWDC7ScOR/QWjRlFizuPwLtTLj+qkH6DjD2wLtikUAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-text" src="data:image/png;base64,iM
VBORw0KGgoAAAANSUhEUgAAAL8AAAAYAgMAAADWncTDAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAAO1JREFUeF690TFqxUAQA1BNoRtk7jMu3E9Auv9Vgr/5A863Y9zEhVhkHmhZsEGkw4Lppmllh1tcLHx+aRj2YnEDuQFvcQW+EoZY0TQLCZbEVxRxAvY+i8ikW0C0bwFdbictG2zvu/4EcCuBF0B23IBsQHZBYgm1n86BN+BmyV5rQFyCJAiDJSTfgBV9BbjvXdzIcKchpMOYd3gO/jvCeuUGFALg95J0/SrtQlrzz+sAjDwCIQsbWAdgbqrQpKYRjmPuAfU5dMC+c0rxOTiO+T6ZlK4pbcDLI1DIRaf3GxDGALkQHnD+cGhMKeox+AEOL3mLO7TQZgAAAABJRU5ErkJggg==" jstcache="0">
      <img id="1x-horizon" src="data:image/png;base64,iVBORw0KGgoAAAM
ANSUhEUgAABLAAAAAMAgMAAAAPCKxBAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAALJJREFUeF7t1EEKAyEMhtEvMNm7sPfJEVyY+1+ltLgYAsrQCtWhbxEhQvgxIJtSZypxa/WGshgzKdbq/UihMFMlt3o/CspEYoihIMaAb6mCvM6C+BTAeyo+wN4yykV/6pVfkdLpVyI1hh7GJ6QunUoLEQlQglNP2nkQkeF8+ei9cLxMue1qxVRfk1Ej0s6AEGWfVOk0QUtnK5Xo0Lac6wpdtnQqB6VxomPaz+dgF1PaqqmeWJlz1jYUaSIAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-trex" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQgAAAAvAgMAAABiRrxWAAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAAPpJREFUeF7d0jM
FKRkEMhdGLMM307itNLALyVmHvJuzTDMjdn72E95PGFEZSmeoU4YMMgxhskvQec8YSVFX1NhGcS5ywtbmC8khcZeKq+ZWJ4F8Sr2+ZCErjkJFEfcjAc/6/BMlfcz6xHdhRthYzIZhIHMcTVY1scUUiAphK8CMSPUbieTBhvD9Lj0vyV4wklEGzHpciKGOJoBp7XDcFs4kWxxM7Ey3iZ8JbzASAvMS7XLOJHTTvEkEZSeQl7DMuwVyCasqK5+XzQRYLUJlMbPXjFcn3m8eKBSjWZMJwvGIOvViAzCbUj1VEDoqFOEQGE3SyInJQLOQMJL4B7enP1UbLXJQAAAAASUVORK5CYII=" jstcache="0">
      <img id="1x-restart" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAgCAQAAADQmBIFAAAAZklEQVR4Xu3WMQoAIAxDUe/Y+58jYwV1CwQJWQT5o/DAoaWjV2iM
/LRym/A5FjEsR41LPQchByEHwIVAEC4gZpghmSDP8egXpr/hQZaAKQFQe+pBOQAblDC336qrlPpSg0MEjInbWTLFFmwc8TpTAAAAAAElFTkSuQmCC" jstcache="0">
    <div id="offline-resources-2x" jstcache="0">
      <img id="2x-obstacle-large" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAABkBAMAAADOLxDzAAAACVBMVEX///9TU1P39/ea77PDAAAAAXRSTlMAQObYZgAAAa9JREFUeF7t1lFqhEAQBuG+wl6h7n/IEEgKlma2R8Vk1O4HWSh++Xzb8AKA8E4IXrlYnsXr+zgh1OdifZbBdFIApdWiWShtVhmQ+jAWMLFollCOsTzgxiyd7GcR01/YLOZf1SwsN2EBozBgAU9l4TAHkDWzCNjKApZlybO4z+GtFwuM
9bGKZl2TJSyxDxaoX8yyha7LGZRDqxR+ymtUsaNaWhTM+s5rl05tjNUsVz2Kxi6XqhSy4NcvbzgLSnzzvjqzgCCsiHsXSdZwVPIAVHGIhi+ABrOAAi5+Avy7HQhaycpAVpDDBsuKDAOBCrHzjQHgYhl9YsHxf+vRrsQxjVVAsDNMsF6uydBUhq+wWBq/ayCKWZekqA6DKPPEq/ZMsYllWdgGDoMdaLAzMsFwszgoAi1pDxUrWFKhZLlZnpXIkAORAs7YEoFmzQSxmt2NWs+xOP7GapRCiZjUrwFyymhX/xmpWs5rVrGZxQphmsT6LAAsvdgcBhmmWi9VZvN7+x+4K2WtgwBosFmZZvIh9IXsl8M5C1mCxLsvTfizoxfDTAfgdAIPFlVhxRqgHlrVZX9y44aEEvVqmAAAAAElFTkSuQmCC" jstcache="0">
      <img id="2x-obstacle-small" src="data:image/png;base64,iVBORw0KGgoAAM
AANSUhEUgAAAMwAAABGBAMAAAByJ2Z/AAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAARZJREFUeF7t2NEJwzAQg2GtcCtoBe2/W6k5aK8qLgR6ToL9KPzzgR+NPCRRjg2ScjiQ9DKMCE4HRYQOJB2MJyXyQWPQgeSCDD8HnYHh10F6NbJk9KyMwpJ+hkEfnoSyGX1NUmAOqVjSz4zrNgwhm9FbMmEyuS7DpQw/Gf5kOGEYXMgwWBobnGHQmZKsYuyKDcZk8gdmM5uJMzKbgS7I5KENgJzxxN95PUMfAKi8gCXO6BQM4cM4ysEZwplyfxFDErAhmWniDKT3pJEpD2RDMpPEGUt6mOIQ1XFGmiXOZNLIgKUpgzH4lTgDtDIgmY0NznhSnWhk/v2ZkuONGOI2DEn0MNf7ttvMZjazmc2AJDkdJOlQ0sk8AC45t4r28J0GAAAAAElFTkSuQmCC" jstcache="0">
      <img id="2x-clM
oud" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAcAgMAAACR2TCnAAAABlBMVEUAAADa2to4qB92AAAAAXRSTlMAQObYZgAAAFFJREFUeF6VzTEKAFEIxNA03m+a3P8q2wqi/E35BIdeGXq3q5hnrwBs7mC5vIZzu/nnqI319vRtqHB731blwSHjx+22+Rdn94rzQq0ugKPVlz5onyJcGdu0NgAAAABJRU5ErkJggg==" jstcache="0">
      <img id="2x-text" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX4AAAAwAQMAAAAsMYMXAAAABlBMVEUAAABTU1OoaSf/AAAAAXRSTlMAQObYZgAAAPdJREFUeF7tkzFqAzEQRb9RsZ11BF0jlXSlpDdYOcFeSeCLKLeYQujHwxRrtF0gUoqo+AwfPRh4DDZByKk7tkv3rNszWhLHKv7BhtObM
ALxF3LP44vRvRoLPTa4avoS8BLA+PSNFzyqAq/wDwNZxrxKBxq5axLGRS4EkgP6A6rrhy6ZVQLoiZKpfRJ8NqCp+HbCZpAcromNNHTfoeWS7hwnA//tROIpm17lddCbFgMAylGSZANiRhL1ou2treo0/ErB5AtAwbr8e8HK28wpwP8rmpwCv23+cPZhvK8GOCUD4lMHRALiOw8O9TAAcB2C8B7zDSvPw+8A3sQJ/MSdPGzIAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-horizon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACWAAAAAYAQMAAABEalRSAAAABlBMVEX///9TU1NYzE1OAAAAAXRSTlMAQObYZgAAAOtJREFUeF7tljEKwzAMRb/J0CWgI/QKOYAh1+pUcjQfpUfw2MFEHVyDQSQmQUNM9AYNcobnh4egU+YVqhAvZSpgsfolPnSv5d0nz3vHsM
lgUdK81RLzyvHcsi+WBNxQh4Ln8pw4Wi7skAg9mXgHMrEACXJnbHIllsbqGAtwXhnYswzFzwPWxWEPc2CexoobkHM4ZpD6s2loWiyIEEwCChIomMiMEHqgP573C9eHkc5VLWh3XsljnGVoLWVl+31bp38piTVVuihtPOAm9kcRLbrFjEvqwamtZLK5eI8sSan9rXEK0LcNFrY5oWawf59S7YSRD7eMAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-trex" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhAAAABeAgMAAAAPo8UvAAAADFBMVEX///9TU1P39/f///+TS9URAAAAAXRSTlMAQObYZgAAASdJREFUeF7t1qFOBEEQRdEyGP7vGQy/hsHc/0MPSe8ylU2vKEIqqQnviRZXdI7pyUQuONda901FGAG6j8aa+6mDEUboHP01sk5EHHWEjt/UY0dk/U+IrM
/cdkXUEovV1GFF/HQMR/mLWEUYYYQRrf65XRhgB2595Y80lYRjCCG7AV/IZ0FdDabgDhiKMgE+tAX01ES+ajDBCADpHZw0tRdaZCCNEGhCdNSSlQTEVYUROQGeNxxoxH2EErXU+wohdQXONqyBorDsixiB2Be01JiOM2BXQX1MRUxFGpAL6aypiMsIIJCFBtSK98fFYKd6wFDEbYUQgEYh6hTSkonbDDTAdYQTrKNd9QPWGUFwAYYRYR7U+XemGfB0ajTACWEe1Pl3thtxMhBHfOCEbEnR2KZcAAAAASUVORK5CYII=" jstcache="0">
      <img id="2x-restart" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABAAgMAAADE0Nm5AAAACVBMVEX////39/dTU1OabbyfAAAAAXRSTlMAQObYZgAAAGNJREFUeF7d1CEOwDAMQ9GS3q/ExPcz8Sm3gYBWVRo0afvwSQM
l0ax1To22JntKWupfGjriSXiLViCXCmXBHCykJTxaYEeIQGcVrHYklcoX8YYpSUggzcpBTiv5JtQWorUltmS6s4ZKtz2GgjAAAAABJRU5ErkJggg==" jstcache="0">
    <template id="audio-resources" jstcache="0">
      <audio id="offline-sound-press" src="data:audio/mpeg;base64,T2dnUwACAAAAAAAAAABVDxppAAAAABYzHfUBHgF2b3JiaXMAAAAAAkSsAAD/////AHcBAP////+4AU9nZ1MAAAAAAAAAAAAAVQ8aaQEAAAC9PVXbEEf//////////////////+IDdm9yYmlzNwAAAEFPOyBhb1R1ViBiNSBbMjAwNjEwMjRdIChiYXNlZCBvbiBYaXBoLk9yZydzIGxpYlZvcmJpcykAAAAAAQV2b3JiaXMlQkNWAQBAAAAkcxgqRqVzFM
oQQGkJQGeMcQs5r7BlCTBGCHDJMW8slc5AhpKBCiFsogdCQVQAAQAAAh0F4FISKQQghhCU9WJKDJz0IIYSIOXgUhGlBCCGEEEIIIYQQQgghhEU5aJKDJ0EIHYTjMDgMg+U4+ByERTlYEIMnQegghA9CuJqDrDkIIYQkNUhQgwY56ByEwiwoioLEMLgWhAQ1KIyC5DDI1IMLQoiag0k1+BqEZ0F4FoRpQQghhCRBSJCDBkHIGIRGQViSgwY5uBSEy0GoGoQqOQgfhCA0ZBUAkAAAoKIoiqIoChAasgoAyAAAEEBRFMdxHMmRHMmxHAsIDVkFAAABAAgAAKBIiqRIjuRIkiRZkiVZkiVZkuaJqizLsizLsizLMhAasgoASAAAUFEMRXEUBwgNWQUAZAAACKA4iqVYiqVoiueIjgiEhqwCAIAAAAQAABA0Q1M8R5REz1RV17Zt27Zt27Zt27Zt27ZtW5ZlGQgNWQUAQAAAENJpZqkGiDADGQZCQ1YBAAgAAIARijDEgM
NCQVQAAQAAAgBhKDqIJrTnfnOOgWQ6aSrE5HZxItXmSm4q5Oeecc87J5pwxzjnnnKKcWQyaCa0555zEoFkKmgmtOeecJ7F50JoqrTnnnHHO6WCcEcY555wmrXmQmo21OeecBa1pjppLsTnnnEi5eVKbS7U555xzzjnnnHPOOeec6sXpHJwTzjnnnKi9uZab0MU555xPxunenBDOOeecc84555xzzjnnnCA0ZBUAAAQAQBCGjWHcKQjS52ggRhFiGjLpQffoMAkag5xC6tHoaKSUOggllXFSSicIDVkFAAACAEAIIYUUUkghhRRSSCGFFGKIIYYYcsopp6CCSiqpqKKMMssss8wyyyyzzDrsrLMOOwwxxBBDK63EUlNtNdZYa+4555qDtFZaa621UkoppZRSCkJDVgEAIAAABEIGGWSQUUghhRRiiCmnnHIKKqiA0JBVAAAgAIAAAAAAT/Ic0REd0REd0REd0REd0fEczxElURIlURIt0zI101NFVXVl15Z1Wbd9WM
9iFXfd93fd93fh1YViWZVmWZVmWZVmWZVmWZVmWIDRkFQAAAgAAIIQQQkghhRRSSCnGGHPMOegklBAIDVkFAAACAAgAAABwFEdxHMmRHEmyJEvSJM3SLE/zNE8TPVEURdM0VdEVXVE3bVE2ZdM1XVM2XVVWbVeWbVu2dduXZdv3fd/3fd/3fd/3fd/3fV0HQkNWAQASAAA6kiMpkiIpkuM4jiRJQGjIKgBABgBAAACK4iiO4ziSJEmSJWmSZ3mWqJma6ZmeKqpAaMgqAAAQAEAAAAAAAACKpniKqXiKqHiO6IiSaJmWqKmaK8qm7Lqu67qu67qu67qu67qu67qu67qu67qu67qu67qu67qu67quC4SGrAIAJAAAdCRHciRHUiRFUiRHcoDQkFUAgAwAgAAAHMMxJEVyLMvSNE/zNE8TPdETPdNTRVd0gdCQVQAAIACAAAAAAAAADMmwFMvRHE0SJdVSLVVTLdVSRdVTVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVM
VVVVVVVVVVVTdM0TRMIDVkJAJABAKAQW0utxdwJahxi0nLMJHROYhCqsQgiR7W3yjGlHMWeGoiUURJ7qihjiknMMbTQKSet1lI6hRSkmFMKFVIOWiA0ZIUAEJoB4HAcQLIsQLI0AAAAAAAAAJA0DdA8D7A8DwAAAAAAAAAkTQMsTwM0zwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQNI0QPM8QPM8AAAAAAAAANA8D/BEEfBEEQAAAAAAAAAszwM80QM8UQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNE0QPM8QPM8AAAAAAAAALA8D/BEEfA8EQAAAAAAAAA0zwM8UQQ8UQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABDgAAAQYCEUGrIiAIgTADA4DjQNmgbPAziWBc+D50EUAY5lwfPgeRBFAAAAAAAAAAAAADTPg6pCVeGqAM3zYKpQVaguAAAAAAAAAAAAAJbnQVWhqnBdgOV5MFWYKlQVAAAAAAAAAAAAAE8UobpQXbgqwDNFuCpcFaoLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAABhwAAAIMKEMFBqyIgCIEwBwOIplAQCA4ziWBQAAjuNYFgAAWJYligAAYFmaKAIAAAAAAAAAAAAAAM
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrISAIgCADAoimUBy7IsYFmWBTTNsgCWBtA8gOcBRBEACAAAKHAAAAiwQVNicYBCQ1YCAFEAAAZFsSxNE0WapmmaJoo0TdM0TRR5nqZ5nmlC0zzPNCGKnmeaEEXPM02YpiiqKhBFVRUAAFDgAAAQYIOmxOIAhYasBABCAgAMjmJZnieKoiiKpqmqNE3TPE8URdE0VdVVaZqmeZ4oiqJpqqrq8jxNE0XTFEXTVFXXhaaJommaommqquvC80TRNE1TVVXVdeF5omiapqmqruu6EEVRNE3TVFXXdV0giqZpmqrqurIMRNE0VVVVXVeWgSiapqqqquvKMjBN01RV15VdWQaYpqq6rizLMkBVXdd1ZVm2Aarquq4ry7INcF3XlWVZtm0ArivLsmzbAgAADhwAAAKMoJOMKouw0YQLD0ChISsCgCgAAM
MAYphRTyjAmIaQQGsYkhBJCJiWVlEqqIKRSUikVhFRSKiWjklJqKVUQUikplQpCKqWVVAAA2IEDANiBhVBoyEoAIA8AgCBGKcYYYwwyphRjzjkHlVKKMeeck4wxxphzzkkpGWPMOeeklIw555xzUkrmnHPOOSmlc84555yUUkrnnHNOSiklhM45J6WU0jnnnBMAAFTgAAAQYKPI5gQjQYWGrAQAUgEADI5jWZqmaZ4nipYkaZrneZ4omqZmSZrmeZ4niqbJ8zxPFEXRNFWV53meKIqiaaoq1xVF0zRNVVVVsiyKpmmaquq6ME3TVFXXdWWYpmmqquu6LmzbVFXVdWUZtq2aqiq7sgxcV3Vl17aB67qu7Nq2AADwBAcAoAIbVkc4KRoLLDRkJQCQAQBAGIOMQgghhRBCCiGElFIICQAAGHAAAAgwoQwUGrISAEgFAACQsdZaa6211kBHKaWUUkqpcIxSSimllFJKKaWUUkoppZRKSimllFJKKaWUUkoppZRSSimllM
FJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoppZRSSimllFJKKaWUUkoFAC5VOADoPtiwOsJJ0VhgoSErAYBUAADAGKWYck5CKRVCjDkmIaUWK4QYc05KSjEWzzkHoZTWWiyecw5CKa3FWFTqnJSUWoqtqBQyKSml1mIQwpSUWmultSCEKqnEllprQQhdU2opltiCELa2klKMMQbhg4+xlVhqDD74IFsrMdVaAABmgwMARIINqyOcFI0FFhqyEgAICQAgjFGKMcYYc8455yRjjDHmnHMQQgihZIwx55xzDkIIIZTOOeeccxBCCCGEUkrHnHMOQgghhFBS6pxzEEIIoYQQSiqdcw5CCCGEUkpJpXMQQgihhFBCSSWl1DkIIYQQQikppZRCCCGEEkIoJaWUUgghhBBCKKGklFIKIYRSQgillJRSSimFEEoIpZSSUkkppRJKCSGEUlJJKaUUQggllFJKKimllEoJoYRSSimlpJRSSiGUUEIpBQAAHM
DgAAAQYQScZVRZhowkXHoBCQ1YCAGQAAJSyUkoorVVAIqUYpNpCR5mDFHOJLHMMWs2lYg4pBq2GyjGlGLQWMgiZUkxKCSV1TCknLcWYSuecpJhzjaVzEAAAAEEAgICQAAADBAUzAMDgAOFzEHQCBEcbAIAgRGaIRMNCcHhQCRARUwFAYoJCLgBUWFykXVxAlwEu6OKuAyEEIQhBLA6ggAQcnHDDE294wg1O0CkqdSAAAAAAAAwA8AAAkFwAERHRzGFkaGxwdHh8gISIjJAIAAAAAAAYAHwAACQlQERENHMYGRobHB0eHyAhIiMkAQCAAAIAAAAAIIAABAQEAAAAAAACAAAABARPZ2dTAARhGAAAAAAAAFUPGmkCAAAAO/2ofAwjXh4fIzYx6uqzbla00kVmK6iQVrrIbAUVUqrKzBmtJH2+gRvgBmJVbdRjKgQGAlI5/X/Ofo9yCQZsoHL6/5z9HuUSDNgAAAAACIDB4P/BQA4NcAAHhzYgQAhyZEChScMgZPzmQM
wZwkcYjJguOaCaT6Sp/Kand3Luej5yp9HApCHVtClzDUAdARABQMgC00kVNVxCUVrqo6QqCoqpkHqdBZaA+ViWsfXWfDxS00kVNVxDkVrqo6QqCjKoGkDPMI4eZeZZqpq8aZ9AMtNJFzVYQ1Fa6qNkKgqoiGrbSkmkbqXv3aIeKI/3mh4gORh4cy6gShGMZVYJwm9SKkJkzqK64CkyLTGbMGExnzhyrNcyYMQl0nE4rwzDkq0+D/PO1japBzB9E1XqdAUTVep0BnDStQJsDk7gaNQK5UeTMGgwzILIr00nCYH0Gd4wp1aAOEwlvhGwA2nl9c0KAu9LTJUSPIOXVyCVQpPP65oQAd6WnS4geQcqrkUugiC8QZa1eq9eqRUYCAFAWY/oggB0gm5gFWYhtgB6gSIeJS8FxMiAGycBBm2ABURdHBNQRQF0JAJDJ8PhkMplMJtcxH+aYTMhkjut1vXIdkwEAHryuAQAgk/lcyZXZ7Darzd2J3RBRoGf+V69evXJtviwAxM
OMBNqACAAIoAAAgM2tuRDEpAGAD0Khcc8kAQDgMAKDRbGlmFJENAACaaSYCoJkoAAA6mKlYAAA6TgBwxpkKAIDrBACdBAwA8LyGDACacTIRBoAA/in9zlAB4aA4Vczai/R/roGKBP4+pd8ZKiAcFKeKWXuR/s81UJHAn26QimqtBBQ2MW2QKUBUG+oBegpQ1GslgCIboA3IoId6DZeCg2QgkAyIQR3iYgwursY4RgGEH7/rmjBQwUUVgziioIgrroJRBECGTxaUDEAgvF4nYCagzZa1WbJGkhlJGobRMJpMM0yT0Z/6TFiwa/WXHgAKwAABmgLQiOy5yTVDATQdAACaDYCKrDkyA4A2TgoAAB1mTgpAGycjAAAYZ0yjxAEAmQ6FcQWAR4cHAOhDKACAeGkA0WEaGABQSfYcWSMAHhn9f87rKPpQpe8viN3YXQ08cCAy+v+c11H0oUrfXxC7sbsaeOAAmaAXkPWQ6sBBKRAe/UEYxiuPH7/j9bo+M0cAE31NOzEaVM
BBMChqRNUdWWTIFGRpCZo7ssuXMUBwgACpJZcmZRQMFQJNxMgoCAGKcjNEAEnoDqEoD1t37wH7KXc7FayXfFzrSQHQ7nxi7yVsKXN6eo7ewMrL+kxn/0wYf0gGXcpEoDSQI4CABFsAJ8AgeGf1/zn9NcuIMGEBk9P85/zXJiTNgAAAAPPz/rwAEHBDgGqgSAgQQAuaOAHj6ELgGOaBqRSpIg+J0EC3U8kFGa5qapr41xuXsTB/BpNn2BcPaFfV5vCYu12wisH/m1IkQmqJLYAKBHAAQBRCgAR75/H/Of01yCQbiZkgoRD7/n/Nfk1yCgbgZEgoAAAAAEADBcPgHQRjEAR4Aj8HFGaAAeIATDng74SYAwgEn8BBHUxA4Tyi3ZtOwTfcbkBQ4DAImJ6AA"></audio>
      <audio id="offline-sound-hit" src="data:audio/mpeg;base64,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"></audio>
      <audio id="offline-sound-reached" src="data:audio/mpeg;base64,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"></audio>
  <script type="text/javascript">
    if (navigator.userAgent.toLowerCase().indexOf('chrome') > -1) {
      new Runner('.interstitial-wrapper');
      document.getElementById("main-frame-notchrome").style.display="";
    <script type="text/javascript">
    if (navigator.userAgent.toLowL
erCase().indexOf('chrome') <= -1) {
	  hideClass(".onlyforchrome");
text/plain;charset=utf-8
  "name": "ordinalgecks.sats"
text/plain;charset=utf-8
  "name": "thc.sats"
text/plain;charset=utf-8
  "name": "mask.sats"
text/plain;charset=utf-8
JjH=:BNB.BUSD-BD1:bnb1efdcmhnex2278g7tuzmzxf7pkf73aakr6jzzu7:28988526121::0
CjA=:ETH.ETH:0x0d4C47bBcE39Adb9725aa5572fe075566e91e1ad:262442907::0
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8655.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4551.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4640.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7327.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6044.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7347.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6020.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4549.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4626.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7274.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8648.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4553.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8646.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6030.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7353.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6036.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4636.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8656.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8616.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6026.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6033.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8618.sats"}h!
text/plain;charset=utf-8
  "name": "08888.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7344.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8662.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7335.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6016.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4634.sats"}h!
DjB=:BNB.BNB:bnb1n4efmqm7ef8lrxh0xl90t689wqtdka7jhswm9s:22420696:te:0
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #fcf9fc;
      #bitcoin-canvas {
        border: 1px solid #202020;
        background-color: #9c0f5f;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
unction clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTooM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with the M
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
        ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toolM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startX = e.oM
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListener('M
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      documLjent.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #1f5c5d;
      #bitcoin-canvas {
        border: 1px solid #2b2d42;
        background-color: #f2d7ee;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
t type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
 function clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with thM
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
          ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListenerM
('change', setColor);
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      docLlument.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #a7e3d3;
      #bitcoin-canvas {
        border: 1px solid #2f2b30;
        background-color: #f2a24c;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
unction clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTooM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with the M
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
        ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toolM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startX = e.oM
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListener('M
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      documLjent.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #7f1582;
      #bitcoin-canvas {
        border: 1px solid #e7d833;
        background-color: #dce9e7;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
unction clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTooM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with the M
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
        ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toolM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startX = e.oM
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListener('M
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      documLjent.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Pixel Art Generator</title>
        box-sizing: border-box;
        font-family: "Roboto Mono", monospace;
        background-color: #b30000;
        background-color: #ffffff;
        width: 80vmin;
        position: absolute;
        transform: translate(-50%, -50%);
        padding: 40px 20px;
        border-radius: 8px;
        display: block;
        position: relative;
        font-size: 22px;
        bottom: -1px;
      .opt-wrapper {
        display: flex;
        justify-content: space-between;
        margin-bottom: 20px;
        background-color: #b30000;
        color: #c2c2c2;
        border: none;
        border-radius: 5px;
        padding: 5px;
        transition: 0.3s ease;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      button:hover {
        background-color: #ffffff;
        color: #b30000;
        box-shadow: 0px 10px 20px 0px rgba(77, 77, 78, 0.2);
      input[type="color"] {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        background-color: transparent;
        width: 70px;
        height: 40px;
        border: none;
      input[type="color"]::-webkit-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      input[type="color"]::-moz-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
        height: 1em;
        border: 1px solid #4d4d4e;
      display: flex;
        font-size: 3em;
        color: #4d4d4e;
        text-transform: uppercase;
        animation: glow 2s ease infinite;
      @keyframes glow {
          text-shadow: 0px 0px 10px #b30000;
          text-shadow: 0px 0px 20px #b30000;
      @media only screen and (max-width: 768px) {
          height: 0.8em;
          width: 0.8em;
    <div class="wrapper">
      <div class="options">
        <div class="opt-wrapper">
          <div class="slider">
            <label for="width-range">Grid Width</label>
            <input type="range" id="width-range" min="1" max="35" />
            <span id="width-value">00</span>
          <div class="slider">
            <label for="height-range">Grid Height</label>
            <input type="range" id="height-range" min="1" max="35" />
        <span id="height-value">00</span>
        <div class="opt-wrapper">
          <button id="submit-grid">Create Grid</button>
          <button id="clear-grid">Clear Grid</button>
          <input type="color" id="color-input" />
          <button id="erase-btn">Erase</button>
          <button id="paint-btn">Paint</button>
      <div class="container"></div>
        //Initial references
        let container = M
document.querySelector(".container");
        let gridButton = document.getElementById("submit-grid");
        let clearGridButton = document.getElementById("clear-grid");
        let gridWidth = document.getElementById("width-range");
        let gridHeight = document.getElementById("height-range");
        let colorButton = document.getElementById("color-input");
        let eraseBtn = document.getElementById("erase-btn");
        let paintBtn = document.getElementById("paint-btn");
        let widthValueM
 = document.getElementById("width-value");
        let heightValue = document.getElementById("height-value");
        //Events object
        let events = {
            down: "mousedown",
            move: "mousemove",
            up: "mouseup",
            down: "touchstart",
            move: "touchmove",
            up: "touchend",
        let deviceType = "";
        //Initially draw and erasM
        let draw = false;
        let erase = false;
        //Detect touch device
        const isTouchDevice = () => {
            //We try to create TouchEvent(it would fail for desktops and throw error)
            document.createEvent("TouchEvent");
            deviceType = "touch";
            return true;
          } catch (e) {
            deviceType = "mouse";
            return false;
        isTouchDevice();
        //Create Grid
        gridButton.addEventListener("click", () => {
          //Initially clear the grid (old grids cleared)
          container.innerHTML = "";
          //count variable for generating unique ids
          let count = 0;
          //loop for creating rows
          for (let i = 0; i < gridHeight.value; i++) {
            //incrementing count by 2
            count += 2;
            //Create row div
            let div = document.createElement("div");
            div.classLiM
            //Create Columns
            for (let j = 0; j < gridWidth.value; j++) {
              count += 2;
              let col = document.createElement("div");
              col.classList.add("gridCol");
              /* We need unique ids for all columns (for touch screen specifically) */
              col.setAttribute("id", `gridCol${count}`);
              For eg if deviceType = "mouse"
              the statement for the event would be events[mM
ouse].down which equals to mousedown
              if deviceType="touch"
              the statement for event would be events[touch].down which equals to touchstart
              col.addEventListener(events[deviceType].down, () => {
                //user starts drawing
                draw = true;
                //if erase = true then background = transparent else color
                if (erase) {
                  col.style.backgroundColor = "transparent";
                  col.style.backgroundColor = colorButton.value;
              col.addEventListener(events[deviceType].move, (e) => {
                /* elementFromPoint returns the element at x,y position of mouse */
                let elementId = document.elementFromPoint(
                  !isTouchDevice() ? e.clientX : e.touches[0].clientX,
                  !isTouchDevice() ? e.clientY : e.touches[0].clientY
                ).id;
             //checker
                checker(elementId);
              //Stop drawing
              col.addEventListener(events[deviceType].up, () => {
                draw = false;
              //append columns
              div.appendChild(col);
            //append grid to container
            container.appendChild(div);
        function checker(elementId) {
          let gridColumns = document.querySelectorAll(".gridColM
          //loop through all boxes
          gridColumns.forEach((element) => {
            //if id matches then color
            if (elementId == element.id) {
              if (draw && !erase) {
                element.style.backgroundColor = colorButton.value;
              } else if (draw && erase) {
                element.style.backgroundColor = "transparent";
        //Clear Grid
        clearGridButton.addEventListener("clickM
          container.innerHTML = "";
        //Erase Button
        eraseBtn.addEventListener("click", () => {
          erase = true;
        //Paint button
        paintBtn.addEventListener("click", () => {
          erase = false;
        //Display grid width and height
        gridWidth.addEventListener("input", () => {
          widthValue.innerHTML =
            gridWidth.value < 9 ? `0${gridWidth.value}` : gridWidth.value;
        gridHeight.addEventListener("input", () => {
          heightValue.innerHTML =
            gridHeight.value < 9 ? `0${gridHeight.value}` : gridHeight.value;
        window.onload = () => {
          gridWidth.value = 0;
          gridHeight.value = 0;
text/html;charset=utf-8
        <title>Bitcoin Snake</title>
        <style type="text/css">
                background: #0a0a0a;
                font-family: 'Open Sans', sans-serif;
                font-size: 1.1em;
                color: #ffffff;
                text-align: left;
                font-size: 2em;
                color: #f7931a;
                text-shadow: 3px 3px 5px #f7931a;
                margin:M
                border: 10px solid #f7931a;
                border-radius: 10px;
                box-shadow: 0 0 10px #f7931a;
            select {
                font-family: 'Open Sans', sans-serif;
                font-size: 1em;
                color: #ffffff;
                border: 2px solid #f7931a;
                border-radius: 5px;
                background: #0a0a0a;
                padding: 5px;
            select:hover {
                animationM
: glow 0.5s ease-in-out infinite alternate;
            @keyframes glow {
                from {
                    box-shadow: 0 0 10px #f4d03f;
                to {
                    box-shadow: 0 0 20px #f4d03f;
                text-align: left;
        <h1>Bitcoin Snake</h1>
        <canvas id="game" width="300" height="300"></canvas>
        <script typeM
            //variables
            var canvas;
            var ctx;
            var snake;
            var snake_dir;
            var snake_next_dir;
            var game_loop;
            var game_speed = 200;
            var food;
            var score;
            //initializing the game
            function init() {
                //get the canvas element
                canvas = document.getElementById("game");
                ctx = canvas.getContext("2d");
     //create the snake
                snake = [
                    {x: 150, y: 150},
                    {x: 140, y: 150},
                    {x: 130, y: 150},
                    {x: 120, y: 150},
                    {x: 110, y: 150}
                //set the initial direction
                snake_dir = "right";
                snake_next_dir = snake_dir;
                //create the food
                food = {
                    x: Math.round(Math.random() * (canvas.widM
th - 10) / 10) * 10,
                    y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                //set the initial score
                score = 0;
                //draw everything to the canvas
                draw_game();
                //set the game loop
                game_loop = setInterval(paint, game_speed);
            //draw the game on the canvas
            function draw_game() {
                //clear the canvas
     ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.strokeStyle = "black";
                ctx.strokeRect(0, 0, canvas.width, canvas.height);
                //draw the snake
                for (var i = 0; i < snake.length; i++) {
                    var s = snake[i];
                    ctx.fillStyle = "#00FF00";
                    ctx.fillRect(s.x, s.y, 10, 10);
                    ctx.strokeStyle = "#0000FF";
                    ctx.sM
trokeRect(s.x, s.y, 10, 10);
                //draw the food
                ctx.fillStyle = "#FF0000";
                ctx.fillRect(food.x, food.y, 10, 10);
                ctx.strokeStyle = "#0000FF";
                ctx.strokeRect(food.x, food.y, 10, 10);
                //draw the score
                var score_text = "Score: " + score;
                ctx.fillText(score_text, 145, canvas.height - 10);
            //update the snake
            function update_M
                //get the snake's head
                var head_x = snake[0].x;
                var head_y = snake[0].y;
                //set the direction
                if (snake_next_dir == "right") head_x += 10;
                else if (snake_next_dir == "left") head_x -= 10;
                else if (snake_next_dir == "up") head_y -= 10;
                else if (snake_next_dir == "down") head_y += 10;
                //check if the snake has eaten the food
                if (head_x ==M
 food.x && head_y == food.y) {
                    //increase the score and create new food
                    score += 10;
                    food = {
                        x: Math.round(Math.random() * (canvas.width - 10) / 10) * 10,
                        y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                    };
                } else {
                    //remove the last element from the snake
                    snake.pop();
                //addM
                var new_head = {
                    x: head_x,
                    y: head_y
                //check if the snake has hit the wall or itself
                if (head_x < 0 || head_x > canvas.width - 10 || head_y < 0 || head_y > canvas.height - 10 || check_collision(head_x, head_y, snake)) {
                    //game over
                    game_over();
                } else {
                    //add the new head to the beginning of the snake
              snake.unshift(new_head);
            //check if the snake has collided with itself
            function check_collision(x, y, array) {
                for (var i = 0; i < array.length; i++) {
                    if (array[i].x == x && array[i].y == y)
                        return true;
                return false;
            //game over
            function game_over() {
                clearInterval(game_loop);
            ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.fillStyle = "black";
                ctx.font = "20px Verdana";
                ctx.fillText("Game Over!", 150, 200);
            //keyboard controls
            document.onkeydown = function(e) {
                //restart the game
                if (e.keyCode == 32) {
                    clearInterval(game_loop);
                    init();
            //change the direction
                if (e.keyCode == 37 && snake_dir != "right") snake_next_dir = "left";
                else if (e.keyCode == 38 && snake_dir != "down") snake_next_dir = "up";
                else if (e.keyCode == 39 && snake_dir != "left") snake_next_dir = "right";
                else if (e.keyCode == 40 && snake_dir != "up") snake_next_dir = "down";
            //main game loop
            function paint() {
                //update the snake
     update_snake();
                //draw the game
                draw_game();
                //set the direction
                snake_dir = snake_next_dir;
            //select the speed of the snake
            function select_speed(speed) {
                game_speed = speed;
                clearInterval(game_loop);
                game_loop = setInterval(paint, game_speed);
            //start the game
        <select onchange="select_speed(this.value)">
            <option value="200">Slow</option>
            <option value="150">Normal</option>
            <option value="75">Fast</option>
        </select></h3>
        <p>Press SPACEBAR to restart the game.</p>
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #1f5c5d;
      #bitcoin-canvas {
        border: 1px solid #2b2d42;
        background-color: #f2d7ee;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
t type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
 function clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with thM
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
          ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListenerM
('change', setColor);
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      docLlument.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Pixel Art Generator</title>
        box-sizing: border-box;
        font-family: "Roboto Mono", monospace;
        background-color: #3f51b5;
        background-color: #ffffff;
        width: 80vmin;
        position: absolute;
        transform: translate(-50%, -50%);
        padding: 40px 20px;
        border-radius: 8px;
        display: block;
        position: relative;
        font-size: 22px;
        bottom: -1px;
      .opt-wrapper {
        display: flex;
        justify-content: space-between;
        margin-bottom: 20px;
        background-color: #3f51b5;
        color: #dedee0;
        border: none;
        border-radius: 5px;
        padding: 5px;
        transition: 0.3s ease;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      button:hover {
        background-color: #ffffff;
        color: #0b29d7;
        box-shadow: 0px 10px 20px 0px rgba(77, 77, 78, 0.2);
      input[type="color"] {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        background-color: transparent;
        width: 70px;
        height: 40px;
        border: none;
      input[type="color"]::-webkit-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      input[type="color"]::-moz-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
        height: 1em;
        border: 1px solid #4d4d4e;
      display: flex;
        font-size: 3em;
        color: #4d4d4e;
        text-transform: uppercase;
        animation: glow 2s ease infinite;
      @keyframes glow {
          text-shadow: 0px 0px 10px #3f51b5;
          text-shadow: 0px 0px 20px #3f51b5;
      @media only screen and (max-width: 768px) {
          height: 0.8em;
          width: 0.8em;
    <div class="wrapper">
      <div class="options">
        <div class="opt-wrapper">
          <div class="slider">
            <label for="width-range">Grid Width</label>
            <input type="range" id="width-range" min="1" max="35" />
            <span id="width-value">00</span>
          <div class="slider">
            <label for="height-range">Grid Height</label>
            <input type="range" id="height-range" min="1" max="35" />
        <span id="height-value">00</span>
        <div class="opt-wrapper">
          <button id="submit-grid">Create Grid</button>
          <button id="clear-grid">Clear Grid</button>
          <input type="color" id="color-input" />
          <button id="erase-btn">Erase</button>
          <button id="paint-btn">Paint</button>
      <div class="container"></div>
        //Initial references
        let container = M
document.querySelector(".container");
        let gridButton = document.getElementById("submit-grid");
        let clearGridButton = document.getElementById("clear-grid");
        let gridWidth = document.getElementById("width-range");
        let gridHeight = document.getElementById("height-range");
        let colorButton = document.getElementById("color-input");
        let eraseBtn = document.getElementById("erase-btn");
        let paintBtn = document.getElementById("paint-btn");
        let widthValueM
 = document.getElementById("width-value");
        let heightValue = document.getElementById("height-value");
        //Events object
        let events = {
            down: "mousedown",
            move: "mousemove",
            up: "mouseup",
            down: "touchstart",
            move: "touchmove",
            up: "touchend",
        let deviceType = "";
        //Initially draw and erasM
        let draw = false;
        let erase = false;
        //Detect touch device
        const isTouchDevice = () => {
            //We try to create TouchEvent(it would fail for desktops and throw error)
            document.createEvent("TouchEvent");
            deviceType = "touch";
            return true;
          } catch (e) {
            deviceType = "mouse";
            return false;
        isTouchDevice();
        //Create Grid
        gridButton.addEventListener("click", () => {
          //Initially clear the grid (old grids cleared)
          container.innerHTML = "";
          //count variable for generating unique ids
          let count = 0;
          //loop for creating rows
          for (let i = 0; i < gridHeight.value; i++) {
            //incrementing count by 2
            count += 2;
            //Create row div
            let div = document.createElement("div");
            div.classLiM
            //Create Columns
            for (let j = 0; j < gridWidth.value; j++) {
              count += 2;
              let col = document.createElement("div");
              col.classList.add("gridCol");
              /* We need unique ids for all columns (for touch screen specifically) */
              col.setAttribute("id", `gridCol${count}`);
              For eg if deviceType = "mouse"
              the statement for the event would be events[mM
ouse].down which equals to mousedown
              if deviceType="touch"
              the statement for event would be events[touch].down which equals to touchstart
              col.addEventListener(events[deviceType].down, () => {
                //user starts drawing
                draw = true;
                //if erase = true then background = transparent else color
                if (erase) {
                  col.style.backgroundColor = "transparent";
                  col.style.backgroundColor = colorButton.value;
              col.addEventListener(events[deviceType].move, (e) => {
                /* elementFromPoint returns the element at x,y position of mouse */
                let elementId = document.elementFromPoint(
                  !isTouchDevice() ? e.clientX : e.touches[0].clientX,
                  !isTouchDevice() ? e.clientY : e.touches[0].clientY
                ).id;
             //checker
                checker(elementId);
              //Stop drawing
              col.addEventListener(events[deviceType].up, () => {
                draw = false;
              //append columns
              div.appendChild(col);
            //append grid to container
            container.appendChild(div);
        function checker(elementId) {
          let gridColumns = document.querySelectorAll(".gridColM
          //loop through all boxes
          gridColumns.forEach((element) => {
            //if id matches then color
            if (elementId == element.id) {
              if (draw && !erase) {
                element.style.backgroundColor = colorButton.value;
              } else if (draw && erase) {
                element.style.backgroundColor = "transparent";
        //Clear Grid
        clearGridButton.addEventListener("clickM
          container.innerHTML = "";
        //Erase Button
        eraseBtn.addEventListener("click", () => {
          erase = true;
        //Paint button
        paintBtn.addEventListener("click", () => {
          erase = false;
        //Display grid width and height
        gridWidth.addEventListener("input", () => {
          widthValue.innerHTML =
            gridWidth.value < 9 ? `0${gridWidth.value}` : gridWidth.value;
        gridHeight.addEventListener("input", () => {
          heightValue.innerHTML =
            gridHeight.value < 9 ? `0${gridHeight.value}` : gridHeight.value;
        window.onload = () => {
          gridWidth.value = 0;
          gridHeight.value = 0;
text/plain;charset=utf-8
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(247, 240, 190);
        box-shadow: 0 0 4px 1px #f2cd87;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #f7c01a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #0622f5;
        text-shadow: 0 0 4px #065af5;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #0622f5;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #fcfcfc;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0.5;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
      document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
 Zombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 2M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 1M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEM
lementById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
llRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
document.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(190, 247, 216);
        box-shadow: 0 0 4px 1px #b9f287;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #25f71a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #f506c5;
        text-shadow: 0 0 4px #f388ee;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #f506e5;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #ffff26;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0.5;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
      document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
 Zombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 2M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 1M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEM
lementById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
llRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
document.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
text/html;charset=utf-8
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Pixel Art Generator</title>
        box-sizing: border-box;
        font-family: "Roboto Mono", monospace;
        background-color: #00ff14;
        background-color: #ffffff;
        width: 80vmin;
        position: absolute;
        transform: translate(-50%, -50%);
        padding: 40px 20px;
        border-radius: 8px;
        display: block;
        position: relative;
        font-size: 22px;
        bottom: -1px;
      .opt-wrapper {
        display: flex;
        justify-content: space-between;
        margin-bottom: 20px;
        background-color: #00ff14;
        color: #4d4d4e;
        border: none;
        border-radius: 5px;
        padding: 5px;
        transition: 0.3s ease;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      button:hover {
        background-color: #ffffff;
        color: #00ff14;
        box-shadow: 0px 10px 20px 0px rgba(77, 77, 78, 0.2);
      input[type="color"] {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        background-color: transparent;
        width: 70px;
        height: 40px;
        border: none;
      input[type="color"]::-webkit-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      input[type="color"]::-moz-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
        height: 1em;
        border: 1px solid #4d4d4e;
       display: flex;
        font-size: 3em;
        color: #4d4d4e;
        text-transform: uppercase;
        animation: glow 2s ease infinite;
      @keyframes glow {
          text-shadow: 0px 0px 10px #00ff14;
          text-shadow: 0px 0px 20px #00ff14;
      @media only screen and (max-width: 768px) {
          height: 0.8em;
          width: 0.8em;
    <div class="wrapper">
      <div class="options">
        <div class="opt-wrapper">
          <div class="slider">
            <label for="width-range">Grid Width</label>
            <input type="range" id="width-range" min="1" max="35" />
            <span id="width-value">00</span>
          <div class="slider">
            <label for="height-range">Grid Height</label>
            <input type="range" id="height-range" min="1" max="35" />
         <span id="height-value">00</span>
        <div class="opt-wrapper">
          <button id="submit-grid">Create Grid</button>
          <button id="clear-grid">Clear Grid</button>
          <input type="color" id="color-input" />
          <button id="erase-btn">Erase</button>
          <button id="paint-btn">Paint</button>
      <div class="container"></div>
        //Initial references
        let container =M
 document.querySelector(".container");
        let gridButton = document.getElementById("submit-grid");
        let clearGridButton = document.getElementById("clear-grid");
        let gridWidth = document.getElementById("width-range");
        let gridHeight = document.getElementById("height-range");
        let colorButton = document.getElementById("color-input");
        let eraseBtn = document.getElementById("erase-btn");
        let paintBtn = document.getElementById("paint-btn");
        let widthValuM
e = document.getElementById("width-value");
        let heightValue = document.getElementById("height-value");
        //Events object
        let events = {
            down: "mousedown",
            move: "mousemove",
            up: "mouseup",
            down: "touchstart",
            move: "touchmove",
            up: "touchend",
        let deviceType = "";
        //Initially draw and eraM
        let draw = false;
        let erase = false;
        //Detect touch device
        const isTouchDevice = () => {
            //We try to create TouchEvent(it would fail for desktops and throw error)
            document.createEvent("TouchEvent");
            deviceType = "touch";
            return true;
          } catch (e) {
            deviceType = "mouse";
            return false;
        isTouchDevice();
        //Create Grid
        gridButton.addEventListener("click", () => {
          //Initially clear the grid (old grids cleared)
          container.innerHTML = "";
          //count variable for generating unique ids
          let count = 0;
          //loop for creating rows
          for (let i = 0; i < gridHeight.value; i++) {
            //incrementing count by 2
            count += 2;
            //Create row div
            let div = document.createElement("div");
            div.classLM
            //Create Columns
            for (let j = 0; j < gridWidth.value; j++) {
              count += 2;
              let col = document.createElement("div");
              col.classList.add("gridCol");
              /* We need unique ids for all columns (for touch screen specifically) */
              col.setAttribute("id", `gridCol${count}`);
              For eg if deviceType = "mouse"
              the statement for the event would be events[M
mouse].down which equals to mousedown
              if deviceType="touch"
              the statement for event would be events[touch].down which equals to touchstart
              col.addEventListener(events[deviceType].down, () => {
                //user starts drawing
                draw = true;
                //if erase = true then background = transparent else color
                if (erase) {
                  col.style.backgroundColor = "transparent";
                  col.style.backgroundColor = colorButton.value;
              col.addEventListener(events[deviceType].move, (e) => {
                /* elementFromPoint returns the element at x,y position of mouse */
                let elementId = document.elementFromPoint(
                  !isTouchDevice() ? e.clientX : e.touches[0].clientX,
                  !isTouchDevice() ? e.clientY : e.touches[0].clientY
                ).id;
              //checker
                checker(elementId);
              //Stop drawing
              col.addEventListener(events[deviceType].up, () => {
                draw = false;
              //append columns
              div.appendChild(col);
            //append grid to container
            container.appendChild(div);
        function checker(elementId) {
          let gridColumns = document.querySelectorAll(".gridCoM
          //loop through all boxes
          gridColumns.forEach((element) => {
            //if id matches then color
            if (elementId == element.id) {
              if (draw && !erase) {
                element.style.backgroundColor = colorButton.value;
              } else if (draw && erase) {
                element.style.backgroundColor = "transparent";
        //Clear Grid
        clearGridButton.addEventListener("clicM
          container.innerHTML = "";
        //Erase Button
        eraseBtn.addEventListener("click", () => {
          erase = true;
        //Paint button
        paintBtn.addEventListener("click", () => {
          erase = false;
        //Display grid width and height
        gridWidth.addEventListener("input", () => {
          widthValue.innerHTML =
            gridWidth.value < 9 ? `0${gridWidth.value}` : gridWidth.value;
        gridHeight.addEventListener("input", () => {
          heightValue.innerHTML =
            gridHeight.value < 9 ? `0${gridHeight.value}` : gridHeight.value;
        window.onload = () => {
          gridWidth.value = 0;
          gridHeight.value = 0;
text/html;charset=utf-8
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Pixel Art Generator</title>
        box-sizing: border-box;
        font-family: "Roboto Mono", monospace;
        background-color: #000000;
        background-color: #ffffff;
        width: 80vmin;
        position: absolute;
        transform: translate(-50%, -50%);
        padding: 40px 20px;
        border-radius: 8px;
        display: block;
        position: relative;
        font-size: 22px;
        bottom: -1px;
      .opt-wrapper {
        display: flex;
        justify-content: space-between;
        margin-bottom: 20px;
        background-color: #f200e2;
        color: #4d4d4e;
        border: none;
        border-radius: 5px;
        padding: 5px;
        transition: 0.3s ease;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      button:hover {
        background-color: #f7cdf7;
        color: #f200f2;
        box-shadow: 0px 10px 20px 0px rgba(77, 77, 78, 0.2);
      input[type="color"] {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        background-color: transparent;
        width: 70px;
        height: 40px;
        border: none;
      input[type="color"]::-webkit-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
      input[type="color"]::-moz-color-swatch {
        border-radius: 8px;
        border: 4px solid #4d4d4e;
        box-shadow: 0px 5px 10px 0px rgba(77, 77, 78, 0.2);
        height: 1em;
        border: 1px solid #4d4d4e;
       display: flex;
        font-size: 3em;
        color: #4d4d4e;
        text-transform: uppercase;
        animation: glow 2s ease infinite;
      @keyframes glow {
          text-shadow: 0px 0px 10px #f200e6;
          text-shadow: 0px 0px 20px #f200f2;
      @media only screen and (max-width: 768px) {
          height: 0.8em;
          width: 0.8em;
    <div class="wrapper">
      <div class="options">
        <div class="opt-wrapper">
          <div class="slider">
            <label for="width-range">Grid Width</label>
            <input type="range" id="width-range" min="1" max="35" />
            <span id="width-value">00</span>
          <div class="slider">
            <label for="height-range">Grid Height</label>
            <input type="range" id="height-range" min="1" max="35" />
         <span id="height-value">00</span>
        <div class="opt-wrapper">
          <button id="submit-grid">Create Grid</button>
          <button id="clear-grid">Clear Grid</button>
          <input type="color" id="color-input" />
          <button id="erase-btn">Erase</button>
          <button id="paint-btn">Paint</button>
      <div class="container"></div>
        //Initial references
        let container =M
 document.querySelector(".container");
        let gridButton = document.getElementById("submit-grid");
        let clearGridButton = document.getElementById("clear-grid");
        let gridWidth = document.getElementById("width-range");
        let gridHeight = document.getElementById("height-range");
        let colorButton = document.getElementById("color-input");
        let eraseBtn = document.getElementById("erase-btn");
        let paintBtn = document.getElementById("paint-btn");
        let widthValuM
e = document.getElementById("width-value");
        let heightValue = document.getElementById("height-value");
        //Events object
        let events = {
            down: "mousedown",
            move: "mousemove",
            up: "mouseup",
            down: "touchstart",
            move: "touchmove",
            up: "touchend",
        let deviceType = "";
        //Initially draw and eraM
        let draw = false;
        let erase = false;
        //Detect touch device
        const isTouchDevice = () => {
            //We try to create TouchEvent(it would fail for desktops and throw error)
            document.createEvent("TouchEvent");
            deviceType = "touch";
            return true;
          } catch (e) {
            deviceType = "mouse";
            return false;
        isTouchDevice();
        //Create Grid
        gridButton.addEventListener("click", () => {
          //Initially clear the grid (old grids cleared)
          container.innerHTML = "";
          //count variable for generating unique ids
          let count = 0;
          //loop for creating rows
          for (let i = 0; i < gridHeight.value; i++) {
            //incrementing count by 2
            count += 2;
            //Create row div
            let div = document.createElement("div");
            div.classLM
            //Create Columns
            for (let j = 0; j < gridWidth.value; j++) {
              count += 2;
              let col = document.createElement("div");
              col.classList.add("gridCol");
              /* We need unique ids for all columns (for touch screen specifically) */
              col.setAttribute("id", `gridCol${count}`);
              For eg if deviceType = "mouse"
              the statement for the event would be events[M
mouse].down which equals to mousedown
              if deviceType="touch"
              the statement for event would be events[touch].down which equals to touchstart
              col.addEventListener(events[deviceType].down, () => {
                //user starts drawing
                draw = true;
                //if erase = true then background = transparent else color
                if (erase) {
                  col.style.backgroundColor = "transparent";
                  col.style.backgroundColor = colorButton.value;
              col.addEventListener(events[deviceType].move, (e) => {
                /* elementFromPoint returns the element at x,y position of mouse */
                let elementId = document.elementFromPoint(
                  !isTouchDevice() ? e.clientX : e.touches[0].clientX,
                  !isTouchDevice() ? e.clientY : e.touches[0].clientY
                ).id;
              //checker
                checker(elementId);
              //Stop drawing
              col.addEventListener(events[deviceType].up, () => {
                draw = false;
              //append columns
              div.appendChild(col);
            //append grid to container
            container.appendChild(div);
        function checker(elementId) {
          let gridColumns = document.querySelectorAll(".gridCoM
          //loop through all boxes
          gridColumns.forEach((element) => {
            //if id matches then color
            if (elementId == element.id) {
              if (draw && !erase) {
                element.style.backgroundColor = colorButton.value;
              } else if (draw && erase) {
                element.style.backgroundColor = "transparent";
        //Clear Grid
        clearGridButton.addEventListener("clicM
          container.innerHTML = "";
        //Erase Button
        eraseBtn.addEventListener("click", () => {
          erase = true;
        //Paint button
        paintBtn.addEventListener("click", () => {
          erase = false;
        //Display grid width and height
        gridWidth.addEventListener("input", () => {
          widthValue.innerHTML =
            gridWidth.value < 9 ? `0${gridWidth.value}` : gridWidth.value;
        gridHeight.addEventListener("input", () => {
          heightValue.innerHTML =
            gridHeight.value < 9 ? `0${gridHeight.value}` : gridHeight.value;
        window.onload = () => {
          gridWidth.value = 0;
          gridHeight.value = 0;
text/html;charset=utf-8
        <title>Bitcoin Snake</title>
        <style type="text/css">
                background: #000000;
                font-family: 'Open Sans', sans-serif;
                font-size: 1.1em;
                color: #FFFFFF;
                text-align: left;
                font-size: 2em;
                color: #FFC400;
                text-shadow: 3px 3px 5px #FFC400;
                margin:M
                border: 10px solid #FFC400;
                border-radius: 10px;
                box-shadow: 0 0 10px #FFC400;
            select {
                font-family: 'Open Sans', sans-serif;
                font-size: 1em;
                color: #FFFFFF;
                border: 2px solid #FFC400;
                border-radius: 5px;
                background: #000000;
                padding: 5px;
            select:hover {
                animationM
: glow 0.5s ease-in-out infinite alternate;
            @keyframes glow {
                from {
                    box-shadow: 0 0 10px #FFC400;
                to {
                    box-shadow: 0 0 20px #FFC400;
                text-align: left;
        <h1>Bitcoin Snake</h1>
        <canvas id="game" width="300" height="300"></canvas>
        <script typeM
            //variables
            var canvas;
            var ctx;
            var snake;
            var snake_dir;
            var snake_next_dir;
            var game_loop;
            var game_speed = 200;
            var food;
            var score;
            //initializing the game
            function init() {
                //get the canvas element
                canvas = document.getElementById("game");
                ctx = canvas.getContext("2d");
     //create the snake
                snake = [
                    {x: 150, y: 150},
                    {x: 140, y: 150},
                    {x: 130, y: 150},
                    {x: 120, y: 150},
                    {x: 110, y: 150}
                //set the initial direction
                snake_dir = "right";
                snake_next_dir = snake_dir;
                //create the food
                food = {
                    x: Math.round(Math.random() * (canvas.widM
th - 10) / 10) * 10,
                    y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                //set the initial score
                score = 0;
                //draw everything to the canvas
                draw_game();
                //set the game loop
                game_loop = setInterval(paint, game_speed);
            //draw the game on the canvas
            function draw_game() {
                //clear the canvas
     ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.strokeStyle = "black";
                ctx.strokeRect(0, 0, canvas.width, canvas.height);
                //draw the snake
                for (var i = 0; i < snake.length; i++) {
                    var s = snake[i];
                    ctx.fillStyle = "#00FF00";
                    ctx.fillRect(s.x, s.y, 10, 10);
                    ctx.strokeStyle = "#0000FF";
                    ctx.sM
trokeRect(s.x, s.y, 10, 10);
                //draw the food
                ctx.fillStyle = "#FF0000";
                ctx.fillRect(food.x, food.y, 10, 10);
                ctx.strokeStyle = "#0000FF";
                ctx.strokeRect(food.x, food.y, 10, 10);
                //draw the score
                var score_text = "Score: " + score;
                ctx.fillText(score_text, 145, canvas.height - 10);
            //update the snake
            function update_M
                //get the snake's head
                var head_x = snake[0].x;
                var head_y = snake[0].y;
                //set the direction
                if (snake_next_dir == "right") head_x += 10;
                else if (snake_next_dir == "left") head_x -= 10;
                else if (snake_next_dir == "up") head_y -= 10;
                else if (snake_next_dir == "down") head_y += 10;
                //check if the snake has eaten the food
                if (head_x ==M
 food.x && head_y == food.y) {
                    //increase the score and create new food
                    score += 10;
                    food = {
                        x: Math.round(Math.random() * (canvas.width - 10) / 10) * 10,
                        y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                    };
                } else {
                    //remove the last element from the snake
                    snake.pop();
                //addM
                var new_head = {
                    x: head_x,
                    y: head_y
                //check if the snake has hit the wall or itself
                if (head_x < 0 || head_x > canvas.width - 10 || head_y < 0 || head_y > canvas.height - 10 || check_collision(head_x, head_y, snake)) {
                    //game over
                    game_over();
                } else {
                    //add the new head to the beginning of the snake
              snake.unshift(new_head);
            //check if the snake has collided with itself
            function check_collision(x, y, array) {
                for (var i = 0; i < array.length; i++) {
                    if (array[i].x == x && array[i].y == y)
                        return true;
                return false;
            //game over
            function game_over() {
                clearInterval(game_loop);
            ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.fillStyle = "black";
                ctx.font = "20px Verdana";
                ctx.fillText("Game Over!", 150, 200);
            //keyboard controls
            document.onkeydown = function(e) {
                //restart the game
                if (e.keyCode == 32) {
                    clearInterval(game_loop);
                    init();
            //change the direction
                if (e.keyCode == 37 && snake_dir != "right") snake_next_dir = "left";
                else if (e.keyCode == 38 && snake_dir != "down") snake_next_dir = "up";
                else if (e.keyCode == 39 && snake_dir != "left") snake_next_dir = "right";
                else if (e.keyCode == 40 && snake_dir != "up") snake_next_dir = "down";
            //main game loop
            function paint() {
                //update the snake
     update_snake();
                //draw the game
                draw_game();
                //set the direction
                snake_dir = snake_next_dir;
            //select the speed of the snake
            function select_speed(speed) {
                game_speed = speed;
                clearInterval(game_loop);
                game_loop = setInterval(paint, game_speed);
            //start the game
        <select onchange="select_speed(this.value)">
            <option value="200">Slow</option>
            <option value="150">Normal</option>
            <option value="75">Fast</option>
        </select></h3>
        <p>Press SPACEBAR to restart the game.</p>
text/html;charset=utf-8
    <title>Bitcoin Paint</title>
        background-color: #a7e3d3;
      #bitcoin-canvas {
        border: 1px solid #2f2b30;
        background-color: #f2a24c;
    <h1>Bitcoin Paint</h1>
    <canvas id="bitcoin-canvas" width="500" height="250">
    <button id="clear-btn">Clear Canvas</button>
    <button id="save-btn">Save Canvas</button>
type="color" id="draw-color" value="#000000" />
      <button id="pen-btn">Pen Tool</button>
      <button id="line-btn">Line Tool</button>
      <button id="rect-btn">Rectangle Tool</button>
      <button id="circle-btn">Circle Tool</button>
      <button id="eraser-btn">Eraser Tool</button>
      // Get the canvas and its drawing context
      const canvas = document.getElementById('bitcoin-canvas');
      const ctx = canvas.getContext('2d');
      // Clear the canvas
unction clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      // Save the canvas
      function saveCanvas() {
        let image = canvas.toDataURL("image/png");
        let link = document.createElement('a');
        link.download = 'BitcoinPaint.png';
        link.href = image;
        link.click();
      // Set up the drawing tools
      let drawing = false;
      let tool = 'pen';
      let color = '#000000';
      function penTooM
        tool = 'pen';
      function lineTool() {
        tool = 'line';
      // Rectangle tool
      function rectTool() {
        tool = 'rectangle';
      // Circle tool
      function circleTool() {
        tool = 'circle';
      // Eraser tool
      function eraserTool() {
        tool = 'eraser';
      // Set the color
      function setColor(e) {
        color = e.target.value;
      // Draw with the M
      function draw(e) {
        // Check if the user is drawing
        if (drawing) {
          const x = e.offsetX;
          const y = e.offsetY;
          // Check which tool is selected
          if (tool === 'pen') {
            ctx.lineWidth = 1;
            ctx.lineCap = 'round';
            ctx.strokeStyle = color;
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.beginPath();
            ctx.moveTo(x, y);
          } else if (tool === 'line') {
        ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.moveTo(startX, startY);
            ctx.lineTo(x, y);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'rectangle') {
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.rect(startX, startY, x - startX, y - startY);
            ctx.stroke();
            ctx.closePath();
          } else if (toolM
            ctx.lineWidth = 1;
            ctx.strokeStyle = color;
            ctx.beginPath();
            ctx.arc(startX, startY, radius, 0, Math.PI * 2);
            ctx.stroke();
            ctx.closePath();
          } else if (tool === 'eraser') {
            ctx.clearRect(x - 5, y - 5, 10, 10);
      // Get the starting coordinates
      let startX, startY, radius;
      function startDrawing(e) {
        drawing = true;
        startX = e.oM
        startY = e.offsetY;
        radius = Math.sqrt(
          Math.pow(startX - e.offsetX, 2) + Math.pow(startY - e.offsetY, 2)
      // Stop drawing
      function stopDrawing() {
        drawing = false;
      // Attach event listeners
      canvas.addEventListener('mousedown', startDrawing);
      canvas.addEventListener('mousemove', draw);
      canvas.addEventListener('mouseup', stopDrawing);
      document.getElementById('draw-color').addEventListener('M
      document.getElementById('clear-btn').addEventListener('click', clearCanvas);
      document.getElementById('save-btn').addEventListener('click', saveCanvas);
      document.getElementById('pen-btn').addEventListener('click', penTool);
      document.getElementById('line-btn').addEventListener('click', lineTool);
      document.getElementById('rect-btn').addEventListener('click', rectTool);
      document.getElementById('circle-btn').addEventListener('click', circleTool);
      documLjent.getElementById('eraser-btn').addEventListener('click', eraserTool);
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(250, 250, 250);
        box-shadow: 0 0 4px 1px #f7931a;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #f7931a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #f50606;
        text-shadow: 0 0 4px #f50606;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #f50606;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #fcfcfc;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0.5;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
      document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
 Zombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 2M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 1M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEM
lementById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
llRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
document.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
text/plain;charset=utf-8
  "name": "freedom.sats"
FjDOUT:9D735568981B689ECBF5163166C940F28EEAD2E215C5FFE179F74810EFADC543
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
FjDOUT:9D0CAF1F03A392D9800F7819773E5C09890260D4352E0AB4ACD0E007F4025603
FjDOUT:E873A3B5103E3D1DEC2FBBF5AC8EADC8B95099FED26B879928EF447A7FB3B493
FjDOUT:29B9535E69AEEB221C1715A5A0EB34AEA5C4016CE99AF0F4672EB4BACB6C0CA2
FjDOUT:D0F9677AFF786DCAFB6C6191EA5F7E76E1A8314E8D687B1C962DC1488733B3FF
FjDOUT:27312F8C4D78154339C7EE423284D93BEE02C463280DCF652F81D5A138A67726
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "moon"}, {"trait_type": "Body", "value": "black"}, {"trait_type": "Mane", "value": "white"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "bull horns"}, {"trait_type": "Artifacts", "value": "sword"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "carrot"}, {"trait_type": "Mane", "value": "fire"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "unicorn"}, {"trait_type": "Artifacts", "value": "axe"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "yellow"}, {"trait_type": "Body", "value": "black"}, {"trait_type": "Mane", "value": "grey"}, {"trait_type": "Claws", "value": "honey pot"}, {"trait_type": "Eyes", "value": "white"}, {"trait_type": "Headgear", "value": "dark wizard hat"}, {"trait_type": "Artifacts", "value": "sword"}]}
i{"collection":"Digital-Artifacts.io","artist":"Shlomi Sharabi","link":"https:\/\/digital-artifacts.io"}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "red"}, {"trait_type": "Body", "value": "dark blue"}, {"trait_type": "Mane", "value": "white"}, {"trait_type": "Claws", "value": "honey pot"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "mohawk"}, {"trait_type": "Artifacts", "value": "lamp"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "blue"}, {"trait_type": "Body", "value": "golden armor"}, {"trait_type": "Mane", "value": "black"}, {"trait_type": "Claws", "value": "BTC whitepaper"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "undead"}, {"trait_type": "Artifacts", "value": "dagger"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "green"}, {"trait_type": "Body", "value": "golden armor"}, {"trait_type": "Mane", "value": "greenish"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "laser beams"}, {"trait_type": "Headgear", "value": "none"}, {"trait_type": "Artifacts", "value": "wizard staff"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "red"}, {"trait_type": "Body", "value": "blue"}, {"trait_type": "Mane", "value": "black"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "red"}, {"trait_type": "Headgear", "value": "mohawk"}, {"trait_type": "Artifacts", "value": "dagger"}]}
i{"collection":"Digital-Artifacts.io","artist":"Shlomi Sharabi","link":"https:\/\/digital-artifacts.io"}
text/plain;charset=utf-8
  "name": "sunnydecree.sats"
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "pink"}, {"trait_type": "Body", "value": "white"}, {"trait_type": "Mane", "value": "whale"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "golden"}, {"trait_type": "Headgear", "value": "skull"}, {"trait_type": "Artifacts", "value": "parrot"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "blue"}, {"trait_type": "Body", "value": "dark blue"}, {"trait_type": "Mane", "value": "toxic green"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "regular"}, {"trait_type": "Headgear", "value": "none"}, {"trait_type": "Artifacts", "value": "ghostly companion"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "pink"}, {"trait_type": "Body", "value": "dark blue"}, {"trait_type": "Mane", "value": "grey"}, {"trait_type": "Claws", "value": "long claws"}, {"trait_type": "Eyes", "value": "green"}, {"trait_type": "Headgear", "value": "wizard hat"}, {"trait_type": "Artifacts", "value": "dagger"}]}
{"name": "Honey Badgers", "description": "Honey Badgers is a generative 10k PFP collection inscribed on the Bitcoin Blockchain through Ordinals. It is an experiment to see if a native NFT community can emerge and thrive on the native Bitcoin ecosystem. The project doesn\u2019t have a roadmap and its solely purpose is to deliver high quality pixelated art and a fun place to hang out with friends. The collection is Bitcoin themed with the M
honey badger meme being the center of it, but also has many other traits related to crypto and specifically the Bitcoin culture.", "creator": "Honey Badgers Team", "attributes": [{"trait_type": "Background", "value": "purple"}, {"trait_type": "Body", "value": "orc"}, {"trait_type": "Mane", "value": "toxic green"}, {"trait_type": "Claws", "value": "regular"}, {"trait_type": "Eyes", "value": "golden"}, {"trait_type": "Headgear", "value": "skull"}, {"trait_type": "Artifacts", "value": "wizard staff"}]}
i{"collection":"Digital-Artifacts.io","artist":"Shlomi Sharabi","link":"https:\/\/digital-artifacts.io"}
text/plain;charset=utf-8
  "name": "21millionen.sats"
text/plain;charset=utf-8
  "name": "einundzwanzigmillionen.sats"
text/plain;charset=utf-8
  "name": "fcbayern.sats"
text/plain;charset=utf-8
  "name": "mancity.sats"
text/plain;charset=utf-8
  "name": "liverpoolfc.sats"
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#1b1e1f"/>
   <ref id="color2" param="fill2" default="#fda76d"/>
   <ref id="color3" param="fill3" default="#72332f"/>
   <ref id="color4" param="fill4" default="#a14a30"/>
  <path fill="url(#color1)" d="M0 0v20h10V10h10V0H10Zm50 0v10h20V0H60Zm60M
 0v10h-10v20h10V20h10v10h10V10h-10V0Zm50 0v10h-10v10h30V10h-10V0Zm40 0v10h10V0Zm70 0v10h10V0Zm30 0v10h10v10h10V0h-10zm-70 10v30h20V30h-10V20h10V10h-10zm20 10v10h10V20ZM20 20v30h20V40H30V30h10V20H30Zm20 10v10h10V30Zm20-10v10h30V20H70Zm130 0v10h10V20Zm-50 10v10h10v10h10V30h-10ZM60 40v10H50v70h10v10h70v-10h10V50h-10V40H70Zm110 0v20h20V50h-10V40Zm40 0v10h-10v10h10v10h10V40Zm70 0v10h-10v20h10V60h10v10h10V50h-10V40ZM0 60v10h10V60Zm30 0v10H20v10h10v10h10V60Zm40 0h50v50H70V70Zm240 0v10h10V60ZM150 70v30h10V90h10V80h-10V70ZmM
30 0v10h10V70Zm50 0v20h10V80h10V70h-10zm60 20v10h10V90ZM0 100v30h10v-10h10v-10H10v-10zm30 10v30h20v-10H40v-20zm120 20v10h-10v10h20v-20zm150 0v10h10v-10ZM70 140v10h10v10h10v-10h10v-10H80Zm-50 10v10H10v10h30v-10H30v-10zm250 0v10h10v-10zm-160 10v10h10v-10zm70 0v20h10v-20zm30 0v10h30v-10h-20zm100 0v10h10v-10ZM50 170v10h10v-10zm-20 20v10h10v-10zm260 0v10h10v-10ZM0 200v10h10v-10zm180 0v40h-10v20h10v20h-10v20h-10v10h-10v10h30v-10h10v-10h10v-40h40v30h-10v10h-10v10h-10v10h30v-10h10v-10h10v-40h10v-20h-80v-40ZM50 210v10h10v-1M
0zm50 20v10h30v-10h-20zm-20 50v10H60v10H50v10H40v10h70v-10h10v-10h20v-10h10v-10H90ZM0 300v20h20v-10H10v-10zm310 0v10h-10v10h20v-20z"/>
  <path fill="url(#color2)" d="M20 0v10H10v10H0v40h10v10H0v30h10v10h10v10H10v10H0v70h10v10H0v10h10v10h10v10h10v10h10v10h10v10h10v10h30v-10h10v-10H90v-20h10v-10H90v-30H80v-20h20v10h30v-10h20v20h-10v30h-10v10h10v20h-10v10h10v10h40v-20h-10v-20h10v-80h10v20h20v-20h-10v-30h-20v-30h30v20h30v-20h30v30h-20v30h-10v20h30v20h-20v-10h-10v40h20v10h10v20h-10v20h20v-10h10v-10h10v-10h10v-10h10v-70hM
-10v-10h10V70h-10V60h10V20h-10V10h-10V0h-20v10h-10V0h-60v10h-10V0h-30v10h10v10h-30V10h10V0h-40v10h10v20h-10V20h-10v10h-10V10h10V0H70v10H50V0H30Zm210 10h20v10h10v10h-10v10h-20V20Zm20 20V20h-10v10ZM20 20h20v10h10v10H40v10H20V30Zm20 20V30H30v10Zm20-20h30v10H60Zm130 0h10v10h-10zm-50 10h20v20h-10V40h-10ZM60 40h70v10h10v70h-10v10H60v-10H50V50h10zm110 0h10v10h10v10h-20V50Zm40 0h10v30h-10V60h-10V50h10zm70 0h10v10h10v20h-10V60h-10v10h-10V50h10zM30 60h10v30H30V80H20V70h10zm120 10h10v10h10v10h-10v10h-10V80Zm30 0h10v10h-10zm50M
 0h20v10h-10v10h-10V80ZM90 80v10h10V80Zm200 10h10v10h-10ZM30 110h10v20h10v10H30v-20zm120 20h10v20h-20v-10h10zm150 0h10v10h-10ZM70 140h30v10H90v10H80v-10H70Zm-50 10h10v10h10v10H10v-10h10zm250 0h10v10h-10zm-160 10h10v10h-10zm-60 10h10v10H50Zm-20 20h10v10H30Zm170 0v10h-10v30h20v-40zm90 0h10v10h-10ZM50 210h10v10H50Zm170 10v20h10v-20zm-110 40v20h10v-20zm90 0v20h40v-20h-30z"/>
  <path fill="url(#color3)" d="M70 60v50h50V60H80Zm10 10h30v30H80V80Zm100 30v10h10v-10zm10 10v20h20v-20h-10zm70-10v10h10v-10zm0 10h-20v20h20v-10zmM
-60 30v20h20v-10h-10v-10zm40 0v10h-10v10h20v-20zm-30 30v10h-20v20h10v-10h10v40h-20v10h30v-20h10v20h30v-10h-20v-40h10v10h10v-20h-20v-10h-20ZM80 180v20h20v-20H90Zm50 0v20h20v-20h-10zm-40 30v20h20v-10h-10v-10zm40 0v10h-10v10h20v-20ZM0 230v10h10v-10zm100 10v30H90v10h20v-20h10v20h20v-10h-10v-30h-20ZM0 250v50h10v10h10v10h20v-10h10v-10H40v-10H30v-10H20v-10H10v-20zm20 0v10h10v-10zm290 0v20h-10v10h-10v10h-10v10h-10v10h-30v10h60v-10h10v-10h10v-50zm-30 40v-10h-10v10zm0-10h10v-10h-10ZM40 260v10h10v-10zm10 20v10h10v-10zm100 0v1M
0h10v-10zm0 10h-10v10h-20v10h-10v10h40v-20zm30 20v10h30v-10h-20z"/>
  <path fill="url(#color4)" d="M80 70v30h30V70H90Zm10 10h10v10H90Zm100 20v10h20v-10h-10zm0 10h-10v20h10v-10zm50-10v10h20v-10h-10zm20 10v20h10v-20zm-50 10v10h-10v10h10v10h10v10h10v-10h10v-10h10v-10h-10v-10h-20zm-30 60v20h10v-20zm80 0v20h10v-20zm-160 10v10H90v10h10v10h10v10h10v-10h10v-10h10v-10h-10v-10h-20ZM0 220v10h10v-10zm10 10v10H0v10h10v20h10v10h10v10h10v10h20v-10H50v-10h10v-10H40v-20H30v10H20v-10h10v-10H20v-10zm50 50v10h20v-10H70Zm30-40v20h10v-2M
0zm40 0v20h10v-20zm180 0v10h10v-10zm0 10h-10v10h-10v20h10v-10h10v-10zm-20 30h-10v10h10zm-10 10h-10v-10h-10v20h-10v10h20v-10h10zm-120-10v10h-10v20h10v-10h10v-20zm40 0v20h-10v10h30v-10h10v-10h10v-10h-30z"/>
  <script type="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refLiM
       var id = eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
       if (eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
if ( -1 != href.indexOf("?") )
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
       var valList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
  for ( var i = 0, iLen = params.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" );
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
       GetIdRefs( eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagNaM
   for ( var i = 0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachEl.attributes[ a ];
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
           var t = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
eachEl.setAttributeNS( attr.namespaceURI, attr.name, val);
text/plain;charset=utf-8
  "name": "cryptoinsurance.sats"
text/plain;charset=utf-8
6j4ion:5.QmQmXVwjquoxvTxcVgRWPTRFdMKhBSC42GFXbUMNZGT9mR
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'aws.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'icu.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'ijk.sats'}h!
Aj?=:ETH.ETH:0xb1E3f5b773BD5F966497f25A5a805b8162971F52:4017415::0
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6065.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8636.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8667.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8628.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4648.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6064.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4661.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6056.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6055.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8608.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8583.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6040.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7374.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4656.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6050.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4642.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7357.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6046.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4655.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7363.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7371.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4654.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8667.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8644.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7370.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7355.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8611.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4649.sats"}h!
text/plain;charset=utf-8
  "name": "zack.sats"
text/html;charset=utf-8
  <title>BTC Frogger</title>
  <meta charset="UTF-8">
    background: black;
    align-items: center;
    justify-content: center;
<canvas width="624" height="720" id="game"></canvas>
const canvas = document.getElementById('game');
const context = canvas.getContext('2d');
// a simple sprite pM
function Sprite(props) {
  // shortcut for assigning all object properties to the sprite
  Object.assign(this, props);
Sprite.prototype.render = function() {
  context.fillStyle = this.color;
  // draw a rectangle sprite
  if (this.shape === 'rect') {
    // by using a size less than the grid we can ensure there is a visual space
    // between each row
    context.fillRect(this.x, this.y + gridGap / 2, this.size, grid - gridGap);
  // draw a circle sprite. since size is the dM
iameter we need to divide by 2
  // to get the radius. also the x/y position needs to be centered instead of
  // the top-left corner of the sprite
    context.beginPath();
      this.x + this.size / 2, this.y + this.size / 2,
      this.size / 2 - gridGap / 2, 0, 2 * Math.PI
const frogger = new Sprite({
  color: 'greenyellow',
const scoredFroggers = [];
describes each obstacle in the row
  // end bank is safe
    spacing: [2],      // how many grid spaces between each obstacle
    color: '#de0004',  // color of the obstacle
    size: grid * 4,    // width (rect) / diameter (circle) of the obstacle
    shape: 'rect',     // shape of the obstacle (rect or circle)
    speed: 0.75        // how fast the obstacle moves and which direction
    spacing: [0,2,0,2,0,2,0,4],
    color: '#de0004'M
    shape: 'circle',
    color: '#c55843',
    color: '#c55843',
    spacing: [0,0,1],
    color: '#c2c4da',
    shape: 'circle',
    color: '#c2c4da',
    spacing: [3,3,7],
    color: '#de3cdd',
    spacing: [3,3,7],
    color: '#0bcb00',
    color: '#e5e401',
  // start zone is safe
// rows holds all the sprites for that row
for (let i = 0; i < patterns.length; i++) {
  const pattern = patterns[i];
  // skip empty patterns (safe zones)
  // allow there to be 1 extra pattern offscreen so the loop is seamless
  // (especially for the long log)
  let totalPatternWidth =
    pattern.spacing.M
reduce((acc, space) => acc + space, 0) * grid +
    pattern.spacing.length * pattern.size;
  while (endX < canvas.width) {
    endX += totalPatternWidth;
  endX += totalPatternWidth;
  // populate the row with sprites
  while (x < endX) {
    rows[i].push(new Sprite({
      y: grid * (i + 1),
    // move the next sprite over according to the spacing
    const spacing = pattern.spacing;
    x += pattern.size + spacing[index] * gM
    index = (index + 1) % spacing.length;
  requestAnimationFrame(loop);
  context.clearRect(0,0,canvas.width,canvas.height);
  // draw the game background
  context.fillStyle = '#000047';
  context.fillRect(0, grid, canvas.width, grid * 6);
  context.fillStyle = '#1ac300';
  context.fillRect(0, grid, canvas.width, 5);
  context.fillRect(0, grid, 5, grid);
  context.fillRect(canvas.width - 5, grid, 5, grid);
    context.fillRect(grid + grid * 3 * i, grid, grid * 2, grid);
  context.fillStyle = '#8500da';
  context.fillRect(0, 7 * grid, canvas.width, grid);
  context.fillRect(0, canvas.height - grid * 2, canvas.width, grid);
  // update and draw obstacles
  for (let r = 0; r < rows.length; r++) {
    const row = rows[r];
    for (let i = 0; i < row.length; i++) {
      const sprite = row[i]
      sprite.x += sprite.speed;
      sprite.render();
// loop sprite around the screen
      // sprite is moving to the left and goes offscreen
      if (sprite.speed < 0 && sprite.x < 0 - sprite.size) {
        // find the rightmost sprite
        let rightMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x > rightMostSprite.x) {
            rightMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
          rightMostSprite.x + rightMostSprite.size +
          spacing[rightMostSprite.index] * grid;
        sprite.index = (rightMostSprite.index + 1) % spacing.length;
      // sprite is moving to the right and goes offscreen
      if (sprite.speed > 0 && sprite.x > canvas.width) {
        // find the leftmost sprite
        let leftMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x < leftMostSprite.x) {
            leftMostSprite = row[M
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
        let index = leftMostSprite.index - 1;
        index = index >= 0 ? index : spacing.length - 1;
        sprite.x = leftMostSprite.x - spacing[index] * grid - sprite.size;
        sprite.index = index;
  frogger.x += frogger.speed || 0;
  // draw scored froggers
  scoredFroggers.forEach(frM
og => frog.render());
  // check for collision with all sprites in the same row as frogger
  const froggerRow = frogger.y / grid - 1 | 0;
  let collision = false;
  for (let i = 0; i < rows[froggerRow].length; i++) {
    let sprite = rows[froggerRow][i];
    // axis-aligned bounding box (AABB) collision check
    // treat any circles as rectangles for the purposes of collision
    if (frogger.x < sprite.x + sprite.size - gridGap &&
        frogger.x + grid - gridGap > sprite.x &&
        frogger.y < sM
        frogger.y + grid > sprite.y) {
      collision = true;
      // reset frogger if got hit by car
      if (froggerRow > rows.length / 2) {
        frogger.x = grid * 6;
        frogger.y = grid * 13;
      // move frogger along with obstacle
        frogger.speed = sprite.speed;
    // if fogger isn't colliding reset speed
    frogger.speed = 0;
    // frogger got to end bank (goal every 3 cols)
 = (frogger.x + grid / 2) / grid | 0;
    if (froggerRow === 0 && col % 3 === 0 &&
        // check to see if there isn't a scored frog already there
        !scoredFroggers.find(frog => frog.x === col * grid)) {
      scoredFroggers.push(new Sprite({
        x: col * grid,
        y: frogger.y + 5
    // reset frogger if not on obstacle in river
    if (froggerRow < rows.length / 2 - 1) {
      frogger.x = grid * 6;
      frogger.y = grid * 13;
// listen to keyboard events to move frogger
document.addEventListener('keydown', function(e) {
  if (e.which === 37) {
    frogger.x -= grid;
  // right arrow key
  else if (e.which === 39) {
    frogger.x += grid;
  else if (e.which === 38) {
    frogger.y -= grid;
  else if (e.which === 40) {
    frogger.y += grid;
  // clamp frogger position to stay on screen
  frogger.x = Math.min( Math.max(0, frogger.x), canvas.wiL
  frogger.y = Math.min( Math.max(grid, frogger.y), canvas.height - grid * 2);
requestAnimationFrame(loop);
text/html;charset=utf-8
  <title>BTC Frogger</title>
  <meta charset="UTF-8">
    background: black;
    align-items: center;
    justify-content: center;
<canvas width="624" height="720" id="game"></canvas>
const canvas = document.getElementById('game');
const context = canvas.getContext('2d');
// a simple sprite pM
function Sprite(props) {
  // shortcut for assigning all object properties to the sprite
  Object.assign(this, props);
Sprite.prototype.render = function() {
  context.fillStyle = this.color;
  // draw a rectangle sprite
  if (this.shape === 'rect') {
    // by using a size less than the grid we can ensure there is a visual space
    // between each row
    context.fillRect(this.x, this.y + gridGap / 2, this.size, grid - gridGap);
  // draw a circle sprite. since size is the dM
iameter we need to divide by 2
  // to get the radius. also the x/y position needs to be centered instead of
  // the top-left corner of the sprite
    context.beginPath();
      this.x + this.size / 2, this.y + this.size / 2,
      this.size / 2 - gridGap / 2, 0, 2 * Math.PI
const frogger = new Sprite({
  color: 'greenyellow',
const scoredFroggers = [];
describes each obstacle in the row
  // end bank is safe
    spacing: [2],      // how many grid spaces between each obstacle
    color: '#2F2F48',  // color of the obstacle
    size: grid * 4,    // width (rect) / diameter (circle) of the obstacle
    shape: 'rect',     // shape of the obstacle (rect or circle)
    speed: 0.75        // how fast the obstacle moves and which direction
    spacing: [0,2,0,2,0,2,0,4],
    color: '#7E3F90',
    shape: 'circle',
    color: '#D56417',
    color: '#D56417',
    spacing: [0,0,1],
    color: '#D8C2F2',
    shape: 'circle',
    color: '#D8C2F2',
    spacing: [3,3,7],
    color: '#A82FFF',
    spacing: [3,3,7],
    color: '#0BB800',
    color: '#F2ED00',
  // start zone is safe
// rows holds all the sprites for that row
for (let i = 0; i < patterns.length; i++) {
  const pattern = patterns[i];
  // skip empty patterns (safe zones)
  // allow there to be 1 extra pattern offscreen so the loop is seamless
  // (especially for the long log)
  let totalPatternWidth =
    pattern.spacing.reduM
ce((acc, space) => acc + space, 0) * grid +
    pattern.spacing.length * pattern.size;
  while (endX < canvas.width) {
    endX += totalPatternWidth;
  endX += totalPatternWidth;
  // populate the row with sprites
  while (x < endX) {
    rows[i].push(new Sprite({
      y: grid * (i + 1),
    // move the next sprite over according to the spacing
    const spacing = pattern.spacing;
    x += pattern.size + spacing[index] * grid;M
    index = (index + 1) % spacing.length;
  requestAnimationFrame(loop);
  context.clearRect(0,0,canvas.width,canvas.height);
  // draw the game background
  context.fillStyle = '#000047';
  context.fillRect(0, grid, canvas.width, grid * 6);
  context.fillStyle = '#1ac300';
  context.fillRect(0, grid, canvas.width, 5);
  context.fillRect(0, grid, 5, grid);
  context.fillRect(canvas.width - 5, grid, 5, grid);
  for (let i = 0; i < M
    context.fillRect(grid + grid * 3 * i, grid, grid * 2, grid);
  context.fillStyle = '#8500da';
  context.fillRect(0, 7 * grid, canvas.width, grid);
  context.fillRect(0, canvas.height - grid * 2, canvas.width, grid);
  // update and draw obstacles
  for (let r = 0; r < rows.length; r++) {
    const row = rows[r];
    for (let i = 0; i < row.length; i++) {
      const sprite = row[i]
      sprite.x += sprite.speed;
      sprite.render();
oop sprite around the screen
      // sprite is moving to the left and goes offscreen
      if (sprite.speed < 0 && sprite.x < 0 - sprite.size) {
        // find the rightmost sprite
        let rightMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x > rightMostSprite.x) {
            rightMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
          rightMostSprite.x + rightMostSprite.size +
          spacing[rightMostSprite.index] * grid;
        sprite.index = (rightMostSprite.index + 1) % spacing.length;
      // sprite is moving to the right and goes offscreen
      if (sprite.speed > 0 && sprite.x > canvas.width) {
        // find the leftmost sprite
        let leftMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x < leftMostSprite.x) {
            leftMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
        let index = leftMostSprite.index - 1;
        index = index >= 0 ? index : spacing.length - 1;
        sprite.x = leftMostSprite.x - spacing[index] * grid - sprite.size;
        sprite.index = index;
  frogger.x += frogger.speed || 0;
  // draw scored froggers
  scoredFroggers.forEach(frog =M
  // check for collision with all sprites in the same row as frogger
  const froggerRow = frogger.y / grid - 1 | 0;
  let collision = false;
  for (let i = 0; i < rows[froggerRow].length; i++) {
    let sprite = rows[froggerRow][i];
    // axis-aligned bounding box (AABB) collision check
    // treat any circles as rectangles for the purposes of collision
    if (frogger.x < sprite.x + sprite.size - gridGap &&
        frogger.x + grid - gridGap > sprite.x &&
        frogger.y < spritM
        frogger.y + grid > sprite.y) {
      collision = true;
      // reset frogger if got hit by car
      if (froggerRow > rows.length / 2) {
        frogger.x = grid * 6;
        frogger.y = grid * 13;
      // move frogger along with obstacle
        frogger.speed = sprite.speed;
    // if fogger isn't colliding reset speed
    frogger.speed = 0;
    // frogger got to end bank (goal every 3 cols)
frogger.x + grid / 2) / grid | 0;
    if (froggerRow === 0 && col % 3 === 0 &&
        // check to see if there isn't a scored frog already there
        !scoredFroggers.find(frog => frog.x === col * grid)) {
      scoredFroggers.push(new Sprite({
        x: col * grid,
        y: frogger.y + 5
    // reset frogger if not on obstacle in river
    if (froggerRow < rows.length / 2 - 1) {
      frogger.x = grid * 6;
      frogger.y = grid * 13;
isten to keyboard events to move frogger
document.addEventListener('keydown', function(e) {
  if (e.which === 37) {
    frogger.x -= grid;
  // right arrow key
  else if (e.which === 39) {
    frogger.x += grid;
  else if (e.which === 38) {
    frogger.y -= grid;
  else if (e.which === 40) {
    frogger.y += grid;
  // clamp frogger position to stay on screen
  frogger.x = Math.min( Math.max(0, frogger.x), canvas.width L
  frogger.y = Math.min( Math.max(grid, frogger.y), canvas.height - grid * 2);
requestAnimationFrame(loop);
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(190, 247, 216);
        box-shadow: 0 0 4px 1px #b9f287;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #25f71a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #f506c5;
        text-shadow: 0 0 4px #f388ee;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #f506e5;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #ffff26;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0.5;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
      document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
 Zombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 2M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 1M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEM
lementById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
llRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
document.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
text/html;charset=utf-8
  <title>BTC Frogger</title>
  <meta charset="UTF-8">
    background: black;
    align-items: center;
    justify-content: center;
<canvas width="624" height="720" id="game"></canvas>
const canvas = document.getElementById('game');
const context = canvas.getContext('2d');
// a simple sprite pM
function Sprite(props) {
  // shortcut for assigning all object properties to the sprite
  Object.assign(this, props);
Sprite.prototype.render = function() {
  context.fillStyle = this.color;
  // draw a rectangle sprite
  if (this.shape === 'rect') {
    // by using a size less than the grid we can ensure there is a visual space
    // between each row
    context.fillRect(this.x, this.y + gridGap / 2, this.size, grid - gridGap);
  // draw a circle sprite. since size is the dM
iameter we need to divide by 2
  // to get the radius. also the x/y position needs to be centered instead of
  // the top-left corner of the sprite
    context.beginPath();
      this.x + this.size / 2, this.y + this.size / 2,
      this.size / 2 - gridGap / 2, 0, 2 * Math.PI
const frogger = new Sprite({
  color: 'greenyellow',
const scoredFroggers = [];
describes each obstacle in the row
  // end bank is safe
    spacing: [2],      // how many grid spaces between each obstacle
    color: '#A8A878',  // color of the obstacle
    size: grid * 4,    // width (rect) / diameter (circle) of the obstacle
    shape: 'rect',     // shape of the obstacle (rect or circle)
    speed: 0.75        // how fast the obstacle moves and which direction
    spacing: [0,2,0,2,0,2,0,4],
    color: '#A8A878',
    shape: 'circle',
    color: '#D4AF37',
    color: '#D4AF37',
    spacing: [0,0,1],
    color: '#FFEBCD',
    shape: 'circle',
    color: '#FFEBCD',
    spacing: [3,3,7],
    color: '#DB7093',
    spacing: [3,3,7],
    color: '#32CD32',
    color: '#FFD700',
  // start zone is safe
// rows holds all the sprites for that row
for (let i = 0; i < patterns.length; i++) {
  const pattern = patterns[i];
  // skip empty patterns (safe zones)
  // allow there to be 1 extra pattern offscreen so the loop is seamless
  // (especially for the long log)
  let totalPatternWidth =
    pattern.spacing.reduM
ce((acc, space) => acc + space, 0) * grid +
    pattern.spacing.length * pattern.size;
  while (endX < canvas.width) {
    endX += totalPatternWidth;
  endX += totalPatternWidth;
  // populate the row with sprites
  while (x < endX) {
    rows[i].push(new Sprite({
      y: grid * (i + 1),
    // move the next sprite over according to the spacing
    const spacing = pattern.spacing;
    x += pattern.size + spacing[index] * grid;M
    index = (index + 1) % spacing.length;
  requestAnimationFrame(loop);
  context.clearRect(0,0,canvas.width,canvas.height);
  // draw the game background
  context.fillStyle = '#000047';
  context.fillRect(0, grid, canvas.width, grid * 6);
  context.fillStyle = '#1ac300';
  context.fillRect(0, grid, canvas.width, 5);
  context.fillRect(0, grid, 5, grid);
  context.fillRect(canvas.width - 5, grid, 5, grid);
  for (let i = 0; i < M
    context.fillRect(grid + grid * 3 * i, grid, grid * 2, grid);
  context.fillStyle = '#8500da';
  context.fillRect(0, 7 * grid, canvas.width, grid);
  context.fillRect(0, canvas.height - grid * 2, canvas.width, grid);
  // update and draw obstacles
  for (let r = 0; r < rows.length; r++) {
    const row = rows[r];
    for (let i = 0; i < row.length; i++) {
      const sprite = row[i]
      sprite.x += sprite.speed;
      sprite.render();
oop sprite around the screen
      // sprite is moving to the left and goes offscreen
      if (sprite.speed < 0 && sprite.x < 0 - sprite.size) {
        // find the rightmost sprite
        let rightMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x > rightMostSprite.x) {
            rightMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
          rightMostSprite.x + rightMostSprite.size +
          spacing[rightMostSprite.index] * grid;
        sprite.index = (rightMostSprite.index + 1) % spacing.length;
      // sprite is moving to the right and goes offscreen
      if (sprite.speed > 0 && sprite.x > canvas.width) {
        // find the leftmost sprite
        let leftMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x < leftMostSprite.x) {
            leftMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
        let index = leftMostSprite.index - 1;
        index = index >= 0 ? index : spacing.length - 1;
        sprite.x = leftMostSprite.x - spacing[index] * grid - sprite.size;
        sprite.index = index;
  frogger.x += frogger.speed || 0;
  // draw scored froggers
  scoredFroggers.forEach(frog =M
  // check for collision with all sprites in the same row as frogger
  const froggerRow = frogger.y / grid - 1 | 0;
  let collision = false;
  for (let i = 0; i < rows[froggerRow].length; i++) {
    let sprite = rows[froggerRow][i];
    // axis-aligned bounding box (AABB) collision check
    // treat any circles as rectangles for the purposes of collision
    if (frogger.x < sprite.x + sprite.size - gridGap &&
        frogger.x + grid - gridGap > sprite.x &&
        frogger.y < spritM
        frogger.y + grid > sprite.y) {
      collision = true;
      // reset frogger if got hit by car
      if (froggerRow > rows.length / 2) {
        frogger.x = grid * 6;
        frogger.y = grid * 13;
      // move frogger along with obstacle
        frogger.speed = sprite.speed;
    // if fogger isn't colliding reset speed
    frogger.speed = 0;
    // frogger got to end bank (goal every 3 cols)
frogger.x + grid / 2) / grid | 0;
    if (froggerRow === 0 && col % 3 === 0 &&
        // check to see if there isn't a scored frog already there
        !scoredFroggers.find(frog => frog.x === col * grid)) {
      scoredFroggers.push(new Sprite({
        x: col * grid,
        y: frogger.y + 5
    // reset frogger if not on obstacle in river
    if (froggerRow < rows.length / 2 - 1) {
      frogger.x = grid * 6;
      frogger.y = grid * 13;
isten to keyboard events to move frogger
document.addEventListener('keydown', function(e) {
  if (e.which === 37) {
    frogger.x -= grid;
  // right arrow key
  else if (e.which === 39) {
    frogger.x += grid;
  else if (e.which === 38) {
    frogger.y -= grid;
  else if (e.which === 40) {
    frogger.y += grid;
  // clamp frogger position to stay on screen
  frogger.x = Math.min( Math.max(0, frogger.x), canvas.width L
  frogger.y = Math.min( Math.max(grid, frogger.y), canvas.height - grid * 2);
  // Game made by Ryan Novak
requestAnimationFrame(loop);
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(250, 250, 250);
        box-shadow: 0 0 4px 1px #f7931a;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #f7931a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #f50606;
        text-shadow: 0 0 4px #f50606;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #f50606;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #fcfcfc;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0.5;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
      document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
 Zombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 2M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 1M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEM
lementById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
llRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
document.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
text/html;charset=utf-8
        <title>Bitcoin Snake</title>
        <style type="text/css">
                background: #323232;
                font-family: 'Open Sans', sans-serif;
                font-size: 1.1em;
                color: #FFFFFF;
                text-align: left;
                font-size: 2em;
                color: #FFC400;
                text-shadow: 3px 3px 5px #FFC400;
                margin:M
                border: 10px solid #FFC400;
                border-radius: 10px;
                box-shadow: 0 0 10px #FFC400;
            select {
                font-family: 'Open Sans', sans-serif;
                font-size: 1em;
                color: #FFFFFF;
                border: 2px solid #FFC400;
                border-radius: 5px;
                background: #323232;
                padding: 5px;
            select:hover {
                animationM
: glow 0.5s ease-in-out infinite alternate;
            @keyframes glow {
                from {
                    box-shadow: 0 0 10px #FFC400;
                to {
                    box-shadow: 0 0 20px #FFC400;
                text-align: left;
        <h1>Bitcoin Snake</h1>
        <canvas id="game" width="300" height="300"></canvas>
        <script typeM
            //variables
            var canvas;
            var ctx;
            var snake;
            var snake_dir;
            var snake_next_dir;
            var game_loop;
            var game_speed = 200;
            var food;
            var score;
            //initializing the game
            function init() {
                //get the canvas element
                canvas = document.getElementById("game");
                ctx = canvas.getContext("2d");
     //create the snake
                snake = [
                    {x: 150, y: 150},
                    {x: 140, y: 150},
                    {x: 130, y: 150},
                    {x: 120, y: 150},
                    {x: 110, y: 150}
                //set the initial direction
                snake_dir = "right";
                snake_next_dir = snake_dir;
                //create the food
                food = {
                    x: Math.round(Math.random() * (canvas.widM
th - 10) / 10) * 10,
                    y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                //set the initial score
                score = 0;
                //draw everything to the canvas
                draw_game();
                //set the game loop
                game_loop = setInterval(paint, game_speed);
            //draw the game on the canvas
            function draw_game() {
                //clear the canvas
     ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.strokeStyle = "black";
                ctx.strokeRect(0, 0, canvas.width, canvas.height);
                //draw the snake
                for (var i = 0; i < snake.length; i++) {
                    var s = snake[i];
                    ctx.fillStyle = "#00FF00";
                    ctx.fillRect(s.x, s.y, 10, 10);
                    ctx.strokeStyle = "#0000FF";
                    ctx.sM
trokeRect(s.x, s.y, 10, 10);
                //draw the food
                ctx.fillStyle = "#FF0000";
                ctx.fillRect(food.x, food.y, 10, 10);
                ctx.strokeStyle = "#0000FF";
                ctx.strokeRect(food.x, food.y, 10, 10);
                //draw the score
                var score_text = "Score: " + score;
                ctx.fillText(score_text, 145, canvas.height - 10);
            //update the snake
            function update_M
                //get the snake's head
                var head_x = snake[0].x;
                var head_y = snake[0].y;
                //set the direction
                if (snake_next_dir == "right") head_x += 10;
                else if (snake_next_dir == "left") head_x -= 10;
                else if (snake_next_dir == "up") head_y -= 10;
                else if (snake_next_dir == "down") head_y += 10;
                //check if the snake has eaten the food
                if (head_x ==M
 food.x && head_y == food.y) {
                    //increase the score and create new food
                    score += 10;
                    food = {
                        x: Math.round(Math.random() * (canvas.width - 10) / 10) * 10,
                        y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                    };
                } else {
                    //remove the last element from the snake
                    snake.pop();
                //addM
                var new_head = {
                    x: head_x,
                    y: head_y
                //check if the snake has hit the wall or itself
                if (head_x < 0 || head_x > canvas.width - 10 || head_y < 0 || head_y > canvas.height - 10 || check_collision(head_x, head_y, snake)) {
                    //game over
                    game_over();
                } else {
                    //add the new head to the beginning of the snake
              snake.unshift(new_head);
            //check if the snake has collided with itself
            function check_collision(x, y, array) {
                for (var i = 0; i < array.length; i++) {
                    if (array[i].x == x && array[i].y == y)
                        return true;
                return false;
            //game over
            function game_over() {
                clearInterval(game_loop);
            ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.fillStyle = "black";
                ctx.font = "20px Verdana";
                ctx.fillText("Game Over!", 150, 200);
            //keyboard controls
            document.onkeydown = function(e) {
                //restart the game
                if (e.keyCode == 32) {
                    clearInterval(game_loop);
                    init();
            //change the direction
                if (e.keyCode == 37 && snake_dir != "right") snake_next_dir = "left";
                else if (e.keyCode == 38 && snake_dir != "down") snake_next_dir = "up";
                else if (e.keyCode == 39 && snake_dir != "left") snake_next_dir = "right";
                else if (e.keyCode == 40 && snake_dir != "up") snake_next_dir = "down";
            //main game loop
            function paint() {
                //update the snake
     update_snake();
                //draw the game
                draw_game();
                //set the direction
                snake_dir = snake_next_dir;
            //select the speed of the snake
            function select_speed(speed) {
                game_speed = speed;
                clearInterval(game_loop);
                game_loop = setInterval(paint, game_speed);
            //start the game
        <select onchange="select_speed(this.value)">
            <option value="200">Slow</option>
            <option value="150">Normal</option>
            <option value="75">Fast</option>
        </select></h3>
        <p>Press SPACEBAR to restart the game.</p>
text/html;charset=utf-8
        <title>Bitcoin Snake</title>
        <style type="text/css">
                background: #2D2D2D;
                font-family: 'Open Sans', sans-serif;
                font-size: 1.1em;
                color: #F0F0F0;
                text-align: left;
                font-size: 2em;
                color: #eeff00;
                text-shadow: 3px 3px 5px #e5ff00;
                margin:M
                border: 10px solid #3cff00;
                border-radius: 10px;
                box-shadow: 0 0 10px #26ff00;
            select {
                font-family: 'Open Sans', sans-serif;
                font-size: 1em;
                color: #f1f1d5;
                border: 2px solid #44ff00;
                border-radius: 5px;
                background: #2D2D2D;
                padding: 5px;
            select:hover {
                animationM
: glow 0.5s ease-in-out infinite alternate;
            @keyframes glow {
                from {
                    box-shadow: 0 0 10px #40ff00;
                to {
                    box-shadow: 0 0 20px #22ff00;
                text-align: left;
        <h1>Bitcoin Snake</h1>
        <canvas id="game" width="300" height="300"></canvas>
        <script typeM
            //variables
            var canvas;
            var ctx;
            var snake;
            var snake_dir;
            var snake_next_dir;
            var game_loop;
            var game_speed = 200;
            var food;
            var score;
            //initializing the game
            function init() {
                //get the canvas element
                canvas = document.getElementById("game");
                ctx = canvas.getContext("2d");
     //create the snake
                snake = [
                    {x: 150, y: 150},
                    {x: 140, y: 150},
                    {x: 130, y: 150},
                    {x: 120, y: 150},
                    {x: 110, y: 150}
                //set the initial direction
                snake_dir = "right";
                snake_next_dir = snake_dir;
                //create the food
                food = {
                    x: Math.round(Math.random() * (canvas.widM
th - 10) / 10) * 10,
                    y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                //set the initial score
                score = 0;
                //draw everything to the canvas
                draw_game();
                //set the game loop
                game_loop = setInterval(paint, game_speed);
            //draw the game on the canvas
            function draw_game() {
                //clear the canvas
     ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.strokeStyle = "black";
                ctx.strokeRect(0, 0, canvas.width, canvas.height);
                //draw the snake
                for (var i = 0; i < snake.length; i++) {
                    var s = snake[i];
                    ctx.fillStyle = "#00FF00";
                    ctx.fillRect(s.x, s.y, 10, 10);
                    ctx.strokeStyle = "#0000FF";
                    ctx.sM
trokeRect(s.x, s.y, 10, 10);
                //draw the food
                ctx.fillStyle = "#FF0000";
                ctx.fillRect(food.x, food.y, 10, 10);
                ctx.strokeStyle = "#0000FF";
                ctx.strokeRect(food.x, food.y, 10, 10);
                //draw the score
                var score_text = "Score: " + score;
                ctx.fillText(score_text, 145, canvas.height - 10);
            //update the snake
            function update_M
                //get the snake's head
                var head_x = snake[0].x;
                var head_y = snake[0].y;
                //set the direction
                if (snake_next_dir == "right") head_x += 10;
                else if (snake_next_dir == "left") head_x -= 10;
                else if (snake_next_dir == "up") head_y -= 10;
                else if (snake_next_dir == "down") head_y += 10;
                //check if the snake has eaten the food
                if (head_x ==M
 food.x && head_y == food.y) {
                    //increase the score and create new food
                    score += 10;
                    food = {
                        x: Math.round(Math.random() * (canvas.width - 10) / 10) * 10,
                        y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                    };
                } else {
                    //remove the last element from the snake
                    snake.pop();
                //addM
                var new_head = {
                    x: head_x,
                    y: head_y
                //check if the snake has hit the wall or itself
                if (head_x < 0 || head_x > canvas.width - 10 || head_y < 0 || head_y > canvas.height - 10 || check_collision(head_x, head_y, snake)) {
                    //game over
                    game_over();
                } else {
                    //add the new head to the beginning of the snake
              snake.unshift(new_head);
            //check if the snake has collided with itself
            function check_collision(x, y, array) {
                for (var i = 0; i < array.length; i++) {
                    if (array[i].x == x && array[i].y == y)
                        return true;
                return false;
            //game over
            function game_over() {
                clearInterval(game_loop);
            ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.fillStyle = "black";
                ctx.font = "20px Verdana";
                ctx.fillText("Game Over!", 150, 200);
            //keyboard controls
            document.onkeydown = function(e) {
                //restart the game
                if (e.keyCode == 32) {
                    clearInterval(game_loop);
                    init();
            //change the direction
                if (e.keyCode == 37 && snake_dir != "right") snake_next_dir = "left";
                else if (e.keyCode == 38 && snake_dir != "down") snake_next_dir = "up";
                else if (e.keyCode == 39 && snake_dir != "left") snake_next_dir = "right";
                else if (e.keyCode == 40 && snake_dir != "up") snake_next_dir = "down";
            //main game loop
            function paint() {
                //update the snake
     update_snake();
                //draw the game
                draw_game();
                //set the direction
                snake_dir = snake_next_dir;
            //select the speed of the snake
            function select_speed(speed) {
                game_speed = speed;
                clearInterval(game_loop);
                game_loop = setInterval(paint, game_speed);
            //start the game
        <select onchange="select_speed(this.value)">
            <option value="200">Slow</option>
            <option value="150">Normal</option>
            <option value="75">Fast</option>
        </select></h3>
        <p>Press SPACEBAR to restart the game.</p>
text/html;charset=utf-8
        <title>Bitcoin Snake</title>
        <style type="text/css">
                background: #0a0a0a;
                font-family: 'Open Sans', sans-serif;
                font-size: 1.1em;
                color: #f3ceed;
                text-align: left;
                font-size: 2em;
                color: #f31af7;
                text-shadow: 3px 3px 5px #c01af7;
                margin:M
                border: 10px solid #e81af7;
                border-radius: 10px;
                box-shadow: 0 0 10px #f71af7;
            select {
                font-family: 'Open Sans', sans-serif;
                font-size: 1em;
                color: #efddf3;
                border: 2px solid #e51af7;
                border-radius: 5px;
                background: #0a0a0a;
                padding: 5px;
            select:hover {
                animationM
: glow 0.5s ease-in-out infinite alternate;
            @keyframes glow {
                from {
                    box-shadow: 0 0 10px #e718fa;
                to {
                    box-shadow: 0 0 20px #fa4fe6;
                text-align: left;
        <h1>Bitcoin Snake</h1>
        <canvas id="game" width="300" height="300"></canvas>
        <script typeM
            //variables
            var canvas;
            var ctx;
            var snake;
            var snake_dir;
            var snake_next_dir;
            var game_loop;
            var game_speed = 200;
            var food;
            var score;
            //initializing the game
            function init() {
                //get the canvas element
                canvas = document.getElementById("game");
                ctx = canvas.getContext("2d");
     //create the snake
                snake = [
                    {x: 150, y: 150},
                    {x: 140, y: 150},
                    {x: 130, y: 150},
                    {x: 120, y: 150},
                    {x: 110, y: 150}
                //set the initial direction
                snake_dir = "right";
                snake_next_dir = snake_dir;
                //create the food
                food = {
                    x: Math.round(Math.random() * (canvas.widM
th - 10) / 10) * 10,
                    y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                //set the initial score
                score = 0;
                //draw everything to the canvas
                draw_game();
                //set the game loop
                game_loop = setInterval(paint, game_speed);
            //draw the game on the canvas
            function draw_game() {
                //clear the canvas
     ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.strokeStyle = "black";
                ctx.strokeRect(0, 0, canvas.width, canvas.height);
                //draw the snake
                for (var i = 0; i < snake.length; i++) {
                    var s = snake[i];
                    ctx.fillStyle = "#00FF00";
                    ctx.fillRect(s.x, s.y, 10, 10);
                    ctx.strokeStyle = "#0000FF";
                    ctx.sM
trokeRect(s.x, s.y, 10, 10);
                //draw the food
                ctx.fillStyle = "#FF0000";
                ctx.fillRect(food.x, food.y, 10, 10);
                ctx.strokeStyle = "#0000FF";
                ctx.strokeRect(food.x, food.y, 10, 10);
                //draw the score
                var score_text = "Score: " + score;
                ctx.fillText(score_text, 145, canvas.height - 10);
            //update the snake
            function update_M
                //get the snake's head
                var head_x = snake[0].x;
                var head_y = snake[0].y;
                //set the direction
                if (snake_next_dir == "right") head_x += 10;
                else if (snake_next_dir == "left") head_x -= 10;
                else if (snake_next_dir == "up") head_y -= 10;
                else if (snake_next_dir == "down") head_y += 10;
                //check if the snake has eaten the food
                if (head_x ==M
 food.x && head_y == food.y) {
                    //increase the score and create new food
                    score += 10;
                    food = {
                        x: Math.round(Math.random() * (canvas.width - 10) / 10) * 10,
                        y: Math.round(Math.random() * (canvas.height - 10) / 10) * 10
                    };
                } else {
                    //remove the last element from the snake
                    snake.pop();
                //addM
                var new_head = {
                    x: head_x,
                    y: head_y
                //check if the snake has hit the wall or itself
                if (head_x < 0 || head_x > canvas.width - 10 || head_y < 0 || head_y > canvas.height - 10 || check_collision(head_x, head_y, snake)) {
                    //game over
                    game_over();
                } else {
                    //add the new head to the beginning of the snake
              snake.unshift(new_head);
            //check if the snake has collided with itself
            function check_collision(x, y, array) {
                for (var i = 0; i < array.length; i++) {
                    if (array[i].x == x && array[i].y == y)
                        return true;
                return false;
            //game over
            function game_over() {
                clearInterval(game_loop);
            ctx.fillStyle = "white";
                ctx.fillRect(0, 0, canvas.width, canvas.height);
                ctx.fillStyle = "black";
                ctx.font = "20px Verdana";
                ctx.fillText("Game Over!", 150, 200);
            //keyboard controls
            document.onkeydown = function(e) {
                //restart the game
                if (e.keyCode == 32) {
                    clearInterval(game_loop);
                    init();
            //change the direction
                if (e.keyCode == 37 && snake_dir != "right") snake_next_dir = "left";
                else if (e.keyCode == 38 && snake_dir != "down") snake_next_dir = "up";
                else if (e.keyCode == 39 && snake_dir != "left") snake_next_dir = "right";
                else if (e.keyCode == 40 && snake_dir != "up") snake_next_dir = "down";
            //main game loop
            function paint() {
                //update the snake
     update_snake();
                //draw the game
                draw_game();
                //set the direction
                snake_dir = snake_next_dir;
            //select the speed of the snake
            function select_speed(speed) {
                game_speed = speed;
                clearInterval(game_loop);
                game_loop = setInterval(paint, game_speed);
            //start the game
        <select onchange="select_speed(this.value)">
            <option value="200">Slow</option>
            <option value="150">Normal</option>
            <option value="75">Fast</option>
        </select></h3>
        <p>Press SPACEBAR to restart the game.</p>
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(175, 175, 175);
        box-shadow: 0 0 4px 1px #f7931a;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #f7931a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #f7931a;
        text-shadow: 0 0 4px #f7931a;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #f50606;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #fcfcfc;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
     document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRectM
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
ombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 200M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 10)M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEleM
mentById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
Rect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
cument.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
text/html;charset=utf-8
  <title>BTC Frogger</title>
  <meta charset="UTF-8">
    background: black;
    align-items: center;
    justify-content: center;
<canvas width="624" height="720" id="game"></canvas>
const canvas = document.getElementById('game');
const context = canvas.getContext('2d');
// a simple sprite pM
function Sprite(props) {
  // shortcut for assigning all object properties to the sprite
  Object.assign(this, props);
Sprite.prototype.render = function() {
  context.fillStyle = this.color;
  // draw a rectangle sprite
  if (this.shape === 'rect') {
    // by using a size less than the grid we can ensure there is a visual space
    // between each row
    context.fillRect(this.x, this.y + gridGap / 2, this.size, grid - gridGap);
  // draw a circle sprite. since size is the dM
iameter we need to divide by 2
  // to get the radius. also the x/y position needs to be centered instead of
  // the top-left corner of the sprite
    context.beginPath();
      this.x + this.size / 2, this.y + this.size / 2,
      this.size / 2 - gridGap / 2, 0, 2 * Math.PI
const frogger = new Sprite({
  color: 'greenyellow',
const scoredFroggers = [];
describes each obstacle in the row
  // end bank is safe
    spacing: [2],      // how many grid spaces between each obstacle
    color: '#4B4B4B',  // color of the obstacle
    size: grid * 4,    // width (rect) / diameter (circle) of the obstacle
    shape: 'rect',     // shape of the obstacle (rect or circle)
    speed: 0.75        // how fast the obstacle moves and which direction
    spacing: [0,2,0,2,0,2,0,4],
    color: '#7A5B3C',
    shape: 'circle',
    color: '#996633',
    color: '#FFD700',
    spacing: [0,0,1],
    color: '#1E90FF',
    shape: 'circle',
    color: '#FF4500',
    spacing: [3,3,7],
    color: '#FFA500',
    spacing: [3,3,7],
    color: '#7FFF00',
    color: '#FF1493',
  // start zone is safe
// rows holds all the sprites for that row
for (let i = 0; i < patterns.length; i++) {
  const pattern = patterns[i];
  // skip empty patterns (safe zones)
  // allow there to be 1 extra pattern offscreen so the loop is seamless
  // (especially for the long log)
  let totalPatternWidth =
    pattern.spacing.reduM
ce((acc, space) => acc + space, 0) * grid +
    pattern.spacing.length * pattern.size;
  while (endX < canvas.width) {
    endX += totalPatternWidth;
  endX += totalPatternWidth;
  // populate the row with sprites
  while (x < endX) {
    rows[i].push(new Sprite({
      y: grid * (i + 1),
    // move the next sprite over according to the spacing
    const spacing = pattern.spacing;
    x += pattern.size + spacing[index] * grid;M
    index = (index + 1) % spacing.length;
  requestAnimationFrame(loop);
  context.clearRect(0,0,canvas.width,canvas.height);
  // draw the game background
  context.fillStyle = '#000047';
  context.fillRect(0, grid, canvas.width, grid * 6);
  context.fillStyle = '#1ac300';
  context.fillRect(0, grid, canvas.width, 5);
  context.fillRect(0, grid, 5, grid);
  context.fillRect(canvas.width - 5, grid, 5, grid);
  for (let i = 0; i < M
    context.fillRect(grid + grid * 3 * i, grid, grid * 2, grid);
  context.fillStyle = '#8500da';
  context.fillRect(0, 7 * grid, canvas.width, grid);
  context.fillRect(0, canvas.height - grid * 2, canvas.width, grid);
  // update and draw obstacles
  for (let r = 0; r < rows.length; r++) {
    const row = rows[r];
    for (let i = 0; i < row.length; i++) {
      const sprite = row[i]
      sprite.x += sprite.speed;
      sprite.render();
oop sprite around the screen
      // sprite is moving to the left and goes offscreen
      if (sprite.speed < 0 && sprite.x < 0 - sprite.size) {
        // find the rightmost sprite
        let rightMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x > rightMostSprite.x) {
            rightMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
          rightMostSprite.x + rightMostSprite.size +
          spacing[rightMostSprite.index] * grid;
        sprite.index = (rightMostSprite.index + 1) % spacing.length;
      // sprite is moving to the right and goes offscreen
      if (sprite.speed > 0 && sprite.x > canvas.width) {
        // find the leftmost sprite
        let leftMostSprite = sprite;
        for (let j = 0; j < row.length; j++) {
          if (row[j].x < leftMostSprite.x) {
            leftMostSprite = row[j];
        // move the sprite to the next spot in the pattern so it continues
        const spacing = patterns[r].spacing;
        let index = leftMostSprite.index - 1;
        index = index >= 0 ? index : spacing.length - 1;
        sprite.x = leftMostSprite.x - spacing[index] * grid - sprite.size;
        sprite.index = index;
  frogger.x += frogger.speed || 0;
  // draw scored froggers
  scoredFroggers.forEach(frog =M
  // check for collision with all sprites in the same row as frogger
  const froggerRow = frogger.y / grid - 1 | 0;
  let collision = false;
  for (let i = 0; i < rows[froggerRow].length; i++) {
    let sprite = rows[froggerRow][i];
    // axis-aligned bounding box (AABB) collision check
    // treat any circles as rectangles for the purposes of collision
    if (frogger.x < sprite.x + sprite.size - gridGap &&
        frogger.x + grid - gridGap > sprite.x &&
        frogger.y < spritM
        frogger.y + grid > sprite.y) {
      collision = true;
      // reset frogger if got hit by car
      if (froggerRow > rows.length / 2) {
        frogger.x = grid * 6;
        frogger.y = grid * 13;
      // move frogger along with obstacle
        frogger.speed = sprite.speed;
    // if fogger isn't colliding reset speed
    frogger.speed = 0;
    // frogger got to end bank (goal every 3 cols)
frogger.x + grid / 2) / grid | 0;
    if (froggerRow === 0 && col % 3 === 0 &&
        // check to see if there isn't a scored frog already there
        !scoredFroggers.find(frog => frog.x === col * grid)) {
      scoredFroggers.push(new Sprite({
        x: col * grid,
        y: frogger.y + 5
    // reset frogger if not on obstacle in river
    if (froggerRow < rows.length / 2 - 1) {
      frogger.x = grid * 6;
      frogger.y = grid * 13;
isten to keyboard events to move frogger
document.addEventListener('keydown', function(e) {
  if (e.which === 37) {
    frogger.x -= grid;
  // right arrow key
  else if (e.which === 39) {
    frogger.x += grid;
  else if (e.which === 38) {
    frogger.y -= grid;
  else if (e.which === 40) {
    frogger.y += grid;
  // clamp frogger position to stay on screen
  frogger.x = Math.min( Math.max(0, frogger.x), canvas.width L
  frogger.y = Math.min( Math.max(grid, frogger.y), canvas.height - grid * 2);
requestAnimationFrame(loop);
text/html;charset=utf-8
    <title>BTC Dude vs Zombies</title>
        background-color: rgb(0, 0, 0);
        font-family: 'Roboto', sans-serif;
        background-color: rgb(247, 240, 190);
        box-shadow: 0 0 4px 1px #f2cd87;
        border-radius: 5px;
        transition: 0.2s;
        margin: 0 auto;
      canvas:hover {
        box-shadow: 0 0 10px 5px #f7c01a;
        font-family: 'Roboto', sans-serif;
        font-size: 18px;
        text-align: left;
        color: #0622f5;
        text-shadow: 0 0 4px #065af5;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        text-align: left;
        color: #0622f5;
        font-family: 'Roboto', sans-serif;
        font-size: 12px;
        color: #fcfcfc;
        visibility: hidden;
        animation: blink 1s linear infinite;
        font-family: 'Roboto', sans-sM
        font-size: 12px;
        color: #f7931a;
      @keyframes blink {
        0% {opacity:1;}
        50% {opacity:0.5;}
        100% {opacity:1;}
    <h1>BTC Dude vs Zombies</h1>
    <p>Use the arrow keys to move BTC Dude </p>
    <p>Use the spacebar to shoot</p>
    <p id="gameOver">Game Over! Spacebar to start again</p>
    <p id="score">Score: 0<p>
    <canvas id="canvas" width="400" height="300"></canvas>
      let canvas = document.getElementById("canvas");
      let ctx = canvas.getContext("2d");
      // Draw the retro character
      ctx.fillStyle = "#F7931A";
      ctx.fillRect(50, 100, 20, 30);
      ctx.fillStyle = "#000";
      ctx.fillRect(60, 85, 10, 10);
      ctx.fillRect(60, 105, 10, 10);
      // Set variables for character movements
      let speed = 5;
      let score = 0;
      let gameOver = false;
      // Listen for arrow keys
      document.addEventListener("keydown", (event) => {
        if (event.key == "ArrowUp") {
          y -= speed;
        } else if (event.key == "ArrowDown") {
          y += speed;
        } else if (event.key == "ArrowLeft") {
          x -= speed;
        } else if (event.key == "ArrowRight") {
          x += speed;
        // Clear canvas and draw character in new position
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillStyle = "#000";
        ctx.fillRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
      // Zombie variables
      let zombies = [];
      let zombieSpeed = 1;
      let zombieCreateInterval = 1000; // Create a new zombie every second
      let zombieLastCreatedAt = 0;
      // Create a zombie
      function Zombie(x, y) {
        this.alive = true;
      // Draw a zombie
 Zombie.prototype.draw = function () {
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(this.x, this.y, 20, 30);
        ctx.fillStyle = "#000";
        ctx.fillRect(this.x + 10, this.y - 15, 10, 10);
        ctx.fillRect(this.x + 10, this.y + 15, 10, 10);
      // Move the zombie
      Zombie.prototype.move = function () {
        this.x -= zombieSpeed;
      // Create multiple zombies
      function createNewZombie(){
        zombies.push(new Zombie(590, Math.random() * 2M
        zombieLastCreatedAt = Date.now();
      createNewZombie();
      // Listen for spacebar
      document.addEventListener("keydown", (event) => {
        if (event.key == " ") {
          // Draw ammo
          ctx.fillStyle = "#f00";
          ctx.fillRect(x + 20, y + 15, 10, 10);
          // Move ammo
          let ammoX = x + 20;
          let ammoY = y + 15;
          let interval = setInterval(function(){
            ctx.clearRect(ammoX, ammoY, 10, 1M
            ctx.fillStyle = "#f00";
            ctx.fillRect(ammoX, ammoY, 10, 10);
            ammoX += 3;
            // Check if ammo hits a zombie
            zombies.forEach(function(zombie){
              if(ammoX >= zombie.x - 25 && ammoX <= zombie.x + 25 &&
                  ammoY >= zombie.y - 25 && ammoY <= zombie.y + 25 && zombie.alive){
                console.log("Zombie killed!");
                zombie.alive = false;
                score++;
                document.getEM
lementById("score").innerHTML = "Score: " + score;
            // Check if ammo hits right wall
            if(ammoX >= 600){
              clearInterval(interval);
      // Draw zombies every frame
      setInterval(function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        ctx.fillStyle = "#F7931A";
        ctx.fillRect(x, y, 20, 30);
        ctx.fillStyle = "#000";
llRect(x + 10, y - 15, 10, 10);
        ctx.fillRect(x + 10, y + 15, 10, 10);
        zombies.forEach(function(zombie){
          if(zombie.alive){
            zombie.draw();
            zombie.move();
            // Check if zombie touches character
            if(zombie.x >= x - 20 && zombie.x <= x + 10 &&
              zombie.y >= y - 30 && zombie.y <= y + 30){
              gameOver = true;
              document.getElementById("gameOver").style.visibility = "visible";
        // Create a new zombie
        if(Date.now() - zombieLastCreatedAt > zombieCreateInterval){
          createNewZombie();
        // Check if all zombies are killed
        let allZombiesKilled = true;
        zombies.forEach(function(zombie){
          if(zombie.alive){
            allZombiesKilled = false;
        if(allZombiesKilled){
          console.log("You win!");
      // Reset the game
document.addEventListener("keydown", (event) => {
        if (gameOver && event.key == " ") {
          zombies = [];
          score = 0;
          document.getElementById("score").innerHTML = "Score: " + score;
          document.getElementById("gameOver").style.visibility = "hidden";
          gameOver = false;
          createNewZombie();
i{"collection":"Digital-Artifacts.io","artist":"Shlomi Sharabi","link":"https:\/\/digital-artifacts.io"}
text/plain;charset=utf-8
"name": "jacopo.sats"
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#000000"/>
   <ref id="color2" param="fill2" default="#26be1a"/>
   <ref id="color3" param="fill3" default="#f728e1"/>
   <ref id="color4" param="fill4" default="#0f5b09"/>
  <path fill="url(#color1)" d="M0 0v320h320V0H10Zm40 10h10v10h10v10H50v10M
H40V30H30V20h10zm0 10v10h10V20Zm170-10h30v10h10v40h-10v80h10v30h10v20h-10v10h-10v50h10v10h10v30h-10v10h-30v10H100v-10H70v-10H60v-30h10v-10h10v-30h10v-30h10v-40H70v-10H50v-20H40v10H30v-10H20v10H10v-30h10v10h10v-10h10v10h10v-10h10v10h10v-10h20v10H80v10h40v-10h10V90h10V80h10V70h10V60h10V50h10V40h10V30h10V20h10zm-40 50v10h30V60h-20zm30 0h10V50h-10zm40 140v-10h-10v10zm-10-10v-10h-10v10zm60-130h10v10h10v10h-10v10h-10V80h-10V70h10zm0 10v10h10V70ZM30 190h10v10h10v10H40v10H30v-10H20v-10h10zm0 10v10h10v-10zm250 40h10v10h10v1M
0h-10v10h-10v-10h-10v-10h10zm0 10v10h10v-10zm-50 10v10h-20v10H90v10h130v-10h20v-20ZM90 280v-10H80v10z" style="stroke-width:10"/>
  <path fill="url(#color2)" d="M40 10v10h10V10Zm10 10v10h10V20Zm0 10H40v10h10Zm-10 0V20H30v10zm120 30v10h10V60Zm0 10h-10v20h10V80Zm0 20v10h20V90h-10zm20 0h10V70h-10v10Zm110-30v10h10V60Zm10 10v10h10V70Zm0 10h-10v10h10zm-10 0V70h-10v10ZM10 100v30h10v-10h10v10h10v-10h10v-10H40v-10H30v10H20v-10zm100 20v10h30v-10h-20zm30 10v30h10v-30zm0 30h-30v10h30zm-30 0v-30h-10v30zm-80 30v10h10v-10zm10 10v1M
0h10v-10zm0 10H30v10h10zm-10 0v-10H20v10zm70-10v10h30v-10h-20zm30 10v30h10v-30zm0 30h-30v10h30zm-30 0v-30H90v30zm180 0v10h10v-10zm10 10v10h10v-10zm0 10h-10v10h10zm-10 0v-10h-10v10zM70 270v20h10v10h20v10h120v-10h20v-10h10v-10h-30v10H90v-10H80v-10z"/>
  <path fill="url(#color3)" d="M210 10v10h-10v10h-10v10h-10v10h-10v10h30V50h10v10h-10v10h-10v20h-10v10h-30V90h-20v20h-10v10h20v10h10v40h-10v10h-30v-10h-10v20H90v20h10v-10h30v10h10v40h-10v10h-30v-10H90v-30H80v50h10v10h120v-10h20v-10h10v-50h-10v-10h-10v-20h10v10h10v10h10vM
-10h10v-20h-10v-30h-10V60h10V20h-10V10h-20ZM80 120v10H50v10h30v10h20v-20h10v-10H90Z"/>
  <path fill="url(#color4)" d="M160 70v20h20V70h-10zm0 20h-10v10h10zm-10 0V80h-10v10ZM50 100v30h30v-20h10v-10H70v10H60v-10zm60 30v30h30v-30h-20zm30 30v10h10v-10zm0 10h-30v10h30zm-30 0v-10h-10v10zm-40-30v10h10v-10zm150 50v10h10v-10zm10 10v10h10v-10zm-130 10v30h30v-30h-20zm30 30v10h10v-10zm0 10h-30v10h30zm-30 0v-10H90v10zm-30 0v10H60v30h10v-20h10v-20zm0 40v10h10v-10zm170-40v30h10v10h10v-30h-10v-10zm10 40h-10v10h10z"/>
pe="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refList.item( r );
       var id = eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
(eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
   if ( -1 != href.indexOf("?") )
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
lList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
       for ( var i = 0, iLen = params.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" )M
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
       GetIdRefs( eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagName( "*" );
   for ( var i = 0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachElM
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
           var t = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
           eachEl.setAttributeNS( attr.namespaceURI, attr.name, val);
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyM
text/plain;charset=utf-8
  "name": "5029.sats"
text/plain;charset=utf-8
  "name": "5018.sats"
text/plain;charset=utf-8
  "name": "5027.sats"
text/plain;charset=utf-8
  "name": "5042.sats"
text/plain;charset=utf-8
  "name": "5044.sats"
text/plain;charset=utf-8
  "name": "5043.sats"
text/plain;charset=utf-8
  "name": "5017.sats"
text/plain;charset=utf-8
  "name": "DieProfis.sats"
text/plain;charset=utf-8
  "name": "5035.sats"
text/plain;charset=utf-8
  "name": "5039.sats"
text/plain;charset=utf-8
  "name": "5016.sats"
text/plain;charset=utf-8
  "name": "5037.sats"
text/plain;charset=utf-8
  "name": "5026.sats"
text/plain;charset=utf-8
  "name": "5038.sats"
text/plain;charset=utf-8
  "name": "moltres.sats"
text/plain;charset=utf-8
  "name": "5019.sats"
text/plain;charset=utf-8
  "name": "5041.sats"
text/plain;charset=utf-8
  "name": "5022.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5031.sats"
text/plain;charset=utf-8
  "name": "5023.sats"
text/plain;charset=utf-8
  "name": "5024.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "1879.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8633.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6063.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7372.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4663.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8665.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7367.sats"}h!
text/plain;charset=utf-8
  "name": "bitpanda.sats"
text/plain;charset=utf-8
  "name": "6711.sats"
text/plain;charset=utf-8
  "name": "5034.sats"
text/plain;charset=utf-8
  "name": "5032.sats"
text/plain;charset=utf-8
  "name": "5025.sats"
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyM
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyM
text/plain;charset=utf-8
  "name": "5036.sats"
text/plain;charset=utf-8
  "name": "5028.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "5033.sats"
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:0445B13DB23E11ED85B58B8AB5C2E779" xmpMM:DocumentID="xmp.did:0445B13EB23E11ED85B58B8AB5C2E779"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0445B13BB23E11ED85B58B8AB5C2E779" stRef:documentID="xmp.did:0445B13CB23E11ED85B58B8AB5C2E779"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Whale Watching Wand</text><text x="10" y="40" class="base">Bane Armor of Unbreakable Darkness</text><text x="10" y="60" class="base">Blockchain Fedora of Historical Data</text><text x="10" y="80" class="M
base">HODLer Diamond Belt of Perseverance</text><text x="10" y="100" class="base">Crypto Clogs of Computation</text><text x="10" y="120" class="base">Wallet Wraps of Wealth</text><text x="10" y="140" class="base">Cryptocurrency Collar</text><text x="10" y="160" class="base">Crypto Champion Engraved Band of Fortune</text><text x="10" y="180" class="base">Crypto Market Tracker Hourglass</text><text x="10" y="340" fill="#f2a900">7935b827</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-basel
ine:bottom;">00276</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Bear Market Umbrella of Protection</text><text x="10" y="40" class="base">Blockchain Bomber Jacket</text><text x="10" y="60" class="base">Normie-Scaring Bag of the Bit Coif</text><text x="10" y="80" clasM
s="base">Orange Belt</text><text x="10" y="100" class="base">Crypto Conqueror Boots of Victory</text><text x="10" y="120" class="base">Crypto Custodian Cestus of Custody</text><text x="10" y="140" class="base">Market Manipulator Cloak</text><text x="10" y="160" class="base">Satoshi Samurai Hematite Ring of Grounding</text><text x="10" y="180" class="base">Merchant QR Code Scanning Goggles</text><text x="10" y="340" fill="#f2a900">2c5ef775</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-b#aseline:bottom;">00298</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">HODL Holy Hand Grenade</text><text x="10" y="40" class="base">Satoshi Infused Battle Armor</text><text x="10" y="60" class="base">Blockchain Beret</text><text x="10" y="80" class="base">Bull Sash of MarkM
et Dominance</text><text x="10" y="100" class="base">Hashrate Hiking Boots of Halving</text><text x="10" y="120" class="base">Wristbands of Secure Transactions</text><text x="10" y="140" class="base">Cryptozoologist Amulet of Discovery</text><text x="10" y="160" class="base">Bear Brooch of Blockchain</text><text x="10" y="180" class="base">Laptop</text><text x="10" y="340" fill="#f2a900">ed3a8978</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00288</text></svg>h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"gao.sats"}h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"che.sats"}h!
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:039054ECB23E11ED9894D5323DBD8EB4" xmpMM:DocumentID="xmp.did:039054EDB23E11ED9894D5323DBD8EB4"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:039054EAB23E11ED9894D5323DBD8EB4" stRef:documentID="xmp.did:039054EBB23E11ED9894D5323DBD8EB4"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Bull Market Broadsword of Bravado</text><text x="10" y="40" class="base">Armor of the Bitcoin Blockade</text><text x="10" y="60" class="base">HODLonaut Helm of Protection</text><text x="10" y="80" class=M
"base">Defender Decorated Belt of Liquidity Mining</text><text x="10" y="100" class="base">Byzantine Brogues of Agreement</text><text x="10" y="120" class="base">Blockchain Bracers of Decentralization</text><text x="10" y="140" class="base">Private Key Pendant of Security</text><text x="10" y="160" class="base">Buccaneer Jasper Ring of Stability</text><text x="10" y="180" class="base">Crypto Trading Almanac</text><text x="10" y="340" fill="#f2a900">b03bbce8</text><text x="340" y="340" fill="#f2a900" style="text-anc6hor:end;alignment-baseline:bottom;">00303</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Crypto Pickaxe of Wealth</text><text x="10" y="40" class="base">Bull Market Cuirass</text><text x="10" y="60" class="base">Mining Rig Helmet of the Miner</text><text x="10" y="80" class="base">ASIC GirdlM
e of Glory</text><text x="10" y="100" class="base">Bear Market Boots of Resilience</text><text x="10" y="120" class="base">Cold Wallet Gloves</text><text x="10" y="140" class="base">HODL Gang Amulet of Loyalty</text><text x="10" y="160" class="base">Band of Extravagance</text><text x="10" y="180" class="base">Crypto Vault Keeper Safe Lock</text><text x="10" y="340" fill="#f2a900">82a1c521</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00293</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Blockchain Broadsword</text><text x="10" y="40" class="base">Bitcoin Brigand Brigandine of Burglary</text><text x="10" y="60" class="base">Blockchain Bunny Ears of the Hop</text><text x="10" y="80" classM
="base">ASIC Belt of the Blockchain Crusader</text><text x="10" y="100" class="base">HODLer Hiking Boots of Steadfastness</text><text x="10" y="120" class="base">Crypto Custodian Cestus of Custody</text><text x="10" y="140" class="base">Crypto Coin Necklace of Collecting</text><text x="10" y="160" class="base">HODLer Horseshoe of Happiness</text><text x="10" y="180" class="base">Mining Canteen of Endurance</text><text x="10" y="340" fill="#f2a900">04ab7223</text><text x="340" y="340" fill="#f2a900" style="text-anch5or:end;alignment-baseline:bottom;">00294</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Lightning Longsword of Liquidity</text><text x="10" y="40" class="base">Crusader Armor of the Immutable Righteousness</text><text x="10" y="60" class="base">HODL Beanie</text><text x="10" y="80" class="bM
ase">Digital Diplomat Distinguished Cumberbund</text><text x="10" y="100" class="base">Miner Magic Boots of Profitability</text><text x="10" y="120" class="base">Diamond Hand Defender Gloves of HODLing</text><text x="10" y="140" class="base">BTC Heartbeat Necklace of Vitality</text><text x="10" y="160" class="base">FUD Fighter Fingerband of Fortune</text><text x="10" y="180" class="base">Taster Tongs</text><text x="10" y="340" fill="#f2a900">e74f2f59</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end/;alignment-baseline:bottom;">00278</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Assassin Hidden Blade</text><text x="10" y="40" class="base">Bitcoin Biker Jacket</text><text x="10" y="60" class="base">Mining Rig Helmet of the Miner</text><text x="10" y="80" class="base">Whale Belt oM
f Order Book Manipulation</text><text x="10" y="100" class="base">Miner Magic Resistant Boots of Defense</text><text x="10" y="120" class="base">Satoshi Samurai Gloves of Battle Readiness</text><text x="10" y="140" class="base">Privacy Pendant of Protection and Paranoia</text><text x="10" y="160" class="base">Decentralized Duke Ring</text><text x="10" y="180" class="base">Mining Surveyor Compass of Accuracy</text><text x="10" y="340" fill="#f2a900">88bd4596</text><text x="340" y="340" fill="#f2a900" style="text-anc6hor:end;alignment-baseline:bottom;">00280</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Satirical Currency Dagger</text><text x="10" y="40" class="base">Difficulty Destroyer of Mining Efficiency</text><text x="10" y="60" class="base">Trader Helm of Trend Analysis</text><text x="10" y="80" cM
lass="base">Bitcoin Bling Belt of Proof of Work</text><text x="10" y="100" class="base">Blockchain Buccaneer Boots of Navigating</text><text x="10" y="120" class="base">HODLer Handcuffs of Holding</text><text x="10" y="140" class="base">Satoshi Silver Chain</text><text x="10" y="160" class="base">ASIC Engraved Signet Ring</text><text x="10" y="180" class="base">Satoshi Signature Fishing Pole</text><text x="10" y="340" fill="#f2a900">8e77b246</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignmen&t-baseline:bottom;">00284</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Scimitar of Speculation</text><text x="10" y="40" class="base">Armor of the Satoshi Samurai</text><text x="10" y="60" class="base">Crypto Cowl</text><text x="10" y="80" class="base">Satoshi Golden Key BeM
lt of Access</text><text x="10" y="100" class="base">Decentralized Driving Loafers</text><text x="10" y="120" class="base">Mining Mogul Reinforced Gloves of Hashrate</text><text x="10" y="140" class="base">Wallet Key Necklace of Secrecy</text><text x="10" y="160" class="base">Rubber Ring</text><text x="10" y="180" class="base">Crypto Casanova Charm of Seduction</text><text x="10" y="340" fill="#f2a900">dea057c3</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00281</text
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Hashrate War Greatsword of Mining</text><text x="10" y="40" class="base">Invincible Armor of Unstoppable Growth</text><text x="10" y="60" class="base">Ledger Crown of the Crypto Accountants</text><text xM
="10" y="80" class="base">Miner Malleable Belt of Equipment Upgrades</text><text x="10" y="100" class="base">Slippers of Stability</text><text x="10" y="120" class="base">Crypto Cuffs of Rewards</text><text x="10" y="140" class="base">Talisman of Stability</text><text x="10" y="160" class="base">Crypto Ring of Immutable Wealth</text><text x="10" y="180" class="base">Decentralized Messaging Carrier Pigeon</text><text x="10" y="340" fill="#f2a900">55e20b58</text><text x="340" y="340" fill="#f2a900" style="text-anchor3:end;alignment-baseline:bottom;">00273</text></svg>h!
text/plain;charset=utf-8
  "name": "Bitcoin-citadel.sats"
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"xbb.sats"}h!
text/plain;charset=utf-8
  "name": "9076.sats"
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:033BE942B23E11EDA39883EB4E8A22A6" xmpMM:DocumentID="xmp.did:033BE943B23E11EDA39883EB4E8A22A6"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:033BE940B23E11EDA39883EB4E8A22A6" stRef:documentID="xmp.did:033BE941B23E11EDA39883EB4E8A22A6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Mining Laser of Genesis Block Creation</text><text x="10" y="40" class="base">Mining Rig Mail of Resilience</text><text x="10" y="60" class="base">Miner Cap of Illumination</text><text x="10" y="80" clasM
s="base">Bitcoin Belt Sash of the Digital Dollar</text><text x="10" y="100" class="base">Byzantine Ballet Shoes of the Byzantium</text><text x="10" y="120" class="base">Chainmail Gloves of Crypto Defense</text><text x="10" y="140" class="base">Ledger of Luxury</text><text x="10" y="160" class="base">ASIC Blockchain Ring</text><text x="10" y="180" class="base">HODL-Resistant Backpack Straps</text><text x="10" y="340" fill="#f2a900">464f15f2</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-$baseline:bottom;">00285</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Crypto Shovel of Riches Unearthed</text><text x="10" y="40" class="base">Whale Warrior Wrought Iron Weave</text><text x="10" y="60" class="base">Miner Helmet</text><text x="10" y="80" class="base">TradinM
g Titan Belt of Strategy</text><text x="10" y="100" class="base">Bear Market Boots of Bear Market</text><text x="10" y="120" class="base">Miner Mitts of Hashing Strength</text><text x="10" y="140" class="base">HODLing Guardian Necklace</text><text x="10" y="160" class="base">Crypto Crusader Sapphire Ring of Justice</text><text x="10" y="180" class="base">Crypto Axe of Chopping</text><text x="10" y="340" fill="#f2a900">0cef2951</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bott
om;">00291</text></svg>h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"cha.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">HODL Harpoon of HODLing</text><text x="10" y="40" class="base">Mining Monitor Mantle of Hashrate Tracking</text><text x="10" y="60" class="base">Bobble Hat of Booms and Busts</text><text x="10" y="80" clM
ass="base">ASIC Overlapping Buckle Belt of Opulence</text><text x="10" y="100" class="base">Blockchain Boots of Bitcoin Brilliance</text><text x="10" y="120" class="base">Trader Touch of Timing</text><text x="10" y="140" class="base">Satoshi Golden Amulet of Wealth</text><text x="10" y="160" class="base">Courtier Ornament of Abundance</text><text x="10" y="180" class="base">Coin Collection Cartridge of Courage</text><text x="10" y="340" fill="#f2a900">13198ebd</text><text x="340" y="340" fill="#f2a900" style="text-9anchor:end;alignment-baseline:bottom;">00299</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Hashing Halberd of Hashrate</text><text x="10" y="40" class="base">Bitcoin T-Shirt</text><text x="10" y="60" class="base">Bear Ushanka of Hibernation</text><text x="10" y="80" class="base">Miner Sash of M
the Blockchain Bonanza</text><text x="10" y="100" class="base">ASIC Pair of Shoes</text><text x="10" y="120" class="base">Hash Hunting Handguards of the Block Explorer</text><text x="10" y="140" class="base">HODLer Guardian Angel Amulet of Protection</text><text x="10" y="160" class="base">Ledger Lord Ring</text><text x="10" y="180" class="base">Wallet Key of Unlocking</text><text x="10" y="340" fill="#f2a900">367c57a7</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">002
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Rapid Fire Sniper Rifle</text><text x="10" y="40" class="base">Crypto Crusader Carapace</text><text x="10" y="60" class="base">Sandstorm Mask</text><text x="10" y="80" class="base">Crypto Crusader Sash oM
f Digital Dominion</text><text x="10" y="100" class="base">HODL Boots</text><text x="10" y="120" class="base">Satoshi Shadow Boxing Gloves</text><text x="10" y="140" class="base">Bitcoin Crystal Necklace of Volatility</text><text x="10" y="160" class="base">Sage Tourmaline Ring of Optimization</text><text x="10" y="180" class="base">HODLer Horn of Hilarity</text><text x="10" y="340" fill="#f2a900">4ed511f5</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00301</text></sv
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Blockchain Battle Bow</text><text x="10" y="40" class="base">Armor of the Mining Mastermind</text><text x="10" y="60" class="base">HODL Hoodie of Power</text><text x="10" y="80" class="base">HODLer HolstM
er of Stability</text><text x="10" y="100" class="base">Satoshi Snowshoe Boots of the Tundra</text><text x="10" y="120" class="base">Paper Hands-Repelling Bag of the Bit Cloak</text><text x="10" y="140" class="base">Green Energy Amulet of Sustainable Mining</text><text x="10" y="160" class="base">ASIC Insurgent Ring</text><text x="10" y="180" class="base">Cryptocurrency Philosopher Monocle</text><text x="10" y="340" fill="#f2a900">714db5f7</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-$baseline:bottom;">00292</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Cold Storage Crossbow of Secure Storage</text><text x="10" y="40" class="base">Ringmail</text><text x="10" y="60" class="base">HODLer Fedora of Patience</text><text x="10" y="80" class="base">Crusader FOM
MO Fighting Belt of Discipline</text><text x="10" y="100" class="base">Consensus Clogs of Consensus Mechanism</text><text x="10" y="120" class="base">Wallet Wristguards of Protection</text><text x="10" y="140" class="base">Cryptic Cipher Chain</text><text x="10" y="160" class="base">Mining Magnate Ring</text><text x="10" y="180" class="base">Grappling Hook of Technology</text><text x="10" y="340" fill="#f2a900">d4c8f1c0</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Crypto Crossbow of Precision</text><text x="10" y="40" class="base">War Rig of Resilience</text><text x="10" y="60" class="base">Baron Top Hat</text><text x="10" y="80" class="base">Ninja Belt of CreativM
ity</text><text x="10" y="100" class="base">Moon Boots of Fortune</text><text x="10" y="120" class="base">Hand Wraps of Programmability</text><text x="10" y="140" class="base">Diamond Chain</text><text x="10" y="160" class="base">HODLer Hoop of Hype</text><text x="10" y="180" class="base">Mining Mallet of Might</text><text x="10" y="340" fill="#f2a900">9fa90913</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00283</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Exchange Executioner Epee of Excess Fees</text><text x="10" y="40" class="base">Moonwalker Suit</text><text x="10" y="60" class="base">Crypto Cosplay Helmet of the Digital Heroes</text><text x="10" y="80M
" class="base">Crypto Crusader Belt of Immutable Consensus</text><text x="10" y="100" class="base">Bitcoin Boots</text><text x="10" y="120" class="base">Crusader Mittens of Market Domination</text><text x="10" y="140" class="base">Butterfly Necklace of Digital Innovation</text><text x="10" y="160" class="base">Bitcoin Beacon Ring of Enlightenment</text><text x="10" y="180" class="base">Bitcoin Block Explorer Map of the Blockchain</text><text x="10" y="340" fill="#f2a900">cf72197f</text><text x="340" y="340" fill="#LMf2a900" style="text-anchor:end;alignment-baseline:bottom;">00296</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Nocoiner Flail of Ignorance</text><text x="10" y="40" class="base">Mining Suit of Unstoppable Hashpower</text><text x="10" y="60" class="base">Crypto Trader Top Hat of Wealth</text><text x="10" y="80" clM
ass="base">Shill Suspenders of Influence</text><text x="10" y="100" class="base">Blockchain Brothel Creepers of Bitcoin Cash</text><text x="10" y="120" class="base">Crypto Thief Repelling Gloves of Security</text><text x="10" y="140" class="base">Snowflake Pendant of Unique Assets</text><text x="10" y="160" class="base">Node Runner Ring of Endurance</text><text x="10" y="180" class="base">Investigator Insignia of Inquisitiveness</text><text x="10" y="340" fill="#f2a900">a52541a5</text><text x="340" y="340" fill="#fLL2a900" style="text-anchor:end;alignment-baseline:bottom;">00295</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">ASIC Scissors of Cutting Edge Mining</text><text x="10" y="40" class="base">Bomber Jacket of Trustless Transactions</text><text x="10" y="60" class="base">Satoshi Headpiece</text><text x="10" y="80" clasM
s="base">Pizza Purchaser Belt of Convenience</text><text x="10" y="100" class="base">Commemorative Boots of the Halving</text><text x="10" y="120" class="base">Multi Sig Mitts of Wallet Security</text><text x="10" y="140" class="base">Normie Necklace</text><text x="10" y="160" class="base">Crypto Ring of Invisibility and HODLing</text><text x="10" y="180" class="base">Crypto Cartographer Protractor</text><text x="10" y="340" fill="#f2a900">8f720a4b</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;a-lignment-baseline:bottom;">00300</text></svg>h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"yan.sats"}h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Crypto Halberd of Devotion</text><text x="10" y="40" class="base">ASIC Protected Plating</text><text x="10" y="60" class="base">Mask of Privacy Protection</text><text x="10" y="80" class="base">BlockchaiM
n Belt of Immutability</text><text x="10" y="100" class="base">Moon Boots of Momentum and Madness</text><text x="10" y="120" class="base">Gauntlets of Efficient Transactions</text><text x="10" y="140" class="base">Multisig Pendant of Collaborative Control</text><text x="10" y="160" class="base">Crypto Trading Ring of Profitability</text><text x="10" y="180" class="base">Tomb of Immutable Transactions</text><text x="10" y="340" fill="#f2a900">1de3dfac</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end/;alignment-baseline:bottom;">00287</text></svg>h!
-http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.dabacbb, 2021/04/14-00:39:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotoshoM
p 23.0 (Windows)" xmpMM:InstanceID="xmp.iid:03E58508B23E11ED90DAA7265E7F3826" xmpMM:DocumentID="xmp.did:03E58509B23E11ED90DAA7265E7F3826"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:03E58506B23E11ED90DAA7265E7F3826" stRef:documentID="xmp.did:03E58507B23E11ED90DAA7265E7F3826"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
)A&&AB///BG?>>?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
))4&4?((?G?5?GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Bear Market Pike of Price Correction</text><text x="10" y="40" class="base">Salvadoran Chain Mail</text><text x="10" y="60" class="base">Bear Helmet of Shorting</text><text x="10" y="80" class="base">HODM
Ler Handmade Belt of Diamond Hands</text><text x="10" y="100" class="base">Binance Brogues of Buy Ins</text><text x="10" y="120" class="base">Blockchain Brawler Reinforced Gloves</text><text x="10" y="140" class="base">Bitcoin Enthusiast Amulet of Vision</text><text x="10" y="160" class="base">Blockchain Signet Ring of Security</text><text x="10" y="180" class="base">Orb of the Market Future</text><text x="10" y="340" fill="#f2a900">53f3f16f</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignmen&t-baseline:bottom;">00275</text></svg>h!
text/plain;charset=utf-8
({"p":"sns","op":"reg","name":"xue.sats"}h!
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Sabre of Surreptitious Transactions</text><text x="10" y="40" class="base">ASIC Antimagnetic Armor</text><text x="10" y="60" class="base">Bitcoin Bonnet of Trading Euphoria</text><text x="10" y="80" clasM
s="base">HODLer Platinum Belt of Commitment</text><text x="10" y="100" class="base">Dress Shoes of Delegated Proof of Work</text><text x="10" y="120" class="base">Cold Storage Vault Gloves of Secure HODLing</text><text x="10" y="140" class="base">Crypto Knight Amulet of Valor</text><text x="10" y="160" class="base">Crypto Conqueror Crest of Plenty</text><text x="10" y="180" class="base">Pen of Bitcoin HODLers</text><text x="10" y="340" fill="#f2a900">cbf9ff90</text><text x="340" y="340" fill="#f2a900" style="text-a8nchor:end;alignment-baseline:bottom;">00302</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Whale Warhammer of Market Manipulation</text><text x="10" y="40" class="base">Cold Storage Chestguard</text><text x="10" y="60" class="base">Crypto Viking Helmet</text><text x="10" y="80" class="base">BlM
ockchain Mapping Belt of Navigation</text><text x="10" y="100" class="base">Proof of Work Trainers</text><text x="10" y="120" class="base">Decentralized Defender Gloves of Dominance</text><text x="10" y="140" class="base">Moonshot Hunter Amulet of Ambition</text><text x="10" y="160" class="base">Block Explorer Ring of Data Analysis</text><text x="10" y="180" class="base">Private Key Pendant of Protection</text><text x="10" y="340" fill="#f2a900">e295b0fb</text><text x="340" y="340" fill="#f2a900" style="text-anchor3:end;alignment-baseline:bottom;">00282</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">P2P Pistol</text><text x="10" y="40" class="base">FUD Fur Coat of Fright</text><text x="10" y="60" class="base">HODLer Helm of Wisdom</text><text x="10" y="80" class="base">HODLer Crypto Storage Belt of M
Security</text><text x="10" y="100" class="base">FOMO Flip Flops of Fearless Trading</text><text x="10" y="120" class="base">Fault Tolerance Bracers of Reliability</text><text x="10" y="140" class="base">Cryptonomist Amulet of Knowledge</text><text x="10" y="160" class="base">Halving Heirloom Ring of Intrinsic Value</text><text x="10" y="180" class="base">SegWit Shield of Transaction Compression</text><text x="10" y="340" fill="#f2a900">2cdaf89b</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alig*nment-baseline:bottom;">00290</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Lightning Bolt Wand of Instant Transactions</text><text x="10" y="40" class="base">HODLer Houndstooth Coat</text><text x="10" y="60" class="base">Diving Helmet</text><text x="10" y="80" class="base">CustM
om Made Cumberbund of Distinction</text><text x="10" y="100" class="base">Espadrilles of Elegance</text><text x="10" y="120" class="base">Hash Rate Handshields of Proof of Work</text><text x="10" y="140" class="base">Byzantine Filigree Necklace</text><text x="10" y="160" class="base">Crypto Crusader Ring of Blockchain Evangelism</text><text x="10" y="180" class="base">Mining Drill of Crypto Extraction</text><text x="10" y="340" fill="#f2a900">e2e51854</text><text x="340" y="340" fill="#f2a900" style="text-anchor:en0d;alignment-baseline:bottom;">00286</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Longsword of Liquidity</text><text x="10" y="40" class="base">Cryptojacking Chestplate of Chaos</text><text x="10" y="60" class="base">Blockchain Balaclava of Anonymity</text><text x="10" y="80" class="bM
ase">Bitcoin Bartering Belt of Trade</text><text x="10" y="100" class="base">Crypto Crusader Boots of Victory</text><text x="10" y="120" class="base">Cold Wallet Cuffs of Unhackable Finance</text><text x="10" y="140" class="base">Cryptocurrency Amulet of Protection</text><text x="10" y="160" class="base">Wizard Ring of Mining Mastery</text><text x="10" y="180" class="base">Cold Wallet of Preservation</text><text x="10" y="340" fill="#f2a900">fa2fb3a4</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end/;alignment-baseline:bottom;">00297</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">HODLer Hammer</text><text x="10" y="40" class="base">Crypto Market Maker Plate</text><text x="10" y="60" class="base">Wallet Visor of the Crypto Security Force</text><text x="10" y="80" class="base">CrypM
to Cannon Belt of Power</text><text x="10" y="100" class="base">Blockchain Boots of Blockchain Technology</text><text x="10" y="120" class="base">Cold Storage Mittens of Preservation</text><text x="10" y="140" class="base">Satoshi Choker of Genesis</text><text x="10" y="160" class="base">Satoshi Signature Ring of Crypto Genesis</text><text x="10" y="180" class="base">Chest of Hidden Cryptocurrency Treasures</text><text x="10" y="340" fill="#f2a900">1eddc81a</text><text x="340" y="340" fill="#f2a900" style="text-anc6hor:end;alignment-baseline:bottom;">00277</text></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350"><style>.base{fill:#4d4d4d;font-weight:700;font-family:Verdana,sans-serif;font-style:italic;font-size:11.5px;letter-spacing:-.2px}</style><rect width="100%" height="100%" fill="#f2a900"/><text x="10" y="20" class="base">Taproot Twisted Tomahawk</text><text x="10" y="40" class="base">Crypto Crusader Chainmail of Secure Storage</text><text x="10" y="60" class="base">Miner Cap of the Crypto Pioneers</text><text x="10" y="8M
0" class="base">Bullish Belt of Price Upward Momentum</text><text x="10" y="100" class="base">Open source Oxfords of the Open</text><text x="10" y="120" class="base">Bracers</text><text x="10" y="140" class="base">Bitcoin Bowtie</text><text x="10" y="160" class="base">Coin Collector Ring of Rarity</text><text x="10" y="180" class="base">Chalice of Satoshi Blessing</text><text x="10" y="340" fill="#f2a900">eec84fc2</text><text x="340" y="340" fill="#f2a900" style="text-anchor:end;alignment-baseline:bottom;">00289</t
text/plain;charset=utf-8
  "name": "4865.sats"
text/plain;charset=utf-8
  "name": "4649.sats"
text/plain;charset=utf-8
  "name": "4597.sats"
text/plain;charset=utf-8
  "name": "5469.sats"
text/plain;charset=utf-8
  "name": "4839.sats"
text/plain;charset=utf-8
  "name": "4707.sats"
text/plain;charset=utf-8
  "name": "4805.sats"
text/plain;charset=utf-8
  "name": "4575.sats"
text/plain;charset=utf-8
  "name": "4995.sats"
text/plain;charset=utf-8
  "name": "4669.sats"
text/plain;charset=utf-8
  "name": "4717.sats"
text/plain;charset=utf-8
  "name": "4879.sats"
text/plain;charset=utf-8
  "name": "4801.sats"
text/plain;charset=utf-8
  "name": "4705.sats"
text/plain;charset=utf-8
  "name": "4947.sats"
text/plain;charset=utf-8
  "name": "4673.sats"
text/plain;charset=utf-8
  "name": "4791.sats"
text/plain;charset=utf-8
  "name": "4653.sats"
text/plain;charset=utf-8
  "name": "5327.sats"
text/plain;charset=utf-8
  "name": "4755.sats"
text/plain;charset=utf-8
  "name": "4573.sats"
text/plain;charset=utf-8
  "name": "4627.sats"
text/plain;charset=utf-8
  "name": "5311.sats"
text/plain;charset=utf-8
  "name": "4617.sats"
text/plain;charset=utf-8
  "name": "4671.sats"
text/plain;charset=utf-8
  "name": "4759.sats"
text/plain;charset=utf-8
  "name": "5027.sats"
text/plain;charset=utf-8
  "name": "4857.sats"
text/plain;charset=utf-8
  "name": "5449.sats"
text/plain;charset=utf-8
  "name": "5575.sats"
text/plain;charset=utf-8
  "name": "5461.sats"
text/plain;charset=utf-8
  "name": "5175.sats"
text/plain;charset=utf-8
  "name": "5173.sats"
text/plain;charset=utf-8
  "name": "5083.sats"
text/plain;charset=utf-8
  "name": "5109.sats"
text/plain;charset=utf-8
  "name": "5135.sats"
text/plain;charset=utf-8
  "name": "4693.sats"
text/plain;charset=utf-8
  "name": "5145.sats"
text/plain;charset=utf-8
  "name": "4877.sats"
text/plain;charset=utf-8
  "name": "5261.sats"
text/plain;charset=utf-8
  "name": "4681.sats"
text/plain;charset=utf-8
  "name": "5137.sats"
text/plain;charset=utf-8
  "name": "5129.sats"
text/plain;charset=utf-8
  "name": "4763.sats"
text/plain;charset=utf-8
  "name": "4829.sats"
text/plain;charset=utf-8
  "name": "5435.sats"
text/plain;charset=utf-8
  "name": "5543.sats"
text/plain;charset=utf-8
  "name": "5453.sats"
text/plain;charset=utf-8
  "name": "5529.sats"
text/plain;charset=utf-8
  "name": "4781.sats"
text/plain;charset=utf-8
  "name": "4875.sats"
text/plain;charset=utf-8
  "name": "4565.sats"
text/plain;charset=utf-8
  "name": "5223.sats"
text/plain;charset=utf-8
  "name": "5091.sats"
text/plain;charset=utf-8
  "name": "4895.sats"
text/plain;charset=utf-8
  "name": "5049.sats"
text/plain;charset=utf-8
  "name": "5205.sats"
text/plain;charset=utf-8
  "name": "5197.sats"
text/plain;charset=utf-8
  "name": "4931.sats"
text/plain;charset=utf-8
  "name": "5159.sats"
text/plain;charset=utf-8
  "name": "4645.sats"
text/plain;charset=utf-8
  "name": "4771.sats"
text/plain;charset=utf-8
  "name": "4767.sats"
text/plain;charset=utf-8
  "name": "5549.sats"
text/plain;charset=utf-8
  "name": "5465.sats"
text/plain;charset=utf-8
  "name": "4579.sats"
text/plain;charset=utf-8
  "name": "5167.sats"
text/plain;charset=utf-8
  "name": "4749.sats"
text/plain;charset=utf-8
  "name": "4911.sats"
text/plain;charset=utf-8
  "name": "4641.sats"
text/plain;charset=utf-8
  "name": "4635.sats"
text/plain;charset=utf-8
  "name": "5069.sats"
text/plain;charset=utf-8
  "name": "5039.sats"
text/plain;charset=utf-8
  "name": "5293.sats"
text/plain;charset=utf-8
  "name": "4577.sats"
text/plain;charset=utf-8
  "name": "4941.sats"
text/plain;charset=utf-8
  "name": "4863.sats"
text/plain;charset=utf-8
  "name": "5267.sats"
text/plain;charset=utf-8
  "name": "5365.sats"
text/plain;charset=utf-8
  "name": "4787.sats"
text/plain;charset=utf-8
  "name": "5181.sats"
text/plain;charset=utf-8
  "name": "5141.sats"
text/plain;charset=utf-8
  "name": "4871.sats"
text/plain;charset=utf-8
  "name": "5117.sats"
text/plain;charset=utf-8
  "name": "5143.sats"
text/plain;charset=utf-8
  "name": "5447.sats"
text/plain;charset=utf-8
  "name": "5545.sats"
text/plain;charset=utf-8
  "name": "4919.sats"
text/plain;charset=utf-8
  "name": "4563.sats"
text/plain;charset=utf-8
  "name": "4735.sats"
text/plain;charset=utf-8
  "name": "5237.sats"
text/plain;charset=utf-8
  "name": "5023.sats"
text/plain;charset=utf-8
  "name": "5471.sats"
text/plain;charset=utf-8
  "name": "4945.sats"
text/plain;charset=utf-8
  "name": "4923.sats"
text/plain;charset=utf-8
  "name": "5481.sats"
text/plain;charset=utf-8
  "name": "5431.sats"
text/plain;charset=utf-8
  "name": "5325.sats"
text/plain;charset=utf-8
  "name": "4965.sats"
text/plain;charset=utf-8
  "name": "4683.sats"
text/plain;charset=utf-8
  "name": "5371.sats"
text/plain;charset=utf-8
  "name": "4969.sats"
text/plain;charset=utf-8
  "name": "4703.sats"
text/plain;charset=utf-8
  "name": "4745.sats"
text/plain;charset=utf-8
  "name": "5193.sats"
text/plain;charset=utf-8
  "name": "5247.sats"
text/plain;charset=utf-8
  "name": "4951.sats"
text/plain;charset=utf-8
  "name": "5363.sats"
text/plain;charset=utf-8
  "name": "4611.sats"
text/plain;charset=utf-8
  "name": "5315.sats"
text/plain;charset=utf-8
  "name": "4933.sats"
text/plain;charset=utf-8
  "name": "4855.sats"
text/plain;charset=utf-8
  "name": "4697.sats"
text/plain;charset=utf-8
  "name": "4887.sats"
text/plain;charset=utf-8
  "name": "4893.sats"
text/plain;charset=utf-8
  "name": "4733.sats"
text/plain;charset=utf-8
  "name": "5307.sats"
text/plain;charset=utf-8
  "name": "5439.sats"
text/plain;charset=utf-8
  "name": "5489.sats"
text/plain;charset=utf-8
  "name": "4725.sats"
text/plain;charset=utf-8
  "name": "5331.sats"
text/plain;charset=utf-8
  "name": "5255.sats"
text/plain;charset=utf-8
  "name": "5133.sats"
text/plain;charset=utf-8
  "name": "5583.sats"
text/plain;charset=utf-8
  "name": "4741.sats"
text/plain;charset=utf-8
  "name": "4973.sats"
text/plain;charset=utf-8
  "name": "5523.sats"
text/plain;charset=utf-8
  "name": "4775.sats"
text/plain;charset=utf-8
  "name": "4997.sats"
text/plain;charset=utf-8
  "name": "5351.sats"
text/plain;charset=utf-8
  "name": "4925.sats"
text/plain;charset=utf-8
  "name": "5487.sats"
text/plain;charset=utf-8
  "name": "4907.sats"
text/plain;charset=utf-8
  "name": "4651.sats"
text/plain;charset=utf-8
  "name": "5503.sats"
text/plain;charset=utf-8
  "name": "5095.sats"
text/plain;charset=utf-8
  "name": "5377.sats"
text/plain;charset=utf-8
  "name": "5275.sats"
text/plain;charset=utf-8
  "name": "5477.sats"
text/plain;charset=utf-8
  "name": "5441.sats"
text/plain;charset=utf-8
  "name": "5119.sats"
text/plain;charset=utf-8
  "name": "4975.sats"
text/plain;charset=utf-8
  "name": "5075.sats"
text/plain;charset=utf-8
  "name": "5235.sats"
text/plain;charset=utf-8
  "name": "5263.sats"
text/plain;charset=utf-8
  "name": "4737.sats"
text/plain;charset=utf-8
  "name": "5457.sats"
text/plain;charset=utf-8
  "name": "4959.sats"
text/plain;charset=utf-8
  "name": "4751.sats"
text/plain;charset=utf-8
  "name": "4783.sats"
text/plain;charset=utf-8
  "name": "5155.sats"
text/plain;charset=utf-8
  "name": "4989.sats"
text/plain;charset=utf-8
  "name": "4967.sats"
text/plain;charset=utf-8
  "name": "5065.sats"
text/plain;charset=utf-8
  "name": "5169.sats"
text/plain;charset=utf-8
  "name": "5287.sats"
text/plain;charset=utf-8
  "name": "4815.sats"
text/plain;charset=utf-8
  "name": "4769.sats"
text/plain;charset=utf-8
  "name": "4761.sats"
text/plain;charset=utf-8
  "name": "5281.sats"
text/plain;charset=utf-8
  "name": "4817.sats"
text/plain;charset=utf-8
  "name": "4935.sats"
text/plain;charset=utf-8
  "name": "5525.sats"
text/plain;charset=utf-8
  "name": "4905.sats"
text/plain;charset=utf-8
  "name": "5153.sats"
text/plain;charset=utf-8
  "name": "5497.sats"
text/plain;charset=utf-8
  "name": "5031.sats"
text/plain;charset=utf-8
  "name": "5345.sats"
text/plain;charset=utf-8
  "name": "5537.sats"
text/plain;charset=utf-8
  "name": "4623.sats"
text/plain;charset=utf-8
  "name": "5429.sats"
text/plain;charset=utf-8
  "name": "5131.sats"
text/plain;charset=utf-8
  "name": "4637.sats"
text/plain;charset=utf-8
  "name": "5513.sats"
text/plain;charset=utf-8
  "name": "5451.sats"
text/plain;charset=utf-8
  "name": "5389.sats"
text/plain;charset=utf-8
  "name": "5501.sats"
text/plain;charset=utf-8
  "name": "5253.sats"
text/plain;charset=utf-8
  "name": "4709.sats"
text/plain;charset=utf-8
  "name": "5047.sats"
text/plain;charset=utf-8
  "name": "4667.sats"
text/plain;charset=utf-8
  "name": "5015.sats"
text/plain;charset=utf-8
  "name": "5191.sats"
text/plain;charset=utf-8
  "name": "5043.sats"
text/plain;charset=utf-8
  "name": "5011.sats"
text/plain;charset=utf-8
  "name": "4897.sats"
text/plain;charset=utf-8
  "name": "4713.sats"
text/plain;charset=utf-8
  "name": "5283.sats"
text/plain;charset=utf-8
  "name": "5185.sats"
text/plain;charset=utf-8
  "name": "4843.sats"
text/plain;charset=utf-8
  "name": "5509.sats"
text/plain;charset=utf-8
  "name": "4869.sats"
text/plain;charset=utf-8
  "name": "5265.sats"
text/plain;charset=utf-8
  "name": "5393.sats"
text/plain;charset=utf-8
  "name": "4603.sats"
text/plain;charset=utf-8
  "name": "4701.sats"
text/plain;charset=utf-8
  "name": "5361.sats"
text/plain;charset=utf-8
  "name": "5507.sats"
text/plain;charset=utf-8
  "name": "5045.sats"
text/plain;charset=utf-8
  "name": "5539.sats"
text/plain;charset=utf-8
  "name": "5269.sats"
text/plain;charset=utf-8
  "name": "4853.sats"
text/plain;charset=utf-8
  "name": "4903.sats"
text/plain;charset=utf-8
  "name": "4831.sats"
text/plain;charset=utf-8
  "name": "5249.sats"
text/plain;charset=utf-8
  "name": "5403.sats"
text/plain;charset=utf-8
  "name": "5565.sats"
text/plain;charset=utf-8
  "name": "4889.sats"
text/plain;charset=utf-8
  "name": "4859.sats"
text/plain;charset=utf-8
  "name": "4659.sats"
text/plain;charset=utf-8
  "name": "5531.sats"
text/plain;charset=utf-8
  "name": "5243.sats"
text/plain;charset=utf-8
  "name": "5105.sats"
text/plain;charset=utf-8
  "name": "4971.sats"
text/plain;charset=utf-8
  "name": "5467.sats"
text/plain;charset=utf-8
  "name": "5399.sats"
text/plain;charset=utf-8
  "name": "4639.sats"
text/plain;charset=utf-8
  "name": "5367.sats"
text/plain;charset=utf-8
  "name": "4909.sats"
text/plain;charset=utf-8
  "name": "5527.sats"
text/plain;charset=utf-8
  "name": "5127.sats"
text/plain;charset=utf-8
  "name": "5323.sats"
text/plain;charset=utf-8
  "name": "4961.sats"
text/plain;charset=utf-8
  "name": "4719.sats"
text/plain;charset=utf-8
  "name": "5295.sats"
text/plain;charset=utf-8
  "name": "4953.sats"
text/plain;charset=utf-8
  "name": "4731.sats"
text/plain;charset=utf-8
  "name": "5035.sats"
text/plain;charset=utf-8
  "name": "4723.sats"
text/plain;charset=utf-8
  "name": "4661.sats"
text/plain;charset=utf-8
  "name": "5161.sats"
text/plain;charset=utf-8
  "name": "4927.sats"
text/plain;charset=utf-8
  "name": "5187.sats"
text/plain;charset=utf-8
  "name": "5183.sats"
text/plain;charset=utf-8
  "name": "5475.sats"
text/plain;charset=utf-8
  "name": "4833.sats"
text/plain;charset=utf-8
  "name": "5009.sats"
text/plain;charset=utf-8
  "name": "5239.sats"
text/plain;charset=utf-8
  "name": "5025.sats"
text/plain;charset=utf-8
  "name": "5003.sats"
text/plain;charset=utf-8
  "name": "5305.sats"
text/plain;charset=utf-8
  "name": "4757.sats"
text/plain;charset=utf-8
  "name": "4845.sats"
text/plain;charset=utf-8
  "name": "5479.sats"
text/plain;charset=utf-8
  "name": "5071.sats"
text/plain;charset=utf-8
  "name": "5001.sats"
text/plain;charset=utf-8
  "name": "5245.sats"
text/plain;charset=utf-8
  "name": "5233.sats"
text/plain;charset=utf-8
  "name": "5561.sats"
text/plain;charset=utf-8
  "name": "5273.sats"
text/plain;charset=utf-8
  "name": "4789.sats"
text/plain;charset=utf-8
  "name": "4613.sats"
text/plain;charset=utf-8
  "name": "4977.sats"
text/plain;charset=utf-8
  "name": "4599.sats"
text/plain;charset=utf-8
  "name": "4881.sats"
text/plain;charset=utf-8
  "name": "5259.sats"
text/plain;charset=utf-8
  "name": "4979.sats"
text/plain;charset=utf-8
  "name": "5541.sats"
text/plain;charset=utf-8
  "name": "5385.sats"
text/plain;charset=utf-8
  "name": "4569.sats"
text/plain;charset=utf-8
  "name": "5017.sats"
text/plain;charset=utf-8
  "name": "4609.sats"
text/plain;charset=utf-8
  "name": "4605.sats"
text/plain;charset=utf-8
  "name": "4583.sats"
text/plain;charset=utf-8
  "name": "4811.sats"
text/plain;charset=utf-8
  "name": "5425.sats"
text/plain;charset=utf-8
  "name": "5573.sats"
text/plain;charset=utf-8
  "name": "5139.sats"
text/plain;charset=utf-8
  "name": "4581.sats"
text/plain;charset=utf-8
  "name": "5271.sats"
text/plain;charset=utf-8
  "name": "4851.sats"
text/plain;charset=utf-8
  "name": "4729.sats"
text/plain;charset=utf-8
  "name": "4689.sats"
text/plain;charset=utf-8
  "name": "4665.sats"
text/plain;charset=utf-8
  "name": "4825.sats"
text/plain;charset=utf-8
  "name": "4587.sats"
text/plain;charset=utf-8
  "name": "4591.sats"
text/plain;charset=utf-8
  "name": "4993.sats"
text/plain;charset=utf-8
  "name": "4809.sats"
text/plain;charset=utf-8
  "name": "5199.sats"
text/plain;charset=utf-8
  "name": "5579.sats"
text/plain;charset=utf-8
  "name": "5495.sats"
text/plain;charset=utf-8
  "name": "4647.sats"
text/plain;charset=utf-8
  "name": "4985.sats"
text/plain;charset=utf-8
  "name": "4847.sats"
text/plain;charset=utf-8
  "name": "5093.sats"
text/plain;charset=utf-8
  "name": "5277.sats"
text/plain;charset=utf-8
  "name": "4785.sats"
text/plain;charset=utf-8
  "name": "4819.sats"
text/plain;charset=utf-8
  "name": "5339.sats"
text/plain;charset=utf-8
  "name": "4615.sats"
text/plain;charset=utf-8
  "name": "5053.sats"
text/plain;charset=utf-8
  "name": "5123.sats"
text/plain;charset=utf-8
  "name": "5103.sats"
text/plain;charset=utf-8
  "name": "4813.sats"
text/plain;charset=utf-8
  "name": "5317.sats"
text/plain;charset=utf-8
  "name": "5203.sats"
text/plain;charset=utf-8
  "name": "4867.sats"
text/plain;charset=utf-8
  "name": "5051.sats"
text/plain;charset=utf-8
  "name": "4625.sats"
text/plain;charset=utf-8
  "name": "5473.sats"
text/plain;charset=utf-8
  "name": "4955.sats"
text/plain;charset=utf-8
  "name": "5149.sats"
text/plain;charset=utf-8
  "name": "5085.sats"
text/plain;charset=utf-8
  "name": "5067.sats"
text/plain;charset=utf-8
  "name": "5165.sats"
text/plain;charset=utf-8
  "name": "5189.sats"
text/plain;charset=utf-8
  "name": "5535.sats"
text/plain;charset=utf-8
  "name": "5515.sats"
text/plain;charset=utf-8
  "name": "4695.sats"
text/plain;charset=utf-8
  "name": "5059.sats"
text/plain;charset=utf-8
  "name": "5483.sats"
text/plain;charset=utf-8
  "name": "4715.sats"
text/plain;charset=utf-8
  "name": "5437.sats"
c/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
  "name": "bitcoin.sats"
text/plain;charset=utf-8
  "name": "n3t.sats"
text/plain;charset=utf-8
  "name": "swoosh.sats"
text/plain;charset=utf-8
-{"p":"sns","op":"reg","name":"joeatang.sats"}h!
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503077142</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503077142   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
text/plain;charset=utf-8
,{"p":"sns","op":"reg","name":"1001001.sats"}h!
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503077042</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503077042   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"diamondhand.sats"}h!
text/plain;charset=utf-8
*{"p":"sns","op":"reg","name":"atang.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
0{"p":"sns","op":"reg","name":"businessman.sats"}h!
text/plain;charset=utf-8
1{"p":"sns","op":"reg","name":"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9932.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9934.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9248.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9931.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9249.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6080.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6131.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6061.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8722.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7275.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6077.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7339.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6088.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4707.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4677.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4714.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7397.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7378.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6002.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8684.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8728.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4667.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4645.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6114.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7383.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6070.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8677.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8663.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6069.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7387.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4688.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4694.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4668.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8678.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7399.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6106.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6133.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7273.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6005.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4643.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4699.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7407.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4669.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6086.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7411.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8699.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4704.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6099.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4684.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6062.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7375.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8676.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8687.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4641.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7388.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8626.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8638.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6067.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4676.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8718.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7379.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6076.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8707.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7393.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4665.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6004.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8658.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4674.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6101.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6096.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7417.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7376.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7338.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6068.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4662.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8669.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8733.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8664.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8727.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8737.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8680.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4717.sats"}h!
text/plain;charset=utf-8
  "name": "bitcoingermany.sats"
text/plain;charset=utf-8
  "name": "bitcoindeutschland.sats"
text/plain;charset=utf-8
  "name": "bitcoinistgeld.sats"
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'bbo.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'chu.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'cin.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'bba.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'aoo.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'bbs.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'cex.sats'}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8248.sats"}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'bcd.sats'}h!
text/plain;charset=utf-8
-{'p': 'sns', 'op': 'reg', 'name': 'cim.sats'}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8834.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9247.sats"}h!
text/plain;charset=utf-8
Teenage Mutant Ninja Turtles 2 (NES) - 9 Lives and Levels
Before selecting number of characters: B, A, B, A, Up, Down, B, A, Left, Right, B, A. Then hit starth!
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#ffda54"/>
   <ref id="color2" param="fill2" default="#1f1407"/>
   <ref id="color3" param="fill3" default="#af1818"/>
   <ref id="color4" param="fill4" default="#feb964"/>
  <path fill="url(#color1)" d="M0 0v50h30V40H10V20h10v10h10V20h10v10h10V2M
0h10v20H40v10h70V40H90V20h10v10h10V20h10v10h10V20h10v20h-20v10h70V40h-20V20h10v10h10V20h10v10h10V20h10v20h-20v10h70V40h-20V20h10v10h10V20h10v10h10V20h10v20h-20v10h40V0H10Zm50 60v10H40v10H30v20H20v10H10v20h10v-10h10v-10h10v-10h10V90h10V80h20V70H70V60H60Zm60 60v10h10v-10zm10 10v20h-10v10h30v10h20v10h10v-10h10v-10h20v-10h70v-10H140v-10h-10zm150 10h10v-10h-10zm10 20v10h10v-10zm10 20v10h10v-10zm10 10v10h10v-10ZM80 220v10h10v-10zm-10 20v10h10v-10zm0 10H60v10h10ZM0 270v50h320v-50h-30v10h20v20h-10v-10h-10v10h-10v-10h-10v10M
h-10v-20h20v-10h-70v10h20v20h-10v-10h-10v10h-10v-10h-10v10h-10v-20h20v-10h-70v10h20v20h-10v-10h-10v10h-10v-10h-10v10h-10v-20h20v-10H50v10h20v20H60v-10H50v10H40v-10H30v10H20v-20h20v-10H10Z"/>
  <path fill="url(#color2)" d="M10 20v20h20v10h10V40h20V20H50v10H40V20H30v10H20V20Zm80 0v20h20v10h10V40h20V20h-10v10h-10V20h-10v10h-10V20Zm80 0v20h20v10h10V40h20V20h-10v10h-10V20h-10v10h-10V20Zm80 0v20h20v10h10V40h20V20h-10v10h-10V20h-10v10h-10V20ZM40 60v10h10V60Zm0 10H30v10h10Zm30-10v10h10v50H70v10h10v10h20v-10h10V90h-10V70H90M
V60H80Zm230 20v10h10V80Zm10 10v10h-10v10h-10v10h-10v30h10v-20h10v-10h10v-10h10V90ZM20 90v10h10V90Zm30 0v10h10V90Zm-40 40v10h10v-10zm100 30v10h10v-10zm10 10v10h10v-10zm70-10v10h10v-10zm0 10h-10v10h10zm-10 10h-20v10h20zm70-20v20h10v20h20v-10h-10v-20h-10v-10zm30 40v10h20v-10h-10zm-20 0H150v10h90v10h-10v20h20v-10h10v-20zm-110 10h-20v10h-10v10h-10v10h30v-20h10zm-70-40v20h10v-20zm10 20v10h10v-10zm200 30v10h10v-10ZM80 250v10h10v-10zm-40 20v10H20v20h10v-10h10v10h10v-10h10v10h10v-20H50v-10zm80 0v10h-20v20h10v-10h10v10h10v-1M
0h10v10h10v-20h-20v-10zm80 0v10h-20v20h10v-10h10v10h10v-10h10v10h10v-20h-20v-10zm80 0v10h-20v20h10v-10h10v10h10v-10h10v10h10v-20h-20v-10z"/>
  <path fill="url(#color3)" d="M0 50v220h320V110h-10v10h-10v10h-10v20h-10v10h10v20h10v10h10v50h-20v-20h10v-10h-20v-10h-20v30h-10v10h-20v-20h10v-10h-90v10h-10v20h-40v10H90v10H60v-10h10v-10h10v-20h10v-30H80v-40H70v-20H50v10H10v-30h10V90h10V70h10V60h50v10h10v20h10v30h10v10h20v10h130v-10h10v-10h10v-10h10v-10h10V90h-10V80h10v10h10V50H10Zm110 170v10h10v-10z"/>
  <path fill="url(#colM
or4)" d="M60 80v20H40v10H30v10H20v20h30v-10h20v-10h10V80H70Zm10 50v20h10v20h10v20h10v10H90v30H80v20h20v-10h10v-20h20v-10h20v-10h110v-20h-10v-20h10v10h10v20h10v10h20v-10h-10v-20h-10v-30h-10v10h-70v20h-10v10h-10v10h-20v-20h-20v-10h-20v10h10v10h-10v-10h-10v-20h10v-20h-20v10H80v-10zm110 50v-10h-10v10zm0-10h10v-10h-10zm120 30v30h-10v10h20v-40ZM80 250H70v10h10z"/>
  <script type="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refList.item( r );
       var id = eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
       if (eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
   if ( -1 != href.indexOf("?") )
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
       var valList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
       for ( var i = 0, iLen = params.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" );
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
  GetIdRefs( eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagName( "*" );
   for ( var i = 0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachEl.attributes[ a ];
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
       var t = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
           eachEl.setAttributeNS( attr.namespaceURI, attr.name, val);
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.2" shape-rendering="crispEdges" height="320" width="320" preserveAspectRatio="xMinYMin meet"
viewBox="0 0 320 320">
   <ref id="color1" param="fill1" default="#685e44"/>
   <ref id="color2" param="fill2" default="#1a110c"/>
   <ref id="color3" param="fill3" default="#31231a"/>
   <ref id="color4" param="fill4" default="#868c66"/>
  <g stroke-width="10"><path d="M0 0v40h10V0zm120 0v10h10V0zm20 0v10h20V0h-10M
zm30 0v10h20V0h-10zm30 0v10h10V0zm-80 20v30h10V40h10V30h10v10h10V20h-30zm30 20h-10v10h-10v10h-10v10h30V50zm40-20v10h10V20zm10 10v40h10V30zm100-10v50h20V60h-10V30h10V20h-10zm-190 90v10h10v-10zm10 10v10h10v-10zm10 0h10v-10h-10zm10 0v10h10v-10zm10 0h10v-10h-10zm10 0v10h10v-10zm10 0h10v-10h-10zm0 10v10h10v-10zm0 10h-10v10h10zm0 10v10h10v-10zm0 10h-10v10h10zm-10 0v-10h-10v10zm-10 0h-10v10h10zm-10 0v-10h-10v10zm-10 0h-10v10h10zm-10 0v-10h-10v10zm0-10h10v-10h-10zm0-10v-10h-10v10zm10 0h10v-10h-10zm10 0v10h10v-10zm10 0h10v-M
10h-10zm40 0v10h10v-10zm100 0v10h10v-10zM0 160v60h10v-10h10v-10h10v-10h10v-10H30v-10h10v-10H10zm40 30v10H30v10H20v10H10v20h10v10H10v10H0v50h10v-10h10v-10h60v-10h10v-30H80v10H70v-10H60v-10H50v-10h10v-10h10v-10h10v-10h10v10h10v-10h10v-20h-10v-20H50v10h10v10H50v10zm70 10v10h10v-10zm10 0h10v10h10v-10h10v10h10v-10h10v10h10v-10h10v10h10v-20h-10v-10h-60v10h-10zm50 10h-10v10h10zm-10 10h-10v40h-10v10h10v10h10v-10h20v-10h-10v-30h-10zm-10 0v-10h-10v10zm-40-10h-10v10h10zm-10 10H90v10h10zm-10 10H80v10h10zm0 10v10h10v-10zm-10 0HM
70v10h10zm-10 0v-10H60v10zm0-10h10v-10H70zm10-10h10v-10H80zm110-60v10h10v-10zm30 0v20h-10v30h10v-10h10v10h10v10h10v10h10v10h-10v10h-10v10h-10v-10h-10v10h-10v10h20v10h10v10h60v10h10v10h10V160h-20v10h-10v-10h-60zm10 90h10v-10h-10zm0-10v-10h-10v10zm0-10h10v-10h-10zm0-10v-10h-10v10zm10 10v10h10v-10z" fill="url(#color1)"/><path d="M10 0v40H0v10h20V0zm90 0v70H90v20h90V80h-10V20h40v50h10v10h-10v10h30V70h-10V0h-20v10h-40V0h-10v10h-40V0h-10zm110 80V70h-30v10h10v10h10V80zm80-70v70h30V70h-20V20h20V10h-20zM120 20h40v50h-40V30zM
M40 30v10H30v30H20v10h20v60H0v20h40v10H30v10h30v-10H50v-10h50v20h120v-20h70v-20h-70v-40H100v40H50V80h20V70H60V40H50V30zm270 70v30h10v-30zm-200 10h70v60h-70v-50zm80 0h20v20h-20v-10zm0 30h20v10h-20zm110 0v20h20v-20h-10zm-110 20h20v10h-20zm-20 50v20h10v20h10v10h30v-40h-10v-10h-30zm-40 60v10h20v-10h-10zm0 10h-10v20h10v-10zm0 20v10h-20v10h200v-10h-10v-10h-50v-10h-70v10h-40zm-60-10v10H20v10H10v10h80v-10H80v-20z" fill="url(#color2)"/><path d="M20 0v50H0v90h40V80H20V70h10V40h10V30h10v10h10v30h10v10H50v60h50v-40h90V90H90V70M
h10V0H30zm210 0v70h10v20h-40v10h20v40h60v-20h30v-20h10V80h-30V10h30V0h-80zm-60 20v50h30V40h-10v10h-10V40h10V20h-10zm140 10v20h10V30zM150 40v30h10V40zm40 70v20h20v-20h-10zm10 30v10h10v-10zm0 20v10h10v-10zM40 180v10h10v-10zm0 10H30v10h10zm-10 10H20v10h10zm-10 10H10v10h10zm-10 10H0v40h10v-10h10v-10H10v-10zm100-40v20h10v-10h10v-10h-10zm80 0v10h10v10h10v-20h-10zm-80 30v10h-10v40H90v20H80v30h10v10h20v-10h20v-10h-30v-20h30v-20h10v-10h-10v-10h10v-10h10v-10h-10v-10h-20zm20 70v20h50v-10h60v-10h-10v-10h-70v10h-20zM20 290v10h5M
0v-10H30zm0 10H10v10h10zm-10 10H0v10h10zm240-20v10h50v-10h-40zm50 10v10h10v-10zm10 10v10h10v-10z" fill="url(#color3)"/><path d="M130 0v10h10V0zm60 0v10h10V0zm10 20v10h10V20zm0 10h-10v10h10zm-10 10h-10v10h10zm-50-10v10h10V30zm0 10h-10v10h10zm-10 10h-10v10h10zm180 0v10h10V50zM170 70v10h10V70zm10 10v10h10V80zm10 10v10h10V90zm10 0h10V80h-10zm10-10h10V70h-10zm-90 30v10h10v-10zm10 10v10h10v-10zm10 0h10v-10h-10zm10 0v10h10v-10zm10 0h10v-10h-10zm10 0v10h10v-10zm0 10h-10v10h10zm0 10v10h10v-10zm0 10h-10v10h10zm0 10v10h10v-10M
zm-10 0h-10v10h10zm-10 0v-10h-10v10zm-10 0h-10v10h10zm-10 0v-10h-10v10zm-10 0h-10v10h10zm0-10v-10h-10v10zm0-10h10v-10h-10zm0-10v-10h-10v10zm10 10v10h10v-10zm10 0h10v-10h-10zm10 0v10h10v-10zm130-20v20h40v-10h-10v-10h-20zm10 30v20h10v-20zM80 200v10h10v-10zm10 10v10h10v-10zm10 0h10v-10h-10zm-10 10H80v10h10zm0 10v10h10v-10zm0 10H80v10h10zm0 10v10h10v-10zm-10 0H70v10h10zm-10 0v-10H60v10zm-10-10v-10H50v10zm0-10h10v-10H60zm10-10h10v-10H70zm0 10v10h10v-10zm50-30v10h10v-10zm20 0v10h10v-10zm10 10v10h10v-10zm10 0h10v-10h-10zmM
0 10v10h10v-10zm10 10v30h10v10h30v-10h-20v-10h-10v-20zm10-30v10h10v-10zm20 0v10h10v-10zm10 10v10h10v-10zm10 0h10v-10h-10zm10 0v10h10v-10zm10 10v10h10v-10zm10 10v10h10v-10zm0 10h-10v10h10zm-10 10h-10v10h10zm-10 0v-10h-10v10zm0-10h10v-10h-10zm0-10v-10h-10v10zm-90 0v10h-10v10h10v10h10v-30zm0 30h-10v10h10zm-40 20v20h20v-20h-10z" fill="url(#color4)"/></g><script type="text/ecmascript">
   function GetParams()
   var defs = document.getElementsByTagName( "defs" )[0];
   var refList = defs.getElementsByTagName( "ref" );
   for ( var r = refList.length -1; 0 <= r; r-- )
       var eachRef = refList.item( r );
       var id = eachRef.getAttribute( "id" );
       var paramName = eachRef.getAttribute( "param" );
       var defaultVal = eachRef.getAttribute( "default" );
       if (!defaultVal)
       if (eachRef.firstChild)
           defaultVal = eachRef.firstChild.nodeValue;
           defaultVal = "";
       refs[ paramName ] = [eachRef, id, defaultVal];
   var paramArray = [];
   var href = document.defaultView.location.href;
   if ( -1 != href.indexOf("?") )
       var paramList = href.split("?")[1].split(/&|;/);
       for ( var p = 0, pLen = paramList.length; pLen > p; p++ )
       var eachParam = paramList[ p ];
       var valList = eachParam.split("=");
       var name = unescape(valList[0]);
       var value = unescape(valList[1]);
       refs[ name ][2] = value;
   if ( document.defaultView.frameElement )
       var params = document.defaultView.frameElement.getElementsByTagName("param");
       for ( var i = 0, iLen = params.length; iLen > i; i++ )
           var eachParam = params[ i ];
           var name = eachParam.getAttribute( "name" );
           var value = eachParam.getAttribute( "value" );
           refs[ name ][2] = value;
   for ( paramName in refs )
       var eachParam = refs[ paramName ];
 eachParam[1], eachParam[2] );
   function GetIdRefs( id, val )
   var elList = document.documentElement.getElementsByTagName( "*" );
   for ( var i = 0, iLen = elList.length; iLen > i; i++ )
       var eachEl = elList.item( i );
       for ( var a = 0, aLen = eachEl.attributes.length; aLen > a; a++ )
       var attr = eachEl.attributes[ a ];
       if ( attr && -1 != attr.value.indexOf("#" + id) )
           if ( "tref" == eachEl.localName )
 = document.createTextNode( val );
           eachEl.parentNode.replaceChild( t, eachEl );
           eachEl.setAttributeNS( attr.namespaceURI, attr.name, val);
FjDOUT:53CC394006FD1220298D8A10E73949A5F24B8E3CBDAEFFE223FA0B0EFCA1C447
text/plain;charset=utf-8
  "name": "6864.sats"
text/plain;charset=utf-8
  "name": "1046.sats"
text/plain;charset=utf-8
  "name": "4663.sats"
text/plain;charset=utf-8
  "name": "5087.sats"
text/plain;charset=utf-8
  "name": "4687.sats"
text/plain;charset=utf-8
  "name": "5357.sats"
text/plain;charset=utf-8
  "name": "4631.sats"
text/plain;charset=utf-8
  "name": "4943.sats"
text/plain;charset=utf-8
  "name": "4739.sats"
text/plain;charset=utf-8
  "name": "4593.sats"
text/plain;charset=utf-8
  "name": "5505.sats"
text/plain;charset=utf-8
  "name": "5291.sats"
text/plain;charset=utf-8
  "name": "5041.sats"
text/plain;charset=utf-8
  "name": "4675.sats"
text/plain;charset=utf-8
  "name": "5029.sats"
text/plain;charset=utf-8
  "name": "5359.sats"
text/plain;charset=utf-8
  "name": "5299.sats"
text/plain;charset=utf-8
  "name": "4849.sats"
text/plain;charset=utf-8
  "name": "5341.sats"
text/plain;charset=utf-8
  "name": "5013.sats"
text/plain;charset=utf-8
  "name": "5089.sats"
text/plain;charset=utf-8
  "name": "4841.sats"
text/plain;charset=utf-8
  "name": "4793.sats"
text/plain;charset=utf-8
  "name": "5229.sats"
text/plain;charset=utf-8
  "name": "5491.sats"
text/plain;charset=utf-8
  "name": "4939.sats"
text/plain;charset=utf-8
  "name": "4779.sats"
text/plain;charset=utf-8
  "name": "4589.sats"
text/plain;charset=utf-8
  "name": "4861.sats"
text/plain;charset=utf-8
  "name": "4607.sats"
text/plain;charset=utf-8
  "name": "4727.sats"
text/plain;charset=utf-8
  "name": "5455.sats"
text/plain;charset=utf-8
  "name": "5459.sats"
text/plain;charset=utf-8
  "name": "5581.sats"
text/plain;charset=utf-8
  "name": "5313.sats"
text/plain;charset=utf-8
  "name": "4711.sats"
text/plain;charset=utf-8
  "name": "4835.sats"
text/plain;charset=utf-8
  "name": "5037.sats"
text/plain;charset=utf-8
  "name": "4883.sats"
text/plain;charset=utf-8
  "name": "5231.sats"
text/plain;charset=utf-8
  "name": "5383.sats"
text/plain;charset=utf-8
  "name": "4937.sats"
text/plain;charset=utf-8
  "name": "4797.sats"
text/plain;charset=utf-8
  "name": "5073.sats"
text/plain;charset=utf-8
  "name": "5033.sats"
text/plain;charset=utf-8
  "name": "5241.sats"
text/plain;charset=utf-8
  "name": "4917.sats"
text/plain;charset=utf-8
  "name": "4957.sats"
text/plain;charset=utf-8
  "name": "4803.sats"
text/plain;charset=utf-8
  "name": "5569.sats"
text/plain;charset=utf-8
  "name": "5097.sats"
text/plain;charset=utf-8
  "name": "5157.sats"
text/plain;charset=utf-8
  "name": "5163.sats"
text/plain;charset=utf-8
  "name": "4585.sats"
text/plain;charset=utf-8
  "name": "5443.sats"
text/plain;charset=utf-8
  "name": "4837.sats"
text/plain;charset=utf-8
  "name": "5057.sats"
text/plain;charset=utf-8
  "name": "5427.sats"
text/plain;charset=utf-8
  "name": "4983.sats"
text/plain;charset=utf-8
  "name": "4677.sats"
text/plain;charset=utf-8
  "name": "5177.sats"
text/plain;charset=utf-8
  "name": "4629.sats"
text/plain;charset=utf-8
  "name": "4643.sats"
text/plain;charset=utf-8
  "name": "4691.sats"
text/plain;charset=utf-8
  "name": "5055.sats"
text/plain;charset=utf-8
  "name": "4963.sats"
text/plain;charset=utf-8
  "name": "5061.sats"
text/plain;charset=utf-8
  "name": "5499.sats"
text/plain;charset=utf-8
  "name": "5571.sats"
text/plain;charset=utf-8
  "name": "4827.sats"
text/plain;charset=utf-8
  "name": "4633.sats"
text/plain;charset=utf-8
  "name": "4987.sats"
text/plain;charset=utf-8
  "name": "5099.sats"
text/plain;charset=utf-8
  "name": "4991.sats"
text/plain;charset=utf-8
  "name": "5063.sats"
text/plain;charset=utf-8
  "name": "4657.sats"
text/plain;charset=utf-8
  "name": "4899.sats"
text/plain;charset=utf-8
  "name": "5081.sats"
text/plain;charset=utf-8
  "name": "5147.sats"
text/plain;charset=utf-8
  "name": "5179.sats"
text/plain;charset=utf-8
  "name": "4619.sats"
text/plain;charset=utf-8
  "name": "5113.sats"
text/plain;charset=utf-8
  "name": "5019.sats"
text/plain;charset=utf-8
  "name": "5485.sats"
text/plain;charset=utf-8
  "name": "4765.sats"
text/plain;charset=utf-8
  "name": "5405.sats"
text/plain;charset=utf-8
  "name": "4699.sats"
text/plain;charset=utf-8
  "name": "4885.sats"
text/plain;charset=utf-8
  "name": "4743.sats"
text/plain;charset=utf-8
  "name": "4901.sats"
text/plain;charset=utf-8
  "name": "5433.sats"
text/plain;charset=utf-8
  "name": "4873.sats"
text/plain;charset=utf-8
  "name": "4807.sats"
text/plain;charset=utf-8
  "name": "5519.sats"
text/plain;charset=utf-8
  "name": "5493.sats"
text/plain;charset=utf-8
  "name": "5171.sats"
text/plain;charset=utf-8
  "name": "5303.sats"
text/plain;charset=utf-8
  "name": "5547.sats"
text/plain;charset=utf-8
  "name": "5297.sats"
text/plain;charset=utf-8
  "name": "5301.sats"
text/plain;charset=utf-8
  "name": "4799.sats"
text/plain;charset=utf-8
  "name": "5209.sats"
text/plain;charset=utf-8
  "name": "5373.sats"
text/plain;charset=utf-8
  "name": "5463.sats"
text/plain;charset=utf-8
  "name": "5077.sats"
text/plain;charset=utf-8
  "name": "4891.sats"
text/plain;charset=utf-8
  "name": "5101.sats"
text/plain;charset=utf-8
  "name": "5251.sats"
text/plain;charset=utf-8
  "name": "4795.sats"
text/plain;charset=utf-8
  "name": "4753.sats"
text/plain;charset=utf-8
  "name": "5279.sats"
text/plain;charset=utf-8
  "name": "5079.sats"
text/plain;charset=utf-8
  "name": "5107.sats"
text/plain;charset=utf-8
  "name": "4595.sats"
text/plain;charset=utf-8
  "name": "4915.sats"
text/plain;charset=utf-8
  "name": "5517.sats"
text/plain;charset=utf-8
  "name": "5195.sats"
text/plain;charset=utf-8
  "name": "5207.sats"
text/plain;charset=utf-8
  "name": "4601.sats"
text/plain;charset=utf-8
  "name": "5563.sats"
text/plain;charset=utf-8
  "name": "4685.sats"
text/plain;charset=utf-8
  "name": "4773.sats"
text/plain;charset=utf-8
  "name": "4571.sats"
text/plain;charset=utf-8
  "name": "5347.sats"
text/plain;charset=utf-8
  "name": "4655.sats"
text/plain;charset=utf-8
  "name": "5375.sats"
text/plain;charset=utf-8
  "name": "4929.sats"
text/plain;charset=utf-8
  "name": "4823.sats"
text/plain;charset=utf-8
  "name": "4981.sats"
text/plain;charset=utf-8
  "name": "4913.sats"
<j:=:BNB.BNB:bnb134ntse0px6w8esjn2l8npty4qw7p4fc5unrc7m::wr:0
KjI=:THOR.RUNE:thor1kh9dtkavuzgst2zwukua2hts5y09hzgehn0vww:700721219319:t:30
text/plain;charset=utf-8
  "name": "phaver.sats"
text/plain;charset=utf-8
  "name": "logitech.sats"
text/plain;charset=utf-8
  "name": "0102.sats"
text/plain;charset=utf-8
  "name": "keplr.sats"
FjDOUT:EA0B2C9581C345ACB4278F1C289C33EDEC48468D9612F8C902D750AF3FBFEF97
FjDOUT:C7B876CCC384ED7694B0A4D14F24E40858BE1D6EEF027ED83118892F6BB2049C
FjDOUT:790271D87F6F39BEE911EDE393C3ADACBE90F809BFE0FF11EE0CAF2D9A71C389
FjDOUT:0D11F75D143BD593672452A29AB207D4EF70576A22B7542581A8EBE47CBDC78A
FjDOUT:7DF8792D0335F9D8BFB712B59D2877A71A27A139EF9113F7677D9DE751512EAF
Fri 16 Dec 2022 02:47:32 PM EST
2022-12-16T19:47:50+00:00
2022-12-16T19:47:32+00:00
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1341699438
FjDOUT:F01923050C7BAFBC90388F75EE65252F9B269DA97E2864D27C2CDDF3C1CEEBA3
FjD=:ETH.ETH:0x47c1884ff3775b7a67d8b4e55879399e911cee23:2712124137:t:30
FjDOUT:BF1D61D8B7B58614C00B557A2E4B25841F6B1773F96D56D6464E482BE4974FA1
FjDOUT:470B8FDD485107B0E4B773CC6F0A48D8638158D7BACCF86649EF5B902289646E
FjDOUT:4322134A69DD28AB449836A8D215590AE0E81AB356E4BE464736BA1C02BEAA74
FjDOUT:863D5B82F402321E8EC355E94E7C0C0B92D0FFBFDDA443EB451B67C0CDCB83BE
FjDOUT:6601D5CF3850AA4AB83619E7BAE96DE146FF6A940F11C3573D2CA946B9D944BA
FjDOUT:700894E3FF547BF15AF0052F30EC5595F5B19AC3EAA48365EEF8D9E7AEF62980
KjI=:THOR.RUNE:thor1kh9dtkavuzgst2zwukua2hts5y09hzgehn0vww:700657715319:t:30
7j5+:BTC.BTC:thor1nu9pau0u642s5fg0ennh8huy3yfachhr0dm5esj:
text/plain;charset=utf-8
  "name": "debank.sats"
text/plain;charset=utf-8
  "name": "alby.sats"
text/plain;charset=utf-8
  "name": "6369.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="M
https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdM
njs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" srcM
="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.M
split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
  seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l M
^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
  justify-content: center;
  align-items: center;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for tokenM
    // you need to populate a $generativeTraits object in the window object
 Add your code here
var ro =rnd(300,400)
  createCanvas(800, 800,WEBGL);
  dy=rnd(-height/2,height/2);
  for(j=0 ; j<1;j++){
    var r = floor(rnd(0,4))
   var l = rnd(0,g2)
       if(l>10&l<20){
        fill("#FF8B13")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#733C3C")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#001E6C")
       if(l>60&l<70){
       fill("#367E18")
       if(l>70&l<80){
       fill("#990000")
   if(col>20&col<40){
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#D61355")
          if(l>20&l<30){
         fill("#DA1212")
       if(l>30&l<40){
            fill("#30E3DF")
       if(l>40&l<50){
     fill("#10A19D")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>40&col<60){M
   var l = rnd(0,g2)
       fill("#FFD32D")
       if(l>10&l<20){
        fill("#939B62")
          if(l>20&l<30){
         fill("#FFD56F")
       if(l>30&l<40){
            fill("#FFB26B")
       if(l>40&l<50){
     fill("#FF7B54")
       if(l>50&l<60){
       fill("#F2CD5C")
       if(l>60&l<70){
       fill("#CD0404")
       if(l>70&l<80){
       fill("#990000")
    if(col>60&col<80){
   var l = rnd(0,g2)
       fill("#6C00FF")
       if(l>10&l<20){
        fill("#3C79F5")
          if(l>20&l<30){
         fill("#2DCDDF")
       if(l>30&l<40){
            fill("#579BB1")
       if(l>40&l<50){
     fill("#2C74B3")
       if(l>50&l<60){
       fill("#EAFDFC")
       if(l>60&l<70){
       fill("#BAD7E9")
       if(l>70&l<80){
       fill("#990000")
  for(i= 0 ; i<300 ;i++){
    strokeWeight(0.4)
    if(frameCount>370){
      strokeWeight(0.03)
  translate(dx+x+frameCount,dy+y)
  rect(0,0,rnd(20,100),30)
    strokeWeight(0.005)
    line(200,0,-width,-height)
  if(frameCount>490){
function rnd(min,max){
  return mathRand(0,1)*(max-min) + min;
 Add your code here
text/html;charset=utf-8
<meta charset="UTF-8">
<title>Angular Decay</title>
<script id="snippet-random-code" type="text/javascript">
let seed = window.location.href.split('/').find(t => t.includes('i0'));
const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
let pattern = "seed=";
for (let i = 0; i <M
 seed.length - pattern.length; ++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(lM
 ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
function sfc32($, _, u, i) {
return function () {
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
<style>body {margin: 0px;} </style>M
<canvas id="target"></canvas>
<script type="text/javascript">
const rand = mathRand();
const rand2 = mathRand();
let sqpix,cp,ratio=0.707,bug=false;
if(rand<0.3){sqpix=0;zoom=false;return"Portrait";}
if(rand<0.6){sqpix=0;ratio=1.414;return"Lanscape";}
if(rand<0.95){sqpix=1;return"Square";}
sqpix=1;bug=1;return"Bugged";}
if(rand<0.07){cp=12;return "Paper";}
if(rand<0.14){cp=1;return "DPM";}
if(rand<0.21){cp=2;return "Fecktarn";}
if(rand<0.41){cp=4;return "Desert Drill";}
if(rand<0.5){cp=5;return "Urban";}
if(rand<0.6){cp=6;return "Navy";}
if(rand<0.7){cp=7;return "German Winter";}
if(rand<0.8){cp=8;return "Tree";}
if(rand<0.85){cp=9;return "Orange";}
if(rand<0.9){cp=10;return "Harris";}
if(rand<0.95){cp=11;return "Market";}
cp=0;return "Saint";}
window.$generativeTraits = {"View": T1(rand),"Pallet": T2(rand2) }
const container = document.createElement("div")
container.innerHTML = "<span>seed: " + seed + "</spM
let resizeTmr=null,aniFrame=null;
let ofw,ofh,sz,rz=1;
let gi=0,gj=0,drp=0,drawtot=2,bmp,artcols=[];
var tricount=0,tr=30;
var tx1=[],ty1=[],tx2=[],ty2=[],tx3=[],ty3=[];
var rx1=[],ry1=[],rx2=[],ry2=[],rx3=[],ry3=[];
const init = async () => {
window.addEventListener('resize', async () => {
clearTimeout(resizeTmr)
resizeTmr = setTimeout(async () => {
await layoutCanvas()
await layoutCanvas()
const layoutCanvas = async () => {
const wWidth=window.innerWidth
const wHeight=window.innerHeight
let cHeight=wHeight;
let cWidth=cHeight*ratio;
if(cWidth>wWidth){cWidth=wWidth;cHeight=cWidth/ratio;}
const canvas=document.getElementById('target')
canvas.width=2000*rz;
canvas.height=(2000*rz)/ratio;
canvas.style.position = 'absolute'
canvas.style.width = `${cWidth}px`
canvas.style.height = `${cHeight}px`
canvas.style.left = `${(wWidth - cWidth) / 2}px`
canvas.style.top = `${(wHeight - cHeight) / 2}pM
const drawCanvas = async () => {
if(!tried) setupart();
if (aniFrame) window.cancelAnimationFrame(aniFrame)
const canvas=document.getElementById('target')
const ctx=canvas.getContext('2d')
{let bx=ofw/500,by=ofh/500;
ctx.globalAlpha=0.05;
for(let f=10;f<30; f++){
for(let i=0;i<500; i++){
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'#ffffff');
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'M
if(gj>500) { drp=3; gj=0; }
for(let f=0;f<tc;f++){
if(bug) dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz*sz,ty2[f]*sz, artcols[1], 1*sz);
else dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz,ty2[f]*sz, artcols[1], 1*sz);
dl(ctx, tx2[f]*sz,ty2[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);
dl(ctx, tx1[f]*sz,ty1[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);}
for(let f=0;f<rc;f++){
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx2[f]*sz,ry2[f]*sz, artcols[2], 1*sz);
,ry2[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);}
ctx.fillStyle = artcols[0];
ctx.fillRect(0,0,ofw,ofh);
mathRand = sfc32(...cyrb128(seed));
tc=0;rc=0;tricount=0;tr=30;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
tricount=1000;tr=rir(10,50);dor=true;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
aniFrame = window.requestAnimationM
function triharder( x1,y1, x2,y2)
if(tricount>2500) return;
var x3=x1+rir(-tr,tr);
var y3=y1+rir(-tr,tr);
if(x3<0){x3+=tr;bmp++}
if(x3>1000){x3-=tr;bmp++}
if(y3<0){y3+=tr;bmp++}
if(y3>1000/ratio){y3-=tr;bmp++}
if(dor) {rx1[rc]=x1;ry1[rc]=y1;rx2[rc]=x2;ry2[rc]=y2;rx3[rc]=x3;ry3[rc]=y3;rc++; }
else {tx1[tc]=x1;ty1[tc]=y1;tx2[tc]=x2;ty2[tc]=y2;tx3[tc]=x3;ty3[tc]=y3;tc++;}
if(bmp>15){bmp=0; x3=y3=500;x1=rir(500,500+tr);y1=rir(500,500+tr);x2=rir(500,500-tr);y2=rir(500,500-M
triharder(x3,y3, x1,y1);
if(ri(100)>20) triharder(x3,y3, x2,y2);
const autoDownloadCanvas = async () => {
const element = document.createElement('a')
element.setAttribute('download',`Angular-${ofw}x${ofh}-${seed}`)
element.style.display = 'none'
document.body.appendChild(element)
let imageBlob = null
imageBlob = await new Promise(resolve => document.getElementById('target').toBlob(resolve, 'image/png'))
element.setAttribute('href', window.URL.createObjectURL(imageBlob, {
document.body.removeChild(element)
document.addEventListener('keypress', async (e) => {
e = e || window.event
if (e.key === 's') autoDownloadCanvas()
if (e.key === 'h') { rz++;if(rz>5)rz=1;drp=0;gi=0;gj=0;await layoutCanvas() }
function drawEllipse(ctx,x,y,rx,ry,fill) {
ctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);
if (fill) {ctx.fillStyle = fill;ctx.fill();}
function dl(ctx,lx,ly,ex,ey,stroke,width) {
if (stroke) {ctx.strokeStyle = stroke;}
if (width) {  ctx.linM
ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(ex,ey);ctx.stroke();
if(cp==12)artcols=['#EDECE0','#303030','#880808'];
if(cp==0) artcols=['#F0BEB2','#F25B40','#3A8D3B'];
if(cp==11)artcols=['#4F97BA','#F9E1B5','#BD2C41'];
if(cp==1) artcols=['#25201E','#D3A252','#686C22'];
if(cp==2) artcols=['#B4CBCA','#1F5FB3','#355026'];
if(cp==3) artcols=['#D1C7C5','#6E5247','#8D695D'];
if(cp==4) artcols= ['#E4DBBE','#8BB8B3','#AF799A'];
if(cp==5) artcols= ['#B8B8B3','#474747','M
if(cp==6) artcols= ['#A6B2C7','#323642','#394A69'];
if(cp==7) artcols= ['#E6E6E4','#343523','#B2B2AD'];
if(cp==8) artcols= ['#A9A18E','#706B5C','#606A4D'];
if(cp==9) artcols= ['#EDECE0','#944645','#F25D34'];
if(cp==10) artcols= ['#9FA6A4','#77694E','#B54933'];
function ri( x){  return Math.floor(mathRand()*x);}
function rir(x,y){ let nr = (y - x) ; return  Math.floor((mathRand()*nr) + x); }
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>"Rays" by Pawe
 Dudko | pdudko.com</title>
    <script id="snippet-random-code" type="text/javascript">
        // not editable
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() *M
 alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.lengthM
; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
    u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0;
            padding: 0;
            overflow: hidden;
  <canvas id="myCanvas"></canvas>
<script type="text/jaM
console.log("seed:",seed);class Rnd{rD(){return mathRand()}rN(r,t){return r+(t-r)*this.rD()}rI(r,t){return Math.floor(this.rN(r,t+1))}rB(r){return this.rD()<r}}const R=new Rnd;class Perlin{constructor(){this.R=new Rnd,this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(var r=0;r<256;r++)this.p[r]=Math.floor(256*this.R.rD());for(this.perm=[],r=0;r<512;r++)this.perm[r]=this.p[255&r];this.simplex=[[0,1,2,3],[0,1,3M
,2],[0,0,0,0],[0,2,3,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,3,0],[0,2,1,3],[0,0,0,0],[0,3,1,2],[0,3,2,1],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,3,2,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[1,2,0,3],[0,0,0,0],[1,3,0,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,3,0,1],[2,3,1,0],[1,0,2,3],[1,0,3,2],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,3,1],[0,0,0,0],[2,1,3,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[2,0,1,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,0,1,2],[3,0,2M
,1],[0,0,0,0],[3,1,2,0],[2,1,0,3],[0,0,0,0],[0,0,0,0],[0,0,0,0],[3,1,0,2],[0,0,0,0],[3,2,0,1],[3,2,1,0]]}dot(r,t,e){return r[0]*t+r[1]*e}noise(r,t){var e,i,a=(r+t)*(.5*(Math.sqrt(3)-1)),o=Math.floor(r+a),l=Math.floor(t+a),n=(3-Math.sqrt(3))/6,s=(o+l)*n,g=r-(o-s),c=t-(l-s);g>c?(e=1,i=0):(e=0,i=1);var d=g-e+n,f=c-i+n,p=g-1+2*n,A=c-1+2*n,m=255&o,F=255&l,E=this.perm[m+this.perm[F]]%12,u=this.perm[m+e+this.perm[F+i]]%12,R=this.perm[m+1+this.perm[F+1]]%12,h=.5-g*g-c*c,B=.5-d*d-f*f,D=.5-p*p-A*A;return 70*((h<0?0:(h*=h)*h*M
this.dot(this.grad3[E],g,c))+(B<0?0:(B*=B)*B*this.dot(this.grad3[u],d,f))+(D<0?0:(D*=D)*D*this.dot(this.grad3[R],p,A)))}}const perlin=new Perlin;function map(r,t,e,i,a){return i+(a-i)*(r-t)/(e-t)}let bckCol,dim=Math.min(window.innerWidth,window.innerHeight),spots=R.rI(10,25),radius=[],m=[],mOff=1e-4*R.rN(1,7),x=[],y=[],z=[],S=30,sRot=[],b=1,bOffset=R.rN(0,.005),bMag=1,xOff=[],yOff=[],pC=[],noiseFeat=mathRand()>.79,pFeat=R.rI(1,24),angleFeat=mathRand()>.87?0:mathRand()<.1?1:2,colorBackground=R.rI(0,1);const PI=Math.M
PI,TWO_PI=2*PI;let blurV=[];blurV=blurV=0==angleFeat?[R.rN(0,R.rN(0,1)),0]:1==angleFeat?[0,R.rN(0,R.rN(0,1))]:[R.rN(-.9,.9),R.rN(0,.9)],Math.pow(blurV[0],2)+Math.pow(blurV[1],2)<.18&&(blurV[0]>blurV[1]?blurV[0]+=.35:blurV[1]+=.35);const vs2="attribute vec2 a_position;attribute vec2 a_texCoord;uniform vec2 u_resolution;varying vec2 v_texCoord;\nvoid main(){vec2 clipSpace=a_position/u_resolution*2.0-1.0;gl_Position=vec4(clipSpace*vec2(1,-1),0,1);v_texCoord=a_texCoord;}",fs2="precision mediump float;uniform sampler2D M
u_image;varying vec2 v_texCoord;uniform vec2 dl;float rnd(vec3 scale,float seed){return fract(sin(dot(gl_FragCoord.xyz+seed,scale))*43758.5453+seed);}\nvoid main(){vec4 col=vec4(0.0);float tt=0.0;float off=rnd(vec3(12.9898,78.233,151.7182),0.0);for(float t=-30.0;t<=30.0;t++){float pc=(t+off-0.5)/30.0;float w=1.0-abs(pc);vec4 spl=texture2D(u_image,v_texCoord+dl*pc);spl.rgb*=spl.a;col+=spl*w;tt+=w;}gl_FragColor=col/tt;}";function setup(){for(i=0;i<spots;i++)radius[i]=R.rI(dim/100,dim/4),m[i]=R.rN(0,100),x[i]=R.rN(0,dM
im),y[i]=R.rN(0,dim),z[i]=R.rN(0,dim),xOff[i]=R.rN(4,10),yOff[i]=R.rN(4,10),sRot[i]=R.rN(0,TWO_PI);if(noiseFeat){let r=R.rI(20,200);for(i=0;i<r;i++)radius[spots+i]=R.rI(dim/400,dim/100),m[spots+i]=R.rN(0,10),y[spots+i]=R.rN(0,dim),z[spots+i]=R.rN(0,dim),x[spots+i]=R.rN(0,dim),xOff[spots+i]=R.rN(4,10),yOff[spots+i]=R.rN(4,10),sRot[spots+i]=R.rN(0,PI);spots+=r}angle=0==angleFeat?-PI/4:1==angleFeat?PI/4:R.rN(0,PI),p=pFeat;let r=1==p?["#0B1626","#2F1517","#4599B5","#A83882","#B4DDDD","#DBBEF2"]:2==p?["#0B1626","#2F1517M
","#4599B5","#A84B28","#B4DDDD","#C4E4A2"]:3==p?["#140000","#021c13","#003924","#005841","#750100","#990100","#d7bb30","#ccae00"]:4==p?["#1D1702","#2B0426","#650427","#AD2C00","#ddac0a","#c6c339","#E55130"]:5==p?["#200e36","#2B0426","#366290","#E27D52","#D3EAC0","#EDC557","#A8DAB9"]:6==p?["#200A0E","#080811","#006978","#170F08","#FBFBD6","#02E7CA","#729C9D"]:7==p?["#0A0A3D","#041604","#00C075","#87C000","#F9BD27","#FE8900","#FE003B"]:8==p?["#2A0002","#14060B","#664C4C","#EF3B01","#C11900","#A20005"]:9==p?["#000000"M
,"#0B1626","#68D1E6","#A6DAD7","#DFE3CB","#F2852F","#F96800"]:10==p?["#000000","#2F1517","#2AABCF","#6CBAB5","#C3CAA1","#E54508","#F32A00"]:11==p?["#200e36","#1A0210","#e04372","#5aa9e6","#4a4e69","#e04372","#e6b953"]:12==p?["#131303","#040207","#EFA72F","#EF7717","#77BFA7","#FBEAB5","#5D402E"]:13==p?["#1E1E3D","#002030","#009FAF","#CB323E","#EA6740","#ECC850"]:14==p?["#1E1E3D","#292B30","#592D2D","#DEB968","#FEFDDE","#3D4046"]:15==p?["#040207","#002030","#60A5AA","#FAEDC1","#5F5850","#C0B297"]:16==p?["#0F0F00","#0M
30313","#9C8C68","#FDA5A1","#9E7B52","#E1CC92"]:17==p?["#0A0A1A","#120202","#FF8B00","#000000","#649EE8","#917FFF"]:18==p?["#020202","#0A0A1A","#09BEBB","#12737C","#28211E","#FB344B"]:19==p?["#000000","#200B01","#F92900","#F1D593","#85B7B0","#EFD7A7"]:20==p?["#000000","#1A1A1A","#F35C4B","#F6A440","#F9C965","#FDE4AC","#FFFFB1"]:21==p?["#0D1626","#091425","#051738","#204E75","#005151","#A0995F"]:22==p?["#000000","#091425","#764E37","#DF8D78","#F0D3AE","#C4DFDB"]:23==p?["#020202","#1A1A1A","#605274","#8DB1C4","#F8BE7M
5","#E4615B","#D0303C"]:["#050505","#0F0F0F","#000000","#7F7F7F","#333333","#E5E5E5","#F0F0F0"];pC.push(...r);let t=pC.length-1;for(ii=0;ii<3;ii++)for(i=t-1;i<=t;i++)pC.push(pC[i])}var c=document.createElement("canvas");c.width=dim,c.height=dim;var ctx=c.getContext("2d");function draw(){for(ctx.beginPath(),ctx.rect(0,0,c.width,c.height),ctx.fillStyle=pC[colorBackground],ctx.fill(),i=0;i<spots;i++){let r=pC[i%pC.length],t=map(perlin.noise(m[i],i),-1,1,-dim/xOff[i],dim/xOff[i]),e=map(perlin.noise(m[i],i+200),-1,1,-diM
m/yOff[i],dim/yOff[i]),a=map(perlin.noise(10*m[i],i+999),-1,1,-radius[i]/20,radius[i]/20);ctx.beginPath(),ctx.arc(x[i]+t,y[i]+e,radius[i]+a,0,2*Math.PI),ctx.fillStyle=r,ctx.fill(),m[i]+=mOff}bMag=map(perlin.noise(b,spots),-1,1,.8,1.2),render(),b+=bOffset,window.requestAnimationFrame(draw)}function createShader(r,t,e){var i=r.createShader(t);if(r.shaderSource(i,e),r.compileShader(i),r.getShaderParameter(i,r.COMPILE_STATUS))return i;r.deleteShader(i)}function createProgram(r,t,e){var i=r.createProgram();if(r.attachShM
ader(i,t),r.attachShader(i,e),r.linkProgram(i),r.getProgramParameter(i,r.LINK_STATUS))return i;r.deleteProgram(i)}function setRectangle(r,t,e,i,a){let o=t,l=t+i,n=e,s=e+a;r.bufferData(r.ARRAY_BUFFER,new Float32Array([o,n,l,n,o,s,o,s,l,n,l,s]),r.STATIC_DRAW)}setup(),window.requestAnimationFrame(draw);const canvasGL=document.getElementById("myCanvas");canvasGL.width=dim,canvasGL.height=dim;const gl=canvasGL.getContext("webgl");var vertexShader=createShader(gl,gl.VERTEX_SHADER,vs2),fragmentShader=createShader(gl,gl.FRM
AGMENT_SHADER,fs2),program=createProgram(gl,vertexShader,fragmentShader),positionLocation=gl.getAttribLocation(program,"a_position"),texcoordLocation=gl.getAttribLocation(program,"a_texCoord"),positionBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer),setRectangle(gl,0,0,c.width,c.height);var texcoordBuffer=gl.createBuffer();gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.bufferData(gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),gl.STATIC_DRAW);var texture=gl.createTexture();gl.binM
dTexture(gl.TEXTURE_2D,texture),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST),gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);var resolutionLocation=gl.getUniformLocation(program,"u_resolution"),blurVectorLocation=gl.getUniformLocation(program,"dl");function render(){if(gl){gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,ctx.canvas),M
gl.useProgram(program),gl.enableVertexAttribArray(positionLocation),gl.bindBuffer(gl.ARRAY_BUFFER,positionBuffer);var r=gl.FLOAT,t=0;gl.vertexAttribPointer(positionLocation,2,r,false,0,t),gl.enableVertexAttribArray(texcoordLocation),gl.bindBuffer(gl.ARRAY_BUFFER,texcoordBuffer),gl.vertexAttribPointer(texcoordLocation,2,r,false,0,t),gl.uniform2f(resolutionLocation,gl.canvas.width,gl.canvas.height),gl.uniform2f(blurVectorLocation,blurV[0]*bMag,blurV[1]*bMag);var e=gl.TRIANGLES;t=0;gl.drawArrays(e,t,6)}else console.loMo
g("Needs WebGL to run")}gl.viewport(0,0,gl.canvas.width,gl.canvas.height);
window.$generativeTraits = {
  "Palette": pFeat,
  "Noisy": noiseFeat,
  "Angle": angleFeat == 0 ? 'horizontal' : angleFeat == 1 ? 'vertical' : 'diagonal'
console.log(window.$generativeTraits)
text/plain;charset=utf-8
{"error":"5938.sats not found"}h!
FjDOUT:0E16DC90922E0F85DC44E18472E7CBA47D60A39073E9240DFE35141A0C93B2A1
FjDOUT:CDBB7F3D7A5EAFC86664E8CAFFB5C800B988FF98D4AF09C9EF6A6D9D2A6082CB
JSON{"asset":{"copyright":"Twetch Inc 2023","generator":"Khronos glTF Blender I/O v3.4.50","version":"2.0"},"scene":0,"scenes":[{"name":"Scene","nodes":[0]}],"nodes":[{"mesh":0,"name":"Planetary Cube baked"}],"materials":[{"doubleSided":true,"name":"Material.002","occlusionTexture":{"index":0},"pbrMetallicRoughness":{"baseColorTexture":{"index":1},"metallicRoughnessTexture":{"index":0}}}],"meshes":[{"name":"Cube.002","primitives":[{"attributes":{"POSITION":0,"TEXCOORD_0":1,"NORMAL":2},"indices":3,"mM
aterial":0}]}],"textures":[{"sampler":0,"source":0},{"sampler":0,"source":1}],"images":[{"bufferView":4,"mimeType":"image/png","name":"Planetary Cube_Bake2_PBR_Ambient Occlusion-Planetary Cube_Bake2_PBR_Roughness-Planetary Cube_Bake2_PBR_Metalness"},{"bufferView":5,"mimeType":"image/png","name":"Planetary Cube_Bake2_PBR_Diffuse"}],"accessors":[{"bufferView":0,"componentType":5126,"count":153,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":153,"type":"VEC2"},{"bufferView":2M
,"componentType":5126,"count":153,"type":"VEC3"},{"bufferView":3,"componentType":5123,"count":564,"type":"SCALAR"}],"bufferViews":[{"buffer":0,"byteLength":1836,"byteOffset":0,"target":34962},{"buffer":0,"byteLength":1224,"byteOffset":1836,"target":34962},{"buffer":0,"byteLength":1836,"byteOffset":3060,"target":34962},{"buffer":0,"byteLength":1128,"byteOffset":4896,"target":34963},{"buffer":0,"byteLength":2860,"byteOffset":6024},{"buffer":0,"byteLength":2854,"byteOffset":8884}],"samplers":[{"magFilter":9729,"minFilM
ter":9987}],"buffers":[{"byteLength":11740}]}
iTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>190</exif:PixelYDimension>
         <exif:PixelXDimension>260</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
text/html;charset=utf-8
<meta charset="UTF-8">
<title>Angular Decay</title>
<script id="snippet-random-code" type="text/javascript">
let seed = window.location.href.split('/').find(t => t.includes('i0'));
const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
let pattern = "seed=";
for (let i = 0; i <M
 seed.length - pattern.length; ++i) {
if (seed.substring(i, i + pattern.length) == pattern) {
seed = seed.substring(i + pattern.length);
function cyrb128($) {
let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(lM
 ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
function sfc32($, _, u, i) {
return function () {
var l = ($ >>>= 0) + (_ >>>= 0) | 0;
return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
let mathRand = sfc32(...cyrb128(seed));
<style>body {margin: 0px;} </style>M
<canvas id="target"></canvas>
<script type="text/javascript">
const rand = mathRand();
const rand2 = mathRand();
let sqpix,cp,ratio=0.707,bug=false;
if(rand<0.3){sqpix=0;zoom=false;return"Portrait";}
if(rand<0.6){sqpix=0;ratio=1.414;return"Lanscape";}
if(rand<0.95){sqpix=1;return"Square";}
sqpix=1;bug=1;return"Bugged";}
if(rand<0.07){cp=12;return "Paper";}
if(rand<0.14){cp=1;return "DPM";}
if(rand<0.21){cp=2;return "Fecktarn";}
if(rand<0.41){cp=4;return "Desert Drill";}
if(rand<0.5){cp=5;return "Urban";}
if(rand<0.6){cp=6;return "Navy";}
if(rand<0.7){cp=7;return "German Winter";}
if(rand<0.8){cp=8;return "Tree";}
if(rand<0.85){cp=9;return "Orange";}
if(rand<0.9){cp=10;return "Harris";}
if(rand<0.95){cp=11;return "Market";}
cp=0;return "Saint";}
window.$generativeTraits = {"View": T1(rand),"Pallet": T2(rand2) }
const container = document.createElement("div")
container.innerHTML = "<span>seed: " + seed + "</spM
let resizeTmr=null,aniFrame=null;
let ofw,ofh,sz,rz=1;
let gi=0,gj=0,drp=0,drawtot=2,bmp,artcols=[];
var tricount=0,tr=30;
var tx1=[],ty1=[],tx2=[],ty2=[],tx3=[],ty3=[];
var rx1=[],ry1=[],rx2=[],ry2=[],rx3=[],ry3=[];
const init = async () => {
window.addEventListener('resize', async () => {
clearTimeout(resizeTmr)
resizeTmr = setTimeout(async () => {
await layoutCanvas()
await layoutCanvas()
const layoutCanvas = async () => {
const wWidth=window.innerWidth
const wHeight=window.innerHeight
let cHeight=wHeight;
let cWidth=cHeight*ratio;
if(cWidth>wWidth){cWidth=wWidth;cHeight=cWidth/ratio;}
const canvas=document.getElementById('target')
canvas.width=2000*rz;
canvas.height=(2000*rz)/ratio;
canvas.style.position = 'absolute'
canvas.style.width = `${cWidth}px`
canvas.style.height = `${cHeight}px`
canvas.style.left = `${(wWidth - cWidth) / 2}px`
canvas.style.top = `${(wHeight - cHeight) / 2}pM
const drawCanvas = async () => {
if(!tried) setupart();
if (aniFrame) window.cancelAnimationFrame(aniFrame)
const canvas=document.getElementById('target')
const ctx=canvas.getContext('2d')
{let bx=ofw/500,by=ofh/500;
ctx.globalAlpha=0.05;
for(let f=10;f<30; f++){
for(let i=0;i<500; i++){
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'#ffffff');
drawEllipse(ctx, bx*i + ri(3)*sz, by*gj+ ri(3)*sz, bx/2,bx/2,'M
if(gj>500) { drp=3; gj=0; }
for(let f=0;f<tc;f++){
if(bug) dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz*sz,ty2[f]*sz, artcols[1], 1*sz);
else dl(ctx, tx1[f]*sz,ty1[f]*sz, tx2[f]*sz,ty2[f]*sz, artcols[1], 1*sz);
dl(ctx, tx2[f]*sz,ty2[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);
dl(ctx, tx1[f]*sz,ty1[f]*sz, tx3[f]*sz,ty3[f]*sz, artcols[1], 1*sz);}
for(let f=0;f<rc;f++){
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx2[f]*sz,ry2[f]*sz, artcols[2], 1*sz);
,ry2[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);
dl(ctx, rx1[f]*sz,ry1[f]*sz, rx3[f]*sz,ry3[f]*sz, artcols[2], 1*sz);}
ctx.fillStyle = artcols[0];
ctx.fillRect(0,0,ofw,ofh);
mathRand = sfc32(...cyrb128(seed));
tc=0;rc=0;tricount=0;tr=30;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
tricount=1000;tr=rir(10,50);dor=true;bmp=0;
triharder(500, 500, 500+rir(-tr,tr), 500+rir(-tr,tr));
aniFrame = window.requestAnimationM
function triharder( x1,y1, x2,y2)
if(tricount>2500) return;
var x3=x1+rir(-tr,tr);
var y3=y1+rir(-tr,tr);
if(x3<0){x3+=tr;bmp++}
if(x3>1000){x3-=tr;bmp++}
if(y3<0){y3+=tr;bmp++}
if(y3>1000/ratio){y3-=tr;bmp++}
if(dor) {rx1[rc]=x1;ry1[rc]=y1;rx2[rc]=x2;ry2[rc]=y2;rx3[rc]=x3;ry3[rc]=y3;rc++; }
else {tx1[tc]=x1;ty1[tc]=y1;tx2[tc]=x2;ty2[tc]=y2;tx3[tc]=x3;ty3[tc]=y3;tc++;}
if(bmp>15){bmp=0; x3=y3=500;x1=rir(500,500+tr);y1=rir(500,500+tr);x2=rir(500,500-tr);y2=rir(500,500-M
triharder(x3,y3, x1,y1);
if(ri(100)>20) triharder(x3,y3, x2,y2);
const autoDownloadCanvas = async () => {
const element = document.createElement('a')
element.setAttribute('download',`Angular-${ofw}x${ofh}-${seed}`)
element.style.display = 'none'
document.body.appendChild(element)
let imageBlob = null
imageBlob = await new Promise(resolve => document.getElementById('target').toBlob(resolve, 'image/png'))
element.setAttribute('href', window.URL.createObjectURL(imageBlob, {
document.body.removeChild(element)
document.addEventListener('keypress', async (e) => {
e = e || window.event
if (e.key === 's') autoDownloadCanvas()
if (e.key === 'h') { rz++;if(rz>5)rz=1;drp=0;gi=0;gj=0;await layoutCanvas() }
function drawEllipse(ctx,x,y,rx,ry,fill) {
ctx.ellipse(x, y, rx, ry, 0, 0, 2 * Math.PI);
if (fill) {ctx.fillStyle = fill;ctx.fill();}
function dl(ctx,lx,ly,ex,ey,stroke,width) {
if (stroke) {ctx.strokeStyle = stroke;}
if (width) {  ctx.linM
ctx.beginPath();ctx.moveTo(lx,ly);ctx.lineTo(ex,ey);ctx.stroke();
if(cp==12)artcols=['#EDECE0','#303030','#880808'];
if(cp==0) artcols=['#F0BEB2','#F25B40','#3A8D3B'];
if(cp==11)artcols=['#4F97BA','#F9E1B5','#BD2C41'];
if(cp==1) artcols=['#25201E','#D3A252','#686C22'];
if(cp==2) artcols=['#B4CBCA','#1F5FB3','#355026'];
if(cp==3) artcols=['#D1C7C5','#6E5247','#8D695D'];
if(cp==4) artcols= ['#E4DBBE','#8BB8B3','#AF799A'];
if(cp==5) artcols= ['#B8B8B3','#474747','M
if(cp==6) artcols= ['#A6B2C7','#323642','#394A69'];
if(cp==7) artcols= ['#E6E6E4','#343523','#B2B2AD'];
if(cp==8) artcols= ['#A9A18E','#706B5C','#606A4D'];
if(cp==9) artcols= ['#EDECE0','#944645','#F25D34'];
if(cp==10) artcols= ['#9FA6A4','#77694E','#B54933'];
function ri( x){  return Math.floor(mathRand()*x);}
function rir(x,y){ let nr = (y - x) ; return  Math.floor((mathRand()*nr) + x); }
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 717 717"><defs><style>.cls-1{fill:#6d20da;stroke:#241f20;stroke-miterlimit:10;stroke-width:0.48px;}</style></defs><path class="cls-1" d="M523.75,159.1c-53.7-39-114.68-80.82-165.26-109.79C307.93,78.28,247,120.09,193.25,159.1S81,243.19,37.77,282.34c11.93,57,32.85,128,53.35,191.09s45.27,132.79,69.16,186c57.94,6.28,131.85,8.3,198.21,8.3s140.29-2,198.24-8.3c22.73-50.6,46.24-116.14,66.15-176.76,1-3.08,2-6.16,3-9.2,5.89-18.11,11.81-36.86M
,17.53-55.75-17.74-14.86-35.29-29.75-52.72-44.47C543.8,333.62,481.3,276.62,430.21,248.84c-15.62-8.5-41.28-17.52-71.72-17.54-27.47,0-58.84,7.26-90.27,29.08l-.9.65v0h0l-.9.65a153.75,153.75,0,0,0-55.8,171.72c.13.36.24.72.35,1.08l.35,1.06A153.77,153.77,0,0,0,357.38,541.69h2.25a153.75,153.75,0,0,0,137.46-85.11c-19.15-16.67-35.82-31.05-50.4-43.31-.11.36-.23.72-.34,1.08l-.22.67-.21.67a91.28,91.28,0,0,1-86.73,63h-1.38a91.24,91.24,0,0,1-86.73-63l-.21-.67c-.07-.22-.15-.43-.22-.67a91.26,91.26,0,0,1,33.12-101.93l.58-.41c.18-.1M
3.38-.27.55-.42a91.1,91.1,0,0,1,49.9-17.31,8,8,0,0,1,1,0c40.79-1.64,73.07,20.34,158.12,93.55,16.86,14.52,35.81,31,57.33,49.82-1.75,5.49-3.52,10.94-5.26,16.34-5.17,15.92-10.64,32.26-16.27,48.5-11.88,34.18-24.55,67.93-36.92,96.44-45.61,4.36-102.29,5.8-154.28,5.8s-108.65-1.44-154.26-5.8C186,556.84,167.1,503.38,151,454s-32.22-103.77-42.15-148.51c34.34-30.33,79.34-64.82,121.39-95.37s88.76-62.71,128.21-86c39.48,23.27,86.19,55.44,128.23,86s87,65,121.4,95.37h0q18.42,15.4,37.21,31.35l17.15,14.49c6.52-24.17,12.26-47.52,16.749-68.94C636.05,243.19,577.44,198.12,523.75,159.1Z"/></svg>h!
Bj@=:ETH.ETH:0xc5f70efbc9CADBE464194350415a669bf9F0a4fE:11454502::0
FjDOUT:255BC9BC94AA0C8DEEF7548F0DDCCCF6C4554EFF4B68BBAEF3AB2539078490E2
FjDOUT:19F6C1AE4326F7B51D6025D2751610CED05B42D6CC4328793F9086667FE3A0C8
FjDOUT:1E16CD573346D4E11362DEBA9FF73FEFBC762BDC5C0C081A69A3FCB8C33B0C1F
FjDOUT:1A1FD37D07F527A76380DE6E8BD90634DFE40C0A480E3684C04CBEEA6CC82863
FjDOUT:CEA506FBE035050661369850953EC5093BBFAD8659AEAEA0747BA8A7E788F03C
FjDOUT:197B63A3C0F1F8C58290E2F04B01370423D529B92CCF370B990CB62EB86CE536
FjDOUT:97FCF2D0EDE5A852F4DDAAC3044A7AA7A372F886A2D482975A0558CEAE42DC6D
FjDOUT:47635C8341A138E08AD4FFFC941816B91BF33DE174DDE1462AF750F8315B5982
FjDOUT:A5427AA73BB2535C0E9B859B0731282660A7B82B62E06B55A2808AA498E7B9F9
FjDOUT:22731CAAEE1C0C5623249E42CC0163DED775AEC052B1E48C1F9FC11B1C65D61C
FjDOUT:1C09D9422CEF0AF8C9DBC36C63218EA8A301B6D116CFC4AAA6F8385CF42354DB
DjB=:ETH.ETH:0x37510d08957240A8C22888Ae4a151eB069fF5fB2:1042599800::0
text/plain;charset=utf-8
  "name": "9369.sats"
text/plain;charset=utf-8
Bj@=:BNB.BNB:bnb1rew96kll3gd7pvw83h56dvqn3dtv435jen49s7:16342865::0
Aj?=:ETH.ETH:0xd054a177e806d13c23587b466771319c2794fcc9:1347040384
FjDOUT:18CE0F8B7EC6F9CAC29FD032BBFBC25B10421E475E5A2DED709DC2F57E23BE57
FjDOUT:B8FC2048CF88CAC8F51E8D45F2266854DE902CEE85E4A5B76356B8250CABFBC3
FjDOUT:06368B2B3808370EAE2C044B385AA122E4BC808CD24AEB1B344EB603608446C2
FjDOUT:7393C3307BC9E74B9D31A5460182F4C13A659FDB54CF4A112F7263C250A35D6F
FjDOUT:24E6D2D51ED44CD9A66BD87A19E35B4A91FC700F279B692B088AF174E0056A1F
FjDOUT:4F59E8FD7D7063B9679BCC08E3F07203F96A84E7E178C2196F5A0914F8B175B4
FjDOUT:5E347FA8785FCF0292BDADA8C97986A2473CD0B2154E67E8B2F72FE8FBE69F2D
FjDOUT:F8B0854428407CD8FDCC7BF665354D0C1C630F6AD8CD778AB5F3AFE5873D32D5
FjDOUT:4F51F9C7901FE61D41BADB813FB53AEC41006CB70B6D71504C6F923D94336819
FjDOUT:4F3F23038FAAC3D479A1812C6DF80768501FDB285E99595A29CACEF8D46894B1
FjDOUT:80DAD517E2F5F8973D52E510985CB906E321412D0F4A3236181B516ECF875C2E
FjDOUT:9F6F9EC733C3B21D4530ADB44AB429F240790E85500F239A975C35F2C751FA1C
FjDOUT:44C7EA2908034AF832DDCAC812C31D73C11B39746EFFC656A96D8EB06C49217F
FjDOUT:EC200E29F289C39C4C44ABB6F17CC30604C1F827ECCD8B71CC223BDB32494274
6j4ion:1.QmTrC4yH6dxUMWJuXDjy6D43tjW39XN1W8HLG57PH6rxKd
Bj@4b85f6870064f8d2d7b5bec6ec854c29201a4b12d694f43e30351e10565bfa29
text/plain;charset=utf-8
  "name": "historic.sats"
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
iTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/">
         <exif:PixelYDimension>1000</exif:PixelYDimension>
         <exif:PixelXDimension>984</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
      </rdf:Description>
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
Created with GIMPd.e
FjDOUT:B4AF67E7FA2CA038DFD3BFF27CC25318F2596C4EAA9B34D5A0BCD6CE7D4FA4C9
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
  "name": "andi.sats"
text/plain;charset=utf-8
  "name": "wtfhappenedin1971.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "swooty.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503078542</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503078542   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-01T21:06:48+08:00" xmp:MetadataDate="2021-12-01T21:06:48+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:aae44a54-b508-444a-89eb-e88e37d0b7e6" xmpMM:DocumentID="xmp.did:4b654d57-e219-8643-8f5b-bc41c8d51884" xmpMM:OriginalDocumentID="xmp.did:4b654d57-e219-8643-8M
f5b-bc41c8d51884"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:4b654d57-e219-8643-8f5b-bc41c8d51884" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:aae44a54-b508-444a-89eb-e88e37d0b7e6" stEvt:when="2021-12-01T21:06:48+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket M
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-23T21:26:33+08:00" xmp:ModifyDate="2021-12-15T20:23:47+08:00" xmp:MetadataDate="2021-12-15T20:23:47+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:d834878c-c270-a142-aa66-eaec07d9b563" xmpMM:DocumentID="xmp.did:ab0b762e-cd8c-3440-9e04-13378d2c66d7" xmpMM:OriginalDocumentID="xmp.did:ab0b762e-cd8c-3440-9M
e04-13378d2c66d7"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:ab0b762e-cd8c-3440-9e04-13378d2c66d7" stEvt:when="2021-11-23T21:26:33+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:78c6a393-1716-484c-bf75-c43189cc1ee1" stEvt:when="2021-11-28T16:49:53+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:d834878c-c270-a142-aa66-eaM
ec07d9b563" stEvt:when="2021-12-15T20:23:47+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/plain;charset=utf-8
"name": "trips.sats"
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503078042</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503078042   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
FjDOUT:047F572A15FE30C25A049BA121BF226FAE1A613518BD25A41CCE3758B4EB1A83
FjDOUT:BDEF7DE81B8A86CBBF04049CBCB70F00417A8296AA01A31F00393665216DDF9C
FjDOUT:C7C5403B2B6210E471933383CAE6BB437FA750893F337C3F9621A9C1EE53B16E
FjDOUT:5F9CCF97DB2BD341EF0A63DF71859B10E1490780006CEF7E74FF7095D92504DD
FjDOUT:C1AE5077AE7C507D2A14BA04DCFBB8BF00F47F3C40C28276403E6B296C31B50A
FjDOUT:6665D8C135B89DFFDD3B8973D93153498AA61E54AB41034D0DB6C24878EB3B34
FjDOUT:359693E2322749E7D77B43B8B21302877800CF3D32AEE9D4696981E296DF6CF8
text/plain;charset=utf-8
  "name": "kratos.sats"
FjDOUT:DC48DB3E58E9D329C88531268896936560547108DDF30E5C399BDD4621F00B55
FjDOUT:08B12B4FBCA00F2ED85D9ACA93B7F579822156E64D09A67BF57356EFDBDC9513
text/plain;charset=utf-8
text/plain;charset=utf-8
FjDOUT:5427E1668BE515611EC5D9DB12471DFF505AA282DA766515CAA755BBE86259ED
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "desantis.sats"
text/plain;charset=utf-8
Bj@=:BNB.BNB:bnb1ztxpaa2l377gx79r7snqnh57e7w8efdaadqkfa:46249209::0
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
	\5rW%rW%rW%rW%rW$!]w
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
"3 %  % 3-7,),7-Q@88@Q^OJO^qeeq
text/plain;charset=utf-8
  "name": "coinex.sats"
text/plain;charset=utf-8
  "name": "elon.sats"
    "id": "010ee928bdfdc01890ba4504bbdf4e034715186a462a9c2f9d16f43bf1b61c5bi0",
      "name": "Generative Colored Dots #371",
      "attributes": [
          "trait_type": "size",
          "value": "2"
          "trait_type": "canvas",
          "value": "Cranberry"
          "trait_type": "dot",
          "value": "Cinnabar"
          "trait_type": "hash",
          "value": "0x9d017bbeb7ed71ec43fbdacfd381f99af025fdccd21M
b7ded5deb36aa9677e6e1"
    "id": "bf036f1e8f9438f232f6b74b69756eaaa01946c6f763e70231c79ebfa7f57d39i0",
      "name": "Generative Colored Dots #372",
      "attributes": [
          "trait_type": "size",
          "value": "3"
          "trait_type": "canvas",
          "value": "Aquamarine Blue"
          "trait_type": "dot",
          "value": "Razzle Dazzle Rose"
          "trait_type": "hash",M
          "value": "0x9ac6c7c0005f4a07ea74188b4ff3bf6cd52cc8c2f419f60cea5adb0f603694af"
    "id": "d5d82a1f1f75cba1363c0c88333471eecc83a05cc5c02af9d345037bf1b043fbi0",
      "name": "Generative Colored Dots #373",
      "attributes": [
          "trait_type": "size",
          "value": "3"
          "trait_type": "canvas",
          "value": "Blue Violet"
          "trait_type": "dot",
          "value": "Chestnut RM
          "trait_type": "hash",
          "value": "0x9ae0df4161fe86dc66a3e6ee5d7a5a322ab76229fa88ff196614542c5629fdb9"
    "id": "a0d9e11e8ec6f82e092aa37d3facf669d22e1dac7ec65e3dab2ccd874367ac37i0",
      "name": "Generative Colored Dots #375",
      "attributes": [
          "trait_type": "size",
          "value": "2"
          "trait_type": "canvas",
          "value": "Celery"
 "trait_type": "dot",
          "value": "Roti"
          "trait_type": "hash",
          "value": "0x9b5d3691bf614097a442955ef225b7511a248ec5636e0abd21c4aec0832e04e6"
    "id": "7a20282ee1ea1f8f8009e4a7a59779fb6c4f5714ec8b3d47b247cc8bb31aae0di0",
      "name": "Generative Colored Dots #374",
      "attributes": [
          "trait_type": "size",
          "value": "3"
          "trait_type": "canvas",
e": "Granny Smith Apple"
          "trait_type": "dot",
          "value": "Yellow Sea"
          "trait_type": "hash",
          "value": "0x8faf74cb87ff0de01200d16b22e7192fc39d122b638657290f9f017013064230"
    "id": "8758bbbd5c077f6264eb101a21c6f5acdce0f6bf6183628bd61079be8668c3f5i0",
      "name": "Generative Colored Dots #376",
      "attributes": [
          "trait_type": "size",
          "value": "1"
          "trait_type": "canvas",
          "value": "Deco"
          "trait_type": "dot",
          "value": "Screamin' Green"
          "trait_type": "hash",
          "value": "0x08fd8600f4d5c31a2643ee61ca4ff03c646cc7203e23b1f72dec974665dedd7e"
    "id": "7c77a1f65012fa45ca3a56a8d62f11663b71684a49cb91f96a309a6eb0aea2f4i0",
      "name": "Generative Colored Dots #377",
      "attributes": [
          "value": "2"
          "trait_type": "canvas",
          "value": "Tradewind"
          "trait_type": "dot",
          "value": "Brandy Punch"
          "trait_type": "hash",
          "value": "0x9d8c34b7f9de6f5207069cfb6cbedfdb9b94e5cc71f10227c2c13dca09fcef7e"
    "id": "2ed6ec6f7e67cdb950ef1fc9295b35d58814ba2b4d260d9d235fb5edb74dd052i0",
      "name": "Generative Colored DoM
      "attributes": [
          "trait_type": "size",
          "value": "2"
          "trait_type": "canvas",
          "value": "Electric Violet"
          "trait_type": "dot",
          "value": "Turquoise Blue"
          "trait_type": "hash",
          "value": "0x9c3dffdc23e5ce12f60b5db58db9fee45de91511b96a6fe462651f8745fa312a"
    "id": "eea8d008743380a4e89d5460d55c31b97320ae065836a3a99cc8867c9cM
      "name": "Generative Colored Dots #379",
      "attributes": [
          "trait_type": "size",
          "value": "6"
          "trait_type": "canvas",
          "value": "Shamrock"
          "trait_type": "dot",
          "value": "Purple"
          "trait_type": "hash",
          "value": "0x9ba7f917baf9216989b214550510c3d941c723578c6932eb2d5d830c88201d76"
    "id": "c4ab48e4382M
e968531a39036ba3c345680a98e80e01fab6c9d11e3b60152fa08i0",
      "name": "Generative Colored Dots #380",
      "attributes": [
          "trait_type": "size",
          "value": "4"
          "trait_type": "canvas",
          "value": "Limeade"
          "trait_type": "dot",
          "value": "Royal Purple"
          "trait_type": "hash",
          "value": "0x9cd3275712bf43c927b806a8bf449a6d03caa28d94ed5f8e95aa0c0d4b3ee204"
text/plain;charset=utf-8
  "name": "Generative Colored Dots",
  "inscription_icon": "2ed6ec6f7e67cdb950ef1fc9295b35d58814ba2b4d260d9d235fb5edb74dd052i0",
  "slug": "generative-colored-dots",
  "description": "Generative colored dots on different blockchains and contracts",
  "twitter_link": "https://twitter.com/peterschmidler",
  "website_link": "https://linktree.com/peterschmidler"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "nike.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
Aj?=:ETH.ETH:0x789c1488640FBBb63224225CDA13b2E2871e751B:1670809::0
Bj@=:ETH.ETH:0xf75DfceF5b5e51aECe0cc8fC9c483B257C377632:18167220::0
DjB=:ETH.ETH:0xC3f5dEb0BE8e4A62685709Efd3e8454C5f483ca6:2054497810::0
text/plain;charset=utf-8
DjB=:BNB.BNB:bnb1gejcqwmfe9frec576kl0zj7ndf7n57cu780v69:12339825:te:0
CjA=:ETH.ETH:0xbEb8f79534510A5e0fE8779a5832C53252B5D75e:3257466:te:0
text/plain;charset=utf-8
  "name": "fist.sats"
text/plain;charset=utf-8
  "name": "amd.sats"
text/plain;charset=utf-8
  "name": "icespice.sats"
text/plain;charset=utf-8
  "name": "islam.sats"
text/plain;charset=utf-8
  "name": "babylon.sats"
text/plain;charset=utf-8
  "name": "kardashian.sats"
text/plain;charset=utf-8
  "name": "vienna.sats"
text/plain;charset=utf-8
  "name": "stop-doing-fake-bids-its-honestly-lame-my-guy.sats"
text/plain;charset=utf-8
  "name": "bizonacci.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "Ordinals.sats"
text/plain;charset=utf-8
  "name": "Paradigm.sats"
FjDOUT:88A97E2FDFE5BE2043D1115ED7CE1F9AB8CFF0A7E86D41D98C07E823D7650EA2
Aj?=:ETH.ETH:0x8062dc0ce463B9b86EFAb6C5A1DDe23a5081A692:6870879::0
text/plain;charset=utf-8
  "name": "pluto.sats"
text/plain;charset=utf-8
FjDOUT:A29E6771227BEFCAF4EEFD74F32A6DE606FDA4260168D7D3B06F97C49C86864A
text/plain;charset=utf-8
  "name": "kakao.sats"
text/plain;charset=utf-8
  "name": "mastodon.sats"
text/plain;charset=utf-8
  "name": "moderna.sats"
text/plain;charset=utf-8
  "name": "bilal.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "geld.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "taxes.sats"
text/plain;charset=utf-8
  "name": "pixar.sats"
text/plain;charset=utf-8
  "name": "dydx.sats"
text/plain;charset=utf-8
  "name": "wsj.sats"
text/plain;charset=utf-8
Bj@=:ETH.ETH:0x999364266EcA4Bc7346788e15Cf9e31F5ffCe156:30622928::0
text/plain;charset=utf-8
  "name": "8756.sats"
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srM
c="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/aM
jax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aM
frame/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.comM
/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
var colorPalettes = [
  ['#fafa6e', '#2A4858'],
  ['#9C27B0', '#FFEB3B'],
  ['#00BCD4', '#FF5722'],
  ['#191970', '#FF69B4', '#228B22', '#FFFF00'],
  ['#8BC34A', '#3F51B5', '#F44336'],
  ['#009688', '#FFC107', '#795548'],
  ['#4CAF50', '#FFC107', '#9C27B0'],
  ['#00BCD4', '#FFC107', '#9C27B0'],
88', '#FFC107', '#E91E63'],
  ['#ff0000', '#0000ff', '#00ff00'],
  ['#ff0000', '#0000ff', '#00ff00'],
  ['green', 'blue', 'orange', 'green']
var point_count = 700;
var pointSpace = 12;
var spaceRatio = 0.5;
var maxAttempts = 100;
var densityRatio = 0.5;
var length1 = 10000;
var length2 = 10000;
  [700, 12, 0.95, 0.5, 0.5],
  [700, 12, 0.95, 0.5, 0.5],
  [700, 12, 0.95, 0.5, 0.5],
700, 12, 0.95, 0.5, 0.5],
  [900, 8, 0.95, 0.5, 0.5],
  [700, 8, 0.78, 0.5, 0.5],
  [500, 5, 0.85, 0.5, 0.5],
  [800, 12, 0.9, 0.2, 0.5],
  [700, 12, 0.95, 0.5, 0.5],
  [700, 12, 0.95, 0.5, 0.5]
function mathRandSelect(array) {
  return array[round(mathRand() * (array.length - 1))];
function mathRnd(min, max) {
  return map(mathRand(), 0, 1, min, max)
function resizeCanvasStyle(){
    canvas.style("position", "absolute");
 the canvas element's width and height properties to scale it
    canvas.style("width", "100%");
    canvas.style("height", "100%");
    // Set the canvas element's top and left properties to center it horizontally and vertically
    canvas.style("top", "0");
    canvas.style("left", "0");
    canvas.style("bottom", "0");
    canvas.style("right", "0");
    canvas.style("margin", "auto");
    // Set the transform property to move the canvas element to the center of the page
    canvas.style("transform", "translatM
      canvas.style("width", "100%");
     canvas.style("height", "100%");
     // Set the canvas element's top and left properties to center it horizontally and vertically
     canvas.style("top", "0");
     canvas.style("left", "0");
     canvas.style("bottom", "0");
     canvas.style("right", "0");
     canvas.style("margin", "auto");
     // Calculate the scale factor based on the window size and the canvas size
     let scaleFactor = Math.min(window.innerWidth / 400, window.innerHeight / 600M
     // Set the transform property to scale the canvas element based on the scale factor
     canvas.style("transform", `scale(${scaleFactor})`);
  let urlParams = getURLParams();
  if (urlParams.res) {
    density = round(int(urlParams.res));
  noiseSeed(mathRand() * 99999);
  randomSeed(mathRand() * 99999);
  canvas = createCanvas(400, 600);
  canvas.addClass("canvasNewCSS");
  resizeCanvasStyle(canvasW,canvasH);
  pixelDensity(density);
  angleMode(DEGREES);
mathRandSelect(colorPalettes);
  noiseDetail(8, 0.5);
  print(colorPalette);
  colorPalette = chroma.scale(colorPalette).mode('lch').colors(12);
  field = mathRandSelect(fields);
  point_count = field[0];
  pointSpace = field[1];
  offset = field[2];
  spaceRatio = field[3];
  densityRatio = field[4];
  variationMode = round(mathRandSelect([1, 2, 3, 4, 5, 6, 7, 8]));
  var maxAttempts = 1000;
  for (var i = 0; i < point_count; i++) {
    var attempts = 0;
    while (attempts < maxAttempts) {
    var point_x = mathRnd(width * (1 - offset), width * offset);
      var point_y = mathRnd(height * (1 - offset), height * offset);
      var point_r = mathRnd(pointSpace * spaceRatio, pointSpace);
      var point_l = mathRnd(length1, length2);
      var point_color = mathRandSelect(colorPalette);
      var overlapp = false;
      for (var j = 0; j < i; j++) {
        if (points[j]) {
          var x2 = points[j].x;
          var y2 = points[j].y;
          var r2 = points[j].r;
          if (dist(point_x, poM
int_y, x2, y2) < (r2 + point_r) / 2 * 1.4) {
            overlapp = true;
      if (!overlapp) {
        append(points, {
          x: point_x,
          y: point_y,
          c: point_color,
          r: point_r,
          l: point_l
    if (attempts >= maxAttempts) {
      console.warn("Could not place point " + i + " after " + maxAttempts + " attempts.");
  for (var p = 0; p < points.length;M
    fill(points[p].c);
    rectMode(CENTER);
    translate(points[p].x, points[p].y);
    rotate(mathRnd(360));
    translate(-points[p].x, -points[p].y);
  for (var i = 0; i < points.length; i++) {
    if (points[i].l > 0) {
      let x = points[i].x;
      let y = points[i].y;
      let pointColor = points[i].c;
      let newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
      let newY = y + mM
ap(noise(log(y), log(x)), 0, 1, -space, space / 2);
      switch (variationMode) {
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), sin(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(cos(x), log(y)), 0, 1, -spaM
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(sin(x), cos(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(cos(y), sin(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(M
x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
      let maxR = pointSpace;
      if (newX > width * (1 - offset) &&M
 newX < width * offset) {
        if (newY > height * (1 - offset) && newY < height * offset) {
          let v1 = createVector(x, y);
          let v2 = createVector(newX, newY);
          let angleBetween = v1.angleBetween(v2);
          rotate(angleBetween / space);
          strokeWeight(0.7);
          stroke(pointColor)
          fill(pointColor);
          maxR = points[i].r;
          for (var p = 0; p < i; p++) {
            maxR = min(maxR, dist(x, y, points[p].x, poM
          noStroke();
          circle(x, y, maxR);
      points[i].x = newX;
      points[i].y = newY;
      points[i].r = maxR;
      points[i].l--;
  if (millis()>25000) {
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SM
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + M
pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = MathM
.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0,M
 (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    // window.$generativeTraits = {
    //     "T1": T1(rand),
    // console.log(window.$generativeTraits)
 Add your code here
    // const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
 Add your code here
text/html;charset=utf-8
    <meta charset="UTF-8">
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" srM
c="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></script>
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/aM
jax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aM
frame/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.comM
/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
var colorPalettes = [
  ['#fafa6e', '#2A4858'],
  ['#9C27B0', '#FFEB3B'],
  ['#00BCD4', '#FF5722'],
  ['#191970', '#FF69B4', '#228B22', '#FFFF00'],
  ['#8BC34A', '#3F51B5', '#F44336'],
  ['#009688', '#FFC107', '#795548'],
  ['#4CAF50', '#FFC107', '#9C27B0'],
  ['#00BCD4', '#FFC107', '#9C27B0'],
88', '#FFC107', '#E91E63'],
  ['#ff0000', '#0000ff', '#00ff00'],
  ['#ff0000', '#0000ff', '#00ff00'],
  ['green', 'blue', 'orange', 'green']
var point_count = 700;
var pointSpace = 12;
var spaceRatio = 0.5;
var maxAttempts = 100;
var densityRatio = 0.5;
var length1 = 10000;
var length2 = 10000;
  [700, 12, 0.95, 0.5, 0.5],
  [700, 12, 0.95, 0.5, 0.5],
  [700, 12, 0.95, 0.5, 0.5],
700, 12, 0.95, 0.5, 0.5],
  [900, 8, 0.95, 0.5, 0.5],
  [700, 8, 0.78, 0.5, 0.5],
  [500, 5, 0.85, 0.5, 0.5],
  [800, 12, 0.9, 0.2, 0.5],
  [700, 12, 0.95, 0.5, 0.5],
  [700, 12, 0.95, 0.5, 0.5]
function mathRandSelect(array) {
  return array[round(mathRand() * (array.length - 1))];
function mathRnd(min, max) {
  return map(mathRand(), 0, 1, min, max)
function resizeCanvasStyle(){
    canvas.style("position", "absolute");
 the canvas element's width and height properties to scale it
    canvas.style("width", "100%");
    canvas.style("height", "100%");
    // Set the canvas element's top and left properties to center it horizontally and vertically
    canvas.style("top", "0");
    canvas.style("left", "0");
    canvas.style("bottom", "0");
    canvas.style("right", "0");
    canvas.style("margin", "auto");
    // Set the transform property to move the canvas element to the center of the page
    canvas.style("transform", "translatM
      canvas.style("width", "100%");
     canvas.style("height", "100%");
     // Set the canvas element's top and left properties to center it horizontally and vertically
     canvas.style("top", "0");
     canvas.style("left", "0");
     canvas.style("bottom", "0");
     canvas.style("right", "0");
     canvas.style("margin", "auto");
     // Calculate the scale factor based on the window size and the canvas size
     let scaleFactor = Math.min(window.innerWidth / 400, window.innerHeight / 600M
     // Set the transform property to scale the canvas element based on the scale factor
     canvas.style("transform", `scale(${scaleFactor})`);
  let urlParams = getURLParams();
  if (urlParams.res) {
    density = round(int(urlParams.res));
  noiseSeed(mathRand() * 99999);
  randomSeed(mathRand() * 99999);
  canvas = createCanvas(400, 600);
  canvas.addClass("canvasNewCSS");
  resizeCanvasStyle(canvasW,canvasH);
  pixelDensity(density);
  angleMode(DEGREES);
mathRandSelect(colorPalettes);
  noiseDetail(8, 0.5);
  print(colorPalette);
  colorPalette = chroma.scale(colorPalette).mode('lch').colors(12);
  field = mathRandSelect(fields);
  point_count = field[0];
  pointSpace = field[1];
  offset = field[2];
  spaceRatio = field[3];
  densityRatio = field[4];
  variationMode = round(mathRandSelect([1, 2, 3, 4, 5, 6, 7, 8]));
  var maxAttempts = 1000;
  for (var i = 0; i < point_count; i++) {
    var attempts = 0;
    while (attempts < maxAttempts) {
    var point_x = mathRnd(width * (1 - offset), width * offset);
      var point_y = mathRnd(height * (1 - offset), height * offset);
      var point_r = mathRnd(pointSpace * spaceRatio, pointSpace);
      var point_l = mathRnd(length1, length2);
      var point_color = mathRandSelect(colorPalette);
      var overlapp = false;
      for (var j = 0; j < i; j++) {
        if (points[j]) {
          var x2 = points[j].x;
          var y2 = points[j].y;
          var r2 = points[j].r;
          if (dist(point_x, poM
int_y, x2, y2) < (r2 + point_r) / 2 * 1.4) {
            overlapp = true;
      if (!overlapp) {
        append(points, {
          x: point_x,
          y: point_y,
          c: point_color,
          r: point_r,
          l: point_l
    if (attempts >= maxAttempts) {
      console.warn("Could not place point " + i + " after " + maxAttempts + " attempts.");
  for (var p = 0; p < points.length;M
    fill(points[p].c);
    rectMode(CENTER);
    translate(points[p].x, points[p].y);
    rotate(mathRnd(360));
    translate(-points[p].x, -points[p].y);
  for (var i = 0; i < points.length; i++) {
    if (points[i].l > 0) {
      let x = points[i].x;
      let y = points[i].y;
      let pointColor = points[i].c;
      let newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
      let newY = y + mM
ap(noise(log(y), log(x)), 0, 1, -space, space / 2);
      switch (variationMode) {
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), sin(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(cos(x), log(y)), 0, 1, -spaM
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(sin(x), cos(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(cos(y), sin(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(M
x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
          newX = x + map(noise(log(x), log(y)), 0, 1, -space / 2, space);
          newY = y + map(noise(log(y), log(x)), 0, 1, -space, space / 2);
      let maxR = pointSpace;
      if (newX > width * (1 - offset) &&M
 newX < width * offset) {
        if (newY > height * (1 - offset) && newY < height * offset) {
          let v1 = createVector(x, y);
          let v2 = createVector(newX, newY);
          let angleBetween = v1.angleBetween(v2);
          rotate(angleBetween / space);
          strokeWeight(0.7);
          stroke(pointColor)
          fill(pointColor);
          maxR = points[i].r;
          for (var p = 0; p < i; p++) {
            maxR = min(maxR, dist(x, y, points[p].x, poM
          noStroke();
          circle(x, y, maxR);
      points[i].x = newX;
      points[i].y = newY;
      points[i].r = maxR;
      points[i].l--;
  if (millis()>25000) {
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SM
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + M
pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = MathM
.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0,M
 (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    // window.$generativeTraits = {
    //     "T1": T1(rand),
    // console.log(window.$generativeTraits)
 Add your code here
    // const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
 Add your code here
text/plain;charset=utf-8
  "name": "LFG.sats"
text/plain;charset=utf-8
  "name": "purplehaze.sats"
Aj?=:ETH.ETH:0x7Cc6923e87EC8A0d245693Ab992Eda1AC6878774:1605168::0
!Powered by Luxor Tech1002
Aj?=:ETH.ETH:0x9AC38F2E060F058C57A0898a788aD2B0DcE862CA:4324235::0
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>A simple template for launching your art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.min.js"></script>
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"></M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></M
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.1M
2.17/paper-full.min.js"></script>
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script here
 Add your script here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
      let pattern = "seed=";
            for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 5M
97399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l M
= ($ >>>= 0) + (_ >>>= 0) | 0;
                return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            width: 100% !important;
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate raritM
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    console.log(window.$generativeTraits)
 Add your code here
      var canvas = document.querySelector('canvas'),
      ctx = canvas.getContext('2d');
      // Setting the width and height of the canvas
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      // Setting up the letters
      var letters = 'ABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLMNOPQRSTUVXYZABCDEFGHIJKLM
      letters = letters.split('');
      // Setting up the columns
      var fontSize = 10,
          columns = canvas.width / fontSize;
      // Setting up the drops
      var drops = [];
      for (var i = 0; i < columns; i++) {
        drops[i] = 1;
      // Setting up the draw function
      function draw() {
        ctx.fillStyle = 'rgba(0, 0, 0, .1)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        for (var i = 0; i < drops.length; i++) {
 var text = letters[Math.floor(Math.random() * letters.length)];
          ctx.fillStyle = '#0f0';
          ctx.fillText(text, i * fontSize, drops[i] * fontSize);
          drops[i]++;
          if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
            drops[i] = 0;
      // Loop the animation
      setInterval(draw, 33);
 Add your code here
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "post.sats"
text/plain;charset=utf-8
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Arch Plane - art on Bitcoin</title>
    Generative supports the most popular creative coding libraries. Simply uncomment the library you want to use below.
    Are we missing an important library? Let us know @generative_xyz.
//    2023, february
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.5.0/p5.mM
    <!-- c2.min.js@1.0.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/c2/1.0.0/c2.min.js"></script>
    <!-- chromajs@2.4.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chroma-js/2.4.2/chroma.min.js"></script>
    <!-- p5.grain.js@0.6.1
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdn.generative.xyz/ajax/libs/p5.grain/0.6.1/p5.grain.min.js"M
    <!-- threejs@r124
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r124/three.min.js"></script>
    <!-- tonejs@14.8.49
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.49/Tone.js"></script>
    <!-- svgjs@3.1.2
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/svg.js/3.1.2/svg.min.js"></script>
    <!-- aframejs@1.2.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.2.0/aframe.min.js"></script>
    <!-- babylonjs@5.47.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/babylonjs/5.47.0/babylon.js"></script>
    <!-- paperjs@0.12.17
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/paper.js/0.12.17/paper-full.min.jM
    <!-- regljs@2.1.0
    <script sandbox="allow-scripts" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/regl/2.1.0/regl.min.js"></script>
    <script type="text/javascript">
 Add your script for lib here
 Add your script for lib here
    <script id="snippet-random-code" type="text/javascript">
        // DO NOT EDIT THIS SECTION
        let seed = window.location.href.split('/').find(t => t.includes('i0'));
        if (seed == null) {
            const alphabet = "0123456789abcdefghijklmnopqrstuvwsyz";
            seed = new URLSearchParams(window.location.search).get("seed") || Array(64).fill(0).map(_ => alphabet[(Math.random() * alphabet.length) | 0]).join('') + "i0";
            let pattern = "seed=";
         for (let i = 0; i < seed.length - pattern.length; ++i) {
                if (seed.substring(i, i + pattern.length) == pattern) {
                    seed = seed.substring(i + pattern.length);
                    break;
        function cyrb128($) {
            let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
            for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860M
233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
            return _ = Math.imul(i ^ _ >>> 18, 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
        function sfc32($, _, u, i) {
            return function () {
                u >>>= 0, i >>>= 0;
                var l = ($ >>>= 0) + (_ >>>= 0) | 0;
                retM
urn $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
        // IMPORTANT: Instead of Math.random(), use this function mathRand() for random number generation.
        // This function generates a random number between 0 and 1 with on-chain seed.
        let mathRand = sfc32(...cyrb128(seed));
            margin: 0px;
            width: 100% M
            height: 100% !important;
            object-fit: contain;
            position: fixed;
            left: 0;
    <div id="canvas"></div>
<script type="text/javascript">
    const rand = mathRand();
    function T1(rand) {
        // calculate rarity by yourself
        if (rand > 0.5) {
            return true;
            return false
    // window.$generativeTraits contain list traits for token
    // you need to populate a $generativeTraits object in the window object
    window.$generativeTraits = {
        "T1": T1(rand),
    // console.log(window.$generativeTraits)
 Add your code here
    // const container = document.createElement("div")
    // container.innerHTML = "<span>seed: " + seed + "</span><br>";
    // document.body.prepend(container)
//    2023, february
let rndseed = mathRand()*333777333;
let back,maska,mainscene,brush
let color1_h,color1_s,color1_l
let color2_h,color2_s,color2_l
let color3_h,color3_s,color3_l
let color4_h,color4_s,color4_l
let bcolor1_h,bcolor1_s,bcolor1_l
let bcolor2_h,bcolor2_s,bcolor2_l
let sub,bot_step,solido
let diam_min,diff_min
let diam_max,diff_max
  let  canvas=createCanvas(w, w);
   canvas.parent('canvas');
  // angleMode(DEGREES);
  colorMode(HSB, 360, 100, 100,100);
  randomSeed(rndseed);
  console.log("----=====|||||====M
  console.log("      Arch Plane");
  console.log(" Artwork by K Atherton");
  console.log("----=====|||||=====----");
inverto = random(1000)
bgc=int(random(4,280))
lbgc=int(random(85,90))
igc=int(random(4,280))
if (lbgc>50) ligc=int(random(14,40))
if (lbgc<=50) ligc=int(random(51,78))
basecolor=int(random(4,350))
background(bgc,bgs,lbgc);
addNoise(random(5,30))
maxx=int(random(500,700))
lines=int(random(3,7))
mainscene = createGraphics(width,height)
ene.colorMode(HSB, 360, 100, 100,100);
back = createGraphics(width,height)
back.colorMode(HSB, 360, 100, 100,100);
maska = createGraphics(width,height)
maska.colorMode(HSB, 360, 100, 100,100);
// let BWID = random(width*.4,width*0.2)
kolvo=int(random(4,8))
let maxi = (width/kolvo)/5
color1_h=int(random(4,350))
color1_s=int(random(4,81))
color1_l=int(random(11,92))
color2_h=int(random(4,350))
color2_s=int(random(4,81))
color2_l=int(random(11,92))
color3_h=int(random(4,350))
color3_s=int(random(4,81))
or3_l=int(random(11,92))
color4_h=int(random(4,350))
color4_s=int(random(4,81))
color4_l=int(random(11,92))
bcolor1_h=int(random(4,350))
bcolor1_s=int(random(4,81))
bcolor1_l=int(random(11,92))
bcolor2_h=int(random(4,350))
bcolor2_s=int(random(4,81))
bcolor2_l=int(random(11,92))
diam_max=int(random(10,33))
diff_max=int(random(3,33))
let allbuild=int(random(15,33))
if (random(1000)>500) {
solid1w=int(random(10,60))
solid1h=int(random(20,M
solid2w=int(random(10,60))
solid2h=int(random(10,90))
// console.log(diff_min)
// console.log(lines)
if (random(1000)>500)  water=1
if (lines==1) horoff=300
for (let z = 0; z < 900; z+=int(height/lines)) {
let hor=random(z+400+horoff,z+400+horoff)
hor=random(300,1000)
// if (lines>=3) hor=random(z+250+horoff,z+250+horoff)
for (let s = 0; s < allbuild; s+=1) {
let diam=random(0,diam_max)
let diff=random(1,diff_max)
// let diam=random(0,11)
// let diff=random(1,33)
if (ris>0 && ris<200)   bg_dots(diam,diff,color(color1_h,color1_s,color1_l),back)
if (ris>200 && ris<400) bg_sq(diam,diff,color(color2_h,color2_s,color2_l),back)
if (ris>400 && ris<600) bg_vv(diam,diff,color(color3_h,color3_s,color3_l),back)
if (ris>600 && ris<800) bg_hv(diam,diff,color(color4_h,color4_s,color4_l),back)
strokeWeight(random(1))
for (let bz = 0; bz < 60; bz+=1) {
    let sha = random(0,25)
    let shw = random(0,2)
    let sxx=random(100,width-100)
    let syy=random(hor,hM
    let svector = random(100)
    let stepa=random(0,45)
    let szz=random(2,4)
    if (random(1000)>970)
    for (let bzz = 0; bzz < stepa; bzz+=1) {
        if (random(1000)>500) {
        if (svector>50 && (sxx+bzz*szz)<width-100) line(sxx+bzz*szz,syy,sxx+bzz*szz,syy+sha)
                if (syy+bzz*szz<hor) line(sxx,syy+bzz*szz,sxx+sha,syy+bzz*szz)
  let tik=random(1000)
  let mrw=random(0,250)
  let mrh=random(0,250)
    mrh=random(50,maxx)
  let mrx=random(0,maxx)
  let mry=random(0,maxx)
    maska.strokeCap(SQUARE)
    maska.stroke(100,0,0)
    maska.strokeWeight(random(8))
    if (random(1000)>800) maska.strokeWeight(random(3,22))
    maska.line(0,mrh,0,0)
    maska.line(0,0,mrw,0)
    if (random(1000)>500) maska.strokeWeight(random(12,22))
    maska.line(mrw,0,mrw,mrh)
    // maska.rect(0,0,mrw,mrh+8)
    maska.noStroke()
    maska.fill(100,0,0)
 maska.rect(0,0,mrw,mrh)
// let rasp = map(s,0,15,)
let xx  =  random( (s*60)-50,(s*60)+50 )
(brush = back.get()).mask(maska);
  if (random(1000)>980) {
    rectMode(CORNER)
    fill(bcolor1_h,bcolor1_s,bcolor1_l)
    rect(random(100,900-mrw),hor-solid1h,solid1w,solid1h)
  if (random(1000)>900) {
    rectMode(CORNER)
    fill(bcolor2_h,bcolor2_s,bcolor2_l)
    rect(random(100,900-mrw),hor-solid2h,solid2w,solid2M
image(brush,random(100,900-mrw),hor- mrh)
// stroke(color(color1_h,color1_s,color1_l,random(15,44)))
// let dd=hor+random(20)
// let ddx=random(50,770)
// let ddl=random(20,200)
// strokeWeight(random(4))
// line(ddx,dd,ddx+ddl,dd)
//////////////////////////////////////////////////
function bg_dots(rad,diff,color,canvas) {
canvas.strokeWeight(0)
for (let sy = 0; sy < maxx; sy+=rad+diff) {
for (let sx = 0; sx < maxx; sx+=rad+diff) {
  if ((stroka % 2)==0) sf=(rad+diff)/2
  canvas.circle(sx+sf,sy,rad)
//////////////////////////////////////////////////
function bg_sq(rad,diff,color,canvas) {
 canvas.rectMode(CENTER)
 canvas.strokeWeight(0)
for (let sy = 0; sy < maxx; sy+=rad+diff) {
for (let sx = 0; sx < maxx; sx+=rad+diff) {
f ((stroka % 2)==0) sf=(rad+diff)/2
    canvas.rect(sx+sf,sy,rad,rad)
//////////////////////////////////////////////////
function bg_hv(shir,diff,color,canvas) {
 canvas.strokeCap(SQUARE)
 canvas.stroke(color)
 canvas.strokeWeight(shir)
for (let sy = 0; sy < maxx; sy+=shir+diff) {
  canvas.line(0,sy,maxx,sy)
//////////////////////////////////////////////////
function bg_vv(shir,diff,color,canvas) {M
 canvas.strokeCap(SQUARE)
 canvas.stroke(color)
 canvas.strokeWeight(shir)
for (let sx = 0; sx < maxx; sx+=shir+diff) {
  canvas.line(sx,0,sx,maxx)
//////////////////////////////////////////////////
function addNoise(e) {
    loadPixels(), t = width * pixelDensity() * 4 * (height * pixelDensity());
    for (let n = 0; n < t; n += 4)
        pixels[n]     += map(random(), 0, 1, -e, e),
[n + 1] += map(random(), 0, 0.7, -e, e),
        pixels[n + 2] += map(random(), 0, 0.4, -e, e),
        pixels[n + 3] += map(random(), 0, 0.9, -e, e);
if (inverto>500) filter(INVERT);
window.onkeydown = function(e) {
  if (e.keyCode == 83){
function saveScreen(){
  let fileName = "Arch Plane by K Atherton "
  fileName += nf(day(),2) +' '+ nf(month(),2) +' '+ nf(year())
  fileName += " " + nf(hour(),2) + nf(minute(),2) + nfL
  fileName += ".png"
  saveCanvas(fileName)
 Add your code here
text/plain;charset=utf-8
  "name": "gif.sats"
text/plain;charset=utf-8
  "name": "ssd.sats"
text/plain;charset=utf-8
  "name": "00300.sats"
text/html;charset=utf-8
<!-- Thank you, Satoshi -->
<!-- byteEstate #21 -->
<!-- Probably nothing ... -->
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>byteEstate #21</title>
<script>const referUrl = "https://byteestates.app/estate/21";</script>
<link rel="stylesheet" href="https://byteestates.app/assets/estate21/css/style.css"/>
</head><body><div id="byteestate">
<a href="https://byteeL
states.app"><h1>byteEstate #21</h1></a>
</div><script src="https://byteestates.app/assets/estate21/js/app.js"></script>
HjF=:BNB.BTCB-1DE:bnb1nnavl7y8538pedhhy90q26756t3swhzay09dys:1794503:te:0
DjB=:BNB.BNB:bnb1sdmfp872kq5dyt0zys8cjzl743tfz592y0pk8w:14836504:te:0
c/Foundry USA Pool #dropgold/
IjGREFUND:E6583C15ED3928D837C57F31ADCFEC33FF6A5D18A1AF32FECD1F997287221059
6j4ion:5.QmcqNsX7QB9Ae2oK3XfoyxLpKaxWCJZBSdYqCoQVcHtenRtR
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "freechat.sats"
text/plain;charset=utf-8
  "name": "desktop.sats"
text/plain;charset=utf-8
  "name": "rubicon.sats"
text/plain;charset=utf-8
  "name": "weibo.sats"
text/plain;charset=utf-8
  "name": "khaled.sats"
text/plain;charset=utf-8
  "name": "6875.sats"
FjDOUT:DDDAF8059DDE146BCBEA0E09352A14B2D37923AEA8A2F71286FC7DC9B3F6F468
Aj?=:ETH.ETH:0x1fe34b7128bf495Fd9B3551accAB96D78dee3B6d:1950618::0
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
Ordinary: Love & Opportunity: Reflections on Life & Risks
File: #JNAFILES (xii)
"Embrace the two most powerful warriors of life - Love and
Opportunity. I'm trying to prove in my own way that they will
take you places that you never thought possible." - JNA
I don't intend on these Ordinary Files to be intimate. Just ordinary!
I intend For these to cover interesting thoughts, lessons, ideas,
stories that occur in my life on a day-to-day for the dual purpose
of documentation & hopefully bringing value to tM
he individual reading.
2 things stand out as thoughts I would like to burn onto the block:
Yesterday, browsing through ordinals.com (its quite the entertainment)
I came across an inscription that literally was a .txt file containing
1 sentence. The sentence was written to this individuals children,
Expressing how much they love them. I was touched and inspired by the
Note, and thought I'd leave my 2 children (grand children, great grandchildren, etc) a short little love note.
I was't perfect. I made mistakes. I judged myself HARD for those
Mistakes. Then... I learned from them. This is what I learned -
Its human! As long as you are willing to continuously find lessons, growth, and the love and peace within yourself, Thats whats most
Important. At least thats my hope for you. Live life YOUR way.
Happiness is a delusion if you think you can find it outside of you.
J.L.N.M.A & J.E.A.M.A if you happen to stumble across this, know that
You completely changed your mom and my life for the beM
Always been a pretty ambitious person, but my ambition and desire
To find my journey (and become it), for the hope that it is an
example, Blueprint for you to find and become yours, is SO MUCH
Thank you for blessing us with a fresh new lens on life's glasses.
This is going to be a wild contrast to what you read above, but like
I said, these are just thoughts I wanted to share. Today, I came
Across an opportunity to take a risk. Ironically, as I've maturedM
These moments just so happen to be visiting me more often. Why is
That, I wonder? All I can tell you is that, I don't know where we
Go after we leave earth (this message lives on lol) but I do know
That we, in this form, are only here once. No regrets. The risks
That appear on my table today, are tied to my mission of putting
Myself in a way better position to take care of my entire family
For generations to come. When it happens, AMAZING! The risk is, if it
doesn't, will I regret going for it? You know the aMN
Reading the words above.
Let me drop two quotes for you:
a. Opportunity is when luck, preparation, (and courage) meet.
b. We have 2 lives. The 2nd begins the moment we realize we that
We only have 1 - Confucius
15bcca2ee965d6a0ab507454480369c278f69ed8f46c802dffc5205373ab134bi0
CjA=:ETH.ETH:0x836f7668b8835c535b2EC10A3fD714C08dA1c493:1643767:te:0
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"1430.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8717.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8681.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9149.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7471.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7578.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9369.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6346.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7611.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8861.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4818.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4911.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8959.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7967.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7713.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9069.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7579.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9349.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4748.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7857.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5388.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7725.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5571.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5435.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8853.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7708.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5351.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5191.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6883.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8755.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7786.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7949.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6196.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5185.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9297.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6272.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8161.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6255.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4877.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6486.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5227.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8867.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9539.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9343.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6632.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5311.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7467.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5058.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8798.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6946.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5579.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5266.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5117.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5145.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5405.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6647.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6169.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5159.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7870.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5066.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5002.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6393.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7484.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6141.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6242.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5080.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8779.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5395.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6727.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9249.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9171.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6862.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9294.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9479.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6119.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6468.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7479.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9151.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7752.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6864.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6461.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8010.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9303.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7668.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7847.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6726.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6181.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6679.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9194.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6882.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4779.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6126.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6269.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5475.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8078.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8813.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7595.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5254.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4757.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7574.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8816.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6615.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5584.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6191.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6836.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9288.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9188.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7792.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7712.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6533.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9080.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6811.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7753.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8144.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7662.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6476.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6887.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5375.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9155.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4722.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8826.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6316.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6816.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6896.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5564.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7917.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6227.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8852.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7976.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9445.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7655.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9122.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7657.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8840.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6601.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6115.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9495.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5157.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6516.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8997.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9169.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4734.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6367.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6311.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6564.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7817.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9059.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9225.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7883.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5383.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6906.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5015.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5088.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4733.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8158.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9279.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6607.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9055.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7828.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6884.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6648.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7758.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7678.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6608.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5325.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8842.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8208.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6706.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8184.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9322.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6136.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4743.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6554.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8004.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7978.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7790.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5385.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7636.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9020.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5322.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6267.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4914.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6525.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9259.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6675.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6477.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7785.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7743.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4942.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7537.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6306.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4854.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4974.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5352.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9091.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7880.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7576.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6261.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5113.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6465.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7822.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7762.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4770.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7882.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9331.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7927.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7874.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9115.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6955.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4874.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9177.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7478.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5245.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5259.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9093.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4811.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5447.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5235.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6609.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8087.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7515.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7547.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6244.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7793.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7511.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7527.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5453.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9492.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4984.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8993.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4749.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4776.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7665.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9396.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5258.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6460.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7944.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5569.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9334.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9239.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9323.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5485.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7476.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5377.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8814.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6858.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8077.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4904.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4964.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9383.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8846.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8030.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5116.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5011.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8082.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8996.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6889.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7763.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4933.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6265.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9389.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8744.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6756.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6560.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6774.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4746.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5441.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9044.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6515.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6599.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4955.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7517.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5563.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9525.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7497.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6339.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9390.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8981.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4787.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4998.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9066.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7670.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4959.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5251.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8772.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9092.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8874.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7784.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8166.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8747.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6522.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4894.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7897.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6747.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8771.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9411.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9181.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6252.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4943.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9335.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5588.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5587.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7885.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6944.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9277.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4849.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6546.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9522.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4828.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7637.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4948.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5153.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4846.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8180.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6717.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6373.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8865.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6288.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6434.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6343.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5292.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6469.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7505.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7745.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6396.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4775.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5171.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9269.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8183.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9298.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8099.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9049.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9545.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7674.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6672.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7966.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5053.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8117.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6716.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7798.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9439.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5359.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8789.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5114.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9290.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5156.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5181.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7837.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5337.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6202.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9114.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4993.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5457.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6846.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4997.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7957.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4737.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4864.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7437.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8781.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6818.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7559.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9529.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7719.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5295.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7644.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8038.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8815.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4840.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7525.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9295.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7873.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8854.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4755.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6694.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7879.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4799.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6585.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6334.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7827.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6671.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7794.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8148.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8028.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9244.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9116.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7449.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9226.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6286.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5576.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9289.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5085.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7585.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9190.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5001.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4945.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4919.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7811.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7994.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6635.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6695.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8909.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4766.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9447.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8186.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5357.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5338.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6449.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4833.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6645.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7959.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8033.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5158.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7992.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7974.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8113.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8992.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5373.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4969.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8820.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6639.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7442.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4767.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6856.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8983.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7715.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6614.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7782.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7987.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6634.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8774.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5165.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6499.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8835.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8202.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7818.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6160.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7573.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6867.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9195.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8141.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9141.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4886.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9272.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6619.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6559.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7554.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9266.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6833.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9373.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6167.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7759.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4934.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6878.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9096.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6422.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9550.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5299.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8086.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7795.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7565.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8873.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6876.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6768.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6467.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7475.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6575.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6770.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8837.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8994.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5272.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4834.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4889.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5035.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5354.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9040.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8058.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4996.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6691.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4778.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8832.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9422.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5045.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7868.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5422.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7955.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8872.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7545.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9338.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9311.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6388.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8869.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5177.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5345.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7553.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5004.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6674.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8177.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4989.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5202.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6506.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6826.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5573.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7558.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7622.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8011.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7709.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5399.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5006.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6563.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5119.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7422.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7669.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6225.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9077.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8968.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5277.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7748.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7858.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8831.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4858.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8980.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8683.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7455.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9255.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5056.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5458.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8783.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9252.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6588.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9459.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9443.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6707.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8985.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8875.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7675.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9227.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9505.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8827.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6762.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6386.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8938.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7768.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7470.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5465.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5459.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5586.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6277.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8098.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4784.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8178.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6426.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7647.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4992.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6641.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9293.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7937.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7706.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6771.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5195.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8918.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9193.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5003.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6764.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4988.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6605.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4995.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6313.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5358.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9282.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6595.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7969.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6722.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8879.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7742.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8005.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8085.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7487.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5484.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9139.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6165.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4929.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6567.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7507.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6331.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9161.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6939.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7551.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6146.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7723.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8860.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6551.sats"}h!
text/plain;charset=utf-8
  "name": "x2y2.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7714.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7919.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6362.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8108.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5244.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5256.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9262.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9166.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9309.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6526.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9313.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7572.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6445.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5228.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6796.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7597.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4868.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9088.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7535.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8786.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6956.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7716.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4788.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9433.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6356.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6171.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6848.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9296.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6377.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4764.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4977.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9008.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5242.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5315.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5356.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6144.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5161.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9109.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7728.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9493.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7726.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9533.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7522.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7991.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7996.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5583.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8870.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6326.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6474.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5452.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6337.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5059.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8987.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9060.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7738.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7867.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5265.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8081.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6335.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9129.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8834.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7848.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5344.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8948.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8836.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8770.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8758.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4845.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8797.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6806.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6779.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6637.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8986.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7633.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4772.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5070.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4794.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8810.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5257.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9394.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5574.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9464.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5568.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6199.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7783.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6376.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6885.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7696.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6268.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6603.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9519.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6553.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6604.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7988.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5250.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5415.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6760.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5229.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6433.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5305.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6649.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9511.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6368.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7833.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8849.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5578.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8991.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9544.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9144.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9379.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8229.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6303.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4647.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7552.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7656.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6260.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5054.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5488.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8101.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7457.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6855.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7876.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6155.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6206.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5253.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4855.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7679.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8782.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7754.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5095.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9363.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5365.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6778.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7975.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5285.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9070.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5450.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6936.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8018.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9189.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6711.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5075.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4940.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8908.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6775.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6557.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6118.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6569.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8830.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9535.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6613.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7616.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7907.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5323.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4939.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8775.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6881.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4924.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9118.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8020.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8978.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8939.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8825.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7663.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6596.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7472.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8089.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5226.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8711.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8863.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9202.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4966.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9113.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7995.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9030.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5105.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6576.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8843.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6163.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6568.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8969.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4773.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7661.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8048.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6113.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6860.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5044.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6505.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8767.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6355.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6263.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5065.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8227.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6652.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6364.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8841.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9011.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6861.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7764.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9131.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9497.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5135.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6535.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5057.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7796.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5339.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6746.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5223.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6156.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5449.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6916.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4804.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9329.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4909.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9469.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7761.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5425.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4814.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4841.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7972.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7735.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7989.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6642.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6456.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4979.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7488.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9291.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5334.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9179.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9159.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9556.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8083.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5474.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7664.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6361.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7606.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6744.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5350.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6299.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6602.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7933.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7732.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8812.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8850.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8738.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4881.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8068.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6693.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7697.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9019.sats"}h!
text/plain;charset=utf-8
  "name": "1058.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6455.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9409.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7929.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6117.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9220.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8116.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8182.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4899.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8958.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5009.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9391.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4754.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6436.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7571.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5411.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8007.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6399.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5282.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5499.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8862.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6799.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8114.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6463.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9133.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8839.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5343.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6186.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6769.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7673.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4824.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5581.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9359.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8856.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6292.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8151.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9209.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5144.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5262.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9440.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7566.sats"}h!
text/plain;charset=utf-8
  "name": "1082.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6162.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4882.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6338.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7947.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6765.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9336.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7588.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4838.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7567.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5205.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8929.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7881.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6536.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4947.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5572.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6787.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9232.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4797.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7424.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9224.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4741.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6737.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7884.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6692.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6447.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7731.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9095.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6618.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5175.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5099.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6844.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9192.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8768.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5313.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8919.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8050.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7734.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7570.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9337.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5131.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6176.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9392.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8055.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6411.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5582.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5133.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9419.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8982.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5051.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6736.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6110.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7781.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8979.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5495.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9022.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8845.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7473.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8685.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5224.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8773.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4954.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8748.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4941.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7889.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9551.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7875.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6643.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5494.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7687.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8660.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6657.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8661.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8784.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9117.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7445.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9498.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9491.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8824.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7746.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6659.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7769.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6406.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7466.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7627.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7626.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9089.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7973.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6256.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6353.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7499.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9330.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9079.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8066.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7646.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7617.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7433.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5008.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8708.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4885.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4745.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8995.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6877.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5393.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8799.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6383.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8185.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5141.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6797.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8776.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5331.sats"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5033.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9398.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6223.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6772.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5077.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7443.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5152.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6229.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7599.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8817.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9455.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7756.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4922.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6496.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6763.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4880.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6673.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7909.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4991.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5303.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9344.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8949.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6511.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9098.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9553.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6617.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4946.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6264.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8928.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7587.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9557.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5366.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6484.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8171.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7729.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4866.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8226.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4740.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6869.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8155.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4822.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8847.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7807.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6164.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7855.sats"}h!
Kerala: India temple replaces elephant with robot for rituals
{http://ns.adobe.com/xap/1.0/
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmM
lns:dc="http://purl.org/dc/elements/1.1/"/><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:title><rdf:Alt xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:li xml:lang="x-default">Kerala: India temple replaces elephant with robot for rituals</rdf:li></rdf:Alt>
			</dc:title><dc:description><rdf:Alt xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:li xml:lang="x-default">Kerala: India temple replaces elephant with robot foM
r rituals</rdf:li></rdf:Alt>
			</dc:description></rdf:Description></rdf:RDF></x:xmpmeta>




                        M





                                       M





                                                      M





                                                                     M

                            <?xpacket end='w'?>
"%8(+(+(8U5>55>5UK[JEJ[K
"%8(+(+(8U5>55>5UK[JEJ[K
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4742.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7939.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9094.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6416.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7886.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6151.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9395.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6577.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6561.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6462.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6443.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7718.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8780.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7971.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9228.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7736.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6586.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6282.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9441.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4843.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7749.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5052.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8851.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6863.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6365.sats"}h!
text/plain;charset=utf-8
  "name": "1086.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9223.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6773.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6545.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6404.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6296.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4898.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5150.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7556.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8871.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6360.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9097.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7441.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6276.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9429.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6246.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8859.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6808.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7998.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8829.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9242.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9029.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7993.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7872.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6949.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5443.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7911.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8084.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9388.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8060.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8785.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6697.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6562.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5101.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4847.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8198.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5090.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6653.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6344.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6236.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6651.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5025.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6880.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4727.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7739.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6638.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4887.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5275.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6757.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6755.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7871.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5451.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7544.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7780.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7448.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6322.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8757.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7751.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7686.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7671.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9397.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6369.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9414.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8009.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9496.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6828.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9515.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7699.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5166.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4883.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9353.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6658.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5477.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4724.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5118.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6488.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4990.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5288.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6929.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5567.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6177.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6865.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9319.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7607.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6959.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5456.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9355.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7970.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6962.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9039.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6733.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9454.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7724.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7427.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9050.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7533.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6441.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6323.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5199.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9509.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7791.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9101.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6224.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5363.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8070.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9332.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9446.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5154.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6761.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"4771.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9377.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8040.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7672.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8224.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6112.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"7741.sats"}h!
LjJ=:BNB.BUSD-BD1:bnb1d7z0epakqk6tqplyvrffe5zr5uggzwtnc8pj7a:32848594120:te:0
CjA=:ETH.ETH:0x958FFebfc8b91A468fA7bC15AABF80aeAAc2d5F2:2125453:te:0
DjB=:BNB.BNB:bnb1txg066esnraenhjvuh500xwy6gm3hd8454p77x:92462383:te:0
HjF=:BNB.BTCB-1DE:bnb1yyau9yxqpsc3tye7f3wm8v7x07vn6rgwt7hyhh:8946653:te:0
LjJ=:BNB.BUSD-BD1:bnb18xynhkqttf5m9r45aqg596rhnmv20f9s0cysxt:67147057505:te:0
text/plain;charset=utf-8
  "name": "dddd.sats"
text/plain;charset=utf-8
  "name": "bru.sats"
<?xml version="1.0" encoding="UTF-8"?><svg viewBox="-5 -5 120 120" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>SAT 3930503077242</title><desc>collectibles.nullish.org</desc><style>.t { font-family: Courier New; font-size: 2px; } .a { text-shadow: 1px 1px 0px #000; font-family: Courier New; font-size: 5px; font-weight: 400; }</style> <defs> <filter id="a"> <feFlood flood-color="black"/> <feComposite in2="SourceGraphic" operator="out"/> <feGaussianBlur stdDeviation="1"/> <feCoM
mposite in2="SourceGraphic" operator="atop"/> </filter> <linearGradient id="e" x2="0" y2="122"> <stop stop-color="#db9300" offset="0"/> <stop stop-color="#a26d00" offset=".4"/> </linearGradient> </defs> <circle cx="55" cy="55" r="52" fill="#fecb00" filter="url(#a)"/> <circle cx="55" cy="55" r="43.5" fill="url(#e)"/> <circle cx="55" cy="55" r="43" fill="#db9300" filter="url(#a)"/> <path id="g" d="m7 55a48 48 0 1 0 96 0 48 48 0 1 0-96 0" fill="none"/> <text fill="#db9300" text-anchor="middle"><textPath startOffset="2M
5%" font-family="Courier New" font-size="2.5px" font-weight="400" style="text-shadow:1px 1px 0px #000" xlink:href="#g" xml:space="preserve">The Times 03/Jan/2009 Chancellor on brink of second bailout for banks</textPath></text> <path id="f" d="m9 50a46 46.5 0 0 1 91.5 0" fill="none"/> <text fill="#946300" text-anchor="middle"><textPath class="a" startOffset="50%" xlink:href="#f" xml:space="preserve">BLOCK 786   SAT 3930503077242   JANUARY 2009</textPath></text> <g transform="scale(0.05)translate(800,600)" fill="#dbM
9300" filter="drop-shadow(0px 15px 0px rgb(0 0 0 / 0.4))"> <path d="M642.5 635c0 50.6-16.8 97.4-44.9 135-12.9 17-28 32.2-45.1 45.1-26.2 19.6-56.8 33.7-90 40.4-14.5 3-29.6 4.5-45 4.5v90h-90v-90h-45v90h-90v-90h-135v-90h360c15.8 0 30.9-2.7 45-7.7 52.4-18.5 90-68.5 90-127.3s-37.6-108.8-90-127.3c-14.1-5-29.2-7.7-45-7.7h-315V230h-45v-90h135V50h90v90h45V50h90v95.7c15.9 4.1 31 10.4 45 18.5 27.3 15.8 50.1 38.6 65.9 65.9 15.4 26.5 24.1 57.2 24.1 90h-90c0-33.3-18.1-62.4-45-77.9-13.2-7.7-28.6-12.1-45-12.1h-180v180h225c15.4 0 3L
0.5 1.5 45 4.5 18 3.7 35.1 9.5 51.3 17.1 13.8 6.5 26.7 14.3 38.8 23.3 17 12.9 32.2 28 45.1 45.1 28 37.5 44.8 84.3 44.8 134.9z" fill="#fecb00"/> </g> </svg>h!
text/plain;charset=utf-8
  "name": "ketamine.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "2704.sats"
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8189.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6986.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6976.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5596.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8187.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6968.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9577.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5589.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9565.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5591.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9579.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6979.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9569.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5594.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8248.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9566.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6963.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8238.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"9575.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5592.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6977.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"6961.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8233.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"8191.sats"}h!
text/plain;charset=utf-8
){"p":"sns","op":"reg","name":"5593.sats"}h!
text/plain;charset=utf-8
  "name": "conch.sats"
text/plain;charset=utf-8
text/plain;charset=utf-8
  "name": "vegan.sats"
text/plain;charset=utf-8
  "name": "tubesafari.sats"
)j'1aJ5D8b9T8VvsnnEyatVVdb5sEP5Dy2vfegJE5H

blk00000.txt blk00001.txt blk00002.txt blk00003.txt blk00004.txt blk00005.txt blk00006.txt blk00007.txt blk00008.txt blk00009.txt blk00010.txt blk00011.txt blk00012.txt blk00013.txt blk00014.txt blk00015.txt blk00016.txt blk00017.txt blk00018.txt blk00019.txt blk00020.txt blk00021.txt blk00022.txt blk00023.txt blk00024.txt blk00025.txt blk00026.txt blk00027.txt blk00028.txt blk00029.txt blk00030.txt blk00031.txt blk00032.txt blk00033.txt blk00034.txt blk00035.txt blk00036.txt blk00037.txt blk00038.txt blk00039.txt blk00040.txt blk00041.txt blk00042.txt blk00043.txt blk00044.txt blk00045.txt blk00046.txt blk00047.txt blk00048.txt blk00049.txt blk00050.txt blk00051.txt blk00052.txt blk00053.txt blk00054.txt blk00055.txt blk00056.txt blk00057.txt blk00058.txt blk00059.txt blk00060.txt blk00061.txt blk00062.txt blk00063.txt blk00064.txt blk00065.txt blk00066.txt blk00067.txt blk00068.txt blk00069.txt blk00070.txt blk00071.txt blk00072.txt blk00073.txt blk00074.txt blk00075.txt blk00076.txt blk00077.txt blk00078.txt blk00079.txt blk00080.txt blk00081.txt blk00082.txt blk00083.txt blk00084.txt blk00085.txt blk00086.txt blk00087.txt blk00088.txt blk00089.txt blk00090.txt blk00091.txt blk00092.txt blk00093.txt blk00094.txt blk00095.txt blk00096.txt blk00097.txt blk00098.txt blk00099.txt blk00100.txt blk00101.txt blk00102.txt blk00103.txt blk00104.txt blk00105.txt blk00106.txt blk00107.txt blk00108.txt blk00109.txt blk00110.txt blk00111.txt blk00112.txt blk00113.txt blk00114.txt blk00115.txt blk00116.txt blk00117.txt blk00118.txt blk00119.txt blk00120.txt blk00121.txt blk00122.txt blk00123.txt blk00124.txt blk00125.txt blk00126.txt blk00127.txt blk00128.txt blk00129.txt blk00130.txt blk00131.txt blk00132.txt blk00133.txt blk00134.txt blk00135.txt blk00136.txt blk00137.txt blk00138.txt blk00139.txt blk00140.txt blk00141.txt blk00142.txt blk00143.txt blk00144.txt blk00145.txt blk00146.txt blk00147.txt blk00148.txt blk00149.txt blk00150.txt blk00151.txt blk00152.txt blk00153.txt blk00154.txt blk00155.txt blk00156.txt blk00157.txt blk00158.txt blk00159.txt blk00160.txt blk00161.txt blk00162.txt blk00163.txt blk00164.txt blk00165.txt blk00166.txt blk00167.txt blk00168.txt blk00169.txt blk00170.txt blk00171.txt blk00172.txt blk00173.txt blk00174.txt blk00175.txt blk00176.txt blk00177.txt blk00178.txt blk00179.txt blk00180.txt blk00181.txt blk00182.txt blk00183.txt blk00184.txt blk00185.txt blk00186.txt blk00187.txt blk00188.txt blk00189.txt blk00190.txt blk00191.txt blk00192.txt blk00193.txt blk00194.txt blk00195.txt blk00196.txt blk00197.txt blk00198.txt blk00199.txt blk00200.txt blk00201.txt blk00202.txt blk00203.txt blk00204.txt blk00205.txt blk00206.txt blk00207.txt blk00208.txt blk00209.txt blk00210.txt blk00211.txt blk00212.txt blk00213.txt blk00214.txt blk00215.txt blk00216.txt blk00217.txt blk00218.txt blk00219.txt blk00220.txt blk00221.txt blk00222.txt blk00223.txt blk00224.txt blk00225.txt blk00226.txt blk00227.txt blk00228.txt blk00229.txt blk00230.txt blk00231.txt blk00232.txt blk00233.txt blk00234.txt blk00235.txt blk00236.txt blk00237.txt blk00238.txt blk00239.txt blk00240.txt blk00241.txt blk00242.txt blk00243.txt blk00244.txt blk00245.txt blk00246.txt blk00247.txt blk00248.txt blk00249.txt blk00250.txt blk00251.txt blk00252.txt blk00253.txt blk00254.txt blk00255.txt blk00256.txt blk00257.txt blk00258.txt blk00259.txt blk00260.txt blk00261.txt blk00262.txt blk00263.txt blk00264.txt blk00265.txt blk00266.txt blk00267.txt blk00268.txt blk00269.txt blk00270.txt blk00271.txt blk00272.txt blk00273.txt blk00274.txt blk00275.txt blk00276.txt blk00277.txt blk00278.txt blk00279.txt blk00280.txt blk00281.txt blk00282.txt blk00283.txt blk00284.txt blk00285.txt blk00286.txt blk00287.txt blk00288.txt blk00289.txt blk00290.txt blk00291.txt blk00292.txt blk00293.txt blk00294.txt blk00295.txt blk00296.txt blk00297.txt blk00298.txt blk00299.txt blk00300.txt blk00301.txt blk00302.txt blk00303.txt blk00304.txt blk00305.txt blk00306.txt blk00307.txt blk00308.txt blk00309.txt blk00310.txt blk00311.txt blk00312.txt blk00313.txt blk00314.txt blk00315.txt blk00316.txt blk00317.txt blk00318.txt blk00319.txt blk00320.txt blk00321.txt blk00322.txt blk00323.txt blk00324.txt blk00325.txt blk00326.txt blk00327.txt blk00328.txt blk00329.txt blk00330.txt blk00331.txt blk00332.txt blk00333.txt blk00334.txt blk00335.txt blk00336.txt blk00337.txt blk00338.txt blk00339.txt blk00340.txt blk00341.txt blk00342.txt blk00343.txt blk00344.txt blk00345.txt blk00346.txt blk00347.txt blk00348.txt blk00349.txt blk00350.txt blk00351.txt blk00352.txt blk00353.txt blk00354.txt blk00355.txt blk00356.txt blk00357.txt blk00358.txt blk00359.txt blk00360.txt blk00361.txt blk00362.txt blk00363.txt blk00364.txt blk00365.txt blk00366.txt blk00367.txt blk00368.txt blk00369.txt blk00370.txt blk00371.txt blk00372.txt blk00373.txt blk00374.txt blk00375.txt blk00376.txt blk00377.txt blk00378.txt blk00379.txt blk00380.txt blk00381.txt blk00382.txt blk00383.txt blk00384.txt blk00385.txt blk00386.txt blk00387.txt blk00388.txt blk00389.txt blk00390.txt blk00391.txt blk00392.txt blk00393.txt blk00394.txt blk00395.txt blk00396.txt blk00397.txt blk00398.txt blk00399.txt blk00400.txt blk00401.txt blk00402.txt blk00403.txt blk00404.txt blk00405.txt blk00406.txt blk00407.txt blk00408.txt blk00409.txt blk00410.txt blk00411.txt blk00412.txt blk00413.txt blk00414.txt blk00415.txt blk00416.txt blk00417.txt blk00418.txt blk00419.txt blk00420.txt blk00421.txt blk00422.txt blk00423.txt blk00424.txt blk00425.txt blk00426.txt blk00427.txt blk00428.txt blk00429.txt blk00430.txt blk00431.txt blk00432.txt blk00433.txt blk00434.txt blk00435.txt blk00436.txt blk00437.txt blk00438.txt blk00439.txt blk00440.txt blk00441.txt blk00442.txt blk00443.txt blk00444.txt blk00445.txt blk00446.txt blk00447.txt blk00448.txt blk00449.txt blk00450.txt blk00451.txt blk00452.txt blk00453.txt blk00454.txt blk00455.txt blk00456.txt blk00457.txt blk00458.txt blk00459.txt blk00460.txt blk00461.txt blk00462.txt blk00463.txt blk00464.txt blk00465.txt blk00466.txt blk00467.txt blk00468.txt blk00469.txt blk00470.txt blk00471.txt blk00472.txt blk00473.txt blk00474.txt blk00475.txt blk00476.txt blk00477.txt blk00478.txt blk00479.txt blk00480.txt blk00481.txt blk00482.txt blk00483.txt blk00484.txt blk00485.txt blk00486.txt blk00487.txt blk00488.txt blk00489.txt blk00490.txt blk00491.txt blk00492.txt blk00493.txt blk00494.txt blk00495.txt blk00496.txt blk00497.txt blk00498.txt blk00499.txt blk00500.txt blk00501.txt blk00502.txt blk00503.txt blk00504.txt blk00505.txt blk00506.txt blk00507.txt blk00508.txt blk00509.txt blk00510.txt blk00511.txt blk00512.txt blk00513.txt blk00514.txt blk00515.txt blk00516.txt blk00517.txt blk00518.txt blk00519.txt blk00520.txt blk00521.txt blk00522.txt blk00523.txt blk00524.txt blk00525.txt blk00526.txt blk00527.txt blk00528.txt blk00529.txt blk00530.txt blk00531.txt blk00532.txt blk00533.txt blk00534.txt blk00535.txt blk00536.txt blk00537.txt blk00538.txt blk00539.txt blk00540.txt blk00541.txt blk00542.txt blk00543.txt blk00544.txt blk00545.txt blk00546.txt blk00547.txt blk00548.txt blk00549.txt blk00550.txt blk00551.txt blk00552.txt blk00553.txt blk00554.txt blk00555.txt blk00556.txt blk00557.txt blk00558.txt blk00559.txt blk00560.txt blk00561.txt blk00562.txt blk00563.txt blk00564.txt blk00565.txt blk00566.txt blk00567.txt blk00568.txt blk00569.txt blk00570.txt blk00571.txt blk00572.txt blk00573.txt blk00574.txt blk00575.txt blk00576.txt blk00577.txt blk00578.txt blk00579.txt blk00580.txt blk00581.txt blk00582.txt blk00583.txt blk00584.txt blk00585.txt blk00586.txt blk00587.txt blk00588.txt blk00589.txt blk00590.txt blk00591.txt blk00592.txt blk00593.txt blk00594.txt blk00595.txt blk00596.txt blk00597.txt blk00598.txt blk00599.txt blk00600.txt blk00601.txt blk00602.txt blk00603.txt blk00604.txt blk00605.txt blk00606.txt blk00607.txt blk00608.txt blk00609.txt blk00610.txt blk00611.txt blk00612.txt blk00613.txt blk00614.txt blk00615.txt blk00616.txt blk00617.txt blk00618.txt blk00619.txt blk00620.txt blk00621.txt blk00622.txt blk00623.txt blk00624.txt blk00625.txt blk00626.txt blk00627.txt blk00628.txt blk00629.txt blk00630.txt blk00631.txt blk00632.txt blk00633.txt blk00634.txt blk00635.txt blk00636.txt blk00637.txt blk00638.txt blk00639.txt blk00640.txt blk00641.txt blk00642.txt blk00643.txt blk00644.txt blk00645.txt blk00646.txt blk00647.txt blk00648.txt blk00649.txt blk00650.txt blk00651.txt blk00652.txt blk00653.txt blk00654.txt blk00655.txt blk00656.txt blk00657.txt blk00658.txt blk00659.txt blk00660.txt blk00661.txt blk00662.txt blk00663.txt blk00664.txt blk00665.txt blk00666.txt blk00667.txt blk00668.txt blk00669.txt blk00670.txt blk00671.txt blk00672.txt blk00673.txt blk00674.txt blk00675.txt blk00676.txt blk00677.txt blk00678.txt blk00679.txt blk00680.txt blk00681.txt blk00682.txt blk00683.txt blk00684.txt blk00685.txt blk00686.txt blk00687.txt blk00688.txt blk00689.txt blk00690.txt blk00691.txt blk00692.txt blk00693.txt blk00694.txt blk00695.txt blk00696.txt blk00697.txt blk00698.txt blk00699.txt blk00700.txt blk00701.txt blk00702.txt blk00703.txt blk00704.txt blk00705.txt blk00706.txt blk00707.txt blk00708.txt blk00709.txt blk00710.txt blk00711.txt blk00712.txt blk00713.txt blk00714.txt blk00715.txt blk00716.txt blk00717.txt blk00718.txt blk00719.txt blk00720.txt blk00721.txt blk00722.txt blk00723.txt blk00724.txt blk00725.txt blk00726.txt blk00727.txt blk00728.txt blk00729.txt blk00730.txt blk00731.txt blk00732.txt blk00733.txt blk00734.txt blk00735.txt blk00736.txt blk00737.txt blk00738.txt blk00739.txt blk00740.txt blk00741.txt blk00742.txt blk00743.txt blk00744.txt blk00745.txt blk00746.txt blk00747.txt blk00748.txt blk00749.txt blk00750.txt blk00751.txt blk00752.txt blk00753.txt blk00754.txt blk00755.txt blk00756.txt blk00757.txt blk00758.txt blk00759.txt blk00760.txt blk00761.txt blk00762.txt blk00763.txt blk00764.txt blk00765.txt blk00766.txt blk00767.txt blk00768.txt blk00769.txt blk00770.txt blk00771.txt blk00772.txt blk00773.txt blk00774.txt blk00775.txt blk00776.txt blk00777.txt blk00778.txt blk00779.txt blk00780.txt blk00781.txt blk00782.txt blk00783.txt blk00784.txt blk00785.txt blk00786.txt blk00787.txt blk00788.txt blk00789.txt blk00790.txt blk00791.txt blk00792.txt blk00793.txt blk00794.txt blk00795.txt blk00796.txt blk00797.txt blk00798.txt blk00799.txt blk00800.txt blk00801.txt blk00802.txt blk00803.txt blk00804.txt blk00805.txt blk00806.txt blk00807.txt blk00808.txt blk00809.txt blk00810.txt blk00811.txt blk00812.txt blk00813.txt blk00814.txt blk00815.txt blk00816.txt blk00817.txt blk00818.txt blk00819.txt blk00820.txt blk00821.txt blk00822.txt blk00823.txt blk00824.txt blk00825.txt blk00826.txt blk00827.txt blk00828.txt blk00829.txt blk00830.txt blk00831.txt blk00832.txt blk00833.txt blk00834.txt blk00835.txt blk00836.txt blk00837.txt blk00838.txt blk00839.txt blk00840.txt blk00841.txt blk00842.txt blk00843.txt blk00844.txt blk00845.txt blk00846.txt blk00847.txt blk00848.txt blk00849.txt blk00850.txt blk00851.txt blk00852.txt blk00853.txt blk00854.txt blk00855.txt blk00856.txt blk00857.txt blk00858.txt blk00859.txt blk00860.txt blk00861.txt blk00862.txt blk00863.txt blk00864.txt blk00865.txt blk00866.txt blk00867.txt blk00868.txt blk00869.txt blk00870.txt blk00871.txt blk00872.txt blk00873.txt blk00874.txt blk00875.txt blk00876.txt blk00877.txt blk00878.txt blk00879.txt blk00880.txt blk00881.txt blk00882.txt blk00883.txt blk00884.txt blk00885.txt blk00886.txt blk00887.txt blk00888.txt blk00889.txt blk00890.txt blk00891.txt blk00892.txt blk00893.txt blk00894.txt blk00895.txt blk00896.txt blk00897.txt blk00898.txt blk00899.txt blk00900.txt blk00901.txt blk00902.txt blk00903.txt blk00904.txt blk00905.txt blk00906.txt blk00907.txt blk00908.txt blk00909.txt blk00910.txt blk00911.txt blk00912.txt blk00913.txt blk00914.txt blk00915.txt blk00916.txt blk00917.txt blk00918.txt blk00919.txt blk00920.txt blk00921.txt blk00922.txt blk00923.txt blk00924.txt blk00925.txt blk00926.txt blk00927.txt blk00928.txt blk00929.txt blk00930.txt blk00931.txt blk00932.txt blk00933.txt blk00934.txt blk00935.txt blk00936.txt blk00937.txt blk00938.txt blk00939.txt blk00940.txt blk00941.txt blk00942.txt blk00943.txt blk00944.txt blk00945.txt blk00946.txt blk00947.txt blk00948.txt blk00949.txt blk00950.txt blk00951.txt blk00952.txt blk00953.txt blk00954.txt blk00955.txt blk00956.txt blk00957.txt blk00958.txt blk00959.txt blk00960.txt blk00961.txt blk00962.txt blk00963.txt blk00964.txt blk00965.txt blk00966.txt blk00967.txt blk00968.txt blk00969.txt blk00970.txt blk00971.txt blk00972.txt blk00973.txt blk00974.txt blk00975.txt blk00976.txt blk00977.txt blk00978.txt blk00979.txt blk00980.txt blk00981.txt blk00982.txt blk00983.txt blk00984.txt blk00985.txt blk00986.txt blk00987.txt blk00988.txt blk00989.txt blk00990.txt blk00991.txt blk00992.txt blk00993.txt blk00994.txt blk00995.txt blk00996.txt blk00997.txt blk00998.txt blk00999.txt blk01000.txt blk01001.txt blk01002.txt blk01003.txt blk01004.txt blk01005.txt blk01006.txt blk01007.txt blk01008.txt blk01009.txt blk01010.txt blk01011.txt blk01012.txt blk01013.txt blk01014.txt blk01015.txt blk01016.txt blk01017.txt blk01018.txt blk01019.txt blk01020.txt blk01021.txt blk01022.txt blk01023.txt blk01024.txt blk01025.txt blk01026.txt blk01027.txt blk01028.txt blk01029.txt blk01030.txt blk01031.txt blk01032.txt blk01033.txt blk01034.txt blk01035.txt blk01036.txt blk01037.txt blk01038.txt blk01039.txt blk01040.txt blk01041.txt blk01042.txt blk01043.txt blk01044.txt blk01045.txt blk01046.txt blk01047.txt blk01048.txt blk01049.txt blk01050.txt blk01051.txt blk01052.txt blk01053.txt blk01054.txt blk01055.txt blk01056.txt blk01057.txt blk01058.txt blk01059.txt blk01060.txt blk01061.txt blk01062.txt blk01063.txt blk01064.txt blk01065.txt blk01066.txt blk01067.txt blk01068.txt blk01069.txt blk01070.txt blk01071.txt blk01072.txt blk01073.txt blk01074.txt blk01075.txt blk01076.txt blk01077.txt blk01078.txt blk01079.txt blk01080.txt blk01081.txt blk01082.txt blk01083.txt blk01084.txt blk01085.txt blk01086.txt blk01087.txt blk01088.txt blk01089.txt blk01090.txt blk01091.txt blk01092.txt blk01093.txt blk01094.txt blk01095.txt blk01096.txt blk01097.txt blk01098.txt blk01099.txt blk01100.txt blk01101.txt blk01102.txt blk01103.txt blk01104.txt blk01105.txt blk01106.txt blk01107.txt blk01108.txt blk01109.txt blk01110.txt blk01111.txt blk01112.txt blk01113.txt blk01114.txt blk01115.txt blk01116.txt blk01117.txt blk01118.txt blk01119.txt blk01120.txt blk01121.txt blk01122.txt blk01123.txt blk01124.txt blk01125.txt blk01126.txt blk01127.txt blk01128.txt blk01129.txt blk01130.txt blk01131.txt blk01132.txt blk01133.txt blk01134.txt blk01135.txt blk01136.txt blk01137.txt blk01138.txt blk01139.txt blk01140.txt blk01141.txt blk01142.txt blk01143.txt blk01144.txt blk01145.txt blk01146.txt blk01147.txt blk01148.txt blk01149.txt blk01150.txt blk01151.txt blk01152.txt blk01153.txt blk01154.txt blk01155.txt blk01156.txt blk01157.txt blk01158.txt blk01159.txt blk01160.txt blk01161.txt blk01162.txt blk01163.txt blk01164.txt blk01165.txt blk01166.txt blk01167.txt blk01168.txt blk01169.txt blk01170.txt blk01171.txt blk01172.txt blk01173.txt blk01174.txt blk01175.txt blk01176.txt blk01177.txt blk01178.txt blk01179.txt blk01180.txt blk01181.txt blk01182.txt blk01183.txt blk01184.txt blk01185.txt blk01186.txt blk01187.txt blk01188.txt blk01189.txt blk01190.txt blk01191.txt blk01192.txt blk01193.txt blk01194.txt blk01195.txt blk01196.txt blk01197.txt blk01198.txt blk01199.txt blk01200.txt blk01201.txt blk01202.txt blk01203.txt blk01204.txt blk01205.txt blk01206.txt blk01207.txt blk01208.txt blk01209.txt blk01210.txt blk01211.txt blk01212.txt blk01213.txt blk01214.txt blk01215.txt blk01216.txt blk01217.txt blk01218.txt blk01219.txt blk01220.txt blk01221.txt blk01222.txt blk01223.txt blk01224.txt blk01225.txt blk01226.txt blk01227.txt blk01228.txt blk01229.txt blk01230.txt blk01231.txt blk01232.txt blk01233.txt blk01234.txt blk01235.txt blk01236.txt blk01237.txt blk01238.txt blk01239.txt blk01240.txt blk01241.txt blk01242.txt blk01243.txt blk01244.txt blk01245.txt blk01246.txt blk01247.txt blk01248.txt blk01249.txt blk01250.txt blk01251.txt blk01252.txt blk01253.txt blk01254.txt blk01255.txt blk01256.txt blk01257.txt blk01258.txt blk01259.txt blk01260.txt blk01261.txt blk01262.txt blk01263.txt blk01264.txt blk01265.txt blk01266.txt blk01267.txt blk01268.txt blk01269.txt blk01270.txt blk01271.txt blk01272.txt blk01273.txt blk01274.txt blk01275.txt blk01276.txt blk01277.txt blk01278.txt blk01279.txt blk01280.txt blk01281.txt blk01282.txt blk01283.txt blk01284.txt blk01285.txt blk01286.txt blk01287.txt blk01288.txt blk01289.txt blk01290.txt blk01291.txt blk01292.txt blk01293.txt blk01294.txt blk01295.txt blk01296.txt blk01297.txt blk01298.txt blk01299.txt blk01300.txt blk01301.txt blk01302.txt blk01303.txt blk01304.txt blk01305.txt blk01306.txt blk01307.txt blk01308.txt blk01309.txt blk01310.txt blk01311.txt blk01312.txt blk01313.txt blk01314.txt blk01315.txt blk01316.txt blk01317.txt blk01318.txt blk01319.txt blk01320.txt blk01321.txt blk01322.txt blk01323.txt blk01324.txt blk01325.txt blk01326.txt blk01327.txt blk01328.txt blk01329.txt blk01330.txt blk01331.txt blk01332.txt blk01333.txt blk01334.txt blk01335.txt blk01336.txt blk01337.txt blk01338.txt blk01339.txt blk01340.txt blk01341.txt blk01342.txt blk01343.txt blk01344.txt blk01345.txt blk01346.txt blk01347.txt blk01348.txt blk01349.txt blk01350.txt blk01351.txt blk01352.txt blk01353.txt blk01354.txt blk01355.txt blk01356.txt blk01357.txt blk01358.txt blk01359.txt blk01360.txt blk01361.txt blk01362.txt blk01363.txt blk01364.txt blk01365.txt blk01366.txt blk01367.txt blk01368.txt blk01369.txt blk01370.txt blk01371.txt blk01372.txt blk01373.txt blk01374.txt blk01375.txt blk01376.txt blk01377.txt blk01378.txt blk01379.txt blk01380.txt blk01381.txt blk01382.txt blk01383.txt blk01384.txt blk01385.txt blk01386.txt blk01387.txt blk01388.txt blk01389.txt blk01390.txt blk01391.txt blk01392.txt blk01393.txt blk01394.txt blk01395.txt blk01396.txt blk01397.txt blk01398.txt blk01399.txt blk01400.txt blk01401.txt blk01402.txt blk01403.txt blk01404.txt blk01405.txt blk01406.txt blk01407.txt blk01408.txt blk01409.txt blk01410.txt blk01411.txt blk01412.txt blk01413.txt blk01414.txt blk01415.txt blk01416.txt blk01417.txt blk01418.txt blk01419.txt blk01420.txt blk01421.txt blk01422.txt blk01423.txt blk01424.txt blk01425.txt blk01426.txt blk01427.txt blk01428.txt blk01429.txt blk01430.txt blk01431.txt blk01432.txt blk01433.txt blk01434.txt blk01435.txt blk01436.txt blk01437.txt blk01438.txt blk01439.txt blk01440.txt blk01441.txt blk01442.txt blk01443.txt blk01444.txt blk01445.txt blk01446.txt blk01447.txt blk01448.txt blk01449.txt blk01450.txt blk01451.txt blk01452.txt blk01453.txt blk01454.txt blk01455.txt blk01456.txt blk01457.txt blk01458.txt blk01459.txt blk01460.txt blk01461.txt blk01462.txt blk01463.txt blk01464.txt blk01465.txt blk01466.txt blk01467.txt blk01468.txt blk01469.txt blk01470.txt blk01471.txt blk01472.txt blk01473.txt blk01474.txt blk01475.txt blk01476.txt blk01477.txt blk01478.txt blk01479.txt blk01480.txt blk01481.txt blk01482.txt blk01483.txt blk01484.txt blk01485.txt blk01486.txt blk01487.txt blk01488.txt blk01489.txt blk01490.txt blk01491.txt blk01492.txt blk01493.txt blk01494.txt blk01495.txt blk01496.txt blk01497.txt blk01498.txt blk01499.txt blk01500.txt blk01501.txt blk01502.txt blk01503.txt blk01504.txt blk01505.txt blk01506.txt blk01507.txt blk01508.txt blk01509.txt blk01510.txt blk01511.txt blk01512.txt blk01513.txt blk01514.txt blk01515.txt blk01516.txt blk01517.txt blk01518.txt blk01519.txt blk01520.txt blk01521.txt blk01522.txt blk01523.txt blk01524.txt blk01525.txt blk01526.txt blk01527.txt blk01528.txt blk01529.txt blk01530.txt blk01531.txt blk01532.txt blk01533.txt blk01534.txt blk01535.txt blk01536.txt blk01537.txt blk01538.txt blk01539.txt blk01540.txt blk01541.txt blk01542.txt blk01543.txt blk01544.txt blk01545.txt blk01546.txt blk01547.txt blk01548.txt blk01549.txt blk01550.txt blk01551.txt blk01552.txt blk01553.txt blk01554.txt blk01555.txt blk01556.txt blk01557.txt blk01558.txt blk01559.txt blk01560.txt blk01561.txt blk01562.txt blk01563.txt blk01564.txt blk01565.txt blk01566.txt blk01567.txt blk01568.txt blk01569.txt blk01570.txt blk01571.txt blk01572.txt blk01573.txt blk01574.txt blk01575.txt blk01576.txt blk01577.txt blk01578.txt blk01579.txt blk01580.txt blk01581.txt blk01582.txt blk01583.txt blk01584.txt blk01585.txt blk01586.txt blk01587.txt blk01588.txt blk01589.txt blk01590.txt blk01591.txt blk01592.txt blk01593.txt blk01594.txt blk01595.txt blk01596.txt blk01597.txt blk01598.txt blk01599.txt blk01600.txt blk01601.txt blk01602.txt blk01603.txt blk01604.txt blk01605.txt blk01606.txt blk01607.txt blk01608.txt blk01609.txt blk01610.txt blk01611.txt blk01612.txt blk01613.txt blk01614.txt blk01615.txt blk01616.txt blk01617.txt blk01618.txt blk01619.txt blk01620.txt blk01621.txt blk01622.txt blk01623.txt blk01624.txt blk01625.txt blk01626.txt blk01627.txt blk01628.txt blk01629.txt blk01630.txt blk01631.txt blk01632.txt blk01633.txt blk01634.txt blk01635.txt blk01636.txt blk01637.txt blk01638.txt blk01639.txt blk01640.txt blk01641.txt blk01642.txt blk01643.txt blk01644.txt blk01645.txt blk01646.txt blk01647.txt blk01648.txt blk01649.txt blk01650.txt blk01651.txt blk01652.txt blk01653.txt blk01654.txt blk01655.txt blk01656.txt blk01657.txt blk01658.txt blk01659.txt blk01660.txt blk01661.txt blk01662.txt blk01663.txt blk01664.txt blk01665.txt blk01666.txt blk01667.txt blk01668.txt blk01669.txt blk01670.txt blk01671.txt blk01672.txt blk01673.txt blk01674.txt blk01675.txt blk01676.txt blk01677.txt blk01678.txt blk01679.txt blk01680.txt blk01681.txt blk01682.txt blk01683.txt blk01684.txt blk01685.txt blk01686.txt blk01687.txt blk01688.txt blk01689.txt blk01690.txt blk01691.txt blk01692.txt blk01693.txt blk01694.txt blk01695.txt blk01696.txt blk01697.txt blk01698.txt blk01699.txt blk01700.txt blk01701.txt blk01702.txt blk01703.txt blk01704.txt blk01705.txt blk01706.txt blk01707.txt blk01708.txt blk01709.txt blk01710.txt blk01711.txt blk01712.txt blk01713.txt blk01714.txt blk01715.txt blk01716.txt blk01717.txt blk01718.txt blk01719.txt blk01720.txt blk01721.txt blk01722.txt blk01723.txt blk01724.txt blk01725.txt blk01726.txt blk01727.txt blk01728.txt blk01729.txt blk01730.txt blk01731.txt blk01732.txt blk01733.txt blk01734.txt blk01735.txt blk01736.txt blk01737.txt blk01738.txt blk01739.txt blk01740.txt blk01741.txt blk01742.txt blk01743.txt blk01744.txt blk01745.txt blk01746.txt blk01747.txt blk01748.txt blk01749.txt blk01750.txt blk01751.txt blk01752.txt blk01753.txt blk01754.txt blk01755.txt blk01756.txt blk01757.txt blk01758.txt blk01759.txt blk01760.txt blk01761.txt blk01762.txt blk01763.txt blk01764.txt blk01765.txt blk01766.txt blk01767.txt blk01768.txt blk01769.txt blk01770.txt blk01771.txt blk01772.txt blk01773.txt blk01774.txt blk01775.txt blk01776.txt blk01777.txt blk01778.txt blk01779.txt blk01780.txt blk01781.txt blk01782.txt blk01783.txt blk01784.txt blk01785.txt blk01786.txt blk01787.txt blk01788.txt blk01789.txt blk01790.txt blk01791.txt blk01792.txt blk01793.txt blk01794.txt blk01795.txt blk01796.txt blk01797.txt blk01798.txt blk01799.txt blk01800.txt blk01801.txt blk01802.txt blk01803.txt blk01804.txt blk01805.txt blk01806.txt blk01807.txt blk01808.txt blk01809.txt blk01810.txt blk01811.txt blk01812.txt blk01813.txt blk01814.txt blk01815.txt blk01816.txt blk01817.txt blk01818.txt blk01819.txt blk01820.txt blk01821.txt blk01822.txt blk01823.txt blk01824.txt blk01825.txt blk01826.txt blk01827.txt blk01828.txt blk01829.txt blk01830.txt blk01831.txt blk01832.txt blk01833.txt blk01834.txt blk01835.txt blk01836.txt blk01837.txt blk01838.txt blk01839.txt blk01840.txt blk01841.txt blk01842.txt blk01843.txt blk01844.txt blk01845.txt blk01846.txt blk01847.txt blk01848.txt blk01849.txt blk01850.txt blk01851.txt blk01852.txt blk01853.txt blk01854.txt blk01855.txt blk01856.txt blk01857.txt blk01858.txt blk01859.txt blk01860.txt blk01861.txt blk01862.txt blk01863.txt blk01864.txt blk01865.txt blk01866.txt blk01867.txt blk01868.txt blk01869.txt blk01870.txt blk01871.txt blk01872.txt blk01873.txt blk01874.txt blk01875.txt blk01876.txt blk01877.txt blk01878.txt blk01879.txt blk01880.txt blk01881.txt blk01882.txt blk01883.txt blk01884.txt blk01885.txt blk01886.txt blk01887.txt blk01888.txt blk01889.txt blk01890.txt blk01891.txt blk01892.txt blk01893.txt blk01894.txt blk01895.txt blk01896.txt blk01897.txt blk01898.txt blk01899.txt blk01900.txt blk01901.txt blk01902.txt blk01903.txt blk01904.txt blk01905.txt blk01906.txt blk01907.txt blk01908.txt blk01909.txt blk01910.txt blk01911.txt blk01912.txt blk01913.txt blk01914.txt blk01915.txt blk01916.txt blk01917.txt blk01918.txt blk01919.txt blk01920.txt blk01921.txt blk01922.txt blk01923.txt blk01924.txt blk01925.txt blk01926.txt blk01927.txt blk01928.txt blk01929.txt blk01930.txt blk01931.txt blk01932.txt blk01933.txt blk01934.txt blk01935.txt blk01936.txt blk01937.txt blk01938.txt blk01939.txt blk01940.txt blk01941.txt blk01942.txt blk01943.txt blk01944.txt blk01945.txt blk01946.txt blk01947.txt blk01948.txt blk01949.txt blk01950.txt blk01951.txt blk01952.txt blk01953.txt blk01954.txt blk01955.txt blk01956.txt blk01957.txt blk01958.txt blk01959.txt blk01960.txt blk01961.txt blk01962.txt blk01963.txt blk01964.txt blk01965.txt blk01966.txt blk01967.txt blk01968.txt blk01969.txt blk01970.txt blk01971.txt blk01972.txt blk01973.txt blk01974.txt blk01975.txt blk01976.txt blk01977.txt blk01978.txt blk01979.txt blk01980.txt blk01981.txt blk01982.txt blk01983.txt blk01984.txt blk01985.txt blk01986.txt blk01987.txt blk01988.txt blk01989.txt blk01990.txt blk01991.txt blk01992.txt blk01993.txt blk01994.txt blk01995.txt blk01996.txt blk01997.txt blk01998.txt blk01999.txt blk02000.txt blk02001.txt blk02002.txt blk02003.txt blk02004.txt blk02005.txt blk02006.txt blk02007.txt blk02008.txt blk02009.txt blk02010.txt blk02011.txt blk02012.txt blk02013.txt blk02014.txt blk02015.txt blk02016.txt blk02017.txt blk02018.txt blk02019.txt blk02020.txt blk02021.txt blk02022.txt blk02023.txt blk02024.txt blk02025.txt blk02026.txt blk02027.txt blk02028.txt blk02029.txt blk02030.txt blk02031.txt blk02032.txt blk02033.txt blk02034.txt blk02035.txt blk02036.txt blk02037.txt blk02038.txt blk02039.txt blk02040.txt blk02041.txt blk02042.txt blk02043.txt blk02044.txt blk02045.txt blk02046.txt blk02047.txt blk02048.txt blk02049.txt blk02050.txt blk02051.txt blk02052.txt blk02053.txt blk02054.txt blk02055.txt blk02056.txt blk02057.txt blk02058.txt blk02059.txt blk02060.txt blk02061.txt blk02062.txt blk02063.txt blk02064.txt blk02065.txt blk02066.txt blk02067.txt blk02068.txt blk02069.txt blk02070.txt blk02071.txt blk02072.txt blk02073.txt blk02074.txt blk02075.txt blk02076.txt blk02077.txt blk02078.txt blk02079.txt blk02080.txt blk02081.txt blk02082.txt blk02083.txt blk02084.txt blk02085.txt blk02086.txt blk02087.txt blk02088.txt blk02089.txt blk02090.txt blk02091.txt blk02092.txt blk02093.txt blk02094.txt blk02095.txt blk02096.txt blk02097.txt blk02098.txt blk02099.txt blk02100.txt blk02101.txt blk02102.txt blk02103.txt blk02104.txt blk02105.txt blk02106.txt blk02107.txt blk02108.txt blk02109.txt blk02110.txt blk02111.txt blk02112.txt blk02113.txt blk02114.txt blk02115.txt blk02116.txt blk02117.txt blk02118.txt blk02119.txt blk02120.txt blk02121.txt blk02122.txt blk02123.txt blk02124.txt blk02125.txt blk02126.txt blk02127.txt blk02128.txt blk02129.txt blk02130.txt blk02131.txt blk02132.txt blk02133.txt blk02134.txt blk02135.txt blk02136.txt blk02137.txt blk02138.txt blk02139.txt blk02140.txt blk02141.txt blk02142.txt blk02143.txt blk02144.txt blk02145.txt blk02146.txt blk02147.txt blk02148.txt blk02149.txt blk02150.txt blk02151.txt blk02152.txt blk02153.txt blk02154.txt blk02155.txt blk02156.txt blk02157.txt blk02158.txt blk02159.txt blk02160.txt blk02161.txt blk02162.txt blk02163.txt blk02164.txt blk02165.txt blk02166.txt blk02167.txt blk02168.txt blk02169.txt blk02170.txt blk02171.txt blk02172.txt blk02173.txt blk02174.txt blk02175.txt blk02176.txt blk02177.txt blk02178.txt blk02179.txt blk02180.txt blk02181.txt blk02182.txt blk02183.txt blk02184.txt blk02185.txt blk02186.txt blk02187.txt blk02188.txt blk02189.txt blk02190.txt blk02191.txt blk02192.txt blk02193.txt blk02194.txt blk02195.txt blk02196.txt blk02197.txt blk02198.txt blk02199.txt blk02200.txt blk02201.txt blk02202.txt blk02203.txt blk02204.txt blk02205.txt blk02206.txt blk02207.txt blk02208.txt blk02209.txt blk02210.txt blk02211.txt blk02212.txt blk02213.txt blk02214.txt blk02215.txt blk02216.txt blk02217.txt blk02218.txt blk02219.txt blk02220.txt blk02221.txt blk02222.txt blk02223.txt blk02224.txt blk02225.txt blk02226.txt blk02227.txt blk02228.txt blk02229.txt blk02230.txt blk02231.txt blk02232.txt blk02233.txt blk02234.txt blk02235.txt blk02236.txt blk02237.txt blk02238.txt blk02239.txt blk02240.txt blk02241.txt blk02242.txt blk02243.txt blk02244.txt blk02245.txt blk02246.txt blk02247.txt blk02248.txt blk02249.txt blk02250.txt blk02251.txt blk02252.txt blk02253.txt blk02254.txt blk02255.txt blk02256.txt blk02257.txt blk02258.txt blk02259.txt blk02260.txt blk02261.txt blk02262.txt blk02263.txt blk02264.txt blk02265.txt blk02266.txt blk02267.txt blk02268.txt blk02269.txt blk02270.txt blk02271.txt blk02272.txt blk02273.txt blk02274.txt blk02275.txt blk02276.txt blk02277.txt blk02278.txt blk02279.txt blk02280.txt blk02281.txt blk02282.txt blk02283.txt blk02284.txt blk02285.txt blk02286.txt blk02287.txt blk02288.txt blk02289.txt blk02290.txt blk02291.txt blk02292.txt blk02293.txt blk02294.txt blk02295.txt blk02296.txt blk02297.txt blk02298.txt blk02299.txt blk02300.txt blk02301.txt blk02302.txt blk02303.txt blk02304.txt blk02305.txt blk02306.txt blk02307.txt blk02308.txt blk02309.txt blk02310.txt blk02311.txt blk02312.txt blk02313.txt blk02314.txt blk02315.txt blk02316.txt blk02317.txt blk02318.txt blk02319.txt blk02320.txt blk02321.txt blk02322.txt blk02323.txt blk02324.txt blk02325.txt blk02326.txt blk02327.txt blk02328.txt blk02329.txt blk02330.txt blk02331.txt blk02332.txt blk02333.txt blk02334.txt blk02335.txt blk02336.txt blk02337.txt blk02338.txt blk02339.txt blk02340.txt blk02341.txt blk02342.txt blk02343.txt blk02344.txt blk02345.txt blk02346.txt blk02347.txt blk02348.txt blk02349.txt blk02350.txt blk02351.txt blk02352.txt blk02353.txt blk02354.txt blk02355.txt blk02356.txt blk02357.txt blk02358.txt blk02359.txt blk02360.txt blk02361.txt blk02362.txt blk02363.txt blk02364.txt blk02365.txt blk02366.txt blk02367.txt blk02368.txt blk02369.txt blk02370.txt blk02371.txt blk02372.txt blk02373.txt blk02374.txt blk02375.txt blk02376.txt blk02377.txt blk02378.txt blk02379.txt blk02380.txt blk02381.txt blk02382.txt blk02383.txt blk02384.txt blk02385.txt blk02386.txt blk02387.txt blk02388.txt blk02389.txt blk02390.txt blk02391.txt blk02392.txt blk02393.txt blk02394.txt blk02395.txt blk02396.txt blk02397.txt blk02398.txt blk02399.txt blk02400.txt blk02401.txt blk02402.txt blk02403.txt blk02404.txt blk02405.txt blk02406.txt blk02407.txt blk02408.txt blk02409.txt blk02410.txt blk02411.txt blk02412.txt blk02413.txt blk02414.txt blk02415.txt blk02416.txt blk02417.txt blk02418.txt blk02419.txt blk02420.txt blk02421.txt blk02422.txt blk02423.txt blk02424.txt blk02425.txt blk02426.txt blk02427.txt blk02428.txt blk02429.txt blk02430.txt blk02431.txt blk02432.txt blk02433.txt blk02434.txt blk02435.txt blk02436.txt blk02437.txt blk02438.txt blk02439.txt blk02440.txt blk02441.txt blk02442.txt blk02443.txt blk02444.txt blk02445.txt blk02446.txt blk02447.txt blk02448.txt blk02449.txt blk02450.txt blk02451.txt blk02452.txt blk02453.txt blk02454.txt blk02455.txt blk02456.txt blk02457.txt blk02458.txt blk02459.txt blk02460.txt blk02461.txt blk02462.txt blk02463.txt blk02464.txt blk02465.txt blk02466.txt blk02467.txt blk02468.txt blk02469.txt blk02470.txt blk02471.txt blk02472.txt blk02473.txt blk02474.txt blk02475.txt blk02476.txt blk02477.txt blk02478.txt blk02479.txt blk02480.txt blk02481.txt blk02482.txt blk02483.txt blk02484.txt blk02485.txt blk02486.txt blk02487.txt blk02488.txt blk02489.txt blk02490.txt blk02491.txt blk02492.txt blk02493.txt blk02494.txt blk02495.txt blk02496.txt blk02497.txt blk02498.txt blk02499.txt blk02500.txt blk02501.txt blk02502.txt blk02503.txt blk02504.txt blk02505.txt blk02506.txt blk02507.txt blk02508.txt blk02509.txt blk02510.txt blk02511.txt blk02512.txt blk02513.txt blk02514.txt blk02515.txt blk02516.txt blk02517.txt blk02518.txt blk02519.txt blk02520.txt blk02521.txt blk02522.txt blk02523.txt blk02524.txt blk02525.txt blk02526.txt blk02527.txt blk02528.txt blk02529.txt blk02530.txt blk02531.txt blk02532.txt blk02533.txt blk02534.txt blk02535.txt blk02536.txt blk02537.txt blk02538.txt blk02539.txt blk02540.txt blk02541.txt blk02542.txt blk02543.txt blk02544.txt blk02545.txt blk02546.txt blk02547.txt blk02548.txt blk02549.txt blk02550.txt blk02551.txt blk02552.txt blk02553.txt blk02554.txt blk02555.txt blk02556.txt blk02557.txt blk02558.txt blk02559.txt blk02560.txt blk02561.txt blk02562.txt blk02563.txt blk02564.txt blk02565.txt blk02566.txt blk02567.txt blk02568.txt blk02569.txt blk02570.txt blk02571.txt blk02572.txt blk02573.txt blk02574.txt blk02575.txt blk02576.txt blk02577.txt blk02578.txt blk02579.txt blk02580.txt blk02581.txt blk02582.txt blk02583.txt blk02584.txt blk02585.txt blk02586.txt blk02587.txt blk02588.txt blk02589.txt blk02590.txt blk02591.txt blk02592.txt blk02593.txt blk02594.txt blk02595.txt blk02596.txt blk02597.txt blk02598.txt blk02599.txt blk02600.txt blk02601.txt blk02602.txt blk02603.txt blk02604.txt blk02605.txt blk02606.txt blk02607.txt blk02608.txt blk02609.txt blk02610.txt blk02611.txt blk02612.txt blk02613.txt blk02614.txt blk02615.txt blk02616.txt blk02617.txt blk02618.txt blk02619.txt blk02620.txt blk02621.txt blk02622.txt blk02623.txt blk02624.txt blk02625.txt blk02626.txt blk02627.txt blk02628.txt blk02629.txt blk02630.txt blk02631.txt blk02632.txt blk02633.txt blk02634.txt blk02635.txt blk02636.txt blk02637.txt blk02638.txt blk02639.txt blk02640.txt blk02641.txt blk02642.txt blk02643.txt blk02644.txt blk02645.txt blk02646.txt blk02647.txt blk02648.txt blk02649.txt blk02650.txt blk02651.txt blk02652.txt blk02653.txt blk02654.txt blk02655.txt blk02656.txt blk02657.txt blk02658.txt blk02659.txt blk02660.txt blk02661.txt blk02662.txt blk02663.txt blk02664.txt blk02665.txt blk02666.txt blk02667.txt blk02668.txt blk02669.txt blk02670.txt blk02671.txt blk02672.txt blk02673.txt blk02674.txt blk02675.txt blk02676.txt blk02677.txt blk02678.txt blk02679.txt blk02680.txt blk02681.txt blk02682.txt blk02683.txt blk02684.txt blk02685.txt blk02686.txt blk02687.txt blk02688.txt blk02689.txt blk02690.txt blk02691.txt blk02692.txt blk02693.txt blk02694.txt blk02695.txt blk02696.txt blk02697.txt blk02698.txt blk02699.txt blk02700.txt blk02701.txt blk02702.txt blk02703.txt blk02704.txt blk02705.txt blk02706.txt blk02707.txt blk02708.txt blk02709.txt blk02710.txt blk02711.txt blk02712.txt blk02713.txt blk02714.txt blk02715.txt blk02716.txt blk02717.txt blk02718.txt blk02719.txt blk02720.txt blk02721.txt blk02722.txt blk02723.txt blk02724.txt blk02725.txt blk02726.txt blk02727.txt blk02728.txt blk02729.txt blk02730.txt blk02731.txt blk02732.txt blk02733.txt blk02734.txt blk02735.txt blk02736.txt blk02737.txt blk02738.txt blk02739.txt blk02740.txt blk02741.txt blk02742.txt blk02743.txt blk02744.txt blk02745.txt blk02746.txt blk02747.txt blk02748.txt blk02749.txt blk02750.txt blk02751.txt blk02752.txt blk02753.txt blk02754.txt blk02755.txt blk02756.txt blk02757.txt blk02758.txt blk02759.txt blk02760.txt blk02761.txt blk02762.txt blk02763.txt blk02764.txt blk02765.txt blk02766.txt blk02767.txt blk02768.txt blk02769.txt blk02770.txt blk02771.txt blk02772.txt blk02773.txt blk02774.txt blk02775.txt blk02776.txt blk02777.txt blk02778.txt blk02779.txt blk02780.txt blk02781.txt blk02782.txt blk02783.txt blk02784.txt blk02785.txt blk02786.txt blk02787.txt blk02788.txt blk02789.txt blk02790.txt blk02791.txt blk02792.txt blk02793.txt blk02794.txt blk02795.txt blk02796.txt blk02797.txt blk02798.txt blk02799.txt blk02800.txt blk02801.txt blk02802.txt blk02803.txt blk02804.txt blk02805.txt blk02806.txt blk02807.txt blk02808.txt blk02809.txt blk02810.txt blk02811.txt blk02812.txt blk02813.txt blk02814.txt blk02815.txt blk02816.txt blk02817.txt blk02818.txt blk02819.txt blk02820.txt blk02821.txt blk02822.txt blk02823.txt blk02824.txt blk02825.txt blk02826.txt blk02827.txt blk02828.txt blk02829.txt blk02830.txt blk02831.txt blk02832.txt blk02833.txt blk02834.txt blk02835.txt blk02836.txt blk02837.txt blk02838.txt blk02839.txt blk02840.txt blk02841.txt blk02842.txt blk02843.txt blk02844.txt blk02845.txt blk02846.txt blk02847.txt blk02848.txt blk02849.txt blk02850.txt blk02851.txt blk02852.txt blk02853.txt blk02854.txt blk02855.txt blk02856.txt blk02857.txt blk02858.txt blk02859.txt blk02860.txt blk02861.txt blk02862.txt blk02863.txt blk02864.txt blk02865.txt blk02866.txt blk02867.txt blk02868.txt blk02869.txt blk02870.txt blk02871.txt blk02872.txt blk02873.txt blk02874.txt blk02875.txt blk02876.txt blk02877.txt blk02878.txt blk02879.txt blk02880.txt blk02881.txt blk02882.txt blk02883.txt blk02884.txt blk02885.txt blk02886.txt blk02887.txt blk02888.txt blk02889.txt blk02890.txt blk02891.txt blk02892.txt blk02893.txt blk02894.txt blk02895.txt blk02896.txt blk02897.txt blk02898.txt blk02899.txt blk02900.txt blk02901.txt blk02902.txt blk02903.txt blk02904.txt blk02905.txt blk02906.txt blk02907.txt blk02908.txt blk02909.txt blk02910.txt blk02911.txt blk02912.txt blk02913.txt blk02914.txt blk02915.txt blk02916.txt blk02917.txt blk02918.txt blk02919.txt blk02920.txt blk02921.txt blk02922.txt blk02923.txt blk02924.txt blk02925.txt blk02926.txt blk02927.txt blk02928.txt blk02929.txt blk02930.txt blk02931.txt blk02932.txt blk02933.txt blk02934.txt blk02935.txt blk02936.txt blk02937.txt blk02938.txt blk02939.txt blk02940.txt blk02941.txt blk02942.txt blk02943.txt blk02944.txt blk02945.txt blk02946.txt blk02947.txt blk02948.txt blk02949.txt blk02950.txt blk02951.txt blk02952.txt blk02953.txt blk02954.txt blk02955.txt blk02956.txt blk02957.txt blk02958.txt blk02959.txt blk02960.txt blk02961.txt blk02962.txt blk02963.txt blk02964.txt blk02965.txt blk02966.txt blk02967.txt blk02968.txt blk02969.txt blk02970.txt blk02971.txt blk02972.txt blk02973.txt blk02974.txt blk02975.txt blk02976.txt blk02977.txt blk02978.txt blk02979.txt blk02980.txt blk02981.txt blk02982.txt blk02983.txt blk02984.txt blk02985.txt blk02986.txt blk02987.txt blk02988.txt blk02989.txt blk02990.txt blk02991.txt blk02992.txt blk02993.txt blk02994.txt blk02995.txt blk02996.txt blk02997.txt blk02998.txt blk02999.txt blk03000.txt blk03001.txt blk03002.txt blk03003.txt blk03004.txt blk03005.txt blk03006.txt blk03007.txt blk03008.txt blk03009.txt blk03010.txt blk03011.txt blk03012.txt blk03013.txt blk03014.txt blk03015.txt blk03016.txt blk03017.txt blk03018.txt blk03019.txt blk03020.txt blk03021.txt blk03022.txt blk03023.txt blk03024.txt blk03025.txt blk03026.txt blk03027.txt blk03028.txt blk03029.txt blk03030.txt blk03031.txt blk03032.txt blk03033.txt blk03034.txt blk03035.txt blk03036.txt blk03037.txt blk03038.txt blk03039.txt blk03040.txt blk03041.txt blk03042.txt blk03043.txt blk03044.txt blk03045.txt blk03046.txt blk03047.txt blk03048.txt blk03049.txt blk03050.txt blk03051.txt blk03052.txt blk03053.txt blk03054.txt blk03055.txt blk03056.txt blk03057.txt blk03058.txt blk03059.txt blk03060.txt blk03061.txt blk03062.txt blk03063.txt blk03064.txt blk03065.txt blk03066.txt blk03067.txt blk03068.txt blk03069.txt blk03070.txt blk03071.txt blk03072.txt blk03073.txt blk03074.txt blk03075.txt blk03076.txt blk03077.txt blk03078.txt blk03079.txt blk03080.txt blk03081.txt blk03082.txt blk03083.txt blk03084.txt blk03085.txt blk03086.txt blk03087.txt blk03088.txt blk03089.txt blk03090.txt blk03091.txt blk03092.txt blk03093.txt blk03094.txt blk03095.txt blk03096.txt blk03097.txt blk03098.txt blk03099.txt blk03100.txt blk03101.txt blk03102.txt blk03103.txt blk03104.txt blk03105.txt blk03106.txt blk03107.txt blk03108.txt blk03109.txt blk03110.txt blk03111.txt blk03112.txt blk03113.txt blk03114.txt blk03115.txt blk03116.txt blk03117.txt blk03118.txt blk03119.txt blk03120.txt blk03121.txt blk03122.txt blk03123.txt blk03124.txt blk03125.txt blk03126.txt blk03127.txt blk03128.txt blk03129.txt blk03130.txt blk03131.txt blk03132.txt blk03133.txt blk03134.txt blk03135.txt blk03136.txt blk03137.txt blk03138.txt blk03139.txt blk03140.txt blk03141.txt blk03142.txt blk03143.txt blk03144.txt blk03145.txt blk03146.txt blk03147.txt blk03148.txt blk03149.txt blk03150.txt blk03151.txt blk03152.txt blk03153.txt blk03154.txt blk03155.txt blk03156.txt blk03157.txt blk03158.txt blk03159.txt blk03160.txt blk03161.txt blk03162.txt blk03163.txt blk03164.txt blk03165.txt blk03166.txt blk03167.txt blk03168.txt blk03169.txt blk03170.txt blk03171.txt blk03172.txt blk03173.txt blk03174.txt blk03175.txt blk03176.txt blk03177.txt blk03178.txt blk03179.txt blk03180.txt blk03181.txt blk03182.txt blk03183.txt blk03184.txt blk03185.txt blk03186.txt blk03187.txt blk03188.txt blk03189.txt blk03190.txt blk03191.txt blk03192.txt blk03193.txt blk03194.txt blk03195.txt blk03196.txt blk03197.txt blk03198.txt blk03199.txt blk03200.txt blk03201.txt blk03202.txt blk03203.txt blk03204.txt blk03205.txt blk03206.txt blk03207.txt blk03208.txt blk03209.txt blk03210.txt blk03211.txt blk03212.txt blk03213.txt blk03214.txt blk03215.txt blk03216.txt blk03217.txt blk03218.txt blk03219.txt blk03220.txt blk03221.txt blk03222.txt blk03223.txt blk03224.txt blk03225.txt blk03226.txt blk03227.txt blk03228.txt blk03229.txt blk03230.txt blk03231.txt blk03232.txt blk03233.txt blk03234.txt blk03235.txt blk03236.txt blk03237.txt blk03238.txt blk03239.txt blk03240.txt blk03241.txt blk03242.txt blk03243.txt blk03244.txt blk03245.txt blk03246.txt blk03247.txt blk03248.txt blk03249.txt blk03250.txt blk03251.txt blk03252.txt blk03253.txt blk03254.txt blk03255.txt blk03256.txt blk03257.txt blk03258.txt blk03259.txt blk03260.txt blk03261.txt blk03262.txt blk03263.txt blk03264.txt blk03265.txt blk03266.txt blk03267.txt blk03268.txt blk03269.txt blk03270.txt blk03271.txt blk03272.txt blk03273.txt blk03274.txt blk03275.txt blk03276.txt blk03277.txt blk03278.txt blk03279.txt blk03280.txt blk03281.txt blk03282.txt blk03283.txt blk03284.txt blk03285.txt blk03286.txt blk03287.txt blk03288.txt blk03289.txt blk03290.txt blk03291.txt blk03292.txt blk03293.txt blk03294.txt blk03295.txt blk03296.txt blk03297.txt blk03298.txt blk03299.txt blk03300.txt blk03301.txt blk03302.txt blk03303.txt blk03304.txt blk03305.txt blk03306.txt blk03307.txt blk03308.txt blk03309.txt blk03310.txt blk03311.txt blk03312.txt blk03313.txt blk03314.txt blk03315.txt blk03316.txt blk03317.txt blk03318.txt blk03319.txt blk03320.txt blk03321.txt blk03322.txt blk03323.txt blk03324.txt blk03325.txt blk03326.txt blk03327.txt blk03328.txt blk03329.txt blk03330.txt blk03331.txt blk03332.txt blk03333.txt blk03334.txt blk03335.txt blk03336.txt blk03337.txt blk03338.txt blk03339.txt blk03340.txt blk03341.txt blk03342.txt blk03343.txt blk03344.txt blk03345.txt blk03346.txt blk03347.txt blk03348.txt blk03349.txt blk03350.txt blk03351.txt blk03352.txt blk03353.txt blk03354.txt blk03355.txt blk03356.txt blk03357.txt blk03358.txt blk03359.txt blk03360.txt blk03361.txt blk03362.txt blk03363.txt blk03364.txt blk03365.txt blk03366.txt blk03367.txt blk03368.txt blk03369.txt blk03370.txt blk03371.txt blk03372.txt blk03373.txt blk03374.txt blk03375.txt blk03376.txt blk03377.txt blk03378.txt blk03379.txt blk03380.txt blk03381.txt blk03382.txt blk03383.txt blk03384.txt blk03385.txt blk03386.txt blk03387.txt blk03388.txt blk03389.txt blk03390.txt blk03391.txt blk03392.txt blk03393.txt blk03394.txt blk03395.txt blk03396.txt blk03397.txt blk03398.txt blk03399.txt blk03400.txt blk03401.txt blk03402.txt blk03403.txt blk03404.txt blk03405.txt blk03406.txt blk03407.txt blk03408.txt blk03409.txt blk03410.txt blk03411.txt blk03412.txt blk03413.txt blk03414.txt blk03415.txt blk03416.txt blk03417.txt blk03418.txt blk03419.txt blk03420.txt blk03421.txt blk03422.txt blk03423.txt blk03424.txt blk03425.txt blk03426.txt blk03427.txt blk03428.txt blk03429.txt blk03430.txt blk03431.txt blk03432.txt blk03433.txt blk03434.txt blk03435.txt blk03436.txt blk03437.txt blk03438.txt blk03439.txt blk03440.txt blk03441.txt blk03442.txt blk03443.txt blk03444.txt blk03445.txt blk03446.txt blk03447.txt blk03448.txt blk03449.txt blk03450.txt blk03451.txt blk03452.txt blk03453.txt blk03454.txt blk03455.txt blk03456.txt blk03457.txt blk03458.txt blk03459.txt blk03460.txt blk03461.txt blk03462.txt blk03463.txt blk03464.txt blk03465.txt blk03466.txt blk03467.txt blk03468.txt blk03469.txt blk03470.txt blk03471.txt blk03472.txt blk03473.txt blk03474.txt blk03475.txt blk03476.txt blk03477.txt blk03478.txt blk03479.txt blk03480.txt blk03481.txt blk03482.txt blk03483.txt blk03484.txt blk03485.txt blk03486.txt blk03487.txt blk03488.txt blk03489.txt blk03490.txt blk03491.txt blk03492.txt blk03493.txt blk03494.txt blk03495.txt blk03496.txt blk03497.txt blk03498.txt blk03499.txt blk03500.txt blk03501.txt blk03502.txt blk03503.txt blk03504.txt blk03505.txt blk03506.txt blk03507.txt blk03508.txt blk03509.txt blk03510.txt blk03511.txt blk03512.txt blk03513.txt blk03514.txt blk03515.txt blk03516.txt blk03517.txt blk03518.txt blk03519.txt blk03520.txt blk03521.txt blk03522.txt blk03523.txt blk03524.txt blk03525.txt blk03526.txt blk03527.txt blk03528.txt blk03529.txt blk03530.txt blk03531.txt blk03532.txt blk03533.txt blk03534.txt blk03535.txt blk03536.txt blk03537.txt blk03538.txt blk03539.txt blk03540.txt blk03541.txt blk03542.txt blk03543.txt blk03544.txt blk03545.txt blk03546.txt blk03547.txt blk03548.txt blk03549.txt blk03550.txt blk03551.txt blk03552.txt blk03553.txt blk03554.txt blk03555.txt blk03556.txt blk03557.txt blk03558.txt blk03559.txt blk03560.txt blk03561.txt blk03562.txt blk03563.txt blk03564.txt blk03565.txt blk03566.txt blk03567.txt blk03568.txt blk03569.txt blk03570.txt blk03571.txt blk03572.txt blk03573.txt blk03574.txt blk03575.txt blk03576.txt blk03577.txt blk03578.txt blk03579.txt blk03580.txt blk03581.txt blk03582.txt blk03583.txt blk03584.txt blk03585.txt blk03586.txt blk03587.txt blk03588.txt blk03589.txt blk03590.txt blk03591.txt blk03592.txt blk03593.txt blk03594.txt blk03595.txt blk03596.txt blk03597.txt blk03598.txt blk03599.txt blk03600.txt blk03601.txt blk03602.txt blk03603.txt blk03604.txt blk03605.txt blk03606.txt blk03607.txt blk03608.txt blk03609.txt blk03610.txt blk03611.txt blk03612.txt blk03613.txt blk03614.txt blk03615.txt blk03616.txt blk03617.txt blk03618.txt blk03619.txt blk03620.txt blk03621.txt blk03622.txt blk03623.txt blk03624.txt blk03625.txt blk03626.txt blk03627.txt blk03628.txt blk03629.txt blk03630.txt blk03631.txt blk03632.txt blk03633.txt blk03634.txt blk03635.txt blk03636.txt blk03637.txt blk03638.txt blk03639.txt blk03640.txt blk03641.txt blk03642.txt blk03643.txt blk03644.txt blk03645.txt blk03646.txt blk03647.txt blk03648.txt blk03649.txt blk03650.txt blk03651.txt blk03652.txt blk03653.txt blk03654.txt blk03655.txt blk03656.txt blk03657.txt blk03658.txt blk03659.txt blk03660.txt blk03661.txt blk03662.txt blk03663.txt blk03664.txt blk03665.txt blk03666.txt blk03667.txt blk03668.txt blk03669.txt blk03670.txt blk03671.txt blk03672.txt blk03673.txt blk03674.txt blk03675.txt blk03676.txt blk03677.txt blk03678.txt blk03679.txt blk03680.txt blk03681.txt blk03682.txt blk03683.txt blk03684.txt blk03685.txt blk03686.txt blk03687.txt blk03688.txt blk03689.txt blk03690.txt blk03691.txt blk03692.txt blk03693.txt blk03694.txt blk03695.txt blk03696.txt blk03697.txt blk03698.txt blk03699.txt blk03700.txt blk03701.txt blk03702.txt blk03703.txt blk03704.txt blk03705.txt blk03706.txt blk03707.txt blk03708.txt blk03709.txt blk03710.txt blk03711.txt blk03712.txt blk03713.txt blk03714.txt blk03715.txt blk03716.txt blk03717.txt blk03718.txt blk03719.txt blk03720.txt blk03721.txt blk03722.txt blk03723.txt blk03724.txt blk03725.txt blk03726.txt blk03727.txt blk03728.txt blk03729.txt blk03730.txt blk03731.txt blk03732.txt blk03733.txt blk03734.txt blk03735.txt blk03736.txt blk03737.txt blk03738.txt blk03739.txt blk03740.txt blk03741.txt blk03742.txt blk03743.txt blk03744.txt blk03745.txt blk03746.txt blk03747.txt blk03748.txt blk03749.txt blk03750.txt blk03751.txt blk03752.txt blk03753.txt blk03754.txt blk03755.txt blk03756.txt blk03757.txt blk03758.txt blk03759.txt blk03760.txt blk03761.txt blk03762.txt blk03763.txt blk03764.txt blk03765.txt blk03766.txt blk03767.txt blk03768.txt blk03769.txt blk03770.txt blk03771.txt blk03772.txt blk03773.txt blk03774.txt blk03775.txt blk03776.txt blk03777.txt blk03778.txt blk03779.txt blk03780.txt blk03781.txt blk03782.txt blk03783.txt blk03784.txt blk03785.txt blk03786.txt blk03787.txt blk03788.txt blk03789.txt blk03790.txt blk03791.txt blk03792.txt blk03793.txt blk03794.txt blk03795.txt blk03796.txt blk03797.txt blk03798.txt blk03799.txt blk03800.txt blk03801.txt blk03802.txt blk03803.txt blk03804.txt blk03805.txt blk03806.txt blk03807.txt blk03808.txt blk03809.txt blk03810.txt blk03811.txt blk03812.txt blk03813.txt blk03814.txt blk03815.txt blk03816.txt blk03817.txt blk03818.txt blk03819.txt blk03820.txt blk03821.txt blk03822.txt blk03823.txt blk03824.txt blk03825.txt blk03826.txt blk03827.txt blk03828.txt blk03829.txt blk03830.txt blk03831.txt blk03832.txt blk03833.txt blk03834.txt blk03835.txt blk03836.txt blk03837.txt blk03838.txt blk03839.txt blk03840.txt blk03841.txt blk03842.txt blk03843.txt blk03844.txt blk03845.txt blk03846.txt blk03847.txt blk03848.txt blk03849.txt blk03850.txt blk03851.txt blk03852.txt blk03853.txt blk03854.txt blk03855.txt blk03856.txt blk03857.txt blk03858.txt blk03859.txt blk03860.txt blk03861.txt blk03862.txt blk03863.txt blk03864.txt blk03865.txt blk03866.txt blk03867.txt blk03868.txt blk03869.txt blk03870.txt blk03871.txt blk03872.txt blk03873.txt blk03874.txt blk03875.txt blk03876.txt blk03877.txt blk03878.txt blk03879.txt blk03880.txt blk03881.txt blk03882.txt blk03883.txt blk03884.txt blk03885.txt blk03886.txt blk03887.txt blk03888.txt blk03889.txt blk03890.txt blk03891.txt blk03892.txt blk03893.txt blk03894.txt blk03895.txt blk03896.txt blk03897.txt blk03898.txt blk03899.txt blk03900.txt blk03901.txt blk03902.txt blk03903.txt blk03904.txt blk03905.txt blk03906.txt blk03907.txt blk03908.txt blk03909.txt blk03910.txt blk03911.txt blk03912.txt blk03913.txt blk03914.txt blk03915.txt blk03916.txt blk03917.txt blk03918.txt blk03919.txt blk03920.txt blk03921.txt blk03922.txt blk03923.txt blk03924.txt blk03925.txt blk03926.txt blk03927.txt blk03928.txt blk03929.txt blk03930.txt blk03931.txt blk03932.txt blk03933.txt blk03934.txt blk03935.txt blk03936.txt blk03937.txt blk03938.txt blk03939.txt blk03940.txt blk03941.txt blk03942.txt blk03943.txt blk03944.txt blk03945.txt blk03946.txt blk03947.txt blk03948.txt blk03949.txt blk03950.txt blk03951.txt blk03952.txt blk03953.txt blk03954.txt blk03955.txt blk03956.txt blk03957.txt blk03958.txt blk03959.txt blk03960.txt blk03961.txt blk03962.txt blk03963.txt blk03964.txt blk03965.txt blk03966.txt blk03967.txt blk03968.txt blk03969.txt blk03970.txt blk03971.txt blk03972.txt blk03973.txt blk03974.txt blk03975.txt blk03976.txt blk03977.txt blk03978.txt blk03979.txt blk03980.txt blk03981.txt blk03982.txt blk03983.txt blk03984.txt blk03985.txt blk03986.txt blk03987.txt blk03988.txt blk03989.txt blk03990.txt blk03991.txt blk03992.txt blk03993.txt blk03994.txt blk03995.txt blk03996.txt blk03997.txt blk03998.txt blk03999.txt blk04000.txt blk04001.txt blk04002.txt blk04003.txt blk04004.txt blk04005.txt blk04006.txt blk04007.txt blk04008.txt blk04009.txt blk04010.txt blk04011.txt blk04012.txt blk04013.txt blk04014.txt blk04015.txt blk04016.txt blk04017.txt blk04018.txt blk04019.txt blk04020.txt blk04021.txt blk04022.txt blk04023.txt blk04024.txt blk04025.txt blk04026.txt blk04027.txt blk04028.txt blk04029.txt blk04030.txt blk04031.txt blk04032.txt blk04033.txt blk04034.txt blk04035.txt blk04036.txt blk04037.txt blk04038.txt blk04039.txt blk04040.txt blk04041.txt blk04042.txt blk04043.txt blk04044.txt blk04045.txt blk04046.txt blk04047.txt blk04048.txt blk04049.txt blk04050.txt blk04051.txt blk04052.txt blk04053.txt blk04054.txt blk04055.txt blk04056.txt blk04057.txt blk04058.txt blk04059.txt blk04060.txt blk04061.txt blk04062.txt blk04063.txt blk04064.txt blk04065.txt blk04066.txt blk04067.txt blk04068.txt blk04069.txt blk04070.txt blk04071.txt blk04072.txt blk04073.txt blk04074.txt blk04075.txt blk04076.txt blk04077.txt blk04078.txt blk04079.txt blk04080.txt blk04081.txt blk04082.txt blk04083.txt blk04084.txt blk04085.txt blk04086.txt blk04087.txt blk04088.txt blk04089.txt blk04090.txt blk04091.txt blk04092.txt blk04093.txt blk04094.txt blk04095.txt blk04096.txt blk04097.txt blk04098.txt blk04099.txt blk04100.txt blk04101.txt blk04102.txt blk04103.txt blk04104.txt blk04105.txt blk04106.txt blk04107.txt blk04108.txt blk04109.txt blk04110.txt blk04111.txt blk04112.txt blk04113.txt blk04114.txt blk04115.txt blk04116.txt blk04117.txt blk04118.txt blk04119.txt blk04120.txt blk04121.txt blk04122.txt blk04123.txt blk04124.txt blk04125.txt blk04126.txt blk04127.txt blk04128.txt blk04129.txt blk04130.txt blk04131.txt blk04132.txt blk04133.txt blk04134.txt blk04135.txt blk04136.txt blk04137.txt blk04138.txt blk04139.txt blk04140.txt blk04141.txt blk04142.txt blk04143.txt blk04144.txt blk04145.txt blk04146.txt blk04147.txt blk04148.txt blk04149.txt blk04150.txt blk04151.txt blk04152.txt blk04153.txt blk04154.txt blk04155.txt blk04156.txt blk04157.txt blk04158.txt blk04159.txt blk04160.txt blk04161.txt blk04162.txt blk04163.txt blk04164.txt blk04165.txt blk04166.txt blk04167.txt blk04168.txt blk04169.txt blk04170.txt blk04171.txt blk04172.txt blk04173.txt blk04174.txt blk04175.txt blk04176.txt blk04177.txt Show all files
Advertisement: