FT
2

 
 
Hi

Project Shift 004

Policy: cd191f...20ef
Owner:

    Metadata:

    • { โ€ฆ
      • "artist" : "rtnptr",
      • "authNFT" : "asset1u0xjrcjdlwgejmwg0gzl2la3n0k80dmczxk7la",
      • "description" :
        [ โ€ฆ
        • "0" : "On-chain glitch art made of time and purpose."
        ]
        ,
      • "files" :
        [ โ€ฆ
        • "0" :
          { โ€ฆ
          • "mediaType" : "text/html",
          • "name" : "Project Shift 004",
          • "src" :
            [ โ€ฆ
            • "0" : "data:text/html;utf8,
            • "1" : "idden'>
            • "2" : "st Q=s=>eval('(v,a,b,c,d)=>'+s),CHAR=C=>String.fromCharCode(C),F",
            • "3" : "or=Q('{for(v=v;v,
            • "4" : "t)=>a(v[i],i,t))'),cR=Q('`rgba(${v},${a},${b},${c})`'),cH=Q('`hs",
            • "5" : "la(${v},${a}%25 ,${b}%25 ,${c})`'),cM=Q('cR(v,v,v,a)'),cHx=C=>'r",
            • "6" : "gb('+((C=parseInt(C,16))>>16&255)+','+(C>>8&255)+','+(255&C)+')'",
            • "7" : ";let P=(v,a,b,c)=>{for(b=b.split(':'),c=0;c,
            • "8" : "C${b[c]}=${v}=>ctx.${b[c+1]}${a}`)},t='(...a)';P(t,t,'TC:clip:RT",
            • "9" : ":rect:GT:getTransform:DI:drawImage:FT:fillText:EL:ellipse:BP:beg",
            • "10" : "inPath:CP:closePath:MT:moveTo:LT:lineTo:BC:bezierCurveTo:ST:stro",
            • "11" : "ke:VS:save:VR:restore:TR:setTransform:XT:translate:XS:scale:XR:r",
            • "12" : "otate:FR:fillRect:RE:rect:FL:fill'),P('a','=a','SBr:shadowBlur:L",
            • "13" : "W:lineWidth:TA:textAlign:TB:textBaseline:SC:shadowColor:SS:strok",
            • "14" : "eStyle:GC:globalCompositeOperation:FS:fillStyle');const DEF=(C,e",
            • "15" : ")=>{C=C??CANV,e=e??_R,CTR(e,0,0,e,0,0),CFS(C),CSS(C),CTA('center",
            • "16" : "'),CSB(0),MUL()},CSB=C=>CSBr(C*_R),DCE=C=>document.createElement",
            • "17" : "(C),CCX=C=>ctx=C||CTX,FNT=C=>ctx.font=C+'px Arial',TXT=(C,e,...t",
            • "18" : ")=>{CFS(C),FNT(e),CFT(...t)},ELI=(C,...e)=>{CFS(C),CBP(),CEL(...",
            • "19" : "e),CFL()},ADD=C=>CGC('screen'),MUL=C=>CGC('source-over'),CWH=(C,",
            • "20" : "e,t)=>{C.width=e,C.height=t||e},BG=C=>RECT(C,0,0,_W,_H),RECT=(C,",
            • "21" : "...e)=>{CBP(),CFS(C),CFR(...e),CFL()},AA=(C,e)=>C.imageSmoothing",
            • "22" : "Enabled=C.mozImageSmoothingEnabled=C.webkitImageSmoothingEnabled",
            • "23" : "=e;function v2(C,e){var t=this,i=(C,e)=>(t.x=C||0,t.y=e||0,t);i(",
            • "24" : "C,e),Object.assign(t,{set:i,circ(C){return i(sin(C),-cos(C))},pe",
            • "25" : "rp(C){return i(t.y,-t.x)},len(C){return sqrt(t.x*t.x+t.y*t.y)},d",
            • "26" : "ot(C){return t.x*C.x+t.y*C.y},norm(C){return t.div(t.len())},rad",
            • "27" : "(C){return atan2(t.x,-t.y)},add(C){return i(t.x+C.x,t.y+C.y)},su",
            • "28" : "b(C){return i(t.x-C.x,t.y-C.y)},mv(C){return i(t.x*C.x,t.y*C.y)}",
            • "29" : ",inc(C){return i(t.x+C,t.y+C)},mul(C){return i(t.x*C,t.y*C)},div",
            • "30" : "(C){return i(t.x/C,t.y/C)},cpy(C){return V2(t.x,t.y)}})}V2=Q('ne",
            • "31" : "w v2(v,a)'),FoE(Object.getOwnPropertyNames(Math),(i=>eval(`${i}=",
            • "32" : "Math.${i}`)));const Lerp=Q('(1-v)*a+v*b'),Wrap=Q('v,
            • "33" : " (b-a):a+(v-a)%25 (b-a)'),Mapf=Q('b-a==0?c:c+(((v-a)/(b-a))*(d-c",
            • "34" : "))'),Clamp=Q('v-(cos(PI*C)-1)/2,TAU=2*PI",
            • "35" : ";class RNG{constructor(C){var e=this,t=4294967295,i=123456789+C&",
            • "36" : "t,r=987654321-C&t,n=65535;e.r=C=>(((r=36969*(r&n)+(r>>>16)&t)<<1",
            • "37" : "6)+((i=18e3*(i&n)+(i>>>16)&t)&n)>>>0)/(t+1),e.f=(C,t)=>C+e.r()*(",
            • "38" : "t-C),e.i=(C,t)=>floor(e.f(C,t)),e.c=C=>e.r()C[e.i(0",
            • "39" : ",C.length)]}}CANV=cM(220,1),WALL=cHx('f57411'),SHDW=cHx('0f0a06'",
            • "40" : "),FPS=60;const SEED=9686,TAG='PG-07-004',PX=1e3,HX=PX/2,uS=(C,e,",
            • "41" : "t,r,n)=>{function X(C,e,t,i,r=!1){CBP(),CXR(C),a(i,0,-e,!0),1==r",
            • "42" : "&&a(i+5,0,-e,!1),CXR(-C)}function a(C=300,e=PX/2,t=PX/2,i=!0){CV",
            • "43" : "S(),CBP(),CSC('black'),CSS(y),1==i?CFS(y):CFS('rgb(0,0,0,0)'),CL",
            • "44" : "W(2),ctx.arc(e,t,C,0,2*Math.PI,!1),CST(),CFL(),CVR()}function c(",
            • "45" : "C=0){let e,t;for(0==C?(e=20,t=[[HX+50,HX],[HX-50,HX],[HX+25,HX-4",
            • "46" : "5],[HX-25,HX-45],[HX+25,HX+45],[HX-25,HX+45]]):1==C?(e=10,t=[[HX",
            • "47" : ",HX-85],[HX,HX+85],[HX+75,HX+45],[HX-75,HX+45],[HX-75,HX-45],[HX",
            • "48" : "+75,HX-45]]):2==C?(e=8,t=[[HX-105,HX],[HX+105,HX],[HX-55,HX-90],",
            • "49" : "[HX+55,HX-90],[HX-55,HX+90],[HX+55,HX+90]]):3==C?(e=6,t=[[HX,HX-",
            • "50" : "130],[HX,HX+130],[HX+110,HX-70],[HX+110,HX+70],[HX-110,HX-70],[H",
            • "51" : "X-110,HX+70]]):4==C&&(e=4,t=[[HX+140,HX],[HX-140,HX],[HX+75,HX-1",
            • "52" : "20],[HX+75,HX+120],[HX-75,HX-120],[HX-75,HX+120]]),i=0;i,
            • "53" : "h;i++)a(e,...t[i])}function o(C=!0){CVS(),CBP(),CSS(1==C?y:w),CS",
            • "54" : "C(1==C?y:w),CLW(2),CMT(5,5),CLT(50,5),CLT(50,25),CLT(35,25),CLT(",
            • "55" : "35,50),CLT(5,50),CCP(),CRE(55,5,65,20),CRE(40,30,80,20),CRE(5,55",
            • "56" : ",115,20),CST(),((C,e,t,i,r,n=!0)=>{CVS(),CBP(),1==n?(CSC(y),CFS(",
            • "57" : "y)):CFS(w),CXT(C,e),CMT(0,0-t),CXR(Math.PI/5);for(var X=0;X,
            • "58" : "+)CXR(Math.PI/i),CLT(0,0-t*r),CXR(Math.PI/i),CLT(0,0-t);CCP(),CF",
            • "59" : "L(),CVR()})(20,38,3,5,3,C),CVR()}let S=(C,e=3)=>V.i(C-e,C+e),l=(",
            • "60" : "C,e,t)=>(C.width=e,C.height=t,C.getContext('2d'));function T(){l",
            • "61" : "et C=V.i(100,900);return[C,V.i(C-V.i(25,100),C+V.i(25,100))]}CAN",
            • "62" : "V='black',WALL='black',SHDW='black';let P,H,s,u,v=e,h=document.c",
            • "63" : "reateElement('canvas'),R=l(h,10,2*PX),g=document.createElement('",
            • "64" : "canvas'),L=l(g,.2*PX,.2*PX),m=document.createElement('canvas'),d",
            • "65" : "=l(m,200,200),F=document.createElement('canvas'),E=l(F,200,200),",
            • "66" : "f=document.createElement('canvas'),B=l(f,PX,PX),x=document.creat",
            • "67" : "eElement('canvas'),D=l(x,PX,PX),p=document.createElement('canvas",
            • "68" : "'),M=l(p,PX,PX),b=document.createElement('canvas'),I=l(b,PX,PX),",
            • "69" : "A=[],_=[],W=[],V=new RNG((new Date).getTime()),y='white',w=cHx('",
            • "70" : "737373'),G=0,N=0,$='- . -- .--. . .-. .- -. -.-. .',k='.--- ..- ",
            • "71" : "... - .. -.-. .',Q='.-- .. ... -.. --- --',O='-.-. --- ..- .-. .",
            • "72" : "- --. .',Y=[[[156,90],[90,156],[90,142],[142,90],0],[[847,90],[9",
            • "73" : "12,156],[912,142],[862,90],0],[[90,847],[156,912],[142,912],[90,",
            • "74" : "862],0],[[912,847],[912,862],[862,912],[847,912],0]],U=[[[80,80]",
            • "75" : ",[180,80],[80,180]],[[922,80],[820,80],[922,180]],[[922,820],[82",
            • "76" : "0,922],[922,922]],[[80,820],[80,922],[180,922]]],j=[[[180,80],[2",
            • "77" : "10,80],[80,210],[80,180],[25,60]],[[790,80],[820,80],[922,180],[",
            • "78" : "922,210],[745,60]],[[180,922],[210,922],[80,790],[80,820],[60,74",
            • "79" : "5]],[[790,922],[820,922],[922,820],[922,790],[745,745]]],q=[[[21",
            • "80" : "0,80],[225,80],[80,225],[80,210]],[[775,80],[790,80],[922,210],[",
            • "81" : "922,225]],[[225,922],[210,922],[80,790],[80,775]],[[775,922],[79",
            • "82" : "0,922],[922,790],[922,775]]],z=[[95,245],[110,230],[125,215],[14",
            • "83" : "0,200],[155,185],[170,170],[185,155],[200,140],[215,125],[230,11",
            • "84" : "0],[245,95]],K=[[755,95],[770,110],[785,125],[800,140],[815,155]",
            • "85" : ",[830,170],[845,185],[860,200],[875,215],[890,230],[905,245]],J=",
            • "86" : "[[95,755],[110,770],[125,785],[140,800],[155,815],[170,830],[185",
            • "87" : ",845],[200,860],[215,875],[230,890],[245,905]],Z=[[755,905],[770",
            • "88" : ",890],[785,875],[800,860],[815,845],[830,830],[845,815],[860,800",
            • "89" : "],[875,785],[890,770],[905,755]];return C=>{if(n(),AA(e,!0),G++,",
            • "90" : "ctx.clearRect(0,0,PX,PX),1==G||(new Date).getDate()!=P){for(CCX(",
            • "91" : "R),CSB(2),(C=>{for(i=1;i<2e3;i++){if(i/2%25 1)continue;let C=T()",
            • "92" : ";CBP(),ctx.arc(S(1,i>=C[0]&&i<=C[1]?15:3),i,1,0,2*Math.PI,!1),CF",
            • "93" : "S(y),CFL()}})(),CCX(v),CCX(D),CSB(1),c(0),c(2),c(4),CCX(M),CSB(1",
            • "94" : "),c(1),c(3),CCX(d),CSB(2),o(!0),CCX(E),o(!1),1==G&&(CCX(B),CXT(H",
            • "95" : "X,HX),(()=>{let C;for(CTB('middle'),CTA('center'),num=1;num<13;n",
            • "96" : "um++)C=num*Math.PI/6,CXR(C),CXT(0,.75*-HX),CXR(-C),a(12!=num&&8!",
            • "97" : "=num&&4!=num?2:5,0,0,!0),CXR(C),CXT(0,.75*HX),CXR(-C)})()),CCX(I",
            • "98" : "),ctx.clearRect(0,0,PX,PX),CSB(20),CBP(),CSC(y),CSS(y),CGC('sour",
            • "99" : "ce-over'),CLW(4),CRE(50,50,900,900),CST(),(()=>{for(i=0;i,
            • "100" : "th;i++)CBP(),CSC(y),CGC('source-over'),CSS(y),CLW(4),CMT(...U[i]",
            • "101" : "[0]),CLT(...U[i][1]),CLT(...U[i][2]),CCP(),CST()})(),CSB(1),(()=",
            • "102" : ">{let C=(new Date).getFullYear().toString(2).split('').reverse()",
            • "103" : ";for(CBP(),CSC(y),CSS(y),CGC('source-over'),CLW(4),CMT(85,255),C",
            • "104" : "LT(255,85),CCP(),CST(),CMT(170,170),CLT(152,152),CCP(),CST(),i=0",
            • "105" : ";i<=z.length-1;i++)a(7,...z[i],null!=C[i]&&C[i])})(),(()=>{let C",
            • "106" : "=(new Date).getMonth()+1;for(C=C.toString(2).split('').reverse()",
            • "107" : ",CBP(),CSC(y),CSS(y),CGC('source-over'),CLW(4),CMT(745,85),CLT(9",
            • "108" : "15,255),CCP(),CST(),CMT(830,170),CLT(848,152),CCP(),CST(),i=0;i<",
            • "109" : "=K.length-1;i++)a(7,...K[i],null!=C[i]&&C[i])})(),(()=>{let C=(n",
            • "110" : "ew Date).getDate().toString(2).split('').reverse();for(CBP(),CSC",
            • "111" : "(y),CSS(y),CGC('source-over'),CLW(4),CMT(85,745),CLT(255,915),CC",
            • "112" : "P(),CST(),CMT(170,830),CLT(152,848),CCP(),CST(),i=0;i<=J.length-",
            • "113" : "1;i++)a(7,...J[i],null!=C[i]&&C[i])})(),(()=>{let C=(new Date).g",
            • "114" : "etDay()+1;for(C=C.toString(2).split('').reverse(),CBP(),CSC(y),C",
            • "115" : "SS(y),CGC('source-over'),CLW(4),CMT(915,745),CLT(745,915),CCP(),",
            • "116" : "CST(),CMT(830,830),CLT(848,848),CCP(),CST(),i=0;i<=Z.length-1;i+",
            • "117" : "+)a(7,...Z[i],null!=C[i]&&C[i])})(),CCX(L),CSB(20),i=0;i<=1e3;i+",
            • "118" : "+)a(1,V.i(0,.2*PX),V.i(0,.2*PX),!0);u=Math.floor(((new Date).get",
            • "119" : "Month()+3)/3),P=(new Date).getDate(),CCX(v),CSB(0)}for(CRE(50,50",
            • "120" : ",900,900),CVS(),ctx.clip(),i=1;i<=1;i++)CDI(h,V.i(50,950),V.i(-1",
            • "121" : "e3,0),10,2*PX);return CVR(),(()=>{for(CVS();_.length<256;){let C",
            • "122" : ";C='hsl(270, '+V.i(25,75)+'%25 , '+V.i(25,75)+'%25 )',_.push([V.",
            • "123" : "i(50,950),V.i(50,950),C])}for(i=0;i<_.length;i++){let C=_[i][0],",
            • "124" : "e=_[i][1];'x'==V.item(['x','y'])?C+=V.item([-1,1]):e+=V.item([-1",
            • "125" : ",1]),50>C?C+=1:C>950&&(C-=1),50>e?e+=1:e>950&&(e-=1),_[i]=[C,e,_",
            • "126" : "[i][2]],CFR(C-1.5,e-1.5,3,3),CBP(),CSS(_[i][2]),CLW(1),CMT(HX,HX",
            • "127" : "),CLT(C,e),CST()}CVR()})(),CVS(),CXT(HX,HX),CXR(.01*G),CDI(p,-HX",
            • "128" : ",-HX,PX,PX),CVR(),CVS(),CXT(HX,HX),CXR(.01*-G),CDI(x,-HX,-HX,PX,",
            • "129" : "PX),CVR(),s=(new Date).getSeconds(),H!=s?(H=s,CDI(m,405,145,300,",
            • "130" : "300)):CDI(F,405,145,300,300),(()=>{CVS(),CXT(HX,HX),CGC('source-",
            • "131" : "over');let C=new Date,e=C.getSeconds(),t=C.getMinutes();X(C.getH",
            • "132" : "ours()*PI/6+t*PI/360+e*PI/21600,.5*HX,0,16,C.getHours()>11),X(t*",
            • "133" : "Math.PI/30+e*Math.PI/1800,.6*HX,0,8),X(e*Math.PI/30,.4*HX,0,4),C",
            • "134" : "XR(.01*G),CDI(f,-PX/2,-PX/2,PX,PX),CVR()})(),(()=>{let C=Y[0][4]",
            • "135" : ",e=Y[1][4],t=Y[2][4],r=Y[3][4];for(CFS(y),'.'==$[C]?CFR(90,90,25",
            • "136" : ",10):'-'==$[C]&&CFR(90,105,10,10),'.'==k[e]?CFR(886,90,25,10):'-",
            • "137" : "'==k[e]&&CFR(901,105,10,10),'.'==Q[t]?CFR(90,901,25,10):'-'==Q[t",
            • "138" : "]&&CFR(90,886,10,10),'.'==O[r]?CFR(886,901,25,10):'-'==O[r]&&CFR",
            • "139" : "(901,886,10,10),Y[0][4]=29==C?0:C+1,Y[1][4]=23==e?0:e+1,Y[2][4]=",
            • "140" : "20==t?0:t+1,Y[3][4]=24==r?0:r+1,i=0;i,
            • "141" : "CSS(y),CGC('source-over'),CLW(4),CMT(Y[i][0][0],Y[i][0][1]),CLT(",
            • "142" : "...Y[i][1]),CLT(...Y[i][2]),CLT(...Y[i][3]),0==Y[i][4]&&(CFS(y),",
            • "143" : "CFL()),CCP(),CST()})(),(()=>{let C=[U[0][0][0],U[0][0][1]],e=[U[",
            • "144" : "1][0][0],U[1][0][1]],t=[U[3][1][0],U[3][1][1]],i=[U[2][2][0],U[2",
            • "145" : "][2][1]];0==W.length&&(W=[C,0]),CBP(),CSC(y),CGC('source-over'),",
            • "146" : "CSS(y),CLW(4),CMT(...W[0]),0==W[1]?(W[0][1]+=54,W[0][1]>=t[1]&&(",
            • "147" : "W[0]=t,W[1]=1)):1==W[1]?(W[0][0]+=54,W[0][0]>=i[0]&&(W[0]=i,W[1]",
            • "148" : "=2)):2==W[1]?(W[0][1]-=54,W[0][1]<=e[1]&&(W[0]=e,W[1]=3)):3==W[1",
            • "149" : "]&&(W[0][0]-=54,W[0][0]<=C[0]&&(W[0]=C,W[1]=0)),CLT(...W[0]),CST",
            • "150" : "()})(),(()=>{for(0==A.length&&(A=[[38,38,0]]),1==A.length&&u>1&&",
            • "151" : "A[0][0]>88&&A.push([38,38,0]),2==A.length&&u>2&&A[1][0]>88&&A.pu",
            • "152" : "sh([38,38,0]),3==A.length&&u>3&&A[2][0]>88&&A.push([38,38,0]),i=",
            • "153" : "0;i,
            • "154" : "A[i][0]+12,A[i][1]+12,12,0,2*Math.PI,!1),CST(),A[i][0]<938&&0==A",
            • "155" : "[i][2]?(A[i][2]=0,A[i][0]=A[i][0]+1):A[i][1]<938&&0==A[i][2]?(A[",
            • "156" : "i][2]=0,A[i][1]=A[i][1]+1):A[i][0]>38?(A[i][2]=1,A[i][0]=A[i][0]",
            • "157" : "-1):A[i][1]>38?(A[i][2]=1,A[i][1]=A[i][1]-1):(A[i][0]=38,A[i][1]",
            • "158" : "=38,A[i][2]=0)})(),(()=>{for(i=0;i,
            • "159" : "('source-over'),CSS(y),CLW(4),CMT(...j[i][0]),CLT(...j[i][1]),CL",
            • "160" : "T(...j[i][2]),CLT(...j[i][3]),CCP(),CST(),CVS(),ctx.clip(),CDI(g",
            • "161" : ",j[i][4][0]-V.i(-25,25),j[i][4][1]-V.i(-25,25),.2*PX,.2*PX),CVR(",
            • "162" : ")})(),(()=>{for(CBP(),CSC(y),CSS(y),CGC('source-over'),CLW(4),CB",
            • "163" : "P(),i=0;i<=q.length-1;i++)CMT(...q[i][0]),CLT(...q[i][1]),CLT(..",
            • "164" : ".q[i][2]),CLT(...q[i][3]),'.'=='. ... . . ... ... ... . . . ",
            • "165" : "... .'[N]&&(CFS(y),CFL()),CCP(),CST();N=24==N?0:N+1})(),CDI(b,",
            • "166" : "0,0,PX,PX),0}};function I(){cnv=document.getElementById('tc'),ct",
            • "167" : "x=CTX=cnv.getContext('2d');const C=(C,t,i,r,n,X)=>{var a,c,o,S=V",
            • "168" : "2(C,t);return e.push((C=>{c&&X(n)})),(e,n)=>{a=V2(_X,_Y).mul(-1)",
            • "169" : ".add(S),c=a.len()<1.7*i,o=c?2:5,e&&(ELI(c||n?'white':'grey',C,t,",
            • "170" : "i+o,i+o,0,0,TAU),CTA('center'),CFS('black'),FNT(i-3),CFT(r,C,t+6",
            • "171" : "))}};var e=[],t=[],i=0,r=[1,2,4,8,16],n=0,X=C=>{i=C,_R=r[C],art=",
            • "172" : "c(_R),cer=o(min(_R,4))},a={Piece:'4',Name:'Project Shift 004',De",
            • "173" : "scription:'On-chain glitch art made of time and purpose.'.split(",
            • "174" : "'|'),Properties:'none, none, circle, 1, 256, 64, purple',Medium:",
            • "175" : "'Fully On-Chain BlockGen.Art Canvas',Artist:'rtnptr',Seed:SEED},",
            • "176" : "c=C=>{n=0;var e,t=DCE('canvas'),i=t.getContext('2d'),r=cM(150,1)",
            • "177" : ",X=()=>{DEF(),TXT(r,1==C?10:8,TAG,967,993)};return CWH(t,C*PX),C",
            • "178" : "CX(i),AA(t,1),DEF(),e=uS(new RNG(SEED),i,t,C,X),X(),()=>(CCX(i),",
            • "179" : "DEF(),n||(n=e())&&X(),CCX(),t)},o=C=>{var e=DCE('canvas');let t,",
            • "180" : "i;var r,n;for(var[r,X]of(CWH(e,PX*C),CCX(e.getContext('2d')),DEF",
            • "181" : "(null,C),RECT(cH(0,2,80,.6),2,2,PX-4,PX-4),CBP(),CRT(4,4,PX-8,PX",
            • "182" : "-8),CTC(),RECT(cH(0,2,80,1),0,0,PX,PX),CSC('black'),CSBr(30*C),C",
            • "183" : "BP(),CRE(0,0,PX,PX),CSS(cHx('dbccb8')),CLW(102),CST(),CBP(),CRE(",
            • "184" : "0,0,PX,PX),CSS(cHx('9d8c78')),CLW(92),CST(),CSBr(6*C),CSS(CANV),",
            • "185" : "CLW(30),CST(),DEF(null,C),TXT(cM(0,.1),24,'BLOCKGEN.ART',HX,40),",
            • "186" : "TXT(cM(0,.6),13,TAG,HX,970),t=HX,i=290,Object.entries(a)))i+=34,",
            • "187" : "TXT(cM(0,.8),14,r,t,i),i+=24,n=cM(0,.5),Array.isArray(X)?FoE(X,(",
            • "188" : "C=>{TXT(n,20,C,t,i),i+=22})):TXT(n,20,X,t,i);return DEF(),CCX(),",
            • "189" : "C=>e},S=()=>{setTimeout((C=>{window.requestAnimationFrame(S);var",
            • "190" : " e=0,r=PX;CCX(),l(.97,WALL),CSC(SHDW),CSBr(55),RECT(CANV,0,0,r,r",
            • "191" : "),CSB(0),CVS(),_P&&(CXT(PX,0),CXS(-1,1)),CDI(art(),0,0,r,r),CVR(",
            • "192" : "),_P&&CDI(cer(),0,0,r,r),FoE(t,(C=>{C(_P,i==e),e++}))}),1e3/FPS)",
            • "193" : "},l=(C,e)=>{var t=window,i=t.innerWidth,r=t.innerHeight,n=i!=_W|",
            • "194" : "|r!=_H,X=min(i,r)*C,a=X/PX,c=min(2,max(devicePixelRatio??1,1));n",
            • "195" : "&&(cnv.width=_W=i*c,cnv.height=_H=r*c),CTR(1,0,0,1,0,0),BG(e),CX",
            • "196" : "T((i-X)/2,(r-X)/2),CXS(a,a)};AA(ctx,1),(()=>{X(0);var i,n,c=r.le",
            • "197" : "ngth,o='touch',l='mouse',T=C=>{C.preventDefault();var e=C.change",
            • "198" : "dTouches[0];return C.clientX=e.pageX,C.clientY=e.pageY,C},P=C=>{",
            • "199" : "var e=cnv.getBoundingClientRect(),t=CGT().invertSelf();n=C.clien",
            • "200" : "tX-e.left,y=C.clientY-e.top,_X=n*t.a+y*t.c+t.e,_Y=n*t.b+y*t.d+t.",
            • "201" : "f};for(p=C=>{_M=1,P(C),(C=>{C.preventDefault(),C.stopPropagation",
            • "202" : "()})(C),_P=_I(_X,_Y)},u=C=>{_P&&FoE(e,(C=>C())),_M=_P=0,P(C)},Fo",
            • "203" : "E([[o+'start',C=>{p(T(C))}],[o+'move',C=>{P(T(C))}],[o+'end',C=>",
            • "204" : "{u(T(C))}],[l+'down',p],[l+'move',P],[l+'up',u]],(C=>cnv.addEven",
            • "205" : "tListener(...C))),i=0;i,
            • "206" : ",22,r[i]+'k',i,X));t.push(C(130,800,25,CHAR(8595),0,(C=>(C=>{let",
            • "207" : " e=DCE('canvas'),t=PX*_R;CWH(e,t),CCX(e.getContext('2d')),RECT(C",
            • "208" : "ANV,0,0,t,t),ctx.drawImage(art(),0,0,t,t);let i=DCE('a');i.downl",
            • "209" : "oad=a.Name,i.href=e.toDataURL(),i.click(),CCX()})()))),S()})()}_",
            • "210" : "X=_Y=0,_R=1,_P=0,_M=0,_W=0,_H=0,_I=C=>1,I();,
            • "211" : "body>"
            ]
          }
        ]
        ,
      • "image" : "ipfs://QmdfAusTqtdsRYZhv2XsawmKN2LtYYxwDcmJT3GTxhSZ52",
      • "mediaType" : "image/png",
      • "medium" : "Fully On-Chain BlockGen.Art Canvas",
      • "name" : "Project Shift 004",
      • "piece" : 4,
      • "properties" :
        { โ€ฆ
        • "expanding_shape" : "none",
        • "glitch_count" : "1",
        • "node_count" : "256",
        • "node_theme" : "purple",
        • "oscillating_shape" : "none",
        • "runner_length" : "64",
        • "walker_shape" : "circle"
        }
        ,
      • "seed" : 9686,
      • "vendor" : "BlockGen.art"
      }
    ...cl1ck