UNPKG

stockfish

Version:

The Stockfish chess engine in Web Assembly (WASM)

12 lines • 33.4 kB
/*! * Stockfish.js 19 (c) 2026, Chess.com, LLC * https://github.com/nmrugg/stockfish.js * License: GPLv3 * * Based on Stockfish (c) T. Romstad, M. Costalba, J. Kiiski, G. Linscott and other contributors. * https://github.com/official-stockfish/Stockfish * * Nets by Chris Bao (sscg13) * https://tests.stockfishchess.org/nns?network_name=nn-61e7af4bb97d */ !function(){function e(){"use strict";var e,r=(e=globalThis.document?.currentScript?.src,async function(r={}){var t=r,a=!!globalThis.window,n=!!globalThis.WorkerGlobalScope,o=globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type,i=n&&"em-pthread"==globalThis.name;if(o){var s=require("node:worker_threads");globalThis.Worker=s.Worker,i=(n=!s.isMainThread)&&"em-pthread"==s.workerData}"undefined"!=typeof global&&"[object process]"===Object.prototype.toString.call(global.process)&&"undefined"!=typeof fetch&&("undefined"==typeof XMLHttpRequest&&(global.XMLHttpRequest=function(){var e,r={readyState:0,status:0,onerror:null,onreadystatechange:null,onload:null,open:function(r,t){e=t},send:function(){require("fs").readFile(e,function(e,t){r.readyState=4,e?(r.status=404,r.onerror(e)):(r.status=200,r.response=t,r.onreadystatechange(),r.onload())})}};return r}),fetch=null),t.print=function(e){t.listener&&t.listener(e)},t.printErr=function(e){t.listener&&t.listener(e)},t.terminate=function(){void 0!==se&&re()};var f=[],u="./this.program",l=(e,r)=>{throw r};"undefined"!=typeof __filename?e=__filename:n&&(e=self.location.href);var c,d,h="";if(o){var m=require("node:fs");h=__dirname+"/",d=e=>(e=x(e)?new URL(e):e,m.readFileSync(e)),c=async e=>(e=x(e)?new URL(e):e,m.readFileSync(e,void 0)),process.argv.length>1&&(u=process.argv[1].replace(/\\/g,"/")),f=process.argv.slice(2),l=(e,r)=>{throw process.exitCode=e,r}}else if(a||n){try{h=new URL(".",e).href}catch{}o||(n&&(d=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),c=async e=>{if((e=await fetch(e,{credentials:"same-origin"})).ok)return e.arrayBuffer();throw Error(e.status+" : "+e.url)})}var p=function(){}.bind(),w=function(){}.bind();if(o){var v=require("node:util"),g=e=>"object"==typeof e?v.inspect(e):e;p=(...e)=>m.writeSync(1,e.map(g).join(" ")+"\n"),w=(...e)=>m.writeSync(2,e.map(g).join(" ")+"\n")}var y,b,k,S,$=p,A=w,T=!1,x=e=>e.startsWith("file://");function P(){oe.buffer!=B.buffer&&D()}if(o&&i){globalThis.self=globalThis;var M=s.parentPort;globalThis.postMessage||(M.on("message",e=>globalThis.onmessage?.({data:e})),globalThis.postMessage=e=>M.postMessage(e)),process.on("uncaughtException",e=>{postMessage({da:8,error:e}),process.exit(1)})}if(i){var _=!1;function vt(e){try{var r=e.data,a=r.da;if(1==a){let e=[];self.onmessage=r=>e.push(r),S=()=>{postMessage({da:3});for(let r of e)vt(r);self.onmessage=vt};for(let e of r.Ha)t[e]&&!t[e].proxy||(t[e]=(...r)=>{postMessage({da:9,Ga:e,args:r})},"print"==e&&($=t[e]),"printErr"==e&&(A=t[e]));oe=r.Va,D(),b=r.Wa,q(),wt(),S()}else if(2==a){!function(e){var r=(P(),ne)[e+48>>2];e=(P(),ne)[e+52>>2],ft(r,r-e),ut(r)}(r.ha),et(r.ha,0,0,1,0,0),ae(),br(r.ha),_||=!0;try{ue(r.Qa,r.pa)}catch(e){if("unwind"!=e)throw e}}else 4==a?_&&kr():a&&(A(`worker: received unknown command ${a}`),A(r))}catch(e){throw C&&rt(),e}}self.onunhandledrejection=e=>{throw e.reason||e},self.onmessage=vt}var E,C=!1;function D(){if(!B?.buffer?.growable){var e=oe.buffer;B=new Int8Array(e),fr=new Int16Array(e),sr=new Uint8Array(e),K=new Int32Array(e),ne=new Uint32Array(e),I=new Float64Array(e),R=new BigInt64Array(e)}}function j(){C=!0,i||(t.noFSInit||qe||(qe=!0,tr("/dev/tty","/dev/stdin"),tr("/dev/tty","/dev/stdout"),tr("/dev/tty1","/dev/stderr"),ar("/dev/stdin",0),ar("/dev/stdout",1),ar("/dev/stderr",1)),ht.F(),Le=!1)}function U(e){throw A(e=`Aborted(${e})`),T=!0,new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.")}function O(){return{a:{C:ce,h:hr,y:mr,z:pr,n:wr,l:vr,B:Sr,d:Ar,q:Tr,i:xr,k:br,g:Pr,r:Er,s:Dr,D:Ur,E:Lr,j:Ir,m:Rr,c:_r,e:Wr,A:Nr,o:H,t:Hr,u:Gr,b:J,f:Vr,x:Xr,v:Kr,w:Jr,a:oe,p:V}}}async function q(){function e(e,r){return ht=e.exports,Z.push(ht.K),e=ht,t._main=e.G,t._isReady=e.H,t._isSearching=e.I,t._uci=e.J,Yr=e.L,Zr=t.__emscripten_proxy_main=e.M,et=e.O,rt=e.Q,tt=e.R,at=e.S,nt=e.T,ot=e.U,it=e.V,st=e.W,ft=e.X,ut=e.Y,lt=e.Z,ct=e._,dt=e.N,b=r,ht}var r,a=O(),n=t.instantiateWasm;return n?new Promise(r=>{n(a,(t,a)=>r(e(t,a)))}):i?e(new WebAssembly.Instance(b,O()),b):(E??=t.locateFile?t.locateFile("stockfish.wasm",h):h+"stockfish.wasm",r=await async function(e){var r=E;if(!y&&!o)try{var t=fetch(r,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(t,e)}catch(e){A(`wasm streaming compile failed: ${e}`),A("falling back to ArrayBuffer instantiation")}return async function(e,r){try{var t=await async function(e){if(!y)try{var r=await c(e);return new Uint8Array(r)}catch{}if(e==E&&y)e=new Uint8Array(y);else{if(!d)throw"both async and sync fetching of the wasm failed";e=d(e)}return e}(e);return await WebAssembly.instantiate(t,r)}catch(e){A(`failed to asynchronously prepare wasm: ${e}`),U(e)}}(r,e)}(a),e(r.instance,r.module))}class L{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var B,I,R,W=e=>{e.terminate(),e.onmessage=()=>{}},N=[],F=r=>{if(0==Y.length){var a=e;t.mainScriptUrlOrBlob&&"string"!=typeof(a=t.mainScriptUrlOrBlob)&&(a=URL.createObjectURL(a)),a=new Worker(a,{workerData:"em-pthread",name:"em-pthread"}),Y.push(a),ie(a)}return(a=Y.pop())?(ee[r.ha]=a,a.ha=r.ha,a.postMessage({da:2,Qa:r.Pa,pa:r.pa,ha:r.ha},r.Ta),0):6},z=0,H=()=>z>0,G=(e,r,t,...a)=>{var n,o=8*a.length*2,i=ct(),s=lt(o),f=s>>3;for(n of a)"bigint"==typeof n?((P(),R)[f++]=1n,(P(),R)[f++]=n):((P(),R)[f++]=0n,(P(),I)[f++]=n);return e=at(e,r,o,s,t),ut(i),e};function V(e){if(i)return G(0,0,1,e);k=e,z>0||(re(),t.onExit?.(e),T=!0),l(e,new L(e))}function X(e){if(i)return G(1,0,0,e);--z,J(e)}var K,J=e=>{if(k=e,i)throw X(e),"unwind";V(e)},Q=!Atomics.waitAsync||globalThis.navigator?.userAgent&&Number((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)||[])[2])<91,Y=[],Z=[],ee={},re=()=>{for(var e of Object.values(ee))W(e);for(e of Y)W(e);Y=[],ee={}},te=e=>{var r=e.ha;delete ee[r],Y.push(e),e.ha=0,o&&e.unref(),Q||Atomics.notify((P(),K),r>>2),nt(r)};function ae(){Z.forEach(e=>e())}var ne,oe,ie=e=>{new Promise(r=>{e.onmessage=a=>{var n=a.data;if(a=n.da,n.wa&&n.wa!=Yr())ee[n.wa]?.postMessage(n);else if("setimmediate"===n||"_si"===n)e.postMessage(n);else switch(a){case 4:kr();break;case 5:F(n);break;case 6:yr(()=>{te(ee[n.Sa])});break;case 3:o&&!e.Ra&&e.unref(),r(e);break;case 8:e.onerror(n.error);break;case 9:t[n.Ga](...n.args);break;default:a&&A(`worker sent an unknown command ${a}`)}},e.onerror=e=>{throw A(`worker sent an error! ${e.filename}:${e.lineno}: ${e.message}`),e},o&&(e.on("message",r=>e.onmessage({data:r})),e.on("error",r=>e.onerror(r)));var a,n=[];for(a of["onExit","print","printErr"])t.propertyIsEnumerable(a)&&n.push(a);e.postMessage({da:1,Ha:n,Va:oe,Wa:b})})},se={},fe=[],ue=(e,r)=>{z=0;var t=fe[e];t||(fe[e]=t=dt.get(e)),e=t(r),z>0?k=e:ot(e)};function le(e,r,t,a){return i?G(2,0,1,e,r,t,a):ce(e,r,t,a)}var ce=(e,r,t,a)=>{if(!globalThis.SharedArrayBuffer)return 6;var n=[];return i&&!n.length?le(e,r,t,a):(e={Pa:t,ha:e,pa:a,Ta:n},i?(e.da=5,postMessage(e,n),0):F(e))},de=()=>{var e=(P(),K)[+dr>>2];return dr+=4,e},he=(e,r)=>{for(var t=0,a=e.length-1;a>=0;a--){var n=e[a];"."===n?e.splice(a,1):".."===n?(e.splice(a,1),t++):t&&(e.splice(a,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},me=e=>{var r="/"===e.charAt(0),t="/"===e.slice(-1);return(e=he(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},pe=e=>{var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1);return e=r[0],r=r[1],e||r?(r&&=r.slice(0,-1),e+r):"."},we=e=>(we=(()=>{if(o){var e=require("node:crypto");return r=>(e.randomFillSync(r),0)}return e=>(e.set(crypto.getRandomValues(new Uint8Array(e.byteLength))),0)})())(e),ve=(...e)=>{for(var r="",t=!1,a=e.length-1;a>=-1&&!t;a--){if("string"!=typeof(t=a>=0?e[a]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!t)return"";r=t+"/"+r,t="/"===t.charAt(0)}return(t?"/":"")+(r=he(r.split("/").filter(e=>!!e),!t).join("/"))||"."},ge=globalThis.TextDecoder&&new TextDecoder,ye=(e,r=0)=>{for(var t=r,a=t+NaN;e[t]&&!(t>=a);)++t;if(t-r>16&&e.buffer&&ge)return ge.decode(e.buffer instanceof ArrayBuffer?e.subarray(r,t):e.slice(r,t));for(a="";r<t;){var n=e[r++];if(128&n){var o=63&e[r++];if(192==(224&n))a+=String.fromCharCode((31&n)<<6|o);else{var i=63&e[r++];(n=224==(240&n)?(15&n)<<12|o<<6|i:(7&n)<<18|o<<12|i<<6|63&e[r++])<65536?a+=String.fromCharCode(n):(n-=65536,a+=String.fromCharCode(55296|n>>10,56320|1023&n))}}else a+=String.fromCharCode(n)}return a},be=[],ke=e=>{for(var r=0,t=0;t<e.length;++t){var a=e.charCodeAt(t);a<=127?r++:a<=2047?r+=2:a>=55296&&a<=57343?(r+=4,++t):r+=3}return r},Se=(e,r,t,a)=>{if(!(a>0))return 0;var n=t;a=t+a-1;for(var o=0;o<e.length;++o){var i=e.codePointAt(o);if(i<=127){if(t>=a)break;r[t++]=i}else if(i<=2047){if(t+1>=a)break;r[t++]=192|i>>6,r[t++]=128|63&i}else if(i<=65535){if(t+2>=a)break;r[t++]=224|i>>12,r[t++]=128|i>>6&63,r[t++]=128|63&i}else{if(t+3>=a)break;r[t++]=240|i>>18,r[t++]=128|i>>12&63,r[t++]=128|i>>6&63,r[t++]=128|63&i,o++}}return r[t]=0,t-n},$e=[];function Ae(e,r){$e[e]={input:[],output:[],ja:r},Qe(e,Te)}var Te={open(e){var r=$e[e.node.rdev];if(!r)throw new Be(43);e.tty=r,e.seekable=!1},close(e){e.tty.ja.fsync(e.tty)},fsync(e){e.tty.ja.fsync(e.tty)},read(e,r,t,a){if(!e.tty||!e.tty.ja.za)throw new Be(60);for(var n=0,o=0;o<a;o++){try{var i=e.tty.ja.za(e.tty)}catch(e){throw new Be(29)}if(void 0===i&&!n)throw new Be(6);if(null==i)break;if(n++,r[t+o]=i,10===i)break}return n&&(e.node.atime=Date.now()),n},write(e,r,t,a){if(!e.tty||!e.tty.ja.ua)throw new Be(60);try{for(var n=0;n<a;n++)e.tty.ja.ua(e.tty,r[t+n])}catch(e){throw new Be(29)}return a&&(e.node.mtime=e.node.ctime=Date.now()),n}},xe={za(){e:{if(!be.length){var e=null;if(o){var r=Buffer.alloc(256),t=0,a=process.stdin.fd;try{t=m.readSync(a,r,0,256)}catch(e){if(!e.toString().includes("EOF"))throw e;t=0}t>0&&(e=r.slice(0,t).toString("utf-8"))}else globalThis.window?.prompt&&null!==(e=window.prompt("Input: "))&&(e+="\n");if(!e){e=null;break e}r=Array(ke(e)+1),e=Se(e,r,0,r.length),r.length=e,be=r}e=be.shift()}return e},ua(e,r){null===r||10===r?($(ye(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){e.output?.length>0&&($(ye(e.output)),e.output=[])},Ja:()=>({$a:25856,bb:5,Za:191,ab:35387,Ya:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}),Ka:()=>0,La:()=>[24,80]},Pe={ua(e,r){null===r||10===r?(A(ye(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){e.output?.length>0&&(A(ye(e.output)),e.output=[])}},Me={ga:null,ia:()=>Me.createNode(null,"/",16895,0),createNode(e,r,t,a){if(24576==(61440&t)||4096==(61440&t))throw new Be(63);return Me.ga||(Me.ga={dir:{node:{la:Me.$.la,ka:Me.$.ka,lookup:Me.$.lookup,na:Me.$.na,rename:Me.$.rename,unlink:Me.$.unlink,rmdir:Me.$.rmdir,readdir:Me.$.readdir,symlink:Me.$.symlink},stream:{fa:Me.P.fa}},file:{node:{la:Me.$.la,ka:Me.$.ka},stream:{fa:Me.P.fa,read:Me.P.read,write:Me.P.write,Ba:Me.P.Ba,Da:Me.P.Da}},link:{node:{la:Me.$.la,ka:Me.$.ka,readlink:Me.$.readlink},stream:{}},ya:{node:{la:Me.$.la,ka:Me.$.ka},stream:Je}}),16384==(61440&(t=ze(e,r,t,a)).mode)?(t.$=Me.ga.dir.node,t.P=Me.ga.dir.stream,t.aa={}):32768==(61440&t.mode)?(t.$=Me.ga.file.node,t.P=Me.ga.file.stream,t.ba=0,t.aa=Me.Fa??(Me.Fa=new Uint8Array(0))):40960==(61440&t.mode)?(t.$=Me.ga.link.node,t.P=Me.ga.link.stream):8192==(61440&t.mode)&&(t.$=Me.ga.ya.node,t.P=Me.ga.ya.stream),t.atime=t.mtime=t.ctime=Date.now(),e&&(e.aa[r]=t,e.atime=e.mtime=e.ctime=t.atime),t},$:{la(e){var r={};return r.dev=8192==(61440&e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,16384==(61440&e.mode)?r.size=4096:32768==(61440&e.mode)?r.size=e.ba:40960==(61440&e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.atime),r.mtime=new Date(e.mtime),r.ctime=new Date(e.ctime),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},ka(e,r){for(var t of["mode","atime","mtime","ctime"])null!=r[t]&&(e[t]=r[t]);void 0!==r.size&&(r=r.size,e.ba!=r&&(t=e.aa,e.aa=new Uint8Array(r),e.aa.set(t.subarray(0,Math.min(r,e.ba))),e.ba=r))},lookup(){throw Me.qa||(Me.qa=new Be(44),Me.qa.stack="<generic error, no stack>"),Me.qa},na:(e,r,t,a)=>Me.createNode(e,r,t,a),rename(e,r,t){try{var a=Fe(r,t)}catch(e){}if(a){if(16384==(61440&e.mode))for(var n in a.aa)throw new Be(55);if(n=Ne(a.parent.id,a.name),Oe[n]===a)Oe[n]=a.ma;else for(n=Oe[n];n;){if(n.ma===a){n.ma=a.ma;break}n=n.ma}}delete e.parent.aa[e.name],r.aa[t]=e,e.name=t,r.ctime=r.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,r){delete e.aa[r],e.ctime=e.mtime=Date.now()},rmdir(e,r){var t,a=Fe(e,r);for(t in a.aa)throw new Be(55);delete e.aa[r],e.ctime=e.mtime=Date.now()},readdir:e=>[".","..",...Object.keys(e.aa)],symlink:(e,r,t)=>((e=Me.createNode(e,r,41471,0)).link=t,e),readlink(e){if(40960!=(61440&e.mode))throw new Be(28);return e.link}},P:{read:(e,r,t,a,n)=>n>=e.node.ba?0:(a=Math.min(e.node.ba-n,a),r.set(e.node.aa.subarray(n,n+a),t),a),write(e,r,t,a,n,o){if(r.buffer===(P(),B).buffer&&(o=!1),!a)return 0;if((e=e.node).mtime=e.ctime=Date.now(),o)e.aa=r.subarray(t,t+a),e.ba=a;else if(e.ba||n){o=n+a;var i=e.aa.length;i>=o||(o=Math.max(o,i*(i<1048576?2:1.125)>>>0),i&&(o=Math.max(o,256)),i=e.aa.subarray(0,e.ba),e.aa=new Uint8Array(o),e.aa.set(i)),e.aa.set(r.subarray(t,t+a),n),e.ba=Math.max(e.ba,n+a)}else e.aa=r.slice(t,t+a),e.ba=a;return a},fa(e,r,t){if(1===t?r+=e.position:2===t&&32768==(61440&e.node.mode)&&(r+=e.node.ba),r<0)throw new Be(28);return r},Ba(e,r,t,a,n){if(32768!=(61440&e.node.mode))throw new Be(43);if(e=e.node.aa,2&n||e.buffer!==(P(),B).buffer){if(a=!0,U(),!(n=void 0))throw new Be(48);e&&((t>0||t+r<e.length)&&(e=e.subarray?e.subarray(t,t+r):Array.prototype.slice.call(e,t,t+r)),(P(),B).set(e,n))}else a=!1,n=e.byteOffset;return{gb:n,Xa:a}},Da:(e,r,t,a)=>(Me.P.write(e,r,0,a,t,!1),0)}},_e=async()=>null,Ee=0,Ce=null,De={},je=[],Ue=1,Oe=null,qe=!1,Le=!0,Be=class{name="ErrnoError";constructor(e){this.ea=e}},Ie=class{shared={};node=null;get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},Re=class{$={};P={};oa=null;listeners=null;xa=0;constructor(e,r,t,a){e||=this,this.parent=e,this.ia=e.ia,this.id=Ue++,this.name=r,this.mode=t,this.rdev=a,this.atime=this.mtime=this.ctime=Date.now()}get read(){return!(365&~this.mode)}set read(e){e?this.mode|=365:this.mode&=-366}get write(){return!(146&~this.mode)}set write(e){e?this.mode|=146:this.mode&=-147}Oa(){if(this.listeners){var e;for(r of this.listeners)r.exclusive?(e||=[]).push(r):r.Ea(32);if(e){var r=(this.xa||0)%e.length;this.xa=r+1,e[r].Ea(32)}}}};function We(e,r={}){if(!e)throw new Be(44);r.sa??(r.sa=!0),"/"===e.charAt(0)||(e="//"+e);var t=0;e:for(;t<40;t++){e=e.split("/").filter(e=>!!e);for(var a=Ce,n="/",o=0;o<e.length;o++){var i=o===e.length-1;if(i&&r.parent)break;if("."!==e[o])if(".."===e[o]){if(n=pe(n),a===a.parent){e=n+"/"+e.slice(o+1).join("/"),t--;continue e}a=a.parent}else{n=me(n+"/"+e[o]);try{a=Fe(a,e[o])}catch(e){if(44===e?.ea&&i&&r.Na)return{path:n};throw e}if(!a.oa||i&&!r.sa||(a=a.oa.root),40960==(61440&a.mode)&&(!i||r.ra)){if(!a.$.readlink)throw new Be(52);"/"===(a=a.$.readlink(a)).charAt(0)||(a=pe(n)+"/"+a),e=a+"/"+e.slice(o+1).join("/");continue e}}}return{path:n,node:a}}throw new Be(32)}function Ne(e,r){for(var t=0,a=0;a<r.length;a++)t=(t<<5)-t+r.charCodeAt(a)|0;return(e+t>>>0)%Oe.length}function Fe(e,r){var t=16384==(61440&e.mode)?(t=He(e,"x"))?t:e.$.lookup?0:2:54;if(t)throw new Be(t);for(t=Oe[Ne(e.id,r)];t;t=t.ma){var a=t.name;if(t.parent.id===e.id&&a===r)return t}return e.$.lookup(e,r)}function ze(e,r,t,a){return r=Ne((e=new Re(e,r,t,a)).parent.id,e.name),e.ma=Oe[r],Oe[r]=e}function He(e,r){return Le?0:r.includes("r")&&!(292&e.mode)||r.includes("w")&&!(146&e.mode)||r.includes("x")&&!(73&e.mode)?2:0}function Ge(e,r){if(16384!=(61440&e.mode))return 54;try{return Fe(e,r),20}catch(e){}return He(e,"wx")}function Ve(e){if(!(e=je[e]))throw new Be(8);return e}function Xe(e,r=-1){if(e=Object.assign(new Ie,e),-1==r)e:{for(r=0;r<=4096;r++)if(!je[r])break e;throw new Be(33)}return e.fd=r,je[r]=e}function Ke(e,r){var t=void 0,a=t?null:e;if(t??=e.$.ka,!t)throw new Be(63);try{t(a,r)}catch(e){if(e instanceof RangeError)throw new Be(22);throw e}}var Je={open(e){e.P=De[e.node.rdev].P,e.P.open?.(e)},fa(){throw new Be(70)}};function Qe(e,r){De[e]={P:r}}function Ye(e,r){var t="/"===r;if(t&&Ce)throw new Be(10);if(!t&&r){var a=We(r,{sa:!1});if(r=a.path,(a=a.node).oa)throw new Be(10);if(16384!=(61440&a.mode))throw new Be(54)}r={type:e,fb:{},Ca:r,Ma:[]},(e=e.ia(r)).ia=r,r.root=e,t?Ce=e:a&&(a.oa=r,a.ia&&a.ia.Ma.push(r))}function Ze(e,r,t){var a=We(e,{parent:!0}).node;if(!(e=e&&e.match(/([^\/]+|\/)\/*$/)[1]))throw new Be(28);if("."===e||".."===e)throw new Be(20);var n=Ge(a,e);if(n)throw new Be(n);if(!a.$.na)throw new Be(63);return a.$.na(a,e,r,t)}function er(e){return Ze(e,16895,0)}function rr(e,r,t){void 0===t&&(t=r,r=438),Ze(e,8192|r,t)}function tr(e,r){if(!ve(e))throw new Be(44);var t=We(r,{parent:!0}).node;if(!t)throw new Be(44);var a=Ge(t,r=r&&r.match(/([^\/]+|\/)\/*$/)[1]);if(a)throw new Be(a);if(!t.$.symlink)throw new Be(63);t.$.symlink(t,r,e)}function ar(e,r,t=438){if(""===e)throw new Be(44);if("string"==typeof r){var a={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[r];if(void 0===a)throw Error(`Unknown file open mode: ${r}`);r=a}if(t=64&r?4095&t|32768:0,"object"==typeof e)a=e;else{var n=e.endsWith("/"),o=We(e,{ra:!(131072&r),Na:!0});a=o.node,e=o.path}if(o=!1,64&r)if(a){if(128&r)throw new Be(20)}else{if(n)throw new Be(31);a=Ze(e,511|t,0),o=!0}if(!a)throw new Be(44);if(8192==(61440&a.mode)&&(r&=-513),65536&r&&16384!=(61440&a.mode))throw new Be(54);if(!o&&(a?40960==(61440&a.mode)?n=32:(n=["r","w","rw"][3&r],512&r&&(n+="w"),n=16384==(61440&a.mode)&&("r"!==n||576&r)?31:He(a,n)):n=44,n))throw new Be(n);if(512&r&&!o){if(16384==(61440&(n="string"==typeof(n=a)?We(n,{ra:!0}).node:n).mode))throw new Be(31);if(32768!=(61440&n.mode))throw new Be(28);if(e=He(n,"w"))throw new Be(e);Ke(n,{size:0,timestamp:Date.now()})}e:{for(n=a;;){if(n===n.parent){n=n.ia.Ca;var i=i?"/"!==n[n.length-1]?`${n}/${i}`:n+i:n;break e}i=i?`${n.name}/${i}`:n.name,n=n.parent}i=void 0}return(r=Xe({node:a,path:i,flags:-131713&r,seekable:!0,position:0,P:a.P,Ua:[],error:!1})).P.open&&r.P.open(r),o&&(t&=511,Ke(a="string"==typeof a?We(a,{ra:!0}).node:a,{mode:4095&t|-4096&a.mode,ctime:Date.now(),cb:void 0})),r}function nr(e,r,t){if(null===e.fd)throw new Be(8);if(!e.seekable||!e.P.fa)throw new Be(70);if(0!=t&&1!=t&&2!=t)throw new Be(28);e.position=e.P.fa(e,r,t),e.Ua=[]}function or(e,r,t,a){var n=void 0;if(a<0||n<0)throw new Be(28);if(null===e.fd)throw new Be(8);if(!(2097155&e.flags))throw new Be(8);if(16384==(61440&e.node.mode))throw new Be(31);if(!e.P.write)throw new Be(28);e.seekable&&1024&e.flags&&nr(e,0,2);var o=void 0!==n;if(o){if(!e.seekable)throw new Be(70)}else n=e.position;return r=e.P.write(e,r,t,a,n,void 0),o||(e.position+=r),r}function ir(e,r){e=me("/dev/"+e);var t=(e=>{var r=0;return e&&(r|=365),r})(!!r);ir.Aa??(ir.Aa=64);var a=ir.Aa++<<8;Qe(a,{open(e){e.seekable=!1},close(){},read(e,t,a,n){for(var o=0,i=0;i<n;i++){try{var s=r()}catch(e){throw new Be(29)}if(void 0===s&&!o)throw new Be(6);if(null==s)break;o++,t[a+i]=s}return o&&(e.node.atime=Date.now()),o},write(e,r,t,a){for(var n=0;n<a;n++)try{(void 0)(r[t+n])}catch(e){throw new Be(29)}return a&&(e.node.mtime=e.node.ctime=Date.now()),n}}),rr(e,t,a)}var sr,fr,ur={},lr=e=>e?ye((P(),sr),e):"",cr=18,dr=void 0;function hr(e,r,t){if(i)return G(3,0,1,e,r,t);dr=t;try{var a=Ve(e);switch(r){case 0:var n=de();if(n<0)break;for(;je[n];)n++;return function(e,r=-1){return e=Xe(e,r),e.P?.eb?.(e),e}(a,n).fd;case 1:case 2:case 13:case 14:return 0;case 3:return a.flags;case 4:return n=de(),a.flags=-289793&a.flags|289792&n,0;case 12:return n=de(),(P(),fr)[n+0>>1]=2,0}return-28}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return-e.ea}}function mr(e,r,t){if(i)return G(4,0,1,e,r,t);dr=t;try{var a=Ve(e);switch(r){case 21509:case 21510:case 21511:case 21512:case 21524:case 21515:return a.tty?0:-59;case 21505:if(!a.tty)return-59;if(a.tty.ja.Ja){e=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var n=de();(P(),K)[n>>2]=25856,(P(),K)[n+4>>2]=5,(P(),K)[n+8>>2]=191,(P(),K)[n+12>>2]=35387;for(var o=0;o<32;o++)(P(),B)[n+o+17]=e[o]||0}return 0;case 21506:case 21507:case 21508:if(!a.tty)return-59;if(a.tty.ja.Ka)for(n=de(),P(),P(),P(),P(),e=[],o=0;o<32;o++)e.push((P(),B)[n+o+17]);return 0;case 21519:return a.tty?(n=de(),(P(),K)[n>>2]=0):-59;case 21520:return a.tty?-28:-59;case 21537:case 21531:if(n=de(),!a.P.Ia)throw new Be(59);return a.P.Ia(a,r,n);case 21523:return a.tty?(a.tty.ja.La&&(o=[24,80],n=de(),(P(),fr)[n>>1]=o[0],(P(),fr)[n+2>>1]=o[1]),0):-59;default:return-28}}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return-e.ea}}function pr(e,r,t,a){if(i)return G(5,0,1,e,r,t,a);dr=a;try{var n=r=lr(r);if("/"===n.charAt(0))r=n;else{var o=-100===e?"/":Ve(e).path;if(0==n.length)throw new Be(44);r=o+"/"+n}var s=a?de():0;return 64&t&&(s&=~cr),ar(r,t,s).fd}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return-e.ea}}var wr=()=>U(""),vr=e=>{var r=!a;try{Atomics.wait((P(),K),0,0,0),r=!0}catch(e){}et(e,!n,1,r,65536,!1),ae()},gr=e=>{e instanceof L||"unwind"==e||l(1,e)},yr=e=>{if(!T)try{e()}catch(e){gr(e)}finally{if(!(z>0))try{i?Yr()&&ot(k):J(k)}catch(e){gr(e)}}},br=e=>{Q||(Atomics.waitAsync((P(),K),e>>2,e).value.then(kr),e+=112,Atomics.store((P(),K),e>>2,1))},kr=()=>{var e=Yr();e&&yr(()=>{br(e),st()})},Sr=(e,r)=>{e==r?setTimeout(kr):i?postMessage({wa:e,da:4}):(e=ee[e])&&e.postMessage({da:4})},$r=[],Ar=(e,r,t,a,n,o,i)=>{for($r.length=0,t=n>>3,a=n+a>>3;t<a;){var s;s=(P(),R)[t++]?(P(),R)[t++]:(P(),I)[t++],$r.push(s)}if(e=(r?pt[r]:mt[e])(...$r),!o)return e;e.then(e=>tt(o,i,e))},Tr=()=>{z=0},xr=e=>{i?postMessage({da:6,Sa:e}):te(ee[e])},Pr=e=>{o&&((e=ee[e]).ref(),e.Ra=1)},Mr={},_r=()=>performance.timeOrigin+performance.now();function Er(e,r){if(i)return G(6,0,1,e,r);if(Mr[e]&&(clearTimeout(Mr[e].id),delete Mr[e]),!r)return 0;var t=setTimeout(()=>{delete Mr[e],yr(()=>it(e,performance.timeOrigin+performance.now()))},r);return Mr[e]={id:t,hb:r},0}var Cr=(e,r,t)=>Se(e,(P(),sr),r,t),Dr=(e,r,t,a)=>{var n=(new Date).getFullYear(),o=new Date(n,0,1).getTimezoneOffset();n=new Date(n,6,1).getTimezoneOffset();var i=Math.max(o,n);(P(),ne)[e>>2]=60*i,(P(),K)[r>>2]=Number(o!=n),e=(r=e=>{var r=Math.abs(e);return`UTC${e>=0?"-":"+"}${String(Math.floor(r/60)).padStart(2,"0")}${String(r%60).padStart(2,"0")}`})(o),r=r(n),n<o?(Cr(e,t,17),Cr(r,a,17)):(Cr(e,a,17),Cr(r,t,17))},jr=1;function Ur(e,r,t){if(!(e>=0&&e<=3))return 28;if(0===e)e=Date.now();else{if(!jr)return 52;e=performance.timeOrigin+performance.now()}return e=Math.round(1e3*e*1e3),(P(),R)[t>>3]=BigInt(e),0}var Or,qr=[],Lr=(e,r,t)=>{qr.length=0;for(var a;a=(P(),sr)[r++];){var n=105!=a;t+=(n&=112!=a)&&t%8?4:0,qr.push(112==a?(P(),ne)[t>>2]:106==a?(P(),R)[t>>3]:105==a?(P(),K)[t>>2]:(P(),I)[t>>3]),t+=n?8:4}return i?G(0,e,0,...qr):pt[e](...qr)},Br=()=>{var e="Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread";Br.va||(Br.va={}),Br.va[e]||(Br.va[e]=1,o&&(e="warning: "+e),A(e))},Ir=()=>{o||n||(Br(),U("Blocking on the main thread is not allowed by default. See https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread"))},Rr=()=>{throw z+=1,"unwind"},Wr=()=>o?require("node:os").cpus().length:navigator.hardwareConcurrency,Nr=e=>{var r=(P(),sr).length;if((e>>>=0)<=r||e>2147483648)return!1;for(var t=1;t<=4;t*=2){var a=r*(1+.2/t);a=Math.min(a,e+100663296);e:{a=(Math.min(2147483648,65536*Math.ceil(Math.max(e,a)/65536))-oe.buffer.byteLength+65535)/65536|0;try{oe.grow(a),D();var n=1;break e}catch(e){}n=void 0}if(n)return!0}return!1},Fr={},zr=()=>{if(!Or){var e,r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:u};for(e in Fr)void 0===Fr[e]?delete r[e]:r[e]=Fr[e];var t=[];for(e in r)t.push(`${e}=${r[e]}`);Or=t}return Or};function Hr(e,r){if(i)return G(7,0,1,e,r);var t,a=0,n=0;for(t of zr()){var o=r+a;(P(),ne)[e+n>>2]=o,a+=Cr(t,o,1/0)+1,n+=4}return 0}function Gr(e,r){if(i)return G(8,0,1,e,r);var t=zr();for(var a of((P(),ne)[e>>2]=t.length,e=0,t))e+=ke(a)+1;return(P(),ne)[r>>2]=e,0}function Vr(e){if(i)return G(9,0,1,e);try{var r=Ve(e);if(null===r.fd)throw new Be(8);r.ta&&(r.ta=null),r.node?.Oa();try{r.P.close&&r.P.close(r)}catch(e){throw e}finally{je[r.fd]=null}return r.fd=null,0}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return e.ea}}function Xr(e,r,t,a){if(i)return G(10,0,1,e,r,t,a);try{e:{var n=Ve(e);e=r;for(var o,s=r=0;s<t;s++){var f=(P(),ne)[e>>2],u=(P(),ne)[e+4>>2];e+=8;try{var l=n,c=(P(),B),d=f,h=u,m=o;if(h<0||m<0)throw new Be(28);if(null===l.fd)throw new Be(8);if(1==(2097155&l.flags))throw new Be(8);if(16384==(61440&l.node.mode))throw new Be(31);if(!l.P.read)throw new Be(28);var p=void 0!==m;if(p){if(!l.seekable)throw new Be(70)}else m=l.position;var w=l.P.read(l,c,d,h,m);p||(l.position+=w);var v=w}catch(e){if(r>0&&e instanceof Be&&(6==e.ea||6==e.ea))break;throw e}if(v<0){var g=-1;break e}if(r+=v,v<u)break;void 0!==o&&(o+=v)}g=r}return(P(),ne)[a>>2]=g,0}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return e.ea}}function Kr(e,r,t,a){if(i)return G(11,0,1,e,r,t,a);r=r<-9007199254740992||r>9007199254740992?NaN:Number(r);try{if(isNaN(r))return 22;var n=Ve(e);return nr(n,r,t),(P(),R)[a>>3]=BigInt(n.position),n.ta&&!r&&0===t&&(n.ta=null),0}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return e.ea}}function Jr(e,r,t,a){if(i)return G(12,0,1,e,r,t,a);try{var n=Ve(e);if(e=r,1==t)var o=or(n,(P(),B),(P(),ne)[e>>2],(P(),ne)[e+4>>2]);else{for(var s=r=0,f=e;s<t;s++,f+=8)r+=(P(),ne)[f+4>>2];var u=new Uint8Array(r);for(s=f=0;s<t;s++,e+=8){var l=(P(),ne)[e>>2],c=(P(),ne)[e+4>>2];u.set((P(),sr).subarray(l,l+c),f),f+=c}o=or(n,u,0,r)}return(P(),ne)[a>>2]=o,0}catch(e){if(void 0===ur||"ErrnoError"!==e.name)throw e;return e.ea}}var Qr=e=>{var r=ke(e)+1,t=lt(r);return Cr(e,t,r),t};Oe=Array(4096),Ye(Me,"/"),er("/tmp"),er("/home"),er("/home/web_user"),function(){er("/dev"),Qe(259,{read:()=>0,write:(e,r,t,a)=>a,fa:()=>0}),rr("/dev/null",259),Ae(1280,xe),Ae(1536,Pe),rr("/dev/tty",1280),rr("/dev/tty1",1536);var e=new Uint8Array(1024),r=0,t=()=>(r||(we(e),r=e.byteLength),e[--r]);ir("random",t),ir("urandom",t),er("/dev/shm"),er("/dev/shm/tmp")}(),function(){er("/proc");var e=er("/proc/self");er("/proc/self/fd"),Ye({ia(){var r=ze(e,"fd",16895,73);return r.P={fa:Me.P.fa},r.$={lookup(e,r){var t=Ve(e=+r);return(e={parent:null,ia:{Ca:"fake"},$:{readlink:()=>t.path},id:e+1}).parent=e},readdir:()=>Array.from(je.entries()).filter(([,e])=>e).map(([e])=>e.toString())},r}},"/proc/self/fd")}(),i||(oe=t.wasmMemory?t.wasmMemory:new WebAssembly.Memory({initial:2048,maximum:32768,shared:!0}),D()),t.print&&($=t.print),t.printErr&&(A=t.printErr),t.wasmBinary&&(y=t.wasmBinary),t.ccall=(e,r,a,n)=>{var o={string:e=>{var r=0;return null!=e&&0!==e&&(r=Qr(e)),r},array:e=>{var r=lt(e.length);return(P(),B).set(e,r),r}};e=t["_"+e];var i,s=[],f=0;if(n)for(var u=0;u<n.length;u++){var l=o[a[u]];l?(f||=ct(),s[u]=l(n[u])):s[u]=n[u]}return i=a=e(...s),f&&ut(f),"string"===r?lr(i):"boolean"===r?!!i:i};var Yr,Zr,et,rt,tt,at,nt,ot,it,st,ft,ut,lt,ct,dt,ht,mt=[V,X,le,hr,mr,pr,Er,Hr,Gr,Vr,Xr,Kr,Jr],pt={1222704:()=>{try{t.onDoneSearching()}catch(e){}}};async function wt(){var e=f;if(i)j();else{for(var r=N;r.length>0;)r.shift()(t);Ee&&await _e(),T||(j(),function(e=[]){var r=Zr;z+=1,e.unshift(u);var t,a=e.length,n=lt(4*(a+1)),o=n;for(t of e)(P(),ne)[o>>2]=Qr(t),o+=4;(P(),ne)[o>>2]=0;try{var i=r(a,n);J(i,!0)}catch(e){gr(e)}}(e))}}return i||(ht=await q(),await wt()),t});"object"==typeof exports&&"object"==typeof module?(module.exports=r,module.exports.default=r):"function"==typeof define&&define.amd&&define([],()=>r);var t="em-pthread"==globalThis.name;return globalThis.process?.versions?.node&&"renderer"!=globalThis.process?.type&&(t="em-pthread"===require("node:worker_threads").workerData),t&&r(),r}"undefined"!=typeof globalThis&&"string"==typeof globalThis.name&&0===globalThis.name.indexOf("em-pthread")||"undefined"!=typeof global&&"[object process]"===Object.prototype.toString.call(global.process)&&"em-pthread"===require("node:worker_threads").workerData?e():"undefined"!=typeof onmessage&&("undefined"==typeof window||void 0===window.document)||"undefined"!=typeof global&&"[object process]"===Object.prototype.toString.call(global.process)?function(){var r,t,a,n,o="undefined"!=typeof global&&"[object process]"===Object.prototype.toString.call(global.process),i={},s=[],f=[];function u(e){if(i.ccall("uci",null,["string"],[e],{async:0}),"quit"===e){try{i.terminate()}catch(e){}try{self.close()}catch(e){}try{process.exit()}catch(e){}}return!0}function l(){for(;f.length&&(!i._isSearching||!i._isSearching());)u(f.shift())}function c(e){"go"===(e=e.trim()).substring(0,2)||"setoption"===e.substring(0,9)?f.push(e):u(e),l()}function d(){if(i._isReady&&!i._isReady())return setTimeout(d,10);var e;i.onDoneSearching=l,i.processCommand=c,s.length&&(e=0,function r(){for(var t;e<s.length;){if((t=s[e++]).startsWith("sleep "))return setTimeout(r,t.slice(6));c(t)}}())}o?(t=require("path"),r=t.join(__dirname,t.basename(__filename,t.extname(__filename))+".wasm"),i={locateFile:function(e){return e.indexOf(".wasm")>-1?e.indexOf(".wasm.map")>-1?r+".map":r:__filename},listener:function(e){process.stdout.write(e+"\n")}},s=process.argv.slice(2),require.main===module?(e()(i).then(d),require("readline").createInterface({input:process.stdin,output:process.stdout,completer:function(e){var r=["binc ","btime ","confidence ","depth ","infinite ","mate ","maxdepth ","maxtime ","mindepth ","mintime ","moves ","movestogo ","movetime ","ponder ","searchmoves ","shallow ","winc ","wtime "];function t(r){return 0===r.toLowerCase().indexOf(e.toLowerCase())}var a=["compiler","d","eval","flip","go ","isready","ponderhit","position fen ","position startpos","position startpos moves ","quit","setoption name Clear Hash value true","setoption name Hash value ","setoption name Minimum Thinking Time value ","setoption name Move Overhead value ","setoption name MultiPV value ","setoption name Ponder value ","setoption name Skill Level value ","setoption name Slow Mover value ","setoption name Threads value ","setoption name UCI_Chess960 value false","setoption name UCI_Chess960 value true","setoption name UCI_LimitStrength value true","setoption name UCI_LimitStrength value false","setoption name UCI_Elo value ","setoption name UCI_ShowWDL value true","setoption name UCI_ShowWDL value false","setoption name nodestime value ","stop","uci","ucinewgame"].filter(t);return a.length||(a=(e=e.replace(/^.*\s/,""))?r.filter(t):r),[a,e]},historySize:100}).on("line",function(e){e&&(i.processCommand?i.processCommand(e):s.push(e),"quit"===e&&process.exit())}).on("close",function(){process.exit()}).setPrompt("")):module.exports=function(){return e()(i).then(d),i.processCommand=function(e){s.push(e)},i}):(n=self.location.hash.substr(1).split(","),r=decodeURIComponent(n[0]||location.origin+location.pathname.replace(/\.js$/i,".wasm")),function(t){{var n,o;function s(){return function(e,r,t){var i;a&&(i=function(e,r,t){var a,n,o=e/((Date.now()-t||1)/1e3),i=0;return o>0&&e<r&&(i=(r-e)/o),{percent:e/r,loaded:e,total:r,speedBytesPerSec:o,speedText:(n=o,n<1024?Math.round(n)+" B/s":n<1048576?(n/1024).toFixed(1)+" KB/s":(n/1048576).toFixed(1)+" MB/s"),eta:i,etaText:(a=i,!a||a<0?"":a<60?Math.ceil(a)+" sec":Math.round(a/60)+" min")}}(r,t,e),o=i,n||(n=setTimeout(function(){n=null,a.postMessage(o),o.percent>=1&&(a.close(),a=null)},4)))}}(i={locateFile:function(e){return e.indexOf(".wasm")>-1?e.indexOf(".wasm.map")>-1?r+".map":t||r:self.location.href},listener:function(e){postMessage(e)}}).instantiateWasm=function(e,t){var a=s();return function(e,r){return fetch(e).then(function(e){var t=Date.now();if(!e.ok)throw new Error("HTTP "+e.status+": "+e.statusText);var a=1697617,n=0,o=e.body.getReader(),i=new ReadableStream({start:function(e){!function i(){o.read().then(function(o){var s=o.done,f=o.value;if(s)return r(t,a,a),void e.close();n+=f.byteLength,r(t,n,a),e.enqueue(f),i()}).catch(function r(t){e.error(t),r(t)})}()}}),s=new Headers(e.headers);return new Response(i,{status:e.status,statusText:e.statusText,headers:s})})}(r,a).then(function(r){return WebAssembly.instantiateStreaming(r,e)}).then(function(e){return t(e.instance,e.module),e.instance.exports}).catch(function(e){throw e})}}e()(i).then(d).catch(function(e){setTimeout(function(){throw e},1)})}(),onmessage||(onmessage=function(e){if("setoption name CanOutputEngineDownloadProgress"===e.data)postMessage("info WillOutputEngineDownloadProgress");else if(e.data.progressPort)a=e.data.progressPort;else if(i.processCommand?i.processCommand(e.data):s.push(e.data),"quit"===e.data)try{self.close()}catch(e){}}))}():"object"==typeof document&&document.currentScript?document.currentScript._exports=e():e()}();