svg`<svg width="${w}" height="${h}" style="background: ${palette[0]}">
<style>
g {
mix-blend-mode: screen;
}
</style>
${(() => {
const prng = new PRNG(seed)
const diag = Math.sqrt(w ** 2 + h ** 2)
const rects = []
divideRect4(-diag/2, -diag/2, diag, diag, 6, rects, 70, () => prng.rand(100))
return `<g transform="translate(${w/2}, ${h/2}) rotate(${prng.rand(-90, 90)})">
${array(2).map(() => rects.map(r => {
return `<g transform="translate(${r.x}, ${r.y}) translate(${r.w / 2}, ${r.h / 2}) rotate(${prng.rand(3) * 90}) translate(${-r.w / 2}, ${-r.h / 2})">
${array(prng.rand(1, 4)).map(i => {
const color = palette[prng.rand(1, palette.length-1)]
return `<polygon
transform="translate(${r.w - r.w/(2 ** i)},${r.h - r.h/(2 ** i)}) scale(${1/(2 ** i)})"
points="0,0 ${r.w},0 0,${r.h}}"
fill="${color}"
stroke="none"
/>
<polygon
transform="translate(${r.w - r.w/(2 ** i)},${r.h - r.h/(2 ** i)}) scale(${1/(2 ** i)})"
points="${r.w/2},0 ${r.w/2},${r.h/2} 0,${r.h/2}}"
fill="${palette[0]}"
stroke="none"
/>`
}).join('')}
</g>`
}).join('')).join('')}
</g>`
})()}
</svg>`