diff --git a/docs/api/index.html b/docs/api/index.html
index 913a80c..fa483c0 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -1 +1 @@
-<!doctype html><html lang="en"><head><title>FEN Visualization SDK</title><meta charset="UTF-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width,user-scalable=no"><meta name="description" content="Quick online tool for editing FEN."><link rel="icon" href="../favicon.ico" type="image/x-icon"><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-NCH5HC15TN"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[];var isHttps="https:"==location.protocol,isSelf=document.referrer&&document.referrer.includes("mutsuntsai.github.io");isHttps&&!isSelf&&(gtag("js",new Date),gtag("config","G-NCH5HC15TN"),gtag("event","fen_sdk",{url:location.href})),isHttps&&"serviceWorker"in navigator&&navigator.serviceWorker.register("../sw.js",{scope:"/fen-tool/"})</script><script>!function(){"use strict";var n={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement};function e(n,e){for(var r="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){r=e[t];break}return r||window.origin}var r={max:3,type:Object.keys(n),domain:[],crossOrigin:!1};function t(e,r){var t,i=r.target,a=null===(t=i.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),o=e.type,c=function(n){return n instanceof HTMLScriptElement||n instanceof HTMLImageElement?n.src:n instanceof HTMLLinkElement?n.href:null}(i);return!!(a&&-1!==o.indexOf(a)&&n[a]&&i instanceof n[a]&&c)&&{target:i,tagName:a,url:c}}var i=/[?#].*$/;function a(n,r){var a,o=t(n,r);if(!1!==o){var c=o.target,s=o.tagName,u=o.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(n){return-1!==u.indexOf(n)}))){var d=n.test;if(d){if("string"==typeof d){var l=new RegExp(d);d=function(n){return l.test(n)}}if("function"!=typeof d||!d(u))return}var m=e(u,n.domain);if(!(n.domain&&n.domain.length>0&&-1===n.domain.indexOf(m))){var f=Number(c.dataset.rsbuildRetryTimes)||0;if(f!==n.max){var y=function(n,r){var t=e(n,r),i=r.indexOf(t);return r[(i+1)%r.length]||n}(m,n.domain),g=null!==(a=c.dataset.rsbuildOriginalQuery)&&void 0!==a?a:function(n){var e=n.split("?")[1];return e?"?".concat(e.split("#")[0]):""}(u),p=Boolean(c.dataset.rsbuildAsync)||c.async||c.defer,v={url:function(e,r,t,a){return function(n){return n.replace(i,"")}(e.replace(r,t))+function(e){return!0===n.addQuery?""!==g?"".concat(g,"&retry=").concat(e):"?retry=".concat(e):"function"==typeof n.addQuery?n.addQuery({times:e,originalQuery:g}):""}(a+1)}(u,m,y,f),times:f+1,crossOrigin:n.crossOrigin,isAsync:p,originalQuery:g},b=function(n,e){var r=!0===e.crossOrigin?"anonymous":e.crossOrigin,t=r?'crossorigin="'.concat(r,'"'):"",i=e.times?'data-rsbuild-retry-times="'.concat(e.times,'"'):"",a=e.originalQuery?'data-rsbuild-original-query="'.concat(e.originalQuery,'"'):"",o=e.isAsync?"data-rsbuild-async":"";if(n instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=e.url,r&&(c.crossOrigin=r),e.times&&(c.dataset.rsbuildRetryTimes=String(e.times)),e.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==e.originalQuery&&(c.dataset.rsbuildOriginalQuery=e.originalQuery),{element:c,str:'<script src="'.concat(e.url,'" ').concat(t," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(n instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=n.rel||"stylesheet",n.as&&(s.as=n.as),s.href=e.url,r&&(s.crossOrigin=r),e.times&&(s.dataset.rsbuildRetryTimes=String(e.times)),void 0!==e.originalQuery&&(s.dataset.rsbuildOriginalQuery=e.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(e.url,'" ').concat(t," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}(c,v);if(n.onRetry&&"function"==typeof n.onRetry){var w={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onRetry(w)}!function(n,e,r){n instanceof HTMLScriptElement&&(r.isAsync?document.body.appendChild(e.element):document.write(e.str)),n instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(e.element),n instanceof HTMLImageElement&&(n.src=r.url,n.dataset.rsbuildRetryTimes=String(r.times),n.dataset.rsbuildOriginalQuery=String(r.originalQuery))}(c,b,v)}else if("function"==typeof n.onFail){var E={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onFail(E)}}}}}!function(n){var i={};for(var o in r)i[o]=r[o];for(var c in n)i[c]=n[c];Array.isArray(i.type)&&0!==i.type.length||(i.type=r.type),Array.isArray(i.domain)&&0!==i.domain.length||(i.domain=r.domain),Array.isArray(i.domain)&&(i.domain=i.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{!function(n,e){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(e){e&&e.target instanceof Element&&n(e)}),!0),document.addEventListener("load",(function(n){n&&n.target instanceof Element&&e(n)}),!0))}((function(n){try{a(i,n)}catch(n){console.error("retry error captured",n)}}),(function(n){try{!function(n,r){var i=t(n,r);if(!1!==i){var a=i.target,o=i.tagName,c=i.url,s=e(c,n.domain),u=Number(a.dataset.rsbuildRetryTimes)||0;if(0!==u&&"function"==typeof n.onSuccess){var d={times:u,domain:s,url:c,tagName:o,isAsyncChunk:!1};n.onSuccess(d)}}}(i,n)}catch(n){console.error("load error captured",n)}}))}catch(n){console.error("monitor error captured",n)}}({addQuery:!0,max:2,crossOrigin:!1})}()</script><script defer="defer" src="/fen-tool/static/js/137.171cee8a.js"></script><script defer="defer" src="/fen-tool/static/js/api/index.41a9756b.js"></script></head><body><canvas id="CN"></canvas></body></html>
\ No newline at end of file
+<!doctype html><html lang="en"><head><title>FEN Visualization SDK</title><meta charset="UTF-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width,user-scalable=no"><meta name="description" content="Quick online tool for editing FEN."><link rel="icon" href="../favicon.ico" type="image/x-icon"><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-NCH5HC15TN"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[];var isHttps="https:"==location.protocol,isSelf=document.referrer&&document.referrer.includes("mutsuntsai.github.io");isHttps&&!isSelf&&(gtag("js",new Date),gtag("config","G-NCH5HC15TN"),gtag("event","fen_sdk",{url:location.href})),isHttps&&"serviceWorker"in navigator&&navigator.serviceWorker.register("../sw.js",{scope:"/fen-tool/"})</script><script>!function(){"use strict";var n={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement};function e(n,e){for(var r="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){r=e[t];break}return r||window.origin}var r={max:3,type:Object.keys(n),domain:[],crossOrigin:!1};function t(e,r){var t,i=r.target,a=null===(t=i.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),o=e.type,c=function(n){return n instanceof HTMLScriptElement||n instanceof HTMLImageElement?n.src:n instanceof HTMLLinkElement?n.href:null}(i);return!!(a&&-1!==o.indexOf(a)&&n[a]&&i instanceof n[a]&&c)&&{target:i,tagName:a,url:c}}var i=/[?#].*$/;function a(n,r){var a,o=t(n,r);if(!1!==o){var c=o.target,s=o.tagName,u=o.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(n){return-1!==u.indexOf(n)}))){var d=n.test;if(d){if("string"==typeof d){var l=new RegExp(d);d=function(n){return l.test(n)}}if("function"!=typeof d||!d(u))return}var m=e(u,n.domain);if(!(n.domain&&n.domain.length>0&&-1===n.domain.indexOf(m))){var f=Number(c.dataset.rsbuildRetryTimes)||0;if(f!==n.max){var y=function(n,r){var t=e(n,r),i=r.indexOf(t);return r[(i+1)%r.length]||n}(m,n.domain),g=null!==(a=c.dataset.rsbuildOriginalQuery)&&void 0!==a?a:function(n){var e=n.split("?")[1];return e?"?".concat(e.split("#")[0]):""}(u),p=Boolean(c.dataset.rsbuildAsync)||c.async||c.defer,v={url:function(e,r,t,a){return function(n){return n.replace(i,"")}(e.replace(r,t))+function(e){return!0===n.addQuery?""!==g?"".concat(g,"&retry=").concat(e):"?retry=".concat(e):"function"==typeof n.addQuery?n.addQuery({times:e,originalQuery:g}):""}(a+1)}(u,m,y,f),times:f+1,crossOrigin:n.crossOrigin,isAsync:p,originalQuery:g},b=function(n,e){var r=!0===e.crossOrigin?"anonymous":e.crossOrigin,t=r?'crossorigin="'.concat(r,'"'):"",i=e.times?'data-rsbuild-retry-times="'.concat(e.times,'"'):"",a=e.originalQuery?'data-rsbuild-original-query="'.concat(e.originalQuery,'"'):"",o=e.isAsync?"data-rsbuild-async":"";if(n instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=e.url,r&&(c.crossOrigin=r),e.times&&(c.dataset.rsbuildRetryTimes=String(e.times)),e.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==e.originalQuery&&(c.dataset.rsbuildOriginalQuery=e.originalQuery),{element:c,str:'<script src="'.concat(e.url,'" ').concat(t," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(n instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=n.rel||"stylesheet",n.as&&(s.as=n.as),s.href=e.url,r&&(s.crossOrigin=r),e.times&&(s.dataset.rsbuildRetryTimes=String(e.times)),void 0!==e.originalQuery&&(s.dataset.rsbuildOriginalQuery=e.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(e.url,'" ').concat(t," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}(c,v);if(n.onRetry&&"function"==typeof n.onRetry){var w={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onRetry(w)}!function(n,e,r){n instanceof HTMLScriptElement&&(r.isAsync?document.body.appendChild(e.element):document.write(e.str)),n instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(e.element),n instanceof HTMLImageElement&&(n.src=r.url,n.dataset.rsbuildRetryTimes=String(r.times),n.dataset.rsbuildOriginalQuery=String(r.originalQuery))}(c,b,v)}else if("function"==typeof n.onFail){var E={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onFail(E)}}}}}!function(n){var i={};for(var o in r)i[o]=r[o];for(var c in n)i[c]=n[c];Array.isArray(i.type)&&0!==i.type.length||(i.type=r.type),Array.isArray(i.domain)&&0!==i.domain.length||(i.domain=r.domain),Array.isArray(i.domain)&&(i.domain=i.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{!function(n,e){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(e){e&&e.target instanceof Element&&n(e)}),!0),document.addEventListener("load",(function(n){n&&n.target instanceof Element&&e(n)}),!0))}((function(n){try{a(i,n)}catch(n){console.error("retry error captured",n)}}),(function(n){try{!function(n,r){var i=t(n,r);if(!1!==i){var a=i.target,o=i.tagName,c=i.url,s=e(c,n.domain),u=Number(a.dataset.rsbuildRetryTimes)||0;if(0!==u&&"function"==typeof n.onSuccess){var d={times:u,domain:s,url:c,tagName:o,isAsyncChunk:!1};n.onSuccess(d)}}}(i,n)}catch(n){console.error("load error captured",n)}}))}catch(n){console.error("monitor error captured",n)}}({addQuery:!0,max:2,crossOrigin:!1})}()</script><script defer="defer" src="/fen-tool/static/js/137.7b2f2d68.js"></script><script defer="defer" src="/fen-tool/static/js/api/index.41a9756b.js"></script></head><body><canvas id="CN"></canvas></body></html>
\ No newline at end of file
diff --git a/docs/gen/index.html b/docs/gen/index.html
index da2a2ad..c229c79 100644
--- a/docs/gen/index.html
+++ b/docs/gen/index.html
@@ -1 +1 @@
-<!doctype html><html lang="en"><head><title>FEN Visualization Embed</title><meta charset="UTF-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width,user-scalable=no"><meta name="description" content="Quick online tool for editing FEN."><link rel="icon" href="../favicon.ico" type="image/x-icon"><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-NCH5HC15TN"></script><script>function gtag(){dataLayer.push(arguments)}window.top==window.self&&document.documentElement.classList.add("top"),window.dataLayer=window.dataLayer||[];var isHttps="https:"==location.protocol;isHttps&&(gtag("js",new Date),gtag("config","G-NCH5HC15TN")),isHttps&&"serviceWorker"in navigator&&navigator.serviceWorker.register("../sw.js",{scope:"/fen-tool/"})</script><style>html.top,html.top body{height:100%}html.top body{display:flex;justify-content:center;align-items:center}body{margin:0;overflow:hidden}canvas{max-width:100vw;max-height:100vh}@media (prefers-color-scheme:dark){html.top body{background:#000}}</style><script>!function(){"use strict";var n={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement};function e(n,e){for(var r="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){r=e[t];break}return r||window.origin}var r={max:3,type:Object.keys(n),domain:[],crossOrigin:!1};function t(e,r){var t,i=r.target,a=null===(t=i.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),o=e.type,c=function(n){return n instanceof HTMLScriptElement||n instanceof HTMLImageElement?n.src:n instanceof HTMLLinkElement?n.href:null}(i);return!!(a&&-1!==o.indexOf(a)&&n[a]&&i instanceof n[a]&&c)&&{target:i,tagName:a,url:c}}var i=/[?#].*$/;function a(n,r){var a,o=t(n,r);if(!1!==o){var c=o.target,s=o.tagName,u=o.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(n){return-1!==u.indexOf(n)}))){var d=n.test;if(d){if("string"==typeof d){var l=new RegExp(d);d=function(n){return l.test(n)}}if("function"!=typeof d||!d(u))return}var m=e(u,n.domain);if(!(n.domain&&n.domain.length>0&&-1===n.domain.indexOf(m))){var f=Number(c.dataset.rsbuildRetryTimes)||0;if(f!==n.max){var y=function(n,r){var t=e(n,r),i=r.indexOf(t);return r[(i+1)%r.length]||n}(m,n.domain),g=null!==(a=c.dataset.rsbuildOriginalQuery)&&void 0!==a?a:function(n){var e=n.split("?")[1];return e?"?".concat(e.split("#")[0]):""}(u),p=Boolean(c.dataset.rsbuildAsync)||c.async||c.defer,v={url:function(e,r,t,a){return function(n){return n.replace(i,"")}(e.replace(r,t))+function(e){return!0===n.addQuery?""!==g?"".concat(g,"&retry=").concat(e):"?retry=".concat(e):"function"==typeof n.addQuery?n.addQuery({times:e,originalQuery:g}):""}(a+1)}(u,m,y,f),times:f+1,crossOrigin:n.crossOrigin,isAsync:p,originalQuery:g},b=function(n,e){var r=!0===e.crossOrigin?"anonymous":e.crossOrigin,t=r?'crossorigin="'.concat(r,'"'):"",i=e.times?'data-rsbuild-retry-times="'.concat(e.times,'"'):"",a=e.originalQuery?'data-rsbuild-original-query="'.concat(e.originalQuery,'"'):"",o=e.isAsync?"data-rsbuild-async":"";if(n instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=e.url,r&&(c.crossOrigin=r),e.times&&(c.dataset.rsbuildRetryTimes=String(e.times)),e.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==e.originalQuery&&(c.dataset.rsbuildOriginalQuery=e.originalQuery),{element:c,str:'<script src="'.concat(e.url,'" ').concat(t," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(n instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=n.rel||"stylesheet",n.as&&(s.as=n.as),s.href=e.url,r&&(s.crossOrigin=r),e.times&&(s.dataset.rsbuildRetryTimes=String(e.times)),void 0!==e.originalQuery&&(s.dataset.rsbuildOriginalQuery=e.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(e.url,'" ').concat(t," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}(c,v);if(n.onRetry&&"function"==typeof n.onRetry){var w={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onRetry(w)}!function(n,e,r){n instanceof HTMLScriptElement&&(r.isAsync?document.body.appendChild(e.element):document.write(e.str)),n instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(e.element),n instanceof HTMLImageElement&&(n.src=r.url,n.dataset.rsbuildRetryTimes=String(r.times),n.dataset.rsbuildOriginalQuery=String(r.originalQuery))}(c,b,v)}else if("function"==typeof n.onFail){var E={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onFail(E)}}}}}!function(n){var i={};for(var o in r)i[o]=r[o];for(var c in n)i[c]=n[c];Array.isArray(i.type)&&0!==i.type.length||(i.type=r.type),Array.isArray(i.domain)&&0!==i.domain.length||(i.domain=r.domain),Array.isArray(i.domain)&&(i.domain=i.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{!function(n,e){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(e){e&&e.target instanceof Element&&n(e)}),!0),document.addEventListener("load",(function(n){n&&n.target instanceof Element&&e(n)}),!0))}((function(n){try{a(i,n)}catch(n){console.error("retry error captured",n)}}),(function(n){try{!function(n,r){var i=t(n,r);if(!1!==i){var a=i.target,o=i.tagName,c=i.url,s=e(c,n.domain),u=Number(a.dataset.rsbuildRetryTimes)||0;if(0!==u&&"function"==typeof n.onSuccess){var d={times:u,domain:s,url:c,tagName:o,isAsyncChunk:!1};n.onSuccess(d)}}}(i,n)}catch(n){console.error("load error captured",n)}}))}catch(n){console.error("monitor error captured",n)}}({addQuery:!0,max:2,crossOrigin:!1})}()</script><script defer="defer" src="/fen-tool/static/js/137.171cee8a.js"></script><script defer="defer" src="/fen-tool/static/js/gen/index.19d491f7.js"></script></head><body><canvas id="CN"></canvas></body></html>
\ No newline at end of file
+<!doctype html><html lang="en"><head><title>FEN Visualization Embed</title><meta charset="UTF-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width,user-scalable=no"><meta name="description" content="Quick online tool for editing FEN."><link rel="icon" href="../favicon.ico" type="image/x-icon"><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-NCH5HC15TN"></script><script>function gtag(){dataLayer.push(arguments)}window.top==window.self&&document.documentElement.classList.add("top"),window.dataLayer=window.dataLayer||[];var isHttps="https:"==location.protocol;isHttps&&(gtag("js",new Date),gtag("config","G-NCH5HC15TN")),isHttps&&"serviceWorker"in navigator&&navigator.serviceWorker.register("../sw.js",{scope:"/fen-tool/"})</script><style>html.top,html.top body{height:100%}html.top body{display:flex;justify-content:center;align-items:center}body{margin:0;overflow:hidden}canvas{max-width:100vw;max-height:100vh}@media (prefers-color-scheme:dark){html.top body{background:#000}}</style><script>!function(){"use strict";var n={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement};function e(n,e){for(var r="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){r=e[t];break}return r||window.origin}var r={max:3,type:Object.keys(n),domain:[],crossOrigin:!1};function t(e,r){var t,i=r.target,a=null===(t=i.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),o=e.type,c=function(n){return n instanceof HTMLScriptElement||n instanceof HTMLImageElement?n.src:n instanceof HTMLLinkElement?n.href:null}(i);return!!(a&&-1!==o.indexOf(a)&&n[a]&&i instanceof n[a]&&c)&&{target:i,tagName:a,url:c}}var i=/[?#].*$/;function a(n,r){var a,o=t(n,r);if(!1!==o){var c=o.target,s=o.tagName,u=o.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(n){return-1!==u.indexOf(n)}))){var d=n.test;if(d){if("string"==typeof d){var l=new RegExp(d);d=function(n){return l.test(n)}}if("function"!=typeof d||!d(u))return}var m=e(u,n.domain);if(!(n.domain&&n.domain.length>0&&-1===n.domain.indexOf(m))){var f=Number(c.dataset.rsbuildRetryTimes)||0;if(f!==n.max){var y=function(n,r){var t=e(n,r),i=r.indexOf(t);return r[(i+1)%r.length]||n}(m,n.domain),g=null!==(a=c.dataset.rsbuildOriginalQuery)&&void 0!==a?a:function(n){var e=n.split("?")[1];return e?"?".concat(e.split("#")[0]):""}(u),p=Boolean(c.dataset.rsbuildAsync)||c.async||c.defer,v={url:function(e,r,t,a){return function(n){return n.replace(i,"")}(e.replace(r,t))+function(e){return!0===n.addQuery?""!==g?"".concat(g,"&retry=").concat(e):"?retry=".concat(e):"function"==typeof n.addQuery?n.addQuery({times:e,originalQuery:g}):""}(a+1)}(u,m,y,f),times:f+1,crossOrigin:n.crossOrigin,isAsync:p,originalQuery:g},b=function(n,e){var r=!0===e.crossOrigin?"anonymous":e.crossOrigin,t=r?'crossorigin="'.concat(r,'"'):"",i=e.times?'data-rsbuild-retry-times="'.concat(e.times,'"'):"",a=e.originalQuery?'data-rsbuild-original-query="'.concat(e.originalQuery,'"'):"",o=e.isAsync?"data-rsbuild-async":"";if(n instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=e.url,r&&(c.crossOrigin=r),e.times&&(c.dataset.rsbuildRetryTimes=String(e.times)),e.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==e.originalQuery&&(c.dataset.rsbuildOriginalQuery=e.originalQuery),{element:c,str:'<script src="'.concat(e.url,'" ').concat(t," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(n instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=n.rel||"stylesheet",n.as&&(s.as=n.as),s.href=e.url,r&&(s.crossOrigin=r),e.times&&(s.dataset.rsbuildRetryTimes=String(e.times)),void 0!==e.originalQuery&&(s.dataset.rsbuildOriginalQuery=e.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(e.url,'" ').concat(t," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}(c,v);if(n.onRetry&&"function"==typeof n.onRetry){var w={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onRetry(w)}!function(n,e,r){n instanceof HTMLScriptElement&&(r.isAsync?document.body.appendChild(e.element):document.write(e.str)),n instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(e.element),n instanceof HTMLImageElement&&(n.src=r.url,n.dataset.rsbuildRetryTimes=String(r.times),n.dataset.rsbuildOriginalQuery=String(r.originalQuery))}(c,b,v)}else if("function"==typeof n.onFail){var E={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onFail(E)}}}}}!function(n){var i={};for(var o in r)i[o]=r[o];for(var c in n)i[c]=n[c];Array.isArray(i.type)&&0!==i.type.length||(i.type=r.type),Array.isArray(i.domain)&&0!==i.domain.length||(i.domain=r.domain),Array.isArray(i.domain)&&(i.domain=i.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{!function(n,e){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(e){e&&e.target instanceof Element&&n(e)}),!0),document.addEventListener("load",(function(n){n&&n.target instanceof Element&&e(n)}),!0))}((function(n){try{a(i,n)}catch(n){console.error("retry error captured",n)}}),(function(n){try{!function(n,r){var i=t(n,r);if(!1!==i){var a=i.target,o=i.tagName,c=i.url,s=e(c,n.domain),u=Number(a.dataset.rsbuildRetryTimes)||0;if(0!==u&&"function"==typeof n.onSuccess){var d={times:u,domain:s,url:c,tagName:o,isAsyncChunk:!1};n.onSuccess(d)}}}(i,n)}catch(n){console.error("load error captured",n)}}))}catch(n){console.error("monitor error captured",n)}}({addQuery:!0,max:2,crossOrigin:!1})}()</script><script defer="defer" src="/fen-tool/static/js/137.7b2f2d68.js"></script><script defer="defer" src="/fen-tool/static/js/gen/index.19d491f7.js"></script></head><body><canvas id="CN"></canvas></body></html>
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 026a4a2..06bb943 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang="en"><head><title>FEN Tool</title><meta charset="UTF-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width,user-scalable=no"><meta name="description" content="Quick online tool for chess with features for composing problems and APIs."><link rel="icon" href="./favicon.ico" type="image/x-icon"><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-NCH5HC15TN"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[];var isHttps="https:"==location.protocol;isHttps&&(gtag("js",new Date),gtag("config","G-NCH5HC15TN")),isHttps&&"serviceWorker"in navigator&&navigator.serviceWorker.register("./sw.js",{scope:"/fen-tool/"}),self!=top&&document.documentElement.classList.add("iframe")</script><!-- PWA setup --><link rel="canonical" href="https://mutsuntsai.github.io/fen-tool"/><link rel="manifest" href="manifest.json"><link rel="icon" type="image/png" sizes="512x512" href="assets/icon/icon-512.png"><link rel="icon" type="image/png" sizes="192x192" href="assets/icon/icon-192.png"><link rel="icon" type="image/png" sizes="96x96" href="assets/icon/icon-96.png"><link rel="icon" type="image/png" sizes="48x48" href="assets/icon/icon-48.png"><link rel="icon" type="image/png" sizes="32x32" href="assets/icon/icon-32.png"><link rel="icon" type="image/png" sizes="16x16" href="assets/icon/icon-16.png"><link rel="apple-touch-icon" sizes="192x192" href="assets/icon/icon-192.png"><meta name="theme-color" content="#D18B47"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="FEN Tool"><!-- iOS splash screens --><link rel="apple-touch-startup-image" media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14_Pro_Max_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14_Pro_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/iPhone_11__iPhone_XR_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/12.9__iPad_Pro_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/11__iPad_Pro__10.5__iPad_Pro_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/10.9__iPad_Air_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/10.5__iPad_Air_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/10.2__iPad_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/8.3__iPad_Mini_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14_Pro_Max_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14_Pro_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/iPhone_11__iPhone_XR_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/12.9__iPad_Pro_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/11__iPad_Pro__10.5__iPad_Pro_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/10.9__iPad_Air_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/10.5__iPad_Air_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/10.2__iPad_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/8.3__iPad_Mini_portrait.png"><script>!function(){"use strict";var n={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement};function e(n,e){for(var r="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){r=e[t];break}return r||window.origin}var r={max:3,type:Object.keys(n),domain:[],crossOrigin:!1};function t(e,r){var t,i=r.target,a=null===(t=i.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),o=e.type,c=function(n){return n instanceof HTMLScriptElement||n instanceof HTMLImageElement?n.src:n instanceof HTMLLinkElement?n.href:null}(i);return!!(a&&-1!==o.indexOf(a)&&n[a]&&i instanceof n[a]&&c)&&{target:i,tagName:a,url:c}}var i=/[?#].*$/;function a(n,r){var a,o=t(n,r);if(!1!==o){var c=o.target,s=o.tagName,u=o.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(n){return-1!==u.indexOf(n)}))){var d=n.test;if(d){if("string"==typeof d){var l=new RegExp(d);d=function(n){return l.test(n)}}if("function"!=typeof d||!d(u))return}var m=e(u,n.domain);if(!(n.domain&&n.domain.length>0&&-1===n.domain.indexOf(m))){var f=Number(c.dataset.rsbuildRetryTimes)||0;if(f!==n.max){var y=function(n,r){var t=e(n,r),i=r.indexOf(t);return r[(i+1)%r.length]||n}(m,n.domain),g=null!==(a=c.dataset.rsbuildOriginalQuery)&&void 0!==a?a:function(n){var e=n.split("?")[1];return e?"?".concat(e.split("#")[0]):""}(u),p=Boolean(c.dataset.rsbuildAsync)||c.async||c.defer,v={url:function(e,r,t,a){return function(n){return n.replace(i,"")}(e.replace(r,t))+function(e){return!0===n.addQuery?""!==g?"".concat(g,"&retry=").concat(e):"?retry=".concat(e):"function"==typeof n.addQuery?n.addQuery({times:e,originalQuery:g}):""}(a+1)}(u,m,y,f),times:f+1,crossOrigin:n.crossOrigin,isAsync:p,originalQuery:g},b=function(n,e){var r=!0===e.crossOrigin?"anonymous":e.crossOrigin,t=r?'crossorigin="'.concat(r,'"'):"",i=e.times?'data-rsbuild-retry-times="'.concat(e.times,'"'):"",a=e.originalQuery?'data-rsbuild-original-query="'.concat(e.originalQuery,'"'):"",o=e.isAsync?"data-rsbuild-async":"";if(n instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=e.url,r&&(c.crossOrigin=r),e.times&&(c.dataset.rsbuildRetryTimes=String(e.times)),e.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==e.originalQuery&&(c.dataset.rsbuildOriginalQuery=e.originalQuery),{element:c,str:'<script src="'.concat(e.url,'" ').concat(t," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(n instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=n.rel||"stylesheet",n.as&&(s.as=n.as),s.href=e.url,r&&(s.crossOrigin=r),e.times&&(s.dataset.rsbuildRetryTimes=String(e.times)),void 0!==e.originalQuery&&(s.dataset.rsbuildOriginalQuery=e.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(e.url,'" ').concat(t," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}(c,v);if(n.onRetry&&"function"==typeof n.onRetry){var w={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onRetry(w)}!function(n,e,r){n instanceof HTMLScriptElement&&(r.isAsync?document.body.appendChild(e.element):document.write(e.str)),n instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(e.element),n instanceof HTMLImageElement&&(n.src=r.url,n.dataset.rsbuildRetryTimes=String(r.times),n.dataset.rsbuildOriginalQuery=String(r.originalQuery))}(c,b,v)}else if("function"==typeof n.onFail){var E={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onFail(E)}}}}}!function(n){var i={};for(var o in r)i[o]=r[o];for(var c in n)i[c]=n[c];Array.isArray(i.type)&&0!==i.type.length||(i.type=r.type),Array.isArray(i.domain)&&0!==i.domain.length||(i.domain=r.domain),Array.isArray(i.domain)&&(i.domain=i.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{!function(n,e){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(e){e&&e.target instanceof Element&&n(e)}),!0),document.addEventListener("load",(function(n){n&&n.target instanceof Element&&e(n)}),!0))}((function(n){try{a(i,n)}catch(n){console.error("retry error captured",n)}}),(function(n){try{!function(n,r){var i=t(n,r);if(!1!==i){var a=i.target,o=i.tagName,c=i.url,s=e(c,n.domain),u=Number(a.dataset.rsbuildRetryTimes)||0;if(0!==u&&"function"==typeof n.onSuccess){var d={times:u,domain:s,url:c,tagName:o,isAsyncChunk:!1};n.onSuccess(d)}}}(i,n)}catch(n){console.error("load error captured",n)}}))}catch(n){console.error("monitor error captured",n)}}({addQuery:!0,max:2,crossOrigin:!1})}()</script><script defer="defer" src="/fen-tool/static/js/vue.fc524477.js"></script><script defer="defer" src="/fen-tool/static/js/165.c128f14d.js"></script><script defer="defer" src="/fen-tool/static/js/index.57e688a6.js"></script><link href="/fen-tool/static/css/index.bfea9f36.css" rel="preload" as="style"><link href="/fen-tool/static/css/index.bfea9f36.css" rel="stylesheet"></head><body class="m-0"><div id="app" style="display:contents"><div style="display:contents"><main class="d-flex justify-content-center p-3"><div class="flex-grow-0 text-start" style="max-width:100%"><header class="w-passive-100"><div class="row gx-3 mb-1"><div class="col mb-2" style="flex-basis:15rem;flex-grow:1000"><input class="form-control" placeholder="Enter FEN here"></div><div class="col ps-0 mb-2 text-end" style="white-space:nowrap;flex-basis:max-content"><label class="col-form-label pe-2">(0+0)</label><!--v-if--></div></div></header><div class="text-center"><div class="d-inline-block" style="overflow:hidden"><div id="Zone" class="d-inline-flex justify-content-center text-center collapse flex-wrap-reverse"><div id="EditZone" class="flex-grow-0 pb-4" style="text-align:unset"><div class="d-inline-block position-relative"><canvas id="SN"></canvas><div id="Squares"><div class="play-mask" style="display:none"></div></div></div></div><div id="DragZone" class="flex-grow-0 pb-4"><div class="position-relative d-inline-block" style="line-height:0" role="application"><canvas id="CN"></canvas><div class="loader show"><div class="h-100 d-flex align-items-center justify-content-center"><i class="display-1 fa-solid fa-spinner fa-spin"></i></div></div><img id="PV"></div><canvas id="TP" class="ms-4" role="menu"></canvas></div></div></div></div><div class="w-passive-100"><div class="mb-3 nav-container"><ul class="nav nav-tabs pe-1" style="flex-wrap:nowrap"><li class="nav-item"><div class="nav-link active" title="Edit"><span class="d-sm-none"><i class="fa-solid fa-pen-to-square"></i></span><span class="d-none d-sm-inline"><!--[-->Edit<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Project"><span class="d-sm-none"><i class="fa-solid fa-chess-board"></i></span><span class="d-none d-sm-inline"><!--[-->Project<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Options"><span class="d-sm-none"><i class="fa-solid fa-gear"></i></span><span class="d-none d-sm-inline"><!--[-->Options<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Compute"><span class="d-sm-none"><i class="fa-solid fa-calculator"></i></span><span class="d-none d-sm-inline"><!--[-->Compute<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Play"><span class="d-sm-none"><i class="fa-solid fa-gamepad"></i></span><span class="d-none d-sm-inline"><!--[-->Play<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Database"><span class="d-sm-none"><i class="fa-solid fa-database"></i></span><span class="d-none d-sm-inline"><!--[-->DB<!--]--></span></div></li><!--v-if--><li class="nav-item"><div class="nav-link" title="API"><span class="d-sm-none"><i class="fa-solid fa-share-from-square"></i></span><span class="d-none d-sm-inline"><!--[-->API<!--]--></span></div></li></ul></div><div class="d-flex mb-4"><section class="show"><div class="mb-3 btn-gap"><span class="d-inline-block"><button type="button" class="btn btn-secondary" title="Empty board"><i class="fa-solid fa-trash-can"></i><span> Empty board</span></button><button type="button" class="btn btn-secondary" title="Starting position"><i class="fa-solid fa-flag-checkered"></i><span> Starting position</span></button></span><span class="btn-group"><button type="button" class="btn btn-secondary" title="Shift leftwards"><i class="fa-solid fa-arrow-left"></i></button><button type="button" class="btn btn-secondary" title="Shift rightwards"><i class="fa-solid fa-arrow-right"></i></button><button type="button" class="btn btn-secondary" title="Shift upwards"><i class="fa-solid fa-arrow-up"></i></button><button type="button" class="btn btn-secondary" title="Shift downwards"><i class="fa-solid fa-arrow-down"></i></button></span><span class="btn-group"><button type="button" class="btn btn-secondary" title="Rotate counterclockwise"><i class="fa-solid fa-rotate-left"></i></button><button type="button" class="btn btn-secondary" title="Rotate clockwise"><i class="fa-solid fa-rotate-right"></i></button><button type="button" class="btn btn-secondary" title="Mirror horizontally"><i class="fa-solid fa-arrows-left-right"></i></button><button type="button" class="btn btn-secondary" title="Mirror vertically"><i class="fa-solid fa-arrows-up-down"></i></button></span><span class="btn-group"><button type="button" class="btn btn-secondary px-2" title="All Black"><i class="fa-solid fa-chess-king fa-fw text-black shadow-white"></i></button><button type="button" class="btn btn-secondary px-2" title="All Neutral"><i class="fa-solid fa-chess-king fa-fw shadow-neutral" style="color:gray"></i></button><button type="button" class="btn btn-secondary px-2" title="All White"><i class="fa-solid fa-chess-king fa-fw text-white shadow-black"></i></button></span><span class="btn-group"><button type="button" class="btn btn-secondary" title="Switch side"><i class="fa-solid fa-chess-king text-black shadow-white"></i> <i class="fa-solid fa-arrows-left-right"></i> <i class="fa-solid fa-chess-king text-white shadow-black"></i></button><button type="button" class="btn btn-secondary" title="Switch case (including text)">A <i class="fa-solid fa-arrows-left-right"></i> a</button><button type="button" class="btn btn-secondary" title="Change all S to N when &#39;Use S for knight&#39; mode is off">S <i class="fa-solid fa-arrow-right"></i> N</button></span></div><div class="text-end btn-gap"><span class="d-inline-block"><!--v-if--><!--v-if--><button type="button" class="btn nowrap btn-primary"><i class="fa-solid fa-clipboard"></i> <!--[-->Create image URL<!--]--></button></span><span class="d-inline-block"><!--v-if--><a class="btn btn-primary" download="board.png" id="Save" onclick="gtag(&#39;event&#39;, &#39;img_save&#39;)"><i class="fa-solid fa-download"></i> Save image</a></span></div><!--v-if--></section><section><input type="file" class="d-none" id="project_file" accept=".fentool,.olv"><div class="btn-gap"><div class="btn-group"><button type="button" class="btn btn-primary pe-2"><i class="fa-solid fa-plus"></i> Add</button><button type="button" class="ps-2 btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="visually-hidden">Toggle Dropdown</span></button><div class="dropdown-menu"><div class="dropdown-item">As a Popeye problem</div></div></div><label for="project_file" class="btn btn-secondary" title="Open a project file"><i class="fa-regular fa-folder-open"></i> Open</label><a download="project.fentool" class="btn btn-secondary" title="Save project file"><i class="fa-solid fa-download"></i> Save </a><button class="btn btn-secondary" title="Clear all positions in the project"><i class="fa-regular fa-file"></i> Clear</button></div><!--v-if--></section><section><div class="row mb-2"><div class="col flex-grow-1" style="flex-basis:18rem"><div class="row gx-3"><div class="col" style="flex-basis:15rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Chess set:</label><div class="col"><select class="form-select"><option value="1echecs" data-v-76708281>1Echecs</option><option value="alpha" data-v-76708281>Alpha</option><option value="goodCompanion" data-v-76708281>Good Companion</option><option value="kilfiger" data-v-76708281>Kilfiger</option><option value="merida" data-v-76708281>Merida</option><option value="mpchess" data-v-76708281>MPChess</option><option value="skak" data-v-76708281>Skak</option></select></div></div></div><div class="col" style="flex-basis:13rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Square size:</label><div class="col"><select class="form-select"><option value="26">26px</option><option value="32">32px</option><option value="38">38px</option><option value="44">44px</option></select></div></div></div></div><div class="form-check mb-2"><input type="checkbox" class="form-check-input" id="chk17" checked="checked"><label class="form-check-label" for="chk17"><!--[-->Export to high-resolution image<!--]--></label></div><div class="row gx-3"><div class="col" style="flex-basis:15rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Background:</label><div class="col"><select class="form-select"><option>Default</option><option value="gray">Gray</option><option value="green">Green</option><option value="classic">Classic</option></select></div></div></div><div class="col" style="flex-basis:16rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Board pattern:</label><div class="col"><select class="form-select"><option>Normal</option><option value="inverted">Inverted</option><option value="mono">Uncolored</option></select></div></div></div></div></div><div class="col flex-grow-1 mb-2" style="flex-basis:22rem"><div class="row gx-3"><div class="col" style="flex-basis:22rem"><div class="row gx-3"><div class="col mb-2" style="flex-basis:14rem;flex-grow:10000"><div class="row gx-3"><div class="col"><div class="input-group"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-minus"></i></button><input type="number" class="form-control text-center px-0" min="1" title="Files" value="8" onfocus="this.select()"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-plus"></i></button></div></div><label class="col-auto col-form-label">x</label><div class="col"><div class="input-group"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-minus"></i></button><input type="number" class="form-control text-center px-0" min="1" title="Ranks" value="8" onfocus="this.select()"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-plus"></i></button></div></div></div></div><div class="col mb-2 text-end"><button type="button" class="btn btn-secondary">Reset</button></div></div></div><div class="col" style="flex-basis:14rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Border pattern:</label><div class="col"><input placeholder="Use comma-separated numbers" title="Use comma-separated numbers" class="form-control" value="1"></div></div></div></div><div class="form-check"><input type="checkbox" class="form-check-input" id="chk20"><label class="form-check-label" for="chk20"><!--[-->Use S for knight<!--]--></label></div><div class="row gx-3 align-items-baseline"><div class="col" style="flex-basis:15rem"><div class="form-check"><input type="checkbox" class="form-check-input" id="chk21"><label class="form-check-label" for="chk21"><!--[-->Black/White neutral piece<!--]--></label></div></div><div class="col" style="flex-basis:15rem;display:none"><div class="row align-items-center"><label class="col-auto col-form-label">Knight offset:</label><div class="col"><input type="range" class="form-range" min="0.25" max="0.75" step="0.025" value="0.6"></div></div></div></div><div class="d-none d-md-block"><div class="form-check"><input type="checkbox" class="form-check-input" id="chk22" checked="checked"><label class="form-check-label" for="chk22"><!--[-->Always collapse boards<!--]--></label></div></div><div class="form-check"><input type="checkbox" class="form-check-input" id="chk23"><label class="form-check-label" for="chk23"><!--[-->Show coordinate labels<!--]--></label></div><div class="form-check"><input type="checkbox" class="form-check-input" id="chk24"><label class="form-check-label" for="chk24"><!--[-->Show full FEN<!--]--></label></div></div></div></section><section><div class="mb-2 btn-gap"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy base64 link<!--]--></button><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy base64 &lt;img&gt; code<!--]--></button></div><h6>Embed mode</h6><div class="mb-2 btn-gap"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy embed HTML code<!--]--></button><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy just the URL<!--]--></button></div><h6>SDK mode</h6><div class="btn-gap"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy SDK script tag<!--]--></button><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy SDK &lt;img&gt; code<!--]--></button></div></section><section><div class="row gx-3 mb-2 align-items-center"><label class="col-auto col-form-label">Use database:</label><div class="col"><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" checked="checked" name="DB" id="rPDB"><label class="form-check-label" for="rPDB">PDB</label></div><div class="form-check d-inline-block"><input class="form-check-input" type="radio" name="DB" id="rYACPDB"><label class="form-check-label" for="rYACPDB">YACPDB</label></div></div></div><div class="mb-3 btn-gap"><button type="button" class="btn nowrap btn-primary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy board edit syntax<!--]--></button><!--v-if--></div><div class="row gx-3 mb-3"><label class="col-auto col-form-label">Problem Id:</label><div class="col"><input class="form-control"></div><div class="col-auto"><input type="button" class="btn btn-primary" value="Get FEN"></div></div><div class="row align-items-center flex-wrap"><div class="col-auto mb-2"><div class="form-check"><input type="checkbox" class="form-check-input" id="chk34"><label class="form-check-label" for="chk34"><!--[-->Search exactly these pieces<!--]--></label></div></div><div class="col text-end btn-gap" style="flex-basis:24rem"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy search query<!--]--></button><button class="btn btn-primary nowrap"><i class="fa-solid fa-magnifying-glass"></i> Search position</button></div></div></section><section><!--[--><div class="btn-gap"><button class="btn btn-primary">Start playing</button><button type="button" class="btn btn-secondary"><i class="fa-solid fa-flag-checkered"></i>  Starting position</button><button class="btn btn-secondary"><i class="fa-solid fa-paste"></i> Paste PGN</button></div><div class="mt-2 gx-3 row"><div class="col flex-grow-1" style="flex-basis:22rem"><div class="d-flex align-items-center flex-wrap-reverse mb-2"><div class="flex-grow-1 col-form-label" style="flex-basis:max-content"><!--[--><span class="me-3">Turn:</span><!--[--><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" checked="checked" name="rdo37" id="rdo37_0"><label class="form-check-label" for="rdo37_0">White</label></div><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" name="rdo37" id="rdo37_1"><label class="form-check-label" for="rdo37_1">Black</label></div><!--]--><!--]--></div><div class="flex-grow-1" style="flex-basis:max-content"><div class="row gx-3"><label class="col-auto col-form-label">Mode:</label><div class="col"><select class="form-select"><option value="normal">Normal</option><option value="pass">Allow passing move</option><option value="retro">Retro</option></select></div></div></div></div><div class="mb-2">Castling: <span class="d-inline-block"><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk38" checked="checked"><label class="form-check-label" for="chk38"><!--[-->WK<!--]--></label></div><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk39" checked="checked"><label class="form-check-label" for="chk39"><!--[-->WQ<!--]--></label></div></span><span class="d-inline-block"><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk40" checked="checked"><label class="form-check-label" for="chk40"><!--[-->BK<!--]--></label></div><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk41" checked="checked"><label class="form-check-label" for="chk41"><!--[-->BQ<!--]--></label></div></span></div></div><div class="col flex-grow-1" style="flex-basis:22rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">En passant square:</label><div class="col"><input class="form-control" maxlength="2"></div></div><div class="row gx-3"><div class="col mb-2" style="flex-basis:10.5rem"><div class="row gx-3"><label class="col-auto col-form-label">Half moves:</label><div class="col"><input type="number" class="form-control" min="0" value="0"></div></div></div><div class="col mb-2" style="flex-basis:10.5rem"><div class="row gx-3"><label class="col-auto col-form-label">Full moves:</label><div class="col"><input type="number" class="form-control" min="1" value="1"></div></div></div></div><div class="text-end"><button class="btn btn-secondary">Reset settings</button></div></div></div><!--]--></section><section style="display:none"><div class="mb-3"><!--[--><span class="me-3">Tool:</span><!--[--><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" checked="checked" name="rdo43" id="rdo43_0"><label class="form-check-label" for="rdo43_0">Popeye</label></div><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" name="rdo43" id="rdo43_1"><label class="form-check-label" for="rdo43_1">Stockfish</label></div><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" name="rdo43" id="rdo43_2"><label class="form-check-label" for="rdo43_2">Syzygy</label></div><!--]--><!--]--></div><div><div><textarea class="form-control mb-2" rows="5" placeholder="For example:
+<!doctype html><html lang="en"><head><title>FEN Tool</title><meta charset="UTF-8"><meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width,user-scalable=no"><meta name="description" content="Quick online tool for chess with features for composing problems and APIs."><link rel="icon" href="./favicon.ico" type="image/x-icon"><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-NCH5HC15TN"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[];var isHttps="https:"==location.protocol;isHttps&&(gtag("js",new Date),gtag("config","G-NCH5HC15TN")),isHttps&&"serviceWorker"in navigator&&navigator.serviceWorker.register("./sw.js",{scope:"/fen-tool/"}),self!=top&&document.documentElement.classList.add("iframe")</script><!-- PWA setup --><link rel="canonical" href="https://mutsuntsai.github.io/fen-tool"/><link rel="manifest" href="manifest.json"><link rel="icon" type="image/png" sizes="512x512" href="assets/icon/icon-512.png"><link rel="icon" type="image/png" sizes="192x192" href="assets/icon/icon-192.png"><link rel="icon" type="image/png" sizes="96x96" href="assets/icon/icon-96.png"><link rel="icon" type="image/png" sizes="48x48" href="assets/icon/icon-48.png"><link rel="icon" type="image/png" sizes="32x32" href="assets/icon/icon-32.png"><link rel="icon" type="image/png" sizes="16x16" href="assets/icon/icon-16.png"><link rel="apple-touch-icon" sizes="192x192" href="assets/icon/icon-192.png"><meta name="theme-color" content="#D18B47"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-title" content="FEN Tool"><!-- iOS splash screens --><link rel="apple-touch-startup-image" media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14_Pro_Max_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14_Pro_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_11_Pro_Max__iPhone_XS_Max_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/iPhone_11__iPhone_XR_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)" href="assets/splash/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/4__iPhone_SE__iPod_touch_5th_generation_and_later_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/12.9__iPad_Pro_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/11__iPad_Pro__10.5__iPad_Pro_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/10.9__iPad_Air_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/10.5__iPad_Air_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/10.2__iPad_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)" href="assets/splash/8.3__iPad_Mini_landscape.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14_Pro_Max_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14_Pro_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14_Plus__iPhone_13_Pro_Max__iPhone_12_Pro_Max_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_14__iPhone_13_Pro__iPhone_13__iPhone_12_Pro__iPhone_12_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_13_mini__iPhone_12_mini__iPhone_11_Pro__iPhone_XS__iPhone_X_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_11_Pro_Max__iPhone_XS_Max_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/iPhone_11__iPhone_XR_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)" href="assets/splash/iPhone_8_Plus__iPhone_7_Plus__iPhone_6s_Plus__iPhone_6_Plus_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/iPhone_8__iPhone_7__iPhone_6s__iPhone_6__4.7__iPhone_SE_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/4__iPhone_SE__iPod_touch_5th_generation_and_later_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/12.9__iPad_Pro_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/11__iPad_Pro__10.5__iPad_Pro_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/10.9__iPad_Air_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/10.5__iPad_Air_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/10.2__iPad_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/9.7__iPad_Pro__7.9__iPad_mini__9.7__iPad_Air__9.7__iPad_portrait.png"><link rel="apple-touch-startup-image" media="screen and (device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)" href="assets/splash/8.3__iPad_Mini_portrait.png"><script>!function(){"use strict";var n={link:HTMLLinkElement,script:HTMLScriptElement,img:HTMLImageElement};function e(n,e){for(var r="",t=0;t<e.length;t++)if(-1!==n.indexOf(e[t])){r=e[t];break}return r||window.origin}var r={max:3,type:Object.keys(n),domain:[],crossOrigin:!1};function t(e,r){var t,i=r.target,a=null===(t=i.tagName)||void 0===t?void 0:t.toLocaleLowerCase(),o=e.type,c=function(n){return n instanceof HTMLScriptElement||n instanceof HTMLImageElement?n.src:n instanceof HTMLLinkElement?n.href:null}(i);return!!(a&&-1!==o.indexOf(a)&&n[a]&&i instanceof n[a]&&c)&&{target:i,tagName:a,url:c}}var i=/[?#].*$/;function a(n,r){var a,o=t(n,r);if(!1!==o){var c=o.target,s=o.tagName,u=o.url;if("undefined"==typeof window||!Object.keys(window.__RB_ASYNC_CHUNKS__||{}).some((function(n){return-1!==u.indexOf(n)}))){var d=n.test;if(d){if("string"==typeof d){var l=new RegExp(d);d=function(n){return l.test(n)}}if("function"!=typeof d||!d(u))return}var m=e(u,n.domain);if(!(n.domain&&n.domain.length>0&&-1===n.domain.indexOf(m))){var f=Number(c.dataset.rsbuildRetryTimes)||0;if(f!==n.max){var y=function(n,r){var t=e(n,r),i=r.indexOf(t);return r[(i+1)%r.length]||n}(m,n.domain),g=null!==(a=c.dataset.rsbuildOriginalQuery)&&void 0!==a?a:function(n){var e=n.split("?")[1];return e?"?".concat(e.split("#")[0]):""}(u),p=Boolean(c.dataset.rsbuildAsync)||c.async||c.defer,v={url:function(e,r,t,a){return function(n){return n.replace(i,"")}(e.replace(r,t))+function(e){return!0===n.addQuery?""!==g?"".concat(g,"&retry=").concat(e):"?retry=".concat(e):"function"==typeof n.addQuery?n.addQuery({times:e,originalQuery:g}):""}(a+1)}(u,m,y,f),times:f+1,crossOrigin:n.crossOrigin,isAsync:p,originalQuery:g},b=function(n,e){var r=!0===e.crossOrigin?"anonymous":e.crossOrigin,t=r?'crossorigin="'.concat(r,'"'):"",i=e.times?'data-rsbuild-retry-times="'.concat(e.times,'"'):"",a=e.originalQuery?'data-rsbuild-original-query="'.concat(e.originalQuery,'"'):"",o=e.isAsync?"data-rsbuild-async":"";if(n instanceof HTMLScriptElement){var c=document.createElement("script");return c.src=e.url,r&&(c.crossOrigin=r),e.times&&(c.dataset.rsbuildRetryTimes=String(e.times)),e.isAsync&&(c.dataset.rsbuildAsync=""),void 0!==e.originalQuery&&(c.dataset.rsbuildOriginalQuery=e.originalQuery),{element:c,str:'<script src="'.concat(e.url,'" ').concat(t," ").concat(i," ").concat(o," ").concat(a,">")+"<\/script>"}}if(n instanceof HTMLLinkElement){var s=document.createElement("link");return s.rel=n.rel||"stylesheet",n.as&&(s.as=n.as),s.href=e.url,r&&(s.crossOrigin=r),e.times&&(s.dataset.rsbuildRetryTimes=String(e.times)),void 0!==e.originalQuery&&(s.dataset.rsbuildOriginalQuery=e.originalQuery),{element:s,str:'<link rel="'.concat(s.rel,'" href="').concat(e.url,'" ').concat(t," ").concat(i," ").concat(s.as?'as="'.concat(s.as,'"'):""," ").concat(a,"></link>")}}}(c,v);if(n.onRetry&&"function"==typeof n.onRetry){var w={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onRetry(w)}!function(n,e,r){n instanceof HTMLScriptElement&&(r.isAsync?document.body.appendChild(e.element):document.write(e.str)),n instanceof HTMLLinkElement&&document.getElementsByTagName("head")[0].appendChild(e.element),n instanceof HTMLImageElement&&(n.src=r.url,n.dataset.rsbuildRetryTimes=String(r.times),n.dataset.rsbuildOriginalQuery=String(r.originalQuery))}(c,b,v)}else if("function"==typeof n.onFail){var E={times:f,domain:m,url:u,tagName:s,isAsyncChunk:!1};n.onFail(E)}}}}}!function(n){var i={};for(var o in r)i[o]=r[o];for(var c in n)i[c]=n[c];Array.isArray(i.type)&&0!==i.type.length||(i.type=r.type),Array.isArray(i.domain)&&0!==i.domain.length||(i.domain=r.domain),Array.isArray(i.domain)&&(i.domain=i.domain.filter(Boolean)),"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{!function(n,e){"undefined"!=typeof window&&void 0!==window.document&&(document.addEventListener("error",(function(e){e&&e.target instanceof Element&&n(e)}),!0),document.addEventListener("load",(function(n){n&&n.target instanceof Element&&e(n)}),!0))}((function(n){try{a(i,n)}catch(n){console.error("retry error captured",n)}}),(function(n){try{!function(n,r){var i=t(n,r);if(!1!==i){var a=i.target,o=i.tagName,c=i.url,s=e(c,n.domain),u=Number(a.dataset.rsbuildRetryTimes)||0;if(0!==u&&"function"==typeof n.onSuccess){var d={times:u,domain:s,url:c,tagName:o,isAsyncChunk:!1};n.onSuccess(d)}}}(i,n)}catch(n){console.error("load error captured",n)}}))}catch(n){console.error("monitor error captured",n)}}({addQuery:!0,max:2,crossOrigin:!1})}()</script><script defer="defer" src="/fen-tool/static/js/vue.fc524477.js"></script><script defer="defer" src="/fen-tool/static/js/165.c128f14d.js"></script><script defer="defer" src="/fen-tool/static/js/index.702b8160.js"></script><link href="/fen-tool/static/css/index.bfea9f36.css" rel="preload" as="style"><link href="/fen-tool/static/css/index.bfea9f36.css" rel="stylesheet"></head><body class="m-0"><div id="app" style="display:contents"><div style="display:contents"><main class="d-flex justify-content-center p-3"><div class="flex-grow-0 text-start" style="max-width:100%"><header class="w-passive-100"><div class="row gx-3 mb-1"><div class="col mb-2" style="flex-basis:15rem;flex-grow:1000"><input class="form-control" placeholder="Enter FEN here"></div><div class="col ps-0 mb-2 text-end" style="white-space:nowrap;flex-basis:max-content"><label class="col-form-label pe-2">(0+0)</label><!--v-if--></div></div></header><div class="text-center"><div class="d-inline-block" style="overflow:hidden"><div id="Zone" class="d-inline-flex justify-content-center text-center collapse flex-wrap-reverse"><div id="EditZone" class="flex-grow-0 pb-4" style="text-align:unset"><div class="d-inline-block position-relative"><canvas id="SN"></canvas><div id="Squares"><div class="play-mask" style="display:none"></div></div></div></div><div id="DragZone" class="flex-grow-0 pb-4"><div class="position-relative d-inline-block" style="line-height:0" role="application"><canvas id="CN"></canvas><div class="loader show"><div class="h-100 d-flex align-items-center justify-content-center"><i class="display-1 fa-solid fa-spinner fa-spin"></i></div></div><img id="PV"></div><canvas id="TP" class="ms-4" role="menu"></canvas></div></div></div></div><div class="w-passive-100"><div class="mb-3 nav-container"><ul class="nav nav-tabs pe-1" style="flex-wrap:nowrap"><li class="nav-item"><div class="nav-link active" title="Edit"><span class="d-sm-none"><i class="fa-solid fa-pen-to-square"></i></span><span class="d-none d-sm-inline"><!--[-->Edit<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Project"><span class="d-sm-none"><i class="fa-solid fa-chess-board"></i></span><span class="d-none d-sm-inline"><!--[-->Project<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Options"><span class="d-sm-none"><i class="fa-solid fa-gear"></i></span><span class="d-none d-sm-inline"><!--[-->Options<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Compute"><span class="d-sm-none"><i class="fa-solid fa-calculator"></i></span><span class="d-none d-sm-inline"><!--[-->Compute<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Play"><span class="d-sm-none"><i class="fa-solid fa-gamepad"></i></span><span class="d-none d-sm-inline"><!--[-->Play<!--]--></span></div></li><li class="nav-item"><div class="nav-link" title="Database"><span class="d-sm-none"><i class="fa-solid fa-database"></i></span><span class="d-none d-sm-inline"><!--[-->DB<!--]--></span></div></li><!--v-if--><li class="nav-item"><div class="nav-link" title="API"><span class="d-sm-none"><i class="fa-solid fa-share-from-square"></i></span><span class="d-none d-sm-inline"><!--[-->API<!--]--></span></div></li></ul></div><div class="d-flex mb-4"><section class="show"><div class="mb-3 btn-gap"><span class="d-inline-block"><button type="button" class="btn btn-secondary" title="Empty board"><i class="fa-solid fa-trash-can"></i><span> Empty board</span></button><button type="button" class="btn btn-secondary" title="Starting position"><i class="fa-solid fa-flag-checkered"></i><span> Starting position</span></button></span><span class="btn-group"><button type="button" class="btn btn-secondary" title="Shift leftwards"><i class="fa-solid fa-arrow-left"></i></button><button type="button" class="btn btn-secondary" title="Shift rightwards"><i class="fa-solid fa-arrow-right"></i></button><button type="button" class="btn btn-secondary" title="Shift upwards"><i class="fa-solid fa-arrow-up"></i></button><button type="button" class="btn btn-secondary" title="Shift downwards"><i class="fa-solid fa-arrow-down"></i></button></span><span class="btn-group"><button type="button" class="btn btn-secondary" title="Rotate counterclockwise"><i class="fa-solid fa-rotate-left"></i></button><button type="button" class="btn btn-secondary" title="Rotate clockwise"><i class="fa-solid fa-rotate-right"></i></button><button type="button" class="btn btn-secondary" title="Mirror horizontally"><i class="fa-solid fa-arrows-left-right"></i></button><button type="button" class="btn btn-secondary" title="Mirror vertically"><i class="fa-solid fa-arrows-up-down"></i></button></span><span class="btn-group"><button type="button" class="btn btn-secondary px-2" title="All Black"><i class="fa-solid fa-chess-king fa-fw text-black shadow-white"></i></button><button type="button" class="btn btn-secondary px-2" title="All Neutral"><i class="fa-solid fa-chess-king fa-fw shadow-neutral" style="color:gray"></i></button><button type="button" class="btn btn-secondary px-2" title="All White"><i class="fa-solid fa-chess-king fa-fw text-white shadow-black"></i></button></span><span class="btn-group"><button type="button" class="btn btn-secondary" title="Switch side"><i class="fa-solid fa-chess-king text-black shadow-white"></i> <i class="fa-solid fa-arrows-left-right"></i> <i class="fa-solid fa-chess-king text-white shadow-black"></i></button><button type="button" class="btn btn-secondary" title="Switch case (including text)">A <i class="fa-solid fa-arrows-left-right"></i> a</button><button type="button" class="btn btn-secondary" title="Change all S to N when &#39;Use S for knight&#39; mode is off">S <i class="fa-solid fa-arrow-right"></i> N</button></span></div><div class="text-end btn-gap"><span class="d-inline-block"><!--v-if--><!--v-if--><button type="button" class="btn nowrap btn-primary"><i class="fa-solid fa-clipboard"></i> <!--[-->Create image URL<!--]--></button></span><span class="d-inline-block"><!--v-if--><a class="btn btn-primary" download="board.png" id="Save" onclick="gtag(&#39;event&#39;, &#39;img_save&#39;)"><i class="fa-solid fa-download"></i> Save image</a></span></div><!--v-if--></section><section><input type="file" class="d-none" id="project_file" accept=".fentool,.olv"><div class="btn-gap"><div class="btn-group"><button type="button" class="btn btn-primary pe-2"><i class="fa-solid fa-plus"></i> Add</button><button type="button" class="ps-2 btn btn-primary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="visually-hidden">Toggle Dropdown</span></button><div class="dropdown-menu"><div class="dropdown-item">As a Popeye problem</div></div></div><label for="project_file" class="btn btn-secondary" title="Open a project file"><i class="fa-regular fa-folder-open"></i> Open</label><a download="project.fentool" class="btn btn-secondary" title="Save project file"><i class="fa-solid fa-download"></i> Save </a><button class="btn btn-secondary" title="Clear all positions in the project"><i class="fa-regular fa-file"></i> Clear</button></div><!--v-if--></section><section><div class="row mb-2"><div class="col flex-grow-1" style="flex-basis:18rem"><div class="row gx-3"><div class="col" style="flex-basis:15rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Chess set:</label><div class="col"><select class="form-select"><option value="1echecs" data-v-76708281>1Echecs</option><option value="alpha" data-v-76708281>Alpha</option><option value="goodCompanion" data-v-76708281>Good Companion</option><option value="kilfiger" data-v-76708281>Kilfiger</option><option value="merida" data-v-76708281>Merida</option><option value="mpchess" data-v-76708281>MPChess</option><option value="skak" data-v-76708281>Skak</option></select></div></div></div><div class="col" style="flex-basis:13rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Square size:</label><div class="col"><select class="form-select"><option value="26">26px</option><option value="32">32px</option><option value="38">38px</option><option value="44">44px</option></select></div></div></div></div><div class="form-check mb-2"><input type="checkbox" class="form-check-input" id="chk17" checked="checked"><label class="form-check-label" for="chk17"><!--[-->Export to high-resolution image<!--]--></label></div><div class="row gx-3"><div class="col" style="flex-basis:15rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Background:</label><div class="col"><select class="form-select"><option>Default</option><option value="gray">Gray</option><option value="green">Green</option><option value="classic">Classic</option></select></div></div></div><div class="col" style="flex-basis:16rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Board pattern:</label><div class="col"><select class="form-select"><option>Normal</option><option value="inverted">Inverted</option><option value="mono">Uncolored</option></select></div></div></div></div></div><div class="col flex-grow-1 mb-2" style="flex-basis:22rem"><div class="row gx-3"><div class="col" style="flex-basis:22rem"><div class="row gx-3"><div class="col mb-2" style="flex-basis:14rem;flex-grow:10000"><div class="row gx-3"><div class="col"><div class="input-group"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-minus"></i></button><input type="number" class="form-control text-center px-0" min="1" title="Files" value="8" onfocus="this.select()"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-plus"></i></button></div></div><label class="col-auto col-form-label">x</label><div class="col"><div class="input-group"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-minus"></i></button><input type="number" class="form-control text-center px-0" min="1" title="Ranks" value="8" onfocus="this.select()"><button class="btn btn-secondary px-2" type="button"><i class="fa-solid fa-plus"></i></button></div></div></div></div><div class="col mb-2 text-end"><button type="button" class="btn btn-secondary">Reset</button></div></div></div><div class="col" style="flex-basis:14rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">Border pattern:</label><div class="col"><input placeholder="Use comma-separated numbers" title="Use comma-separated numbers" class="form-control" value="1"></div></div></div></div><div class="form-check"><input type="checkbox" class="form-check-input" id="chk20"><label class="form-check-label" for="chk20"><!--[-->Use S for knight<!--]--></label></div><div class="row gx-3 align-items-baseline"><div class="col" style="flex-basis:15rem"><div class="form-check"><input type="checkbox" class="form-check-input" id="chk21"><label class="form-check-label" for="chk21"><!--[-->Black/White neutral piece<!--]--></label></div></div><div class="col" style="flex-basis:15rem;display:none"><div class="row align-items-center"><label class="col-auto col-form-label">Knight offset:</label><div class="col"><input type="range" class="form-range" min="0.25" max="0.75" step="0.025" value="0.6"></div></div></div></div><div class="d-none d-md-block"><div class="form-check"><input type="checkbox" class="form-check-input" id="chk22" checked="checked"><label class="form-check-label" for="chk22"><!--[-->Always collapse boards<!--]--></label></div></div><div class="form-check"><input type="checkbox" class="form-check-input" id="chk23"><label class="form-check-label" for="chk23"><!--[-->Show coordinate labels<!--]--></label></div><div class="form-check"><input type="checkbox" class="form-check-input" id="chk24"><label class="form-check-label" for="chk24"><!--[-->Show full FEN<!--]--></label></div></div></div></section><section><div class="mb-2 btn-gap"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy base64 link<!--]--></button><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy base64 &lt;img&gt; code<!--]--></button></div><h6>Embed mode</h6><div class="mb-2 btn-gap"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy embed HTML code<!--]--></button><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy just the URL<!--]--></button></div><h6>SDK mode</h6><div class="btn-gap"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy SDK script tag<!--]--></button><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy SDK &lt;img&gt; code<!--]--></button></div></section><section><div class="row gx-3 mb-2 align-items-center"><label class="col-auto col-form-label">Use database:</label><div class="col"><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" checked="checked" name="DB" id="rPDB"><label class="form-check-label" for="rPDB">PDB</label></div><div class="form-check d-inline-block"><input class="form-check-input" type="radio" name="DB" id="rYACPDB"><label class="form-check-label" for="rYACPDB">YACPDB</label></div></div></div><div class="mb-3 btn-gap"><button type="button" class="btn nowrap btn-primary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy board edit syntax<!--]--></button><!--v-if--></div><div class="row gx-3 mb-3"><label class="col-auto col-form-label">Problem Id:</label><div class="col"><input class="form-control"></div><div class="col-auto"><input type="button" class="btn btn-primary" value="Get FEN"></div></div><div class="row align-items-center flex-wrap"><div class="col-auto mb-2"><div class="form-check"><input type="checkbox" class="form-check-input" id="chk34"><label class="form-check-label" for="chk34"><!--[-->Search exactly these pieces<!--]--></label></div></div><div class="col text-end btn-gap" style="flex-basis:24rem"><button type="button" class="btn nowrap btn-secondary"><i class="fa-solid fa-clipboard"></i> <!--[--> Copy search query<!--]--></button><button class="btn btn-primary nowrap"><i class="fa-solid fa-magnifying-glass"></i> Search position</button></div></div></section><section><!--[--><div class="btn-gap"><button class="btn btn-primary">Start playing</button><button type="button" class="btn btn-secondary"><i class="fa-solid fa-flag-checkered"></i>  Starting position</button><button class="btn btn-secondary"><i class="fa-solid fa-paste"></i> Paste PGN</button></div><div class="mt-2 gx-3 row"><div class="col flex-grow-1" style="flex-basis:22rem"><div class="d-flex align-items-center flex-wrap-reverse mb-2"><div class="flex-grow-1 col-form-label" style="flex-basis:max-content"><!--[--><span class="me-3">Turn:</span><!--[--><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" checked="checked" name="rdo37" id="rdo37_0"><label class="form-check-label" for="rdo37_0">White</label></div><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" name="rdo37" id="rdo37_1"><label class="form-check-label" for="rdo37_1">Black</label></div><!--]--><!--]--></div><div class="flex-grow-1" style="flex-basis:max-content"><div class="row gx-3"><label class="col-auto col-form-label">Mode:</label><div class="col"><select class="form-select"><option value="normal">Normal</option><option value="pass">Allow passing move</option><option value="retro">Retro</option></select></div></div></div></div><div class="mb-2">Castling: <span class="d-inline-block"><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk38" checked="checked"><label class="form-check-label" for="chk38"><!--[-->WK<!--]--></label></div><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk39" checked="checked"><label class="form-check-label" for="chk39"><!--[-->WQ<!--]--></label></div></span><span class="d-inline-block"><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk40" checked="checked"><label class="form-check-label" for="chk40"><!--[-->BK<!--]--></label></div><div class="form-check ms-2 d-inline-block"><input type="checkbox" class="form-check-input" id="chk41" checked="checked"><label class="form-check-label" for="chk41"><!--[-->BQ<!--]--></label></div></span></div></div><div class="col flex-grow-1" style="flex-basis:22rem"><div class="row gx-3 mb-2"><label class="col-auto col-form-label">En passant square:</label><div class="col"><input class="form-control" maxlength="2"></div></div><div class="row gx-3"><div class="col mb-2" style="flex-basis:10.5rem"><div class="row gx-3"><label class="col-auto col-form-label">Half moves:</label><div class="col"><input type="number" class="form-control" min="0" value="0"></div></div></div><div class="col mb-2" style="flex-basis:10.5rem"><div class="row gx-3"><label class="col-auto col-form-label">Full moves:</label><div class="col"><input type="number" class="form-control" min="1" value="1"></div></div></div></div><div class="text-end"><button class="btn btn-secondary">Reset settings</button></div></div></div><!--]--></section><section style="display:none"><div class="mb-3"><!--[--><span class="me-3">Tool:</span><!--[--><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" checked="checked" name="rdo43" id="rdo43_0"><label class="form-check-label" for="rdo43_0">Popeye</label></div><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" name="rdo43" id="rdo43_1"><label class="form-check-label" for="rdo43_1">Stockfish</label></div><div class="form-check d-inline-block me-3"><input class="form-check-input" type="radio" name="rdo43" id="rdo43_2"><label class="form-check-label" for="rdo43_2">Syzygy</label></div><!--]--><!--]--></div><div><div><textarea class="form-control mb-2" rows="5" placeholder="For example:
 =============
 Stipulation #2
 Option Variation"></textarea><div class="mb-3 row gx-2"><div class="col"><div class="w-passive-100"><button type="button" class="btn btn-secondary" style="overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%"><i class="fa-solid fa-pen-to-square"></i> Fairy piece mapping</button></div></div><div class="col-auto text-end"><div class="btn-gap"><!--v-if--><span><button type="button" class="btn btn-primary disabled" title="Input instructions first"><i class="fa-solid fa-play"></i> Run</button></span></div></div></div></div><!--v-if--><!--v-if--><div id="Output" class="form-control" style="display:none"></div><div class="mt-2"><a href="https://github.com/thomas-maeder/popeye/blob/master/py-engl.txt" target="_blank">Popeye documentation</a></div></div><div style="display:none"><div><div class="mb-3">To use this feature, we need to download Stockfish modules first.</div><button type="button" class="btn btn-primary"><i class="fa-solid fa-download"></i> Download now! (39.5MB)</button></div></div><div style="display:none"><div class="mb-3"><button type="button" class="btn btn-primary"><i class="fa-solid fa-play"></i> Analyze with Syzygy tablebase</button></div><!--v-if--><!--v-if--></div></section><!--v-if--></div></div><hr><footer class="mb-4 row small"><div class="col flex-grow-1" style="flex-basis:max-content">For more information and API, see <a href="https://github.com/MuTsunTsai/fen-tool" target="_blank">README</a>.</div><div class="col-auto text-end">Copyright © 2023-2024 Mu-Tsun Tsai</div></footer></div></main><div class="modal fade modal-second"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-body"></div><div class="modal-footer"><!--[--><button type="button" class="btn btn-primary" data-bs-dismiss="modal">OK</button><!--]--></div></div></div></div><div class="modal fade modal-second"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-body"></div><div class="modal-footer"><!--[--><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">No</button><button type="button" class="btn btn-primary">Yes</button><!--]--></div></div></div></div><!--v-if--></div></div><canvas id="CanvasGhost" class="ghost" width="210" height="210"></canvas><canvas id="TemplateGhost" class="ghost"></canvas></body></html>
\ No newline at end of file
diff --git a/docs/static/js/137.171cee8a.js b/docs/static/js/137.7b2f2d68.js
similarity index 99%
rename from docs/static/js/137.171cee8a.js
rename to docs/static/js/137.7b2f2d68.js
index a03bc9e..d2af133 100644
--- a/docs/static/js/137.171cee8a.js
+++ b/docs/static/js/137.7b2f2d68.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkfen_tool=self.webpackChunkfen_tool||[]).push([["137"],{3999:function(e,t,n){n.d(t,{i:()=>x,u:()=>b});var r,i=n("6919"),a=n("1019"),o=n("737"),l=n("2506");var c=((r={})[r.r90=1]="r90",r[r.r180=2]="r180",r[r.r270=3]="r270",r[r.full=4]="full",r);let s=["k","q","b","n","r","p","c","x","s","t","a","d"],f=document.createElement("canvas"),u=f.getContext("2d"),h=document.createElement("canvas"),d=h.getContext("2d"),g={26:"YdVh1QDVYdVh",32:"AAAKAAAAo/+jAAr/AP8KAKP/owAAAAoAAA==",38:"AAw+DAAM3P/cDD7/AP8+DNz/3AwADD4MAA==",44:"AC9yLwAv+f/5L3L/AP9yL/n/+S8AL3IvAA==",52:"A3i2eAN4////eLb/AP+2eP///3gDeLZ4Aw==",64:"AAAEHgQAAAA/5v/mPwAE5v///+YEHv//AP//HgTm////5gQAP+b/5j8AAAAEHgQAAA==",76:"AARZhFkEAAS7////uwRZ//////9ZhP//AP//hFn//////1kEu////7sEAARZhFkEAA==",88:"AEfE68RHAEf8/////EfE///////E6///AP//68T//////8RH/P////xHAEfE68RHAA=="},A={};function m(e,t,n,r){let i=function(e,t,n){if("mono"==e)return 1;let r=(t+n)%2;return"inverted"!=e&&(r=1-r),r}(r.pattern,t,n),a=r.size;e.save(),e.translate(n*a,t*a),"classic"==r.bg?(e.strokeStyle="black",e.lineWidth=a/60,e.fillStyle="#fff",e.fillRect(0,0,a,a),!i&&function(e,t){e.beginPath();let n=t/7.5;for(let r=0;r<t;r+=n)e.moveTo(t-r,0),e.lineTo(0,t-r),r>0&&(e.moveTo(r,t),e.lineTo(t,r));e.stroke()}(e,a)):(e.fillStyle=function(e,t){if("classic"==t)return"none";if("gray"==t)return e?"#fff":"#bbb";if("green"==t)return e?"#EEEED2":"#769656";else return e?"#FFCE9E":"#D18B47"}(i,r.bg),e.fillRect(0,0,a,a)),e.restore()}let p=document.getElementById("CN"),w=p.getContext("2d"),b=Math.min(2,Math.floor(devicePixelRatio));function x(e,t){let{w:n,h:r}=(0,o.t_)(t);return p.width=n*b,p.height=r*b,p.style.width=n+"px",p.style.height=r+"px",!function(e,t,n,r,p,w){let{w:b,h:x,border:v,offset:k,margin:E}=(0,o.t_)(n,void 0),y=(0,a.N)(n,r);e.canvas.width=b*r,e.canvas.height=x*r,e.save(),e.scale(r,r);let N="classic"==n.bg,S=N;e.translate(k.x,k.y);for(let a=0;a<n.h;a++)for(let o=0;o<n.w;o++)!S&&m(e,a,o,n),function(e,t,n,r,a){let{assets:o,options:l,dpr:f}=a,u=function(e,t){void 0===e&&(e="");let n=!!e&&e.startsWith("-");n&&(e=e.substring(1));let r=e.match(/^\*(\d)/),a=r&&r[1]?Number(r[1]):void 0;void 0!==a&&(e=e.substring(2)),a=Number(a)%c.full,t.SN&&(e=(0,i.hv)(e,!1,!0));let o=e.toLowerCase(),l=s.indexOf(o),f=e.startsWith("'");return l<0&&!f?null:{neutral:n,rotate:a,isText:f,value:e,lower:o,typeIndex:l}}(r,l);if(!u)return;let{neutral:h,rotate:d,isText:g,value:A,lower:m,typeIndex:p}=u;e.save();let w=l.blackWhite,b=function(e,t){let{neutral:n,value:r,lower:i}=e;return n?t?0:2:r==i?0:1}(u,w),x=function(e,t,n,r){return e&&n?"n"==t?r.knightOffset:.5:1}(h,m,w,l),[v,k]=[d+1&2?1:0,2&d?1:0],{size:E}=l;e.translate((n+v)*E,(t+k)*E),0!==d&&e.rotate(Math.PI/2*d),g?function(e,t,n){var r;e.save();let a=i.Nv.test(t),o=n-4;e.font="".concat(o,"px sans-serif");let l=n-2,c=e.measureText(t);if(a&&c.width>l){let n=l/c.width;e.font="".concat(o*n,"px sans-serif"),c=e.measureText(t)}let s=(r=a?e.measureText("M"):c).actualBoundingBoxAscent-r.actualBoundingBoxDescent,f=(n-Math.min(c.width,l))/2,u=Math.max((n-s)/2,0);e.fillStyle="black",e.fillText(t,f,n-u,l),e.restore()}(e,A.substring(A.startsWith("''")?2:1),E):(e.drawImage(o,b*E*f,p*E*f,E*x*f,E*f,0,0,E*x,E),h&&w&&e.drawImage(o,(1+x)*E*f,p*E*f,E*(1-x)*f,E*f,E*x,0,E*(1-x),E)),e.restore()}(e,a,o,t[a*n.w+o],{assets:y,options:n,dpr:r});if(e.restore(),N&&!p){(function(e,t,n){let r=e.canvas;h.width=f.width=r.width,h.height=f.height=r.height,u.drawImage(r,0,0),e.save(),e.fillStyle="white",e.fillRect(0,0,r.width,r.height),e.globalCompositeOperation="destination-in",e.drawImage(f,0,0),e.restore(),e.save();let i=function(e){if(!(e in A)){let t=atob(g[e]),n=[];for(let e=0;e<t.length;e++)n.push(t.charCodeAt(e));A[e]=n}return A[e]}(t*n),a=Math.sqrt(i.length),o=(a-1)/2;for(let t=0;t<a;t++)for(let n=0;n<a;n++){let l=i[n*a+t];0!=l&&(e.globalAlpha=l/255,d.drawImage(r,t-o,n-o))}e.restore()})(e,n.size,r),e.save(),e.scale(r,r),e.translate(k.x,k.y);for(let t=0;t<n.h;t++)for(let r=0;r<n.w;r++)m(e,t,r,n);e.restore(),e.drawImage(h,0,0),e.drawImage(h,0,0),e.drawImage(h,0,0),e.drawImage(f,0,0)}e.scale(r,r),void 0===w&&n.coordinates&&(e.save(),e.translate(k.x,k.y),function(e,t,n){let{size:r,w:i,h:a}=t;e.font="15px sans-serif",e.strokeStyle="black",e.lineWidth=2,e.fillStyle="white",e.lineJoin="round";for(let t=0;t<a;t++){let i=(t+1).toString(),l=e.measureText(i),c=r*(a-t)-r/2+5,s=(o.Cd-l.width)/2-o.Cd-n;e.strokeText(i,s,c),e.fillText(i,s,c)}for(let t=0;t<i&&t<26;t++){let i=String.fromCharCode(l.oh+t),c=e.measureText(i),s=r*a+o.Cd+n-5,f=r*t+(r-c.width)/2;e.strokeText(i,f,s),e.fillText(i,f,s)}}(e,n,v.size),e.restore()),!p&&function(e,t,n,r,i){e.save(),e.translate(i.x,0),n-=i.x,r-=i.y;let a=0;for(let i=0;i<t.array.length;i++){let o=t.array[i];if(e.strokeStyle=i%2?"white":"black",0==o)continue;e.lineWidth=o;let l=t.size-a-o/2;e.strokeRect(l,l,n-2*l,r-2*l),a+=o}e.restore()}(e,v,b,x,E)}(w,e,t,b),p}},2506:function(e,t,n){n.d(t,{Dm:function(){return r},_N:function(){return i},oh:function(){return a}});let r=8,i=3,a=97},6919:function(e,t,n){n.d(t,{A1:function(){return u},Nv:function(){return s},S3:function(){return h},hv:function(){return d}});var r=n(2506);let i="\\p{Extended_Pictographic}",a="\\p{Emoji_Modifier}",o="".concat("\\p{Regional_Indicator}","{2}|").concat(i,"\\uFE0F?").concat(a,"?(\\u200D").concat(i,"\\uFE0F?").concat(a,"?)*"),l="\\((!?)([kqbnrp])(\\d?)\\)",c="[-~]?(\\*\\d)?(".concat("[kqbnrpcxstadg]","|").concat("'(".concat(o,"|[^'])|''.."),")"),s=RegExp("^(?:".concat(o,")$"),"u");RegExp("^(?:".concat(l,"|").concat(c,")$"),"iu");let f=RegExp("\\/|\\d+|".concat(l,"|").concat(c,"|."),"iug");function u(e){let t=e.match(f)||[],n=[0],r=0;for(let e of t)"/"==e?n[++r]=0:e.match(/^\d+$/)?n[r]+=Number(e):n[r]++;let i=n.length;if(1!=i){if(function(e){let t=e[0];for(let n=1;n<e.length;n++)if(e[n]!=t)return!1;return!0}(n))return{w:n[0],h:i}}}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.Dm,i=e.match(f)||[],a=[],o=!1;for(let e of i){if("/"==e){if(!o){let e=a.length+t-a.length%t;for(;a.length<e;)a.push("")}}else if(e.match(/^\d+$/)){let t=Number(e);for(let e=0;e<t;e++)a.push("")}else a.push(e);if(o="/"!=e&&a.length%t==0,a.length==t*n)break}for(;a.length<t*n;)a.push("");return a}function d(e,t,n){return e.match(/^-?(\*\d)?[sng]$/i)?(t?(n&&(e=e.replace("s","g").replace("S","G")),e=e.replace("n","s").replace("N","S")):(n&&(e=e.replace("s","n").replace("S","N")),e=e.replace("g","s").replace("G","S")),e):e}},737:function(e,t,n){n.d(t,{Cd:function(){return s},D_:function(){return c},t_:function(){return f}});var r=n(2506);let i={pattern:void 0,bg:void 0,exHigh:!0,border:"1",blackWhite:!1,knightOffset:.6,SN:!1,size:44,w:r.Dm,h:r.Dm,fullFEN:!1,coordinates:!1,set:"1echecs",collapse:!0},a=/^\d+(,\d+)*$/,o=[26,32,38,44],l=["1echecs","alpha","goodCompanion","kilfiger","merida","mpchess","skak"];function c(e){let t=Object.assign({},i);if(e){let n=Number(e.size);o.includes(n)&&(t.size=n),e.set&&l.includes(e.set)&&(t.set=e.set),e.border=function(e){if("string"==typeof e){if((e=e.replace(/\D/g,",").replace(/,+/g,",").replace(/^,/,"").replace(/,$/,"")).match(a))return e}}(e.border),e.border&&(t.border=e.border),e.knightOffset&&0<e.knightOffset&&e.knightOffset<1&&(t.knightOffset=e.knightOffset),t.blackWhite=!!e.blackWhite,t.pattern=e.pattern,t.bg=e.bg,t.SN=e.SN||!1;let r=Math.floor(Number(e.w)),i=Math.floor(Number(e.h));r>0&&(t.w=r),i>0&&(t.h=i)}return t}let s=20;function f(e,t){let n=function(e){let t=e.split(",").map(e=>{let t=Number(e);return isNaN(t)?0:Math.abs(Math.floor(t))}),n=t.reduce((e,t)=>e+t,0);return{array:t,size:n}}(e.border),r=e.coordinates?{x:s,y:s}:{x:0,y:0};!0===t&&(r.y=0),!1===t&&(r.x=0);let i=e.w*e.size+2*n.size+r.x,a=e.h*e.size+2*n.size+r.y,o={x:n.size+r.x,y:n.size};return{w:i,h:a,border:n,offset:o,margin:r}}},1019:function(e,t,n){n.d(t,{$:function(){return c},N:function(){return l}});var r=n(2506);let i=document.createElement("canvas"),a=i.getContext("2d"),o=new Map;function l(e,t){let n=e.set+e.size*t;return o.get(n)}async function c(e,t,n){let r=t.set+t.size*n;if(o.has(r))return o.get(r);let i=await s(e,t,n),a=await f(i);return o.set(r,a),a}async function s(e,t,n){let{set:o,size:l}=t;e+="/x"+n;let[c,s]=await Promise.all([f("".concat(e,"/").concat(o).concat(l,".png")),f("".concat(e,"/symbol").concat(l,".png"))]);return i.width=l*n*r._N,i.height=l*n*12,a.drawImage(c,0,0),a.drawImage(s,0,l*n*6),i.toDataURL()}function f(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>t(r),r.onerror=()=>n(),r.src=e})}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkfen_tool=self.webpackChunkfen_tool||[]).push([["137"],{3999:function(e,t,n){n.d(t,{i:()=>x,u:()=>b});var r,i=n("6919"),a=n("1019"),o=n("737"),l=n("2506");var c=((r={})[r.r90=1]="r90",r[r.r180=2]="r180",r[r.r270=3]="r270",r[r.full=4]="full",r);let s=["k","q","b","n","r","p","c","x","s","t","a","d"],f=document.createElement("canvas"),u=f.getContext("2d"),h=document.createElement("canvas"),d=h.getContext("2d"),g={26:"YdVh1QDVYdVh",32:"AAAKAAAAo/+jAAr/AP8KAKP/owAAAAoAAA==",38:"AAw+DAAM3P/cDD7/AP8+DNz/3AwADD4MAA==",44:"AC9yLwAv+f/5L3L/AP9yL/n/+S8AL3IvAA==",52:"A3i2eAN4////eLb/AP+2eP///3gDeLZ4Aw==",64:"AAAEHgQAAAA/5v/mPwAE5v///+YEHv//AP//HgTm////5gQAP+b/5j8AAAAEHgQAAA==",76:"AARZhFkEAAS7////uwRZ//////9ZhP//AP//hFn//////1kEu////7sEAARZhFkEAA==",88:"AEfE68RHAEf8/////EfE///////E6///AP//68T//////8RH/P////xHAEfE68RHAA=="},A={};function m(e,t,n,r){let i=function(e,t,n){if("mono"==e)return 1;let r=(t+n)%2;return"inverted"!=e&&(r=1-r),r}(r.pattern,t,n),a=r.size;e.save(),e.translate(n*a,t*a),"classic"==r.bg?(e.strokeStyle="black",e.lineWidth=a/60,e.fillStyle="#fff",e.fillRect(0,0,a,a),!i&&function(e,t){e.beginPath();let n=t/7.5;for(let r=0;r<t;r+=n)e.moveTo(t-r,0),e.lineTo(0,t-r),r>0&&(e.moveTo(r,t),e.lineTo(t,r));e.stroke()}(e,a)):(e.fillStyle=function(e,t){if("classic"==t)return"none";if("gray"==t)return e?"#fff":"#bbb";if("green"==t)return e?"#EEEED2":"#769656";else return e?"#FFCE9E":"#D18B47"}(i,r.bg),e.fillRect(0,0,a,a)),e.restore()}let p=document.getElementById("CN"),w=p.getContext("2d"),b=Math.min(2,Math.floor(devicePixelRatio));function x(e,t){let{w:n,h:r}=(0,o.t_)(t);return p.width=n*b,p.height=r*b,p.style.width=n+"px",p.style.height=r+"px",!function(e,t,n,r,p,w){let{w:b,h:x,border:v,offset:k,margin:E}=(0,o.t_)(n,void 0),y=(0,a.N)(n,r);e.canvas.width=b*r,e.canvas.height=x*r,e.save(),e.scale(r,r);let N="classic"==n.bg,S=N;e.translate(k.x,k.y);for(let a=0;a<n.h;a++)for(let o=0;o<n.w;o++)!S&&m(e,a,o,n),function(e,t,n,r,a){let{assets:o,options:l,dpr:f}=a,u=function(e,t){void 0===e&&(e="");let n=!!e&&e.startsWith("-");n&&(e=e.substring(1));let r=e.match(/^\*(\d)/),a=r&&r[1]?Number(r[1]):void 0;void 0!==a&&(e=e.substring(2)),a=Number(a)%c.full,t.SN&&(e=(0,i.hv)(e,!1,!0));let o=e.toLowerCase(),l=s.indexOf(o),f=e.startsWith("'");return l<0&&!f?null:{neutral:n,rotate:a,isText:f,value:e,lower:o,typeIndex:l}}(r,l);if(!u)return;let{neutral:h,rotate:d,isText:g,value:A,lower:m,typeIndex:p}=u;e.save();let w=l.blackWhite,b=function(e,t){let{neutral:n,value:r,lower:i}=e;return n?t?0:2:r==i?0:1}(u,w),x=function(e,t,n,r){return e&&n?"n"==t?r.knightOffset:.5:1}(h,m,w,l),[v,k]=[d+1&2?1:0,2&d?1:0],{size:E}=l;e.translate((n+v)*E,(t+k)*E),0!==d&&e.rotate(Math.PI/2*d),g?function(e,t,n){var r;e.save();let a=i.Nv.test(t),o=n-4;e.font="".concat(o,"px sans-serif");let l=n-2,c=e.measureText(t);if(a&&c.width>l){let n=l/c.width;e.font="".concat(o*n,"px sans-serif"),c=e.measureText(t)}let s=(r=a?e.measureText("M"):c).actualBoundingBoxAscent-r.actualBoundingBoxDescent,f=(n-Math.min(c.width,l))/2,u=Math.max((n-s)/2,0);e.fillStyle="black",e.fillText(t,f,n-u,l),e.restore()}(e,A.substring(A.startsWith("''")?2:1),E):(e.drawImage(o,b*E*f,p*E*f,E*x*f,E*f,0,0,E*x,E),h&&w&&e.drawImage(o,(1+x)*E*f,p*E*f,E*(1-x)*f,E*f,E*x,0,E*(1-x),E)),e.restore()}(e,a,o,t[a*n.w+o],{assets:y,options:n,dpr:r});if(e.restore(),N&&!p){(function(e,t,n){let r=e.canvas;h.width=f.width=r.width,h.height=f.height=r.height,u.drawImage(r,0,0),e.save(),e.fillStyle="white",e.fillRect(0,0,r.width,r.height),e.globalCompositeOperation="destination-in",e.drawImage(f,0,0),e.restore(),e.save();let i=function(e){if(!(e in A)){let t=atob(g[e]),n=[];for(let e=0;e<t.length;e++)n.push(t.charCodeAt(e));A[e]=n}return A[e]}(t*n),a=Math.sqrt(i.length),o=(a-1)/2;for(let t=0;t<a;t++)for(let n=0;n<a;n++){let l=i[n*a+t];0!=l&&(e.globalAlpha=l/255,d.drawImage(r,t-o,n-o))}e.restore()})(e,n.size,r),e.save(),e.scale(r,r),e.translate(k.x,k.y);for(let t=0;t<n.h;t++)for(let r=0;r<n.w;r++)m(e,t,r,n);e.restore(),e.drawImage(h,0,0),e.drawImage(h,0,0),e.drawImage(h,0,0),e.drawImage(f,0,0)}e.scale(r,r),void 0===w&&n.coordinates&&(e.save(),e.translate(k.x,k.y),function(e,t,n){let{size:r,w:i,h:a}=t;e.font="15px sans-serif",e.strokeStyle="black",e.lineWidth=2,e.fillStyle="white",e.lineJoin="round";for(let t=0;t<a;t++){let i=(t+1).toString(),l=e.measureText(i),c=r*(a-t)-r/2+5,s=(o.Cd-l.width)/2-o.Cd-n;e.strokeText(i,s,c),e.fillText(i,s,c)}for(let t=0;t<i&&t<26;t++){let i=String.fromCharCode(l.oh+t),c=e.measureText(i),s=r*a+o.Cd+n-5,f=r*t+(r-c.width)/2;e.strokeText(i,f,s),e.fillText(i,f,s)}}(e,n,v.size),e.restore()),!p&&function(e,t,n,r,i){e.save(),e.translate(i.x,0),n-=i.x,r-=i.y;let a=0;for(let i=0;i<t.array.length;i++){let o=t.array[i];if(e.strokeStyle=i%2?"white":"black",0==o)continue;e.lineWidth=o;let l=t.size-a-o/2;e.strokeRect(l,l,n-2*l,r-2*l),a+=o}e.restore()}(e,v,b,x,E)}(w,e,t,b),p}},2506:function(e,t,n){n.d(t,{Dm:function(){return r},_N:function(){return i},oh:function(){return a}});let r=8,i=3,a=97},6919:function(e,t,n){n.d(t,{A1:function(){return u},Nv:function(){return s},S3:function(){return h},hv:function(){return d}});var r=n(2506);let i="\\p{Extended_Pictographic}",a="\\p{Emoji_Modifier}",o="".concat("\\p{Regional_Indicator}","{2}|").concat(i,"\\uFE0F?").concat(a,"?(\\u200D").concat(i,"\\uFE0F?").concat(a,"?)*"),l="\\((!?)([kqbnrp])(\\d?)\\)",c="[-~]?(\\*\\d)?(".concat("[kqbnrpcxstadg]","|").concat("'(".concat(o,"|[^'])|''.."),")"),s=RegExp("^(?:".concat(o,")$"),"u");RegExp("^(?:".concat(l,"|").concat(c,")$"),"iu");let f=RegExp("\\/|\\d+|".concat(l,"|").concat(c,"|."),"iug");function u(e){let t=e.match(f)||[],n=[0],r=0;for(let e of t)"/"==e?n[++r]=0:e.match(/^\d+$/)?n[r]+=Number(e):n[r]++;let i=n.length;if(1!=i){if(function(e){let t=e[0];for(let n=1;n<e.length;n++)if(e[n]!=t)return!1;return!0}(n))return{w:n[0],h:i}}}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r.Dm,i=e.match(f)||[],a=[],o=!1;for(let e of i){if("/"==e){if(!o){let e=a.length+t-a.length%t;for(;a.length<e;)a.push("")}}else if(e.match(/^\d+$/)){let t=Number(e);for(let e=0;e<t;e++)a.push("")}else a.push(e);if(o="/"!=e&&a.length%t==0,a.length==t*n)break}for(;a.length<t*n;)a.push("");return a}function d(e,t,n){return e.match(/^-?(\*\d)?[sng]$/i)?(t?(n&&(e=e.replace("s","g").replace("S","G")),e=e.replace("n","s").replace("N","S")):(n&&(e=e.replace("s","n").replace("S","N")),e=e.replace("g","s").replace("G","S")),e):e}},737:function(e,t,n){n.d(t,{Cd:function(){return s},D_:function(){return c},t_:function(){return f}});var r=n(2506);let i={pattern:void 0,bg:void 0,exHigh:!0,border:"1",blackWhite:!1,knightOffset:.6,SN:!1,size:44,w:r.Dm,h:r.Dm,fullFEN:!1,coordinates:!1,set:"1echecs",collapse:!0},a=/^\d+(,\d+)*$/,o=[26,32,38,44],l=["1echecs","alpha","goodCompanion","kilfiger","merida","mpchess","skak"];function c(e){let t=Object.assign({},i);if(e){let n=Number(e.size);o.includes(n)&&(t.size=n),e.set&&l.includes(e.set)&&(t.set=e.set),e.border=function(e){if("string"==typeof e){if((e=e.replace(/\D/g,",").replace(/,+/g,",").replace(/^,/,"").replace(/,$/,"")).match(a))return e}}(e.border),e.border&&(t.border=e.border),e.knightOffset&&0<e.knightOffset&&e.knightOffset<1&&(t.knightOffset=e.knightOffset),t.blackWhite=!!e.blackWhite,t.pattern=e.pattern,t.bg=e.bg,t.SN=e.SN||!1;let r=Math.floor(Number(e.w)),i=Math.floor(Number(e.h));r>0&&(t.w=r),i>0&&(t.h=i)}return t}let s=20;function f(e,t){let n=function(e){let t=e.split(",").map(e=>{let t=Number(e);return isNaN(t)?0:Math.abs(Math.floor(t))}),n=t.reduce((e,t)=>e+t,0);return{array:t,size:n}}(e.border),r=e.coordinates?{x:s,y:s}:{x:0,y:0};!0===t&&(r.y=0),!1===t&&(r.x=0);let i=e.w*e.size+2*n.size+r.x,a=e.h*e.size+2*n.size+r.y,o={x:n.size+r.x,y:n.size};return{w:i,h:a,border:n,offset:o,margin:r}}},1019:function(e,t,n){n.d(t,{$:function(){return c},N:function(){return l}});var r=n(2506);let i=document.createElement("canvas"),a=i.getContext("2d"),o=new Map;function l(e,t){let n=e.set+e.size*t;return o.get(n)}async function c(e,t,n){let r=t.set+t.size*n;if(o.has(r))return o.get(r);let i=await s(e,t,n),a=await f(i);return o.set(r,a),a}async function s(e,t,n){let{set:o,size:l}=t;e+="/x"+n;let[c,s]=await Promise.all([f("".concat(e,"/").concat(o).concat(l,".png")),f("".concat(e,"/symbol").concat(l,".png"))]);return i.width=l*n*r._N,i.height=l*n*12,a.drawImage(c,0,0),a.drawImage(s,0,l*n*6),i.toDataURL()}function f(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>t(r),r.onerror=e=>n(e),r.src=e})}}}]);
\ No newline at end of file
diff --git a/docs/static/js/index.57e688a6.js b/docs/static/js/index.702b8160.js
similarity index 99%
rename from docs/static/js/index.57e688a6.js
rename to docs/static/js/index.702b8160.js
index e65eb03..9c4926c 100644
--- a/docs/static/js/index.57e688a6.js
+++ b/docs/static/js/index.702b8160.js
@@ -1 +1 @@
-(()=>{"use strict";var e={9843:function(e,t,n){let o;n.d(t,{O:function(){return f},S:function(){return d}});var a=n(6919),l=n(737);let i=document.currentScript,r="img[fen]",s=document.createElement("iframe");function c(e){let t=new MessageChannel;t.port1.onmessage=t=>{e.src=t.data,e.title=o.getTitle(n,e.dataset)};let n=e.getAttribute("fen"),i=(0,l.D_)(Object.assign({},o.getDefault(),e.dataset)),r=(0,a.A1)(n);r&&Object.assign(i,r);let{w:c,h:u}=(0,l.t_)(i);e.width=c,e.height=u,s.contentWindow.postMessage({fen:n,options:i},"*",[t.port2])}function u(e){e instanceof Element&&(e.matches(r)?c(e):e.querySelectorAll(r).forEach(e=>c(e)))}async function d(e){let t=new URL(i.src).origin,n=new URL(t+"/fen-tool/api/");o=e,document.head.appendChild(s),await new Promise(e=>{let t=n=>{n.source==s.contentWindow&&(removeEventListener("message",t),e())};addEventListener("message",t),s.src=n.toString()});let a=document.documentElement;new MutationObserver(e=>{for(let t of e)if("attributes"==t.type){let e=t.attributeName.toLowerCase(),n=e.startsWith("data");t.target==i&&n&&u(document.body),"IMG"==t.target.nodeName&&("fen"==e||n)&&c(t.target)}else for(let e of t.addedNodes)u(e)}).observe(a,{childList:!0,attributes:!0,subtree:!0}),u(a)}function f(){u(document.body)}s.style.display="none"},4109:function(e,t,n){n.d(t,{Ar:function(){return U},SI:function(){return S},l:function(){return y},q_:function(){return _}});var o=n(4881),a=n(4097),l=n(899),i=n(9391),r=n(5547),s=n(3369),c=n(737),u=n(9683),d=n(9843),f=n(2506);let p=document.getElementById("Zone"),m=document.getElementById("DragZone"),h=document.getElementById("EditZone");function g(){return document.body.clientWidth/(i.SB.split?2:1)}async function y(e,t){let n=i.h.board,a={};for(let t in e)a[t]=e[t]!==n[t];Object.assign(n,e);let{border:p,margin:m,w:h,h:y}=(0,c.t_)(n),b=function(e,t,n){let o=w();return g()<(e.w+f._N)*e.size+t.x+4*n.size+4.2*o}(n,m,p);a.mode=b!==i.i7.hor,i.i7.hor=b;let _=a.w||a.h;(_||t)&&(0,s.co)();let k=t||a.set||a.size,U=k||a.border,x=U||_,B=U||a.mode;B&&function(e,t,n){let o=(f._N*e+2*t)*u.u,a=(f.Dm*e+2*t)*u.u;i.i7.hor?[o,a]=[a+n.x*u.u,o]:a+=n.y*u.u,(l.in.width!==o||l.in.height!==a)&&(l.Ab.width=l.in.width=o,l.Ab.height=l.in.height=a)}(n.size,p.size,m),x&&function(e,t){let n=e*u.u,o=t*u.u;(l.m8.width!==n||l.m8.height!==o)&&(l.ut.width=l.S8.width=l.m8.width=n,l.ut.height=l.S8.height=l.m8.height=o),(0,r.Sk)(l.ut.getContext("2d"))}(h,y),S(),k&&(await (0,r.zD)(),i.h.project.length&&(0,d.O)()),x&&(0,r.ii)(),B&&(0,r.t1)(),(0,o.Y3)(S)}document.addEventListener("visibilitychange",()=>{"visible"==document.visibilityState&&((0,r.ii)(),(0,r.t1)())});function b(e){let{w:t,h:n}=i.h.board,o=(0,s.Ox)();y(e),(0,s.v)(o,t,n)}function S(){p.style.maxWidth="calc(".concat(g(),"px + 1rem)"),l.m8.style.width=l.m8.width/u.u+"px",l.in.style.width=l.in.width/u.u+"px";let{w:e}=i.h.board,t=(0,i.nj)(void 0,void 0,f.Dm);if(i.i7.hor){if(e>f.Dm)l.in.style.width=t.width+"px";else if(e<f.Dm){let{width:t}=(0,i.nj)(l.in,!0,e);l.m8.style.width=t+"px"}}s.nC.style.borderWidth="".concat(t.offset.y,"px ").concat(t.offset.r,"px ").concat(t.offset.b,"px ").concat(t.offset.x,"px");let n=w();i.h.board.collapse?(p.style.width="120%",p.style.width=m.clientWidth+4*n+"px"):p.style.width="unset",l.S8.style.width=l.m8.clientWidth+"px",l.S8.style.height=l.m8.clientHeight+"px",l.Ab.style.width=l.in.clientWidth+"px",l.Ab.style.height=l.in.clientHeight+"px",(0,s.gg)(t.s);p.clientWidth<m.clientWidth+l.m8.clientWidth+6*n?(h.style.marginTop=-m.clientHeight+"px",h.style.width=m.clientWidth+"px",i.i7.collapse=!0):(h.style.marginTop="0",h.style.width="unset",i.i7.collapse=!1)}function w(){return parseFloat(getComputedStyle(document.documentElement).fontSize)}async function _(){window.addEventListener("resize",()=>y({}));let e=i.yC.get("fen");await y({},!0),s.uz.draw=r.ii,s.uz.setOption=y,e?((0,s.dd)(e,!0),(0,s.qA)()):(0,s.uu)(),setTimeout(S,f.WT)}if(u.O.isTop)window.resizeIframe=function(){let e=document.getElementsByTagName("iframe")[0];e&&(e.style.minHeight=e.contentDocument.body.scrollHeight+"px")};else{function k(){try{parent.resizeIframe()}catch{}}"undefined"!=typeof ResizeObserver?new ResizeObserver(k).observe(document.body):new MutationObserver(k).observe(document.body,{childList:!0}),k()}let U={setDimension:b,setBorder(e){let t=(0,c.By)(e.value);t?(e.value=t,y({border:t})):e.value=i.h.board.border},get set(){return i.h.board.set},set set(v){y({set:v})},get size(){return i.h.board.size},set size(v){y({size:v})},get height(){return i.h.board.h},set height(v){b({h:v})},get width(){return i.h.board.w},set width(v){b({w:v})}};addEventListener("storage",e=>{if(e.storageArea==localStorage&&"settings"==e.key){let e=localStorage.getItem("settings"),t=e?JSON.parse(e):null;(0,a.n)(i.h,t,!0),y({},!0)}})},3369:function(e,t,n){n.d(t,{Ox:function(){return D},Qt:function(){return j},RI:function(){return m},Wc:function(){return T},X4:function(){return L},ZD:function(){return W},co:function(){return y},dd:function(){return x},gg:function(){return g},gx:function(){return V},mj:function(){return I},nC:function(){return f},oO:function(){return M},qA:function(){return C},tZ:function(){return E},uu:function(){return N},uz:function(){return p},v:function(){return P},xG:function(){return d},xL:function(){return A},zF:function(){return U}});var o=n(4881),a=n(899),l=n(6919),i=n(9391),r=n(6384),s=n(2506),c=n(3276);let u=["K","Q","k","q"],d=Array(s.cb),f=document.getElementById("Squares"),p={},m=(0,o.XI)("");function h(e){var t;null===(t=p.draw)||void 0===t||t.call(p,e)}function g(e){for(let t of(f.style.width=a.m8.clientWidth+"px",f.style.height=a.m8.clientHeight+"px",d))t.style.fontSize=e-10+"px",t.style.lineHeight=e-10+"px"}function y(){let{w:e,h:t}=i.h.board,n=e*t;f.style.gridTemplateColumns="repeat(".concat(e,", 1fr)"),f.style.gridTemplateRows="repeat(".concat(t,", 1fr)");for(let e=0;e<n||e<d.length;e++){if(!d[e]){let t=document.createElement("input");d[e]=t,t.type="text",t.addEventListener("input",_),t.addEventListener("change",w),t.addEventListener("focus",b),t.addEventListener("blur",S),t.classList.add("square"),f.appendChild(t)}d[e].style.display=e<n?"block":"none"}}function b(){if(this.style.zIndex="10",i.i7.collapse){let e=D();e[d.indexOf(this)]="",h(e)}this.select()}function S(){this.style.zIndex="unset",k(this)?N():i.i7.collapse&&h(D())}function w(){k(this),i.i7.collapse&&this.blur(),N()}function _(){if(!i.i7.collapse){let e=D();e[d.indexOf(this)]=(0,l.Fv)(this.value,i.h.board.SN),h(e)}}function k(e,t){let n=(0,l.Fv)(e.value,i.h.board.SN,t),o=n!==e.value;return e.value=n,o}function U(e,t){let n=e.value!==t;e.value=t,k(e),n&&N()}function x(e,t){let n=B(e);m.value=n[0]+(i.h.board.fullFEN?R():""),O(t)}function B(e){let t=e.split(" ");if(t[1]&&t[1].match(/^[wb]$/)&&(i.SB.play.turn=t[1]),t[2]&&t[2].match(/^(-|[kq]+)$/i))for(let e in i.SB.play.castle)i.SB.play.castle[e]=t[2].includes(e);return t[3]&&t[3].match(/^[a-h][36]$/)&&(i.SB.play.enPassant=t[3]),t[4]&&t[4].match(/^\d+$/)&&(i.SB.play.halfMove=Number(t[4])),t[5]&&t[5].match(/^\d+$/)&&(i.SB.play.fullMove=Number(t[5])),t}r.n4.options=i.h.board,r.n4.callback=x;function C(){let e=new URL(location.href).searchParams.get("fen")||l.TP,t=m.value.split(" ")[0],n=t==l.TP?"":"?fen="+encodeURIComponent(t);t!==e&&history.pushState(null,"",n||".")}function D(){let{w:e,h:t}=i.h.board;return d.slice(0,e*t).map(e=>e.value)}function A(){return D().map(e=>(0,l.hv)(e,!1,!0))}function P(e,t,n){let{w:o,h:a}=i.h.board;for(let l=0;l<a;l++)for(let a=0;a<o;a++){let i=d[l*o+a];l<n&&a<t?i.value=e[l*t+a]:i.value=""}N()}function N(){h(E())}function E(){let{w:e,h:t,fullFEN:n}=i.h.board,o=D();return m.value=(0,l.N0)(o,e,t)+(n?R():""),o}addEventListener("popstate",function(){if(i.SB.play.playing)return;let e=new URL(location.href).searchParams.get("fen");e&&x(e,!0)});function I(){let e=function(){let{w:e,h:t}=i.h.board;if(e!=s.Dm||t!=s.Dm)return null;let n=A();for(let e of n)if(""!=e&&!e.match(/^[kqbsnrp]$/i))return null;return(0,l.N0)(n)}();return e?e+R(!0):null}function R(e){let t=i.SB.play;!t.enPassant.match(/^[a-h][36]$/)&&(t.enPassant=""),e&&"pass"==t.mode&&t.enPassant&&"3"==t.enPassant[1]!=("b"==t.turn)&&(t.turn="b"==t.turn?"w":"b");let n="retro"==t.mode;e&&((n||!Number.isSafeInteger(t.halfMove)||t.halfMove<0)&&(t.halfMove=0),(n||!Number.isSafeInteger(t.fullMove)||t.fullMove<1)&&(t.fullMove=1));let o=n?"-":function(e){let t=D(),n="",o=i.SB.play.castle;return e?("K"==t[60]&&(o.K&&"R"==t[63]&&(n+="K"),o.Q&&"R"==t[56]&&(n+="Q")),"k"==t[4]&&(o.k&&"r"==t[7]&&(n+="k"),o.q&&"r"==t[0]&&(n+="q"))):(o.K&&(n+="K"),o.Q&&(n+="Q"),o.k&&(n+="k"),o.q&&(n+="q")),""==n?"-":n}(e),a=n?"-":t.enPassant||"-";return" ".concat(t.turn," ").concat(o," ").concat(a," ").concat(t.halfMove," ").concat(t.fullMove)}function O(e){var t;let n=m.value;W(n);let o=(0,l.C3)(n),a=(0,l.A1)(o),{w:r,h:s}=a||i.h.board,c=(0,l.S3)(o,r,s);null===(t=p.setOption)||void 0===t||t.call(p,{w:r,h:s});let u=o!=n;for(let e=0;e<r*s;e++)d[e].value=c[e],u=k(d[e])||u;u||e||!a?N():h(D())}function W(e){let t=i.SB.play,n=e.split(" ");if(1!=n.length){if(("w"==n[1]||"b"==n[1])&&(t.turn=n[1]),n[2])for(let e of u)t.castle[e]=n[2].includes(e);t.enPassant=n[3]&&"-"!=n[3]?n[3]:"","retro"!=t.mode&&(t.halfMove=Number(n[4]||0),t.fullMove=Number(n[5]||1))}}function M(){let e=!1;for(let t of d)e=k(t,!0)||e;e&&N()}function j(e){for(let t of d)t.readOnly=e}function V(e){if(e.anime){let t=(0,l.N0)(e,i.h.board.w,i.h.board.h);(0,r.jt)(m.value,t,e.anime)}else e.forEach((e,t)=>d[t].value=e),N()}function T(){for(let e of(Object.assign(i.SB.play,{turn:c.Il.white,enPassant:"",halfMove:0,fullMove:1}),u))i.SB.play.castle[e]=!0}let L={update:()=>{B(m.value),O(!0)},empty(){for(let e of d)e.value="";N()},reset(e){var t;null===(t=p.setOption)||void 0===t||t.call(p,{w:8,h:8}),(i.h.board.fullFEN||e)&&T(),x(l.J7)},color(e){for(let t of d){let n=t.value;!n.startsWith("'")&&""!=n&&(n.startsWith("-")&&(n=n.substr(1)),n=n.toLowerCase(),0==e&&(n="-"+n),1==e&&(n=n.toUpperCase()),t.value=n)}N()},fixSN(){for(let e of(gtag("event","fen_fix_sn"),d)){let t=e.value;!t.startsWith("'")&&""!=t&&(e.value=t.replace("s","n").replace("S","N"))}N()},invert(e){V((0,l.U_)(D(),e))}}},3813:function(e,t,n){let o,a,l,i,r,s,c,u,d,f,p,m,h,g;var y=n("4881"),b=n("9391"),S=n("3369"),w=n("4109"),_=n("899"),k=n("5547"),U=n("6384"),x=n("9683"),B=n("375");async function C(e){if(x.O.canCopyImg){let t=await e();return navigator.clipboard.write([new ClipboardItem({"image/png":t})])}throw(0,B.Z)('Image copying is not enabled in your browser.\n\nIf you\'re using Firefox, this can be enabled by the following.\n1. Visit "about:config" in your address bar.\n2. Search for "dom.events.asyncClipboard.clipboardItem".\n3. Toggle its value to true.\n4. Reload this tool.'),Error()}async function D(){if(x.O.canPaste)return await navigator.clipboard.readText();throw(0,B.Z)('Pasting text is not enabled in your browser.\n\nIf you\'re using Firefox on desktops or Firefox Nightly on Android, this can be enabled by the following.\n1. Visit "about:config" in your address bar.\n2. Search for "dom.events.asyncClipboard.readText".\n3. Toggle its value to true.\n4. Reload this tool.'),Error()}var A=n("9857"),P=n("6919"),N=n("3276"),E=n("2506"),I=n("7739");function R(e){let t=b.SB.play,n=t.moveNumber;(n+=e)<-1&&(n=-1),n>t.history.length-1&&(n=t.history.length-1),n!=t.moveNumber&&O(n)}function O(e){let t=b.SB.play,n=t.moveNumber,o=e>=0||0==n;if(Q.goto(t.history[e],o),o){let o=e==n-1,a=t.history[o?n:e],l=a.from+a.to;("k"==a.flags||"q"==a.flags)&&(l+=","+M(a)),(0,U.jt)(a.before,a.after,l,o!=(b.SB.play.mode==N.jl.retro))}}function W(e,t,n){let o=(0,P.MA)(e),l=(0,P.MA)(t);if(b.SB.play.mode==N.jl.retro){let e=a.retract({from:o,to:l,...b.SB.play.retro});return e&&(z(),q()),e}try{let e=a.move({from:o,to:l,promotion:n});if(!e)return!1;if("k"==e.flags||"q"==e.flags)return function(e){let t=(0,P.S3)(e.before),n=e.color==N.Il.white;return t[(0,P.Di)(e.from)]="",t[(0,P.Di)(e.to)]=n?"K":"k",{before:(0,P.N0)(t),after:e.after,move:M(e)}}(e);return!0}catch{return!1}}(0,b.t4)(()=>{if(b.SB.play.playing){let e=b.SB.play;e.playing=!1,Promise.all([(0,k.zD)(),T()]).then(()=>{L(),Q.goto(e.history[e.moveNumber])})}});function M(e){let t=e.color==N.Il.white,n="k"==e.flags,o=t?I.zi:I.TF;return(n?"h":"a")+o+(n?"f":"d")+o}function j(){(0,S.dd)(a.fen())}function V(e){return a.get((0,P.MA)(e)).color}async function T(){if(!o){let e=await n.e("471").then(n.bind(n,102));!o&&((o=e).Chess.options=b.h.PLAY,a=new o.Chess(b.SB.play),b.i7.module.chess=!0)}return o}function L(){Object.assign(b.SB.play,{playing:!0,pendingPromotion:!1}),(0,S.Qt)(!0),b.SB.play.mode==N.jl.retro?(z(),q()):(0,k.t1)([])}function z(){b.SB.play.retro={uncapture:void 0,unpromote:!1,ep:!1}}function q(){(0,k.t1)(a.turn()==N.Il.black?I.th.wr:I.th.br)}async function F(e){await T();try{a.loadGame(e),j(),L()}catch(e){e instanceof Error&&(0,B.Z)(e.message)}}let Q={async start(){try{let e=(0,S.mj)();if(!e)throw Error("Only orthodox chess is supported.");await T(),a.init(e),b.SB.play.over=a.overState(),L()}catch(e){e instanceof Error&&(0,B.Z)(e.message)}gtag("event","fen_play_"+b.SB.play.mode)},exit(){let e=b.SB.play.initFEN;b.SB.play.playing=!1,b.SB.play.game="",(0,S.dd)(e),(0,S.ZD)(e),(0,S.Qt)(!1),(0,k.t1)([])},goto(e,t){b.SB.play.pendingPromotion&&(b.SB.play.pendingPromotion=!1,(0,k.t1)([]));let n=a.goto(e);!t&&((0,U.p_)(),(0,S.dd)(n)),b.SB.play.mode==N.jl.retro&&(z(),q())},move(e){e!=b.SB.play.moveNumber&&O(e)},moveBy(e){R(e)},copyGame:()=>a.copyGame(),copyPGN:()=>a.copyPGN(),number:e=>o.number(e,b.SB.play.mode),format:e=>o.format(e,b.SB.play.mode),async pasteMoves(){let e=await D();try{a.addMoves(o.parseMoves(e))}catch(e){e instanceof Error&&(0,B.Z)(e.message)}j()},async pasteGame(){let e=await D();await F(e)}},Y=new URL(location.href).searchParams.get("play");null!==Y&&setTimeout(()=>{b.SB.tab=N.mQ.play,F(Y)},0);var K=n("737"),G=n("2519");function H(e){if(e.targetTouches){let t=e.target.getBoundingClientRect(),n=e.targetTouches[0]||e.changedTouches[0];e.clientX=n.clientX,e.clientY=n.clientY,e.offsetX=e.clientX-t.x,e.offsetY=e.clientY-t.y}return e}function Z(e,t){let{s:n,offset:o}=(0,b.nj)(),a=t.getBoundingClientRect(),l=Math.floor((e.clientY-a.top-o.y)/n);return{x:Math.floor((e.clientX-a.left-o.x)/n),y:l}}function $(e,t,n){return(t.x-e.x)*(n.y-e.y)-(n.x-e.x)*(t.y-e.y)}let X={x:0,y:0},J={x:0,y:0},ee=0,et=0,en=performance.now();function eo(e){let t=H(e);"pending"==b.i7.dragging&&function(e,t){let n=e.offsetX-t.x,o=e.offsetY-t.y;return Math.sqrt(n*n+o*o)}(t,X)>5&&(et=0,s?(u=x.O.isTouch?[]:null,function(e,t){ea(),r.style.display="block",t&&(t.value="",(0,S.uu)()),b.i7.dragging=!0,ec(e)}(t,i)):b.i7.dragging=!1),!0===b.i7.dragging&&(u&&u.push({x:t.clientX,y:t.clientY}),ec(t))}function ea(){b.i7.selection=null,(0,k.t1)([])}function el(e){(function(e){if(i&&"pending"==b.i7.dragging&&!b.SB.play.playing&&e.target==_.fr){let t=performance.now();t-ee<300&&i.focus(),ee=t,e.preventDefault(),b.i7.dragging=!1}})(e),r&&(r.style.display="none");let t=H(e);if(function(e){if(performance.now()-et>=250)return!1;if(e.target!=_.in||(0,b.I3)()){if(e.target==_.fr&&b.SB.popeye.playing){let{x:t}=Z(e,_.fr);return t<3&&G.wD.moveBy(-1),t>4&&G.wD.moveBy(1),!0}}else{let{x:t,y:n}=Z(e,_.in);if(b.i7.hor&&([t,n]=[n,t]),eu(t,n,E._N,E.Dm)){let e=k.Kv[n*E._N+t];b.i7.selection==e?b.i7.selection=null:b.i7.selection=e,(0,k.t1)([])}else ea();return b.i7.dragging=!1,!0}return!1}(t)||b.SB.popeye.playing||!b.i7.dragging)return;if(b.i7.dragging=!1,!s)return;let{w:n,h:o}=b.h.board,{x:d,y:f}=Z(t,_.m8),p=f*n+d,m=eu(d,f,n,o);if(b.SB.play.playing){let e;if(m){if(function(e,t){let n=b.SB.play.mode;return n!=N.jl.retro&&(n==N.jl.pass&&V(e)!=a.turn()&&a.switchSide(),!!a.checkPromotion((0,P.MA)(e),(0,P.MA)(t))&&(l=t,b.SB.play.pendingPromotion=!0,(0,k.t1)(a.turn()==N.Il.black?I.th.b:I.th.w),!0))}(c,p))return(0,S.zF)(S.xG[p],s);c!=p&&(e=W(c,p))}"object"==typeof e?(0,U.jt)(e.before,e.after,e.move):j()}else if(m){if((0,S.zF)(S.xG[p],s),i&&u&&u.length>10){var h;er(i,function(e,t){let n=0;for(let o=0,a=t.length-1;o<t.length;a=o++){let l=t[o],i=t[a];i.y<=e.y?l.y>e.y&&$(i,l,e)>0&&n++:l.y<=e.y&&0>$(i,l,e)&&n--}return n}(function(e){let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return t/=e.length,{x:t,y:n/=e.length}}(h=u),h)>0?N.mi.r90:N.mi.r270)}}else(0,S.qA)()}function ei(e){if((0,b.I3)())return;let{w:t,h:n}=b.h.board,{offset:o,s:a}=(0,b.nj)(),l=Math.floor((e.offsetX-o.x)/a),i=Math.floor((e.offsetY-o.y)/a);if(eu(l,i,t,n)){let n=S.xG[i*t+l];if(""==n.value)return;e.preventDefault();let o=performance.now();if(o-en<50)return;en=o,er(n,e.deltaY>0?N.mi.r90:N.mi.r270)}}function er(e,t){e.value=e.value.replace(/(^-?)(?:\*(\d))?([^-].*$)/,(e,n,o,a)=>{let l=(Number(o||0)+t)%N.mi.full;return n+(l?"*"+l:"")+a}),(0,S.uu)()}function es(e){if(et=performance.now(),b.SB.popeye.playing||b.i7.loading||0!=e.button&&!e.targetTouches||e.targetTouches&&e.targetTouches.length>1)return;let t=H(e);document.activeElement&&document.activeElement.blur();let n=this!=_.in,{offset:o,s:u}=n?(0,b.nj)():(0,b.nj)(_.in,b.i7.hor),{w:d,h:f}=b.h.board;X.x=t.offsetX,X.y=t.offsetY;let[p,m]=[o.x,o.y];J.x=Math.floor((X.x-p)/u),J.y=Math.floor((X.y-m)/u);let h=J.y*(n?d:E._N)+J.x;r=n?_.S8:_.Ab;let g=b.i7.selection;if(n&&g)return function(e,t,n,o,a){if(e.preventDefault(),eu(J.x,J.y,t,n)){let e=S.xG[a];e.value==o?e.value="":e.value=o,(0,S.uu)()}else ea()}(t,d,f,g,h);if(!b.SB.play.playing||(!n&&function(e){if(b.SB.play.pendingPromotion){b.i7.hor&&([J.x,J.y]=[J.y,J.x]);let e="p"==s?0:1;if(J.y>N.wg.k&&J.y<N.wg.p&&J.x==e){var t,n;t=c,n=A.V5[J.y],W(t,l,n)?(l<E.Dm&&(n=n.toUpperCase()),(0,S.zF)(S.xG[l],n)):j(),b.SB.play.pendingPromotion=!1,(0,k.t1)([])}}"retro"==b.SB.play.mode&&(e.preventDefault(),b.i7.hor&&([J.x,J.y]=[J.y,J.x]),!function(e,t){if(2==e)return;let n=b.SB.play.retro,o=0==e==(a.turn()==N.Il.black);if(o){if(N.wg.k<t&&t<N.wg.x){var l;l=A.V5[t],n.uncapture=n.uncapture==l?void 0:l}(t==N.wg.p||t==N.wg.c)&&(n.unpromote=!1)}else t==N.wg.p&&(n.unpromote=!n.unpromote,("p"==n.uncapture||"c"==n.uncapture)&&(n.uncapture=void 0));q()}(J.x,J.y))}(t),!!n&&!!function(e){let t=b.SB.play.mode;if(b.SB.play.pendingPromotion||t!=N.jl.retro&&a.isGameOver())return!1;let n=V(e)==a.turn();return(t==N.jl.pass||n==(t==N.jl.normal))&&!0}(h)))n?(c=h,i=S.xG[h],b.i7.dragging="pending",s=void 0):i=void 0,(!i||""!=i.value)&&function(e,t,n,o){let[a,l]=[n.x,n.y];e.preventDefault(),r.style.clip="rect(".concat(J.y*t+l+1,"px,").concat((J.x+1)*t+a-1,"px,").concat((J.y+1)*t+l-1,"px,").concat(J.x*t+a+1,"px)"),i?s=i.value:(s=b.i7.hor?k.Kv[J.x*E._N+J.y]:k.Kv[o],b.i7.dragging="pending")}(t,u,o,h)}function ec(e){let{offset:t,s:n}=(0,b.nj)(),{w:o,h:a,coordinates:l}=b.h.board,i=_.m8.getBoundingClientRect(),s=r==_.Ab&&l&&!b.i7.hor?i.left+K.Cd:i.left,c=Math.floor((e.clientY-i.top-t.y)/n),d=Math.floor((e.clientX-i.left-t.x)/n);(d!==J.x||c!==J.y)&&(u=null);let{scrollLeft:f,scrollTop:p}=document.documentElement;eu(d,c,o,a)?(r.style.left=s+(d-J.x)*n+f+"px",r.style.top=i.top+(c-J.y)*n+p+"px"):(r.style.left=e.clientX+f+1-X.x+"px",r.style.top=e.clientY+p-X.y+"px")}function eu(e,t,n,o){return t>-1&&t<o&&e>-1&&e<n}var ed=n("9843"),ef=n("4097"),ep=n("2539");function em(e){d.postMessage(e)}(0,b.t4)(()=>{if(b.SB.stockfish.lines.length){let e=b.SB.stockfish.lines,t=b.SB.stockfish.header;b.SB.stockfish.lines=[],b.SB.stockfish.header=[],T().then(n=>{f=n,b.SB.stockfish.lines=e,b.SB.stockfish.header=t})}}),window.cmd=em;let eh="(".concat(ep.SQ,")(").concat(ep.SQ,")([qrbn]?)"),eg="modules/stockfish/",ey=x.O.thread?"":"-single",eb=["".concat(eg,"stockfish-nnue-16.js#stockfish-nnue-16.wasm,worker"),"".concat(eg,"stockfish-nnue-16.wasm"),"".concat(eg,"stockfish-nnue-16-single.js#stockfish-nnue-16-single.wasm,worker"),"".concat(eg,"stockfish-nnue-16-single.wasm"),"".concat(eg,"nn-5af11540bbfe.nnue")];function ev(e){return d?Promise.resolve():new Promise((t,n)=>{b.i7.stockfish.running=N.MI.starting,(d=new Worker("".concat(eg,"stockfish-nnue-16").concat(ey,".js#stockfish-nnue-16").concat(ey,".wasm"))).onmessage=e=>{let n=e.data;console.info(n),"readyok"==n&&(b.i7.stockfish.running=N.MI.running,t()),n.startsWith("info ")&&function(e){let t;if(b.i7.stockfish.running!=N.MI.running)return;let n=e.match(/multipv (\d+)/);if(!n)return;let o=Number(n[1])-1,a=e.match(/mate (-?)(\d+)/),l=e.match(/score cp (-?\d+)/),i=Number(l&&l[1]||0)/100;if(a){let e="w"==m.split(" ")[1]==!!a[1]?"Black":"White";t=Number(a[2])+b.SB.stockfish.header.length/2,0==o&&(b.SB.stockfish.mate=[e,t])}if(0==o){let t=e.match(/depth (\d+)/);t&&(b.SB.stockfish.depth=t[1]),l&&(b.SB.stockfish.score=i)}let r=e.match(new RegExp("pv (".concat(eh,"(?: ").concat(eh,")*)")));if(r){var s;if((null===(s=b.SB.stockfish.lines[o])||void 0===s?void 0:s.raw)==r[1])return;let e=r[1].split(" ").map(e=>e.match(new RegExp(eh)));b.SB.stockfish.moves=[];let t=b.SB.stockfish.header;for(let n of(p.init(t.length?t[t.length-1].after:m),e))if(p.move({from:n[1],to:n[2],promotion:n[3]}).san.endsWith("=")){i=0;break}let n={rawScore:function(e,t){return e?e[1]?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY:t}(a,i),score:a?a[1]+"#"+a[2]:i.toFixed(2),raw:r[1],moves:p.state.history.concat(),pgn:p.copyPGN(t)};b.SB.stockfish.lines[o]=n}b.h.Stockfish.study&&eS()}(n.substring(5)),n.match(new RegExp("^bestmove ".concat(eh)))&&function(){let e=b.h.Stockfish.depth;if(b.h.Stockfish.study&&!(e<4)&&eS()){let t=b.SB.stockfish.header;t.push(...b.SB.stockfish.lines["0"].moves.slice(0,2)),em("position fen "+t[t.length-1].after),em("go depth "+e)}else ek.stop()}()},d.onerror=e=>{e.message.includes("RangeError")?n(-1):e.message.includes("memory")?n("Not enough memory."):n("Unknown error has occurred.")},em("uci"),em("setoption name Use NNUE value true"),x.O.thread&&em("setoption name Threads value "+Math.max(2,navigator.hardwareConcurrency-4)),em("setoption name Hash value "+e),em("isready")})}function eS(){let e=b.SB.stockfish.lines.filter(e=>e&&e.moves.length);if(e.length<=1)return!1;e.forEach(e=>e.moves[0]&&(e.moves[0].annotation=void 0));let t=e.filter(e=>e.rawScore>1);if(t.length>1)return!1;if(1==t.length)return t[0].moves[0].annotation="!",!0;let n=e.filter(e=>e.rawScore>-1);return 1==n.length&&(n[0].moves[0].annotation="!",!0)}async function ew(e){if(200!=(await fetch(e)).status)throw Error()}async function e_(e,t){try{await e}catch(e){if(-1!==e)throw e;if(ek.stop(),(t/=2)<4)throw Error("Not enough memory.");await e_(ev(t),t)}}let ek={async download(){gtag("event","fen_stockfish_download"),b.i7.stockfish.status=N.KO.downloading,isHttps&&"serviceWorker"in navigator&&await navigator.serviceWorker.ready;try{await Promise.all(eb.map(e=>ew(e)))}catch{(0,B.Z)("Download failed. Please check your network connection."),b.i7.stockfish.status=N.KO.notDownloaded;return}b.h.Stockfish.downloaded=!0,b.i7.stockfish.status=N.KO.needReload},async analyze(){try{gtag("event","fen_stockfish_run");let e=ev(128);if(!(m=(0,S.mj)()))throw Error("Only orthodox chess is supported.");if(!f){let e=await T();!f&&(f=e)}(p=new f.Chess).init(m),await e_(e,128),b.SB.stockfish=(0,ef.d)(b.bi),em("setoption name MultiPV value "+b.h.Stockfish.lines),em("ucinewgame"),em("position fen "+m),em("go depth "+b.h.Stockfish.depth)}catch(e){ek.stop(),(0,B.Z)(e instanceof Error?e.message:e),b.i7.stockfish.running=N.MI.stop}},play(e){gtag("event","fen_stockfish_play"),b.SB.play.mode="normal",b.SB.tab=6,F(e.pgn)},stop(){d&&d.terminate(),d=void 0,b.i7.stockfish.running=N.MI.stop},format:e=>f.formatGame(e)};(0,b.t4)(()=>{if(b.SB.syzygy.lines){let e=b.SB.syzygy.lines;e.forEach(e=>e.searching=!1),b.SB.syzygy.lines=[],T().then(t=>{h=t,b.SB.syzygy.lines=e})}});let eU=new Set;function ex(e){return new Promise(t=>{eU.add(t),setTimeout(()=>{eU.delete(t),t()},e*E.WT)})}async function eB(e,t){try{if(!t.running)return null;let n=t.ready;if(t.ready=n.then(()=>ex(1)),await n,!t.running)return null;let o=await fetch("https://tablebase.lichess.ovh/standard?fen="+e);if(429==o.status)return await ex(61),await eB(e,t);return await o.json()}catch{throw Error("Unable to connect to the server. Please check your network connection.")}}async function eC(e){let t=new(h=await T()).Chess;t.init(e.fen);let n=await eB(t.fen(),e),o="w"==t.turn()?"White":"Black",a=n.category;if(b.SB.syzygy.header="The position is a ".concat(a," for ").concat(o,"."),"unknown"==a||a.includes("loss")||!e.running)return;for(let o of(b.SB.syzygy.lines=[],e.outcome=a,e.op=function(e){return"draw"==e?e:eE[eN.indexOf(e)]}(a),n.moves.filter(t=>t.category==e.op))){t.init(e.fen);let[n,a,l]=o.uci.match(/..|./g);t.move({from:n,to:a,promotion:l});let i=t.fen();e.positions.add(eD(i));let r={fen:i,dtm:o.dtm,indent:0,history:t.state.history.concat(),leaf:!0,moves:t.state.history.concat(),pgn:t.copyPGN(),transpose:!1,searching:!t.isGameOver()};b.SB.syzygy.lines.push(r)}if(!e.running)return;let l=b.SB.syzygy.lines.filter(e=>e.searching);if(!(l.length>1))for(l[0].moves[0].annotation="!";l.length;){let t=l.map(t=>eA(t,e));if(await Promise.all(t),l=b.SB.syzygy.lines.filter(e=>e.searching),!e.running)return}}function eD(e){return e.replace(/ \d+ \d+$/,"")}async function eA(e,t){let n=new h.Chess;n.init(e.fen);let o="number"==typeof e.dtm,a=n.moves({verbose:!0}),l=new Set((await eB(e.fen,t)).moves.filter(e=>e.category==t.outcome).map(e=>e.uci)),i=a.filter(e=>l.has(e.from+e.to+(e.promotion||""))).map(e=>eP(e,t,o)),r=(await Promise.all(i)).filter(e=>e).sort((e,t)=>t.score-e.score).filter((e,t,n)=>e.score==n[0].score);if(e.searching&&(e.searching=!1),!t.running)return;let s=r.filter(e=>"draw"!=t.op&&e.moves.length>0||1==e.moves.length);if(0==s.length)return;let c=1==s.length,u=s.map(o=>(function(e,t,n,o,a){o.init(t.fen);let l=o.move(e.defense);n&&(l.annotation="!");let[i,r,s]=e.moves[0].uci.match(/..|./g),c=o.move({from:i,to:r,promotion:s});1==e.moves.length&&(c.annotation="!");let u=o.fen(),d=eD(u),f=a.positions.has(d);!f&&a.positions.add(d);let p=o.state.history.concat();return{dtm:"number"==typeof e.dtm?1-e.dtm:null,fen:u,transpose:f,leaf:!0,indent:t.indent+(n?0:1),history:t.history.concat(p),moves:n?t.moves.concat(p):p,pgn:o.copyPGN(t.history),searching:!o.isGameOver()&&!f}})(o,e,c,n,t)),d=b.SB.syzygy.lines.concat(),f=d.indexOf(e);c?d.splice(f,1,...u):(e.leaf=!1,d.splice(f+1,0,...u)),b.SB.syzygy.lines=d}async function eP(e,t,n){let o=await eB(e.after,t);if(!t.running)return null;let a=o.moves.filter(e=>e.category==t.op);return{score:(n?o.dtm:0)-a.length,json:o,dtm:o.dtm,defense:e,moves:a}}let eN=["win","maybe-win","cursed-win"],eE=["loss","maybe-loss","blessed-loss"],eI={async run(){let e={positions:new Set,running:!0,ready:Promise.resolve()};g=e;try{var t;if(gtag("event","fen_syzygy_run"),b.i7.syzygy.running=!0,b.SB.syzygy.header=null,b.SB.syzygy.lines=null,e.fen=(0,S.mj)(),!e.fen)throw Error("Only orthodox chess is supported.");if((null===(t=e.fen.split(" ")[0].match(/[a-z]/ig))||void 0===t?void 0:t.length)>7)throw Error("Only supports position with up to ".concat(7," pieces."));await eC(e)}catch(e){(0,B.Z)(e instanceof Error?e.message:e)}finally{e.running&&eI.stop()}},play(e){gtag("event","fen_syzygy_play"),b.SB.play.mode="normal",b.SB.tab=6,F(e.pgn)},stop(){var e;for(let e of(g&&(g.running=!1),eU))e();eU.clear(),null===(e=b.SB.syzygy.lines)||void 0===e||e.forEach(e=>e.searching=!1),b.i7.syzygy.running=!1},format(e){let t=h.formatGame(e.moves);return e.searching?t+=" ...":e.transpose&&(t+=" (transpose)"),t}};var eR=n("4486"),eO=n.n(eR);let eW={class:"modal-dialog modal-dialog-centered"},eM={class:"modal-content"},ej=["innerHTML"],eV={class:"modal-footer"},eT=Promise.resolve(),eL=(0,y.aZ)({name:"DialogModal",__name:"dialog",setup(e,t){let n,{expose:o}=t,a=(0,y.XI)();(0,y.bv)(()=>{n=new(eO())(a.value,{backdrop:"static"})});let l=(0,y.XI)("");return o({show:async function e(e,t){let o;let i=eT;return eT=new Promise(e=>{o=e}),await i,new Promise(i=>{l.value=e.replace(/\n/g,"<br>"),a.value.addEventListener("hide.bs.modal",()=>{i()},{once:!0}),a.value.addEventListener("hidden.bs.modal",o,{once:!0}),null==t||t(),n.show()})},hide:()=>n.hide()}),(e,t)=>((0,y.wg)(),(0,y.iD)("div",{class:"modal fade modal-second",ref_key:"el",ref:a},[(0,y._)("div",eW,[(0,y._)("div",eM,[(0,y._)("div",{class:"modal-body",innerHTML:l.value},null,8,ej),(0,y._)("div",eV,[(0,y.WI)(e.$slots,"default")])])])],512))}}),ez=(0,y.aZ)({name:"Alert",__name:"alert",setup(e,t){let{expose:n}=t,o=(0,y.XI)();function a(e){return o.value.show(e)}return(0,y.bv)(()=>B.Z.setup(a)),n({show:a}),(e,t)=>((0,y.wg)(),(0,y.j4)(eL,{ref_key:"dialog",ref:o},{default:(0,y.w5)(()=>t[0]||(t[0]=[(0,y._)("button",{type:"button",class:"btn btn-primary","data-bs-dismiss":"modal"},"OK",-1)])),_:1},512))}}),eq=(0,y.aZ)({name:"Confirm",__name:"confirm",setup(e,t){let{expose:n}=t,o=!1,a=(0,y.XI)();async function l(e){return await a.value.show(e,()=>o=!1),o}function i(){o=!0,a.value.hide()}return(0,y.bv)(()=>B.i.setup(l)),n({show:l}),(e,t)=>((0,y.wg)(),(0,y.j4)(eL,{ref_key:"dialog",ref:a},{default:(0,y.w5)(()=>[t[0]||(t[0]=(0,y._)("button",{type:"button",class:"btn btn-secondary","data-bs-dismiss":"modal"},"No",-1)),(0,y._)("button",{type:"button",class:"btn btn-primary",onClick:i},"Yes")]),_:1},512))}}),eF={class:"nav-item"},eQ=["title"],eY={class:"d-sm-none"},eK={class:"d-none d-sm-inline"},eG=(0,y.aZ)({__name:"menuTab",props:{index:{},icon:{},title:{}},setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("li",eF,[(0,y._)("div",{class:(0,y.C_)(["nav-link",{active:(0,y.SU)(b.SB).tab==e.index}]),onClick:t[0]||(t[0]=t=>(0,y.SU)(b.SB).tab=e.index),title:e.title},[(0,y._)("span",eY,[(0,y._)("i",{class:(0,y.C_)(e.icon)},null,2)]),(0,y._)("span",eK,[(0,y.WI)(e.$slots,"default")])],10,eQ)]))}),eH={class:"nav nav-tabs pe-1",style:{"flex-wrap":"nowrap"}},eZ=(0,y.aZ)({__name:"menu",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",{class:(0,y.C_)(["mb-3 nav-container",{"mt-n3":(0,y.SU)(b.u8)()}])},[(0,y._)("ul",eH,[(0,y.Wm)(eG,{index:0,icon:"fa-solid fa-pen-to-square",title:"Edit"},{default:(0,y.w5)(()=>t[0]||(t[0]=[(0,y.Uk)("Edit")])),_:1}),(0,y.Wm)(eG,{index:8,icon:"fa-solid fa-chess-board",title:"Project"},{default:(0,y.w5)(()=>t[1]||(t[1]=[(0,y.Uk)("Project")])),_:1}),(0,y.Wm)(eG,{index:1,icon:"fa-solid fa-gear",title:"Options"},{default:(0,y.w5)(()=>t[2]||(t[2]=[(0,y.Uk)("Options")])),_:1}),(0,y.Wm)(eG,{index:7,icon:"fa-solid fa-calculator",title:"Compute"},{default:(0,y.w5)(()=>t[3]||(t[3]=[(0,y.Uk)("Compute")])),_:1}),(0,y.Wm)(eG,{index:6,icon:"fa-solid fa-gamepad",title:"Play"},{default:(0,y.w5)(()=>t[4]||(t[4]=[(0,y.Uk)("Play")])),_:1}),(0,y.Wm)(eG,{index:2,icon:"fa-solid fa-database",title:"Database"},{default:(0,y.w5)(()=>t[5]||(t[5]=[(0,y.Uk)("DB")])),_:1}),(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).isTaiwan?((0,y.wg)(),(0,y.j4)(eG,{key:0,index:4,icon:"fa-solid fa-terminal",title:"BBS"},{default:(0,y.w5)(()=>t[6]||(t[6]=[(0,y.Uk)("BBS")])),_:1})):(0,y.kq)("",!0),(0,y.Wm)(eG,{index:5,icon:"fa-solid fa-share-from-square",title:"API"},{default:(0,y.w5)(()=>t[7]||(t[7]=[(0,y.Uk)("API")])),_:1})])],2))});function e$(e){return new URL(e,location.href).toString()}function eX(){let{SN:e,w:t,h:n}=b.h.board;return e?(0,P.N0)((0,S.xL)(),t,n):S.RI.value}function eJ(){let e=b.h.board,t=eX(),n=e$("gen/?fen="+t);return e.size!=K.Cg&&(n+="&size="+e.size),e.set!=K.z6&&(n+="&set="+e.set),e.pattern&&(n+="&pattern="+e.pattern),e.bg&&(n+="&bg="+e.bg),"1"!=e.border&&(n+="&border="+e.border),e.blackWhite&&(n+="&blackWhite&knightOffset="+e.knightOffset),!(0,P.A1)(t)&&(n+="&w=".concat(e.w,"&h=").concat(e.h)),n}let e0={copyJanko:()=>(gtag("event","fen_copy_janko"),"https://www.janko.at/Retros/d.php?ff="+eX()),copyBase64:()=>(gtag("event","fen_link_copy64"),k.Uw.toDataURL()),copyBase64Img:()=>(gtag("event","fen_link_copy64img"),'<img fen="'.concat(k.Uw.toDataURL(),'">')),async copyUrl(){gtag("event","fen_gen_link");let e=new FormData,t=await (0,k.Br)();e.append("key","7802c5da1788f2315222d44bfba20519"),e.append("image",t,"fen");try{let t=await fetch("https://api.imgbb.com/1/upload",{method:"post",body:e}),n=await t.json();if(!n.success)throw n.error.message;return n.data.url+"?="+eX()}catch(e){throw(0,B.Z)("string"==typeof e?e:"Internet connection failed. Please try again later."),e}},copyEmbed(){gtag("event","fen_copy_embed");let e=b.h.board,t=eJ(),{w:n,h:o}=(0,K.t_)(e);return'<iframe src="'.concat(t,'" style="border:none;width:').concat(n,"px;height:").concat(o,'px"></iframe>')},copyEmbedUrl:()=>(gtag("event","fen_copy_embedUrl"),eJ()),copyImg:()=>(gtag("event","fen_copy_sdkImg"),'<img fen="'.concat(eX(),'">')),copySDK(){gtag("event","fen_copy_sdk");let e=b.h.board,t="";return e.size!=K.Cg&&(t+=' data-size="'.concat(e.size,'"')),e.set!=K.z6&&(t+=' data-set="'.concat(e.set,'"')),e.bg&&(t+=' data-bg="'.concat(e.bg,'"')),"1"!=e.border&&(t+=' data-border="'.concat(e.border,'"')),e.blackWhite&&(t+=' data-black-white="true" data-knight-offset="'.concat(e.knightOffset,'"')),'<script src="'.concat(e$("sdk.js"),'"').concat(t,"><\/script>")}},e1=["disabled"],e2=(0,y.aZ)({__name:"copyButton",props:{class:{},factory:{type:Function},disabled:{type:Boolean}},setup(e){let t=(0,y.XI)(0);async function n(){t.value=1;try{let n=e.factory;for(;"function"==typeof n;)n=await n();"string"==typeof n&&function(e){if(x.O.canCopy)navigator.clipboard.writeText(e);else{let t=document.createElement("input");document.body.appendChild(t),t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t)}}(n),t.value=2,setTimeout(()=>t.value=0,E.WT)}catch(e){t.value=0}}return(o,a)=>((0,y.wg)(),(0,y.iD)("button",{type:"button",class:(0,y.C_)(["btn nowrap",e.class]),onClick:n,disabled:o.disabled||1==t.value},[(0,y._)("i",{class:(0,y.C_)(["fa-solid fa-clipboard","fa-spin fa-solid fa-spinner","fa-solid fa-check"][t.value])},null,2),a[0]||(a[0]=(0,y.Uk)(" ")),(0,y.WI)(o.$slots,"default")],10,e1))}}),e3=["disabled"],e8=(0,y.aZ)({__name:"shareButton",setup(e){let t=(0,y.XI)(!1);async function n(){if(gtag("event","fen_img_share"),x.O.canSharePng){let e=[new File([await (0,k.Br)()],"board.png",{type:"image/png"})];navigator.share({files:e})}else{t.value=!0;try{let e=await e0.copyUrl();navigator.share({url:e,text:eX()})}finally{t.value&&(t.value=!1)}}}return(e,o)=>(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).canShare?((0,y.wg)(),(0,y.iD)("button",{key:0,class:"btn btn-primary",disabled:t.value,onClick:n},[(0,y._)("i",{class:(0,y.C_)(t.value?"fa-spin fa-solid fa-spinner":"fa-solid fa-share-nodes")},null,2),o[0]||(o[0]=(0,y.Uk)(" Share image "))],8,e3)):(0,y.kq)("",!0)}}),e4={class:"mb-3 btn-gap"},e5={class:"d-inline-block"},e7=["disabled"],e6=["disabled"],e9={class:"btn-group"},te=["disabled"],tt=["disabled"],tn=["disabled"],to=["disabled"],ta={class:"btn-group"},tl=["disabled"],ti=["disabled"],tr=["disabled"],ts=["disabled"],tc={class:"btn-group"},tu=["disabled"],td=["disabled"],tf={key:0,class:"fa-solid fa-chess-king fa-fw shadow-neutral",style:{color:"gray"}},tp=["disabled"],tm={class:"btn-group"},th=["disabled"],tg=["disabled"],ty=["disabled"],tb={class:"text-end btn-gap"},tv={class:"d-inline-block"},tS={class:"d-inline-block"},tw={key:0,class:"mt-3 d-none d-md-block text-end"},t_={class:"d-inline-block"},tk={class:"form-check form-switch"},tU=(0,y.aZ)({__name:"edit",setup(e){function t(e,t){(0,U.p_)(!0);let{w:n,h:o}=b.h.board;(0,S.gx)((0,P.uY)((0,S.Ox)(),e,t,n,o))}function n(e){(0,U.p_)(!0);let{w:t,h:n}=b.h.board;(0,S.gx)((0,P.hD)((0,S.Ox)(),e,t,n))}function o(e){(0,U.p_)(!0);let{w:t,h:n}=b.h.board;t!==n&&(0,w.l)({w:n,h:t}),(0,S.gx)((0,P.U1)((0,S.Ox)(),e,t,n))}return(e,a)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:0==(0,y.SU)(b.SB).tab})},[(0,y._)("div",e4,[(0,y._)("span",e5,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:a[0]||(a[0]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(S.X4).empty&&(0,y.SU)(S.X4).empty(...t)}),disabled:(0,y.SU)(b.I3)(),title:"Empty board"},a[17]||(a[17]=[(0,y._)("i",{class:"fa-solid fa-trash-can"},null,-1),(0,y._)("span",null," Empty board",-1)]),8,e7),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:a[1]||(a[1]=e=>(0,y.SU)(S.X4).reset()),disabled:(0,y.SU)(b.I3)(),title:"Starting position"},a[18]||(a[18]=[(0,y._)("i",{class:"fa-solid fa-flag-checkered"},null,-1),(0,y._)("span",null," Starting position",-1)]),8,e6)]),(0,y._)("span",e9,[(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift leftwards",onClick:a[2]||(a[2]=e=>t(-1,0)),disabled:(0,y.SU)(b.I3)()},a[19]||(a[19]=[(0,y._)("i",{class:"fa-solid fa-arrow-left"},null,-1)]),8,te),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift rightwards",onClick:a[3]||(a[3]=e=>t(1,0)),disabled:(0,y.SU)(b.I3)()},a[20]||(a[20]=[(0,y._)("i",{class:"fa-solid fa-arrow-right"},null,-1)]),8,tt),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift upwards",onClick:a[4]||(a[4]=e=>t(0,-1)),disabled:(0,y.SU)(b.I3)()},a[21]||(a[21]=[(0,y._)("i",{class:"fa-solid fa-arrow-up"},null,-1)]),8,tn),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift downwards",onClick:a[5]||(a[5]=e=>t(0,1)),disabled:(0,y.SU)(b.I3)()},a[22]||(a[22]=[(0,y._)("i",{class:"fa-solid fa-arrow-down"},null,-1)]),8,to)]),(0,y._)("span",ta,[(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Rotate counterclockwise",onClick:a[6]||(a[6]=e=>o(-1)),disabled:(0,y.SU)(b.I3)()},a[23]||(a[23]=[(0,y._)("i",{class:"fa-solid fa-rotate-left"},null,-1)]),8,tl),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Rotate clockwise",onClick:a[7]||(a[7]=e=>o(1)),disabled:(0,y.SU)(b.I3)()},a[24]||(a[24]=[(0,y._)("i",{class:"fa-solid fa-rotate-right"},null,-1)]),8,ti),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Mirror horizontally",onClick:a[8]||(a[8]=e=>n("-")),disabled:(0,y.SU)(b.I3)()},a[25]||(a[25]=[(0,y._)("i",{class:"fa-solid fa-arrows-left-right"},null,-1)]),8,tr),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Mirror vertically",onClick:a[9]||(a[9]=e=>n("|")),disabled:(0,y.SU)(b.I3)()},a[26]||(a[26]=[(0,y._)("i",{class:"fa-solid fa-arrows-up-down"},null,-1)]),8,ts)]),(0,y._)("span",tc,[(0,y._)("button",{type:"button",class:"btn btn-secondary px-2",title:"All Black",onClick:a[10]||(a[10]=e=>(0,y.SU)(S.X4).color(-1)),disabled:(0,y.SU)(b.I3)()},a[27]||(a[27]=[(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-black shadow-white"},null,-1)]),8,tu),(0,y._)("button",{type:"button",class:"btn btn-secondary px-2",title:"All Neutral",onClick:a[11]||(a[11]=e=>(0,y.SU)(S.X4).color(0)),disabled:(0,y.SU)(b.I3)()},[(0,y.SU)(b.h).board.blackWhite?((0,y.wg)(),(0,y.iD)(y.HY,{key:1},[a[28]||(a[28]=(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-black shadow-white"},null,-1)),a[29]||(a[29]=(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-white shadow-black",style:{"margin-left":"-1.25em","clip-path":"polygon(51.5% 0, 100% 0, 100% 100%, 51.5% 100%)"}},null,-1))],64)):((0,y.wg)(),(0,y.iD)("i",tf))],8,td),(0,y._)("button",{type:"button",class:"btn btn-secondary px-2",title:"All White",onClick:a[12]||(a[12]=e=>(0,y.SU)(S.X4).color(1)),disabled:(0,y.SU)(b.I3)()},a[30]||(a[30]=[(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-white shadow-black"},null,-1)]),8,tp)]),(0,y._)("span",tm,[(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Switch side",onClick:a[13]||(a[13]=e=>(0,y.SU)(S.X4).invert(!1)),disabled:(0,y.SU)(b.I3)()},a[31]||(a[31]=[(0,y._)("i",{class:"fa-solid fa-chess-king text-black shadow-white"},null,-1),(0,y.Uk)(" "),(0,y._)("i",{class:"fa-solid fa-arrows-left-right"},null,-1),(0,y.Uk)(" "),(0,y._)("i",{class:"fa-solid fa-chess-king text-white shadow-black"},null,-1)]),8,th),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Switch case (including text)",onClick:a[14]||(a[14]=e=>(0,y.SU)(S.X4).invert(!0)),disabled:(0,y.SU)(b.I3)()},a[32]||(a[32]=[(0,y.Uk)(" A "),(0,y._)("i",{class:"fa-solid fa-arrows-left-right"},null,-1),(0,y.Uk)(" a ")]),8,tg),(0,y.SU)(b.h).board.SN?(0,y.kq)("",!0):((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-secondary",title:"Change all S to N when 'Use S for knight' mode is off",onClick:a[15]||(a[15]=e=>(0,y.SU)(S.X4).fixSN()),disabled:(0,y.SU)(b.I3)()},a[33]||(a[33]=[(0,y.Uk)(" S "),(0,y._)("i",{class:"fa-solid fa-arrow-right"},null,-1),(0,y.Uk)(" N ")]),8,ty))])]),(0,y._)("div",tb,[(0,y._)("span",tv,[(0,y.SU)(b.h).feature.janko?((0,y.wg)(),(0,y.j4)(e2,{key:0,factory:(0,y.SU)(e0).copyJanko,class:"btn-primary"},{default:(0,y.w5)(()=>a[34]||(a[34]=[(0,y.Uk)("Create Janko URL")])),_:1},8,["factory"])):(0,y.kq)("",!0),(0,y.SU)(b.i7).envReady&&!(0,y.SU)(x.O).isTouch?((0,y.wg)(),(0,y.j4)(e2,{key:1,factory:()=>(0,y.SU)(C)((0,y.SU)(k.Br)),class:"btn-primary"},{default:(0,y.w5)(()=>a[35]||(a[35]=[(0,y.Uk)("Copy image ")])),_:1},8,["factory"])):(0,y.kq)("",!0),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyUrl,class:"btn-primary"},{default:(0,y.w5)(()=>a[36]||(a[36]=[(0,y.Uk)("Create image URL")])),_:1},8,["factory"])]),(0,y._)("span",tS,[(0,y.Wm)(e8),a[37]||(a[37]=(0,y._)("a",{class:"btn btn-primary",download:"board.png",id:"Save",onclick:"gtag('event', 'img_save')"},[(0,y._)("i",{class:"fa-solid fa-download"}),(0,y.Uk)(" Save image ")],-1))])]),(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).isTop?((0,y.wg)(),(0,y.iD)("div",tw,[(0,y._)("div",t_,[(0,y._)("div",tk,[(0,y.wy)((0,y._)("input",{class:"form-check-input",type:"checkbox",role:"switch",id:"sSplit","onUpdate:modelValue":a[16]||(a[16]=e=>(0,y.SU)(b.SB).split=e)},null,512),[[y.e8,(0,y.SU)(b.SB).split]]),a[38]||(a[38]=(0,y._)("label",{class:"form-check-label",for:"sSplit"},"Split window",-1))])])])):(0,y.kq)("",!0)],2))}}),tx={class:"form-check"},tB=["checked","disabled"],tC=(0,y.aZ)({__name:"checkbox",props:{modelValue:{type:Boolean},disabled:{type:Boolean}},emits:["update:modelValue","change"],setup(e){let t="chk"+(0,y.FN)().uid;return(e,n)=>((0,y.wg)(),(0,y.iD)("div",tx,[(0,y._)("input",{type:"checkbox",class:"form-check-input",id:t,checked:e.modelValue,onChange:n[0]||(n[0]=t=>{e.$emit("update:modelValue",!e.modelValue),e.$emit("change")}),disabled:e.disabled},null,40,tB),(0,y._)("label",{class:"form-check-label",for:t},[(0,y.WI)(e.$slots,"default")])]))}}),tD={class:"input-group"},tA=["disabled"],tP=["title","value"],tN=["disabled"],tE=(0,y.aZ)({__name:"inputNumber",props:{title:{},min:{},max:{},modelValue:{}},emits:["update:modelValue"],setup(e,t){let{emit:n}=t;function o(t){n("update:modelValue",e.modelValue+t)}let a=()=>e.modelValue<=e.min,l=()=>void 0!==e.max&&e.modelValue>=e.max;return(t,i)=>((0,y.wg)(),(0,y.iD)("div",tD,[(0,y._)("button",{class:"btn btn-secondary px-2",disabled:a(),type:"button",onClick:i[0]||(i[0]=e=>o(-1))},i[3]||(i[3]=[(0,y._)("i",{class:"fa-solid fa-minus"},null,-1)]),8,tA),(0,y._)("input",{type:"number",class:"form-control text-center px-0",min:"1",title:t.title,value:e.modelValue,onChange:i[1]||(i[1]=t=>(function(t){let o=t.target,a=e.modelValue,l=Math.round(Number(o.value));isNaN(l)||l<e.min||void 0!==e.max&&l>e.max?o.value=a.toString():n("update:modelValue",l)})(t)),onfocus:"this.select()"},null,40,tP),(0,y._)("button",{class:"btn btn-secondary px-2",disabled:l(),type:"button",onClick:i[2]||(i[2]=e=>o(1))},i[4]||(i[4]=[(0,y._)("i",{class:"fa-solid fa-plus"},null,-1)]),8,tN)]))}}),tI={class:"row mb-2"},tR={class:"col flex-grow-1",style:{"flex-basis":"18rem"}},tO={class:"row gx-3"},tW={class:"col",style:{"flex-basis":"15rem"}},tM={class:"row gx-3 mb-2"},tj={class:"col"},tV={class:"col",style:{"flex-basis":"13rem"}},tT={class:"row gx-3 mb-2"},tL={class:"col"},tz={class:"row gx-3"},tq={class:"col",style:{"flex-basis":"15rem"}},tF={class:"row gx-3 mb-2"},tQ={class:"col"},tY={class:"col",style:{"flex-basis":"16rem"}},tK={class:"row gx-3 mb-2"},tG={class:"col"},tH={class:"col flex-grow-1 mb-2",style:{"flex-basis":"22rem"}},tZ={class:"row gx-3"},t$={class:"col",style:{"flex-basis":"22rem"}},tX={class:"row gx-3"},tJ={class:"col mb-2",style:{"flex-basis":"14rem","flex-grow":"10000"}},t0={class:"row gx-3"},t1={class:"col"},t2={class:"col"},t3={class:"col mb-2 text-end"},t8={class:"col",style:{"flex-basis":"14rem"}},t4={class:"row gx-3 mb-2"},t5={class:"col"},t7=["value"],t6={class:"row gx-3 align-items-baseline"},t9={class:"col",style:{"flex-basis":"15rem"}},ne={class:"col",style:{"flex-basis":"15rem"}},nt={class:"row align-items-center"},nn={class:"col"},no={class:"d-none d-md-block"},na=(0,y.aZ)({__name:"options",setup(e){function t(){(0,w.l)({},!0)}return(e,n)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:1==(0,y.SU)(b.SB).tab})},[(0,y._)("div",tI,[(0,y._)("div",tR,[(0,y._)("div",tO,[(0,y._)("div",tW,[(0,y._)("div",tM,[n[19]||(n[19]=(0,y._)("label",{class:"col-auto col-form-label"},"Chess set:",-1)),(0,y._)("div",tj,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[0]||(n[0]=e=>(0,y.SU)(w.Ar).set=e)},n[18]||(n[18]=[(0,y.uE)('<option value="1echecs">1Echecs</option><option value="alpha">Alpha</option><option value="goodCompanion">Good Companion</option><option value="kilfiger">Kilfiger</option><option value="merida">Merida</option><option value="mpchess">MPChess</option><option value="skak">Skak</option>',7)]),512),[[y.bM,(0,y.SU)(w.Ar).set]])])])]),(0,y._)("div",tV,[(0,y._)("div",tT,[n[21]||(n[21]=(0,y._)("label",{class:"col-auto col-form-label"},"Square size:",-1)),(0,y._)("div",tL,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[1]||(n[1]=e=>(0,y.SU)(w.Ar).size=e)},n[20]||(n[20]=[(0,y._)("option",{value:"26"},"26px",-1),(0,y._)("option",{value:"32"},"32px",-1),(0,y._)("option",{value:"38"},"38px",-1),(0,y._)("option",{value:"44"},"44px",-1)]),512),[[y.bM,(0,y.SU)(w.Ar).size,void 0,{number:!0}]])])])])]),(0,y.Wm)(tC,{class:"mb-2",modelValue:(0,y.SU)(b.h).board.exHigh,"onUpdate:modelValue":n[2]||(n[2]=e=>(0,y.SU)(b.h).board.exHigh=e),onChange:(0,y.SU)(k.G2)},{default:(0,y.w5)(()=>n[22]||(n[22]=[(0,y.Uk)("Export to high-resolution image")])),_:1},8,["modelValue","onChange"]),(0,y._)("div",tz,[(0,y._)("div",tq,[(0,y._)("div",tF,[n[24]||(n[24]=(0,y._)("label",{class:"col-auto col-form-label"},"Background:",-1)),(0,y._)("div",tQ,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[3]||(n[3]=e=>(0,y.SU)(b.h).board.bg=e),onChange:n[4]||(n[4]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.wY)&&(0,y.SU)(k.wY)(...t)})},n[23]||(n[23]=[(0,y._)("option",{value:void 0},"Default",-1),(0,y._)("option",{value:"gray"},"Gray",-1),(0,y._)("option",{value:"green"},"Green",-1),(0,y._)("option",{value:"classic"},"Classic",-1)]),544),[[y.bM,(0,y.SU)(b.h).board.bg]])])])]),(0,y._)("div",tY,[(0,y._)("div",tK,[n[26]||(n[26]=(0,y._)("label",{class:"col-auto col-form-label"},"Board pattern:",-1)),(0,y._)("div",tG,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[5]||(n[5]=e=>(0,y.SU)(b.h).board.pattern=e),onChange:n[6]||(n[6]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.wY)&&(0,y.SU)(k.wY)(...t)})},n[25]||(n[25]=[(0,y._)("option",{value:void 0},"Normal",-1),(0,y._)("option",{value:"inverted"},"Inverted",-1),(0,y._)("option",{value:"mono"},"Uncolored",-1)]),544),[[y.bM,(0,y.SU)(b.h).board.pattern]])])])])])]),(0,y._)("div",tH,[(0,y._)("div",tZ,[(0,y._)("div",t$,[(0,y._)("div",tX,[(0,y._)("div",tJ,[(0,y._)("div",t0,[(0,y._)("div",t1,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(w.Ar).width,"onUpdate:modelValue":n[7]||(n[7]=e=>(0,y.SU)(w.Ar).width=e),min:1,title:"Files"},null,8,["modelValue"])]),n[27]||(n[27]=(0,y._)("label",{class:"col-auto col-form-label"},"x",-1)),(0,y._)("div",t2,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(w.Ar).height,"onUpdate:modelValue":n[8]||(n[8]=e=>(0,y.SU)(w.Ar).height=e),min:1,title:"Ranks"},null,8,["modelValue"])])])]),(0,y._)("div",t3,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:n[9]||(n[9]=e=>(0,y.SU)(w.Ar).setDimension({w:8,h:8}))},"Reset")])])]),(0,y._)("div",t8,[(0,y._)("div",t4,[n[28]||(n[28]=(0,y._)("label",{class:"col-auto col-form-label"},"Border pattern:",-1)),(0,y._)("div",t5,[(0,y._)("input",{type:"text",placeholder:"Use comma-separated numbers",title:"Use comma-separated numbers",class:"form-control",value:(0,y.SU)(b.h).board.border,onChange:n[10]||(n[10]=e=>(0,y.SU)(w.Ar).setBorder(e.target))},null,40,t7)])])])]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.SN,"onUpdate:modelValue":n[11]||(n[11]=e=>(0,y.SU)(b.h).board.SN=e),onChange:(0,y.SU)(S.oO)},{default:(0,y.w5)(()=>n[29]||(n[29]=[(0,y.Uk)("Use S for knight")])),_:1},8,["modelValue","onChange"]),(0,y._)("div",t6,[(0,y._)("div",t9,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.blackWhite,"onUpdate:modelValue":n[12]||(n[12]=e=>(0,y.SU)(b.h).board.blackWhite=e),onChange:(0,y.SU)(k.pz)},{default:(0,y.w5)(()=>n[30]||(n[30]=[(0,y.Uk)("Black/White neutral piece")])),_:1},8,["modelValue","onChange"])]),(0,y.wy)((0,y._)("div",ne,[(0,y._)("div",nt,[n[31]||(n[31]=(0,y._)("label",{class:"col-auto col-form-label"},"Knight offset:",-1)),(0,y._)("div",nn,[(0,y.wy)((0,y._)("input",{type:"range",class:"form-range",min:"0.25",max:"0.75",step:"0.025","onUpdate:modelValue":n[13]||(n[13]=e=>(0,y.SU)(b.h).board.knightOffset=e),onInput:n[14]||(n[14]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.pz)&&(0,y.SU)(k.pz)(...t)})},null,544),[[y.nr,(0,y.SU)(b.h).board.knightOffset,void 0,{number:!0}]])])])],512),[[y.F8,(0,y.SU)(b.h).board.blackWhite]])]),(0,y._)("div",no,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.collapse,"onUpdate:modelValue":n[15]||(n[15]=e=>(0,y.SU)(b.h).board.collapse=e),onChange:(0,y.SU)(w.SI)},{default:(0,y.w5)(()=>n[32]||(n[32]=[(0,y.Uk)("Always collapse boards")])),_:1},8,["modelValue","onChange"])]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.coordinates,"onUpdate:modelValue":n[16]||(n[16]=e=>(0,y.SU)(b.h).board.coordinates=e),onChange:t},{default:(0,y.w5)(()=>n[33]||(n[33]=[(0,y.Uk)("Show coordinate labels")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.fullFEN,"onUpdate:modelValue":n[17]||(n[17]=e=>(0,y.SU)(b.h).board.fullFEN=e),onChange:(0,y.SU)(S.uu)},{default:(0,y.w5)(()=>n[34]||(n[34]=[(0,y.Uk)("Show full FEN")])),_:1},8,["modelValue","onChange"])])])],2))}}),nl={class:"me-3"},ni=["checked","disabled","onChange","id"],nr=["for","textContent"],ns=(0,y.aZ)({__name:"radio",props:{label:{},text:{},value:{},modelValue:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,t){let{emit:n}=t,o="rdo"+(0,y.FN)().uid;return(t,a)=>((0,y.wg)(),(0,y.iD)(y.HY,null,[(0,y._)("span",nl,(0,y.zw)(t.label),1),((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)(t.text,(a,l)=>{var i;return(0,y.wg)(),(0,y.iD)("div",{class:"form-check d-inline-block me-3",key:l},[(0,y._)("input",{class:"form-check-input",type:"radio",checked:(i=l,e.modelValue===e.value[i]),disabled:t.disabled,onChange:t=>{var o;return o=l,void n("update:modelValue",e.value[o])},name:o,id:o+"_"+l},null,40,ni),(0,y._)("label",{class:"form-check-label",for:o+"_"+l,textContent:(0,y.zw)(a)},null,8,nr)])}),128))],64))}});var nc=n("1528");let nu={key:0},nd={class:"mb-3"},nf={class:"btn-gap"},np=["disabled"],nm=["disabled"],nh=["disabled"],ng=["disabled"],ny={key:0,class:"btn-gap"},nb={key:0},nv={key:0},nS={key:1},nw={key:1,class:"ms-2"},n_={key:2,class:"ms-2"},nk=["onClick"],nU={key:0},nx={key:1},nB={class:"btn-gap"},nC={class:"mt-2"},nD={class:"form-check d-inline-block me-3"},nA=["checked"],nP={class:"form-check d-inline-block me-3"},nN=["checked"],nE={class:"form-check d-inline-block"},nI=["checked"],nR={key:0,class:"mt-2"},nO={class:"mt-2"},nW={key:1,class:"mt-2"},nM={class:"btn-gap"},nj=["disabled"],nV=["disabled"],nT=["disabled"],nL={class:"mt-2 gx-3 row"},nz={class:"col flex-grow-1",style:{"flex-basis":"22rem"}},nq={class:"d-flex align-items-center flex-wrap-reverse mb-2"},nF={class:"flex-grow-1 col-form-label",style:{"flex-basis":"max-content"}},nQ={class:"flex-grow-1",style:{"flex-basis":"max-content"}},nY={class:"row gx-3"},nK={class:"col"},nG={class:"mb-2"},nH={class:"d-inline-block"},nZ={class:"d-inline-block"},n$={class:"col flex-grow-1",style:{"flex-basis":"22rem"}},nX={class:"row gx-3 mb-2"},nJ={class:"col"},n0=["disabled"],n1={class:"row gx-3"},n2={class:"col mb-2",style:{"flex-basis":"10.5rem"}},n3={class:"row gx-3"},n8={class:"col"},n4=["disabled"],n5={class:"col mb-2",style:{"flex-basis":"10.5rem"}},n7={class:"row gx-3"},n6={class:"col"},n9=["disabled"],oe={class:"text-end"},ot=(0,y.aZ)({__name:"play",setup(e){let t=()=>b.SB.play.mode==N.jl.retro,n=()=>b.SB.play.moveNumber<0,o=()=>b.SB.play.moveNumber>=b.SB.play.history.length-1;return(e,a)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:6==(0,y.SU)(b.SB).tab})},[(0,y.SU)(b.SB).play.playing?((0,y.wg)(),(0,y.iD)("div",nu,[(0,y._)("div",nd,[(0,y._)("span",nf,[(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[0]||(a[0]=e=>(0,y.SU)(Q).move(-1)),disabled:n()},a[27]||(a[27]=[(0,y._)("i",{class:"fa-solid fa-angles-left fa-fw"},null,-1)]),8,np),(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[1]||(a[1]=e=>(0,y.SU)(Q).moveBy(-1)),disabled:n()},a[28]||(a[28]=[(0,y._)("i",{class:"fa-solid fa-angle-left fa-fw"},null,-1)]),8,nm),(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[2]||(a[2]=e=>(0,y.SU)(Q).moveBy(1)),disabled:o()},a[29]||(a[29]=[(0,y._)("i",{class:"fa-solid fa-angle-right fa-fw"},null,-1)]),8,nh),(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[3]||(a[3]=e=>(0,y.SU)(Q).move((0,y.SU)(b.SB).play.history.length-1)),disabled:o()},a[30]||(a[30]=[(0,y._)("i",{class:"fa-solid fa-angles-right fa-fw"},null,-1)]),8,ng)]),(0,y._)("span",null,[(0,y._)("span",{class:(0,y.C_)(["btn step px-1 py-0 ms-3",{active:-1==(0,y.SU)(b.SB).play.moveNumber}]),onClick:a[4]||(a[4]=e=>(0,y.SU)(Q).goto())},"*",2)]),(0,y.SU)(b.i7).module.chess?((0,y.wg)(),(0,y.iD)("span",ny,[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.SB).play.history,(e,t)=>((0,y.wg)(),(0,y.iD)("span",{key:t},[(0,y.SU)(b.SB).play.history[t-1]&&(0,y.SU)(b.SB).play.history[t-1].color==e.color?((0,y.wg)(),(0,y.iD)("span",nb,[e.color==(0,y.SU)(N.Il).white?((0,y.wg)(),(0,y.iD)("span",nv," ... ")):((0,y.wg)(),(0,y.iD)("span",nS,(0,y.zw)((0,y.SU)(Q).number(e))+"...",1))])):(0,y.kq)("",!0),e.color==(0,y.SU)(N.Il).black&&0==t?((0,y.wg)(),(0,y.iD)("span",nw,(0,y.zw)((0,y.SU)(Q).number(e))+"...",1)):(0,y.kq)("",!0),e.color==(0,y.SU)(N.Il).white?((0,y.wg)(),(0,y.iD)("span",n_,(0,y.zw)((0,y.SU)(Q).number(e))+".",1)):(0,y.kq)("",!0),(0,y._)("span",{class:(0,y.C_)(["btn step px-1 py-0",{active:t==(0,y.SU)(b.SB).play.moveNumber}]),onClick:e=>(0,y.SU)(Q).move(t)},(0,y.zw)((0,y.SU)(Q).format(e)),11,nk)]))),128)),(0,y.SU)(b.SB).play.mode!=(0,y.SU)(N.jl).retro?((0,y.wg)(),(0,y.iD)(y.HY,{key:0},[(0,y.SU)(b.SB).play.over==(0,y.SU)(nc.U).checkmate?((0,y.wg)(),(0,y.iD)("span",nU,"Checkmate.")):(0,y.kq)("",!0),(0,y.SU)(b.SB).play.over==(0,y.SU)(nc.U).draw?((0,y.wg)(),(0,y.iD)("span",nx,"Draw.")):(0,y.kq)("",!0)],64)):(0,y.kq)("",!0)])):(0,y.kq)("",!0)]),(0,y._)("div",nB,[(0,y._)("button",{class:"btn btn-secondary",onClick:a[5]||(a[5]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).exit&&(0,y.SU)(Q).exit(...t)})}," Exit playing "),(0,y.Wm)(e2,{factory:(0,y.SU)(Q).copyGame,class:"btn-primary"},{default:(0,y.w5)(()=>a[31]||(a[31]=[(0,y.Uk)(" Copy game ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(Q).copyPGN,class:"btn-primary"},{default:(0,y.w5)(()=>a[32]||(a[32]=[(0,y.Uk)(" Copy PGN ")])),_:1},8,["factory"]),(0,y.SU)(x.O).canPaste?((0,y.wg)(),(0,y.iD)("button",{key:0,class:"btn btn-secondary",onClick:a[6]||(a[6]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).pasteMoves&&(0,y.SU)(Q).pasteMoves(...t)})},a[33]||(a[33]=[(0,y._)("i",{class:"fa-solid fa-paste"},null,-1),(0,y.Uk)(" Paste moves ")]))):(0,y.kq)("",!0)]),(0,y._)("div",nC,[a[37]||(a[37]=(0,y._)("span",{class:"me-3"},"Symbol:",-1)),(0,y._)("div",nD,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:null==(0,y.SU)(b.h).PLAY.symbol,onChange:a[7]||(a[7]=e=>(0,y.SU)(b.h).PLAY.symbol=null),name:"SYM",id:"sEng"},null,40,nA),a[34]||(a[34]=(0,y._)("label",{class:"form-check-label",for:"sEng"}," English ",-1))]),(0,y._)("div",nP,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"german"==(0,y.SU)(b.h).PLAY.symbol,onChange:a[8]||(a[8]=e=>(0,y.SU)(b.h).PLAY.symbol="german"),name:"SYM",id:"sGer"},null,40,nN),a[35]||(a[35]=(0,y._)("label",{class:"form-check-label",for:"sGer"}," German ",-1))]),(0,y._)("div",nE,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"unicode"==(0,y.SU)(b.h).PLAY.symbol,onChange:a[9]||(a[9]=e=>(0,y.SU)(b.h).PLAY.symbol="unicode"),name:"SYM",id:"sUni"},null,40,nI),a[36]||(a[36]=(0,y._)("label",{class:"form-check-label",for:"sUni"}," Unicode ",-1))])]),t()?(0,y.kq)("",!0):((0,y.wg)(),(0,y.iD)("div",nR,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).PLAY.ep,"onUpdate:modelValue":a[10]||(a[10]=e=>(0,y.SU)(b.h).PLAY.ep=e)},{default:(0,y.w5)(()=>a[38]||(a[38]=[(0,y.Uk)("Add ep to en passant moves")])),_:1},8,["modelValue"])])),(0,y._)("div",nO,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).PLAY.zero,"onUpdate:modelValue":a[11]||(a[11]=e=>(0,y.SU)(b.h).PLAY.zero=e)},{default:(0,y.w5)(()=>a[39]||(a[39]=[(0,y.Uk)("Use number 0 for castling notation")])),_:1},8,["modelValue"])]),t()?((0,y.wg)(),(0,y.iD)("div",nW,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).PLAY.negative,"onUpdate:modelValue":a[12]||(a[12]=e=>(0,y.SU)(b.h).PLAY.negative=e)},{default:(0,y.w5)(()=>a[40]||(a[40]=[(0,y.Uk)("Use negative numbers in retro mode")])),_:1},8,["modelValue"])])):(0,y.kq)("",!0)])):((0,y.wg)(),(0,y.iD)(y.HY,{key:1},[(0,y._)("div",nM,[(0,y._)("button",{class:"btn btn-primary",onClick:a[13]||(a[13]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).start&&(0,y.SU)(Q).start(...t)}),disabled:(0,y.SU)(b.SB).popeye.playing},"Start playing",8,nj),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:a[14]||(a[14]=e=>(0,y.SU)(S.X4).reset(!0)),disabled:(0,y.SU)(b.SB).popeye.playing},a[41]||(a[41]=[(0,y._)("i",{class:"fa-solid fa-flag-checkered"},null,-1),(0,y.Uk)("  Starting position ")]),8,nV),(0,y._)("button",{class:"btn btn-secondary",onClick:a[15]||(a[15]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).pasteGame&&(0,y.SU)(Q).pasteGame(...t)}),disabled:(0,y.SU)(b.SB).popeye.playing},a[42]||(a[42]=[(0,y._)("i",{class:"fa-solid fa-paste"},null,-1),(0,y.Uk)(" Paste PGN ")]),8,nT)]),(0,y._)("div",nL,[(0,y._)("div",nz,[(0,y._)("div",nq,[(0,y._)("div",nF,[(0,y.Wm)(ns,{modelValue:(0,y.SU)(b.SB).play.turn,"onUpdate:modelValue":a[16]||(a[16]=e=>(0,y.SU)(b.SB).play.turn=e),label:"Turn:",text:["White","Black"],value:["w","b"],disabled:(0,y.SU)(b.SB).play.mode==(0,y.SU)(N.jl).pass},null,8,["modelValue","disabled"])]),(0,y._)("div",nQ,[(0,y._)("div",nY,[a[44]||(a[44]=(0,y._)("label",{class:"col-auto col-form-label"},"Mode:",-1)),(0,y._)("div",nK,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":a[17]||(a[17]=e=>(0,y.SU)(b.SB).play.mode=e),onChange:a[18]||(a[18]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.wY)&&(0,y.SU)(k.wY)(...t)})},a[43]||(a[43]=[(0,y._)("option",{value:"normal"},"Normal",-1),(0,y._)("option",{value:"pass"},"Allow passing move",-1),(0,y._)("option",{value:"retro"},"Retro",-1)]),544),[[y.bM,(0,y.SU)(b.SB).play.mode]])])])])]),(0,y._)("div",nG,[a[49]||(a[49]=(0,y.Uk)(" Castling: ")),(0,y._)("span",nH,[(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.K,"onUpdate:modelValue":a[19]||(a[19]=e=>(0,y.SU)(b.SB).play.castle.K=e),disabled:t()},{default:(0,y.w5)(()=>a[45]||(a[45]=[(0,y.Uk)("WK")])),_:1},8,["modelValue","disabled"]),(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.Q,"onUpdate:modelValue":a[20]||(a[20]=e=>(0,y.SU)(b.SB).play.castle.Q=e),disabled:t()},{default:(0,y.w5)(()=>a[46]||(a[46]=[(0,y.Uk)("WQ")])),_:1},8,["modelValue","disabled"])]),(0,y._)("span",nZ,[(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.k,"onUpdate:modelValue":a[21]||(a[21]=e=>(0,y.SU)(b.SB).play.castle.k=e),disabled:t()},{default:(0,y.w5)(()=>a[47]||(a[47]=[(0,y.Uk)("BK")])),_:1},8,["modelValue","disabled"]),(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.q,"onUpdate:modelValue":a[22]||(a[22]=e=>(0,y.SU)(b.SB).play.castle.q=e),disabled:t()},{default:(0,y.w5)(()=>a[48]||(a[48]=[(0,y.Uk)("BQ")])),_:1},8,["modelValue","disabled"])])])]),(0,y._)("div",n$,[(0,y._)("div",nX,[a[50]||(a[50]=(0,y._)("label",{class:"col-auto col-form-label"},"En passant square: ",-1)),(0,y._)("div",nJ,[(0,y.wy)((0,y._)("input",{type:"text",class:"form-control",maxlength:"2","onUpdate:modelValue":a[23]||(a[23]=e=>(0,y.SU)(b.SB).play.enPassant=e),disabled:t()},null,8,n0),[[y.nr,(0,y.SU)(b.SB).play.enPassant]])])]),(0,y._)("div",n1,[(0,y._)("div",n2,[(0,y._)("div",n3,[a[51]||(a[51]=(0,y._)("label",{class:"col-auto col-form-label"},"Half moves: ",-1)),(0,y._)("div",n8,[(0,y.wy)((0,y._)("input",{type:"number",class:"form-control",min:"0","onUpdate:modelValue":a[24]||(a[24]=e=>(0,y.SU)(b.SB).play.halfMove=e),disabled:t()},null,8,n4),[[y.nr,(0,y.SU)(b.SB).play.halfMove,void 0,{number:!0}]])])])]),(0,y._)("div",n5,[(0,y._)("div",n7,[a[52]||(a[52]=(0,y._)("label",{class:"col-auto col-form-label"},"Full moves: ",-1)),(0,y._)("div",n6,[(0,y.wy)((0,y._)("input",{type:"number",class:"form-control",min:"1","onUpdate:modelValue":a[25]||(a[25]=e=>(0,y.SU)(b.SB).play.fullMove=e),disabled:t()},null,8,n9),[[y.nr,(0,y.SU)(b.SB).play.fullMove,void 0,{number:!0}]])])])])]),(0,y._)("div",oe,[(0,y._)("button",{class:"btn btn-secondary",onClick:a[26]||(a[26]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(S.Wc)&&(0,y.SU)(S.Wc)(...t)})},"Reset settings")])])])],64))],2))}}),on=(0,y.XI)(""),oo={async fetch(e){try{gtag("event","fen_pdb_get"),e.disabled=!0,e.value="Fetching...";let t=oa+encodeURIComponent("PROBID='".concat(on.value,"'")),n=await fetch("https://corsproxy.io/?"+t),o=await n.text();(0,S.dd)(o.match(/<b>FEN:<\/b> (.+)/)[1],!0)}catch{(0,B.Z)("An error has occurred. Please try again later.")}finally{e.disabled=!1,e.value="Get FEN"}},search(){gtag("event","fen_pdb_search"),window.open(oa+encodeURIComponent(or()))},copyQuery:()=>(gtag("event","fen_pdb_copy"),or()),copyEdit:()=>(gtag("event","fen_pdb_copyEdit"),function(){let e={},{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a;let l=S.xG[o*t+n].value,i=l.match(/^(-?)(?:\*(\d))?([kqbsnrpxc])$/i);if(i){if("x"==i[3])a="sY";else{let e=ol[A.V5.indexOf(i[3].toLowerCase().replace("s","n"))],t=i[1]?"n":os(l);a=t+e+oi[Number(i[2]||0)]}e[a]=(e[a]||"")+(0,P.MA)(o,n)}}let o=[];for(let t in e)o.push(t+e[t]);return o.join(" ")}())},oa="https://pdb.dieschwalbe.de/search.jsp?expression=",ol=["K","D","L","S","T","B","I"],oi=["","R","U","L"];function or(){let e=[],{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a=S.xG[o*t+n].value;if(!a.match(/^[kqbsnrp]$/i))continue;let l=ol[A.V5.indexOf(a.toLowerCase().replace("s","n"))],i=os(a);e.push(i+l+(0,P.MA)(o,n))}let o="POSITION='".concat(e.join(" "),"'");return b.h.DB.exact&&(o+=" AND APIECES=".concat(e.length)),o}function os(e){return e==e.toLowerCase()?"s":"w"}let oc={copyFEN(){gtag("event","fen_yacpdb_copyFEN");let{w:e,h:t}=b.h.board,n=S.xG.map(e=>(0,P.sV)(e.value));return(0,P.N0)(n,e,t)},async fetch(e){try{gtag("event","fen_yacpdb_get"),e.disabled=!0,e.value="Fetching...";let n="https://yacpdb.org/gateway/ql?q="+encodeURIComponent("Id('".concat(on.value,"')")),o=await fetch("https://corsproxy.io/?"+n),a=await o.json();if(a.success){let{w:e,h:n}=b.h.board,o=a.result.entries[0].algebraic,l=(0,P.Q5)(e*n);function t(t){let o=t.charCodeAt(1)-E.oh,a=Number(t[2]);l[(n-a)*e+o]=t[0]}for(let e of o.black)t(e.toLowerCase());for(let e of o.white)t(e);(0,S.dd)((0,P.N0)(l,e,n))}}catch{(0,B.Z)("An error has occurred. Please try again later.")}finally{e.disabled=!1,e.value="Get FEN"}},search(){gtag("event","fen_yacpdb_search"),window.open("https://yacpdb.org/#q/"+encodeURIComponent(ou())+"/1")},copyQuery:()=>(gtag("event","fen_yacpdb_copy"),ou()),copyEdit:()=>(gtag("event","fen_yacpdb_copyEdit"),function(){let e={w:[],b:[],n:[]},{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a=S.xG[o*t+n].value,l=a.match(/^(-?)([kqbsnrp])$/i);if(!l)continue;let i=(0,P.hv)(l[2],!1,!0).toUpperCase();e[l[1]?"n":od(a)].push(i+(0,P.MA)(o,n))}let o=[];return e.w.length&&o.push("    white: [".concat(e.w.join(", "),"]")),e.b.length&&o.push("    black: [".concat(e.b.join(", "),"]")),e.n.length&&o.push("    neutral: [".concat(e.n.join(", "),"]")),o.join("\n")}())};function ou(){let e=[],{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a=(0,P.sV)(S.xG[o*t+n].value).replace("(","").replace(")","");if(!!a)!a.match(/\d/)&&(a=a.startsWith("!")?"n"+a.toUpperCase():od(a)+a.toUpperCase(),e.push(a+(0,P.MA)(o,n)))}let o='MatrixExtended("'.concat(e.join(" "),'", false, false, "None")');return b.h.DB.exact&&(o+=" AND PCount(*) = "+e.length),o}function od(e){return e==e.toLowerCase()?"b":"w"}let of={class:"row gx-3 mb-2 align-items-center"},op={class:"col"},om={class:"form-check d-inline-block me-3"},oh=["checked"],og={class:"form-check d-inline-block"},oy=["checked"],ob={class:"mb-3 btn-gap"},ov={class:"row gx-3 mb-3"},oS={class:"col"},ow=["readonly"],o_={class:"col-auto"},ok=["disabled"],oU={class:"row align-items-center flex-wrap"},ox={class:"col-auto mb-2"},oB={class:"col text-end btn-gap",style:{"flex-basis":"24rem"}},oC=(0,y.aZ)({__name:"database",setup(e){let t=(0,y.Fl)(()=>"PDB"==b.h.DB.use?oo:oc);return(e,n)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:2==(0,y.SU)(b.SB).tab})},[(0,y._)("div",of,[n[8]||(n[8]=(0,y._)("label",{class:"col-auto col-form-label"},"Use database: ",-1)),(0,y._)("div",op,[(0,y._)("div",om,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"PDB"==(0,y.SU)(b.h).DB.use,onChange:n[0]||(n[0]=e=>(0,y.SU)(b.h).DB.use="PDB"),name:"DB",id:"rPDB"},null,40,oh),n[6]||(n[6]=(0,y._)("label",{class:"form-check-label",for:"rPDB"}," PDB ",-1))]),(0,y._)("div",og,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"YACPDB"==(0,y.SU)(b.h).DB.use,onChange:n[1]||(n[1]=e=>(0,y.SU)(b.h).DB.use="YACPDB"),name:"DB",id:"rYACPDB"},null,40,oy),n[7]||(n[7]=(0,y._)("label",{class:"form-check-label",for:"rYACPDB"}," YACPDB ",-1))])])]),(0,y._)("div",ob,[(0,y.Wm)(e2,{factory:t.value.copyEdit,class:"btn-primary"},{default:(0,y.w5)(()=>n[9]||(n[9]=[(0,y.Uk)(" Copy board edit syntax ")])),_:1},8,["factory"]),"YACPDB"==(0,y.SU)(b.h).DB.use?((0,y.wg)(),(0,y.j4)(e2,{key:0,factory:(0,y.SU)(oc).copyFEN,class:"btn-secondary"},{default:(0,y.w5)(()=>n[10]||(n[10]=[(0,y.Uk)(" Copy YACPDB FEN ")])),_:1},8,["factory"])):(0,y.kq)("",!0)]),(0,y._)("div",ov,[n[11]||(n[11]=(0,y._)("label",{class:"col-auto col-form-label"},"Problem Id:",-1)),(0,y._)("div",oS,[(0,y.wy)((0,y._)("input",{type:"text",class:"form-control","onUpdate:modelValue":n[2]||(n[2]=e=>(0,y.dq)(on)?on.value=e:null),readonly:(0,y.SU)(b.I3)()||void 0},null,8,ow),[[y.nr,(0,y.SU)(on)]])]),(0,y._)("div",o_,[(0,y._)("input",{type:"button",class:"btn btn-primary",value:"Get FEN",onClick:n[3]||(n[3]=e=>t.value.fetch(e.target)),disabled:(0,y.SU)(b.I3)()},null,8,ok)])]),(0,y._)("div",oU,[(0,y._)("div",ox,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).DB.exact,"onUpdate:modelValue":n[4]||(n[4]=e=>(0,y.SU)(b.h).DB.exact=e)},{default:(0,y.w5)(()=>n[12]||(n[12]=[(0,y.Uk)("Search exactly these pieces")])),_:1},8,["modelValue"])]),(0,y._)("div",oB,[(0,y.Wm)(e2,{factory:t.value.copyQuery,class:"btn-secondary"},{default:(0,y.w5)(()=>n[13]||(n[13]=[(0,y.Uk)(" Copy search query ")])),_:1},8,["factory"]),(0,y._)("button",{class:"btn btn-primary nowrap",onClick:n[5]||(n[5]=function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];return t.value.search&&t.value.search(...n)})},n[14]||(n[14]=[(0,y._)("i",{class:"fa-solid fa-magnifying-glass"},null,-1),(0,y.Uk)(" Search position ")]))])])],2))}});var oD=n("4119"),oA=n("7737");function oP(){return n.e("946").then(n.bind(n,4587))}function oN(e){try{let t=JSON.parse(e);if("number"!=typeof t.version||!Array.isArray(t.project))throw Error();return t.project}catch{return null}}function oE(e){let t=e.match(/[kqbnrp1-8]{1,8}(?:\/[kqbnrp1-8]{1,8}){7}(?: [wb] (?:-|[kq]{1,4}) (?:-|[a-h][1-8]) \d+ \d+)?/gi);if(!t||!t.length)return null;let n=[];for(let[e,o]of t.entries())n.push((0,oA.E)({fen:o},e));return n}let oI={async reset(){b.h.project.length&&await (0,B.i)("Are you sure you want to clear all entries?")&&b.h.project.length&&(b.h.project=[])},async add(e){if(e){let e=await oP(),t=b.SB.popeye.input,n=(0,G.U_)(t);t=e.normalizeInput(t,n),b.h.project.push((0,oA.E)({fen:n.fen,popeye:t}))}else b.h.project.push((0,oA.E)({fen:S.RI.value}))},remove(e){b.h.project.splice(e,1)},async open(e){let t=await function(e){return new Promise((t,n)=>{let o=new FileReader;o.onload=e=>t(e.target.result),o.onerror=e=>n(e),o.readAsText(e)})}(e);for(let e of[oN,(await oP()).parseOliveFormat,oE]){let n=e(t);if(n){b.h.project=n;return}}(0,B.Z)("Unable to parse the file. The format cannot be recognized.")},link:(0,y.XI)("")};(0,y.m0)(()=>{let e=new Blob([JSON.stringify({version:1,project:b.h.project})],{type:"application/fen.tool.project+json"}),t=URL.createObjectURL(e);oI.link.value&&URL.revokeObjectURL(oI.link.value),oI.link.value=t});var oR=n("6033");let oO={class:"btn-gap"},oW={class:"btn-group"},oM={class:"dropdown-menu"},oj=["href"],oV={key:0,class:"p-1"},oT=["fen","onClick"],oL=["onClick"],oz=(0,y.aZ)({__name:"project",setup(e){let t=(0,y.XI)(!1);function n(e){var t;return(null===(t=e.popeye)||void 0===t?void 0:t.includes("Forsyth"))?(0,oR.Vl)(e.fen):e.fen}return(e,o)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:8==(0,y.SU)(b.SB).tab})},[(0,y._)("input",{type:"file",class:"d-none",id:"project_file",onChange:o[0]||(o[0]=e=>(function(e){var t;let n=null===(t=e.files)||void 0===t?void 0:t[0];n&&(e.value="",oI.open(n))})(e.target)),accept:".fentool,.olv"},null,32),(0,y._)("div",oO,[(0,y._)("div",oW,[(0,y._)("button",{type:"button",class:"btn btn-primary pe-2",onClick:o[1]||(o[1]=e=>(0,y.SU)(oI).add())},o[9]||(o[9]=[(0,y._)("i",{class:"fa-solid fa-plus"},null,-1),(0,y.Uk)(" Add ")])),o[10]||(o[10]=(0,y._)("button",{type:"button",class:"ps-2 btn btn-primary dropdown-toggle dropdown-toggle-split","data-bs-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},[(0,y._)("span",{class:"visually-hidden"},"Toggle Dropdown")],-1)),(0,y._)("div",oM,[(0,y._)("div",{class:"dropdown-item",onClick:o[2]||(o[2]=e=>(0,y.SU)(oI).add(!0))},"As a Popeye problem")])]),o[13]||(o[13]=(0,y._)("label",{for:"project_file",class:"btn btn-secondary",title:"Open a project file"},[(0,y._)("i",{class:"fa-regular fa-folder-open"}),(0,y.Uk)(" Open ")],-1)),(0,y._)("a",{href:(0,y.SU)(b.i7).envReady?(0,y.SU)(oI).link.value:void 0,download:"project.fentool",class:"btn btn-secondary",title:"Save project file"},o[11]||(o[11]=[(0,y._)("i",{class:"fa-solid fa-download"},null,-1),(0,y.Uk)(" Save ")]),8,oj),(0,y._)("button",{class:"btn btn-secondary",onClick:o[3]||(o[3]=e=>(0,y.SU)(oI).reset()),title:"Clear all positions in the project"},o[12]||(o[12]=[(0,y._)("i",{class:"fa-regular fa-file"},null,-1),(0,y.Uk)(" Clear ")]))]),(0,y.SU)(b.i7).envReady?((0,y.wg)(),(0,y.iD)("div",{key:0,onMousedown:o[8]||(o[8]=(0,y.iM)(()=>{},["stop"])),class:"mt-3"},[(0,y.SU)(b.h).project.length?(0,y.kq)("",!0):((0,y.wg)(),(0,y.iD)("div",oV,o[14]||(o[14]=[(0,y._)("div",{class:"d-flex flex-wrap"},[(0,y._)("div",{style:{"flex-basis":"max-content"}}," No positions in the project yet.\xa0 "),(0,y._)("div",{style:{"flex-basis":"max-content"}},' Click "Add" to add position. ')],-1)]))),(0,y.Wm)((0,y.SU)(oD.jP),{axis:"xy",list:(0,y.SU)(b.h).project,"onUpdate:list":o[5]||(o[5]=e=>(0,y.SU)(b.h).project=e),distance:(0,y.SU)(x.O).isTouch?0:10,class:(0,y.C_)(["thumbnail-container",{sorting:t.value}]),onSortStart:o[6]||(o[6]=e=>t.value=!0),onSortEnd:o[7]||(o[7]=e=>t.value=!1),"press-delay":(0,y.SU)(x.O).isTouch?200:0,"helper-class":"thumbnail-ghost"},{default:(0,y.w5)(()=>[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.h).project,(e,t)=>((0,y.wg)(),(0,y.j4)((0,y.SU)(oD.cU),{index:t,key:e.id},{default:(0,y.w5)(()=>[(0,y._)("div",{class:(0,y.C_)(["thumbnail-wrapper",{touch:(0,y.SU)(x.O).isTouch}]),onDragstart:o[4]||(o[4]=(0,y.iM)(()=>{},["prevent"]))},[(0,y._)("img",{fen:n(e),onClick:t=>{var o;return o=e,void(!(0,b.I3)()&&((0,S.dd)(n(o)),o.popeye&&(b.SB.tab=7,b.SB.compute="py",b.SB.popeye.input=o.popeye),x.O.isTouch&&document.body.scrollTo({behavior:"smooth",top:0})))},class:(0,y.C_)(["thumbnail",{disabled:(0,y.SU)(b.I3)()}])},null,10,oT),(0,y._)("i",{class:"fa-solid fa-circle-xmark text-danger",onClick:e=>(0,y.SU)(oI).remove(t)},null,8,oL)],34)]),_:2},1032,["index"]))),128))]),_:1},8,["list","distance","class","press-delay"])],32)):(0,y.kq)("",!0)],2))}}),oq={async copy(){if(b.h.board.w!=E.Dm||b.h.board.h!=E.Dm)throw(0,B.Z)("只支援標準棋盤"),Error();return gtag("event","fen_bbs_copy"),(await n.e("936").then(n.bind(n,4816))).generate((0,S.xL)(),eX(),on.value,b.h.BBS,b.h.board,x.O.isTouch)}},oF={class:"row gx-3"},oQ={class:"col flex-grow-1 mb-3",style:{"flex-basis":"max-content"}},oY={class:"col flex-grow-1 text-end"},oK=(0,y.aZ)({__name:"bbs",setup:e=>(e,t)=>(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).isTaiwan?((0,y.wg)(),(0,y.iD)("section",{key:0,class:(0,y.C_)({show:4==(0,y.SU)(b.SB).tab})},[(0,y._)("div",oF,[(0,y._)("div",oQ,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.Id,"onUpdate:modelValue":t[0]||(t[0]=e=>(0,y.SU)(b.h).BBS.Id=e)},{default:(0,y.w5)(()=>t[5]||(t[5]=[(0,y.Uk)("Include database Id")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.coordinates,"onUpdate:modelValue":t[1]||(t[1]=e=>(0,y.SU)(b.h).BBS.coordinates=e)},{default:(0,y.w5)(()=>t[6]||(t[6]=[(0,y.Uk)("Include Coordinates")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.notes,"onUpdate:modelValue":t[2]||(t[2]=e=>(0,y.SU)(b.h).BBS.notes=e)},{default:(0,y.w5)(()=>t[7]||(t[7]=[(0,y.Uk)("Include Notes")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.uncoloredNotes,"onUpdate:modelValue":t[3]||(t[3]=e=>(0,y.SU)(b.h).BBS.uncoloredNotes=e)},{default:(0,y.w5)(()=>t[8]||(t[8]=[(0,y.Uk)("Uncolored Note")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.redBlue,"onUpdate:modelValue":t[4]||(t[4]=e=>(0,y.SU)(b.h).BBS.redBlue=e)},{default:(0,y.w5)(()=>t[9]||(t[9]=[(0,y.Uk)("Use Red and Blue in BBS Code")])),_:1},8,["modelValue"])]),(0,y._)("div",oY,[(0,y.Wm)(e2,{factory:(0,y.SU)(oq).copy,class:"btn-primary"},{default:(0,y.w5)(()=>t[10]||(t[10]=[(0,y.Uk)("Copy BBS Code")])),_:1},8,["factory"])])])],2)):(0,y.kq)("",!0)}),oG=["disabled"],oH={class:"mb-3 row gx-2"},oZ={class:"col"},o$={class:"w-passive-100"},oX=["disabled"],oJ={class:"col-auto text-end"},o0={class:"btn-gap"},o1=["disabled"],o2={key:1},o3=["title"],o8={key:0},o4={class:"mb-3 row"},o5={class:"col"},o7={class:"btn-gap"},o6={class:"col-auto text-end"},o9={key:1,class:"mb-3 row"},ae={class:"col"},at={class:"btn-gap"},an=["disabled"],ao=["disabled"],aa=["disabled"],al=["disabled"],ai={class:"col-auto text-end"},ar=["innerHTML"],as=(0,y.aZ)({__name:"popeye",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("div",null,[(0,y.wy)((0,y._)("div",null,[(0,y.wy)((0,y._)("textarea",{class:"form-control mb-2",rows:"5","onUpdate:modelValue":t[0]||(t[0]=e=>(0,y.SU)(b.SB).popeye.input=e),disabled:(0,y.SU)(b.SB).popeye.running,placeholder:"For example:\n=============\nStipulation #2\nOption Variation"},null,8,oG),[[y.nr,(0,y.SU)(b.SB).popeye.input]]),(0,y._)("div",oH,[(0,y._)("div",oZ,[(0,y._)("div",o$,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[1]||(t[1]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).editMap&&(0,y.SU)(G.wD).editMap(...t)}),disabled:(0,y.SU)(b.SB).popeye.running,style:{overflow:"hidden","white-space":"nowrap","text-overflow":"ellipsis","max-width":"100%"}},t[15]||(t[15]=[(0,y._)("i",{class:"fa-solid fa-pen-to-square"},null,-1),(0,y.Uk)(" Fairy piece mapping ")]),8,oX)])]),(0,y._)("div",oJ,[(0,y._)("div",o0,[!(0,y.SU)(b.SB).popeye.running&&(0,y.SU)(b.SB).popeye.output?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-secondary",onClick:t[2]||(t[2]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).play&&(0,y.SU)(G.wD).play(...t)}),disabled:(0,y.SU)(b.SB).popeye.error}," Play solution ",8,o1)):(0,y.kq)("",!0),(0,y.SU)(b.SB).popeye.running?((0,y.wg)(),(0,y.iD)("button",{key:2,type:"button",class:"btn btn-secondary",onClick:t[4]||(t[4]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).cancel&&(0,y.SU)(G.wD).cancel(...t)})},t[18]||(t[18]=[(0,y._)("i",{class:"fa-solid fa-stop"},null,-1),(0,y.Uk)(" Cancel ")]))):((0,y.wg)(),(0,y.iD)("span",o2,[(0,y.SU)(b.SB).play.playing||!(0,y.SU)(b.SB).popeye.input.trim()?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary disabled",title:(0,y.SU)(b.SB).play.playing?"Need to exit play mode first":"Input instructions first"},t[16]||(t[16]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Run ")]),8,o3)):((0,y.wg)(),(0,y.iD)("button",{key:1,type:"button",class:"btn btn-primary",onClick:t[3]||(t[3]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).run&&(0,y.SU)(G.wD).run(...t)}),title:"Run Popeye on your device!"},t[17]||(t[17]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Run ")])))]))])])])],512),[[y.F8,!(0,y.SU)(b.SB).popeye.playing&&!(0,y.SU)(b.SB).popeye.editMap]]),!(0,y.SU)(b.SB).popeye.playing&&(0,y.SU)(b.SB).popeye.editMap?((0,y.wg)(),(0,y.iD)("div",o8,[(0,y.wy)((0,y._)("textarea",{class:"form-control mb-2",rows:"5","onUpdate:modelValue":t[5]||(t[5]=e=>(0,y.SU)(b.SB).popeye.mapping=e),placeholder:"Use the format like *2Q=G for each line."},null,512),[[y.nr,(0,y.SU)(b.SB).popeye.mapping]]),(0,y._)("div",o4,[(0,y._)("div",o5,[(0,y._)("div",o7,[(0,y._)("button",{type:"button",class:"btn btn-primary",onClick:t[6]||(t[6]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).saveMap&&(0,y.SU)(G.wD).saveMap(...t)})}," Save setting "),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[7]||(t[7]=e=>(0,y.SU)(b.SB).popeye.editMap=!1)}," Cancel ")])]),(0,y._)("div",o6,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[8]||(t[8]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).resetMap&&(0,y.SU)(G.wD).resetMap(...t)})}," Reset ")])])])):(0,y.kq)("",!0),(0,y.SU)(b.SB).popeye.playing?((0,y.wg)(),(0,y.iD)("div",o9,[(0,y._)("div",ae,[(0,y._)("div",at,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[9]||(t[9]=e=>(0,y.SU)(G.wD).move(0)),disabled:(0,y.SU)(b.SB).popeye.index<=0},t[19]||(t[19]=[(0,y._)("i",{class:"fa-solid fa-angles-left fa-fw"},null,-1)]),8,an),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[10]||(t[10]=e=>(0,y.SU)(G.wD).moveBy(-1)),disabled:(0,y.SU)(b.SB).popeye.index<=0},t[20]||(t[20]=[(0,y._)("i",{class:"fa-solid fa-angle-left fa-fw"},null,-1)]),8,ao),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[11]||(t[11]=e=>(0,y.SU)(G.wD).moveBy(1)),disabled:(0,y.SU)(b.SB).popeye.index>=(0,y.SU)(b.SB).popeye.steps.length-1},t[21]||(t[21]=[(0,y._)("i",{class:"fa-solid fa-angle-right fa-fw"},null,-1)]),8,aa),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[12]||(t[12]=e=>(0,y.SU)(G.wD).move((0,y.SU)(b.SB).popeye.steps.length-1)),disabled:(0,y.SU)(b.SB).popeye.index>=(0,y.SU)(b.SB).popeye.steps.length-1},t[22]||(t[22]=[(0,y._)("i",{class:"fa-solid fa-angles-right fa-fw"},null,-1)]),8,al)])]),(0,y._)("div",ai,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[13]||(t[13]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).exit&&(0,y.SU)(G.wD).exit(...t)})}," Exit playing ")])])):(0,y.kq)("",!0),(0,y.wy)((0,y._)("div",{id:"Output",class:"form-control",innerHTML:(0,y.SU)(b.SB).popeye.output,onClick:t[14]||(t[14]=e=>(0,y.SU)(G.wD).step(e))},null,8,ar),[[y.F8,(0,y.SU)(b.SB).popeye.output&&7==(0,y.SU)(b.SB).tab]]),t[23]||(t[23]=(0,y._)("div",{class:"mt-2"},[(0,y._)("a",{href:"https://github.com/thomas-maeder/popeye/blob/master/py-engl.txt",target:"_blank"}," Popeye documentation ")],-1))],512)),[[y.F8,"py"==(0,y.SU)(b.SB).compute]])}),ac={key:0},au={key:1,type:"button",class:"btn btn-primary",disabled:""},ad={key:1},af={key:2},ap={key:0,class:"row align-items-baseline"},am={class:"col",style:{"flex-basis":"12rem"}},ah={class:"row gx-3 mb-2"},ag={class:"col"},ay={class:"col",style:{"flex-basis":"11rem"}},ab={class:"row gx-3 mb-2"},av={class:"col"},aS={class:"col mb-2",style:{"flex-basis":"10rem"}},aw={class:"btn-gap"},a_={key:1,disabled:"",class:"btn btn-primary"},ak={class:"mt-3"},aU={key:0},ax={key:0},aB={key:1},aC={key:2},aD={key:3},aA={class:"table"},aP={class:"align-top"},aN={class:"nowrap"},aE={class:"mt-2"},aI=["onClick"],aR=["textContent"],aO=(0,y.aZ)({__name:"stockfish",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("div",null,[(0,y.SU)(b.i7).stockfish.status<(0,y.SU)(N.KO).needReload?((0,y.wg)(),(0,y.iD)("div",ac,[t[8]||(t[8]=(0,y._)("div",{class:"mb-3"},"To use this feature, we need to download Stockfish modules first.",-1)),(0,y.SU)(b.i7).stockfish.status==(0,y.SU)(N.KO).notDownloaded?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary",onClick:t[0]||(t[0]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(ek).download&&(0,y.SU)(ek).download(...t)})},t[6]||(t[6]=[(0,y._)("i",{class:"fa-solid fa-download"},null,-1),(0,y.Uk)(" Download now! (39.5MB) ")]))):((0,y.wg)(),(0,y.iD)("button",au,t[7]||(t[7]=[(0,y._)("i",{class:"fa-solid fa-download"},null,-1),(0,y.Uk)(" Downloading... "),(0,y._)("i",{class:"fa-solid fa-spinner fa-spin"},null,-1)])))])):(0,y.SU)(b.i7).stockfish.status==(0,y.SU)(N.KO).needReload?((0,y.wg)(),(0,y.iD)("div",ad,t[9]||(t[9]=[(0,y._)("div",{class:"mb-3"},"Download complete. Please restart FEN Tool.",-1),(0,y._)("button",{type:"button",class:"btn btn-primary",onclick:"location.reload()"},[(0,y._)("i",{class:"fa-solid fa-rotate-right"}),(0,y.Uk)(" Restart FEN Tool now ")],-1)]))):((0,y.wg)(),(0,y.iD)("div",af,[(0,y.SU)(b.i7).stockfish.running<(0,y.SU)(N.MI).running?((0,y.wg)(),(0,y.iD)("div",ap,[(0,y._)("div",am,[(0,y._)("div",ah,[t[10]||(t[10]=(0,y._)("label",{class:"col-auto col-form-label"},"Depth:",-1)),(0,y._)("div",ag,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(b.h).Stockfish.depth,"onUpdate:modelValue":t[1]||(t[1]=e=>(0,y.SU)(b.h).Stockfish.depth=e),min:1,title:"Search depth"},null,8,["modelValue"])])])]),(0,y._)("div",ay,[(0,y._)("div",ab,[t[11]||(t[11]=(0,y._)("label",{class:"col-auto col-form-label"},"Lines:",-1)),(0,y._)("div",av,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(b.h).Stockfish.lines,"onUpdate:modelValue":t[2]||(t[2]=e=>(0,y.SU)(b.h).Stockfish.lines=e),min:1,title:"Number of lines to search"},null,8,["modelValue"])])])]),(0,y._)("div",aS,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).Stockfish.study,"onUpdate:modelValue":t[3]||(t[3]=e=>(0,y.SU)(b.h).Stockfish.study=e),disabled:(0,y.SU)(b.h).Stockfish.lines<=1},{default:(0,y.w5)(()=>t[12]||(t[12]=[(0,y.Uk)("Study mode")])),_:1},8,["modelValue","disabled"])])])):(0,y.kq)("",!0),(0,y._)("div",aw,[(0,y.SU)(b.i7).stockfish.running?(0,y.SU)(b.i7).stockfish.running==(0,y.SU)(N.MI).starting?((0,y.wg)(),(0,y.iD)("button",a_,t[14]||(t[14]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Initializing... ")]))):((0,y.wg)(),(0,y.iD)("button",{key:2,type:"button",class:"btn btn-secondary",onClick:t[5]||(t[5]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(ek).stop&&(0,y.SU)(ek).stop(...t)})},t[15]||(t[15]=[(0,y._)("i",{class:"fa-solid fa-stop"},null,-1),(0,y.Uk)(" Stop ")]))):((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary",onClick:t[4]||(t[4]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(ek).analyze&&(0,y.SU)(ek).analyze(...t)})},t[13]||(t[13]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Analyze with Stockfish 16 ")])))]),(0,y._)("div",ak,[(0,y.SU)(b.SB).stockfish.depth?((0,y.wg)(),(0,y.iD)("div",aU,[(0,y._)("span",null,"Depth: "+(0,y.zw)((0,y.SU)(b.SB).stockfish.depth),1),(0,y.SU)(b.i7).stockfish.running==(0,y.SU)(N.MI).running?((0,y.wg)(),(0,y.iD)("span",ax,[(0,y.Uk)(" /"+(0,y.zw)((0,y.SU)(b.h).Stockfish.depth)+" ",1),t[16]||(t[16]=(0,y._)("i",{class:"fa-solid fa-spinner fa-spin ms-2"},null,-1))])):(0,y.kq)("",!0)])):(0,y.kq)("",!0),(0,y.SU)(b.SB).stockfish.mate?((0,y.wg)(),(0,y.iD)("div",aB,(0,y.zw)(((0,y.SU)(b.SB).stockfish.mate||"")[0])+" has mate in "+(0,y.zw)(((0,y.SU)(b.SB).stockfish.mate||"")[1])+". ",1)):(0,y.SU)(b.SB).stockfish.score?((0,y.wg)(),(0,y.iD)("div",aC," Score: "+(0,y.zw)((0,y.SU)(b.SB).stockfish.score),1)):(0,y.kq)("",!0),(0,y.SU)(b.SB).stockfish.header.length?((0,y.wg)(),(0,y.iD)("div",aD,[t[17]||(t[17]=(0,y.Uk)(" Solution is unique against best defense up to:")),t[18]||(t[18]=(0,y._)("br",null,null,-1)),(0,y.Uk)(" "+(0,y.zw)((0,y.SU)(ek).format((0,y.SU)(b.SB).stockfish.header)),1),t[19]||(t[19]=(0,y._)("br",null,null,-1)),t[20]||(t[20]=(0,y.Uk)(" And then: "))])):(0,y.kq)("",!0),(0,y._)("table",aA,[(0,y._)("tbody",null,[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.SB).stockfish.lines.filter(e=>e&&e.moves.length),e=>((0,y.wg)(),(0,y.iD)("tr",{key:e.pgn},[(0,y._)("td",aP,[(0,y._)("div",aN,(0,y.zw)(e.score),1),(0,y._)("div",aE,[(0,y._)("button",{type:"button",class:"btn btn-primary px-2 py-0 m-0",title:"Play this line",onClick:t=>(0,y.SU)(ek).play(e)},t[21]||(t[21]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1)]),8,aI)])]),(0,y._)("td",{class:"align-top w-100",textContent:(0,y.zw)((0,y.SU)(ek).format(e.moves))},null,8,aR)]))),128))])])])]))],512)),[[y.F8,"sf"==(0,y.SU)(b.SB).compute]])}),aW={class:"mb-3"},aM=["innerHTML"],aj={key:1,class:"mt-3 table"},aV={class:"align-top py-1"},aT=["onClick"],aL={key:0,class:"fa-solid fa-spinner fa-spin ms-2"},az=(0,y.aZ)({__name:"syzygy",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("div",null,[(0,y._)("div",aW,[(0,y.SU)(b.i7).syzygy.running?((0,y.wg)(),(0,y.iD)("button",{key:1,class:"btn btn-secondary me-3",onClick:t[1]||(t[1]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(eI).stop&&(0,y.SU)(eI).stop(...t)})},t[3]||(t[3]=[(0,y._)("i",{class:"fa-solid fa-stop"},null,-1),(0,y.Uk)(" Stop ")]))):((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary",onClick:t[0]||(t[0]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(eI).run&&(0,y.SU)(eI).run(...t)})},t[2]||(t[2]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Analyze with Syzygy tablebase ")])))]),(0,y.SU)(b.SB).syzygy.header?((0,y.wg)(),(0,y.iD)("div",{key:0,innerHTML:(0,y.SU)(b.SB).syzygy.header},null,8,aM)):(0,y.kq)("",!0),(0,y.SU)(b.SB).syzygy.lines?((0,y.wg)(),(0,y.iD)("table",aj,[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.SB).syzygy.lines,e=>((0,y.wg)(),(0,y.iD)("tr",{key:e.pgn},[(0,y._)("td",aV,[e.leaf?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary px-2 py-0 m-0",title:"Play this line",onClick:t=>(0,y.SU)(eI).play(e)},t[4]||(t[4]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1)]),8,aT)):(0,y.kq)("",!0)]),(0,y._)("td",{class:"align-top w-100 py-1",style:(0,y.j5)("padding-left:".concat(e.indent+.5,"rem"))},[(0,y.Uk)((0,y.zw)((0,y.SU)(eI).format(e))+" ",1),e.searching?((0,y.wg)(),(0,y.iD)("i",aL)):(0,y.kq)("",!0)],4)]))),128))])):(0,y.kq)("",!0)],512)),[[y.F8,"sy"==(0,y.SU)(b.SB).compute]])}),aq={class:"mb-3"},aF=(0,y.aZ)({__name:"compute",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:7==(0,y.SU)(b.SB).tab})},[(0,y._)("div",aq,[(0,y.Wm)(ns,{modelValue:(0,y.SU)(b.SB).compute,"onUpdate:modelValue":t[0]||(t[0]=e=>(0,y.SU)(b.SB).compute=e),label:"Tool:",text:["Popeye","Stockfish","Syzygy"],value:["py","sf","sy"]},null,8,["modelValue"])]),(0,y.Wm)(as),(0,y.Wm)(aO),(0,y.Wm)(az)],2)),[[y.F8,7==(0,y.SU)(b.SB).tab]])}),aQ={class:"mb-2 btn-gap"},aY={class:"mb-2 btn-gap"},aK={class:"btn-gap"},aG=(0,y.aZ)({__name:"api",setup(e){let t=!location.protocol.startsWith("http");return(e,n)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:5==(0,y.SU)(b.SB).tab})},[(0,y._)("div",aQ,[(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyBase64,class:"btn-secondary",disabled:t},{default:(0,y.w5)(()=>n[0]||(n[0]=[(0,y.Uk)(" Copy base64 link ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyBase64Img,class:"btn-secondary",disabled:t},{default:(0,y.w5)(()=>n[1]||(n[1]=[(0,y.Uk)(" Copy base64 <img> code ")])),_:1},8,["factory"])]),n[6]||(n[6]=(0,y._)("h6",null,"Embed mode",-1)),(0,y._)("div",aY,[(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyEmbed,class:"btn-secondary"},{default:(0,y.w5)(()=>n[2]||(n[2]=[(0,y.Uk)(" Copy embed HTML code ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyEmbedUrl,class:"btn-secondary"},{default:(0,y.w5)(()=>n[3]||(n[3]=[(0,y.Uk)(" Copy just the URL ")])),_:1},8,["factory"])]),n[7]||(n[7]=(0,y._)("h6",null,"SDK mode",-1)),(0,y._)("div",aK,[(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copySDK,class:"btn-secondary"},{default:(0,y.w5)(()=>n[4]||(n[4]=[(0,y.Uk)(" Copy SDK script tag ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyImg,class:"btn-secondary"},{default:(0,y.w5)(()=>n[5]||(n[5]=[(0,y.Uk)(" Copy SDK <img> code ")])),_:1},8,["factory"])])],2))}}),aH={class:"d-flex mb-4"},aZ=(0,y.aZ)({__name:"sections",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",aH,[(0,y.Wm)(tU),(0,y.Wm)(oz),(0,y.Wm)(na),(0,y.Wm)(aG),(0,y.Wm)(oC),(0,y.Wm)(ot),(0,y.Wm)(aF),(0,y.Wm)(oK)]))}),a$={class:"w-passive-100"},aX={class:"row gx-3 mb-1"},aJ={class:"col mb-2",style:{"flex-basis":"15rem","flex-grow":"1000"}},a0={class:"col ps-0 mb-2 text-end",style:{"white-space":"nowrap","flex-basis":"max-content"}},a1=["textContent"],a2={key:0,class:"btn-group"},a3=["disabled"],a8=(0,y.aZ)({__name:"header",setup(e){function t(){gtag("event","fen_copy"),navigator.clipboard.writeText(S.RI.value)}async function n(){gtag("event","fen_paste"),(0,S.dd)(await D(),!0)}return(e,o)=>((0,y.wg)(),(0,y.iD)("header",a$,[(0,y._)("div",aX,[(0,y._)("div",aJ,[(0,y.wy)((0,y._)("input",{type:"text",class:"form-control",placeholder:"Enter FEN here","onUpdate:modelValue":o[0]||(o[0]=e=>(0,y.dq)(S.RI)?S.RI.value=e:null),onChange:o[1]||(o[1]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(S.X4).update&&(0,y.SU)(S.X4).update(...t)})},null,544),[[y.nr,(0,y.SU)(S.RI)]])]),(0,y._)("div",a0,[(0,y._)("label",{class:"col-form-label pe-2",textContent:(0,y.zw)((0,y.SU)(b.i7).pieceCount)},null,8,a1),(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).canCopy?((0,y.wg)(),(0,y.iD)("div",a2,[(0,y._)("button",{class:"btn btn-secondary",title:"Copy",onClick:t},o[2]||(o[2]=[(0,y._)("i",{class:"fa-solid fa-clipboard"},null,-1)])),(0,y.SU)(x.O).canPaste?((0,y.wg)(),(0,y.iD)("button",{key:0,class:"btn btn-secondary",disabled:(0,y.SU)(b.I3)(),title:"Paste",onClick:n},o[3]||(o[3]=[(0,y._)("i",{class:"fa-solid fa-paste"},null,-1)]),8,a3)):(0,y.kq)("",!0)])):(0,y.kq)("",!0)])])]))}}),a4={class:"text-center"},a5={class:"d-inline-block",style:{overflow:"hidden"}},a7={class:"d-inline-block position-relative"},a6={id:"Squares"},a9={class:"play-mask"},le={id:"DragZone",class:"flex-grow-0 pb-4"},lt=(0,y.aZ)({__name:"zone",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",a4,[(0,y._)("div",a5,[(0,y._)("div",{id:"Zone",class:(0,y.C_)(["d-inline-flex justify-content-center text-center collapse flex-wrap-reverse",{collapse:(0,y.SU)(b.i7).collapse}])},[(0,y._)("div",{id:"EditZone",class:"flex-grow-0 pb-4",style:(0,y.j5)({textAlign:b.i7.collapse?b.i7.hor?"center":"start":"unset"})},[(0,y._)("div",a7,[t[0]||(t[0]=(0,y._)("canvas",{id:"SN"},null,-1)),(0,y._)("div",a6,[(0,y.wy)((0,y._)("div",a9,null,512),[[y.F8,(0,y.SU)(b.I3)()]])])])],4),(0,y._)("div",le,[(0,y._)("div",{class:(0,y.C_)(["position-relative d-inline-block",{"mb-3":(0,y.SU)(b.i7).hor}]),style:{"line-height":"0"},role:"application"},[t[2]||(t[2]=(0,y._)("canvas",{id:"CN"},null,-1)),(0,y._)("div",{class:(0,y.C_)(["loader",{show:(0,y.SU)(b.i7).loading}])},t[1]||(t[1]=[(0,y._)("div",{class:"h-100 d-flex align-items-center justify-content-center"},[(0,y._)("i",{class:"display-1 fa-solid fa-spinner fa-spin"})],-1)]),2),t[3]||(t[3]=(0,y._)("img",{id:"PV"},null,-1))],2),(0,y.wy)((0,y._)("canvas",{id:"TP",class:(0,y.C_)({"ms-4":!(0,y.SU)(b.i7).hor}),role:"menu"},null,2),[[y.F8,!(0,y.SU)(b.u8)()]])])],2)])]))}),ln={class:"mb-4 row small"};var lo=n("2176");let la=(0,lo.default)({},[["render",function(e,t){return(0,y.wg)(),(0,y.iD)("footer",ln,t[0]||(t[0]=[(0,y._)("div",{class:"col flex-grow-1",style:{"flex-basis":"max-content"}},[(0,y.Uk)(" For more information and API, see "),(0,y._)("a",{href:"https://github.com/MuTsunTsai/fen-tool",target:"_blank"},"README"),(0,y.Uk)(". ")],-1),(0,y._)("div",{class:"col-auto text-end"},"Copyright \xa9 2023-2024 Mu-Tsun Tsai",-1)]))}]]),ll={style:{display:"contents"}},li={class:"d-flex justify-content-center p-3"},lr={class:"flex-grow-0 text-start",style:{"max-width":"100%"}},ls={class:"w-passive-100"},lc={key:0,src:"."},lu=(0,y.aZ)({__name:"app",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",ll,[(0,y._)("main",li,[(0,y._)("div",lr,[(0,y.Wm)(a8),(0,y.Wm)(lt),(0,y._)("div",ls,[(0,y.Wm)(eZ),(0,y.Wm)(aZ)]),t[0]||(t[0]=(0,y._)("hr",null,null,-1)),(0,y.Wm)(la)])]),(0,y.Wm)(ez),(0,y.Wm)(eq),(0,y.SU)(b.SB).split?((0,y.wg)(),(0,y.iD)("iframe",lc)):(0,y.kq)("",!0)]))});(0,ed.S)({getDefault:()=>b.h.board,getTitle:e=>e}),document.addEventListener("mousedown",e=>{var t;let n=null===(t=document.activeElement)||void 0===t?void 0:t.nodeName.toLowerCase();"input"!=n&&"textarea"!=n&&e.detail>1&&e.preventDefault()},!1),addEventListener("keydown",e=>{var t;if(!b.SB.play.playing&&!b.SB.popeye.playing)return;let n=null===(t=document.activeElement)||void 0===t?void 0:t.nodeName.toLowerCase();if("input"==n||"textarea"==n)return;let o=e.key;("a"==o||"ArrowLeft"==o)&&(e.preventDefault(),b.SB.play.playing?R(-1):G.wD.moveBy(-1)),("d"==o||"ArrowRight"==o)&&(e.preventDefault(),b.SB.play.playing?R(1):G.wD.moveBy(1))}),(0,y.vr)(lu).mount("#app"),b.i7.envReady=!0,(0,b.wH)(),(0,w.q_)(),_.fr.onmousedown=es,_.fr.ontouchstart=es,_.fr.ondragstart=e=>e.preventDefault(),_.fr.onwheel=ei,_.in.onmousedown=es,_.in.ontouchstart=es,document.body.onmousedown=e=>{!(0,b.I3)()&&e.target!=_.in&&e.target!=_.fr&&ea()},document.body.onmousemove=eo,document.body.ontouchmove=eo,document.body.onmouseleave=el,document.body.onmouseup=el,document.body.ontouchend=el,(0,y.m0)(()=>{document.body.classList.toggle("split",b.SB.split),Promise.resolve().then(()=>(0,w.l)({}))}),(0,y.m0)(S.tZ)},4097:function(e,t,n){function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!(t instanceof Object))return e;for(let l of Object.keys(t)){if(n&&e instanceof Object&&!(l in e))continue;let i=t[l];i instanceof Object?e[l]instanceof Object&&e[l]!=i?e[l]=o(e[l],i,n):e[l]=a(i):e[l]=i}return e}function a(e){return o(Array.isArray(e)?[]:{},e)}n.d(t,{d:function(){return l},n:function(){return o}});let l="function"==typeof structuredClone?structuredClone:a},2506:function(e,t,n){n.d(t,{Dm:function(){return a},WT:function(){return o},_N:function(){return l},cb:function(){return i},oh:function(){return r}});let o=1e3,a=8,l=3,i=64,r=97},375:function(e,t,n){function o(){let e;let t=async function(t){return await n,e(t)},n=new Promise(n=>{t.setup=function(t){e=t,n()}});return t}n.d(t,{Z:function(){return a},i:function(){return l}});let a=o(),l=o()},899:function(e,t,n){n.d(t,{Ab:function(){return s},S8:function(){return r},fr:function(){return c},in:function(){return i},m8:function(){return a},ut:function(){return l}});let o=document.createElement("canvas"),a=document.getElementById("CN")||o,l=document.getElementById("SN")||o,i=document.getElementById("TP")||o,r=document.getElementById("CanvasGhost")||o,s=document.getElementById("TemplateGhost")||o,c=document.getElementById("PV")},3276:function(e,t,n){n.d(t,{Il:function(){return g},KO:function(){return f},MI:function(){return p},Nm:function(){return m},V1:function(){return b},jl:function(){return y},mQ:function(){return w},mi:function(){return h},wg:function(){return S}});var o,a,l,i,r,s,c,u,d,f=((o={})[o.notDownloaded=0]="notDownloaded",o[o.downloading=1]="downloading",o[o.needReload=2]="needReload",o[o.ready=3]="ready",o);var p=((a={})[a.stop=0]="stop",a[a.starting=1]="starting",a[a.running=2]="running",a);var m=((l={})[l.counterclockwise=-1]="counterclockwise",l[l.clockwise=1]="clockwise",l[l.turn=2]="turn",l);var h=((i={})[i.r90=1]="r90",i[i.r180=2]="r180",i[i.r270=3]="r270",i[i.full=4]="full",i);var g=((r={}).black="b",r.white="w",r.neutral="n",r);var y=((s={}).normal="normal",s.pass="pass",s.retro="retro",s);var b=((c={})[c.bK=0]="bK",c[c.wK=1]="wK",c[c.nK=2]="nK",c[c.bQ=3]="bQ",c[c.wQ=4]="wQ",c[c.nQ=5]="nQ",c[c.bB=6]="bB",c[c.wB=7]="wB",c[c.nB=8]="nB",c[c.bN=9]="bN",c[c.wN=10]="wN",c[c.nN=11]="nN",c[c.bR=12]="bR",c[c.wR=13]="wR",c[c.nR=14]="nR",c[c.bP=15]="bP",c[c.wP=16]="wP",c[c.nP=17]="nP",c[c.bC=18]="bC",c[c.wC=19]="wC",c[c.nC=20]="nC",c[c.bX=21]="bX",c[c.wX=22]="wX",c[c.nX=23]="nX",c);var S=((u={})[u.k=0]="k",u[u.q=1]="q",u[u.b=2]="b",u[u.n=3]="n",u[u.r=4]="r",u[u.p=5]="p",u[u.c=6]="c",u[u.x=7]="x",u);var w=((d={})[d.edit=0]="edit",d[d.options=1]="options",d[d.database=2]="database",d[d.bbs=4]="bbs",d[d.api=5]="api",d[d.play=6]="play",d[d.compute=7]="compute",d[d.project=8]="project",d)},9683:function(e,t,n){n.d(t,{O:function(){return r},u:function(){return l}});let o=navigator.clipboard,a="canShare"in navigator,l=Math.min(2,Math.floor(devicePixelRatio)),i=matchMedia("(hover: none), (pointer: coarse)").matches,r={isTop:top==self,thread:"undefined"!=typeof SharedArrayBuffer,canShare:a,canSharePng:function(){if(!a)return!1;let e=atob("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII"),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);let n=new File([new Blob([t])],"1.png",{type:"image/png"});return navigator.canShare({files:[n]})}(),canCopy:o&&"writeText"in o,canPaste:o&&"readText"in o,canCopyImg:o&&"write"in o,isTouch:i,isTaiwan:navigator.languages.includes("zh-TW")}},6919:function(e,t,n){n.d(t,{A1:function(){return h},C3:function(){return m},Di:function(){return x},Fv:function(){return S},J7:function(){return l},MA:function(){return k},N0:function(){return b},Nv:function(){return d},Q5:function(){return B},S3:function(){return y},TP:function(){return a},U1:function(){return A},U_:function(){return P},_n:function(){return U},hD:function(){return D},hv:function(){return _},sV:function(){return w},uY:function(){return C}});var o=n(2506);let a="8/8/8/8/8/8/8/8",l="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",i="\\p{Extended_Pictographic}",r="\\p{Emoji_Modifier}",s="".concat("\\p{Regional_Indicator}","{2}|").concat(i,"\\uFE0F?").concat(r,"?(\\u200D").concat(i,"\\uFE0F?").concat(r,"?)*"),c="\\((!?)([kqbnrp])(\\d?)\\)",u="[-~]?(\\*\\d)?(".concat("[kqbnrpcxstadg]","|").concat("'(".concat(s,"|[^'])|''.."),")"),d=RegExp("^(?:".concat(s,")$"),"u"),f=RegExp("^(?:".concat(c,"|").concat(u,")$"),"iu"),p=RegExp("\\/|\\d+|".concat(c,"|").concat(u,"|."),"iug");function m(e){let t=e.match(p)||[];if(!t.some(e=>e.match(/^\d\d+$/)))return e;let n=[0],o=0;for(let e=0;e<t.length;e++){let a=t[e];if("/"==a)n[++o]=0;else if(a.match(/^\d+$/)){if(1==a.length)n[o]+=Number(a);else{let l=a.split("").map(e=>Number(e)).reduce((e,t)=>e+t,0);n[o]+=l,t[e]=l.toString()}}else n[o]++}return g(n)?t.join(""):e}function h(e){let t=e.match(p)||[],n=[0],o=0;for(let e of t)"/"==e?n[++o]=0:e.match(/^\d+$/)?n[o]+=Number(e):n[o]++;let a=n.length;if(1!=a){if(g(n))return{w:n[0],h:a}}}function g(e){let t=e[0];for(let n=1;n<e.length;n++)if(e[n]!=t)return!1;return!0}function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=e.match(p)||[],l=[],i=!1;for(let e of a){if("/"==e){if(!i){let e=l.length+t-l.length%t;for(;l.length<e;)l.push("")}}else if(e.match(/^\d+$/)){let t=Number(e);for(let e=0;e<t;e++)l.push("")}else l.push(e);if(i="/"!=e&&l.length%t==0,l.length==t*n)break}for(;l.length<t*n;)l.push("");return l}function b(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=0,l="";function i(){a&&(l+=a),a=0}for(let o=0;o<n;o++){for(let n=0;n<t;n++){let r=o*t+n;""==e[r]?a++:(i(),l+=e[r])}i(),o<n-1&&(l+="/")}return l}function S(e,t,n){if(!e.match(f)){if(e.match(d))e="'"+e;else{let t=[...e].length;e=1==t&&"'"!=e?"'"+e:2==t?"''"+e:""}}return(e=(e=e.replace(RegExp("^".concat(c,"$"),"i"),(e,t,n,o)=>{let a=n;return o&&(a="*"+o+a),t&&(a="-"+a),a})).replace(/^~/,"-").replace(/^-(?=.*')/,"")).startsWith("-")&&(e=e.toLowerCase()),e=_(e,t,n)}function w(e){let t=(e=_(e,!1,!0)).match(/^(-?)(?:\*(\d))?([kqbnrp])$/i);if(!t)return"";let n=_(t[3],!0);return t[1]||t[2]?"("+(t[1]?"!":"")+n+(t[2]||"")+")":n}function _(e,t,n){return e.match(/^-?(\*\d)?[sng]$/i)?(t?(n&&(e=e.replace("s","g").replace("S","G")),e=e.replace("n","s").replace("N","S")):(n&&(e=e.replace("s","n").replace("S","N")),e=e.replace("g","s").replace("G","S")),e):e}function k(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm;return void 0===t&&(t=e%o.Dm,e=(e-t)/o.Dm),String.fromCharCode(o.oh+t)+(n-e)}function U(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm;return{x:e.charCodeAt(0)-o.oh,y:t-Number(e[1])}}function x(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,{x:a,y:l}=U(e,n);return l*t+a}function B(e){return Array.from({length:e},e=>"")}function C(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.Dm,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:o.Dm,i=B(a*l);i.anime="";for(let o=0;o<l;o++)for(let r=0;r<a;r++){let s=r+t,c=o+n,u=0<=s&&s<a&&0<=c&&c<l;e[o*a+r]&&(i[c*a+s]=u?e[o*a+r]:"",i.anime+=k(o,r,l)+k(c,s,l))}return i}function D(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.Dm,l=B(n*a);l.anime="";for(let o=0;o<a;o++)for(let i=0;i<n;i++){let r=i,s=o;if("-"==t&&(r=n-1-r),("|"==t||"/"==t)&&(s=a-1-s),"/"==t||"\\"==t){let e=s-r;r+=e,s-=e}"/"==t&&(s=a-1-s),e[s*n+r]&&(l[o*n+i]=e[s*n+r],l.anime+=k(s,r,a)+k(o,i,a))}return l}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.Dm,l=B(n*a);n==a&&(l.anime="");for(let o=0;o<n;o++)for(let i=0;i<a;i++){let{x:r,y:s}=function(e,t,n,o,a){return 1==a?{x:e,y:o-1-t}:2==a?{x:o-1-t,y:n-1-e}:{x:n-1-e,y:t}}(o,i,n,a,t);e[s*n+r]&&(l[o*a+i]=e[s*n+r],n==a&&(l.anime+=k(s,r,a)+k(o,i,a)))}return l}function P(e,t){return e.map(e=>{if(""==e||e.startsWith("-")||!t&&e.startsWith("'"))return e;let n=e.toLowerCase();return e=e==n?e.toUpperCase():n})}},737:function(e,t,n){n.d(t,{By:function(){return u},Cd:function(){return f},Cg:function(){return a},D_:function(){return d},n6:function(){return i},t_:function(){return p},z6:function(){return l}});var o=n(2506);let a=44,l="1echecs",i={pattern:void 0,bg:void 0,exHigh:!0,border:"1",blackWhite:!1,knightOffset:.6,SN:!1,size:44,w:o.Dm,h:o.Dm,fullFEN:!1,coordinates:!1,set:l,collapse:!0},r=/^\d+(,\d+)*$/,s=[26,32,38,44],c=["1echecs","alpha","goodCompanion","kilfiger","merida","mpchess","skak"];function u(e){if("string"==typeof e){if((e=e.replace(/\D/g,",").replace(/,+/g,",").replace(/^,/,"").replace(/,$/,"")).match(r))return e}}function d(e){let t=Object.assign({},i);if(e){let n=Number(e.size);s.includes(n)&&(t.size=n),e.set&&c.includes(e.set)&&(t.set=e.set),e.border=u(e.border),e.border&&(t.border=e.border),e.knightOffset&&0<e.knightOffset&&e.knightOffset<1&&(t.knightOffset=e.knightOffset),t.blackWhite=!!e.blackWhite,t.pattern=e.pattern,t.bg=e.bg,t.SN=e.SN||!1;let o=Math.floor(Number(e.w)),a=Math.floor(Number(e.h));o>0&&(t.w=o),a>0&&(t.h=a)}return t}let f=20;function p(e,t){let n=function(e){let t=e.split(",").map(e=>{let t=Number(e);return isNaN(t)?0:Math.abs(Math.floor(t))}),n=t.reduce((e,t)=>e+t,0);return{array:t,size:n}}(e.border),o=e.coordinates?{x:f,y:f}:{x:0,y:0};!0===t&&(o.y=0),!1===t&&(o.x=0);let a=e.w*e.size+2*n.size+o.x,l=e.h*e.size+2*n.size+o.y,i={x:n.size+o.x,y:n.size};return{w:a,h:l,border:n,offset:i,margin:o}}},2539:function(e,t,n){n.d(t,{$I:function(){return B},BC:function(){return U},Dd:function(){return A},Gh:function(){return g},LW:function(){return h},Os:function(){return D},P:function(){return d},PH:function(){return y},PX:function(){return p},SQ:function(){return u},Wh:function(){return C},h8:function(){return w},i9:function(){return _},nU:function(){return k},or:function(){return b}});var o=n(3421),a=n(6919),l=n(1671);function i(){let e=(0,o._)(["[[^]]+]"],["\\[[^\\]]+\\]"]);return i=function(){return e},e}function r(){let e=(0,o._)(["(+)?[a-z]) (S[ S]+S)"],["(\\+)?[a-z]\\) (\\S[ \\S]+\\S)"]);return r=function(){return e},e}function s(){let e=(0,o._)(["(?<mod>hcc)?(?:(?<move>0-0(?:-0)?|",")(?:",")*(?:",")?(?:=(?<cc>[nwb]))?)(?:",")*"]);return s=function(){return e},e}function c(){let e=(0,o._)(["(?<count>d+.(?:..)?)?(?<main>","(?:/",")*)(?: [+#=])?"],["(?<count>\\d+\\.(?:\\.\\.)?)?(?<main>","(?:\\/",")*)(?: [+#=])?"]);return c=function(){return e},e}let u="[a-h][1-8]",d="(?:[0-9A-Z][0-9A-Z]|[A-Z])",f=String.raw(i()),p=String.raw(r()),m="(?:[nwb])?r?".concat(d,"?(?<from>").concat(u,")[-*](?<to>").concat(u,")(?<ep> ep\\.)?(?<then>([-*]").concat(u,"(=[nwb]?").concat(d,")?)*)"),h="=(?<pc>[nwb])?(?<p>".concat(d,")"),g=["condition","2option","3stipulation","2sstipulation","3forsyth","2pieces","2twin"].map(l.d).join("|"),y=RegExp(g,"ig"),b=String.raw(s(),m,f,h,f),S=b.replace(/\?<[^>]+>/g,""),w=String.raw(c(),S,S);function _(e,t,n,o){return n=C(n),"w"==o&&(n=n.toUpperCase()),"b"==o&&(n=n.toLowerCase()),"n"==o&&(n="-"+n.toLowerCase()),e[(0,a.Di)(t)]=n,n}function k(e,t,n,o){o&&o.push(t+n);let l=(0,a.Di)(t),i=(0,a.Di)(n);return e[i]=e[l],e[l]="",e[i]}let U={"*2Q":"G","*2N":"N","*1N":"Z","*3N":"CA","*3B":"GI","*3Q":"LI","*1Q":"EQ","*2P":"BP","*1B":"AN","*1K":"PO","*2K":"ST","*3K":"DU","*2R":"WE","*3R":"PA",C:"I"},x={"*1B":"25,37,AL,AN,BM,C,CT,DB,GN,GY,NH","*1K":"PO","*1N":"36,AO,BK,BN,DR,GR,KP,LS,MA,MS,OH,RK,S1,S2,S3,S4,SQ,SS,SW,UU,Z,ZE,ZH,ZR","*1P":"BS,CP,MP","*1Q":"EQ,HA,KH,L,LE,NE","*1R":"DA,DK,EK,GT,MH,RM,RO,RR,SH,WA","*2B":"15,AR,BH,BT,BU,BW,ND,PR","*2K":"ST","*2N":"N","*2P":"BP","*2Q":"G","*2R":"DG,EM,RA,RF,RH,RW,WE","*3B":"BE,BL,FE,GI,LO,OK,RB,VA","*3K":"DU","*3N":"24,35,AH,CA,DS,GH,MO,OA,SA","*3P":"O,SP","*3Q":"16,AM,EH,KA,LI,M,OR,SE,SI","*3R":"BR,CH,CR,EA,FA,PA,RE,RL,TR",A:"AG,B1,B2,B3,BI,BO,CG,CY,DO,ET,F,FR,G2,G3,GE,GF,GL,KL,KO,LB,LH,LN,LR,MG,ML,MM,NA,NL,NO,PP,QE,QF,QN,QQ,RN,RP,RT,SK,SO,TH,WR",C:"I",N:"S"},B={custom:()=>({}),default:{}};for(let e in x)for(let t of x[e].split(","))B.default[t]=e;function C(e){let t=e.toUpperCase(),n=function(e){let t=B.custom();for(let n in t)if(t[n]==e)return n}(t)||B.default[t];return n?e==t?n:n.toLowerCase():e}function D(e){let t=e.startsWith("-")?"=":"";t&&(e=e.substring(1));let n=e.toUpperCase();if(function(e){return/^[KQBNRP]$/.test(e)}(n))e=e.replace("n","s").replace("N","S");else{let o=n==e,a=B.custom();if(!(n in a))return null;let l=a[n];2==(e=o?l:l.toLowerCase()).length&&(e="."+e),l.match(/^\d+$/)&&!t&&(t=o?"+":"-")}return t+e}function A(e,t,n){let o=(0,a.Di)(t),l=(0,a.Di)(n),i=e[l];e[l]=e[o],e[o]=i}},6281:function(e,t,n){n.d(t,{F:function(){return g},w:function(){return h}});var o=n(3421),a=n(2506),l=n(3276),i=n(6919),r=n(1671),s=n(2539);function c(){let e=(0,o._)(["s+(?<c>",")(?:s+(?:","))?(?<l>(?:s+",")+)"],["\\s+(?<c>",")(?:\\s+(?:","))?(?<l>(?:\\s+",")+)"]);return c=function(){return e},e}function u(){let e=(0,o._)(["","(?:",")+(?=s+(?:",")|$)"],["","(?:",")+(?=\\s+(?:",")|$)"]);return u=function(){return e},e}let d=["1Black","1Neutral","1White"].map(r.d).join("|"),f=["1Chameleon","2FrischAuf","2Functionary","2HalfNeutral","2HurdleColourChanging","1Jigger","1Kamikaze","1Magic","2Paralysing","2Protean","1Royal","1Uncapturable","1Volage"].map(r.d).join("|"),p="(?<p>".concat(s.P,")(?<sq>(?:").concat(s.SQ,")+)"),m=String.raw(c(),d,f,p),h=String.raw(u(),(0,r.d)("2pieces"),m,s.Gh);function g(e){let t=e.match(RegExp(h,"ig"));if(!t)return null;let n=(0,i.Q5)(a.cb);for(let e of t)for(let t of e.match(RegExp(m,"ig"))){let e=t.match(RegExp(m,"i")).groups,o=e.c[0].toLowerCase();for(let t of e.l.match(RegExp(p,"ig"))){let e=t.match(RegExp(p,"i")).groups,a=e.p.toUpperCase();for(let t of e.sq.match(RegExp(s.SQ,"g")))n[(0,i.Di)(t)]=function(e,t){if(2==t.length&&(t="."+t),e==l.Il.neutral)return"="+t;let n=e==l.Il.white;return t.match(/[A-Z]/)?n?t:t.toLowerCase():(n?"+":"-")+t}(o,a)}}return(0,i.N0)(n)}},6033:function(e,t,n){n.d(t,{Vl:()=>$,l5:()=>z});var o=n("3421"),a=n("4097"),l=n("6919"),i=n("1671"),r=n("2539"),s=n("3276");function c(){let e=(0,o._)(["^+(?<c>[nwb])(?<is>",")(?<at>",")(=(?<p>","))?$"],["^\\+(?<c>[nwb])(?<is>",")(?<at>",")(=(?<p>","))?$"]);return c=function(){return e},e}function u(){let e=(0,o._)(["^-([nwb]",")?(?<at>",")$"]);return u=function(){return e},e}let d=new RegExp(String.raw(c(),r.P,r.SQ,r.P)),f=new RegExp(String.raw(u(),r.P,r.SQ)),p=new RegExp("^(?<c>[nwb])".concat(r.P,"(?<from>").concat(r.SQ,")-&gt;(?<to>").concat(r.SQ,")(=(?<p>").concat(r.P,"))?$")),m=new RegExp("^".concat(r.P,"(?<from>").concat(r.SQ,")&lt;-&gt;").concat(r.P,"(?<to>").concat(r.SQ,")$")),h=new RegExp("^(?<at>".concat(r.SQ,")=(?<c>[nwb])?(?:r?(?<p>").concat(r.P,"))?$")),g=new RegExp("^I".concat(r.SQ,"(,").concat(r.SQ,")*$")),y=new RegExp(r.or),b=new RegExp(r.h8);function S(e){return e.pg?l.J7:e.fen}let w=new RegExp("^[nwb](?:hcc)?".concat(r.P,"(").concat(r.SQ,")--&gt;(").concat(r.SQ,")$")),_=new RegExp("^[nwb](?:hcc)?".concat(r.P,"(").concat(r.SQ,")&lt;--&gt;[nwb](?:hcc)?").concat(r.P,"(").concat(r.SQ,")$")),k=new RegExp("^([+-]?)([nwb])(?:hcc)?(".concat(r.P,")(").concat(r.SQ,")$")),U=new RegExp("^(".concat(r.P,")==&gt;(").concat(r.P,")$")),x=new RegExp("^mirror(".concat(r.SQ,")&lt;--&gt;(").concat(r.SQ,")$")),B=new RegExp("^shift(".concat(r.SQ,")==&gt;(").concat(r.SQ,")$")),C=/^rotate(90|180|270)$/;function D(e,t){let n=e.match(w);return!!n&&((0,r.nU)(t,n[1],n[2]),!0)}function A(e,t){let n=e.match(_);return!!n&&((0,r.Dd)(t,n[1],n[2]),!0)}function P(e,t){let n=e.match(k);return!!n&&("+"==n[1]||""==n[1]?(0,r.i9)(t,n[4],n[3],n[2]):(0,r.i9)(t,n[4],""),!0)}function N(e,t){let n;let o=e.match(x);if(!o)return!1;let a=(0,l._n)(o[1]),i=(0,l._n)(o[2]);return n=a.x==i.x?"|":a.y==i.y?"-":(a.x-i.x)*(a.y-i.y)>0?"\\":"/",W(t,(0,l.hD)(t,n)),!0}function E(e,t){let n=e.match(B);if(!n)return!1;let o=(0,l._n)(n[1]),a=(0,l._n)(n[2]);return W(t,(0,l.uY)(t,a.x-o.x,a.y-o.y)),!0}function I(e,t){let n=e.match(U);if(!n)return!1;let o=(0,r.Wh)(n[1]),a=o.toLowerCase(),l=(0,r.Wh)(n[2]),i=l.toLowerCase();for(let e=0;e<t.length;e++)t[e]==o&&(t[e]=l),t[e]==a&&(t[e]=i),t[e]=="-"+a&&(t[e]="-"+i);return!0}function R(e,t){let n=e.match(C);return!!n&&(W(t,(0,l.U1)(t,function(e){return"90"==e?s.Nm.counterclockwise:"180"==e?s.Nm.turn:s.Nm.clockwise}(n[1]))),!0)}function O(e,t){return"PolishType"==e&&(W(t,(0,l.U_)(t)),!0)}function W(e,t){e.length=0,e.push(...t)}function M(){let e=(0,o._)(["\n\n+|(?:",")|(?:",")"],["\\n\\n+|(?:",")|(?:",")"]);return M=function(){return e},e}function j(){let e=(0,o._)(["","s+(S*(?:d|[^ds]s+d+(?:.[05])?))"],["","\\s+(\\S*(?:\\d|[^\\d\\s]\\s+\\d+(?:\\.[05])?))"]);return j=function(){return e},e}function V(){let e=(0,o._)(["\bimitw*s+(?:",")+"],["\\bimit\\w*\\s+(?:",")+"]);return V=function(){return e},e}let T=new RegExp(r.PX),L=RegExp(String.raw(M(),r.PX,r.h8),"g");function z(e,t,n){return function(e,t,n,o){if(!t)return n;console.log(n);let c=function(e,t,n){var o;let a=function(e){var t;let n=e.replace(/\n/g," ").replace(r.PH,"\n$&").split("\n"),o=n.filter(e=>e.match((0,i.M)("2option","^"))).join(" ");return{imitators:(null===(t=n.filter(e=>e.match((0,i.d)("condition"))).join(" ").match(Q))||void 0===t?void 0:t.join(" ").match(RegExp(r.SQ,"g")))||[],duplex:Y.test(o),halfDuplex:K.test(o)}}(e),s=function(e){return e.split((0,i.M)("2twin","\\b","\\b")).map(e=>{var t;return null===(t=e.match(q))||void 0===t?void 0:t[1].replace(/\s/g,"")}).filter(e=>e)}(e),c={pg:/dia/i.test(s[0]),fen:function(e,t){if(!t)return e;let n=(0,l.S3)(e);for(let e of t)n[(0,l.Di)(e)]="-"+(0,r.Wh)("i");return(0,l.N0)(n)}($(t),a.imitators),imitators:a.imitators,ordering:F(s[0],a.halfDuplex)},u={stack:[],stipIndex:0,solutionPrinted:!1,currentProblem:c,board:(0,l.S3)(S(c)),ordering:c.ordering,imitators:null===(o=c.imitators)||void 0===o?void 0:o.concat()};return{duplexSeparator:a.duplex?function(e){let t=/^\n\n+ +1\./,n=e.replace(/\n\nsolution finished./,"\n  1.").match(/\n\n+[^\n]+/g).filter((e,n,o)=>n>0&&e.match(t)&&o[n-1].match(t)).map(e=>e.match(/^\n+/)[0].length);return"\n".repeat(Math.max(...n))}(n):"",initProblem:c,stipulations:s,options:a,state:u}}(e,t,n=n.replace(/<br>/g,"\n")),u=!1;return(n=n.replace(L,e=>{if(u)return e;try{if(function(e,t){let{state:n,duplexSeparator:o}=e;return!!t.match(/^\n+$/)&&(n.stack.length=0,n.board=(0,l.S3)(S(n.currentProblem)),t==o&&n.solutionPrinted&&(n.ordering=G(n.ordering)),!0)}(c,e)||function(e,t){let{state:n,stipulations:o,options:i,initProblem:r}=e,s=t.match(T);if(!s)return!1;n.solutionPrinted=!1,n.currentProblem=(0,a.d)(s[1]?n.currentProblem:r);let c=o[++n.stipIndex];c&&(n.currentProblem.ordering=F(c,i.halfDuplex),n.currentProblem.pg=/dia/i.test(c)),n.ordering=n.currentProblem.ordering,n.stack.length=0;let{fen:u,board:d}=function(e,t){let n=(0,l.S3)(e);for(let e of t.replace(/(mirror|shift|rotate) /g,"$1").replace(/ ==&gt; /g,"==&gt;").split(" "))(function(e,t){for(let n of[D,A,P,N,E,I,R,O])if(n(t,e))return})(n,e);return{fen:(0,l.N0)(n),board:n}}(n.currentProblem.fen,s[2]);return n.currentProblem.fen=u,n.board=n.currentProblem.pg?(0,l.S3)(l.J7):d,!0}(c,e))return e;return c.state.solutionPrinted=!0,function(e,t,n){let o;let{stack:a,ordering:i}=t,c=e.match(b).groups,u=c.count,w=S(t.currentProblem);if(u){let e=a.findIndex(e=>e.move==u||parseInt(e.move)>parseInt(u));e>=0&&(o=function(e,t,n){let o=t>0?e.stack[t-1].fen:n;return e.board=(0,l.S3)(o),e.imitators&&(e.imitators=(t>0?e.stack[t-1].imitators:e.currentProblem.imitators).concat()),e.stack.length=t,o}(t,e,w))}let _=i[!u||u.endsWith("...")?1:0],{imitators:k,board:U}=t,x=null==k?void 0:k.concat();if(k){for(let e of k)(0,r.i9)(U,e,"");k.length=0}let B=[];for(let e of c.main.split("/")){var C;(function(e,t,n,o,a){let l,i;if(n.move.startsWith("0-0")){let o=t==s.Il.white?"1":"8",c="0-0"==n.move?["g","h","f"]:["c","a","d"];(0,r.nU)(e,"e"+o,c[0]+o,a),i=(0,r.nU)(e,c[1]+o,l=c[2]+o,a)}else i=(0,r.nU)(e,n.from,l=n.to,a),n.ep&&(0,r.i9)(e,function(e){return e.replace("3","4").replace("6","5")}(n.to),""),n.then&&function(e,t,n){let o=t.to;for(let a of t.then.match(RegExp("".concat(r.LW,"|").concat(r.SQ),"g"))){let t=a.match(new RegExp(r.LW));if(t){let a=(0,r.i9)(e,o,t.groups.p,t.groups.pc);n&&(n[n.length-1]+="="+a)}else(0,r.nU)(e,o,a,n),o=a}}(e,n,a);"I"==n.p?(o.push(l),(0,r.i9)(e,l,"I",s.Il.neutral)):n.p&&(0,r.i9)(e,l,i=n.p,n.pc?n.pc:t),n.cc&&(0,r.i9)(e,l,i,n.cc)})(U,_,e.match(y).groups,k,B);let t=null===(C=e.match(/\[[^[\]]+(?=\])/g))||void 0===C?void 0:C.map(e=>e.substring(1));t&&t.forEach(e=>(function(e,t,n){var o,a,i,c,u;let y=null===(o=t.match(d))||void 0===o?void 0:o.groups;if(y)return(0,r.i9)(e,y.at,y.p||y.is,y.c);if(y=null===(a=t.match(f))||void 0===a?void 0:a.groups)return(0,r.i9)(e,y.at,"");if(y=null===(i=t.match(p))||void 0===i?void 0:i.groups){(0,r.nU)(e,y.from,y.to),y.p&&(0,r.i9)(e,y.to,y.p,y.c);return}if(y=null===(c=t.match(m))||void 0===c?void 0:c.groups)return(0,r.Dd)(e,y.from,y.to);if(y=null===(u=t.match(h))||void 0===u?void 0:u.groups)return(0,r.i9)(e,y.at,y.p||function(e,t){return e[(0,l.Di)(t)].match(RegExp("^(\\*\\d)?"+r.P+"$","i"))[0].toUpperCase()}(e,y.at),y.c||function(e,t){let n=e[(0,l.Di)(t)];return r.P.startsWith("-")?s.Il.neutral:n==n.toLowerCase()?s.Il.black:s.Il.white}(e,y.at));if(t.match(g))for(let o of(n.push(...t.match(RegExp(r.SQ,"g"))),n))(0,r.i9)(e,o,"I",s.Il.neutral)})(U,e,k))}let D=(0,l.N0)(U);return u&&a.push({move:u,color:_,fen:D,imitators:null==k?void 0:k.concat()}),x&&function(e,t){for(let n=0;n<t.length;n++){let[o,a]=t[n].match(/[a-z]\d/g).map(e=>(0,l._n)(e)),i=a.x-o.x,r=a.y-o.y;for(let o of e){let e=(0,l._n)(o);t[n]+=o+(0,l.MA)(e.y+r,e.x+i)}}}(x,B),(1==a.length&&u?n("*",w)+" ":"")+n(e,D,B,o)}(e,c.state,o)}catch(t){return console.log(t,e),u=!0,e}})).replace(/ {2} ?<span init/g,"<span").replace(/\n/g,"<br>")}(e,t,n,H)}let q=RegExp(String.raw(j(),(0,i.d)("3stipulation")),"i");function F(e){var t;let n,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return"wb";let a=e.match(/^(\d+-&gt;)?(?:exact-)?(?:(?:ser|pser|phser|semi|reci)-)?(hs|hr|h|s|r)?/i);return n=!a||a[1]?"wb":(null===(t=a[2])||void 0===t?void 0:t.toLowerCase())=="h"?"bw":"wb",o?G(n):n}let Q=RegExp(String.raw(V(),r.SQ),"ig"),Y=(0,i.M)("3duplex"),K=(0,i.M)("3halfDuplex");function G(e){return"wb"==e?"bw":"wb"}function H(e,t,n,o){let a="*"==e?"init ":"";t=t.replace(/-/g,"&#45;").replace(/"/g,"&#34;");let l="";return n&&n.length&&(l+=' data-anime="'.concat(n.join(","),'"')),o&&(l+=' data-before="'.concat(o,'"')),"<span ".concat(a,'class="step btn px-1 py-0" data-fen="').concat(t,'"').concat(l,">").concat(e,"</span>")}let Z=/[-+=]?(\.[0-9A-Z][0-9A-Z]|[A-Z])|\d+|\//ig;function $(e){return e.match(Z).map(e=>{if("/"==e||e.match(/^\d+$/))return e;let t=e.match(/^[-+=]/)?e[0]:null;return t&&(e=e.substring(1)),e.startsWith(".")&&(e=e.substring(1)),e=(0,r.Wh)(e),"+"==t&&(e=e.toUpperCase()),"-"==t&&(e=e.toLowerCase()),"="==t&&(e="-"+e.toLowerCase()),e}).join("")}},1671:function(e,t,n){n.d(t,{M:function(){return l},d:function(){return i}});var o=n(3421);function a(){let e=(0,o._)(["(?:","","|\b)"],["(?:","","|\\b)"]);return a=function(){return e},e}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return RegExp(t+i(e)+n,"i")}function i(e){let t=4;return(e.match(/^\d/)&&(t=Number(e[0]),e=e.substring(1)),e.length<=t)?"\\b"+e+"\\b":"\\b"+e.substring(0,t)+function e(t){return""==t?"":String.raw(a(),t[0],e(t.substring(1)))}(e.substring(t))}},1528:function(e,t,n){n.d(t,{U:function(){return a}});var o,a=((o={})[o.notYet=0]="notYet",o[o.checkmate=1]="checkmate",o[o.draw=2]="draw",o)},9391:function(e,t,n){n.d(t,{u8:()=>D,h:()=>m,t4:()=>_,bi:()=>y,nj:()=>B,wH:()=>k,yC:()=>f,I3:()=>C,SB:()=>S,i7:()=>g});var o=n("4881"),a=n("737"),l=n("899"),i=n("9683"),r=n("4097"),s=n("2539"),c=n("2506"),u=n("3276"),d=n("7739");let f=new URL(location.href).searchParams,p={BBS:{Id:!0,coordinates:!0,notes:!0,uncoloredNotes:!1,redBlue:!1},DB:{use:"PDB",exact:!1},PLAY:d.CS,Stockfish:{study:!1,downloaded:!1,depth:50,lines:3},feature:{janko:!1},popeye:{pieceMap:s.BC},board:a.n6,project:[]},m=(0,o.qj)(p);s.$I.custom=()=>m.popeye.pieceMap;let h=matchMedia("(prefers-color-scheme: dark)");h.onchange=()=>g.isDark=h.matches;let g=(0,o.qj)({module:{chess:!1},envReady:!1,loading:!0,isDark:h.matches,pieceCount:"(0+0)",hor:!1,collapse:!1,dragging:!1,selection:null,stockfish:{status:u.KO.notDownloaded,running:u.MI.stop},syzygy:{running:!1}}),y={depth:0,score:null,mate:null,lines:[],header:[]},b={split:!1,tab:0,compute:"py",play:d.tu,popeye:{initFEN:"",index:0,steps:[],playing:!1,error:!1,running:!1,editMap:!1,mapping:"",input:"",output:"",intInput:"",intOutput:""},stockfish:y,syzygy:{header:null,lines:null}},S=(0,o.qj)(b),w=[];function _(e){w.push(e)}function k(){let e=JSON.parse(localStorage.getItem("settings")||"{}");(0,r.n)(p,e,!0),e.project&&(p.project=e.project),e.popeye&&(p.popeye.pieceMap=e.popeye.pieceMap),f.has("janko")&&(p.feature.janko=!0);let t=i.O.isTop?JSON.parse(sessionStorage.getItem("state")||"null"):null;for(let e of(t&&(0,r.n)(S,t),g.stockfish.status=m.Stockfish.downloaded?u.KO.ready:u.KO.notDownloaded,w))e();(0,o.m0)(U),(0,o.m0)(x)}function U(){localStorage.setItem("settings",JSON.stringify(m))}function x(){i.O.isTop&&sessionStorage.setItem("state",JSON.stringify(S))}function B(e,t,n){let{size:o,w:i}=m.board,{border:r,margin:s}=(0,a.t_)(m.board,t),u=r.size,d=t?c.Dm:c._N,f=e?d:i,p=(e||l.m8).clientWidth/(o*f+2*u+s.x),h={x:(u+s.x)*p,y:u*p,r:u*p,b:(u+s.y)*p},g=((n||i)*o+2*r.size+s.x)*p;return{s:o*p,offset:h,width:g}}function C(){return S.play.playing||S.popeye.playing}function D(){return g.hor&&S.popeye.playing}},7739:function(e,t,n){n.d(t,{CS:function(){return a},TF:function(){return r},th:function(){return f},tu:function(){return l},zi:function(){return i}});var o=n(3276);let a={symbol:null,ep:!0,negative:!1,zero:!1},l={initFEN:"",playing:!1,pendingPromotion:!1,moveNumber:-1,game:"",history:[],turn:"w",castle:{K:!0,Q:!0,k:!0,q:!0},retro:{uncapture:void 0,unpromote:!1,ep:!1},enPassant:"",halfMove:0,fullMove:1,mode:o.jl.normal,over:void 0},i=1,r=8,s=[o.V1.wQ,o.V1.wB,o.V1.wN,o.V1.wR],c=[o.V1.bQ,o.V1.bB,o.V1.bN,o.V1.bR],u=c.concat(o.V1.bP,o.V1.wP,o.V1.bC),d=s.concat(o.V1.bP,o.V1.wP,o.V1.wC),f={w:s,b:c,wr:u,br:d}},2519:function(e,t,n){let o,a,l,i,r;n.d(t,{U_:function(){return z},dS:function(){return T},wD:function(){return Q}});var s=n(3421),c=n(4881),u=n(3369),d=n(9391),f=n(6033),p=n(4109),m=n(5547),h=n(6919),g=n(1671),y=n(2539),b=n(6384),S=n(6281),w=n(2506),_=n(375);function k(){let e=(0,s._)(["(?:",")s.+$"],["(?:",")\\s.+$"]);return k=function(){return e},e}function U(){let e=(0,s._)(["","s+S+"],["","\\s+\\S+"]);return U=function(){return e},e}function x(){let e=(0,s._)(["","s+(S+)"],["","\\s+(\\S+)"]);return x=function(){return e},e}(0,d.t4)(()=>{d.SB.popeye.running=!1,d.SB.popeye.editMap=!1,d.SB.popeye.playing&&(0,m.zD)().then(()=>(0,c.Y3)(()=>q(!0)))});let B=!1,C=document.getElementById("Output");function D(){d.SB.popeye.output=d.SB.popeye.intOutput+'<br><i class="fa-solid fa-spinner fa-spin"></i>',A()}function A(){B&&(B=!1,(0,c.Y3)(()=>C.scrollTop=C.scrollHeight-C.clientHeight))}function P(e){o&&o.terminate(),o=void 0;let t=500-(performance.now()-l);A(),clearInterval(i),e?E():(d.SB.popeye.output=d.SB.popeye.intOutput,setTimeout(()=>d.SB.popeye.running=!1,Math.max(0,t)),N())}function N(){if(o)return o;let e=new Worker(new URL(n.p+n.u("10"),n.b),Object.assign({},{name:"py"},{type:void 0}));return o=e,e.onerror=t=>{let n;t.preventDefault(),clearInterval(i),d.SB.popeye.running=!1,t.filename?(e.terminate(),n="An error occur in the Popeye module. Please submit an issue about this.\n"+t.message):n="Unable to load the Popeye module; please check your network connection.",d.SB.popeye.output=I(n),o=void 0},e.onmessage=e=>{let t=e.data;if(++r>3e3)d.SB.popeye.intOutput+="<br>".concat(I("Too much output. Please modify the input to prevent excessive output."),"<br>"),P();else if(-2===t)(a/=2)<16&&(d.SB.popeye.intOutput+="<br>".concat(I("Not enough memory to run Popeye."),"<br>")),P(a>=16);else if(null===t)P();else if(B=B||function(){return!!C&&C.scrollTop+C.clientHeight+30>C.scrollHeight}(),"string"==typeof t.text&&(d.SB.popeye.intOutput+=R(t.text)+"<br>"),"string"==typeof t.err){if("Calling stub instead of signal()"==t.err)return;d.SB.popeye.error=!0,d.SB.popeye.intOutput+=I(R(t.err))}},e}function E(){let e=N(),t=d.SB.popeye;r=0,t.intOutput="",t.error=!1,t.running=!0,i=setInterval(D,500),l=performance.now(),e.postMessage({mem:a,input:"Opti NoBoard\n"+t.intInput})}function I(e){return'<span class="text-danger">'.concat(e,"</span>")}function R(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}let O=RegExp(String.raw(k(),["remark","2author","2origin","3title"].map(g.d).join("|")),"igm"),W=RegExp(String.raw(U(),(0,g.d)("5protocol")),"i"),M=(0,g.M)("3beginProblem"),j=(0,g.M)("3endProblem"),V=/\bnext\s[\s\S]+$/i,T=(0,g.d)("3forsyth"),L=(0,g.d)("2pieces");function z(e){if(RegExp("".concat(T,"|").concat(L),"i").test(e)){var t;let n=(0,S.F)(e)||(null===(t=e.match(RegExp(String.raw(x(),T),"i")))||void 0===t?void 0:t[1]);if(n)return{fen:n,imitators:[],fromInput:!0}}let{w:n,h:o}=d.h.board;if(n!=w.Dm||o!=w.Dm)throw Error();let a=[],l=(0,u.Ox)().map((e,t)=>{if(""==e)return e;let n=d.h.board.SN?e.replace("s","n").replace("S","N").replace("g","s").replace("G","S"):e;if(!(n=(0,y.Os)(n)))throw(0,_.Z)("Unspecified fairy piece: "+e);return n.match(/^=?i$/i)?(a.push((0,h.MA)(t)),""):n});return{fen:(0,h.N0)(l),imitators:a,fromInput:!1}}async function q(e){let t=d.SB.popeye;t.steps=[...C.querySelectorAll("span")],0!=t.steps.length&&(F(0,!0),t.playing=!0,e&&await (0,m.zD)(),(0,m.t1)([]),(0,c.Y3)(p.SI))}async function F(e,t){let n=d.SB.popeye,o=n.steps[e],a=n.steps[n.index];if(a&&a.dataset.anime&&(e==n.index-1&&!a.dataset.before||o.dataset.fen==a.dataset.before))await (0,b.jt)(o.dataset.fen,a.dataset.fen,a.dataset.anime,!0);else{var l;let t=o.dataset.before||(null===(l=n.steps[e-1])||void 0===l?void 0:l.dataset.fen);o.dataset.anime&&t?await (0,b.jt)(t,o.dataset.fen,o.dataset.anime):((0,b.p_)(),(0,u.dd)(o.dataset.fen))}!t&&a.classList.remove("active"),n.index=e,o.classList.add("active"),(0,c.Y3)(()=>(function(e){let t=e.offsetTop-10;C.scrollTop>t&&(C.scrollTop=t);let n=e.offsetTop+e.clientHeight-C.clientHeight+10;C.scrollTop<n&&(C.scrollTop=n);let o=e.offsetLeft-10;C.scrollLeft>o&&(C.scrollLeft=o);let a=e.offsetLeft+e.clientWidth-C.clientWidth+10;C.scrollLeft<a&&(C.scrollLeft=a)})(o))}let Q={run(){gtag("event","fen_popeye_run"),a=512;try{let e=d.SB.popeye;e.intInput=function(e){e=e.replace(O,"").replace(W,"").replace(M,"").replace(V,"").replace(j,"");let t=d.SB.popeye,{fen:n,imitators:o,fromInput:a}=z(e);return(t.initFEN=n,a)?((0,u.dd)((0,f.Vl)(n)),e):(o.length&&(e+="\ncond imitator "+o.join("")),"fors ".concat(n,"\n").concat(e))}(e.input),E()}catch{}},cancel(){o&&P()},play(){let e=d.SB.popeye;C.scrollTop=C.scrollLeft=0,gtag("event","fen_popeye_play"),e.output=(0,f.l5)(e.intInput,e.initFEN,e.intOutput),(0,c.Y3)(q)},step(e){let t=d.SB.popeye;if(!t.playing)return;let n=t.steps.indexOf(e.target);n>=0&&n!=t.index&&(e.preventDefault(),F(n))},exit(){let e=d.SB.popeye;(0,u.dd)(e.steps[0].dataset.fen),e.output=e.intOutput,e.playing=!1,(0,m.t1)([]),(0,c.Y3)(p.SI)},moveBy(e){let t=d.SB.popeye,n=t.index;(n+=e)<0&&(n=0),n>t.steps.length-1&&(n=t.steps.length-1),Q.move(n)},move(e){e!=d.SB.popeye.index&&F(e)},editMap(){gtag("event","fen_popeye_edit_map"),d.SB.popeye.mapping=Y(d.h.popeye.pieceMap),d.SB.popeye.editMap=!0},resetMap(){d.SB.popeye.mapping=Y(y.BC)},saveMap(){let e=d.SB.popeye.mapping.toUpperCase().split("\n"),t={};for(let n of e){let[e,o]=n.replace(/\s/g,"").split("=");e.match(K)&&o&&o.match(G)&&(t[e]=o)}d.h.popeye.pieceMap=t,d.SB.popeye.editMap=!1}};function Y(e){let t=[];for(let n in e)t.push("".concat(n,"=").concat(e[n]));return t.join("\n")}let K=/^(\*[1-3][KQBNRP]|(\*[1-3])?[CXSTAD]|''..|'.)$/,G=new RegExp("^".concat(y.P,"$"))},7737:function(e,t,n){n.d(t,{E:function(){return o}});function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{id:Date.now()+t,...e}}},6384:function(e,t,n){let o;n.d(t,{jt:function(){return d},n4:function(){return u},p_:function(){return f}});var a=n(3438),l=n(1019),i=n(9857),r=n(9683),s=n(6919),c=n(737);let u={};function d(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return f(),(o=new p(e,t,n,a)).promise}function f(e){o&&o.stop(e?u.callback:void 0)}class p{stop(e){cancelAnimationFrame(this.request),o=void 0,e&&e(this.after),this.resolve()}step(e){let{ctx:t,options:n,callback:o}=u;!this.startTime&&(this.startTime=e);let a=(e-this.startTime)/150,s=Math.floor(a);if(s>=this.stages.length)return this.stop(o);let d=this.reverse?this.stages.length-1-s:s;s>this.cursor?(this.cursor=s,(0,i.DW)(t,this.stages[d].board,n,r.u),this.background=t.getImageData(0,0,t.canvas.width,t.canvas.height)):t.putImageData(this.background,0,0);let f=(0,c.t_)(n);t.save(),t.translate(f.offset.x,f.offset.y);let p=(0,l.N)(n,r.u),m=a-Math.floor(a);for(let e of(this.reverse&&(m=1-m),this.stages[d].moves)){let o=e.from.x*(1-m)+e.to.x*m,a=e.from.y*(1-m)+e.to.y*m;(0,i.am)(t,a,o,e.p,{assets:p,options:n,dpr:r.u})}t.restore(),this.request=requestAnimationFrame(this.anime)}constructor(e,t,n,o){(0,a._)(this,"promise",void 0),(0,a._)(this,"after",void 0),(0,a._)(this,"reverse",void 0),(0,a._)(this,"resolve",void 0),(0,a._)(this,"cursor",void 0),(0,a._)(this,"stages",void 0),(0,a._)(this,"anime",void 0),(0,a._)(this,"request",void 0),(0,a._)(this,"background",void 0),(0,a._)(this,"startTime",void 0),this.after=o?e:t,this.reverse=o,this.promise=new Promise(e=>this.resolve=e),this.cursor=-1,this.stages=[];let l=n.split(","),i=(0,s.S3)(e),{h:r,w:c}=u.options;for(let e of l){let t=[],n=e.match(/[`a-z]\d(=(\*\d)?[A-Z])?/g);for(let e=0;e<n.length;e+=2){var d;let o=n[e],a=n[e+1],l=(0,s.Di)(o,c,r),u={p:i[l],promo:null===(d=a.match(/[=](.+)$/))||void 0===d?void 0:d[1],from:(0,s._n)(o,r),to:(0,s._n)(a,r)};i[l]="",t.push(u)}for(let e of(this.stages.push({board:i.concat(),moves:t}),t))i[e.to.y*c+e.to.x]=e.promo||e.p}this.anime=this.step.bind(this),this.request=requestAnimationFrame(this.anime)}}},1019:function(e,t,n){n.d(t,{$:function(){return s},N:function(){return r}});var o=n(2506);let a=document.createElement("canvas"),l=a.getContext("2d"),i=new Map;function r(e,t){let n=e.set+e.size*t;return i.get(n)}async function s(e,t,n){let o=t.set+t.size*n;if(i.has(o))return i.get(o);let a=await c(e,t,n),l=await u(a);return i.set(o,l),l}async function c(e,t,n){let{set:i,size:r}=t;e+="/x"+n;let[s,c]=await Promise.all([u("".concat(e,"/").concat(i).concat(r,".png")),u("".concat(e,"/symbol").concat(r,".png"))]);return a.width=r*n*o._N,a.height=r*n*12,l.drawImage(s,0,0),l.drawImage(c,0,r*n*6),a.toDataURL()}function u(e){return new Promise((t,n)=>{let o=new Image;o.onload=()=>t(o),o.onerror=()=>n(),o.src=e})}},9857:function(e,t,n){n.d(t,{DW:function(){return h},V5:function(){return s},am:function(){return g}});var o=n(6919),a=n(1019),l=n(737),i=n(2506),r=n(3276);let s=["k","q","b","n","r","p","c","x","s","t","a","d"],c=document.createElement("canvas"),u=c.getContext("2d"),d=document.createElement("canvas"),f=d.getContext("2d"),p={26:"YdVh1QDVYdVh",32:"AAAKAAAAo/+jAAr/AP8KAKP/owAAAAoAAA==",38:"AAw+DAAM3P/cDD7/AP8+DNz/3AwADD4MAA==",44:"AC9yLwAv+f/5L3L/AP9yL/n/+S8AL3IvAA==",52:"A3i2eAN4////eLb/AP+2eP///3gDeLZ4Aw==",64:"AAAEHgQAAAA/5v/mPwAE5v///+YEHv//AP//HgTm////5gQAP+b/5j8AAAAEHgQAAA==",76:"AARZhFkEAAS7////uwRZ//////9ZhP//AP//hFn//////1kEu////7sEAARZhFkEAA==",88:"AEfE68RHAEf8/////EfE///////E6///AP//68T//////8RH/P////xHAEfE68RHAA=="},m={};function h(e,t,n,o,r,s){let{w:h,h:b,border:S,offset:w,margin:_}=(0,l.t_)(n,s),k=(0,a.N)(n,o);e.canvas.width=h*o,e.canvas.height=b*o,e.save(),e.scale(o,o);let U="classic"==n.bg,x=r||U;e.translate(w.x,w.y);for(let a=0;a<n.h;a++)for(let l=0;l<n.w;l++)!x&&y(e,a,l,n),g(e,a,l,t[a*n.w+l],{assets:k,options:n,dpr:o});if(e.restore(),U&&!r){(function(e,t,n){let o=e.canvas;d.width=c.width=o.width,d.height=c.height=o.height,u.drawImage(o,0,0),e.save(),e.fillStyle="white",e.fillRect(0,0,o.width,o.height),e.globalCompositeOperation="destination-in",e.drawImage(c,0,0),e.restore(),e.save();let a=function(e){if(!(e in m)){let t=atob(p[e]),n=[];for(let e=0;e<t.length;e++)n.push(t.charCodeAt(e));m[e]=n}return m[e]}(t*n),l=Math.sqrt(a.length),i=(l-1)/2;for(let t=0;t<l;t++)for(let n=0;n<l;n++){let r=a[n*l+t];0!=r&&(e.globalAlpha=r/255,f.drawImage(o,t-i,n-i))}e.restore()})(e,n.size,o),e.save(),e.scale(o,o),e.translate(w.x,w.y);for(let t=0;t<n.h;t++)for(let o=0;o<n.w;o++)y(e,t,o,n);e.restore(),e.drawImage(d,0,0),e.drawImage(d,0,0),e.drawImage(d,0,0),e.drawImage(c,0,0)}e.scale(o,o),void 0===s&&n.coordinates&&(e.save(),e.translate(w.x,w.y),function(e,t,n){let{size:o,w:a,h:r}=t;e.font="15px sans-serif",e.strokeStyle="black",e.lineWidth=2,e.fillStyle="white",e.lineJoin="round";for(let t=0;t<r;t++){let a=(t+1).toString(),i=e.measureText(a),s=o*(r-t)-o/2+5,c=(l.Cd-i.width)/2-l.Cd-n;e.strokeText(a,c,s),e.fillText(a,c,s)}for(let t=0;t<a&&t<26;t++){let a=String.fromCharCode(i.oh+t),s=e.measureText(a),c=o*r+l.Cd+n-5,u=o*t+(o-s.width)/2;e.strokeText(a,u,c),e.fillText(a,u,c)}}(e,n,S.size),e.restore()),!r&&function(e,t,n,o,a){e.save(),e.translate(a.x,0),n-=a.x,o-=a.y;let l=0;for(let a=0;a<t.array.length;a++){let i=t.array[a];if(e.strokeStyle=a%2?"white":"black",0==i)continue;e.lineWidth=i;let r=t.size-l-i/2;e.strokeRect(r,r,n-2*r,o-2*r),l+=i}e.restore()}(e,S,h,b,_)}function g(e,t,n,a,l){let{assets:i,options:c,dpr:u}=l,d=function(e,t){void 0===e&&(e="");let n=!!e&&e.startsWith("-");n&&(e=e.substring(1));let a=e.match(/^\*(\d)/),l=a&&a[1]?Number(a[1]):void 0;void 0!==l&&(e=e.substring(2)),l=Number(l)%r.mi.full,t.SN&&(e=(0,o.hv)(e,!1,!0));let i=e.toLowerCase(),c=s.indexOf(i),u=e.startsWith("'");return c<0&&!u?null:{neutral:n,rotate:l,isText:u,value:e,lower:i,typeIndex:c}}(a,c);if(!d)return;let{neutral:f,rotate:p,isText:m,value:h,lower:g,typeIndex:y}=d;e.save();let b=c.blackWhite,S=function(e,t){let{neutral:n,value:o,lower:a}=e;return n?t?0:2:o==a?0:1}(d,b),w=function(e,t,n,o){return e&&n?"n"==t?o.knightOffset:.5:1}(f,g,b,c),[_,k]=[p+1&2?1:0,2&p?1:0],{size:U}=c;e.translate((n+_)*U,(t+k)*U),0!==p&&e.rotate(Math.PI/2*p),m?function(e,t,n){var a;e.save();let l=o.Nv.test(t),i=n-4;e.font="".concat(i,"px sans-serif");let r=n-2,s=e.measureText(t);if(l&&s.width>r){let n=r/s.width;e.font="".concat(i*n,"px sans-serif"),s=e.measureText(t)}let c=(a=l?e.measureText("M"):s).actualBoundingBoxAscent-a.actualBoundingBoxDescent,u=(n-Math.min(s.width,r))/2,d=Math.max((n-c)/2,0);e.fillStyle="black",e.fillText(t,u,n-d,r),e.restore()}(e,h.substring(h.startsWith("''")?2:1),U):(e.drawImage(i,S*U*u,y*U*u,U*w*u,U*u,0,0,U*w,U),f&&b&&e.drawImage(i,(1+w)*U*u,y*U*u,U*(1-w)*u,U*u,U*w,0,U*(1-w),U)),e.restore()}function y(e,t,n,o){let a=function(e,t,n){if("mono"==e)return 1;let o=(t+n)%2;return"inverted"!=e&&(o=1-o),o}(o.pattern,t,n),l=o.size;e.save(),e.translate(n*l,t*l),"classic"==o.bg?(e.strokeStyle="black",e.lineWidth=l/60,e.fillStyle="#fff",e.fillRect(0,0,l,l),!a&&function(e,t){e.beginPath();let n=t/7.5;for(let o=0;o<t;o+=n)e.moveTo(t-o,0),e.lineTo(0,t-o),o>0&&(e.moveTo(o,t),e.lineTo(t,o));e.stroke()}(e,l)):(e.fillStyle=function(e,t){if("classic"==t)return"none";if("gray"==t)return e?"#fff":"#bbb";if("green"==t)return e?"#EEEED2":"#769656";else return e?"#FFCE9E":"#D18B47"}(a,o.bg),e.fillRect(0,0,l,l)),e.restore()}},5547:function(e,t,n){n.d(t,{Br:function(){return E},G2:function(){return O},Kv:function(){return h},Sk:function(){return N},Uw:function(){return U},ii:function(){return P},pz:function(){return R},t1:function(){return C},wY:function(){return I},zD:function(){return b}});var o=n(899),a=n(9391),l=n(3369),i=n(9857),r=n(1019),s=n(737),c=n(9683),u=n(6384),d=n(6919),f=n(9843),p=n(2506),m=n(3276);let h="k,K,-k,q,Q,-q,b,B,-b,n,N,-n,r,R,-r,p,P,-p,c,C,-c,x,X,-x".split(","),g="k,q,b,n,r,p,c,x,K,Q,B,N,R,P,C,X,-k,-q,-b,-n,-r,-p,-c,-x".split(",");function y(){return a.h.board.exHigh?2:1}async function b(){a.i7.loading=!0;let e=[(0,r.$)("./assets",a.h.board,c.u)],t=y();c.u!=t&&e.push((0,r.$)("./assets",a.h.board,t)),await Promise.all(e),a.i7.loading=!1}let S=o.m8.getContext("2d"),w=o.S8.getContext("2d"),_=o.in.getContext("2d"),k=o.Ab.getContext("2d"),U=document.createElement("canvas"),x=U.getContext("2d"),B={except:void 0,data:void 0};function C(e){e?B.except=e:e=B.except;let t=Object.assign({},a.h.board,a.i7.hor?{w:p.Dm,h:p._N}:{w:p._N,h:p.Dm}),n=function(){let e=a.i7.hor?g:h;return a.SB.play.playing&&"retro"==a.SB.play.mode&&(e=e.concat(),a.i7.hor?(e[6]="p",e[14]="P"):(e[18]="p",e[19]="P")),e}();(0,i.DW)(_,n,t,c.u,!1,a.i7.hor);let{size:o}=a.h.board;if((0,a.I3)()){let t="retro"==a.SB.play.mode;_.save();let{offset:n}=(0,s.t_)(a.h.board,a.i7.hor);_.translate(n.x,n.y),t&&function(e){_.save(),_.font="".concat(e/2,"px sans-serif"),_.strokeStyle="black",_.lineWidth=e/12,_.fillStyle="white",_.lineJoin="round",D(1,m.wg.x),D(2,m.wg.x),_.restore()}(o),function(e,t){_.save(),_.globalAlpha=a.i7.isDark?.5:.4,_.fillStyle="black";for(let n=0;n<p._N;n++)for(let o=0;o<p.Dm;o++){if(null==e?void 0:e.includes(o*p._N+n))continue;let[l,i]=a.i7.hor?[o,n]:[n,o];_.fillRect(l*t,i*t,t,t)}_.restore()}(e,o),t&&function(e,t){_.save();let n=a.SB.play.retro,o=e[0]==m.V1.bQ?0:1;_.lineWidth=t/12,_.strokeStyle="#0d6efd",n.uncapture&&A(o,i.V5.indexOf(n.uncapture)),n.unpromote&&A(1-o,5),_.restore()}(e,o),_.restore()}else if((0,i.DW)(k,n,t,c.u,!0,a.i7.hor),a.i7.selection){_.save();let{offset:e}=(0,s.t_)(a.h.board,a.i7.hor);_.lineWidth=o/12,_.strokeStyle="#0d6efd",_.translate(e.x,e.y);let t=h.indexOf(a.i7.selection),n=t%p._N,l=(t-n)/p._N;A(n,l),_.restore()}}u.n4.ctx=S;function D(e,t){let{size:n}=a.h.board,o=n/15;a.i7.hor&&([e,t]=[t,e]);let l=_.measureText("ep"),i=l.width,r=l.actualBoundingBoxDescent;_.strokeText("ep",e*n-i-o,t*n-r-o),_.fillText("ep",e*n-i-o,t*n-r-o)}function A(e,t){let{size:n}=a.h.board,o=n/8;a.i7.hor&&([e,t]=[t,e]);_.beginPath(),!function(){for(var a=arguments.length,l=Array(a),i=0;i<a;i++)l[i]=arguments[i];for(let a of l){_.moveTo(e*n+o*(a[0][0]+.5),t*n+o*(a[0][1]+.5));for(let l=1;l<a.length;l++)_.lineTo(e*n+o*(a[l][0]+.5),t*n+o*(a[l][1]+.5))}}([[0,2],[0,0],[2,0]],[[5,0],[7,0],[7,2]],[[7,5],[7,7],[5,7]],[[0,5],[0,7],[2,7]]),_.stroke()}async function P(e){e?B.data=e:e=B.data||(0,l.Ox)();let t=a.h.board;if((0,i.DW)(S,e,t,c.u),(0,i.DW)(x,e,t,y()),function(e){let t=0,n=0,o=0,l=0;for(let a of e)""!=a&&(a.startsWith("'")?l++:a.startsWith("-")?o++:a==a.toUpperCase()?t++:n++);a.i7.pieceCount="(".concat(t,"+").concat(n).concat(o>0?"+"+o:"").concat(l>0?"+"+l:"",")")}(e),!a.i7.dragging&&((0,i.DW)(w,e,t,c.u,!0),(0,l.qA)()),location.protocol.startsWith("http")){let e=document.getElementById("Save");e.href&&URL.revokeObjectURL(e.href),o.fr.src=e.href=URL.createObjectURL(await E())}}function N(e){let{w:t,h:n}=a.h.board;(0,i.DW)(e,(0,d.Q5)(t*n),a.h.board,c.u)}function E(){return new Promise(e=>U.toBlob(e))}function I(){N(o.ut.getContext("2d")),R()}function R(){P(),C(),a.h.project.length&&(0,f.O)()}async function O(){await b(),P()}}},t={};function n(o){var a=t[o];if(void 0!==a)return a.exports;var l=t[o]={exports:{}};return e[o].call(l.exports,l,l.exports,n),l.exports}n.m=e,n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(t,o){return n.f[o](e,t),t},[]))},n.u=function(e){return"471"===e?"static/js/async/chess.ccd03eb4.js":"946"===e?"static/js/async/olive.bca279fb.js":"936"===e?"static/js/async/ptt.6c7ebf7d.js":"10"===e?"static/js/async/py.22fd8ba0.js":""+e+".javascript"},n.miniCssF=function(e){return""+e+".css"},n.h=function(){return"8d4eabb3d11df977"},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},(()=>{var e={},t="fen-tool:";n.l=function(o,a,l,i){if(e[o]){e[o].push(a);return}if(void 0!==l){for(var r,s,c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==o||d.getAttribute("data-webpack")==t+l){r=d;break}}}!r&&(s=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",t+l),r.src=o),e[o]=[a];var f=function(t,n){r.onerror=r.onload=null,clearTimeout(p);var a=e[o];if(delete e[o],r.parentNode&&r.parentNode.removeChild(r),a&&a.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=f.bind(null,r.onerror),r.onload=f.bind(null,r.onload),s&&document.head.appendChild(r)}})(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e=[];n.O=function(t,o,a,l){if(o){l=l||0;for(var i=e.length;i>0&&e[i-1][2]>l;i--)e[i]=e[i-1];e[i]=[o,a,l];return}for(var r=1/0,i=0;i<e.length;i++){for(var o=e[i][0],a=e[i][1],l=e[i][2],s=!0,c=0;c<o.length;c++)(!1&l||r>=l)&&Object.keys(n.O).every(function(e){return n.O[e](o[c])})?o.splice(c--,1):(s=!1,l<r&&(r=l));if(s){e.splice(i--,1);var u=a();void 0!==u&&(t=u)}}return t}})(),(()=>{n.p="/fen-tool/";var e,t,o={max:2,addQuery:!0},a=o.max||3,l={},i=/[?#].*$/;function r(e,t,n,a,l){var r,s;return e.replace(t,n).replace(i,"")+(r=a+1,s=l,!0===o.addQuery?""!==s?"".concat(s,"&retry=").concat(r):"?retry=".concat(r):"function"==typeof o.addQuery?o.addQuery({times:r,originalQuery:s}):"")}var s={},c=n.e,u=n.u,d=null!==(e=null!==(t=n.miniCssF)&&void 0!==t?t:n.k)&&void 0!==e?e:function(){return null},f=n.l,p="[@rsbuild/plugin-assets-retry] ";function m(e,t,i,f,h,g,y,b){for(var S=arguments.length>8&&void 0!==arguments[8]?arguments[8]:{count:0},w=arguments.length,_=Array(w>9?w-9:0),k=9;k<w;k++)_[k-9]=arguments[k];var U=c.apply(void 0,[e,t,i,f,h,g,y,b,S].concat(_));try{var x=u(e),B=d(e);"undefined"!=typeof window&&(x&&(window.__RB_ASYNC_CHUNKS__[x]=!0),B&&(window.__RB_ASYNC_CHUNKS__[B]=!0))}catch(e){console.error(p,"get original script or css filename error",e)}return"number"!=typeof(null==S?void 0:S.count)?U:(S.count+=1,U.catch(function(c){var d,w,k,U,x=S.count-1;try{var B=function(e,t){var a,i,c,d,f=(a=e,i=t,null===(c=l[a])||void 0===c?void 0:c[i]),p=t+1;if(0===t||void 0===f)d=function(e){var t,a,l,i=u(e),s=n.p,c=s.startsWith("/")?window.origin+s+i:s+i,d=(t=c.split("?")[1])?"?".concat(t.split("#")[0]):"",f=null!==(a=null===(l=o.domain)||void 0===l?void 0:l[0])&&void 0!==a?a:window.origin;return{nextDomain:f,nextRetryUrl:r(c,f,f,0,d),originalScriptFilename:i,originalSrcUrl:c,originalQuery:d}}(e),l[e]=[];else{var m,h,g,y,b,S=f.originalScriptFilename,w=f.originalSrcUrl,_=f.originalQuery,k=(m=f.nextDomain,g=null!==(h=o.domain)&&void 0!==h?h:[],y=function(e){for(var t,n=null!==(t=o.domain)&&void 0!==t?t:[],a="",l=0;l<n.length;l++)if(-1!==e.indexOf(n[l])){a=n[l];break}return a||window.origin}(m),b=g.indexOf(y),g[(b+1)%g.length]||m);d={nextDomain:k,nextRetryUrl:r(f.nextRetryUrl,f.nextDomain,k,t,_),originalScriptFilename:S,originalSrcUrl:w,originalQuery:_}}return l[e][p]=d,s[e]=d,d}(e,x);w=B.originalScriptFilename,k=B.nextRetryUrl,U=B.nextDomain}catch(e){throw console.error(p,"failed to get nextRetryUrl",e),c}var C,D=!!(null==c||null===(d=c.message)||void 0===d?void 0:d.includes("CSS chunk")),A=function(e){return{times:e,domain:U,url:k,tagName:D?"link":"script",isAsyncChunk:!0}},P=A(x);if(x>=a)throw c.message=null!==(C=c.message)&&void 0!==C&&C.includes("retries:")?c.message:"Loading chunk ".concat(e,' from "').concat(w,'" failed after ').concat(a,' retries: "').concat(c.message,'"'),"function"==typeof o.onFail&&o.onFail(P),c;var N=o.test;if(N){if("string"==typeof N){var E=new RegExp(N);N=function(e){return E.test(e)}}if("function"!=typeof N||!N(k))throw c}if(o.domain&&o.domain.length>0&&-1===o.domain.indexOf(U))throw c;return"function"==typeof o.onRetry&&o.onRetry(P),m.apply(void 0,[e,t,i,f,h,g,y,b,S].concat(_)).then(function(e){var t=(null==S?void 0:S.count)===x+2;if("function"==typeof o.onSuccess&&t){var n=A(x+1);o.onSuccess(n)}return e})}))}function h(e,t,n,o){for(var a=s[o],l=arguments.length,i=Array(l>4?l-4:0),r=4;r<l;r++)i[r-4]=arguments[r];return f.apply(void 0,[a?a.nextRetryUrl:e,t,n,o].concat(i))}!function(){"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{n.e=m,n.l=h}catch(e){console.error(p,"Register async chunk retry runtime failed",e)}}()})(),n.rv=function(){return"1.1.8"},(()=>{n.b=document.baseURI||self.location.href;var e={980:0};n.f.j=function(t,o){var a=n.o(e,t)?e[t]:void 0;if(0!==a){if(a)o.push(a[2]);else{var l=new Promise(function(n,o){a=e[t]=[n,o]});o.push(a[2]=l);var i=n.p+n.u(t),r=Error();n.l(i,function(o){if(n.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var l=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;r.message="Loading chunk "+t+" failed.\n("+l+": "+i+")",r.name="ChunkLoadError",r.type=l,r.request=i,a[1](r)}},"chunk-"+t,t)}}},n.O.j=function(t){return 0===e[t]};var t=function(t,o){var a=o[0],l=o[1],i=o[2],r,s,c=0;if(a.some(function(t){return 0!==e[t]})){for(r in l)n.o(l,r)&&(n.m[r]=l[r]);if(i)var u=i(n)}for(t&&t(o);c<a.length;c++)s=a[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(u)},o=self.webpackChunkfen_tool=self.webpackChunkfen_tool||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),n.ruid="bundler=rspack@1.1.8";var o=n.O(void 0,["454","165"],function(){return n("3813")});o=n.O(o)})();
\ No newline at end of file
+(()=>{"use strict";var e={9843:function(e,t,n){let o;n.d(t,{O:function(){return f},S:function(){return d}});var a=n(6919),l=n(737);let i=document.currentScript,r="img[fen]",s=document.createElement("iframe");function c(e){let t=new MessageChannel;t.port1.onmessage=t=>{e.src=t.data,e.title=o.getTitle(n,e.dataset)};let n=e.getAttribute("fen"),i=(0,l.D_)(Object.assign({},o.getDefault(),e.dataset)),r=(0,a.A1)(n);r&&Object.assign(i,r);let{w:c,h:u}=(0,l.t_)(i);e.width=c,e.height=u,s.contentWindow.postMessage({fen:n,options:i},"*",[t.port2])}function u(e){e instanceof Element&&(e.matches(r)?c(e):e.querySelectorAll(r).forEach(e=>c(e)))}async function d(e){let t=new URL(i.src).origin,n=new URL(t+"/fen-tool/api/");o=e,document.head.appendChild(s),await new Promise(e=>{let t=n=>{n.source==s.contentWindow&&(removeEventListener("message",t),e())};addEventListener("message",t),s.src=n.toString()});let a=document.documentElement;new MutationObserver(e=>{for(let t of e)if("attributes"==t.type){let e=t.attributeName.toLowerCase(),n=e.startsWith("data");t.target==i&&n&&u(document.body),"IMG"==t.target.nodeName&&("fen"==e||n)&&c(t.target)}else for(let e of t.addedNodes)u(e)}).observe(a,{childList:!0,attributes:!0,subtree:!0}),u(a)}function f(){u(document.body)}s.style.display="none"},4109:function(e,t,n){n.d(t,{Ar:function(){return U},SI:function(){return S},l:function(){return y},q_:function(){return _}});var o=n(4881),a=n(4097),l=n(899),i=n(9391),r=n(5547),s=n(3369),c=n(737),u=n(9683),d=n(9843),f=n(2506);let p=document.getElementById("Zone"),m=document.getElementById("DragZone"),h=document.getElementById("EditZone");function g(){return document.body.clientWidth/(i.SB.split?2:1)}async function y(e,t){let n=i.h.board,a={};for(let t in e)a[t]=e[t]!==n[t];Object.assign(n,e);let{border:p,margin:m,w:h,h:y}=(0,c.t_)(n),b=function(e,t,n){let o=w();return g()<(e.w+f._N)*e.size+t.x+4*n.size+4.2*o}(n,m,p);a.mode=b!==i.i7.hor,i.i7.hor=b;let _=a.w||a.h;(_||t)&&(0,s.co)();let k=t||a.set||a.size,U=k||a.border,x=U||_,B=U||a.mode;B&&function(e,t,n){let o=(f._N*e+2*t)*u.u,a=(f.Dm*e+2*t)*u.u;i.i7.hor?[o,a]=[a+n.x*u.u,o]:a+=n.y*u.u,(l.in.width!==o||l.in.height!==a)&&(l.Ab.width=l.in.width=o,l.Ab.height=l.in.height=a)}(n.size,p.size,m),x&&function(e,t){let n=e*u.u,o=t*u.u;(l.m8.width!==n||l.m8.height!==o)&&(l.ut.width=l.S8.width=l.m8.width=n,l.ut.height=l.S8.height=l.m8.height=o),(0,r.Sk)(l.ut.getContext("2d"))}(h,y),S(),k&&(await (0,r.zD)(),i.h.project.length&&(0,d.O)()),x&&(0,r.ii)(),B&&(0,r.t1)(),(0,o.Y3)(S)}document.addEventListener("visibilitychange",()=>{"visible"==document.visibilityState&&((0,r.ii)(),(0,r.t1)())});function b(e){let{w:t,h:n}=i.h.board,o=(0,s.Ox)();y(e),(0,s.v)(o,t,n)}function S(){p.style.maxWidth="calc(".concat(g(),"px + 1rem)"),l.m8.style.width=l.m8.width/u.u+"px",l.in.style.width=l.in.width/u.u+"px";let{w:e}=i.h.board,t=(0,i.nj)(void 0,void 0,f.Dm);if(i.i7.hor){if(e>f.Dm)l.in.style.width=t.width+"px";else if(e<f.Dm){let{width:t}=(0,i.nj)(l.in,!0,e);l.m8.style.width=t+"px"}}s.nC.style.borderWidth="".concat(t.offset.y,"px ").concat(t.offset.r,"px ").concat(t.offset.b,"px ").concat(t.offset.x,"px");let n=w();i.h.board.collapse?(p.style.width="120%",p.style.width=m.clientWidth+4*n+"px"):p.style.width="unset",l.S8.style.width=l.m8.clientWidth+"px",l.S8.style.height=l.m8.clientHeight+"px",l.Ab.style.width=l.in.clientWidth+"px",l.Ab.style.height=l.in.clientHeight+"px",(0,s.gg)(t.s);p.clientWidth<m.clientWidth+l.m8.clientWidth+6*n?(h.style.marginTop=-m.clientHeight+"px",h.style.width=m.clientWidth+"px",i.i7.collapse=!0):(h.style.marginTop="0",h.style.width="unset",i.i7.collapse=!1)}function w(){return parseFloat(getComputedStyle(document.documentElement).fontSize)}async function _(){window.addEventListener("resize",()=>y({}));let e=i.yC.get("fen");await y({},!0),s.uz.draw=r.ii,s.uz.setOption=y,e?((0,s.dd)(e,!0),(0,s.qA)()):(0,s.uu)(),setTimeout(S,f.WT)}if(u.O.isTop)window.resizeIframe=function(){let e=document.getElementsByTagName("iframe")[0];e&&(e.style.minHeight=e.contentDocument.body.scrollHeight+"px")};else{function k(){try{parent.resizeIframe()}catch{}}"undefined"!=typeof ResizeObserver?new ResizeObserver(k).observe(document.body):new MutationObserver(k).observe(document.body,{childList:!0}),k()}let U={setDimension:b,setBorder(e){let t=(0,c.By)(e.value);t?(e.value=t,y({border:t})):e.value=i.h.board.border},get set(){return i.h.board.set},set set(v){y({set:v})},get size(){return i.h.board.size},set size(v){y({size:v})},get height(){return i.h.board.h},set height(v){b({h:v})},get width(){return i.h.board.w},set width(v){b({w:v})}};addEventListener("storage",e=>{if(e.storageArea==localStorage&&"settings"==e.key){let e=localStorage.getItem("settings"),t=e?JSON.parse(e):null;(0,a.n)(i.h,t,!0),y({},!0)}})},3369:function(e,t,n){n.d(t,{Ox:function(){return D},Qt:function(){return j},RI:function(){return m},Wc:function(){return T},X4:function(){return L},ZD:function(){return W},co:function(){return y},dd:function(){return x},gg:function(){return g},gx:function(){return V},mj:function(){return I},nC:function(){return f},oO:function(){return M},qA:function(){return C},tZ:function(){return E},uu:function(){return N},uz:function(){return p},v:function(){return P},xG:function(){return d},xL:function(){return A},zF:function(){return U}});var o=n(4881),a=n(899),l=n(6919),i=n(9391),r=n(6384),s=n(2506),c=n(3276);let u=["K","Q","k","q"],d=Array(s.cb),f=document.getElementById("Squares"),p={},m=(0,o.XI)("");function h(e){var t;null===(t=p.draw)||void 0===t||t.call(p,e)}function g(e){for(let t of(f.style.width=a.m8.clientWidth+"px",f.style.height=a.m8.clientHeight+"px",d))t.style.fontSize=e-10+"px",t.style.lineHeight=e-10+"px"}function y(){let{w:e,h:t}=i.h.board,n=e*t;f.style.gridTemplateColumns="repeat(".concat(e,", 1fr)"),f.style.gridTemplateRows="repeat(".concat(t,", 1fr)");for(let e=0;e<n||e<d.length;e++){if(!d[e]){let t=document.createElement("input");d[e]=t,t.type="text",t.addEventListener("input",_),t.addEventListener("change",w),t.addEventListener("focus",b),t.addEventListener("blur",S),t.classList.add("square"),f.appendChild(t)}d[e].style.display=e<n?"block":"none"}}function b(){if(this.style.zIndex="10",i.i7.collapse){let e=D();e[d.indexOf(this)]="",h(e)}this.select()}function S(){this.style.zIndex="unset",k(this)?N():i.i7.collapse&&h(D())}function w(){k(this),i.i7.collapse&&this.blur(),N()}function _(){if(!i.i7.collapse){let e=D();e[d.indexOf(this)]=(0,l.Fv)(this.value,i.h.board.SN),h(e)}}function k(e,t){let n=(0,l.Fv)(e.value,i.h.board.SN,t),o=n!==e.value;return e.value=n,o}function U(e,t){let n=e.value!==t;e.value=t,k(e),n&&N()}function x(e,t){let n=B(e);m.value=n[0]+(i.h.board.fullFEN?R():""),O(t)}function B(e){let t=e.split(" ");if(t[1]&&t[1].match(/^[wb]$/)&&(i.SB.play.turn=t[1]),t[2]&&t[2].match(/^(-|[kq]+)$/i))for(let e in i.SB.play.castle)i.SB.play.castle[e]=t[2].includes(e);return t[3]&&t[3].match(/^[a-h][36]$/)&&(i.SB.play.enPassant=t[3]),t[4]&&t[4].match(/^\d+$/)&&(i.SB.play.halfMove=Number(t[4])),t[5]&&t[5].match(/^\d+$/)&&(i.SB.play.fullMove=Number(t[5])),t}r.n4.options=i.h.board,r.n4.callback=x;function C(){let e=new URL(location.href).searchParams.get("fen")||l.TP,t=m.value.split(" ")[0],n=t==l.TP?"":"?fen="+encodeURIComponent(t);t!==e&&history.pushState(null,"",n||".")}function D(){let{w:e,h:t}=i.h.board;return d.slice(0,e*t).map(e=>e.value)}function A(){return D().map(e=>(0,l.hv)(e,!1,!0))}function P(e,t,n){let{w:o,h:a}=i.h.board;for(let l=0;l<a;l++)for(let a=0;a<o;a++){let i=d[l*o+a];l<n&&a<t?i.value=e[l*t+a]:i.value=""}N()}function N(){h(E())}function E(){let{w:e,h:t,fullFEN:n}=i.h.board,o=D();return m.value=(0,l.N0)(o,e,t)+(n?R():""),o}addEventListener("popstate",function(){if(i.SB.play.playing)return;let e=new URL(location.href).searchParams.get("fen");e&&x(e,!0)});function I(){let e=function(){let{w:e,h:t}=i.h.board;if(e!=s.Dm||t!=s.Dm)return null;let n=A();for(let e of n)if(""!=e&&!e.match(/^[kqbsnrp]$/i))return null;return(0,l.N0)(n)}();return e?e+R(!0):null}function R(e){let t=i.SB.play;!t.enPassant.match(/^[a-h][36]$/)&&(t.enPassant=""),e&&"pass"==t.mode&&t.enPassant&&"3"==t.enPassant[1]!=("b"==t.turn)&&(t.turn="b"==t.turn?"w":"b");let n="retro"==t.mode;e&&((n||!Number.isSafeInteger(t.halfMove)||t.halfMove<0)&&(t.halfMove=0),(n||!Number.isSafeInteger(t.fullMove)||t.fullMove<1)&&(t.fullMove=1));let o=n?"-":function(e){let t=D(),n="",o=i.SB.play.castle;return e?("K"==t[60]&&(o.K&&"R"==t[63]&&(n+="K"),o.Q&&"R"==t[56]&&(n+="Q")),"k"==t[4]&&(o.k&&"r"==t[7]&&(n+="k"),o.q&&"r"==t[0]&&(n+="q"))):(o.K&&(n+="K"),o.Q&&(n+="Q"),o.k&&(n+="k"),o.q&&(n+="q")),""==n?"-":n}(e),a=n?"-":t.enPassant||"-";return" ".concat(t.turn," ").concat(o," ").concat(a," ").concat(t.halfMove," ").concat(t.fullMove)}function O(e){var t;let n=m.value;W(n);let o=(0,l.C3)(n),a=(0,l.A1)(o),{w:r,h:s}=a||i.h.board,c=(0,l.S3)(o,r,s);null===(t=p.setOption)||void 0===t||t.call(p,{w:r,h:s});let u=o!=n;for(let e=0;e<r*s;e++)d[e].value=c[e],u=k(d[e])||u;u||e||!a?N():h(D())}function W(e){let t=i.SB.play,n=e.split(" ");if(1!=n.length){if(("w"==n[1]||"b"==n[1])&&(t.turn=n[1]),n[2])for(let e of u)t.castle[e]=n[2].includes(e);t.enPassant=n[3]&&"-"!=n[3]?n[3]:"","retro"!=t.mode&&(t.halfMove=Number(n[4]||0),t.fullMove=Number(n[5]||1))}}function M(){let e=!1;for(let t of d)e=k(t,!0)||e;e&&N()}function j(e){for(let t of d)t.readOnly=e}function V(e){if(e.anime){let t=(0,l.N0)(e,i.h.board.w,i.h.board.h);(0,r.jt)(m.value,t,e.anime)}else e.forEach((e,t)=>d[t].value=e),N()}function T(){for(let e of(Object.assign(i.SB.play,{turn:c.Il.white,enPassant:"",halfMove:0,fullMove:1}),u))i.SB.play.castle[e]=!0}let L={update:()=>{B(m.value),O(!0)},empty(){for(let e of d)e.value="";N()},reset(e){var t;null===(t=p.setOption)||void 0===t||t.call(p,{w:8,h:8}),(i.h.board.fullFEN||e)&&T(),x(l.J7)},color(e){for(let t of d){let n=t.value;!n.startsWith("'")&&""!=n&&(n.startsWith("-")&&(n=n.substr(1)),n=n.toLowerCase(),0==e&&(n="-"+n),1==e&&(n=n.toUpperCase()),t.value=n)}N()},fixSN(){for(let e of(gtag("event","fen_fix_sn"),d)){let t=e.value;!t.startsWith("'")&&""!=t&&(e.value=t.replace("s","n").replace("S","N"))}N()},invert(e){V((0,l.U_)(D(),e))}}},3813:function(e,t,n){let o,a,l,i,r,s,c,u,d,f,p,m,h,g;var y=n("4881"),b=n("9391"),S=n("3369"),w=n("4109"),_=n("899"),k=n("5547"),U=n("6384"),x=n("9683"),B=n("375");async function C(e){if(x.O.canCopyImg){let t=await e();return navigator.clipboard.write([new ClipboardItem({"image/png":t})])}throw(0,B.Z)('Image copying is not enabled in your browser.\n\nIf you\'re using Firefox, this can be enabled by the following.\n1. Visit "about:config" in your address bar.\n2. Search for "dom.events.asyncClipboard.clipboardItem".\n3. Toggle its value to true.\n4. Reload this tool.'),Error()}async function D(){if(x.O.canPaste)return await navigator.clipboard.readText();throw(0,B.Z)('Pasting text is not enabled in your browser.\n\nIf you\'re using Firefox on desktops or Firefox Nightly on Android, this can be enabled by the following.\n1. Visit "about:config" in your address bar.\n2. Search for "dom.events.asyncClipboard.readText".\n3. Toggle its value to true.\n4. Reload this tool.'),Error()}var A=n("9857"),P=n("6919"),N=n("3276"),E=n("2506"),I=n("7739");function R(e){let t=b.SB.play,n=t.moveNumber;(n+=e)<-1&&(n=-1),n>t.history.length-1&&(n=t.history.length-1),n!=t.moveNumber&&O(n)}function O(e){let t=b.SB.play,n=t.moveNumber,o=e>=0||0==n;if(Q.goto(t.history[e],o),o){let o=e==n-1,a=t.history[o?n:e],l=a.from+a.to;("k"==a.flags||"q"==a.flags)&&(l+=","+M(a)),(0,U.jt)(a.before,a.after,l,o!=(b.SB.play.mode==N.jl.retro))}}function W(e,t,n){let o=(0,P.MA)(e),l=(0,P.MA)(t);if(b.SB.play.mode==N.jl.retro){let e=a.retract({from:o,to:l,...b.SB.play.retro});return e&&(z(),q()),e}try{let e=a.move({from:o,to:l,promotion:n});if(!e)return!1;if("k"==e.flags||"q"==e.flags)return function(e){let t=(0,P.S3)(e.before),n=e.color==N.Il.white;return t[(0,P.Di)(e.from)]="",t[(0,P.Di)(e.to)]=n?"K":"k",{before:(0,P.N0)(t),after:e.after,move:M(e)}}(e);return!0}catch{return!1}}(0,b.t4)(()=>{if(b.SB.play.playing){let e=b.SB.play;e.playing=!1,Promise.all([(0,k.zD)(),T()]).then(()=>{L(),Q.goto(e.history[e.moveNumber])})}});function M(e){let t=e.color==N.Il.white,n="k"==e.flags,o=t?I.zi:I.TF;return(n?"h":"a")+o+(n?"f":"d")+o}function j(){(0,S.dd)(a.fen())}function V(e){return a.get((0,P.MA)(e)).color}async function T(){if(!o){let e=await n.e("471").then(n.bind(n,102));!o&&((o=e).Chess.options=b.h.PLAY,a=new o.Chess(b.SB.play),b.i7.module.chess=!0)}return o}function L(){Object.assign(b.SB.play,{playing:!0,pendingPromotion:!1}),(0,S.Qt)(!0),b.SB.play.mode==N.jl.retro?(z(),q()):(0,k.t1)([])}function z(){b.SB.play.retro={uncapture:void 0,unpromote:!1,ep:!1}}function q(){(0,k.t1)(a.turn()==N.Il.black?I.th.wr:I.th.br)}async function F(e){await T();try{a.loadGame(e),j(),L()}catch(e){e instanceof Error&&(0,B.Z)(e.message)}}let Q={async start(){try{let e=(0,S.mj)();if(!e)throw Error("Only orthodox chess is supported.");await T(),a.init(e),b.SB.play.over=a.overState(),L()}catch(e){e instanceof Error&&(0,B.Z)(e.message)}gtag("event","fen_play_"+b.SB.play.mode)},exit(){let e=b.SB.play.initFEN;b.SB.play.playing=!1,b.SB.play.game="",(0,S.dd)(e),(0,S.ZD)(e),(0,S.Qt)(!1),(0,k.t1)([])},goto(e,t){b.SB.play.pendingPromotion&&(b.SB.play.pendingPromotion=!1,(0,k.t1)([]));let n=a.goto(e);!t&&((0,U.p_)(),(0,S.dd)(n)),b.SB.play.mode==N.jl.retro&&(z(),q())},move(e){e!=b.SB.play.moveNumber&&O(e)},moveBy(e){R(e)},copyGame:()=>a.copyGame(),copyPGN:()=>a.copyPGN(),number:e=>o.number(e,b.SB.play.mode),format:e=>o.format(e,b.SB.play.mode),async pasteMoves(){let e=await D();try{a.addMoves(o.parseMoves(e))}catch(e){e instanceof Error&&(0,B.Z)(e.message)}j()},async pasteGame(){let e=await D();await F(e)}},Y=new URL(location.href).searchParams.get("play");null!==Y&&setTimeout(()=>{b.SB.tab=N.mQ.play,F(Y)},0);var K=n("737"),G=n("2519");function H(e){if(e.targetTouches){let t=e.target.getBoundingClientRect(),n=e.targetTouches[0]||e.changedTouches[0];e.clientX=n.clientX,e.clientY=n.clientY,e.offsetX=e.clientX-t.x,e.offsetY=e.clientY-t.y}return e}function Z(e,t){let{s:n,offset:o}=(0,b.nj)(),a=t.getBoundingClientRect(),l=Math.floor((e.clientY-a.top-o.y)/n);return{x:Math.floor((e.clientX-a.left-o.x)/n),y:l}}function $(e,t,n){return(t.x-e.x)*(n.y-e.y)-(n.x-e.x)*(t.y-e.y)}let X={x:0,y:0},J={x:0,y:0},ee=0,et=0,en=performance.now();function eo(e){let t=H(e);"pending"==b.i7.dragging&&function(e,t){let n=e.offsetX-t.x,o=e.offsetY-t.y;return Math.sqrt(n*n+o*o)}(t,X)>5&&(et=0,s?(u=x.O.isTouch?[]:null,function(e,t){ea(),r.style.display="block",t&&(t.value="",(0,S.uu)()),b.i7.dragging=!0,ec(e)}(t,i)):b.i7.dragging=!1),!0===b.i7.dragging&&(u&&u.push({x:t.clientX,y:t.clientY}),ec(t))}function ea(){b.i7.selection=null,(0,k.t1)([])}function el(e){(function(e){if(i&&"pending"==b.i7.dragging&&!b.SB.play.playing&&e.target==_.fr){let t=performance.now();t-ee<300&&i.focus(),ee=t,e.preventDefault(),b.i7.dragging=!1}})(e),r&&(r.style.display="none");let t=H(e);if(function(e){if(performance.now()-et>=250)return!1;if(e.target!=_.in||(0,b.I3)()){if(e.target==_.fr&&b.SB.popeye.playing){let{x:t}=Z(e,_.fr);return t<3&&G.wD.moveBy(-1),t>4&&G.wD.moveBy(1),!0}}else{let{x:t,y:n}=Z(e,_.in);if(b.i7.hor&&([t,n]=[n,t]),eu(t,n,E._N,E.Dm)){let e=k.Kv[n*E._N+t];b.i7.selection==e?b.i7.selection=null:b.i7.selection=e,(0,k.t1)([])}else ea();return b.i7.dragging=!1,!0}return!1}(t)||b.SB.popeye.playing||!b.i7.dragging)return;if(b.i7.dragging=!1,!s)return;let{w:n,h:o}=b.h.board,{x:d,y:f}=Z(t,_.m8),p=f*n+d,m=eu(d,f,n,o);if(b.SB.play.playing){let e;if(m){if(function(e,t){let n=b.SB.play.mode;return n!=N.jl.retro&&(n==N.jl.pass&&V(e)!=a.turn()&&a.switchSide(),!!a.checkPromotion((0,P.MA)(e),(0,P.MA)(t))&&(l=t,b.SB.play.pendingPromotion=!0,(0,k.t1)(a.turn()==N.Il.black?I.th.b:I.th.w),!0))}(c,p))return(0,S.zF)(S.xG[p],s);c!=p&&(e=W(c,p))}"object"==typeof e?(0,U.jt)(e.before,e.after,e.move):j()}else if(m){if((0,S.zF)(S.xG[p],s),i&&u&&u.length>10){var h;er(i,function(e,t){let n=0;for(let o=0,a=t.length-1;o<t.length;a=o++){let l=t[o],i=t[a];i.y<=e.y?l.y>e.y&&$(i,l,e)>0&&n++:l.y<=e.y&&0>$(i,l,e)&&n--}return n}(function(e){let t=0,n=0;for(let o of e)t+=o.x,n+=o.y;return t/=e.length,{x:t,y:n/=e.length}}(h=u),h)>0?N.mi.r90:N.mi.r270)}}else(0,S.qA)()}function ei(e){if((0,b.I3)())return;let{w:t,h:n}=b.h.board,{offset:o,s:a}=(0,b.nj)(),l=Math.floor((e.offsetX-o.x)/a),i=Math.floor((e.offsetY-o.y)/a);if(eu(l,i,t,n)){let n=S.xG[i*t+l];if(""==n.value)return;e.preventDefault();let o=performance.now();if(o-en<50)return;en=o,er(n,e.deltaY>0?N.mi.r90:N.mi.r270)}}function er(e,t){e.value=e.value.replace(/(^-?)(?:\*(\d))?([^-].*$)/,(e,n,o,a)=>{let l=(Number(o||0)+t)%N.mi.full;return n+(l?"*"+l:"")+a}),(0,S.uu)()}function es(e){if(et=performance.now(),b.SB.popeye.playing||b.i7.loading||0!=e.button&&!e.targetTouches||e.targetTouches&&e.targetTouches.length>1)return;let t=H(e);document.activeElement&&document.activeElement.blur();let n=this!=_.in,{offset:o,s:u}=n?(0,b.nj)():(0,b.nj)(_.in,b.i7.hor),{w:d,h:f}=b.h.board;X.x=t.offsetX,X.y=t.offsetY;let[p,m]=[o.x,o.y];J.x=Math.floor((X.x-p)/u),J.y=Math.floor((X.y-m)/u);let h=J.y*(n?d:E._N)+J.x;r=n?_.S8:_.Ab;let g=b.i7.selection;if(n&&g)return function(e,t,n,o,a){if(e.preventDefault(),eu(J.x,J.y,t,n)){let e=S.xG[a];e.value==o?e.value="":e.value=o,(0,S.uu)()}else ea()}(t,d,f,g,h);if(!b.SB.play.playing||(!n&&function(e){if(b.SB.play.pendingPromotion){b.i7.hor&&([J.x,J.y]=[J.y,J.x]);let e="p"==s?0:1;if(J.y>N.wg.k&&J.y<N.wg.p&&J.x==e){var t,n;t=c,n=A.V5[J.y],W(t,l,n)?(l<E.Dm&&(n=n.toUpperCase()),(0,S.zF)(S.xG[l],n)):j(),b.SB.play.pendingPromotion=!1,(0,k.t1)([])}}"retro"==b.SB.play.mode&&(e.preventDefault(),b.i7.hor&&([J.x,J.y]=[J.y,J.x]),!function(e,t){if(2==e)return;let n=b.SB.play.retro,o=0==e==(a.turn()==N.Il.black);if(o){if(N.wg.k<t&&t<N.wg.x){var l;l=A.V5[t],n.uncapture=n.uncapture==l?void 0:l}(t==N.wg.p||t==N.wg.c)&&(n.unpromote=!1)}else t==N.wg.p&&(n.unpromote=!n.unpromote,("p"==n.uncapture||"c"==n.uncapture)&&(n.uncapture=void 0));q()}(J.x,J.y))}(t),!!n&&!!function(e){let t=b.SB.play.mode;if(b.SB.play.pendingPromotion||t!=N.jl.retro&&a.isGameOver())return!1;let n=V(e)==a.turn();return(t==N.jl.pass||n==(t==N.jl.normal))&&!0}(h)))n?(c=h,i=S.xG[h],b.i7.dragging="pending",s=void 0):i=void 0,(!i||""!=i.value)&&function(e,t,n,o){let[a,l]=[n.x,n.y];e.preventDefault(),r.style.clip="rect(".concat(J.y*t+l+1,"px,").concat((J.x+1)*t+a-1,"px,").concat((J.y+1)*t+l-1,"px,").concat(J.x*t+a+1,"px)"),i?s=i.value:(s=b.i7.hor?k.Kv[J.x*E._N+J.y]:k.Kv[o],b.i7.dragging="pending")}(t,u,o,h)}function ec(e){let{offset:t,s:n}=(0,b.nj)(),{w:o,h:a,coordinates:l}=b.h.board,i=_.m8.getBoundingClientRect(),s=r==_.Ab&&l&&!b.i7.hor?i.left+K.Cd:i.left,c=Math.floor((e.clientY-i.top-t.y)/n),d=Math.floor((e.clientX-i.left-t.x)/n);(d!==J.x||c!==J.y)&&(u=null);let{scrollLeft:f,scrollTop:p}=document.documentElement;eu(d,c,o,a)?(r.style.left=s+(d-J.x)*n+f+"px",r.style.top=i.top+(c-J.y)*n+p+"px"):(r.style.left=e.clientX+f+1-X.x+"px",r.style.top=e.clientY+p-X.y+"px")}function eu(e,t,n,o){return t>-1&&t<o&&e>-1&&e<n}var ed=n("9843"),ef=n("4097"),ep=n("2539");function em(e){d.postMessage(e)}(0,b.t4)(()=>{if(b.SB.stockfish.lines.length){let e=b.SB.stockfish.lines,t=b.SB.stockfish.header;b.SB.stockfish.lines=[],b.SB.stockfish.header=[],T().then(n=>{f=n,b.SB.stockfish.lines=e,b.SB.stockfish.header=t})}}),window.cmd=em;let eh="(".concat(ep.SQ,")(").concat(ep.SQ,")([qrbn]?)"),eg="modules/stockfish/",ey=x.O.thread?"":"-single",eb=["".concat(eg,"stockfish-nnue-16.js#stockfish-nnue-16.wasm,worker"),"".concat(eg,"stockfish-nnue-16.wasm"),"".concat(eg,"stockfish-nnue-16-single.js#stockfish-nnue-16-single.wasm,worker"),"".concat(eg,"stockfish-nnue-16-single.wasm"),"".concat(eg,"nn-5af11540bbfe.nnue")];function ev(e){return d?Promise.resolve():new Promise((t,n)=>{b.i7.stockfish.running=N.MI.starting,(d=new Worker("".concat(eg,"stockfish-nnue-16").concat(ey,".js#stockfish-nnue-16").concat(ey,".wasm"))).onmessage=e=>{let n=e.data;console.info(n),"readyok"==n&&(b.i7.stockfish.running=N.MI.running,t()),n.startsWith("info ")&&function(e){let t;if(b.i7.stockfish.running!=N.MI.running)return;let n=e.match(/multipv (\d+)/);if(!n)return;let o=Number(n[1])-1,a=e.match(/mate (-?)(\d+)/),l=e.match(/score cp (-?\d+)/),i=Number(l&&l[1]||0)/100;if(a){let e="w"==m.split(" ")[1]==!!a[1]?"Black":"White";t=Number(a[2])+b.SB.stockfish.header.length/2,0==o&&(b.SB.stockfish.mate=[e,t])}if(0==o){let t=e.match(/depth (\d+)/);t&&(b.SB.stockfish.depth=t[1]),l&&(b.SB.stockfish.score=i)}let r=e.match(new RegExp("pv (".concat(eh,"(?: ").concat(eh,")*)")));if(r){var s;if((null===(s=b.SB.stockfish.lines[o])||void 0===s?void 0:s.raw)==r[1])return;let e=r[1].split(" ").map(e=>e.match(new RegExp(eh)));b.SB.stockfish.moves=[];let t=b.SB.stockfish.header;for(let n of(p.init(t.length?t[t.length-1].after:m),e))if(p.move({from:n[1],to:n[2],promotion:n[3]}).san.endsWith("=")){i=0;break}let n={rawScore:function(e,t){return e?e[1]?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY:t}(a,i),score:a?a[1]+"#"+a[2]:i.toFixed(2),raw:r[1],moves:p.state.history.concat(),pgn:p.copyPGN(t)};b.SB.stockfish.lines[o]=n}b.h.Stockfish.study&&eS()}(n.substring(5)),n.match(new RegExp("^bestmove ".concat(eh)))&&function(){let e=b.h.Stockfish.depth;if(b.h.Stockfish.study&&!(e<4)&&eS()){let t=b.SB.stockfish.header;t.push(...b.SB.stockfish.lines["0"].moves.slice(0,2)),em("position fen "+t[t.length-1].after),em("go depth "+e)}else ek.stop()}()},d.onerror=e=>{e.message.includes("RangeError")?n(-1):e.message.includes("memory")?n("Not enough memory."):n("Unknown error has occurred.")},em("uci"),em("setoption name Use NNUE value true"),x.O.thread&&em("setoption name Threads value "+Math.max(2,navigator.hardwareConcurrency-4)),em("setoption name Hash value "+e),em("isready")})}function eS(){let e=b.SB.stockfish.lines.filter(e=>e&&e.moves.length);if(e.length<=1)return!1;e.forEach(e=>e.moves[0]&&(e.moves[0].annotation=void 0));let t=e.filter(e=>e.rawScore>1);if(t.length>1)return!1;if(1==t.length)return t[0].moves[0].annotation="!",!0;let n=e.filter(e=>e.rawScore>-1);return 1==n.length&&(n[0].moves[0].annotation="!",!0)}async function ew(e){if(200!=(await fetch(e)).status)throw Error()}async function e_(e,t){try{await e}catch(e){if(-1!==e)throw e;if(ek.stop(),(t/=2)<4)throw Error("Not enough memory.");await e_(ev(t),t)}}let ek={async download(){gtag("event","fen_stockfish_download"),b.i7.stockfish.status=N.KO.downloading,isHttps&&"serviceWorker"in navigator&&await navigator.serviceWorker.ready;try{await Promise.all(eb.map(e=>ew(e)))}catch{(0,B.Z)("Download failed. Please check your network connection."),b.i7.stockfish.status=N.KO.notDownloaded;return}b.h.Stockfish.downloaded=!0,b.i7.stockfish.status=N.KO.needReload},async analyze(){try{gtag("event","fen_stockfish_run");let e=ev(128);if(!(m=(0,S.mj)()))throw Error("Only orthodox chess is supported.");if(!f){let e=await T();!f&&(f=e)}(p=new f.Chess).init(m),await e_(e,128),b.SB.stockfish=(0,ef.d)(b.bi),em("setoption name MultiPV value "+b.h.Stockfish.lines),em("ucinewgame"),em("position fen "+m),em("go depth "+b.h.Stockfish.depth)}catch(e){ek.stop(),(0,B.Z)(e instanceof Error?e.message:e),b.i7.stockfish.running=N.MI.stop}},play(e){gtag("event","fen_stockfish_play"),b.SB.play.mode="normal",b.SB.tab=6,F(e.pgn)},stop(){d&&d.terminate(),d=void 0,b.i7.stockfish.running=N.MI.stop},format:e=>f.formatGame(e)};(0,b.t4)(()=>{if(b.SB.syzygy.lines){let e=b.SB.syzygy.lines;e.forEach(e=>e.searching=!1),b.SB.syzygy.lines=[],T().then(t=>{h=t,b.SB.syzygy.lines=e})}});let eU=new Set;function ex(e){return new Promise(t=>{eU.add(t),setTimeout(()=>{eU.delete(t),t()},e*E.WT)})}async function eB(e,t){try{if(!t.running)return null;let n=t.ready;if(t.ready=n.then(()=>ex(1)),await n,!t.running)return null;let o=await fetch("https://tablebase.lichess.ovh/standard?fen="+e);if(429==o.status)return await ex(61),await eB(e,t);return await o.json()}catch{throw Error("Unable to connect to the server. Please check your network connection.")}}async function eC(e){let t=new(h=await T()).Chess;t.init(e.fen);let n=await eB(t.fen(),e),o="w"==t.turn()?"White":"Black",a=n.category;if(b.SB.syzygy.header="The position is a ".concat(a," for ").concat(o,"."),"unknown"==a||a.includes("loss")||!e.running)return;for(let o of(b.SB.syzygy.lines=[],e.outcome=a,e.op=function(e){return"draw"==e?e:eE[eN.indexOf(e)]}(a),n.moves.filter(t=>t.category==e.op))){t.init(e.fen);let[n,a,l]=o.uci.match(/..|./g);t.move({from:n,to:a,promotion:l});let i=t.fen();e.positions.add(eD(i));let r={fen:i,dtm:o.dtm,indent:0,history:t.state.history.concat(),leaf:!0,moves:t.state.history.concat(),pgn:t.copyPGN(),transpose:!1,searching:!t.isGameOver()};b.SB.syzygy.lines.push(r)}if(!e.running)return;let l=b.SB.syzygy.lines.filter(e=>e.searching);if(!(l.length>1))for(l[0].moves[0].annotation="!";l.length;){let t=l.map(t=>eA(t,e));if(await Promise.all(t),l=b.SB.syzygy.lines.filter(e=>e.searching),!e.running)return}}function eD(e){return e.replace(/ \d+ \d+$/,"")}async function eA(e,t){let n=new h.Chess;n.init(e.fen);let o="number"==typeof e.dtm,a=n.moves({verbose:!0}),l=new Set((await eB(e.fen,t)).moves.filter(e=>e.category==t.outcome).map(e=>e.uci)),i=a.filter(e=>l.has(e.from+e.to+(e.promotion||""))).map(e=>eP(e,t,o)),r=(await Promise.all(i)).filter(e=>e).sort((e,t)=>t.score-e.score).filter((e,t,n)=>e.score==n[0].score);if(e.searching&&(e.searching=!1),!t.running)return;let s=r.filter(e=>"draw"!=t.op&&e.moves.length>0||1==e.moves.length);if(0==s.length)return;let c=1==s.length,u=s.map(o=>(function(e,t,n,o,a){o.init(t.fen);let l=o.move(e.defense);n&&(l.annotation="!");let[i,r,s]=e.moves[0].uci.match(/..|./g),c=o.move({from:i,to:r,promotion:s});1==e.moves.length&&(c.annotation="!");let u=o.fen(),d=eD(u),f=a.positions.has(d);!f&&a.positions.add(d);let p=o.state.history.concat();return{dtm:"number"==typeof e.dtm?1-e.dtm:null,fen:u,transpose:f,leaf:!0,indent:t.indent+(n?0:1),history:t.history.concat(p),moves:n?t.moves.concat(p):p,pgn:o.copyPGN(t.history),searching:!o.isGameOver()&&!f}})(o,e,c,n,t)),d=b.SB.syzygy.lines.concat(),f=d.indexOf(e);c?d.splice(f,1,...u):(e.leaf=!1,d.splice(f+1,0,...u)),b.SB.syzygy.lines=d}async function eP(e,t,n){let o=await eB(e.after,t);if(!t.running)return null;let a=o.moves.filter(e=>e.category==t.op);return{score:(n?o.dtm:0)-a.length,json:o,dtm:o.dtm,defense:e,moves:a}}let eN=["win","maybe-win","cursed-win"],eE=["loss","maybe-loss","blessed-loss"],eI={async run(){let e={positions:new Set,running:!0,ready:Promise.resolve()};g=e;try{var t;if(gtag("event","fen_syzygy_run"),b.i7.syzygy.running=!0,b.SB.syzygy.header=null,b.SB.syzygy.lines=null,e.fen=(0,S.mj)(),!e.fen)throw Error("Only orthodox chess is supported.");if((null===(t=e.fen.split(" ")[0].match(/[a-z]/ig))||void 0===t?void 0:t.length)>7)throw Error("Only supports position with up to ".concat(7," pieces."));await eC(e)}catch(e){(0,B.Z)(e instanceof Error?e.message:e)}finally{e.running&&eI.stop()}},play(e){gtag("event","fen_syzygy_play"),b.SB.play.mode="normal",b.SB.tab=6,F(e.pgn)},stop(){var e;for(let e of(g&&(g.running=!1),eU))e();eU.clear(),null===(e=b.SB.syzygy.lines)||void 0===e||e.forEach(e=>e.searching=!1),b.i7.syzygy.running=!1},format(e){let t=h.formatGame(e.moves);return e.searching?t+=" ...":e.transpose&&(t+=" (transpose)"),t}};var eR=n("4486"),eO=n.n(eR);let eW={class:"modal-dialog modal-dialog-centered"},eM={class:"modal-content"},ej=["innerHTML"],eV={class:"modal-footer"},eT=Promise.resolve(),eL=(0,y.aZ)({name:"DialogModal",__name:"dialog",setup(e,t){let n,{expose:o}=t,a=(0,y.XI)();(0,y.bv)(()=>{n=new(eO())(a.value,{backdrop:"static"})});let l=(0,y.XI)("");return o({show:async function e(e,t){let o;let i=eT;return eT=new Promise(e=>{o=e}),await i,new Promise(i=>{l.value=e.replace(/\n/g,"<br>"),a.value.addEventListener("hide.bs.modal",()=>{i()},{once:!0}),a.value.addEventListener("hidden.bs.modal",o,{once:!0}),null==t||t(),n.show()})},hide:()=>n.hide()}),(e,t)=>((0,y.wg)(),(0,y.iD)("div",{class:"modal fade modal-second",ref_key:"el",ref:a},[(0,y._)("div",eW,[(0,y._)("div",eM,[(0,y._)("div",{class:"modal-body",innerHTML:l.value},null,8,ej),(0,y._)("div",eV,[(0,y.WI)(e.$slots,"default")])])])],512))}}),ez=(0,y.aZ)({name:"Alert",__name:"alert",setup(e,t){let{expose:n}=t,o=(0,y.XI)();function a(e){return o.value.show(e)}return(0,y.bv)(()=>B.Z.setup(a)),n({show:a}),(e,t)=>((0,y.wg)(),(0,y.j4)(eL,{ref_key:"dialog",ref:o},{default:(0,y.w5)(()=>t[0]||(t[0]=[(0,y._)("button",{type:"button",class:"btn btn-primary","data-bs-dismiss":"modal"},"OK",-1)])),_:1},512))}}),eq=(0,y.aZ)({name:"Confirm",__name:"confirm",setup(e,t){let{expose:n}=t,o=!1,a=(0,y.XI)();async function l(e){return await a.value.show(e,()=>o=!1),o}function i(){o=!0,a.value.hide()}return(0,y.bv)(()=>B.i.setup(l)),n({show:l}),(e,t)=>((0,y.wg)(),(0,y.j4)(eL,{ref_key:"dialog",ref:a},{default:(0,y.w5)(()=>[t[0]||(t[0]=(0,y._)("button",{type:"button",class:"btn btn-secondary","data-bs-dismiss":"modal"},"No",-1)),(0,y._)("button",{type:"button",class:"btn btn-primary",onClick:i},"Yes")]),_:1},512))}}),eF={class:"nav-item"},eQ=["title"],eY={class:"d-sm-none"},eK={class:"d-none d-sm-inline"},eG=(0,y.aZ)({__name:"menuTab",props:{index:{},icon:{},title:{}},setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("li",eF,[(0,y._)("div",{class:(0,y.C_)(["nav-link",{active:(0,y.SU)(b.SB).tab==e.index}]),onClick:t[0]||(t[0]=t=>(0,y.SU)(b.SB).tab=e.index),title:e.title},[(0,y._)("span",eY,[(0,y._)("i",{class:(0,y.C_)(e.icon)},null,2)]),(0,y._)("span",eK,[(0,y.WI)(e.$slots,"default")])],10,eQ)]))}),eH={class:"nav nav-tabs pe-1",style:{"flex-wrap":"nowrap"}},eZ=(0,y.aZ)({__name:"menu",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",{class:(0,y.C_)(["mb-3 nav-container",{"mt-n3":(0,y.SU)(b.u8)()}])},[(0,y._)("ul",eH,[(0,y.Wm)(eG,{index:0,icon:"fa-solid fa-pen-to-square",title:"Edit"},{default:(0,y.w5)(()=>t[0]||(t[0]=[(0,y.Uk)("Edit")])),_:1}),(0,y.Wm)(eG,{index:8,icon:"fa-solid fa-chess-board",title:"Project"},{default:(0,y.w5)(()=>t[1]||(t[1]=[(0,y.Uk)("Project")])),_:1}),(0,y.Wm)(eG,{index:1,icon:"fa-solid fa-gear",title:"Options"},{default:(0,y.w5)(()=>t[2]||(t[2]=[(0,y.Uk)("Options")])),_:1}),(0,y.Wm)(eG,{index:7,icon:"fa-solid fa-calculator",title:"Compute"},{default:(0,y.w5)(()=>t[3]||(t[3]=[(0,y.Uk)("Compute")])),_:1}),(0,y.Wm)(eG,{index:6,icon:"fa-solid fa-gamepad",title:"Play"},{default:(0,y.w5)(()=>t[4]||(t[4]=[(0,y.Uk)("Play")])),_:1}),(0,y.Wm)(eG,{index:2,icon:"fa-solid fa-database",title:"Database"},{default:(0,y.w5)(()=>t[5]||(t[5]=[(0,y.Uk)("DB")])),_:1}),(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).isTaiwan?((0,y.wg)(),(0,y.j4)(eG,{key:0,index:4,icon:"fa-solid fa-terminal",title:"BBS"},{default:(0,y.w5)(()=>t[6]||(t[6]=[(0,y.Uk)("BBS")])),_:1})):(0,y.kq)("",!0),(0,y.Wm)(eG,{index:5,icon:"fa-solid fa-share-from-square",title:"API"},{default:(0,y.w5)(()=>t[7]||(t[7]=[(0,y.Uk)("API")])),_:1})])],2))});function e$(e){return new URL(e,location.href).toString()}function eX(){let{SN:e,w:t,h:n}=b.h.board;return e?(0,P.N0)((0,S.xL)(),t,n):S.RI.value}function eJ(){let e=b.h.board,t=eX(),n=e$("gen/?fen="+t);return e.size!=K.Cg&&(n+="&size="+e.size),e.set!=K.z6&&(n+="&set="+e.set),e.pattern&&(n+="&pattern="+e.pattern),e.bg&&(n+="&bg="+e.bg),"1"!=e.border&&(n+="&border="+e.border),e.blackWhite&&(n+="&blackWhite&knightOffset="+e.knightOffset),!(0,P.A1)(t)&&(n+="&w=".concat(e.w,"&h=").concat(e.h)),n}let e0={copyJanko:()=>(gtag("event","fen_copy_janko"),"https://www.janko.at/Retros/d.php?ff="+eX()),copyBase64:()=>(gtag("event","fen_link_copy64"),k.Uw.toDataURL()),copyBase64Img:()=>(gtag("event","fen_link_copy64img"),'<img fen="'.concat(k.Uw.toDataURL(),'">')),async copyUrl(){gtag("event","fen_gen_link");let e=new FormData,t=await (0,k.Br)();e.append("key","7802c5da1788f2315222d44bfba20519"),e.append("image",t,"fen");try{let t=await fetch("https://api.imgbb.com/1/upload",{method:"post",body:e}),n=await t.json();if(!n.success)throw n.error.message;return n.data.url+"?="+eX()}catch(e){throw(0,B.Z)("string"==typeof e?e:"Internet connection failed. Please try again later."),e}},copyEmbed(){gtag("event","fen_copy_embed");let e=b.h.board,t=eJ(),{w:n,h:o}=(0,K.t_)(e);return'<iframe src="'.concat(t,'" style="border:none;width:').concat(n,"px;height:").concat(o,'px"></iframe>')},copyEmbedUrl:()=>(gtag("event","fen_copy_embedUrl"),eJ()),copyImg:()=>(gtag("event","fen_copy_sdkImg"),'<img fen="'.concat(eX(),'">')),copySDK(){gtag("event","fen_copy_sdk");let e=b.h.board,t="";return e.size!=K.Cg&&(t+=' data-size="'.concat(e.size,'"')),e.set!=K.z6&&(t+=' data-set="'.concat(e.set,'"')),e.bg&&(t+=' data-bg="'.concat(e.bg,'"')),"1"!=e.border&&(t+=' data-border="'.concat(e.border,'"')),e.blackWhite&&(t+=' data-black-white="true" data-knight-offset="'.concat(e.knightOffset,'"')),'<script src="'.concat(e$("sdk.js"),'"').concat(t,"><\/script>")}},e1=["disabled"],e2=(0,y.aZ)({__name:"copyButton",props:{class:{},factory:{type:Function},disabled:{type:Boolean}},setup(e){let t=(0,y.XI)(0);async function n(){t.value=1;try{let n=e.factory;for(;"function"==typeof n;)n=await n();"string"==typeof n&&function(e){if(x.O.canCopy)navigator.clipboard.writeText(e);else{let t=document.createElement("input");document.body.appendChild(t),t.value=e,t.select(),document.execCommand("copy"),document.body.removeChild(t)}}(n),t.value=2,setTimeout(()=>t.value=0,E.WT)}catch(e){t.value=0}}return(o,a)=>((0,y.wg)(),(0,y.iD)("button",{type:"button",class:(0,y.C_)(["btn nowrap",e.class]),onClick:n,disabled:o.disabled||1==t.value},[(0,y._)("i",{class:(0,y.C_)(["fa-solid fa-clipboard","fa-spin fa-solid fa-spinner","fa-solid fa-check"][t.value])},null,2),a[0]||(a[0]=(0,y.Uk)(" ")),(0,y.WI)(o.$slots,"default")],10,e1))}}),e3=["disabled"],e8=(0,y.aZ)({__name:"shareButton",setup(e){let t=(0,y.XI)(!1);async function n(){if(gtag("event","fen_img_share"),x.O.canSharePng){let e=[new File([await (0,k.Br)()],"board.png",{type:"image/png"})];navigator.share({files:e})}else{t.value=!0;try{let e=await e0.copyUrl();navigator.share({url:e,text:eX()})}finally{t.value&&(t.value=!1)}}}return(e,o)=>(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).canShare?((0,y.wg)(),(0,y.iD)("button",{key:0,class:"btn btn-primary",disabled:t.value,onClick:n},[(0,y._)("i",{class:(0,y.C_)(t.value?"fa-spin fa-solid fa-spinner":"fa-solid fa-share-nodes")},null,2),o[0]||(o[0]=(0,y.Uk)(" Share image "))],8,e3)):(0,y.kq)("",!0)}}),e4={class:"mb-3 btn-gap"},e5={class:"d-inline-block"},e7=["disabled"],e6=["disabled"],e9={class:"btn-group"},te=["disabled"],tt=["disabled"],tn=["disabled"],to=["disabled"],ta={class:"btn-group"},tl=["disabled"],ti=["disabled"],tr=["disabled"],ts=["disabled"],tc={class:"btn-group"},tu=["disabled"],td=["disabled"],tf={key:0,class:"fa-solid fa-chess-king fa-fw shadow-neutral",style:{color:"gray"}},tp=["disabled"],tm={class:"btn-group"},th=["disabled"],tg=["disabled"],ty=["disabled"],tb={class:"text-end btn-gap"},tv={class:"d-inline-block"},tS={class:"d-inline-block"},tw={key:0,class:"mt-3 d-none d-md-block text-end"},t_={class:"d-inline-block"},tk={class:"form-check form-switch"},tU=(0,y.aZ)({__name:"edit",setup(e){function t(e,t){(0,U.p_)(!0);let{w:n,h:o}=b.h.board;(0,S.gx)((0,P.uY)((0,S.Ox)(),e,t,n,o))}function n(e){(0,U.p_)(!0);let{w:t,h:n}=b.h.board;(0,S.gx)((0,P.hD)((0,S.Ox)(),e,t,n))}function o(e){(0,U.p_)(!0);let{w:t,h:n}=b.h.board;t!==n&&(0,w.l)({w:n,h:t}),(0,S.gx)((0,P.U1)((0,S.Ox)(),e,t,n))}return(e,a)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:0==(0,y.SU)(b.SB).tab})},[(0,y._)("div",e4,[(0,y._)("span",e5,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:a[0]||(a[0]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(S.X4).empty&&(0,y.SU)(S.X4).empty(...t)}),disabled:(0,y.SU)(b.I3)(),title:"Empty board"},a[17]||(a[17]=[(0,y._)("i",{class:"fa-solid fa-trash-can"},null,-1),(0,y._)("span",null," Empty board",-1)]),8,e7),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:a[1]||(a[1]=e=>(0,y.SU)(S.X4).reset()),disabled:(0,y.SU)(b.I3)(),title:"Starting position"},a[18]||(a[18]=[(0,y._)("i",{class:"fa-solid fa-flag-checkered"},null,-1),(0,y._)("span",null," Starting position",-1)]),8,e6)]),(0,y._)("span",e9,[(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift leftwards",onClick:a[2]||(a[2]=e=>t(-1,0)),disabled:(0,y.SU)(b.I3)()},a[19]||(a[19]=[(0,y._)("i",{class:"fa-solid fa-arrow-left"},null,-1)]),8,te),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift rightwards",onClick:a[3]||(a[3]=e=>t(1,0)),disabled:(0,y.SU)(b.I3)()},a[20]||(a[20]=[(0,y._)("i",{class:"fa-solid fa-arrow-right"},null,-1)]),8,tt),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift upwards",onClick:a[4]||(a[4]=e=>t(0,-1)),disabled:(0,y.SU)(b.I3)()},a[21]||(a[21]=[(0,y._)("i",{class:"fa-solid fa-arrow-up"},null,-1)]),8,tn),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Shift downwards",onClick:a[5]||(a[5]=e=>t(0,1)),disabled:(0,y.SU)(b.I3)()},a[22]||(a[22]=[(0,y._)("i",{class:"fa-solid fa-arrow-down"},null,-1)]),8,to)]),(0,y._)("span",ta,[(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Rotate counterclockwise",onClick:a[6]||(a[6]=e=>o(-1)),disabled:(0,y.SU)(b.I3)()},a[23]||(a[23]=[(0,y._)("i",{class:"fa-solid fa-rotate-left"},null,-1)]),8,tl),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Rotate clockwise",onClick:a[7]||(a[7]=e=>o(1)),disabled:(0,y.SU)(b.I3)()},a[24]||(a[24]=[(0,y._)("i",{class:"fa-solid fa-rotate-right"},null,-1)]),8,ti),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Mirror horizontally",onClick:a[8]||(a[8]=e=>n("-")),disabled:(0,y.SU)(b.I3)()},a[25]||(a[25]=[(0,y._)("i",{class:"fa-solid fa-arrows-left-right"},null,-1)]),8,tr),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Mirror vertically",onClick:a[9]||(a[9]=e=>n("|")),disabled:(0,y.SU)(b.I3)()},a[26]||(a[26]=[(0,y._)("i",{class:"fa-solid fa-arrows-up-down"},null,-1)]),8,ts)]),(0,y._)("span",tc,[(0,y._)("button",{type:"button",class:"btn btn-secondary px-2",title:"All Black",onClick:a[10]||(a[10]=e=>(0,y.SU)(S.X4).color(-1)),disabled:(0,y.SU)(b.I3)()},a[27]||(a[27]=[(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-black shadow-white"},null,-1)]),8,tu),(0,y._)("button",{type:"button",class:"btn btn-secondary px-2",title:"All Neutral",onClick:a[11]||(a[11]=e=>(0,y.SU)(S.X4).color(0)),disabled:(0,y.SU)(b.I3)()},[(0,y.SU)(b.h).board.blackWhite?((0,y.wg)(),(0,y.iD)(y.HY,{key:1},[a[28]||(a[28]=(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-black shadow-white"},null,-1)),a[29]||(a[29]=(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-white shadow-black",style:{"margin-left":"-1.25em","clip-path":"polygon(51.5% 0, 100% 0, 100% 100%, 51.5% 100%)"}},null,-1))],64)):((0,y.wg)(),(0,y.iD)("i",tf))],8,td),(0,y._)("button",{type:"button",class:"btn btn-secondary px-2",title:"All White",onClick:a[12]||(a[12]=e=>(0,y.SU)(S.X4).color(1)),disabled:(0,y.SU)(b.I3)()},a[30]||(a[30]=[(0,y._)("i",{class:"fa-solid fa-chess-king fa-fw text-white shadow-black"},null,-1)]),8,tp)]),(0,y._)("span",tm,[(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Switch side",onClick:a[13]||(a[13]=e=>(0,y.SU)(S.X4).invert(!1)),disabled:(0,y.SU)(b.I3)()},a[31]||(a[31]=[(0,y._)("i",{class:"fa-solid fa-chess-king text-black shadow-white"},null,-1),(0,y.Uk)(" "),(0,y._)("i",{class:"fa-solid fa-arrows-left-right"},null,-1),(0,y.Uk)(" "),(0,y._)("i",{class:"fa-solid fa-chess-king text-white shadow-black"},null,-1)]),8,th),(0,y._)("button",{type:"button",class:"btn btn-secondary",title:"Switch case (including text)",onClick:a[14]||(a[14]=e=>(0,y.SU)(S.X4).invert(!0)),disabled:(0,y.SU)(b.I3)()},a[32]||(a[32]=[(0,y.Uk)(" A "),(0,y._)("i",{class:"fa-solid fa-arrows-left-right"},null,-1),(0,y.Uk)(" a ")]),8,tg),(0,y.SU)(b.h).board.SN?(0,y.kq)("",!0):((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-secondary",title:"Change all S to N when 'Use S for knight' mode is off",onClick:a[15]||(a[15]=e=>(0,y.SU)(S.X4).fixSN()),disabled:(0,y.SU)(b.I3)()},a[33]||(a[33]=[(0,y.Uk)(" S "),(0,y._)("i",{class:"fa-solid fa-arrow-right"},null,-1),(0,y.Uk)(" N ")]),8,ty))])]),(0,y._)("div",tb,[(0,y._)("span",tv,[(0,y.SU)(b.h).feature.janko?((0,y.wg)(),(0,y.j4)(e2,{key:0,factory:(0,y.SU)(e0).copyJanko,class:"btn-primary"},{default:(0,y.w5)(()=>a[34]||(a[34]=[(0,y.Uk)("Create Janko URL")])),_:1},8,["factory"])):(0,y.kq)("",!0),(0,y.SU)(b.i7).envReady&&!(0,y.SU)(x.O).isTouch?((0,y.wg)(),(0,y.j4)(e2,{key:1,factory:()=>(0,y.SU)(C)((0,y.SU)(k.Br)),class:"btn-primary"},{default:(0,y.w5)(()=>a[35]||(a[35]=[(0,y.Uk)("Copy image ")])),_:1},8,["factory"])):(0,y.kq)("",!0),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyUrl,class:"btn-primary"},{default:(0,y.w5)(()=>a[36]||(a[36]=[(0,y.Uk)("Create image URL")])),_:1},8,["factory"])]),(0,y._)("span",tS,[(0,y.Wm)(e8),a[37]||(a[37]=(0,y._)("a",{class:"btn btn-primary",download:"board.png",id:"Save",onclick:"gtag('event', 'img_save')"},[(0,y._)("i",{class:"fa-solid fa-download"}),(0,y.Uk)(" Save image ")],-1))])]),(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).isTop?((0,y.wg)(),(0,y.iD)("div",tw,[(0,y._)("div",t_,[(0,y._)("div",tk,[(0,y.wy)((0,y._)("input",{class:"form-check-input",type:"checkbox",role:"switch",id:"sSplit","onUpdate:modelValue":a[16]||(a[16]=e=>(0,y.SU)(b.SB).split=e)},null,512),[[y.e8,(0,y.SU)(b.SB).split]]),a[38]||(a[38]=(0,y._)("label",{class:"form-check-label",for:"sSplit"},"Split window",-1))])])])):(0,y.kq)("",!0)],2))}}),tx={class:"form-check"},tB=["checked","disabled"],tC=(0,y.aZ)({__name:"checkbox",props:{modelValue:{type:Boolean},disabled:{type:Boolean}},emits:["update:modelValue","change"],setup(e){let t="chk"+(0,y.FN)().uid;return(e,n)=>((0,y.wg)(),(0,y.iD)("div",tx,[(0,y._)("input",{type:"checkbox",class:"form-check-input",id:t,checked:e.modelValue,onChange:n[0]||(n[0]=t=>{e.$emit("update:modelValue",!e.modelValue),e.$emit("change")}),disabled:e.disabled},null,40,tB),(0,y._)("label",{class:"form-check-label",for:t},[(0,y.WI)(e.$slots,"default")])]))}}),tD={class:"input-group"},tA=["disabled"],tP=["title","value"],tN=["disabled"],tE=(0,y.aZ)({__name:"inputNumber",props:{title:{},min:{},max:{},modelValue:{}},emits:["update:modelValue"],setup(e,t){let{emit:n}=t;function o(t){n("update:modelValue",e.modelValue+t)}let a=()=>e.modelValue<=e.min,l=()=>void 0!==e.max&&e.modelValue>=e.max;return(t,i)=>((0,y.wg)(),(0,y.iD)("div",tD,[(0,y._)("button",{class:"btn btn-secondary px-2",disabled:a(),type:"button",onClick:i[0]||(i[0]=e=>o(-1))},i[3]||(i[3]=[(0,y._)("i",{class:"fa-solid fa-minus"},null,-1)]),8,tA),(0,y._)("input",{type:"number",class:"form-control text-center px-0",min:"1",title:t.title,value:e.modelValue,onChange:i[1]||(i[1]=t=>(function(t){let o=t.target,a=e.modelValue,l=Math.round(Number(o.value));isNaN(l)||l<e.min||void 0!==e.max&&l>e.max?o.value=a.toString():n("update:modelValue",l)})(t)),onfocus:"this.select()"},null,40,tP),(0,y._)("button",{class:"btn btn-secondary px-2",disabled:l(),type:"button",onClick:i[2]||(i[2]=e=>o(1))},i[4]||(i[4]=[(0,y._)("i",{class:"fa-solid fa-plus"},null,-1)]),8,tN)]))}}),tI={class:"row mb-2"},tR={class:"col flex-grow-1",style:{"flex-basis":"18rem"}},tO={class:"row gx-3"},tW={class:"col",style:{"flex-basis":"15rem"}},tM={class:"row gx-3 mb-2"},tj={class:"col"},tV={class:"col",style:{"flex-basis":"13rem"}},tT={class:"row gx-3 mb-2"},tL={class:"col"},tz={class:"row gx-3"},tq={class:"col",style:{"flex-basis":"15rem"}},tF={class:"row gx-3 mb-2"},tQ={class:"col"},tY={class:"col",style:{"flex-basis":"16rem"}},tK={class:"row gx-3 mb-2"},tG={class:"col"},tH={class:"col flex-grow-1 mb-2",style:{"flex-basis":"22rem"}},tZ={class:"row gx-3"},t$={class:"col",style:{"flex-basis":"22rem"}},tX={class:"row gx-3"},tJ={class:"col mb-2",style:{"flex-basis":"14rem","flex-grow":"10000"}},t0={class:"row gx-3"},t1={class:"col"},t2={class:"col"},t3={class:"col mb-2 text-end"},t8={class:"col",style:{"flex-basis":"14rem"}},t4={class:"row gx-3 mb-2"},t5={class:"col"},t7=["value"],t6={class:"row gx-3 align-items-baseline"},t9={class:"col",style:{"flex-basis":"15rem"}},ne={class:"col",style:{"flex-basis":"15rem"}},nt={class:"row align-items-center"},nn={class:"col"},no={class:"d-none d-md-block"},na=(0,y.aZ)({__name:"options",setup(e){function t(){(0,w.l)({},!0)}return(e,n)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:1==(0,y.SU)(b.SB).tab})},[(0,y._)("div",tI,[(0,y._)("div",tR,[(0,y._)("div",tO,[(0,y._)("div",tW,[(0,y._)("div",tM,[n[19]||(n[19]=(0,y._)("label",{class:"col-auto col-form-label"},"Chess set:",-1)),(0,y._)("div",tj,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[0]||(n[0]=e=>(0,y.SU)(w.Ar).set=e)},n[18]||(n[18]=[(0,y.uE)('<option value="1echecs">1Echecs</option><option value="alpha">Alpha</option><option value="goodCompanion">Good Companion</option><option value="kilfiger">Kilfiger</option><option value="merida">Merida</option><option value="mpchess">MPChess</option><option value="skak">Skak</option>',7)]),512),[[y.bM,(0,y.SU)(w.Ar).set]])])])]),(0,y._)("div",tV,[(0,y._)("div",tT,[n[21]||(n[21]=(0,y._)("label",{class:"col-auto col-form-label"},"Square size:",-1)),(0,y._)("div",tL,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[1]||(n[1]=e=>(0,y.SU)(w.Ar).size=e)},n[20]||(n[20]=[(0,y._)("option",{value:"26"},"26px",-1),(0,y._)("option",{value:"32"},"32px",-1),(0,y._)("option",{value:"38"},"38px",-1),(0,y._)("option",{value:"44"},"44px",-1)]),512),[[y.bM,(0,y.SU)(w.Ar).size,void 0,{number:!0}]])])])])]),(0,y.Wm)(tC,{class:"mb-2",modelValue:(0,y.SU)(b.h).board.exHigh,"onUpdate:modelValue":n[2]||(n[2]=e=>(0,y.SU)(b.h).board.exHigh=e),onChange:(0,y.SU)(k.G2)},{default:(0,y.w5)(()=>n[22]||(n[22]=[(0,y.Uk)("Export to high-resolution image")])),_:1},8,["modelValue","onChange"]),(0,y._)("div",tz,[(0,y._)("div",tq,[(0,y._)("div",tF,[n[24]||(n[24]=(0,y._)("label",{class:"col-auto col-form-label"},"Background:",-1)),(0,y._)("div",tQ,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[3]||(n[3]=e=>(0,y.SU)(b.h).board.bg=e),onChange:n[4]||(n[4]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.wY)&&(0,y.SU)(k.wY)(...t)})},n[23]||(n[23]=[(0,y._)("option",{value:void 0},"Default",-1),(0,y._)("option",{value:"gray"},"Gray",-1),(0,y._)("option",{value:"green"},"Green",-1),(0,y._)("option",{value:"classic"},"Classic",-1)]),544),[[y.bM,(0,y.SU)(b.h).board.bg]])])])]),(0,y._)("div",tY,[(0,y._)("div",tK,[n[26]||(n[26]=(0,y._)("label",{class:"col-auto col-form-label"},"Board pattern:",-1)),(0,y._)("div",tG,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":n[5]||(n[5]=e=>(0,y.SU)(b.h).board.pattern=e),onChange:n[6]||(n[6]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.wY)&&(0,y.SU)(k.wY)(...t)})},n[25]||(n[25]=[(0,y._)("option",{value:void 0},"Normal",-1),(0,y._)("option",{value:"inverted"},"Inverted",-1),(0,y._)("option",{value:"mono"},"Uncolored",-1)]),544),[[y.bM,(0,y.SU)(b.h).board.pattern]])])])])])]),(0,y._)("div",tH,[(0,y._)("div",tZ,[(0,y._)("div",t$,[(0,y._)("div",tX,[(0,y._)("div",tJ,[(0,y._)("div",t0,[(0,y._)("div",t1,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(w.Ar).width,"onUpdate:modelValue":n[7]||(n[7]=e=>(0,y.SU)(w.Ar).width=e),min:1,title:"Files"},null,8,["modelValue"])]),n[27]||(n[27]=(0,y._)("label",{class:"col-auto col-form-label"},"x",-1)),(0,y._)("div",t2,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(w.Ar).height,"onUpdate:modelValue":n[8]||(n[8]=e=>(0,y.SU)(w.Ar).height=e),min:1,title:"Ranks"},null,8,["modelValue"])])])]),(0,y._)("div",t3,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:n[9]||(n[9]=e=>(0,y.SU)(w.Ar).setDimension({w:8,h:8}))},"Reset")])])]),(0,y._)("div",t8,[(0,y._)("div",t4,[n[28]||(n[28]=(0,y._)("label",{class:"col-auto col-form-label"},"Border pattern:",-1)),(0,y._)("div",t5,[(0,y._)("input",{type:"text",placeholder:"Use comma-separated numbers",title:"Use comma-separated numbers",class:"form-control",value:(0,y.SU)(b.h).board.border,onChange:n[10]||(n[10]=e=>(0,y.SU)(w.Ar).setBorder(e.target))},null,40,t7)])])])]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.SN,"onUpdate:modelValue":n[11]||(n[11]=e=>(0,y.SU)(b.h).board.SN=e),onChange:(0,y.SU)(S.oO)},{default:(0,y.w5)(()=>n[29]||(n[29]=[(0,y.Uk)("Use S for knight")])),_:1},8,["modelValue","onChange"]),(0,y._)("div",t6,[(0,y._)("div",t9,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.blackWhite,"onUpdate:modelValue":n[12]||(n[12]=e=>(0,y.SU)(b.h).board.blackWhite=e),onChange:(0,y.SU)(k.pz)},{default:(0,y.w5)(()=>n[30]||(n[30]=[(0,y.Uk)("Black/White neutral piece")])),_:1},8,["modelValue","onChange"])]),(0,y.wy)((0,y._)("div",ne,[(0,y._)("div",nt,[n[31]||(n[31]=(0,y._)("label",{class:"col-auto col-form-label"},"Knight offset:",-1)),(0,y._)("div",nn,[(0,y.wy)((0,y._)("input",{type:"range",class:"form-range",min:"0.25",max:"0.75",step:"0.025","onUpdate:modelValue":n[13]||(n[13]=e=>(0,y.SU)(b.h).board.knightOffset=e),onInput:n[14]||(n[14]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.pz)&&(0,y.SU)(k.pz)(...t)})},null,544),[[y.nr,(0,y.SU)(b.h).board.knightOffset,void 0,{number:!0}]])])])],512),[[y.F8,(0,y.SU)(b.h).board.blackWhite]])]),(0,y._)("div",no,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.collapse,"onUpdate:modelValue":n[15]||(n[15]=e=>(0,y.SU)(b.h).board.collapse=e),onChange:(0,y.SU)(w.SI)},{default:(0,y.w5)(()=>n[32]||(n[32]=[(0,y.Uk)("Always collapse boards")])),_:1},8,["modelValue","onChange"])]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.coordinates,"onUpdate:modelValue":n[16]||(n[16]=e=>(0,y.SU)(b.h).board.coordinates=e),onChange:t},{default:(0,y.w5)(()=>n[33]||(n[33]=[(0,y.Uk)("Show coordinate labels")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).board.fullFEN,"onUpdate:modelValue":n[17]||(n[17]=e=>(0,y.SU)(b.h).board.fullFEN=e),onChange:(0,y.SU)(S.uu)},{default:(0,y.w5)(()=>n[34]||(n[34]=[(0,y.Uk)("Show full FEN")])),_:1},8,["modelValue","onChange"])])])],2))}}),nl={class:"me-3"},ni=["checked","disabled","onChange","id"],nr=["for","textContent"],ns=(0,y.aZ)({__name:"radio",props:{label:{},text:{},value:{},modelValue:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,t){let{emit:n}=t,o="rdo"+(0,y.FN)().uid;return(t,a)=>((0,y.wg)(),(0,y.iD)(y.HY,null,[(0,y._)("span",nl,(0,y.zw)(t.label),1),((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)(t.text,(a,l)=>{var i;return(0,y.wg)(),(0,y.iD)("div",{class:"form-check d-inline-block me-3",key:l},[(0,y._)("input",{class:"form-check-input",type:"radio",checked:(i=l,e.modelValue===e.value[i]),disabled:t.disabled,onChange:t=>{var o;return o=l,void n("update:modelValue",e.value[o])},name:o,id:o+"_"+l},null,40,ni),(0,y._)("label",{class:"form-check-label",for:o+"_"+l,textContent:(0,y.zw)(a)},null,8,nr)])}),128))],64))}});var nc=n("1528");let nu={key:0},nd={class:"mb-3"},nf={class:"btn-gap"},np=["disabled"],nm=["disabled"],nh=["disabled"],ng=["disabled"],ny={key:0,class:"btn-gap"},nb={key:0},nv={key:0},nS={key:1},nw={key:1,class:"ms-2"},n_={key:2,class:"ms-2"},nk=["onClick"],nU={key:0},nx={key:1},nB={class:"btn-gap"},nC={class:"mt-2"},nD={class:"form-check d-inline-block me-3"},nA=["checked"],nP={class:"form-check d-inline-block me-3"},nN=["checked"],nE={class:"form-check d-inline-block"},nI=["checked"],nR={key:0,class:"mt-2"},nO={class:"mt-2"},nW={key:1,class:"mt-2"},nM={class:"btn-gap"},nj=["disabled"],nV=["disabled"],nT=["disabled"],nL={class:"mt-2 gx-3 row"},nz={class:"col flex-grow-1",style:{"flex-basis":"22rem"}},nq={class:"d-flex align-items-center flex-wrap-reverse mb-2"},nF={class:"flex-grow-1 col-form-label",style:{"flex-basis":"max-content"}},nQ={class:"flex-grow-1",style:{"flex-basis":"max-content"}},nY={class:"row gx-3"},nK={class:"col"},nG={class:"mb-2"},nH={class:"d-inline-block"},nZ={class:"d-inline-block"},n$={class:"col flex-grow-1",style:{"flex-basis":"22rem"}},nX={class:"row gx-3 mb-2"},nJ={class:"col"},n0=["disabled"],n1={class:"row gx-3"},n2={class:"col mb-2",style:{"flex-basis":"10.5rem"}},n3={class:"row gx-3"},n8={class:"col"},n4=["disabled"],n5={class:"col mb-2",style:{"flex-basis":"10.5rem"}},n7={class:"row gx-3"},n6={class:"col"},n9=["disabled"],oe={class:"text-end"},ot=(0,y.aZ)({__name:"play",setup(e){let t=()=>b.SB.play.mode==N.jl.retro,n=()=>b.SB.play.moveNumber<0,o=()=>b.SB.play.moveNumber>=b.SB.play.history.length-1;return(e,a)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:6==(0,y.SU)(b.SB).tab})},[(0,y.SU)(b.SB).play.playing?((0,y.wg)(),(0,y.iD)("div",nu,[(0,y._)("div",nd,[(0,y._)("span",nf,[(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[0]||(a[0]=e=>(0,y.SU)(Q).move(-1)),disabled:n()},a[27]||(a[27]=[(0,y._)("i",{class:"fa-solid fa-angles-left fa-fw"},null,-1)]),8,np),(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[1]||(a[1]=e=>(0,y.SU)(Q).moveBy(-1)),disabled:n()},a[28]||(a[28]=[(0,y._)("i",{class:"fa-solid fa-angle-left fa-fw"},null,-1)]),8,nm),(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[2]||(a[2]=e=>(0,y.SU)(Q).moveBy(1)),disabled:o()},a[29]||(a[29]=[(0,y._)("i",{class:"fa-solid fa-angle-right fa-fw"},null,-1)]),8,nh),(0,y._)("button",{type:"button",class:"py-0 btn btn-secondary",onClick:a[3]||(a[3]=e=>(0,y.SU)(Q).move((0,y.SU)(b.SB).play.history.length-1)),disabled:o()},a[30]||(a[30]=[(0,y._)("i",{class:"fa-solid fa-angles-right fa-fw"},null,-1)]),8,ng)]),(0,y._)("span",null,[(0,y._)("span",{class:(0,y.C_)(["btn step px-1 py-0 ms-3",{active:-1==(0,y.SU)(b.SB).play.moveNumber}]),onClick:a[4]||(a[4]=e=>(0,y.SU)(Q).goto())},"*",2)]),(0,y.SU)(b.i7).module.chess?((0,y.wg)(),(0,y.iD)("span",ny,[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.SB).play.history,(e,t)=>((0,y.wg)(),(0,y.iD)("span",{key:t},[(0,y.SU)(b.SB).play.history[t-1]&&(0,y.SU)(b.SB).play.history[t-1].color==e.color?((0,y.wg)(),(0,y.iD)("span",nb,[e.color==(0,y.SU)(N.Il).white?((0,y.wg)(),(0,y.iD)("span",nv," ... ")):((0,y.wg)(),(0,y.iD)("span",nS,(0,y.zw)((0,y.SU)(Q).number(e))+"...",1))])):(0,y.kq)("",!0),e.color==(0,y.SU)(N.Il).black&&0==t?((0,y.wg)(),(0,y.iD)("span",nw,(0,y.zw)((0,y.SU)(Q).number(e))+"...",1)):(0,y.kq)("",!0),e.color==(0,y.SU)(N.Il).white?((0,y.wg)(),(0,y.iD)("span",n_,(0,y.zw)((0,y.SU)(Q).number(e))+".",1)):(0,y.kq)("",!0),(0,y._)("span",{class:(0,y.C_)(["btn step px-1 py-0",{active:t==(0,y.SU)(b.SB).play.moveNumber}]),onClick:e=>(0,y.SU)(Q).move(t)},(0,y.zw)((0,y.SU)(Q).format(e)),11,nk)]))),128)),(0,y.SU)(b.SB).play.mode!=(0,y.SU)(N.jl).retro?((0,y.wg)(),(0,y.iD)(y.HY,{key:0},[(0,y.SU)(b.SB).play.over==(0,y.SU)(nc.U).checkmate?((0,y.wg)(),(0,y.iD)("span",nU,"Checkmate.")):(0,y.kq)("",!0),(0,y.SU)(b.SB).play.over==(0,y.SU)(nc.U).draw?((0,y.wg)(),(0,y.iD)("span",nx,"Draw.")):(0,y.kq)("",!0)],64)):(0,y.kq)("",!0)])):(0,y.kq)("",!0)]),(0,y._)("div",nB,[(0,y._)("button",{class:"btn btn-secondary",onClick:a[5]||(a[5]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).exit&&(0,y.SU)(Q).exit(...t)})}," Exit playing "),(0,y.Wm)(e2,{factory:(0,y.SU)(Q).copyGame,class:"btn-primary"},{default:(0,y.w5)(()=>a[31]||(a[31]=[(0,y.Uk)(" Copy game ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(Q).copyPGN,class:"btn-primary"},{default:(0,y.w5)(()=>a[32]||(a[32]=[(0,y.Uk)(" Copy PGN ")])),_:1},8,["factory"]),(0,y.SU)(x.O).canPaste?((0,y.wg)(),(0,y.iD)("button",{key:0,class:"btn btn-secondary",onClick:a[6]||(a[6]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).pasteMoves&&(0,y.SU)(Q).pasteMoves(...t)})},a[33]||(a[33]=[(0,y._)("i",{class:"fa-solid fa-paste"},null,-1),(0,y.Uk)(" Paste moves ")]))):(0,y.kq)("",!0)]),(0,y._)("div",nC,[a[37]||(a[37]=(0,y._)("span",{class:"me-3"},"Symbol:",-1)),(0,y._)("div",nD,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:null==(0,y.SU)(b.h).PLAY.symbol,onChange:a[7]||(a[7]=e=>(0,y.SU)(b.h).PLAY.symbol=null),name:"SYM",id:"sEng"},null,40,nA),a[34]||(a[34]=(0,y._)("label",{class:"form-check-label",for:"sEng"}," English ",-1))]),(0,y._)("div",nP,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"german"==(0,y.SU)(b.h).PLAY.symbol,onChange:a[8]||(a[8]=e=>(0,y.SU)(b.h).PLAY.symbol="german"),name:"SYM",id:"sGer"},null,40,nN),a[35]||(a[35]=(0,y._)("label",{class:"form-check-label",for:"sGer"}," German ",-1))]),(0,y._)("div",nE,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"unicode"==(0,y.SU)(b.h).PLAY.symbol,onChange:a[9]||(a[9]=e=>(0,y.SU)(b.h).PLAY.symbol="unicode"),name:"SYM",id:"sUni"},null,40,nI),a[36]||(a[36]=(0,y._)("label",{class:"form-check-label",for:"sUni"}," Unicode ",-1))])]),t()?(0,y.kq)("",!0):((0,y.wg)(),(0,y.iD)("div",nR,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).PLAY.ep,"onUpdate:modelValue":a[10]||(a[10]=e=>(0,y.SU)(b.h).PLAY.ep=e)},{default:(0,y.w5)(()=>a[38]||(a[38]=[(0,y.Uk)("Add ep to en passant moves")])),_:1},8,["modelValue"])])),(0,y._)("div",nO,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).PLAY.zero,"onUpdate:modelValue":a[11]||(a[11]=e=>(0,y.SU)(b.h).PLAY.zero=e)},{default:(0,y.w5)(()=>a[39]||(a[39]=[(0,y.Uk)("Use number 0 for castling notation")])),_:1},8,["modelValue"])]),t()?((0,y.wg)(),(0,y.iD)("div",nW,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).PLAY.negative,"onUpdate:modelValue":a[12]||(a[12]=e=>(0,y.SU)(b.h).PLAY.negative=e)},{default:(0,y.w5)(()=>a[40]||(a[40]=[(0,y.Uk)("Use negative numbers in retro mode")])),_:1},8,["modelValue"])])):(0,y.kq)("",!0)])):((0,y.wg)(),(0,y.iD)(y.HY,{key:1},[(0,y._)("div",nM,[(0,y._)("button",{class:"btn btn-primary",onClick:a[13]||(a[13]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).start&&(0,y.SU)(Q).start(...t)}),disabled:(0,y.SU)(b.SB).popeye.playing},"Start playing",8,nj),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:a[14]||(a[14]=e=>(0,y.SU)(S.X4).reset(!0)),disabled:(0,y.SU)(b.SB).popeye.playing},a[41]||(a[41]=[(0,y._)("i",{class:"fa-solid fa-flag-checkered"},null,-1),(0,y.Uk)("  Starting position ")]),8,nV),(0,y._)("button",{class:"btn btn-secondary",onClick:a[15]||(a[15]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(Q).pasteGame&&(0,y.SU)(Q).pasteGame(...t)}),disabled:(0,y.SU)(b.SB).popeye.playing},a[42]||(a[42]=[(0,y._)("i",{class:"fa-solid fa-paste"},null,-1),(0,y.Uk)(" Paste PGN ")]),8,nT)]),(0,y._)("div",nL,[(0,y._)("div",nz,[(0,y._)("div",nq,[(0,y._)("div",nF,[(0,y.Wm)(ns,{modelValue:(0,y.SU)(b.SB).play.turn,"onUpdate:modelValue":a[16]||(a[16]=e=>(0,y.SU)(b.SB).play.turn=e),label:"Turn:",text:["White","Black"],value:["w","b"],disabled:(0,y.SU)(b.SB).play.mode==(0,y.SU)(N.jl).pass},null,8,["modelValue","disabled"])]),(0,y._)("div",nQ,[(0,y._)("div",nY,[a[44]||(a[44]=(0,y._)("label",{class:"col-auto col-form-label"},"Mode:",-1)),(0,y._)("div",nK,[(0,y.wy)((0,y._)("select",{class:"form-select","onUpdate:modelValue":a[17]||(a[17]=e=>(0,y.SU)(b.SB).play.mode=e),onChange:a[18]||(a[18]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(k.wY)&&(0,y.SU)(k.wY)(...t)})},a[43]||(a[43]=[(0,y._)("option",{value:"normal"},"Normal",-1),(0,y._)("option",{value:"pass"},"Allow passing move",-1),(0,y._)("option",{value:"retro"},"Retro",-1)]),544),[[y.bM,(0,y.SU)(b.SB).play.mode]])])])])]),(0,y._)("div",nG,[a[49]||(a[49]=(0,y.Uk)(" Castling: ")),(0,y._)("span",nH,[(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.K,"onUpdate:modelValue":a[19]||(a[19]=e=>(0,y.SU)(b.SB).play.castle.K=e),disabled:t()},{default:(0,y.w5)(()=>a[45]||(a[45]=[(0,y.Uk)("WK")])),_:1},8,["modelValue","disabled"]),(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.Q,"onUpdate:modelValue":a[20]||(a[20]=e=>(0,y.SU)(b.SB).play.castle.Q=e),disabled:t()},{default:(0,y.w5)(()=>a[46]||(a[46]=[(0,y.Uk)("WQ")])),_:1},8,["modelValue","disabled"])]),(0,y._)("span",nZ,[(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.k,"onUpdate:modelValue":a[21]||(a[21]=e=>(0,y.SU)(b.SB).play.castle.k=e),disabled:t()},{default:(0,y.w5)(()=>a[47]||(a[47]=[(0,y.Uk)("BK")])),_:1},8,["modelValue","disabled"]),(0,y.Wm)(tC,{class:"ms-2 d-inline-block",modelValue:(0,y.SU)(b.SB).play.castle.q,"onUpdate:modelValue":a[22]||(a[22]=e=>(0,y.SU)(b.SB).play.castle.q=e),disabled:t()},{default:(0,y.w5)(()=>a[48]||(a[48]=[(0,y.Uk)("BQ")])),_:1},8,["modelValue","disabled"])])])]),(0,y._)("div",n$,[(0,y._)("div",nX,[a[50]||(a[50]=(0,y._)("label",{class:"col-auto col-form-label"},"En passant square: ",-1)),(0,y._)("div",nJ,[(0,y.wy)((0,y._)("input",{type:"text",class:"form-control",maxlength:"2","onUpdate:modelValue":a[23]||(a[23]=e=>(0,y.SU)(b.SB).play.enPassant=e),disabled:t()},null,8,n0),[[y.nr,(0,y.SU)(b.SB).play.enPassant]])])]),(0,y._)("div",n1,[(0,y._)("div",n2,[(0,y._)("div",n3,[a[51]||(a[51]=(0,y._)("label",{class:"col-auto col-form-label"},"Half moves: ",-1)),(0,y._)("div",n8,[(0,y.wy)((0,y._)("input",{type:"number",class:"form-control",min:"0","onUpdate:modelValue":a[24]||(a[24]=e=>(0,y.SU)(b.SB).play.halfMove=e),disabled:t()},null,8,n4),[[y.nr,(0,y.SU)(b.SB).play.halfMove,void 0,{number:!0}]])])])]),(0,y._)("div",n5,[(0,y._)("div",n7,[a[52]||(a[52]=(0,y._)("label",{class:"col-auto col-form-label"},"Full moves: ",-1)),(0,y._)("div",n6,[(0,y.wy)((0,y._)("input",{type:"number",class:"form-control",min:"1","onUpdate:modelValue":a[25]||(a[25]=e=>(0,y.SU)(b.SB).play.fullMove=e),disabled:t()},null,8,n9),[[y.nr,(0,y.SU)(b.SB).play.fullMove,void 0,{number:!0}]])])])])]),(0,y._)("div",oe,[(0,y._)("button",{class:"btn btn-secondary",onClick:a[26]||(a[26]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(S.Wc)&&(0,y.SU)(S.Wc)(...t)})},"Reset settings")])])])],64))],2))}}),on=(0,y.XI)(""),oo={async fetch(e){try{gtag("event","fen_pdb_get"),e.disabled=!0,e.value="Fetching...";let t=oa+encodeURIComponent("PROBID='".concat(on.value,"'")),n=await fetch("https://corsproxy.io/?"+t),o=await n.text();(0,S.dd)(o.match(/<b>FEN:<\/b> (.+)/)[1],!0)}catch{(0,B.Z)("An error has occurred. Please try again later.")}finally{e.disabled=!1,e.value="Get FEN"}},search(){gtag("event","fen_pdb_search"),window.open(oa+encodeURIComponent(or()))},copyQuery:()=>(gtag("event","fen_pdb_copy"),or()),copyEdit:()=>(gtag("event","fen_pdb_copyEdit"),function(){let e={},{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a;let l=S.xG[o*t+n].value,i=l.match(/^(-?)(?:\*(\d))?([kqbsnrpxc])$/i);if(i){if("x"==i[3])a="sY";else{let e=ol[A.V5.indexOf(i[3].toLowerCase().replace("s","n"))],t=i[1]?"n":os(l);a=t+e+oi[Number(i[2]||0)]}e[a]=(e[a]||"")+(0,P.MA)(o,n)}}let o=[];for(let t in e)o.push(t+e[t]);return o.join(" ")}())},oa="https://pdb.dieschwalbe.de/search.jsp?expression=",ol=["K","D","L","S","T","B","I"],oi=["","R","U","L"];function or(){let e=[],{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a=S.xG[o*t+n].value;if(!a.match(/^[kqbsnrp]$/i))continue;let l=ol[A.V5.indexOf(a.toLowerCase().replace("s","n"))],i=os(a);e.push(i+l+(0,P.MA)(o,n))}let o="POSITION='".concat(e.join(" "),"'");return b.h.DB.exact&&(o+=" AND APIECES=".concat(e.length)),o}function os(e){return e==e.toLowerCase()?"s":"w"}let oc={copyFEN(){gtag("event","fen_yacpdb_copyFEN");let{w:e,h:t}=b.h.board,n=S.xG.map(e=>(0,P.sV)(e.value));return(0,P.N0)(n,e,t)},async fetch(e){try{gtag("event","fen_yacpdb_get"),e.disabled=!0,e.value="Fetching...";let n="https://yacpdb.org/gateway/ql?q="+encodeURIComponent("Id('".concat(on.value,"')")),o=await fetch("https://corsproxy.io/?"+n),a=await o.json();if(a.success){let{w:e,h:n}=b.h.board,o=a.result.entries[0].algebraic,l=(0,P.Q5)(e*n);function t(t){let o=t.charCodeAt(1)-E.oh,a=Number(t[2]);l[(n-a)*e+o]=t[0]}for(let e of o.black)t(e.toLowerCase());for(let e of o.white)t(e);(0,S.dd)((0,P.N0)(l,e,n))}}catch{(0,B.Z)("An error has occurred. Please try again later.")}finally{e.disabled=!1,e.value="Get FEN"}},search(){gtag("event","fen_yacpdb_search"),window.open("https://yacpdb.org/#q/"+encodeURIComponent(ou())+"/1")},copyQuery:()=>(gtag("event","fen_yacpdb_copy"),ou()),copyEdit:()=>(gtag("event","fen_yacpdb_copyEdit"),function(){let e={w:[],b:[],n:[]},{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a=S.xG[o*t+n].value,l=a.match(/^(-?)([kqbsnrp])$/i);if(!l)continue;let i=(0,P.hv)(l[2],!1,!0).toUpperCase();e[l[1]?"n":od(a)].push(i+(0,P.MA)(o,n))}let o=[];return e.w.length&&o.push("    white: [".concat(e.w.join(", "),"]")),e.b.length&&o.push("    black: [".concat(e.b.join(", "),"]")),e.n.length&&o.push("    neutral: [".concat(e.n.join(", "),"]")),o.join("\n")}())};function ou(){let e=[],{w:t,h:n}=b.h.board;for(let o=0;o<n;o++)for(let n=0;n<t;n++){let a=(0,P.sV)(S.xG[o*t+n].value).replace("(","").replace(")","");if(!!a)!a.match(/\d/)&&(a=a.startsWith("!")?"n"+a.toUpperCase():od(a)+a.toUpperCase(),e.push(a+(0,P.MA)(o,n)))}let o='MatrixExtended("'.concat(e.join(" "),'", false, false, "None")');return b.h.DB.exact&&(o+=" AND PCount(*) = "+e.length),o}function od(e){return e==e.toLowerCase()?"b":"w"}let of={class:"row gx-3 mb-2 align-items-center"},op={class:"col"},om={class:"form-check d-inline-block me-3"},oh=["checked"],og={class:"form-check d-inline-block"},oy=["checked"],ob={class:"mb-3 btn-gap"},ov={class:"row gx-3 mb-3"},oS={class:"col"},ow=["readonly"],o_={class:"col-auto"},ok=["disabled"],oU={class:"row align-items-center flex-wrap"},ox={class:"col-auto mb-2"},oB={class:"col text-end btn-gap",style:{"flex-basis":"24rem"}},oC=(0,y.aZ)({__name:"database",setup(e){let t=(0,y.Fl)(()=>"PDB"==b.h.DB.use?oo:oc);return(e,n)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:2==(0,y.SU)(b.SB).tab})},[(0,y._)("div",of,[n[8]||(n[8]=(0,y._)("label",{class:"col-auto col-form-label"},"Use database: ",-1)),(0,y._)("div",op,[(0,y._)("div",om,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"PDB"==(0,y.SU)(b.h).DB.use,onChange:n[0]||(n[0]=e=>(0,y.SU)(b.h).DB.use="PDB"),name:"DB",id:"rPDB"},null,40,oh),n[6]||(n[6]=(0,y._)("label",{class:"form-check-label",for:"rPDB"}," PDB ",-1))]),(0,y._)("div",og,[(0,y._)("input",{class:"form-check-input",type:"radio",checked:"YACPDB"==(0,y.SU)(b.h).DB.use,onChange:n[1]||(n[1]=e=>(0,y.SU)(b.h).DB.use="YACPDB"),name:"DB",id:"rYACPDB"},null,40,oy),n[7]||(n[7]=(0,y._)("label",{class:"form-check-label",for:"rYACPDB"}," YACPDB ",-1))])])]),(0,y._)("div",ob,[(0,y.Wm)(e2,{factory:t.value.copyEdit,class:"btn-primary"},{default:(0,y.w5)(()=>n[9]||(n[9]=[(0,y.Uk)(" Copy board edit syntax ")])),_:1},8,["factory"]),"YACPDB"==(0,y.SU)(b.h).DB.use?((0,y.wg)(),(0,y.j4)(e2,{key:0,factory:(0,y.SU)(oc).copyFEN,class:"btn-secondary"},{default:(0,y.w5)(()=>n[10]||(n[10]=[(0,y.Uk)(" Copy YACPDB FEN ")])),_:1},8,["factory"])):(0,y.kq)("",!0)]),(0,y._)("div",ov,[n[11]||(n[11]=(0,y._)("label",{class:"col-auto col-form-label"},"Problem Id:",-1)),(0,y._)("div",oS,[(0,y.wy)((0,y._)("input",{type:"text",class:"form-control","onUpdate:modelValue":n[2]||(n[2]=e=>(0,y.dq)(on)?on.value=e:null),readonly:(0,y.SU)(b.I3)()||void 0},null,8,ow),[[y.nr,(0,y.SU)(on)]])]),(0,y._)("div",o_,[(0,y._)("input",{type:"button",class:"btn btn-primary",value:"Get FEN",onClick:n[3]||(n[3]=e=>t.value.fetch(e.target)),disabled:(0,y.SU)(b.I3)()},null,8,ok)])]),(0,y._)("div",oU,[(0,y._)("div",ox,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).DB.exact,"onUpdate:modelValue":n[4]||(n[4]=e=>(0,y.SU)(b.h).DB.exact=e)},{default:(0,y.w5)(()=>n[12]||(n[12]=[(0,y.Uk)("Search exactly these pieces")])),_:1},8,["modelValue"])]),(0,y._)("div",oB,[(0,y.Wm)(e2,{factory:t.value.copyQuery,class:"btn-secondary"},{default:(0,y.w5)(()=>n[13]||(n[13]=[(0,y.Uk)(" Copy search query ")])),_:1},8,["factory"]),(0,y._)("button",{class:"btn btn-primary nowrap",onClick:n[5]||(n[5]=function(){for(var e=arguments.length,n=Array(e),o=0;o<e;o++)n[o]=arguments[o];return t.value.search&&t.value.search(...n)})},n[14]||(n[14]=[(0,y._)("i",{class:"fa-solid fa-magnifying-glass"},null,-1),(0,y.Uk)(" Search position ")]))])])],2))}});var oD=n("4119"),oA=n("7737");function oP(){return n.e("946").then(n.bind(n,4587))}function oN(e){try{let t=JSON.parse(e);if("number"!=typeof t.version||!Array.isArray(t.project))throw Error();return t.project}catch{return null}}function oE(e){let t=e.match(/[kqbnrp1-8]{1,8}(?:\/[kqbnrp1-8]{1,8}){7}(?: [wb] (?:-|[kq]{1,4}) (?:-|[a-h][1-8]) \d+ \d+)?/gi);if(!t||!t.length)return null;let n=[];for(let[e,o]of t.entries())n.push((0,oA.E)({fen:o},e));return n}let oI={async reset(){b.h.project.length&&await (0,B.i)("Are you sure you want to clear all entries?")&&b.h.project.length&&(b.h.project=[])},async add(e){if(e){let e=await oP(),t=b.SB.popeye.input,n=(0,G.U_)(t);t=e.normalizeInput(t,n),b.h.project.push((0,oA.E)({fen:n.fen,popeye:t}))}else b.h.project.push((0,oA.E)({fen:S.RI.value}))},remove(e){b.h.project.splice(e,1)},async open(e){let t=await function(e){return new Promise((t,n)=>{let o=new FileReader;o.onload=e=>t(e.target.result),o.onerror=e=>n(e),o.readAsText(e)})}(e);for(let e of[oN,(await oP()).parseOliveFormat,oE]){let n=e(t);if(n){b.h.project=n;return}}(0,B.Z)("Unable to parse the file. The format cannot be recognized.")},link:(0,y.XI)("")};(0,y.m0)(()=>{let e=new Blob([JSON.stringify({version:1,project:b.h.project})],{type:"application/fen.tool.project+json"}),t=URL.createObjectURL(e);oI.link.value&&URL.revokeObjectURL(oI.link.value),oI.link.value=t});var oR=n("6033");let oO={class:"btn-gap"},oW={class:"btn-group"},oM={class:"dropdown-menu"},oj=["href"],oV={key:0,class:"p-1"},oT=["fen","onClick"],oL=["onClick"],oz=(0,y.aZ)({__name:"project",setup(e){let t=(0,y.XI)(!1);function n(e){var t;return(null===(t=e.popeye)||void 0===t?void 0:t.includes("Forsyth"))?(0,oR.Vl)(e.fen):e.fen}return(e,o)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:8==(0,y.SU)(b.SB).tab})},[(0,y._)("input",{type:"file",class:"d-none",id:"project_file",onChange:o[0]||(o[0]=e=>(function(e){var t;let n=null===(t=e.files)||void 0===t?void 0:t[0];n&&(e.value="",oI.open(n))})(e.target)),accept:".fentool,.olv"},null,32),(0,y._)("div",oO,[(0,y._)("div",oW,[(0,y._)("button",{type:"button",class:"btn btn-primary pe-2",onClick:o[1]||(o[1]=e=>(0,y.SU)(oI).add())},o[9]||(o[9]=[(0,y._)("i",{class:"fa-solid fa-plus"},null,-1),(0,y.Uk)(" Add ")])),o[10]||(o[10]=(0,y._)("button",{type:"button",class:"ps-2 btn btn-primary dropdown-toggle dropdown-toggle-split","data-bs-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false"},[(0,y._)("span",{class:"visually-hidden"},"Toggle Dropdown")],-1)),(0,y._)("div",oM,[(0,y._)("div",{class:"dropdown-item",onClick:o[2]||(o[2]=e=>(0,y.SU)(oI).add(!0))},"As a Popeye problem")])]),o[13]||(o[13]=(0,y._)("label",{for:"project_file",class:"btn btn-secondary",title:"Open a project file"},[(0,y._)("i",{class:"fa-regular fa-folder-open"}),(0,y.Uk)(" Open ")],-1)),(0,y._)("a",{href:(0,y.SU)(b.i7).envReady?(0,y.SU)(oI).link.value:void 0,download:"project.fentool",class:"btn btn-secondary",title:"Save project file"},o[11]||(o[11]=[(0,y._)("i",{class:"fa-solid fa-download"},null,-1),(0,y.Uk)(" Save ")]),8,oj),(0,y._)("button",{class:"btn btn-secondary",onClick:o[3]||(o[3]=e=>(0,y.SU)(oI).reset()),title:"Clear all positions in the project"},o[12]||(o[12]=[(0,y._)("i",{class:"fa-regular fa-file"},null,-1),(0,y.Uk)(" Clear ")]))]),(0,y.SU)(b.i7).envReady?((0,y.wg)(),(0,y.iD)("div",{key:0,onMousedown:o[8]||(o[8]=(0,y.iM)(()=>{},["stop"])),class:"mt-3"},[(0,y.SU)(b.h).project.length?(0,y.kq)("",!0):((0,y.wg)(),(0,y.iD)("div",oV,o[14]||(o[14]=[(0,y._)("div",{class:"d-flex flex-wrap"},[(0,y._)("div",{style:{"flex-basis":"max-content"}}," No positions in the project yet.\xa0 "),(0,y._)("div",{style:{"flex-basis":"max-content"}},' Click "Add" to add position. ')],-1)]))),(0,y.Wm)((0,y.SU)(oD.jP),{axis:"xy",list:(0,y.SU)(b.h).project,"onUpdate:list":o[5]||(o[5]=e=>(0,y.SU)(b.h).project=e),distance:(0,y.SU)(x.O).isTouch?0:10,class:(0,y.C_)(["thumbnail-container",{sorting:t.value}]),onSortStart:o[6]||(o[6]=e=>t.value=!0),onSortEnd:o[7]||(o[7]=e=>t.value=!1),"press-delay":(0,y.SU)(x.O).isTouch?200:0,"helper-class":"thumbnail-ghost"},{default:(0,y.w5)(()=>[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.h).project,(e,t)=>((0,y.wg)(),(0,y.j4)((0,y.SU)(oD.cU),{index:t,key:e.id},{default:(0,y.w5)(()=>[(0,y._)("div",{class:(0,y.C_)(["thumbnail-wrapper",{touch:(0,y.SU)(x.O).isTouch}]),onDragstart:o[4]||(o[4]=(0,y.iM)(()=>{},["prevent"]))},[(0,y._)("img",{fen:n(e),onClick:t=>{var o;return o=e,void(!(0,b.I3)()&&((0,S.dd)(n(o)),o.popeye&&(b.SB.tab=7,b.SB.compute="py",b.SB.popeye.input=o.popeye),x.O.isTouch&&document.body.scrollTo({behavior:"smooth",top:0})))},class:(0,y.C_)(["thumbnail",{disabled:(0,y.SU)(b.I3)()}])},null,10,oT),(0,y._)("i",{class:"fa-solid fa-circle-xmark text-danger",onClick:e=>(0,y.SU)(oI).remove(t)},null,8,oL)],34)]),_:2},1032,["index"]))),128))]),_:1},8,["list","distance","class","press-delay"])],32)):(0,y.kq)("",!0)],2))}}),oq={async copy(){if(b.h.board.w!=E.Dm||b.h.board.h!=E.Dm)throw(0,B.Z)("只支援標準棋盤"),Error();return gtag("event","fen_bbs_copy"),(await n.e("936").then(n.bind(n,4816))).generate((0,S.xL)(),eX(),on.value,b.h.BBS,b.h.board,x.O.isTouch)}},oF={class:"row gx-3"},oQ={class:"col flex-grow-1 mb-3",style:{"flex-basis":"max-content"}},oY={class:"col flex-grow-1 text-end"},oK=(0,y.aZ)({__name:"bbs",setup:e=>(e,t)=>(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).isTaiwan?((0,y.wg)(),(0,y.iD)("section",{key:0,class:(0,y.C_)({show:4==(0,y.SU)(b.SB).tab})},[(0,y._)("div",oF,[(0,y._)("div",oQ,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.Id,"onUpdate:modelValue":t[0]||(t[0]=e=>(0,y.SU)(b.h).BBS.Id=e)},{default:(0,y.w5)(()=>t[5]||(t[5]=[(0,y.Uk)("Include database Id")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.coordinates,"onUpdate:modelValue":t[1]||(t[1]=e=>(0,y.SU)(b.h).BBS.coordinates=e)},{default:(0,y.w5)(()=>t[6]||(t[6]=[(0,y.Uk)("Include Coordinates")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.notes,"onUpdate:modelValue":t[2]||(t[2]=e=>(0,y.SU)(b.h).BBS.notes=e)},{default:(0,y.w5)(()=>t[7]||(t[7]=[(0,y.Uk)("Include Notes")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.uncoloredNotes,"onUpdate:modelValue":t[3]||(t[3]=e=>(0,y.SU)(b.h).BBS.uncoloredNotes=e)},{default:(0,y.w5)(()=>t[8]||(t[8]=[(0,y.Uk)("Uncolored Note")])),_:1},8,["modelValue"]),(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).BBS.redBlue,"onUpdate:modelValue":t[4]||(t[4]=e=>(0,y.SU)(b.h).BBS.redBlue=e)},{default:(0,y.w5)(()=>t[9]||(t[9]=[(0,y.Uk)("Use Red and Blue in BBS Code")])),_:1},8,["modelValue"])]),(0,y._)("div",oY,[(0,y.Wm)(e2,{factory:(0,y.SU)(oq).copy,class:"btn-primary"},{default:(0,y.w5)(()=>t[10]||(t[10]=[(0,y.Uk)("Copy BBS Code")])),_:1},8,["factory"])])])],2)):(0,y.kq)("",!0)}),oG=["disabled"],oH={class:"mb-3 row gx-2"},oZ={class:"col"},o$={class:"w-passive-100"},oX=["disabled"],oJ={class:"col-auto text-end"},o0={class:"btn-gap"},o1=["disabled"],o2={key:1},o3=["title"],o8={key:0},o4={class:"mb-3 row"},o5={class:"col"},o7={class:"btn-gap"},o6={class:"col-auto text-end"},o9={key:1,class:"mb-3 row"},ae={class:"col"},at={class:"btn-gap"},an=["disabled"],ao=["disabled"],aa=["disabled"],al=["disabled"],ai={class:"col-auto text-end"},ar=["innerHTML"],as=(0,y.aZ)({__name:"popeye",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("div",null,[(0,y.wy)((0,y._)("div",null,[(0,y.wy)((0,y._)("textarea",{class:"form-control mb-2",rows:"5","onUpdate:modelValue":t[0]||(t[0]=e=>(0,y.SU)(b.SB).popeye.input=e),disabled:(0,y.SU)(b.SB).popeye.running,placeholder:"For example:\n=============\nStipulation #2\nOption Variation"},null,8,oG),[[y.nr,(0,y.SU)(b.SB).popeye.input]]),(0,y._)("div",oH,[(0,y._)("div",oZ,[(0,y._)("div",o$,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[1]||(t[1]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).editMap&&(0,y.SU)(G.wD).editMap(...t)}),disabled:(0,y.SU)(b.SB).popeye.running,style:{overflow:"hidden","white-space":"nowrap","text-overflow":"ellipsis","max-width":"100%"}},t[15]||(t[15]=[(0,y._)("i",{class:"fa-solid fa-pen-to-square"},null,-1),(0,y.Uk)(" Fairy piece mapping ")]),8,oX)])]),(0,y._)("div",oJ,[(0,y._)("div",o0,[!(0,y.SU)(b.SB).popeye.running&&(0,y.SU)(b.SB).popeye.output?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-secondary",onClick:t[2]||(t[2]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).play&&(0,y.SU)(G.wD).play(...t)}),disabled:(0,y.SU)(b.SB).popeye.error}," Play solution ",8,o1)):(0,y.kq)("",!0),(0,y.SU)(b.SB).popeye.running?((0,y.wg)(),(0,y.iD)("button",{key:2,type:"button",class:"btn btn-secondary",onClick:t[4]||(t[4]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).cancel&&(0,y.SU)(G.wD).cancel(...t)})},t[18]||(t[18]=[(0,y._)("i",{class:"fa-solid fa-stop"},null,-1),(0,y.Uk)(" Cancel ")]))):((0,y.wg)(),(0,y.iD)("span",o2,[(0,y.SU)(b.SB).play.playing||!(0,y.SU)(b.SB).popeye.input.trim()?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary disabled",title:(0,y.SU)(b.SB).play.playing?"Need to exit play mode first":"Input instructions first"},t[16]||(t[16]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Run ")]),8,o3)):((0,y.wg)(),(0,y.iD)("button",{key:1,type:"button",class:"btn btn-primary",onClick:t[3]||(t[3]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).run&&(0,y.SU)(G.wD).run(...t)}),title:"Run Popeye on your device!"},t[17]||(t[17]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Run ")])))]))])])])],512),[[y.F8,!(0,y.SU)(b.SB).popeye.playing&&!(0,y.SU)(b.SB).popeye.editMap]]),!(0,y.SU)(b.SB).popeye.playing&&(0,y.SU)(b.SB).popeye.editMap?((0,y.wg)(),(0,y.iD)("div",o8,[(0,y.wy)((0,y._)("textarea",{class:"form-control mb-2",rows:"5","onUpdate:modelValue":t[5]||(t[5]=e=>(0,y.SU)(b.SB).popeye.mapping=e),placeholder:"Use the format like *2Q=G for each line."},null,512),[[y.nr,(0,y.SU)(b.SB).popeye.mapping]]),(0,y._)("div",o4,[(0,y._)("div",o5,[(0,y._)("div",o7,[(0,y._)("button",{type:"button",class:"btn btn-primary",onClick:t[6]||(t[6]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).saveMap&&(0,y.SU)(G.wD).saveMap(...t)})}," Save setting "),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[7]||(t[7]=e=>(0,y.SU)(b.SB).popeye.editMap=!1)}," Cancel ")])]),(0,y._)("div",o6,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[8]||(t[8]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).resetMap&&(0,y.SU)(G.wD).resetMap(...t)})}," Reset ")])])])):(0,y.kq)("",!0),(0,y.SU)(b.SB).popeye.playing?((0,y.wg)(),(0,y.iD)("div",o9,[(0,y._)("div",ae,[(0,y._)("div",at,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[9]||(t[9]=e=>(0,y.SU)(G.wD).move(0)),disabled:(0,y.SU)(b.SB).popeye.index<=0},t[19]||(t[19]=[(0,y._)("i",{class:"fa-solid fa-angles-left fa-fw"},null,-1)]),8,an),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[10]||(t[10]=e=>(0,y.SU)(G.wD).moveBy(-1)),disabled:(0,y.SU)(b.SB).popeye.index<=0},t[20]||(t[20]=[(0,y._)("i",{class:"fa-solid fa-angle-left fa-fw"},null,-1)]),8,ao),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[11]||(t[11]=e=>(0,y.SU)(G.wD).moveBy(1)),disabled:(0,y.SU)(b.SB).popeye.index>=(0,y.SU)(b.SB).popeye.steps.length-1},t[21]||(t[21]=[(0,y._)("i",{class:"fa-solid fa-angle-right fa-fw"},null,-1)]),8,aa),(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[12]||(t[12]=e=>(0,y.SU)(G.wD).move((0,y.SU)(b.SB).popeye.steps.length-1)),disabled:(0,y.SU)(b.SB).popeye.index>=(0,y.SU)(b.SB).popeye.steps.length-1},t[22]||(t[22]=[(0,y._)("i",{class:"fa-solid fa-angles-right fa-fw"},null,-1)]),8,al)])]),(0,y._)("div",ai,[(0,y._)("button",{type:"button",class:"btn btn-secondary",onClick:t[13]||(t[13]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(G.wD).exit&&(0,y.SU)(G.wD).exit(...t)})}," Exit playing ")])])):(0,y.kq)("",!0),(0,y.wy)((0,y._)("div",{id:"Output",class:"form-control",innerHTML:(0,y.SU)(b.SB).popeye.output,onClick:t[14]||(t[14]=e=>(0,y.SU)(G.wD).step(e))},null,8,ar),[[y.F8,(0,y.SU)(b.SB).popeye.output&&7==(0,y.SU)(b.SB).tab]]),t[23]||(t[23]=(0,y._)("div",{class:"mt-2"},[(0,y._)("a",{href:"https://github.com/thomas-maeder/popeye/blob/master/py-engl.txt",target:"_blank"}," Popeye documentation ")],-1))],512)),[[y.F8,"py"==(0,y.SU)(b.SB).compute]])}),ac={key:0},au={key:1,type:"button",class:"btn btn-primary",disabled:""},ad={key:1},af={key:2},ap={key:0,class:"row align-items-baseline"},am={class:"col",style:{"flex-basis":"12rem"}},ah={class:"row gx-3 mb-2"},ag={class:"col"},ay={class:"col",style:{"flex-basis":"11rem"}},ab={class:"row gx-3 mb-2"},av={class:"col"},aS={class:"col mb-2",style:{"flex-basis":"10rem"}},aw={class:"btn-gap"},a_={key:1,disabled:"",class:"btn btn-primary"},ak={class:"mt-3"},aU={key:0},ax={key:0},aB={key:1},aC={key:2},aD={key:3},aA={class:"table"},aP={class:"align-top"},aN={class:"nowrap"},aE={class:"mt-2"},aI=["onClick"],aR=["textContent"],aO=(0,y.aZ)({__name:"stockfish",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("div",null,[(0,y.SU)(b.i7).stockfish.status<(0,y.SU)(N.KO).needReload?((0,y.wg)(),(0,y.iD)("div",ac,[t[8]||(t[8]=(0,y._)("div",{class:"mb-3"},"To use this feature, we need to download Stockfish modules first.",-1)),(0,y.SU)(b.i7).stockfish.status==(0,y.SU)(N.KO).notDownloaded?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary",onClick:t[0]||(t[0]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(ek).download&&(0,y.SU)(ek).download(...t)})},t[6]||(t[6]=[(0,y._)("i",{class:"fa-solid fa-download"},null,-1),(0,y.Uk)(" Download now! (39.5MB) ")]))):((0,y.wg)(),(0,y.iD)("button",au,t[7]||(t[7]=[(0,y._)("i",{class:"fa-solid fa-download"},null,-1),(0,y.Uk)(" Downloading... "),(0,y._)("i",{class:"fa-solid fa-spinner fa-spin"},null,-1)])))])):(0,y.SU)(b.i7).stockfish.status==(0,y.SU)(N.KO).needReload?((0,y.wg)(),(0,y.iD)("div",ad,t[9]||(t[9]=[(0,y._)("div",{class:"mb-3"},"Download complete. Please restart FEN Tool.",-1),(0,y._)("button",{type:"button",class:"btn btn-primary",onclick:"location.reload()"},[(0,y._)("i",{class:"fa-solid fa-rotate-right"}),(0,y.Uk)(" Restart FEN Tool now ")],-1)]))):((0,y.wg)(),(0,y.iD)("div",af,[(0,y.SU)(b.i7).stockfish.running<(0,y.SU)(N.MI).running?((0,y.wg)(),(0,y.iD)("div",ap,[(0,y._)("div",am,[(0,y._)("div",ah,[t[10]||(t[10]=(0,y._)("label",{class:"col-auto col-form-label"},"Depth:",-1)),(0,y._)("div",ag,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(b.h).Stockfish.depth,"onUpdate:modelValue":t[1]||(t[1]=e=>(0,y.SU)(b.h).Stockfish.depth=e),min:1,title:"Search depth"},null,8,["modelValue"])])])]),(0,y._)("div",ay,[(0,y._)("div",ab,[t[11]||(t[11]=(0,y._)("label",{class:"col-auto col-form-label"},"Lines:",-1)),(0,y._)("div",av,[(0,y.Wm)(tE,{modelValue:(0,y.SU)(b.h).Stockfish.lines,"onUpdate:modelValue":t[2]||(t[2]=e=>(0,y.SU)(b.h).Stockfish.lines=e),min:1,title:"Number of lines to search"},null,8,["modelValue"])])])]),(0,y._)("div",aS,[(0,y.Wm)(tC,{modelValue:(0,y.SU)(b.h).Stockfish.study,"onUpdate:modelValue":t[3]||(t[3]=e=>(0,y.SU)(b.h).Stockfish.study=e),disabled:(0,y.SU)(b.h).Stockfish.lines<=1},{default:(0,y.w5)(()=>t[12]||(t[12]=[(0,y.Uk)("Study mode")])),_:1},8,["modelValue","disabled"])])])):(0,y.kq)("",!0),(0,y._)("div",aw,[(0,y.SU)(b.i7).stockfish.running?(0,y.SU)(b.i7).stockfish.running==(0,y.SU)(N.MI).starting?((0,y.wg)(),(0,y.iD)("button",a_,t[14]||(t[14]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Initializing... ")]))):((0,y.wg)(),(0,y.iD)("button",{key:2,type:"button",class:"btn btn-secondary",onClick:t[5]||(t[5]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(ek).stop&&(0,y.SU)(ek).stop(...t)})},t[15]||(t[15]=[(0,y._)("i",{class:"fa-solid fa-stop"},null,-1),(0,y.Uk)(" Stop ")]))):((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary",onClick:t[4]||(t[4]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(ek).analyze&&(0,y.SU)(ek).analyze(...t)})},t[13]||(t[13]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Analyze with Stockfish 16 ")])))]),(0,y._)("div",ak,[(0,y.SU)(b.SB).stockfish.depth?((0,y.wg)(),(0,y.iD)("div",aU,[(0,y._)("span",null,"Depth: "+(0,y.zw)((0,y.SU)(b.SB).stockfish.depth),1),(0,y.SU)(b.i7).stockfish.running==(0,y.SU)(N.MI).running?((0,y.wg)(),(0,y.iD)("span",ax,[(0,y.Uk)(" /"+(0,y.zw)((0,y.SU)(b.h).Stockfish.depth)+" ",1),t[16]||(t[16]=(0,y._)("i",{class:"fa-solid fa-spinner fa-spin ms-2"},null,-1))])):(0,y.kq)("",!0)])):(0,y.kq)("",!0),(0,y.SU)(b.SB).stockfish.mate?((0,y.wg)(),(0,y.iD)("div",aB,(0,y.zw)(((0,y.SU)(b.SB).stockfish.mate||"")[0])+" has mate in "+(0,y.zw)(((0,y.SU)(b.SB).stockfish.mate||"")[1])+". ",1)):(0,y.SU)(b.SB).stockfish.score?((0,y.wg)(),(0,y.iD)("div",aC," Score: "+(0,y.zw)((0,y.SU)(b.SB).stockfish.score),1)):(0,y.kq)("",!0),(0,y.SU)(b.SB).stockfish.header.length?((0,y.wg)(),(0,y.iD)("div",aD,[t[17]||(t[17]=(0,y.Uk)(" Solution is unique against best defense up to:")),t[18]||(t[18]=(0,y._)("br",null,null,-1)),(0,y.Uk)(" "+(0,y.zw)((0,y.SU)(ek).format((0,y.SU)(b.SB).stockfish.header)),1),t[19]||(t[19]=(0,y._)("br",null,null,-1)),t[20]||(t[20]=(0,y.Uk)(" And then: "))])):(0,y.kq)("",!0),(0,y._)("table",aA,[(0,y._)("tbody",null,[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.SB).stockfish.lines.filter(e=>e&&e.moves.length),e=>((0,y.wg)(),(0,y.iD)("tr",{key:e.pgn},[(0,y._)("td",aP,[(0,y._)("div",aN,(0,y.zw)(e.score),1),(0,y._)("div",aE,[(0,y._)("button",{type:"button",class:"btn btn-primary px-2 py-0 m-0",title:"Play this line",onClick:t=>(0,y.SU)(ek).play(e)},t[21]||(t[21]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1)]),8,aI)])]),(0,y._)("td",{class:"align-top w-100",textContent:(0,y.zw)((0,y.SU)(ek).format(e.moves))},null,8,aR)]))),128))])])])]))],512)),[[y.F8,"sf"==(0,y.SU)(b.SB).compute]])}),aW={class:"mb-3"},aM=["innerHTML"],aj={key:1,class:"mt-3 table"},aV={class:"align-top py-1"},aT=["onClick"],aL={key:0,class:"fa-solid fa-spinner fa-spin ms-2"},az=(0,y.aZ)({__name:"syzygy",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("div",null,[(0,y._)("div",aW,[(0,y.SU)(b.i7).syzygy.running?((0,y.wg)(),(0,y.iD)("button",{key:1,class:"btn btn-secondary me-3",onClick:t[1]||(t[1]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(eI).stop&&(0,y.SU)(eI).stop(...t)})},t[3]||(t[3]=[(0,y._)("i",{class:"fa-solid fa-stop"},null,-1),(0,y.Uk)(" Stop ")]))):((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary",onClick:t[0]||(t[0]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(eI).run&&(0,y.SU)(eI).run(...t)})},t[2]||(t[2]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1),(0,y.Uk)(" Analyze with Syzygy tablebase ")])))]),(0,y.SU)(b.SB).syzygy.header?((0,y.wg)(),(0,y.iD)("div",{key:0,innerHTML:(0,y.SU)(b.SB).syzygy.header},null,8,aM)):(0,y.kq)("",!0),(0,y.SU)(b.SB).syzygy.lines?((0,y.wg)(),(0,y.iD)("table",aj,[((0,y.wg)(!0),(0,y.iD)(y.HY,null,(0,y.Ko)((0,y.SU)(b.SB).syzygy.lines,e=>((0,y.wg)(),(0,y.iD)("tr",{key:e.pgn},[(0,y._)("td",aV,[e.leaf?((0,y.wg)(),(0,y.iD)("button",{key:0,type:"button",class:"btn btn-primary px-2 py-0 m-0",title:"Play this line",onClick:t=>(0,y.SU)(eI).play(e)},t[4]||(t[4]=[(0,y._)("i",{class:"fa-solid fa-play"},null,-1)]),8,aT)):(0,y.kq)("",!0)]),(0,y._)("td",{class:"align-top w-100 py-1",style:(0,y.j5)("padding-left:".concat(e.indent+.5,"rem"))},[(0,y.Uk)((0,y.zw)((0,y.SU)(eI).format(e))+" ",1),e.searching?((0,y.wg)(),(0,y.iD)("i",aL)):(0,y.kq)("",!0)],4)]))),128))])):(0,y.kq)("",!0)],512)),[[y.F8,"sy"==(0,y.SU)(b.SB).compute]])}),aq={class:"mb-3"},aF=(0,y.aZ)({__name:"compute",setup:e=>(e,t)=>(0,y.wy)(((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:7==(0,y.SU)(b.SB).tab})},[(0,y._)("div",aq,[(0,y.Wm)(ns,{modelValue:(0,y.SU)(b.SB).compute,"onUpdate:modelValue":t[0]||(t[0]=e=>(0,y.SU)(b.SB).compute=e),label:"Tool:",text:["Popeye","Stockfish","Syzygy"],value:["py","sf","sy"]},null,8,["modelValue"])]),(0,y.Wm)(as),(0,y.Wm)(aO),(0,y.Wm)(az)],2)),[[y.F8,7==(0,y.SU)(b.SB).tab]])}),aQ={class:"mb-2 btn-gap"},aY={class:"mb-2 btn-gap"},aK={class:"btn-gap"},aG=(0,y.aZ)({__name:"api",setup(e){let t=!location.protocol.startsWith("http");return(e,n)=>((0,y.wg)(),(0,y.iD)("section",{class:(0,y.C_)({show:5==(0,y.SU)(b.SB).tab})},[(0,y._)("div",aQ,[(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyBase64,class:"btn-secondary",disabled:t},{default:(0,y.w5)(()=>n[0]||(n[0]=[(0,y.Uk)(" Copy base64 link ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyBase64Img,class:"btn-secondary",disabled:t},{default:(0,y.w5)(()=>n[1]||(n[1]=[(0,y.Uk)(" Copy base64 <img> code ")])),_:1},8,["factory"])]),n[6]||(n[6]=(0,y._)("h6",null,"Embed mode",-1)),(0,y._)("div",aY,[(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyEmbed,class:"btn-secondary"},{default:(0,y.w5)(()=>n[2]||(n[2]=[(0,y.Uk)(" Copy embed HTML code ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyEmbedUrl,class:"btn-secondary"},{default:(0,y.w5)(()=>n[3]||(n[3]=[(0,y.Uk)(" Copy just the URL ")])),_:1},8,["factory"])]),n[7]||(n[7]=(0,y._)("h6",null,"SDK mode",-1)),(0,y._)("div",aK,[(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copySDK,class:"btn-secondary"},{default:(0,y.w5)(()=>n[4]||(n[4]=[(0,y.Uk)(" Copy SDK script tag ")])),_:1},8,["factory"]),(0,y.Wm)(e2,{factory:(0,y.SU)(e0).copyImg,class:"btn-secondary"},{default:(0,y.w5)(()=>n[5]||(n[5]=[(0,y.Uk)(" Copy SDK <img> code ")])),_:1},8,["factory"])])],2))}}),aH={class:"d-flex mb-4"},aZ=(0,y.aZ)({__name:"sections",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",aH,[(0,y.Wm)(tU),(0,y.Wm)(oz),(0,y.Wm)(na),(0,y.Wm)(aG),(0,y.Wm)(oC),(0,y.Wm)(ot),(0,y.Wm)(aF),(0,y.Wm)(oK)]))}),a$={class:"w-passive-100"},aX={class:"row gx-3 mb-1"},aJ={class:"col mb-2",style:{"flex-basis":"15rem","flex-grow":"1000"}},a0={class:"col ps-0 mb-2 text-end",style:{"white-space":"nowrap","flex-basis":"max-content"}},a1=["textContent"],a2={key:0,class:"btn-group"},a3=["disabled"],a8=(0,y.aZ)({__name:"header",setup(e){function t(){gtag("event","fen_copy"),navigator.clipboard.writeText(S.RI.value)}async function n(){gtag("event","fen_paste"),(0,S.dd)(await D(),!0)}return(e,o)=>((0,y.wg)(),(0,y.iD)("header",a$,[(0,y._)("div",aX,[(0,y._)("div",aJ,[(0,y.wy)((0,y._)("input",{type:"text",class:"form-control",placeholder:"Enter FEN here","onUpdate:modelValue":o[0]||(o[0]=e=>(0,y.dq)(S.RI)?S.RI.value=e:null),onChange:o[1]||(o[1]=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,y.SU)(S.X4).update&&(0,y.SU)(S.X4).update(...t)})},null,544),[[y.nr,(0,y.SU)(S.RI)]])]),(0,y._)("div",a0,[(0,y._)("label",{class:"col-form-label pe-2",textContent:(0,y.zw)((0,y.SU)(b.i7).pieceCount)},null,8,a1),(0,y.SU)(b.i7).envReady&&(0,y.SU)(x.O).canCopy?((0,y.wg)(),(0,y.iD)("div",a2,[(0,y._)("button",{class:"btn btn-secondary",title:"Copy",onClick:t},o[2]||(o[2]=[(0,y._)("i",{class:"fa-solid fa-clipboard"},null,-1)])),(0,y.SU)(x.O).canPaste?((0,y.wg)(),(0,y.iD)("button",{key:0,class:"btn btn-secondary",disabled:(0,y.SU)(b.I3)(),title:"Paste",onClick:n},o[3]||(o[3]=[(0,y._)("i",{class:"fa-solid fa-paste"},null,-1)]),8,a3)):(0,y.kq)("",!0)])):(0,y.kq)("",!0)])])]))}}),a4={class:"text-center"},a5={class:"d-inline-block",style:{overflow:"hidden"}},a7={class:"d-inline-block position-relative"},a6={id:"Squares"},a9={class:"play-mask"},le={id:"DragZone",class:"flex-grow-0 pb-4"},lt=(0,y.aZ)({__name:"zone",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",a4,[(0,y._)("div",a5,[(0,y._)("div",{id:"Zone",class:(0,y.C_)(["d-inline-flex justify-content-center text-center collapse flex-wrap-reverse",{collapse:(0,y.SU)(b.i7).collapse}])},[(0,y._)("div",{id:"EditZone",class:"flex-grow-0 pb-4",style:(0,y.j5)({textAlign:b.i7.collapse?b.i7.hor?"center":"start":"unset"})},[(0,y._)("div",a7,[t[0]||(t[0]=(0,y._)("canvas",{id:"SN"},null,-1)),(0,y._)("div",a6,[(0,y.wy)((0,y._)("div",a9,null,512),[[y.F8,(0,y.SU)(b.I3)()]])])])],4),(0,y._)("div",le,[(0,y._)("div",{class:(0,y.C_)(["position-relative d-inline-block",{"mb-3":(0,y.SU)(b.i7).hor}]),style:{"line-height":"0"},role:"application"},[t[2]||(t[2]=(0,y._)("canvas",{id:"CN"},null,-1)),(0,y._)("div",{class:(0,y.C_)(["loader",{show:(0,y.SU)(b.i7).loading}])},t[1]||(t[1]=[(0,y._)("div",{class:"h-100 d-flex align-items-center justify-content-center"},[(0,y._)("i",{class:"display-1 fa-solid fa-spinner fa-spin"})],-1)]),2),t[3]||(t[3]=(0,y._)("img",{id:"PV"},null,-1))],2),(0,y.wy)((0,y._)("canvas",{id:"TP",class:(0,y.C_)({"ms-4":!(0,y.SU)(b.i7).hor}),role:"menu"},null,2),[[y.F8,!(0,y.SU)(b.u8)()]])])],2)])]))}),ln={class:"mb-4 row small"};var lo=n("2176");let la=(0,lo.default)({},[["render",function(e,t){return(0,y.wg)(),(0,y.iD)("footer",ln,t[0]||(t[0]=[(0,y._)("div",{class:"col flex-grow-1",style:{"flex-basis":"max-content"}},[(0,y.Uk)(" For more information and API, see "),(0,y._)("a",{href:"https://github.com/MuTsunTsai/fen-tool",target:"_blank"},"README"),(0,y.Uk)(". ")],-1),(0,y._)("div",{class:"col-auto text-end"},"Copyright \xa9 2023-2024 Mu-Tsun Tsai",-1)]))}]]),ll={style:{display:"contents"}},li={class:"d-flex justify-content-center p-3"},lr={class:"flex-grow-0 text-start",style:{"max-width":"100%"}},ls={class:"w-passive-100"},lc={key:0,src:"."},lu=(0,y.aZ)({__name:"app",setup:e=>(e,t)=>((0,y.wg)(),(0,y.iD)("div",ll,[(0,y._)("main",li,[(0,y._)("div",lr,[(0,y.Wm)(a8),(0,y.Wm)(lt),(0,y._)("div",ls,[(0,y.Wm)(eZ),(0,y.Wm)(aZ)]),t[0]||(t[0]=(0,y._)("hr",null,null,-1)),(0,y.Wm)(la)])]),(0,y.Wm)(ez),(0,y.Wm)(eq),(0,y.SU)(b.SB).split?((0,y.wg)(),(0,y.iD)("iframe",lc)):(0,y.kq)("",!0)]))});(0,ed.S)({getDefault:()=>b.h.board,getTitle:e=>e}),document.addEventListener("mousedown",e=>{var t;let n=null===(t=document.activeElement)||void 0===t?void 0:t.nodeName.toLowerCase();"input"!=n&&"textarea"!=n&&e.detail>1&&e.preventDefault()},!1),addEventListener("keydown",e=>{var t;if(!b.SB.play.playing&&!b.SB.popeye.playing)return;let n=null===(t=document.activeElement)||void 0===t?void 0:t.nodeName.toLowerCase();if("input"==n||"textarea"==n)return;let o=e.key;("a"==o||"ArrowLeft"==o)&&(e.preventDefault(),b.SB.play.playing?R(-1):G.wD.moveBy(-1)),("d"==o||"ArrowRight"==o)&&(e.preventDefault(),b.SB.play.playing?R(1):G.wD.moveBy(1))}),(0,y.vr)(lu).mount("#app"),b.i7.envReady=!0,(0,b.wH)(),(0,w.q_)(),_.fr.onmousedown=es,_.fr.ontouchstart=es,_.fr.ondragstart=e=>e.preventDefault(),_.fr.onwheel=ei,_.in.onmousedown=es,_.in.ontouchstart=es,document.body.onmousedown=e=>{!(0,b.I3)()&&e.target!=_.in&&e.target!=_.fr&&ea()},document.body.onmousemove=eo,document.body.ontouchmove=eo,document.body.onmouseleave=el,document.body.onmouseup=el,document.body.ontouchend=el,(0,y.m0)(()=>{document.body.classList.toggle("split",b.SB.split),Promise.resolve().then(()=>(0,w.l)({}))}),(0,y.m0)(S.tZ)},4097:function(e,t,n){function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!(t instanceof Object))return e;for(let l of Object.keys(t)){if(n&&e instanceof Object&&!(l in e))continue;let i=t[l];i instanceof Object?e[l]instanceof Object&&e[l]!=i?e[l]=o(e[l],i,n):e[l]=a(i):e[l]=i}return e}function a(e){return o(Array.isArray(e)?[]:{},e)}n.d(t,{d:function(){return l},n:function(){return o}});let l="function"==typeof structuredClone?structuredClone:a},2506:function(e,t,n){n.d(t,{Dm:function(){return a},WT:function(){return o},_N:function(){return l},cb:function(){return i},oh:function(){return r}});let o=1e3,a=8,l=3,i=64,r=97},375:function(e,t,n){function o(){let e;let t=async function(t){return await n,e(t)},n=new Promise(n=>{t.setup=function(t){e=t,n()}});return t}n.d(t,{Z:function(){return a},i:function(){return l}});let a=o(),l=o()},899:function(e,t,n){n.d(t,{Ab:function(){return s},S8:function(){return r},fr:function(){return c},in:function(){return i},m8:function(){return a},ut:function(){return l}});let o=document.createElement("canvas"),a=document.getElementById("CN")||o,l=document.getElementById("SN")||o,i=document.getElementById("TP")||o,r=document.getElementById("CanvasGhost")||o,s=document.getElementById("TemplateGhost")||o,c=document.getElementById("PV")},3276:function(e,t,n){n.d(t,{Il:function(){return g},KO:function(){return f},MI:function(){return p},Nm:function(){return m},V1:function(){return b},jl:function(){return y},mQ:function(){return w},mi:function(){return h},wg:function(){return S}});var o,a,l,i,r,s,c,u,d,f=((o={})[o.notDownloaded=0]="notDownloaded",o[o.downloading=1]="downloading",o[o.needReload=2]="needReload",o[o.ready=3]="ready",o);var p=((a={})[a.stop=0]="stop",a[a.starting=1]="starting",a[a.running=2]="running",a);var m=((l={})[l.counterclockwise=-1]="counterclockwise",l[l.clockwise=1]="clockwise",l[l.turn=2]="turn",l);var h=((i={})[i.r90=1]="r90",i[i.r180=2]="r180",i[i.r270=3]="r270",i[i.full=4]="full",i);var g=((r={}).black="b",r.white="w",r.neutral="n",r);var y=((s={}).normal="normal",s.pass="pass",s.retro="retro",s);var b=((c={})[c.bK=0]="bK",c[c.wK=1]="wK",c[c.nK=2]="nK",c[c.bQ=3]="bQ",c[c.wQ=4]="wQ",c[c.nQ=5]="nQ",c[c.bB=6]="bB",c[c.wB=7]="wB",c[c.nB=8]="nB",c[c.bN=9]="bN",c[c.wN=10]="wN",c[c.nN=11]="nN",c[c.bR=12]="bR",c[c.wR=13]="wR",c[c.nR=14]="nR",c[c.bP=15]="bP",c[c.wP=16]="wP",c[c.nP=17]="nP",c[c.bC=18]="bC",c[c.wC=19]="wC",c[c.nC=20]="nC",c[c.bX=21]="bX",c[c.wX=22]="wX",c[c.nX=23]="nX",c);var S=((u={})[u.k=0]="k",u[u.q=1]="q",u[u.b=2]="b",u[u.n=3]="n",u[u.r=4]="r",u[u.p=5]="p",u[u.c=6]="c",u[u.x=7]="x",u);var w=((d={})[d.edit=0]="edit",d[d.options=1]="options",d[d.database=2]="database",d[d.bbs=4]="bbs",d[d.api=5]="api",d[d.play=6]="play",d[d.compute=7]="compute",d[d.project=8]="project",d)},9683:function(e,t,n){n.d(t,{O:function(){return r},u:function(){return l}});let o=navigator.clipboard,a="canShare"in navigator,l=Math.min(2,Math.floor(devicePixelRatio)),i=matchMedia("(hover: none), (pointer: coarse)").matches,r={isTop:top==self,thread:"undefined"!=typeof SharedArrayBuffer,canShare:a,canSharePng:function(){if(!a)return!1;let e=atob("iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII"),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);let n=new File([new Blob([t])],"1.png",{type:"image/png"});return navigator.canShare({files:[n]})}(),canCopy:o&&"writeText"in o,canPaste:o&&"readText"in o,canCopyImg:o&&"write"in o,isTouch:i,isTaiwan:navigator.languages.includes("zh-TW")}},6919:function(e,t,n){n.d(t,{A1:function(){return h},C3:function(){return m},Di:function(){return x},Fv:function(){return S},J7:function(){return l},MA:function(){return k},N0:function(){return b},Nv:function(){return d},Q5:function(){return B},S3:function(){return y},TP:function(){return a},U1:function(){return A},U_:function(){return P},_n:function(){return U},hD:function(){return D},hv:function(){return _},sV:function(){return w},uY:function(){return C}});var o=n(2506);let a="8/8/8/8/8/8/8/8",l="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR",i="\\p{Extended_Pictographic}",r="\\p{Emoji_Modifier}",s="".concat("\\p{Regional_Indicator}","{2}|").concat(i,"\\uFE0F?").concat(r,"?(\\u200D").concat(i,"\\uFE0F?").concat(r,"?)*"),c="\\((!?)([kqbnrp])(\\d?)\\)",u="[-~]?(\\*\\d)?(".concat("[kqbnrpcxstadg]","|").concat("'(".concat(s,"|[^'])|''.."),")"),d=RegExp("^(?:".concat(s,")$"),"u"),f=RegExp("^(?:".concat(c,"|").concat(u,")$"),"iu"),p=RegExp("\\/|\\d+|".concat(c,"|").concat(u,"|."),"iug");function m(e){let t=e.match(p)||[];if(!t.some(e=>e.match(/^\d\d+$/)))return e;let n=[0],o=0;for(let e=0;e<t.length;e++){let a=t[e];if("/"==a)n[++o]=0;else if(a.match(/^\d+$/)){if(1==a.length)n[o]+=Number(a);else{let l=a.split("").map(e=>Number(e)).reduce((e,t)=>e+t,0);n[o]+=l,t[e]=l.toString()}}else n[o]++}return g(n)?t.join(""):e}function h(e){let t=e.match(p)||[],n=[0],o=0;for(let e of t)"/"==e?n[++o]=0:e.match(/^\d+$/)?n[o]+=Number(e):n[o]++;let a=n.length;if(1!=a){if(g(n))return{w:n[0],h:a}}}function g(e){let t=e[0];for(let n=1;n<e.length;n++)if(e[n]!=t)return!1;return!0}function y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=e.match(p)||[],l=[],i=!1;for(let e of a){if("/"==e){if(!i){let e=l.length+t-l.length%t;for(;l.length<e;)l.push("")}}else if(e.match(/^\d+$/)){let t=Number(e);for(let e=0;e<t;e++)l.push("")}else l.push(e);if(i="/"!=e&&l.length%t==0,l.length==t*n)break}for(;l.length<t*n;)l.push("");return l}function b(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=0,l="";function i(){a&&(l+=a),a=0}for(let o=0;o<n;o++){for(let n=0;n<t;n++){let r=o*t+n;""==e[r]?a++:(i(),l+=e[r])}i(),o<n-1&&(l+="/")}return l}function S(e,t,n){if(!e.match(f)){if(e.match(d))e="'"+e;else{let t=[...e].length;e=1==t&&"'"!=e?"'"+e:2==t?"''"+e:""}}return(e=(e=e.replace(RegExp("^".concat(c,"$"),"i"),(e,t,n,o)=>{let a=n;return o&&(a="*"+o+a),t&&(a="-"+a),a})).replace(/^~/,"-").replace(/^-(?=.*')/,"")).startsWith("-")&&(e=e.toLowerCase()),e=_(e,t,n)}function w(e){let t=(e=_(e,!1,!0)).match(/^(-?)(?:\*(\d))?([kqbnrp])$/i);if(!t)return"";let n=_(t[3],!0);return t[1]||t[2]?"("+(t[1]?"!":"")+n+(t[2]||"")+")":n}function _(e,t,n){return e.match(/^-?(\*\d)?[sng]$/i)?(t?(n&&(e=e.replace("s","g").replace("S","G")),e=e.replace("n","s").replace("N","S")):(n&&(e=e.replace("s","n").replace("S","N")),e=e.replace("g","s").replace("G","S")),e):e}function k(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm;return void 0===t&&(t=e%o.Dm,e=(e-t)/o.Dm),String.fromCharCode(o.oh+t)+(n-e)}function U(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm;return{x:e.charCodeAt(0)-o.oh,y:t-Number(e[1])}}function x(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Dm,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,{x:a,y:l}=U(e,n);return l*t+a}function B(e){return Array.from({length:e},e=>"")}function C(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.Dm,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:o.Dm,i=B(a*l);i.anime="";for(let o=0;o<l;o++)for(let r=0;r<a;r++){let s=r+t,c=o+n,u=0<=s&&s<a&&0<=c&&c<l;e[o*a+r]&&(i[c*a+s]=u?e[o*a+r]:"",i.anime+=k(o,r,l)+k(c,s,l))}return i}function D(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.Dm,l=B(n*a);l.anime="";for(let o=0;o<a;o++)for(let i=0;i<n;i++){let r=i,s=o;if("-"==t&&(r=n-1-r),("|"==t||"/"==t)&&(s=a-1-s),"/"==t||"\\"==t){let e=s-r;r+=e,s-=e}"/"==t&&(s=a-1-s),e[s*n+r]&&(l[o*n+i]=e[s*n+r],l.anime+=k(s,r,a)+k(o,i,a))}return l}function A(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.Dm,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:o.Dm,l=B(n*a);n==a&&(l.anime="");for(let o=0;o<n;o++)for(let i=0;i<a;i++){let{x:r,y:s}=function(e,t,n,o,a){return 1==a?{x:e,y:o-1-t}:2==a?{x:o-1-t,y:n-1-e}:{x:n-1-e,y:t}}(o,i,n,a,t);e[s*n+r]&&(l[o*a+i]=e[s*n+r],n==a&&(l.anime+=k(s,r,a)+k(o,i,a)))}return l}function P(e,t){return e.map(e=>{if(""==e||e.startsWith("-")||!t&&e.startsWith("'"))return e;let n=e.toLowerCase();return e=e==n?e.toUpperCase():n})}},737:function(e,t,n){n.d(t,{By:function(){return u},Cd:function(){return f},Cg:function(){return a},D_:function(){return d},n6:function(){return i},t_:function(){return p},z6:function(){return l}});var o=n(2506);let a=44,l="1echecs",i={pattern:void 0,bg:void 0,exHigh:!0,border:"1",blackWhite:!1,knightOffset:.6,SN:!1,size:44,w:o.Dm,h:o.Dm,fullFEN:!1,coordinates:!1,set:l,collapse:!0},r=/^\d+(,\d+)*$/,s=[26,32,38,44],c=["1echecs","alpha","goodCompanion","kilfiger","merida","mpchess","skak"];function u(e){if("string"==typeof e){if((e=e.replace(/\D/g,",").replace(/,+/g,",").replace(/^,/,"").replace(/,$/,"")).match(r))return e}}function d(e){let t=Object.assign({},i);if(e){let n=Number(e.size);s.includes(n)&&(t.size=n),e.set&&c.includes(e.set)&&(t.set=e.set),e.border=u(e.border),e.border&&(t.border=e.border),e.knightOffset&&0<e.knightOffset&&e.knightOffset<1&&(t.knightOffset=e.knightOffset),t.blackWhite=!!e.blackWhite,t.pattern=e.pattern,t.bg=e.bg,t.SN=e.SN||!1;let o=Math.floor(Number(e.w)),a=Math.floor(Number(e.h));o>0&&(t.w=o),a>0&&(t.h=a)}return t}let f=20;function p(e,t){let n=function(e){let t=e.split(",").map(e=>{let t=Number(e);return isNaN(t)?0:Math.abs(Math.floor(t))}),n=t.reduce((e,t)=>e+t,0);return{array:t,size:n}}(e.border),o=e.coordinates?{x:f,y:f}:{x:0,y:0};!0===t&&(o.y=0),!1===t&&(o.x=0);let a=e.w*e.size+2*n.size+o.x,l=e.h*e.size+2*n.size+o.y,i={x:n.size+o.x,y:n.size};return{w:a,h:l,border:n,offset:i,margin:o}}},2539:function(e,t,n){n.d(t,{$I:function(){return B},BC:function(){return U},Dd:function(){return A},Gh:function(){return g},LW:function(){return h},Os:function(){return D},P:function(){return d},PH:function(){return y},PX:function(){return p},SQ:function(){return u},Wh:function(){return C},h8:function(){return w},i9:function(){return _},nU:function(){return k},or:function(){return b}});var o=n(3421),a=n(6919),l=n(1671);function i(){let e=(0,o._)(["[[^]]+]"],["\\[[^\\]]+\\]"]);return i=function(){return e},e}function r(){let e=(0,o._)(["(+)?[a-z]) (S[ S]+S)"],["(\\+)?[a-z]\\) (\\S[ \\S]+\\S)"]);return r=function(){return e},e}function s(){let e=(0,o._)(["(?<mod>hcc)?(?:(?<move>0-0(?:-0)?|",")(?:",")*(?:",")?(?:=(?<cc>[nwb]))?)(?:",")*"]);return s=function(){return e},e}function c(){let e=(0,o._)(["(?<count>d+.(?:..)?)?(?<main>","(?:/",")*)(?: [+#=])?"],["(?<count>\\d+\\.(?:\\.\\.)?)?(?<main>","(?:\\/",")*)(?: [+#=])?"]);return c=function(){return e},e}let u="[a-h][1-8]",d="(?:[0-9A-Z][0-9A-Z]|[A-Z])",f=String.raw(i()),p=String.raw(r()),m="(?:[nwb])?r?".concat(d,"?(?<from>").concat(u,")[-*](?<to>").concat(u,")(?<ep> ep\\.)?(?<then>([-*]").concat(u,"(=[nwb]?").concat(d,")?)*)"),h="=(?<pc>[nwb])?(?<p>".concat(d,")"),g=["condition","2option","3stipulation","2sstipulation","3forsyth","2pieces","2twin"].map(l.d).join("|"),y=RegExp(g,"ig"),b=String.raw(s(),m,f,h,f),S=b.replace(/\?<[^>]+>/g,""),w=String.raw(c(),S,S);function _(e,t,n,o){return n=C(n),"w"==o&&(n=n.toUpperCase()),"b"==o&&(n=n.toLowerCase()),"n"==o&&(n="-"+n.toLowerCase()),e[(0,a.Di)(t)]=n,n}function k(e,t,n,o){o&&o.push(t+n);let l=(0,a.Di)(t),i=(0,a.Di)(n);return e[i]=e[l],e[l]="",e[i]}let U={"*2Q":"G","*2N":"N","*1N":"Z","*3N":"CA","*3B":"GI","*3Q":"LI","*1Q":"EQ","*2P":"BP","*1B":"AN","*1K":"PO","*2K":"ST","*3K":"DU","*2R":"WE","*3R":"PA",C:"I"},x={"*1B":"25,37,AL,AN,BM,C,CT,DB,GN,GY,NH","*1K":"PO","*1N":"36,AO,BK,BN,DR,GR,KP,LS,MA,MS,OH,RK,S1,S2,S3,S4,SQ,SS,SW,UU,Z,ZE,ZH,ZR","*1P":"BS,CP,MP","*1Q":"EQ,HA,KH,L,LE,NE","*1R":"DA,DK,EK,GT,MH,RM,RO,RR,SH,WA","*2B":"15,AR,BH,BT,BU,BW,ND,PR","*2K":"ST","*2N":"N","*2P":"BP","*2Q":"G","*2R":"DG,EM,RA,RF,RH,RW,WE","*3B":"BE,BL,FE,GI,LO,OK,RB,VA","*3K":"DU","*3N":"24,35,AH,CA,DS,GH,MO,OA,SA","*3P":"O,SP","*3Q":"16,AM,EH,KA,LI,M,OR,SE,SI","*3R":"BR,CH,CR,EA,FA,PA,RE,RL,TR",A:"AG,B1,B2,B3,BI,BO,CG,CY,DO,ET,F,FR,G2,G3,GE,GF,GL,KL,KO,LB,LH,LN,LR,MG,ML,MM,NA,NL,NO,PP,QE,QF,QN,QQ,RN,RP,RT,SK,SO,TH,WR",C:"I",N:"S"},B={custom:()=>({}),default:{}};for(let e in x)for(let t of x[e].split(","))B.default[t]=e;function C(e){let t=e.toUpperCase(),n=function(e){let t=B.custom();for(let n in t)if(t[n]==e)return n}(t)||B.default[t];return n?e==t?n:n.toLowerCase():e}function D(e){let t=e.startsWith("-")?"=":"";t&&(e=e.substring(1));let n=e.toUpperCase();if(function(e){return/^[KQBNRP]$/.test(e)}(n))e=e.replace("n","s").replace("N","S");else{let o=n==e,a=B.custom();if(!(n in a))return null;let l=a[n];2==(e=o?l:l.toLowerCase()).length&&(e="."+e),l.match(/^\d+$/)&&!t&&(t=o?"+":"-")}return t+e}function A(e,t,n){let o=(0,a.Di)(t),l=(0,a.Di)(n),i=e[l];e[l]=e[o],e[o]=i}},6281:function(e,t,n){n.d(t,{F:function(){return g},w:function(){return h}});var o=n(3421),a=n(2506),l=n(3276),i=n(6919),r=n(1671),s=n(2539);function c(){let e=(0,o._)(["s+(?<c>",")(?:s+(?:","))?(?<l>(?:s+",")+)"],["\\s+(?<c>",")(?:\\s+(?:","))?(?<l>(?:\\s+",")+)"]);return c=function(){return e},e}function u(){let e=(0,o._)(["","(?:",")+(?=s+(?:",")|$)"],["","(?:",")+(?=\\s+(?:",")|$)"]);return u=function(){return e},e}let d=["1Black","1Neutral","1White"].map(r.d).join("|"),f=["1Chameleon","2FrischAuf","2Functionary","2HalfNeutral","2HurdleColourChanging","1Jigger","1Kamikaze","1Magic","2Paralysing","2Protean","1Royal","1Uncapturable","1Volage"].map(r.d).join("|"),p="(?<p>".concat(s.P,")(?<sq>(?:").concat(s.SQ,")+)"),m=String.raw(c(),d,f,p),h=String.raw(u(),(0,r.d)("2pieces"),m,s.Gh);function g(e){let t=e.match(RegExp(h,"ig"));if(!t)return null;let n=(0,i.Q5)(a.cb);for(let e of t)for(let t of e.match(RegExp(m,"ig"))){let e=t.match(RegExp(m,"i")).groups,o=e.c[0].toLowerCase();for(let t of e.l.match(RegExp(p,"ig"))){let e=t.match(RegExp(p,"i")).groups,a=e.p.toUpperCase();for(let t of e.sq.match(RegExp(s.SQ,"g")))n[(0,i.Di)(t)]=function(e,t){if(2==t.length&&(t="."+t),e==l.Il.neutral)return"="+t;let n=e==l.Il.white;return t.match(/[A-Z]/)?n?t:t.toLowerCase():(n?"+":"-")+t}(o,a)}}return(0,i.N0)(n)}},6033:function(e,t,n){n.d(t,{Vl:()=>$,l5:()=>z});var o=n("3421"),a=n("4097"),l=n("6919"),i=n("1671"),r=n("2539"),s=n("3276");function c(){let e=(0,o._)(["^+(?<c>[nwb])(?<is>",")(?<at>",")(=(?<p>","))?$"],["^\\+(?<c>[nwb])(?<is>",")(?<at>",")(=(?<p>","))?$"]);return c=function(){return e},e}function u(){let e=(0,o._)(["^-([nwb]",")?(?<at>",")$"]);return u=function(){return e},e}let d=new RegExp(String.raw(c(),r.P,r.SQ,r.P)),f=new RegExp(String.raw(u(),r.P,r.SQ)),p=new RegExp("^(?<c>[nwb])".concat(r.P,"(?<from>").concat(r.SQ,")-&gt;(?<to>").concat(r.SQ,")(=(?<p>").concat(r.P,"))?$")),m=new RegExp("^".concat(r.P,"(?<from>").concat(r.SQ,")&lt;-&gt;").concat(r.P,"(?<to>").concat(r.SQ,")$")),h=new RegExp("^(?<at>".concat(r.SQ,")=(?<c>[nwb])?(?:r?(?<p>").concat(r.P,"))?$")),g=new RegExp("^I".concat(r.SQ,"(,").concat(r.SQ,")*$")),y=new RegExp(r.or),b=new RegExp(r.h8);function S(e){return e.pg?l.J7:e.fen}let w=new RegExp("^[nwb](?:hcc)?".concat(r.P,"(").concat(r.SQ,")--&gt;(").concat(r.SQ,")$")),_=new RegExp("^[nwb](?:hcc)?".concat(r.P,"(").concat(r.SQ,")&lt;--&gt;[nwb](?:hcc)?").concat(r.P,"(").concat(r.SQ,")$")),k=new RegExp("^([+-]?)([nwb])(?:hcc)?(".concat(r.P,")(").concat(r.SQ,")$")),U=new RegExp("^(".concat(r.P,")==&gt;(").concat(r.P,")$")),x=new RegExp("^mirror(".concat(r.SQ,")&lt;--&gt;(").concat(r.SQ,")$")),B=new RegExp("^shift(".concat(r.SQ,")==&gt;(").concat(r.SQ,")$")),C=/^rotate(90|180|270)$/;function D(e,t){let n=e.match(w);return!!n&&((0,r.nU)(t,n[1],n[2]),!0)}function A(e,t){let n=e.match(_);return!!n&&((0,r.Dd)(t,n[1],n[2]),!0)}function P(e,t){let n=e.match(k);return!!n&&("+"==n[1]||""==n[1]?(0,r.i9)(t,n[4],n[3],n[2]):(0,r.i9)(t,n[4],""),!0)}function N(e,t){let n;let o=e.match(x);if(!o)return!1;let a=(0,l._n)(o[1]),i=(0,l._n)(o[2]);return n=a.x==i.x?"|":a.y==i.y?"-":(a.x-i.x)*(a.y-i.y)>0?"\\":"/",W(t,(0,l.hD)(t,n)),!0}function E(e,t){let n=e.match(B);if(!n)return!1;let o=(0,l._n)(n[1]),a=(0,l._n)(n[2]);return W(t,(0,l.uY)(t,a.x-o.x,a.y-o.y)),!0}function I(e,t){let n=e.match(U);if(!n)return!1;let o=(0,r.Wh)(n[1]),a=o.toLowerCase(),l=(0,r.Wh)(n[2]),i=l.toLowerCase();for(let e=0;e<t.length;e++)t[e]==o&&(t[e]=l),t[e]==a&&(t[e]=i),t[e]=="-"+a&&(t[e]="-"+i);return!0}function R(e,t){let n=e.match(C);return!!n&&(W(t,(0,l.U1)(t,function(e){return"90"==e?s.Nm.counterclockwise:"180"==e?s.Nm.turn:s.Nm.clockwise}(n[1]))),!0)}function O(e,t){return"PolishType"==e&&(W(t,(0,l.U_)(t)),!0)}function W(e,t){e.length=0,e.push(...t)}function M(){let e=(0,o._)(["\n\n+|(?:",")|(?:",")"],["\\n\\n+|(?:",")|(?:",")"]);return M=function(){return e},e}function j(){let e=(0,o._)(["","s+(S*(?:d|[^ds]s+d+(?:.[05])?))"],["","\\s+(\\S*(?:\\d|[^\\d\\s]\\s+\\d+(?:\\.[05])?))"]);return j=function(){return e},e}function V(){let e=(0,o._)(["\bimitw*s+(?:",")+"],["\\bimit\\w*\\s+(?:",")+"]);return V=function(){return e},e}let T=new RegExp(r.PX),L=RegExp(String.raw(M(),r.PX,r.h8),"g");function z(e,t,n){return function(e,t,n,o){if(!t)return n;console.log(n);let c=function(e,t,n){var o;let a=function(e){var t;let n=e.replace(/\n/g," ").replace(r.PH,"\n$&").split("\n"),o=n.filter(e=>e.match((0,i.M)("2option","^"))).join(" ");return{imitators:(null===(t=n.filter(e=>e.match((0,i.d)("condition"))).join(" ").match(Q))||void 0===t?void 0:t.join(" ").match(RegExp(r.SQ,"g")))||[],duplex:Y.test(o),halfDuplex:K.test(o)}}(e),s=function(e){return e.split((0,i.M)("2twin","\\b","\\b")).map(e=>{var t;return null===(t=e.match(q))||void 0===t?void 0:t[1].replace(/\s/g,"")}).filter(e=>e)}(e),c={pg:/dia/i.test(s[0]),fen:function(e,t){if(!t)return e;let n=(0,l.S3)(e);for(let e of t)n[(0,l.Di)(e)]="-"+(0,r.Wh)("i");return(0,l.N0)(n)}($(t),a.imitators),imitators:a.imitators,ordering:F(s[0],a.halfDuplex)},u={stack:[],stipIndex:0,solutionPrinted:!1,currentProblem:c,board:(0,l.S3)(S(c)),ordering:c.ordering,imitators:null===(o=c.imitators)||void 0===o?void 0:o.concat()};return{duplexSeparator:a.duplex?function(e){let t=/^\n\n+ +1\./,n=e.replace(/\n\nsolution finished./,"\n  1.").match(/\n\n+[^\n]+/g).filter((e,n,o)=>n>0&&e.match(t)&&o[n-1].match(t)).map(e=>e.match(/^\n+/)[0].length);return"\n".repeat(Math.max(...n))}(n):"",initProblem:c,stipulations:s,options:a,state:u}}(e,t,n=n.replace(/<br>/g,"\n")),u=!1;return(n=n.replace(L,e=>{if(u)return e;try{if(function(e,t){let{state:n,duplexSeparator:o}=e;return!!t.match(/^\n+$/)&&(n.stack.length=0,n.board=(0,l.S3)(S(n.currentProblem)),t==o&&n.solutionPrinted&&(n.ordering=G(n.ordering)),!0)}(c,e)||function(e,t){let{state:n,stipulations:o,options:i,initProblem:r}=e,s=t.match(T);if(!s)return!1;n.solutionPrinted=!1,n.currentProblem=(0,a.d)(s[1]?n.currentProblem:r);let c=o[++n.stipIndex];c&&(n.currentProblem.ordering=F(c,i.halfDuplex),n.currentProblem.pg=/dia/i.test(c)),n.ordering=n.currentProblem.ordering,n.stack.length=0;let{fen:u,board:d}=function(e,t){let n=(0,l.S3)(e);for(let e of t.replace(/(mirror|shift|rotate) /g,"$1").replace(/ ==&gt; /g,"==&gt;").split(" "))(function(e,t){for(let n of[D,A,P,N,E,I,R,O])if(n(t,e))return})(n,e);return{fen:(0,l.N0)(n),board:n}}(n.currentProblem.fen,s[2]);return n.currentProblem.fen=u,n.board=n.currentProblem.pg?(0,l.S3)(l.J7):d,!0}(c,e))return e;return c.state.solutionPrinted=!0,function(e,t,n){let o;let{stack:a,ordering:i}=t,c=e.match(b).groups,u=c.count,w=S(t.currentProblem);if(u){let e=a.findIndex(e=>e.move==u||parseInt(e.move)>parseInt(u));e>=0&&(o=function(e,t,n){let o=t>0?e.stack[t-1].fen:n;return e.board=(0,l.S3)(o),e.imitators&&(e.imitators=(t>0?e.stack[t-1].imitators:e.currentProblem.imitators).concat()),e.stack.length=t,o}(t,e,w))}let _=i[!u||u.endsWith("...")?1:0],{imitators:k,board:U}=t,x=null==k?void 0:k.concat();if(k){for(let e of k)(0,r.i9)(U,e,"");k.length=0}let B=[];for(let e of c.main.split("/")){var C;(function(e,t,n,o,a){let l,i;if(n.move.startsWith("0-0")){let o=t==s.Il.white?"1":"8",c="0-0"==n.move?["g","h","f"]:["c","a","d"];(0,r.nU)(e,"e"+o,c[0]+o,a),i=(0,r.nU)(e,c[1]+o,l=c[2]+o,a)}else i=(0,r.nU)(e,n.from,l=n.to,a),n.ep&&(0,r.i9)(e,function(e){return e.replace("3","4").replace("6","5")}(n.to),""),n.then&&function(e,t,n){let o=t.to;for(let a of t.then.match(RegExp("".concat(r.LW,"|").concat(r.SQ),"g"))){let t=a.match(new RegExp(r.LW));if(t){let a=(0,r.i9)(e,o,t.groups.p,t.groups.pc);n&&(n[n.length-1]+="="+a)}else(0,r.nU)(e,o,a,n),o=a}}(e,n,a);"I"==n.p?(o.push(l),(0,r.i9)(e,l,"I",s.Il.neutral)):n.p&&(0,r.i9)(e,l,i=n.p,n.pc?n.pc:t),n.cc&&(0,r.i9)(e,l,i,n.cc)})(U,_,e.match(y).groups,k,B);let t=null===(C=e.match(/\[[^[\]]+(?=\])/g))||void 0===C?void 0:C.map(e=>e.substring(1));t&&t.forEach(e=>(function(e,t,n){var o,a,i,c,u;let y=null===(o=t.match(d))||void 0===o?void 0:o.groups;if(y)return(0,r.i9)(e,y.at,y.p||y.is,y.c);if(y=null===(a=t.match(f))||void 0===a?void 0:a.groups)return(0,r.i9)(e,y.at,"");if(y=null===(i=t.match(p))||void 0===i?void 0:i.groups){(0,r.nU)(e,y.from,y.to),y.p&&(0,r.i9)(e,y.to,y.p,y.c);return}if(y=null===(c=t.match(m))||void 0===c?void 0:c.groups)return(0,r.Dd)(e,y.from,y.to);if(y=null===(u=t.match(h))||void 0===u?void 0:u.groups)return(0,r.i9)(e,y.at,y.p||function(e,t){return e[(0,l.Di)(t)].match(RegExp("^(\\*\\d)?"+r.P+"$","i"))[0].toUpperCase()}(e,y.at),y.c||function(e,t){let n=e[(0,l.Di)(t)];return r.P.startsWith("-")?s.Il.neutral:n==n.toLowerCase()?s.Il.black:s.Il.white}(e,y.at));if(t.match(g))for(let o of(n.push(...t.match(RegExp(r.SQ,"g"))),n))(0,r.i9)(e,o,"I",s.Il.neutral)})(U,e,k))}let D=(0,l.N0)(U);return u&&a.push({move:u,color:_,fen:D,imitators:null==k?void 0:k.concat()}),x&&function(e,t){for(let n=0;n<t.length;n++){let[o,a]=t[n].match(/[a-z]\d/g).map(e=>(0,l._n)(e)),i=a.x-o.x,r=a.y-o.y;for(let o of e){let e=(0,l._n)(o);t[n]+=o+(0,l.MA)(e.y+r,e.x+i)}}}(x,B),(1==a.length&&u?n("*",w)+" ":"")+n(e,D,B,o)}(e,c.state,o)}catch(t){return console.log(t,e),u=!0,e}})).replace(/ {2} ?<span init/g,"<span").replace(/\n/g,"<br>")}(e,t,n,H)}let q=RegExp(String.raw(j(),(0,i.d)("3stipulation")),"i");function F(e){var t;let n,o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return"wb";let a=e.match(/^(\d+-&gt;)?(?:exact-)?(?:(?:ser|pser|phser|semi|reci)-)?(hs|hr|h|s|r)?/i);return n=!a||a[1]?"wb":(null===(t=a[2])||void 0===t?void 0:t.toLowerCase())=="h"?"bw":"wb",o?G(n):n}let Q=RegExp(String.raw(V(),r.SQ),"ig"),Y=(0,i.M)("3duplex"),K=(0,i.M)("3halfDuplex");function G(e){return"wb"==e?"bw":"wb"}function H(e,t,n,o){let a="*"==e?"init ":"";t=t.replace(/-/g,"&#45;").replace(/"/g,"&#34;");let l="";return n&&n.length&&(l+=' data-anime="'.concat(n.join(","),'"')),o&&(l+=' data-before="'.concat(o,'"')),"<span ".concat(a,'class="step btn px-1 py-0" data-fen="').concat(t,'"').concat(l,">").concat(e,"</span>")}let Z=/[-+=]?(\.[0-9A-Z][0-9A-Z]|[A-Z])|\d+|\//ig;function $(e){return e.match(Z).map(e=>{if("/"==e||e.match(/^\d+$/))return e;let t=e.match(/^[-+=]/)?e[0]:null;return t&&(e=e.substring(1)),e.startsWith(".")&&(e=e.substring(1)),e=(0,r.Wh)(e),"+"==t&&(e=e.toUpperCase()),"-"==t&&(e=e.toLowerCase()),"="==t&&(e="-"+e.toLowerCase()),e}).join("")}},1671:function(e,t,n){n.d(t,{M:function(){return l},d:function(){return i}});var o=n(3421);function a(){let e=(0,o._)(["(?:","","|\b)"],["(?:","","|\\b)"]);return a=function(){return e},e}function l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return RegExp(t+i(e)+n,"i")}function i(e){let t=4;return(e.match(/^\d/)&&(t=Number(e[0]),e=e.substring(1)),e.length<=t)?"\\b"+e+"\\b":"\\b"+e.substring(0,t)+function e(t){return""==t?"":String.raw(a(),t[0],e(t.substring(1)))}(e.substring(t))}},1528:function(e,t,n){n.d(t,{U:function(){return a}});var o,a=((o={})[o.notYet=0]="notYet",o[o.checkmate=1]="checkmate",o[o.draw=2]="draw",o)},9391:function(e,t,n){n.d(t,{u8:()=>D,h:()=>m,t4:()=>_,bi:()=>y,nj:()=>B,wH:()=>k,yC:()=>f,I3:()=>C,SB:()=>S,i7:()=>g});var o=n("4881"),a=n("737"),l=n("899"),i=n("9683"),r=n("4097"),s=n("2539"),c=n("2506"),u=n("3276"),d=n("7739");let f=new URL(location.href).searchParams,p={BBS:{Id:!0,coordinates:!0,notes:!0,uncoloredNotes:!1,redBlue:!1},DB:{use:"PDB",exact:!1},PLAY:d.CS,Stockfish:{study:!1,downloaded:!1,depth:50,lines:3},feature:{janko:!1},popeye:{pieceMap:s.BC},board:a.n6,project:[]},m=(0,o.qj)(p);s.$I.custom=()=>m.popeye.pieceMap;let h=matchMedia("(prefers-color-scheme: dark)");h.onchange=()=>g.isDark=h.matches;let g=(0,o.qj)({module:{chess:!1},envReady:!1,loading:!0,isDark:h.matches,pieceCount:"(0+0)",hor:!1,collapse:!1,dragging:!1,selection:null,stockfish:{status:u.KO.notDownloaded,running:u.MI.stop},syzygy:{running:!1}}),y={depth:0,score:null,mate:null,lines:[],header:[]},b={split:!1,tab:0,compute:"py",play:d.tu,popeye:{initFEN:"",index:0,steps:[],playing:!1,error:!1,running:!1,editMap:!1,mapping:"",input:"",output:"",intInput:"",intOutput:""},stockfish:y,syzygy:{header:null,lines:null}},S=(0,o.qj)(b),w=[];function _(e){w.push(e)}function k(){let e=JSON.parse(localStorage.getItem("settings")||"{}");(0,r.n)(p,e,!0),e.project&&(p.project=e.project),e.popeye&&(p.popeye.pieceMap=e.popeye.pieceMap),f.has("janko")&&(p.feature.janko=!0);let t=i.O.isTop?JSON.parse(sessionStorage.getItem("state")||"null"):null;for(let e of(t&&(0,r.n)(S,t),g.stockfish.status=m.Stockfish.downloaded?u.KO.ready:u.KO.notDownloaded,w))e();(0,o.m0)(U),(0,o.m0)(x)}function U(){localStorage.setItem("settings",JSON.stringify(m))}function x(){i.O.isTop&&sessionStorage.setItem("state",JSON.stringify(S))}function B(e,t,n){let{size:o,w:i}=m.board,{border:r,margin:s}=(0,a.t_)(m.board,t),u=r.size,d=t?c.Dm:c._N,f=e?d:i,p=(e||l.m8).clientWidth/(o*f+2*u+s.x),h={x:(u+s.x)*p,y:u*p,r:u*p,b:(u+s.y)*p},g=((n||i)*o+2*r.size+s.x)*p;return{s:o*p,offset:h,width:g}}function C(){return S.play.playing||S.popeye.playing}function D(){return g.hor&&S.popeye.playing}},7739:function(e,t,n){n.d(t,{CS:function(){return a},TF:function(){return r},th:function(){return f},tu:function(){return l},zi:function(){return i}});var o=n(3276);let a={symbol:null,ep:!0,negative:!1,zero:!1},l={initFEN:"",playing:!1,pendingPromotion:!1,moveNumber:-1,game:"",history:[],turn:"w",castle:{K:!0,Q:!0,k:!0,q:!0},retro:{uncapture:void 0,unpromote:!1,ep:!1},enPassant:"",halfMove:0,fullMove:1,mode:o.jl.normal,over:void 0},i=1,r=8,s=[o.V1.wQ,o.V1.wB,o.V1.wN,o.V1.wR],c=[o.V1.bQ,o.V1.bB,o.V1.bN,o.V1.bR],u=c.concat(o.V1.bP,o.V1.wP,o.V1.bC),d=s.concat(o.V1.bP,o.V1.wP,o.V1.wC),f={w:s,b:c,wr:u,br:d}},2519:function(e,t,n){let o,a,l,i,r;n.d(t,{U_:function(){return z},dS:function(){return T},wD:function(){return Q}});var s=n(3421),c=n(4881),u=n(3369),d=n(9391),f=n(6033),p=n(4109),m=n(5547),h=n(6919),g=n(1671),y=n(2539),b=n(6384),S=n(6281),w=n(2506),_=n(375);function k(){let e=(0,s._)(["(?:",")s.+$"],["(?:",")\\s.+$"]);return k=function(){return e},e}function U(){let e=(0,s._)(["","s+S+"],["","\\s+\\S+"]);return U=function(){return e},e}function x(){let e=(0,s._)(["","s+(S+)"],["","\\s+(\\S+)"]);return x=function(){return e},e}(0,d.t4)(()=>{d.SB.popeye.running=!1,d.SB.popeye.editMap=!1,d.SB.popeye.playing&&(0,m.zD)().then(()=>(0,c.Y3)(()=>q(!0)))});let B=!1,C=document.getElementById("Output");function D(){d.SB.popeye.output=d.SB.popeye.intOutput+'<br><i class="fa-solid fa-spinner fa-spin"></i>',A()}function A(){B&&(B=!1,(0,c.Y3)(()=>C.scrollTop=C.scrollHeight-C.clientHeight))}function P(e){o&&o.terminate(),o=void 0;let t=500-(performance.now()-l);A(),clearInterval(i),e?E():(d.SB.popeye.output=d.SB.popeye.intOutput,setTimeout(()=>d.SB.popeye.running=!1,Math.max(0,t)),N())}function N(){if(o)return o;let e=new Worker(new URL(n.p+n.u("10"),n.b),Object.assign({},{name:"py"},{type:void 0}));return o=e,e.onerror=t=>{let n;t.preventDefault(),clearInterval(i),d.SB.popeye.running=!1,t.filename?(e.terminate(),n="An error occur in the Popeye module. Please submit an issue about this.\n"+t.message):n="Unable to load the Popeye module; please check your network connection.",d.SB.popeye.output=I(n),o=void 0},e.onmessage=e=>{let t=e.data;if(++r>3e3)d.SB.popeye.intOutput+="<br>".concat(I("Too much output. Please modify the input to prevent excessive output."),"<br>"),P();else if(-2===t)(a/=2)<16&&(d.SB.popeye.intOutput+="<br>".concat(I("Not enough memory to run Popeye."),"<br>")),P(a>=16);else if(null===t)P();else if(B=B||function(){return!!C&&C.scrollTop+C.clientHeight+30>C.scrollHeight}(),"string"==typeof t.text&&(d.SB.popeye.intOutput+=R(t.text)+"<br>"),"string"==typeof t.err){if("Calling stub instead of signal()"==t.err)return;d.SB.popeye.error=!0,d.SB.popeye.intOutput+=I(R(t.err))}},e}function E(){let e=N(),t=d.SB.popeye;r=0,t.intOutput="",t.error=!1,t.running=!0,i=setInterval(D,500),l=performance.now(),e.postMessage({mem:a,input:"Opti NoBoard\n"+t.intInput})}function I(e){return'<span class="text-danger">'.concat(e,"</span>")}function R(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}let O=RegExp(String.raw(k(),["remark","2author","2origin","3title"].map(g.d).join("|")),"igm"),W=RegExp(String.raw(U(),(0,g.d)("5protocol")),"i"),M=(0,g.M)("3beginProblem"),j=(0,g.M)("3endProblem"),V=/\bnext\s[\s\S]+$/i,T=(0,g.d)("3forsyth"),L=(0,g.d)("2pieces");function z(e){if(RegExp("".concat(T,"|").concat(L),"i").test(e)){var t;let n=(0,S.F)(e)||(null===(t=e.match(RegExp(String.raw(x(),T),"i")))||void 0===t?void 0:t[1]);if(n)return{fen:n,imitators:[],fromInput:!0}}let{w:n,h:o}=d.h.board;if(n!=w.Dm||o!=w.Dm)throw Error();let a=[],l=(0,u.Ox)().map((e,t)=>{if(""==e)return e;let n=d.h.board.SN?e.replace("s","n").replace("S","N").replace("g","s").replace("G","S"):e;if(!(n=(0,y.Os)(n)))throw(0,_.Z)("Unspecified fairy piece: "+e);return n.match(/^=?i$/i)?(a.push((0,h.MA)(t)),""):n});return{fen:(0,h.N0)(l),imitators:a,fromInput:!1}}async function q(e){let t=d.SB.popeye;t.steps=[...C.querySelectorAll("span")],0!=t.steps.length&&(F(0,!0),t.playing=!0,e&&await (0,m.zD)(),(0,m.t1)([]),(0,c.Y3)(p.SI))}async function F(e,t){let n=d.SB.popeye,o=n.steps[e],a=n.steps[n.index];if(a&&a.dataset.anime&&(e==n.index-1&&!a.dataset.before||o.dataset.fen==a.dataset.before))await (0,b.jt)(o.dataset.fen,a.dataset.fen,a.dataset.anime,!0);else{var l;let t=o.dataset.before||(null===(l=n.steps[e-1])||void 0===l?void 0:l.dataset.fen);o.dataset.anime&&t?await (0,b.jt)(t,o.dataset.fen,o.dataset.anime):((0,b.p_)(),(0,u.dd)(o.dataset.fen))}!t&&a.classList.remove("active"),n.index=e,o.classList.add("active"),(0,c.Y3)(()=>(function(e){let t=e.offsetTop-10;C.scrollTop>t&&(C.scrollTop=t);let n=e.offsetTop+e.clientHeight-C.clientHeight+10;C.scrollTop<n&&(C.scrollTop=n);let o=e.offsetLeft-10;C.scrollLeft>o&&(C.scrollLeft=o);let a=e.offsetLeft+e.clientWidth-C.clientWidth+10;C.scrollLeft<a&&(C.scrollLeft=a)})(o))}let Q={run(){gtag("event","fen_popeye_run"),a=512;try{let e=d.SB.popeye;e.intInput=function(e){e=e.replace(O,"").replace(W,"").replace(M,"").replace(V,"").replace(j,"");let t=d.SB.popeye,{fen:n,imitators:o,fromInput:a}=z(e);return(t.initFEN=n,a)?((0,u.dd)((0,f.Vl)(n)),e):(o.length&&(e+="\ncond imitator "+o.join("")),"fors ".concat(n,"\n").concat(e))}(e.input),E()}catch{}},cancel(){o&&P()},play(){let e=d.SB.popeye;C.scrollTop=C.scrollLeft=0,gtag("event","fen_popeye_play"),e.output=(0,f.l5)(e.intInput,e.initFEN,e.intOutput),(0,c.Y3)(q)},step(e){let t=d.SB.popeye;if(!t.playing)return;let n=t.steps.indexOf(e.target);n>=0&&n!=t.index&&(e.preventDefault(),F(n))},exit(){let e=d.SB.popeye;(0,u.dd)(e.steps[0].dataset.fen),e.output=e.intOutput,e.playing=!1,(0,m.t1)([]),(0,c.Y3)(p.SI)},moveBy(e){let t=d.SB.popeye,n=t.index;(n+=e)<0&&(n=0),n>t.steps.length-1&&(n=t.steps.length-1),Q.move(n)},move(e){e!=d.SB.popeye.index&&F(e)},editMap(){gtag("event","fen_popeye_edit_map"),d.SB.popeye.mapping=Y(d.h.popeye.pieceMap),d.SB.popeye.editMap=!0},resetMap(){d.SB.popeye.mapping=Y(y.BC)},saveMap(){let e=d.SB.popeye.mapping.toUpperCase().split("\n"),t={};for(let n of e){let[e,o]=n.replace(/\s/g,"").split("=");e.match(K)&&o&&o.match(G)&&(t[e]=o)}d.h.popeye.pieceMap=t,d.SB.popeye.editMap=!1}};function Y(e){let t=[];for(let n in e)t.push("".concat(n,"=").concat(e[n]));return t.join("\n")}let K=/^(\*[1-3][KQBNRP]|(\*[1-3])?[CXSTAD]|''..|'.)$/,G=new RegExp("^".concat(y.P,"$"))},7737:function(e,t,n){n.d(t,{E:function(){return o}});function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return{id:Date.now()+t,...e}}},6384:function(e,t,n){let o;n.d(t,{jt:function(){return d},n4:function(){return u},p_:function(){return f}});var a=n(3438),l=n(1019),i=n(9857),r=n(9683),s=n(6919),c=n(737);let u={};function d(e,t,n){let a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return f(),(o=new p(e,t,n,a)).promise}function f(e){o&&o.stop(e?u.callback:void 0)}class p{stop(e){cancelAnimationFrame(this.request),o=void 0,e&&e(this.after),this.resolve()}step(e){let{ctx:t,options:n,callback:o}=u;!this.startTime&&(this.startTime=e);let a=(e-this.startTime)/150,s=Math.floor(a);if(s>=this.stages.length)return this.stop(o);let d=this.reverse?this.stages.length-1-s:s;s>this.cursor?(this.cursor=s,(0,i.DW)(t,this.stages[d].board,n,r.u),this.background=t.getImageData(0,0,t.canvas.width,t.canvas.height)):t.putImageData(this.background,0,0);let f=(0,c.t_)(n);t.save(),t.translate(f.offset.x,f.offset.y);let p=(0,l.N)(n,r.u),m=a-Math.floor(a);for(let e of(this.reverse&&(m=1-m),this.stages[d].moves)){let o=e.from.x*(1-m)+e.to.x*m,a=e.from.y*(1-m)+e.to.y*m;(0,i.am)(t,a,o,e.p,{assets:p,options:n,dpr:r.u})}t.restore(),this.request=requestAnimationFrame(this.anime)}constructor(e,t,n,o){(0,a._)(this,"promise",void 0),(0,a._)(this,"after",void 0),(0,a._)(this,"reverse",void 0),(0,a._)(this,"resolve",void 0),(0,a._)(this,"cursor",void 0),(0,a._)(this,"stages",void 0),(0,a._)(this,"anime",void 0),(0,a._)(this,"request",void 0),(0,a._)(this,"background",void 0),(0,a._)(this,"startTime",void 0),this.after=o?e:t,this.reverse=o,this.promise=new Promise(e=>this.resolve=e),this.cursor=-1,this.stages=[];let l=n.split(","),i=(0,s.S3)(e),{h:r,w:c}=u.options;for(let e of l){let t=[],n=e.match(/[`a-z]\d(=(\*\d)?[A-Z])?/g);for(let e=0;e<n.length;e+=2){var d;let o=n[e],a=n[e+1],l=(0,s.Di)(o,c,r),u={p:i[l],promo:null===(d=a.match(/[=](.+)$/))||void 0===d?void 0:d[1],from:(0,s._n)(o,r),to:(0,s._n)(a,r)};i[l]="",t.push(u)}for(let e of(this.stages.push({board:i.concat(),moves:t}),t))i[e.to.y*c+e.to.x]=e.promo||e.p}this.anime=this.step.bind(this),this.request=requestAnimationFrame(this.anime)}}},1019:function(e,t,n){n.d(t,{$:function(){return s},N:function(){return r}});var o=n(2506);let a=document.createElement("canvas"),l=a.getContext("2d"),i=new Map;function r(e,t){let n=e.set+e.size*t;return i.get(n)}async function s(e,t,n){let o=t.set+t.size*n;if(i.has(o))return i.get(o);let a=await c(e,t,n),l=await u(a);return i.set(o,l),l}async function c(e,t,n){let{set:i,size:r}=t;e+="/x"+n;let[s,c]=await Promise.all([u("".concat(e,"/").concat(i).concat(r,".png")),u("".concat(e,"/symbol").concat(r,".png"))]);return a.width=r*n*o._N,a.height=r*n*12,l.drawImage(s,0,0),l.drawImage(c,0,r*n*6),a.toDataURL()}function u(e){return new Promise((t,n)=>{let o=new Image;o.onload=()=>t(o),o.onerror=e=>n(e),o.src=e})}},9857:function(e,t,n){n.d(t,{DW:function(){return h},V5:function(){return s},am:function(){return g}});var o=n(6919),a=n(1019),l=n(737),i=n(2506),r=n(3276);let s=["k","q","b","n","r","p","c","x","s","t","a","d"],c=document.createElement("canvas"),u=c.getContext("2d"),d=document.createElement("canvas"),f=d.getContext("2d"),p={26:"YdVh1QDVYdVh",32:"AAAKAAAAo/+jAAr/AP8KAKP/owAAAAoAAA==",38:"AAw+DAAM3P/cDD7/AP8+DNz/3AwADD4MAA==",44:"AC9yLwAv+f/5L3L/AP9yL/n/+S8AL3IvAA==",52:"A3i2eAN4////eLb/AP+2eP///3gDeLZ4Aw==",64:"AAAEHgQAAAA/5v/mPwAE5v///+YEHv//AP//HgTm////5gQAP+b/5j8AAAAEHgQAAA==",76:"AARZhFkEAAS7////uwRZ//////9ZhP//AP//hFn//////1kEu////7sEAARZhFkEAA==",88:"AEfE68RHAEf8/////EfE///////E6///AP//68T//////8RH/P////xHAEfE68RHAA=="},m={};function h(e,t,n,o,r,s){let{w:h,h:b,border:S,offset:w,margin:_}=(0,l.t_)(n,s),k=(0,a.N)(n,o);e.canvas.width=h*o,e.canvas.height=b*o,e.save(),e.scale(o,o);let U="classic"==n.bg,x=r||U;e.translate(w.x,w.y);for(let a=0;a<n.h;a++)for(let l=0;l<n.w;l++)!x&&y(e,a,l,n),g(e,a,l,t[a*n.w+l],{assets:k,options:n,dpr:o});if(e.restore(),U&&!r){(function(e,t,n){let o=e.canvas;d.width=c.width=o.width,d.height=c.height=o.height,u.drawImage(o,0,0),e.save(),e.fillStyle="white",e.fillRect(0,0,o.width,o.height),e.globalCompositeOperation="destination-in",e.drawImage(c,0,0),e.restore(),e.save();let a=function(e){if(!(e in m)){let t=atob(p[e]),n=[];for(let e=0;e<t.length;e++)n.push(t.charCodeAt(e));m[e]=n}return m[e]}(t*n),l=Math.sqrt(a.length),i=(l-1)/2;for(let t=0;t<l;t++)for(let n=0;n<l;n++){let r=a[n*l+t];0!=r&&(e.globalAlpha=r/255,f.drawImage(o,t-i,n-i))}e.restore()})(e,n.size,o),e.save(),e.scale(o,o),e.translate(w.x,w.y);for(let t=0;t<n.h;t++)for(let o=0;o<n.w;o++)y(e,t,o,n);e.restore(),e.drawImage(d,0,0),e.drawImage(d,0,0),e.drawImage(d,0,0),e.drawImage(c,0,0)}e.scale(o,o),void 0===s&&n.coordinates&&(e.save(),e.translate(w.x,w.y),function(e,t,n){let{size:o,w:a,h:r}=t;e.font="15px sans-serif",e.strokeStyle="black",e.lineWidth=2,e.fillStyle="white",e.lineJoin="round";for(let t=0;t<r;t++){let a=(t+1).toString(),i=e.measureText(a),s=o*(r-t)-o/2+5,c=(l.Cd-i.width)/2-l.Cd-n;e.strokeText(a,c,s),e.fillText(a,c,s)}for(let t=0;t<a&&t<26;t++){let a=String.fromCharCode(i.oh+t),s=e.measureText(a),c=o*r+l.Cd+n-5,u=o*t+(o-s.width)/2;e.strokeText(a,u,c),e.fillText(a,u,c)}}(e,n,S.size),e.restore()),!r&&function(e,t,n,o,a){e.save(),e.translate(a.x,0),n-=a.x,o-=a.y;let l=0;for(let a=0;a<t.array.length;a++){let i=t.array[a];if(e.strokeStyle=a%2?"white":"black",0==i)continue;e.lineWidth=i;let r=t.size-l-i/2;e.strokeRect(r,r,n-2*r,o-2*r),l+=i}e.restore()}(e,S,h,b,_)}function g(e,t,n,a,l){let{assets:i,options:c,dpr:u}=l,d=function(e,t){void 0===e&&(e="");let n=!!e&&e.startsWith("-");n&&(e=e.substring(1));let a=e.match(/^\*(\d)/),l=a&&a[1]?Number(a[1]):void 0;void 0!==l&&(e=e.substring(2)),l=Number(l)%r.mi.full,t.SN&&(e=(0,o.hv)(e,!1,!0));let i=e.toLowerCase(),c=s.indexOf(i),u=e.startsWith("'");return c<0&&!u?null:{neutral:n,rotate:l,isText:u,value:e,lower:i,typeIndex:c}}(a,c);if(!d)return;let{neutral:f,rotate:p,isText:m,value:h,lower:g,typeIndex:y}=d;e.save();let b=c.blackWhite,S=function(e,t){let{neutral:n,value:o,lower:a}=e;return n?t?0:2:o==a?0:1}(d,b),w=function(e,t,n,o){return e&&n?"n"==t?o.knightOffset:.5:1}(f,g,b,c),[_,k]=[p+1&2?1:0,2&p?1:0],{size:U}=c;e.translate((n+_)*U,(t+k)*U),0!==p&&e.rotate(Math.PI/2*p),m?function(e,t,n){var a;e.save();let l=o.Nv.test(t),i=n-4;e.font="".concat(i,"px sans-serif");let r=n-2,s=e.measureText(t);if(l&&s.width>r){let n=r/s.width;e.font="".concat(i*n,"px sans-serif"),s=e.measureText(t)}let c=(a=l?e.measureText("M"):s).actualBoundingBoxAscent-a.actualBoundingBoxDescent,u=(n-Math.min(s.width,r))/2,d=Math.max((n-c)/2,0);e.fillStyle="black",e.fillText(t,u,n-d,r),e.restore()}(e,h.substring(h.startsWith("''")?2:1),U):(e.drawImage(i,S*U*u,y*U*u,U*w*u,U*u,0,0,U*w,U),f&&b&&e.drawImage(i,(1+w)*U*u,y*U*u,U*(1-w)*u,U*u,U*w,0,U*(1-w),U)),e.restore()}function y(e,t,n,o){let a=function(e,t,n){if("mono"==e)return 1;let o=(t+n)%2;return"inverted"!=e&&(o=1-o),o}(o.pattern,t,n),l=o.size;e.save(),e.translate(n*l,t*l),"classic"==o.bg?(e.strokeStyle="black",e.lineWidth=l/60,e.fillStyle="#fff",e.fillRect(0,0,l,l),!a&&function(e,t){e.beginPath();let n=t/7.5;for(let o=0;o<t;o+=n)e.moveTo(t-o,0),e.lineTo(0,t-o),o>0&&(e.moveTo(o,t),e.lineTo(t,o));e.stroke()}(e,l)):(e.fillStyle=function(e,t){if("classic"==t)return"none";if("gray"==t)return e?"#fff":"#bbb";if("green"==t)return e?"#EEEED2":"#769656";else return e?"#FFCE9E":"#D18B47"}(a,o.bg),e.fillRect(0,0,l,l)),e.restore()}},5547:function(e,t,n){n.d(t,{Br:function(){return E},G2:function(){return O},Kv:function(){return h},Sk:function(){return N},Uw:function(){return U},ii:function(){return P},pz:function(){return R},t1:function(){return C},wY:function(){return I},zD:function(){return b}});var o=n(899),a=n(9391),l=n(3369),i=n(9857),r=n(1019),s=n(737),c=n(9683),u=n(6384),d=n(6919),f=n(9843),p=n(2506),m=n(3276);let h="k,K,-k,q,Q,-q,b,B,-b,n,N,-n,r,R,-r,p,P,-p,c,C,-c,x,X,-x".split(","),g="k,q,b,n,r,p,c,x,K,Q,B,N,R,P,C,X,-k,-q,-b,-n,-r,-p,-c,-x".split(",");function y(){return a.h.board.exHigh?2:1}async function b(){a.i7.loading=!0;let e=[(0,r.$)("./assets",a.h.board,c.u)],t=y();c.u!=t&&e.push((0,r.$)("./assets",a.h.board,t)),await Promise.all(e),a.i7.loading=!1}let S=o.m8.getContext("2d"),w=o.S8.getContext("2d"),_=o.in.getContext("2d"),k=o.Ab.getContext("2d"),U=document.createElement("canvas"),x=U.getContext("2d"),B={except:void 0,data:void 0};function C(e){e?B.except=e:e=B.except;let t=Object.assign({},a.h.board,a.i7.hor?{w:p.Dm,h:p._N}:{w:p._N,h:p.Dm}),n=function(){let e=a.i7.hor?g:h;return a.SB.play.playing&&"retro"==a.SB.play.mode&&(e=e.concat(),a.i7.hor?(e[6]="p",e[14]="P"):(e[18]="p",e[19]="P")),e}();(0,i.DW)(_,n,t,c.u,!1,a.i7.hor);let{size:o}=a.h.board;if((0,a.I3)()){let t="retro"==a.SB.play.mode;_.save();let{offset:n}=(0,s.t_)(a.h.board,a.i7.hor);_.translate(n.x,n.y),t&&function(e){_.save(),_.font="".concat(e/2,"px sans-serif"),_.strokeStyle="black",_.lineWidth=e/12,_.fillStyle="white",_.lineJoin="round",D(1,m.wg.x),D(2,m.wg.x),_.restore()}(o),function(e,t){_.save(),_.globalAlpha=a.i7.isDark?.5:.4,_.fillStyle="black";for(let n=0;n<p._N;n++)for(let o=0;o<p.Dm;o++){if(null==e?void 0:e.includes(o*p._N+n))continue;let[l,i]=a.i7.hor?[o,n]:[n,o];_.fillRect(l*t,i*t,t,t)}_.restore()}(e,o),t&&function(e,t){_.save();let n=a.SB.play.retro,o=e[0]==m.V1.bQ?0:1;_.lineWidth=t/12,_.strokeStyle="#0d6efd",n.uncapture&&A(o,i.V5.indexOf(n.uncapture)),n.unpromote&&A(1-o,5),_.restore()}(e,o),_.restore()}else if((0,i.DW)(k,n,t,c.u,!0,a.i7.hor),a.i7.selection){_.save();let{offset:e}=(0,s.t_)(a.h.board,a.i7.hor);_.lineWidth=o/12,_.strokeStyle="#0d6efd",_.translate(e.x,e.y);let t=h.indexOf(a.i7.selection),n=t%p._N,l=(t-n)/p._N;A(n,l),_.restore()}}u.n4.ctx=S;function D(e,t){let{size:n}=a.h.board,o=n/15;a.i7.hor&&([e,t]=[t,e]);let l=_.measureText("ep"),i=l.width,r=l.actualBoundingBoxDescent;_.strokeText("ep",e*n-i-o,t*n-r-o),_.fillText("ep",e*n-i-o,t*n-r-o)}function A(e,t){let{size:n}=a.h.board,o=n/8;a.i7.hor&&([e,t]=[t,e]);_.beginPath(),!function(){for(var a=arguments.length,l=Array(a),i=0;i<a;i++)l[i]=arguments[i];for(let a of l){_.moveTo(e*n+o*(a[0][0]+.5),t*n+o*(a[0][1]+.5));for(let l=1;l<a.length;l++)_.lineTo(e*n+o*(a[l][0]+.5),t*n+o*(a[l][1]+.5))}}([[0,2],[0,0],[2,0]],[[5,0],[7,0],[7,2]],[[7,5],[7,7],[5,7]],[[0,5],[0,7],[2,7]]),_.stroke()}async function P(e){e?B.data=e:e=B.data||(0,l.Ox)();let t=a.h.board;if((0,i.DW)(S,e,t,c.u),(0,i.DW)(x,e,t,y()),function(e){let t=0,n=0,o=0,l=0;for(let a of e)""!=a&&(a.startsWith("'")?l++:a.startsWith("-")?o++:a==a.toUpperCase()?t++:n++);a.i7.pieceCount="(".concat(t,"+").concat(n).concat(o>0?"+"+o:"").concat(l>0?"+"+l:"",")")}(e),!a.i7.dragging&&((0,i.DW)(w,e,t,c.u,!0),(0,l.qA)()),location.protocol.startsWith("http")){let e=document.getElementById("Save");e.href&&URL.revokeObjectURL(e.href),o.fr.src=e.href=URL.createObjectURL(await E())}}function N(e){let{w:t,h:n}=a.h.board;(0,i.DW)(e,(0,d.Q5)(t*n),a.h.board,c.u)}function E(){return new Promise(e=>U.toBlob(e))}function I(){N(o.ut.getContext("2d")),R()}function R(){P(),C(),a.h.project.length&&(0,f.O)()}async function O(){await b(),P()}}},t={};function n(o){var a=t[o];if(void 0!==a)return a.exports;var l=t[o]={exports:{}};return e[o].call(l.exports,l,l.exports,n),l.exports}n.m=e,n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var o in t)n.o(t,o)&&!n.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce(function(t,o){return n.f[o](e,t),t},[]))},n.u=function(e){return"471"===e?"static/js/async/chess.ccd03eb4.js":"946"===e?"static/js/async/olive.bca279fb.js":"936"===e?"static/js/async/ptt.6c7ebf7d.js":"10"===e?"static/js/async/py.22fd8ba0.js":""+e+".javascript"},n.miniCssF=function(e){return""+e+".css"},n.h=function(){return"cab3db39b6baf00c"},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},(()=>{var e={},t="fen-tool:";n.l=function(o,a,l,i){if(e[o]){e[o].push(a);return}if(void 0!==l){for(var r,s,c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==o||d.getAttribute("data-webpack")==t+l){r=d;break}}}!r&&(s=!0,(r=document.createElement("script")).charset="utf-8",r.timeout=120,n.nc&&r.setAttribute("nonce",n.nc),r.setAttribute("data-webpack",t+l),r.src=o),e[o]=[a];var f=function(t,n){r.onerror=r.onload=null,clearTimeout(p);var a=e[o];if(delete e[o],r.parentNode&&r.parentNode.removeChild(r),a&&a.forEach(function(e){return e(n)}),t)return t(n)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:r}),12e4);r.onerror=f.bind(null,r.onerror),r.onload=f.bind(null,r.onload),s&&document.head.appendChild(r)}})(),n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e=[];n.O=function(t,o,a,l){if(o){l=l||0;for(var i=e.length;i>0&&e[i-1][2]>l;i--)e[i]=e[i-1];e[i]=[o,a,l];return}for(var r=1/0,i=0;i<e.length;i++){for(var o=e[i][0],a=e[i][1],l=e[i][2],s=!0,c=0;c<o.length;c++)(!1&l||r>=l)&&Object.keys(n.O).every(function(e){return n.O[e](o[c])})?o.splice(c--,1):(s=!1,l<r&&(r=l));if(s){e.splice(i--,1);var u=a();void 0!==u&&(t=u)}}return t}})(),(()=>{n.p="/fen-tool/";var e,t,o={max:2,addQuery:!0},a=o.max||3,l={},i=/[?#].*$/;function r(e,t,n,a,l){var r,s;return e.replace(t,n).replace(i,"")+(r=a+1,s=l,!0===o.addQuery?""!==s?"".concat(s,"&retry=").concat(r):"?retry=".concat(r):"function"==typeof o.addQuery?o.addQuery({times:r,originalQuery:s}):"")}var s={},c=n.e,u=n.u,d=null!==(e=null!==(t=n.miniCssF)&&void 0!==t?t:n.k)&&void 0!==e?e:function(){return null},f=n.l,p="[@rsbuild/plugin-assets-retry] ";function m(e,t,i,f,h,g,y,b){for(var S=arguments.length>8&&void 0!==arguments[8]?arguments[8]:{count:0},w=arguments.length,_=Array(w>9?w-9:0),k=9;k<w;k++)_[k-9]=arguments[k];var U=c.apply(void 0,[e,t,i,f,h,g,y,b,S].concat(_));try{var x=u(e),B=d(e);"undefined"!=typeof window&&(x&&(window.__RB_ASYNC_CHUNKS__[x]=!0),B&&(window.__RB_ASYNC_CHUNKS__[B]=!0))}catch(e){console.error(p,"get original script or css filename error",e)}return"number"!=typeof(null==S?void 0:S.count)?U:(S.count+=1,U.catch(function(c){var d,w,k,U,x=S.count-1;try{var B=function(e,t){var a,i,c,d,f=(a=e,i=t,null===(c=l[a])||void 0===c?void 0:c[i]),p=t+1;if(0===t||void 0===f)d=function(e){var t,a,l,i=u(e),s=n.p,c=s.startsWith("/")?window.origin+s+i:s+i,d=(t=c.split("?")[1])?"?".concat(t.split("#")[0]):"",f=null!==(a=null===(l=o.domain)||void 0===l?void 0:l[0])&&void 0!==a?a:window.origin;return{nextDomain:f,nextRetryUrl:r(c,f,f,0,d),originalScriptFilename:i,originalSrcUrl:c,originalQuery:d}}(e),l[e]=[];else{var m,h,g,y,b,S=f.originalScriptFilename,w=f.originalSrcUrl,_=f.originalQuery,k=(m=f.nextDomain,g=null!==(h=o.domain)&&void 0!==h?h:[],y=function(e){for(var t,n=null!==(t=o.domain)&&void 0!==t?t:[],a="",l=0;l<n.length;l++)if(-1!==e.indexOf(n[l])){a=n[l];break}return a||window.origin}(m),b=g.indexOf(y),g[(b+1)%g.length]||m);d={nextDomain:k,nextRetryUrl:r(f.nextRetryUrl,f.nextDomain,k,t,_),originalScriptFilename:S,originalSrcUrl:w,originalQuery:_}}return l[e][p]=d,s[e]=d,d}(e,x);w=B.originalScriptFilename,k=B.nextRetryUrl,U=B.nextDomain}catch(e){throw console.error(p,"failed to get nextRetryUrl",e),c}var C,D=!!(null==c||null===(d=c.message)||void 0===d?void 0:d.includes("CSS chunk")),A=function(e){return{times:e,domain:U,url:k,tagName:D?"link":"script",isAsyncChunk:!0}},P=A(x);if(x>=a)throw c.message=null!==(C=c.message)&&void 0!==C&&C.includes("retries:")?c.message:"Loading chunk ".concat(e,' from "').concat(w,'" failed after ').concat(a,' retries: "').concat(c.message,'"'),"function"==typeof o.onFail&&o.onFail(P),c;var N=o.test;if(N){if("string"==typeof N){var E=new RegExp(N);N=function(e){return E.test(e)}}if("function"!=typeof N||!N(k))throw c}if(o.domain&&o.domain.length>0&&-1===o.domain.indexOf(U))throw c;return"function"==typeof o.onRetry&&o.onRetry(P),m.apply(void 0,[e,t,i,f,h,g,y,b,S].concat(_)).then(function(e){var t=(null==S?void 0:S.count)===x+2;if("function"==typeof o.onSuccess&&t){var n=A(x+1);o.onSuccess(n)}return e})}))}function h(e,t,n,o){for(var a=s[o],l=arguments.length,i=Array(l>4?l-4:0),r=4;r<l;r++)i[r-4]=arguments[r];return f.apply(void 0,[a?a.nextRetryUrl:e,t,n,o].concat(i))}!function(){"undefined"==typeof window||window.__RB_ASYNC_CHUNKS__||(window.__RB_ASYNC_CHUNKS__={});try{n.e=m,n.l=h}catch(e){console.error(p,"Register async chunk retry runtime failed",e)}}()})(),n.rv=function(){return"1.1.8"},(()=>{n.b=document.baseURI||self.location.href;var e={980:0};n.f.j=function(t,o){var a=n.o(e,t)?e[t]:void 0;if(0!==a){if(a)o.push(a[2]);else{var l=new Promise(function(n,o){a=e[t]=[n,o]});o.push(a[2]=l);var i=n.p+n.u(t),r=Error();n.l(i,function(o){if(n.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var l=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;r.message="Loading chunk "+t+" failed.\n("+l+": "+i+")",r.name="ChunkLoadError",r.type=l,r.request=i,a[1](r)}},"chunk-"+t,t)}}},n.O.j=function(t){return 0===e[t]};var t=function(t,o){var a=o[0],l=o[1],i=o[2],r,s,c=0;if(a.some(function(t){return 0!==e[t]})){for(r in l)n.o(l,r)&&(n.m[r]=l[r]);if(i)var u=i(n)}for(t&&t(o);c<a.length;c++)s=a[c],n.o(e,s)&&e[s]&&e[s][0](),e[s]=0;return n.O(u)},o=self.webpackChunkfen_tool=self.webpackChunkfen_tool||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),n.ruid="bundler=rspack@1.1.8";var o=n.O(void 0,["454","165"],function(){return n("3813")});o=n.O(o)})();
\ No newline at end of file
diff --git a/docs/sw.js b/docs/sw.js
index c189b15..7de47b6 100644
--- a/docs/sw.js
+++ b/docs/sw.js
@@ -1,2 +1,2 @@
 (()=>{"use strict";let e,t;var s,a={983:function(){try{self["workbox:core:7.2.0"]&&_()}catch(e){}},880:function(){try{self["workbox:precaching:7.2.0"]&&_()}catch(e){}},69:function(){try{self["workbox:routing:7.2.0"]&&_()}catch(e){}},166:function(){try{self["workbox:strategies:7.2.0"]&&_()}catch(e){}}},r={};function i(e){var t=r[e];if(void 0!==t)return t.exports;var s=r[e]={exports:{}};return a[e](s,s.exports,i),s.exports}i("983");let n=(e,...t)=>{let s=e;return t.length>0&&(s+=` :: ${JSON.stringify(t)}`),s};class l extends Error{constructor(e,t){super(n(e,t)),this.name=e,this.details=t}}let o={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},c=e=>[o.prefix,e,o.suffix].filter(e=>e&&e.length>0).join("-"),h=e=>{for(let t of Object.keys(o))e(t)},u={getPrecacheName:e=>e||c(o.precache),getRuntimeName:e=>e||c(o.runtime)};function f(e,t){let s=t();return e.waitUntil(s),s}i("880");class d{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if("install"===e.type&&t&&t.originalRequest&&t.originalRequest instanceof Request){let e=t.originalRequest.url;s?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return s}}}class g{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{let s=(null==t?void 0:t.cacheKey)||this._precacheController.getCacheKeyForURL(e.url);return s?new Request(s,{headers:e.headers}):e},this._precacheController=e}}let p=(e,t)=>{for(let s of(logger.groupCollapsed(e),t))logger.log(s);logger.groupEnd()};function w(e,t){if(0!==t.length){for(let s of(logger.groupCollapsed(e),t))logger.log(s);logger.groupEnd()}}async function y(t,s){let a=null;if(t.url&&(a=new URL(t.url).origin),a!==self.location.origin)throw new l("cross-origin-copy-response",{origin:a});let r=t.clone(),i={headers:new Headers(r.headers),status:r.status,statusText:r.statusText},n=s?s(i):i,o=!function(){if(void 0===e){let t=new Response("");if("body"in t)try{new Response(t.body),e=!0}catch(t){e=!1}e=!1}return e}()?await r.blob():r.body;return new Response(o,n)}let m=e=>new URL(String(e),location.href).href.replace(RegExp(`^${location.origin}`),"");function R(e,t){let s=new URL(e);for(let e of t)s.searchParams.delete(e);return s.href}async function C(e,t,s,a){let r=R(t.url,s);if(t.url===r)return e.match(t,a);let i=Object.assign(Object.assign({},a),{ignoreSearch:!0});for(let n of(await e.keys(t,i)))if(r===R(n.url,s))return e.match(n,a)}class b{constructor(){this.promise=new Promise((e,t)=>{this.resolve=e,this.reject=t})}}let v=new Set;async function L(){for(let e of v)await e()}function U(e){return new Promise(t=>setTimeout(t,e))}function T(e){return"string"==typeof e?new Request(e):e}i("166");class k{constructor(e,t){this._cacheKeys={};for(let s of(Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new b,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map,this._plugins))this._pluginStateMap.set(s,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){let{event:t}=this,s=T(e);if("navigate"===s.mode&&t instanceof FetchEvent&&t.preloadResponse){let e=await t.preloadResponse;if(e)return e}let a=this.hasCallback("fetchDidFail")?s.clone():null;try{for(let e of this.iterateCallbacks("requestWillFetch"))s=await e({request:s.clone(),event:t})}catch(e){if(e instanceof Error)throw new l("plugin-error-request-will-fetch",{thrownErrorMessage:e.message})}let r=s.clone();try{let e;e=await fetch(s,"navigate"===s.mode?void 0:this._strategy.fetchOptions);for(let s of this.iterateCallbacks("fetchDidSucceed"))e=await s({event:t,request:r,response:e});return e}catch(e){throw a&&await this.runCallbacks("fetchDidFail",{error:e,event:t,originalRequest:a.clone(),request:r.clone()}),e}}async fetchAndCachePut(e){let t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){let t;let s=T(e),{cacheName:a,matchOptions:r}=this._strategy,i=await this.getCacheKey(s,"read"),n=Object.assign(Object.assign({},r),{cacheName:a});t=await caches.match(i,n);for(let e of this.iterateCallbacks("cachedResponseWillBeUsed"))t=await e({cacheName:a,matchOptions:r,cachedResponse:t,request:i,event:this.event})||void 0;return t}async cachePut(e,t){let s=T(e);await U(0);let a=await this.getCacheKey(s,"write");if(!t)throw new l("cache-put-with-no-response",{url:m(a.url)});let r=await this._ensureResponseSafeToCache(t);if(!r)return!1;let{cacheName:i,matchOptions:n}=this._strategy,o=await self.caches.open(i),c=this.hasCallback("cacheDidUpdate"),h=c?await C(o,a.clone(),["__WB_REVISION__"],n):null;try{await o.put(a,c?r.clone():r)}catch(e){if(e instanceof Error)throw"QuotaExceededError"===e.name&&await L(),e}for(let e of this.iterateCallbacks("cacheDidUpdate"))await e({cacheName:i,oldResponse:h,newResponse:r.clone(),request:a,event:this.event});return!0}async getCacheKey(e,t){let s=`${e.url} | ${t}`;if(!this._cacheKeys[s]){let a=e;for(let e of this.iterateCallbacks("cacheKeyWillBeUsed"))a=T(await e({mode:t,request:a,event:this.event,params:this.params}));this._cacheKeys[s]=a}return this._cacheKeys[s]}hasCallback(e){for(let t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(let s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(let t of this._strategy.plugins)if("function"==typeof t[e]){let s=this._pluginStateMap.get(t),a=a=>{let r=Object.assign(Object.assign({},a),{state:s});return t[e](r)};yield a}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(let e of this.iterateCallbacks("cacheWillUpdate"))if(t=await e({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return!s&&t&&200!==t.status&&(t=void 0),t}}class P{constructor(e={}){this.cacheName=u.getRuntimeName(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){let[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});let t=e.event,s="string"==typeof e.request?new Request(e.request):e.request,a=new k(this,{event:t,request:s,params:"params"in e?e.params:void 0}),r=this._getResponse(a,s,t),i=this._awaitComplete(r,a,s,t);return[r,i]}async _getResponse(e,t,s){let a;await e.runCallbacks("handlerWillStart",{event:s,request:t});try{if(!(a=await this._handle(t,e))||"error"===a.type)throw new l("no-response",{url:t.url})}catch(r){if(r instanceof Error){for(let i of e.iterateCallbacks("handlerDidError"))if(a=await i({error:r,event:s,request:t}))break}if(a);else throw r}for(let r of e.iterateCallbacks("handlerWillRespond"))a=await r({event:s,request:t,response:a});return a}async _awaitComplete(e,t,s,a){let r,i;try{r=await e}catch(e){}try{await t.runCallbacks("handlerDidRespond",{event:a,request:s,response:r}),await t.doneWaiting()}catch(e){e instanceof Error&&(i=e)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:s,response:r,error:i}),t.destroy(),i)throw i}}class x extends P{constructor(e={}){e.cacheName=u.getPrecacheName(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(x.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){let s=await t.cacheMatch(e);return s?s:t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t)}async _handleFetch(e,t){let s;let a=t.params||{};if(this._fallbackToNetwork){let r=a.integrity,i=e.integrity,n=!i||i===r;s=await t.fetch(new Request(e,{integrity:"no-cors"!==e.mode?i||r:void 0})),r&&n&&"no-cors"!==e.mode&&(this._useDefaultCacheabilityPluginIfNeeded(),await t.cachePut(e,s.clone()))}else throw new l("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return s}async _handleInstall(e,t){this._useDefaultCacheabilityPluginIfNeeded();let s=await t.fetch(e);if(!await t.cachePut(e,s.clone()))throw new l("bad-precaching-response",{url:e.url,status:s.status});return s}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(let[s,a]of this.plugins.entries()){if(a!==x.copyRedirectedCacheableResponsesPlugin)a===x.defaultPrecacheCacheabilityPlugin&&(e=s),a.cacheWillUpdate&&t++}0===t?this.plugins.push(x.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}x.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:e})=>!e||e.status>=400?null:e},x.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:e})=>e.redirected?await y(e):e};i("69");let K=e=>e&&"object"==typeof e?e:{handle:e};class E{constructor(e,t,s="GET"){this.handler=K(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=K(e)}}class q extends E{constructor(e,t,s){super(({url:t})=>{let s=e.exec(t.href);if(!!s&&(t.origin===location.origin||0===s.index))return s.slice(1)},t,s)}}class N{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",e=>{let{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)})}addCacheListener(){self.addEventListener("message",e=>{if(e.data&&"CACHE_URLS"===e.data.type){let{payload:t}=e.data,s=Promise.all(t.urlsToCache.map(t=>{"string"==typeof t&&(t=[t]);let s=new Request(...t);return this.handleRequest({request:s,event:e})}));e.waitUntil(s),e.ports&&e.ports[0]&&s.then(()=>e.ports[0].postMessage(!0))}})}handleRequest({request:e,event:t}){let s;let a=new URL(e.url,location.href);if(!a.protocol.startsWith("http"))return;let r=a.origin===location.origin,{params:i,route:n}=this.findMatchingRoute({event:t,request:e,sameOrigin:r,url:a}),l=n&&n.handler,o=e.method;if(!l&&this._defaultHandlerMap.has(o)&&(l=this._defaultHandlerMap.get(o)),!l)return;try{s=l.handle({url:a,request:e,event:t,params:i})}catch(e){s=Promise.reject(e)}let c=n&&n.catchHandler;return s instanceof Promise&&(this._catchHandler||c)&&(s=s.catch(async s=>{if(c)try{return await c.handle({url:a,request:e,event:t,params:i})}catch(e){e instanceof Error&&(s=e)}if(this._catchHandler)return this._catchHandler.handle({url:a,request:e,event:t});throw s})),s}findMatchingRoute({url:e,sameOrigin:t,request:s,event:a}){for(let r of this._routes.get(s.method)||[]){let i;let n=r.match({url:e,sameOrigin:t,request:s,event:a});if(n)return Array.isArray(i=n)&&0===i.length?i=void 0:n.constructor===Object&&0===Object.keys(n).length?i=void 0:"boolean"==typeof n&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(e,t="GET"){this._defaultHandlerMap.set(t,K(e))}setCatchHandler(e){this._catchHandler=K(e)}registerRoute(e){!this._routes.has(e.method)&&this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new l("unregister-route-but-not-found-with-method",{method:e.method});let t=this._routes.get(e.method).indexOf(e);if(t>-1)this._routes.get(e.method).splice(t,1);else throw new l("unregister-route-route-not-registered")}}let W=()=>(!t&&((t=new N).addFetchListener(),t.addCacheListener()),t);function O(e,t,s){let a;if("string"==typeof e){let r=new URL(e,location.href);a=new E(({url:e})=>e.href===r.href,t,s)}else if(e instanceof RegExp)a=new q(e,t,s);else if("function"==typeof e)a=new E(e,t,s);else if(e instanceof E)a=e;else throw new l("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});return W().registerRoute(a),a}let M={cacheWillUpdate:async({response:e})=>200===e.status||0===e.status?e:null};self.__WB_DISABLE_DEV_LOGS=!0;let S={handlerWillRespond:e=>{let{response:t}=e,s=new Headers(t.headers);return s.set("Cross-Origin-Embedder-Policy","require-corp"),s.set("Cross-Origin-Opener-Policy","same-origin"),Promise.resolve(new Response(t.body,{headers:s,status:t.status,statusText:t.statusText}))}};s=new class e extends P{constructor(e={}){super(e),!this.plugins.some(e=>"cacheWillUpdate"in e)&&this.plugins.unshift(M)}async _handle(e,t){let s;let a=t.fetchAndCachePut(e).catch(()=>{});t.waitUntil(a);let r=await t.cacheMatch(e);if(r);else try{r=await a}catch(e){e instanceof Error&&(s=e)}if(!r)throw new l("no-response",{url:e.url,error:s});return r}}({cacheName:"modules",plugins:[S]}),W().setDefaultHandler(s);let I=new class e{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new x({cacheName:u.getPrecacheName(e),plugins:[...t,new g({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),!this._installAndActiveListenersAdded&&(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){let t=[];for(let s of e){"string"==typeof s?t.push(s):s&&void 0===s.revision&&t.push(s.url);let{cacheKey:e,url:a}=function(e){if(!e)throw new l("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){let t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}let{revision:t,url:s}=e;if(!s)throw new l("add-to-cache-list-unexpected-type",{entry:e});if(!t){let e=new URL(s,location.href);return{cacheKey:e.href,url:e.href}}let a=new URL(s,location.href),r=new URL(s,location.href);return a.searchParams.set("__WB_REVISION__",t),{cacheKey:a.href,url:r.href}}(s),r="string"!=typeof s&&s.revision?"reload":"default";if(this._urlsToCacheKeys.has(a)&&this._urlsToCacheKeys.get(a)!==e)throw new l("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(a),secondEntry:e});if("string"!=typeof s&&s.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==s.integrity)throw new l("add-to-cache-list-conflicting-integrities",{url:a});this._cacheKeysToIntegrities.set(e,s.integrity)}if(this._urlsToCacheKeys.set(a,e),this._urlsToCacheModes.set(a,r),t.length>0){let e=`Workbox is precaching URLs without revision info: ${t.join(", ")}
-This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return f(e,async()=>{let t=new d;for(let[s,a]of(this.strategy.plugins.push(t),this._urlsToCacheKeys)){let t=this._cacheKeysToIntegrities.get(a),r=this._urlsToCacheModes.get(s),i=new Request(s,{integrity:t,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:a},request:i,event:e}))}let{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}})}activate(e){return f(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),a=[];for(let r of t)!s.has(r.url)&&(await e.delete(r),a.push(r.url));return{deletedURLs:a}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){let t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}({cacheName:"assets",plugins:[S]});I.addToCacheList([{'revision':'a220cc81286ed527d1d9eb35448d664f','url':'/fen-tool/api/index.html'},{'revision':'811b7d2bfb4e4adb30ec7442f706bc25','url':'/fen-tool/assets/icon/icon-192.png'},{'revision':'96a0183aa4cf7546e01fd3d57cd2e5a9','url':'/fen-tool/assets/icon/icon-32.png'},{'revision':'dbc726b96d91b97b2ad53b3ccb8a9e48','url':'/fen-tool/assets/x1/1echecs26.png'},{'revision':'d9e72216e59873e0d55579ae5c82a889','url':'/fen-tool/assets/x1/1echecs32.png'},{'revision':'844f49c70b8100c37c24f4222ca5fc89','url':'/fen-tool/assets/x1/1echecs38.png'},{'revision':'bf81efdbdabf9b270870f425663c8cb0','url':'/fen-tool/assets/x1/1echecs44.png'},{'revision':'305a3d24372ce80575d4fca38b69a471','url':'/fen-tool/assets/x1/alpha26.png'},{'revision':'ffea054c8fa673d703d0a29e3a822e56','url':'/fen-tool/assets/x1/alpha32.png'},{'revision':'64c51f078b8ec59bfa4f272b124d98db','url':'/fen-tool/assets/x1/alpha38.png'},{'revision':'8c0972bd4b0bef531bf7c7f8ed0d1849','url':'/fen-tool/assets/x1/alpha44.png'},{'revision':'a840624ce5087697dc4345825f903bd2','url':'/fen-tool/assets/x1/goodCompanion26.png'},{'revision':'437c4c9b067e6f766bc9fc478deba8a5','url':'/fen-tool/assets/x1/goodCompanion32.png'},{'revision':'5dbf6ca68583149705bbffb5ebe35715','url':'/fen-tool/assets/x1/goodCompanion38.png'},{'revision':'25e9ad45edf2c8266ed6f5465769767f','url':'/fen-tool/assets/x1/goodCompanion44.png'},{'revision':'b73296336c463726ed7d013fd15c3b21','url':'/fen-tool/assets/x1/kilfiger26.png'},{'revision':'8526d7037659113b061ee2fe207bbcf8','url':'/fen-tool/assets/x1/kilfiger32.png'},{'revision':'85440a3c9a0d3f1776a9488b6ab9db1a','url':'/fen-tool/assets/x1/kilfiger38.png'},{'revision':'1183967ce8f0ce59dc121ce67e8800da','url':'/fen-tool/assets/x1/kilfiger44.png'},{'revision':'9c0f351be0692bdab30bc1cbb10656c9','url':'/fen-tool/assets/x1/merida26.png'},{'revision':'a5468ff522278830ded245b7972d8dd7','url':'/fen-tool/assets/x1/merida32.png'},{'revision':'a4b31c981e83bce5788b97b8c6f3a0a7','url':'/fen-tool/assets/x1/merida38.png'},{'revision':'9f20ee53f583731b252446b29aee52b3','url':'/fen-tool/assets/x1/merida44.png'},{'revision':'ffd7b4dbdf00350e170b928500dd2815','url':'/fen-tool/assets/x1/mpchess26.png'},{'revision':'9eac902f04bbcb51b51701beb4e2566f','url':'/fen-tool/assets/x1/mpchess32.png'},{'revision':'507c558bf87ecd7e1a2887ba404d10c0','url':'/fen-tool/assets/x1/mpchess38.png'},{'revision':'36d142e3c3c02e09e415fc25e5d9e222','url':'/fen-tool/assets/x1/mpchess44.png'},{'revision':'156fb345312da6c5b9863bf39a5aeadd','url':'/fen-tool/assets/x1/skak26.png'},{'revision':'0be270a8dbb7edfb0dcfc2c15c2f9d6e','url':'/fen-tool/assets/x1/skak32.png'},{'revision':'2f86d757996dcd31513b340dea5925b5','url':'/fen-tool/assets/x1/skak38.png'},{'revision':'a44c2e0b8a4677adab1672a0a55302bb','url':'/fen-tool/assets/x1/skak44.png'},{'revision':'7e5cd5d03872dcd810d97bf5486a42d0','url':'/fen-tool/assets/x1/symbol26.png'},{'revision':'99bbb4b4c4b3c4acc2a5067fadce6bd7','url':'/fen-tool/assets/x1/symbol32.png'},{'revision':'d7e6dccecdf3375aa45e9a7ca24cb366','url':'/fen-tool/assets/x1/symbol38.png'},{'revision':'867a1da1287229183429867344baa2df','url':'/fen-tool/assets/x1/symbol44.png'},{'revision':'a5fabb7c50aae21a5f397546cdcdb93a','url':'/fen-tool/assets/x2/1echecs26.png'},{'revision':'288907ac1def6de59512bff2d83d88e4','url':'/fen-tool/assets/x2/1echecs32.png'},{'revision':'42dd13f0fac5baa3942f3571cd591a8b','url':'/fen-tool/assets/x2/1echecs38.png'},{'revision':'281408a0bd075bf5bbd6f43ee83f2ea6','url':'/fen-tool/assets/x2/1echecs44.png'},{'revision':'7f2627379329b0b5bf91721d4ffe0095','url':'/fen-tool/assets/x2/alpha26.png'},{'revision':'ebae3b60ca0ba71775efb1520c524298','url':'/fen-tool/assets/x2/alpha32.png'},{'revision':'8a9c75ddc2adadfb7d1c3d505b95d726','url':'/fen-tool/assets/x2/alpha38.png'},{'revision':'4cb36808e4b1417c3386d67c2f46bf49','url':'/fen-tool/assets/x2/alpha44.png'},{'revision':'eb64eb7fd4a3fb6e3c8b79f6eff145ac','url':'/fen-tool/assets/x2/goodCompanion26.png'},{'revision':'572508a70a2dd03b1f7e8a086dbd5a65','url':'/fen-tool/assets/x2/goodCompanion32.png'},{'revision':'aa0df3d0faebf5dd11eeeac4a9a9233f','url':'/fen-tool/assets/x2/goodCompanion38.png'},{'revision':'9c125a249a94e63219d7c26c2eba8c4b','url':'/fen-tool/assets/x2/goodCompanion44.png'},{'revision':'a175614d69859504d16d1b3e0afff776','url':'/fen-tool/assets/x2/kilfiger26.png'},{'revision':'c24a1775683e5d7fbf90df9faa61ea32','url':'/fen-tool/assets/x2/kilfiger32.png'},{'revision':'2fa8e442e403477544ea5d6ab2baf0cc','url':'/fen-tool/assets/x2/kilfiger38.png'},{'revision':'2cabcc4671c95c6d0ada8c4787f42f2d','url':'/fen-tool/assets/x2/kilfiger44.png'},{'revision':'76e8cc5f2482cec2721827b09770d64b','url':'/fen-tool/assets/x2/merida26.png'},{'revision':'3cddde4acdadbdd200e61cb3833c7f46','url':'/fen-tool/assets/x2/merida32.png'},{'revision':'63074205f53952fc9315e4e97ff8affd','url':'/fen-tool/assets/x2/merida38.png'},{'revision':'9c497b6e71e80cb1aea21693bf556f80','url':'/fen-tool/assets/x2/merida44.png'},{'revision':'75fd71198dec22ebc35f7198cc5ccb76','url':'/fen-tool/assets/x2/mpchess26.png'},{'revision':'a97902b2336b674e26aa2853d74120e1','url':'/fen-tool/assets/x2/mpchess32.png'},{'revision':'7667a80931b8e77f54fa80df01e02842','url':'/fen-tool/assets/x2/mpchess38.png'},{'revision':'035f6705eaf6d64bc8a67be8af465b0e','url':'/fen-tool/assets/x2/mpchess44.png'},{'revision':'89c581224760b0faed30adb5e25318d7','url':'/fen-tool/assets/x2/skak26.png'},{'revision':'b0dea80d7b352f45e3b3ad3b17e6bc5d','url':'/fen-tool/assets/x2/skak32.png'},{'revision':'ca6333a93bcab10d67bfeb4547035c5d','url':'/fen-tool/assets/x2/skak38.png'},{'revision':'95def9316c7d809a82debd98c9a477ae','url':'/fen-tool/assets/x2/skak44.png'},{'revision':'de7aa92bcc0737415c84cb4273d679cc','url':'/fen-tool/assets/x2/symbol26.png'},{'revision':'2c3ff9dcd69fafcd6e094e6f784bdfbb','url':'/fen-tool/assets/x2/symbol32.png'},{'revision':'a520de5ed63d9700c0563041b5668715','url':'/fen-tool/assets/x2/symbol38.png'},{'revision':'0f19a3d849ba92e9dfcebd8df7d1c856','url':'/fen-tool/assets/x2/symbol44.png'},{'revision':'8d0965bafe14070dcc25f590737b2c01','url':'/fen-tool/gen/index.html'},{'revision':'6a780e1e6670e707919b6f9131b7e1f3','url':'/fen-tool/index.html'},{'revision':'6777959dd2763ca429fccbcf69bce5af','url':'/fen-tool/manifest.json'},{'revision':'098f59d9e0816b97be1ebea1f2d9a475','url':'/fen-tool/sdk.js'},{'revision':null,'url':'/fen-tool/static/css/index.bfea9f36.css'},{'revision':null,'url':'/fen-tool/static/font/fa-regular-400.cd365c86.woff2'},{'revision':null,'url':'/fen-tool/static/font/fa-solid-900.97c416d6.woff2'},{'revision':null,'url':'/fen-tool/static/js/137.171cee8a.js'},{'revision':null,'url':'/fen-tool/static/js/165.c128f14d.js'},{'revision':null,'url':'/fen-tool/static/js/api/index.41a9756b.js'},{'revision':null,'url':'/fen-tool/static/js/async/chess.ccd03eb4.js'},{'revision':null,'url':'/fen-tool/static/js/async/olive.bca279fb.js'},{'revision':null,'url':'/fen-tool/static/js/async/ptt.6c7ebf7d.js'},{'revision':null,'url':'/fen-tool/static/js/async/py.22fd8ba0.js'},{'revision':null,'url':'/fen-tool/static/js/gen/index.19d491f7.js'},{'revision':null,'url':'/fen-tool/static/js/index.57e688a6.js'},{'revision':null,'url':'/fen-tool/static/js/vue.fc524477.js'},{'revision':null,'url':'/fen-tool/static/wasm/41d089bb0d8995e7.module.wasm'}]),O(new class e extends E{constructor(e,t){super(({request:s})=>{let a=e.getURLsToCacheKeys();for(let r of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:a=!0,urlManipulation:r}={}){let i=new URL(e,location.href);i.hash="",yield i.href;let n=function(e,t=[]){for(let s of[...e.searchParams.keys()])t.some(e=>e.test(s))&&e.searchParams.delete(s);return e}(i,t);if(yield n.href,s&&n.pathname.endsWith("/")){let e=new URL(n.href);e.pathname+=s,yield e.href}if(a){let e=new URL(n.href);e.pathname+=".html",yield e.href}if(r)for(let e of r({url:i}))yield e.href}(s.url,t)){let t=a.get(r);if(t){let s=e.getIntegrityForCacheKey(t);return{cacheKey:t,integrity:s}}}},e.strategy)}}(I,{ignoreURLParametersMatching:[/.*/],cleanURLs:!1}));let D=new Map,A=0;O(e=>{let{url:t}=e;return t.pathname.startsWith("/fen-tool/share")},async e=>{let{event:t}=e,s=await t.request.formData(),a=s.get("fen"),r=s.get("image"),i=[];a&&i.push("fen="+encodeURIComponent(a)),r&&(D.set(++A,r),i.push("image="+A));let n="/fen-tool"+(i.length>0?"?"+i.join("&"):"");return Response.redirect(n,303)},"POST"),O(e=>{let{url:t}=e;return t.pathname.startsWith("/fen-tool/shareImage")},e=>{let{url:t}=e,s=Number(t.searchParams.get("image")),a=D.get(s);return D.delete(s),new Response(a)}),O(e=>{let{url:t}=e;return"mutsuntsai.github.io"!=t.host&&!t.host.startsWith("localhost")},new class e extends P{constructor(e={}){super(e),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,t){let s,a;try{let a=[t.fetch(e)];if(this._networkTimeoutSeconds){let e=U(1e3*this._networkTimeoutSeconds);a.push(e)}if(!(s=await Promise.race(a)))throw Error(`Timed out the network response after ${this._networkTimeoutSeconds} seconds.`)}catch(e){e instanceof Error&&(a=e)}if(!s)throw new l("no-response",{url:e.url,error:a});return s}}({fetchOptions:{cache:"reload"}})),self.addEventListener("install",e=>{self.skipWaiting(),console.log("service worker installing"),I.install(e)}),self.addEventListener("activate",e=>{I.activate(e)})})();
\ No newline at end of file
+This is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return f(e,async()=>{let t=new d;for(let[s,a]of(this.strategy.plugins.push(t),this._urlsToCacheKeys)){let t=this._cacheKeysToIntegrities.get(a),r=this._urlsToCacheModes.get(s),i=new Request(s,{integrity:t,cache:r,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:a},request:i,event:e}))}let{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}})}activate(e){return f(e,async()=>{let e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),a=[];for(let r of t)!s.has(r.url)&&(await e.delete(r),a.push(r.url));return{deletedURLs:a}})}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){let t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}getIntegrityForCacheKey(e){return this._cacheKeysToIntegrities.get(e)}async matchPrecache(e){let t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s)return(await self.caches.open(this.strategy.cacheName)).match(s)}createHandlerBoundToURL(e){let t=this.getCacheKeyForURL(e);if(!t)throw new l("non-precached-url",{url:e});return s=>(s.request=new Request(e),s.params=Object.assign({cacheKey:t},s.params),this.strategy.handle(s))}}({cacheName:"assets",plugins:[S]});I.addToCacheList([{'revision':'1b9a802e36c933ae174801baf019e7ab','url':'/fen-tool/api/index.html'},{'revision':'811b7d2bfb4e4adb30ec7442f706bc25','url':'/fen-tool/assets/icon/icon-192.png'},{'revision':'96a0183aa4cf7546e01fd3d57cd2e5a9','url':'/fen-tool/assets/icon/icon-32.png'},{'revision':'dbc726b96d91b97b2ad53b3ccb8a9e48','url':'/fen-tool/assets/x1/1echecs26.png'},{'revision':'d9e72216e59873e0d55579ae5c82a889','url':'/fen-tool/assets/x1/1echecs32.png'},{'revision':'844f49c70b8100c37c24f4222ca5fc89','url':'/fen-tool/assets/x1/1echecs38.png'},{'revision':'bf81efdbdabf9b270870f425663c8cb0','url':'/fen-tool/assets/x1/1echecs44.png'},{'revision':'305a3d24372ce80575d4fca38b69a471','url':'/fen-tool/assets/x1/alpha26.png'},{'revision':'ffea054c8fa673d703d0a29e3a822e56','url':'/fen-tool/assets/x1/alpha32.png'},{'revision':'64c51f078b8ec59bfa4f272b124d98db','url':'/fen-tool/assets/x1/alpha38.png'},{'revision':'8c0972bd4b0bef531bf7c7f8ed0d1849','url':'/fen-tool/assets/x1/alpha44.png'},{'revision':'a840624ce5087697dc4345825f903bd2','url':'/fen-tool/assets/x1/goodCompanion26.png'},{'revision':'437c4c9b067e6f766bc9fc478deba8a5','url':'/fen-tool/assets/x1/goodCompanion32.png'},{'revision':'5dbf6ca68583149705bbffb5ebe35715','url':'/fen-tool/assets/x1/goodCompanion38.png'},{'revision':'25e9ad45edf2c8266ed6f5465769767f','url':'/fen-tool/assets/x1/goodCompanion44.png'},{'revision':'b73296336c463726ed7d013fd15c3b21','url':'/fen-tool/assets/x1/kilfiger26.png'},{'revision':'8526d7037659113b061ee2fe207bbcf8','url':'/fen-tool/assets/x1/kilfiger32.png'},{'revision':'85440a3c9a0d3f1776a9488b6ab9db1a','url':'/fen-tool/assets/x1/kilfiger38.png'},{'revision':'1183967ce8f0ce59dc121ce67e8800da','url':'/fen-tool/assets/x1/kilfiger44.png'},{'revision':'9c0f351be0692bdab30bc1cbb10656c9','url':'/fen-tool/assets/x1/merida26.png'},{'revision':'a5468ff522278830ded245b7972d8dd7','url':'/fen-tool/assets/x1/merida32.png'},{'revision':'a4b31c981e83bce5788b97b8c6f3a0a7','url':'/fen-tool/assets/x1/merida38.png'},{'revision':'9f20ee53f583731b252446b29aee52b3','url':'/fen-tool/assets/x1/merida44.png'},{'revision':'ffd7b4dbdf00350e170b928500dd2815','url':'/fen-tool/assets/x1/mpchess26.png'},{'revision':'9eac902f04bbcb51b51701beb4e2566f','url':'/fen-tool/assets/x1/mpchess32.png'},{'revision':'507c558bf87ecd7e1a2887ba404d10c0','url':'/fen-tool/assets/x1/mpchess38.png'},{'revision':'36d142e3c3c02e09e415fc25e5d9e222','url':'/fen-tool/assets/x1/mpchess44.png'},{'revision':'156fb345312da6c5b9863bf39a5aeadd','url':'/fen-tool/assets/x1/skak26.png'},{'revision':'0be270a8dbb7edfb0dcfc2c15c2f9d6e','url':'/fen-tool/assets/x1/skak32.png'},{'revision':'2f86d757996dcd31513b340dea5925b5','url':'/fen-tool/assets/x1/skak38.png'},{'revision':'a44c2e0b8a4677adab1672a0a55302bb','url':'/fen-tool/assets/x1/skak44.png'},{'revision':'7e5cd5d03872dcd810d97bf5486a42d0','url':'/fen-tool/assets/x1/symbol26.png'},{'revision':'99bbb4b4c4b3c4acc2a5067fadce6bd7','url':'/fen-tool/assets/x1/symbol32.png'},{'revision':'d7e6dccecdf3375aa45e9a7ca24cb366','url':'/fen-tool/assets/x1/symbol38.png'},{'revision':'867a1da1287229183429867344baa2df','url':'/fen-tool/assets/x1/symbol44.png'},{'revision':'a5fabb7c50aae21a5f397546cdcdb93a','url':'/fen-tool/assets/x2/1echecs26.png'},{'revision':'288907ac1def6de59512bff2d83d88e4','url':'/fen-tool/assets/x2/1echecs32.png'},{'revision':'42dd13f0fac5baa3942f3571cd591a8b','url':'/fen-tool/assets/x2/1echecs38.png'},{'revision':'281408a0bd075bf5bbd6f43ee83f2ea6','url':'/fen-tool/assets/x2/1echecs44.png'},{'revision':'7f2627379329b0b5bf91721d4ffe0095','url':'/fen-tool/assets/x2/alpha26.png'},{'revision':'ebae3b60ca0ba71775efb1520c524298','url':'/fen-tool/assets/x2/alpha32.png'},{'revision':'8a9c75ddc2adadfb7d1c3d505b95d726','url':'/fen-tool/assets/x2/alpha38.png'},{'revision':'4cb36808e4b1417c3386d67c2f46bf49','url':'/fen-tool/assets/x2/alpha44.png'},{'revision':'eb64eb7fd4a3fb6e3c8b79f6eff145ac','url':'/fen-tool/assets/x2/goodCompanion26.png'},{'revision':'572508a70a2dd03b1f7e8a086dbd5a65','url':'/fen-tool/assets/x2/goodCompanion32.png'},{'revision':'aa0df3d0faebf5dd11eeeac4a9a9233f','url':'/fen-tool/assets/x2/goodCompanion38.png'},{'revision':'9c125a249a94e63219d7c26c2eba8c4b','url':'/fen-tool/assets/x2/goodCompanion44.png'},{'revision':'a175614d69859504d16d1b3e0afff776','url':'/fen-tool/assets/x2/kilfiger26.png'},{'revision':'c24a1775683e5d7fbf90df9faa61ea32','url':'/fen-tool/assets/x2/kilfiger32.png'},{'revision':'2fa8e442e403477544ea5d6ab2baf0cc','url':'/fen-tool/assets/x2/kilfiger38.png'},{'revision':'2cabcc4671c95c6d0ada8c4787f42f2d','url':'/fen-tool/assets/x2/kilfiger44.png'},{'revision':'76e8cc5f2482cec2721827b09770d64b','url':'/fen-tool/assets/x2/merida26.png'},{'revision':'3cddde4acdadbdd200e61cb3833c7f46','url':'/fen-tool/assets/x2/merida32.png'},{'revision':'63074205f53952fc9315e4e97ff8affd','url':'/fen-tool/assets/x2/merida38.png'},{'revision':'9c497b6e71e80cb1aea21693bf556f80','url':'/fen-tool/assets/x2/merida44.png'},{'revision':'75fd71198dec22ebc35f7198cc5ccb76','url':'/fen-tool/assets/x2/mpchess26.png'},{'revision':'a97902b2336b674e26aa2853d74120e1','url':'/fen-tool/assets/x2/mpchess32.png'},{'revision':'7667a80931b8e77f54fa80df01e02842','url':'/fen-tool/assets/x2/mpchess38.png'},{'revision':'035f6705eaf6d64bc8a67be8af465b0e','url':'/fen-tool/assets/x2/mpchess44.png'},{'revision':'89c581224760b0faed30adb5e25318d7','url':'/fen-tool/assets/x2/skak26.png'},{'revision':'b0dea80d7b352f45e3b3ad3b17e6bc5d','url':'/fen-tool/assets/x2/skak32.png'},{'revision':'ca6333a93bcab10d67bfeb4547035c5d','url':'/fen-tool/assets/x2/skak38.png'},{'revision':'95def9316c7d809a82debd98c9a477ae','url':'/fen-tool/assets/x2/skak44.png'},{'revision':'de7aa92bcc0737415c84cb4273d679cc','url':'/fen-tool/assets/x2/symbol26.png'},{'revision':'2c3ff9dcd69fafcd6e094e6f784bdfbb','url':'/fen-tool/assets/x2/symbol32.png'},{'revision':'a520de5ed63d9700c0563041b5668715','url':'/fen-tool/assets/x2/symbol38.png'},{'revision':'0f19a3d849ba92e9dfcebd8df7d1c856','url':'/fen-tool/assets/x2/symbol44.png'},{'revision':'e2e49c925ab255151bfe330e7c2e4314','url':'/fen-tool/gen/index.html'},{'revision':'883741350d5a49775d2a6a935d4400cf','url':'/fen-tool/index.html'},{'revision':'6777959dd2763ca429fccbcf69bce5af','url':'/fen-tool/manifest.json'},{'revision':'098f59d9e0816b97be1ebea1f2d9a475','url':'/fen-tool/sdk.js'},{'revision':null,'url':'/fen-tool/static/css/index.bfea9f36.css'},{'revision':null,'url':'/fen-tool/static/font/fa-regular-400.cd365c86.woff2'},{'revision':null,'url':'/fen-tool/static/font/fa-solid-900.97c416d6.woff2'},{'revision':null,'url':'/fen-tool/static/js/137.7b2f2d68.js'},{'revision':null,'url':'/fen-tool/static/js/165.c128f14d.js'},{'revision':null,'url':'/fen-tool/static/js/api/index.41a9756b.js'},{'revision':null,'url':'/fen-tool/static/js/async/chess.ccd03eb4.js'},{'revision':null,'url':'/fen-tool/static/js/async/olive.bca279fb.js'},{'revision':null,'url':'/fen-tool/static/js/async/ptt.6c7ebf7d.js'},{'revision':null,'url':'/fen-tool/static/js/async/py.22fd8ba0.js'},{'revision':null,'url':'/fen-tool/static/js/gen/index.19d491f7.js'},{'revision':null,'url':'/fen-tool/static/js/index.702b8160.js'},{'revision':null,'url':'/fen-tool/static/js/vue.fc524477.js'},{'revision':null,'url':'/fen-tool/static/wasm/41d089bb0d8995e7.module.wasm'}]),O(new class e extends E{constructor(e,t){super(({request:s})=>{let a=e.getURLsToCacheKeys();for(let r of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:a=!0,urlManipulation:r}={}){let i=new URL(e,location.href);i.hash="",yield i.href;let n=function(e,t=[]){for(let s of[...e.searchParams.keys()])t.some(e=>e.test(s))&&e.searchParams.delete(s);return e}(i,t);if(yield n.href,s&&n.pathname.endsWith("/")){let e=new URL(n.href);e.pathname+=s,yield e.href}if(a){let e=new URL(n.href);e.pathname+=".html",yield e.href}if(r)for(let e of r({url:i}))yield e.href}(s.url,t)){let t=a.get(r);if(t){let s=e.getIntegrityForCacheKey(t);return{cacheKey:t,integrity:s}}}},e.strategy)}}(I,{ignoreURLParametersMatching:[/.*/],cleanURLs:!1}));let D=new Map,A=0;O(e=>{let{url:t}=e;return t.pathname.startsWith("/fen-tool/share")},async e=>{let{event:t}=e,s=await t.request.formData(),a=s.get("fen"),r=s.get("image"),i=[];a&&i.push("fen="+encodeURIComponent(a)),r&&(D.set(++A,r),i.push("image="+A));let n="/fen-tool"+(i.length>0?"?"+i.join("&"):"");return Response.redirect(n,303)},"POST"),O(e=>{let{url:t}=e;return t.pathname.startsWith("/fen-tool/shareImage")},e=>{let{url:t}=e,s=Number(t.searchParams.get("image")),a=D.get(s);return D.delete(s),new Response(a)}),O(e=>{let{url:t}=e;return"mutsuntsai.github.io"!=t.host&&!t.host.startsWith("localhost")},new class e extends P{constructor(e={}){super(e),this._networkTimeoutSeconds=e.networkTimeoutSeconds||0}async _handle(e,t){let s,a;try{let a=[t.fetch(e)];if(this._networkTimeoutSeconds){let e=U(1e3*this._networkTimeoutSeconds);a.push(e)}if(!(s=await Promise.race(a)))throw Error(`Timed out the network response after ${this._networkTimeoutSeconds} seconds.`)}catch(e){e instanceof Error&&(a=e)}if(!s)throw new l("no-response",{url:e.url,error:a});return s}}({fetchOptions:{cache:"reload"}})),self.addEventListener("install",e=>{self.skipWaiting(),console.log("service worker installing"),I.install(e)}),self.addEventListener("activate",e=>{I.activate(e)})})();
\ No newline at end of file
diff --git a/package.json b/package.json
index a8aeda5..7ed0568 100644
--- a/package.json
+++ b/package.json
@@ -7,7 +7,7 @@
 		"build": "rsbuild build",
 		"lint": "eslint src",
 		"prebuild": "gulp",
-		"preview": "rsbuild preview",
+		"preview": "rsbuild preview --port 3001 --open http://localhost:3001",
 		"start": "rsbuild dev",
 		"test": "mocha"
 	},
diff --git a/rsbuild.config.ts b/rsbuild.config.ts
index 3e64e9a..133e84f 100644
--- a/rsbuild.config.ts
+++ b/rsbuild.config.ts
@@ -49,6 +49,7 @@ export default defineConfig({
 	},
 	server: {
 		port: 3000,
+		base: "/fen-tool",
 		publicDir: {
 			name: "src/public",
 			copyOnBuild: true,
@@ -103,7 +104,6 @@ export default defineConfig({
 			{ from: "src/public/assets/icon/icon-192.png", to: "assets/icon" },
 		],
 		dataUriLimit: 100,
-		assetPrefix: "/fen-tool/",
 		legalComments: inspectBuild ? "inline" : "none",
 		polyfill: "off",
 		minify: !inspectBuild,
diff --git a/src/app/view/asset.ts b/src/app/view/asset.ts
index f7622a7..11fc195 100644
--- a/src/app/view/asset.ts
+++ b/src/app/view/asset.ts
@@ -42,7 +42,7 @@ function loadImg(file: string): Promise<HTMLImageElement> {
 	return new Promise((resolve, reject) => {
 		const img = new Image();
 		img.onload = () => resolve(img);
-		img.onerror = () => reject();
+		img.onerror = e => reject(e);
 		img.src = file;
 	});
 }