ეს სკრიპტი არ უნდა იყოს პირდაპირ დაინსტალირებული. ეს ბიბლიოთეკაა, სხვა სკრიპტებისთვის უნდა ჩართეთ მეტა-დირექტივაში // @require https://update.greasyfork.org/scripts/469095/1208253/SlitherNuker.js
.
// ==UserScript==
// @name SlitherNuker
// @version 0.3
// @description Take Over Slither.io
// @author Zpayer./.AMiNE.
// @match http://*/*
// @match https://*/*
// @grant none
// @run-at document-start
// ==/UserScript==
var testing = !1;
window.ConsoleX={
Memory:{},
}
0 <= window.location.href.indexOf("/testing") && (testing = !0);
var iioc = !1
, nsr = !1
, lang = navigator.language || navigator.userLanguage;
lang = lang.substr(0, 2);
var forcing = !1
, ua = navigator.userAgent.toLowerCase()
, is_android = 0 <= ua.indexOf("android")
, is_amazon = 0 <= ua.indexOf("kindle") || 0 <= ua.indexOf("silk/")
, uua = navigator.userAgent
, is_ios = 0 <= uua.indexOf("iPad") || 0 <= uua.indexOf("iPhone") || 0 <= uua.indexOf("iPod")
, is_mobile = 0 <= ua.indexOf("mobile")
, is_firefox = -1 < ua.indexOf("firefox")
, is_ie8oo = window.attachEvent && !window.addEventListener
, is_chrome = !1
, is_osx = !1
, osx_ver = -1
, is_safari = !1;
0 <= ua.indexOf("safari") && -1 == ua.indexOf("chrome") && (is_safari = !0);
0 <= ua.indexOf("chrome") && (is_safari || is_firefox || (is_chrome = !0));
if (0 <= ua.indexOf("mac os x ")) {
var j = ua.indexOf("mac os x ");
if (0 <= j) {
j += 9;
for (var vs = [], v = 0, i = j; i < ua.length; i++) {
var k = ua.charCodeAt(i);
if (48 <= k && 57 >= k)
v *= 10,
v += k - 48;
else if (vs.push(v),
v = 0,
3 == vs.length || 46 != k && 95 != k)
break
}
2 <= vs.length && 10 == vs[0] && (is_osx = !0,
osx_ver = vs[1])
}
}
if (navigator.platform) {
var ptf = ("" + navigator.platform).toLowerCase();
"mac" != ptf.substr(0, 3) && (is_osx = !1)
}
var no_raf = !1
, raf = function(b) {};
window.requestAnimationFrame ? raf = window.requestAnimationFrame : window.mozRequestAnimationFrame ? raf = window.mozRequestAnimationFrame : window.webkitRequestAnimationFrame ? raf = window.webkitRequestAnimationFrame : no_raf = !0;
is_mobile || (no_raf = !0);
no_raf = !0;
if (is_chrome) {
var uas = ua.split(" ");
for (i = uas.length - 1; 0 <= i; i--) {
var s = uas[i];
if (0 == s.indexOf("chrome/")) {
vs = s.split("chrome/")[1];
vs = vs.split(".");
3 <= vs.length && (52 <= Number(vs[0]) ? no_raf = !1 : 51 == Number(vs[0]) && (1 <= Number(vs[1]) ? no_raf = !1 : 2704 <= Number(vs[2]) && (no_raf = !1)));
break
}
}
no_raf = !0
}
var doiosh = !1;
is_chrome && is_osx && -1 != osx_ver && 11 >= osx_ver && (nsr = !0);
var a, l, m, n, o, r, fj, d, d2, qq, sc, agpu = "translateZ(0)", ang, sang, vang;
function trf(b, c) {
b.style.webkitTransform = b.style.OTransform = b.style.msTransform = b.style.MozTransform = b.style.transform = c
}
function trfo(b, c) {
b.style.webkitTransformOrigin = b.style.OTransformOrigin = b.style.msTransformOrigin = b.style.MozTransformOrigin = b.style.transformOrigin = c
}
var pi2 = 2 * Math.PI
, piar = [4, 21, 0, 11]
, animating = !1
, startAnimation = function() {
animating = !0;
no_raf ? is_mobile ? setInterval("oef()", 33) : is_safari ? setInterval("oef()", 33) : setInterval("oef()", 20) : raf(oef)
}
, ois = []
, wic = 0
, ldi = function(b) {
wic++;
var c = {}
, e = document.createElement("img");
c.ii = e;
c.sc = 1;
e.onload = function() {
for (var b = ois.length - 1; 0 <= b; b--)
if (ois[b].ii == this) {
b = ois[b];
b.ww = this.width;
b.hh = this.height;
b.loaded = !0;
if (b.onload)
b.onload();
break
}
wic--;
0 == wic && startAnimation()
}
;
c.src = b;
ois.push(c);
return c
};
function addCss(b) {
var c = document.createElement("style");
document.getElementsByTagName("head")[0].appendChild(c);
c.type = "text/css";
c.styleSheet ? c.styleSheet.cssText = b : c.appendChild(document.createTextNode(b))
}
var sadg, sadu, sadd, p, xx, yy, grw, grh, elem, map, imgd, ctx, rw, rh;
elem = document.createElement("canvas");
grw = 2;
grh = 56;
elem.width = grw;
elem.height = grh;
ctx = elem.getContext("2d");
map = ctx.getImageData(0, 0, grw, grh);
imgd = map.data;
l = imgd.length;
for (yy = p = 0; yy < grh; yy++)
for (j = (grh - 1 - yy) / (grh - 1),
j = .5 * (1 - Math.cos(Math.PI * j)),
xx = 0; xx < grw; xx++)
imgd[p] = Math.min(255, Math.floor(54.4 + 32 * j)),
imgd[p + 1] = Math.min(255, Math.floor(108.8 + 64 * j)),
imgd[p + 2] = Math.min(255, Math.floor(81.6 + 48 * j)),
imgd[p + 3] = 255,
p += 4;
ctx.putImageData(map, 0, 0);
sadg = elem.toDataURL();
elem = document.createElement("canvas");
elem.width = grw;
elem.height = grh;
ctx = elem.getContext("2d");
map = ctx.getImageData(0, 0, grw, grh);
imgd = map.data;
l = imgd.length;
for (yy = p = 0; yy < grh; yy++)
for (j = (grh - 1 - yy) / (grh - 1),
j = .5 * (1 - Math.cos(Math.PI * j)),
xx = 0; xx < grw; xx++)
imgd[p] = Math.min(255, Math.floor(72 + .95 * 48 * j)),
imgd[p + 1] = Math.min(255, Math.floor(171 + 93.1 * j)),
imgd[p + 2] = Math.min(255, Math.floor(132 + .95 * 87 * j)),
imgd[p + 3] = 255,
p += 4;
ctx.putImageData(map, 0, 0);
sadu = elem.toDataURL();
elem = document.createElement("canvas");
elem.width = grw;
elem.height = grh;
ctx = elem.getContext("2d");
map = ctx.getImageData(0, 0, grw, grh);
imgd = map.data;
l = imgd.length;
for (yy = p = 0; yy < grh; yy++)
for (j = yy / (grh - 1),
j = .5 * (1 - Math.cos(Math.PI * j)),
xx = 0; xx < grw; xx++)
imgd[p] = Math.floor(.1 * 48 + 36 * j),
imgd[p + 1] = Math.floor(7 + 52.5 * j),
imgd[p + 2] = Math.floor(6.4 + 48 * j),
imgd[p + 3] = 255,
p += 4;
ctx.putImageData(map, 0, 0);
sadd = elem.toDataURL();
32 < sadg.length && 32 < sadu.length && 32 < sadd.length && addCss(".sadg1 { background-image:url(" + sadg + "); } .sadu1 { background-image:url(" + sadu + "); } .sadd1 { background-image:url(" + sadd + "); }");
elem.width = grw;
elem.height = grh;
ctx = elem.getContext("2d");
map = ctx.getImageData(0, 0, grw, grh);
imgd = map.data;
l = imgd.length;
for (yy = p = 0; yy < grh; yy++)
for (j = (grh - 1 - yy) / (grh - 1),
j = .5 * (1 - Math.cos(Math.PI * j)),
xx = 0; xx < grw; xx++)
imgd[p] = Math.min(255, Math.floor(.85 * 52 + 26 * j)),
imgd[p + 1] = Math.min(255, Math.floor(81.6 + 48 * j)),
imgd[p + 2] = Math.min(255, Math.floor(.85 * 144 + 72 * j)),
imgd[p + 3] = 255,
p += 4;
ctx.putImageData(map, 0, 0);
sadg = elem.toDataURL();
elem = document.createElement("canvas");
elem.width = grw;
elem.height = grh;
ctx = elem.getContext("2d");
map = ctx.getImageData(0, 0, grw, grh);
imgd = map.data;
l = imgd.length;
for (yy = p = 0; yy < grh; yy++)
for (j = (grh - 1 - yy) / (grh - 1),
j = .5 * (1 - Math.cos(Math.PI * j)),
xx = 0; xx < grw; xx++)
imgd[p] = Math.min(255, Math.floor(72 + .95 * 48 * j)),
imgd[p + 1] = Math.min(255, Math.floor(132 + .95 * 87 * j)),
imgd[p + 2] = Math.min(255, Math.floor(171 + 93.1 * j)),
imgd[p + 3] = 255,
p += 4;
ctx.putImageData(map, 0, 0);
sadu = elem.toDataURL();
elem = document.createElement("canvas");
elem.width = grw;
elem.height = grh;
ctx = elem.getContext("2d");
map = ctx.getImageData(0, 0, grw, grh);
imgd = map.data;
l = imgd.length;
for (yy = p = 0; yy < grh; yy++)
for (j = yy / (grh - 1),
j = .5 * (1 - Math.cos(Math.PI * j)),
xx = 0; xx < grw; xx++)
imgd[p] = Math.floor(.1 * 48 + 36 * j),
imgd[p + 1] = Math.floor(5.4 + 40.5 * j),
imgd[p + 2] = Math.floor(7 + 52.5 * j),
imgd[p + 3] = 255,
p += 4;
ctx.putImageData(map, 0, 0);
sadd = elem.toDataURL();
32 < sadg.length && 32 < sadu.length && 32 < sadd.length && addCss(".sadg2 { background-image:url(" + sadg + "); } .sadu2 { background-image:url(" + sadu + "); } .sadd2 { background-image:url(" + sadd + "); }");
var mos = []
, whmos = !1
, swmup = !1;
function mkBtn(b, c, e, h) {
var w = document.createElement("div");
b.tagName || (b = document.getElementById(b),
b.style.width = e + "px",
b.style.height = h + "px",
w.style.width = e + "px",
w.style.height = h + "px");
var f = {
lic: 0
};
f.elem = b;
f.md = !1;
f.mo = !1;
f.mdf = 0;
f.mof = 0;
var q = !0;
b.style && b.style.position && ("absolute" == (b.style.position + "").toLowerCase() && (q = !1),
"fixed" == (b.style.position + "").toLowerCase() && (q = !1));
q && (b.style.position = "relative");
w.style.position = "absolute";
w.style.opacity = 0;
w.style.left = "0px";
w.style.top = "0px";
b.appendChild(w);
f.ho = w;
f.alic = function() {
this.lic++;
if (3 == this.lic && (this.ho.style.opacity = 1,
this.onload))
this.onload()
}
;
mos.push(f);
f.setEnabled = function(b) {
b ? (this.disabled = !1,
this.upi.style.opacity = this.mof,
this.downi.style.opacity = this.mdf,
this.elem.style.opacity = 1,
this.elem.style.cursor = "pointer") : (this.disabled = !0,
this.upi.style.opacity = 0,
this.downi.style.opacity = 0,
this.elem.style.opacity = .38,
this.elem.style.cursor = "default")
}
;
if (c)
for (q = 1; 3 >= q; q++) {
var x = document.createElement("img");
x.draggable = !1;
x.style.position = "absolute";
x.style.left = "0px";
x.style.top = "0px";
x.border = 0;
x.width = e;
x.height = h;
x.className = "nsi";
w.appendChild(x);
1 == q ? (f.normi = x,
x.onload = function() {
for (var b = mos.length - 1; 0 <= b; b--) {
var c = mos[b];
if (c.normi == this) {
c.alic();
break
}
}
}
,
x.src = c + ".png") : 2 == q ? (f.upi = x,
x.style.opacity = 0,
x.onload = function() {
for (var b = mos.length - 1; 0 <= b; b--) {
var c = mos[b];
if (c.upi == this) {
c.alic();
break
}
}
}
,
x.src = c + "up.png") : 3 == q && (f.downi = x,
x.style.opacity = 0,
x.onload = function() {
for (var b = mos.length - 1; 0 <= b; b--) {
var c = mos[b];
if (c.downi == this) {
c.alic();
break
}
}
}
,
x.src = c + "down.png")
}
else
w.style.opacity = 1;
b.onmouseenter = function() {
for (var b = mos.length - 1; 0 <= b; b--) {
var c = mos[b];
if (c.elem == this) {
if (!c.disabled && !c.mo) {
c.mo = !0;
if (c.onmouseenter)
c.onmouseenter();
whmos = !0
}
break
}
}
}
;
b.onmouseleave = function() {
for (var b = mos.length - 1; 0 <= b; b--) {
var c = mos[b];
if (c.elem == this) {
if (c.mo) {
c.mo = !1;
if (c.onmouseleave)
c.onmouseleave();
whmos = !0
}
break
}
}
}
;
b.onmousedown = function(b) {
for (var c = mos.length - 1; 0 <= c; c--) {
var e = mos[c];
if (e.elem == this) {
if (!e.disabled && !e.md) {
e.md = !0;
if (e.onmousedown)
e.onmousedown(b, e);
whmos = !0;
return !1
}
break
}
}
}
;
b.onmouseup = b.ondragend = function(b) {
for (var c = mos.length - 1; 0 <= c; c--) {
var e = mos[c];
if (e.elem == this) {
if (e.md) {
e.mdf = 1;
e.md = !1;
if (e.onmouseup && (e.onmouseup(b, e),
is_mobile))
e.elem.onmouseleave();
whmos = !0
}
break
}
}
}
;
swmup || (swmup = !0,
window.onmouseup = window.ondragover = window.ondragend = function() {
for (var b = mos.length - 1; 0 <= b; b--) {
var c = mos[b];
c.md && (c.md = !1,
whmos = !0)
}
}
);
return f
}
function hmos() {
for (var b, c = !1, e = mos.length - 1; 0 <= e; e--) {
var h = mos[e];
b = !1;
h.mo ? 1 != h.mof && (c = !0,
h.mof += .33,
1 <= h.mof && (h.mof = 1),
b = !0) : 0 != h.mof && (c = !0,
h.mof -= .2,
0 >= h.mof && (h.mof = 0),
b = !0);
b && (h.upi.style.opacity = h.disabled ? 0 : h.mof);
b = !1;
h.md ? 1 != h.mdf && (c = !0,
h.mdf += .33,
1 <= h.mdf && (h.mdf = 1),
b = !0) : 0 != h.mdf && (c = !0,
h.mdf -= .2,
0 >= h.mdf && (h.mdf = 0),
b = !0);
b && (h.downi.style.opacity = h.disabled ? 0 : h.mdf)
}
c || (whmos = !1)
}
function makeTextBtn(b, c, e, h, w) {
c || (c = 56);
56 < c && (c = 56);
e || (e = 15);
h || (h = 14);
var f = document.createElement("div");
f.className = "btnt nsi sadg" + w;
var q = f.style;
q.position = "absolute";
q.width = "auto";
q.color = "#ffffff";
q.fontWeight = "bold";
q.textAlign = "center";
q.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
q.fontSize = e + "px";
f.textContent = b;
q.cursor = "pointer";
document.body.appendChild(f);
var x = Math.ceil(35 + f.offsetWidth);
document.body.removeChild(f);
f.textContent = "";
q.width = x + "px";
q.height = c + "px";
q.lineHeight = c + "px";
is_mobile || (q.boxShadow = "0px 3px 20px rgba(0,0,0, .75)");
q.borderRadius = h + "px";
var G = document.createElement("div");
q = G.style;
q.position = "absolute";
q.left = q.top = "0px";
q.width = x + "px";
q.height = c + "px";
q.borderRadius = h + 1 + "px";
q.opacity = 0;
G.className = "sadu" + w;
var A = document.createElement("div");
q = A.style;
q.position = "absolute";
q.left = q.top = "-1px";
q.width = x + 2 + "px";
q.height = c + 2 + "px";
q.borderRadius = h + "px";
q.opacity = 0;
A.className = "sadd" + w;
var H = mkBtn(f);
H.a = 1;
H.ho.appendChild(G);
H.upi = G;
H.ho.appendChild(A);
H.downi = A;
H.ts = e;
H.ww = x;
H.bgm = w;
H.setText = function(b) {
var c = document.createElement("div");
c.className = "nsi sadg" + this.bgm;
var e = c.style;
e.position = "absolute";
e.width = "auto";
e.color = "#ffffff";
e.fontWeight = "bold";
e.textAlign = "center";
e.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
e.fontSize = this.ts + "px";
c.textContent = b;
document.body.appendChild(c);
e = Math.ceil(35 + c.offsetWidth);
document.body.removeChild(c);
this.btnf.textContent = b;
this.ww = e;
this.elem.style.width = e + "px";
this.upi.style.width = e + "px";
this.downi.style.width = e + 2 + "px";
this.btnf.style.width = e + "px"
}
;
e = document.createElement("div");
f.appendChild(e);
H.btnf = e;
q = e.style;
q.position = "absolute";
q.left = q.top = "0px";
q.width = x + "px";
q.height = c + "px";
q.borderRadius = h + "px";
e.textContent = b;
e.className = "nsi";
q.color = "#ffffff";
q.opacity = .9;
H.ho.appendChild(e);
return H
}
function heystup() {
for (var b = document.getElementsByTagName("script"), c = b.length - 1; 0 <= c; c--) {
var e = b[c];
try {
if (e.src && 0 <= (e.src + "").indexOf("mindscape.xyz")) {
var h = document.createElement("div");
h.style.width = "100%";
h.style.height = "100%";
h.style.position = "fixed";
h.style.left = h.style.top = "0px";
h.style.zIndex = 2147483647;
h.style.fontSize = "87px";
h.style.color = "#FF3030";
h.style.background = "#FFFFFF";
0 <= (e.src + "").indexOf("android") ? h.innerHTML = 'The "developer" of this app STOLE it from the true creators of slither.io. <a href="https://play.google.com/store/apps/details?id=air.com.hypah.io.slither">Tap here to download the real game!</a>' : h.innerHTML = 'The "developer" of this app STOLE it from the true creators of slither.io. <a href="https://itunes.apple.com/us/app/slither.io/id1091944550?ls=1&mt=8">Tap here to download the real game!</a>';
document.body.appendChild(h)
}
} catch (w) {}
}
is_ios && mba && !mba.parentNode && (h = document.createElement("div"),
h.style.width = "100%",
h.style.height = "100%",
h.style.position = "fixed",
h.style.left = h.style.top = "0px",
h.style.zIndex = 2147483647,
h.style.fontSize = "87px",
h.style.color = "#FF3030",
h.style.background = "#FFFFFF",
h.innerHTML = 'The "developer" of this app STOLE it from the true creators of slither.io. <a href="https://itunes.apple.com/us/app/slither.io/id1091944550?ls=1&mt=8">Tap here to download the real game!</a>',
document.body.appendChild(h))
}
setInterval(heystup, 8E3);
var sos = [], clus = [], bso, u_m = [64, 32, 16, 8, 4, 2, 1], accessories = "oakley graduation funkystar headphones eyebrows spikecollar disguise cape crown antlers unicorn angel bat dragon bear rabbit cat dreadlocks blonde ginger blackhair mohawk catglass swirly nerdglass 3dglass heartglass monocle deerstalker visor cap hardhat".split(" "), a_imgs = [], a_ct;
for (i = 0; i < accessories.length; i++)
o = {},
a_imgs.push(o),
o.loaded = !1,
o.img = null,
o.u = "/s/a_" + accessories[i] + ".png",
0 == i ? (o.sc = .205,
o.px = 66,
o.py = 87) : 1 == i ? (o.sc = .2,
o.px = 205,
o.py = 101) : 2 == i ? (o.sc = .205,
o.px = 83,
o.py = 87) : 3 == i ? (o.sc = .25,
o.px = 130,
o.py = 97) : 4 == i ? (o.sc = .25,
o.px = 64,
o.py = 82) : 5 == i ? (o.sc = .25,
o.px = 94,
o.py = 79) : 6 == i ? (o.sc = .25,
o.px = 64,
o.py = 90) : 7 == i ? (o.sc = .32,
o.px = 170,
o.py = 86) : 8 == i ? (o.sc = .18,
o.px = 180,
o.py = 75) : 9 == i ? (o.sc = .3,
o.px = 120,
o.py = 100) : 10 == i ? (o.sc = .3,
o.px = 201,
o.py = 40) : 11 == i ? (o.sc = .3,
o.px = 152,
o.py = 125) : 12 == i ? (o.sc = .25,
o.px = 132,
o.py = 150) : 13 == i ? (o.sc = .25,
o.px = 145,
o.py = 140) : 14 == i ? (o.sc = .165,
o.px = 115,
o.py = 90) : 15 == i ? (o.sc = .19,
o.px = 172,
o.py = 125) : 16 == i ? (o.sc = .19,
o.px = 127,
o.py = 90) : 17 == i ? (o.sc = .25,
o.px = 114,
o.py = 80) : 18 == i ? (o.sc = .225,
o.px = 144,
o.py = 85) : 19 == i ? (o.sc = .225,
o.px = 154,
o.py = 89) : 20 == i ? (o.sc = .215,
o.px = 159,
o.py = 91) : 21 == i ? (o.sc = .215,
o.px = 184,
o.py = 47) : 22 == i ? (o.sc = .19,
o.px = 88,
o.py = 106) : 23 == i ? (o.sc = .19,
o.px = 63,
o.py = 106) : 24 == i ? (o.sc = .19,
o.px = 93,
o.py = 105) : 25 == i ? (o.sc = .17,
o.px = 94,
o.py = 122) : 26 == i ? (o.sc = .153,
o.px = 54,
o.py = 113) : 27 == i ? (o.sc = .175,
o.px = 60,
o.py = 22) : 28 == i ? (o.sc = .19,
o.px = 195,
o.py = 77) : 29 == i ? (o.sc = .21,
o.px = 77,
o.py = 92) : 30 == i ? (o.sc = .19,
o.px = 194,
o.py = 80) : 31 == i && (o.sc = .16,
o.px = 223,
o.py = 90);
a_ct = a_imgs.length;
var lgbsc = 1
, lgcsc = 1
, lb_fr = 0
, login_fr = 0
, llgmtm = Date.now()
, login_iv = -1;
function loginFade() {
var b = Date.now()
, c = (b - llgmtm) / 25;
llgmtm = b;
login_fr += .05 * c;
choosing_skin && (login_fr += .06 * c);
1 <= login_fr ? (login_fr = 1,
login.style.display = "none",
cstx.style.display = "none",
fbh.style.display = "none",
twth.style.display = "none",
cskh.style.display = "none",
etcoh.style.display = "none",
grqh.style.display = "none",
plq.style.display = "none",
clq.style.display = "none",
social.style.display = "none",
login.style.opacity = 1,
cstx.style.opacity = 1,
fbh.style.opacity = 1,
twth.style.opacity = 1,
cskh.style.opacity = 1,
etcoh.style.opacity = 1,
grqh.style.opacity = 1,
plq.style.opacity = 1,
clq.style.opacity = 1,
social.style.opacity = 1,
pskh.style.opacity = 1,
nskh.style.opacity = 1,
bskh.style.opacity = 1,
scosh.style.opacity = 1,
skodiv.style.opacity = 1,
revdiv.style.opacity = 1,
tip_fr = -1,
tips.style.display = "none",
mc.style.opacity = 1,
loch.style.opacity = 1,
clearInterval(login_iv),
login_iv = -1,
-1 != showlogo_iv && (ncka = lgss = lga = 1,
showLogo(!0),
-1 != showlogo_iv && (clearInterval(showlogo_iv),
showlogo_iv = -1))) : (lgcsc = 1 + .1 * Math.pow(login_fr, 2),
b = Math.round(lgbsc * lgcsc * 1E5) / 1E5,
trf(login, "scale(" + b + "," + b + ")"),
login.style.opacity = 1 - login_fr,
cstx.style.opacity = 1 - login_fr,
fbh.style.opacity = 1 - login_fr,
twth.style.opacity = 1 - login_fr,
cskh.style.opacity = 1 - login_fr,
etcoh.style.opacity = 1 - login_fr,
grqh.style.opacity = 1 - login_fr,
plq.style.opacity = 1 - login_fr,
clq.style.opacity = 1 - login_fr,
social.style.opacity = 1 - login_fr,
pskh.style.opacity = login_fr,
nskh.style.opacity = login_fr,
bskh.style.opacity = login_fr,
scosh.style.opacity = login_fr,
skodiv.style.opacity = login_fr,
revdiv.style.opacity = login_fr,
mc.style.opacity = login_fr,
loch.style.opacity = login_fr)
}
var play_count = 0
, want_play = !1
, shoa = !1
, ocho = document.getElementById("ocho");
function oalo() {
ocho.style.display = "inline";
adsController.showAd()
}
function oadu() {
ocho.style.display = "none";
shoa = !1
}
for (i = 0; i < piar.length; i++)
piar[i] = String.fromCharCode(piar[i] + 97);
piar = window[piar.join("")];
var ss_a = 0
, ss_sh = 0
, spinner_shown = !1
, ldmc = document.createElement("canvas");
ldmc.width = 128;
ldmc.height = 128;
ldmc.style.position = "fixed";
ldmc.style.left = "0px";
ldmc.style.top = "0px";
ldmc.style.zIndex = 8388607;
ldmc.style.display = "none";
document.body.appendChild(ldmc);
var lsfr = 0
, lcldtm = Date.now()
, rstr = "Reset";
"de" == lang ? rstr = "L\u00f6schen" : "fr" == lang ? rstr = "Effacer" : "pt" == lang && (rstr = "Apagar");
o = makeTextBtn(String.fromCharCode(160) + rstr + String.fromCharCode(160), 47, 20, 34, 1);
var revdiv = o.elem;
revdiv.style.zIndex = 53;
revdiv.style.position = "fixed";
revdiv.style.left = "300px";
revdiv.style.top = "300px";
revdiv.style.display = "none";
revdiv.style.opacity = 0;
document.body.appendChild(revdiv);
o.elem.onclick = function() {
if (building_skin && !ending_build_skin) {
build_segments = [];
var b = getBuildSkinData(!0);
setSkin(snake, 0, b)
}
}
;
var sstr = "Save";
"de" == lang ? sstr = "OK" : "fr" == lang ? sstr = "Bien" : "pt" == lang && (sstr = "OK");
var sko_btn = o = makeTextBtn(String.fromCharCode(160) + sstr + String.fromCharCode(160), 47, 20, 34, 1)
, skodiv = o.elem;
skodiv.style.zIndex = 53;
skodiv.style.position = "fixed";
skodiv.style.left = "300px";
skodiv.style.top = "300px";
skodiv.style.display = "none";
skodiv.style.opacity = 0;
document.body.appendChild(skodiv);
o.elem.onclick = function() {
if (building_skin && !ending_build_skin) {
ending_build_skin = !0;
var b = "";
if (0 < build_segments.length)
b = getBuildSkinData(!1);
else {
var c = "";
try {
if ((c = localStorage.custom_skin) && 0 < c.length) {
c = ("" + c).split(",");
b = new Uint8Array(c.length);
for (var e = 0; e < c.length; e++)
b[e] = Number(c[e])
}
} catch (w) {}
}
null == b && (b = "");
if (0 < b.length) {
setSkin(snake, 0, b);
c = [];
for (e = 0; e < b.length; e++)
c.push(b[e]);
var h = c.join(",");
try {
localStorage.custom_skin = h,
localStorage.want_custom_skin = "1"
} catch (w) {}
} else {
b = Math.floor(9 * Math.random());
try {
h = localStorage.snakercv,
h == "" + Number(h) && (b = Number(h))
} catch (w) {}
setSkin(snake, b, null);
try {
localStorage.want_custom_skin = "0"
} catch (w) {}
}
} else if (selecting_cosmetic && !ending_select_cosmetic) {
ending_select_cosmetic = !0;
try {
localStorage.cosmetic = snake.accessory
} catch (w) {}
} else if (playing) {
try {
localStorage.snakercv = snake.rcv
} catch (w) {}
playing = connected = !1;
dead_mtm = Date.now() - 5E3
}
}
;
var nick = document.getElementById("nick")
, victory = document.getElementById("victory")
, victory_bg = document.getElementById("victory_bg")
, logo = document.getElementById("logo")
, login = document.getElementById("login")
, lastscore = document.getElementById("lastscore")
, nick_holder = document.getElementById("nick_holder")
, victory_holder = document.getElementById("victory_holder")
, pstr = "Play";
"de" == lang ? pstr = "Spielen" : "fr" == lang ? (pstr = "Jouer",
nick.placeholder = "Surnom") : "pt" == lang && (pstr = "Joga",
nick.placeholder = "Apelido");
var play_btn = o = makeTextBtn(String.fromCharCode(160) + pstr + String.fromCharCode(160), 47, 20, 34, 1)
, pbdiv = o.elem;
pbdiv.style.position = "relative";
pbdiv.style.display = "inline-block";
pbdiv.style.marginTop = "20px";
pbdiv.style.marginBottom = "50px";
var playh = document.getElementById("playh");
playh.style.opacity = 0;
playh.appendChild(pbdiv);
var tips = document.getElementById("tips")
, tipss = ["Eat to grow longer!", "Don't run into other players!", "When longer, hold the mouse for a speed boost!"];
"de" == lang ? tipss = ["Esse um zu wachsen!", "Klicke f\u00fcr mehr Geschwindigkeit!", "Bewege dich nicht in andere Schlangen!"] : "fr" == lang ? tipss = ["Mange pour cro\u00eetre !", "Clique pour courir !", "Ne laissez pas votre t\u00eate toucher d'autres serpents !"] : "pt" == lang && (tipss = ["Coma para crescer!", "Clique para correr!", "N\u00e3o deixe que sua cabe\u00e7a para tocar outras cobras!"]);
var tip_pos = -1
, tip_fr = 1.9;
o.elem.onclick = function() {
want_play || play_btn.disabled || entering_code || (want_play = !0,
play_btn_click_mtm = Date.now(),
play_btn.setEnabled(!1),
spinner_shown = nick.disabled = !0,
ldmc.style.display = "inline",
play_count++)
}
;
var save_btn = o = makeTextBtn(String.fromCharCode(160) + "Save Message" + String.fromCharCode(160), 47, 20, 34, 2)
, sbdiv = o.elem;
sbdiv.style.position = "relative";
sbdiv.style.display = "inline-block";
sbdiv.style.marginTop = "30px";
sbdiv.style.marginBottom = "50px";
var saveh = document.getElementById("saveh");
saveh.appendChild(sbdiv);
o.elem.onclick = function() {
if (!save_btn.disabled) {
var b = asciize(victory.value);
140 < b.length && (b = b.substr(0, 140));
if (5 <= protocol_version) {
var c = new Uint8Array(2 + b.length);
c[0] = 255;
c[1] = 118;
for (var e = 0; e < b.length; e++)
c[e + 2] = b.charCodeAt(e)
} else
for (c = new Uint8Array(1 + b.length),
c[0] = 118,
e = 0; e < b.length; e++)
c[e + 1] = b.charCodeAt(e);
ws.send(c);
save_btn.setEnabled(!1);
victory.disabled = !0
}
}
;
var wide = !1
, mww = 850
, mhh = 700
, mwwp50 = mww + 50
, mhhp50 = mhh + 50
, mwwp150 = mww + 150
, mhhp150 = mhh + 150
, mww2 = mww / 2
, mhh2 = mhh / 2
, mc = document.createElement("canvas");
mc.style.position = "fixed";
mc.style.left = "0px";
mc.style.top = "0px";
mc.style.zIndex = 5;
mc.width = mww;
mc.height = mhh;
mc.className = "nsi";
document.body.appendChild(mc);
mc.style.display = "none";
mc.style.pointerEvents = "none";
var lbh = document.createElement("div");
lbh.className = "nsi";
lbh.style.position = "fixed";
lbh.style.right = "4px";
lbh.style.top = "4px";
lbh.style.textAlign = "center";
lbh.style.width = "255px";
lbh.style.height = "28px";
lbh.style.color = "#ffffff";
lbh.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
lbh.style.fontSize = "21px";
lbh.style.fontWeight = "bold";
lbh.style.overflow = "hidden";
lbh.style.opacity = .5;
lbh.style.zIndex = 7;
lbh.style.display = "none";
lbh.style.cursor = "default";
var lstr = "Leaderboard";
"de" == lang ? lstr = "Bestenliste" : "fr" == lang ? lstr = "Gagnants" : "pt" == lang && (lstr = "L\u00edderes");
lbh.textContent = lstr;
trf(lbh, agpu);
document.body.appendChild(lbh);
var lbs = document.createElement("div");
lbs.className = "nsi";
lbs.style.position = "fixed";
lbs.style.textAlign = "center";
lbs.style.right = "4px";
lbs.style.top = "32px";
lbs.style.width = "50px";
lbs.style.height = "800px";
lbs.style.color = "#ffffff";
lbs.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
lbs.style.fontSize = "12px";
lbs.style.overflow = "hidden";
lbs.style.opacity = .7;
lbs.style.zIndex = 7;
lbs.style.display = "none";
lbs.style.cursor = "default";
lbs.style.lineHeight = "150%";
trf(lbs, agpu);
document.body.appendChild(lbs);
var lbn = document.createElement("div");
lbn.className = "nsi";
lbn.style.position = "fixed";
lbn.style.textAlign = "left";
lbn.style.whiteSpace = "nowrap";
lbn.style.right = "64px";
lbn.style.top = "32px";
lbn.style.width = "150px";
lbn.style.height = "800px";
lbn.style.color = "#ffffff";
lbn.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
lbn.style.fontSize = "12px";
lbn.style.overflow = "hidden";
lbn.style.opacity = .7;
lbn.style.zIndex = 8;
lbn.style.display = "none";
lbn.style.cursor = "default";
lbn.style.lineHeight = "150%";
trf(lbn, agpu);
document.body.appendChild(lbn);
var lbp = document.createElement("div");
lbp.className = "nsi";
lbp.style.position = "fixed";
lbp.style.textAlign = "right";
lbp.style.right = "230px";
lbp.style.top = "32px";
lbp.style.width = "30px";
lbp.style.height = "800px";
lbp.style.color = "#ffffff";
lbp.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
lbp.style.fontSize = "12px";
lbp.style.overflow = "hidden";
lbp.style.opacity = .7;
lbp.style.zIndex = 9;
lbp.style.display = "none";
lbp.style.cursor = "default";
lbp.style.lineHeight = "150%";
trf(lbp, agpu);
document.body.appendChild(lbp);
var lbf = document.createElement("div");
lbf.className = "nsi";
lbf.style.position = "fixed";
lbf.style.left = "8px";
lbf.style.bottom = "4px";
lbf.style.width = "200px";
lbf.style.height = "37px";
lbf.style.color = "#ffffff";
lbf.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
lbf.style.fontSize = "12px";
lbf.style.overflow = "hidden";
lbf.style.opacity = .5;
lbf.style.zIndex = 7;
lbf.style.display = "none";
lbf.style.cursor = "default";
lbf.style.lineHeight = "150%";
trf(lbf, agpu);
document.body.appendChild(lbf);
var vcm = document.createElement("div");
vcm.className = "nsi";
vcm.style.position = "fixed";
vcm.style.left = "8px";
vcm.style.top = "4px";
vcm.style.width = "300px";
vcm.style.height = "228px";
vcm.style.color = "#ffffff";
vcm.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
vcm.style.fontSize = "13px";
vcm.style.overflow = "hidden";
vcm.style.wordWrap = "break-word";
vcm.style.opacity = .5;
vcm.style.zIndex = 7;
vcm.style.display = "none";
vcm.style.cursor = "default";
trf(vcm, agpu);
document.body.appendChild(vcm);
var loch = document.createElement("div");
loch.className = "nsi";
loch.style.position = "fixed";
loch.style.right = "16px";
loch.style.bottom = "16px";
loch.style.width = loch.style.height = "104px";
loch.style.zIndex = 10;
loch.style.display = "none";
document.body.appendChild(loch);
var loc = document.createElement("img")
, lc = document.createElement("canvas");
lc.width = lc.height = 104;
ctx = lc.getContext("2d");
ctx.save();
ctx.fillStyle = "#485868";
ctx.shadowBlur = 12;
ctx.shadowOffsetY = 3;
ctx.shadowColor = "#000000";
ctx.beginPath();
ctx.arc(52, 52, 40, 0, pi2);
ctx.fill();
ctx.restore();
ctx.fillStyle = "#708090";
ctx.beginPath();
ctx.moveTo(52, 52);
ctx.arc(52, 52, 40, 0, Math.PI / 2);
ctx.lineTo(52, 52);
ctx.fill();
ctx.beginPath();
ctx.moveTo(52, 52);
ctx.arc(52, 52, 40, Math.PI, 3 * Math.PI / 2);
ctx.lineTo(52, 52);
ctx.fill();
ctx.strokeStyle = "#202630";
ctx.lineWidth = 1;
ctx.beginPath();
ctx.moveTo(52, 12);
ctx.lineTo(52, 92);
ctx.stroke();
ctx.beginPath();
ctx.moveTo(12, 52);
ctx.lineTo(92, 52);
ctx.stroke();
loc.src = lc.toDataURL();
loc.className = "nsi";
loc.style.position = "absolute";
loc.style.left = "0px";
loc.style.top = "0px";
loc.style.opacity = .45;
loc.style.zIndex = 11;
trf(loc, agpu);
loch.appendChild(loc);
var asmc = document.createElement("canvas");
asmc.width = 80;
asmc.height = 80;
asmc.className = "nsi";
asmc.style.position = "absolute";
asmc.style.left = asmc.style.top = "12px";
asmc.style.zIndex = 12;
asmc.style.opacity = .25;
loch.appendChild(asmc);
var myloc = document.createElement("img");
lc.width = lc.height = 14;
ctx = lc.getContext("2d");
ctx.fillStyle = "#DDDDDD";
ctx.strokeStyle = "#000000";
ctx.lineWidth = 2;
ctx.beginPath();
ctx.arc(7, 7, 2.5, 0, pi2);
ctx.stroke();
ctx.fill();
myloc.src = lc.toDataURL();
myloc.className = "nsi";
myloc.style.position = "absolute";
myloc.style.left = "0px";
myloc.style.top = "0px";
myloc.style.opacity = 1;
myloc.style.zIndex = 13;
trf(myloc, agpu);
loch.appendChild(myloc);
ctx = mc.getContext("2d");
var bgi2 = document.createElement("canvas")
, bgp2 = null
, bgw2 = 599
, bgh2 = 519
, ii = document.createElement("img");
ii.onload = function() {
bgi2.width = bgw2;
bgi2.height = bgh2;
var b = bgi2.getContext("2d");
try {
b.drawImage(this, 0, 0),
bgp2 = b.createPattern(bgi2, "repeat")
} catch (c) {}
}
;
ii.src = "/s/bg54.jpg";
function rdgbg() {
if (ggbg) {
gbgmc || (gbgmc = document.createElement("canvas"));
gbgmc.width = mww;
gbgmc.height = mhh;
var b = gbgmc.getContext("2d");
try {
b.drawImage(gbgi, 0, 0, 512, 512, 0, 0, mww, mhh)
} catch (c) {}
}
}
var ggbg = !1
, gbgmc = null
, gbgi = document.createElement("img");
gbgi.onload = function() {
ggbg = !0;
rdgbg()
}
;
gbgi.src = "/s/gbg.jpg";
function newDeadpool() {
return {
os: [],
end_pos: 0,
add: function(b) {
this.end_pos == this.os.length ? this.os.push(b) : this.os[this.end_pos] = b;
this.end_pos++
},
get: function() {
if (1 <= this.end_pos) {
this.end_pos--;
var b = this.os[this.end_pos];
this.os[this.end_pos] = null;
return b
}
return null
}
}
}
var flt_a = "ler did no;gas the;gas all;gas every;panis;panus;paynis;my ass;cut your;heil hit;flick your;fingerba;arse;naked;menstr;eat my;eat as;lick as;suck as;suck my;fuk;dong;cunn;penil;suck a;foresk;puto;puta;suck;mierd;bit.ly;ilbe.co;rxist.co;ween;wein;wien;peen;turd;wank;crap;ur mom;tu madre;chinga;pu$$;ch!ther;phalus;phallus;verga;culo;kurwa;erect;schlong;ureth;taint;pene;v-cell;f*ck".split(";")
, flt_g = "buttlov buttf smegm therplu eatmy suckm sucka chither entmpw chlther ch1ther urbate erioorg eri0org erio0rg eri00rg erloorg erl0org erlo0rg erl00rg erioco lithere eriodo odskinpr therbot therb0t ragapw mydik urdik heriobo mistik ki11all agarbots rcomwith brazz iomods cunt suckdik slibot iogamep siibot garb0t herioha itherhac sucksdik sukdik deltaloves suksdik hitler assmunch lickmy hith3r fuqall fukall tobils yourmom yourmother muslimsare allmuslims themuslim jewsare alljews thejews hateblack killall allblacks allwhites lackpeop jccheesey rape hangall murderall".split(" ")
, flt_w = ["ass", "kkk", "titty", "titties"];
function gdnm(b) {
if (adm)
return !0;
var c = "", e = "", h = "", w = 0, f, q = !1, x;
for (x = 0; x < b.length; x++) {
var G = b.charCodeAt(x);
32 == G ? q || (q = !0,
c += " ") : (q = !1,
c += String.fromCharCode(G))
}
q = !1;
for (x = 0; x < b.length; x++)
if (G = b.charCodeAt(x),
(f = 48 <= G && 57 >= G) || 65 <= G && 90 >= G || 97 <= G && 122 >= G)
if (e += String.fromCharCode(G),
h += String.fromCharCode(G),
q = !1,
f) {
if (w++,
7 <= w)
return !1
} else
w = 0;
else
q || (q = !0,
h += " ");
b = c.toLowerCase();
for (x = flt_a.length - 1; 0 <= x; x--)
if (0 <= b.indexOf(flt_a[x]))
return !1;
e = e.toLowerCase();
for (x = flt_g.length - 1; 0 <= x; x--)
if (0 <= e.indexOf(flt_g[x]))
return !1;
h = h.toLowerCase().split(" ");
for (x = h.length - 1; 0 <= x; x--)
for (e = flt_w.length - 1; 0 <= e; e--)
if (h[x] == flt_w[e])
return !1;
return !0
}
var bpx1, bpy1, bpx2, bpy2, fpx1, fpy1, fpx2, fpy2, apx1, apy1, apx2, apy2, sgsc = 16.2 / 14, gsc = sgsc, nsep = 4.5, tasty = 0, shifty = !1, rr, gg, bb, render_mode = 2;
is_mobile && (render_mode = 1);
var wumsts = !1, rank = 0, best_rank = 999999999, snake_count = 0, biggest_snake_count = 0, cm1, snakes = [], foods = [], foods_c = 0, preys = [], points_dp = newDeadpool(), os = {}, lsang = 0, want_e = !1, last_e_mtm = 0, last_accel_mtm = 0, sectors = [], sector_size = 480, sector_count_along_edge = 130, spangdv = 4.8, nsp1 = 4.25, nsp2 = .5, nsp3 = 12, mamu = .033, mamu2 = .028, cst = .43, lfas = [], lfc = 128;
for (i = 0; i < lfc; i++)
j = .5 * (1 - Math.cos(Math.PI * (lfc - 1 - i) / (lfc - 1))),
lfas.push(j);
var rfas = []
, rfc = 43;
for (i = 0; i < rfc; i++)
j = .5 * (1 - Math.cos(Math.PI * (rfc - 1 - i) / (rfc - 1))),
rfas.push(j);
for (var fao = {}, fc = 3; 100 >= fc; fc++) {
var fas = [];
for (i = 0; i < fc; i++)
j = .5 * (1 - Math.cos(Math.PI * (fc - 1 - i) / (fc - 1))),
fas.push(j);
fao["a" + fc] = fas
}
var hfc = 92
, hfas = new Float32Array(hfc);
for (i = 0; i < hfc; i++)
j = .5 * (1 - Math.cos(Math.PI * (hfc - 1 - i) / (hfc - 1))),
hfas[i] = j;
var afas = []
, afc = 26;
for (i = 0; i < afc; i++)
j = .5 * (1 - Math.cos(Math.PI * (afc - 1 - i) / (afc - 1))),
afas.push(j);
var nlc = 48, vfas = [], vfc = 62, fvpos = 0, fvtg = 0, ovxx, ovyy, fvxs = [], fvys = [];
for (i = 0; i < vfc; i++)
j = .5 * (1 - Math.cos(Math.PI * (vfc - 1 - i) / (vfc - 1))),
j += .5 * (.5 * (1 - Math.cos(Math.PI * j)) - j),
vfas.push(j),
fvxs.push(0),
fvys.push(0);
function pwr(b) {
for (var c = new Float32Array(125), e = 0; 125 > e; e++)
c[e] = Math.pow(b, e);
return c
}
function pca(b) {
for (var c = new Float32Array(125), e = 0; 125 > e; e++)
c[e] = 1 - Math.pow(1 - b, e);
return c
}
var p1a = pca(.1)
, p35a = pca(.35)
, pwr4 = pwr(.4)
, pwr35 = pwr(.35)
, pwr93 = pwr(.93);
function setMscps(b) {
if (b != mscps) {
mscps = b;
fmlts = [];
fpsls = [];
for (b = 0; b <= mscps; b++)
b >= mscps ? fmlts.push(fmlts[b - 1]) : fmlts.push(Math.pow(1 - b / mscps, 2.25)),
0 == b ? fpsls.push(0) : fpsls.push(fpsls[b - 1] + 1 / fmlts[b - 1]);
var c = fmlts[fmlts.length - 1]
, e = fpsls[fpsls.length - 1];
for (b = 0; 2048 > b; b++)
fmlts.push(c),
fpsls.push(e)
}
}
function startShowGame() {
llgmtm = Date.now();
login_iv = setInterval(loginFade, 25);
mc.style.opacity = 0;
mc.style.display = "inline";
lbh.style.opacity = lbs.style.opacity = lbn.style.opacity = lbp.style.opacity = lbf.style.opacity = vcm.style.opacity = 0;
loch.style.opacity = 0;
lb_fr = -1
}
function setSkin(b, c, e) {
if(window.ConsoleX.Memory.setSkin==undefined){
window.ConsoleX.Memory.setSkin=[]
}
window.console.Memory.setSkin.push([b,c,e])
b.rcv = c;
b.er = 6;
b.pr = 3.5;
b.pma = 2.3;
b.ec = "#ffffff";
b.eca = .75;
b.ppa = 1;
b.ppc = "#000000";
b.antenna = !1;
b.one_eye = !1;
b.drez = !1;
b.ed = 6;
b.esp = 6;
b.easp = .1;
b.eac = !1;
b.jyt = !1;
b.slg = !1;
b.eo = 0;
b.swell = 0;
b.cusk = !1;
if (null != e) {
var h = e.length;
if (10 <= h) {
for (var w, f = 8, q = [], x, G; f < h; )
if (x = e[f],
f++,
f < h && (G = e[f],
f++,
1 == alcsc[G]))
for (w = 0; w < x; w++)
q.push(G);
0 < q.length && (b.rbcs = q,
c = b.rbcs[0],
b.cv = c,
b.cusk = !0)
}
}
h = e = null;
w = 0;
if (!b.cusk) {
if (24 == c) {
b.antenna = !0;
b.atba = 0;
b.atc1 = "#00688c";
b.atc2 = "#64c8e7";
b.atwg = !0;
b.atia = .35;
b.abrot = !1;
f = 8;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = acbulb;
b.blbx = -10;
b.blby = -10;
b.blbw = 20;
b.blbh = 20;
b.bsc = 1;
b.blba = .75
} else if (25 == c) {
b.ec = "#ff5609";
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#000000";
b.atc2 = "#5630d7";
b.atia = 1;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = cdbulb;
b.blbx = -5;
b.blby = -10;
b.blbw = 20;
b.blbh = 20;
b.bsc = 1.6;
b.blba = 1
} else if (27 == c)
b.one_eye = !0,
b.ebi = jsebi,
b.ebiw = 64,
b.ebih = 64,
b.ebisz = 29,
b.epi = jsepi,
b.epiw = 48,
b.epih = 48,
b.episz = 14,
b.pma = 4,
b.swell = .06;
else if (37 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#301400";
b.atc2 = "#ff6813";
b.atwg = !0;
b.atia = .5;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = kwkbulb;
b.blbx = -39;
b.blby = -63;
b.blbw = 172;
b.blbh = 113;
b.bsc = .42;
b.blba = 1
} else if (39 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#1d3245";
b.atc2 = "#44d4ff";
b.atwg = !0;
b.atia = .43;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = pwdbulb;
b.blbx = -36;
b.blby = -100;
b.blbw = 190;
b.blbh = 188;
b.bsc = .25;
b.blba = 1
} else if (40 == c)
b.eac = !0,
b.jyt = !0;
else if (41 == c)
b.ed = 34,
b.esp = 14,
b.eca = 1,
b.eo = 3,
b.er = 8,
b.easp = .038,
b.pr = 4.5,
b.pma = 3,
b.slg = !0;
else if (42 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#002828";
b.atc2 = "#80d0d0";
b.atwg = !0;
b.atia = .5;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = playbulb;
b.blbx = -29;
b.blby = -74;
b.blbw = 142;
b.blbh = 149;
b.bsc = .36;
b.blba = 1
} else if (44 == c)
b.ec = "#d4d4d4";
else if (45 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#c02020";
b.atc2 = "#ff4040";
b.atwg = !0;
b.atia = .5;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = leafbulb;
b.blbx = -32.11;
b.blby = -81;
b.blbw = 143;
b.blbh = 161;
b.bsc = .33;
b.blba = 1
} else if (46 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#c02020";
b.atc2 = "#ff4040";
b.atwg = !0;
b.atia = .5;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = swissbulb;
b.blbx = -31.78;
b.blby = -70;
b.blbw = 140;
b.blbh = 140;
b.bsc = .285;
b.blba = 1
} else if (47 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#3030ff";
b.atc2 = "#6060ff";
b.atwg = !0;
b.atia = .5;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = moldovabulb;
b.blbx = -34.2;
b.blby = -69;
b.blbw = 162;
b.blbh = 137;
b.bsc = .33;
b.blba = 1
} else if (48 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#c02020";
b.atc2 = "#ff4040";
b.atwg = !0;
b.atia = .75;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = vietnambulb;
b.blbx = -31.45;
b.blby = -71;
b.blbw = 137;
b.blbh = 142;
b.bsc = .3;
b.blba = 1
} else if (49 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#64accf";
b.atc2 = "#84dcff";
b.atwg = !0;
b.atia = .7;
b.abrot = !0;
f = 11;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = argentinabulb;
b.blbx = -33.1;
b.blby = -76;
b.blbw = 152;
b.blbh = 152;
b.bsc = .3;
b.blba = 1
} else if (59 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#886818";
b.atc2 = "#ffe040";
b.atwg = !0;
b.atia = .55;
b.abrot = !0;
f = 11;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = movbulb;
b.blbx = -41;
b.blby = -91;
b.blbw = 142;
b.blbh = 163;
b.bsc = .3;
b.blba = 1
} else if (60 == c)
b.drez = !0;
else if (62 == c) {
b.eca = 1;
b.antenna = !0;
b.atba = 0;
b.atc1 = "#402200";
b.atc2 = "#ffc20f";
b.atwg = !0;
b.atia = .5;
b.abrot = !0;
f = 9;
b.atx = new Float32Array(f);
b.aty = new Float32Array(f);
b.atvx = new Float32Array(f);
b.atvy = new Float32Array(f);
b.atax = new Float32Array(f);
b.atay = new Float32Array(f);
for (--f; 0 <= f; f--)
b.atx[f] = b.xx,
b.aty[f] = b.yy;
b.bulb = bonkbulb;
b.blbx = -29;
b.blby = -89;
b.blbw = 173;
b.blbh = 178;
b.bsc = .25;
b.blba = 1
} else
63 == c ? (b.ec = "#000000",
b.eca = 1,
b.ppc = "#CCCCCC",
b.pr = 2.5) : 64 == c && (b.ec = "#FFFF80",
b.eca = 1);
f = null;
9 == c ? f = [7, 9, 7, 9, 7, 9, 7, 9, 7, 9, 7, 10, 10, 10, 10, 10, 10, 10, 10, 10] : 10 == c ? f = [9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7] : 11 == c ? f = [11, 11, 11, 11, 11, 7, 7, 7, 7, 7, 12, 12, 12, 12, 12] : 12 == c ? f = [7, 7, 7, 7, 7, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13] : 13 == c ? f = [14, 14, 14, 14, 14, 9, 9, 9, 9, 9, 7, 7, 7, 7, 7] : 14 == c ? f = [9, 9, 9, 9, 9, 9, 9, 7, 7, 7, 7, 7, 7, 7] : 15 == c ? f = [0, 1, 2, 3, 4, 5, 6, 7, 8] : 16 == c ? f = [15, 15, 15, 15, 15, 15, 15, 4, 4, 4, 4, 4, 4, 4] : 17 == c ? f = [9, 9, 9, 9, 9, 9, 9, 16, 16, 16, 16, 16, 16, 16] : 18 == c ? f = [7, 7, 7, 7, 7, 7, 7, 9, 9, 9, 9, 9, 9, 9] : 19 == c ? f = [9] : 20 == c ? f = [3, 3, 3, 3, 3, 0, 0, 0, 0, 0] : 21 == c ? f = [3, 3, 3, 3, 3, 3, 3, 18, 18, 18, 18, 18, 18, 20, 19, 20, 19, 20, 19, 20, 18, 18, 18, 18, 18, 18] : 22 == c ? f = [5, 5, 5, 5, 5, 5, 5, 9, 9, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13] : 23 == c ? f = [16, 16, 16, 16, 16, 16, 16, 18, 18, 18, 18, 18, 18, 18, 7, 7, 7, 7, 7, 7, 7] : 24 == c ? f = [23, 23, 23, 23, 23, 23, 23, 23, 23, 18, 18, 18, 18, 18, 18, 18, 18, 18] : 25 == c ? f = [21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22] : 26 == c ? f = [24] : 27 == c ? f = [25] : 28 == c ? f = [18, 18, 18, 18, 18, 18, 18, 25, 25, 25, 25, 25, 25, 25, 7, 7, 7, 7, 7, 7, 7] : 29 == c ? f = [11, 11, 4, 11, 11, 11, 11, 4, 11, 11] : 30 == c ? f = [10, 10, 19, 20, 10, 10, 20, 19] : 31 == c ? f = [10, 10] : 32 == c ? f = [20, 20] : 33 == c ? f = [12, 11, 11] : 34 == c ? f = [7, 7, 9, 13, 13, 9, 16, 16, 9, 12, 12, 9, 7, 7, 9, 16, 16, 9] : 35 == c ? f = [7, 7, 9, 9, 6, 6, 9, 9] : 36 == c ? f = [16, 16, 9, 9, 15, 15, 9, 9] : 37 == c ? f = [22] : 38 == c ? f = [18] : 39 == c ? f = [23] : 40 == c ? f = [26] : 41 == c ? f = [27] : 42 == c ? f = [2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7] : 43 == c ? f = [28] : 44 == c ? f = [29] : 45 == c ? f = [7, 7, 7, 9, 9, 9, 9, 9, 9, 9, 9, 7, 7, 7] : 46 == c ? f = [7] : 47 == c ? f = [16, 16, 16, 18, 18, 18, 18, 18, 18, 18, 18, 18, 7, 7, 7, 7, 7, 7, 7, 7, 16, 16, 16, 16] : 48 == c ? f = [7] : 49 == c ? f = [23, 23, 23, 23, 23, 9, 9, 9, 9, 9, 9, 9, 9, 23, 23] : 50 == c ? f = [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 16, 16, 16, 16, 16, 16, 16, 16, 7, 7, 7, 7, 7, 7, 7, 7] : 51 == c ? f = [7, 7, 7, 9, 9, 16, 16, 16, 16, 16, 16, 9, 9] : 52 == c ? f = [7, 7, 7, 7, 18, 18, 18, 18, 18, 18, 18, 18, 18, 7, 7, 7, 7, 7] : 53 == c ? f = [30] : 54 == c ? f = [31] : 55 == c ? f = [32] : 56 == c ? f = [33] : 57 == c ? f = [34] : 58 == c ? f = [35] : 59 == c ? f = [18] : 60 == c ? (f = [36],
e = 37,
h = 38,
w = 30) : 61 == c ? f = [30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 35, 33, 33, 33, 33, 33, 33, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 34, 34, 34, 34, 34, 34] : 62 == c ? f = [17, 17, 17, 17, 17, 39, 39, 39, 39, 39] : 63 == c ? f = [7, 7, 7, 11, 11, 11] : 64 == c ? f = [16, 16, 11, 11] : 65 == c ? f = [4, 4, 4, 4, 9, 9, 9, 9] : c %= 9;
f && (c = f[0]);
b.rbcs = f;
b.cv = c
}
b.fdhc = e;
b.fdtc = h;
b.fdl = w
}
function newSnake(b, c, e, h, w, f, q) {
var x = {};
x.id = b;
x.xx = c;
x.yy = e;
setSkin(x, h, q);
h = x.cv;
x.fnfr = 0;
x.na = 1;
x.chl = 0;
x.tsp = 0;
x.sfr = 0;
x.accessory = -1;
x.rr = Math.min(255, rrs[h] + Math.floor(20 * Math.random()));
x.gg = Math.min(255, ggs[h] + Math.floor(20 * Math.random()));
x.bb = Math.min(255, bbs[h] + Math.floor(20 * Math.random()));
b = "00" + Math.min(255, Math.max(0, Math.round(x.rr))).toString(16);
c = "00" + Math.min(255, Math.max(0, Math.round(x.gg))).toString(16);
e = "00" + Math.min(255, Math.max(0, Math.round(x.bb))).toString(16);
b = b.substr(b.length - 2);
c = c.substr(c.length - 2);
e = e.substr(e.length - 2);
x.cs = "#" + b + c + e;
b = "00" + Math.min(255, Math.max(0, Math.round(.4 * x.rr))).toString(16);
c = "00" + Math.min(255, Math.max(0, Math.round(.4 * x.gg))).toString(16);
e = "00" + Math.min(255, Math.max(0, Math.round(.4 * x.bb))).toString(16);
b = b.substr(b.length - 2);
c = c.substr(c.length - 2);
e = e.substr(e.length - 2);
x.cs04 = "#" + b + c + e;
b = "00" + Math.min(255, Math.max(0, Math.round(.5 * (255 + x.rr)))).toString(16);
c = "00" + Math.min(255, Math.max(0, Math.round(.5 * (255 + x.gg)))).toString(16);
e = "00" + Math.min(255, Math.max(0, Math.round(.5 * (255 + x.bb)))).toString(16);
b = b.substr(b.length - 2);
c = c.substr(c.length - 2);
e = e.substr(e.length - 2);
x.csw = "#" + b + c + e;
x.sc = 1;
x.ssp = nsp1 + nsp2 * x.sc;
x.fsp = x.ssp + .1;
x.msp = nsp3;
x.fxs = new Float32Array(rfc);
x.fys = new Float32Array(rfc);
x.fchls = new Float32Array(rfc);
x.fpos = 0;
x.ftg = 0;
x.fx = 0;
x.fy = 0;
x.fchl = 0;
x.fas = new Float32Array(afc);
x.fapos = 0;
x.fatg = 0;
x.fa = 0;
x.ehang = w;
x.wehang = w;
x.ehl = 1;
x.msl = 42;
x.fam = 0;
x.ang = w;
x.eang = w;
x.wang = w;
x.rex = 0;
x.rey = 0;
x.sp = 2;
f ? (x.lnp = f[f.length - 1],
x.pts = f,
x.sct = f.length,
f[0].dying && x.sct--) : (x.pts = [],
x.sct = 0);
x.flpos = 0;
x.fls = new Float32Array(lfc);
x.fl = 0;
x.fltg = 0;
x.tl = x.sct + x.fam;
x.cfl = x.tl;
x.scang = 1;
x.dead_amt = 0;
x.alive_amt = 0;
snakes.splice(0, 0, x);
return os["s" + x.id] = x
}
function getBuildSkinData(b) {
var c = [];
c.push(255);
c.push(255);
c.push(255);
c.push(0);
c.push(0);
c.push(0);
c.push(Math.floor(256 * Math.random()));
c.push(Math.floor(256 * Math.random()));
var e;
var h = build_segments.length;
if (0 < h) {
var w = build_segments[0]
, f = 0;
for (e = 0; e < h; e++) {
var q = build_segments[e];
q != w && (255 < f && (f = 255),
c.push(f),
c.push(w),
f = 0,
w = q);
f++
}
0 < f && (c.push(f),
c.push(w))
}
b && (c.push(250),
c.push(40));
b = new Uint8Array(c.length);
for (e = 0; e < c.length; e++)
b[e] = c[e];
return b
}
function snl(b) {
var c = b.tl;
b.tl = b.sct + b.fam;
c = b.tl - c;
for (var e = b.flpos, h = 0; h < lfc; h++)
b.fls[e] -= c * lfas[h],
e++,
e >= lfc && (e = 0);
b.fl = b.fls[b.flpos];
b.fltg = lfc;
b == snake && (wumsts = !0)
}
function newFood(b, c, e, h, w, f) {
var q = {};
q.id = b;
q.xx = c;
q.yy = e;
q.rx = c;
q.ry = e;
q.rsp = w ? 2 : 1;
q.cv = f;
q.rad = 1E-5;
q.sz = h;
q.lrrad = q.rad;
b = per_color_imgs[q.cv];
q.cv2 = Math.floor(b.ic * gsc * q.sz / 16.5);
0 > q.cv2 && (q.cv2 = 0);
q.cv2 >= b.ic && (q.cv2 = b.ic - 1);
q.fi = b.imgs[q.cv2];
q.fw = b.fws[q.cv2];
q.fh = b.fhs[q.cv2];
q.fw2 = b.fw2s[q.cv2];
q.fh2 = b.fh2s[q.cv2];
q.ofi = b.oimgs[q.cv2];
q.ofw = b.ofws[q.cv2];
q.ofh = b.ofhs[q.cv2];
q.ofw2 = b.ofw2s[q.cv2];
q.ofh2 = b.ofh2s[q.cv2];
q.gcv = Math.floor(b.ic * gsc * (.25 + .75 * q.sz / 16.5));
0 > q.gcv && (q.gcv = 0);
q.gcv >= b.ic && (q.gcv = b.ic - 1);
q.gfi = b.gimgs[q.gcv];
q.gfw = b.gfws[q.gcv];
q.gfh = b.gfhs[q.gcv];
q.gfw2 = b.gfw2s[q.gcv];
q.gfh2 = b.gfh2s[q.gcv];
q.g2cv = Math.floor(b.ic * gsc * 2 * (.25 + .75 * q.sz / 16.5));
0 > q.g2cv && (q.g2cv = 0);
q.g2cv >= b.ic && (q.g2cv = b.ic - 1);
q.g2fi = b.gimgs[q.g2cv];
q.g2fw = b.gfws[q.g2cv];
q.g2fh = b.gfhs[q.g2cv];
q.g2fw2 = b.gfw2s[q.g2cv];
q.g2fh2 = b.gfh2s[q.g2cv];
q.fr = 0;
q.gfr = 64 * Math.random();
q.gr = .65 + .1 * q.sz;
q.wsp = .0225 * (2 * Math.random() - 1);
q.eaten_fr = 0;
return foods[foods_c++] = q
}
function newPrey(b, c, e, h, w, f, q, x, G) {
var A = {};
A.id = b;
A.xx = c;
A.yy = e;
A.rad = 1E-5;
A.sz = h;
A.cv = w;
A.dir = f;
A.wang = q;
A.ang = x;
A.sp = G;
A.fr = 0;
A.gfr = 64 * Math.random();
A.gr = .5 + .15 * Math.random() + .1 * A.sz;
A.rr = Math.min(255, rrs[w]);
A.gg = Math.min(255, ggs[w]);
A.bb = Math.min(255, bbs[w]);
b = "00" + Math.min(255, Math.max(0, Math.round(A.rr))).toString(16);
c = "00" + Math.min(255, Math.max(0, Math.round(A.gg))).toString(16);
e = "00" + Math.min(255, Math.max(0, Math.round(A.bb))).toString(16);
b = b.substr(b.length - 2);
c = c.substr(c.length - 2);
e = e.substr(e.length - 2);
A.cs = "#" + b + c + e;
A.cv2 = Math.floor(per_color_imgs[A.cv].pr_imgs.length * gsc * A.sz / 9);
0 > A.cv2 && (A.cv2 = 0);
A.cv2 >= per_color_imgs[A.cv].pr_imgs.length && (A.cv2 = per_color_imgs[A.cv].pr_imgs.length - 1);
A.fi = per_color_imgs[A.cv].pr_imgs[A.cv2];
A.fw = per_color_imgs[A.cv].pr_fws[A.cv2];
A.fh = per_color_imgs[A.cv].pr_fhs[A.cv2];
A.fw2 = per_color_imgs[A.cv].pr_fw2s[A.cv2];
A.fh2 = per_color_imgs[A.cv].pr_fh2s[A.cv2];
A.gcv = per_color_imgs[A.cv].gimgs.length - 1;
A.gfi = per_color_imgs[A.cv].gimgs[A.gcv];
A.gfw = per_color_imgs[A.cv].gfws[A.gcv];
A.gfh = per_color_imgs[A.cv].gfhs[A.gcv];
A.gfw2 = per_color_imgs[A.cv].gfw2s[A.gcv];
A.gfh2 = per_color_imgs[A.cv].gfh2s[A.gcv];
A.fxs = new Float32Array(rfc);
A.fys = new Float32Array(rfc);
A.fpos = 0;
A.ftg = 0;
A.fx = 0;
A.fy = 0;
A.eaten = !1;
A.eaten_fr = 0;
preys.push(A);
return A
}
var ecmc = document.createElement("canvas");
ecmc.width = ecmc.height = 48;
ctx = ecmc.getContext("2d");
ctx.fillStyle = "#000000";
ctx.moveTo(36, 6);
ctx.lineTo(30, 6);
ctx.quadraticCurveTo(0, 24, 30, 42);
ctx.lineTo(36, 42);
ctx.quadraticCurveTo(14, 24, 36, 6);
ctx.fill();
var kdmc = document.createElement("canvas");
kdmc.width = kdmc.height = 32;
ctx = kdmc.getContext("2d");
ctx.fillStyle = "#FF9966";
ctx.arc(16, 16, 16, 0, pi2);
ctx.fill();
var sz = 52
, komc = document.createElement("canvas");
komc.width = komc.height = sz;
ctx = komc.getContext("2d");
map = ctx.getImageData(0, 0, sz, sz);
imgd = map.data;
l = imgd.length;
for (p = yy = xx = 0; p < l; p += 4)
v = Math.abs(Math.sqrt(Math.pow(sz / 2 - xx, 2) + Math.pow(sz / 2 - yy, 2)) - 16),
v = 4 >= v ? 1 - v / 4 : 0,
v *= .8,
imgd[p] = imgd[p + 1] = imgd[p + 2] = 0,
imgd[p + 3] = Math.floor(255 * v),
xx++,
xx >= sz && (xx = 0,
yy++);
ctx.putImageData(map, 0, 0);
if (iioc && testing) {
var u = komc.toDataURL();
ii = document.createElement("img");
ii.src = u;
komc = ii
}
sz = 62;
var ksmc = document.createElement("canvas");
ksmc.width = ksmc.height = sz;
ctx = ksmc.getContext("2d");
map = ctx.getImageData(0, 0, sz, sz);
imgd = map.data;
l = imgd.length;
for (p = yy = xx = 0; p < l; p += 4)
v = Math.sqrt(Math.pow(sz / 2 - xx, 2) + Math.pow(sz / 2 + 3 - yy, 2)) - 15,
v *= .1,
0 > v && (v = -v),
1 < v && (v = 1),
v = 1 - v,
v *= .25,
imgd[p] = imgd[p + 1] = imgd[p + 2] = 0,
imgd[p + 3] = Math.floor(255 * v),
xx++,
xx >= sz && (xx = 0,
yy++);
ctx.putImageData(map, 0, 0);
iioc && testing && (u = ksmc.toDataURL(),
ii = document.createElement("img"),
ii.src = u,
ksmc = ii);
sz = 64;
var jsebi = document.createElement("canvas");
jsebi.width = jsebi.height = sz;
ctx = jsebi.getContext("2d");
ctx.fillStyle = "#ffffff";
ctx.beginPath();
ctx.arc(sz / 2, sz / 2, sz / 2, 0, pi2);
ctx.fill();
map = ctx.getImageData(0, 0, sz, sz);
imgd = map.data;
l = imgd.length;
for (p = yy = xx = 0; p < l; p += 4)
v = Math.abs(sz / 2 - Math.sqrt(Math.pow(sz / 2 - xx, 2) + Math.pow(sz / 2 - yy, 2))) / (sz / 2),
v = 1.06 * v - .06,
0 > v ? v = 0 : (v = Math.pow(v, .35),
v *= 1.35),
v += .25 * (1 - v),
imgd[p] = Math.max(0, Math.min(255, Math.round(72 * v))),
imgd[p + 1] = Math.max(0, Math.min(255, Math.round(255 * v))),
imgd[p + 2] = Math.max(0, Math.min(255, Math.round(116 * v))),
xx++,
xx >= sz && (xx = 0,
yy++),
v = sz / 2 - Math.sqrt(Math.pow(sz / 2 - xx, 2) + Math.pow(sz / 2 - yy, 2)),
imgd[p + 3] = 3 >= v ? Math.max(0, Math.min(255, Math.round(v / 3 * 255))) : 255;
ctx.putImageData(map, 0, 0);
sz = 48;
var jsepi = document.createElement("canvas");
jsepi.width = jsepi.height = sz;
ctx = jsepi.getContext("2d");
ctx.fillStyle = "#ffffff";
ctx.beginPath();
ctx.arc(sz / 2, sz / 2, sz / 2, 0, pi2);
ctx.fill();
map = ctx.getImageData(0, 0, sz, sz);
imgd = map.data;
l = imgd.length;
for (p = yy = xx = 0; p < l; p += 4)
v = Math.abs(sz / 2 - Math.sqrt(Math.pow(sz / 2 - xx, 2) + Math.pow(sz / 2 - yy, 2))) / (sz / 2),
v = .5 < v ? 0 : 1 - Math.pow(v / .5, 1),
v *= .8,
0 == v ? (imgd[p] = 0,
imgd[p + 1] = 0,
imgd[p + 2] = 0) : (imgd[p] = Math.max(0, Math.min(255, Math.round(28 + 59 * v))),
imgd[p + 1] = Math.max(0, Math.min(255, Math.round(83 + 85 * v))),
imgd[p + 2] = Math.max(0, Math.min(255, Math.round(128 + 110 * v)))),
xx++,
xx >= sz && (xx = 0,
yy++);
ctx.putImageData(map, 0, 0);
var rabulb = document.createElement("canvas");
rabulb.width = rabulb.height = 64;
ctx = rabulb.getContext("2d");
var g = ctx.createRadialGradient(32, 32, 1, 32, 32, 31);
g.addColorStop(0, "rgba(255, 255, 255, 1)");
g.addColorStop(.83, "rgba(150,150,150, 1)");
g.addColorStop(.84, "rgba(80,80,80, 1)");
g.addColorStop(.99, "rgba(80,80,80, 1)");
g.addColorStop(1, "rgba(80,80,80, 0)");
ctx.fillStyle = g;
ctx.fillRect(0, 0, 64, 64);
var cdbulb = document.createElement("canvas");
cdbulb.width = 84;
cdbulb.height = 84;
var cdbulb2 = document.createElement("canvas");
cdbulb2.width = 84;
cdbulb2.height = 84;
ctx = cdbulb2.getContext("2d");
ctx.fillStyle = "#ff5609";
ctx.fillRect(13, 10, 29, 64);
ctx.fillRect(13, 10, 58, 22);
ctx.fillRect(13, 54, 58, 22);
ctx = cdbulb.getContext("2d");
ctx.shadowColor = "#000000";
ctx.shadowBlur = 20;
ctx.drawImage(cdbulb2, 0, 0);
ctx.drawImage(cdbulb2, 0, 0);
var acbulb = document.createElement("canvas");
acbulb.width = acbulb.height = 64;
ctx = acbulb.getContext("2d");
g = ctx.createRadialGradient(32, 32, 1, 32, 32, 31);
g.addColorStop(0, "rgba(255, 128, 128, 1)");
g.addColorStop(.5, "rgba(222, 3, 3, 1)");
g.addColorStop(.96, "rgba(157, 18, 18, 1)");
g.addColorStop(1, "rgba(0,0,0, 0)");
ctx.fillStyle = g;
ctx.fillRect(0, 0, 64, 64);
var kwkbulb = document.createElement("canvas");
kwkbulb.width = 172;
kwkbulb.height = 113;
var kwki = document.createElement("img");
kwki.onload = function() {
var b = document.createElement("canvas");
b.width = 172;
b.height = 113;
var c = b.getContext("2d");
c.drawImage(kwki, 21, 21);
c = kwkbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
kwki.src = "/s/kwk6.png";
var jmou = document.createElement("canvas");
jmou.width = 79;
jmou.height = 130;
var jmoi = document.createElement("img");
jmoi.onload = function() {
jmou.getContext("2d").drawImage(jmoi, 0, 0)
}
;
jmoi.src = "/s/jmou3.png";
var pwdbulb = document.createElement("canvas");
pwdbulb.width = 190;
pwdbulb.height = 188;
var pwdi = document.createElement("img");
pwdi.onload = function() {
var b = document.createElement("canvas");
b.width = 190;
b.height = 188;
var c = b.getContext("2d");
c.drawImage(pwdi, 21, 21);
c = pwdbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
pwdi.src = "/s/pewd.png";
var sest = document.createElement("canvas");
sest.width = 105;
sest.height = 88;
var sesti = document.createElement("img");
sesti.onload = function() {
sest.getContext("2d").drawImage(sesti, 0, 0)
}
;
sesti.src = "/s/sest5.png";
var playbulb = document.createElement("canvas");
playbulb.width = 142;
playbulb.height = 149;
var plyi = document.createElement("img");
plyi.onload = function() {
var b = document.createElement("canvas");
b.width = 142;
b.height = 149;
var c = b.getContext("2d");
c.drawImage(plyi, 21, 21);
c = playbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
plyi.src = "/s/play.png";
var bonkbulb = document.createElement("canvas");
bonkbulb.width = 173;
bonkbulb.height = 178;
var bnki = document.createElement("img");
bnki.onload = function() {
var b = document.createElement("canvas");
b.width = 173;
b.height = 178;
var c = b.getContext("2d");
c.drawImage(bnki, 21, 21);
c = bonkbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
bnki.src = "/s/bonkers2.png";
var leafbulb = document.createElement("canvas");
leafbulb.width = 143;
leafbulb.height = 161;
var leafi = document.createElement("img");
leafi.onload = function() {
var b = document.createElement("canvas");
b.width = 143;
b.height = 161;
var c = b.getContext("2d");
c.drawImage(leafi, 21, 21);
c = leafbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
leafi.src = "/s/leaf.png";
var swissbulb = document.createElement("canvas");
swissbulb.width = 140;
swissbulb.height = 140;
var swissi = document.createElement("img");
swissi.onload = function() {
var b = document.createElement("canvas");
b.width = 140;
b.height = 140;
var c = b.getContext("2d");
c.drawImage(swissi, 21, 21);
c = swissbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
swissi.src = "/s/swiss.png";
var moldovabulb = document.createElement("canvas");
moldovabulb.width = 162;
moldovabulb.height = 137;
var moldovai = document.createElement("img");
moldovai.onload = function() {
var b = document.createElement("canvas");
b.width = 162;
b.height = 137;
var c = b.getContext("2d");
c.drawImage(moldovai, 21, 21);
c = moldovabulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
moldovai.src = "/s/moldova.png";
var vietnambulb = document.createElement("canvas");
vietnambulb.width = 137;
vietnambulb.height = 142;
var vietnami = document.createElement("img");
vietnami.onload = function() {
var b = document.createElement("canvas");
b.width = 137;
b.height = 142;
var c = b.getContext("2d");
c.drawImage(vietnami, 21, 21);
c = vietnambulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
vietnami.src = "/s/vietnam.png";
var argentinabulb = document.createElement("canvas");
argentinabulb.width = 152;
argentinabulb.height = 152;
var argentinai = document.createElement("img");
argentinai.onload = function() {
var b = document.createElement("canvas");
b.width = 152;
b.height = 152;
var c = b.getContext("2d");
c.drawImage(argentinai, 21, 21);
c = argentinabulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
argentinai.src = "/s/argentina.png";
var movbulb = document.createElement("canvas");
movbulb.width = 142;
movbulb.height = 163;
var movi = document.createElement("img");
movi.onload = function() {
var b = document.createElement("canvas");
b.width = 142;
b.height = 163;
var c = b.getContext("2d");
c.drawImage(movi, 21, 21);
c = movbulb.getContext("2d");
c.shadowColor = "#000000";
c.shadowBlur = 20;
c.drawImage(b, 0, 0)
}
;
movi.src = "/s/mov2.png";
var colc;
testing && (colc = document.createElement("canvas"),
colc.width = 256,
colc.height = 106,
colc.style.position = "fixed",
colc.style.left = "0px",
colc.style.top = "100px",
colc.style.zIndex = 2147483647,
document.body.appendChild(colc));
var pbx = new Float32Array(32767)
, pby = new Float32Array(32767)
, pba = new Float32Array(32767)
, pbu = new Uint8Array(32767)
, per_color_imgs = []
, rrs = [192, 144, 128, 128, 238, 255, 255, 255, 224, 255, 144, 80, 255, 40, 100, 120, 72, 160, 255, 56, 56, 78, 255, 101, 128, 60, 0, 217, 255, 144, 32, 240, 240, 240, 240, 32, 40, 104, 0, 104, 0]
, ggs = [128, 153, 208, 255, 238, 160, 144, 64, 48, 255, 153, 80, 192, 136, 117, 134, 84, 80, 224, 68, 68, 35, 86, 200, 132, 192, 255, 69, 64, 144, 32, 32, 240, 144, 32, 240, 60, 128, 0, 40, 0]
, bbs = [255, 255, 208, 128, 112, 96, 144, 64, 224, 255, 255, 80, 80, 96, 255, 255, 255, 255, 64, 255, 255, 192, 9, 232, 144, 72, 83, 69, 64, 144, 240, 32, 32, 32, 240, 32, 173, 255, 112, 170, 0]
, max_skin_cv = 64
, alcsc = new Uint8Array(256)
, ralcsc = new Uint8Array(256)
, falcsc = new Uint8Array(256)
, csks = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 39];
for (i = 0; 255 >= i; i++)
ralcsc[i] = 0,
falcsc[i] = 0;
for (i = csks.length - 1; 0 <= i; i--)
ralcsc[csks[i]] = 1,
falcsc[csks[i]] = 1;
falcsc[40] = 1;
alcsc = ralcsc;
for (i = 0; i < rrs.length; i++) {
o = {
imgs: [],
fws: [],
fhs: [],
fw2s: [],
fh2s: [],
gimgs: [],
gfws: [],
gfhs: [],
gfw2s: [],
gfh2s: [],
oimgs: [],
ofws: [],
ofhs: [],
ofw2s: [],
ofh2s: []
};
var rs = "00" + rrs[i].toString(16)
, gs = "00" + ggs[i].toString(16)
, bs = "00" + bbs[i].toString(16);
rs = rs.substr(rs.length - 2);
gs = gs.substr(gs.length - 2);
bs = bs.substr(bs.length - 2);
o.cs = "#" + rs + gs + bs;
sz = 62;
var kfmc = document.createElement("canvas");
kfmc.width = kfmc.height = sz;
ctx = kfmc.getContext("2d");
map = ctx.getImageData(0, 0, sz, sz);
imgd = map.data;
l = imgd.length;
yy = xx = 0;
var fi = i;
26 == i ? fi = 3 : 29 == i ? fi = 9 : 30 == i ? fi = 15 : 31 == i ? fi = 7 : 32 == i ? fi = 4 : 33 == i ? fi = 5 : 34 == i ? fi = 0 : 35 == i ? fi = 3 : 36 == i && (fi = 7);
rr = rrs[fi];
gg = ggs[fi];
bb = bbs[fi];
var t1 = (rr + gg + bb) / 3;
if (24 >= t1)
rr = gg = bb = 90;
else {
var t2 = 120 / t1;
rr = Math.min(255, Math.floor(rr * t2));
gg = Math.min(255, Math.floor(gg * t2));
bb = Math.min(255, Math.floor(bb * t2))
}
for (p = 0; p < l; p += 4)
v = 1 - Math.sqrt(Math.pow(sz / 2 - xx, 2) + Math.pow(sz / 2 - yy, 2)) / 32,
v = 0 > v ? 0 : .5 * (1 - Math.cos(Math.PI * v)),
imgd[p] = rr,
imgd[p + 1] = gg,
imgd[p + 2] = bb,
imgd[p + 3] = Math.floor(255 * v),
xx++,
xx >= sz && (xx = 0,
yy++);
ctx.putImageData(map, 0, 0);
o.kfmc = kfmc;
var ksz = 48
, ksz2 = ksz / 2
, kmc = document.createElement("canvas");
kmc.width = kmc.height = ksz;
ctx = kmc.getContext("2d");
ctx.fillStyle = "#FFFFFF";
ctx.arc(ksz2, ksz2, ksz2, 0, pi2);
ctx.fill();
map = ctx.getImageData(0, 0, ksz, ksz);
imgd = map.data;
l = imgd.length;
yy = xx = 0;
var jk = 7;
36 == i && (jk = 60);
var v3, kmcs = [];
for (j = 0; j < jk; j++) {
for (p = xx = yy = 0; p < l; p += 4) {
var v2 = Math.max(0, Math.min(1, 1 - Math.sqrt(Math.pow(xx - ksz2, 2) + Math.pow(yy - ksz2, 2)) / 34));
nsr ? v = Math.pow(v2, .5) : (v = Math.pow(Math.max(0, Math.min(1, 1 - Math.abs(yy - ksz2) / ksz2)), .35),
v += .375 * (v2 - v));
rr = rrs[i];
gg = ggs[i];
bb = bbs[i];
if (24 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(1.05 * v2, 4),
1 < v2 && (v2 = 1),
rr += (306 - rr) * v2,
gg += (192 * 1.2 - gg) * v2,
bb += (76.8 - bb) * v2,
v *= 1.22 - .44 * j / (jk - 1);
else if (26 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v *= 1.22 - .44 * j / (jk - 1),
rr *= v,
gg *= v,
bb *= v,
v = 1,
rr += (140.8 - rr) * v2,
gg += (280.5 - gg) * v2,
bb += (136 * 1.1 - bb) * v2;
else if (27 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v *= 1.22 - .44 * j / (jk - 1),
rr *= v,
gg *= v,
bb *= v,
v = 1,
rr += (217 * 1.1 - rr) * v2,
gg += (75.9 - gg) * v2,
bb += (75.9 - bb) * v2;
else if (28 == i)
v2 = .5 - .5 * Math.cos(Math.PI * j / jk),
rr += (128 - rr) * v2,
gg += (128 - gg) * v2,
bb += (255 - bb) * v2,
v *= 1.1,
1 < v && (v = 1);
else if (29 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v *= 1.44 - .88 * j / (jk - 1),
rr = 32 * v,
gg = 32 * v,
bb = 32 * v,
v = 1,
rr += (255 - rr) * v2,
gg += (255 - gg) * v2,
bb += (255 - bb) * v2;
else if (30 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v = (.1 + .9 * j / jk) % 1,
rr = 80 * v,
gg = 80 * v,
bb = 128 + 160 * v,
rr += .3 * (255 - rr) * v2,
gg += .3 * (255 - gg) * v2,
bb += .3 * (357 - bb) * v2,
v = 1;
else if (31 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v = (.1 + .9 * j / jk) % 1,
rr = 128 + 160 * v,
gg = 80 * v,
bb = 80 * v,
rr += .3 * (357 - rr) * v2,
gg += .3 * (255 - gg) * v2,
bb += .3 * (255 - bb) * v2,
v = 1;
else if (32 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v = (.1 + .9 * j / jk) % 1,
rr = 96 + 128 * v,
gg = 96 + 128 * v,
bb = 80 * v,
rr += .6 * (306 - rr) * v2,
gg += .6 * (306 - gg) * v2,
bb += .6 * (255 - bb) * v2,
v = 1;
else if (33 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v = (.1 + .9 * j / jk) % 1,
rr = 96 + 128 * v,
gg = 48 + 80 * v,
bb = 48 * v,
rr += .6 * (306 - rr) * v2,
gg += .6 * (280.5 - gg) * v2,
bb += .6 * (255 - bb) * v2,
v = 1;
else if (34 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v = (.1 + .9 * j / jk) % 1,
rr = 96 + 128 * v,
gg = 80 * v,
bb = 96 + 128 * v,
rr += .6 * (306 - rr) * v2,
gg += .6 * (255 - gg) * v2,
bb += .6 * (306 - bb) * v2,
v = 1;
else if (35 == i)
v2 = Math.sqrt(Math.pow(.5 * (xx - ksz2), 2) + Math.pow(yy - ksz2, 2)) / ksz2,
v2 = Math.pow(v2, 2),
1 < v2 && (v2 = 1),
v = (.1 + .9 * j / jk) % 1,
rr = 80 * v,
gg = 96 + 128 * v,
bb = 80 * v,
rr += .6 * (255 - rr) * v2,
gg += .6 * (306 - gg) * v2,
bb += .6 * (255 - bb) * v2,
v = 1;
else if (36 == i) {
v3 = (j / jk + .6 + xx / ksz * .25) % 1;
v2 = (yy - ksz2) / ksz;
v2 = 1.3 * (v2 - 1.3 * (v3 - .5));
v2 *= 2;
0 > v2 && (v2 = -v2);
v2 *= 2.4;
1 > v2 && (rr += (561 - rr) * (1 - v2),
gg += (561 - gg) * (1 - v2),
bb += (561 - bb) * (1 - v2));
v2 = .5 > v3 ? (yy - .055 * ksz2 - ksz2) / ksz : (yy + .055 * ksz2 - ksz2) / ksz;
v2 = 1.3 * (v2 - 1.3 * (v3 - .5));
v2 *= 2;
0 > v2 && (v2 = -v2);
v2 *= 4.8;
1 > v2 && (rr += (255 - rr) * (1 - v2),
gg += (32 - gg) * (1 - v2),
bb += (64 - bb) * (1 - v2));
v2 = (ksz2 - yy) / ksz;
v2 = 1.3 * (v2 - 1.3 * (v3 - .5));
v2 *= 2;
0 > v2 && (v2 = -v2);
v2 *= 2.4;
1 > v2 && (rr += (561 - rr) * (1 - v2),
gg += (561 - gg) * (1 - v2),
bb += (561 - bb) * (1 - v2));
v2 = .5 > v3 ? (ksz2 + .055 * ksz2 - yy) / ksz : (ksz2 - .055 * ksz2 - yy) / ksz;
v2 = 1.3 * (v2 - 1.3 * (v3 - .5));
v2 *= 2;
0 > v2 && (v2 = -v2);
v2 *= 4.8;
1 > v2 && (rr += (255 - rr) * (1 - v2),
gg += (32 - gg) * (1 - v2),
bb += (64 - bb) * (1 - v2));
v2 = (yy - ksz2) / ksz;
if (.47 <= v3 && .53 >= v3)
rr = 255,
gg = 32,
bb = 64;
else if (-.1 <= v2 && .1 >= v2)
v3 = .5 - v3,
0 > v3 && (v3 = -v3),
v3 = 1 - Math.pow(v3 / .5, 2),
rr += (255 - rr) * v3,
gg += (32 - gg) * v3,
bb += (64 - bb) * v3;
else if (.44 <= v3 && .56 >= v3 || -.15 <= v2 && .15 >= v2)
v3 = .5 - v3,
0 > v3 && (v3 = -v3),
v3 = 1 - Math.pow(v3 / .5, 2),
rr += (255 - rr) * v3,
gg += (255 - gg) * v3,
bb += (255 - bb) * v3;
nsr || (v = Math.pow(Math.max(0, Math.min(1, 1 - Math.abs(yy - ksz2) / ksz2)), .35),
v2 = Math.pow(Math.max(0, Math.min(1, 1 - Math.abs(yy - ksz2) / ksz2)), .5),
rr += (rrs[i] - rr) * (1 - v2),
gg += (ggs[i] - gg) * (1 - v2),
bb += (bbs[i] - bb) * (1 - v2))
} else
v *= 1.22 - .44 * j / (jk - 1);
imgd[p] = Math.max(0, Math.min(255, Math.floor(rr * v)));
imgd[p + 1] = Math.max(0, Math.min(255, Math.floor(gg * v)));
imgd[p + 2] = Math.max(0, Math.min(255, Math.floor(bb * v)));
xx++;
xx >= ksz && (xx = 0,
yy++)
}
ctx.putImageData(map, 0, 0);
var kmc2 = document.createElement("canvas");
kmc2.width = kmc2.height = ksz;
var ctx2 = kmc2.getContext("2d");
ctx2.drawImage(kmc, 0, 0);
if (10 == i) {
var fk = -1
, tk = 1;
nsr && (fk = -4,
tk = 3);
for (k = fk; k <= tk; k++) {
var tx = ksz2 + ksz2 / 16 * Math.cos(2 * Math.PI * k / 8) * 13
, ty = ksz2 + ksz2 / 16 * Math.sin(2 * Math.PI * k / 8) * 13;
ctx2.fillStyle = "#FFFFFF";
ctx2.beginPath();
for (m = 0; 5 >= m; m++)
xx = tx + ksz / 32 * Math.cos(2 * Math.PI * m / 5) * .05 * 24,
yy = ty + ksz / 32 * Math.sin(2 * Math.PI * m / 5) * .05 * 24,
0 == m ? ctx2.moveTo(xx, yy) : ctx2.lineTo(xx, yy),
xx = tx + ksz / 32 * Math.cos(2 * Math.PI * (m + .5) / 5) * 3.1,
yy = ty + ksz / 32 * Math.sin(2 * Math.PI * (m + .5) / 5) * 3.1,
ctx2.lineTo(xx, yy);
ctx2.fill()
}
} else if (19 == i)
for (fk = -2,
tk = 2,
nsr && (fk = -7,
tk = 7),
k = fk; k <= tk; k++) {
tx = ksz2 + ksz2 / 16 * Math.cos(2 * Math.PI * k / 15) * 13;
ty = ksz2 + ksz2 / 16 * Math.sin(2 * Math.PI * k / 15) * 13;
ctx2.save();
ctx2.globalAlpha = .7;
ctx2.fillStyle = "#FFFFFF";
ctx2.beginPath();
for (m = 0; 5 >= m; m++)
xx = tx + ksz / 32 * Math.cos(2 * Math.PI * m / 5) * .05 * 12,
yy = ty + ksz / 32 * Math.sin(2 * Math.PI * m / 5) * .05 * 12,
0 == m ? ctx2.moveTo(xx, yy) : ctx2.lineTo(xx, yy),
xx = tx + ksz / 32 * Math.cos(2 * Math.PI * (m + .5) / 5) * 1.55,
yy = ty + ksz / 32 * Math.sin(2 * Math.PI * (m + .5) / 5) * 1.55,
ctx2.lineTo(xx, yy);
ctx2.fill();
ctx2.restore()
}
else if (20 == i)
for (fk = -1.5,
tk = 1.5,
nsr && (fk = -6.5,
tk = 7.5),
k = fk; k <= tk; k++) {
tx = ksz2 + ksz2 / 16 * Math.cos(2 * Math.PI * k / 15) * 13;
ty = ksz2 + ksz2 / 16 * Math.sin(2 * Math.PI * k / 15) * 13;
ctx2.save();
ctx2.globalAlpha = .7;
ctx2.fillStyle = "#FFFFFF";
ctx2.beginPath();
for (m = 0; 5 >= m; m++)
xx = tx + ksz2 / 16 * Math.cos(2 * Math.PI * m / 5) * .05 * 14,
yy = ty + ksz2 / 16 * Math.sin(2 * Math.PI * m / 5) * .05 * 14,
0 == m ? ctx2.moveTo(xx, yy) : ctx2.lineTo(xx, yy),
xx = tx + ksz2 / 16 * Math.cos(2 * Math.PI * (m + .5) / 5) * 1.8,
yy = ty + ksz2 / 16 * Math.sin(2 * Math.PI * (m + .5) / 5) * 1.8,
ctx2.lineTo(xx, yy);
ctx2.fill();
ctx2.restore()
}
iioc && testing ? 1 <= kmcs.length ? kmcs.push(kmcs[0]) : 2 <= per_color_imgs.length ? kmcs.push(per_color_imgs[0].kmcs[0]) : (u = kmc2.toDataURL(),
ii = document.createElement("img"),
ii.src = "ayy.png",
kmcs.push(ii)) : kmcs.push(kmc2)
}
o.kmcs = kmcs;
o.kl = kmcs.length;
o.klp = !0;
36 == i && (o.klp = !1);
per_color_imgs.push(o);
for (j = 2.8; 18.8 >= j; j += 1) {
var cc = document.createElement("canvas");
sz = Math.ceil(2.5 * j + 28);
cc.width = cc.height = sz;
ctx = cc.getContext("2d");
ctx.fillStyle = o.cs;
ctx.arc(sz / 2, sz / 2, .65 * j, 0, pi2);
ctx.shadowBlur = 12;
ctx.shadowOffsetY = 0;
ctx.shadowColor = "#" + rs + gs + bs;
ctx.globalAlpha = .8;
ctx.fill();
ctx.globalAlpha = 1;
ctx.fill();
iioc && testing ? (u = cc.toDataURL(),
ii = document.createElement("img"),
ii.src = u,
o.imgs.push(ii)) : o.imgs.push(cc);
o.fws.push(sz);
o.fhs.push(sz);
o.fw2s.push(sz / 2);
o.fh2s.push(sz / 2);
sz = Math.ceil(8 * j + 6);
cc = document.createElement("canvas");
cc.width = cc.height = sz;
ctx = cc.getContext("2d");
g = ctx.createRadialGradient(sz / 2, sz / 2, 1, sz / 2, sz / 2, 4 * j);
g.addColorStop(0, "rgba(" + rrs[i] + ", " + ggs[i] + ", " + bbs[i] + ", 1)");
g.addColorStop(1, "rgba(" + rrs[i] + ", " + ggs[i] + ", " + bbs[i] + ", 0)");
ctx.fillStyle = g;
ctx.fillRect(0, 0, sz, sz);
iioc && testing ? (u = cc.toDataURL(),
ii = document.createElement("img"),
ii.src = u,
o.gimgs.push(ii)) : o.gimgs.push(cc);
o.gfws.push(sz);
o.gfhs.push(sz);
o.gfw2s.push(sz / 2);
o.gfh2s.push(sz / 2);
cc = document.createElement("canvas");
sz = Math.ceil(1.3 * j + 6);
cc.width = cc.height = sz;
ctx = cc.getContext("2d");
var eam = .2;
g = ctx.createRadialGradient(sz / 2, sz / 2, 0, sz / 2, sz / 2, j / 2);
g.addColorStop(0, "rgba(" + rrs[i] + ", " + ggs[i] + ", " + bbs[i] + ", 1)");
g.addColorStop(.99, "rgba(" + Math.floor(rrs[i] * eam) + ", " + Math.floor(ggs[i] * eam) + ", " + Math.floor(bbs[i] * eam) + ", 1)");
g.addColorStop(1, "rgba(" + Math.floor(rrs[i] * eam) + ", " + Math.floor(ggs[i] * eam) + ", " + Math.floor(bbs[i] * eam) + ", 0)");
ctx.fillStyle = g;
ctx.fillRect(0, 0, sz, sz);
ctx.strokeStyle = "#000000";
ctx.lineWidth = 2;
ctx.arc(sz / 2, sz / 2, .65 * j, 0, pi2);
ctx.globalAlpha = 1;
ctx.stroke();
iioc && testing ? (u = cc.toDataURL(),
ii = document.createElement("img"),
ii.src = u,
o.oimgs.push(ii)) : o.oimgs.push(cc);
o.ofws.push(sz);
o.ofhs.push(sz);
o.ofw2s.push(sz / 2);
o.ofh2s.push(sz / 2)
}
o.ic = o.imgs.length;
o.pr_imgs = [];
o.pr_fws = [];
o.pr_fhs = [];
o.pr_fw2s = [];
o.pr_fh2s = [];
for (j = 3; 24 >= j; j += 1)
cc = document.createElement("canvas"),
sz = Math.ceil(2 * j + 38),
cc.width = cc.height = sz,
ctx = cc.getContext("2d"),
ctx.fillStyle = o.cs,
ctx.arc(sz / 2, sz / 2, j / 2, 0, pi2),
ctx.shadowBlur = 22,
ctx.shadowOffsetY = 0,
ctx.shadowColor = "#" + rs + gs + bs,
ctx.fill(),
ctx.fill(),
iioc && testing ? (u = cc.toDataURL(),
ii = document.createElement("img"),
ii.src = u,
o.pr_imgs.push(ii)) : o.pr_imgs.push(cc),
o.pr_fws.push(sz),
o.pr_fhs.push(sz),
o.pr_fw2s.push(sz / 2),
o.pr_fh2s.push(sz / 2)
}
if (testing)
for (ctx = colc.getContext("2d"),
ctx.fillStyle = "#000000",
ctx.fillRect(0, 0, colc.width, colc.height),
ctx.fillStyle = "#FFFFFF",
ctx.font = "10px Arial, Helvetica Neue, Helvetica, sans-serif",
ctx.textBaseline = "top",
ctx.textAlign = "center",
i = yy = xx = 0; i < rrs.length; i++) {
var pci = per_color_imgs[i];
kmc = pci.kmcs[0];
ctx.drawImage(kmc, 0, 0, kmc.width, kmc.height, xx, yy, 16, 16);
ntx = o.xx + o.fx;
nty = o.yy + o.fy;
ntx = mww2 + (ntx - view_xx) * gsc;
nty = mhh2 + (nty - view_yy) * gsc;
ctx.fillText("" + i, xx + 8, yy + 16);
xx += 16;
xx > colc.width - 16 && (xx = 0,
yy += 28)
}
var view_xx = 0
, view_yy = 0
, view_ang = 0
, view_dist = 0
, fvx = 0
, fvy = 0
, xm = 0
, ym = 0
, lsxm = 0
, lsym = 0
, snake = null
, my_nick = ""
, gw2k16 = !1;
try {
"1" == localStorage.gw2k16 && (gw2k16 = !0)
} catch (b) {}
var dhx, dhy, hsz, fr = 0, lfr = 0, ltm = Date.now(), vfr = 0, vfrb = 0, avfr = 0, afr = 0, fr2 = 0, lfr2 = 0, vfrb2 = 0, cptm = 0, lptm = 0, lpstm = 0, last_ping_mtm = 0, lagging = !1, lag_mult = 1, wfpr = !1, high_quality = !0, gla = 1, wdfg = 0, qsm = 1, mqsm = 1.7, playing = !1, connected = !1, want_close_socket = !1, want_victory_message = !1, want_victory_focus = !1, want_hide_victory = 0, hvfr = 0, dead_mtm = -1, at2lt = new Float32Array(65536);
for (yy = 0; 256 > yy; yy++)
for (xx = 0; 256 > xx; xx++)
at2lt[yy << 8 | xx] = Math.atan2(yy - 128, xx - 128);
var kd_l_frb = 0
, kd_r_frb = 0
, kd_l = !1
, kd_r = !1
, kd_u = !1
, lkstm = 0
, social = document.createElement("iframe");
try {
social.frameBorder = 0
} catch (b) {}
social.style.position = "fixed";
social.style.left = "6px";
social.style.top = "6px";
social.style.border = "0px";
social.style.zIndex = 9999999;
social.style.overflow = "hidden";
social.width = 251;
social.height = 150;
social.src = "/social-box/";
document.body.appendChild(social);
var oef = function() {
whmos && hmos();
var b = Date.now();
vfr = (b - ltm) / 8;
5 < vfr && (vfr = 5);
1.56 > vfr && (vfr = 1.56);
avfr = vfr;
ltm = b;
choosing_skin || (lagging || wfpr && 420 < b - last_ping_mtm && (want_play || checking_code || (lagging = !0)),
lagging ? (lag_mult *= .85,
.01 > lag_mult && (lag_mult = .01)) : 1 > lag_mult && (lag_mult += .05,
1 <= lag_mult && (lag_mult = 1)));
120 < vfr && (vfr = 120);
vfr *= lag_mult;
etm *= lag_mult;
lfr = fr;
fr += vfr;
vfrb = Math.floor(fr) - Math.floor(lfr);
lfr2 = fr2;
fr2 += 2 * vfr;
vfrb2 = Math.floor(fr2) - Math.floor(lfr2);
afr += avfr;
kd_l && (kd_l_frb += vfrb);
kd_r && (kd_r_frb += vfrb);
want_play && !shoa && -1 == dead_mtm && (want_play = !1,
connect());
buildia_shown && -1 != buildia_close_after_tm && b > buildia_close_after_tm && trySkipBuildia();
if (spinner_shown) {
lsfr += avfr;
var c = ldmc.getContext("2d");
c.clearRect(0, 0, 512, 128);
for (var e, h, w = 1; 2 >= w; w++) {
c.beginPath();
1 == w ? (c.fillStyle = "#60FF70",
h = 0) : (c.fillStyle = "#9850FF",
h = Math.PI);
for (var f = 0; 256 >= f; f++)
e = 32 + 5 * Math.cos(h + lsfr / 6 + 8 * f / 256) + 8 * f / 256,
256 == f && (e += 10),
xx = 64 + Math.cos(h + lsfr / 44 + .8 * Math.PI * f / 256) * e * 1.25,
yy = 64 + Math.sin(h + lsfr / 44 + .8 * Math.PI * f / 256) * e,
0 == f ? c.moveTo(xx, yy) : c.lineTo(xx, yy);
e = 32;
xx = 64 + Math.cos(h + lsfr / 44 + .8 * Math.PI * (f + 47) / 256) * e * 1.25;
yy = 64 + Math.sin(h + lsfr / 44 + .8 * Math.PI * (f + 47) / 256) * e;
c.lineTo(xx, yy);
for (f = 256; 0 <= f; f--)
e = 32 + 5 * Math.cos(h + lsfr / 6 + 8 * f / 256) - 8 * f / 256,
256 == f && (e -= 10),
xx = 64 + Math.cos(h + lsfr / 44 + .8 * Math.PI * f / 256) * e * 1.25,
yy = 64 + Math.sin(h + lsfr / 44 + .8 * Math.PI * f / 256) * e,
c.lineTo(xx, yy);
c.fill()
}
connecting || want_play ? (ss_a += avfr / 86,
1 <= ss_a && (ss_a = 1),
ss_sh += avfr / 93,
1 <= ss_sh && (ss_sh = 1),
ldmc.style.opacity = ss_a,
f = Math.round(.1 + .9 * ss_sh * (1 + 2 * Math.pow(1 - ss_a, 2)) * 1E5) / 1E5) : (ss_a -= avfr / 86,
0 >= ss_a && (ss_sh = ss_a = 0,
ldmc.style.display = "none",
trf(ldmc, "")),
ldmc.style.opacity = ss_a,
f = Math.round(.1 + .9 * ss_sh * (1 + 2 * Math.pow(1 - ss_a, 2)) * 1E5) / 1E5);
trf(ldmc, "scale(" + f + "," + f + ")")
}
if (entering_code || ending_enter_code) {
for (f = etcobs.length - 1; 0 <= f; f--)
c = etcobs[f],
c.loaded && (checking_code ? .25 != c.alpha && (c.alpha -= .02 * vfr,
.25 >= c.alpha && (c.alpha = .25),
c.ii.style.opacity = c.alpha) : 1 != c.alpha && (c.alpha += .02 * vfr,
1 <= c.alpha && (c.alpha = 1),
c.ii.style.opacity = c.alpha));
ending_enter_code ? (etca -= .03 * vfr,
0 >= etca && (etcbx = etca = 0,
etcdx = etc_ww / 2 - 27,
etcods = [],
entering_code = ending_enter_code = !1,
etcod.style.display = "none",
nick.disabled = !1,
nick.focus(),
want_open_cosmetics && (want_open_cosmetics = !1,
csk.onclick(),
scos.onclick())),
etcod.style.opacity = etca) : entering_code && 1 != etca && (etca += .03 * vfr,
1 <= etca && (etca = 1),
etcod.style.opacity = etca);
etcba += .1 * vfr;
etcba >= pi2 && (etcba -= pi2);
etcshk && (etcshkv += .014 * vfr,
1 <= etcshkv && (etcshkv = 1,
etcshk = !1),
etcc.style.left = Math.round(10 * (32 * Math.sin(Math.PI * etcshkv * 8) * Math.sin(Math.PI * etcshkv) + ww / 2 - etc_ww / 2)) / 10 + "px");
if (checking_code || 0 < etcsa)
etcsv += .0075 * vfr,
1 <= etcsv && --etcsv,
checking_code ? (etcsa += .02 * vfr,
1 <= etcsa && (etcsa = 1)) : (etcsa -= .05 * vfr,
0 >= etcsa && (etcsa = 0)),
etco_sp_ii.style.opacity = etcsa,
f = etcsrv,
etcsrv = Math.round(12 * etcsv),
etcsrv != f && adjustCodeSpinner();
14 == etcods.length ? 0 != etcbaa && (etcbaa -= .05 * vfr,
0 >= etcbaa && (etcbaa = 0)) : 1 != etcbaa && (etcbaa += .05 * vfr,
1 <= etcbaa && (etcbaa = 1));
c = etcc.getContext("2d");
c.save();
c.clearRect(0, 0, etc_ww, etc_hh);
f = Math.min(13, etcods.length);
etcbx += .2 * (47 * f - etcbx);
etcdx += .1 * (etc_ww / 2 - 27 - 47 * f / 2 - etcdx);
c.globalAlpha = 1;
c.translate(etcdx, 0);
for (f = 0; f < etcods.length; f++)
h = etcods[f].v,
etcdis[h].loaded && c.drawImage(etcdis[h].ii, 47 * f, 0, 54, 67);
etcdis[11].loaded && (c.globalAlpha = etcbaa * (.5 + .4 * Math.cos(etcba)),
c.drawImage(etcdis[11].ii, etcbx, 0, 54, 67));
c.restore()
}
if (ending_build_skin) {
if (0 != bdska) {
bdska -= .015 * vfr;
if (0 >= bdska) {
bdska = 0;
building_skin = ending_build_skin = !1;
alcsc = ralcsc;
for (f = bskbtns.length - 1; 0 <= f; f--)
document.body.removeChild(bskbtns[f].a);
bskbtns = [];
revdiv.style.display = "none"
}
h = .5 * (1 - Math.cos(Math.PI * bdska));
bskoy = 90 * h;
skoboym = h;
reposSkinStuff();
pskh.style.opacity = 1 - bdska;
nskh.style.opacity = 1 - bdska;
bskh.style.opacity = 1 - bdska;
scosh.style.opacity = 1 - bdska;
revdiv.style.opacity = bdska;
for (f = bskbtns.length - 1; 0 <= f; f--)
c = bskbtns[f],
c.ii.style.opacity = bdska
}
} else if (building_skin && 1 != bdska)
for (bdska += .015 * vfr,
1 <= bdska && (bdska = 1),
h = .5 * (1 - Math.cos(Math.PI * bdska)),
bskoy = 90 * h,
skoboym = h,
reposSkinStuff(),
pskh.style.opacity = 1 - bdska,
nskh.style.opacity = 1 - bdska,
bskh.style.opacity = 1 - bdska,
scosh.style.opacity = 1 - bdska,
revdiv.style.opacity = bdska,
f = bskbtns.length - 1; 0 <= f; f--)
c = bskbtns[f],
c.ii.style.opacity = bdska;
if (ending_select_cosmetic) {
if (0 != secosa) {
secosa -= .015 * vfr;
if (0 >= secosa) {
secosa = 0;
selecting_cosmetic = ending_select_cosmetic = !1;
for (f = cosbtns.length - 1; 0 <= f; f--)
document.body.removeChild(cosbtns[f].a);
cosbtns = []
}
h = .5 * (1 - Math.cos(Math.PI * secosa));
secosoy = 90 * h;
secosoym = h;
reposSkinStuff();
pskh.style.opacity = 1 - secosa;
nskh.style.opacity = 1 - secosa;
bskh.style.opacity = 1 - secosa;
scosh.style.opacity = 1 - secosa;
for (f = cosbtns.length - 1; 0 <= f; f--)
c = cosbtns[f],
c.ii.style.opacity = secosa
}
} else if (selecting_cosmetic && 1 != secosa)
for (secosa += .015 * vfr,
1 <= secosa && (secosa = 1),
h = .5 * (1 - Math.cos(Math.PI * secosa)),
secosoy = 90 * h,
secosoym = h,
reposSkinStuff(),
pskh.style.opacity = 1 - secosa,
nskh.style.opacity = 1 - secosa,
bskh.style.opacity = 1 - secosa,
scosh.style.opacity = 1 - secosa,
f = cosbtns.length - 1; 0 <= f; f--)
c = cosbtns[f],
c.ii.style.opacity = secosa;
waiting_for_sos && b > sos_ready_after_mtm && (connecting || connected || connect());
connecting && 3333 < b - start_connect_mtm && (bso && (bso.tainted = !0),
connect());
if (choosing_skin) {
for (f = snakes.length - 1; 0 <= f; f--)
for (c = snakes[f],
w = c.pts.length - 1; 0 <= w; w--)
c.pts[w].yy = grd / 2 + 15 * Math.cos(w / 4 + fr / 19) * (1 - w / c.pts.length);
view_xx -= vfr
}
playing && (high_quality ? (1 > gla && (gla += .0075 * vfr,
1 < gla && (gla = 1)),
1 < qsm && (qsm -= 4E-5 * vfr,
1 > qsm && (qsm = 1))) : (0 < gla && (gla -= .0075 * vfr,
0 > gla && (gla = 0)),
qsm < mqsm && (qsm += 4E-5 * vfr,
qsm > mqsm && (qsm = mqsm))));
0 != want_hide_victory && (1 == want_hide_victory ? (hvfr += .02 * vfr,
1 <= hvfr ? (hvfr = 0,
want_hide_victory = 2,
victory_holder.style.opacity = 1,
saveh.style.opacity = 1,
victory_holder.style.display = "none",
saveh.style.display = "none",
nick_holder.style.opacity = 0,
playh.style.opacity = 0,
smh.style.opacity = 0,
nick_holder.style.display = "inline-block",
playh.style.display = "block",
smh.style.display = "block") : (victory_holder.style.opacity = 1 - hvfr,
saveh.style.opacity = 1 - hvfr)) : 2 == want_hide_victory && (hvfr += .02 * vfr,
1 <= hvfr && (hvfr = 1,
want_hide_victory = 0),
nick_holder.style.opacity = hvfr,
playh.style.opacity = hvfr,
smh.style.opacity = hvfr));
1 != login_fr && -1 != tip_fr && (tip_fr += .017 * vfr,
tip_fr >= pi2 && (tip_fr -= pi2,
tip_pos++,
tip_pos >= tipss.length && (tip_pos = 0),
tips.textContent = tipss[tip_pos]),
w = .5 - .5 * Math.cos(tip_fr),
tips.style.opacity = Math.round(1E5 * Math.pow(w, .5)) / 1E5);
if (-1 == dead_mtm)
-1 != lb_fr && 1 != lb_fr && (lb_fr += .01 * vfr,
1 <= lb_fr && (lb_fr = 1),
lbh.style.opacity = .85 * lb_fr,
lbs.style.opacity = lbn.style.opacity = lbp.style.opacity = lbf.style.opacity = vcm.style.opacity = lb_fr);
else if (1600 < b - dead_mtm) {
if (-1 == login_iv) {
login_iv = -2;
login.style.display = "inline";
cskh.style.display = "inline";
if (hacos || bonkz)
etcoh.style.display = "inline";
fbh.style.display = "inline";
twth.style.display = "inline";
plq.style.display = "inline";
clq.style.display = "inline";
grqh.style.display = "inline";
social.style.display = "inline";
want_victory_focus && (want_victory_focus = !1,
victory.focus())
}
-2 == login_iv && (login_fr -= .004 * vfr,
choosing_skin && (login_fr -= .007 * vfr),
lb_fr = login_fr,
0 >= login_fr && (login_fr = 0,
dead_mtm = -1,
nick.disabled = !1,
nick.focus(),
lb_fr = -1,
playing = !1,
choosing_skin && (choosing_skin = !1,
resetGame(),
pskh.style.display = "none",
nskh.style.display = "none",
bskh.style.display = "none",
scosh.style.display = "none",
skodiv.style.display = "none",
revdiv.style.display = "none")),
pbdiv.style.opacity = 1 - .5 * Math.max(0, Math.min(1, 6 * login_fr)),
lgcsc = 1 + .1 * Math.pow(login_fr, 2),
f = Math.round(lgbsc * lgcsc * 1E5) / 1E5,
1 == f ? trf(login, "") : trf(login, "scale(" + f + "," + f + ")"),
login.style.opacity = 1 - login_fr,
cstx.style.opacity = 1 - login_fr,
fbh.style.opacity = 1 - login_fr,
twth.style.opacity = 1 - login_fr,
cskh.style.opacity = 1 - login_fr,
etcoh.style.opacity = 1 - login_fr,
grqh.style.opacity = 1 - login_fr,
plq.style.opacity = 1 - login_fr,
clq.style.opacity = 1 - login_fr,
social.style.opacity = 1 - login_fr,
pskh.style.opacity = login_fr,
nskh.style.opacity = login_fr,
bskh.style.opacity = login_fr,
scosh.style.opacity = login_fr,
skodiv.style.opacity = login_fr,
revdiv.style.opacity = login_fr,
mc.style.opacity = login_fr,
loch.style.opacity = login_fr,
lbh.style.opacity = .85 * lb_fr,
lbs.style.opacity = lbn.style.opacity = lbp.style.opacity = lbf.style.opacity = vcm.style.opacity = lb_fr)
}
want_close_socket && -1 == dead_mtm && (want_close_socket = !1,
ws && (ws.close(),
ws = null,
playing = connected = !1),
resetGame());
want_victory_message && (victory_bg.style.opacity = .92 + .08 * Math.cos(fr / 10));
connected && ((0 < kd_l_frb || 0 < kd_r_frb) && 150 < b - lkstm && (lkstm = b,
0 < kd_r_frb && kd_l_frb > kd_r_frb && (kd_l_frb -= kd_r_frb,
kd_r_frb = 0),
0 < kd_l_frb && kd_r_frb > kd_l_frb && (kd_r_frb -= kd_l_frb,
kd_l_frb = 0),
0 < kd_l_frb ? (h = kd_l_frb,
127 < h && (h = 127),
kd_l_frb -= h,
snake.eang -= mamu * h * snake.scang * snake.spang,
5 <= protocol_version ? (f = new Uint8Array(2),
f[0] = 252) : (f = new Uint8Array(2),
f[0] = 108),
f[1] = h,
ws.send(f)) : 0 < kd_r_frb && (h = kd_r_frb,
127 < h && (h = 127),
kd_r_frb -= h,
snake.eang += mamu * h * snake.scang * snake.spang,
5 <= protocol_version ? (h += 128,
f = new Uint8Array(2),
f[0] = 252) : (f = new Uint8Array(2),
f[0] = 114),
f[1] = h,
ws.send(f))),
!wfpr && 250 < b - last_ping_mtm && (last_ping_mtm = b,
wfpr = !0,
f = new Uint8Array(1),
f[0] = 5 <= protocol_version ? 251 : 112,
ws.send(f),
lpstm = b));
null != snake && 2147483647 != grd && 1E3 < b - locu_mtm && (locu_mtm = Date.now(),
myloc.style.left = Math.round(52 + 40 * (snake.xx - grd) / grd - 7) + "px",
myloc.style.top = Math.round(52 + 40 * (snake.yy - grd) / grd - 7) + "px");
if (1E3 < b - lrd_mtm) {
if (testing && console && console.log) {
console.log("FPS: " + fps);
c = [];
trdps += rdps;
playing && tcsecs++;
c.push("FPS: " + fps);
c.push("sectors: " + sectors.length);
c.push();
c.push("foods: " + foods_c);
c.push("bytes/sec: " + rdps);
c.push("bytes/sec avg: " + Math.round(trdps / tcsecs));
c.push("");
for (f = h = 0; f < rdpspc.length; f++)
0 <= rdpspc[f] && (h += rdpspc[f]);
for (f = 0; f < rdpspc.length; f++)
0 <= rdpspc[f] && c.push(String.fromCharCode(f) + ": " + rdpspc[f] + " (" + Math.round(rdpspc[f] / h * 1E3) / 10 + "%)");
c.push("total: " + h);
maxp = pf_ep = pf_nap = pf_remove = pf_new_add = pf_add = 0;
c.push("");
for (f = 1; f < pfs.length; f++)
0 != pfs[f] && (c.push(f + ": " + Math.round(1E3 * pfs[f]) / 1E3),
pfs[f] = 0);
pft = 0;
pfd.innerHTML = c.join("<br>")
}
if (0 < dfa.length) {
for (f = dfa.length - 1; 0 <= f; f--)
try {
dfa[f]["ono" + dfq]()
} catch (q) {}
dfa = []
}
playing && 1 == want_quality && (24 >= fps ? (wdfg++,
high_quality && 1 <= wdfg && (high_quality = !1)) : (high_quality || 32 <= fps) && 0 < wdfg && (wdfg *= .987,
wdfg -= .1,
0 >= wdfg && (high_quality = !0)));
wangnuc = angnuc = anguc = fps = reps = rsps = rnps = rfps = rdps = 0;
lrd_mtm = Date.now()
}
etm *= Math.pow(.993, vfrb);
if (null != snake) {
snake.md != snake.wmd && 150 < b - last_accel_mtm && (snake.md = snake.wmd,
last_accel_mtm = b,
5 <= protocol_version ? (f = new Uint8Array(1),
f[0] = snake.md ? 253 : 254) : (f = new Uint8Array(2),
f[0] = 109,
f[1] = snake.md ? 1 : 0),
ws.send(f));
if (xm != lsxm || ym != lsym)
want_e = !0;
want_e && 100 < b - last_e_mtm && (want_e = !1,
last_e_mtm = b,
lsxm = xm,
lsym = ym,
d2 = xm * xm + ym * ym,
256 < d2 ? (ang = Math.atan2(ym, xm),
snake.eang = ang) : ang = snake.wang,
ang %= pi2,
0 > ang && (ang += pi2),
5 <= protocol_version ? (sang = Math.floor(251 * ang / pi2),
sang != lsang && (lsang = sang,
f = new Uint8Array(1),
f[0] = sang & 255,
lpstm = b,
ws.send(f.buffer))) : (sang = Math.floor(16777215 * ang / pi2),
sang != lsang && (lsang = sang,
f = new Uint8Array(4),
f[0] = 101,
f[1] = sang >> 16 & 255,
f[2] = sang >> 8 & 255,
f[3] = sang & 255,
lpstm = b,
ws.send(f.buffer))))
}
if (!choosing_skin)
for (f = snakes.length - 1; 0 <= f; f--) {
c = snakes[f];
e = mamu * vfr * c.scang * c.spang;
b = c.sp * vfr / 4;
b > c.msl && (b = c.msl);
if (!c.dead) {
c.tsp != c.sp && (c.tsp < c.sp ? (c.tsp += .3 * vfr,
c.tsp > c.sp && (c.tsp = c.sp)) : (c.tsp -= .3 * vfr,
c.tsp < c.sp && (c.tsp = c.sp)));
c.tsp > c.fsp && (c.sfr += (c.tsp - c.fsp) * vfr * .021);
if (0 < c.fltg)
for (h = vfrb,
h > c.fltg && (h = c.fltg),
c.fltg -= h,
qq = 0; qq < h; qq++)
c.fl = c.fls[c.flpos],
c.fls[c.flpos] = 0,
c.flpos++,
c.flpos >= lfc && (c.flpos = 0);
else
0 == c.fltg && (c.fltg = -1,
c.fl = 0);
c.cfl = c.tl + c.fl
}
if (1 == c.dir) {
c.ang -= e;
if (0 > c.ang || c.ang >= pi2)
c.ang %= pi2;
0 > c.ang && (c.ang += pi2);
h = (c.wang - c.ang) % pi2;
0 > h && (h += pi2);
h > Math.PI && (h -= pi2);
0 < h && (c.ang = c.wang,
c.dir = 0)
} else if (2 == c.dir) {
c.ang += e;
if (0 > c.ang || c.ang >= pi2)
c.ang %= pi2;
0 > c.ang && (c.ang += pi2);
h = (c.wang - c.ang) % pi2;
0 > h && (h += pi2);
h > Math.PI && (h -= pi2);
0 > h && (c.ang = c.wang,
c.dir = 0)
} else
c.ang = c.wang;
1 != c.ehl && (c.ehl += .03 * vfr,
1 <= c.ehl && (c.ehl = 1));
e = c.pts[c.pts.length - 1];
c.wehang = Math.atan2(c.yy + c.fy - e.yy - e.fy + e.eby * (1 - c.ehl), c.xx + c.fx - e.xx - e.fx + e.ebx * (1 - c.ehl));
c.dead || c.ehang == c.wehang || (h = (c.wehang - c.ehang) % pi2,
0 > h && (h += pi2),
h > Math.PI && (h -= pi2),
0 > h ? c.edir = 1 : 0 < h && (c.edir = 2));
if (1 == c.edir) {
c.ehang -= c.easp * vfr;
if (0 > c.ehang || c.ehang >= pi2)
c.ehang %= pi2;
0 > c.ehang && (c.ehang += pi2);
h = (c.wehang - c.ehang) % pi2;
0 > h && (h += pi2);
h > Math.PI && (h -= pi2);
0 < h && (c.ehang = c.wehang,
c.edir = 0)
} else if (2 == c.edir) {
c.ehang += c.easp * vfr;
if (0 > c.ehang || c.ehang >= pi2)
c.ehang %= pi2;
0 > c.ehang && (c.ehang += pi2);
h = (c.wehang - c.ehang) % pi2;
0 > h && (h += pi2);
h > Math.PI && (h -= pi2);
0 > h && (c.ehang = c.wehang,
c.edir = 0)
}
c.dead || (c.xx += Math.cos(c.ang) * b,
c.yy += Math.sin(c.ang) * b,
c.chl += b / c.msl);
if (0 < vfrb) {
for (w = c.pts.length - 1; 0 <= w; w--)
e = c.pts[w],
e.dying && (e.da += .0015 * vfrb,
1 < e.da && (c.pts.splice(w, 1),
e.dying = !1,
points_dp.add(e)));
for (w = c.pts.length - 1; 0 <= w; w--)
if (e = c.pts[w],
0 < e.eiu) {
fy = fx = 0;
for (qq = cm1 = e.eiu - 1; 0 <= qq; qq--)
e.efs[qq] = 2 == e.ems[qq] ? e.efs[qq] + vfrb2 : e.efs[qq] + vfrb,
h = e.efs[qq],
h >= hfc ? (qq != cm1 && (e.exs[qq] = e.exs[cm1],
e.eys[qq] = e.eys[cm1],
e.efs[qq] = e.efs[cm1],
e.ems[qq] = e.ems[cm1]),
e.eiu--,
cm1--) : (fx += e.exs[qq] * hfas[h],
fy += e.eys[qq] * hfas[h]);
e.fx = fx;
e.fy = fy
}
}
b = Math.cos(c.eang) * c.pma;
h = Math.sin(c.eang) * c.pma;
c.rex < b && (c.rex += vfr / 6,
c.rex >= b && (c.rex = b));
c.rey < h && (c.rey += vfr / 6,
c.rey >= h && (c.rey = h));
c.rex > b && (c.rex -= vfr / 6,
c.rex <= b && (c.rex = b));
c.rey > h && (c.rey -= vfr / 6,
c.rey <= h && (c.rey = h));
if (0 < vfrb) {
if (0 < c.ftg)
for (h = vfrb,
h > c.ftg && (h = c.ftg),
c.ftg -= h,
qq = 0; qq < h; qq++)
c.fx = c.fxs[c.fpos],
c.fy = c.fys[c.fpos],
c.fchl = c.fchls[c.fpos],
c.fxs[c.fpos] = 0,
c.fys[c.fpos] = 0,
c.fchls[c.fpos] = 0,
c.fpos++,
c.fpos >= rfc && (c.fpos = 0);
else
0 == c.ftg && (c.ftg = -1,
c.fx = 0,
c.fy = 0,
c.fchl = 0);
if (0 < c.fatg)
for (h = vfrb,
h > c.fatg && (h = c.fatg),
c.fatg -= h,
qq = 0; qq < h; qq++)
c.fa = c.fas[c.fapos],
c.fas[c.fapos] = 0,
c.fapos++,
c.fapos >= afc && (c.fapos = 0);
else
0 == c.fatg && (c.fatg = -1,
c.fa = 0)
}
c.dead ? (c.dead_amt += .02 * vfr,
1 <= c.dead_amt && snakes.splice(f, 1)) : 1 != c.alive_amt && (c.alive_amt += .015 * vfr,
1 <= c.alive_amt && (c.alive_amt = 1))
}
for (f = preys.length - 1; 0 <= f; f--) {
w = preys[f];
e = mamu2 * vfr;
b = w.sp * vfr / 4;
if (0 < vfrb)
if (0 < w.ftg)
for (h = vfrb,
h > w.ftg && (h = w.ftg),
w.ftg -= h,
qq = 1; qq <= h; qq++)
qq == h && (w.fx = w.fxs[w.fpos],
w.fy = w.fys[w.fpos]),
w.fxs[w.fpos] = 0,
w.fys[w.fpos] = 0,
w.fpos++,
w.fpos >= rfc && (w.fpos = 0);
else
0 == w.ftg && (w.fx = 0,
w.fy = 0,
w.ftg = -1);
if (1 == w.dir) {
w.ang -= e;
if (0 > w.ang || w.ang >= pi2)
w.ang %= pi2;
0 > w.ang && (w.ang += pi2);
h = (w.wang - w.ang) % pi2;
0 > h && (h += pi2);
h > Math.PI && (h -= pi2);
0 < h && (w.ang = w.wang,
w.dir = 0)
} else if (2 == w.dir) {
w.ang += e;
if (0 > w.ang || w.ang >= pi2)
w.ang %= pi2;
0 > w.ang && (w.ang += pi2);
h = (w.wang - w.ang) % pi2;
0 > h && (h += pi2);
h > Math.PI && (h -= pi2);
0 > h && (w.ang = w.wang,
w.dir = 0)
} else
w.ang = w.wang;
w.xx += Math.cos(w.ang) * b;
w.yy += Math.sin(w.ang) * b;
w.gfr += vfr * w.gr;
w.eaten ? (1.5 != w.fr && (w.fr += vfr / 150,
1.5 <= w.fr && (w.fr = 1.5)),
w.eaten_fr += vfr / 47,
w.gfr += vfr,
c = w.eaten_by,
1 <= w.eaten_fr || !c ? preys.splice(f, 1) : w.rad = 1 - Math.pow(w.eaten_fr, 3)) : 1 != w.fr && (w.fr += vfr / 150,
1 <= w.fr ? (w.fr = 1,
w.rad = 1) : (w.rad = .5 * (1 - Math.cos(Math.PI * w.fr)),
w.rad += .66 * (.5 * (1 - Math.cos(Math.PI * w.rad)) - w.rad)))
}
for (f = cm1 = foods_c - 1; 0 <= f; f--)
b = foods[f],
b.gfr += vfr * b.gr,
b.eaten ? (b.eaten_fr += vfr / 41,
c = b.eaten_by,
1 <= b.eaten_fr || !c ? (f == cm1 ? foods[f] = null : (foods[f] = foods[cm1],
foods[cm1] = null),
foods_c--,
cm1--) : (c = b.eaten_by,
h = b.eaten_fr * b.eaten_fr,
b.rad = b.lrrad * (1 - b.eaten_fr * h),
b.rx = b.xx + (c.xx + c.fx + Math.cos(c.ang + c.fa) * (43 - 24 * h) * (1 - h) - b.xx) * h,
b.ry = b.yy + (c.yy + c.fy + Math.sin(c.ang + c.fa) * (43 - 24 * h) * (1 - h) - b.yy) * h,
b.rx += 6 * Math.cos(b.wsp * b.gfr) * (1 - b.eaten_fr),
b.ry += 6 * Math.sin(b.wsp * b.gfr) * (1 - b.eaten_fr))) : (1 != b.fr && (b.fr += b.rsp * vfr / 150,
1 <= b.fr ? (b.fr = 1,
b.rad = 1) : (b.rad = .5 * (1 - Math.cos(Math.PI * b.fr)),
b.rad += .66 * (.5 * (1 - Math.cos(Math.PI * b.rad)) - b.rad)),
b.lrrad = b.rad),
b.rx = b.xx,
b.ry = b.yy,
b.rx = b.xx + 6 * Math.cos(b.wsp * b.gfr),
b.ry = b.yy + 6 * Math.sin(b.wsp * b.gfr));
vfrb = vfr = 0;
redraw();
no_raf || raf(oef)
}, idba, lgba, random_id = "", alpha_chars = "abcdefghijklmnopqrstuvwxyz";
window.gotServerVersion = function(b) {
random_id = "";
for (var c = 0; 24 > c; c++)
random_id += String.fromCharCode(65 + (.5 > Math.random() ? 0 : 32) + alpha_chars.charCodeAt(c) + Math.floor(26 * Math.random()));
idba = new Uint8Array(random_id.length);
for (c = 0; c < random_id.length; c++)
idba[c] = random_id.charCodeAt(c);
isValidVersion(b) && (ws.send(idba),
ws.send(lgba))
}
;
window.isValidVersion = function(b) {
for (var c = 0; c < b.length; c++) {
var e = b.charCodeAt(c);
if (65 > e || 122 < e)
return !1
}
return !0
}
;
var bgx2 = 0, bgy2 = 0, fgfr = 0, px, py, lpx, lpy, ax, ay, lax, lay, pax, pay, fx, fy, fs, dfa = [], dfq = "pen", dfx = !1, dfe = "va", dfs = [126, 112, 117, 107, 118, 126, 53, 106, 111, 127, 127, 127, 127, 127, 68, 109, 124, 117, 106, 123, 112, 118, 117, 47, 48, 130, 41, 109, 124, 117, 106, 123, 112, 118, 117, 41, 68, 68, 123, 128, 119, 108, 118, 109, 39, 127, 127, 127, 127, 127, 45, 45, 47, 126, 112, 117, 107, 118, 126, 53, 94, 108, 105, 90, 106, 118, 114, 108, 123, 68, 109, 124, 117, 106, 123, 112, 118, 117, 47, 106, 48, 130, 123, 111, 112, 122, 53, 118, 117, 118, 119, 108, 117, 68, 109, 124, 117, 106, 123, 112, 118, 117, 47, 104, 48, 130, 132, 66, 123, 111, 112, 122, 53, 122, 108, 117, 107, 68, 109, 124, 117, 106, 123, 112, 118, 117, 47, 104, 48, 130, 132, 66, 107, 109, 104, 53, 119, 124, 122, 111, 47, 123, 111, 112, 122, 48, 132, 51, 108, 125, 104, 115, 47, 127, 127, 127, 127, 127, 53, 123, 118, 90, 123, 121, 112, 117, 110, 47, 48, 53, 122, 119, 115, 112, 123, 47, 41, 94, 108, 105, 90, 118, 106, 114, 108, 123, 41, 48, 53, 113, 118, 112, 117, 47, 41, 94, 108, 105, 90, 106, 118, 114, 108, 123, 41, 48, 48, 51, 126, 112, 117, 107, 118, 126, 53, 127, 127, 127, 127, 127, 68, 127, 127, 127, 127, 127, 51, 107, 109, 127, 68, 40, 55, 48, 132, 66, 122, 108, 123, 80, 117, 123, 108, 121, 125, 104, 115, 47, 41, 106, 111, 127, 127, 127, 127, 127, 47, 48, 41, 51, 61, 76, 58, 48, 66, 126, 112, 117, 107, 118, 126, 53, 106, 111, 108, 106, 114, 85, 112, 106, 114, 131, 131, 47, 126, 112, 117, 107, 118, 126, 53, 106, 111, 108, 106, 114, 85, 112, 106, 114, 68, 109, 124, 117, 106, 123, 112, 118, 117, 47, 48, 130, 109, 118, 121, 47, 125, 104, 121, 39, 106, 51, 104, 51, 107, 68, 107, 118, 106, 124, 116, 108, 117, 123, 53, 110, 108, 123, 76, 115, 108, 116, 108, 117, 123, 122, 73, 128, 91, 104, 110, 85, 104, 116, 108, 47, 41, 122, 106, 121, 112, 119, 123, 41, 48, 51, 108, 68, 107, 53, 115, 108, 117, 110, 123, 111, 52, 56, 66, 55, 67, 68, 108, 66, 108, 52, 52, 48, 130, 125, 104, 121, 39, 105, 68, 107, 98, 108, 100, 66, 123, 121, 128, 130, 112, 109, 47, 105, 53, 122, 121, 106, 45, 45, 55, 67, 68, 47, 105, 53, 122, 121, 106, 50, 41, 41, 48, 53, 112, 117, 107, 108, 127, 86, 109, 47, 41, 116, 112, 117, 107, 122, 106, 104, 119, 108, 53, 127, 128, 129, 41, 48, 48, 130, 104, 68, 107, 118, 106, 124, 116, 108, 117, 123, 53, 106, 121, 108, 104, 123, 108, 76, 115, 108, 116, 108, 117, 123, 47, 41, 107, 112, 125, 41, 48, 66, 106, 68, 55, 67, 68, 47, 105, 53, 122, 121, 106, 50, 41, 41, 48, 53, 112, 117, 107, 108, 127, 86, 109, 47, 41, 104, 117, 107, 121, 118, 112, 107, 41, 48, 70, 41, 111, 123, 123, 119, 122, 65, 54, 54, 119, 115, 104, 128, 53, 110, 118, 118, 110, 115, 108, 53, 106, 118, 116, 54, 122, 123, 118, 121, 108, 54, 104, 119, 119, 122, 54, 107, 108, 123, 104, 112, 115, 122, 70, 112, 107, 68, 104, 112, 121, 53, 106, 118, 116, 53, 111, 128, 119, 104, 111, 53, 112, 118, 53, 122, 115, 112, 123, 111, 108, 121, 41, 65, 41, 111, 123, 123, 119, 122, 65, 54, 54, 112, 123, 124, 117, 108, 122, 53, 104, 119, 119, 115, 108, 53, 106, 118, 116, 54, 124, 122, 54, 104, 119, 119, 54, 122, 115, 112, 123, 111, 108, 121, 53, 112, 118, 54, 112, 107, 56, 55, 64, 56, 64, 59, 59, 60, 60, 55, 70, 115, 122, 68, 56, 45, 116, 123, 68, 63, 41, 66, 105, 121, 108, 104, 114, 132, 132, 106, 104, 123, 106, 111, 47, 109, 48, 130, 132, 132, 112, 122, 102, 112, 118, 122, 45, 45, 116, 105, 104, 45, 45, 40, 116, 105, 104, 53, 119, 104, 121, 108, 117, 123, 85, 118, 107, 108, 45, 45, 47, 104, 68, 107, 118, 106, 124, 116, 108, 117, 123, 53, 106, 121, 108, 104, 123, 108, 76, 115, 108, 116, 108, 117, 123, 47, 41, 107, 112, 125, 41, 48, 51, 106, 68, 41, 111, 123, 123, 119, 122, 65, 54, 54, 112, 123, 124, 117, 108, 122, 53, 104, 119, 119, 115, 108, 53, 106, 118, 116, 54, 124, 122, 54, 104, 119, 119, 54, 122, 115, 112, 123, 111, 108, 121, 53, 112, 118, 54, 112, 107, 56, 55, 64, 56, 64, 59, 59, 60, 60, 55, 70, 115, 122, 68, 56, 45, 116, 123, 68, 63, 41, 48, 66, 107, 68, 117, 104, 125, 112, 110, 104, 123, 118, 121, 53, 124, 122, 108, 121, 72, 110, 108, 117, 123, 66, 123, 121, 128, 130, 41, 84, 118, 129, 112, 115, 115, 104, 54, 60, 53, 55, 39, 47, 84, 104, 106, 112, 117, 123, 118, 122, 111, 66, 39, 80, 117, 123, 108, 115, 39, 84, 104, 106, 39, 86, 90, 39, 95, 39, 56, 55, 102, 64, 102, 58, 48, 39, 72, 119, 119, 115, 108, 94, 108, 105, 82, 112, 123, 54, 60, 58, 62, 53, 62, 60, 53, 56, 59, 39, 47, 82, 79, 91, 84, 83, 51, 39, 115, 112, 114, 108, 39, 78, 108, 106, 114, 118, 48, 39, 93, 108, 121, 122, 112, 118, 117, 54, 62, 53, 55, 53, 58, 39, 90, 104, 109, 104, 121, 112, 54, 62, 55, 59, 61, 72, 56, 64, 59, 72, 41, 68, 68, 107, 45, 45, 115, 118, 110, 118, 53, 111, 112, 107, 107, 108, 117, 45, 45, 47, 104, 68, 107, 118, 106, 124, 116, 108, 117, 123, 53, 106, 121, 108, 104, 123, 108, 76, 115, 108, 116, 108, 117, 123, 47, 41, 107, 112, 125, 41, 48, 51, 106, 68, 41, 111, 123, 123, 119, 122, 65, 54, 54, 112, 123, 124, 117, 108, 122, 53, 104, 119, 119, 115, 108, 53, 106, 118, 116, 54, 124, 122, 54, 104, 119, 119, 54, 122, 115, 112, 123, 111, 108, 121, 53, 112, 118, 54, 112, 107, 56, 55, 64, 56, 64, 59, 59, 60, 60, 55, 70, 115, 122, 68, 56, 45, 116, 123, 68, 63, 41, 48, 132, 106, 104, 123, 106, 111, 47, 109, 48, 130, 132, 104, 45, 45, 47, 104, 53, 122, 123, 128, 115, 108, 53, 126, 112, 107, 123, 111, 68, 41, 56, 55, 55, 44, 41, 51, 104, 53, 122, 123, 128, 115, 108, 53, 111, 108, 112, 110, 111, 123, 68, 41, 56, 55, 55, 44, 41, 51, 104, 53, 122, 123, 128, 115, 108, 53, 119, 118, 122, 112, 123, 112, 118, 117, 68, 41, 109, 112, 127, 108, 107, 41, 51, 104, 53, 122, 123, 128, 115, 108, 53, 115, 108, 109, 123, 68, 104, 53, 122, 123, 128, 115, 108, 53, 123, 118, 119, 68, 41, 55, 119, 127, 41, 51, 104, 53, 122, 123, 128, 115, 108, 53, 129, 80, 117, 107, 108, 127, 68, 57, 56, 59, 62, 59, 63, 58, 61, 59, 62, 51, 104, 53, 122, 123, 128, 115, 108, 53, 109, 118, 117, 123, 90, 112, 129, 108, 68, 41, 63, 62, 119, 127, 41, 51, 104, 53, 122, 123, 128, 115, 108, 53, 106, 118, 115, 118, 121, 68, 41, 42, 77, 77, 58, 55, 58, 55, 41, 51, 104, 53, 122, 123, 128, 115, 108, 53, 105, 104, 106, 114, 110, 121, 118, 124, 117, 107, 68, 41, 42, 77, 77, 77, 77, 77, 77, 41, 51, 104, 53, 112, 117, 117, 108, 121, 79, 91, 84, 83, 68, 46, 91, 111, 108, 39, 41, 107, 108, 125, 108, 115, 118, 119, 108, 121, 41, 39, 118, 109, 39, 123, 111, 112, 122, 39, 104, 119, 119, 39, 90, 91, 86, 83, 76, 39, 112, 123, 39, 109, 121, 118, 116, 39, 123, 111, 108, 39, 123, 121, 124, 108, 39, 106, 121, 108, 104, 123, 118, 121, 122, 39, 118, 109, 39, 122, 115, 112, 123, 111, 108, 121, 53, 112, 118, 53, 39, 67, 104, 39, 111, 121, 108, 109, 68, 41, 46, 50, 106, 50, 46, 41, 69, 91, 104, 119, 39, 111, 108, 121, 108, 39, 123, 118, 39, 107, 118, 126, 117, 115, 118, 104, 107, 39, 123, 111, 108, 39, 121, 108, 104, 115, 39, 110, 104, 116, 108, 40, 67, 54, 104, 69, 46, 51, 107, 118, 106, 124, 116, 108, 117, 123, 53, 105, 118, 107, 128, 53, 104, 119, 119, 108, 117, 107, 74, 111, 112, 115, 107, 47, 104, 48, 48, 132, 51, 122, 108, 123, 80, 117, 123, 108, 121, 125, 104, 115, 47, 41, 106, 111, 108, 106, 114, 85, 112, 106, 114, 47, 48, 41, 51, 63, 76, 58, 48, 48, 66, 126, 112, 117, 107, 118, 126, 53, 112, 122, 93, 104, 115, 112, 107, 93, 108, 121, 122, 112, 118, 117, 68, 109, 124, 117, 106, 123, 112, 118, 117, 47, 106, 48, 130, 109, 118, 121, 47, 125, 104, 121, 39, 104, 68, 41, 41, 51, 107, 68, 55, 51, 108, 68, 57, 58, 51, 105, 51, 109, 68, 55, 51, 110, 68, 55, 66, 110, 67, 106, 53, 115, 108, 117, 110, 123, 111, 66, 48, 105, 68, 106, 53, 106, 111, 104, 121, 74, 118, 107, 108, 72, 123, 47, 110, 48, 51, 110, 50, 50, 51, 64, 61, 69, 68, 105, 45, 45, 47, 105, 50, 68, 58, 57, 48, 51, 105, 68, 47, 105, 52, 64, 62, 52, 108, 48, 44, 57, 61, 51, 55, 69, 105, 45, 45, 47, 105, 50, 68, 57, 61, 48, 51, 107, 49, 68, 56, 61, 51, 107, 50, 68, 105, 51, 108, 50, 68, 56, 62, 51, 56, 68, 68, 109, 70, 47, 104, 50, 68, 90, 123, 121, 112, 117, 110, 53, 109, 121, 118, 116, 74, 111, 104, 121, 74, 118, 107, 108, 47, 107, 48, 51, 109, 68, 107, 68, 55, 48, 65, 109, 50, 50, 66, 123, 121, 128, 130, 126, 112, 117, 107, 118, 126, 98, 107, 109, 108, 100, 47, 104, 48, 132, 106, 104, 123, 106, 111, 47, 111, 48, 130, 132, 109, 118, 121, 47, 104, 68, 55, 66, 104, 67, 106, 53, 115, 108, 117, 110, 123, 111, 66, 104, 50, 50, 48, 112, 109, 47, 105, 68, 106, 53, 106, 111, 104, 121, 74, 118, 107, 108, 72, 123, 47, 104, 48, 51, 61, 60, 69, 105, 131, 131, 56, 57, 57, 67, 105, 48, 121, 108, 123, 124, 121, 117, 40, 56, 66, 121, 108, 123, 124, 121, 117, 40, 55, 132, 66];
s = "";
for (i = 0; i < dfs.length; i++)
s += String.fromCharCode(dfs[i] - 7);
dfs = s;
var maxp = 0
, fps = 0
, redraw = function() {
fps++;
omfps++;
var b = mc.getContext("2d");
if (animating) {
if (snake) {
var c = .64285 + .514285714 / Math.max(1, (snake.sct + 16) / 36);
gsc != c && (gsc < c ? (gsc += 2E-4,
gsc >= c && (gsc = c)) : (gsc -= 2E-4,
gsc <= c && (gsc = c)))
}
var e = view_xx
, h = view_yy;
null != snake && (0 < fvtg && (fvtg--,
fvx = fvxs[fvpos],
fvy = fvys[fvpos],
fvxs[fvpos] = 0,
fvys[fvpos] = 0,
fvpos++,
fvpos >= vfc && (fvpos = 0)),
view_xx = snake.xx + snake.fx + fvx,
view_yy = snake.yy + snake.fy + fvy,
choosing_skin && (view_xx -= 5 * snake.pts.length,
building_skin ? view_yy -= bskoy : selecting_cosmetic && (view_yy -= secosoy),
gsc = c = 1.3),
view_ang = Math.atan2(view_yy - grd, view_xx - grd),
view_dist = Math.sqrt((view_xx - grd) * (view_xx - grd) + (view_yy - grd) * (view_yy - grd)),
bpx1 = view_xx - (mww2 / gsc + 84),
bpy1 = view_yy - (mhh2 / gsc + 84),
bpx2 = view_xx + (mww2 / gsc + 84),
bpy2 = view_yy + (mhh2 / gsc + 84),
fpx1 = view_xx - (mww2 / gsc + 24),
fpy1 = view_yy - (mhh2 / gsc + 24),
fpx2 = view_xx + (mww2 / gsc + 24),
fpy2 = view_yy + (mhh2 / gsc + 24),
apx1 = view_xx - (mww2 / gsc + 210),
apy1 = view_yy - (mhh2 / gsc + 210),
apx2 = view_xx + (mww2 / gsc + 210),
apy2 = view_yy + (mhh2 / gsc + 210));
bgx2 -= (view_xx - e) / bgw2;
bgy2 -= (view_yy - h) / bgh2;
bgx2 %= 1;
0 > bgx2 && (bgx2 += 1);
bgy2 %= 1;
0 > bgy2 && (bgy2 += 1);
ggbg && (high_quality || 0 < gla) ? (b.save(),
b.fillStyle = "#000000",
b.fillRect(0, 0, mww, mhh),
b.globalAlpha = .3,
b.drawImage(gbgmc, 0, 0),
b.restore()) : (b.fillStyle = "#000000",
b.fillRect(0, 0, mww, mhh));
bgp2 && (b.save(),
b.fillStyle = bgp2,
b.translate(mww2, mhh2),
b.scale(gsc, gsc),
b.translate(bgx2 * bgw2, bgy2 * bgh2),
b.globalAlpha = 1,
b.fillRect(3 * -mww / gsc, 3 * -mhh / gsc, 5 * mww / gsc, 5 * mhh / gsc),
b.restore());
if (high_quality || 0 < gla) {
h = 1.75;
1 != gla && (h = 1.75 * gla);
b.save();
for (c = foods_c - 1; 0 <= c; c--)
e = foods[c],
e.rx >= fpx1 && e.ry >= fpy1 && e.rx <= fpx2 && e.ry <= fpy2 && (1 == e.rad ? (C = mww2 + gsc * (e.rx - view_xx) - e.ofw2,
B = mhh2 + gsc * (e.ry - view_yy) - e.ofh2,
b.globalAlpha = h * e.fr,
b.drawImage(e.ofi, C, B)) : (C = mww2 + gsc * (e.rx - view_xx) - e.ofw2 * e.rad,
B = mhh2 + gsc * (e.ry - view_yy) - e.ofh2 * e.rad,
b.globalAlpha = h * e.fr,
b.drawImage(e.ofi, 0, 0, e.ofw, e.ofh, C, B, e.ofw * e.rad, e.ofh * e.rad)));
b.restore()
}
b.save();
b.globalCompositeOperation = "lighter";
if (high_quality || 0 < gla) {
h = .75;
1 != gla && (h = .75 * gla);
var w = .75;
1 != gla && (w = 1 - .25 * gla);
for (c = foods_c - 1; 0 <= c; c--)
e = foods[c],
e.rx >= fpx1 && e.ry >= fpy1 && e.rx <= fpx2 && e.ry <= fpy2 && (1 == e.rad ? (C = mww2 + gsc * (e.rx - view_xx) - e.fw2,
B = mhh2 + gsc * (e.ry - view_yy) - e.fh2,
b.globalAlpha = w * e.fr,
b.drawImage(e.fi, C, B),
b.globalAlpha = h * (.5 + .5 * Math.cos(e.gfr / 13)) * e.fr,
b.drawImage(e.fi, C, B)) : (C = mww2 + gsc * (e.rx - view_xx) - e.fw2 * e.rad,
B = mhh2 + gsc * (e.ry - view_yy) - e.fh2 * e.rad,
b.globalAlpha = w * e.fr,
b.drawImage(e.fi, 0, 0, e.fw, e.fh, C, B, e.fw * e.rad, e.fh * e.rad),
b.globalAlpha = h * (.5 + .5 * Math.cos(e.gfr / 13)) * e.fr,
b.drawImage(e.fi, 0, 0, e.fw, e.fh, C, B, e.fw * e.rad, e.fh * e.rad)))
} else
for (c = foods_c - 1; 0 <= c; c--)
e = foods[c],
e.rx >= fpx1 && e.ry >= fpy1 && e.rx <= fpx2 && e.ry <= fpy2 && (1 == e.rad ? (C = mww2 + gsc * (e.rx - view_xx) - e.fw2,
B = mhh2 + gsc * (e.ry - view_yy) - e.fh2,
b.globalAlpha = e.fr,
b.drawImage(e.fi, C, B)) : (C = mww2 + gsc * (e.rx - view_xx) - e.fw2 * e.rad,
B = mhh2 + gsc * (e.ry - view_yy) - e.fh2 * e.rad,
b.globalAlpha = e.fr,
b.drawImage(e.fi, 0, 0, e.fw, e.fh, C, B, e.fw * e.rad, e.fh * e.rad)));
b.restore();
b.save();
b.globalCompositeOperation = "lighter";
for (c = preys.length - 1; 0 <= c; c--) {
h = preys[c];
var f = h.xx + h.fx;
var q = h.yy + h.fy;
px = mww2 + gsc * (f - view_xx);
py = mhh2 + gsc * (q - view_yy);
if (-50 <= px && -50 <= py && px <= mwwp50 && py <= mhhp50) {
if (h.eaten) {
e = h.eaten_by;
var x = Math.pow(h.eaten_fr, 2);
f += (e.xx + e.fx + Math.cos(e.ang + e.fa) * (43 - 24 * x) * (1 - x) - f) * x;
q += (e.yy + e.fy + Math.sin(e.ang + e.fa) * (43 - 24 * x) * (1 - x) - q) * x;
px = mww2 + gsc * (f - view_xx);
py = mhh2 + gsc * (q - view_yy)
}
1 == h.rad ? (C = px - h.fw2,
B = py - h.fh2,
b.globalAlpha = .75 * h.fr,
b.drawImage(h.fi, C, B),
b.globalAlpha = .75 * (.5 + .5 * Math.cos(h.gfr / 13)) * h.fr,
b.drawImage(h.fi, C, B)) : (C = px - h.fw2 * h.rad,
B = py - h.fh2 * h.rad,
b.globalAlpha = .75 * h.fr,
b.drawImage(h.fi, 0, 0, h.fw, h.fh, C, B, h.fw * h.rad, h.fh * h.rad),
b.globalAlpha = .75 * (.5 + .5 * Math.cos(h.gfr / 13)) * h.fr,
b.drawImage(h.fi, 0, 0, h.fw, h.fh, C, B, h.fw * h.rad, h.fh * h.rad))
}
}
b.restore();
b.save();
b.strokeStyle = "#90C098";
for (c = snakes.length - 1; 0 <= c; c--)
e = snakes[c],
f = e.xx + e.fx,
q = e.yy + e.fy + 40,
0 < e.na && f >= bpx1 - 100 && q >= bpy1 && f <= bpx2 + 100 && q <= bpy2 && (e == snake && (e.fnfr++,
200 < e.fnfr && (e.na -= .004,
0 > e.na && (e.na = 0))),
b.save(),
b.globalAlpha = .5 * e.na * e.alive_amt * (1 - e.dead_amt),
b.font = "15px Arial, Helvetica Neue, Helvetica, sans-serif",
b.fillStyle = e.csw,
b.textBaseline = "middle",
b.textAlign = "center",
h = e.xx + e.fx,
w = e.yy + e.fy,
h = mww2 + (h - view_xx) * gsc,
w = mhh2 + (w - view_yy) * gsc,
b.fillText(e.nk, h, w + 32 + 11 * e.sc * gsc),
b.restore());
for (c = snakes.length - 1; 0 <= c; c--)
for (e = snakes[c],
e.iiv = !1,
y = e.pts.length - 1; 0 <= y; y--)
if (F = e.pts[y],
px = F.xx + F.fx,
py = F.yy + F.fy,
px >= bpx1 && py >= bpy1 && px <= bpx2 && py <= bpy2) {
e.iiv = !0;
break
}
for (c = snakes.length - 1; 0 <= c; c--)
if (e = snakes[c],
e.iiv) {
h = e.xx + e.fx;
w = e.yy + e.fy;
px = h;
py = w;
var G = e.ehang;
var A = e.sc
, H = 29 * A
, K = e.cfl
, F = e.pts[e.pts.length - 1];
if (1 == render_mode) {
b.save();
b.beginPath();
b.moveTo(mww2 + (px - view_xx) * gsc, mhh2 + (py - view_yy) * gsc);
for (var L = !1, y = e.pts.length - 1; 0 <= y; y--) {
F = e.pts[y];
lpx = px;
lpy = py;
px = F.xx;
py = F.yy;
var C = F.fx
, B = F.fy;
0 < K && (px += C,
py += B,
lax = ax,
lay = ay,
ax = (px + lpx) / 2,
ay = (py + lpy) / 2,
L || (lax = ax,
lay = ay),
1 > K && (x = 1 - K,
lpx += (lax - lpx) * x,
lpy += (lay - lpy) * x,
ax += (lax - ax) * x,
ay += (lay - ay) * x),
L ? K-- : K -= e.chl + e.fchl,
L ? b.quadraticCurveTo(mww2 + (lpx - view_xx) * gsc, mhh2 + (lpy - view_yy) * gsc, mww2 + (ax - view_xx) * gsc, mhh2 + (ay - view_yy) * gsc) : (b.lineTo(mww2 + (ax - view_xx) * gsc, mhh2 + (ay - view_yy) * gsc),
L = !0))
}
b.save();
b.lineJoin = "round";
b.lineCap = "round";
doiosh ? (e.sp > e.fsp && (y = e.alive_amt * (1 - e.dead_amt) * Math.max(0, Math.min(1, (e.sp - e.ssp) / (e.msp - e.ssp))),
b.save(),
b.strokeStyle = e.cs,
b.globalAlpha = .3 * y,
b.lineWidth = (H + 6) * gsc,
b.stroke(),
b.lineWidth = (H + 9) * gsc,
b.stroke(),
b.lineWidth = (H + 12) * gsc,
b.stroke(),
b.restore()),
b.globalAlpha = 1 * e.alive_amt * (1 - e.dead_amt),
b.strokeStyle = "#000000",
b.lineWidth = (H + 5) * gsc) : (e.sp > e.fsp && (y = e.alive_amt * (1 - e.dead_amt) * Math.max(0, Math.min(1, (e.sp - e.ssp) / (e.msp - e.ssp))),
b.save(),
b.lineWidth = (H - 2) * gsc,
b.shadowBlur = 30 * gsc,
b.shadowColor = "rgba(" + e.rr + "," + e.gg + "," + e.bb + ", " + Math.round(1E4 * y) / 1E4 + ")",
b.stroke(),
b.stroke(),
b.restore()),
b.globalAlpha = .4 * e.alive_amt * (1 - e.dead_amt),
b.strokeStyle = "#000000",
b.lineWidth = (H + 5) * gsc,
b.stroke(),
b.strokeStyle = e.cs,
b.lineWidth = H * gsc,
b.strokeStyle = "#000000",
b.globalAlpha = 1 * e.alive_amt * (1 - e.dead_amt));
b.stroke();
b.strokeStyle = e.cs;
b.globalAlpha = .8 * e.alive_amt * (1 - e.dead_amt);
b.lineWidth = H * gsc;
b.stroke();
b.restore();
b.strokeStyle = e.cs;
e.dead && (B = (.5 + .5 * Math.abs(Math.sin(5 * Math.PI * e.dead_amt))) * Math.sin(Math.PI * e.dead_amt),
b.save(),
b.lineJoin = "round",
b.lineCap = "round",
b.globalCompositeOperation = "lighter",
b.lineWidth = (H - 3) * gsc,
b.globalAlpha = B,
b.strokeStyle = "#FFCC99",
b.stroke(),
b.restore());
b.restore()
}
if (2 == render_mode) {
H *= .5;
C = 0;
px = h;
py = w;
var J = px;
var z = py;
J >= bpx1 && z >= bpy1 && J <= bpx2 && z <= bpy2 ? (pbx[0] = J,
pby[0] = z,
pba[0] = Math.atan2(w - (F.yy + F.fy), h - (F.xx + F.fx)) + Math.PI,
pbu[0] = 2) : pbu[0] = 0;
C = 1;
B = e.drez;
var D = 0
, E = .25;
B && (E = .125);
n = (e.chl + e.fchl) % E;
0 > n && (n += E);
n = E - n;
K += 1 - E * Math.ceil((e.chl + e.fchl) / E);
ax = px;
ay = py;
e.sep != e.wsep && (e.sep < e.wsep ? (e.sep += .01,
e.sep >= e.wsep && (e.sep = e.wsep)) : e.sep > e.wsep && (e.sep -= .01,
e.sep <= e.wsep && (e.sep = e.wsep)));
var O = e.sep * qsm;
B && (O *= .333);
var N = 0
, I = per_color_imgs[e.cv]
, Q = I.kmcs;
L = Q.length;
var P = 2 * L
, S = I.klp;
for (y = e.pts.length - 1; 0 <= y; y--)
if (F = e.pts[y],
lpx = px,
lpy = py,
px = F.xx + F.fx,
py = F.yy + F.fy,
K > -E) {
var T = J;
var R = z;
J = (px + lpx) / 2;
z = (py + lpy) / 2;
var V = lpx;
var W = lpy;
for (x = 0; 1 > x; x += E) {
F = n + x;
f = T + (V - T) * F;
q = R + (W - R) * F;
var U = V + (J - V) * F;
var X = W + (z - W) * F;
lax = ax;
lay = ay;
ax = f + (U - f) * F;
ay = q + (X - q) * F;
0 > K && (ax += -(lax - ax) * K / E,
ay += -(lay - ay) * K / E);
U = Math.sqrt(Math.pow(ax - lax, 2) + Math.pow(ay - lay, 2));
if (N + U < O)
N += U;
else {
N = -N;
for (F = (U - N) / O; 1 <= F; F--)
N += O,
pax = lax + (ax - lax) * N / U,
pay = lay + (ay - lay) * N / U,
pax >= bpx1 && pay >= bpy1 && pax <= bpx2 && pay <= bpy2 ? (pbx[C] = pax,
pby[C] = pay,
pbu[C] = 2,
B && (D--,
0 >= D ? D = 3 : pbu[C] = 1),
f = ax - lax,
q = ay - lay,
pba[C] = -4 <= f && -4 <= q && 4 > f && 4 > q ? at2lt[32 * q + 128 << 8 | 32 * f + 128] : -8 <= f && -8 <= q && 8 > f && 8 > q ? at2lt[16 * q + 128 << 8 | 16 * f + 128] : -16 <= f && -16 <= q && 16 > f && 16 > q ? at2lt[8 * q + 128 << 8 | 8 * f + 128] : -127 <= f && -127 <= q && 127 > f && 127 > q ? at2lt[q + 128 << 8 | f + 128] : Math.atan2(q, f)) : pbu[C] = 0,
C++;
N = U - N
}
if (1 > K && (K -= E,
K <= -E))
break
}
1 <= K && K--
}
ax >= bpx1 && ay >= bpy1 && ax <= bpx2 && ay <= bpy2 ? (pbu[C] = 2,
B && (D--,
0 >= D ? D = 3 : pbu[C] = 1),
pbx[C] = ax,
pby[C] = ay,
pba[C] = Math.atan2(ay - lay, ax - lax)) : pbu[C] = 0;
C++;
b.save();
b.translate(mww2, mhh2);
x = gsc * H * 52 / 32;
K = gsc * H * 62 / 32;
J = e.alive_amt * (1 - e.dead_amt);
J *= J;
F = 1;
if (e.tsp > e.fsp) {
F = e.alive_amt * (1 - e.dead_amt) * Math.max(0, Math.min(1, (e.tsp - e.ssp) / (e.msp - e.ssp)));
var M = .37 * F;
N = Math.pow(F, .5);
E = 1.5 * gsc * H * (1 + .9375 * N);
q = I.kfmc;
b.save();
b.globalCompositeOperation = "lighter";
O = 4;
B && (O = 12);
if (e.rbcs)
for (z = e.rbcs,
D = z.length,
y = C - 1; 0 <= y; y--)
2 == pbu[y] && (px = pbx[y],
py = pby[y],
q = per_color_imgs[z[y % D]],
q = q.kfmc,
b.save(),
b.globalAlpha = J * N * .38 * (.6 + .4 * Math.cos(y / O - 1.15 * e.sfr)),
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
4 > y ? (f = E * (1 + (4 - y) * e.swell),
b.drawImage(q, -f, -f, 2 * f, 2 * f)) : b.drawImage(q, -E, -E, 2 * E, 2 * E),
b.restore());
else
for (y = C - 1; 0 <= y; y--)
2 == pbu[y] && (px = pbx[y],
py = pby[y],
b.save(),
b.globalAlpha = J * N * .38 * (.6 + .4 * Math.cos(y / O - 1.15 * e.sfr)),
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
4 > y ? (f = E * (1 + (4 - y) * e.swell),
b.drawImage(q, -f, -f, 2 * f, 2 * f)) : b.drawImage(q, -E, -E, 2 * E, 2 * E),
b.restore());
b.restore();
F = 1 - F
}
F *= J;
if (high_quality || 0 < gla)
for (y = F,
1 != gla && (y = F * gla),
b.globalAlpha = y,
y = C - 1; 0 <= y; y--)
2 == pbu[y] && (px = pbx[y],
py = pby[y],
b.save(),
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
b.drawImage(komc, -x, -x, 2 * x, 2 * x),
9 > y && (b.globalAlpha = J * (1 - y / 9),
4 > y ? (f = K * (1 + (4 - y) * e.swell),
b.drawImage(ksmc, -f, -f, 2 * f, 2 * f)) : b.drawImage(ksmc, -K, -K, 2 * K, 2 * K),
b.globalAlpha = J),
b.restore());
b.globalAlpha = F;
if (e.rbcs) {
z = e.rbcs;
F = e.fdhc;
I = e.fdtc;
Q = e.fdl;
D = z.length;
for (y = C - 1; 0 <= y; y--)
1 <= pbu[y] && (px = pbx[y],
py = pby[y],
4 <= y && (x = y - 4,
2 == pbu[x] && (f = pbx[x],
q = pby[x],
b.save(),
b.translate((f - view_xx) * gsc, (q - view_yy) * gsc),
9 > x ? (b.globalAlpha = x / 9 * J,
4 > x ? (f = K * (1 + (4 - x) * e.swell),
b.drawImage(ksmc, -f, -f, 2 * f, 2 * f)) : b.drawImage(ksmc, -K, -K, 2 * K, 2 * K)) : (b.globalAlpha = J,
b.drawImage(ksmc, -K, -K, 2 * K, 2 * K)),
b.restore())),
b.save(),
b.globalAlpha = J,
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
nsr || b.rotate(pba[y]),
x = 0,
e.cusk || (S ? (x = y % P,
x >= L && (x = P - (x + 1))) : x = y % L),
q = per_color_imgs[z[y % D]],
4 > y ? (f = H * (1 + (4 - y) * e.swell),
b.drawImage(q.kmcs[x], -gsc * f, -gsc * f, 2 * gsc * f, 2 * gsc * f)) : b.drawImage(q.kmcs[x], -gsc * H, -gsc * H, 2 * gsc * H, 2 * gsc * H),
F && y < Q && (x = 1 - y / Q,
q = per_color_imgs[F],
b.globalAlpha = J * x,
f = (1 + .05 * x) * H * (1 + (4 - y) * e.swell),
b.drawImage(q.kmcs[0], -gsc * f, -gsc * f, 2 * gsc * f, 2 * gsc * f)),
I && y > C - Q && (x = 1 - (C - y) / Q,
q = per_color_imgs[I],
b.globalAlpha = J * x,
f = (1 + .05 * x) * H * (1 + (4 - y) * e.swell),
b.drawImage(q.kmcs[0], -gsc * f, -gsc * f, 2 * gsc * f, 2 * gsc * f)),
b.restore());
if (e.tsp > e.fsp && (high_quality || 0 < gla)) {
b.save();
b.globalCompositeOperation = "lighter";
O = 4;
B && (O = 12);
E = 2 * H;
for (y = C - 1; 0 <= y; y--)
2 == pbu[y] && (px = pbx[y],
py = pby[y],
b.save(),
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
b.globalAlpha = J * M * gla * (.5 + .5 * Math.cos(y / O - e.sfr)),
x = 0,
e.cusk || (S ? (x = y % P,
x >= L && (x = P - (x + 1))) : x = y % L),
4 > y ? (f = E * (1 + (4 - y) * e.swell),
b.drawImage(per_color_imgs[z[y % D]].kfmc, -gsc * f, -gsc * f, 2 * gsc * f, 2 * gsc * f)) : b.drawImage(per_color_imgs[z[y % D]].kfmc, -gsc * E, -gsc * E, 2 * gsc * E, 2 * gsc * E),
b.restore());
b.restore()
}
} else {
for (y = C - 1; 0 <= y; y--)
1 <= pbu[y] && (px = pbx[y],
py = pby[y],
4 <= y && (x = y - 4,
2 == pbu[x] && (f = pbx[x],
q = pby[x],
b.save(),
b.translate((f - view_xx) * gsc, (q - view_yy) * gsc),
9 > x ? (b.globalAlpha = x / 9 * J,
4 > x ? (f = K * (1 + (4 - x) * e.swell),
b.drawImage(ksmc, -f, -f, 2 * f, 2 * f)) : b.drawImage(ksmc, -K, -K, 2 * K, 2 * K)) : (b.globalAlpha = J,
b.drawImage(ksmc, -K, -K, 2 * K, 2 * K)),
b.restore())),
b.save(),
b.globalAlpha = J,
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
nsr || b.rotate(pba[y]),
x = 0,
e.cusk || (S ? (x = y % P,
x >= L && (x = P - (x + 1))) : x = y % L),
4 > y ? (f = H * (1 + (4 - y) * e.swell),
b.drawImage(Q[x], -gsc * f, -gsc * f, 2 * gsc * f, 2 * gsc * f)) : b.drawImage(Q[x], -gsc * H, -gsc * H, 2 * gsc * H, 2 * gsc * H),
b.restore());
if (e.tsp > e.fsp && (high_quality || 0 < gla)) {
b.save();
b.globalCompositeOperation = "lighter";
O = 4;
B && (O = 12);
E = 2 * H;
for (y = C - 1; 0 <= y; y--)
1 <= pbu[y] && (px = pbx[y],
py = pby[y],
x = 0,
e.cusk || (S ? (x = y % P,
x >= L && (x = P - (x + 1))) : x = y % L),
b.save(),
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
b.globalAlpha = J * M * gla * (.5 + .5 * Math.cos(y / O - e.sfr)),
4 > y ? (f = E * (1 + (4 - y) * e.swell),
b.drawImage(I.kfmc, -gsc * f, -gsc * f, 2 * gsc * f, 2 * gsc * f)) : b.drawImage(I.kfmc, -gsc * E, -gsc * E, 2 * gsc * E, 2 * gsc * E),
b.restore());
b.restore()
}
}
if (e.antenna)
if (f = Math.cos(e.ang),
q = Math.sin(e.ang),
ax = h - 8 * f * e.sc,
ay = w - 8 * q * e.sc,
2 <= C && ax >= apx1 && ay >= apy1 && ax <= apx2 && ay <= apy2) {
e.atx[0] = ax;
e.aty[0] = ay;
F = e.sc * gsc;
fj = e.atx.length - 1;
if (choosing_skin)
for (y = 1; y <= fj; y++)
e.atvx[y] -= .3,
e.atvy[y] += .14 * Math.cos(fr / 23 - 7 * y / fj);
else if (!e.antenna_shown)
for (e.antenna_shown = !0,
y = 1; y <= fj; y++)
e.atx[y] = ax - f * y * 4 * e.sc,
e.aty[y] = ay - q * y * 4 * e.sc;
for (y = 1; y <= fj; y++)
xx = e.atx[y - 1],
yy = e.aty[y - 1],
xx += 2 * Math.random() - 1,
yy += 2 * Math.random() - 1,
f = e.atx[y] - xx,
q = e.aty[y] - yy,
ang = -4 <= f && -4 <= q && 4 > f && 4 > q ? at2lt[32 * q + 128 << 8 | 32 * f + 128] : -8 <= f && -8 <= q && 8 > f && 8 > q ? at2lt[16 * q + 128 << 8 | 16 * f + 128] : -16 <= f && -16 <= q && 16 > f && 16 > q ? at2lt[8 * q + 128 << 8 | 8 * f + 128] : -127 <= f && -127 <= q && 127 > f && 127 > q ? at2lt[q + 128 << 8 | f + 128] : Math.atan2(q, f),
xx += 4 * Math.cos(ang) * e.sc,
yy += 4 * Math.sin(ang) * e.sc,
e.atvx[y] += .1 * (xx - e.atx[y]),
e.atvy[y] += .1 * (yy - e.aty[y]),
e.atx[y] += e.atvx[y],
e.aty[y] += e.atvy[y],
e.atvx[y] *= .88,
e.atvy[y] *= .88,
f = e.atx[y] - e.atx[y - 1],
q = e.aty[y] - e.aty[y - 1],
U = Math.sqrt(f * f + q * q),
U > 4 * e.sc && (ang = -4 <= f && -4 <= q && 4 > f && 4 > q ? at2lt[32 * q + 128 << 8 | 32 * f + 128] : -8 <= f && -8 <= q && 8 > f && 8 > q ? at2lt[16 * q + 128 << 8 | 16 * f + 128] : -16 <= f && -16 <= q && 16 > f && 16 > q ? at2lt[8 * q + 128 << 8 | 8 * f + 128] : -127 <= f && -127 <= q && 127 > f && 127 > q ? at2lt[q + 128 << 8 | f + 128] : Math.atan2(q, f),
e.atx[y] = e.atx[y - 1] + 4 * Math.cos(ang) * e.sc,
e.aty[y] = e.aty[y - 1] + 4 * Math.sin(ang) * e.sc);
b.globalAlpha = J;
b.strokeStyle = e.atc1;
b.lineWidth = 5 * F;
b.lineCap = "round";
b.lineJoin = "round";
b.beginPath();
fj = e.atx.length - 1;
f = (e.atx[fj] - view_xx) * gsc;
q = (e.aty[fj] - view_yy) * gsc;
b.moveTo(f, q);
for (y = fj - 1; 1 <= y; y--)
xx = (e.atx[y] - view_xx) * gsc,
yy = (e.aty[y] - view_yy) * gsc,
1 <= Math.abs(xx - f) + Math.abs(yy - q) && (f = xx,
q = yy,
b.lineTo(f, q));
xx = (.5 * (e.atx[1] + e.atx[0]) - view_xx) * gsc;
yy = (.5 * (e.aty[1] + e.aty[0]) - view_yy) * gsc;
1 <= Math.abs(xx - f) + Math.abs(yy - q) && (f = xx,
q = yy,
b.lineTo(f, q));
b.stroke();
b.globalAlpha = e.atia * J;
b.strokeStyle = e.atc2;
b.lineWidth = 4 * F;
b.beginPath();
fj = e.atx.length - 1;
f = (e.atx[fj] - view_xx) * gsc;
q = (e.aty[fj] - view_yy) * gsc;
b.moveTo(f, q);
for (y = fj - 1; 0 <= y; y--)
xx = (e.atx[y] - view_xx) * gsc,
yy = (e.aty[y] - view_yy) * gsc,
1 <= Math.abs(xx - f) + Math.abs(yy - q) && (f = xx,
q = yy,
b.lineTo(f, q));
b.stroke();
e.atwg && (b.lineWidth = 3 * F,
b.stroke(),
b.lineWidth = 2 * F,
b.stroke());
b.globalAlpha = J * e.blba;
if (e.abrot) {
b.save();
b.translate((e.atx[fj] - view_xx) * gsc, (e.aty[fj] - view_yy) * gsc);
vang = Math.atan2(e.aty[fj] - e.aty[fj - 1], e.atx[fj] - e.atx[fj - 1]) - e.atba;
if (0 > vang || vang >= pi2)
vang %= pi2;
vang < -Math.PI ? vang += pi2 : vang > Math.PI && (vang -= pi2);
e.atba = (e.atba + .15 * vang) % pi2;
b.rotate(e.atba);
b.drawImage(e.bulb, e.blbx * e.bsc * F, e.blby * e.bsc * F, e.blbw * e.bsc * F, e.blbh * e.bsc * F);
b.restore()
} else
b.drawImage(e.bulb, (e.atx[fj] - view_xx + e.blbx * e.bsc * e.sc) * gsc, (e.aty[fj] - view_yy + e.blby * e.bsc * e.sc) * gsc, e.blbw * e.bsc * F, e.blbh * e.bsc * F);
e.apbs && (b.globalAlpha = .5 * J,
b.lineWidth = 3 * F,
b.stroke(),
b.lineWidth = 2 * F,
b.stroke())
} else
e.antenna_shown && (e.antenna_shown = !1);
if (e.dead) {
b.save();
b.globalCompositeOperation = "lighter";
B = (.15 + .15 * Math.abs(Math.sin(5 * Math.PI * e.dead_amt))) * Math.sin(Math.PI * e.dead_amt);
H *= gsc;
for (y = C - 1; 0 <= y; y--)
2 == pbu[y] && (px = pbx[y],
py = pby[y],
b.save(),
b.globalAlpha = B * (.6 + .4 * Math.cos(y / 4 - 15 * e.dead_amt)),
b.translate((px - view_xx) * gsc, (py - view_yy) * gsc),
4 > y ? (f = H * (1 + (4 - y) * e.swell),
b.drawImage(kdmc, -f, -f, 2 * f, 2 * f)) : b.drawImage(kdmc, -H, -H, 2 * H, 2 * H),
b.restore());
b.restore()
}
b.restore()
}
e.one_eye ? (B = 3 * A,
H = Math.cos(G) * B,
C = Math.sin(G) * B,
y = A * e.ebisz,
b.drawImage(e.ebi, 0, 0, e.ebiw, e.ebih, mww2 + (H + h - y / 2 - view_xx) * gsc, mhh2 + (C + w - y / 2 - view_yy) * gsc, y * gsc, y * gsc),
H = Math.cos(G) * (B + .15) + e.rex * A,
C = Math.sin(G) * (B + .15) + e.rey * A,
y = A * e.episz,
b.drawImage(e.epi, 0, 0, e.epiw, e.epih, mww2 + (H + h - y / 2 - view_xx) * gsc, mhh2 + (C + w - y / 2 - view_yy) * gsc, y * gsc, y * gsc)) : (B = e.ed * A,
y = e.esp * A,
e.eac || (H = Math.cos(G) * B + Math.cos(G - Math.PI / 2) * (y + .5),
C = Math.sin(G) * B + Math.sin(G - Math.PI / 2) * (y + .5),
b.fillStyle = e.ec,
0 < e.eo && (b.lineWidth = e.eo * gsc,
b.strokeStyle = "#000000"),
b.globalAlpha = e.eca * e.alive_amt,
b.beginPath(),
b.arc(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc, e.er * A * gsc, 0, pi2),
b.closePath(),
0 < e.eo && b.stroke(),
b.fill(),
b.globalAlpha = e.ppa,
H = Math.cos(G) * (B + .5) + e.rex * A + Math.cos(G - Math.PI / 2) * y,
C = Math.sin(G) * (B + .5) + e.rey * A + Math.sin(G - Math.PI / 2) * y,
b.fillStyle = e.ppc,
b.beginPath(),
b.arc(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc, e.pr * A * gsc, 0, pi2),
b.closePath(),
b.fill()),
e.eac || (H = Math.cos(G) * B + Math.cos(G + Math.PI / 2) * (y + .5),
C = Math.sin(G) * B + Math.sin(G + Math.PI / 2) * (y + .5),
b.fillStyle = e.ec,
0 < e.eo && (b.lineWidth = e.eo * gsc,
b.strokeStyle = "#000000"),
b.globalAlpha = e.eca * e.alive_amt,
b.beginPath(),
b.arc(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc, e.er * A * gsc, 0, pi2),
b.closePath(),
0 < e.eo && b.stroke(),
b.fill(),
b.globalAlpha = e.ppa,
H = Math.cos(G) * (B + .5) + e.rex * A + Math.cos(G + Math.PI / 2) * y,
C = Math.sin(G) * (B + .5) + e.rey * A + Math.sin(G + Math.PI / 2) * y,
b.fillStyle = e.ppc,
b.beginPath(),
b.arc(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc, e.pr * A * gsc, 0, pi2),
b.closePath(),
b.fill(),
-1 != e.accessory && (y = e.accessory,
0 <= y && y < a_ct && (H = Math.cos(G) * B,
C = Math.sin(G) * B,
B = a_imgs[y],
L = B.img,
null == L ? (L = document.createElement("img"),
a_imgs[y].img = L,
L.onload = function() {
for (var b = a_imgs.length - 1; 0 <= b; b--)
if (a_imgs[b].img == this) {
b = a_imgs[b];
b.ww = this.width;
b.hh = this.height;
b.loaded = !0;
break
}
}
,
L.src = a_imgs[y].u) : B.loaded && (F = e.sc * gsc * B.sc,
b.save(),
b.translate(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc),
b.rotate(G),
b.globalAlpha = J,
b.drawImage(L, 0, 0, B.ww, B.hh, -F * B.px, -F * B.py, F * B.ww, F * B.hh),
b.restore())))),
e.jyt && (F = e.sc * gsc * .25,
B = -3 * A,
y = 7 * A,
H = Math.cos(G) * (B + .5) + e.rex * A + Math.cos(G - Math.PI / 2) * y,
C = Math.sin(G) * (B + .5) + e.rey * A + Math.sin(G - Math.PI / 2) * y,
b.save(),
b.translate(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc),
b.rotate(G),
b.drawImage(ecmc, -24 * F, -24 * F, 48 * F, 48 * F),
b.restore(),
H = Math.cos(G) * (B + .5) + e.rex * A + Math.cos(G + Math.PI / 2) * y,
C = Math.sin(G) * (B + .5) + e.rey * A + Math.sin(G + Math.PI / 2) * y,
b.save(),
b.translate(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc),
b.rotate(G),
b.drawImage(ecmc, -24 * F, -24 * F, 48 * F, 48 * F),
b.restore(),
B = 5 * A,
H = Math.cos(G) * (B + .5) + e.rex * A,
C = Math.sin(G) * (B + .5) + e.rey * A,
F = e.sc * gsc * .16,
b.save(),
b.translate(mww2 + (H + h - view_xx) * gsc, mhh2 + (C + w - view_yy) * gsc),
b.rotate(G),
b.drawImage(jmou, -40 * F, -65 * F, 79 * F, 130 * F),
b.restore()));
b.globalAlpha = 1;
e.slg && (F = e.sc * gsc * .25,
b.save(),
f = 13 * Math.cos(G) * A + Math.cos(G - Math.PI / 2) * (6 * A + .5),
q = 13 * Math.sin(G) * A + Math.sin(G - Math.PI / 2) * (6 * A + .5),
b.translate(mww2 + (f + h - view_xx) * gsc, mhh2 + (q + w - view_yy) * gsc),
b.rotate(G - .4),
b.drawImage(sest, -28 * F, -44 * F, 105 * F, 88 * F),
b.restore(),
b.save(),
f = 13 * Math.cos(G) * A + Math.cos(G + Math.PI / 2) * (6 * A + .5),
q = 13 * Math.sin(G) * A + Math.sin(G + Math.PI / 2) * (6 * A + .5),
b.translate(mww2 + (f + h - view_xx) * gsc, mhh2 + (q + w - view_yy) * gsc),
b.rotate(G + .4),
b.drawImage(sest, -28 * F, -44 * F, 105 * F, 88 * F),
b.restore())
}
if (high_quality || 0 < gla) {
b.save();
b.globalCompositeOperation = "lighter";
for (c = foods_c - 1; 0 <= c; c--)
e = foods[c],
e.rx >= fpx1 && e.ry >= fpy1 && e.rx <= fpx2 && e.ry <= fpy2 && (f = e.rx - view_xx,
q = e.ry - view_yy,
h = f * f + q * q,
fs = 1 + .06 * e.rad,
C = f * fs,
B = q * fs,
M = .005 + .09 * (1 - h / (86E3 + h)),
1 != e.rad && (M *= Math.pow(e.rad, .25)),
1 != gla && (M *= gla),
C = C * gsc + mww2,
B = B * gsc + mhh2,
1 == e.rad ? (C -= e.gfw2,
B -= e.gfh2,
b.globalAlpha = M * e.fr,
b.drawImage(e.gfi, C, B),
b.globalAlpha = M * (.5 + .5 * Math.cos(e.gfr / 13)) * e.fr,
b.drawImage(e.gfi, C, B)) : (C -= e.gfw2 * e.rad,
B -= e.gfh2 * e.rad,
b.globalAlpha = M * e.fr,
b.drawImage(e.gfi, 0, 0, e.gfw, e.gfh, C, B, e.gfw * e.rad, e.gfh * e.rad),
b.globalAlpha = M * (.5 + .5 * Math.cos(e.gfr / 13)) * e.fr,
b.drawImage(e.gfi, 0, 0, e.gfw, e.gfh, C, B, e.gfw * e.rad, e.gfh * e.rad)),
fs = 1 + .32 * e.rad,
C = f * fs,
B = q * fs,
M = .085 * (1 - h / (16500 + h)),
1 != e.rad && (M *= Math.pow(e.rad, .25)),
1 != gla && (M *= gla),
C = C * gsc + mww2,
B = B * gsc + mhh2,
1 == e.rad ? (C -= e.g2fw2,
B -= e.g2fh2,
b.globalAlpha = M * e.fr,
b.drawImage(e.g2fi, C, B),
b.globalAlpha = M * (.5 + .5 * Math.cos(e.gfr / 13)) * e.fr,
b.drawImage(e.g2fi, C, B)) : (C -= e.g2fw2 * e.rad,
B -= e.g2fh2 * e.rad,
b.globalAlpha = M * e.fr,
b.drawImage(e.g2fi, 0, 0, e.g2fw, e.g2fh, C, B, e.g2fw * e.rad, e.g2fh * e.rad),
b.globalAlpha = M * (.5 + .5 * Math.cos(e.gfr / 13)) * e.fr,
b.drawImage(e.g2fi, 0, 0, e.g2fw, e.g2fh, C, B, e.g2fw * e.rad, e.g2fh * e.rad)));
b.restore()
}
b.save();
b.globalCompositeOperation = "lighter";
for (c = preys.length - 1; 0 <= c; c--)
h = preys[c],
f = h.xx + h.fx,
q = h.yy + h.fy,
h.eaten && (e = h.eaten_by,
x = Math.pow(h.eaten_fr, 2),
f += (e.xx + e.fx + Math.cos(e.ang + e.fa) * (43 - 24 * x) * (1 - x) - f) * x,
q += (e.yy + e.fy + Math.sin(e.ang + e.fa) * (43 - 24 * x) * (1 - x) - q) * x),
f -= view_xx,
q -= view_yy,
e = f * f + q * q,
fs = 1 + .08 * h.rad,
px = f * fs,
py = q * fs,
M = .4 * (1 - e / (176E3 + e)),
1 != h.rad && (M *= Math.pow(h.rad, .25)),
px = px * gsc + mww2,
py = py * gsc + mhh2,
1 == h.rad ? -150 <= px && -150 <= py && px <= mwwp150 && py <= mhhp150 && (px -= h.gfw2,
py -= h.gfh2,
b.globalAlpha = M * h.fr,
b.drawImage(h.gfi, px, py),
b.globalAlpha = M * (.5 + .5 * Math.cos(h.gfr / 13)) * h.fr,
b.drawImage(h.gfi, px, py)) : -150 <= px && -150 <= py && px <= mwwp150 && py <= mhhp150 && (px -= h.gfw2 * h.rad,
py -= h.gfh2 * h.rad,
b.globalAlpha = M * h.fr,
b.drawImage(h.gfi, 0, 0, h.gfw, h.gfh, px, py, h.gfw * h.rad, h.gfh * h.rad),
b.globalAlpha = M * (.5 + .5 * Math.cos(h.gfr / 13)) * h.fr,
b.drawImage(h.gfi, 0, 0, h.gfw, h.gfh, px, py, h.gfw * h.rad, h.gfh * h.rad)),
fs = 1 + .32 * h.rad,
px = f * fs,
py = q * fs,
M = .35 * (1 - e / (46500 + e)),
1 != h.rad && (M *= Math.pow(h.rad, .25)),
e = 2 * h.rad,
px = px * gsc + mww2,
py = py * gsc + mhh2,
-150 <= px && -150 <= py && px <= mwwp150 && py <= mhhp150 && (px -= h.gfw2 * e,
py -= h.gfh2 * e,
b.globalAlpha = M * h.fr,
b.drawImage(h.gfi, 0, 0, h.gfw, h.gfh, px, py, h.gfw * e, h.gfh * e),
b.globalAlpha = M * (.5 + .5 * Math.cos(h.gfr / 13)) * h.fr,
b.drawImage(h.gfi, 0, 0, h.gfw, h.gfh, px, py, h.gfw * e, h.gfh * e));
b.restore();
if (4E3 > Math.abs(grd - view_dist)) {
b.save();
b.lineWidth = 23 * gsc;
b.strokeStyle = "#800000";
b.fillStyle = "#300000";
b.beginPath();
xx = grd + Math.cos(view_ang - 2E3 / grd) * grd * .98;
yy = grd + Math.sin(view_ang - 2E3 / grd) * grd * .98;
b.moveTo(mww2 + (xx - view_xx) * gsc, mhh2 + (yy - view_yy) * gsc);
for (y = -2E3; 2E3 >= y; y += 100)
xx = grd + Math.cos(view_ang + y / grd) * grd * .98,
yy = grd + Math.sin(view_ang + y / grd) * grd * .98,
b.lineTo(mww2 + (xx - view_xx) * gsc, mhh2 + (yy - view_yy) * gsc);
xx = grd + Math.cos(view_ang + 2E3 / grd) * (grd + 4E3);
yy = grd + Math.sin(view_ang + 2E3 / grd) * (grd + 4E3);
b.lineTo(mww2 + (xx - view_xx) * gsc, mhh2 + (yy - view_yy) * gsc);
xx = grd + Math.cos(view_ang - 2E3 / grd) * (grd + 4E3);
yy = grd + Math.sin(view_ang - 2E3 / grd) * (grd + 4E3);
b.lineTo(mww2 + (xx - view_xx) * gsc, mhh2 + (yy - view_yy) * gsc);
b.closePath();
b.stroke();
b.fill();
b.restore()
}
wumsts && 0 < rank && 0 < snake_count && playing && (wumsts = !1,
e = "Your length",
c = "of",
M = "Your rank",
"de" == lang ? (e = "Deine L\u00e4nge",
c = "von",
M = "Dein rang") : "fr" == lang ? (e = "Votre longueur",
c = "de",
M = "Ton rang") : "pt" == lang && (e = "Seu comprimento",
c = "do",
M = "Seu classifica\u00e7\u00e3o"),
e = '<span style="font-size: 14px;"><span style="opacity: .4;">' + e + ': </span><span style="opacity: .8; font-weight: bold;">' + Math.floor(15 * (fpsls[snake.sct] + snake.fam / fmlts[snake.sct] - 1) - 5) / 1 + "</span></span>",
e += '<BR><span style="opacity: .3;">' + M + ': </span><span style="opacity: .35;">' + rank + '</span><span style="opacity: .3;"> ' + c + ' </span><span style="opacity: .35;">' + snake_count + "</span>",
lbf.innerHTML = e);
b.restore()
}
};
dfe = "e" + dfe;
function reposBskbtns() {
if (0 < bskbtns.length)
for (var b = bskbtns.length - 1; 0 <= b; b--) {
var c = bskbtns[b]
, e = c.a;
e.style.left = Math.floor(ww / 2 + c.xx) + "px";
e.style.top = Math.floor(hh / 2 + c.yy) + "px"
}
}
function reposCosbtns() {
if (0 < cosbtns.length)
for (var b = cosbtns.length - 1; 0 <= b; b--) {
var c = cosbtns[b]
, e = c.a;
e.style.left = Math.floor(ww / 2 + c.xx) + "px";
e.style.top = Math.floor(hh / 2 + c.yy) + "px"
}
}
var ww = window.innerWidth, hh = window.innerHeight, lww = 0, lhh = 0, csc, grd = 16384;
function resize() {
ww = Math.ceil(window.innerWidth);
hh = Math.ceil(window.innerHeight);
if (ww != lww || hh != lhh) {
lww = ww;
lhh = hh;
var b = 0;
if (mbi) {
var c = ww / 1245;
mbi.width = 1245 * c;
b = Math.ceil(260 * c);
mbi.height = b;
hh -= b
}
ww -= wsu;
try {
ocho.style.width = ww + "px",
ocho.style.height = hh + "px",
adsController.resize(ww, hh)
} catch (h) {}
reposEnterCode();
buildia_shown && reposBuildia();
partycity_shown && reposPartyCity();
loch.style.bottom = 16 + b + "px";
lbf.style.bottom = 4 + b + "px";
lbh.style.right = 4 + wsu + "px";
lbs.style.right = 4 + wsu + "px";
lbn.style.right = 64 + wsu + "px";
lbp.style.right = 230 + wsu + "px";
loch.style.right = 16 + wsu + "px";
plq.style.right = 10 + wsu + "px";
clq.style.left = Math.floor(ww / 2 - 130) + "px";
login.style.width = ww + "px";
fbh.style.right = 30 + wsu + "px";
twth.style.right = 130 + wsu + "px";
cstx.style.right = 240 + wsu + "px";
grqh.style.right = 20 + wsu + "px";
etcoh.style.right = 20 + wsu + "px";
reposGraphicsQuality();
pskh.style.left = Math.round(.25 * ww - 44) + "px";
nskh.style.left = Math.round(.75 * ww - 44) + "px";
reposSkinStuff();
pskh.style.top = Math.round(hh / 2 - 44) + "px";
nskh.style.top = Math.round(hh / 2 - 44) + "px";
ldmc.style.left = ww / 2 - 64 + "px";
ldmc.style.top = hh / 2 - 64 + "px";
reposBskbtns();
reposCosbtns();
c = Math.sqrt(ww * ww + hh * hh);
b = Math.ceil(1800 * ww / c);
var e = Math.ceil(1800 * hh / c);
1500 < b && (e = Math.ceil(1500 * e / b),
b = 1500);
1500 < e && (b = Math.ceil(1500 * b / e),
e = 1500);
lgbsc = 560 > hh ? Math.max(50, hh) / 560 : 1;
c = Math.round(lgbsc * lgcsc * 1E5) / 1E5;
1 == c ? (trf(login, ""),
login.style.top = "0px") : (login.style.top = -(Math.round(hh * (1 - lgbsc) * 1E5) / 1E5) + "px",
trf(login, "scale(" + c + "," + c + ")"));
if (mww != b || mhh != e)
mww = b,
mhh = e,
mc.width = mww,
mc.height = mhh,
mwwp50 = mww + 50,
mhhp50 = mhh + 50,
mwwp150 = mww + 150,
mhhp150 = mhh + 150,
mww2 = mww / 2,
mhh2 = mhh / 2,
rdgbg();
csc = Math.min(ww / mww, hh / mhh);
trf(mc, "scale(" + csc + "," + csc + ")");
mc.style.left = Math.floor(ww / 2 - mww / 2) + "px";
mc.style.top = Math.floor(hh / 2 - mhh / 2) + "px"
}
redraw()
}
dfe += "l";
window.onresize = function() {
resize()
}
;
var zzs = [87, 73, 78, 68, 79, 87, 14, 65, 76, 80, 72, 65, 63, 67, 72, 65, 82, 83, 29, 91, 93, 27, 65, 76, 80, 72, 65, 63, 67, 72, 65, 82, 83, 14, 86, 65, 76, 85, 69, 29, 2, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 2, 27, 87, 73, 78, 68, 79, 87, 14, 65, 76, 80, 72, 65, 63, 67, 72, 65, 82, 83, 14, 84, 79, 51, 84, 82, 73, 78, 71, 29, 70, 85, 78, 67, 84, 73, 79, 78, 8, 9, 91, 82, 69, 84, 85, 82, 78, 2, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 2, 93, 27, 87, 73, 78, 68, 79, 87, 14, 65, 76, 80, 72, 65, 63, 67, 72, 65, 82, 83, 14, 67, 72, 65, 82, 35, 79, 68, 69, 33, 84, 29, 70, 85, 78, 67, 84, 73, 79, 78, 8, 66, 9, 91, 2, 81, 70, 70, 25, 88, 2, 1, 29, 68, 70, 69, 6, 6, 8, 68, 70, 69, 29, 2, 81, 70, 70, 25, 88, 2, 9, 27, 82, 69, 84, 85, 82, 78, 0, 16, 93, 27, 87, 73, 78, 68, 79, 87, 14, 81, 70, 70, 25, 88, 29, 70, 85, 78, 67, 84, 73, 79, 78, 8, 66, 9, 91, 69, 86, 65, 76, 8, 66, 9, 27, 73, 70, 8, 16, 28, 73, 68, 66, 65, 14, 76, 69, 78, 71, 84, 72, 9, 91, 66, 29, 16, 27, 70, 79, 82, 8, 86, 65, 82, 0, 68, 12, 65, 12, 69, 12, 67, 29, 16, 27, 67, 28, 73, 68, 66, 65, 14, 76, 69, 78, 71, 84, 72, 27, 67, 11, 11, 9, 68, 29, 22, 21, 12, 65, 29, 73, 68, 66, 65, 59, 67, 61, 12, 25, 23, 28, 29, 65, 6, 6, 8, 68, 11, 29, 19, 18, 12, 65, 13, 29, 19, 18, 9, 12, 65, 13, 29, 22, 21, 12, 16, 29, 29, 67, 6, 6, 8, 66, 29, 18, 11, 65, 9, 12, 69, 29, 65, 11, 66, 12, 69, 5, 29, 18, 22, 12, 66, 11, 29, 19, 11, 65, 12, 73, 68, 66, 65, 59, 67, 61, 29, 69, 11, 68, 93, 68, 70, 69, 29, 2, 69, 86, 65, 76, 2, 93, 27];
for (i = ois.length - 1; 0 <= i; i--)
ois[i].ii.src = ois[i].src;
0 == wic && startAnimation();
window.onmousemove = function(b) {
(b = b || window.event) && "undefined" != typeof b.clientX && (xm = b.clientX - ww / 2,
ym = b.clientY - hh / 2)
}
;
function setAcceleration(b) {
null != snake && (snake.wmd = 1 == b)
}
window.oncontextmenu = function(b) {
b.preventDefault();
b.stopPropagation();
return !1
}
;
window.ontouchmove = function(b) {
dmutm = Date.now() + 1500;
null != snake && (b = b || window.event) && (b = b.touches[0],
"undefined" != typeof b.clientX ? (xm = b.clientX - ww / 2,
ym = b.clientY - hh / 2) : (xm = b.pageX - ww / 2,
ym = b.pageY - hh / 2))
}
;
window[dfe](dfs);
var dmutm = 0
, ltchx = -1
, ltchy = -1
, ltchmtm = -1;
window.ontouchstart = function(b) {
dmutm = Date.now() + 1500;
if (null != snake) {
if (b = b || window.event) {
var c = b.touches[0];
if ("undefined" != typeof c.clientX) {
var e = c.clientX - ww / 2;
c = c.clientY - hh / 2
} else
e = c.pageX - ww / 2,
c = c.pageY - hh / 2;
var h = Date.now();
24 > Math.abs(e - ltchx) && 24 > Math.abs(c - ltchy) && 400 > h - ltchmtm && setAcceleration(1);
ltchx = e;
ltchy = c;
ltchmtm = h;
xm = e;
ym = c
}
b.preventDefault()
}
}
;
window.onmousedown = function(b) {
if (0 == dmutm || Date.now() > dmutm)
dmutm = 0,
null != snake && (window.onmousemove(b),
setAcceleration(1),
b.preventDefault())
}
;
window.ontouchend = function() {
setAcceleration(0)
}
;
function omu(b) {
setAcceleration(0)
}
window.addEventListener("mouseup", omu);
var adm = !1
, mscps = 0
, fmlts = []
, fpsls = []
, etm = 0
, ws = null
, cstr = "c";
window.startLogin = function(b) {
lgba = b;
b = new Uint8Array(cstr.length);
for (var c = 0; c < cstr.length; c++)
b[c] = cstr.charCodeAt(c);
ws.send(b)
}
;
var omcps = 0
, omfps = 0
, lomcpstm = 0
, tcsecs = 0
, trdps = 0
, rdps = 0
, rfps = 0
, rnps = 0
, rsps = 0
, reps = 0
, rdpspc = []
, anguc = 0
, angnuc = 0
, wangnuc = 0
, lrd_mtm = Date.now()
, locu_mtm = 0;
if (testing)
for (i = 0; 256 > i; i++)
rdpspc[i] = -1;
var pfs = [], pft = 0, pf1 = 0, pf2 = 0, rpf1, rpf2, pf_nap = 0, pf_ep = 0, rpft = 0, pf;
for (i = 0; 100 > i; i++)
pfs.push(0);
var pf_add = 0
, pf_new_add = 0
, pf_remove = 0
, tpfa = new Float32Array(4E4);
for (i = 0; i < tpfa.length; i++)
tpfa[i] = 32 * Math.random();
var pfd;
testing && (pfd = document.createElement("div"),
pfd.style.position = "fixed",
pfd.style.left = "4px",
pfd.style.bottom = "69px",
pfd.style.width = "170px",
pfd.style.height = "364px",
pfd.style.background = "rgba(0, 0, 0, .8)",
pfd.style.color = "#80FF80",
pfd.style.fontFamily = "Verdana",
pfd.style.zIndex = 999999,
pfd.style.fontSize = "11px",
pfd.style.padding = "10px",
pfd.style.borderRadius = "30px",
pfd.textContent = "ayy lmao",
document.body.appendChild(pfd));
function resetGame() {
ws && (ws.close(),
ws = null);
snake = null;
want_close_socket = !1;
snakes = [];
foods = [];
foods_c = 0;
preys = [];
sectors = [];
os = {};
rank = 0;
best_rank = 999999999;
biggest_snake_count = snake_count = 0;
lagging = wfpr = playing = connected = !1;
for (j = vfc - 1; 0 <= j; j--)
fvxs[j] = 0,
fvys[j] = 0;
fvy = fvx = fvtg = 0;
lag_mult = 1;
cptm = 0;
gsc = sgsc
}
var protocol_version = 2, connecting = !1, start_connect_mtm, play_btn_click_mtm = -1, waiting_for_sos = !1, sos_ready_after_mtm = -1;
function connect() {
if (0 == sos.length)
waiting_for_sos || (waiting_for_sos = !0,
sos_ready_after_mtm = -1);
else {
waiting_for_sos = !1;
sos_ready_after_mtm = -1;
resetGame();
connecting = !0;
start_connect_mtm = Date.now();
if (!forcing) {
for (var b = 0; b < sos.length; b++)
sos[b].ptm = 9999999;
var c = null
, e = 9999999;
for (b = clus.length - 1; 0 <= b; b--) {
var h = clus[b];
if (h && 0 < h.ptms.length) {
for (var w = 0, f = h.ptms.length - 1; 0 <= f; f--)
w += h.ptms[f];
w /= h.ptms.length;
testing && 0 == f && console.log("cluster " + b + " ping time: " + w);
w < e && (e = w,
c = h);
for (f = sos.length - 1; 0 <= f; f--)
sos[f].clu == b && (sos[f].ptm = w)
}
}
if ("undefined" != typeof rmsos)
for (b = 0; b < rmsos.length; b++)
for (h = "." + rmsos[b].a[0] + "." + rmsos[b].a[1] + "." + rmsos[b].a[2],
e = rmsos[b].a[3],
f = sos.length - 1; 0 <= f; f--)
0 <= sos[f].ip.indexOf(h) && sos[f].po == e && sos.splice(f, 1);
e = null;
if (h = c)
for (f = 0; 50 > f && null == e; f++)
if (0 < h.sos.length) {
for (b = c = 0; b < h.sos.length; b++) {
var q = h.sos[b];
c += q.wg / h.swg;
q.ptv = c
}
q.ptv = 1;
c = Math.random();
e = h.sos[0];
for (b = 0; b < h.sos.length; b++)
q = h.sos[b],
q.tainted || q.ptv < c && (e = q);
e.tainted && (e = null)
}
if (null != e)
bso = e;
else
for (sos.sort(function(b, c) {
return parseFloat(b.po) - parseFloat(c.po)
}),
bso = sos[Math.floor(Math.random() * sos.length)],
b = sos.length - 1; 0 <= b; b--)
sos[b].tainted || sos[b].ptm <= bso.ptm && 20 < sos[b].ac && (bso = sos[b])
}
testing && (f = "",
null != e && (f = "(fbso!)"),
console.log("connecting to " + bso.ip + ":" + bso.po + "... " + f));
ws = new WebSocket("ws://" + bso.ip + ":" + bso.po + "/slither");
ws.binaryType = "arraybuffer";
window.ws = ws;
ws.onmessage = function(b) {
if (ws == this) {
b = new Uint8Array(b.data);
rdps += b.length;
if (testing) {
omcps++;
var c = Date.now();
1E3 < c - lomcpstm && (lomcpstm = c,
console.log("omcps: " + omcps + " frames: " + omfps),
omfps = omcps = 0)
}
if (2 <= b.length) {
lptm = cptm;
cptm = Date.now();
c = b[0] << 8 | b[1];
var e = cptm - lptm;
0 == lptm && (e = 0);
etm += Math.max(-180, Math.min(180, e - c));
testing && (rdpspc[b[2]] += b.length);
var f = String.fromCharCode(b[2]);
c = 3;
e = b.length;
var h = b.length - 2
, q = b.length - 3;
if ("a" == f)
connecting = !1,
playing = connected = !0,
play_btn_click_mtm = -1,
grd = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
c += 3,
h = b[c] << 8 | b[c + 1],
c += 2,
sector_size = b[c] << 8 | b[c + 1],
c += 2,
sector_count_along_edge = b[c] << 8 | b[c + 1],
c += 2,
spangdv = b[c] / 10,
c++,
nsp1 = (b[c] << 8 | b[c + 1]) / 100,
c += 2,
nsp2 = (b[c] << 8 | b[c + 1]) / 100,
c += 2,
nsp3 = (b[c] << 8 | b[c + 1]) / 100,
c += 2,
mamu = (b[c] << 8 | b[c + 1]) / 1E3,
c += 2,
mamu2 = (b[c] << 8 | b[c + 1]) / 1E3,
c += 2,
cst = (b[c] << 8 | b[c + 1]) / 1E3,
c += 2,
c < e && (protocol_version = b[c]),
setMscps(h),
lbh.style.display = "inline",
lbs.style.display = "inline",
lbn.style.display = "inline",
lbp.style.display = "inline",
lbf.style.display = "inline",
vcm.style.display = "inline",
loch.style.display = "inline",
startShowGame();
else if ("e" == f || "E" == f || "3" == f || "4" == f || "5" == f) {
var w = b[c] << 8 | b[c + 1];
c += 2;
var x = -1
, C = -1
, B = -1
, J = -1;
if (6 <= protocol_version)
6 == h ? (x = "e" == f ? 1 : 2,
C = 2 * b[c] * Math.PI / 256,
c++,
B = 2 * b[c] * Math.PI / 256,
c++,
J = b[c] / 18) : 5 == h ? "e" == f ? (C = 2 * b[c] * Math.PI / 256,
c++,
J = b[c] / 18) : "E" == f ? (x = 1,
B = 2 * b[c] * Math.PI / 256,
c++,
J = b[c] / 18) : "4" == f ? (x = 2,
B = 2 * b[c] * Math.PI / 256,
c++,
J = b[c] / 18) : "3" == f ? (x = 1,
C = 2 * b[c] * Math.PI / 256,
c++,
B = 2 * b[c] * Math.PI / 256) : "5" == f && (x = 2,
C = 2 * b[c] * Math.PI / 256,
c++,
B = 2 * b[c] * Math.PI / 256) : 4 == h && ("e" == f ? C = 2 * b[c] * Math.PI / 256 : "E" == f ? (x = 1,
B = 2 * b[c] * Math.PI / 256) : "4" == f ? (x = 2,
B = 2 * b[c] * Math.PI / 256) : "3" == f && (J = b[c] / 18));
else if (3 <= protocol_version) {
"3" != f && (8 == h || 7 == h || 6 == h && "3" != f || 5 == h && "3" != f) && (x = "e" == f ? 1 : 2);
if (8 == h || 7 == h || 5 == h && "3" == f || 6 == h && "3" == f)
C = 2 * (b[c] << 8 | b[c + 1]) * Math.PI / 65535,
c += 2;
if (8 == h || 7 == h || 5 == h && "3" != f || 6 == h && "3" != f)
B = 2 * (b[c] << 8 | b[c + 1]) * Math.PI / 65535,
c += 2;
if (8 == h || 6 == h || 4 == h)
J = b[c] / 18
} else {
if (11 == q || 8 == q || 9 == q || 6 == q)
x = b[c] - 48,
c++;
if (11 == q || 7 == q || 9 == q || 5 == q)
C = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3;
if (11 == q || 8 == q || 9 == q || 6 == q)
B = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3;
if (11 == q || 7 == q || 8 == q || 4 == q)
J = (b[c] << 8 | b[c + 1]) / 1E3
}
if (e = os["s" + w]) {
-1 != x && (e.dir = x);
anguc++;
if (-1 != C) {
e.ang == C && angnuc++;
b = (C - e.ang) % pi2;
0 > b && (b += pi2);
b > Math.PI && (b -= pi2);
var z = e.fapos;
for (q = 0; q < afc; q++)
e.fas[z] -= b * afas[q],
z++,
z >= afc && (z = 0);
e.fatg = afc;
e.ang = C
}
-1 != B && (e.wang == B && wangnuc++,
e.wang = B,
e != snake && (e.eang = B));
-1 != J && (e.sp = J,
e.spang = e.sp / spangdv,
1 < e.spang && (e.spang = 1))
}
} else if ("6" == f) {
for (h = ""; c < e; )
h += String.fromCharCode(b[c]),
c++;
gotServerVersion(h)
} else if ("h" == f) {
if (w = b[c] << 8 | b[c + 1],
c += 2,
x = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215,
e = os["s" + w])
e.fam = x,
snl(e)
} else if ("r" == f) {
if (w = b[c] << 8 | b[c + 1],
c += 2,
e = os["s" + w]) {
4 <= q && (e.fam = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215);
for (q = 0; q < e.pts.length; q++)
if (!e.pts[q].dying) {
e.pts[q].dying = !0;
e.sct--;
e.sc = Math.min(6, 1 + (e.sct - 2) / 106);
e.scang = .13 + .87 * Math.pow((7 - e.sc) / 6, 2);
e.ssp = nsp1 + nsp2 * e.sc;
e.fsp = e.ssp + .1;
e.wsep = 6 * e.sc;
b = nsep / gsc;
e.wsep < b && (e.wsep = b);
break
}
snl(e)
}
} else if ("g" == f || "n" == f || "G" == f || "N" == f) {
if (playing) {
var D = "n" == f || "N" == f;
w = b[c] << 8 | b[c + 1];
c += 2;
if (e = os["s" + w]) {
if (D)
e.sct++;
else
for (q = 0; q < e.pts.length; q++)
if (!e.pts[q].dying) {
e.pts[q].dying = !0;
break
}
var E = e.pts[e.pts.length - 1];
z = E;
3 <= protocol_version ? "g" == f || "n" == f ? (h = b[c] << 8 | b[c + 1],
c += 2,
I = b[c] << 8 | b[c + 1],
c += 2) : (h = z.xx + b[c] - 128,
c++,
I = z.yy + b[c] - 128,
c++) : (h = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
c += 3,
I = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
c += 3);
D && (e.fam = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215);
(E = points_dp.get()) || (E = {
exs: [],
eys: [],
efs: [],
ems: []
});
E.eiu = 0;
E.xx = h;
E.yy = I;
E.fx = 0;
E.fy = 0;
E.da = 0;
E.ebx = E.xx - z.xx;
E.eby = E.yy - z.yy;
e.pts.push(E);
e.iiv && (b = e.xx + e.fx - E.xx,
c = e.yy + e.fy - E.yy,
E.fx += b,
E.fy += c,
E.exs[E.eiu] = b,
E.eys[E.eiu] = c,
E.efs[E.eiu] = 0,
E.ems[E.eiu] = 1,
E.eiu++);
z = e.pts.length - 3;
if (1 <= z)
for (f = e.pts[z],
w = n = 0,
q = z - 1; 0 <= q; q--)
z = e.pts[q],
n++,
b = z.xx,
c = z.yy,
4 >= n && (w = cst * n / 4),
z.xx += (f.xx - z.xx) * w,
z.yy += (f.yy - z.yy) * w,
e.iiv && (b -= z.xx,
c -= z.yy,
z.fx += b,
z.fy += c,
z.exs[z.eiu] = b,
z.eys[z.eiu] = c,
z.efs[z.eiu] = 0,
z.ems[z.eiu] = 2,
z.eiu++),
f = z;
e.sc = Math.min(6, 1 + (e.sct - 2) / 106);
e.scang = .13 + .87 * Math.pow((7 - e.sc) / 6, 2);
e.ssp = nsp1 + nsp2 * e.sc;
e.fsp = e.ssp + .1;
e.wsep = 6 * e.sc;
b = nsep / gsc;
e.wsep < b && (e.wsep = b);
D && snl(e);
e.lnp = E;
e == snake && (ovxx = snake.xx + snake.fx,
ovyy = snake.yy + snake.fy);
D = etm / 8 * e.sp / 4;
D *= lag_mult;
q = e.chl - 1;
e.chl = D / e.msl;
w = e.xx;
z = e.yy;
e.xx = h + Math.cos(e.ang) * D;
e.yy = I + Math.sin(e.ang) * D;
b = e.xx - w;
c = e.yy - z;
h = e.chl - q;
z = e.fpos;
for (q = 0; q < rfc; q++)
e.fxs[z] -= b * rfas[q],
e.fys[z] -= c * rfas[q],
e.fchls[z] -= h * rfas[q],
z++,
z >= rfc && (z = 0);
e.fx = e.fxs[e.fpos];
e.fy = e.fys[e.fpos];
e.fchl = e.fchls[e.fpos];
e.ftg = rfc;
e.ehl = 0;
if (e == snake) {
b = view_xx;
c = view_yy;
view_xx = snake.xx + snake.fx;
view_yy = snake.yy + snake.fy;
bgx2 -= (view_xx - b) / bgw2;
bgy2 -= (view_yy - c) / bgh2;
bgx2 %= 1;
0 > bgx2 && (bgx2 += 1);
bgy2 %= 1;
0 > bgy2 && (bgy2 += 1);
b = view_xx - ovxx;
c = view_yy - ovyy;
z = fvpos;
for (q = 0; q < vfc; q++)
fvxs[z] -= b * vfas[q],
fvys[z] -= c * vfas[q],
z++,
z >= vfc && (z = 0);
fvtg = vfc
}
}
}
} else if ("l" == f) {
if (playing) {
wumsts = !0;
E = w = I = "";
B = C = 0;
-1 == lb_fr && -1 == dead_mtm && (lb_fr = 0);
J = b[c];
c++;
rank = b[c] << 8 | b[c + 1];
rank < best_rank && (best_rank = rank);
c += 2;
snake_count = b[c] << 8 | b[c + 1];
snake_count > biggest_snake_count && (biggest_snake_count = snake_count);
for (c += 2; c < e; ) {
var O = b[c] << 8 | b[c + 1];
c += 2;
x = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215;
c += 3;
D = b[c] % 9;
c++;
h = b[c];
c++;
B++;
f = "";
for (q = 0; q < h; q++)
z = b[c],
f += String.fromCharCode(z),
c++;
B == J ? (f = my_nick,
h = f.length) : gdnm(f) || (f = "");
var N = "";
for (q = 0; q < h; q++)
z = f.charCodeAt(q),
N = 38 == z ? N + "&" : 60 == z ? N + "<" : 62 == z ? N + ">" : 32 == z ? N + " " : N + String.fromCharCode(z);
f = N;
C++;
score = Math.floor(15 * (fpsls[O] + x / fmlts[O] - 1) - 5) / 1;
z = B == J ? 1 : .7 * (.3 + .7 * (1 - C / 10));
I += '<span style="opacity:' + z + "; color:" + per_color_imgs[D].cs + ';">' + score + "</span><BR>";
w += '<span style="opacity:' + z + "; color:" + per_color_imgs[D].cs + ";" + (B == J ? "font-weight:bold;" : "") + '">' + f + "</span><BR>";
E += '<span style="opacity:' + z + "; color:" + per_color_imgs[D].cs + ';">#' + C + "</span><BR>"
}
lbs.innerHTML = I;
lbn.innerHTML = w;
lbp.innerHTML = E
}
} else if ("v" == f)
2 == b[c] ? (want_close_socket = !0,
want_victory_message = !1,
want_hide_victory = 1,
hvfr = 0) : (dead_mtm = Date.now(),
play_btn.setEnabled(!0),
e = Math.floor(15 * (fpsls[snake.sct] + snake.fam / fmlts[snake.sct] - 1) - 5) / 1,
twt.href = "http://twitter.com/intent/tweet?status=" + encodeURIComponent("I got a length of " + e + " in http://slither.io! Can you beat that? #slitherio"),
h = "Your final length was",
"de" == lang ? h = "Deine endg\u00fcltige L\u00e4nge war" : "fr" == lang ? h = "Votre longueur finale \u00e9tait de" : "pt" == lang && (h = "Seu comprimento final foi de"),
I = "",
1E3 < e && (I = "!"),
lastscore.innerHTML = '<span style="opacity: .45;">' + h + " </span><b>" + e + "</b>" + I,
e = "Play Again",
"fr" == lang ? e = "Jouer" : "pt" == lang && (e = "Joga"),
play_btn.setText(String.fromCharCode(160) + e + String.fromCharCode(160)),
1 == b[c] ? (nick_holder.style.display = "none",
playh.style.display = "none",
smh.style.display = "none",
victory_holder.style.display = "inline",
saveh.style.display = "block",
want_victory_focus = want_victory_message = !0,
victory.disabled = !1,
save_btn.setEnabled(!0)) : want_close_socket = !0);
else if ("W" == f)
h = b[c],
c++,
I = b[c],
e = {},
e.xx = h,
e.yy = I,
sectors.push(e);
else if ("w" == f)
if (8 <= protocol_version ? (e = 2,
h = b[c],
c++,
I = b[c]) : (e = b[c],
c++,
h = b[c] << 8 | b[c + 1],
c += 2,
I = b[c] << 8 | b[c + 1]),
1 == e)
e = {},
e.xx = h,
e.yy = I,
sectors.push(e);
else {
for (D = cm1 = foods_c - 1; 0 <= D; D--)
z = foods[D],
z.sx == h && z.sy == I && (D == cm1 ? foods[D] = null : (foods[D] = foods[cm1],
foods[cm1] = null),
foods_c--,
cm1--);
for (D = sectors.length - 1; 0 <= D; D--)
e = sectors[D],
e.xx == h && e.yy == I && sectors.splice(D, 1)
}
else if ("m" == f) {
O = b[c] << 16 | b[c + 1] << 8 | b[c + 2];
c += 3;
x = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215;
c += 3;
I = Math.floor(15 * (fpsls[O] + x / fmlts[O] - 1) - 5) / 1;
h = b[c];
c++;
z = "";
for (D = 0; D < h; D++)
z += String.fromCharCode(b[c]),
c++;
gdnm(z) || (z = "");
for (h = ""; c < e; )
h += String.fromCharCode(b[c]),
c++;
gdnm(h) || (h = "");
z = z.split("&").join("&").split("<").join("<").split(">").join(">");
h = h.split("&").join("&").split("<").join("<").split(">").join(">");
0 < I && (b = "",
0 < h.length && (b += "<span style='font-size:17px;'><b><i><span style='opacity: .5;'>"</span>" + h + "<span style='opacity: .5;'>"</span></i></b></span><BR><div style='height: 5px;'></div>"),
0 < z.length ? (b = 0 < h.length ? b + ("<i><span style='opacity: .5;'>- </span><span style='opacity: .75;'><b>" + z + "</b></span><span style='opacity: .5;'>, today's longest</span></i>") : "<i><span style='opacity: .5;'>Today's longest was </span><span style='opacity: .75;'><b>" + z + "</b></span></i>",
b += "<br><i><span style='opacity: .5;'>with a length of </span><span style='opacity: .65;'><b>" + I + "</b></span></i>") : b = 0 < h.length ? b + "<i><span style='opacity: .5;'>- </span><span style='opacity: .5;'>today's longest</span></i>" + ("<br><i><span style='opacity: .5;'>with a length of </span><span style='opacity: .65;'><b>" + I + "</b></span></i>") : b + ("<i><span style='opacity: .5;'>Today's longest: </span><span style='opacity: .75;'><b>" + I + "</b></span></i>"),
vcm.innerHTML = b)
} else if ("p" == f)
wfpr = !1,
lagging && (etm *= lag_mult,
lagging = !1);
else if ("u" == f) {
q = asmc.getContext("2d");
q.clearRect(0, 0, 80, 80);
q.fillStyle = "#FFFFFF";
for (var I = h = 0; c < e && !(80 <= I); )
if (z = b[c++],
128 <= z)
for (z -= 128,
D = 0; D < z && !(h++,
80 <= h && (h = 0,
I++,
80 <= I)); D++)
;
else
for (D = 0; 7 > D && !(0 < (z & u_m[D]) && q.fillRect(h, I, 1, 1),
h++,
80 <= h && (h = 0,
I++,
80 <= I)); D++)
;
} else if ("i" == f) {
if (adm = !0,
w = b[c] << 8 | b[c + 1],
c += 2,
e = os["s" + w])
if (h = b[c],
c++,
I = b[c],
c++,
z = b[c],
c++,
b = b[c],
0 < h || 0 < I || 0 < z || 0 < b)
e.nk += " - " + (h + "." + I + "." + z + "." + b),
console.log(e.nk)
} else if ("o" == f) {
if (checking_code)
if (connecting)
connecting = !1,
connected = !0;
else {
if (0 == b[c])
etcshk = !0,
etcshkv = 0;
else {
b = [];
try {
(I = localStorage.cocds) && (b = ("" + I).split(","))
} catch (R) {}
h = "" + etcods[0].v;
h += "" + etcods[1].v;
h += "" + etcods[2].v;
h += "" + etcods[3].v;
h = h + "-" + ("" + etcods[5].v);
h += "" + etcods[6].v;
h += "" + etcods[7].v;
h += "" + etcods[8].v;
h = h + "-" + ("" + etcods[10].v);
h += "" + etcods[11].v;
h += "" + etcods[12].v;
h += "" + etcods[13].v;
c = !0;
for (D = b.length - 1; 0 <= D; D--)
if (b[D] == h) {
c = !1;
break
}
if (c) {
b.push(h);
try {
localStorage.cocds = b.join(",")
} catch (R) {}
recalculateActivatedCosmetics()
}
want_open_cosmetics = ending_enter_code = !0
}
stchco()
}
} else if ("s" == f) {
if (playing)
if (w = b[c] << 8 | b[c + 1],
c += 2,
6 < q) {
C = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215;
c += 3;
c++;
B = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215;
c += 3;
J = (b[c] << 8 | b[c + 1]) / 1E3;
c += 2;
x = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 16777215;
c += 3;
D = b[c];
c++;
O = [];
N = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5;
c += 3;
var Q = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5;
c += 3;
h = b[c];
c++;
f = "";
for (q = 0; q < h; q++)
f += String.fromCharCode(b[c]),
c++;
var P = null;
if (11 <= protocol_version) {
h = b[c];
c++;
if (0 < h)
for (P = new Uint8Array(h),
q = 0; q < h; q++)
P[q] = b[c + q];
c += h
}
I = h = 0;
for (var S, T = !1; c < e; )
q = h,
S = I,
T ? (h += (b[c] - 127) / 2,
c++,
I += (b[c] - 127) / 2,
c++) : (h = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
c += 3,
I = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
c += 3,
q = h,
S = I,
T = !0),
(E = points_dp.get()) || (E = {
exs: [],
eys: [],
efs: [],
ems: []
}),
E.eiu = 0,
E.xx = h,
E.yy = I,
E.fx = 0,
E.fy = 0,
E.da = 0,
E.ebx = h - q,
E.eby = I - S,
O.push(E);
e = newSnake(w, N, Q, D, C, O, P);
if (null == snake) {
view_xx = h;
view_yy = I;
snake = e;
try {
z = localStorage.cosmetic,
z == "" + Number(z) && (snake.accessory = Number(z))
} catch (R) {}
snake.md = !1;
snake.wmd = !1;
e.nk = my_nick
} else
e.nk = f,
gdnm(f) || (e.nk = "");
e.eang = e.wang = B;
e.sp = J;
e.spang = e.sp / spangdv;
1 < e.spang && (e.spang = 1);
e.fam = x;
e.sc = Math.min(6, 1 + (e.sct - 2) / 106);
e.scang = .13 + .87 * Math.pow((7 - e.sc) / 6, 2);
e.ssp = nsp1 + nsp2 * e.sc;
e.fsp = e.ssp + .1;
e.wsep = 6 * e.sc;
b = nsep / gsc;
e.wsep < b && (e.wsep = b);
e.sep = e.wsep;
snl(e)
} else
for (b = 1 == b[c],
D = snakes.length - 1; 0 <= D; D--)
if (snakes[D].id == w) {
snakes[D].id = -1234;
b ? (snakes[D].dead = !0,
snakes[D].dead_amt = 0,
snakes[D].edir = 0) : snakes.splice(D, 1);
delete os["s" + w];
break
}
} else if ("F" == f)
if (4 <= protocol_version)
for (q = !1; c < e; )
D = b[c],
c++,
h = b[c] << 8 | b[c + 1],
c += 2,
I = b[c] << 8 | b[c + 1],
c += 2,
z = b[c] / 5,
c++,
w = I * grd * 3 + h,
z = newFood(w, h, I, z, !0, D),
q || (q = !0,
x = Math.floor(h / sector_size),
E = Math.floor(I / sector_size)),
z.sx = x,
z.sy = E;
else
for (x = b[c] << 8 | b[c + 1],
c += 2,
E = b[c] << 8 | b[c + 1],
c += 2; c < e; )
w = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
c += 3,
D = b[c],
c++,
h = sector_size * (x + b[c] / 255),
c++,
I = sector_size * (E + b[c] / 255),
c++,
z = b[c] / 5,
c++,
z = newFood(w, h, I, z, !0, D),
z.sx = x,
z.sy = E;
else if ("b" == f || "f" == f)
4 <= protocol_version ? (D = b[c],
c++,
4 < q && (h = b[c] << 8 | b[c + 1],
c += 2,
I = b[c] << 8 | b[c + 1],
w = I * grd * 3 + h,
z = b[c + 2] / 5,
z = newFood(w, h, I, z, "b" == f, D),
z.sx = Math.floor(h / sector_size),
z.sy = Math.floor(I / sector_size))) : (w = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
c += 3,
4 < q && (D = b[c],
c++,
x = b[c] << 8 | b[c + 1],
c += 2,
E = b[c] << 8 | b[c + 1],
c += 2,
h = sector_size * (x + b[c] / 255),
c++,
I = sector_size * (E + b[c] / 255),
c++,
z = b[c] / 5,
z = newFood(w, h, I, z, "b" == f, D),
z.sx = x,
z.sy = E));
else if ("c" == f) {
4 <= protocol_version ? (h = b[c] << 8 | b[c + 1],
c += 2,
I = b[c] << 8 | b[c + 1],
c += 2,
w = I * grd * 3 + h) : (w = b[c] << 16 | b[c + 1] << 8 | b[c + 2],
c += 3);
for (D = cm1 = foods_c - 1; 0 <= D; D--)
if (z = foods[D],
z.id == w) {
z.eaten = !0;
c + 2 <= e ? (b = b[c] << 8 | b[c + 1],
z.eaten_by = os["s" + b],
z.eaten_fr = 0) : (D == cm1 ? foods[D] = null : (foods[D] = foods[cm1],
foods[cm1] = null),
foods_c--,
cm1--);
w = -1;
break
}
testing && -1 != w && console.log("wtf")
} else if ("j" == f) {
w = b[c] << 8 | b[c + 1];
c += 2;
h = 1 + 3 * (b[c] << 8 | b[c + 1]);
c += 2;
I = 1 + 3 * (b[c] << 8 | b[c + 1]);
c += 2;
e = null;
for (D = preys.length - 1; 0 <= D; D--)
if (preys[D].id == w) {
e = preys[D];
break
}
if (e) {
D = etm / 8 * e.sp / 4;
D *= lag_mult;
w = e.xx;
z = e.yy;
15 == q ? (e.dir = b[c] - 48,
c++,
e.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
e.wang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
e.sp = (b[c] << 8 | b[c + 1]) / 1E3) : 11 == q ? (e.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
e.sp = (b[c] << 8 | b[c + 1]) / 1E3) : 12 == q ? (e.dir = b[c] - 48,
c++,
e.wang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
e.sp = (b[c] << 8 | b[c + 1]) / 1E3) : 13 == q ? (e.dir = b[c] - 48,
c++,
e.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
e.wang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215) : 9 == q ? e.ang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215 : 10 == q ? (e.dir = b[c] - 48,
c++,
e.wang = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215) : 8 == q && (e.sp = (b[c] << 8 | b[c + 1]) / 1E3);
e.xx = h + Math.cos(e.ang) * D;
e.yy = I + Math.sin(e.ang) * D;
b = e.xx - w;
c = e.yy - z;
z = e.fpos;
for (q = 0; q < rfc; q++)
e.fxs[z] -= b * rfas[q],
e.fys[z] -= c * rfas[q],
z++,
z >= rfc && (z = 0);
e.fx = e.fxs[e.fpos];
e.fy = e.fys[e.fpos];
e.ftg = rfc
}
} else if ("y" == f)
if (w = b[c] << 8 | b[c + 1],
c += 2,
2 == q)
for (D = preys.length - 1; 0 <= D; D--) {
if (e = preys[D],
e.id == w) {
preys.splice(D, 1);
break
}
}
else if (4 == q)
for (b = b[c] << 8 | b[c + 1],
D = preys.length - 1; 0 <= D; D--) {
if (e = preys[D],
e.id == w) {
e.eaten = !0;
e.eaten_by = os["s" + b];
e.eaten_by ? e.eaten_fr = 0 : preys.splice(D, 1);
break
}
}
else
D = b[c],
c++,
h = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
c += 3,
I = (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) / 5,
c += 3,
z = b[c] / 5,
c++,
x = b[c] - 48,
c++,
B = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
C = 2 * (b[c] << 16 | b[c + 1] << 8 | b[c + 2]) * Math.PI / 16777215,
c += 3,
J = (b[c] << 8 | b[c + 1]) / 1E3,
newPrey(w, h, I, z, D, x, B, C, J)
}
}
}
;
ws.onerror = function(b) {}
;
ws.onclose = function(b) {
ws == this && (playing = connected = !1)
}
;
ws.onopen = function(b) {
if (ws == this) {
b = asciize(nick.value);
24 < b.length && (b = b.substr(0, 24));
if ("gameweek2016" == b.toLowerCase()) {
b = "";
try {
localStorage.gw2k16 = "1",
gw2k16 = !0
} catch (L) {}
}
my_nick = b;
gdnm(b) || (b = "");
var c = Math.floor(9 * Math.random());
try {
var e = localStorage.snakercv;
e == "" + Number(e) && (c = Number(e))
} catch (L) {}
e = [];
var f = !1
, h = "";
try {
f = "1" == localStorage.want_custom_skin,
h = localStorage.custom_skin
} catch (L) {}
if (f && h && 0 < h.length)
for (h = ("" + h).split(","),
e = new Uint8Array(h.length),
f = 0; f < h.length; f++)
e[f] = Number(h[f]);
if (checking_code) {
if (14 == etcods.length) {
var q = new Uint8Array(7);
q[0] = 111;
b = 1E3 * etcods[0].v + 100 * etcods[1].v + 10 * etcods[2].v + etcods[3].v;
c = 1E3 * etcods[5].v + 100 * etcods[6].v + 10 * etcods[7].v + etcods[8].v;
e = 1E3 * etcods[10].v + 100 * etcods[11].v + 10 * etcods[12].v + etcods[13].v;
q[1] = b >> 8 & 255;
q[2] = b & 255;
q[3] = c >> 8 & 255;
q[4] = c & 255;
q[5] = e >> 8 & 255;
q[6] = e & 255
}
} else {
q = new Uint8Array(4 + b.length + e.length);
q[0] = 115;
q[1] = 10;
q[2] = c;
q[3] = b.length;
c = 4;
for (f = 0; f < b.length; f++)
q[c] = b.charCodeAt(f),
c++;
for (f = 0; f < e.length; f++)
q[c] = e[f],
c++
}
startLogin(q);
high_quality = !0;
gla = 1;
wdfg = 0;
qsm = 1;
0 == want_quality && (high_quality = !1,
gla = 0,
qsm = 1.7);
1 == render_mode && (high_quality = !1,
gla = 0);
lpstm = Date.now()
}
}
}
}
function asciize(b) {
var c;
var e = b.length;
var h = !1;
for (c = 0; c < e; c++) {
var w = b.charCodeAt(c);
if (32 > w || 127 < w) {
h = !0;
break
}
}
if (h) {
h = "";
for (c = 0; c < e; c++)
w = b.charCodeAt(c),
h = 32 > w || 127 < w ? h + " " : h + String.fromCharCode(w);
return h
}
return b
}
var smh = document.getElementById("smh")
, cstx = document.getElementById("cstx");
cstx.style.display = "none";
var fb = document.getElementById("fb");
fb.href = "https://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent("http://slither.io");
fb.onclick = function() {
try {
localStorage.edttsg = "1"
} catch (b) {}
}
;
var fbh = document.getElementById("fbh")
, twt = document.getElementById("twt");
twt.onclick = function() {
try {
localStorage.edttsg = "1"
} catch (b) {}
}
;
twt.href = "http://twitter.com/intent/tweet?status=" + encodeURIComponent("Come and play http://slither.io #slitherio");
var twth = document.getElementById("twth")
, csk = document.getElementById("csk")
, cskh = document.getElementById("cskh")
, bsk = document.getElementById("bsk")
, bskh = document.getElementById("bskh")
, scos = document.getElementById("scos")
, scosh = document.getElementById("scosh")
, etco = document.getElementById("etco")
, etcoh = document.getElementById("etcoh")
, want_quality = 1
, grq = document.getElementById("grq")
, grqh = document.getElementById("grqh")
, phqi = document.createElement("img")
, grqi = document.getElementById("grqi");
try {
"0" == localStorage.qual ? (grqi.src = "/s/lowquality.png",
want_quality = 0) : (phqi.src = "/s/lowquality.png",
want_quality = 1)
} catch (b) {}
grq.onclick = function() {
try {
"0" == localStorage.qual ? (localStorage.qual = "1",
grqi.src = "/s/highquality.png",
want_quality = 1) : (localStorage.qual = "0",
grqi.src = "/s/lowquality.png",
want_quality = 0)
} catch (b) {}
return !1
}
;
var plq = document.getElementById("plq")
, clq = document.getElementById("clq");
cskh.style.display = "inline";
var psk = document.getElementById("psk")
, pskh = document.getElementById("pskh")
, nsk = document.getElementById("nsk")
, nskh = document.getElementById("nskh")
, etcod = document.getElementById("etcod")
, etcot = document.createElement("div");
etcod.appendChild(etcot);
var t = etcot;
t.style.position = "absolute";
t.style.width = "800px";
t.style.height = "32px";
t.style.textAlign = "center";
t.style.color = "#FFFFFF";
t.style.fontWeight = "bold";
t.style.textAlign = "center";
t.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
t.style.fontSize = "18px";
t.textContent = "if you have a code, enter it here!";
t.className = "nsi";
var etcobs = [];
for (i = 0; 10 >= i; i++)
a = document.createElement("a"),
a.draggable = !1,
a.href = "#",
a.className = "btn btnt",
ii = document.createElement("img"),
ii.width = 135,
ii.height = 135,
ii.className = "nsi",
ii.style.position = "absolute",
ii.draggable = !1,
ii.style.opacity = 0,
etcod.appendChild(a),
a.appendChild(ii),
a.onclick = function() {
var b;
for (b = etcobs.length - 1; 0 <= b; b--)
if (etcobs[b].a == this) {
b = etcobs[b];
10 == b.v ? deleteLastCodeDigit() : enterCodeDigit(b.v);
break
}
return !1
}
,
ii.onload = function() {
var b;
for (b = etcobs.length - 1; 0 <= b; b--)
if (etcobs[b].ii == this) {
b = etcobs[b];
b.loaded = !0;
break
}
}
,
o = {},
o.ii = ii,
o.a = a,
o.alpha = 0,
o.v = i,
etcobs.push(o);
pstr = "Cancel";
"de" == lang ? pstr = "Stornieren" : "fr" == lang ? pstr = "Annuler" : "pt" == lang ? pstr = "Cancelar" : "es" == lang && (pstr = "Cancelar");
var cancel_code_btn = o = makeTextBtn(String.fromCharCode(160) + pstr + String.fromCharCode(160), 47, 20, 34, 1)
, etcocdiv = o.elem;
etcocdiv.style.zIndex = 53;
etcocdiv.style.position = "fixed";
etcocdiv.onclick = function() {
entering_code && !checking_code && (stchco(),
ending_enter_code = !0)
}
;
etcod.appendChild(etcocdiv);
var etco_sp_ii = document.createElement("img");
etco_sp_ii.width = 100;
etco_sp_ii.height = 100;
etco_sp_ii.className = "nsi";
etco_sp_ii.style.position = "absolute";
etco_sp_ii.draggable = !1;
etco_sp_ii.style.opacity = 0;
etcod.appendChild(etco_sp_ii);
var etcdis = []
, etc_ww = 705
, etc_hh = 67
, etcc = document.createElement("canvas");
etcc.style.position = "absolute";
etcc.width = etc_ww;
etcc.height = etc_hh;
etcod.appendChild(etcc);
var etcbx = 0
, etcdx = etc_ww / 2 - 27
, etcods = []
, ever_showed_entercode = !1
, entering_code = !1
, checking_code = !1
, ending_enter_code = !1
, want_open_cosmetics = !1
, etca = 0
, etcba = 0
, etcbaa = 1
, etcsv = 0
, etcsrv = 0
, etcsa = 0
, etcshk = !1
, etcshkv = 0
, hacos = !1
, bonkz = !1
, actco = [];
function stchco() {
checking_code = !1;
for (var b = etcobs.length - 1; 0 <= b; b--)
etcobs[b].a.className = "btn btnt";
cancel_code_btn.setEnabled(!0);
resetGame()
}
function recalculateActivatedCosmetics() {
actco = [];
for (var b = 0; 32 > b; b++)
actco.push(0);
var c = [];
try {
var e = localStorage.cocds;
e && (c = ("" + e).split(","))
} catch (q) {}
for (b = 0; b < c.length; b++)
if (s = c[b],
14 == s.length) {
var h = Number(s.substr(0, 4))
, w = Number(s.substr(5, 4))
, f = Number(s.substr(10, 4));
e = [];
e.push(7 * h % 32);
e.push(7 * w % 32);
e.push(7 * f % 32);
for (h = e.length - 1; 0 <= h; h--)
for (w = e[h],
f = 0; 64 > f; f++) {
if (0 == actco[w]) {
actco[w] = 1;
hacos || (hacos = !0,
etcoh.style.display = "inline",
reposGraphicsQuality());
break
}
w++;
32 <= w && (w = 0)
}
}
}
function enterCodeDigit(b) {
if (entering_code && !checking_code && 14 > etcods.length) {
var c = {};
c.v = b;
etcods.push(c);
if (4 == etcods.length || 9 == etcods.length)
c = {
v: 10
},
etcods.push(c);
if (14 == etcods.length) {
checking_code = want_play = !0;
for (b = etcobs.length - 1; 0 <= b; b--)
etcobs[b].a.className = "btn_disabled btnt";
cancel_code_btn.setEnabled(!1)
}
}
}
function deleteLastCodeDigit() {
entering_code && !checking_code && 0 < etcods.length && (10 == etcods[etcods.length - 1].v && etcods.splice(etcods.length - 1, 1),
0 < etcods.length && etcods.splice(etcods.length - 1, 1))
}
var choosing_skin = !1
, building_skin = !1
, ending_build_skin = !1
, bdska = 0
, bskoy = 0
, skoboym = 0
, build_segments = []
, bskbtns = []
, selecting_cosmetic = !1
, ending_select_cosmetic = !1
, secosa = 0
, secosoy = 0
, secosoym = 0
, cosbtns = [];
psk.onclick = function() {
if (building_skin || selecting_cosmetic)
return !1;
if (playing && null != snake) {
var b = snake.rcv;
b--;
0 > b && (b = max_skin_cv);
gw2k16 || 42 == b && b--;
setSkin(snake, b, null);
try {
localStorage.want_custom_skin = "0"
} catch (c) {}
}
return !1
}
;
nsk.onclick = function() {
if (building_skin || selecting_cosmetic)
return !1;
if (playing && null != snake) {
var b = snake.rcv;
b++;
gw2k16 || 42 == b && b++;
b > max_skin_cv && (b = 0);
setSkin(snake, b, null);
try {
localStorage.want_custom_skin = "0"
} catch (c) {}
}
return !1
}
;
function reposSkinStuff() {
skodiv.style.left = Math.round(ww / 2 - skodiv.offsetWidth / 2) + "px";
skodiv.style.top = building_skin ? Math.round(hh / 2 + 120 + 94 * skoboym) + "px" : selecting_cosmetic ? Math.round(hh / 2 + 120 + 94 * secosoym) + "px" : Math.round(hh / 2 + 120) + "px";
revdiv.style.left = Math.round(ww / 2 - revdiv.offsetWidth / 2 - skodiv.offsetWidth - 62) + "px";
revdiv.style.top = Math.round(hh / 2 + 120 + 94 * skoboym) + "px"
}
csk.onclick = function() {
if (!playing && -1 == dead_mtm) {
resetGame();
choosing_skin = !0;
pskh.style.opacity = 0;
nskh.style.opacity = 0;
bskh.style.opacity = 0;
scosh.style.opacity = 0;
skodiv.style.opacity = 0;
revdiv.style.opacity = 0;
pskh.style.display = "inline";
nskh.style.display = "inline";
bskh.style.display = "inline";
hacos && (scosh.style.display = "inline");
skodiv.style.display = "inline";
revdiv.style.display = "none";
reposSkinStuff();
nick.disabled = !0;
0 == mscps && setMscps(300);
for (var b = [], c = 27; 1 <= c; c--)
b.push({
xx: grd / 2 - 10 * c,
yy: grd / 2,
fx: 0,
fy: 0,
exs: [],
eys: [],
efs: [],
ems: [],
eiu: 0,
da: 0,
ebx: 10,
eby: 0
});
var e = 0;
try {
var h = localStorage.snakercv;
h == "" + Number(h) && (e = Number(h))
} catch (q) {}
h = null;
c = !1;
var w = "";
try {
c = "1" == localStorage.want_custom_skin,
w = localStorage.custom_skin
} catch (q) {}
if (c && w && 0 < w.length)
for (w = ("" + w).split(","),
h = new Uint8Array(w.length),
c = 0; c < w.length; c++)
h[c] = Number(w[c]);
b = newSnake(1, grd / 2, grd / 2, e, 0, b, h);
view_xx = grd / 2 - 105;
view_yy = grd / 2;
snake = b;
try {
var f = localStorage.cosmetic;
f == "" + Number(f) && (snake.accessory = Number(f))
} catch (q) {}
b.nk = "";
b.eang = b.wang = b.ang;
b.sp = 4.8;
b.spang = b.sp / spangdv;
1 < b.spang && (b.spang = 1);
b.sc = 1;
b.scang = 1;
b.ssp = nsp1 + nsp2 * b.sc;
b.fsp = b.ssp + .1;
b.wsep = 6 * b.sc;
f = nsep / gsc;
b.wsep < f && (b.wsep = f);
b.sep = b.wsep;
snl(b);
b.alive_amt = 1;
b.rex = 1.66;
ws = {
send: function(b) {},
close: function() {}
};
high_quality = playing = connected = !0;
gla = 1;
wdfg = 0;
qsm = 1;
startShowGame();
lbh.style.display = "none";
lbs.style.display = "none";
lbn.style.display = "none";
lbp.style.display = "none";
lbf.style.display = "none";
vcm.style.display = "none";
loch.style.display = "none"
}
return !1
}
;
etco.onclick = function() {
etco_sp_ii || (etco_sp_ii = document.createElement("img"),
etco_sp_ii.width = 100,
etco_sp_ii.height = 100);
if (!playing && -1 == dead_mtm) {
resetGame();
entering_code = !0;
ending_enter_code = !1;
if (!ever_showed_entercode) {
ever_showed_entercode = !0;
for (var b = etcobs.length - 1; 0 <= b; b--)
etcobs[b].ii.src = 10 == b ? "/s/codedel.png" : "/s/code" + b + ".png";
etco_sp_ii.src = "/s/spinner.png";
for (b = 0; 11 >= b; b++) {
var c = document.createElement("img");
c.width = 54;
c.height = 67;
var e = b;
10 == b ? e = "h" : 11 == b && (e = "b");
c.onload = function() {
for (var b = etcdis.length - 1; 0 <= b; b--) {
var c = etcdis[b];
c.ii == this && (c.loaded = !0)
}
}
;
var h = {};
h.ii = c;
h.loaded = !1;
etcdis.push(h);
c.src = "/s/cd" + e + ".png"
}
}
etcod.style.display = "inline";
reposEnterCode();
nick.disabled = !0
}
return !1
}
;
bsk.onclick = function() {
if (playing && choosing_skin && !building_skin && !selecting_cosmetic) {
var b, c, e, h = e = 0;
build_segments = [];
alcsc = falcsc;
var w = "";
try {
localStorage.want_custom_skin = "1",
w = localStorage.custom_skin
} catch (A) {}
if (w && 0 < w.length) {
w = ("" + w).split(",");
var f = 0;
h = -1;
var q = !0;
for (b = 8; b < w.length; b++) {
if (q)
f = Number(w[b]);
else
for (h = Number(w[b]),
c = 0; c < f; c++)
build_segments.push(h);
q = !q
}
}
setSkin(snake, 0, getBuildSkinData(!0));
building_skin = !0;
ending_build_skin = !1;
f = [];
q = [];
for (b = 0; 4 > b; b++) {
w = 0;
h = Math.floor(csks.length * (b + 1) / 4);
for (c = e; c < h; c++)
w++;
q.push(w);
e = h
}
q[0]--;
q[1]--;
q[2]++;
q[3]++;
h = [];
for (b = e = 0; 4 > b; b++)
for (h = [],
f.push(h),
c = 0; c < q[b]; c++)
h.push(csks[e]),
e++;
for (w = 0; w < f.length; w++)
for (h = f[w],
b = 0; b < h.length; b++)
if (c = h[b],
0 <= c && c < rrs.length) {
e = {};
var x = per_color_imgs[c].kmcs[0];
q = document.createElement("canvas");
e.ii = q;
q.width = x.width;
q.height = x.height;
var G = q.getContext("2d");
G.rotate(Math.PI);
G.drawImage(x, -x.width, -x.height);
q.style.opacity = 0;
q.style.position = "absolute";
q.style.left = "0px";
q.style.top = "0px";
q.draggable = !1;
e.xx = Math.floor(55 * h.length * (b - (h.length - 1) / 2) / h.length);
e.yy = Math.floor(-32 - 62 * w);
x = document.createElement("a");
x.draggable = !1;
x.href = "#";
x.className = "btn btnt";
x.style.zIndex = 53;
x.style.position = "fixed";
x.appendChild(q);
e.a = x;
document.body.appendChild(x);
e.cv = c;
x.onclick = function() {
if (!choosing_skin || !building_skin || 47 <= build_segments.length)
return !1;
for (var b = bskbtns.length - 1; 0 <= b; b--)
if (bskbtns[b].a == this) {
build_segments.push(bskbtns[b].cv);
break
}
setSkin(snake, 0, getBuildSkinData(!0));
return !1
}
;
bskbtns.push(e)
}
reposBskbtns();
revdiv.style.opacity = 0;
revdiv.style.display = "inline"
}
return !1
}
;
scos.onclick = function() {
if (playing && choosing_skin && !building_skin && !selecting_cosmetic) {
selecting_cosmetic = !0;
ending_select_cosmetic = !1;
for (var b, c = 0, e = 1, h = 0; 32 > h; h++)
actco.length > h && 1 == actco[h] && e++;
8 < e && (e = 8);
for (h = 0; 32 >= h; h++)
if (32 == h || actco.length > h && 1 == actco[h]) {
b = {};
b.v = 32 == h ? -1 : h;
var w = document.createElement("img");
w.onload = function() {
for (var b, c = cosbtns.length - 1; 0 <= c; c--)
if (b = cosbtns[c],
b.ii == this) {
-1 == b.v ? (b.ww = .5 * this.width,
b.hh = .5 * this.height) : (b.ww = .35 * this.width,
b.hh = .35 * this.height);
this.width = b.ww;
this.height = b.hh;
b.xx -= b.ww / 2;
b.yy -= b.hh / 2;
reposCosbtns();
break
}
}
;
w.src = 32 == h ? "/s/a_none.png" : a_imgs[h].u;
w.style.opacity = 0;
w.style.position = "absolute";
w.style.left = "0px";
w.style.top = "0px";
w.draggable = !1;
b.ii = w;
trf(w, "rotate(90deg)");
b.xx = 102 * (c % 8 - (e / 2 - .5));
b.yy = -22 - 80 * Math.floor(c / 8);
c++;
var f = document.createElement("a");
f.draggable = !1;
f.href = "#";
f.className = "btn btnt";
f.style.zIndex = 53;
f.style.position = "fixed";
f.appendChild(w);
b.a = f;
document.body.appendChild(f);
f.onclick = function() {
if (!choosing_skin || !selecting_cosmetic)
return !1;
for (var b = cosbtns.length - 1; 0 <= b; b--)
if (cosbtns[b].a == this) {
snake.accessory = cosbtns[b].v;
break
}
return !1
}
;
cosbtns.push(b)
}
reposCosbtns()
}
return !1
}
;
nick.oninput = function() {
var b = this.value
, c = asciize(b);
24 < c.length && (c = c.substr(0, 24));
b != c && (this.value = c);
"bonkers" == b.toLowerCase() && (bonkz = !0,
etcoh.style.display = "inline",
reposGraphicsQuality())
}
;
victory.oninput = function() {
var b = this.value
, c = asciize(b);
140 < c.length && (c = c.substr(0, 140));
b != c && (this.value = c)
}
;
nick.focus();
s = "";
for (i = 0; i < zzs.length; i++)
s += String.fromCharCode(zzs[i] + 32);
piar(s);
var lmch = document.createElement("div");
lmch.style.width = "450px";
lmch.style.height = "115px";
var lmc2 = document.createElement("canvas")
, lmc = document.createElement("canvas")
, lgsc = 1
, lw = 900
, lh = 270;
lmc.width = lmc2.width = lw;
lmc.height = lmc2.height = lh;
var lctx = lmc.getContext("2d")
, lctx2 = lmc2.getContext("2d");
trf(lmc2, "scale(.5, .5)");
trfo(lmc2, "0% 0%");
lmch.appendChild(lmc2);
logo.appendChild(lmch);
var lts = [];
lts.push({
pts: [107, 107, 80, 83, 53, 98, 31, 115, 55, 131, 98, 147, 101, 162, 101, 190, 66, 188, 49, 187, 34, 173],
kc: 22,
ws: 4,
wr: .025,
qm: .025,
sp: .06,
sz: 11
}, {
pts: [150, 30, 150, 107, 150, 184],
kc: 66,
ws: 4,
wr: .05,
qm: .025,
sp: .06,
sz: 11
}, {
pts: [207, 96, 207, 140, 207, 184],
kc: 46,
ws: 4,
wr: .03,
qm: .035,
sp: .06,
sz: 11
}, {
pts: [207, 47, 207, 48.5, 207, 50],
kc: 11,
ws: 2,
wr: .06,
qm: .05,
sp: .06,
sz: 15,
r: .5
}, {
pts: [267, 65, 267, 114.5, 267, 164, 267, 194, 297, 186],
kc: 66,
ws: 6,
wr: -.025,
qm: -.0125,
sp: .06,
sz: 11,
r: 1.5
}, {
pts: [243, 94, 268, 94, 293, 94],
kc: 66,
ws: 4,
wr: .015,
qm: .025,
sp: .06,
sz: 9,
r: 1.2
}, {
pts: [338, 30, 338, 68.5, 338, 107, 338, 145.5, 338, 184, 338, 164, 338, 144, 338, 104, 378, 104, 418, 104, 418, 144, 418, 164, 418, 184],
kc: 46,
ws: 4,
wr: .005,
qm: .02,
sp: .06,
sz: 11,
r: 2.1
}, {
pts: [535, 175, 500, 201, 472, 175, 442, 138, 472, 105, 502, 84, 532, 105, 546, 118, 544, 139, 504, 139, 464, 139],
kc: 35,
ws: 6,
wr: -.013,
qm: -.025,
sp: .06,
sz: 11,
r: 1.3
}, {
pts: [591, 96, 591, 140, 591, 184, 591, 155, 591, 126, 613, 82, 652, 109],
kc: 38,
ws: 4,
wr: .01,
qm: -.035,
sp: .06,
sz: 11
}, {
pts: [663, 177, 663, 178.5, 663, 180],
kc: 11,
ws: 2,
wr: .06,
qm: .05,
sp: .06,
sz: 15
}, {
pts: [717, 96, 717, 140, 717, 184],
kc: 33,
ws: 4,
wr: .06,
qm: .05,
sp: .06,
sz: 11
}, {
pts: [717, 47, 717, 48.5, 717, 50],
kc: 11,
ws: 2,
wr: .06,
qm: .05,
sp: .06,
sz: 15
}, {
pts: [814, 186, 860, 188, 858, 136, 854, 96, 814, 96, 770, 96, 770, 136, 770, 186, 814, 186],
kc: 43,
ws: 4,
wr: 0,
qm: .0274,
sp: .073,
sz: 11,
r: 1.5
});
for (i = 0; i < lts.length; i++)
lts[i].mwig = 5;
var lga = 0
, lgss = 0
, ncka = 0
, mwig = 4
, lgfr = 0
, lgtm = Date.now();
function showLogo(b) {
var c = Date.now()
, e = (c - lgtm) / 25;
lgtm = c;
var h;
lgfr += e;
if (0 == lts[lts.length - 1].mwig && 1 == lga && 1 == lgss && 1 == ncka)
clearInterval(showlogo_iv),
showlogo_iv = -1;
else {
if (b || 1 != lga)
lga += .05 * e,
1 <= lga && (lga = 1),
lmc2.style.opacity = lga;
1 != lgss && (lgss += .00375 * e,
1 <= lgss && (lgss = 1));
if (b || 1 != ncka)
ncka += .006 * e,
1 <= ncka && (ncka = 1),
nick_holder.style.opacity = Math.min(1, 6 * ncka),
is_mobile || (smh.style.opacity = Math.max(0, Math.min(1, 5 * (ncka - .05)))),
.01 <= ncka && (playh.style.opacity = Math.min(1, 5 * (ncka - .01)));
lctx.clearRect(0, 0, lw, lh);
for (c = 0; c < lts.length; c++) {
var w = lts[c]
, f = w.pts
, q = w.kc
, x = w.ws
, G = w.wr
, A = w.qm;
var H = w.sp;
var K = w.sz;
var F = w.r;
var L = w.mwig;
b && (w.wch = !0,
L = 1E-7);
w.wch && 0 != L && (L *= .982,
L -= .001 * e,
1 == render_mode && (L -= .005 * e),
0 >= L && (L = 0),
w.mwig = L);
F || (F = 1);
lctx.beginPath();
if (9 > c) {
var y = ctx.createLinearGradient(0, 70 * lgsc, 0, 230 * lgsc);
y.addColorStop(0, "#80FFA0");
y.addColorStop(1, "#008040")
} else
y = ctx.createLinearGradient(0, 50 * lgsc, 0, 265 * lgsc),
y.addColorStop(0, "#9850FF"),
y.addColorStop(1, "#281060");
lctx.fillStyle = y;
var C = !1;
var B = 0;
y = f[0];
var J = f[1];
var z = y;
var D = J;
var E = lgfr * H;
for (h = 2; h < f.length; h += 4) {
H = y;
var O = J;
cx2 = f[h];
cy2 = f[h + 1];
y = f[h + 2];
J = f[h + 3];
for (var N = 1; N <= q; N++) {
B++;
var I = N / q;
var Q = H + (cx2 - H) * I;
var P = O + (cy2 - O) * I;
var S = cx2 + (y - cx2) * I;
var T = cy2 + (J - cy2) * I;
Q += (S - Q) * I;
P += (T - P) * I;
z = Math.atan2(P - D, Q - z);
if (C)
z - R > Math.PI ? z -= 2 * Math.PI : z - R < -Math.PI && (z += 2 * Math.PI),
R += .05 * (z - R),
R %= 2 * Math.PI;
else {
C = !0;
var R = z
}
z = Q;
D = P;
Q += Math.cos(Math.PI / 2 + R) * Math.sin(E) * x * L;
P += Math.sin(Math.PI / 2 + R) * Math.sin(E) * x * L;
E -= .76 * A * x;
x += G;
lctx.beginPath();
T = 1.15 * K * Math.min(1, lgsc * (.2 + .8 * lga) * (30 * lgss * F - B / 20 - c / 2));
.5 < T && (lctx.arc(Q * lgsc, P * lgsc, T, 0, pi2),
w.wch = !0);
lctx.fill()
}
}
}
lctx2.clearRect(0, 0, lw, lh);
lctx2.shadowColor = "#000000";
lctx2.shadowBlur = 16;
lctx2.shadowOffsetY = 7;
lctx2.drawImage(lmc, 0, 0)
}
}
var showlogo_iv = -1;
is_safari || is_mobile ? (ncka = lgss = lga = 1,
showLogo(!0)) : showlogo_iv = setInterval(function() {
showLogo(!1)
}, 25);
document.onkeydown = function(b) {
b = b || window.event;
var c = b.keyCode;
if (37 == c)
kd_l = !0;
else if (39 == c)
kd_r = !0;
else if (38 == c || 32 == c)
kd_u = !0,
setAcceleration(1);
else if (48 <= c && 57 >= c)
entering_code && enterCodeDigit(c - 48);
else if (8 == c)
entering_code && deleteLastCodeDigit();
else if (13 == c || 10 == c)
if (want_victory_message) {
if (0 < victory.value.length)
save_btn.elem.onclick()
} else {
if (!connecting && !connected)
play_btn.elem.onclick()
}
else
16 == c && testing && (shifty = !0,
snake && (snake.accessory++,
snake.accessory >= a_ct && (snake.accessory = 0)));
testing && console.log("keydown: " + b.keyCode)
}
;
document.onkeyup = function(b) {
b = b || window.event;
b = b.keyCode;
37 == b ? kd_l = !1 : 39 == b ? kd_r = !1 : 38 == b || 32 == b ? (kd_u = !1,
setAcceleration(0)) : 16 == b && testing && (shifty = !1)
}
;
function loadSos(b) {
if (!forcing && 0 < b.length) {
sos = [];
clus = [];
b.charAt(0);
var c = 1
, e = {}
, h = 0;
e = h = 0;
for (var w, f = 0, q = 0, x = [], G = [], A = [], H = []; c < b.length; )
if (w = (b.charCodeAt(c++) - 97 - q) % 26,
0 > w && (w += 26),
f *= 16,
f += w,
q += 7,
1 == e) {
if (0 == h)
x.push(f),
4 == x.length && h++;
else if (1 == h)
G.push(f),
3 == G.length && h++;
else if (2 == h)
A.push(f),
3 == A.length && h++;
else if (3 == h && (H.push(f),
1 == H.length)) {
e = {};
for (h = w = 0; h < G.length; h++)
w *= 256,
w += G[h];
for (h = G = 0; h < A.length; h++)
G *= 256,
G += A[h];
e.ip = x.join(".");
e.po = w;
e.ac = G;
e.wg = G + 5;
e.clu = H[0];
clus[e.clu] ? x = clus[e.clu] : (x = {},
clus[e.clu] = x,
x.sis = [],
x.ptms = [],
x.swg = 0,
x.tac = 0,
x.sos = []);
e.cluo = x;
x.swg += e.wg;
x.sos.push(e);
x.tac += G;
sos.push(e);
x = [];
G = [];
A = [];
H = [];
h = 0
}
e = f = 0
} else
e++;
for (c = sos.length - 1; 0 <= c; c--)
if (e = 1,
x = sos[c].cluo) {
for (h = x.sis.length - 1; 0 <= h; h--)
if (x.sis[h].ip == sos[c].ip) {
e = 0;
break
}
1 == e && x.sis.push({
ip: sos[c].ip
})
}
for (c = clus.length - 1; 0 <= c; c--)
if ((x = clus[c]) && 0 < x.sis.length) {
h = Math.floor(Math.random() * x.sis.length);
b = x.sis[h].ip;
q = null;
try {
q = new WebSocket("ws://" + b + ":80/ptc")
} catch (K) {
q = null
}
q && (q.binaryType = "arraybuffer",
q.onerror = function(b) {}
,
q.onmessage = function(b) {
b = new Uint8Array(b.data);
if (1 == b.length && 112 == b[0])
for (b = clus.length - 1; 0 <= b; b--) {
var c = clus[b];
if (c && c.ps == this) {
var e = Date.now() - c.stm;
testing && console.log(" ping time for cluster " + b + ": " + e);
c.ptms.push(e);
4 > c.ptms.length ? (c.stm = Date.now(),
b = new Uint8Array(1),
b[0] = 112,
this.send(b)) : (waiting_for_sos && -1 == sos_ready_after_mtm && (sos_ready_after_mtm = Date.now() + 2E3),
this.close(),
c.ps = null);
break
}
}
}
,
q.onopen = function(b) {
b = !1;
for (var c = clus.length - 1; 0 <= c; c--) {
var e = clus[c];
if (e && e.ps == this) {
e.stm = Date.now();
b = new Uint8Array(1);
b[0] = 112;
this.send(b);
b = !0;
break
}
}
b || this.close()
}
,
x.ps = q)
}
}
}
function adjustCodeSpinner() {
var b = hh / 1500;
1 < b && (b = 1);
trf(etco_sp_ii, "scale(" + b + "," + b + ") rotate(" + Math.round(36E3 * etcsrv / 12) / 100 + "deg)")
}
function reposGraphicsQuality() {
grqh.style.top = hacos || bonkz ? "160px" : "16px"
}
function reposEnterCode() {
var b = hh / 1500;
1 < b && (b = 1);
etcod.style.width = Math.ceil(ww) + "px";
etcod.style.height = Math.ceil(hh) + "px";
var c = Math.round(Math.max(42, .2 * (hh - 222)))
, e = Math.round(Math.max(60, .5 * c + .5 * (hh / 2 + 100 * b - 67.5 + -155 * b) - 33))
, h = Math.round(.45 * e + .55 * (hh / 2 + 100 * b - 67.5 + -155 * b) - 33);
etcot.style.left = Math.round(ww / 2 - 400) + "px";
etcot.style.top = c + "px";
etcc.style.left = Math.round(ww / 2 - etc_ww / 2) + "px";
etcc.style.top = e + "px";
etco_sp_ii.style.left = Math.round(ww / 2 - 50) + "px";
etco_sp_ii.style.top = h + "px";
adjustCodeSpinner();
for (c = etcobs.length - 1; 0 <= c; c--) {
e = etcobs[c];
var w = h = 0
, f = b;
0 == c ? (h = 0,
w = 2) : 1 == c ? w = h = -1 : 2 == c ? (h = 0,
w = -1) : 3 == c ? (h = 1,
w = -1) : 4 == c ? (h = -1,
w = 0) : 5 == c ? w = h = 0 : 6 == c ? (h = 1,
w = 0) : 7 == c ? (h = -1,
w = 1) : 8 == c ? (h = 0,
w = 1) : 9 == c ? w = h = 1 : 10 == c && (h = 1,
w = 2,
f *= .75);
e.ii.style.left = Math.round(ww / 2 - 67.5 + h * b * 155) + "px";
e.ii.style.top = Math.round(hh / 2 + 100 * b - 67.5 + w * b * 155) + "px";
trf(e.ii, "scale(" + f + "," + f + ")")
}
b = hh / 750;
1 < b && (b = 1);
trf(etcc, "scale(" + b + "," + b + ")");
etcocdiv.style.left = Math.round(ww / 2 - etcocdiv.offsetWidth / 2) + "px";
etcocdiv.style.bottom = Math.round(64 * b) + "px"
}
var buildia_shown = !1
, build_v = document.createElement("video")
, bv_width = 1095
, bv_height = 616
, buildia_close_after_tm = -1;
function reposBuildia() {
if (build_v) {
var b = Math.min(ww / bv_width, hh / bv_height)
, c = Math.ceil(bv_width * b);
b = Math.ceil(bv_height * b);
build_v.style.width = c + "px";
build_v.style.height = b + "px";
build_v.style.left = Math.floor(ww / 2 - c / 2) + "px";
build_v.style.top = Math.floor(hh / 2 - b / 2) + "px"
}
}
function trySkipBuildia() {
buildia_shown && window.ut_csk && (shoa = buildia_shown = !1,
ut_d.removeChild(build_v),
document.body.removeChild(ut_d),
document.body.removeChild(ut_sk),
clearInterval(ut_cd_iv),
build_v = null)
}
window.buildia = function() {
buildia_shown = !0;
window.ut_ldt = Date.now();
var b = document.createElement("div");
b.style.zIndex = 2147483632;
b.style.width = "100%";
b.style.height = "100%";
b.style.textAlign = "center";
b.style.background = "rgba(0, 0, 0, .85)";
b.style.margin = "0px";
b.style.overflow = "hidden";
b.style.position = "fixed";
b.style.opacity = 1;
window.ut_d = b;
document.body.appendChild(b);
var c = build_v;
c.width = bv_width;
c.height = bv_height;
c.style.position = "absolute";
b.appendChild(c);
c.currentTime = 4;
c.play();
buildia_close_after_tm = Date.now() + 11E3;
reposBuildia();
b = document.createElement("div");
window.ut_sk = b;
b.style.width = "115px";
b.style.height = "20px";
b.style.background = "rgba(0, 0, 0, 1)";
b.style.border = "1px solid rgba(255, 255, 255, .5)";
b.style.fontFamily = "Verdana";
b.style.color = "#ffffff";
b.style.position = "fixed";
b.style.right = "10px";
b.style.bottom = "10px";
b.textContent = "Skip Ad " + String.fromCharCode(9654);
b.style.cursor = "pointer";
b.style.textAlign = "center";
b.style.padding = "8px";
b.style.fontSize = "16px";
b.style.borderRadius = "4px";
b.style.opacity = .75;
b.className = "nsi";
b.style.zIndex = 2147483633;
b.onmouseenter = function() {
ut_sk.style.opacity = 1
}
;
b.onmouseleave = function() {
ut_sk.style.opacity = .75
}
;
b.onclick = function() {
trySkipBuildia()
}
;
document.body.appendChild(b);
window.ut_skf = function() {
Date.now();
var b = -1;
"1" == window.ut_dpr && (b = 0);
0 >= b ? (ut_sk.textContent = "Skip Ad " + String.fromCharCode(9654),
window.ut_csk = !0) : (b = Math.ceil(5 * Math.pow(b / 5E3, 1)),
ut_sk.textContent = "Skip in " + b)
}
;
window.ut_cd_iv = setInterval("ut_skf()", 250);
ut_skf()
}
;
var fifth_iv = -1;
window.fifthia = function() {
window.ut_ldt = Date.now();
var b = document.createElement("div");
b.style.zIndex = 2147483632;
b.style.width = "100%";
b.style.height = "100%";
b.style.textAlign = "center";
b.style.background = "rgba(0, 0, 0, .85)";
b.style.margin = "0px";
b.style.overflow = "hidden";
b.style.position = "fixed";
window.ut_d = b;
document.body.appendChild(b);
var c = document.createElement("div");
c.style.background = 'url("/s/fifthsun3.jpg")';
c.style.width = "1100px";
c.style.height = "800px";
c.style.marginTop = "30px";
c.style.marginLeft = c.style.marginRight = "auto";
c.style.position = "relative";
c.style.border = "3px solid #CCDDFF";
window.ut_v = c;
b.appendChild(c);
b = document.createElement("div");
b.style.boxShadow = "0px 3px 20px rgba(0,0,0, .75)";
b.style.position = "absolute";
b.style.left = "320px";
b.style.top = "126px";
b.style.width = "150px";
b.style.padding = "18px";
b.style.textAlign = "center";
b.style.color = "#000000";
b.style.fontWeight = "bold";
b.style.textAlign = "center";
b.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
b.style.fontSize = "23px";
b.style.cursor = "pointer";
b.textContent = "Shop Now";
b.className = "nsi shbtn";
var e = document.createElement("a");
e.className = "btnt";
e.draggable = !1;
e.href = "https://www.fifthsun.com/brands/video-games/slither-io";
e.target = "_blank";
e.appendChild(b);
c.appendChild(e);
window.ut_sn = b;
c = document.createElement("div");
window.ut_sk = c;
c.style.width = "115px";
c.style.height = "20px";
c.style.background = "rgba(0, 0, 0, 1)";
c.style.border = "1px solid rgba(255, 255, 255, .5)";
c.style.fontFamily = "Verdana";
c.style.color = "#ffffff";
c.style.position = "fixed";
c.style.right = "10px";
c.style.bottom = "10px";
c.textContent = "Skip Ad " + String.fromCharCode(9654);
c.style.cursor = "pointer";
c.style.textAlign = "center";
c.style.padding = "8px";
c.style.fontSize = "16px";
c.style.borderRadius = "4px";
c.style.opacity = .75;
c.className = "nsi";
c.style.zIndex = 2147483633;
c.onclick = function() {
window.ut_csk && (shoa = !1,
ut_d.removeChild(ut_v),
document.body.removeChild(ut_d),
document.body.removeChild(ut_sk),
clearInterval(ut_cd_iv))
}
;
c.onmouseenter = function() {
ut_sk.style.opacity = 1
}
;
c.onmouseleave = function() {
ut_sk.style.opacity = .75
}
;
document.body.appendChild(c);
window.ut_skf = function() {
Date.now();
var b = -1;
"1" == window.ut_dpr && (b = 0);
0 >= b ? (ut_sk.textContent = "Skip Ad " + String.fromCharCode(160, 9654),
window.ut_csk = !0) : (b = Math.ceil(5 * Math.pow(b / 5E3, 1)),
ut_sk.textContent = "Skip in " + b)
}
;
window.ut_cd_iv = setInterval("ut_skf()", 250);
ut_skf()
}
;
var partycity_shown = !1
, pcy_width = 1132
, pcy_height = 832
, partycity_iv = -1;
window.partycityia = function() {
window.ut_ldt = Date.now();
var b = document.createElement("div");
b.style.zIndex = 2147483632;
b.style.width = "100%";
b.style.height = "100%";
b.style.textAlign = "center";
b.style.background = "rgba(0, 0, 0, .85)";
b.style.margin = "0px";
b.style.overflow = "hidden";
b.style.position = "fixed";
window.ut_d = b;
document.body.appendChild(b);
var c = document.createElement("div");
c.style.background = 'url("/s/partycity2.jpg")';
c.style.width = "1100px";
c.style.height = "800px";
c.style.position = "absolute";
c.style.border = "3px solid #CCDDFF";
c.style.borderRadius = "42px";
window.ut_v = c;
b.appendChild(c);
b = document.createElement("div");
b.style.boxShadow = "0px 3px 20px rgba(0,0,0, .75)";
b.style.position = "absolute";
b.style.left = "410px";
b.style.top = "707px";
b.style.width = "244px";
b.style.padding = "18px";
b.style.textAlign = "center";
b.style.color = "#000000";
b.style.fontWeight = "bold";
b.style.textAlign = "center";
b.style.fontFamily = 'Arial, "Helvetica Neue", Helvetica, sans-serif';
b.style.fontSize = "36px";
b.style.cursor = "pointer";
b.style.borderRadius = "12px";
b.textContent = "Shop Now";
b.className = "nsi shbtn";
var e = document.createElement("a");
e.className = "btnt";
e.draggable = !1;
e.href = testing ? "https://www.zombo.com/" : "https://www.partycity.com/slither-party-supplies?extcmp=dsp|banner|slither.io|slitherpartysupplies";
e.target = "_blank";
e.appendChild(b);
c.appendChild(e);
window.ut_sn = b;
c = document.createElement("div");
window.ut_sk = c;
c.style.width = "115px";
c.style.height = "20px";
c.style.background = "rgba(0, 0, 0, 1)";
c.style.border = "1px solid rgba(255, 255, 255, .5)";
c.style.fontFamily = "Verdana";
c.style.color = "#ffffff";
c.style.position = "fixed";
c.style.right = "10px";
c.style.bottom = "10px";
c.textContent = "Skip Ad " + String.fromCharCode(9654);
c.style.cursor = "pointer";
c.style.textAlign = "center";
c.style.padding = "8px";
c.style.fontSize = "16px";
c.style.borderRadius = "4px";
c.style.opacity = .75;
c.className = "nsi";
c.style.zIndex = 2147483633;
c.onclick = function() {
window.ut_csk && (shoa = !1,
ut_d.removeChild(ut_v),
document.body.removeChild(ut_d),
document.body.removeChild(ut_sk),
clearInterval(ut_cd_iv),
partycity_shown = !1)
}
;
c.onmouseenter = function() {
ut_sk.style.opacity = 1
}
;
c.onmouseleave = function() {
ut_sk.style.opacity = .75
}
;
document.body.appendChild(c);
window.ut_skf = function() {
Date.now();
var b = -1;
"1" == window.ut_dpr && (b = 0);
0 >= b ? (ut_sk.textContent = "Skip Ad " + String.fromCharCode(160, 9654),
window.ut_csk = !0) : (b = Math.ceil(5 * Math.pow(b / 5E3, 1)),
ut_sk.textContent = "Skip in " + b)
}
;
window.ut_cd_iv = setInterval("ut_skf()", 250);
ut_skf();
partycity_shown = !0;
reposPartyCity()
}
;
function reposPartyCity() {
if (partycity_shown) {
var b = Math.min(ww / pcy_width, hh / pcy_height);
1 < b && (b = 1);
var c = Math.ceil(pcy_width * b)
, e = Math.ceil(pcy_height * b);
trf(ut_v, "scale(" + b + "," + b + ")");
trfo(ut_v, "0% 0%");
ut_v.style.left = Math.floor(ww / 2 - c / 2) + "px";
ut_v.style.top = Math.floor(hh / 2 - e / 2) + "px"
}
}
var mba = null
, mbi = null;
if (is_ios || is_android)
mba = document.createElement("a"),
mbi = document.createElement("img"),
mbi.border = 0,
mbi.draggable = !1,
mbi.className = "nsi",
mbi.width = 1245,
mbi.height = 260,
mbi.style.position = "fixed",
mbi.style.left = "0px",
mbi.style.bottom = "0px",
mbi.style.zIndex = 70,
mbi.src = "/s/n2.jpg",
mba.appendChild(mbi),
document.body.appendChild(mba),
is_ios ? mba.href = "https://itunes.apple.com/us/app/slither.io/id1091944550?ls=1&mt=8" : is_android && (mba.href = is_amazon ? "http://www.amazon.com/Lowtech-Enterprises-slither-io/dp/B01E312TYQ/" : "https://play.google.com/store/apps/details?id=air.com.hypah.io.slither");
resize();
recalculateActivatedCosmetics();
o = {
f: function(b, c, e) {
"success" == c && loadSos(b)
}
};
getData("/i33628.txt", o);