Talk:Level 2/@comment-213.166.130.212-20201218122542

oh my Is BETEST CURSORS.IO!


 * 1) //      __________ _________  _________________
 * 2) //      \___   /  |  \_  __ \/  ___/  _ \_  __ \
 * 3) //       /    /|  |  /|  | \/\___ (  <_> )  | \/
 * 4) //      /_____ \____/ |__|  /____  >____/|__|
 * 5) //      ___.
 * 6) //      \_ |__ ___.__. ___  ______ ___  ___
 * 7) //       | __ <   |  | \  \/ /    \\  \/  /
 * 8) //       | \_\ \___  |  \   /   |  \>    <
 * 9) //       |___  / ____|   \_/|___|  /__/\_ \
 * 10) // >> HOW TO USE <<
 * 11) // 1. Go to cursors.io
 * 12) // 2. Open Inspect Element
 * 13) // 3. Go to the Console tab in inspect element
 * 14) // 4. Paste this whole script into the console, then hit enter
 * 15) document.getElementById('noCursorLock').checked=!0;
 * 16) // New code which destroys the current game first, I'm tired of telling people to go to the editor instead
 * 17) if (location.search.indexOf('editor')==-1){let canvas=document.getElementById('canvas'),wsSend=WebSocket.prototype.send;WebSocket.prototype.send=function{this.close;WebSocket.prototype.send=wsSend;init;};let ev=new MouseEvent('mousedown',{bubbles:true});for(let i=0;i<2;++i){canvas.dispatchEvent(ev)}}else{init};
 * 18) async function init{var ip='ws://'+JSON.parse(await (await fetch('http://api.n.m28.io/endpoint/cursors/findEach')).text).servers['digitalocean-sfo'].ipv4+':2828';
 * 19) var e,t,a,n,l,o,r,s,c,h,p,d,F,T,f,u,m,g,S=document.getElementById("canvas"),y=S.getContext("2d"),C={},W={},B=[],w=[],x=[],v=new Image,U=400,V=300,Y=400,X=300,b=400,I=300,k=[],A=[],O=0,H=!1,D={},M=0,P=[],E=[],L=[],J={},R=["​"],N=-1,q=[],z="Main",j=!1,K=0,G=1e3,$=0,_=0,Q=[],Z={},ee=0,te=!1;function ae(e,t){this.ID=e,this.Action=t,this.Show=function{return MenuMan.currentMenu=this.ID,!0},this.Hide=function{return MenuMan.currentMenu="main",!0}}function ne{if(y.CLS,e&&(2!=e.readyState&&3!=e.readyState||(y.filter="blur(20px) grayscale(100%)")),y.lineWidth=C.Themes[C.ThemeSelected].Misc.LineWidth,1e3==G){function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}B.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),B.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),k.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),A.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(M>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.beginPath,y.globalAlpha=.4,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=2.5,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",x.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,N!=L[0].Level&&L[0].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[1].Level&&N!=L[0].Level&&L[1].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Client",10,590)}else{function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}L[G].OBJ.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),L[G].OBJ.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),L[G].CLI.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),L[G].DRA.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(L[G].LocalPlayers>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.lineWidth=0==G?2.5:1,y.beginPath,y.globalAlpha=.4,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.lineWidth=1==G?2.5:1,y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",L[G].CUR.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,L[(G+1)%2].Level!=L[G].Level&&L[(G+1)%2].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[G].Level&&N!=L[(G+1)%2].Level&&x.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Bot #"+(G+1),10,590)}function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}if(y.drawImage(v,U-5,V-5),e&&(2==e.readyState||3==e.readyState))return y.filter="none",y.fillStyle="#000",y.shadowBlur=0,y.globalAlpha=.2,y.fillRect(0,0,800,600),y.fillStyle="#FFF",y.shadowColor="#FFF",y.globalAlpha=.5,y.shadowBlur=20,y.font="60px NovaSquare",y.fillText("Disconnected",400-y.measureText("Disconnected").width/2,330),y.font="30px NovaSquare",void y.fillText("[ Reconnect? ]",400-y.measureText("[ Reconnect? ]").width/2,370);y.font="12px NovaSquare",y.fillStyle="#FFFFFF",y.strokeStyle="#000000",t("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds",790-y.measureText("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds").width,22),t("FPS: "+W.FPS,10,24),t("Level "+N,10,40),t("Cursors: "+M+" / "+O,400-y.measureText("Cursors: "+M+" / "+O).width/2,590),y.fillStyle=M>30?"#FF9999":"#FFFFFF",t(M>30?"Drawing is not available":"Drawing is available.",400-y.measureText(M>30?"Drawing is not available":"Drawing is available.").width/2,574),C.Misc.Help?(y.fillStyle="#000",y.shadowColor="#000",y.globalAlpha=.1,y.shadowBlur=20,y.fillRect(50,50,700,500),y.globalAlpha=1,y.fillStyle="#FFF",y.strokeStyle="#000",y.shadowBlur=0,y.font="24px NovaSquare",t("Help",400-y.measureText("Help").width/2,94),y.font="12px NovaSquare",t("(Press F11 to hide)",400-y.measureText("(Press F11 to hide)").width/2,110),y.font="24px NovaSquare",t("Keybinds",250-y.measureText("Keybinds").width/2,160),t("Images",550-y.measureText("Images").width/2,160),y.font="12px NovaSquare",t("F1 - Toggles Movement",100,180),t("F2 - Toggles WallHack",100,202),t("F3 - Deploys a minion",100,224),t("F4 - Returns a minion",100,246),t("F5 - Returns all deployed minions",100,268),t("F6 - Toggles Spam Clicking",100,290),t("F7 - Toggles Clicking All Buttons",100,312),t("F8 - Switches views",100,334),t("Right Click - Toggles Spam Clicking",100,400)):t("Press F11 to get help",400-y.measureText("Press F11 to get help").width/2,22),W.Frames++,W.FPS++,setTimeout(function{W.FPS--},1e3),requestAnimationFrame(ne)}function le{return"Thanks for using my script! :)"}v.src="img/cursor.png",y.CLS=function{return y.clearRect(0,0,800,800),!0},requestAnimationFrame(ne);var ie=[];function oe{var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,1),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setUint32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&!C.Misc.AllButtons&&e.send(t)}),e&&1==e.readyState&&e.send(t),setTimeout(function{oe},Math.floor(86400*Math.random+43200))}Z={Log:function(e,t=0){Q.length>=24&&Q.shift,Q.push([e,t]),u.clearRect(0,0,getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2),304),f.width=parseInt(getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2)),f.height=304,u.font="12px NovaSquare";for(var a=0;a<Q.length;a++)u.fillStyle=0==Q[a][1]?"#ccc":1==Q[a][1]?"#ee0":3==Q[a][1]?"#9f9":"#f99",u.fillText(Q[a][0],5,17+12*a)},AllButtons:function{var e=[],t=0,a=1;B.forEach(function(t){"Button"==t.Type&&e.push(t)}),0!=e.length&&(a=Math.floor(e.length/2),function n{if(!C.Misc.AllButtons)return Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,1),void clearTimeout;Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt((e[t].X+e[t].W/2)/2),parseInt((e[t].Y+e[t].H/2)/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt((e[a].X+e[a].W/2)/2),parseInt((e[a].Y+e[a].H/2)/2)],!0,1);var l=new ArrayBuffer(9),i=new DataView(l),o=0;for(i.setUint8(0,2),i.setUint16(1,parseInt((e[t].X+e[t].W/2)/2),!0),i.setUint16(3,parseInt((e[t].Y+e[t].H/2)/2),!0),i.setInt32(5,-1,!0);o<10;o++)L[0].send(l);for(i.setUint16(1,parseInt((e[a].X+e[a].W/2)/2),!0),i.setUint16(3,parseInt((e[a].Y+e[a].H/2)/2),!0),o=0;o<10;o++)L[1].send(l);t++,++a>e.length-1&&(a=Math.floor(e.length/2),t=0),setTimeout(function{n},C.Misc.AllButtonsInterval)})},DOS:function(e,t){var a=[];ie=[];for(var n=0;n<300;n++){a[n]=[],ie[n]=[];for(var l=0;l<400;l++)a[n][l]=0,ie[n][l]=0}-1==t?B.forEach(function(e){if("Wall"==e.Type||"Exit"==e.Type&&1==e.Variant)for(var t=0;t=0&&!(1&a[n][l]);l-=C.Pathfinder.Speed["X-"])a[n][l]|=1,ie[n][l]||(ie[n][l]=[t,n],o.push([l,n]));for(var i=n+C.Pathfinder.Speed["Y+"];i<300&&!(2&a[i][t]);i+=C.Pathfinder.Speed["Y+"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]));for(i=n-C.Pathfinder.Speed["Y-"];i>=0&&!(2&a[i][t]);i-=C.Pathfinder.Speed["Y-"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]))}}),i=o,o=[]},MOVE:function(t,a,n){if(!a.length)return 0;t.Available=!1;var l=new ArrayBuffer(9),i=new DataView(l);i.setUint8(0,C.Pathfinder.Variant),i.setUint16(1,a[0][0],!0),i.setUint16(3,a[0][1],!0),i.setInt32(5,-1,!0),t.send(l);for(var o=0;o<a.length;o++)i.setUint16(1,a[o][0],!0),i.setUint16(3,a[o][1],!0),t.send(l);return t!=e&&(t.Available=!0),a.length},Pathfinder:function(t,a,n=!1,l=-1,i=!0){var o=[];if(-1==l){if(!n&&1!=e.readyState)return!1;Z.DOS(t,l);for(var r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,1!=i||C.Misc.AllButtons||L.forEach(function(e){1!=e.readyState||e.Deployed||Z.MOVE(e,o,n)}),Z.MOVE(e,o,n)}if(!n&&(1!=L[l].readyState||0==L[l].Available||1==L[l].Deployed||C[""]))return!1;Z.DOS(t,l);for(r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,Z.MOVE(L[l],o,n)},SendMessage:function(a){Z.Log('Writing message "'+a.join("")+'"...');var n=0,l=0,i=b,o=I;!function r{if(!(n>a.length-1)){var s=new ArrayBuffer(9),c=new DataView(s),h=a[n];if(h.length>1)return n++,void r;if(c.setUint8(0,3),!J[C.Fonts.Selected][h])return console.warn("Unsupported letter "+h+" in font "+C.Fonts.Selected),t.parentElement.style.borderColor="#f99",t.style.color="#f99",void setTimeout(function{t.parentElement.style.borderColor="#ccc",t.style.color="#ccc"},250);J[C.Fonts.Selected][h].forEach(function(t){console.log(t),c.setUint16(1,i/2+n*C.Fonts.Spacing+t[0]*C.Fonts.Width,!0),c.setUint16(3,o/2-t[1]*C.Fonts.Height,!0),c.setUint16(5,i/2+n*C.Fonts.Spacing+t[2]*C.Fonts.Width,!0),c.setUint16(7,o/2-t[3]*C.Fonts.Height,!0),l%(1+L.length-_)?(L[l%(L.length-_)].send(s),console.log("Clients "+l%(L.length-_))):(e.send(s),console.log("Client")),l++,C.Misc.AllButtons&&(l=0)}),n++," "==h?r:setTimeout(function{r},C.Fonts.Interval)}},Z.Log("Finished writing message.",3)},Keypress:function(e){if(e.keyCode>=65&&e.keyCode<=90||32==e.keyCode||e.keyCode>=48&&e.keyCode<=57&&!e.shiftKey){if(R.length>=64)return;e.shiftKey?R.push(String.fromCharCode(e.keyCode).toUpperCase):R.push(String.fromCharCode(e.keyCode).toLowerCase),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=48&&e.keyCode<=57){if(R.length>=64)return;switch(e.keyCode){case 49:R.push("!");break;case 50:R.push("@");break;case 51:R.push("#");break;case 52:R.push("$");break;case 53:R.push("%");break;case 54:R.push("^");break;case 55:R.push("&");break;case 56:R.push("*");break;case 57:R.push("(");break;case 48:R.push(")");break;default:console.warn("Somehow, you got this hidden error message. Congrats! Anyways, you got this because you typed a number with the shift key down, BUT for some reason its character code wasn't supported. Send this spammy thing below to vnx#6389 on discord:\n"+e)}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(13==e.keyCode)R.shift,Z.SendMessage(R),R=["​"],t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px",t.innerText=R.join("");else if(8==e.keyCode){if(R.length<=1)return;e.shiftKey?R.splice(1,1):e.ctrlKey?R=["​"]:R.pop,R==[]&&(R=["​"]),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=219&&e.keyCode<=222||e.keyCode>=186&&e.keyCode<=191){if(e.shiftKey)switch(e.keyCode){case 219:R.push("{");break;case 220:R.push("\\");break;case 221:R.push("}");break;case 190:R.push(">");break;case 188:R.push("<");break;case 189:R.push("_");break;case 187:R.push("+");break;case 191:R.push("?");break;case 186:R.push(":");break;case 222:R.push('"')}else switch(e.keyCode){case 219:R.push("[");break;case 220:R.push("\\");break;case 221:R.push("]");break;case 190:R.push(".");break;case 188:R.push(",");break;case 189:R.push("-");break;case 187:R.push("=");break;case 191:R.push("/");break;case 186:R.push(";");break;case 222:R.push("'")}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=112&&e.keyCode<=122)switch(e.preventDefault,e.keyCode){case 112:C.Movement=!C.Movement,Z.Log(C.Movement?"Enabled movement.":"Disabled movement.");break;case 113:C.Misc.WallHack=!C.Misc.WallHack,Z.Log(C.Misc.WallHack?"Enabled wallhack.":"Disabled wallhack.");break;case 114:$>=L.length&&($=0),L[$].Deployed=!0,Z.Log("Deployed bot #"+($+1)),$++;break;case 115:--$<0&&($=L.length-1),L[$].Deployed=!1,Z.Pathfinder([parseInt(L[$].X/2),parseInt(L[$].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,$),Z.Log("Returned bot #"+($+1));break;case 116:$=0;var a=0;for(Z.Log("Returning all bots...");a<L.length;a++)1==L[a].Deployed&&(L[a].Deployed=!1,Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,a));Z.Log("Returned all bots.",3);break;case 117:C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.");break;case 118:if(C.Misc.AllButtons=!C.Misc.AllButtons,Z.Log(C.Misc.AllButtons?"Enabled all button clicking.":"Disabled all button clicking."),C.Misc.AllButtons)Z.AllButtons;else for(a=0;a=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2?S.style.cursor="pointer":S.style.cursor="auto"),C.Movement&&1==e.readyState&&!function(e,t,a,n){for(var l=0;lB[l].X&&t>B[l].Y&&a=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2){function a(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip),L=[];for(var n=0;n<C.Connections;n++){var l=n;L.push(new WebSocket(ip)),L[l].binaryType="arraybuffer",L[l].OBJ=[],L[l].CUR=[],L[l].DRA=[],L[l].CLI=[],L[l].X=400,L[l].Y=300,L[l].Level=-1,L[l].LocalPlayers=0,a(l)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose,S.style.cursor="none",Z.Log("Reconnecting...",3)}requestAnimationFrame(ne),W.Seconds=0}if(1==e.readyState){if(t.shiftKey)H=!0;else{Z.Pathfinder([parseInt(b/2),parseInt(I/2)],[parseInt(U/2),parseInt(V/2)],!1,-1),setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown);var i=new ArrayBuffer(9),o=new DataView(i);o.setUint8(0,2),o.setUint16(1,U/2,!0),o.setUint16(3,V/2,!0),o.setUint32(5,-1,!0);n=0;if(C.Misc.AllButtons)for(n<C.Click.Weight;n++)e.send(i);else setInterval(function{++n<=C.Click.Weight?n%(1+L.length-K)?L[n%(L.length-K)].Deployed||1!=L[n%(L.length-K)].readyState||L[n%(L.length-K)].send(i):e.send(i):clearInterval},C.Click.Interval.Normal)}j=!0}},Unclick:function(e){U=e.layerX,V=e.layerY,H=!1,j=!1},NewObjects:function(e,t,a){switch(BinType=e.getUint8(t),console.log(BinType),BinType){case 0:B[a].Type="Text";break;case 1:B[a].Type="Wall";break;case 2:B[a].Type="Exit";break;case 3:B[a].Type="Plate";break;case 4:B[a].Type="Button";break;default:B[a].Type="Unknown"}if("Text"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].Size=e.getUint8(t+5),B[a].Centered=!!e.getUint8(t+6),t+=7;var n="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(n+=String.fromCharCode(i),i=0),0!=i&&(n+=String.fromCharCode(i));return B[a].Text=n,B[a].Variant=0,t+1}if("Wall"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0);for(n=e.getUint32(t+9,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:"FF0000"==n.toUpperCase?B[a].Variant=2:B[a].Variant=0,t+13}if("Exit"==B[a].Type)return B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase||"FF0000"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase||"FFFF00"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase||"00FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase||"0000FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase||"FF00FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=7,t+15}if("Button"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=0,t+15}console.log("unknown object thing"),B[a].X=e.getUint16(t+1,!0)||0,B[a].Y=e.getUint16(t+3,!0)||0,B[a].W=e.getUint16(t+5,!0)||100,B[a].H=e.getUint16(t+7,!0)||100},BNewObjects:function(e,t,a,n){switch(BinType=e.getUint8(t),BinType){case 0:L[n].OBJ[a].Type="Text";break;case 1:L[n].OBJ[a].Type="Wall";break;case 2:L[n].OBJ[a].Type="Exit";break;case 3:L[n].OBJ[a].Type="Plate";break;case 4:L[n].OBJ[a].Type="Button";break;default:L[n].OBJ[a].Type="Unknown"}if("Text"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].Size=e.getUint8(t+5),L[n].OBJ[a].Centered=!!e.getUint8(t+6),t+=7;var l="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(l+=String.fromCharCode(i),i=0),0!=i&&(l+=String.fromCharCode(i));return L[n].OBJ[a].Text=l,L[n].OBJ[a].Variant=0,t+1}if("Wall"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0);for(l=e.getUint32(t+9,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=2:L[n].OBJ[a].Variant=0,t+13}if("Exit"==L[n].OBJ[a].Type)return L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase||"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase||"FFFF00"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase||"00FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase||"0000FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase||"FF00FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=7,t+15}if("Button"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=0,t+15}L[n].OBJ[a].X=e.getUint16(t+1,!0)||0,L[n].OBJ[a].Y=e.getUint16(t+3,!0)||0,L[n].OBJ[a].W=e.getUint16(t+5,!0)||100,L[n].OBJ[a].H=e.getUint16(t+7,!0)||100},WSMessageS00:function(e){return ee=e.getUint32(1,!0),Z.Log("Your ID is "+ee+"."),!0},CursorDrawPos:function(e,t,a){var n=t-e,l=(new Date-a)/C.Cursor.AnimationDelay,i=0>=l?0:1<=l?1:l;return e+i*i*(3-2*i)*n},WSMessageS01:function(t,a){H&&!C.Click.HoldToSpam&&function{var t=new ArrayBuffer(9),a=new DataView(t);if(a.setUint8(0,3),a.setUint16(1,parseInt(Y/2),!0),a.setUint16(3,parseInt(X/2),!0),a.setUint16(5,parseInt(U/2),!0),a.setUint16(7,parseInt(V/2),!0),e.send(t),1e3==G)for(var n=0;n<L.length;n++)1!=L[n].readyState||L[n].Deployed||L[n].Level!=N||C.Misc.AllButtons||L[n].send(t)},C.Movement&&(Y=U,X=V);var n=t.getUint16(1,!0),l=new Array(512);M=t.getUint16(1,!0);for(var i=0;i<n;i++){var o=t.getUint32(3+8*i,!0),r=t.getUint16(7+8*i,!0),s=t.getUint16(9+8*i,!0);x[o]||(x[o]={I:o,OX:2*r+6,OY:2*s,X:2*r+6,Y:2*s+6,T:new Date}),x[o]={I:o,OX:Z.CursorDrawPos(x[o].OX,x[o].X,x[o].T),OY:Z.CursorDrawPos(x[o].OY,x[o].Y,x[o].T),X:2*r+6,Y:2*s,T:new Date},l[o]=!0,o==ee&&(b=x[o].OX,I=x[o].OY,RX=2*r+6,RY=2*s)}for(i=0;i0&&console.log("wallupdates:"+p);for(i=0;i0&&console.log("mapupdates:"+F);for(i=0;i=c+4&&(O=t.getUint32(c,!0)),!0},WSMessageS04:function(t){if(C.Bots.NewLevelReturn){C.Misc.AllButtons&&Z.Log("Disabled all button clicking."),C.Misc.AllButtons=!1;for(var a=0;a<L.length;a++)1==L[a].readyState&&Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!0,a)}B=[],x=[],U=2*t.getUint16(1,!0),V=2*t.getUint16(3,!0),Y=U,X=V,A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=t.getUint16(5,!0),OFF=7;for(a=0;a62)N++;else{N="??";for(a=0;aN?"You went back a level.":l==N?"You teleported back to the spawn.":"You advanced a level",l0)&&(e.Available=!1,setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown),Z.Pathfinder([parseInt(RX/2-3),parseInt(RY/2)],[parseInt(U/2),parseInt(V/2)],!1,-1,!C.Pathfinder.CalculateAll),C.Pathfinder.CalculateAll)){for(var a=0;a<L.length;a++)L[a].Level==N&&0==L[a].Deployed&&Z.Pathfinder([parseInt(L[a].X),parseInt(L[a].Y)],[parseInt(U/2),parseInt(V/2)],!1,a);return!1}},WSMessageSplitter:function(e){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSMessageS00(ABC):1==ABC.getUint8(0)?Z.WSMessageS01(ABC,e):4==ABC.getUint8(0)?Z.WSMessageS04(ABC):5==ABC.getUint8(0)&&Z.WSMessageS05(ABC)},WSOpen:function(e){Z.Log("Client connected!",3),o.style.color="#9f9",o.innerText="Connected",console.log("%cWS: %cClient Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSClose:function(e){Z.Log("Client disconnected.",2),o.style.color="#f99",o.innerText="Disconnected",S.style.cursor="auto",console.log("%cWS: %cClient Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;"),L.forEach(function(e){e.close})},WSBOpen:function(e,t){Z.Log("Bot #"+t+" connected!",3),0==t?(h.style.color="#9f9",h.innerText="Connected"):1==t&&(BotStateDisplay2.style.color="#9f9",BotStateDisplay2.innerText="Connected"),console.log("%cWS: %cNew Bot Client Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSBClose:function(e,t){Z.Log("Bot #"+t+" disconnected.",2),0==t?(h.style.color="#f99",h.innerText="Disconnected"):1==t&&(BotStateDisplay2.style.color="#f99",BotStateDisplay2.innerText="Disconnected"),_++,console.log("%cWS: %cA Bot Client Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;")},WSBMessageS00:function(e,t){return L[t].I=e.getUint32(1,!0),q.push(e.getUint32(1,!0)),Z.Log("Bot #"+(t+1)+"'s ID is "+e.getUint32(1,!0)),!0},WSBMessageS01:function(e,t){var a,n,l=e.getUint16(1,!0),i=new Array(512);M=e.getUint16(1,!0),H&&!C.Click.HoldToSpam&&(a=new ArrayBuffer(9),(n=new DataView(a)).setUint8(0,3),n.setUint16(1,parseInt(Y/2),!0),n.setUint16(3,parseInt(X/2),!0),n.setUint16(5,parseInt(U/2),!0),n.setUint16(7,parseInt(V/2),!0),1e3!=G&&1==L[t].readyState&&!L[t].Deployed&&L[t].Level==L[G].Level&&!C.Misc.AllButtons&&L[t].send(a)),C.Movement&&(L[t].OX=U,L[t].OY=V);for(var o=0;o<l;o++){var r=e.getUint32(3+8*o,!0),s=e.getUint16(7+8*o,!0),c=e.getUint16(9+8*o,!0);L[t].CUR[r]||(L[t].CUR[r]={I:r,OX:2*s+6,OY:2*c,X:2*s+6,Y:2*c+6,T:new Date}),L[t].CUR[r]={I:r,OX:Z.CursorDrawPos(L[t].CUR[r].OX,L[t].CUR[r].X,L[t].CUR[r].T),OY:Z.CursorDrawPos(L[t].CUR[r].OY,L[t].CUR[r].Y,L[t].CUR[r].T),X:2*s+6,Y:2*c,T:new Date},i[r]=!0,r==L[t].I&&(L[t].X=L[t].CUR[r].OX,L[t].Y=L[t].CUR[r].OY,L[t].RX=2*s+6,L[t].RY=2*c)}for(o=0;o<L[t].CUR.length;o++)L[t].CUR[o]&&!i[o]&&(L[t].CUR[o]=void 0);var h=3+8*l,p=e.getUint16(h,!0);for(o=0;o<p;o++){s=e.getUint16(h+2+4*o,!0),c=e.getUint16(h+4+4*o,!0);setTimeout(function{L[t].CLI.push({X:2*s-10,Y:2*c,T:new Date,L:N})},C.Click.Delay),setTimeout(function{L[t].CLI.shift},C.Click.Expiration)}h=h+4+4*p;var d=e.getUint16(h-2,!0);for(o=0;o<d;o++){r=e.getUint32(h,!0);for(var F=0;F<L[t].OBJ.length;F++)L[t].OBJ[F].I==r&&L[t].OBJ.splice(F,1);h+=4}h+=2;var T=e.getUint16(h-2,!0);for(o=0;o<T;o++){r=e.getUint32(h,!0);function f{for(var e=0;e<L[t].OBJ.length;e++)if(L[t].OBJ[e].I==r)return e;return L[t].OBJ.push({I:r}),L[t].OBJ.length-1}var u=f;h+=4,h=Z.BNewObjects(e,h,u,t)}var m=e.getUint16(h,!0);for(o=0;o<m;o++){var g=e.getUint16(h+2+8*o,!0),S=e.getUint16(h+4+8*o,!0),y=e.getUint16(h+6+8*o,!0),W=e.getUint16(h+8+8*o,!0);L[t].DRA.push({X:[2*g,2*y],Y:[2*S,2*W],T:new Date,L:N}),setTimeout(function{L[t].DRA.shift},C.Drawing.Expiration)}return!0},WSBMessageS04:function(e,t){L[t].OBJ=[],L[t].CUR=[],L[t].X=2*e.getUint16(1,!0),L[t].Y=2*e.getUint16(3,!0),L[t].OX=2*e.getUint16(1,!0),L[t].OY=2*e.getUint16(3,!0),A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=e.getUint16(5,!0),OFF=7;for(var a=0;a62)L[t].Level++;else{L[t].Level="??";for(a=0;aL[t].Level?"Bot #"+(t+1)+" went back a level.":n==L[t].Level?"Bot #"+(t+1)+" teleported back to the spawn.":"Bot #"+(t+1)+" advanced a level",n<L[t].Level?3:0),!0},WSBMessageSplitter:function(e,t){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSBMessageS00(ABC,t):1==ABC.getUint8(0)?Z.WSBMessageS01(ABC,t):4==ABC.getUint8(0)&&Z.WSBMessageS04(ABC,t)}},FixCanvas=function{S.style.width="800px",S.style.height="600px",S.width=800,S.height=600,S.style.backgroundColor="#fefefe"},FixCanvas,CheckForHost=function{"http://cursors.io"!=window.origin&&alert("The script has detected you're not playing on cursors.io. Please do not try using any other sites with this script. Nothing is stopping you, but be warned, the script will be VERY BUGGY, and very likely not even work at all.")},CheckForHost,CreateGUI=function{var e=document.getElementsByTagName("div");e[3].style.display="none",e[4].style.display="none",e[1].style.border="2px solid #ccc",e[1].style.marginBottom="5px",e[1].style.borderRadius="10px",S.style.borderRadius="7px",S.style.cursor="none",ae=document.createElement("div"),document.body.appendChild(ae),ae.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: 800px; margin: 5px auto;";var i=document.createElement("div");t=document.createElement("p"),i.style.cssText="width: 750px; margin-left: 25px; transition: 0.25s;",ae.appendChild(i),t.style.cssText="font-family: NovaSquare; color: #ccc; margin-left: 10px; transition: 0.25s; font-size: "+(R.length>20?24-(R.length-20)+"px;":"24px;"),i.appendChild(t),t.innerText="​",BotView=document.createElement("div"),BotView.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: 5px;",document.body.appendChild(BotView),(a=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(a),(r=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(r),(p=document.createElement("div")).style.cssText="height: 100px;",BotView.appendChild(p),(l=document.createElement("div")).innerText="You",l.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(l),(n=document.createElement("div")).innerText="Level 0",n.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(n),(o=document.createElement("div")).innerText="Connecting",o.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",a.appendChild(o),(c=document.createElement("div")).innerText="Bot #1",c.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(c),(s=document.createElement("div")).innerText="Level 0",s.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(s),(h=document.createElement("div")).innerText="Connecting",h.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",r.appendChild(h),(F=document.createElement("div")).innerText="Bot #2",F.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(F),(d=document.createElement("div")).innerText="Level 0",d.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(d),BotStateDisplay2=document.createElement("div"),BotStateDisplay2.innerText="Connecting",BotStateDisplay2.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",p.appendChild(BotStateDisplay2),r.style.cursor="pointer",a.style.cursor="pointer",p.style.cursor="pointer",r.onclick=function{G=0},p.onclick=function{G=1},a.onclick=function{G=1e3},(T=document.createElement("div")).style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: calc(50% + 415px);",document.body.appendChild(T),(f=document.createElement("canvas")).style.cssText="height: 304px; width: calc(50vw - 425px); border-radius: 7px;",T.appendChild(f),u=f.getContext("2d")},CreateGUI,PredefineSettings=function{C={Themes:{Basic:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:-1,0,Wall:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Exit:-1,0],[-1,0,Plate:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Button:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3,"#ff9900"],ClickColor:"#000",DrawColor:"#000",DrawAlpha:.3,DrawWidth:1}},Shaded:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:",Wall:",Exit:",Plate:",Button:"},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3],ClickColor:"#000"}}},ThemeSelected:"Basic",Movement:!0,Connections:2,PageSelected:"Fonts",PageHelp:!1,Fonts:{Selected:"Basic",Width:1,Height:1,Spacing:3,Interval:150,Weight:1},Pathfinder:{Cooldown:200,Variant:1,CalculateAll:!1,Speed:{"X+":1,"X-":1,"Y+":1,"Y-":1}},Click:{Delay:0,Weight:10,SpamClicking:!1,Interval:{Normal:5,Spam:25},HoldToSpam:!1,Expiration:300},Drawing:{Expiration:1e4},Cursor:{IDs:!0,Offset:[0,0],AnimationDelay:100},Bots:{NewLevelReturn:!0},Misc:{WallHack:!0,Help:!1,Debug:!0,RightClickGUI:!0,AllButtons:!1,AllButtonsInterval:333}}},PredefineSettings,PredefineStats=function{W={Frames:0,Seconds:0,FPS:0}},PredefineStats,setInterval(function{W.Seconds++},1e3),setInterval(function{if(C.Click.SpamClicking||C.Click.HoldToSpam&&j&&!H){var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,2),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setInt32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&e.Available&&e.Level==N&&e.send(t)}),1==e.readyState&&e.Available&&e.send(t)}},C.Click.Interval.Spam),setInterval(function{"​"!=R[0]&&R.unshift("​")},50),setInterval(function{s.style.color=L[0].LevelN||L[1].Level>N?"#f99":"#ccc"},100),oe,PredefineLevels=function{E=[[{I:0,Type:"Text",X:400,Y:100,Size:68,Centered:!0,Text:"Welcome",Variant:0},{I:1,Type:"Text",X:400,Y:150,Size:20,Centered:!0,Text:"You participate in this experiment with your mouse cursor",Variant:0},{I:2,Type:"Text",X:400,Y:184,Size:20,Centered:!0,Text:"Move to the next level by putting your mouse on the green area",Variant:0},{I:3,Type:"Exit",X:600,Y:350,W:100,H:100,Variant:0}],[{I:0,Type:"Exit",X:0,Y:280,W:40,H:40,Variant:0},{I:3,Type:"Wall",X:0,Y:0,W:520,H:40,Variant:0},{I:4,Type:"Wall",X:560,Y:40,W:240,H:40,Variant:0},{I:5,Type:"Wall",X:40,Y:80,W:160,H:40,Variant:0},{I:6,Type:"Wall",X:240,Y:80,W:280,H:40,Variant:0},{I:7,Type:"Wall",X:560,Y:80,W:40,H:40,Variant:0},{I:8,Type:"Wall",X:40,Y:120,W:40,H:40,Variant:0},{I:9,Type:"Wall",X:160,Y:120,W:120,H:40,Variant:0},{I:10,Type:"Wall",X:400,Y:120,W:40,H:40,Variant:0},{I:11,Type:"Wall",X:480,Y:120,W:40,H:40,Variant:0},{I:12,Type:"Wall",X:640,Y:120,W:120,H:40,Variant:0},{I:13,Type:"Wall",X:40,Y:160,W:80,H:40,Variant:0},{I:14,Type:"Wall",X:320,Y:160,W:40,H:40,Variant:0},{I:15,Type:"Wall",X:400,Y:160,W:40,H:40,Variant:0},{I:16,Type:"Wall",X:480,Y:160,W:40,H:40,Variant:0},{I:17,Type:"Wall",X:560,Y:160,W:120,H:40,Variant:0},{I:18,Type:"Wall",X:720,Y:160,W:40,H:40,Variant:0},{I:19,Type:"Wall",X:80,Y:200,W:280,H:40,Variant:0},{I:20,Type:"Wall",X:560,Y:200,W:40,H:40,Variant:0},{I:21,Type:"Wall",X:720,Y:200,W:40,H:40,Variant:0},{I:22,Type:"Wall",X:0,Y:240,W:40,H:40,Variant:0},{I:23,Type:"Wall",X:80,Y:240,W:40,H:40,Variant:0},{I:24,Type:"Wall",X:240,Y:240,W:40,H:40,Variant:0},{I:25,Type:"Wall",X:320,Y:240,W:280,H:40,Variant:0},{I:26,Type:"Wall",X:640,Y:240,W:120,H:40,Variant:0},{I:27,Type:"Wall",X:80,Y:280,W:120,H:40,Variant:0},{I:28,Type:"Wall",X:240,Y:280,W:40,H:40,Variant:0},{I:29,Type:"Wall",X:320,Y:280,W:40,H:40,Variant:0},{I:30,Type:"Wall",X:560,Y:280,W:40,H:40,Variant:0},{I:31,Type:"Wall",X:680,Y:280,W:80,H:40,Variant:0},{I:32,Type:"Wall",X:0,Y:320,W:120,H:40,Variant:0},{I:33,Type:"Wall",X:240,Y:320,W:40,H:40,Variant:0},{I:34,Type:"Wall",X:320,Y:320,W:40,H:40,Variant:0},{I:35,Type:"Wall",X:400,Y:320,W:240,H:40,Variant:0},{I:36,Type:"Wall",X:160,Y:360,W:120,H:40,Variant:0},{I:37,Type:"Wall",X:320,Y:360,W:40,H:40,Variant:0},{I:38,Type:"Wall",X:600,Y:360,W:120,H:40,Variant:0},{I:39,Type:"Wall",X:0,Y:400,W:120,H:40,Variant:0},{I:40,Type:"Wall",X:160,Y:400,W:40,H:40,Variant:0},{I:41,Type:"Wall",X:240,Y:400,W:40,H:40,Variant:0},{I:42,Type:"Wall",X:320,Y:400,W:240,H:40,Variant:0},{I:43,Type:"Wall",X:680,Y:400,W:80,H:40,Variant:0},{I:44,Type:"Wall",X:160,Y:440,W:40,H:40,Variant:0},{I:45,Type:"Wall",X:240,Y:440,W:40,H:40,Variant:0},{I:46,Type:"Wall",X:520,Y:440,W:40,H:40,Variant:0},{I:47,Type:"Wall",X:600,Y:440,W:40,H:40,Variant:0},{I:48,Type:"Wall",X:720,Y:440,W:40,H:40,Variant:0},{I:49,Type:"Wall",X:40,Y:480,W:160,H:40,Variant:0},{I:50,Type:"Wall",X:240,Y:480,W:160,H:40,Variant:0},{I:51,Type:"Wall",X:440,Y:480,W:40,H:40,Variant:0},{I:52,Type:"Wall",X:520,Y:480,W:40,H:40,Variant:0},{I:53,Type:"Wall",X:600,Y:480,W:40,H:40,Variant:0},{I:54,Type:"Wall",X:680,Y:480,W:80,H:40,Variant:0},{I:55,Type:"Wall",X:40,Y:520,W:40,H:40,Variant:0},{I:56,Type:"Wall",X:360,Y:520,W:40,H:40,Variant:0},{I:57,Type:"Wall",X:440,Y:520,W:40,H:40,Variant:0},{I:58,Type:"Wall",X:520,Y:520,W:40,H:40,Variant:0},{I:59,Type:"Wall",X:600,Y:520,W:40,H:40,Variant:0},{I:60,Type:"Wall",X:680,Y:520,W:40,H:40,Variant:0},{I:61,Type:"Wall",X:120,Y:560,W:200,H:40,Variant:0},{I:62,Type:"Wall",X:440,Y:560,W:40,H:40,Variant:0},{I:63,Type:"Wall",X:600,Y:560,W:40,H:40,Variant:0}],[],[][{I:28,Type:"Exit",X:700,Y:550,W:50,H:50,Variant:0}]]},PredefineLevels,PredefineAlphabet=function{J={Basic:{A:0,0,0,4],[0,4,2,4],[2,4,2,0],[0,2,2,2,a:0,2,2,2],[2,2,2,0],[2,0,0,0],[0,0,0,1],[0,1,2,1,B:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,b:0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,C:2,4,0,4],[0,4,0,0],[0,0,2,0,c:2,2,0,2],[0,2,0,0],[0,0,2,0,D:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0,d:2,4,2,0],[2,0,0,0],[0,0,0,2],[0,2,2,2,E:2,4,0,4],[0,4,0,0],[0,0,2,0],[0,2,2,2,e:0,1,2,1],[2,1,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,F:2,4,0,4],[0,4,0,0],[0,2,1,2,f:2,4,1,4],[1,4,1,0],[0,2,2,2,G:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[1,2,2,2,g:0,-2,2,-2],[2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,H:0,0,0,4],[0,2,2,2],[2,0,2,4,h:0,4,0,0],[0,2,2,2],[2,2,2,0,I:0,0,2,0],[0,4,2,4],[1,0,1,4,i:1,0,0,0],[0,0,0,2,J:0,4,2,4],[2,4,2,1],[2,1,1,0],[1,0,0,1,j:0,-1,1,-2],[1,-2,2,-1],[2,-1,2,2,K:0,0,0,4],[0,2,2,4],[0,2,2,0,k:0,0,0,4],[0,1,2,2],[0,1,2,0,L:0,4,0,0],[0,0,2,0,l:0,4,0,0],[0,0,1,0,M:0,0,0,4],[0,4,1,3],[1,3,2,4],[2,4,2,0,m:0,0,0,2],[0,2,2,2],[2,2,2,0],[1,2,1,0,N:0,0,0,4],[0,4,2,0],[2,0,2,4,n:0,0,0,2],[0,2,2,2],[2,2,2,0,O:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0,o:0,0,2,0],[2,0,2,2],[2,2,0,2],[0,2,0,0,P:0,0,0,4],[0,4,2,4],[2,4,2,2],[2,2,0,2,p:0,-2,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,Q:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[1,1,3,-1,q:2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,R:0,0,0,4],[0,4,2,3],[2,3,0,2],[0,2,2,0,r:0,0,0,2],[0,2,2,2,S:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,s:2,2,0,2],[0,2,0,1],[0,1,2,1],[2,1,2,0],[2,0,0,0,T:0,4,2,4],[1,4,1,0,t:0,3,2,3],[1,4,1,0,U:0,4,0,0],[0,0,2,0],[2,0,2,4,u:0,2,0,0],[0,0,2,0],[2,0,2,2,V:0,4,1,0],[1,0,2,4,v:0,2,1,0],[1,0,2,2,W:0,4,0,0],[0,0,1,2],[1,2,2,0],[2,0,2,4,w:0,2,0,0],[0,0,1,1],[1,1,2,0],[2,0,2,2,X:0,0,2,4],[0,4,2,0,x:0,0,2,2],[0,2,2,0,Y:0,4,1,2],[1,2,2,4],[1,2,1,0,y:0,2,1,0],[2,2,0,-2,Z:0,4,2,4],[2,4,0,0],[0,0,2,0,z:0,2,2,2],[2,2,0,0],[0,0,2,0,1:0,4,1,4],[1,4,1,0],[0,0,2,0,2:2,4,0,4],[2,4,2,2],[0,2,2,2],[0,2,0,0],[2,0,0,0,3:0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,4:2,0,2,4],[2,4,0,2],[0,2,2,2,5:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,6:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,7:0,4,2,4],[2,4,0,0,8:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,2,2,2,9:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,2],[0,2,2,2,0:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,0,2,4,"!":0,0,0,1],[0,2,0,4,"@":2,0,0,0],[0,0,0,4],[0,4,2,4],[2,4,2,1],[2,1,1,1],[1,1,1,3,"#":.5,0,.5,4],[1.5,0,1.5,4],[0,1,2,1],[0,3,2,3,$:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0],[1,4.5,1,-.5,"%":0,0,2,4],[1,0,2,0],[2,0,2,1],[2,1,1,1],[1,1,1,0],[0,3,1,3],[1,3,1,4],[1,4,0,4],[0,4,0,3,"^":0,3,1,4],[1,4,2,3,"&":0,1,2,1],[2,1,2,3],[2,3,0,3],[0,2,2,2],[1,0,1,4,"*":0,1,2,3],[1,1,1,3],[2,1,0,3],[2,2,1,3,"(":2,4,0,3],[0,3,0,1],[0,1,2,0,")":0,4,2,3],[2,3,2,1],[2,1,0,0,".":0,0,1,0],[1,0,1,1],[1,1,0,1],[0,1,0,0,",":0,0,-1,-1,"<":2,3,0,2],[0,2,2,1,">":0,3,2,2],[2,2,0,1,"/":0,0,2,4,"\\":0,4,2,0,"[":2,4,0,4],[0,4,0,0],[0,0,2,0,"]":0,4,2,4],[2,4,2,0],[2,0,0,0,"{":2,4,0,4],[0,4,0,0],[0,0,2,0],[-1,2,1,2,"}":0,4,2,4],[2,4,2,0],[2,0,0,0],[1,2,3,2,"-":0,2,2,2,_:0,0,2,0,":":1,0,1,1],[1,3,1,4,";":1,0,0,-1],[1,3,1,4,"'":1,3,1,4,'"':.5,3,.5,4],[1.5,3,1.5,4,"`":.5,4,1.5,3,"~":0,1.5,.5,2.5],[.5,2.5,1.5,.5],[1.5,.5,2,1.5,"|":1,0,1,4,"?":0,4,2,4],[2,4,2,3],[2,3,0,3],[0,3,0,2],[0,2,2,2],[1,0,1,1," ":0,0,0,0}}},PredefineAlphabet,CreateConnection=function{function t(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip);for(var a=0;a<C.Connections;a++){var n=a;L.push(new WebSocket(ip)),L[n].binaryType="arraybuffer",L[n].OBJ=[],L[n].CUR=[],L[n].DRA=[],L[n].CLI=[],L[n].X=400,L[n].Y=300,L[n].Level=-1,L[n].LocalPlayers=0,t(n)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose},CreateConnection,document.onkeydown=Z.Keypress,canvas.onmousemove=Z.Mouse,canvas.onmousedown=Z.Click,canvas.onmouseup=Z.Unclick,document.oncontextmenu=function(e){e.preventDefault,C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.")};C.Fonts.Spacing=9,C.Fonts.Width=3,C.Fonts.Height=3;}
 * 20) //      __________ _________  _________________
 * 21) //      \___   /  |  \_  __ \/  ___/  _ \_  __ \
 * 22) //       /    /|  |  /|  | \/\___ (  <_> )  | \/
 * 23) //      /_____ \____/ |__|  /____  >____/|__|
 * 24) //      ___.
 * 25) //      \_ |__ ___.__. ___  ______ ___  ___
 * 26) //       | __ <   |  | \  \/ /    \\  \/  /
 * 27) //       | \_\ \___  |  \   /   |  \>    <
 * 28) //       |___  / ____|   \_/|___|  /__/\_ \
 * 29) // >> HOW TO USE <<
 * 30) // 1. Go to cursors.io
 * 31) // 2. Open Inspect Element
 * 32) // 3. Go to the Console tab in inspect element
 * 33) // 4. Paste this whole script into the console, then hit enter
 * 34) document.getElementById('noCursorLock').checked=!0;
 * 35) // New code which destroys the current game first, I'm tired of telling people to go to the editor instead
 * 36) if (location.search.indexOf('editor')==-1){let canvas=document.getElementById('canvas'),wsSend=WebSocket.prototype.send;WebSocket.prototype.send=function{this.close;WebSocket.prototype.send=wsSend;init;};let ev=new MouseEvent('mousedown',{bubbles:true});for(let i=0;i<2;++i){canvas.dispatchEvent(ev)}}else{init};
 * 37) async function init{var ip='ws://'+JSON.parse(await (await fetch('http://api.n.m28.io/endpoint/cursors/findEach')).text).servers['digitalocean-sfo'].ipv4+':2828';
 * 38) var e,t,a,n,l,o,r,s,c,h,p,d,F,T,f,u,m,g,S=document.getElementById("canvas"),y=S.getContext("2d"),C={},W={},B=[],w=[],x=[],v=new Image,U=400,V=300,Y=400,X=300,b=400,I=300,k=[],A=[],O=0,H=!1,D={},M=0,P=[],E=[],L=[],J={},R=["​"],N=-1,q=[],z="Main",j=!1,K=0,G=1e3,$=0,_=0,Q=[],Z={},ee=0,te=!1;function ae(e,t){this.ID=e,this.Action=t,this.Show=function{return MenuMan.currentMenu=this.ID,!0},this.Hide=function{return MenuMan.currentMenu="main",!0}}function ne{if(y.CLS,e&&(2!=e.readyState&&3!=e.readyState||(y.filter="blur(20px) grayscale(100%)")),y.lineWidth=C.Themes[C.ThemeSelected].Misc.LineWidth,1e3==G){function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}B.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),B.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),k.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),A.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(M>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.beginPath,y.globalAlpha=.4,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=2.5,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",x.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,N!=L[0].Level&&L[0].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[1].Level&&N!=L[0].Level&&L[1].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Client",10,590)}else{function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}L[G].OBJ.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),L[G].OBJ.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),L[G].CLI.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),L[G].DRA.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(L[G].LocalPlayers>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.lineWidth=0==G?2.5:1,y.beginPath,y.globalAlpha=.4,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.lineWidth=1==G?2.5:1,y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",L[G].CUR.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,L[(G+1)%2].Level!=L[G].Level&&L[(G+1)%2].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[G].Level&&N!=L[(G+1)%2].Level&&x.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Bot #"+(G+1),10,590)}function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}if(y.drawImage(v,U-5,V-5),e&&(2==e.readyState||3==e.readyState))return y.filter="none",y.fillStyle="#000",y.shadowBlur=0,y.globalAlpha=.2,y.fillRect(0,0,800,600),y.fillStyle="#FFF",y.shadowColor="#FFF",y.globalAlpha=.5,y.shadowBlur=20,y.font="60px NovaSquare",y.fillText("Disconnected",400-y.measureText("Disconnected").width/2,330),y.font="30px NovaSquare",void y.fillText("[ Reconnect? ]",400-y.measureText("[ Reconnect? ]").width/2,370);y.font="12px NovaSquare",y.fillStyle="#FFFFFF",y.strokeStyle="#000000",t("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds",790-y.measureText("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds").width,22),t("FPS: "+W.FPS,10,24),t("Level "+N,10,40),t("Cursors: "+M+" / "+O,400-y.measureText("Cursors: "+M+" / "+O).width/2,590),y.fillStyle=M>30?"#FF9999":"#FFFFFF",t(M>30?"Drawing is not available":"Drawing is available.",400-y.measureText(M>30?"Drawing is not available":"Drawing is available.").width/2,574),C.Misc.Help?(y.fillStyle="#000",y.shadowColor="#000",y.globalAlpha=.1,y.shadowBlur=20,y.fillRect(50,50,700,500),y.globalAlpha=1,y.fillStyle="#FFF",y.strokeStyle="#000",y.shadowBlur=0,y.font="24px NovaSquare",t("Help",400-y.measureText("Help").width/2,94),y.font="12px NovaSquare",t("(Press F11 to hide)",400-y.measureText("(Press F11 to hide)").width/2,110),y.font="24px NovaSquare",t("Keybinds",250-y.measureText("Keybinds").width/2,160),t("Images",550-y.measureText("Images").width/2,160),y.font="12px NovaSquare",t("F1 - Toggles Movement",100,180),t("F2 - Toggles WallHack",100,202),t("F3 - Deploys a minion",100,224),t("F4 - Returns a minion",100,246),t("F5 - Returns all deployed minions",100,268),t("F6 - Toggles Spam Clicking",100,290),t("F7 - Toggles Clicking All Buttons",100,312),t("F8 - Switches views",100,334),t("Right Click - Toggles Spam Clicking",100,400)):t("Press F11 to get help",400-y.measureText("Press F11 to get help").width/2,22),W.Frames++,W.FPS++,setTimeout(function{W.FPS--},1e3),requestAnimationFrame(ne)}function le{return"Thanks for using my script! :)"}v.src="img/cursor.png",y.CLS=function{return y.clearRect(0,0,800,800),!0},requestAnimationFrame(ne);var ie=[];function oe{var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,1),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setUint32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&!C.Misc.AllButtons&&e.send(t)}),e&&1==e.readyState&&e.send(t),setTimeout(function{oe},Math.floor(86400*Math.random+43200))}Z={Log:function(e,t=0){Q.length>=24&&Q.shift,Q.push([e,t]),u.clearRect(0,0,getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2),304),f.width=parseInt(getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2)),f.height=304,u.font="12px NovaSquare";for(var a=0;a<Q.length;a++)u.fillStyle=0==Q[a][1]?"#ccc":1==Q[a][1]?"#ee0":3==Q[a][1]?"#9f9":"#f99",u.fillText(Q[a][0],5,17+12*a)},AllButtons:function{var e=[],t=0,a=1;B.forEach(function(t){"Button"==t.Type&&e.push(t)}),0!=e.length&&(a=Math.floor(e.length/2),function n{if(!C.Misc.AllButtons)return Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,1),void clearTimeout;Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt((e[t].X+e[t].W/2)/2),parseInt((e[t].Y+e[t].H/2)/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt((e[a].X+e[a].W/2)/2),parseInt((e[a].Y+e[a].H/2)/2)],!0,1);var l=new ArrayBuffer(9),i=new DataView(l),o=0;for(i.setUint8(0,2),i.setUint16(1,parseInt((e[t].X+e[t].W/2)/2),!0),i.setUint16(3,parseInt((e[t].Y+e[t].H/2)/2),!0),i.setInt32(5,-1,!0);o<10;o++)L[0].send(l);for(i.setUint16(1,parseInt((e[a].X+e[a].W/2)/2),!0),i.setUint16(3,parseInt((e[a].Y+e[a].H/2)/2),!0),o=0;o<10;o++)L[1].send(l);t++,++a>e.length-1&&(a=Math.floor(e.length/2),t=0),setTimeout(function{n},C.Misc.AllButtonsInterval)})},DOS:function(e,t){var a=[];ie=[];for(var n=0;n<300;n++){a[n]=[],ie[n]=[];for(var l=0;l<400;l++)a[n][l]=0,ie[n][l]=0}-1==t?B.forEach(function(e){if("Wall"==e.Type||"Exit"==e.Type&&1==e.Variant)for(var t=0;t=0&&!(1&a[n][l]);l-=C.Pathfinder.Speed["X-"])a[n][l]|=1,ie[n][l]||(ie[n][l]=[t,n],o.push([l,n]));for(var i=n+C.Pathfinder.Speed["Y+"];i<300&&!(2&a[i][t]);i+=C.Pathfinder.Speed["Y+"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]));for(i=n-C.Pathfinder.Speed["Y-"];i>=0&&!(2&a[i][t]);i-=C.Pathfinder.Speed["Y-"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]))}}),i=o,o=[]},MOVE:function(t,a,n){if(!a.length)return 0;t.Available=!1;var l=new ArrayBuffer(9),i=new DataView(l);i.setUint8(0,C.Pathfinder.Variant),i.setUint16(1,a[0][0],!0),i.setUint16(3,a[0][1],!0),i.setInt32(5,-1,!0),t.send(l);for(var o=0;o<a.length;o++)i.setUint16(1,a[o][0],!0),i.setUint16(3,a[o][1],!0),t.send(l);return t!=e&&(t.Available=!0),a.length},Pathfinder:function(t,a,n=!1,l=-1,i=!0){var o=[];if(-1==l){if(!n&&1!=e.readyState)return!1;Z.DOS(t,l);for(var r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,1!=i||C.Misc.AllButtons||L.forEach(function(e){1!=e.readyState||e.Deployed||Z.MOVE(e,o,n)}),Z.MOVE(e,o,n)}if(!n&&(1!=L[l].readyState||0==L[l].Available||1==L[l].Deployed||C[""]))return!1;Z.DOS(t,l);for(r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,Z.MOVE(L[l],o,n)},SendMessage:function(a){Z.Log('Writing message "'+a.join("")+'"...');var n=0,l=0,i=b,o=I;!function r{if(!(n>a.length-1)){var s=new ArrayBuffer(9),c=new DataView(s),h=a[n];if(h.length>1)return n++,void r;if(c.setUint8(0,3),!J[C.Fonts.Selected][h])return console.warn("Unsupported letter "+h+" in font "+C.Fonts.Selected),t.parentElement.style.borderColor="#f99",t.style.color="#f99",void setTimeout(function{t.parentElement.style.borderColor="#ccc",t.style.color="#ccc"},250);J[C.Fonts.Selected][h].forEach(function(t){console.log(t),c.setUint16(1,i/2+n*C.Fonts.Spacing+t[0]*C.Fonts.Width,!0),c.setUint16(3,o/2-t[1]*C.Fonts.Height,!0),c.setUint16(5,i/2+n*C.Fonts.Spacing+t[2]*C.Fonts.Width,!0),c.setUint16(7,o/2-t[3]*C.Fonts.Height,!0),l%(1+L.length-_)?(L[l%(L.length-_)].send(s),console.log("Clients "+l%(L.length-_))):(e.send(s),console.log("Client")),l++,C.Misc.AllButtons&&(l=0)}),n++," "==h?r:setTimeout(function{r},C.Fonts.Interval)}},Z.Log("Finished writing message.",3)},Keypress:function(e){if(e.keyCode>=65&&e.keyCode<=90||32==e.keyCode||e.keyCode>=48&&e.keyCode<=57&&!e.shiftKey){if(R.length>=64)return;e.shiftKey?R.push(String.fromCharCode(e.keyCode).toUpperCase):R.push(String.fromCharCode(e.keyCode).toLowerCase),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=48&&e.keyCode<=57){if(R.length>=64)return;switch(e.keyCode){case 49:R.push("!");break;case 50:R.push("@");break;case 51:R.push("#");break;case 52:R.push("$");break;case 53:R.push("%");break;case 54:R.push("^");break;case 55:R.push("&");break;case 56:R.push("*");break;case 57:R.push("(");break;case 48:R.push(")");break;default:console.warn("Somehow, you got this hidden error message. Congrats! Anyways, you got this because you typed a number with the shift key down, BUT for some reason its character code wasn't supported. Send this spammy thing below to vnx#6389 on discord:\n"+e)}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(13==e.keyCode)R.shift,Z.SendMessage(R),R=["​"],t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px",t.innerText=R.join("");else if(8==e.keyCode){if(R.length<=1)return;e.shiftKey?R.splice(1,1):e.ctrlKey?R=["​"]:R.pop,R==[]&&(R=["​"]),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=219&&e.keyCode<=222||e.keyCode>=186&&e.keyCode<=191){if(e.shiftKey)switch(e.keyCode){case 219:R.push("{");break;case 220:R.push("\\");break;case 221:R.push("}");break;case 190:R.push(">");break;case 188:R.push("<");break;case 189:R.push("_");break;case 187:R.push("+");break;case 191:R.push("?");break;case 186:R.push(":");break;case 222:R.push('"')}else switch(e.keyCode){case 219:R.push("[");break;case 220:R.push("\\");break;case 221:R.push("]");break;case 190:R.push(".");break;case 188:R.push(",");break;case 189:R.push("-");break;case 187:R.push("=");break;case 191:R.push("/");break;case 186:R.push(";");break;case 222:R.push("'")}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=112&&e.keyCode<=122)switch(e.preventDefault,e.keyCode){case 112:C.Movement=!C.Movement,Z.Log(C.Movement?"Enabled movement.":"Disabled movement.");break;case 113:C.Misc.WallHack=!C.Misc.WallHack,Z.Log(C.Misc.WallHack?"Enabled wallhack.":"Disabled wallhack.");break;case 114:$>=L.length&&($=0),L[$].Deployed=!0,Z.Log("Deployed bot #"+($+1)),$++;break;case 115:--$<0&&($=L.length-1),L[$].Deployed=!1,Z.Pathfinder([parseInt(L[$].X/2),parseInt(L[$].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,$),Z.Log("Returned bot #"+($+1));break;case 116:$=0;var a=0;for(Z.Log("Returning all bots...");a<L.length;a++)1==L[a].Deployed&&(L[a].Deployed=!1,Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,a));Z.Log("Returned all bots.",3);break;case 117:C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.");break;case 118:if(C.Misc.AllButtons=!C.Misc.AllButtons,Z.Log(C.Misc.AllButtons?"Enabled all button clicking.":"Disabled all button clicking."),C.Misc.AllButtons)Z.AllButtons;else for(a=0;a=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2?S.style.cursor="pointer":S.style.cursor="auto"),C.Movement&&1==e.readyState&&!function(e,t,a,n){for(var l=0;lB[l].X&&t>B[l].Y&&a<B[l].X+B[l].W&&n<B[l].Y+B[l].H)return!0;return!1}(U,V,U+1,V+1)&&!H){var a=new ArrayBuffer(9),n=new DataView(a);if(n.setUint8(0,1),n.setUint16(1,U/2,!0),n.setUint16(3,V/2,!0),n.setUint32(5,-1,!0),1==e.readyState&&e.send(a),C.Misc.AllButtons)return;for(var l=0;l<L.length;l++)1!=L[l].readyState||L[l].Deployed||L[l].send(a)}},Click:function(t){if(U=t.layerX,V=t.layerY,Y=U,X=V,1!=e.readyState){if(y.font="30px NovaSquare",V>=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2){function a(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip),L=[];for(var n=0;n<C.Connections;n++){var l=n;L.push(new WebSocket(ip)),L[l].binaryType="arraybuffer",L[l].OBJ=[],L[l].CUR=[],L[l].DRA=[],L[l].CLI=[],L[l].X=400,L[l].Y=300,L[l].Level=-1,L[l].LocalPlayers=0,a(l)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose,S.style.cursor="none",Z.Log("Reconnecting...",3)}requestAnimationFrame(ne),W.Seconds=0}if(1==e.readyState){if(t.shiftKey)H=!0;else{Z.Pathfinder([parseInt(b/2),parseInt(I/2)],[parseInt(U/2),parseInt(V/2)],!1,-1),setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown);var i=new ArrayBuffer(9),o=new DataView(i);o.setUint8(0,2),o.setUint16(1,U/2,!0),o.setUint16(3,V/2,!0),o.setUint32(5,-1,!0);n=0;if(C.Misc.AllButtons)for(n<C.Click.Weight;n++)e.send(i);else setInterval(function{++n<=C.Click.Weight?n%(1+L.length-K)?L[n%(L.length-K)].Deployed||1!=L[n%(L.length-K)].readyState||L[n%(L.length-K)].send(i):e.send(i):clearInterval},C.Click.Interval.Normal)}j=!0}},Unclick:function(e){U=e.layerX,V=e.layerY,H=!1,j=!1},NewObjects:function(e,t,a){switch(BinType=e.getUint8(t),console.log(BinType),BinType){case 0:B[a].Type="Text";break;case 1:B[a].Type="Wall";break;case 2:B[a].Type="Exit";break;case 3:B[a].Type="Plate";break;case 4:B[a].Type="Button";break;default:B[a].Type="Unknown"}if("Text"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].Size=e.getUint8(t+5),B[a].Centered=!!e.getUint8(t+6),t+=7;var n="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(n+=String.fromCharCode(i),i=0),0!=i&&(n+=String.fromCharCode(i));return B[a].Text=n,B[a].Variant=0,t+1}if("Wall"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0);for(n=e.getUint32(t+9,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:"FF0000"==n.toUpperCase?B[a].Variant=2:B[a].Variant=0,t+13}if("Exit"==B[a].Type)return B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase||"FF0000"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase||"FFFF00"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase||"00FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase||"0000FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase||"FF00FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=7,t+15}if("Button"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=0,t+15}console.log("unknown object thing"),B[a].X=e.getUint16(t+1,!0)||0,B[a].Y=e.getUint16(t+3,!0)||0,B[a].W=e.getUint16(t+5,!0)||100,B[a].H=e.getUint16(t+7,!0)||100},BNewObjects:function(e,t,a,n){switch(BinType=e.getUint8(t),BinType){case 0:L[n].OBJ[a].Type="Text";break;case 1:L[n].OBJ[a].Type="Wall";break;case 2:L[n].OBJ[a].Type="Exit";break;case 3:L[n].OBJ[a].Type="Plate";break;case 4:L[n].OBJ[a].Type="Button";break;default:L[n].OBJ[a].Type="Unknown"}if("Text"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].Size=e.getUint8(t+5),L[n].OBJ[a].Centered=!!e.getUint8(t+6),t+=7;var l="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(l+=String.fromCharCode(i),i=0),0!=i&&(l+=String.fromCharCode(i));return L[n].OBJ[a].Text=l,L[n].OBJ[a].Variant=0,t+1}if("Wall"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0);for(l=e.getUint32(t+9,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=2:L[n].OBJ[a].Variant=0,t+13}if("Exit"==L[n].OBJ[a].Type)return L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase||"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase||"FFFF00"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase||"00FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase||"0000FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase||"FF00FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=7,t+15}if("Button"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=0,t+15}L[n].OBJ[a].X=e.getUint16(t+1,!0)||0,L[n].OBJ[a].Y=e.getUint16(t+3,!0)||0,L[n].OBJ[a].W=e.getUint16(t+5,!0)||100,L[n].OBJ[a].H=e.getUint16(t+7,!0)||100},WSMessageS00:function(e){return ee=e.getUint32(1,!0),Z.Log("Your ID is "+ee+"."),!0},CursorDrawPos:function(e,t,a){var n=t-e,l=(new Date-a)/C.Cursor.AnimationDelay,i=0>=l?0:1<=l?1:l;return e+i*i*(3-2*i)*n},WSMessageS01:function(t,a){H&&!C.Click.HoldToSpam&&function{var t=new ArrayBuffer(9),a=new DataView(t);if(a.setUint8(0,3),a.setUint16(1,parseInt(Y/2),!0),a.setUint16(3,parseInt(X/2),!0),a.setUint16(5,parseInt(U/2),!0),a.setUint16(7,parseInt(V/2),!0),e.send(t),1e3==G)for(var n=0;n<L.length;n++)1!=L[n].readyState||L[n].Deployed||L[n].Level!=N||C.Misc.AllButtons||L[n].send(t)},C.Movement&&(Y=U,X=V);var n=t.getUint16(1,!0),l=new Array(512);M=t.getUint16(1,!0);for(var i=0;i<n;i++){var o=t.getUint32(3+8*i,!0),r=t.getUint16(7+8*i,!0),s=t.getUint16(9+8*i,!0);x[o]||(x[o]={I:o,OX:2*r+6,OY:2*s,X:2*r+6,Y:2*s+6,T:new Date}),x[o]={I:o,OX:Z.CursorDrawPos(x[o].OX,x[o].X,x[o].T),OY:Z.CursorDrawPos(x[o].OY,x[o].Y,x[o].T),X:2*r+6,Y:2*s,T:new Date},l[o]=!0,o==ee&&(b=x[o].OX,I=x[o].OY,RX=2*r+6,RY=2*s)}for(i=0;i<x.length;i++)x[i]&&!l[i]&&(x[i]=void 0);var c=3+8*n,h=t.getUint16(c,!0);for(i=0;i<h;i++){r=t.getUint16(c+2+4*i,!0),s=t.getUint16(c+4+4*i,!0);setTimeout(function{k.push({X:2*r-10,Y:2*s,T:new Date,L:N})},C.Click.Delay),setTimeout(function{k.shift},C.Click.Expiration)}c=c+4+4*h;var p=t.getUint16(c-2,!0);p>0&&console.log("wallupdates:"+p);for(i=0;i<p;i++){o=t.getUint32(c,!0);for(var d=0;d<B.length;d++)B[d].I==o&&"Wall"==B[d].Type&&B.splice(d,1);c+=4}c+=2;var F=t.getUint16(c-2,!0);F>0&&console.log("mapupdates:"+F);for(i=0;i<F;i++){o=t.getUint32(c,!0);function T{for(var e=0;e<B.length;e++)if(B[e].I==o)return e;return B.push({I:o}),B.length-1}var f=T;c+=4,c=Z.NewObjects(t,c,f)}var u=t.getUint16(c,!0);for(i=0;i<u;i++){var m=t.getUint16(c+2+8*i,!0),g=t.getUint16(c+4+8*i,!0),S=t.getUint16(c+6+8*i,!0),y=t.getUint16(c+8+8*i,!0);A.push({X:[2*m,2*S],Y:[2*g,2*y],T:new Date,L:N}),setTimeout(function{A.shift},C.Drawing.Expiration)}return c=c+2+8*u,a.data.byteLength>=c+4&&(O=t.getUint32(c,!0)),!0},WSMessageS04:function(t){if(C.Bots.NewLevelReturn){C.Misc.AllButtons&&Z.Log("Disabled all button clicking."),C.Misc.AllButtons=!1;for(var a=0;a<L.length;a++)1==L[a].readyState&&Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!0,a)}B=[],x=[],U=2*t.getUint16(1,!0),V=2*t.getUint16(3,!0),Y=U,X=V,A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=t.getUint16(5,!0),OFF=7;for(a=0;a<Objects;a++)B.push({I:t.getUint32(OFF,!0)}),OFF+=4,OFF=Z.NewObjects(t,OFF,B.length-1);e.Available=!1,L[0].Available=!1,L[1].Available=!1,setTimeout(function{e.Available=!0,L[0].Available=!0,L[1].Available=!0},1e3),P=[],B.forEach(function(e){("Wall"==e.Type&&0==e.Variant||"Text"==e.Type||"Exit"==e.Type)&&P.push(e)});var l=N;if(N>62)N++;else{N="??";for(a=0;a<E.length;a++)JSON.stringify(E[a])===JSON.stringify(P)&&(N=a);"??"==N&&(N=l+1)}return n.innerText="Level "+N,Z.Log(l>N?"You went back a level.":l==N?"You teleported back to the spawn.":"You advanced a level",l<N?3:0),!0},WSMessageS05:function(t){if(C.Misc.WallHack&&e.Available&&!(e.bufferedAmount>0)&&(e.Available=!1,setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown),Z.Pathfinder([parseInt(RX/2-3),parseInt(RY/2)],[parseInt(U/2),parseInt(V/2)],!1,-1,!C.Pathfinder.CalculateAll),C.Pathfinder.CalculateAll)){for(var a=0;a<L.length;a++)L[a].Level==N&&0==L[a].Deployed&&Z.Pathfinder([parseInt(L[a].X),parseInt(L[a].Y)],[parseInt(U/2),parseInt(V/2)],!1,a);return!1}},WSMessageSplitter:function(e){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSMessageS00(ABC):1==ABC.getUint8(0)?Z.WSMessageS01(ABC,e):4==ABC.getUint8(0)?Z.WSMessageS04(ABC):5==ABC.getUint8(0)&&Z.WSMessageS05(ABC)},WSOpen:function(e){Z.Log("Client connected!",3),o.style.color="#9f9",o.innerText="Connected",console.log("%cWS: %cClient Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSClose:function(e){Z.Log("Client disconnected.",2),o.style.color="#f99",o.innerText="Disconnected",S.style.cursor="auto",console.log("%cWS: %cClient Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;"),L.forEach(function(e){e.close})},WSBOpen:function(e,t){Z.Log("Bot #"+t+" connected!",3),0==t?(h.style.color="#9f9",h.innerText="Connected"):1==t&&(BotStateDisplay2.style.color="#9f9",BotStateDisplay2.innerText="Connected"),console.log("%cWS: %cNew Bot Client Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSBClose:function(e,t){Z.Log("Bot #"+t+" disconnected.",2),0==t?(h.style.color="#f99",h.innerText="Disconnected"):1==t&&(BotStateDisplay2.style.color="#f99",BotStateDisplay2.innerText="Disconnected"),_++,console.log("%cWS: %cA Bot Client Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;")},WSBMessageS00:function(e,t){return L[t].I=e.getUint32(1,!0),q.push(e.getUint32(1,!0)),Z.Log("Bot #"+(t+1)+"'s ID is "+e.getUint32(1,!0)),!0},WSBMessageS01:function(e,t){var a,n,l=e.getUint16(1,!0),i=new Array(512);M=e.getUint16(1,!0),H&&!C.Click.HoldToSpam&&(a=new ArrayBuffer(9),(n=new DataView(a)).setUint8(0,3),n.setUint16(1,parseInt(Y/2),!0),n.setUint16(3,parseInt(X/2),!0),n.setUint16(5,parseInt(U/2),!0),n.setUint16(7,parseInt(V/2),!0),1e3!=G&&1==L[t].readyState&&!L[t].Deployed&&L[t].Level==L[G].Level&&!C.Misc.AllButtons&&L[t].send(a)),C.Movement&&(L[t].OX=U,L[t].OY=V);for(var o=0;o<l;o++){var r=e.getUint32(3+8*o,!0),s=e.getUint16(7+8*o,!0),c=e.getUint16(9+8*o,!0);L[t].CUR[r]||(L[t].CUR[r]={I:r,OX:2*s+6,OY:2*c,X:2*s+6,Y:2*c+6,T:new Date}),L[t].CUR[r]={I:r,OX:Z.CursorDrawPos(L[t].CUR[r].OX,L[t].CUR[r].X,L[t].CUR[r].T),OY:Z.CursorDrawPos(L[t].CUR[r].OY,L[t].CUR[r].Y,L[t].CUR[r].T),X:2*s+6,Y:2*c,T:new Date},i[r]=!0,r==L[t].I&&(L[t].X=L[t].CUR[r].OX,L[t].Y=L[t].CUR[r].OY,L[t].RX=2*s+6,L[t].RY=2*c)}for(o=0;o<L[t].CUR.length;o++)L[t].CUR[o]&&!i[o]&&(L[t].CUR[o]=void 0);var h=3+8*l,p=e.getUint16(h,!0);for(o=0;o<p;o++){s=e.getUint16(h+2+4*o,!0),c=e.getUint16(h+4+4*o,!0);setTimeout(function{L[t].CLI.push({X:2*s-10,Y:2*c,T:new Date,L:N})},C.Click.Delay),setTimeout(function{L[t].CLI.shift},C.Click.Expiration)}h=h+4+4*p;var d=e.getUint16(h-2,!0);for(o=0;o<d;o++){r=e.getUint32(h,!0);for(var F=0;F<L[t].OBJ.length;F++)L[t].OBJ[F].I==r&&L[t].OBJ.splice(F,1);h+=4}h+=2;var T=e.getUint16(h-2,!0);for(o=0;o<T;o++){r=e.getUint32(h,!0);function f{for(var e=0;e<L[t].OBJ.length;e++)if(L[t].OBJ[e].I==r)return e;return L[t].OBJ.push({I:r}),L[t].OBJ.length-1}var u=f;h+=4,h=Z.BNewObjects(e,h,u,t)}var m=e.getUint16(h,!0);for(o=0;o<m;o++){var g=e.getUint16(h+2+8*o,!0),S=e.getUint16(h+4+8*o,!0),y=e.getUint16(h+6+8*o,!0),W=e.getUint16(h+8+8*o,!0);L[t].DRA.push({X:[2*g,2*y],Y:[2*S,2*W],T:new Date,L:N}),setTimeout(function{L[t].DRA.shift},C.Drawing.Expiration)}return!0},WSBMessageS04:function(e,t){L[t].OBJ=[],L[t].CUR=[],L[t].X=2*e.getUint16(1,!0),L[t].Y=2*e.getUint16(3,!0),L[t].OX=2*e.getUint16(1,!0),L[t].OY=2*e.getUint16(3,!0),A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=e.getUint16(5,!0),OFF=7;for(var a=0;a<Objects;a++)L[t].OBJ.push({I:e.getUint32(OFF,!0)}),OFF+=4,OFF=Z.BNewObjects(e,OFF,L[t].OBJ.length-1,t);L[t].OBJLAYOUT=[],L[t].OBJ.forEach(function(e){("Wall"==e.Type&&0==e.Variant||"Text"==e.Type||"Exit"==e.Type)&&L[t].OBJLAYOUT.push(e)});var n=L[t].Level;if(L[t].Level>62)L[t].Level++;else{L[t].Level="??";for(a=0;a<E.length;a++)JSON.stringify(E[a])===JSON.stringify(L[t].OBJLAYOUT)&&(L[t].Level=a);"??"==L[t].Level&&(L[t].Level=n+1)}return 0==t?s.innerText="Level "+L[t].Level:1==t&&(d.innerText="Level "+L[t].Level),Z.Log(n>L[t].Level?"Bot #"+(t+1)+" went back a level.":n==L[t].Level?"Bot #"+(t+1)+" teleported back to the spawn.":"Bot #"+(t+1)+" advanced a level",n<L[t].Level?3:0),!0},WSBMessageSplitter:function(e,t){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSBMessageS00(ABC,t):1==ABC.getUint8(0)?Z.WSBMessageS01(ABC,t):4==ABC.getUint8(0)&&Z.WSBMessageS04(ABC,t)}},FixCanvas=function{S.style.width="800px",S.style.height="600px",S.width=800,S.height=600,S.style.backgroundColor="#fefefe"},FixCanvas,CheckForHost=function{"http://cursors.io"!=window.origin&&alert("The script has detected you're not playing on cursors.io. Please do not try using any other sites with this script. Nothing is stopping you, but be warned, the script will be VERY BUGGY, and very likely not even work at all.")},CheckForHost,CreateGUI=function{var e=document.getElementsByTagName("div");e[3].style.display="none",e[4].style.display="none",e[1].style.border="2px solid #ccc",e[1].style.marginBottom="5px",e[1].style.borderRadius="10px",S.style.borderRadius="7px",S.style.cursor="none",ae=document.createElement("div"),document.body.appendChild(ae),ae.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: 800px; margin: 5px auto;";var i=document.createElement("div");t=document.createElement("p"),i.style.cssText="width: 750px; margin-left: 25px; transition: 0.25s;",ae.appendChild(i),t.style.cssText="font-family: NovaSquare; color: #ccc; margin-left: 10px; transition: 0.25s; font-size: "+(R.length>20?24-(R.length-20)+"px;":"24px;"),i.appendChild(t),t.innerText="​",BotView=document.createElement("div"),BotView.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: 5px;",document.body.appendChild(BotView),(a=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(a),(r=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(r),(p=document.createElement("div")).style.cssText="height: 100px;",BotView.appendChild(p),(l=document.createElement("div")).innerText="You",l.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(l),(n=document.createElement("div")).innerText="Level 0",n.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(n),(o=document.createElement("div")).innerText="Connecting",o.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",a.appendChild(o),(c=document.createElement("div")).innerText="Bot #1",c.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(c),(s=document.createElement("div")).innerText="Level 0",s.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(s),(h=document.createElement("div")).innerText="Connecting",h.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",r.appendChild(h),(F=document.createElement("div")).innerText="Bot #2",F.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(F),(d=document.createElement("div")).innerText="Level 0",d.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(d),BotStateDisplay2=document.createElement("div"),BotStateDisplay2.innerText="Connecting",BotStateDisplay2.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",p.appendChild(BotStateDisplay2),r.style.cursor="pointer",a.style.cursor="pointer",p.style.cursor="pointer",r.onclick=function{G=0},p.onclick=function{G=1},a.onclick=function{G=1e3},(T=document.createElement("div")).style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: calc(50% + 415px);",document.body.appendChild(T),(f=document.createElement("canvas")).style.cssText="height: 304px; width: calc(50vw - 425px); border-radius: 7px;",T.appendChild(f),u=f.getContext("2d")},CreateGUI,PredefineSettings=function{C={Themes:{Basic:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:-1,0,Wall:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Exit:-1,0],[-1,0,Plate:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Button:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3,"#ff9900"],ClickColor:"#000",DrawColor:"#000",DrawAlpha:.3,DrawWidth:1}},Shaded:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:",Wall:",Exit:",Plate:",Button:"},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3],ClickColor:"#000"}}},ThemeSelected:"Basic",Movement:!0,Connections:2,PageSelected:"Fonts",PageHelp:!1,Fonts:{Selected:"Basic",Width:1,Height:1,Spacing:3,Interval:150,Weight:1},Pathfinder:{Cooldown:200,Variant:1,CalculateAll:!1,Speed:{"X+":1,"X-":1,"Y+":1,"Y-":1}},Click:{Delay:0,Weight:10,SpamClicking:!1,Interval:{Normal:5,Spam:25},HoldToSpam:!1,Expiration:300},Drawing:{Expiration:1e4},Cursor:{IDs:!0,Offset:[0,0],AnimationDelay:100},Bots:{NewLevelReturn:!0},Misc:{WallHack:!0,Help:!1,Debug:!0,RightClickGUI:!0,AllButtons:!1,AllButtonsInterval:333}}},PredefineSettings,PredefineStats=function{W={Frames:0,Seconds:0,FPS:0}},PredefineStats,setInterval(function{W.Seconds++},1e3),setInterval(function{if(C.Click.SpamClicking||C.Click.HoldToSpam&&j&&!H){var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,2),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setInt32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&e.Available&&e.Level==N&&e.send(t)}),1==e.readyState&&e.Available&&e.send(t)}},C.Click.Interval.Spam),setInterval(function{"​"!=R[0]&&R.unshift("​")},50),setInterval(function{s.style.color=L[0].Level<N||L[0].Level<L[1].Level?"#ee0":"#ccc",d.style.color=L[1].Level<N||L[1].Level<L[0].Level?"#ee0":"#ccc",n.style.color=L[0].Level>N||L[1].Level>N?"#f99":"#ccc"},100),oe,PredefineLevels=function{E=[[{I:0,Type:"Text",X:400,Y:100,Size:68,Centered:!0,Text:"Welcome",Variant:0},{I:1,Type:"Text",X:400,Y:150,Size:20,Centered:!0,Text:"You participate in this experiment with your mouse cursor",Variant:0},{I:2,Type:"Text",X:400,Y:184,Size:20,Centered:!0,Text:"Move to the next level by putting your mouse on the green area",Variant:0},{I:3,Type:"Exit",X:600,Y:350,W:100,H:100,Variant:0}],[{I:0,Type:"Exit",X:0,Y:280,W:40,H:40,Variant:0},{I:3,Type:"Wall",X:0,Y:0,W:520,H:40,Variant:0},{I:4,Type:"Wall",X:560,Y:40,W:240,H:40,Variant:0},{I:5,Type:"Wall",X:40,Y:80,W:160,H:40,Variant:0},{I:6,Type:"Wall",X:240,Y:80,W:280,H:40,Variant:0},{I:7,Type:"Wall",X:560,Y:80,W:40,H:40,Variant:0},{I:8,Type:"Wall",X:40,Y:120,W:40,H:40,Variant:0},{I:9,Type:"Wall",X:160,Y:120,W:120,H:40,Variant:0},{I:10,Type:"Wall",X:400,Y:120,W:40,H:40,Variant:0},{I:11,Type:"Wall",X:480,Y:120,W:40,H:40,Variant:0},{I:12,Type:"Wall",X:640,Y:120,W:120,H:40,Variant:0},{I:13,Type:"Wall",X:40,Y:160,W:80,H:40,Variant:0},{I:14,Type:"Wall",X:320,Y:160,W:40,H:40,Variant:0},{I:15,Type:"Wall",X:400,Y:160,W:40,H:40,Variant:0},{I:16,Type:"Wall",X:480,Y:160,W:40,H:40,Variant:0},{I:17,Type:"Wall",X:560,Y:160,W:120,H:40,Variant:0},{I:18,Type:"Wall",X:720,Y:160,W:40,H:40,Variant:0},{I:19,Type:"Wall",X:80,Y:200,W:280,H:40,Variant:0},{I:20,Type:"Wall",X:560,Y:200,W:40,H:40,Variant:0},{I:21,Type:"Wall",X:720,Y:200,W:40,H:40,Variant:0},{I:22,Type:"Wall",X:0,Y:240,W:40,H:40,Variant:0},{I:23,Type:"Wall",X:80,Y:240,W:40,H:40,Variant:0},{I:24,Type:"Wall",X:240,Y:240,W:40,H:40,Variant:0},{I:25,Type:"Wall",X:320,Y:240,W:280,H:40,Variant:0},{I:26,Type:"Wall",X:640,Y:240,W:120,H:40,Variant:0},{I:27,Type:"Wall",X:80,Y:280,W:120,H:40,Variant:0},{I:28,Type:"Wall",X:240,Y:280,W:40,H:40,Variant:0},{I:29,Type:"Wall",X:320,Y:280,W:40,H:40,Variant:0},{I:30,Type:"Wall",X:560,Y:280,W:40,H:40,Variant:0},{I:31,Type:"Wall",X:680,Y:280,W:80,H:40,Variant:0},{I:32,Type:"Wall",X:0,Y:320,W:120,H:40,Variant:0},{I:33,Type:"Wall",X:240,Y:320,W:40,H:40,Variant:0},{I:34,Type:"Wall",X:320,Y:320,W:40,H:40,Variant:0},{I:35,Type:"Wall",X:400,Y:320,W:240,H:40,Variant:0},{I:36,Type:"Wall",X:160,Y:360,W:120,H:40,Variant:0},{I:37,Type:"Wall",X:320,Y:360,W:40,H:40,Variant:0},{I:38,Type:"Wall",X:600,Y:360,W:120,H:40,Variant:0},{I:39,Type:"Wall",X:0,Y:400,W:120,H:40,Variant:0},{I:40,Type:"Wall",X:160,Y:400,W:40,H:40,Variant:0},{I:41,Type:"Wall",X:240,Y:400,W:40,H:40,Variant:0},{I:42,Type:"Wall",X:320,Y:400,W:240,H:40,Variant:0},{I:43,Type:"Wall",X:680,Y:400,W:80,H:40,Variant:0},{I:44,Type:"Wall",X:160,Y:440,W:40,H:40,Variant:0},{I:45,Type:"Wall",X:240,Y:440,W:40,H:40,Variant:0},{I:46,Type:"Wall",X:520,Y:440,W:40,H:40,Variant:0},{I:47,Type:"Wall",X:600,Y:440,W:40,H:40,Variant:0},{I:48,Type:"Wall",X:720,Y:440,W:40,H:40,Variant:0},{I:49,Type:"Wall",X:40,Y:480,W:160,H:40,Variant:0},{I:50,Type:"Wall",X:240,Y:480,W:160,H:40,Variant:0},{I:51,Type:"Wall",X:440,Y:480,W:40,H:40,Variant:0},{I:52,Type:"Wall",X:520,Y:480,W:40,H:40,Variant:0},{I:53,Type:"Wall",X:600,Y:480,W:40,H:40,Variant:0},{I:54,Type:"Wall",X:680,Y:480,W:80,H:40,Variant:0},{I:55,Type:"Wall",X:40,Y:520,W:40,H:40,Variant:0},{I:56,Type:"Wall",X:360,Y:520,W:40,H:40,Variant:0},{I:57,Type:"Wall",X:440,Y:520,W:40,H:40,Variant:0},{I:58,Type:"Wall",X:520,Y:520,W:40,H:40,Variant:0},{I:59,Type:"Wall",X:600,Y:520,W:40,H:40,Variant:0},{I:60,Type:"Wall",X:680,Y:520,W:40,H:40,Variant:0},{I:61,Type:"Wall",X:120,Y:560,W:200,H:40,Variant:0},{I:62,Type:"Wall",X:440,Y:560,W:40,H:40,Variant:0},{I:63,Type:"Wall",X:600,Y:560,W:40,H:40,Variant:0}],[],[][{I:28,Type:"Exit",X:700,Y:550,W:50,H:50,Variant:0}]]},PredefineLevels,PredefineAlphabet=function{J={Basic:{A:0,0,0,4],[0,4,2,4],[2,4,2,0],[0,2,2,2,a:0,2,2,2],[2,2,2,0],[2,0,0,0],[0,0,0,1],[0,1,2,1,B:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,b:0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,C:2,4,0,4],[0,4,0,0],[0,0,2,0,c:2,2,0,2],[0,2,0,0],[0,0,2,0,D:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0,d:2,4,2,0],[2,0,0,0],[0,0,0,2],[0,2,2,2,E:2,4,0,4],[0,4,0,0],[0,0,2,0],[0,2,2,2,e:0,1,2,1],[2,1,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,F:2,4,0,4],[0,4,0,0],[0,2,1,2,f:2,4,1,4],[1,4,1,0],[0,2,2,2,G:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[1,2,2,2,g:0,-2,2,-2],[2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,H:0,0,0,4],[0,2,2,2],[2,0,2,4,h:0,4,0,0],[0,2,2,2],[2,2,2,0,I:0,0,2,0],[0,4,2,4],[1,0,1,4,i:1,0,0,0],[0,0,0,2,J:0,4,2,4],[2,4,2,1],[2,1,1,0],[1,0,0,1,j:0,-1,1,-2],[1,-2,2,-1],[2,-1,2,2,K:0,0,0,4],[0,2,2,4],[0,2,2,0,k:0,0,0,4],[0,1,2,2],[0,1,2,0,L:0,4,0,0],[0,0,2,0,l:0,4,0,0],[0,0,1,0,M:0,0,0,4],[0,4,1,3],[1,3,2,4],[2,4,2,0,m:0,0,0,2],[0,2,2,2],[2,2,2,0],[1,2,1,0,N:0,0,0,4],[0,4,2,0],[2,0,2,4,n:0,0,0,2],[0,2,2,2],[2,2,2,0,O:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0,o:0,0,2,0],[2,0,2,2],[2,2,0,2],[0,2,0,0,P:0,0,0,4],[0,4,2,4],[2,4,2,2],[2,2,0,2,p:0,-2,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,Q:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[1,1,3,-1,q:2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,R:0,0,0,4],[0,4,2,3],[2,3,0,2],[0,2,2,0,r:0,0,0,2],[0,2,2,2,S:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,s:2,2,0,2],[0,2,0,1],[0,1,2,1],[2,1,2,0],[2,0,0,0,T:0,4,2,4],[1,4,1,0,t:0,3,2,3],[1,4,1,0,U:0,4,0,0],[0,0,2,0],[2,0,2,4,u:0,2,0,0],[0,0,2,0],[2,0,2,2,V:0,4,1,0],[1,0,2,4,v:0,2,1,0],[1,0,2,2,W:0,4,0,0],[0,0,1,2],[1,2,2,0],[2,0,2,4,w:0,2,0,0],[0,0,1,1],[1,1,2,0],[2,0,2,2,X:0,0,2,4],[0,4,2,0,x:0,0,2,2],[0,2,2,0,Y:0,4,1,2],[1,2,2,4],[1,2,1,0,y:0,2,1,0],[2,2,0,-2,Z:0,4,2,4],[2,4,0,0],[0,0,2,0,z:0,2,2,2],[2,2,0,0],[0,0,2,0,1:0,4,1,4],[1,4,1,0],[0,0,2,0,2:2,4,0,4],[2,4,2,2],[0,2,2,2],[0,2,0,0],[2,0,0,0,3:0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,4:2,0,2,4],[2,4,0,2],[0,2,2,2,5:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,6:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,7:0,4,2,4],[2,4,0,0,8:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,2,2,2,9:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,2],[0,2,2,2,0:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,0,2,4,"!":0,0,0,1],[0,2,0,4,"@":2,0,0,0],[0,0,0,4],[0,4,2,4],[2,4,2,1],[2,1,1,1],[1,1,1,3,"#":.5,0,.5,4],[1.5,0,1.5,4],[0,1,2,1],[0,3,2,3,$:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0],[1,4.5,1,-.5,"%":0,0,2,4],[1,0,2,0],[2,0,2,1],[2,1,1,1],[1,1,1,0],[0,3,1,3],[1,3,1,4],[1,4,0,4],[0,4,0,3,"^":0,3,1,4],[1,4,2,3,"&":0,1,2,1],[2,1,2,3],[2,3,0,3],[0,2,2,2],[1,0,1,4,"*":0,1,2,3],[1,1,1,3],[2,1,0,3],[2,2,1,3,"(":2,4,0,3],[0,3,0,1],[0,1,2,0,")":0,4,2,3],[2,3,2,1],[2,1,0,0,".":0,0,1,0],[1,0,1,1],[1,1,0,1],[0,1,0,0,",":0,0,-1,-1,"<":2,3,0,2],[0,2,2,1,">":0,3,2,2],[2,2,0,1,"/":0,0,2,4,"\\":0,4,2,0,"[":2,4,0,4],[0,4,0,0],[0,0,2,0,"]":0,4,2,4],[2,4,2,0],[2,0,0,0,"{":2,4,0,4],[0,4,0,0],[0,0,2,0],[-1,2,1,2,"}":0,4,2,4],[2,4,2,0],[2,0,0,0],[1,2,3,2,"-":0,2,2,2,_:0,0,2,0,":":1,0,1,1],[1,3,1,4,";":1,0,0,-1],[1,3,1,4,"'":1,3,1,4,'"':.5,3,.5,4],[1.5,3,1.5,4,"`":.5,4,1.5,3,"~":0,1.5,.5,2.5],[.5,2.5,1.5,.5],[1.5,.5,2,1.5,"|":1,0,1,4,"?":0,4,2,4],[2,4,2,3],[2,3,0,3],[0,3,0,2],[0,2,2,2],[1,0,1,1," ":0,0,0,0}}},PredefineAlphabet,CreateConnection=function{function t(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip);for(var a=0;a<C.Connections;a++){var n=a;L.push(new WebSocket(ip)),L[n].binaryType="arraybuffer",L[n].OBJ=[],L[n].CUR=[],L[n].DRA=[],L[n].CLI=[],L[n].X=400,L[n].Y=300,L[n].Level=-1,L[n].LocalPlayers=0,t(n)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose},CreateConnection,document.onkeydown=Z.Keypress,canvas.onmousemove=Z.Mouse,canvas.onmousedown=Z.Click,canvas.onmouseup=Z.Unclick,document.oncontextmenu=function(e){e.preventDefault,C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.")};C.Fonts.Spacing=9,C.Fonts.Width=3,C.Fonts.Height=3;}
 * 1) // >> HOW TO USE <<
 * 2) // 1. Go to cursors.io
 * 3) // 2. Open Inspect Element
 * 4) // 3. Go to the Console tab in inspect element
 * 5) // 4. Paste this whole script into the console, then hit enter
 * 6) document.getElementById('noCursorLock').checked=!0;
 * 7) // New code which destroys the current game first, I'm tired of telling people to go to the editor instead
 * 8) if (location.search.indexOf('editor')==-1){let canvas=document.getElementById('canvas'),wsSend=WebSocket.prototype.send;WebSocket.prototype.send=function{this.close;WebSocket.prototype.send=wsSend;init;};let ev=new MouseEvent('mousedown',{bubbles:true});for(let i=0;i<2;++i){canvas.dispatchEvent(ev)}}else{init};
 * 9) async function init{var ip='ws://'+JSON.parse(await (await fetch('http://api.n.m28.io/endpoint/cursors/findEach')).text).servers['digitalocean-sfo'].ipv4+':2828';
 * 10) var e,t,a,n,l,o,r,s,c,h,p,d,F,T,f,u,m,g,S=document.getElementById("canvas"),y=S.getContext("2d"),C={},W={},B=[],w=[],x=[],v=new Image,U=400,V=300,Y=400,X=300,b=400,I=300,k=[],A=[],O=0,H=!1,D={},M=0,P=[],E=[],L=[],J={},R=["​"],N=-1,q=[],z="Main",j=!1,K=0,G=1e3,$=0,_=0,Q=[],Z={},ee=0,te=!1;function ae(e,t){this.ID=e,this.Action=t,this.Show=function{return MenuMan.currentMenu=this.ID,!0},this.Hide=function{return MenuMan.currentMenu="main",!0}}function ne{if(y.CLS,e&&(2!=e.readyState&&3!=e.readyState||(y.filter="blur(20px) grayscale(100%)")),y.lineWidth=C.Themes[C.ThemeSelected].Misc.LineWidth,1e3==G){function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}B.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),B.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),k.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),A.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(M>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.beginPath,y.globalAlpha=.4,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=2.5,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",x.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,N!=L[0].Level&&L[0].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[1].Level&&N!=L[0].Level&&L[1].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Client",10,590)}else{function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}L[G].OBJ.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),L[G].OBJ.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),L[G].CLI.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),L[G].DRA.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(L[G].LocalPlayers>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.lineWidth=0==G?2.5:1,y.beginPath,y.globalAlpha=.4,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.lineWidth=1==G?2.5:1,y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",L[G].CUR.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,L[(G+1)%2].Level!=L[G].Level&&L[(G+1)%2].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[G].Level&&N!=L[(G+1)%2].Level&&x.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Bot #"+(G+1),10,590)}function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}if(y.drawImage(v,U-5,V-5),e&&(2==e.readyState||3==e.readyState))return y.filter="none",y.fillStyle="#000",y.shadowBlur=0,y.globalAlpha=.2,y.fillRect(0,0,800,600),y.fillStyle="#FFF",y.shadowColor="#FFF",y.globalAlpha=.5,y.shadowBlur=20,y.font="60px NovaSquare",y.fillText("Disconnected",400-y.measureText("Disconnected").width/2,330),y.font="30px NovaSquare",void y.fillText("[ Reconnect? ]",400-y.measureText("[ Reconnect? ]").width/2,370);y.font="12px NovaSquare",y.fillStyle="#FFFFFF",y.strokeStyle="#000000",t("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds",790-y.measureText("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds").width,22),t("FPS: "+W.FPS,10,24),t("Level "+N,10,40),t("Cursors: "+M+" / "+O,400-y.measureText("Cursors: "+M+" / "+O).width/2,590),y.fillStyle=M>30?"#FF9999":"#FFFFFF",t(M>30?"Drawing is not available":"Drawing is available.",400-y.measureText(M>30?"Drawing is not available":"Drawing is available.").width/2,574),C.Misc.Help?(y.fillStyle="#000",y.shadowColor="#000",y.globalAlpha=.1,y.shadowBlur=20,y.fillRect(50,50,700,500),y.globalAlpha=1,y.fillStyle="#FFF",y.strokeStyle="#000",y.shadowBlur=0,y.font="24px NovaSquare",t("Help",400-y.measureText("Help").width/2,94),y.font="12px NovaSquare",t("(Press F11 to hide)",400-y.measureText("(Press F11 to hide)").width/2,110),y.font="24px NovaSquare",t("Keybinds",250-y.measureText("Keybinds").width/2,160),t("Images",550-y.measureText("Images").width/2,160),y.font="12px NovaSquare",t("F1 - Toggles Movement",100,180),t("F2 - Toggles WallHack",100,202),t("F3 - Deploys a minion",100,224),t("F4 - Returns a minion",100,246),t("F5 - Returns all deployed minions",100,268),t("F6 - Toggles Spam Clicking",100,290),t("F7 - Toggles Clicking All Buttons",100,312),t("F8 - Switches views",100,334),t("Right Click - Toggles Spam Clicking",100,400)):t("Press F11 to get help",400-y.measureText("Press F11 to get help").width/2,22),W.Frames++,W.FPS++,setTimeout(function{W.FPS--},1e3),requestAnimationFrame(ne)}function le{return"Thanks for using my script! :)"}v.src="img/cursor.png",y.CLS=function{return y.clearRect(0,0,800,800),!0},requestAnimationFrame(ne);var ie=[];function oe{var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,1),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setUint32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&!C.Misc.AllButtons&&e.send(t)}),e&&1==e.readyState&&e.send(t),setTimeout(function{oe},Math.floor(86400*Math.random+43200))}Z={Log:function(e,t=0){Q.length>=24&&Q.shift,Q.push([e,t]),u.clearRect(0,0,getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2),304),f.width=parseInt(getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2)),f.height=304,u.font="12px NovaSquare";for(var a=0;a<Q.length;a++)u.fillStyle=0==Q[a][1]?"#ccc":1==Q[a][1]?"#ee0":3==Q[a][1]?"#9f9":"#f99",u.fillText(Q[a][0],5,17+12*a)},AllButtons:function{var e=[],t=0,a=1;B.forEach(function(t){"Button"==t.Type&&e.push(t)}),0!=e.length&&(a=Math.floor(e.length/2),function n{if(!C.Misc.AllButtons)return Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,1),void clearTimeout;Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt((e[t].X+e[t].W/2)/2),parseInt((e[t].Y+e[t].H/2)/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt((e[a].X+e[a].W/2)/2),parseInt((e[a].Y+e[a].H/2)/2)],!0,1);var l=new ArrayBuffer(9),i=new DataView(l),o=0;for(i.setUint8(0,2),i.setUint16(1,parseInt((e[t].X+e[t].W/2)/2),!0),i.setUint16(3,parseInt((e[t].Y+e[t].H/2)/2),!0),i.setInt32(5,-1,!0);o<10;o++)L[0].send(l);for(i.setUint16(1,parseInt((e[a].X+e[a].W/2)/2),!0),i.setUint16(3,parseInt((e[a].Y+e[a].H/2)/2),!0),o=0;o<10;o++)L[1].send(l);t++,++a>e.length-1&&(a=Math.floor(e.length/2),t=0),setTimeout(function{n},C.Misc.AllButtonsInterval)})},DOS:function(e,t){var a=[];ie=[];for(var n=0;n<300;n++){a[n]=[],ie[n]=[];for(var l=0;l<400;l++)a[n][l]=0,ie[n][l]=0}-1==t?B.forEach(function(e){if("Wall"==e.Type||"Exit"==e.Type&&1==e.Variant)for(var t=0;t<e.H/2;t++)for(var n=0;n<e.W/2;n++)a[e.Y/2+t][e.X/2+n]=3}):L[t].OBJ.forEach(function(e){if("Wall"==e.Type||"Exit"==e.Type&&1==e.Variant)for(var t=0;t<e.H/2;t++)for(var n=0;n<e.W/2;n++)a[e.Y/2+t][e.X/2+n]=3});for(var i=[e],o=[];i.length;)i.forEach(function(e){var t=e[0],n=e[1];if(n&&t&&3!=a[n][t]){a[n][t]=3;for(var l=t+C.Pathfinder.Speed["X+"];l<400&&!(1&a[n][l]);l+=C.Pathfinder.Speed["X+"])a[n][l]|=1,ie[n][l]||(ie[n][l]=[t,n],o.push([l,n]));for(l=t-C.Pathfinder.Speed["X-"];l>=0&&!(1&a[n][l]);l-=C.Pathfinder.Speed["X-"])a[n][l]|=1,ie[n][l]||(ie[n][l]=[t,n],o.push([l,n]));for(var i=n+C.Pathfinder.Speed["Y+"];i<300&&!(2&a[i][t]);i+=C.Pathfinder.Speed["Y+"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]));for(i=n-C.Pathfinder.Speed["Y-"];i>=0&&!(2&a[i][t]);i-=C.Pathfinder.Speed["Y-"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]))}}),i=o,o=[]},MOVE:function(t,a,n){if(!a.length)return 0;t.Available=!1;var l=new ArrayBuffer(9),i=new DataView(l);i.setUint8(0,C.Pathfinder.Variant),i.setUint16(1,a[0][0],!0),i.setUint16(3,a[0][1],!0),i.setInt32(5,-1,!0),t.send(l);for(var o=0;o<a.length;o++)i.setUint16(1,a[o][0],!0),i.setUint16(3,a[o][1],!0),t.send(l);return t!=e&&(t.Available=!0),a.length},Pathfinder:function(t,a,n=!1,l=-1,i=!0){var o=[];if(-1==l){if(!n&&1!=e.readyState)return!1;Z.DOS(t,l);for(var r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,1!=i||C.Misc.AllButtons||L.forEach(function(e){1!=e.readyState||e.Deployed||Z.MOVE(e,o,n)}),Z.MOVE(e,o,n)}if(!n&&(1!=L[l].readyState||0==L[l].Available||1==L[l].Deployed||C[""]))return!1;Z.DOS(t,l);for(r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,Z.MOVE(L[l],o,n)},SendMessage:function(a){Z.Log('Writing message "'+a.join("")+'"...');var n=0,l=0,i=b,o=I;!function r{if(!(n>a.length-1)){var s=new ArrayBuffer(9),c=new DataView(s),h=a[n];if(h.length>1)return n++,void r;if(c.setUint8(0,3),!J[C.Fonts.Selected][h])return console.warn("Unsupported letter "+h+" in font "+C.Fonts.Selected),t.parentElement.style.borderColor="#f99",t.style.color="#f99",void setTimeout(function{t.parentElement.style.borderColor="#ccc",t.style.color="#ccc"},250);J[C.Fonts.Selected][h].forEach(function(t){console.log(t),c.setUint16(1,i/2+n*C.Fonts.Spacing+t[0]*C.Fonts.Width,!0),c.setUint16(3,o/2-t[1]*C.Fonts.Height,!0),c.setUint16(5,i/2+n*C.Fonts.Spacing+t[2]*C.Fonts.Width,!0),c.setUint16(7,o/2-t[3]*C.Fonts.Height,!0),l%(1+L.length-_)?(L[l%(L.length-_)].send(s),console.log("Clients "+l%(L.length-_))):(e.send(s),console.log("Client")),l++,C.Misc.AllButtons&&(l=0)}),n++," "==h?r:setTimeout(function{r},C.Fonts.Interval)}},Z.Log("Finished writing message.",3)},Keypress:function(e){if(e.keyCode>=65&&e.keyCode<=90||32==e.keyCode||e.keyCode>=48&&e.keyCode<=57&&!e.shiftKey){if(R.length>=64)return;e.shiftKey?R.push(String.fromCharCode(e.keyCode).toUpperCase):R.push(String.fromCharCode(e.keyCode).toLowerCase),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=48&&e.keyCode<=57){if(R.length>=64)return;switch(e.keyCode){case 49:R.push("!");break;case 50:R.push("@");break;case 51:R.push("#");break;case 52:R.push("$");break;case 53:R.push("%");break;case 54:R.push("^");break;case 55:R.push("&");break;case 56:R.push("*");break;case 57:R.push("(");break;case 48:R.push(")");break;default:console.warn("Somehow, you got this hidden error message. Congrats! Anyways, you got this because you typed a number with the shift key down, BUT for some reason its character code wasn't supported. Send this spammy thing below to vnx#6389 on discord:\n"+e)}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(13==e.keyCode)R.shift,Z.SendMessage(R),R=["​"],t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px",t.innerText=R.join("");else if(8==e.keyCode){if(R.length<=1)return;e.shiftKey?R.splice(1,1):e.ctrlKey?R=["​"]:R.pop,R==[]&&(R=["​"]),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=219&&e.keyCode<=222||e.keyCode>=186&&e.keyCode<=191){if(e.shiftKey)switch(e.keyCode){case 219:R.push("{");break;case 220:R.push("\\");break;case 221:R.push("}");break;case 190:R.push(">");break;case 188:R.push("<");break;case 189:R.push("_");break;case 187:R.push("+");break;case 191:R.push("?");break;case 186:R.push(":");break;case 222:R.push('"')}else switch(e.keyCode){case 219:R.push("[");break;case 220:R.push("\\");break;case 221:R.push("]");break;case 190:R.push(".");break;case 188:R.push(",");break;case 189:R.push("-");break;case 187:R.push("=");break;case 191:R.push("/");break;case 186:R.push(";");break;case 222:R.push("'")}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=112&&e.keyCode<=122)switch(e.preventDefault,e.keyCode){case 112:C.Movement=!C.Movement,Z.Log(C.Movement?"Enabled movement.":"Disabled movement.");break;case 113:C.Misc.WallHack=!C.Misc.WallHack,Z.Log(C.Misc.WallHack?"Enabled wallhack.":"Disabled wallhack.");break;case 114:$>=L.length&&($=0),L[$].Deployed=!0,Z.Log("Deployed bot #"+($+1)),$++;break;case 115:--$<0&&($=L.length-1),L[$].Deployed=!1,Z.Pathfinder([parseInt(L[$].X/2),parseInt(L[$].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,$),Z.Log("Returned bot #"+($+1));break;case 116:$=0;var a=0;for(Z.Log("Returning all bots...");a<L.length;a++)1==L[a].Deployed&&(L[a].Deployed=!1,Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,a));Z.Log("Returned all bots.",3);break;case 117:C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.");break;case 118:if(C.Misc.AllButtons=!C.Misc.AllButtons,Z.Log(C.Misc.AllButtons?"Enabled all button clicking.":"Disabled all button clicking."),C.Misc.AllButtons)Z.AllButtons;else for(a=0;a<L.length;a++)Z.Pathfinder([parseInt(L[a].RX/2),parseInt(L[a].RY/2)],[parseInt(U/2),parseInt(V/2)],!1,a);break;case 122:C.Misc.Help=!C.Misc.Help}},Mouse:function(t){if(U=t.layerX,V=t.layerY,1!=e.readyState&&(y.font="30px NovaSquare",V>=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2?S.style.cursor="pointer":S.style.cursor="auto"),C.Movement&&1==e.readyState&&!function(e,t,a,n){for(var l=0;l<B.length;l++)if("Exit"==B[l].Type&&1==B[l].Variant&&e>B[l].X&&t>B[l].Y&&a<B[l].X+B[l].W&&n<B[l].Y+B[l].H)return!0;return!1}(U,V,U+1,V+1)&&!H){var a=new ArrayBuffer(9),n=new DataView(a);if(n.setUint8(0,1),n.setUint16(1,U/2,!0),n.setUint16(3,V/2,!0),n.setUint32(5,-1,!0),1==e.readyState&&e.send(a),C.Misc.AllButtons)return;for(var l=0;l<L.length;l++)1!=L[l].readyState||L[l].Deployed||L[l].send(a)}},Click:function(t){if(U=t.layerX,V=t.layerY,Y=U,X=V,1!=e.readyState){if(y.font="30px NovaSquare",V>=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2){function a(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip),L=[];for(var n=0;n<C.Connections;n++){var l=n;L.push(new WebSocket(ip)),L[l].binaryType="arraybuffer",L[l].OBJ=[],L[l].CUR=[],L[l].DRA=[],L[l].CLI=[],L[l].X=400,L[l].Y=300,L[l].Level=-1,L[l].LocalPlayers=0,a(l)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose,S.style.cursor="none",Z.Log("Reconnecting...",3)}requestAnimationFrame(ne),W.Seconds=0}if(1==e.readyState){if(t.shiftKey)H=!0;else{Z.Pathfinder([parseInt(b/2),parseInt(I/2)],[parseInt(U/2),parseInt(V/2)],!1,-1),setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown);var i=new ArrayBuffer(9),o=new DataView(i);o.setUint8(0,2),o.setUint16(1,U/2,!0),o.setUint16(3,V/2,!0),o.setUint32(5,-1,!0);n=0;if(C.Misc.AllButtons)for(n<C.Click.Weight;n++)e.send(i);else setInterval(function{++n<=C.Click.Weight?n%(1+L.length-K)?L[n%(L.length-K)].Deployed||1!=L[n%(L.length-K)].readyState||L[n%(L.length-K)].send(i):e.send(i):clearInterval},C.Click.Interval.Normal)}j=!0}},Unclick:function(e){U=e.layerX,V=e.layerY,H=!1,j=!1},NewObjects:function(e,t,a){switch(BinType=e.getUint8(t),console.log(BinType),BinType){case 0:B[a].Type="Text";break;case 1:B[a].Type="Wall";break;case 2:B[a].Type="Exit";break;case 3:B[a].Type="Plate";break;case 4:B[a].Type="Button";break;default:B[a].Type="Unknown"}if("Text"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].Size=e.getUint8(t+5),B[a].Centered=!!e.getUint8(t+6),t+=7;var n="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(n+=String.fromCharCode(i),i=0),0!=i&&(n+=String.fromCharCode(i));return B[a].Text=n,B[a].Variant=0,t+1}if("Wall"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0);for(n=e.getUint32(t+9,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:"FF0000"==n.toUpperCase?B[a].Variant=2:B[a].Variant=0,t+13}if("Exit"==B[a].Type)return B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase||"FF0000"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase||"FFFF00"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase||"00FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase||"0000FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase||"FF00FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=7,t+15}if("Button"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=0,t+15}console.log("unknown object thing"),B[a].X=e.getUint16(t+1,!0)||0,B[a].Y=e.getUint16(t+3,!0)||0,B[a].W=e.getUint16(t+5,!0)||100,B[a].H=e.getUint16(t+7,!0)||100},BNewObjects:function(e,t,a,n){switch(BinType=e.getUint8(t),BinType){case 0:L[n].OBJ[a].Type="Text";break;case 1:L[n].OBJ[a].Type="Wall";break;case 2:L[n].OBJ[a].Type="Exit";break;case 3:L[n].OBJ[a].Type="Plate";break;case 4:L[n].OBJ[a].Type="Button";break;default:L[n].OBJ[a].Type="Unknown"}if("Text"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].Size=e.getUint8(t+5),L[n].OBJ[a].Centered=!!e.getUint8(t+6),t+=7;var l="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(l+=String.fromCharCode(i),i=0),0!=i&&(l+=String.fromCharCode(i));return L[n].OBJ[a].Text=l,L[n].OBJ[a].Variant=0,t+1}if("Wall"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0);for(l=e.getUint32(t+9,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=2:L[n].OBJ[a].Variant=0,t+13}if("Exit"==L[n].OBJ[a].Type)return L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase||"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase||"FFFF00"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase||"00FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase||"0000FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase||"FF00FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=7,t+15}if("Button"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=0,t+15}L[n].OBJ[a].X=e.getUint16(t+1,!0)||0,L[n].OBJ[a].Y=e.getUint16(t+3,!0)||0,L[n].OBJ[a].W=e.getUint16(t+5,!0)||100,L[n].OBJ[a].H=e.getUint16(t+7,!0)||100},WSMessageS00:function(e){return ee=e.getUint32(1,!0),Z.Log("Your ID is "+ee+"."),!0},CursorDrawPos:function(e,t,a){var n=t-e,l=(new Date-a)/C.Cursor.AnimationDelay,i=0>=l?0:1<=l?1:l;return e+i*i*(3-2*i)*n},WSMessageS01:function(t,a){H&&!C.Click.HoldToSpam&&function{var t=new ArrayBuffer(9),a=new DataView(t);if(a.setUint8(0,3),a.setUint16(1,parseInt(Y/2),!0),a.setUint16(3,parseInt(X/2),!0),a.setUint16(5,parseInt(U/2),!0),a.setUint16(7,parseInt(V/2),!0),e.send(t),1e3==G)for(var n=0;n<L.length;n++)1!=L[n].readyState||L[n].Deployed||L[n].Level!=N||C.Misc.AllButtons||L[n].send(t)},C.Movement&&(Y=U,X=V);var n=t.getUint16(1,!0),l=new Array(512);M=t.getUint16(1,!0);for(var i=0;i<n;i++){var o=t.getUint32(3+8*i,!0),r=t.getUint16(7+8*i,!0),s=t.getUint16(9+8*i,!0);x[o]||(x[o]={I:o,OX:2*r+6,OY:2*s,X:2*r+6,Y:2*s+6,T:new Date}),x[o]={I:o,OX:Z.CursorDrawPos(x[o].OX,x[o].X,x[o].T),OY:Z.CursorDrawPos(x[o].OY,x[o].Y,x[o].T),X:2*r+6,Y:2*s,T:new Date},l[o]=!0,o==ee&&(b=x[o].OX,I=x[o].OY,RX=2*r+6,RY=2*s)}for(i=0;i<x.length;i++)x[i]&&!l[i]&&(x[i]=void 0);var c=3+8*n,h=t.getUint16(c,!0);for(i=0;i<h;i++){r=t.getUint16(c+2+4*i,!0),s=t.getUint16(c+4+4*i,!0);setTimeout(function{k.push({X:2*r-10,Y:2*s,T:new Date,L:N})},C.Click.Delay),setTimeout(function{k.shift},C.Click.Expiration)}c=c+4+4*h;var p=t.getUint16(c-2,!0);p>0&&console.log("wallupdates:"+p);for(i=0;i<p;i++){o=t.getUint32(c,!0);for(var d=0;d<B.length;d++)B[d].I==o&&"Wall"==B[d].Type&&B.splice(d,1);c+=4}c+=2;var F=t.getUint16(c-2,!0);F>0&&console.log("mapupdates:"+F);for(i=0;i<F;i++){o=t.getUint32(c,!0);function T{for(var e=0;e<B.length;e++)if(B[e].I==o)return e;return B.push({I:o}),B.length-1}var f=T;c+=4,c=Z.NewObjects(t,c,f)}var u=t.getUint16(c,!0);for(i=0;i<u;i++){var m=t.getUint16(c+2+8*i,!0),g=t.getUint16(c+4+8*i,!0),S=t.getUint16(c+6+8*i,!0),y=t.getUint16(c+8+8*i,!0);A.push({X:[2*m,2*S],Y:[2*g,2*y],T:new Date,L:N}),setTimeout(function{A.shift},C.Drawing.Expiration)}return c=c+2+8*u,a.data.byteLength>=c+4&&(O=t.getUint32(c,!0)),!0},WSMessageS04:function(t){if(C.Bots.NewLevelReturn){C.Misc.AllButtons&&Z.Log("Disabled all button clicking."),C.Misc.AllButtons=!1;for(var a=0;a<L.length;a++)1==L[a].readyState&&Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!0,a)}B=[],x=[],U=2*t.getUint16(1,!0),V=2*t.getUint16(3,!0),Y=U,X=V,A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=t.getUint16(5,!0),OFF=7;for(a=0;a<Objects;a++)B.push({I:t.getUint32(OFF,!0)}),OFF+=4,OFF=Z.NewObjects(t,OFF,B.length-1);e.Available=!1,L[0].Available=!1,L[1].Available=!1,setTimeout(function{e.Available=!0,L[0].Available=!0,L[1].Available=!0},1e3),P=[],B.forEach(function(e){("Wall"==e.Type&&0==e.Variant||"Text"==e.Type||"Exit"==e.Type)&&P.push(e)});var l=N;if(N>62)N++;else{N="??";for(a=0;a<E.length;a++)JSON.stringify(E[a])===JSON.stringify(P)&&(N=a);"??"==N&&(N=l+1)}return n.innerText="Level "+N,Z.Log(l>N?"You went back a level.":l==N?"You teleported back to the spawn.":"You advanced a level",l<N?3:0),!0},WSMessageS05:function(t){if(C.Misc.WallHack&&e.Available&&!(e.bufferedAmount>0)&&(e.Available=!1,setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown),Z.Pathfinder([parseInt(RX/2-3),parseInt(RY/2)],[parseInt(U/2),parseInt(V/2)],!1,-1,!C.Pathfinder.CalculateAll),C.Pathfinder.CalculateAll)){for(var a=0;a<L.length;a++)L[a].Level==N&&0==L[a].Deployed&&Z.Pathfinder([parseInt(L[a].X),parseInt(L[a].Y)],[parseInt(U/2),parseInt(V/2)],!1,a);return!1}},WSMessageSplitter:function(e){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSMessageS00(ABC):1==ABC.getUint8(0)?Z.WSMessageS01(ABC,e):4==ABC.getUint8(0)?Z.WSMessageS04(ABC):5==ABC.getUint8(0)&&Z.WSMessageS05(ABC)},WSOpen:function(e){Z.Log("Client connected!",3),o.style.color="#9f9",o.innerText="Connected",console.log("%cWS: %cClient Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSClose:function(e){Z.Log("Client disconnected.",2),o.style.color="#f99",o.innerText="Disconnected",S.style.cursor="auto",console.log("%cWS: %cClient Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;"),L.forEach(function(e){e.close})},WSBOpen:function(e,t){Z.Log("Bot #"+t+" connected!",3),0==t?(h.style.color="#9f9",h.innerText="Connected"):1==t&&(BotStateDisplay2.style.color="#9f9",BotStateDisplay2.innerText="Connected"),console.log("%cWS: %cNew Bot Client Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSBClose:function(e,t){Z.Log("Bot #"+t+" disconnected.",2),0==t?(h.style.color="#f99",h.innerText="Disconnected"):1==t&&(BotStateDisplay2.style.color="#f99",BotStateDisplay2.innerText="Disconnected"),_++,console.log("%cWS: %cA Bot Client Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;")},WSBMessageS00:function(e,t){return L[t].I=e.getUint32(1,!0),q.push(e.getUint32(1,!0)),Z.Log("Bot #"+(t+1)+"'s ID is "+e.getUint32(1,!0)),!0},WSBMessageS01:function(e,t){var a,n,l=e.getUint16(1,!0),i=new Array(512);M=e.getUint16(1,!0),H&&!C.Click.HoldToSpam&&(a=new ArrayBuffer(9),(n=new DataView(a)).setUint8(0,3),n.setUint16(1,parseInt(Y/2),!0),n.setUint16(3,parseInt(X/2),!0),n.setUint16(5,parseInt(U/2),!0),n.setUint16(7,parseInt(V/2),!0),1e3!=G&&1==L[t].readyState&&!L[t].Deployed&&L[t].Level==L[G].Level&&!C.Misc.AllButtons&&L[t].send(a)),C.Movement&&(L[t].OX=U,L[t].OY=V);for(var o=0;o<l;o++){var r=e.getUint32(3+8*o,!0),s=e.getUint16(7+8*o,!0),c=e.getUint16(9+8*o,!0);L[t].CUR[r]||(L[t].CUR[r]={I:r,OX:2*s+6,OY:2*c,X:2*s+6,Y:2*c+6,T:new Date}),L[t].CUR[r]={I:r,OX:Z.CursorDrawPos(L[t].CUR[r].OX,L[t].CUR[r].X,L[t].CUR[r].T),OY:Z.CursorDrawPos(L[t].CUR[r].OY,L[t].CUR[r].Y,L[t].CUR[r].T),X:2*s+6,Y:2*c,T:new Date},i[r]=!0,r==L[t].I&&(L[t].X=L[t].CUR[r].OX,L[t].Y=L[t].CUR[r].OY,L[t].RX=2*s+6,L[t].RY=2*c)}for(o=0;o<L[t].CUR.length;o++)L[t].CUR[o]&&!i[o]&&(L[t].CUR[o]=void 0);var h=3+8*l,p=e.getUint16(h,!0);for(o=0;o<p;o++){s=e.getUint16(h+2+4*o,!0),c=e.getUint16(h+4+4*o,!0);setTimeout(function{L[t].CLI.push({X:2*s-10,Y:2*c,T:new Date,L:N})},C.Click.Delay),setTimeout(function{L[t].CLI.shift},C.Click.Expiration)}h=h+4+4*p;var d=e.getUint16(h-2,!0);for(o=0;o<d;o++){r=e.getUint32(h,!0);for(var F=0;F<L[t].OBJ.length;F++)L[t].OBJ[F].I==r&&L[t].OBJ.splice(F,1);h+=4}h+=2;var T=e.getUint16(h-2,!0);for(o=0;o<T;o++){r=e.getUint32(h,!0);function f{for(var e=0;e<L[t].OBJ.length;e++)if(L[t].OBJ[e].I==r)return e;return L[t].OBJ.push({I:r}),L[t].OBJ.length-1}var u=f;h+=4,h=Z.BNewObjects(e,h,u,t)}var m=e.getUint16(h,!0);for(o=0;o<m;o++){var g=e.getUint16(h+2+8*o,!0),S=e.getUint16(h+4+8*o,!0),y=e.getUint16(h+6+8*o,!0),W=e.getUint16(h+8+8*o,!0);L[t].DRA.push({X:[2*g,2*y],Y:[2*S,2*W],T:new Date,L:N}),setTimeout(function{L[t].DRA.shift},C.Drawing.Expiration)}return!0},WSBMessageS04:function(e,t){L[t].OBJ=[],L[t].CUR=[],L[t].X=2*e.getUint16(1,!0),L[t].Y=2*e.getUint16(3,!0),L[t].OX=2*e.getUint16(1,!0),L[t].OY=2*e.getUint16(3,!0),A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=e.getUint16(5,!0),OFF=7;for(var a=0;a<Objects;a++)L[t].OBJ.push({I:e.getUint32(OFF,!0)}),OFF+=4,OFF=Z.BNewObjects(e,OFF,L[t].OBJ.length-1,t);L[t].OBJLAYOUT=[],L[t].OBJ.forEach(function(e){("Wall"==e.Type&&0==e.Variant||"Text"==e.Type||"Exit"==e.Type)&&L[t].OBJLAYOUT.push(e)});var n=L[t].Level;if(L[t].Level>62)L[t].Level++;else{L[t].Level="??";for(a=0;a<E.length;a++)JSON.stringify(E[a])===JSON.stringify(L[t].OBJLAYOUT)&&(L[t].Level=a);"??"==L[t].Level&&(L[t].Level=n+1)}return 0==t?s.innerText="Level "+L[t].Level:1==t&&(d.innerText="Level "+L[t].Level),Z.Log(n>L[t].Level?"Bot #"+(t+1)+" went back a level.":n==L[t].Level?"Bot #"+(t+1)+" teleported back to the spawn.":"Bot #"+(t+1)+" advanced a level",n<L[t].Level?3:0),!0},WSBMessageSplitter:function(e,t){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSBMessageS00(ABC,t):1==ABC.getUint8(0)?Z.WSBMessageS01(ABC,t):4==ABC.getUint8(0)&&Z.WSBMessageS04(ABC,t)}},FixCanvas=function{S.style.width="800px",S.style.height="600px",S.width=800,S.height=600,S.style.backgroundColor="#fefefe"},FixCanvas,CheckForHost=function{"http://cursors.io"!=window.origin&&alert("The script has detected you're not playing on cursors.io. Please do not try using any other sites with this script. Nothing is stopping you, but be warned, the script will be VERY BUGGY, and very likely not even work at all.")},CheckForHost,CreateGUI=function{var e=document.getElementsByTagName("div");e[3].style.display="none",e[4].style.display="none",e[1].style.border="2px solid #ccc",e[1].style.marginBottom="5px",e[1].style.borderRadius="10px",S.style.borderRadius="7px",S.style.cursor="none",ae=document.createElement("div"),document.body.appendChild(ae),ae.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: 800px; margin: 5px auto;";var i=document.createElement("div");t=document.createElement("p"),i.style.cssText="width: 750px; margin-left: 25px; transition: 0.25s;",ae.appendChild(i),t.style.cssText="font-family: NovaSquare; color: #ccc; margin-left: 10px; transition: 0.25s; font-size: "+(R.length>20?24-(R.length-20)+"px;":"24px;"),i.appendChild(t),t.innerText="​",BotView=document.createElement("div"),BotView.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: 5px;",document.body.appendChild(BotView),(a=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(a),(r=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(r),(p=document.createElement("div")).style.cssText="height: 100px;",BotView.appendChild(p),(l=document.createElement("div")).innerText="You",l.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(l),(n=document.createElement("div")).innerText="Level 0",n.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(n),(o=document.createElement("div")).innerText="Connecting",o.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",a.appendChild(o),(c=document.createElement("div")).innerText="Bot #1",c.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(c),(s=document.createElement("div")).innerText="Level 0",s.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(s),(h=document.createElement("div")).innerText="Connecting",h.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",r.appendChild(h),(F=document.createElement("div")).innerText="Bot #2",F.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(F),(d=document.createElement("div")).innerText="Level 0",d.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(d),BotStateDisplay2=document.createElement("div"),BotStateDisplay2.innerText="Connecting",BotStateDisplay2.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",p.appendChild(BotStateDisplay2),r.style.cursor="pointer",a.style.cursor="pointer",p.style.cursor="pointer",r.onclick=function{G=0},p.onclick=function{G=1},a.onclick=function{G=1e3},(T=document.createElement("div")).style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: calc(50% + 415px);",document.body.appendChild(T),(f=document.createElement("canvas")).style.cssText="height: 304px; width: calc(50vw - 425px); border-radius: 7px;",T.appendChild(f),u=f.getContext("2d")},CreateGUI,PredefineSettings=function{C={Themes:{Basic:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:-1,0,Wall:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Exit:-1,0],[-1,0,Plate:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Button:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3,"#ff9900"],ClickColor:"#000",DrawColor:"#000",DrawAlpha:.3,DrawWidth:1}},Shaded:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:",Wall:",Exit:",Plate:",Button:"},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3],ClickColor:"#000"}}},ThemeSelected:"Basic",Movement:!0,Connections:2,PageSelected:"Fonts",PageHelp:!1,Fonts:{Selected:"Basic",Width:1,Height:1,Spacing:3,Interval:150,Weight:1},Pathfinder:{Cooldown:200,Variant:1,CalculateAll:!1,Speed:{"X+":1,"X-":1,"Y+":1,"Y-":1}},Click:{Delay:0,Weight:10,SpamClicking:!1,Interval:{Normal:5,Spam:25},HoldToSpam:!1,Expiration:300},Drawing:{Expiration:1e4},Cursor:{IDs:!0,Offset:[0,0],AnimationDelay:100},Bots:{NewLevelReturn:!0},Misc:{WallHack:!0,Help:!1,Debug:!0,RightClickGUI:!0,AllButtons:!1,AllButtonsInterval:333}}},PredefineSettings,PredefineStats=function{W={Frames:0,Seconds:0,FPS:0}},PredefineStats,setInterval(function{W.Seconds++},1e3),setInterval(function{if(C.Click.SpamClicking||C.Click.HoldToSpam&&j&&!H){var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,2),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setInt32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&e.Available&&e.Level==N&&e.send(t)}),1==e.readyState&&e.Available&&e.send(t)}},C.Click.Interval.Spam),setInterval(function{"​"!=R[0]&&R.unshift("​")},50),setInterval(function{s.style.color=L[0].Level<N||L[0].Level<L[1].Level?"#ee0":"#ccc",d.style.color=L[1].Level<N||L[1].Level<L[0].Level?"#ee0":"#ccc",n.style.color=L[0].Level>N||L[1].Level>N?"#f99":"#ccc"},100),oe,PredefineLevels=function{E=[[{I:0,Type:"Text",X:400,Y:100,Size:68,Centered:!0,Text:"Welcome",Variant:0},{I:1,Type:"Text",X:400,Y:150,Size:20,Centered:!0,Text:"You participate in this experiment with your mouse cursor",Variant:0},{I:2,Type:"Text",X:400,Y:184,Size:20,Centered:!0,Text:"Move to the next level by putting your mouse on the green area",Variant:0},{I:3,Type:"Exit",X:600,Y:350,W:100,H:100,Variant:0}],[{I:0,Type:"Exit",X:0,Y:280,W:40,H:40,Variant:0},{I:3,Type:"Wall",X:0,Y:0,W:520,H:40,Variant:0},{I:4,Type:"Wall",X:560,Y:40,W:240,H:40,Variant:0},{I:5,Type:"Wall",X:40,Y:80,W:160,H:40,Variant:0},{I:6,Type:"Wall",X:240,Y:80,W:280,H:40,Variant:0},{I:7,Type:"Wall",X:560,Y:80,W:40,H:40,Variant:0},{I:8,Type:"Wall",X:40,Y:120,W:40,H:40,Variant:0},{I:9,Type:"Wall",X:160,Y:120,W:120,H:40,Variant:0},{I:10,Type:"Wall",X:400,Y:120,W:40,H:40,Variant:0},{I:11,Type:"Wall",X:480,Y:120,W:40,H:40,Variant:0},{I:12,Type:"Wall",X:640,Y:120,W:120,H:40,Variant:0},{I:13,Type:"Wall",X:40,Y:160,W:80,H:40,Variant:0},{I:14,Type:"Wall",X:320,Y:160,W:40,H:40,Variant:0},{I:15,Type:"Wall",X:400,Y:160,W:40,H:40,Variant:0},{I:16,Type:"Wall",X:480,Y:160,W:40,H:40,Variant:0},{I:17,Type:"Wall",X:560,Y:160,W:120,H:40,Variant:0},{I:18,Type:"Wall",X:720,Y:160,W:40,H:40,Variant:0},{I:19,Type:"Wall",X:80,Y:200,W:280,H:40,Variant:0},{I:20,Type:"Wall",X:560,Y:200,W:40,H:40,Variant:0},{I:21,Type:"Wall",X:720,Y:200,W:40,H:40,Variant:0},{I:22,Type:"Wall",X:0,Y:240,W:40,H:40,Variant:0},{I:23,Type:"Wall",X:80,Y:240,W:40,H:40,Variant:0},{I:24,Type:"Wall",X:240,Y:240,W:40,H:40,Variant:0},{I:25,Type:"Wall",X:320,Y:240,W:280,H:40,Variant:0},{I:26,Type:"Wall",X:640,Y:240,W:120,H:40,Variant:0},{I:27,Type:"Wall",X:80,Y:280,W:120,H:40,Variant:0},{I:28,Type:"Wall",X:240,Y:280,W:40,H:40,Variant:0},{I:29,Type:"Wall",X:320,Y:280,W:40,H:40,Variant:0},{I:30,Type:"Wall",X:560,Y:280,W:40,H:40,Variant:0},{I:31,Type:"Wall",X:680,Y:280,W:80,H:40,Variant:0},{I:32,Type:"Wall",X:0,Y:320,W:120,H:40,Variant:0},{I:33,Type:"Wall",X:240,Y:320,W:40,H:40,Variant:0},{I:34,Type:"Wall",X:320,Y:320,W:40,H:40,Variant:0},{I:35,Type:"Wall",X:400,Y:320,W:240,H:40,Variant:0},{I:36,Type:"Wall",X:160,Y:360,W:120,H:40,Variant:0},{I:37,Type:"Wall",X:320,Y:360,W:40,H:40,Variant:0},{I:38,Type:"Wall",X:600,Y:360,W:120,H:40,Variant:0},{I:39,Type:"Wall",X:0,Y:400,W:120,H:40,Variant:0},{I:40,Type:"Wall",X:160,Y:400,W:40,H:40,Variant:0},{I:41,Type:"Wall",X:240,Y:400,W:40,H:40,Variant:0},{I:42,Type:"Wall",X:320,Y:400,W:240,H:40,Variant:0},{I:43,Type:"Wall",X:680,Y:400,W:80,H:40,Variant:0},{I:44,Type:"Wall",X:160,Y:440,W:40,H:40,Variant:0},{I:45,Type:"Wall",X:240,Y:440,W:40,H:40,Variant:0},{I:46,Type:"Wall",X:520,Y:440,W:40,H:40,Variant:0},{I:47,Type:"Wall",X:600,Y:440,W:40,H:40,Variant:0},{I:48,Type:"Wall",X:720,Y:440,W:40,H:40,Variant:0},{I:49,Type:"Wall",X:40,Y:480,W:160,H:40,Variant:0},{I:50,Type:"Wall",X:240,Y:480,W:160,H:40,Variant:0},{I:51,Type:"Wall",X:440,Y:480,W:40,H:40,Variant:0},{I:52,Type:"Wall",X:520,Y:480,W:40,H:40,Variant:0},{I:53,Type:"Wall",X:600,Y:480,W:40,H:40,Variant:0},{I:54,Type:"Wall",X:680,Y:480,W:80,H:40,Variant:0},{I:55,Type:"Wall",X:40,Y:520,W:40,H:40,Variant:0},{I:56,Type:"Wall",X:360,Y:520,W:40,H:40,Variant:0},{I:57,Type:"Wall",X:440,Y:520,W:40,H:40,Variant:0},{I:58,Type:"Wall",X:520,Y:520,W:40,H:40,Variant:0},{I:59,Type:"Wall",X:600,Y:520,W:40,H:40,Variant:0},{I:60,Type:"Wall",X:680,Y:520,W:40,H:40,Variant:0},{I:61,Type:"Wall",X:120,Y:560,W:200,H:40,Variant:0},{I:62,Type:"Wall",X:440,Y:560,W:40,H:40,Variant:0},{I:63,Type:"Wall",X:600,Y:560,W:40,H:40,Variant:0}],[],[][{I:28,Type:"Exit",X:700,Y:550,W:50,H:50,Variant:0}]]},PredefineLevels,PredefineAlphabet=function{J={Basic:{A:0,0,0,4],[0,4,2,4],[2,4,2,0],[0,2,2,2,a:0,2,2,2],[2,2,2,0],[2,0,0,0],[0,0,0,1],[0,1,2,1,B:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,b:0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,C:2,4,0,4],[0,4,0,0],[0,0,2,0,c:2,2,0,2],[0,2,0,0],[0,0,2,0,D:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0,d:2,4,2,0],[2,0,0,0],[0,0,0,2],[0,2,2,2,E:2,4,0,4],[0,4,0,0],[0,0,2,0],[0,2,2,2,e:0,1,2,1],[2,1,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,F:2,4,0,4],[0,4,0,0],[0,2,1,2,f:2,4,1,4],[1,4,1,0],[0,2,2,2,G:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[1,2,2,2,g:0,-2,2,-2],[2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,H:0,0,0,4],[0,2,2,2],[2,0,2,4,h:0,4,0,0],[0,2,2,2],[2,2,2,0,I:0,0,2,0],[0,4,2,4],[1,0,1,4,i:1,0,0,0],[0,0,0,2,J:0,4,2,4],[2,4,2,1],[2,1,1,0],[1,0,0,1,j:0,-1,1,-2],[1,-2,2,-1],[2,-1,2,2,K:0,0,0,4],[0,2,2,4],[0,2,2,0,k:0,0,0,4],[0,1,2,2],[0,1,2,0,L:0,4,0,0],[0,0,2,0,l:0,4,0,0],[0,0,1,0,M:0,0,0,4],[0,4,1,3],[1,3,2,4],[2,4,2,0,m:0,0,0,2],[0,2,2,2],[2,2,2,0],[1,2,1,0,N:0,0,0,4],[0,4,2,0],[2,0,2,4,n:0,0,0,2],[0,2,2,2],[2,2,2,0,O:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0,o:0,0,2,0],[2,0,2,2],[2,2,0,2],[0,2,0,0,P:0,0,0,4],[0,4,2,4],[2,4,2,2],[2,2,0,2,p:0,-2,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,Q:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[1,1,3,-1,q:2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,R:0,0,0,4],[0,4,2,3],[2,3,0,2],[0,2,2,0,r:0,0,0,2],[0,2,2,2,S:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,s:2,2,0,2],[0,2,0,1],[0,1,2,1],[2,1,2,0],[2,0,0,0,T:0,4,2,4],[1,4,1,0,t:0,3,2,3],[1,4,1,0,U:0,4,0,0],[0,0,2,0],[2,0,2,4,u:0,2,0,0],[0,0,2,0],[2,0,2,2,V:0,4,1,0],[1,0,2,4,v:0,2,1,0],[1,0,2,2,W:0,4,0,0],[0,0,1,2],[1,2,2,0],[2,0,2,4,w:0,2,0,0],[0,0,1,1],[1,1,2,0],[2,0,2,2,X:0,0,2,4],[0,4,2,0,x:0,0,2,2],[0,2,2,0,Y:0,4,1,2],[1,2,2,4],[1,2,1,0,y:0,2,1,0],[2,2,0,-2,Z:0,4,2,4],[2,4,0,0],[0,0,2,0,z:0,2,2,2],[2,2,0,0],[0,0,2,0,1:0,4,1,4],[1,4,1,0],[0,0,2,0,2:2,4,0,4],[2,4,2,2],[0,2,2,2],[0,2,0,0],[2,0,0,0,3:0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,4:2,0,2,4],[2,4,0,2],[0,2,2,2,5:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,6:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,7:0,4,2,4],[2,4,0,0,8:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,2,2,2,9:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,2],[0,2,2,2,0:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,0,2,4,"!":0,0,0,1],[0,2,0,4,"@":2,0,0,0],[0,0,0,4],[0,4,2,4],[2,4,2,1],[2,1,1,1],[1,1,1,3,"#":.5,0,.5,4],[1.5,0,1.5,4],[0,1,2,1],[0,3,2,3,$:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0],[1,4.5,1,-.5,"%":0,0,2,4],[1,0,2,0],[2,0,2,1],[2,1,1,1],[1,1,1,0],[0,3,1,3],[1,3,1,4],[1,4,0,4],[0,4,0,3,"^":0,3,1,4],[1,4,2,3,"&":0,1,2,1],[2,1,2,3],[2,3,0,3],[0,2,2,2],[1,0,1,4,"*":0,1,2,3],[1,1,1,3],[2,1,0,3],[2,2,1,3,"(":2,4,0,3],[0,3,0,1],[0,1,2,0,")":0,4,2,3],[2,3,2,1],[2,1,0,0,".":0,0,1,0],[1,0,1,1],[1,1,0,1],[0,1,0,0,",":0,0,-1,-1,"<":2,3,0,2],[0,2,2,1,">":0,3,2,2],[2,2,0,1,"/":0,0,2,4,"\\":0,4,2,0,"[":2,4,0,4],[0,4,0,0],[0,0,2,0,"]":0,4,2,4],[2,4,2,0],[2,0,0,0,"{":2,4,0,4],[0,4,0,0],[0,0,2,0],[-1,2,1,2,"}":0,4,2,4],[2,4,2,0],[2,0,0,0],[1,2,3,2,"-":0,2,2,2,_:0,0,2,0,":":1,0,1,1],[1,3,1,4,";":1,0,0,-1],[1,3,1,4,"'":1,3,1,4,'"':.5,3,.5,4],[1.5,3,1.5,4,"`":.5,4,1.5,3,"~":0,1.5,.5,2.5],[.5,2.5,1.5,.5],[1.5,.5,2,1.5,"|":1,0,1,4,"?":0,4,2,4],[2,4,2,3],[2,3,0,3],[0,3,0,2],[0,2,2,2],[1,0,1,1," ":0,0,0,0}}},PredefineAlphabet,CreateConnection=function{function t(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip);for(var a=0;a<C.Connections;a++){var n=a;L.push(new WebSocket(ip)),L[n].binaryType="arraybuffer",L[n].OBJ=[],L[n].CUR=[],L[n].DRA=[],L[n].CLI=[],L[n].X=400,L[n].Y=300,L[n].Level=-1,L[n].LocalPlayers=0,t(n)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose},CreateConnection,document.onkeydown=Z.Keypress,canvas.onmousemove=Z.Mouse,canvas.onmousedown=Z.Click,canvas.onmouseup=Z.Unclick,document.oncontextmenu=function(e){e.preventDefault,C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.")};C.Fonts.Spacing=9,C.Fonts.Width=3,C.Fonts.Height=3;}
 * 1) async function init{var ip='ws://'+JSON.parse(await (await fetch('http://api.n.m28.io/endpoint/cursors/findEach')).text).servers['digitalocean-sfo'].ipv4+':2828';
 * 2) var e,t,a,n,l,o,r,s,c,h,p,d,F,T,f,u,m,g,S=document.getElementById("canvas"),y=S.getContext("2d"),C={},W={},B=[],w=[],x=[],v=new Image,U=400,V=300,Y=400,X=300,b=400,I=300,k=[],A=[],O=0,H=!1,D={},M=0,P=[],E=[],L=[],J={},R=["​"],N=-1,q=[],z="Main",j=!1,K=0,G=1e3,$=0,_=0,Q=[],Z={},ee=0,te=!1;function ae(e,t){this.ID=e,this.Action=t,this.Show=function{return MenuMan.currentMenu=this.ID,!0},this.Hide=function{return MenuMan.currentMenu="main",!0}}function ne{if(y.CLS,e&&(2!=e.readyState&&3!=e.readyState||(y.filter="blur(20px) grayscale(100%)")),y.lineWidth=C.Themes[C.ThemeSelected].Misc.LineWidth,1e3==G){function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}B.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),B.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),k.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),A.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(M>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.beginPath,y.globalAlpha=.4,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=2.5,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",x.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,N!=L[0].Level&&L[0].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[1].Level&&N!=L[0].Level&&L[1].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Client",10,590)}else{function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}L[G].OBJ.forEach(function(e){return"Text"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Text[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Text[e.Variant][1],y.font=e.Size+"px NovaSquare",y.fillText(e.Text,e.X-(e.Centered?y.measureText(e.Text).width/2:0),e.Y),!0):"Wall"!=e.Type&&("Exit"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Exit[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Exit[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),!0):"Plate"==e.Type?(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Plate[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Plate[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.PlateTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.H/2+10),y.globalAlpha=1,!0):"Button"!=e.Type?(console.warn("An invalid type of object was given."),y.fillStyle="#999999",y.shadowColor="#000",y.shadowBlur="#000",y.globalAlpha=1,y.fillRect(e.X,e.Y,e.W,e.H),y.fillStyle="#000",y.font="30px NovaSquare",y.fillText("?",e.X+e.W/2-y.measureText("?").width/2,e.Y+e.H/2+15),!1):(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][1]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][1],y.beginPath,y.moveTo(e.X,e.Y),y.lineTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][2]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][2],y.beginPath,y.moveTo(e.X+e.W,e.Y),y.lineTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W,e.Y),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][3]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][3],y.beginPath,y.moveTo(e.X+e.W,e.Y+e.H),y.lineTo(e.X,e.Y+e.H),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W-e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X+e.W,e.Y+e.H),y.fill,y.fillStyle=C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4]?C.Themes[C.ThemeSelected].Fill.Button[e.Variant][4]:C.Themes[C.ThemeSelected].Shadow.Button[e.Variant][4],y.beginPath,y.moveTo(e.X,e.Y+e.H),y.lineTo(e.X,e.Y),y.lineTo(e.X+e.W/6,e.Y+e.H/6),y.lineTo(e.X+e.W/6,e.Y+e.H-e.H/6),y.lineTo(e.X,e.Y+e.H),y.fill,y.font="30px NovaSquare",y.fillStyle="#000000",y.globalAlpha=C.Themes[C.ThemeSelected].Misc.ButtonTextAlpha,y.fillText(e.C,e.X+e.W/2-y.measureText(e.C).width/2,e.Y+e.W/2+15),void(y.globalAlpha=1)))}),L[G].OBJ.forEach(function(e){return"Wall"==e.Type&&(y.fillStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0],y.strokeStyle=C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][1],y.shadowColor=-1==C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0]?C.Themes[C.ThemeSelected].Fill.Wall[e.Variant][0]:C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][0],y.shadowBlur=C.Themes[C.ThemeSelected].Shadow.Wall[e.Variant][1],y.fillRect(e.X,e.Y,e.W,e.H),y.shadowBlur=0,y.strokeRect(e.X+y.lineWidth/2,e.Y+y.lineWidth/2,e.W-y.lineWidth,e.H-y.lineWidth),!0)}),L[G].CLI.forEach(function(e){y.globalAlpha=1-((new Date).getTime-e.T.getTime)/C.Click.Expiration,y.lineWidth=3,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.ClickColor,y.beginPath,y.arc(e.X+10,e.Y,Math.abs(e.T.getTime-(new Date).getTime)/(C.Click.Expiration/20),0,2*Math.PI),y.stroke,y.globalAlpha=1}),L[G].DRA.forEach(function(e){y.globalAlpha=C.Themes[C.ThemeSelected].Misc.DrawAlpha/(L[G].LocalPlayers>30?3:1),y.lineWidth=C.Themes[C.ThemeSelected].Misc.DrawWidth,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.DrawColor,y.beginPath,y.moveTo(e.X[0],e.Y[0]),y.lineTo(e.X[1],e.Y[1]),y.stroke,y.globalAlpha=1}),y.fillStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[0],y.globalAlpha=C.Themes[C.ThemeSelected].Misc.CursorOutline[3],y.beginPath,y.arc(U+3,V+7,20,0,2*Math.PI),y.fill,1==L[0].readyState&&(y.lineWidth=0==G?2.5:1,y.beginPath,y.globalAlpha=.4,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[0].Deployed?2:1],y.moveTo(L[0].X-6,L[0].Y),y.lineTo(U,V),y.stroke),1==L[1].readyState&&(y.lineWidth=1==G?2.5:1,y.beginPath,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Misc.AllButtons?4:!C.Movement||L[1].Deployed?2:1],y.moveTo(L[1].X-6,L[1].Y),y.lineTo(U,V),y.stroke),y.beginPath,y.lineWidth=1,y.strokeStyle=C.Themes[C.ThemeSelected].Misc.CursorOutline[C.Movement?1:2],y.moveTo(b-6,I),y.lineTo(U,V),y.stroke,y.globalAlpha=1,y.fillStyle="#fff",y.strokeStyle="#000",y.font="12px NovaSquare",L[G].CUR.forEach(function(e){e&&(y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5),C.Cursor.IDs&&t(e.I,Z.CursorDrawPos(e.OX,e.X,e.T)-10+C.Cursor.Offset[0],Z.CursorDrawPos(e.OY,e.Y,e.T)-5+C.Cursor.Offset[1]))}),y.globalAlpha=.3,L[(G+1)%2].Level!=L[G].Level&&L[(G+1)%2].CUR.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),N!=L[G].Level&&N!=L[(G+1)%2].Level&&x.forEach(function(e){e&&y.drawImage(v,Z.CursorDrawPos(e.OX,e.X,e.T)-10,Z.CursorDrawPos(e.OY,e.Y,e.T)-5)}),t("View: Bot #"+(G+1),10,590)}function t(e,t,a){return y.lineWidth=2.5,y.globalAlpha=.5,y.strokeText(e,t,a),y.globalAlpha=1,y.fillText(e,t,a),!0}if(y.drawImage(v,U-5,V-5),e&&(2==e.readyState||3==e.readyState))return y.filter="none",y.fillStyle="#000",y.shadowBlur=0,y.globalAlpha=.2,y.fillRect(0,0,800,600),y.fillStyle="#FFF",y.shadowColor="#FFF",y.globalAlpha=.5,y.shadowBlur=20,y.font="60px NovaSquare",y.fillText("Disconnected",400-y.measureText("Disconnected").width/2,330),y.font="30px NovaSquare",void y.fillText("[ Reconnect? ]",400-y.measureText("[ Reconnect? ]").width/2,370);y.font="12px NovaSquare",y.fillStyle="#FFFFFF",y.strokeStyle="#000000",t("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds",790-y.measureText("Game Time: "+Math.floor(W.Seconds/3600)+";"+Math.floor(W.Seconds%3600/60)+";"+Math.floor(W.Seconds%60%60)+" seconds").width,22),t("FPS: "+W.FPS,10,24),t("Level "+N,10,40),t("Cursors: "+M+" / "+O,400-y.measureText("Cursors: "+M+" / "+O).width/2,590),y.fillStyle=M>30?"#FF9999":"#FFFFFF",t(M>30?"Drawing is not available":"Drawing is available.",400-y.measureText(M>30?"Drawing is not available":"Drawing is available.").width/2,574),C.Misc.Help?(y.fillStyle="#000",y.shadowColor="#000",y.globalAlpha=.1,y.shadowBlur=20,y.fillRect(50,50,700,500),y.globalAlpha=1,y.fillStyle="#FFF",y.strokeStyle="#000",y.shadowBlur=0,y.font="24px NovaSquare",t("Help",400-y.measureText("Help").width/2,94),y.font="12px NovaSquare",t("(Press F11 to hide)",400-y.measureText("(Press F11 to hide)").width/2,110),y.font="24px NovaSquare",t("Keybinds",250-y.measureText("Keybinds").width/2,160),t("Images",550-y.measureText("Images").width/2,160),y.font="12px NovaSquare",t("F1 - Toggles Movement",100,180),t("F2 - Toggles WallHack",100,202),t("F3 - Deploys a minion",100,224),t("F4 - Returns a minion",100,246),t("F5 - Returns all deployed minions",100,268),t("F6 - Toggles Spam Clicking",100,290),t("F7 - Toggles Clicking All Buttons",100,312),t("F8 - Switches views",100,334),t("Right Click - Toggles Spam Clicking",100,400)):t("Press F11 to get help",400-y.measureText("Press F11 to get help").width/2,22),W.Frames++,W.FPS++,setTimeout(function{W.FPS--},1e3),requestAnimationFrame(ne)}function le{return"Thanks for using my script! :)"}v.src="img/cursor.png",y.CLS=function{return y.clearRect(0,0,800,800),!0},requestAnimationFrame(ne);var ie=[];function oe{var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,1),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setUint32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&!C.Misc.AllButtons&&e.send(t)}),e&&1==e.readyState&&e.send(t),setTimeout(function{oe},Math.floor(86400*Math.random+43200))}Z={Log:function(e,t=0){Q.length>=24&&Q.shift,Q.push([e,t]),u.clearRect(0,0,getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2),304),f.width=parseInt(getComputedStyle(f).width.substring(0,getComputedStyle(f).width.length-2)),f.height=304,u.font="12px NovaSquare";for(var a=0;a<Q.length;a++)u.fillStyle=0==Q[a][1]?"#ccc":1==Q[a][1]?"#ee0":3==Q[a][1]?"#9f9":"#f99",u.fillText(Q[a][0],5,17+12*a)},AllButtons:function{var e=[],t=0,a=1;B.forEach(function(t){"Button"==t.Type&&e.push(t)}),0!=e.length&&(a=Math.floor(e.length/2),function n{if(!C.Misc.AllButtons)return Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt(b/2),parseInt(I/2)],!0,1),void clearTimeout;Z.Pathfinder([parseInt(L[0].RX/2-3),parseInt(L[0].RY/2)],[parseInt((e[t].X+e[t].W/2)/2),parseInt((e[t].Y+e[t].H/2)/2)],!0,0),Z.Pathfinder([parseInt(L[1].RX/2-3),parseInt(L[1].RY/2)],[parseInt((e[a].X+e[a].W/2)/2),parseInt((e[a].Y+e[a].H/2)/2)],!0,1);var l=new ArrayBuffer(9),i=new DataView(l),o=0;for(i.setUint8(0,2),i.setUint16(1,parseInt((e[t].X+e[t].W/2)/2),!0),i.setUint16(3,parseInt((e[t].Y+e[t].H/2)/2),!0),i.setInt32(5,-1,!0);o<10;o++)L[0].send(l);for(i.setUint16(1,parseInt((e[a].X+e[a].W/2)/2),!0),i.setUint16(3,parseInt((e[a].Y+e[a].H/2)/2),!0),o=0;o<10;o++)L[1].send(l);t++,++a>e.length-1&&(a=Math.floor(e.length/2),t=0),setTimeout(function{n},C.Misc.AllButtonsInterval)})},DOS:function(e,t){var a=[];ie=[];for(var n=0;n<300;n++){a[n]=[],ie[n]=[];for(var l=0;l<400;l++)a[n][l]=0,ie[n][l]=0}-1==t?B.forEach(function(e){if("Wall"==e.Type||"Exit"==e.Type&&1==e.Variant)for(var t=0;t<e.H/2;t++)for(var n=0;n<e.W/2;n++)a[e.Y/2+t][e.X/2+n]=3}):L[t].OBJ.forEach(function(e){if("Wall"==e.Type||"Exit"==e.Type&&1==e.Variant)for(var t=0;t<e.H/2;t++)for(var n=0;n<e.W/2;n++)a[e.Y/2+t][e.X/2+n]=3});for(var i=[e],o=[];i.length;)i.forEach(function(e){var t=e[0],n=e[1];if(n&&t&&3!=a[n][t]){a[n][t]=3;for(var l=t+C.Pathfinder.Speed["X+"];l<400&&!(1&a[n][l]);l+=C.Pathfinder.Speed["X+"])a[n][l]|=1,ie[n][l]||(ie[n][l]=[t,n],o.push([l,n]));for(l=t-C.Pathfinder.Speed["X-"];l>=0&&!(1&a[n][l]);l-=C.Pathfinder.Speed["X-"])a[n][l]|=1,ie[n][l]||(ie[n][l]=[t,n],o.push([l,n]));for(var i=n+C.Pathfinder.Speed["Y+"];i<300&&!(2&a[i][t]);i+=C.Pathfinder.Speed["Y+"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]));for(i=n-C.Pathfinder.Speed["Y-"];i>=0&&!(2&a[i][t]);i-=C.Pathfinder.Speed["Y-"])a[i][t]|=2,ie[i][t]||(ie[i][t]=[t,n],o.push([t,i]))}}),i=o,o=[]},MOVE:function(t,a,n){if(!a.length)return 0;t.Available=!1;var l=new ArrayBuffer(9),i=new DataView(l);i.setUint8(0,C.Pathfinder.Variant),i.setUint16(1,a[0][0],!0),i.setUint16(3,a[0][1],!0),i.setInt32(5,-1,!0),t.send(l);for(var o=0;o<a.length;o++)i.setUint16(1,a[o][0],!0),i.setUint16(3,a[o][1],!0),t.send(l);return t!=e&&(t.Available=!0),a.length},Pathfinder:function(t,a,n=!1,l=-1,i=!0){var o=[];if(-1==l){if(!n&&1!=e.readyState)return!1;Z.DOS(t,l);for(var r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,1!=i||C.Misc.AllButtons||L.forEach(function(e){1!=e.readyState||e.Deployed||Z.MOVE(e,o,n)}),Z.MOVE(e,o,n)}if(!n&&(1!=L[l].readyState||0==L[l].Available||1==L[l].Deployed||C[""]))return!1;Z.DOS(t,l);for(r=a.slice(0);ie[r[1]][r[0]];)o.push(r),r=ie[r[1]][r[0]];return o=o.reverse,Z.MOVE(L[l],o,n)},SendMessage:function(a){Z.Log('Writing message "'+a.join("")+'"...');var n=0,l=0,i=b,o=I;!function r{if(!(n>a.length-1)){var s=new ArrayBuffer(9),c=new DataView(s),h=a[n];if(h.length>1)return n++,void r;if(c.setUint8(0,3),!J[C.Fonts.Selected][h])return console.warn("Unsupported letter "+h+" in font "+C.Fonts.Selected),t.parentElement.style.borderColor="#f99",t.style.color="#f99",void setTimeout(function{t.parentElement.style.borderColor="#ccc",t.style.color="#ccc"},250);J[C.Fonts.Selected][h].forEach(function(t){console.log(t),c.setUint16(1,i/2+n*C.Fonts.Spacing+t[0]*C.Fonts.Width,!0),c.setUint16(3,o/2-t[1]*C.Fonts.Height,!0),c.setUint16(5,i/2+n*C.Fonts.Spacing+t[2]*C.Fonts.Width,!0),c.setUint16(7,o/2-t[3]*C.Fonts.Height,!0),l%(1+L.length-_)?(L[l%(L.length-_)].send(s),console.log("Clients "+l%(L.length-_))):(e.send(s),console.log("Client")),l++,C.Misc.AllButtons&&(l=0)}),n++," "==h?r:setTimeout(function{r},C.Fonts.Interval)}},Z.Log("Finished writing message.",3)},Keypress:function(e){if(e.keyCode>=65&&e.keyCode<=90||32==e.keyCode||e.keyCode>=48&&e.keyCode<=57&&!e.shiftKey){if(R.length>=64)return;e.shiftKey?R.push(String.fromCharCode(e.keyCode).toUpperCase):R.push(String.fromCharCode(e.keyCode).toLowerCase),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=48&&e.keyCode<=57){if(R.length>=64)return;switch(e.keyCode){case 49:R.push("!");break;case 50:R.push("@");break;case 51:R.push("#");break;case 52:R.push("$");break;case 53:R.push("%");break;case 54:R.push("^");break;case 55:R.push("&");break;case 56:R.push("*");break;case 57:R.push("(");break;case 48:R.push(")");break;default:console.warn("Somehow, you got this hidden error message. Congrats! Anyways, you got this because you typed a number with the shift key down, BUT for some reason its character code wasn't supported. Send this spammy thing below to vnx#6389 on discord:\n"+e)}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(13==e.keyCode)R.shift,Z.SendMessage(R),R=["​"],t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px",t.innerText=R.join("");else if(8==e.keyCode){if(R.length<=1)return;e.shiftKey?R.splice(1,1):e.ctrlKey?R=["​"]:R.pop,R==[]&&(R=["​"]),t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=219&&e.keyCode<=222||e.keyCode>=186&&e.keyCode<=191){if(e.shiftKey)switch(e.keyCode){case 219:R.push("{");break;case 220:R.push("\\");break;case 221:R.push("}");break;case 190:R.push(">");break;case 188:R.push("<");break;case 189:R.push("_");break;case 187:R.push("+");break;case 191:R.push("?");break;case 186:R.push(":");break;case 222:R.push('"')}else switch(e.keyCode){case 219:R.push("[");break;case 220:R.push("\\");break;case 221:R.push("]");break;case 190:R.push(".");break;case 188:R.push(",");break;case 189:R.push("-");break;case 187:R.push("=");break;case 191:R.push("/");break;case 186:R.push(";");break;case 222:R.push("'")}t.innerText=R.join(""),t.style.fontSize=R.length>30?24-(R.length-30)/6+"px":"24px"}else if(e.keyCode>=112&&e.keyCode<=122)switch(e.preventDefault,e.keyCode){case 112:C.Movement=!C.Movement,Z.Log(C.Movement?"Enabled movement.":"Disabled movement.");break;case 113:C.Misc.WallHack=!C.Misc.WallHack,Z.Log(C.Misc.WallHack?"Enabled wallhack.":"Disabled wallhack.");break;case 114:$>=L.length&&($=0),L[$].Deployed=!0,Z.Log("Deployed bot #"+($+1)),$++;break;case 115:--$<0&&($=L.length-1),L[$].Deployed=!1,Z.Pathfinder([parseInt(L[$].X/2),parseInt(L[$].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,$),Z.Log("Returned bot #"+($+1));break;case 116:$=0;var a=0;for(Z.Log("Returning all bots...");a<L.length;a++)1==L[a].Deployed&&(L[a].Deployed=!1,Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!1,a));Z.Log("Returned all bots.",3);break;case 117:C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.");break;case 118:if(C.Misc.AllButtons=!C.Misc.AllButtons,Z.Log(C.Misc.AllButtons?"Enabled all button clicking.":"Disabled all button clicking."),C.Misc.AllButtons)Z.AllButtons;else for(a=0;a<L.length;a++)Z.Pathfinder([parseInt(L[a].RX/2),parseInt(L[a].RY/2)],[parseInt(U/2),parseInt(V/2)],!1,a);break;case 122:C.Misc.Help=!C.Misc.Help}},Mouse:function(t){if(U=t.layerX,V=t.layerY,1!=e.readyState&&(y.font="30px NovaSquare",V>=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2?S.style.cursor="pointer":S.style.cursor="auto"),C.Movement&&1==e.readyState&&!function(e,t,a,n){for(var l=0;l<B.length;l++)if("Exit"==B[l].Type&&1==B[l].Variant&&e>B[l].X&&t>B[l].Y&&a<B[l].X+B[l].W&&n<B[l].Y+B[l].H)return!0;return!1}(U,V,U+1,V+1)&&!H){var a=new ArrayBuffer(9),n=new DataView(a);if(n.setUint8(0,1),n.setUint16(1,U/2,!0),n.setUint16(3,V/2,!0),n.setUint32(5,-1,!0),1==e.readyState&&e.send(a),C.Misc.AllButtons)return;for(var l=0;l<L.length;l++)1!=L[l].readyState||L[l].Deployed||L[l].send(a)}},Click:function(t){if(U=t.layerX,V=t.layerY,Y=U,X=V,1!=e.readyState){if(y.font="30px NovaSquare",V>=340&&U>=400-y.measureText("[ Reconnect ]").width/2&&V<=370&&U<=400+y.measureText("[ Reconnect ]").width/2){function a(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip),L=[];for(var n=0;n<C.Connections;n++){var l=n;L.push(new WebSocket(ip)),L[l].binaryType="arraybuffer",L[l].OBJ=[],L[l].CUR=[],L[l].DRA=[],L[l].CLI=[],L[l].X=400,L[l].Y=300,L[l].Level=-1,L[l].LocalPlayers=0,a(l)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose,S.style.cursor="none",Z.Log("Reconnecting...",3)}requestAnimationFrame(ne),W.Seconds=0}if(1==e.readyState){if(t.shiftKey)H=!0;else{Z.Pathfinder([parseInt(b/2),parseInt(I/2)],[parseInt(U/2),parseInt(V/2)],!1,-1),setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown);var i=new ArrayBuffer(9),o=new DataView(i);o.setUint8(0,2),o.setUint16(1,U/2,!0),o.setUint16(3,V/2,!0),o.setUint32(5,-1,!0);n=0;if(C.Misc.AllButtons)for(n<C.Click.Weight;n++)e.send(i);else setInterval(function{++n<=C.Click.Weight?n%(1+L.length-K)?L[n%(L.length-K)].Deployed||1!=L[n%(L.length-K)].readyState||L[n%(L.length-K)].send(i):e.send(i):clearInterval},C.Click.Interval.Normal)}j=!0}},Unclick:function(e){U=e.layerX,V=e.layerY,H=!1,j=!1},NewObjects:function(e,t,a){switch(BinType=e.getUint8(t),console.log(BinType),BinType){case 0:B[a].Type="Text";break;case 1:B[a].Type="Wall";break;case 2:B[a].Type="Exit";break;case 3:B[a].Type="Plate";break;case 4:B[a].Type="Button";break;default:B[a].Type="Unknown"}if("Text"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].Size=e.getUint8(t+5),B[a].Centered=!!e.getUint8(t+6),t+=7;var n="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(n+=String.fromCharCode(i),i=0),0!=i&&(n+=String.fromCharCode(i));return B[a].Text=n,B[a].Variant=0,t+1}if("Wall"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0);for(n=e.getUint32(t+9,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:"FF0000"==n.toUpperCase?B[a].Variant=2:B[a].Variant=0,t+13}if("Exit"==B[a].Type)return B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase||"FF0000"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase||"FFFF00"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase||"00FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase||"0000FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase||"FF00FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=7,t+15}if("Button"==B[a].Type){B[a].X=2*e.getUint16(t+1,!0),B[a].Y=2*e.getUint16(t+3,!0),B[a].W=2*e.getUint16(t+5,!0),B[a].H=2*e.getUint16(t+7,!0),B[a].C=e.getUint16(t+9,!0);for(n=e.getUint32(t+11,!0).toString(16);n.length<6;)n="0"+n;return"000000"==n?B[a].Variant=0:"FF9999"==n.toUpperCase?B[a].Variant=1:"FFFF99"==n.toUpperCase?B[a].Variant=2:"99FFFF"==n.toUpperCase?B[a].Variant=3:"9999FF"==n.toUpperCase?B[a].Variant=4:"3333FF"==n.toUpperCase?B[a].Variant=5:"FF99FF"==n.toUpperCase?B[a].Variant=6:B[a].Variant=0,t+15}console.log("unknown object thing"),B[a].X=e.getUint16(t+1,!0)||0,B[a].Y=e.getUint16(t+3,!0)||0,B[a].W=e.getUint16(t+5,!0)||100,B[a].H=e.getUint16(t+7,!0)||100},BNewObjects:function(e,t,a,n){switch(BinType=e.getUint8(t),BinType){case 0:L[n].OBJ[a].Type="Text";break;case 1:L[n].OBJ[a].Type="Wall";break;case 2:L[n].OBJ[a].Type="Exit";break;case 3:L[n].OBJ[a].Type="Plate";break;case 4:L[n].OBJ[a].Type="Button";break;default:L[n].OBJ[a].Type="Unknown"}if("Text"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].Size=e.getUint8(t+5),L[n].OBJ[a].Centered=!!e.getUint8(t+6),t+=7;var l="";for(i=0,i2=0;0!=(i2=e.getUint8(t));++t)i<<=8,i|=i2,128&i||(l+=String.fromCharCode(i),i=0),0!=i&&(l+=String.fromCharCode(i));return L[n].OBJ[a].Text=l,L[n].OBJ[a].Variant=0,t+1}if("Wall"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0);for(l=e.getUint32(t+9,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=2:L[n].OBJ[a].Variant=0,t+13}if("Exit"==L[n].OBJ[a].Type)return L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].Variant=0==e.getUint8(t+9)?0:1,t+10;if("Plate"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase||"FF0000"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase||"FFFF00"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase||"00FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase||"0000FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase||"FF00FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=7,t+15}if("Button"==L[n].OBJ[a].Type){L[n].OBJ[a].X=2*e.getUint16(t+1,!0),L[n].OBJ[a].Y=2*e.getUint16(t+3,!0),L[n].OBJ[a].W=2*e.getUint16(t+5,!0),L[n].OBJ[a].H=2*e.getUint16(t+7,!0),L[n].OBJ[a].C=e.getUint16(t+9,!0);for(l=e.getUint32(t+11,!0).toString(16);l.length<6;)l="0"+l;return"000000"==l?L[n].OBJ[a].Variant=0:"FF9999"==l.toUpperCase?L[n].OBJ[a].Variant=1:"FFFF99"==l.toUpperCase?L[n].OBJ[a].Variant=2:"99FFFF"==l.toUpperCase?L[n].OBJ[a].Variant=3:"9999FF"==l.toUpperCase?L[n].OBJ[a].Variant=4:"3333FF"==l.toUpperCase?L[n].OBJ[a].Variant=5:"FF99FF"==l.toUpperCase?L[n].OBJ[a].Variant=6:L[n].OBJ[a].Variant=0,t+15}L[n].OBJ[a].X=e.getUint16(t+1,!0)||0,L[n].OBJ[a].Y=e.getUint16(t+3,!0)||0,L[n].OBJ[a].W=e.getUint16(t+5,!0)||100,L[n].OBJ[a].H=e.getUint16(t+7,!0)||100},WSMessageS00:function(e){return ee=e.getUint32(1,!0),Z.Log("Your ID is "+ee+"."),!0},CursorDrawPos:function(e,t,a){var n=t-e,l=(new Date-a)/C.Cursor.AnimationDelay,i=0>=l?0:1<=l?1:l;return e+i*i*(3-2*i)*n},WSMessageS01:function(t,a){H&&!C.Click.HoldToSpam&&function{var t=new ArrayBuffer(9),a=new DataView(t);if(a.setUint8(0,3),a.setUint16(1,parseInt(Y/2),!0),a.setUint16(3,parseInt(X/2),!0),a.setUint16(5,parseInt(U/2),!0),a.setUint16(7,parseInt(V/2),!0),e.send(t),1e3==G)for(var n=0;n<L.length;n++)1!=L[n].readyState||L[n].Deployed||L[n].Level!=N||C.Misc.AllButtons||L[n].send(t)},C.Movement&&(Y=U,X=V);var n=t.getUint16(1,!0),l=new Array(512);M=t.getUint16(1,!0);for(var i=0;i<n;i++){var o=t.getUint32(3+8*i,!0),r=t.getUint16(7+8*i,!0),s=t.getUint16(9+8*i,!0);x[o]||(x[o]={I:o,OX:2*r+6,OY:2*s,X:2*r+6,Y:2*s+6,T:new Date}),x[o]={I:o,OX:Z.CursorDrawPos(x[o].OX,x[o].X,x[o].T),OY:Z.CursorDrawPos(x[o].OY,x[o].Y,x[o].T),X:2*r+6,Y:2*s,T:new Date},l[o]=!0,o==ee&&(b=x[o].OX,I=x[o].OY,RX=2*r+6,RY=2*s)}for(i=0;i<x.length;i++)x[i]&&!l[i]&&(x[i]=void 0);var c=3+8*n,h=t.getUint16(c,!0);for(i=0;i<h;i++){r=t.getUint16(c+2+4*i,!0),s=t.getUint16(c+4+4*i,!0);setTimeout(function{k.push({X:2*r-10,Y:2*s,T:new Date,L:N})},C.Click.Delay),setTimeout(function{k.shift},C.Click.Expiration)}c=c+4+4*h;var p=t.getUint16(c-2,!0);p>0&&console.log("wallupdates:"+p);for(i=0;i<p;i++){o=t.getUint32(c,!0);for(var d=0;d<B.length;d++)B[d].I==o&&"Wall"==B[d].Type&&B.splice(d,1);c+=4}c+=2;var F=t.getUint16(c-2,!0);F>0&&console.log("mapupdates:"+F);for(i=0;i<F;i++){o=t.getUint32(c,!0);function T{for(var e=0;e<B.length;e++)if(B[e].I==o)return e;return B.push({I:o}),B.length-1}var f=T;c+=4,c=Z.NewObjects(t,c,f)}var u=t.getUint16(c,!0);for(i=0;i<u;i++){var m=t.getUint16(c+2+8*i,!0),g=t.getUint16(c+4+8*i,!0),S=t.getUint16(c+6+8*i,!0),y=t.getUint16(c+8+8*i,!0);A.push({X:[2*m,2*S],Y:[2*g,2*y],T:new Date,L:N}),setTimeout(function{A.shift},C.Drawing.Expiration)}return c=c+2+8*u,a.data.byteLength>=c+4&&(O=t.getUint32(c,!0)),!0},WSMessageS04:function(t){if(C.Bots.NewLevelReturn){C.Misc.AllButtons&&Z.Log("Disabled all button clicking."),C.Misc.AllButtons=!1;for(var a=0;a<L.length;a++)1==L[a].readyState&&Z.Pathfinder([parseInt(L[a].X/2),parseInt(L[a].Y/2)],[parseInt(U/2),parseInt(V/2)],!0,a)}B=[],x=[],U=2*t.getUint16(1,!0),V=2*t.getUint16(3,!0),Y=U,X=V,A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=t.getUint16(5,!0),OFF=7;for(a=0;a<Objects;a++)B.push({I:t.getUint32(OFF,!0)}),OFF+=4,OFF=Z.NewObjects(t,OFF,B.length-1);e.Available=!1,L[0].Available=!1,L[1].Available=!1,setTimeout(function{e.Available=!0,L[0].Available=!0,L[1].Available=!0},1e3),P=[],B.forEach(function(e){("Wall"==e.Type&&0==e.Variant||"Text"==e.Type||"Exit"==e.Type)&&P.push(e)});var l=N;if(N>62)N++;else{N="??";for(a=0;a<E.length;a++)JSON.stringify(E[a])===JSON.stringify(P)&&(N=a);"??"==N&&(N=l+1)}return n.innerText="Level "+N,Z.Log(l>N?"You went back a level.":l==N?"You teleported back to the spawn.":"You advanced a level",l<N?3:0),!0},WSMessageS05:function(t){if(C.Misc.WallHack&&e.Available&&!(e.bufferedAmount>0)&&(e.Available=!1,setTimeout(function{e.Available=!0},C.Pathfinder.Cooldown),Z.Pathfinder([parseInt(RX/2-3),parseInt(RY/2)],[parseInt(U/2),parseInt(V/2)],!1,-1,!C.Pathfinder.CalculateAll),C.Pathfinder.CalculateAll)){for(var a=0;a<L.length;a++)L[a].Level==N&&0==L[a].Deployed&&Z.Pathfinder([parseInt(L[a].X),parseInt(L[a].Y)],[parseInt(U/2),parseInt(V/2)],!1,a);return!1}},WSMessageSplitter:function(e){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSMessageS00(ABC):1==ABC.getUint8(0)?Z.WSMessageS01(ABC,e):4==ABC.getUint8(0)?Z.WSMessageS04(ABC):5==ABC.getUint8(0)&&Z.WSMessageS05(ABC)},WSOpen:function(e){Z.Log("Client connected!",3),o.style.color="#9f9",o.innerText="Connected",console.log("%cWS: %cClient Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSClose:function(e){Z.Log("Client disconnected.",2),o.style.color="#f99",o.innerText="Disconnected",S.style.cursor="auto",console.log("%cWS: %cClient Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;"),L.forEach(function(e){e.close})},WSBOpen:function(e,t){Z.Log("Bot #"+t+" connected!",3),0==t?(h.style.color="#9f9",h.innerText="Connected"):1==t&&(BotStateDisplay2.style.color="#9f9",BotStateDisplay2.innerText="Connected"),console.log("%cWS: %cNew Bot Client Opened","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #77ff77; font-size: 18px;")},WSBClose:function(e,t){Z.Log("Bot #"+t+" disconnected.",2),0==t?(h.style.color="#f99",h.innerText="Disconnected"):1==t&&(BotStateDisplay2.style.color="#f99",BotStateDisplay2.innerText="Disconnected"),_++,console.log("%cWS: %cA Bot Client Closed","font-family: Monospace; color: #cccccc; font-size: 18px;","font-family: monospace; color: #ff7777; font-size: 18px;")},WSBMessageS00:function(e,t){return L[t].I=e.getUint32(1,!0),q.push(e.getUint32(1,!0)),Z.Log("Bot #"+(t+1)+"'s ID is "+e.getUint32(1,!0)),!0},WSBMessageS01:function(e,t){var a,n,l=e.getUint16(1,!0),i=new Array(512);M=e.getUint16(1,!0),H&&!C.Click.HoldToSpam&&(a=new ArrayBuffer(9),(n=new DataView(a)).setUint8(0,3),n.setUint16(1,parseInt(Y/2),!0),n.setUint16(3,parseInt(X/2),!0),n.setUint16(5,parseInt(U/2),!0),n.setUint16(7,parseInt(V/2),!0),1e3!=G&&1==L[t].readyState&&!L[t].Deployed&&L[t].Level==L[G].Level&&!C.Misc.AllButtons&&L[t].send(a)),C.Movement&&(L[t].OX=U,L[t].OY=V);for(var o=0;o<l;o++){var r=e.getUint32(3+8*o,!0),s=e.getUint16(7+8*o,!0),c=e.getUint16(9+8*o,!0);L[t].CUR[r]||(L[t].CUR[r]={I:r,OX:2*s+6,OY:2*c,X:2*s+6,Y:2*c+6,T:new Date}),L[t].CUR[r]={I:r,OX:Z.CursorDrawPos(L[t].CUR[r].OX,L[t].CUR[r].X,L[t].CUR[r].T),OY:Z.CursorDrawPos(L[t].CUR[r].OY,L[t].CUR[r].Y,L[t].CUR[r].T),X:2*s+6,Y:2*c,T:new Date},i[r]=!0,r==L[t].I&&(L[t].X=L[t].CUR[r].OX,L[t].Y=L[t].CUR[r].OY,L[t].RX=2*s+6,L[t].RY=2*c)}for(o=0;o<L[t].CUR.length;o++)L[t].CUR[o]&&!i[o]&&(L[t].CUR[o]=void 0);var h=3+8*l,p=e.getUint16(h,!0);for(o=0;o<p;o++){s=e.getUint16(h+2+4*o,!0),c=e.getUint16(h+4+4*o,!0);setTimeout(function{L[t].CLI.push({X:2*s-10,Y:2*c,T:new Date,L:N})},C.Click.Delay),setTimeout(function{L[t].CLI.shift},C.Click.Expiration)}h=h+4+4*p;var d=e.getUint16(h-2,!0);for(o=0;o<d;o++){r=e.getUint32(h,!0);for(var F=0;F<L[t].OBJ.length;F++)L[t].OBJ[F].I==r&&L[t].OBJ.splice(F,1);h+=4}h+=2;var T=e.getUint16(h-2,!0);for(o=0;o<T;o++){r=e.getUint32(h,!0);function f{for(var e=0;e<L[t].OBJ.length;e++)if(L[t].OBJ[e].I==r)return e;return L[t].OBJ.push({I:r}),L[t].OBJ.length-1}var u=f;h+=4,h=Z.BNewObjects(e,h,u,t)}var m=e.getUint16(h,!0);for(o=0;o<m;o++){var g=e.getUint16(h+2+8*o,!0),S=e.getUint16(h+4+8*o,!0),y=e.getUint16(h+6+8*o,!0),W=e.getUint16(h+8+8*o,!0);L[t].DRA.push({X:[2*g,2*y],Y:[2*S,2*W],T:new Date,L:N}),setTimeout(function{L[t].DRA.shift},C.Drawing.Expiration)}return!0},WSBMessageS04:function(e,t){L[t].OBJ=[],L[t].CUR=[],L[t].X=2*e.getUint16(1,!0),L[t].Y=2*e.getUint16(3,!0),L[t].OX=2*e.getUint16(1,!0),L[t].OY=2*e.getUint16(3,!0),A.forEach(function(e){e.X=[0,0],e.Y=[0,0]}),k.forEach(function(e){e.X=0,e.Y=0}),Objects=e.getUint16(5,!0),OFF=7;for(var a=0;a<Objects;a++)L[t].OBJ.push({I:e.getUint32(OFF,!0)}),OFF+=4,OFF=Z.BNewObjects(e,OFF,L[t].OBJ.length-1,t);L[t].OBJLAYOUT=[],L[t].OBJ.forEach(function(e){("Wall"==e.Type&&0==e.Variant||"Text"==e.Type||"Exit"==e.Type)&&L[t].OBJLAYOUT.push(e)});var n=L[t].Level;if(L[t].Level>62)L[t].Level++;else{L[t].Level="??";for(a=0;a<E.length;a++)JSON.stringify(E[a])===JSON.stringify(L[t].OBJLAYOUT)&&(L[t].Level=a);"??"==L[t].Level&&(L[t].Level=n+1)}return 0==t?s.innerText="Level "+L[t].Level:1==t&&(d.innerText="Level "+L[t].Level),Z.Log(n>L[t].Level?"Bot #"+(t+1)+" went back a level.":n==L[t].Level?"Bot #"+(t+1)+" teleported back to the spawn.":"Bot #"+(t+1)+" advanced a level",n<L[t].Level?3:0),!0},WSBMessageSplitter:function(e,t){ABC=new DataView(e.data),0==ABC.getUint8(0)?Z.WSBMessageS00(ABC,t):1==ABC.getUint8(0)?Z.WSBMessageS01(ABC,t):4==ABC.getUint8(0)&&Z.WSBMessageS04(ABC,t)}},FixCanvas=function{S.style.width="800px",S.style.height="600px",S.width=800,S.height=600,S.style.backgroundColor="#fefefe"},FixCanvas,CheckForHost=function{"http://cursors.io"!=window.origin&&alert("The script has detected you're not playing on cursors.io. Please do not try using any other sites with this script. Nothing is stopping you, but be warned, the script will be VERY BUGGY, and very likely not even work at all.")},CheckForHost,CreateGUI=function{var e=document.getElementsByTagName("div");e[3].style.display="none",e[4].style.display="none",e[1].style.border="2px solid #ccc",e[1].style.marginBottom="5px",e[1].style.borderRadius="10px",S.style.borderRadius="7px",S.style.cursor="none",ae=document.createElement("div"),document.body.appendChild(ae),ae.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: 800px; margin: 5px auto;";var i=document.createElement("div");t=document.createElement("p"),i.style.cssText="width: 750px; margin-left: 25px; transition: 0.25s;",ae.appendChild(i),t.style.cssText="font-family: NovaSquare; color: #ccc; margin-left: 10px; transition: 0.25s; font-size: "+(R.length>20?24-(R.length-20)+"px;":"24px;"),i.appendChild(t),t.innerText="​",BotView=document.createElement("div"),BotView.style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: 5px;",document.body.appendChild(BotView),(a=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(a),(r=document.createElement("div")).style.cssText="height: 100px; border: 0px solid #ccc; border-bottom-width: 2px;",BotView.appendChild(r),(p=document.createElement("div")).style.cssText="height: 100px;",BotView.appendChild(p),(l=document.createElement("div")).innerText="You",l.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(l),(n=document.createElement("div")).innerText="Level 0",n.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",a.appendChild(n),(o=document.createElement("div")).innerText="Connecting",o.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",a.appendChild(o),(c=document.createElement("div")).innerText="Bot #1",c.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(c),(s=document.createElement("div")).innerText="Level 0",s.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",r.appendChild(s),(h=document.createElement("div")).innerText="Connecting",h.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",r.appendChild(h),(F=document.createElement("div")).innerText="Bot #2",F.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 5px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(F),(d=document.createElement("div")).innerText="Level 0",d.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ccc; text-align: center;",p.appendChild(d),BotStateDisplay2=document.createElement("div"),BotStateDisplay2.innerText="Connecting",BotStateDisplay2.style.cssText="font-family: NovaSquare; font-size: 18px; margin-top: 2px; margin-left: 5px; color: #ff9; text-align: center;",p.appendChild(BotStateDisplay2),r.style.cursor="pointer",a.style.cursor="pointer",p.style.cursor="pointer",r.onclick=function{G=0},p.onclick=function{G=1},a.onclick=function{G=1e3},(T=document.createElement("div")).style.cssText="border: 2px solid #ccc; border-radius: 10px; width: calc(50% - 425px); height: 304px; position: absolute; top: 20px; left: calc(50% + 415px);",document.body.appendChild(T),(f=document.createElement("canvas")).style.cssText="height: 304px; width: calc(50vw - 425px); border-radius: 7px;",T.appendChild(f),u=f.getContext("2d")},CreateGUI,PredefineSettings=function{C={Themes:{Basic:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:-1,0,Wall:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Exit:-1,0],[-1,0,Plate:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0,Button:-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0],[-1,0},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3,"#ff9900"],ClickColor:"#000",DrawColor:"#000",DrawAlpha:.3,DrawWidth:1}},Shaded:{Fill:{Text:",Wall:",Exit:",Plate:",Button:"},Shadow:{Text:",Wall:",Exit:",Plate:",Button:"},Misc:{LineWidth:2,PlateTextAlpha:.5,ButtonTextAlpha:.5,CursorOutline:["#ffff00","#0000ff","#ff0000",.3],ClickColor:"#000"}}},ThemeSelected:"Basic",Movement:!0,Connections:2,PageSelected:"Fonts",PageHelp:!1,Fonts:{Selected:"Basic",Width:1,Height:1,Spacing:3,Interval:150,Weight:1},Pathfinder:{Cooldown:200,Variant:1,CalculateAll:!1,Speed:{"X+":1,"X-":1,"Y+":1,"Y-":1}},Click:{Delay:0,Weight:10,SpamClicking:!1,Interval:{Normal:5,Spam:25},HoldToSpam:!1,Expiration:300},Drawing:{Expiration:1e4},Cursor:{IDs:!0,Offset:[0,0],AnimationDelay:100},Bots:{NewLevelReturn:!0},Misc:{WallHack:!0,Help:!1,Debug:!0,RightClickGUI:!0,AllButtons:!1,AllButtonsInterval:333}}},PredefineSettings,PredefineStats=function{W={Frames:0,Seconds:0,FPS:0}},PredefineStats,setInterval(function{W.Seconds++},1e3),setInterval(function{if(C.Click.SpamClicking||C.Click.HoldToSpam&&j&&!H){var t=new ArrayBuffer(9),a=new DataView(t);a.setUint8(0,2),a.setUint16(1,Y/2,!0),a.setUint16(3,X/2,!0),a.setInt32(5,-1,!0),L.forEach(function(e){1==e.readyState&&!e.Deployed&&e.Available&&e.Level==N&&e.send(t)}),1==e.readyState&&e.Available&&e.send(t)}},C.Click.Interval.Spam),setInterval(function{"​"!=R[0]&&R.unshift("​")},50),setInterval(function{s.style.color=L[0].Level<N||L[0].Level<L[1].Level?"#ee0":"#ccc",d.style.color=L[1].Level<N||L[1].Level<L[0].Level?"#ee0":"#ccc",n.style.color=L[0].Level>N||L[1].Level>N?"#f99":"#ccc"},100),oe,PredefineLevels=function{E=[[{I:0,Type:"Text",X:400,Y:100,Size:68,Centered:!0,Text:"Welcome",Variant:0},{I:1,Type:"Text",X:400,Y:150,Size:20,Centered:!0,Text:"You participate in this experiment with your mouse cursor",Variant:0},{I:2,Type:"Text",X:400,Y:184,Size:20,Centered:!0,Text:"Move to the next level by putting your mouse on the green area",Variant:0},{I:3,Type:"Exit",X:600,Y:350,W:100,H:100,Variant:0}],[{I:0,Type:"Exit",X:0,Y:280,W:40,H:40,Variant:0},{I:3,Type:"Wall",X:0,Y:0,W:520,H:40,Variant:0},{I:4,Type:"Wall",X:560,Y:40,W:240,H:40,Variant:0},{I:5,Type:"Wall",X:40,Y:80,W:160,H:40,Variant:0},{I:6,Type:"Wall",X:240,Y:80,W:280,H:40,Variant:0},{I:7,Type:"Wall",X:560,Y:80,W:40,H:40,Variant:0},{I:8,Type:"Wall",X:40,Y:120,W:40,H:40,Variant:0},{I:9,Type:"Wall",X:160,Y:120,W:120,H:40,Variant:0},{I:10,Type:"Wall",X:400,Y:120,W:40,H:40,Variant:0},{I:11,Type:"Wall",X:480,Y:120,W:40,H:40,Variant:0},{I:12,Type:"Wall",X:640,Y:120,W:120,H:40,Variant:0},{I:13,Type:"Wall",X:40,Y:160,W:80,H:40,Variant:0},{I:14,Type:"Wall",X:320,Y:160,W:40,H:40,Variant:0},{I:15,Type:"Wall",X:400,Y:160,W:40,H:40,Variant:0},{I:16,Type:"Wall",X:480,Y:160,W:40,H:40,Variant:0},{I:17,Type:"Wall",X:560,Y:160,W:120,H:40,Variant:0},{I:18,Type:"Wall",X:720,Y:160,W:40,H:40,Variant:0},{I:19,Type:"Wall",X:80,Y:200,W:280,H:40,Variant:0},{I:20,Type:"Wall",X:560,Y:200,W:40,H:40,Variant:0},{I:21,Type:"Wall",X:720,Y:200,W:40,H:40,Variant:0},{I:22,Type:"Wall",X:0,Y:240,W:40,H:40,Variant:0},{I:23,Type:"Wall",X:80,Y:240,W:40,H:40,Variant:0},{I:24,Type:"Wall",X:240,Y:240,W:40,H:40,Variant:0},{I:25,Type:"Wall",X:320,Y:240,W:280,H:40,Variant:0},{I:26,Type:"Wall",X:640,Y:240,W:120,H:40,Variant:0},{I:27,Type:"Wall",X:80,Y:280,W:120,H:40,Variant:0},{I:28,Type:"Wall",X:240,Y:280,W:40,H:40,Variant:0},{I:29,Type:"Wall",X:320,Y:280,W:40,H:40,Variant:0},{I:30,Type:"Wall",X:560,Y:280,W:40,H:40,Variant:0},{I:31,Type:"Wall",X:680,Y:280,W:80,H:40,Variant:0},{I:32,Type:"Wall",X:0,Y:320,W:120,H:40,Variant:0},{I:33,Type:"Wall",X:240,Y:320,W:40,H:40,Variant:0},{I:34,Type:"Wall",X:320,Y:320,W:40,H:40,Variant:0},{I:35,Type:"Wall",X:400,Y:320,W:240,H:40,Variant:0},{I:36,Type:"Wall",X:160,Y:360,W:120,H:40,Variant:0},{I:37,Type:"Wall",X:320,Y:360,W:40,H:40,Variant:0},{I:38,Type:"Wall",X:600,Y:360,W:120,H:40,Variant:0},{I:39,Type:"Wall",X:0,Y:400,W:120,H:40,Variant:0},{I:40,Type:"Wall",X:160,Y:400,W:40,H:40,Variant:0},{I:41,Type:"Wall",X:240,Y:400,W:40,H:40,Variant:0},{I:42,Type:"Wall",X:320,Y:400,W:240,H:40,Variant:0},{I:43,Type:"Wall",X:680,Y:400,W:80,H:40,Variant:0},{I:44,Type:"Wall",X:160,Y:440,W:40,H:40,Variant:0},{I:45,Type:"Wall",X:240,Y:440,W:40,H:40,Variant:0},{I:46,Type:"Wall",X:520,Y:440,W:40,H:40,Variant:0},{I:47,Type:"Wall",X:600,Y:440,W:40,H:40,Variant:0},{I:48,Type:"Wall",X:720,Y:440,W:40,H:40,Variant:0},{I:49,Type:"Wall",X:40,Y:480,W:160,H:40,Variant:0},{I:50,Type:"Wall",X:240,Y:480,W:160,H:40,Variant:0},{I:51,Type:"Wall",X:440,Y:480,W:40,H:40,Variant:0},{I:52,Type:"Wall",X:520,Y:480,W:40,H:40,Variant:0},{I:53,Type:"Wall",X:600,Y:480,W:40,H:40,Variant:0},{I:54,Type:"Wall",X:680,Y:480,W:80,H:40,Variant:0},{I:55,Type:"Wall",X:40,Y:520,W:40,H:40,Variant:0},{I:56,Type:"Wall",X:360,Y:520,W:40,H:40,Variant:0},{I:57,Type:"Wall",X:440,Y:520,W:40,H:40,Variant:0},{I:58,Type:"Wall",X:520,Y:520,W:40,H:40,Variant:0},{I:59,Type:"Wall",X:600,Y:520,W:40,H:40,Variant:0},{I:60,Type:"Wall",X:680,Y:520,W:40,H:40,Variant:0},{I:61,Type:"Wall",X:120,Y:560,W:200,H:40,Variant:0},{I:62,Type:"Wall",X:440,Y:560,W:40,H:40,Variant:0},{I:63,Type:"Wall",X:600,Y:560,W:40,H:40,Variant:0}],[],[][{I:28,Type:"Exit",X:700,Y:550,W:50,H:50,Variant:0}]]},PredefineLevels,PredefineAlphabet=function{J={Basic:{A:0,0,0,4],[0,4,2,4],[2,4,2,0],[0,2,2,2,a:0,2,2,2],[2,2,2,0],[2,0,0,0],[0,0,0,1],[0,1,2,1,B:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,b:0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,C:2,4,0,4],[0,4,0,0],[0,0,2,0,c:2,2,0,2],[0,2,0,0],[0,0,2,0,D:0,0,0,4],[0,4,2,3],[2,3,2,1],[2,1,0,0,d:2,4,2,0],[2,0,0,0],[0,0,0,2],[0,2,2,2,E:2,4,0,4],[0,4,0,0],[0,0,2,0],[0,2,2,2,e:0,1,2,1],[2,1,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,F:2,4,0,4],[0,4,0,0],[0,2,1,2,f:2,4,1,4],[1,4,1,0],[0,2,2,2,G:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[1,2,2,2,g:0,-2,2,-2],[2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,H:0,0,0,4],[0,2,2,2],[2,0,2,4,h:0,4,0,0],[0,2,2,2],[2,2,2,0,I:0,0,2,0],[0,4,2,4],[1,0,1,4,i:1,0,0,0],[0,0,0,2,J:0,4,2,4],[2,4,2,1],[2,1,1,0],[1,0,0,1,j:0,-1,1,-2],[1,-2,2,-1],[2,-1,2,2,K:0,0,0,4],[0,2,2,4],[0,2,2,0,k:0,0,0,4],[0,1,2,2],[0,1,2,0,L:0,4,0,0],[0,0,2,0,l:0,4,0,0],[0,0,1,0,M:0,0,0,4],[0,4,1,3],[1,3,2,4],[2,4,2,0,m:0,0,0,2],[0,2,2,2],[2,2,2,0],[1,2,1,0,N:0,0,0,4],[0,4,2,0],[2,0,2,4,n:0,0,0,2],[0,2,2,2],[2,2,2,0,O:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0,o:0,0,2,0],[2,0,2,2],[2,2,0,2],[0,2,0,0,P:0,0,0,4],[0,4,2,4],[2,4,2,2],[2,2,0,2,p:0,-2,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,Q:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[1,1,3,-1,q:2,-2,2,2],[2,2,0,2],[0,2,0,0],[0,0,2,0,R:0,0,0,4],[0,4,2,3],[2,3,0,2],[0,2,2,0,r:0,0,0,2],[0,2,2,2,S:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,s:2,2,0,2],[0,2,0,1],[0,1,2,1],[2,1,2,0],[2,0,0,0,T:0,4,2,4],[1,4,1,0,t:0,3,2,3],[1,4,1,0,U:0,4,0,0],[0,0,2,0],[2,0,2,4,u:0,2,0,0],[0,0,2,0],[2,0,2,2,V:0,4,1,0],[1,0,2,4,v:0,2,1,0],[1,0,2,2,W:0,4,0,0],[0,0,1,2],[1,2,2,0],[2,0,2,4,w:0,2,0,0],[0,0,1,1],[1,1,2,0],[2,0,2,2,X:0,0,2,4],[0,4,2,0,x:0,0,2,2],[0,2,2,0,Y:0,4,1,2],[1,2,2,4],[1,2,1,0,y:0,2,1,0],[2,2,0,-2,Z:0,4,2,4],[2,4,0,0],[0,0,2,0,z:0,2,2,2],[2,2,0,0],[0,0,2,0,1:0,4,1,4],[1,4,1,0],[0,0,2,0,2:2,4,0,4],[2,4,2,2],[0,2,2,2],[0,2,0,0],[2,0,0,0,3:0,4,2,3],[2,3,2,1],[2,1,0,0],[0,2,2,2,4:2,0,2,4],[2,4,0,2],[0,2,2,2,5:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0,6:2,4,0,4],[0,4,0,0],[0,0,2,0],[2,0,2,2],[2,2,0,2,7:0,4,2,4],[2,4,0,0,8:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,2,2,2,9:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,2],[0,2,2,2,0:0,0,2,0],[2,0,2,4],[2,4,0,4],[0,4,0,0],[0,0,2,4,"!":0,0,0,1],[0,2,0,4,"@":2,0,0,0],[0,0,0,4],[0,4,2,4],[2,4,2,1],[2,1,1,1],[1,1,1,3,"#":.5,0,.5,4],[1.5,0,1.5,4],[0,1,2,1],[0,3,2,3,$:2,4,0,4],[0,4,0,2],[0,2,2,2],[2,2,2,0],[2,0,0,0],[1,4.5,1,-.5,"%":0,0,2,4],[1,0,2,0],[2,0,2,1],[2,1,1,1],[1,1,1,0],[0,3,1,3],[1,3,1,4],[1,4,0,4],[0,4,0,3,"^":0,3,1,4],[1,4,2,3,"&":0,1,2,1],[2,1,2,3],[2,3,0,3],[0,2,2,2],[1,0,1,4,"*":0,1,2,3],[1,1,1,3],[2,1,0,3],[2,2,1,3,"(":2,4,0,3],[0,3,0,1],[0,1,2,0,")":0,4,2,3],[2,3,2,1],[2,1,0,0,".":0,0,1,0],[1,0,1,1],[1,1,0,1],[0,1,0,0,",":0,0,-1,-1,"<":2,3,0,2],[0,2,2,1,">":0,3,2,2],[2,2,0,1,"/":0,0,2,4,"\\":0,4,2,0,"[":2,4,0,4],[0,4,0,0],[0,0,2,0,"]":0,4,2,4],[2,4,2,0],[2,0,0,0,"{":2,4,0,4],[0,4,0,0],[0,0,2,0],[-1,2,1,2,"}":0,4,2,4],[2,4,2,0],[2,0,0,0],[1,2,3,2,"-":0,2,2,2,_:0,0,2,0,":":1,0,1,1],[1,3,1,4,";":1,0,0,-1],[1,3,1,4,"'":1,3,1,4,'"':.5,3,.5,4],[1.5,3,1.5,4,"`":.5,4,1.5,3,"~":0,1.5,.5,2.5],[.5,2.5,1.5,.5],[1.5,.5,2,1.5,"|":1,0,1,4,"?":0,4,2,4],[2,4,2,3],[2,3,0,3],[0,3,0,2],[0,2,2,2],[1,0,1,1," ":0,0,0,0}}},PredefineAlphabet,CreateConnection=function{function t(e){L[e].onopen=function(t){Z.WSBOpen(t,e)},L[e].onclose=function(t){Z.WSBClose(t,e)},L[e].onmessage=function(t){Z.WSBMessageSplitter(t,e)}}e=new WebSocket(ip);for(var a=0;a<C.Connections;a++){var n=a;L.push(new WebSocket(ip)),L[n].binaryType="arraybuffer",L[n].OBJ=[],L[n].CUR=[],L[n].DRA=[],L[n].CLI=[],L[n].X=400,L[n].Y=300,L[n].Level=-1,L[n].LocalPlayers=0,t(n)}e.binaryType="arraybuffer",e.onopen=Z.WSOpen,e.onmessage=Z.WSMessageSplitter,e.onclose=Z.WSClose},CreateConnection,document.onkeydown=Z.Keypress,canvas.onmousemove=Z.Mouse,canvas.onmousedown=Z.Click,canvas.onmouseup=Z.Unclick,document.oncontextmenu=function(e){e.preventDefault,C.Click.SpamClicking=!C.Click.SpamClicking,Z.Log(C.Click.SpamClicking?"Enabled spam clicking.":"Disabled spam clicking.")};C.Fonts.Spacing=9,C.Fonts.Width=3,C.Fonts.Height=3;}