0xf8d9056d…5d46·#21,639,827·view on Etherscan
https://sigils.matto.xyz</script></body></html>0123456789abcdef0123456789abcdef[PPPV[a5僃a<&V[a5a>%Wa>$a="V[[_a>2a?cWa?ba="V[[_a?pa@}Wa@|a="V[[_a@aC~WaC}a="V[[_aCaE%WaE$a="V[[_aE2aFeWaFda=&V[[aFqaHyWaHxa="V[[_aHaJ(WaJ'a="V[[_aJ5Pledge break detectedtokenData = {address: "PPPPPPPPPPPPV[_aQdata:image/svg+xml;base64,data:text/html;base64,{"artist": "Matto", "name": "Gua_", "description": "", "external_url": "", "animation_url": "", "attributes": data:application/json;base64,PPPPPV[_aXHaXCaX>aYJWaYIa="V[[_aYW{"trait_type": "Owned by Guardi_"}, {"trait_type": "Mono", "valu_"}, {"trait_type": "Invert", "va_"}, {"trait_type": "Fundamental"_"}, {"trait_type": "Ghost", "val_"}, {"trait_type": "EtherStyle",_"}, {"trait_type": "Core Rarity"_"}, {"trait_type": "Viewing Dist_ance", "value": "Invalid CharacterABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/3, 100%, 10%)" /></radialGradient></defs><rect x="0" y="0" width="1000" height="1000" fill="url(#gradient-bg)" /><text x="50%" y="45%" dominant-baseline="middle" text-anchor="middle" font-family="Times New Roman, serif" font-size="120" font-style="italic" fill="white">Guardian Sigil</text><text x="50%" y="60%" dominant-baseline="middle" text-anchor="middle" font-family="Times New Roman, serif" font-size="100" fill="white"># </text><g id="signature" style="stroke:white; stroke-width:3px; stroke-linecap:round; fill-opacity:0%"><polyline points="924,956 920,956 920,860 940,872 960,860 960,956 956,956" /><polyline points="928,902 940,872 952,902" stroke-linejoin="bevel" /><line x1="934" y1="888" x2="946" y2="888" /><line x1="920" y1="902" x2="960" y2="902" /><line x1="932" y1="902" x2="932" y2="927" /><line x1="948" y1="902" x2="948" y2="927" /><circle cx="940" cy="940" r="15" /></g></svg>Guardian Sigils are magical emblems, powered by $PLEDGE, that are unique to each Guardian. Summoning a sigil carries a cost, but each one fortifies a Guardian's resolve to uphold their vow. Sacrificing a sigil releases the $PLEDGE stored within back to the owner, but at a steep price: it permanently reduces the available supply of Guardian Sigils.const project="Guardian Sigils",version="5.0";console.log(`${project} 5.0 copyright Matto 2025`),console.log("URL PARAMETERS IN HTML MODE: address=0x...; bools: mono, fundamental, signature, invert, ghost, ether-style, still; numbers: stroke-width, distance");let address=tokenData.address,traits=tokenData.traits,guardian=ToF(traits[0]),mono=ToF(traits[1]),invert=ToF(traits[2]),fundamental=ToF(traits[3]),ghost=ToF(traits[4]),etherStyle=ToF(traits[5]),distance=traits[6];distance>10&&(distance=-distance/10);let strokeWidth,customStroke=!1,still=!1,showSignature=!1,backgroundColor="rgb(25,25,25)",strokeColor="white";const urlParams=new URLSearchParams(window.location.search),urlAddress=urlParams.get("address");if(urlAddress){let s=/^0x[0-9a-fA-F]{40}$/;s.test(urlAddress)&&(address=urlAddress)}const urlStill=urlParams.get("still");"true"==urlStill&&(still=!0);const urlGhost=urlParams.get("ghost");"true"==urlGhost&&(ghost=!0);const urlMono=urlParams.get("mono");"true"==urlMono&&(mono=!0);const urlEtherStyle=urlParams.get("ether-style");"true"==urlEtherStyle&&(etherStyle=!0);const urlStrokeWidth=urlParams.get("stroke-width");urlStrokeWidth&&!isNaN(urlStrokeWidth)&&(strokeWidth=urlStrokeWidth,customStroke=!0);const urlSignature=urlParams.get("signature");"true"==urlSignature&&(showSignature=!0);const urlfundamental=urlParams.get("fundamental");"true"==urlfundamental&&(fundamental=!0);const urlInvert=urlParams.get("invert");"true"==urlInvert?invert=!0:"false"==urlInvert&&(invert=!1);const urlDistance=urlParams.get("distance");urlDistance&&!isNaN(urlDistance)&&urlDistance<11&&(distance=parseInt(urlDistance));let width=1e3,height=1e3,mid=width/2;customStroke||(strokeWidth=Math.round(10*(1.1-distance/10))/10),invert&&(backgroundColor="rgb(230,230,230)",strokeColor="black");let hashArray=address.slice(2).split(""),shapes=hashArray.length,points=Array(shapes);for(let i=0;i<shapes;i++)points[i]=[];let spacing=Math.floor((width-(distance+1)*90)/shapes),bg=`<g id="background"><desc>Background Color</desc>`,mg1=`<g id="midground-1"><desc>Midground circles at nodes, stroke-width = 1x.</desc>`,mg2=`<g id="midground-2"><desc>Midground concentric circles and lines at center, stroke-width = 2x.</desc>`,fg=`<g id="foreground"><desc>Foreground shapes, stroke-width = 3x.</desc>`,svgAnima,svgStill,shapeGroups=Array(shapes),ss="stroke:",sws="stroke-width:",sos="stroke-opacity:",fos="fill-opacity:",pens=[`${ss}${strokeColor}; ${sws}${1*strokeWidth}px; ${sos}0.1;`,`${ss}${strokeColor}; ${sws}${2*strokeWidth}px; ${sos}0.075;`,`${ss}${strokeColor}; ${sws}${3*strokeWidth}px; ${sos}1.0;`,];ghost&&(pens=[`${ss}${strokeColor}; ${sws}${1*strokeWidth}px; ${sos}.5;`,`${ss}${strokeColor}; ${sws}${2*strokeWidth}px; ${sos}0.075;`,`${ss}${strokeColor}; ${sws}${3*strokeWidth}px; ${sos}0.1;`,]);let hue=parseInt(hashArray[0],16)/16*360;console.log(`STARTING HUE: ${hue}`);let saturation=60,lightness=50,color;setColor(hue,saturation,lightness);let svgStart=`<?xml version="1.0" encoding="utf-8"?><svg id="${project}" viewBox="0 0 ${width} ${width}" style="background-color:${backgroundColor}; ${ss}${strokeColor}; stroke-linecap:round; ${fos}0;" xmlns="http://www.w3.org/2000/svg">`,sig=signature();function setColor(s,t,e){color=`hsl(${s},${t}%,${e}%)`}function signature(){let s=`<g id="signature" style="${ss}${strokeColor}; ${sws}${3*strokeWidth}px; ${sos}1; stroke-linecap:round; ${fos}0;" ><desc>Signature, stroke-width = 3x.</desc>`;return s+=`<polyline points="924,956 920,956 920,860 940,872 960,860 960,956 956,956" />`,s+=`<polyline points="928,902 940,872 952,902" stroke-linejoin="bevel" />`,s+=L(934,888,946,888),s+=L(920,902,960,902),s+=L(932,902,932,927),s+=L(948,902,948,927),s+=C(940,940,15),s+="</g>"}for(let i=0;i<shapes;i++){shapeGroups[i]=`<g id="shape${i}">`;let t=spacing*(shapes-i)/2,e=1+parseInt(hashArray[i],16)%16;if(mg2+=C(mid,mid,t,`${pens[1]}`),shapeGroups[i]+=C(mid,mid,t,`${pens[1]}`),1==e)console.log(`Nothing drawn for shape ${i}, shifting color.`),setColor(hue+=22.5,saturation,lightness);else if(2==e)console.log(`Drawing a single circle for shape ${i}.`),points[i].push({mid,mid}),guardian&&(fg+=MC(mid,mid,t,4,`${pens[2]}`),shapeGroups[i]+=MC(mid,mid,t,4,`${pens[2]}`));else{if(inscribe(i,e,t),guardian){let o,r=`<polygon points="`;for(let n=0;n<e;n++){if(r+=`${points[i][n].x},${points[i][n].y} `,!fundamental){if(etherStyle){let l=(40-i)*strokeWidth/2.5,a=Math.atan2(points[i][n].y-mid,points[i][n].x-mid),d=points[i][n].x+l*Math.cos(a+Math.PI/2),g=points[i][n].y+l*Math.sin(a+Math.PI/2),p=points[i][n].x+l*Math.cos(a-Math.PI/2),u=points[i][n].y+l*Math.sin(a-Math.PI/2),c=Math.atan2(points[i][n].y-mid,points[i][n].x-mid),h=points[i][n].x+2*l*Math.cos(c+Math.PI),$=points[i][n].y+2*l*Math.sin(c+Math.PI),m=points[i][n].x+2*l*Math.cos(c),f=points[i][n].y+2*l*Math.sin(c);o=L(h,$,m,f,`${pens[0]}`),o+=`<polygon points="${d},${g} ${h},${$} ${p},${u} ${m},${f}" style="${pens[0]}" />`}else o=CC(points[i][n].x,points[i][n].y,4*strokeWidth,3,`${pens[0]}`);mg1+=o,shapeGroups[i]+=o,mg2+=o=L(points[i][n].x,points[i][n].y,mid,mid,`${pens[1]}`),shapeGroups[i]+=o}0==n?(fg+=o=L(points[i][n].x,points[i][n].y,points[i][e-1].x,points[i][e-1].y,`${pens[2]}`),shapeGroups[i]+=o):(fg+=o=L(points[i][n].x,points[i][n].y,points[i][n-1].x,points[i][n-1].y,`${pens[2]}`),shapeGroups[i]+=o)}bg+=o=`${r}" style="${sos}0; ${fos}.075; fill:${color};" />`,mono||(shapeGroups[i]+=o)}let k=Math.sqrt(Math.pow(points[i][0].x-points[i][1].x,2)+Math.pow(points[i][0].y-points[i][1].y,2));for(let y=0;y<e;y++)bg+=C(points[i][y].x,points[i][y].y,k,`${sos}0; ${fos}.02; fill:${color};`),mono||(shapeGroups[i]+=C(points[i][y].x,points[i][y].y,k,`${sos}0; ${fos}.02; fill:${color};`))}let _=.2*t,v=0,S=360;(e+i)%2==0&&(v=360,S=0),shapeGroups[i]+=`<animateTransform attributeName="transform" type="rotate" from="${v} ${mid} ${mid}" to="${S} ${mid} ${mid}" dur="${_}s" repeatCount="indefinite" />`,shapeGroups[i]+="</g>"}function updateSVG(){let s=document.getElementById(project);s&&s.remove(),svgAnima=svgStart,svgStill=svgStart,mono?svgStill+=`${mg1}${mg2}${fg}`:svgStill+=`${bg}${mg1}${mg2}${fg}`;for(let t=0;t<shapes;t++)svgAnima+=shapeGroups[t];showSignature?(svgStill+=`${sig}</svg>`,svgAnima+=`${sig}</svg>`):(svgStill+="</svg>",svgAnima+="</svg>"),still?document.body.insertAdjacentHTML("beforeend",svgStill):document.body.insertAdjacentHTML("beforeend",svgAnima)}function inscribe(s,t,e){for(let o=0;o<t;o++){let r=o/t*Math.PI*2;r-=Math.PI/2;let n=mid+e*Math.cos(r),l=mid+e*Math.sin(r);points[s].push({x:n,y:l})}}function C(s,t,e,o=""){e<0&&(e=0);let r=`<circle cx="${s}" cy="${t}" r="${e}" `;return""==o?r+="/>":r+=`style="${o}" />`,r}function FC(s,t,e,o=""){let r=`<g style="${o}"><desc>Filled Circle</desc>`,n=.9*strokeWidth;for(let l=e;l>0;l-=n)r+=C(s,t,l);return r+"</g>"}function MC(s,t,e,o,r=""){let n=`<g style="${r}"><desc>Multiple Circles</desc>`,l=.9*strokeWidth;for(let a=0;a<o;a++)n+=C(s,t,e),e-=l;return n+"</g>"}function CC(s,t,e,o,r=""){let n=`<g style="${r}"><desc>Concentric Circles</desc>`;for(let l=1;l<o;l++)n+=C(s,t,e*l);return n+"</g>"}function L(s,t,e,o,r=""){let n=`<line x1="${s}" y1="${t}" x2="${e}" y2="${o}" `;return""==r?n+="/>":n+=`style="${r}" />`,n}function ToF(s){return 1==s}function saveStrings(s,t,e){if("png"===e){let o=document.createElement("canvas"),r=o.getContext("2d");o.width=6*width,o.height=6*height,r.fillStyle=backgroundColor,r.fillRect(0,0,6*width,6*height);let n=new Image;n.onload=()=>{r.drawImage(n,0,0),o.toBlob(s=>{let o=document.createElement("a");o.href=URL.createObjectURL(s),o.download=`${t}.${e}`,o.click()})},n.src=`data:image/svg+xml;base64,${btoa(s)}`;return}let l=new Blob(s,{type:"image/svg+xml"}),a=document.createElement("a");a.href=URL.createObjectURL(l),a.download=`${t}.${e}`,a.click()}bg+="</g>",mg1+="</g>",mg2+="</g>",fg+="</g>",updateSVG(),document.addEventListener("keydown",s=>{let t=s.key.toUpperCase();if("A"===t||"S"===t||"P"===t){let e=`${project}_${address}${mono?"_mono":""}`;"A"===t?saveStrings([svgAnima],`${e}_ANIMA`,"svg"):"S"===t?saveStrings([svgStill],`${e}_STILL`,"svg"):"P"===t&&saveStrings([svgStill],`${e}_BITMA`,"png")}else"H"===t&&(showSignature=!showSignature,updateSVG())});<!DOCTYPE html><html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Guardian Sigil</title><style type="text/css" id="Guardian Sigil Generator">body {margin: 0;padding: 0;}canvas {padding: 0;margin: auto;display: block;position: absolute;top: 0;bottom: 0;left: 0;right: 0;}</style></head><body><script><?xml version="1.0" encoding="utf-8"?><svg id="Guardian Sigils" viewBox="0 0 1000 1000" xmlns="http://www.w3.org/2000/svg"><defs><radialGradient id="gradient-bg" cx="50%" cy="50%" r="60%" fx="50%" fy="50%"><stop offset="0%" stop-color="hsl(, 100%, 30%)" /><stop offset="100%" stop-color="hsl(