(function(CONFIG){ /* PARSE CONFIG */ CONFIG = JSON.parse(CONFIG); /* CHECK DOMAIN TYPE */ const isLocalhost = CONFIG.localhost.includes(location.hostname); const isRootDomain = !isLocalhost && location.hostname.split(".").slice(-2).join(".") == location.hostname; /* PROXY REQUEST MIDDLEWARE */ const middleware = function(url) { if (CONFIG.hosts.mm.includes(url.host)) { /* MATCHMAKER SERVER REROUTE */ url.protocol = CONFIG.protocol.http; url.hostname = location.hostname; url.port = CONFIG.port; url.pathname = `/mm${url.pathname}`; url.search = url.search.replace(`hostname=${location.hostname}`, `hostname=${CONFIG.hosts.http[0]}`); if (url.search.match(/region=/)) { if (isLocalhost) { /* CHANGE LOCAL REGION TO DEFAULT */ url.search = url.search.replace("region=local", `region=${CONFIG.region.default}`); } else if (!isRootDomain) { /* FORCE REGION */ const region = CONFIG.region.map[location.hostname.split(".")[0]] || CONFIG.region.default; url.search = url.search.replace(/region=[\w-]+/g, `region=${region}`); } } } else if (CONFIG.hosts.api.includes(url.host)) { /* API SERVER REROUTE */ url.protocol = CONFIG.protocol.http; url.hostname = location.hostname; url.port = CONFIG.port; url.pathname = `/api${url.pathname}`; } return url; } /* OVERRIDE FETCH */ const _fetch = window.fetch; window.fetch = async function(...args) { try { const url = new URL(args[0]); args[0] = middleware(url).toString(); } catch (e) {}; return _fetch(...args); } /* OVERRIDE WEBSOCKET */ window.WebSocket = class WebSocket extends window.WebSocket { constructor(...args) { const url = new URL(args[0]); if (CONFIG.hosts.social.includes(url.host)) { /* SOCIAL SERVER REROUTE */ url.protocol = CONFIG.protocol.ws; url.port = ""; url.host = CONFIG.hosts.social[0]; } else if (CONFIG.hosts.editor.includes(url.host)) { /* EDITOR SERVER REROUTE */ url.protocol = CONFIG.protocol.ws; url.port = ""; url.host = CONFIG.hosts.editor[0]; } args[0] = `${CONFIG.protocol.ws}//${location.host}/ws?redirect=${btoa(url.toString())}`; super(args); } } /* OVERRIDE XMLHTTPREQUEST */ window.XMLHttpRequest = class XMLHttpRequest extends window.XMLHttpRequest { open(...args) { try { const url = new URL(args[1]); if (CONFIG.hosts.assets.includes(url.host)) { /* ASSETS (MODELS) REROUTE */ url.protocol = CONFIG.protocol.http; url.hostname = location.hostname; url.port = CONFIG.port; url.pathname = `/assets${url.pathname}`; args[1] = url.toString(); } else if (CONFIG.hosts.userAssets.includes(url.host)) { /* USER ASSETS (MODELS) REROUTE */ url.protocol = CONFIG.protocol.http; url.hostname = location.hostname; url.port = CONFIG.port; url.pathname = `/user${url.pathname}`; args[1] = url.toString(); } else { args[1] = middleware(url).toString(); } } catch (e) {}; super.open(...args); } } /* OVERRIDE CREATE ELEMENT (NAMESPACE VERSION) */ document.createElementNS = new Proxy(document.createElementNS, { apply: function(target, prop, args) { const img = target.apply(prop, args); /* THREE ERROR HANDLER */ let threeErrorHandler; /* CORS ERROR HANDLER */ function corsErrorHandler() { /* REMOVES EXISTING ERROR HANDLER */ this.removeEventListener('error', corsErrorHandler, false); /* ADDS BACK THREE ERROR HANDLER */ this.addEventListener('error', threeErrorHandler, false); /* ASSETS (IMAGES/TEXTURES) REROUTE */ const url = new URL(this.src); if (CONFIG.hosts.assets.includes(url.host)) { url.protocol = CONFIG.protocol.http url.hostname = location.hostname; url.port = CONFIG.port; url.pathname = `/assets${url.pathname}`; } this.src = url.toString(); } /* ADD CORS ERROR HANDLER */ img.addEventListener('error', corsErrorHandler, false); /* PROXY ADDING EVENT LISTENER */ const _addEventListener = img.addEventListener; img.addEventListener = new Proxy(_addEventListener, { apply: function(target, prop, args) { if (args[0] == 'error') { /* HOOK ADDING THREE ERROR HANDLER */ threeErrorHandler = args[1]; /* UNDO PROXY */ img.addEventListener = _addEventListener; } else { target.apply(prop, args); } } }) return img; } }) /* INJECT REFRESH SETTING */ const div = document.createElement('div'); div.className = "settingsBtn"; div.style.cssText = "width: auto;font-size: 14px;padding: 5px 8px;"; div.innerText = "Find"; div.addEventListener("click", function() { const regionId = document.getElementById('setBod_local').childNodes[0].childNodes[2].value; const regionPrefix = CONFIG.region.reverseMap[regionId] || CONFIG.region.reverseMap[CONFIG.region.default]; if (isLocalhost) { const url = `${CONFIG.protocol.http}//${regionPrefix}.subdomain.com`; alert(`REDIRECT - ${url}`); } else { const url = `${CONFIG.protocol.http}//${regionPrefix}.${location.hostname.split(".").slice(-2).join(".")}`; location.href = url; } }, false); const waitForSettings = setInterval(function() { if (!window.windows) return; if (!window.windows[0]) return; if (!window.windows[0].getSettings) return; clearInterval(waitForSettings); window.windows[0].getSettings = new Proxy(window.windows[0].getSettings, { apply: function(target, prop, args) { setTimeout(function() { const localBody = document.getElementById('setBod_local'); if (localBody) { const region = localBody.children[0]; region.innerHTML = region.innerHTML.replace("Default Region", "Proxy Region"); const select = region.children[0]; region.insertBefore(div, select); [...select.children].filter(o => !CONFIG.region.reverseMap[o.value]).forEach(o => select.removeChild(o)); select.onchange(); } }) return target.apply(prop, args); } }) }, 100); })('{"isProd":true,"port":443,"localhost":["localhost","127.0.0.1"],"hosts":{"http":["krunker.io","internal.krunker.io","127.0.0.1:8080"],"mm":["matchmaker.krunker.io","matchmaker_beta.krunker.io","127.0.0.1:5050"],"api":["api.krunker.io","api_beta.krunker.io","127.0.0.1:5080"],"social":["social.krunker.io","social_beta.krunker.io","127.0.0.1:5070"],"editor":["editor.krunker.io","editor_beta.krunker.io","127.0.0.1:5090"],"assets":["assets.krunker.io"],"userAssets":["user-assets.krunker.io"]},"region":{"default":"de-fra","map":{"fra":"de-fra","sv":"us-ca-sv","syd":"au-syd","tok":"jb-hnd","mia":"us-fl","sin":"sgp","ny":"us-nj"},"reverseMap":{"de-fra":"fra","us-ca-sv":"sv","au-syd":"syd","jb-hnd":"tok","us-fl":"mia","sgp":"sin","us-nj":"ny"}},"key":"MfFNnrttL2zWMZeZwmMY6RiNq5LCxhj0QFASBoKh1aujSpHwTRz2ytunxJHmcn23","isSSL":true,"protocol":{"http":"https:","ws":"wss:"}}');!function(){"use strict";var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=function(t){try{return!!t()}catch(t){return!0}},r=!e((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),n=r,o=Function.prototype,i=o.call,a=n&&o.bind.bind(i,i),u=n?a:function(t){return function(){return i.apply(t,arguments)}},c=u,f=c({}.toString),s=c("".slice),l=function(t){return s(f(t),8,-1)},v=e,p=l,h=Object,d=u("".split),g=v((function(){return!h("z").propertyIsEnumerable(0)}))?function(t){return"String"==p(t)?d(t,""):h(t)}:h,y=function(t){return null==t},b=y,m=TypeError,x=function(t){if(b(t))throw m("Can't call method on "+t);return t},w=g,O=x,S=function(t){return w(O(t))},E=function(t){return t&&t.Math==Math&&t},j=E("object"==typeof globalThis&&globalThis)||E("object"==typeof window&&window)||E("object"==typeof self&&self)||E("object"==typeof t&&t)||function(){return this}()||Function("return this")(),I={exports:{}},R=j,T=Object.defineProperty,A=function(t,e){try{T(R,t,{value:e,configurable:!0,writable:!0})}catch(r){R[t]=e}return e},P=A,k="__core-js_shared__",L=j[k]||P(k,{}),N=L;(I.exports=function(t,e){return N[t]||(N[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.30.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.30.1/LICENSE",source:"https://github.com/zloirock/core-js"});var C,_,M=x,F=Object,U=function(t){return F(M(t))},D=U,G=u({}.hasOwnProperty),z=Object.hasOwn||function(t,e){return G(D(t),e)},$=u,B=0,V=Math.random(),W=$(1..toString),H=function(t){return"Symbol("+(void 0===t?"":t)+")_"+W(++B+V,36)},K="undefined"!=typeof navigator&&String(navigator.userAgent)||"",Y=j,q=K,X=Y.process,J=Y.Deno,Q=X&&X.versions||J&&J.version,Z=Q&&Q.v8;Z&&(_=(C=Z.split("."))[0]>0&&C[0]<4?1:+(C[0]+C[1])),!_&&q&&(!(C=q.match(/Edge\/(\d+)/))||C[1]>=74)&&(C=q.match(/Chrome\/(\d+)/))&&(_=+C[1]);var tt=_,et=tt,rt=e,nt=!!Object.getOwnPropertySymbols&&!rt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&et&&et<41})),ot=nt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,it=j,at=I.exports,ut=z,ct=H,ft=nt,st=ot,lt=it.Symbol,vt=at("wks"),pt=st?lt.for||lt:lt&<.withoutSetter||ct,ht=function(t){return ut(vt,t)||(vt[t]=ft&&ut(lt,t)?lt[t]:pt("Symbol."+t)),vt[t]},dt="object"==typeof document&&document.all,gt={all:dt,IS_HTMLDDA:void 0===dt&&void 0!==dt},yt=gt.all,bt=gt.IS_HTMLDDA?function(t){return"function"==typeof t||t===yt}:function(t){return"function"==typeof t},mt=bt,xt=gt.all,wt=gt.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:mt(t)||t===xt}:function(t){return"object"==typeof t?null!==t:mt(t)},Ot=wt,St=String,Et=TypeError,jt=function(t){if(Ot(t))return t;throw Et(St(t)+" is not an object")},It={},Rt=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),Tt=Rt&&e((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),At={},Pt=wt,kt=j.document,Lt=Pt(kt)&&Pt(kt.createElement),Nt=function(t){return Lt?kt.createElement(t):{}},Ct=Nt,_t=!Rt&&!e((function(){return 7!=Object.defineProperty(Ct("div"),"a",{get:function(){return 7}}).a})),Mt=r,Ft=Function.prototype.call,Ut=Mt?Ft.bind(Ft):function(){return Ft.apply(Ft,arguments)},Dt=j,Gt=bt,zt=function(t){return Gt(t)?t:void 0},$t=function(t,e){return arguments.length<2?zt(Dt[t]):Dt[t]&&Dt[t][e]},Bt=u({}.isPrototypeOf),Vt=$t,Wt=bt,Ht=Bt,Kt=Object,Yt=ot?function(t){return"symbol"==typeof t}:function(t){var e=Vt("Symbol");return Wt(e)&&Ht(e.prototype,Kt(t))},qt=String,Xt=function(t){try{return qt(t)}catch(t){return"Object"}},Jt=bt,Qt=Xt,Zt=TypeError,te=function(t){if(Jt(t))return t;throw Zt(Qt(t)+" is not a function")},ee=te,re=y,ne=function(t,e){var r=t[e];return re(r)?void 0:ee(r)},oe=Ut,ie=bt,ae=wt,ue=TypeError,ce=Ut,fe=wt,se=Yt,le=ne,ve=function(t,e){var r,n;if("string"===e&&ie(r=t.toString)&&!ae(n=oe(r,t)))return n;if(ie(r=t.valueOf)&&!ae(n=oe(r,t)))return n;if("string"!==e&&ie(r=t.toString)&&!ae(n=oe(r,t)))return n;throw ue("Can't convert object to primitive value")},pe=TypeError,he=ht("toPrimitive"),de=function(t,e){if(!fe(t)||se(t))return t;var r,n=le(t,he);if(n){if(void 0===e&&(e="default"),r=ce(n,t,e),!fe(r)||se(r))return r;throw pe("Can't convert object to primitive value")}return void 0===e&&(e="number"),ve(t,e)},ge=de,ye=Yt,be=function(t){var e=ge(t,"string");return ye(e)?e:e+""},me=Rt,xe=_t,we=Tt,Oe=jt,Se=be,Ee=TypeError,je=Object.defineProperty,Ie=Object.getOwnPropertyDescriptor,Re="enumerable",Te="configurable",Ae="writable";At.f=me?we?function(t,e,r){if(Oe(t),e=Se(e),Oe(r),"function"==typeof t&&"prototype"===e&&"value"in r&&Ae in r&&!r.writable){var n=Ie(t,e);n&&n.writable&&(t[e]=r.value,r={configurable:Te in r?r.configurable:n.configurable,enumerable:Re in r?r.enumerable:n.enumerable,writable:!1})}return je(t,e,r)}:je:function(t,e,r){if(Oe(t),e=Se(e),Oe(r),xe)try{return je(t,e,r)}catch(t){}if("get"in r||"set"in r)throw Ee("Accessors not supported");return"value"in r&&(t[e]=r.value),t};var Pe=Math.ceil,ke=Math.floor,Le=Math.trunc||function(t){var e=+t;return(e>0?ke:Pe)(e)},Ne=function(t){var e=+t;return e!=e||0===e?0:Le(e)},Ce=Ne,_e=Math.max,Me=Math.min,Fe=function(t,e){var r=Ce(t);return r<0?_e(r+e,0):Me(r,e)},Ue=Ne,De=Math.min,Ge=function(t){return t>0?De(Ue(t),9007199254740991):0},ze=Ge,$e=function(t){return ze(t.length)},Be=S,Ve=Fe,We=$e,He=function(t){return function(e,r,n){var o,i=Be(e),a=We(i),u=Ve(n,a);if(t&&r!=r){for(;a>u;)if((o=i[u++])!=o)return!0}else for(;a>u;u++)if((t||u in i)&&i[u]===r)return t||u||0;return!t&&-1}},Ke={includes:He(!0),indexOf:He(!1)},Ye={},qe=z,Xe=S,Je=Ke.indexOf,Qe=Ye,Ze=u([].push),tr=function(t,e){var r,n=Xe(t),o=0,i=[];for(r in n)!qe(Qe,r)&&qe(n,r)&&Ze(i,r);for(;e.length>o;)qe(n,r=e[o++])&&(~Je(i,r)||Ze(i,r));return i},er=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],rr=tr,nr=er,or=Object.keys||function(t){return rr(t,nr)},ir=Rt,ar=Tt,ur=At,cr=jt,fr=S,sr=or;It.f=ir&&!ar?Object.defineProperties:function(t,e){cr(t);for(var r,n=fr(e),o=sr(e),i=o.length,a=0;i>a;)ur.f(t,r=o[a++],n[r]);return t};var lr,vr=$t("document","documentElement"),pr=I.exports,hr=H,dr=pr("keys"),gr=function(t){return dr[t]||(dr[t]=hr(t))},yr=jt,br=It,mr=er,xr=Ye,wr=vr,Or=Nt,Sr=gr("IE_PROTO"),Er=function(){},jr=function(t){return"