0xc7d7…e9a1

All memos sent from and to 0xc7d7…e9a1.

Watching a DVD logo bounce around a tv, our inclination is to predict where it will go. There is a well-defined process of particle and boundary that makes this possible. But what if the particle and boundary were the same? If there was no distinction, if a point could reflect against its own history, if a ray could change its conditions as it experiences them? If light could interact with itself and countless others simultaneously in a fractalized infinity, shaped by time, giving structure to time itself—where might it end up?
=0;t<this.height/n;t++){let s={};s.i=e,s.j=t,s.polys=[],this.grid[e].push(s),this.allCells.push(s)}}this.allPolys=[]}add(e,t=void 0){if(null==t?this.allPolys.push(e):this.allPolys.push({p1:e,p2:t}),e.length)return void e.map((e=>this.add(e)));if(e.shape&&!t){for(let t=0;t<e.shape.length-1+e.closed;t++){let s=e.shape[t],a=e.shape[(t+1)%e.shape.length];this.getLineCells(s,a).map(((e,t)=>{e.polys.push({p1:s,p2:a})}))}return}let s=e;this.getLineCells(s,t).map(((e,a)=>{e.polys.push({p1:s,p2:t})}))}rayIntersect(e,t){(t=t.copy()).setMag(W+H),t=p5.Vector.add(e,t);let[s,a,n]=this.getLineCells(e,t,1),r=2,o=!1,i=[];for(let a of s){for(let s of a.polys){let n=this.rayToLineSegmentIntersection(e,t,s.p1,s.p2);n&&n.point.x>=a.i*this.gap&&n.point.x<=(a.i+1)*this.gap&&n.point.y>=a.j*this.gap&&n.point.y<=(a.j+1)*this.gap&&i.push(n)}if(i.length&&(o=!0),o&&--r<=0)break}i.sort(((e,t)=>e.t-t.t));let l=i[0];if(null!=l)return(e.x-l.point.x)**2+(e.y-l.point.y)**2>10*S&&i[0]}getLineCells(e,t,s=this.gap,a=this.gap,n=this.width,r=this.height){let o=0;1==s&&(o=1,s=this.gap);let i=e.x/s-.5,l=e.y/a-.5,p=t.x/s-.5,h=t.y/a-.5;const u=e=>Math.floor(e+.5);let g=[],d=Math.abs(h-l)>Math.abs(p-i);d&&([i,l]=[l,i],[p,h]=[h,p]),i>p&&([i,p]=[p,i],[l,h]=[h,l]);const m=p-i,c=0===m?1:(h-l)/m,f=(e,t)=>{d?g.push({x:t,y:e}):g.push({x:e,y:t})},y=u(i),x=l+c*(y-i),P=y,b=Math.floor(x);f(P,b),f(P,b+1);let v=x+c;const S=u(p),k=Math.floor(h+c*(S-p));for(let e=P+1;e<=S-1;e++)f(e,Math.floor(v)),f(e,Math.floor(v)+1),v+=c;f(S,k),f(S,k+1),e.x>=t.x&&g.reverse(),(d&&e.x>t.x&&e.y<t.y||d&&e.x<t.x&&e.y>t.y)&&g.reverse();let w=[];for(let e=0;e<g.length;e++){let t=g[e];t.x=Math.floor(t.x),t.y=Math.floor(t.y),t.x>=0&&t.y>=0&&t.x<this.grid.length&&t.y<this.grid[0].length&&w.push(this.grid[t.x][t.y])}return o?[w,e.x>t.x,d]:w}rayToLineSegmentIntersection(e,t,s,a){let n=t.x-e.x,r=t.y-e.y,o=a.x-s.x,i=a.y-s.y,l=i*n-o*r,p=o*(e.y-s.y)-i*(e.x-s.x),h=n*(e.y-s.y)-r*(e.x-s.x);if(0==l)return void 0;let u=p/l,g=h/l,d=1e-8;return u>=d&&g>=d&&g<=1-d?{point:createVector(e.x+u*n,e.y+u*r),t:u,dir:p5.Vector.sub(a,s)}:void 0}}function setupRandom(){R=new Random,randomSeed(R.random_int(0,1e16)),noiseSeed(R.random_int(0,1e16)),rnd=(e,t)=>e instanceof Array?R.random_choice(e):void 0===e?R.random_dec():void 0===t?R.random_num(0,e):R.random_num(e,t),rtri=(e,t,s)=>{let a=R.random_dec();return a<.5?map(a,0,.5,e,t):map(a,.5,1,t,s)},weightedPick=(e,t)=>{let s;for(s=0;s<t.length;s++)t[s]+=t[s-1]||0;var a=rnd()*t[t.length-1];for(s=0;s<t.length&&!(t[s]>=a);s++);return e[s]}}class Random{constructor(){this.useA=!1;let e=function(e){let t=parseInt(e.substr(0,8),16),s=parseInt(e.substr(8,8),16),a=parseInt(e.substr(16,8),16),n=parseInt(e.substr(24,8),16);return function(){t|=0,s|=0,a|=0,n|=0;let e=(t+s|0)+n|0;return n=n+1|0,t=s^s>>>9,s=a+(a<<3)|0,a=a<<21|a>>>11,a=a+e|0,(e>>>0)/4294967296}};if(""==tokenData.hash){let e=()=>{let e="0123456789abcdef",t="0x";for(let s=0;s<64;s++)t+=e[Math.floor(16*Math.random())];return t};tokenData.hash=e()}this.prngA=new e(tokenData.hash.substr(2,32)),this.prngB=new e(tokenData.hash.substr(34,32));for(let e=0;e<1e6;e+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(e,t){return e+(t-e)*this.random_dec()}random_int(e,t){return Math.floor(this.random_num(e,t+1))}random_bool(e){return this.random_dec()<e}random_choice(e){return e[this.random_int(0,e.length-1)]}}function setupUseful(){setupRandom(),W=width,H=height,vec=createVector,rndvec=(e=0,t=W,s=0,a=H)=>vec(rnd(e,t),rnd(s,a))}function saveNamed(){save(`lightbreak-${parseInt(tokenData.tokenId)%1e6}.png`)}function distSq(e,t){return p5.Vector.sub(e,t).magSq()}p5.disableFriendlyErrors=!0;class Poly{constructor(e,t=0,s=0,a=1,n=0,r=!0,o=void 0,i=void 0){this.shape=e.map((e=>vec(t+e.x*a,s+e.y*a))),this.closed=r,this.c=o,this.sc=i}rayIntersect(e,t,s=1){let a=this.shape[this.shape.length-1],n=p5.Vector.add(a,t),r=[];if(e.map((e=>{for(let t=0;t<e.shape.length-1;t++){let s=e.shape[t],o=e.shape[(t+1)%e.shape.length],i=this.rayToLineSegmentIntersection(a,n,s,o);i&&r.push(i)}})),r.sort(((e,t)=>e.t-t.t)),r.length&&r[0].t>s)return r[0]}addPoint(e,t=!0){this.shape.push(e),t&&qt.add(this.shape[this.shape.length-2],this.shape[this.shape.length-1])}static rect(e,t,s,a){let n=1e-6,r=[vec(e-(s/=2),t-(a/=2)),vec(e+s,t-a),vec(e+s+n,t+a),vec(e-s-n,t+a)];return new Poly(r)}setColor(e=void 0,t=void 0){return this.c=e,this.sc=t,this}addToQT(){this.qt=new QT(new BB((this.bbl+this.bbr)/2,(this.bbb+this.bbt)/2,(this.bbr-this.bbl)/2,(this.bbb-this.bbt)/2),4),this.qt.show();for(let e=0;e<this.shape.length;e++){let t=(e+1+this.shape.length)%this.shape.length,s=this.shape[e],a=this.shape[t];this.qt.insert({x1:s.x,y1:s.y,x2:a.x,y2:a.y})}}reseed(e=5,t=!0){let s=[];for(let a=0;a<this.shape.length&&(t||a!=this.shape.length-1);a++){let t=(a+1)%this.shape.length,n=this.shape[a],r=this.shape[t],o=e/p5.Vector.dist(n,r);if(s.push(n),o<1)if(o>.5)s.push(p5.Vector.lerp(n,r,.5));else for(let e=o;e<1;e+=o)s.push(p5.Vector.lerp(n,r,e))}return this.shape=s,this}draw(e=!0,t=!1,s=!1){noFill(),this.sc&&stroke(this.sc),e&&(beginShape(),this.shape.map(((e,t)=>{s?curveVertex(e.x,e.y):vertex(e.x,e.y)})),this.closed?endShape(CLOSE):endShape())}}
if(i){if(s.shape.length<a.upToIdx){if(distSq(a.shape[s.shape.length]??a.shape[a.shape.length-1],i.point)>gp.distanceSqOK){if(a.shape.length<=s.shape.length)continue;s.distance=dist(s.shape[s.shape.length-1].x,s.shape[s.shape.length-1].y,a.shape[s.shape.length].x,a.shape[s.shape.length].y),a.distance=s.distance,s.upToIdx=s.shape.length,a.shape=a.shape.slice(0,s.shape.length);let e=dist(i.point.x,i.point.y,s.shape[s.shape.length-1].x,s.shape[s.shape.length-1].y),t=p5.Vector.lerp(s.shape[s.shape.length-1],i.point,s.distance/e);s.addPoint(t);continue}s.addPoint(i.point);let e=reflect(s,i,0);e&&(s.dir=e,s.upToIdx=s.shape.length,q.push([s,a]));continue}{0==e&&(a.distance+=r.speed),s.distance=a.distance,s.upToIdx=a.upToIdx;let t=dist(i.point.x,i.point.y,s.shape[s.shape.length-1].x,s.shape[s.shape.length-1].y);if(s.distance<t){let e=p5.Vector.lerp(s.shape[s.shape.length-1],i.point,s.distance/t);s.addPoint(e);continue}s.addPoint(i.point),s.distance=0,s.upToIdx=s.shape.length;continue}}s.upToIdx=a.upToIdx,s.distance=a.distance}return t}function reflect(e,t,s=0){let a=e.dir,n=allParams[e.paramIdx],r=t.dir,o=r.copy(),i=r.copy().rotate(PI/2),l=a.copy().reflect(i),p=a.copy();if(abs(abs(o.angleBetween(p))-PI/2)<1e-8)return;let h=s*(p5.Vector.cross(a,r).z<0?1:-1),u=-(p5.Vector.cross(a,l).z<0?-1:1);return 2==n.angle?a.rotate(-(PI/2+.01)*u).rotate(h):3==n.angle?a.rotate(-(2*PI/3+.01)*u).rotate(h):4==n.angle?a.rotate(-(PI-.02)*u).rotate(h):5!=n.angle?l.rotate(h):void 0}function mouseClicked(){saving||mouseX<gp.margin/2||mouseX>W-gp.margin/2||mouseY<gp.margin/2||mouseY>H-gp.margin/2||setupParams(void 0,{bboxVis:1,n:20,offset:rnd(TAU),x:mouseX,y:mouseY,angle:rnd([1])})}function parseBBox(e){let t=e.split(";").map((e=>e.split(",").map((e=>parseFloat(e))))),s=[];for(let e=0;e<t.length;e++){let a=[];for(let s=0;s<t[e].length;s+=2)a.push(vec(t[e][s],t[e][s+1]));s.push(a)}return polys=s.map((e=>new Poly(e,0,0,W,0,0,-1,gp.strokeColor))),polys.map((e=>e.vis=1)),polys}function touchMoved(){if(!saving){if(1==touches.length){let e=vec(mouseX,mouseY);mousePath.push(e)}return!1}}function keyPressed(){"p"==key&&saveNamed(),"s"==key&&saveMySVG(),"c"==key&&(decTime=null==decTime?0:!decTime,timeCounter=25),key>="1"&&key<="9"&&(gp.i=1e3*parseInt(key)),"-"==key?gp.i=max(gp.i-1e3,500):"="==key&&(gp.i+=1e3)," "==key&&(gp.animate=!gp.animate),keyCode==UP_ARROW?gp.speed*=2:keyCode==DOWN_ARROW?gp.speed=max(gp.speed/=2,1/16):keyCode==RIGHT_ARROW?gp.animate?gp.rateMultiplier*=1.25:allParams.map((e=>e.offset+=.1)):keyCode==LEFT_ARROW&&(gp.animate?gp.rateMultiplier*=.75:allParams.map((e=>e.offset-=.1))),"f"==key&&resizeToFit(),"m"==key&&(mousePath=[]),"n"==key&&(gp.mousePathLength=gp.mousePathLength>200?100:1/0),"b"==key&&(gp.backgroundColor=gp.backgroundColor?0:255,gp.strokeColor=gp.strokeColor?0:255)}function resizeToFit(){W=window.innerWidth,H=window.innerHeight;for(let e=0;e<allParams.length;e++){let t=allParams[e];t.x=map(t.x,gp.margin/2,width-gp.margin/2,gp.margin/2,W-gp.margin/2),t.y=map(t.y,gp.margin/2,height-gp.margin/2,gp.margin/2,H-gp.margin/2)}resizeCanvas(W,H)}saving=!1;let R,rnd,rint,choice,sn,rexp,rtri,wPick,vec,rndvec,W,H,timeCounter=0;function timeText(){timeCounter<=0||(timeCounter--,push(),textSize(24*S),textAlign(CENTER,CENTER),fill(255),stroke(0),strokeWeight(S),decTime?text("decimal time",W/2,H/2):text("standard time",W/2,H/2),pop())}function saveSVGElement(e,t){e.setAttribute("xmlns","http://www.w3.org/2000/svg");var s=e.outerHTML,a=new Blob(['<?xml version="1.0" standalone="no"?>\r\n',s],{type:"image/svg+xml;charset=utf-8"}),n=URL.createObjectURL(a),r=document.createElement("a");return r.href=n,r.download=t,document.body.appendChild(r),r.click(),document.body.removeChild(r),e}function createSVGCanvas(){ns="http://www.w3.org/2000/svg",svg=document.createElementNS(ns,"svg"),groups=[],svg.setAttribute("width",width+"px"),svg.setAttribute("height",height+"px"),svg.setAttribute("viewBox","0 0 "+W+" "+H),svg.setAttribute("style","background-color:white;");let e=document.createElementNS(ns,"rect");e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",W),e.setAttribute("height",H),e.setAttribute("fill","white");let t=document.createElementNS(ns,"g");t.appendChild(e),t.setAttribute("id","rays"),t.setAttribute("style",`stroke-linejoin:bevel; fill:none; stroke-width:${S}; stroke:black;`),svg.appendChild(t);let s=paramsToShapes();return""!=uBB&&parseBBox(uBB).map((e=>s.push(e.shape))),s.map((e=>{let s=e;if(!s||!s.length)return;let a=document.createElementNS(ns,"path"),n=`M ${s[0].x} ${s[0].y} `;for(let e=1;e<s.length;e++)n+=`L ${s[e].x} ${s[e].y} `;a.setAttribute("d",n),t.appendChild(a)})),svg}function saveMySVG(){let e=`lightbreak-${parseInt(tokenData.tokenId)%1e6}.svg`;saving=!0,saveSVGElement(createSVGCanvas(),e),saving=!1}function paramsToShapes(){let e=[];return allParams.map((t=>{if(2==t.n){let[s,a]=t.oldrays,n=[...s.shape.reverse(),...a.shape];e.push(n)}else e.push(...t.oldrays.map((e=>e.shape)))})),[...e,mousePoly.shape]}class GridQT{constructor(e,t,s,a,n){this.x=e,this.y=t,this.width=s,this.height=a,this.gap=n,this.grid=[],this.allCells=[];for(let e=0;e<this.width/n;e++){this.grid.push([]);for(let t
const uP=new URLSearchParams(window.location.search);let uS=uP.get("png")??"",uSS=uP.get("svg")??"",uSp=uP.get("speed")??"",uH=uP.get("hash")??"",uF=uP.get("full")??"",uI=uP.get("i")??"",uA=uP.get("animate")??"",uIn=uP.get("invert")??"",uC=uP.get("clock")??"",uAR=uP.get("aspect")??"",uM=uP.get("margin")??"",uRM=uP.get("spin")??"",uBB=uP.get("bboxes")??"",A_R=""!=uAR?parseFloat(uAR):1;console.log(A_R);let D_S=1e3,DIM=Math.min(window.innerWidth,window.innerHeight/A_R),S=DIM/D_S,pxDensity=2;function presetup(){canvas=createCanvas(1e3*S,1e3*S*A_R),pixelDensity(pxDensity),setupUseful(),noFill(),strokeWeight(S),strokeJoin(BEVEL),sGP()}tokenData.hash=""!=uH?uH:tokenData.hash;let gp={};function sGP(){gp.margin=""!=uM?float(uM)*W*S:100*S,gp.backgroundColor=""!=uIn?0:255,gp.strokeColor=""!=uIn?255:0,gp.mousePathLength=50,gp.i=""!=uI?int(uI):4e3,gp.distanceSqOK=100,gp.speed=""!=uSp?float(uSp):S,gp.smooth=rnd()<.1,gp.animate=""==uA,gp.n=[2],gp.angle=weightedPick([1,2,3,4],[20,5,3,1]),gp.backgroundAlpha=150,gp.numLines=weightedPick([3,4,5,6,7],[80,1,1,1,3]),gp.oddsExtraParams=rnd()<.75?.15:0,gp.hash=tokenData.hash,gp.rateMultiplier=""!=uRM?float(uRM):1,print("thank you p5.js and everyone behind it <3"),frameRate(30)}let decTime=""!=uC?0:void 0;function setup(){presetup();let e=e=>{let t,s,a,n;do{t=floor(rnd(e.shape.length)),s=rnd(),a=floor(rnd(e.shape.length)),n=rnd()}while(t==a);return new Poly([p5.Vector.lerp(e.shape[t],e.shape[(t+1)%e.shape.length],s),p5.Vector.lerp(e.shape[a],e.shape[(a+1)%e.shape.length],n)],0,0,1,0,0)};for(let t=0;t<gp.numLines;t++){let s=e(Poly.rect(W/2,H/2,W-gp.margin-10*S,H-gp.margin-10*S)),a=rtri(5,10,30);s.reseed(a*S,0);let n=vec(0,1);n.rotate(rnd(TAU));let r=s.shape;for(let e=0;e<1;e++)rnd()<gp.oddsExtraParams&&setupParams(void 0,{n:rnd([2,2,2,3,5,7]),offset:rnd(TAU),x:rnd(gp.margin/2+10*S,W-gp.margin/2-10*S),y:rnd(gp.margin/2+10*S,H-gp.margin/2-10*S)});for(let e of r)setupParams(void 0,{lineNum:t,n:rnd(gp.n),offset:n.heading(),x:e.x,y:e.y,rateMultiplier:10**t});for(let e=0;e<2;e++)rnd()<gp.oddsExtraParams&&setupParams(void 0,{n:rnd([2,2,2,3,5,7,12,24]),offset:rnd(TAU),x:rnd(gp.margin/2+10*S,W-gp.margin/2-10*S),y:rnd(gp.margin/2+10*S,H-gp.margin/2-10*S)})}mousePoly=Poly.rect(W/2,H/2,W,H)}let allParams=[];function setupParams(e,t={}){let s={};if(s.animate=gp.animate,s.x=t.x??W/2,s.y=t.y??H/2,s.colorAngle=t.colorAngle??0,s.rateMultiplier=t.rateMultiplier??gp.rateMultiplier??1,s.speed=gp.speed,s.smooth=t.smooth??gp.smooth,s.lineNum=t.lineNum??void 0,s.centers=[vec(t.x,t.y)]??[vec(s.x,s.y)],s.angle=t.angle??gp.angle,s.offset=t.offset??1234,s.sOffset=t.sOffset??t.offset,s.i=t.i??1/0,s.counter=0,s.selfreflect=t.selfreflect??1,s.n=t.n??gp.n,s.oldrays=t.rays,s.rays=[],0!=s.n)for(let t of s.centers)for(let a=0;a<TAU;a+=TAU/s.n){let n=new Poly([t.copy()],0,0,1,0,0);n.dir=vec(cos(a+s.offset),sin(a+s.offset)),n.paramIdx=e??allParams.length,n.distance=0,s.rays.push(n)}return void 0===e?allParams.push(s):allParams[e]=s,s}let mousePoly,thread,qt,q=[],rays=[],globalbboxes=[],mousePath=[];function mouseMoved(){mmAdd&&(mmAdd=0,mousePath.push(vec(mouseX,mouseY)))}let mmAdd=0;function draw(){for(""!=uF&&(resizeToFit(),uF="");mousePath.length>gp.mousePathLength;)mousePath.shift();mmAdd=1,blendMode(BLEND),background(gp.backgroundColor,gp.backgroundAlpha);let e=new Poly(mousePath,0,0,1,0,0);if(e.setColor(-1,color(gp.strokeColor,255)),e.vis=1,mousePoly=e,null==decTime){let e=millis()/1e3/60/60,t=e/60,s=t/24,a=s/7,n=[e,t,s];allParams.map(((e,t)=>{e.animate&&(null==e.lineNum||e.lineNum>3)?e.offset=e.sOffset+a*TAU:e.animate&&(e.offset=e.sOffset+n[e.lineNum]*TAU*gp.rateMultiplier)}))}else if(decTime){let e=(()=>{const e=new Date("1793-10-05T00:00:00Z"),t=new Date;return((t-e)/864e5%10+(3600*t.getHours()+60*t.getMinutes()+t.getSeconds()+t.getMilliseconds()/1e3)/86400)/10})();allParams.map(((t,s)=>{t.animate&&(null==t.lineNum||t.lineNum>3)?t.offset=e:t.animate&&(t.offset=PI/2+e*TAU*10**(3-t.lineNum-1))}))}else{let e=(()=>{const e=new Date,t=e.getDay(),s=0===t?6:t-1,a=e.getHours(),n=e.getMinutes(),r=e.getSeconds(),o=e.getMilliseconds();return[(6e4*n+1e3*r+o)/36e5,(a%12*3600+60*n+r+o/1e3)/43200,(24*s*60*60*1e3+60*a*60*1e3+60*n*1e3+1e3*r+o)/6048e5]})();allParams.map(((t,s)=>{t.animate&&(null==t.lineNum||t.lineNum>3)?t.offset=e[2]:t.animate&&(t.offset=PI/2+e[t.lineNum]*TAU)}))}let t=Poly.rect(W/2,H/2,W-gp.margin,H-gp.margin);t.vis=0,t.shape.push(t.shape[0].copy()),globalbboxes=[t,mousePoly],""!=uBB&&parseBBox(uBB).map((e=>globalbboxes.push(e))),allParams=allParams.map(((e,t)=>setupParams(t,e))),allParams.map((e=>e.counter=0)),qt=new GridQT(0,0,W,H,25*S);for(let e of globalbboxes)qt.add(e);tickRays(0).map((e=>{let t=allParams[e.paramIdx];t.smooth&&(e.shape.splice(0,0,e.shape[0].copy()),e.shape.splice(e.shape.length,0,e.shape[e.shape.length-1].copy())),e.draw(1,0,t.smooth),t.smooth&&(e.shape.splice(0,1),e.shape.splice(e.shape.length-1,1))})),globalbboxes.map((e=>{stroke(gp.strokeColor),e.closed=!1,e.vis&&e.draw()})),timeText(),""!=uS&&frameCount==int(uS)&&saveNamed(),""!=uSS&&frameCount==int(uSS)&&saveMySVG()}function tickRays(e){let t=allParams.map((e=>e.rays)).flat(),s=allParams.map((e=>e.oldrays)).flat(),a=t.map(((e,t)=>[e,s[t]]));allParams.map((e=>e.counter=0)),q=[...a];let n=0;for(;q.length&&n<gp.i;){let[s,a]=q.shift(),r=allParams[s.paramIdx];if(r.counter++,r.counter>r.i)continue;n++;let o=[...globalbboxes];r.selfreflect&&(o=[...o,...t]);let i=qt.rayIntersect(s.shape[s.shape.length-1],s.dir);
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eElkIjoiZDA0NGQwMTctYjYxNi00MWYwLTlkMjItOGQxNmM3ZGIxZjg5IiwiaWF0IjoxNjkyOTgwMDcyLCJpc3MiOiJwYXBlci54eXoifQ.dEifp2zKOaCnshZBWAVGXXEq8li9dyK9OUkWUn2HX-8
On a cosmic stage, these actors sing an infinite song. What do they reach for? Who are they searching for? Do their faces show wonder—or sadness? Sometimes they sing for themselves, sometimes they sing for the crowd, and sometimes they sing for the void. Like us. (25% to environmental charities)
let rw=su(tokenData),s=gs(tokenData),d={hyper:rw[1]<.03,type:wP(["p","c","f"],[1,2,17],rw[2]),colors:wP([["#aa9387","#fdf1d3","#f7bfb1","#f19d54","#a16f5c"],["#fac901","#225095","#dd0100","#ffffff"],["#d8e0bb","#b6cec7","#86a3c3","#7268a6","#6b3074"],["#173F5F","#20639B","#3CAEA3","#f6d55c","#ed553b"],["#5f0f40","#9a031e","#fb8b24","#e36414","#0f4c5c"],["#f18c8e","#f0b7a4","#f1d1b5","#568ea6","#305f72"],["#fffcf2","#ccc5b9","#403d39","#252422","#eb5e28"],["#322c4d","#cfc4ff","#f5b649","#19211e","#303757"],["#0e0e1b","#204829","#22b455","#80ce87","#92e5a1"]],[3,3,3,3,2,1,1,1,1],rw[3]),paper:wP(["#363333","#FAF5E8","#F3EEDF","#F2EAD0","#D0CBBA","#FAEDCD"],[1,1,1,1,1,1],rw[4]),ppl:wP([3,2,1],[1,3,21],rw[5])};function makeP(t){return{lE:rw[6+t]<.9,rE:rw[7+t]<.9,m:rw[8+t]<.6,lA:rw[9+t]<.7,rA:rw[10+t]<.7,lAH:rw[11+t]<.2,rAH:rw[12+t]<.2}}let bC,bg,sC,fC,rz,w,v,sW,e,ci,st,ps=[],wV=[],cs=[],n=1e3;function setup(){w=min(windowWidth,windowHeight),v=vertex,st=stroke,sW=strokeWeight,e=ellipse,ci=circle,createCanvas(w,w),rz=w/1e3,noiseSeed(s);for(let t=0;t<d.ppl;t++)d.i=makeP(7*t),ps.push(new P(ra(w/2)+w/4,w-200*rz,100,100,d.i.lE,d.i.rE,d.i.m,d.i.lA,d.i.rA,d.i.lAH,d.i.rAH,500,300,50,50,50,50,50,1e3*t,0));if(print(tokenData.hash,d),sW(1*rz),bg=pi(d.colors),d.colors.splice(d.colors.indexOf(bg),1),sC=pi(d.colors),bC=pi(d.colors),fC=pi([bg,pi(d.colors)]),"c"==d.type)for(let t=0;t<250;t++)ps.unshift(new P(ra(w),w-w/250*t,ra(15)+10,ra(15)+20,rnd()>1e-4,rnd()>1e-4,0,0,0,0,0,50,30,5,5,0,0,0,10*t,0));else if("f"==d.type){for(let t=0;t<1;t++)wV.push([ra(w/2),ra(20),(ra(3)+2)*rz,ra(60)*rz,ra(50)*rz,(ra(10)+2)*rz,ra(300)*rz]);for(let t=0;t<30*noise(10);t++)cs.push([ra(w),ra(w),ra(80)*rz,pi(d.colors)])}else if("p"==d.type){n=300;let t=1;for(let s=0;s<3;s++)t+=rnd()>1/2**s;for(let s=0;s<t;s++){let t=ra(3*w/4)+w/8,s=ra(4*w/5)+w/10,r=(ra(200)+80)*rz,i=r+(120+ra(300))*rz,e=r-ra(3*r/4)*rz;cs.push([ra(3*w/4)+w/8,ra(4*w/5)+w/10,(ra(200)+80)*rz,ra(PI/2),rnd()>.7,max(i,e),min(i,e)]);for(let i of cs)dist(t,s,i[0],i[1])<r&&t!=i[0]&&s!=i[1]&&cs.splice(cs.length-1,1);ps[0].rot=ra(TAU),ps[0].x=w/2,ps[0].y=w/2}}}function draw(){if(background(bg),"f"==d.type){for(let t of wV)wL(t[0],t[1],t[2],t[3],t[4],t[5],t[6]);for(let t of cs)fill(t[3]),ci(t[0],t[1],2*t[2])}else"p"==d.type&&(dP(),fill(sC),e(w/2,w,2*w,w/2));for(let t of ps)t.draw(),t.t+=.002,d.hyper&&(t.t+=.009);dB()}function dB(){push(),fill(d.paper),beginShape(),v(0,0),v(w,0),v(w,w),v(0,w),beginContour(),v(w-80*rz,w-80*rz),v(w-80*rz,80*rz),v(80*rz,80*rz),v(80*rz,w-80*rz),endContour(),endShape(CLOSE),pop()}function wL(t,s,r,i,e,h,l){push(),fill(sC),noStroke(),translate(t,0);for(let t=-e*s;t<w+e*s;t+=h)for(let h=0;h<s;h+=1)ci(100*sin(t/l+frameCount/200)*rz+h*i,t+h*e,2*r);pop()}function dP(t){for(let t of cs){push();let s=t[2],r=t[5],i=t[6];translate(t[0],t[1]),fill(bg),ci(0,0,s+8*rz),fill(sC),ci(0,0,s),t[4]&&(rotate(-t[3]),push(),noFill(),sW(32*rz),st(0),e(0,0,r,i),sW(30*rz),st(bg),e(0,0,r,i),sW(15*rz),st(sC),e(0,0,r,i),pop(),fill(bg),arc(0,0,s+8*rz,s+8*rz,PI,TAU),fill(sC),arc(0,0,s,s,PI-.01,TAU+.01),noStroke(),arc(0,-2*rz,s-15,s-15,PI,TAU)),pop()}}class P{constructor(t,s,r,i,e,h,l,n,f,o,a,p,c,w,d,u,b,z,A,N){this.x=t,this.y=s,this.b=r,this.h=i,this.lE=e,this.rE=h,this.m=l,this.lA=n,this.rA=f,this.lAH=o,this.rAH=a,this.hN=p,this.bN=c,this.rEN=w,this.lEN=d,this.mN=u,this.lAN=b,this.rAN=z,this.nO=A,this.rot=N,this.t=0,this.p=[[0,2.8,0],[0,2.8,0],[-1,3,0],[-1,2,0],[-.75,1,0],[-.5,-.25,0],[-.4,-.75,1],[-.75,-1.5,1],[-.45,-2.3,1],[0,-2.5,1]];for(let t=this.p.length-2;t>=0;t--)this.p.push([-this.p[t][0],this.p[t][1],this.p[t][2]]);this.lap=[[-.7,.7],[-.65,.4],[-.6,.2],[-.56,0]],this.rap=[[.56,0],[.6,.2],[.65,.4],[.7,.7]]}draw(){push(),translate(this.x,this.y),rotate(this.rot),fill(bC),beginShape();for(let t=0;t<this.p.length;t++){let s=this.p[t][2],r=s?this.h:this.b,i=s?this.hN:this.bN;if(this.lA&&5==t)for(let t=0;t<this.lap.length;t++){let s=3;t>0&&t<3&&(s=10);let e=this.cN(this.lap[t][0],this.lap[t][1],r,i,this.lAN*s,0,this.t+this.nO);curveVertex(e[0],e[1])}if(this.rA&&14==t)for(let t=0;t<this.rap.length;t++){let s=3;t>0&&t<3&&(s=10);let e=this.cN(this.rap[t][0],this.rap[t][1],r,i,this.rAN*s,1,this.t+this.nO);curveVertex(e[0],e[1])}let e=this.cN(this.p[t][0],this.p[t][1],r,i,1,0,this.t+this.nO);curveVertex(e[0],e[1])}endShape(),fill(fC);let t=this.cN(-.3,-1.8,this.h,this.hN,this.lEN,0,this.t+this.nO);if(this.lE?ci(t[0],t[1],20*rz):this.xE(t[0],t[1],10*rz),t=this.cN(.3,-1.8,this.h,this.hN,this.rEN,0,this.t+this.nO),this.rE?ci(t[0],t[1],20*rz):this.xE(t[0],t[1],10*rz),this.m){let t=this.cN(0,-1.25,this.h,this.hN,this.mN,0,this.t+this.nO);ci(t[0],t[1],(70*noise(0)+2)*rz)}if(this.lA&&this.lAH){let t=this.cN(this.lap[2][0],this.lap[2][1],this.b,this.bN,10*this.lAN,0,this.t+this.nO);ci(t[0],t[1],40*rz)}if(this.rA&&this.rAH){let t=this.cN(this.rap[1][0],this.rap[1][1],this.b,this.bN,10*this.rAN,1,this.t+this.nO);ci(t[0],t[1],40*rz)}pop()}xE(t,s,r){push(),st(sC),sC==bC&&st(0),sW(4*rz),line(t-r/2,s-r/2,t+r/2,s+r/2),line(t+r/2,s-r/2,t-r/2,s+r/2),pop()}cN(t,s,r,i,e,h,l){let f=t*r,o=s*r,a=f+noise(f/n+10+h,o/n+10+this.nO,l)*(i+e)-i/2-e/2,p=o+noise(f/n+50+h,o/n+50+this.nO,l)*(i+e)-i/2-e/2;return[a*rz,p*rz]}}function su(t){let s=[];for(let r=0;r<32;r++)s.push(t.hash.slice(2+2*r,4+2*r));return s.map(t=>parseInt(t,16)/255)}function gs(t){return parseInt(t.hash.slice(0,16),16)}function rnd(){return s^=s<<13,s^=s>>17,((s^=s<<5)<0?1+~s:s)%1e3/1e3}function ra(t,s=-1){return-1===s&&(s=t,t=0),rnd()*(s-t)+t}function rF(t,s){return Math.floor(ra(t,s))}function wP(t,s,r){let i;for(i=0;i<s.length;i++)s[i]+=s[i-1]||0;var e=r*s[s.length-1];for(i=0;i<s.length&&!(s[i]>=e);i++);return t[i]}function pi(t){return t[rF(0,t.length)]}