Мне интересно кто нибудь изучал для чего линкед ин генерит динамические картинки в своем challenge:

Код по большей части один и тот же, просто меняют цвет:

Пример кода:
var canvas = document.createElement("canvas");
canvas.width = 100;
canvas.height = 100;
var context = canvas.getContext('2d');
context.fillStyle = "black";
context.fillRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
context.clearRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
context.fillRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
context.strokeRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
context.beginPath();
context.moveTo(50.0000000000,50.0000000000);
context.closePath();
context.fill("nonzero");
context.beginPath();
context.moveTo(0.0000000000,0.0000000000);
context.lineTo(100.0000000000,0.0000000000);
context.lineTo(100.0000000000,100.0000000000);
context.lineTo(0.0000000000,100.0000000000);
context.fill("nonzero");
context.beginPath();
context.arc(50.0000000000,50.0000000000,50.0000000000,0.0000000000,6.2831853072,true);
context.stroke();
context.fill("nonzero");
context.beginPath();
context.moveTo(0.0000000000,0.0000000000);
context.quadraticCurveTo(25.0000000000,25.0000000000,25.0000000000,62.5000000000);
context.bezierCurveTo(75.0000000000,37.0000000000,70.0000000000,25.0000000000,50.0000000000,25.0000000000);
var _Path2D = new Path2D();
_Path2D.arc(50.0000000000,50.0000000000,50.0000000000,0.0000000000,6.2831853072,false);
context.fill(_Path2D,"nonzero");
context.fillStyle = "rgba(216, 126, 100, -1)";
context.fillRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
context.shadowOffsetX = 2.0000000000;
context.shadowOffsetY = 2.0000000000;
context.shadowBlur = 2.0000000000;
context.shadowColor = "rgba(225, 50, 127, 0)";
context.font = "20px Arial";
context.fillStyle = "rgba(2, 44, 210, 0)";
context.fillText("Hel$&?6%){mZ+#@👺",200.0000000000,200.0000000000);
context.rotate(0.4363323130);
context.rotate(-0.4363323130);
context.transform(100.0000000000,100.0000000000,-100.0000000000,100.0000000000,0.0000000000,0.0000000000);
context.fillStyle = "rgba(228, 153, 10, 0)";
context.fillRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
context.resetTransform();
context.transform(1.0000000000,0.0000000000,0.0000000000,1.0000000000,0.0000000000,0.0000000000);
context.fillStyle = "black";
context.fillRect(0.0000000000,0.0000000000,100.0000000000,100.0000000000);
var str = canvas.toDataURL("image/png");
var hex = '';
for(var i=0;i<str.length;i++) {
var add = str.charCodeAt(i).toString(16);
if(add.length == 1)
{
hex += '0';
}
if(add.length == 0)
{
hex += '00';
}
hex += add;
}
return Promise.resolve(hex);