jocly
Version:
Board games 3D/2D UI and AI web library
2 lines • 359 kB
JavaScript
exports.model=Model={Game:{},Board:{},Move:{}},function(){var e;Model.Game.cbConstants={MASK:65535,FLAG_MOVE:65536,FLAG_CAPTURE:131072,FLAG_STOP:262144,FLAG_SCREEN_CAPTURE:524288,FLAG_CAPTURE_KING:1048576,FLAG_CAPTURE_NO_KING:2097152};var m="undefined"!=typeof Int32Array;Model.Game.cbUseTypedArrays=m,Model.Game.cbTypedArray=function(e){if(m){var d=new Int32Array(e.length);return d.set(e),d}for(var c=[],f=e.length,g=0;g<f;g++)c.push(e[g]);return c},Model.Game.cbShortRangeGraph=function(e,m,d,c){var f=this;void 0===c&&(c=196608);for(var g={},N=0;N<e.boardSize;N++)g[N]=[],(!d||N in d)&&m.forEach(function(m){var b=e.Graph(N,m);null!=b&&(!d||b in d)&&g[N].push(f.cbTypedArray([b|c]))});return g},Model.Game.cbLongRangeGraph=function(e,m,d,c,f){var g=this;void 0!==c&&null!=c||(c=196608),f||(f=1/0);for(var N={},b=0;b<e.boardSize;b++)N[b]=[],(!d||b in d)&&m.forEach(function(m){for(var B=[],a=e.Graph(b,m),x=0;null!=a&&(!d||a in d)&&(B.push(a|c),++x!=f);)a=e.Graph(a,m);B.length>0&&N[b].push(g.cbTypedArray(B))});return N},Model.Game.cbNullGraph=function(e){for(var m={},d=0;d<e.boardSize;d++)m[d]=[];return m},Model.Game.cbAuthorGraph=function(e){for(var m={},d=0;d<e.boardSize;d++){m[d]=[];for(var c=0;c<e.boardSize;c++)m[d].push([2293760|c])}return m},Model.Game.cbMergeGraphs=function(e){for(var m=[],d=0;d<e.boardSize;d++){m[d]=[];for(var c=1;c<arguments.length;c++)m[d]=m[d].concat(arguments[c][d])}return m},Model.Game.cbGetThreatGraph=function(){function e(m,d){for(var c in N){var f=N[c];if(!(f.p.length<d.length+1)){for(var g=!0,b=0;b<d.length;b++)if(d[b]!=f.p[b]){g=!1;break}if(g){var B=f.p[d.length],a=m[B];void 0===a&&(a={e:{}},m[B]=a),f.p.length==d.length+1&&(a.t=f.t,a.ts=f.ts,a.tk=f.tk,delete N[c]),d.push(B),e(a.e,d),d.pop()}}}}var m=this;this.cbUseScreenCapture=!1,this.cbUseCaptureKing=!1,this.cbUseCaptureNoKing=!1;for(var d={1:[],"-1":[]},c=[],f=0;f<this.g.boardSize;f++)this.g.pTypes.forEach(function(e,d){e.graph[f].forEach(function(e){for(var g=[],N=0;N<e.length;N++){var b=e[N];1048576&b?(m.cbUseCaptureKing=!0,g.unshift({d:65535&b,a:f,tk:d})):2097152&b?(m.cbUseCaptureNoKing=!0,g.unshift({d:65535&b,a:f,tnk:d})):131072&b?g.unshift({d:65535&b,a:f,t:d}):262144&b?g.unshift({d:65535&b,a:f}):524288&b&&(m.cbUseScreenCapture=!0,g.unshift({d:65535&b,a:f,ts:d}))}g.length>0&&c.push(g)})});var g={};c.forEach(function(e){e.forEach(function(m,d){var c=g[m.d];void 0===c&&(c={},g[m.d]=c);for(var f=[],N=d+1;N<e.length;N++)f.push(e[N].d);f.push(m.a);var b=f.join(","),B=c[b];void 0===B&&(B={p:f,t:{},ts:{},tk:{}},c[b]=B),void 0!==m.t?B.t[m.t]=!0:void 0!==m.tk?B.tk[m.tk]=!0:void 0!==m.ts&&(B.ts[m.ts]=!0)})});for(var f=0;f<m.g.boardSize;f++){var N=g[f],b={};e(b,[]),d[1][f]=b,d[-1][f]=b}return d},Model.Game.InitGame=function(){var m=this;this.cbVar=e=this.cbDefine(),this.g.boardSize=this.cbVar.geometry.boardSize,this.g.pTypes=this.cbGetPieceTypes(),this.g.threatGraph=this.cbGetThreatGraph(),this.g.distGraph=this.cbVar.geometry.GetDistances(),this.cbPiecesCount=0,this.g.castleablePiecesCount={1:0,"-1":0};for(var d in e.pieceTypes){var c=e.pieceTypes[d];if(c.castle){(c.initial||[]).forEach(function(e){m.g.castleablePiecesCount[e.s]++})}c.initial&&(this.cbPiecesCount+=c.initial.length)}for(var f=[],d=0;d<this.cbPiecesCount;d++)f.push(d);var g=Object.keys(e.pieceTypes);this.zobrist=new JocGame.Zobrist({board:{type:"array",size:this.cbVar.geometry.boardSize,values:f},who:{values:["1","-1"]},type:{type:"array",size:this.cbPiecesCount,values:g}})},Model.Game.cbGetPieceTypes=function(){for(var e=[],m={},d=0;d<this.cbVar.geometry.boardSize;d++)m[d]=[];for(var c in this.cbVar.pieceTypes){var f=this.cbVar.pieceTypes[c];e[c]={graph:f.graph||m,abbrev:f.abbrev||"",value:f.isKing?100:f.value||1,isKing:!!f.isKing,castle:!!f.castle,epTarget:!!f.epTarget,epCatch:!!f.epCatch}}return e},Model.Board.Init=function(e){this.zSign=0},Model.Board.InitialPosition=function(d){var c=this;this.board=m?new Int16Array(d.g.boardSize):[];for(var f=0;f<d.g.boardSize;f++)this.board[f]=-1;if(this.kings={},this.pieces=[],this.ending={1:!1,"-1":!1},this.lastMove=null,d.cbVar.castle&&(this.castled={1:!1,"-1":!1}),this.zSign=d.zobrist.update(0,"who",-1),this.noCaptCount=0,this.mWho=1,d.mInitial)this.mWho=d.mInitial.turn||1,d.mInitial.pieces.forEach(function(e){var m={};for(var d in e)e.hasOwnProperty(d)&&(m[d]=e[d]);c.pieces.push(m)}),d.mInitial.lastMove&&(this.lastMove={f:d.mInitial.lastMove.f,t:d.mInitial.lastMove.t}),void 0!==d.mInitial.noCaptCount&&(this.noCaptCount=d.mInitial.noCaptCount),d.cbVar.castle&&d.mInitial.castle&&(this.castled={1:{k:!!d.mInitial.castle[1]&&!!d.mInitial.castle[1].k,q:!!d.mInitial.castle[1]&&!!d.mInitial.castle[1].q},"-1":{k:!!d.mInitial.castle[-1]&&!!d.mInitial.castle[-1].k,q:!!d.mInitial.castle[-1]&&!!d.mInitial.castle[-1].q}});else for(var g in d.cbVar.pieceTypes)for(var N=d.cbVar.pieceTypes[g],b=N.initial||[],B=0;B<b.length;B++){var a=b[B],x={s:a.s,t:parseInt(g),p:a.p,m:!1};this.pieces.push(x)}if(this.pieces.sort(function(e,m){if(e.s!=m.s)return m.s-e.s;var c=d.cbVar.pieceTypes[e.t].value||100,f=d.cbVar.pieceTypes[m.t].value||100;return c!=f?c-f:e.p-m.p}),this.pieces.forEach(function(e,m){e.i=m,c.board[e.p]=m,d.g.pTypes[e.t].isKing&&(c.kings[e.s]=e.p),c.zSign=d.zobrist.update(c.zSign,"board",m,e.p),c.zSign=d.zobrist.update(c.zSign,"type",e.t,m)}),d.mInitial&&d.mInitial.enPassant){var f=e.geometry.PosByName(d.mInitial.enPassant);if(f>=0){var h,t=e.geometry.C(f),r=e.geometry.R(f);h=1==d.mInitial.turn?e.geometry.POS(t,r-1):e.geometry.POS(t,r+1),this.epTarget={p:f,i:this.board[h]}}}},Model.Board.CopyFrom=function(e){if(m)this.board=new Int16Array(e.board.length),this.board.set(e.board);else{this.board=[];for(var d=e.board,c=d.length,f=0;f<c;f++)this.board.push(d[f])}this.pieces=[];for(var g=e.pieces.length,f=0;f<g;f++){var N=e.pieces[f];this.pieces.push({s:N.s,p:N.p,t:N.t,i:N.i,m:N.m})}this.kings={1:e.kings[1],"-1":e.kings[-1]},this.check=e.check,e.lastMove?this.lastMove={f:e.lastMove.f,t:e.lastMove.t,c:e.lastMove.c}:this.lastMove=null,this.ending={1:e.ending[1],"-1":e.ending[-1]},void 0!==e.castled&&(this.castled={1:e.castled[1],"-1":e.castled[-1]}),this.noCaptCount=e.noCaptCount,e.epTarget?this.epTarget={p:e.epTarget.p,i:e.epTarget.i}:this.epTarget=null,this.mWho=e.mWho,this.zSign=e.zSign},Model.Board.cbApplyCastle=function(e,m,d){var c=e.cbVar.castle[m.f+"/"+m.cg],f=c.r[c.r.length-1],g=this.pieces[this.board[m.cg]],N=c.k[c.k.length-1],b=this.pieces[this.board[m.f]];return d&&(this.zSign=e.zobrist.update(this.zSign,"board",g.i,m.cg),this.zSign=e.zobrist.update(this.zSign,"board",g.i,f),this.zSign=e.zobrist.update(this.zSign,"board",b.i,m.f),this.zSign=e.zobrist.update(this.zSign,"board",b.i,N)),g.p=f,g.m=!0,this.board[m.cg]=-1,b.p=N,b.m=!0,this.board[m.f]=-1,this.board[f]=g.i,this.board[N]=b.i,this.castled[g.s]=!0,this.kings[b.s]=N,[{i:g.i,f:f,t:-1},{i:b.i,f:N,t:m.f,kp:m.f,who:b.s,m:!1},{i:g.i,f:-1,t:m.cg,m:!1,cg:!1}]},Model.Board.cbQuickApply=function(e,m){if(void 0!==m.cg)return this.cbApplyCastle(e,m,!1);var d=[],c=this.board[m.f],f=this.pieces[c];if(null!=m.c){d.unshift({i:m.c,f:-1,t:this.pieces[m.c].p});var g=this.pieces[m.c];this.board[g.p]=-1,g.p=-1}var N=this.kings[f.s];return e.g.pTypes[f.t].isKing&&(this.kings[f.s]=m.t),d.unshift({i:c,f:m.t,t:m.f,kp:N,who:f.s,ty:f.t}),f.p=m.t,void 0!==m.pr&&(f.t=m.pr),this.board[m.f]=-1,this.board[m.t]=c,d},Model.Board.cbQuickUnapply=function(e,m){for(var d=0;d<m.length;d++){var c=m[d],f=this.pieces[c.i];c.f>=0&&(f.p=-1,this.board[c.f]=-1),c.t>=0&&(f.p=c.t,this.board[c.t]=c.i),void 0!==c.m&&(f.m=c.m),void 0!==c.kp&&(this.kings[c.who]=c.kp),void 0!=c.ty&&(f.t=c.ty),void 0!=c.cg&&(this.castled[f.s]=c.cg)}},Model.Board.ApplyMove=function(e,m){var d=this.pieces[this.board[m.f]];if(void 0!==m.cg)this.cbApplyCastle(e,m,!0);else{if(this.zSign=e.zobrist.update(this.zSign,"board",d.i,m.f),this.board[d.p]=-1,void 0!==m.pr&&(this.zSign=e.zobrist.update(this.zSign,"type",d.t,d.i),d.t=m.pr,this.zSign=e.zobrist.update(this.zSign,"type",d.t,d.i)),null!=m.c){var c=this.pieces[m.c];this.zSign=e.zobrist.update(this.zSign,"board",c.i,c.p),this.board[c.p]=-1,c.p=-1,c.m=!0,this.noCaptCount=0}else this.noCaptCount++;d.p=m.t,d.m=!0,this.board[m.t]=d.i,this.zSign=e.zobrist.update(this.zSign,"board",d.i,m.t),e.g.pTypes[d.t].isKing&&(this.kings[d.s]=m.t)}this.check=!!m.ck,this.lastMove={f:m.f,t:m.t,c:m.c},void 0!==m.ko&&(this.ending[d.s]=m.ko),void 0!==m.ept?this.epTarget={p:m.ept,i:d.i}:this.epTarget=null,this.zSign=e.zobrist.update(this.zSign,"who",-this.mWho),this.zSign=e.zobrist.update(this.zSign,"who",this.mWho)},Model.Board.Evaluate=function(d){function c(m){var d=1/0;for(var c in e.geometry.corners)d=Math.min(d,B.distGraph[g.kings[m]][c]);return d-Math.sqrt(B.boardSize)}var f="debug"==arguments[3],g=this;this.mEvaluation=0;var N,b=this.mWho,B=d.g;if(m)N={1:{count:new Uint8Array(B.pTypes.length),byType:{}},"-1":{count:new Uint8Array(B.pTypes.length),byType:{}}};else{N={1:{count:[],byType:{}},"-1":{count:[],byType:{}}};for(var a=0;a<B.pTypes.length;a++)N[1].count[a]=N[-1].count[a]=0}if(d.mOptions.preventRepeat&&d.GetRepeatOccurence(this)>2)return this.mFinished=!0,void(this.mWinner=d.cbOnPerpetual?b*d.cbOnPerpetual:JocGame.DRAW);for(var x={1:0,"-1":0},h={1:B.distGraph[this.kings[-1]],"-1":B.distGraph[this.kings[1]]},t={1:0,"-1":0},r={1:0,"-1":0},i={1:0,"-1":0},O={1:0,"-1":0},s={1:!1,"-1":!1},n=this.pieces,o=n.length,a=0;a<o;a++){var Q=n[a];if(Q.p>=0){var p=Q.s,l=B.pTypes[Q.t];l.isKing?s[p]=Q.m:x[p]+=l.value,l.castle&&!Q.m&&O[p]++,r[p]++,t[p]+=h[p][Q.p],i[p]+=e.geometry.distEdge[Q.p];var u=N[p];u.count[Q.t]++;var R=u.byType;void 0===R[Q.t]?R[Q.t]=[Q]:R[Q.t].push(Q)}}if(this.lastMove&&null!=this.lastMove.c){var Q=this.pieces[this.board[this.lastMove.t]];x[-Q.s]+=this.cbStaticExchangeEval(d,Q.p,Q.s,{piece:Q})}var v={1:0,"-1":0},G={1:0,"-1":0},y={1:0,"-1":0};this.ending[1]&&(G[1]=(t[1]-Math.sqrt(B.boardSize))/r[1],e.geometry.corners&&(y[1]=c(1))),this.ending[-1]&&(G[-1]=(t[-1]-Math.sqrt(B.boardSize))/r[-1],e.geometry.corners&&(y[1]=c(-1)));var M={pieceValue:x[1]-x[-1],pieceValueRatio:(x[1]-x[-1])/(x[1]+x[-1]+1),posValue:i[1]-i[-1],averageDistKing:t[1]/r[1]-t[-1]/r[-1],check:this.check?-b:0,endingKingFreedom:v[1]-v[-1],endingDistKing:G[1]-G[-1],distKingCorner:y[1]-y[-1]};e.castle&&(M.castle=(this.castled[1]?1:s[1]?0:O[1]/(B.castleablePiecesCount[1]+1))-(this.castled[-1]?1:s[-1]?0:O[-1]/(B.castleablePiecesCount[-1]+1))),e.evaluate&&e.evaluate.call(this,d,M,N);var K=d.mOptions.levelOptions;for(var C in M){var S=M[C],k=K[C+"Factor"]||0,A=S*k;f&&console.log(C,"=",S,"*",k,"=>",A),this.mEvaluation+=A}f&&console.log("Evaluation",this.mEvaluation)},Model.Board.cbGeneratePseudoLegalMoves=function(e){function m(m,f){var g=e.cbVar.promote;if(!g)return void c.push(f);var N=g.call(d,e,m,f);if(null!=N)if(0==N.length)c.push(f);else if(1==N.length)f.pr=N[0],c.push(f);else for(var b=0;b<N.length;b++){var B=N[b];c.push({f:f.f,t:f.t,c:f.c,pr:B,ept:f.ept,ep:f.ep,a:f.a})}}for(var d=this,c=[],f=e.cbVar,g=this.mWho,N=!f.castle||this.check||this.castled[g]?null:[],b=-1,B=this.pieces.length,a=0;a<B;a++){var x=this.pieces[a];if(!(x.p<0||x.s!=g)){var h=e.g.pTypes[x.t];h.isKing&&(x.m?N=null:b=x),N&&h.castle&&!x.m&&N.push(x);var t,r;t=h.graph[x.p],r=t.length;for(var i=0;i<r;i++)for(var O=t[i],s=!1,n=O.length,o=null,Q=0;Q<n;Q++){var p=O[Q],l=65535&p,u=this.board[l];if(!(u<0)||h.epCatch&&this.epTarget&&this.epTarget.p==l){if(!(524288&p)){var R;R=u<0?this.pieces[this.epTarget.i]:this.pieces[u],!(R.s!=x.s&&131072&p)||1048576&p&&!e.g.pTypes[R.t].isKing||2097152&p&&e.g.pTypes[R.t].isKing||m(x,{f:x.p,t:l,c:R.i,a:h.abbrev,ep:u<0});break}if(s){var R=this.pieces[u];R.s!=x.s&&m(x,{f:x.p,t:l,c:R.i,a:h.abbrev});break}s=!0}else 65536&p&&0==s&&m(x,{f:x.p,t:l,c:null,a:h.abbrev,ept:null!=o&&h.epTarget?o:void 0});o=l}}}if(N)for(var a=0;a<N.length;a++){var v=N[a],G=e.cbVar.castle[b.p+"/"+v.p];if(G){for(var y=!0,i=0;i<G.r.length;i++){var M=G.r[i];if(this.board[M]>=0&&M!=b.p&&M!=v.p){y=!1;break}}if(y){for(var K=!0,i=0;i<G.k.length;i++){var M=G.k[i];if(this.board[M]>=0&&M!=v.p&&M!=b.p||this.cbGetAttackers(e,M,g).length>0){K=!1;break}}K&&c.push({f:b.p,t:G.k[G.k.length-1],c:null,cg:v.p})}}}return c},Model.Board.cbStaticExchangeEval=function(e,m,d,c){var f=0,g=this.cbGetSmallestAttacker(e,m,d);if(g){var N=this.mWho;this.mWho=g.s;var b=this.cbQuickApply(e,{f:g.p,t:m,c:c.piece.i}),B=e.g.pTypes[c.piece.t].value;c.piece=g,f=Math.max(0,B-this.cbStaticExchangeEval(e,m,-d,c)),this.cbQuickUnapply(e,b),this.mWho=N}return f},Model.Board.cbGetSmallestAttacker=function(e,m,d){var c=this.cbGetAttackers(e,m,d);if(0==c.length)return null;for(var f=1/0,g=null,N=c.length,b=0;b<N;b++){var B=c[b],a=e.g.pTypes[B.t].value;a<f&&(f=a,g=B)}return g},Model.Board.cbCollectAttackers=function(e,m,d,c){for(var f in m){var g=m[f],N=this.board[f];if(N<0)this.cbCollectAttackers(e,g.e,d,c);else{var b=this.pieces[N];b.s==-e&&(g.t&&b.t in g.t||c&&g.tk&&b.t in g.tk)&&d.push(b)}}},Model.Board.cbCollectAttackersScreen=function(e,m,d,c,f){for(var g in m){var N=m[g],b=this.board[g];if(b<0)this.cbCollectAttackersScreen(e,N.e,d,c,f);else{var B=this.pieces[b];!f&&B.s==-e&&(N.t&&B.t in N.t||c&&N.tk&&B.t in N.tk)?d.push(B):f?f&&B.s==-e&&N.ts&&B.t in N.ts&&d.push(B):this.cbCollectAttackersScreen(e,N.e,d,c,!0)}}},Model.Board.cbGetAttackers=function(e,m,d,c){var f=[];return e.cbUseScreenCapture?this.cbCollectAttackersScreen(d,e.g.threatGraph[d][m],f,c,!1):this.cbCollectAttackers(d,e.g.threatGraph[d][m],f,c),f},Model.Board.GenerateMoves=function(e){var m=this.cbGeneratePseudoLegalMoves(e);this.mMoves=[];for(var d=!0,c=this.kings[this.mWho],f=m.length,g=0;g<f;g++){var N=m[g],b=this.cbQuickApply(e,N);if(!(this.cbGetAttackers(e,this.kings[this.mWho],this.mWho,!0).length>0)){var B=this.cbGetAttackers(e,this.kings[-this.mWho],-this.mWho,!0).length>0;N.ck=B,this.mMoves.push(N),N.f!=c&&(d=!1)}this.cbQuickUnapply(e,b)}if(0==this.mMoves.length)this.mFinished=!0,this.mWinner=e.cbOnStaleMate?e.cbOnStaleMate*this.mWho:JocGame.DRAW,this.check&&(this.mWinner=-this.mWho);else if(this.ending[this.mWho]){if(!d)for(var g=0;g<this.mMoves.length;g++)this.mMoves[g].ko=!1}else if(!this.ending[this.mWho]&&d&&!this.check)for(var g=0;g<this.mMoves.length;g++)this.mMoves[g].ko=!0},Model.Board.GetSignature=function(){return this.zSign},Model.Move.Init=function(e){for(var m in e)e.hasOwnProperty(m)&&(this[m]=e[m])},Model.Move.Equals=function(e){return this.f==e.f&&this.t==e.t&&this.pr==e.pr},Model.Move.CopyFrom=function(e){this.Init(e)},Model.Move.ToString=function(m){var d=this;switch(m=m||"natural"){case"natural":return function(){var m;if(void 0!==d.cg?m=e.castle[d.f+"/"+d.cg].n:(m=d.a||"",m+=e.geometry.PosName(d.f),null==d.c?m+="-":m+="x",m+=e.geometry.PosName(d.t)),void 0!==d.pr){var c=e.pieceTypes[d.pr];c&&c.abbrev&&c.abbrev.length>0&&!c.silentPromo&&(m+="="+c.abbrev)}return d.ck&&(m+="+"),m}();case"engine":return function(){var m=e.geometry.PosName(d.f)+e.geometry.PosName(d.t);if(void 0!=d.pr){var c=e.pieceTypes[d.pr];c&&c.abbrev&&c.abbrev.length>0&&!c.silentPromo&&(m+=c.abbrev)}return m}();default:return"??"}},Model.Board.CompactMoveString=function(m,d,c){"function"!=typeof d.ToString&&(d=m.CreateMove(d));var f=d.ToString(),g=/^([A-Z]?)([a-z])([1-9][0-9]*)([-x])([a-z])([1-9][0-9]*)(.*?)$/.exec(f);if(!g)return f;var N=g[7];if(c||(c={}),c.value||(c.value=[]),0==c.value.length){var b=this.mMoves;this.mMoves&&0!=this.mMoves.length||this.GenerateMoves(m);for(var B=0;B<this.mMoves.length;B++){var a=this.mMoves[B];"function"!=typeof a.ToString&&(a=m.CreateMove(a)),c.value.push({str:a.ToString(),move:a})}this.mMoves=b}var x=[];if(c.value.forEach(function(e){var m=/^([A-Z]?[a-z][1-9][0-9]*[-x][a-z][1-9][0-9]*)(.*?)$/.exec(e.str);m&&e.move.t==d.t&&(e.move.a||"")==g[1]&&m[2]==N&&x.push(e.move)}),1==x.length)return""==g[1]&&"x"==g[4]?g[2]+"x"+g[5]+g[6]+g[7]:g[1]+("x"==g[4]?"x":"")+g[5]+g[6]+g[7];if(e.geometry.CompactCrit)for(var h="",B=0;;B++){var t=e.geometry.CompactCrit(d.f,B);if(null==t)return f;h+=t;for(var r=[],i=0;i<x.length;i++){var O=x[i];e.geometry.CompactCrit(O.f,B)==t&&r.push(O)}if(console.assert(r.length>0),1==r.length)return g[1]+h+("x"==g[4]?"x":"")+g[5]+g[6]+g[7];x=r}return f},Model.Board.cbIntegrity=function(e){function m(e,m){e||console.error(m)}for(var d=this,c=0;c<this.board.length;c++){var f=this.board[c];if(f>=0){var g=d.pieces[f];m(void 0!==g,"no piece at pos"),m(g.p==c,"piece has different pos")}}for(var f=0;f<this.pieces.length;f++){var g=this.pieces[f];g.p>=0&&m(d.board[g.p]==f,"board index mismatch")}},Model.Board.ExportBoardState=function(e){return e.cbVar.geometry.ExportBoardState?e.cbVar.geometry.ExportBoardState(this,e.cbVar,e.mPlayedMoves.length):"not supported"},Model.Game.Import=function(m,d){var c,f=[],g={1:{},"-1":{}},N=null,b=0;if("pjn"==m){var B={status:!1,error:"parse"},a=d.split(" ");if(6!=a.length)return console.warn("FEN should have 6 parts"),B;var x=a[0].split("/"),h=e.geometry.fenHeight||e.geometry.height;if(x.length!=h)return console.warn("FEN board should have",h,"rows, got",x.length),B;var t={};for(var r in e.pieceTypes){var i=e.pieceTypes[r],O=i.fenAbbrev||i.abbrev||"X";t[O.toUpperCase()]={s:1,t:r},t[O.toLowerCase()]={s:-1,t:r}}var s=e.geometry.FenRowPos||function(m,d){return(e.geometry.height-1-m)*e.geometry.width+d};if(x.forEach(function(m,d){for(var c=0,g=0;g<m.length;g++){var N=m.substr(g,1),b=t[N];if(void 0!==b){var a=s(d,c);c++;for(var x={s:b.s,t:b.t,p:a},h=!0,r=e.pieceTypes[x.t].initial||[],i=0;i<r.length;i++){var O=r[i];O.s==x.s&&O.p==a&&(h=!1)}x.m=h,f.push(x)}else{if(isNaN(parseInt(N)))return console.warn("FEN invalid board spec",N),B;c+=parseInt(N)}}}),f.sort(function(e,m){return m.s-e.s}),"w"==a[1])c=1;else{if("b"!=a[1])return console.warn("FEN invalid turn spec",a[1]),B;c=-1}g[1].k=a[2].indexOf("K")>=0,g[1].q=a[2].indexOf("Q")>=0,g[-1].k=a[2].indexOf("k")>=0,g[-1].q=a[2].indexOf("q")>=0,N="-"==a[3]?null:a[3];var n=parseInt(a[4]);isNaN(n)||(b=n);var o={pieces:f,turn:c,castle:g,enPassant:N,noCaptCount:b};return e.importGame&&e.importGame.call(this,o,m,d),{status:!0,initial:o}}return{status:!1,error:"unsupported"}}}(),function(){Model.Game.cbBoardGeometryGrid=function(e,m){function d(m){return m%e}function c(m){return Math.floor(m/e)}function f(m,d){return d*e+m}function g(g,N){var b=d(g),B=c(g),a=b+N[0],x=B+N[1];return a<0||a>=e||x<0||x>=m?null:f(a,x)}function N(e){return String.fromCharCode("a".charCodeAt(0)+d(e))+(c(e)+1)}function b(e){var m=/^([a-z])([0-9]+)$/.exec(e);return m?f(m[1].charCodeAt(0)-"a".charCodeAt(0),parseInt(m[2])-1):-1}function B(e,m){return 0==m?String.fromCharCode("a".charCodeAt(0)+d(e)):1==m?c(e)+1:null}function a(){for(var f=[],g=0;g<e*m;g++){var N=[];f.push(N);for(var b=0;b<e*m;b++){var B=c(g),a=d(g),x=c(b),h=d(b);N.push(Math.max(Math.abs(B-x),Math.abs(a-h)))}}return f}function x(d,c,g){for(var b=[],B=m-1;B>=0;B--){for(var a="",x=0,h=0;h<e;h++){var t=d.board[f(h,B)];if(t<0)x++;else{x>0&&(a+=x,x=0);var r=d.pieces[t],i=c.pieceTypes[r.t].fenAbbrev||c.pieceTypes[r.t].abbrev||"?";-1==r.s?a+=i.toLowerCase():a+=i.toUpperCase()}}x&&(a+=x),b.push(a)}var O=b.join("/");O+=" ",1==d.mWho?O+="w":O+="b",O+=" ";var s="";return d.castled&&(!1===d.castled[1]?s+="KQ":(d.castled[1].k&&(s+="K"),d.castled[1].q&&(s+="Q")),!1===d.castled[-1]?s+="kq":(d.castled[-1].k&&(s+="k"),d.castled[-1].q&&(s+="q"))),0==s.length&&(s="-"),O+=s,O+=" ",d.epTarget?O+=N(d.epTarget.p):O+="-",O+=" ",O+=d.noCaptCount,O+=" ",O+=Math.floor(g/2)+1}return{boardSize:e*m,width:e,height:m,C:d,R:c,POS:f,Graph:g,PosName:N,PosByName:b,CompactCrit:B,GetDistances:a,distEdge:function(){for(var f=[],g=0;g<e*m;g++){var N=d(g),b=c(g);f[g]=Math.min(N,Math.abs(e-N-1),b,Math.abs(m-b-1))}return f}(),corners:function(){var d={};return d[f(0,0)]=1,d[f(0,m-1)]=1,d[f(e-1,0)]=1,d[f(e-1,m-1)]=1,d}(),ExportBoardState:x}},Model.Game.cbPawnGraph=function(e,m,d){for(var c=this,f={},g=0;g<e.boardSize;g++)if(!d||g in d){var N=[],b=e.Graph(g,[0,m]);null!=b&&(!d||b in d)&&N.push(c.cbTypedArray([b|c.cbConstants.FLAG_MOVE])),[-1,1].forEach(function(f){var b=e.Graph(g,[f,m]);null!=b&&(!d||b in d)&&N.push(c.cbTypedArray([b|c.cbConstants.FLAG_CAPTURE]))}),f[g]=N}else f[g]=[];return f},Model.Game.cbInitialPawnGraph=function(e,m,d){for(var c=this,f={},g=0;g<e.boardSize;g++)if(!d||g in d){var N=[],b=e.Graph(g,[0,m]);if(null!=b&&(!d||b in d)){var B=[b|c.cbConstants.FLAG_MOVE],a=e.Graph(b,[0,m]);null!=a&&(!d||a in d)&&B.push(a|c.cbConstants.FLAG_MOVE),N.push(c.cbTypedArray(B))}[-1,1].forEach(function(f){var b=e.Graph(g,[f,m]);null!=b&&(!d||b in d)&&N.push(c.cbTypedArray([b|c.cbConstants.FLAG_CAPTURE]))}),f[g]=N}else f[g]=[];return f},Model.Game.cbKingGraph=function(e,m){return this.cbShortRangeGraph(e,[[-1,-1],[-1,0],[-1,1],[0,-1],[0,1],[1,-1],[1,0],[1,1]],m)},Model.Game.cbKnightGraph=function(e,m){return this.cbShortRangeGraph(e,[[2,-1],[2,1],[-2,-1],[-2,1],[-1,2],[-1,-2],[1,2],[1,-2]],m)},Model.Game.cbHorseGraph=function(e){for(var m=this,d={},c=0;c<e.boardSize;c++)d[c]=[],[[1,0,2,-1],[1,0,2,1],[-1,0,-2,-1],[-1,0,-2,1],[0,1,-1,2],[0,-1,-1,-2],[0,1,1,2],[0,-1,1,-2]].forEach(function(f){var g=e.Graph(c,[f[0],f[1]]);if(null!=g){var N=e.Graph(c,[f[2],f[3]]);null!=N&&d[c].push(m.cbTypedArray([g|m.cbConstants.FLAG_STOP,N|m.cbConstants.FLAG_MOVE|m.cbConstants.FLAG_CAPTURE]))}});return d},Model.Game.cbRookGraph=function(e,m){return this.cbLongRangeGraph(e,[[0,-1],[0,1],[-1,0],[1,0]],m)},Model.Game.cbBishopGraph=function(e,m){return this.cbLongRangeGraph(e,[[1,-1],[1,1],[-1,1],[-1,-1]],m)},Model.Game.cbQueenGraph=function(e,m){return this.cbLongRangeGraph(e,[[0,-1],[0,1],[-1,0],[1,0],[1,-1],[1,1],[-1,1],[-1,-1]],m)},Model.Game.cbXQGeneralGraph=function(e,m){for(var d=this,c={},f=0;f<e.boardSize;f++)c[f]=[],[[-1,0,!1],[0,-1,!0],[0,1,!0],[1,0,!1]].forEach(function(g){var N=[],b=e.Graph(f,g);if(null!=b&&((!m||b in m)&&N.push(b|d.cbConstants.FLAG_MOVE|d.cbConstants.FLAG_CAPTURE),g[2]))for(var B=e.Graph(b,g);null!=B;)!m||B in m?N.push(B|d.cbConstants.FLAG_CAPTURE|d.cbConstants.FLAG_CAPTURE_KING):N.push(B|d.cbConstants.FLAG_STOP),B=e.Graph(B,g);N.length>0&&c[f].push(d.cbTypedArray(N))});return c},Model.Game.cbXQSoldierGraph=function(e,m){return this.cbShortRangeGraph(e,[[0,m]])},Model.Game.cbXQPromoSoldierGraph=function(e,m){return this.cbShortRangeGraph(e,[[0,m],[-1,0],[1,0]])},Model.Game.cbXQAdvisorGraph=function(e,m){return this.cbShortRangeGraph(e,[[1,1],[-1,1],[1,-1],[-1,-1]],m)},Model.Game.cbXQCannonGraph=function(e){return this.cbLongRangeGraph(e,[[0,-1],[0,1],[-1,0],[1,0]],null,this.cbConstants.FLAG_MOVE|this.cbConstants.FLAG_SCREEN_CAPTURE)},Model.Game.cbXQElephantGraph=function(e,m){for(var d=this,c={},f=0;f<e.boardSize;f++)c[f]=[],(!m||f in m)&&[[1,1,2,2],[1,-1,2,-2],[-1,1,-2,2],[-1,-1,-2,-2]].forEach(function(g){var N=e.Graph(f,[g[0],g[1]]);if(null!=N){var b=e.Graph(f,[g[2],g[3]]);null!=b&&(!m||b in m)&&c[f].push(d.cbTypedArray([N|d.cbConstants.FLAG_STOP,b|d.cbConstants.FLAG_MOVE|d.cbConstants.FLAG_CAPTURE]))}});return c},Model.Game.cbSilverGraph=function(e,m){return this.cbShortRangeGraph(e,[[0,m],[-1,-1],[-1,1],[1,-1],[1,1]])},Model.Game.cbFersGraph=function(e,m){return this.cbShortRangeGraph(e,[[-1,-1],[-1,1],[1,-1],[1,1]])},Model.Game.cbSchleichGraph=function(e,m){return this.cbShortRangeGraph(e,[[-1,0],[1,0],[0,-1],[0,1]])},Model.Game.cbAlfilGraph=function(e,m){return this.cbShortRangeGraph(e,[[-2,-2],[-2,2],[2,2],[2,-2]])}}(),function(){var e=Model.Game.cbBoardGeometryGrid(8,8);Model.Game.cbDefine=function(){return{geometry:e,pieceTypes:{0:{name:"pawn-w",aspect:"pawn",graph:this.cbPawnGraph(e,1),value:1,abbrev:"",fenAbbrev:"P",epCatch:!0},1:{name:"ipawn-w",aspect:"pawn",graph:this.cbInitialPawnGraph(e,1),value:1,abbrev:"",fenAbbrev:"P",initial:[{s:1,p:8},{s:1,p:9},{s:1,p:10},{s:1,p:11},{s:1,p:12},{s:1,p:13},{s:1,p:14},{s:1,p:15}],epTarget:!0},2:{name:"pawn-b",aspect:"pawn",graph:this.cbPawnGraph(e,-1),value:1,abbrev:"",fenAbbrev:"P",epCatch:!0},3:{name:"ipawn-b",aspect:"pawn",graph:this.cbInitialPawnGraph(e,-1),value:1,abbrev:"",fenAbbrev:"P",initial:[{s:-1,p:48},{s:-1,p:49},{s:-1,p:50},{s:-1,p:51},{s:-1,p:52},{s:-1,p:53},{s:-1,p:54},{s:-1,p:55}],epTarget:!0},4:{name:"knight",graph:this.cbKnightGraph(e),value:2.9,abbrev:"N",initial:[{s:1,p:1},{s:1,p:6},{s:-1,p:57},{s:-1,p:62}]},5:{name:"bishop",graph:this.cbBishopGraph(e),value:3.1,abbrev:"B",initial:[{s:1,p:2},{s:1,p:5},{s:-1,p:58},{s:-1,p:61}]},6:{name:"rook",graph:this.cbRookGraph(e),value:5,abbrev:"R",initial:[{s:1,p:0},{s:1,p:7},{s:-1,p:56},{s:-1,p:63}],castle:!0},7:{name:"queen",graph:this.cbQueenGraph(e),value:9,abbrev:"Q",initial:[{s:1,p:3},{s:-1,p:59}]},8:{name:"king",isKing:!0,graph:this.cbKingGraph(e),abbrev:"K",initial:[{s:1,p:4},{s:-1,p:60}]}},promote:function(m,d,c){return 1==d.t?[0]:3==d.t?[2]:0==d.t&&7==e.R(c.t)?[4,5,6,7]:2==d.t&&0==e.R(c.t)?[4,5,6,7]:[]},castle:{"4/0":{k:[3,2],r:[1,2,3],n:"O-O-O"},"4/7":{k:[5,6],r:[6,5],n:"O-O"},"60/56":{k:[59,58],r:[57,58,59],n:"O-O-O"},"60/63":{k:[61,62],r:[62,61],n:"O-O"}},evaluate:function(m,d,c){var f=c[1].count,g=c[-1].count;f[0]||f[1]||f[4]||f[5]||f[6]||f[7]||g[2]||g[3]||g[6]||g[7]||!(g[4]+g[5]<2||g[5]<2)||(this.mFinished=!0,this.mWinner=JocGame.DRAW),g[2]||g[3]||g[4]||g[5]||g[6]||g[7]||f[0]||f[1]||f[6]||f[7]||!(f[4]+f[5]<2||f[5]<2)||(this.mFinished=!0,this.mWinner=JocGame.DRAW),this.noCaptCount>=100&&(this.mFinished=!0,this.mWinner=JocGame.DRAW);var N,b=m.cbUseTypedArrays?new Int8Array(3):[0,0,0],B=e.height,a=c[1].byType[0];if(a){N=a.length;for(var x=0;x<N;x++)switch(B-e.R(a[x].p)){case 2:b[0]++;break;case 3:b[1]++;break;case 4:b[2]++}}if(a=c[-1].byType[2]){N=a.length;for(var x=0;x<N;x++)switch(e.R(a[x].p)){case 1:b[0]--;break;case 2:b[1]--;break;case 3:b[2]--}}0!=b[0]&&(d.distPawnPromo1=b[0]),0!=b[1]&&(d.distPawnPromo2=b[1]),0!=b[2]&&(d.distPawnPromo3=b[2]);for(var h=0,t=4;t<=5;t++)for(var r=1;r>=-1;r-=2){var i=c[r].byType[t];if(i)for(var x=0;x<i.length;x++)i[x].m&&(h+=r)}0!=h&&(d.minorPiecesMoved=h)},importGame:function(m,d,c){return m.pieces.forEach(function(m){1!=m.s||2!=m.t&&3!=m.t||(m.t=0),-1!=m.s||0!=m.t&&1!=m.t||(m.t=2),1==m.s&&1==e.R(m.p)&&0==m.t&&(m.t=1,m.m=!1),1==m.s&&1!=e.R(m.p)&&1==m.t&&(m.t=0,m.m=!0),-1==m.s&&e.R(m.p)==e.height-2&&2==m.t&&(m.t=3,m.m=!1),-1==m.s&&e.R(m.p)!=e.height-2&&3==m.t&&(m.t=2,m.m=!0)}),!0}}}}(),Model.Board.StaticGenerateMoves=function(e){return this.PickMoveFromDatabase(e,this.MoveDatabase)},Model.Board.MoveDatabase={"1#1797724988":[{m:"Nb1-c3",e:10},{m:"e2-e4",e:10},{m:"g2-g4",e:10},{m:"b2-b4",e:10},{m:"g2-g3",e:10},{m:"c2-c4",e:10},{m:"d2-d4",e:10},{m:"b2-b3",e:10},{m:"h2-h3",e:10},{m:"e2-e3",e:10},{m:"Ng1-f3",e:10},{m:"f2-f4",e:10}],"-1#-627366358":[{m:"e7-e5",e:9.95},{m:"d7-d5",e:9.95},{m:"c7-c5",e:9.95}],"1#-1178155266":[{m:"Ng1-f3",e:9.643},{m:"d2-d4",e:9.643},{m:"Ng1-h3",e:9.643}],"-1#1095100183":[{m:"Nb8-c6",e:9.545}],"1#-103347125":[{m:"d2-d4",e:9.444},{m:"g2-g3",e:9.444}],"-1#100050475":[{m:"e5xd4",e:9.412}],"1#-1366682164":[{m:"Nf3xd4",e:9.412}],"-1#-1847118610":[{m:"Ng8-f6",e:9.412}],"1#376037791":[{m:"Bc1-g5",e:8.571}],"-1#-68028796":[{m:"Bf8-c5",e:8.571},{m:"Bf8-b4",e:8.571}],"1#456225943":[{m:"e2-e3",e:6.667}],"-1#-1516717928":[{m:"h7-h6",e:6.667}],"1#-256180312":[{m:"Bg5-h4",e:5}],"-1#1070504597":[{m:"O-O",e:5}],"1#-1680254996":[{m:"Nd4-f5",e:5}],"-1#-1968458460":[{m:"d7-d5",e:5}],"1#-1438566953":[{m:"Qd1-f3",e:5}],"-1#-1444132740":[{m:"Bc8xf5",e:5}],"1#309484406":[{m:"Qf3xf5",e:5}],"-1#-444998483":[{m:"Bc5-b4",e:5}],"1#435915958":[{m:"Bf1-d3",e:5}],"-1#762257964":[{m:"Qd8-d7",e:5}],"1#-288610464":[{m:"O-O-O",e:5}],"-1#-1197208814":[{m:"Qd7xf5",e:5}],"1#233238642":[{m:"Bd3xf5",e:5}],"-1#-224241527":[{m:"Bb4xc3",e:5}],"1#971373681":[{m:"b2xc3",e:5}],"-1#-41457698":[{m:"Nc6-e7",e:5}],"1#1841979963":[{m:"Bf5-d3",e:5}],"-1#924551491":[{m:"c7-c6",e:5}],"1#1072979205":[{m:"f2-f3",e:5}],"-1#-1443195989":[{m:"Rf8-e8",e:5}],"1#-278600341":[{m:"g2-g4",e:5}],"-1#1066864257":[{m:"Nf6-d7",e:5}],"1#-2129875503":[{m:"Bh4-g3",e:5}],"-1#-60226989":[{m:"Ne7-g6",e:5}],"1#280731433":[{m:"Rh1-e1",e:5}],"-1#1716617115":[{m:"Ng6-e5",e:5}],"1#-1715149800":[{m:"Bd3-e2",e:5}],"-1#519548211":[],"1#-1745442757":[{m:"Qd1-d3",e:5}],"-1#1868718982":[{m:"O-O",e:5}],"1#-881479937":[{m:"Nd4xc6",e:5}],"-1#-509294010":[{m:"b7xc6",e:5}],"1#-435628674":[{m:"Qd3-d4",e:5}],"-1#-1996535672":[{m:"Bb4-e7",e:5}],"1#214924040":[{m:"O-O-O",e:5}],"-1#1520916346":[{m:"c6-c5",e:5}],"1#-768541879":[{m:"Qd4-a4",e:5}],"-1#-2037466281":[{m:"d7-d6",e:5}],"1#-1063416464":[{m:"e2-e4",e:5}],"-1#-2040856051":[{m:"Bc8-d7",e:5}],"1#1453544974":[{m:"Qa4-a5",e:5}],"-1#148648476":[{m:"Nf6xe4",e:5}],"1#659336171":[{m:"Bg5xe7",e:5}],"-1#144477537":[{m:"Qd8xe7",e:5}],"1#-1529799119":[{m:"Nc3xe4",e:5}],"-1#-429125424":[{m:"Qe7xe4",e:5}],"1#1241760643":[{m:"Qa5xc7",e:5}],"-1#678201907":[{m:"Bd7-f5",e:5}],"1#-430920568":[{m:"Bf1-d3",e:5}],"-1#-758906350":[{m:"Qe4-f4+",e:5}],"1#685424463":[{m:"Kc1-b1",e:5}],"-1#-231494799":[{m:"Rf8-c8",e:5}],"1#438768357":[{m:"Qc7-a5",e:5}],"-1#-1083484004":[{m:"Bf5-e6",e:5}],"1#-623564381":[{m:"Qa5-d2",e:5}],"-1#911875075":[{m:"Qf4-f6",e:5}],"1#-2051721233":[{m:"c2-c3",e:5}],"-1#1809250134":[{m:"Ra8-b8",e:5}],"1#904915397":[],"-1#1380056130":[{m:"d7-d5",e:5}],"1#1923841201":[{m:"d2-d3",e:5}],"-1#1567167008":[{m:"Ng8-f6",e:6.667}],"1#-622344367":[{m:"Bf1-g2",e:5}],"-1#-1786598908":[{m:"Bf8-e7",e:6.667}],"1#233851788":[{m:"O-O",e:6.667}],"-1#397257336":[{m:"O-O",e:8}],"1#-1279629567":[{m:"Bc1-g5",e:6.667}],"-1#1579315226":[{m:"d5-d4",e:9.167},{m:"Bc8-e6",e:9.167},{m:"h7-h6",e:9.167}],"1#-764809585":[{m:"Bg5xf6",e:6.667}],"-1#316751874":[{m:"Be7xf6",e:5}],"1#770122191":[{m:"Nc3-e4",e:5}],"-1#1292598941":[{m:"Bf6-e7",e:5}],"1#1267362826":[{m:"c2-c3",e:5}],"-1#-1511412557":[{m:"Bc8-e6",e:7.5}],"1#-560746700":[{m:"Qd1-c2",e:7.5}],"-1#1328236768":[{m:"a7-a5",e:7.5}],"1#1878680807":[{m:"a2-a4",e:6.667}],"-1#-1316336906":[{m:"Ra8-a6",e:6.667}],"1#877948000":[{m:"Ne4-d2",e:6.667}],"-1#889506169":[{m:"f7-f5",e:6.667}],"1#-1553053615":[{m:"Ra1-c1",e:6.667}],"-1#-1058717990":[{m:"Ra6-b6",e:6.667}],"1#257160907":[{m:"Rf1-e1",e:6.667}],"-1#6768547":[{m:"Be7-f6",e:6.667}],"1#115758388":[{m:"e2-e3",e:6.667}],"-1#-1202742981":[{m:"d4xe3",e:6.667}],"1#-442857807":[{m:"Re1xe3",e:6.667}],"-1#-2004517840":[{m:"Be6-f7",e:6.667}],"1#2139310358":[{m:"h2-h4",e:6.667}],"-1#-1006354022":[{m:"Rf8-e8",e:6.667}],"1#-2103822502":[{m:"Rc1-e1",e:6.667}],"-1#-191580542":[{m:"h7-h6",e:6.667}],"1#626553757":[{m:"e2-e4",e:8.889}],"-1#1671363808":[{m:"d5-d4",e:8.75}],"1#-271228299":[{m:"Nc3-e2",e:8.75}],"-1#-1190281030":[{m:"Nf6-d7",e:8.75},{m:"h7-h6",e:8.75}],"1#127296490":[{m:"Bg5-d2",e:8}],"-1#-1222277341":[{m:"Nd7-c5",e:8},{m:"a7-a5",e:8}],"1#778446119":[{m:"b2-b4",e:5}],"-1#1376813284":[{m:"Nc5-d7",e:5}],"1#-883744032":[{m:"b4-b5",e:5}],"1#-1745573084":[{m:"c2-c3",e:7.5}],"-1#2039966621":[{m:"d4xc3",e:7.5},{m:"Nd7-c5",e:7.5}],"1#-522925671":[{m:"c3xd4",e:5}],"1#-332429430":[{m:"Bg5-d2",e:6.667}],"-1#1553752899":[{m:"Qd8-d7",e:6.667},{m:"Qd8-d6",e:6.667}],"1#-1623235057":[{m:"b2-b4",e:5}],"-1#-481705012":[{m:"a7-a6",e:5}],"1#-563799297":[{m:"Qd1-b1",e:5}],"1#427231113":[{m:"Nf3-e1",e:5}],"-1#-64564995":[{m:"Nf6-d7",e:5}],"1#1119712173":[{m:"f2-f4",e:5}],"-1#1056955693":[{m:"f7-f5",e:5}],"1#184563498":[{m:"Bg5xf6",e:5}],"-1#-880240217":[{m:"Be7xf6",e:5}],"1#-191956886":[{m:"e2-e4",e:5}],"-1#-1303873769":[{m:"d5-d4",e:5}],"1#1040443778":[{m:"Nc3-d5",e:5}],"-1#2030001278":[{m:"Bc8-e6",e:5}],"1#59072505":[{m:"Rf1-e1",e:5}],"-1#212987537":[{m:"Rf8-e8",e:5}],"1#1244633169":[{m:"c2-c3",e:5}],"-1#-1538500376":[{m:"d4xc3",e:5}],"1#-271722694":[{m:"Nd5xf6+",e:5}],"-1#990292749":[{m:"Qd8xf6",e:5}],"1#969888380":[{m:"b2xc3",e:5}],"-1#-1459690031":[{m:"Ra8-d8",e:5}],"1#-1203889231":[{m:"Qd1-c2",e:5}],"-1#696712293":[{m:"Rd8-d6",e:5}],"1#363937546":[{m:"Nf3-d2",e:5}],"-1#334346982":[{m:"Re8-d8",e:5}],"1#-1538236624":[{m:"Re1-e3",e:5}],"-1#-1961814844":[{m:"h6-h5",e:5}],"1#-1930622660":[{m:"h2-h4",e:5}],"-1#929694128":[],"-1#1172794526":[{m:"e5xd4",e:7.5}],"1#-291774599":[{m:"Qd1xd4",e:7.5}],"-1#-1794135764":[{m:"Ng8-f6",e:7.5}],"1#310475869":[{m:"g2-g4",
e:6.667}],"-1#-1032677449":[{m:"Nb8-c6",e:5}],"1#2061532395":[{m:"Qd4-e3+",e:5}],"-1#-959274792":[{m:"Bf8-e7",e:5}],"1#1587560784":[{m:"g4-g5",e:5}],"-1#1750157833":[{m:"Nf6-g4",e:5}],"1#1475940798":[{m:"Qe3-e4",e:5}],"-1#805540132":[{m:"Nc6-b4",e:5}],"1#561624512":[{m:"Nc3-d5",e:5}],"-1#1736769596":[{m:"Nb4xd5",e:5}],"1#1357912945":[{m:"Qe4xd5",e:5}],"-1#1708604331":[{m:"d7-d6",e:5}],"1#600051084":[{m:"f2-f4",e:5}],"-1#1602659084":[{m:"c7-c6",e:5}],"1#1466529610":[{m:"Qd5-d4",e:5}],"-1#1965189833":[{m:"h7-h6",e:5}],"1#536882681":[{m:"Qd4xg7",e:5}],"-1#922345049":[{m:"Ke8-d7",e:5}],"1#2018337905":[{m:"Ng1-f3",e:5}],"-1#-2133965416":[{m:"Kd7-c7",e:5}],"1#1623368985":[{m:"Qg7xf7",e:5}],"-1#-364944353":[{m:"h6xg5",e:5}],"1#1350994361":[{m:"f4xg5",e:5}],"-1#-1472145284":[{m:"Rh8-f8",e:5}],"1#1643657737":[{m:"Qf7-b3",e:5}],"-1#846835866":[{m:"Bc8-f5",e:5}],"1#1559776917":[{m:"Rh1-g1",e:5}],"-1#802330917":[{m:"Qd8-d7",e:5}],"1#-328098711":[{m:"Bc1-d2",e:5}],"-1#-1054874868":[{m:"Ra8-e8",e:5}],"1#1828427456":[{m:"h2-h3",e:5}],"-1#1954254878":[{m:"Ng4-e5",e:5}],"1#-161661641":[{m:"Nf3xe5",e:5}],"-1#-692263532":[{m:"d6xe5",e:5}],"1#-706638920":[{m:"O-O-O",e:5}],"-1#-2088130614":[],"-1#1157569630":[{m:"Ng8-f6",e:5}],"1#-1015953105":[{m:"d2-d4",e:5}],"-1#1062232911":[{m:"e5xd4",e:5}],"1#-1809002328":[{m:"Qd1xd4",e:5}],"-1#-273111299":[{m:"Nb8-c6",e:5}],"1#1462390177":[{m:"Qd4-a4",e:5}],"-1#60034495":[{m:"Bf8-b4",e:5}],"1#1871926016":[{m:"Bc1-d2",e:5}],"-1#1123888229":[{m:"d7-d5",e:5}],"1#1645718678":[{m:"a2-a3",e:5}],"-1#1973845839":[{m:"Bb4xc3",e:5}],"1#-1092494409":[{m:"Bd2xc3",e:5}],"-1#-488461488":[{m:"Bc8xh3",e:5}],"1#-887421311":[{m:"g2xh3",e:5}],"-1#-1945355053":[{m:"Nf6-e4",e:5}],"1#-943571472":[{m:"Bf1-g2",e:5}],"-1#-2002300763":[{m:"Ne4xc3",e:5}],"1#36647291":[{m:"b2xc3",e:5}],"-1#1659965287":[{m:"g7-g5",e:5}],"1#-1683373625":[{m:"O-O",e:5}],"-1#-2114707405":[{m:"O-O",e:5}],"1#635694410":[{m:"Qa4-b5",e:5}],"-1#-1613080406":[{m:"Ra8-b8",e:5}],"1#-1042069959":[{m:"Qb5xd5",e:5}],"-1#48121224":[{m:"Qd8-f6",e:5}],"1#-1375582714":[{m:"Qd5-f3",e:5}],"-1#1774386386":[{m:"Qf6xf3",e:5}],"1#-227002453":[{m:"Bg2xf3",e:5}],"-1#589093787":[{m:"Nc6-e5",e:5}],"1#-1609115513":[{m:"Kg1-g2",e:5}],"-1#-434889833":[{m:"b7-b6",e:5}],"1#-1299002235":[{m:"Rf1-d1",e:5}],"-1#-724755499":[{m:"Rf8-d8",e:5}],"1#1437271156":[{m:"h3-h4",e:5}],"-1#-117277059":[{m:"Kg8-f8",e:5}],"1#-395925216":[{m:"Rd1-d4",e:5}],"-1#1705750187":[{m:"b6-b5",e:5}],"1#383902453":[],"1#-93215015":[{m:"Ng1-f3",e:9.865},{m:"e2-e4",e:9.865}],"-1#49448752":[{m:"d7-d5",e:9.667},{m:"Ng8-f6",e:9}],"1#1233774674":[{m:"e2-e4",e:8.75},{m:"d2-d4",e:8.75}],"-1#256861999":[{m:"d5-d4",e:8},{m:"d5xe4",e:8}],"1#-2096825926":[],"1#1273949501":[{m:"Nc3xe4",e:5}],"-1#1950992338":[{m:"Qd8-a5",e:5}],"1#-531724091":[{m:"Bf1-c4",e:5}],"-1#1478993025":[{m:"e7-e6",e:5}],"1#265407828":[{m:"Qd1-e2",e:5}],"-1#-929225464":[{m:"Bf8-e7",e:5}],"1#1357890688":[{m:"O-O",e:5}],"-1#1253188980":[{m:"Ng8-f6",e:5}],"1#-851644411":[{m:"d2-d4",e:5}],"-1#824007269":[{m:"c5xd4",e:5}],"1#52758120":[{m:"Nf3xd4",e:5}],"-1#-127878028":[{m:"O-O",e:5}],"1#1551331597":[{m:"Bc1-g5",e:5}],"-1#-1309710826":[{m:"Qa5-d8",e:5}],"1#635971841":[{m:"Ra1-d1",e:5}],"-1#1061162754":[{m:"Nf6xe4",e:5}],"1#27733810":[{m:"Nd4-c6",e:5}],"-1#-1830494609":[{m:"Ne4-c3",e:5}],"1#1641913524":[{m:"b2xc3",e:5}],"-1#17015464":[{m:"Nb8xc6",e:5}],"1#-289425564":[{m:"Rd1xd8",e:5}],"-1#-1228406026":[{m:"Rf8xd8",e:5}],"1#481979490":[{m:"Bg5xe7",e:5}],"-1#862604008":[{m:"Nc6xe7",e:5}],"1#1128544149":[{m:"Bc4-d3",e:5}],"-1#-1073989124":[{m:"Ne7-d5",e:5}],"1#1518848013":[{m:"Qe2-e4",e:5}],"-1#-799003981":[{m:"Nd5-f6",e:5}],"1#-981173738":[{m:"Qe4-h4",e:5}],"-1#1507205770":[{m:"h7-h6",e:5}],"1#217343418":[{m:"f2-f4",e:5}],"-1#1891027770":[{m:"h6-h5",e:5}],"1#2001393346":[{m:"Rf1-f3",e:5}],"-1#688383850":[],"-1#-1247264206":[{m:"Ng8-f6",e:7.5},{m:"c5xd4",e:7.5}],"1#841389891":[{m:"Bc1-g5",e:6.667}],"-1#-541163432":[{m:"Nf6-e4",e:6.667}],"1#-1804566149":[{m:"Bg5-d2",e:6.667}],"-1#616785330":[{m:"c5xd4",e:5}],"1#385563071":[{m:"Nf3xd4",e:5}],"-1#-306281565":[{m:"Ne4xd2",e:5}],"1#-1031020040":[{m:"Qd1xd2",e:5}],"-1#-1612579719":[{m:"e7-e5",e:5}],"1#-54780755":[{m:"Nd4-b3",e:5}],"-1#1147010763":[{m:"d5-d4",e:5}],"1#-938057634":[{m:"Nc3-e4",e:5}],"-1#-1459994868":[{m:"f7-f5",e:5}],"1#1049673252":[{m:"Ne4-g3",e:5}],"-1#-1834500915":[{m:"Nb8-c6",e:5}],"1#708138897":[{m:"e2-e3",e:5}],"-1#-1801675874":[{m:"d4xe3",e:5}],"1#-917928940":[{m:"Qd2xd8+",e:5}],"-1#-178787115":[{m:"Ke8xd8",e:5}],"1#-535253843":[{m:"f2xe3",e:5}],"-1#-1216128823":[{m:"Bf8-b4+",e:5}],"1#-612104586":[{m:"c2-c3",e:5}],"-1#904382159":[{m:"Bb4-e7",e:5}],"1#-1311247025":[{m:"Bf1-c4",e:5}],"-1#163502347":[{m:"e5-e4",e:5}],"1#-1805706012":[{m:"Nb3-d4",e:5}],"-1#750714498":[{m:"Nc6-e5",e:5}],"1#-1347093090":[{m:"Nd4-e6+",e:5}],"-1#1278455089":[{m:"Bc8xe6",e:5}],"1#279179732":[{m:"Bc4xe6",e:5}],"-1#-674205097":[{m:"g7-g6",e:5}],"1#-832684462":[{m:"Ke1-e2",e:5}],"-1#-1753139586":[{m:"Kd8-c7",e:5}],"1#-652811872":[{m:"Rh1-d1",e:5}],"-1#-963156182":[{m:"Ne5-d3",e:5}],"1#95297837":[],"1#-2020598209":[{m:"Qd1xd4",e:5}],"-1#942469972":[{m:"Ng8-f6",e:5}],"1#-1079892443":[{m:"e2-e4",e:5}],"-1#-110843560":[{m:"Nb8-c6",e:5}],"1#1106657796":[{m:"Bf1-b5",e:5}],"-1#-1278467402":[{m:"Bc8-d7",e:5}],"1#1664382645":[{m:"Bb5xc6",e:5}],"-1#-1768598076":[{m:"Bd7xc6",e:5}],"1#-39774689":[{m:"e4xd5",e:5}],"-1#-1587135113":[{m:"Nf6xd5",e:5}],"1#1536355330":[{m:"Nf3-e5",e:5}],"-1#-551084520":[{m:"Nd5xc3",e:5}],"1#-1081496924":[{m:"Ne5xc6",e:5}],"-1#-1691812309":[{m:"Qd8-d5",e:5}],"1#-725257433":[{m:"Qd4xd5",e:5}],"-1#1443357133":[{m:"Nc3xd5",e:5}],"1#-1321858045":[{m:"Nc6-e5",e:5}],"-1#69173967":[{m:"Nd5-b4",e:5}],"1#1235192099":[{m:"Ke1-d1",e:5}],"-1#525640341":[{m:"f7-f6",e:5}],"1#995288899":[{m:"Bc1-d2",e:5}],"-1#373069862":[{m:"e7-e6",e:5}],"1#1103819251":[{m:"c2-c3",e:5}],"-1#-1347866294":[{m:"Nb4-d5",e:5}],"1#-500614490":[{m:"Ne5-d3",e:5}],"-1#1355213201":[{m:"Ra8-c8",e:5}],"1#-1193907139":[{m:"Rh1-e1",e:5}],"-1#-834892657":[{m:"Ke8-f7",e:5}],"1#1413923503":[{m:"Re1-e4",e:5}],"-1#1551812934":[{m:"Bf8-e7",e:5}],"1#-1005836082":[{m:"c3-c4",e:5}],"-1#-1855118863":[{m:"Nd5-b6",e:5}],"1#-1494562097":[{m:"b2-b3",e:5}],"-1#-1972183692":[{m:"Nb6-d7",e:5}],"1#-1095266136":[],"1#-2055450047":[{m:"d2-d3",e:8.889}],"-1#-1430373168":[{m:"Bc8-g4",e:5}],"1#-1731681579":[{m:"g2-g3",e:5}],"-1#861819612":[{m:"d5-d4",e:5}],"1#-1089090487":[{m:"Nc3-e4",e:5}],"-1#-537292005":[{m:"Nf6xe4",e:5}],"1#-518081749":[{m:"d3xe4",e:5}],"-1#1581734030":[{m:"Bg4xf3",e:5}],"1#267778779":[{m:"e2xf3",e:5}],"-1#-1363999361":[{m:"e7-e5",e:5}],"1#-839981653":[{m:"Bf1-c4",e:5}],"-1#1971833327":[{m:"Nb8-d7",e:5}],"1#-1501881264":[{m:"f3-f4",e:5}],"-1#-1973616477":[{m:"Bf8-c5",e:5}],"1#1788707504":[{m:"Bc1-d2",e:5}],"-1#1207172565":[{m:"Qd8-f6",e:5}],"1#-349176229":[{m:"Qd1-e2",e:5}],"-1#744691207":[{m:"O-O-O",e:5}],"1#-626964028":[{m:"O-O-O",e:5}],"-1#-1932958282":[{m:"Rh8-e8",e:5}],"1#1940553140":[{m:"Rh1-e1",e:5}],"-1#88120582":[{m:"e5xf4",e:5}],"1#-1604294583":[{m:"g3xf4",e:5}],"-1#571898182":[{m:"g7-g6",e:5}],"1#999830851":[{m:"Qe2-d3",e:5}],"-1#1946524181":[{m:"Kc8-b8",e:5}],"1#-1261513865":[{m:"e4-e5",e:5}],"-1#326985496":[{m:"Qf6-g7",e:5}],"1#1381384167":[{m:"Qd3-b3",e:5}],"-1#-1371862237":[{m:"f7-f6",e:5}],"1#-1975693579":[{m:"Bc4-f7",e:5}],"-1#-1922763535":[{m:"Re8-e7",e:5}],"1#-1150573283":[{m:"e5-e6",e:5}],"-1#-1998856232":[{m:"Bc5-d6",e:5}],"1#-708149397":[{m:"c2-c3",e:5}],"-1#1000980434":[],"-1#-1128846940":[{m:"d5xe4",e:9.895},{m:"d5-d4",e:9.895}],"1#-132734026":[{m:"Nc3xe4",e:9.737}],"-1#-944666279":[{m:"Ng8-f6",e:9.737},{m:"e7-e5",e:9.737},{m:"Nb8-d7",e:9.737}],"1#1077894184":[{m:"Ne4xf6+",e:8.333}],"-1#-224602284":[{m:"g7xf6",e:8}],"1#-77100936":[],"1#-1528010355":[{m:"Bf1-c4",e:8.571},{m:"Ng1-f3",e:8.571}],"-1#478496201":[{m:"Nb8-c6",e:8.333}],"1#-1541951851":[{m:"d2-d3",e:8}],"-1#-1948925948":[{m:"Bf8-e7",e:6.667}],"1#329720204":[{m:"Ng1-f3",e:6.667}],"-1#-349962139":[{m:"Ng8-f6",e:7.5}],"1#1823134996":[{m:"h2-h3",e:7.5}],"-1#1948963786":[{m:"Nf6xe4",e:5}],"1#1255011322":[{m:"d3xe4",e:5}],"-1#-174843809":[{m:"Qd8xd1+",e:5}],"1#211198335":[{m:"Ke1xd1",e:5}],"-1#1783192951":[{m:"Be7-c5",e:5}],"1#1656664667":[{m:"c2-c3",e:5}],"-1#-1931644190":[{m:"Bc5xf2",e:5}],"1#-1490791292":[{m:"Rh1-f1",e:5}],"-1#-1363179031":[{m:"Bf2-b6",e:5}],"1#-1841442692":[{m:"b2-b4",e:5}],"-1#-297044545":[{m:"f7-f6",e:5}],"1#-900910999":[{m:"Nf3-h4",e:5}],"-1#2097213052":[{m:"Nc6-e7",e:5}],"1#-313660519":[{m:"Kd1-c2",e:5}],"-1#1550796900":[{m:"Ng8-f6",e:5}],"1#-605971179":[{m:"Ne4xf6+",e:5}],"-1#1765938793":[{m:"Qd8xf6",e:5}],"1#1804332824":[{m:"Qd1-e2",e:5}],"-1#-1396242620":[{m:"Nb8-c6",e:5}],"1#341175320":[{m:"d2-d4",e:5}],"-1#-395032968":[{m:"Bc8-g4",e:5}],"1#-637347715":[{m:"d4xe5",e:5}],"-1#-1599986384":[{m:"Qf6-f5",e:5}],"1#919268335":[{m:"Bc1-d2",e:5}],"-1#463770762":[{m:"Bg4xf3",e:5}],"1#1242969823":[{m:"Qe2xf3",e:5}],"-1#2072069831":[{m:"Qf5xf3",e:5}],"1#102158294":[{m:"g2xf3",e:5}],"-1#-1074813141":[{m:"Nc6xe5",e:5}],"1#1888175668":[{m:"O-O-O",e:5}],"-1#652438086":[{m:"O-O-O",e:5}],"1#-803129979":[{m:"Bf1-h3+",e:5}],"-1#-1677270271":[{m:"Kc8-b8",e:5}],"1#1556982371":[{m:"f3-f4",e:5}],"1#340614374":[{m:"Bf1-c4",e:9.231},{m:"d2-d4",e:9.231}],"-1#-1406898014":[{m:"Ng8-f6",e:7.5}],"1#732603859":[{m:"Ne4xf6+",e:5}],"-1#-1727451473":[{m:"Nd7xf6",e:5}],"1#1017138690":[{m:"Ng1-f3",e:5}],"-1#-1004310549":[{m:"e7-e6",e:5}],"1#-1814755778":[{m:"Qd1-e2",e:5}],"-1#1419374178":[{m:"c7-c5",e:5}],"1#534937856":[{m:"a2-a4",e:5}],"-1#-1047351535":[{m:"Bf8-e7",e:5}],"1#1507872409":[{m:"Nf3-e5",e:5}],"-1#-581583741":[{m:"O-O",e:5}],"1#2034397690":[{m:"O-O",e:5}],"-1#1663012878":[{m:"Qd8-d4",e:5}],"1#-1669615971":[{m:"Rf1-e1",e:5}],"-1#-1823531019":[{m:"Be7-d6",e:5}],"1#-1225990947":[{m:"Ne5-f3",e:5}],"-1#844705479":[{m:"Qd4-g4",e:5}],"1#-1129428241":[{m:"h2-h3",e:5}],"-1#-1540469711":[{m:"Qg4-h5",e:5}],"1#-1246148518":[{m:"Nf3-e5",e:5}],"-1#-395512186":[{m:"Ng8-f6",e:9}],"1#1877091319":[{m:"Ne4xf6+",e:9}],"-1#-582899573":[{m:"Nd7xf6",e:8.571}],"1#2028521510":[{m:"Ng1-f3",e:8.571}],"-1#-2140411441":[{m:"Bc8-g4",e:8.571},{m:"Bc8-f5",e:8.571}],"1#-1306691638":[],"1#-286648384":[{m:"c2-c3",e:8.333}],"-1#9033593":[{m:"e7-e6",e:8.333}],"1#1467989676":[{m:"Nf3-e5",e:8.333}],"-1#-741716810":[{m:"Bf8-e7",e:8.333}],"1#1270394174":[{m:"Qd1-b3",e:8.333}],"-1#1057283824":[{m:"Qd8-c8",e:8.333}],"1#-101707846":[{m:"Bf1-e2",e:8.333}],"1#821868337":[{m:"Nc3-e2",e:9.655}],"-1#1713640958":[{m:"c7-c5",e:9.655},{m:"e7-e5",e:9.655}],"1#761232028":[{m:"Ne2-g3",e:9.091},{m:"f2-f4",e:9.091}],"-1#-1218673176":[{m:"Nb8-c6",e:8.889}],"1#265186996":[{m:"Ng1-f3",e:8.75},{m:"Bf1-c4",e:8.75}],"-1#-145928355":[{m:"a7-a6",e:8.333},{m:"g7-g6",e:8.333}],"1#-899574162":[{m:"a2-a4",e:6.667}],"-1#336705663":[{m:"h7-h5",e:5}],"1#915041792":[{m:"h2-h4",e:5}],"-1#-1928501620":[{m:"Ng8-f6",e:5}],"1#176403453":[{m:"d2-d3",e:5}],"-1#625073516":[{m:"e7-e5",e:5}],"1#-289209512":[{m:"Bf1-b5",e:6.667}],"-1#486106090":[{m:"Qd8-b6",e:5}],"1#-2038718568":[{m:"a2-a4",e:5}],"-1#1477161353":[{m:"Bf8-g7",e:5}],"1#1445106107":[{m:"O-O",e:5}],"-1#1283420239":[{m:"e7-e5",e:5}],"-1#-1213775120":[{m:"Ng8-f6",e:6.667}],"1#808032129":[{m:"d2-d3",e:5}],"-1#535558416":[{m:"h7-h5",e:5}],"1#1030762351":[{m:"h2-h4",e:5}],"-1#-2030622749":[{m:"Bc8-g4",e:5}],"1#-1266566682":[{m:"Ng1-e2",e:5}],"-1#726619161":[{m:"b7-b5",e:5}],"1#2093368290":[{m:"Bc4-b3",e:5}],"-1#-1238898961":[{m:"g7-g6",e:5}],"1#-1347835158":[{m:"a2-a4",e:5}],"-1#1910080763":[{m:"a7-a6",e:5}],"1#1291148744":[{m:"Bc1-g5",e:5}],"-1#-1586672941":[{m:"Bf8-g7",e:5}],"-1#1360909340":[{m:"Nb8-c6",e:8.333}],"1#-376488128":[{m:"Ng1-f3",e:8}],"-1#286006953":[{m:"Ng8-f6",e:7.5}],"1#-1769813032":[{m:"d2-d3",e:7.5}],"-1#-1186945719":[{m:"Bc8-g4",e:7.5},{m:"g7-g6",e:7.5}],"1#-1959380148":[{m:"Ne2-g1",e:6.667}],"-1#-1972243045":[{m:"e7-e5",e:6.667}],"1#-382986929":[{m:"h2-h3",e:6.667}],"-1#-240381039":[{m:"Bg4xf3",e:6.667}],"1#-1608601148":[{m:"Ng1xf3",e:6.667}],"-1#1067195942":[{m:"e5xf4",e:6.667}],"1#403206628":[{m:"Bc1xf4",e:6.667}],"-1#1096090717":[{m:"Bf8-d6",e:6.667}],"1#-1933465014":[{m:"Qd1-d2",e:6.667},{m:"g2-g3",e:6.667}],"-1#-51581523":[{m:"Qd8-c7",e:5}],"-1#660036163":[{m:"O-O",e:5}],"1#-1597052596":[{m:"h2-h3",e:5}],"-1#-1202786414":[{m:"Bf8-g7",e:5}],"1#-1234710624":[{m:"g2-g4",e:5}],"-1#1720984650":[{m:"c5-c4",e:5}],"1#2048134870":[{m:"Bf1-g2",e:5}],"-1#896623491":[{m:"c4xd3",e:5}],"1#-991123000":[{m:"c2xd3",e:5}],"-1#2129932403":[{m:"h7-h5",e:5}],"1#1550837260":[{m:"g4-g5",e:5}],"-1#1788800341":[{m:"Nf6-d7",e:5}],"1#-737849851":[{m:"O-O",e:5}],"-1#-833048591":[{m:"Nd7-c5",e:5}],"1#1461390837":[{m:"b2-b3",e:5}],"1#91878698":[{m:"Ng1-f3",e:9.375},{m:"d2-d3",e:9.375}],"-1#-33893181":[{m:"Bf8-d6",e:7.5}],"1#812546772":[{m:"Ne2-g3",e:6.667}],"-1#-1435662944":[{m:"Ng8-f6",e:6.667}],"1#769872081":[{m:"Bf1-c4",e:6.667}],"-1#-1786086251":[{m:"O-O",e:6.667}],"1#832418284":[{m:"O-O",e:6.667}],"-1#734023704":[{m:"c7-c5",e:6.667}],"1#1622884218":[{m:"d2-d3",e:6.667}],"-1#1333350891":[{m:"Nb8-c6",e:6.667}],"1#-135546185":[{m:"a2-a4",e:6.667}],"-1#698061990":[{m:"Bc8-e6",e:6.667}],"1#1390516001":[{m:"Bc4xe6",e:5}],"-1#-1785588574":[{m:"f7xe6",e:5}],"1#644233824":[{m:"Nf3-d2",e:5}],"-1#540721036":[{m:"Nc6-e7",e:5}],"1#-1334330775":[{m:"Nd2-c4",e:5}],"-1#-1597391646":[{m:"Ne7-g6",e:5}],"1#1276846488":[{m:"Ng3-h5",e:5}],"-1#553242848":[{m:"Bd6-c7",e:5}],"1#-1138186745":[{m:"g2-g3",e:5}],"-1#398349838":[{m:"Kg8-h8",e:5}],"1#-866692679":[{m:"Nh5xf6",e:5}],"-1#-1105122988":[{m:"g7xf6",e:5}],"1#-1210419592":[{m:"Bc1-h6",e:5}],"-1#862175388":[{m:"Rf8-f7",e:5}],"1#373724451":[{m:"f2-f4",e:5}],"-1#1778662307":[{m:"e5xf4",e:5}],"1#1301304417":[{m:"g3xf4",e:5}],"-1#-806992530":[{m:"f6-f5",e:5}],"1#1781876554":[{m:"e4-e5",e:5}],"-1#-1144120355":[{m:"Qd8-d7",e:5}],"-1#716938171":[{m:"g7-g6",e:8.571}],"1#859166654":[{m:"g2-g3",e:5}],"-1#-1734137929":[{m:"Bf8-g7",e:5}],"1#-1769339003":[{m:"Bf1-g2",e:5}],"-1#-638620976":[{m:"Ng8-e7",e:5}],"1#807730520":[{m:"f2-f4",e:5}],"-1#1281774552":[{m:"c7-c5",e:5}],"1#119356602":[{m:"Ng1-h3",e:5}],"-1#-98245094":[{m:"Nb8-c6",e:5}],"1#1119227206":[{m:"Nh3-f2",e:5}],"-1#-424750832":[{m:"O-O",e:5}],"1#1119427689":[{m:"h2-h4",e:5}],"-1#-113371931":[{m:"h7-h5",e:5}],"1#-609893734":[{m:"O-O",e:5}],"-1#-1040702610":[{m:"Bc8-e6",e:5}],"1#-1165877015":[{m:"f4xe5",e:5}],"-1#-126961174":[{m:"Nc6xe5",e:5}],"1#1917493164":[{m:"Ne2-f4",e:5}],"-1#91762157":[{m:"Be6-d7",e:5}],"1#-557844770":[{m:"c2-c4",e:5}],"-1#368620527":[{m:"Bd7-g4",e:5}],"1#-2026637986":[{m:"Qd1-c2",e:5}],"-1#378213002":[{m:"Qd8-d6",e:5}],"1#1398830656":[{m:"Kg1-h1",e:5}],"-1#-1728538364":[{m:"Bg7-h6",e:5}],"1#-1697381037":[{m:"Bc1-d2",e:5}],"-1#-1212515786":[{m:"Kg8-g7",e:5}],"1#-2136220644":[{m:"a2-a3",e:5}],"-1#-1759899707":[{m:"a7-a5",e:5}],"1#-1211423806":[{m:"b2-b3",e:5}],"1#-1847572152":[{m:"Ng1-f3",e:9.818}],"-1#1768122529":[{m:"Nb8-c6",e:9.667},{m:"d7-d5",e:9.667}],"1#-772701187":[{m:"g2-g3",e:9.474}],"-1#2053600244":[{m:"g7-g6",e:8}],"1#1676230641":[{m:"Bf1-g2",e:8}],"-1#747393700":[{m:"Bf8-g7",e:5}],"1#581268118":[{m:"O-O",e:5}],"-1#955814754":[{m:"e7-e5",e:5}],"1#1537569718":[{m:"d2-d3",e:5}],"-1#1952914727":[],"-1#769758273":[{m:"b7-b5",e:10},{m:"c7-c5",e:10},{m:"c7-c6",e:10},{m:"g7-g6",e:10},{m:"e7-e5",e:10},{m:"e7-e6",e:10},{m:"b7-b6",e:10},{m:"Nb8-c6",e:10},{m:"d7-d6",e:10},{m:"d7-d5",e:10},{m:"Ng8-f6",e:10}],"1#2053669818":[{m:"e2-e4",e:9.756}],"-1#-2042025510":[{m:"Bc8-b7",e:9.706}],"1#495197310":[{m:"Nb1-d2",e:9.643},{m:"Bf1xb5",e:9.643},{m:"Bf1-d3",e:9.643}],"-1#-846931165":[{m:"a7-a6",e:9.091},{m:"Ng8-f6",e:9.091}],"1#-257424880":[{m:"Ng1-f3",e:8.889}],"-1#137044985":[{m:"e7-e6",e:8.75},{m:"Ng8-f6",e:8.75}],"1#1608337964":[{m:"Bf1-d3",e:8.75}],"-1#1800004790":[{m:"c7-c5",e:8.75}],"1#540183508":[{m:"d4xc5",e:8.571},{m:"c2-c3",e:8.571}],"-1#518043749":[{m:"Bf8xc5",e:6.667}],"1#-1420795299":[{m:"O-O",e:6.667}],"-1#-1324514391":[{m:"Ng8-e7",e:6.667},{m:"Nb8-c6",e:6.667}],"1#1489376289":[{m:"a2-a4",e:5}],"1#161442037":[{m:"Nd2-b3",e:5}],"-1#-833533075":[{m:"d7-d6",e:8}],"1#-2008908470":[{m:"O-O",e:7.5}],"-1#-1843422018":[{m:"Nb8-d7",e:7.5}],"1#1105414401":[{m:"Rf1-e1",e:6.667},{m:"a2-a4",e:6.667}],"-1#1322776681":[{m:"Bf8-e7",e:5}],"-1#-1617729776":[{m:"c5-c4",e:5}],"1#-1884948856":[{m:"Bf1-d3",e:5}],"-1#-1154394094":[{m:"e7-e6",e:5}],"1#-322489913":[{m:"O-O",e:5}],"-1#-157626317":[{m:"c7-c5",e:5}],"1#-1109278895":[{m:"c2-c3",e:5}],"-1#1401061352":[{m:"Bf8-e7",e:6.667}],"1#-873423264":[{m:"d4xc5",e:5}],"-1#-182276655":[{m:"Be7xc5",e:5}],"1#-1465574698":[{m:"e4-e5",e:5}],"-1#2036221505":[{m:"Nf6-d5",e:5}],"1#-997768205":[{m:"Nd2-e4",e:5}],"-1#-975706390":[{m:"Bc5-e7",e:5}],"1#-853538362":[{m:"a2-a4",e:5}],"-1#324020183":[{m:"Nb8-c6",e:5}],"1#-1413297013":[{m:"Ne4-d6+",e:5}],"-1#-116078007":[{m:"Be7xd6",e:5}],"1#-1962040825":[{m:"e5xd6",e:5}],"-1#1433780025":[{m:"Qd8-b8",e:5}],"1#1242173010":[{m:"e4-e5",e:6.667},{m:"c2-c4",e:6.667}],"-1#-1678683451":[{m:"Nf6-d5",e:5}],"1#640178039":[{m:"Ng1-f3",e:5}],"-1#-559188322":[{m:"a7-a6",e:5}],"1#-477646931":[{m:"a2-a4",e:5}],"-1#1039630780":[{m:"b5-b4",e:5}],"1#-1531269860":[{m:"Bf1-d3",e:5}],"-1#-1876032634":[{m:"e7-e6",e:5}],"1#-942118317":[{m:"Nd2-e4",e:5}],"-1#-964112566":[{m:"Bf8-e7",e:5}],"1#1593454274":[{m:"Nf3-g5",e:5}],"-1#-2125640861":[{m:"c7-c6",e:5}],"1#-1985831131":[{m:"c4xb5",e:5}],"-1#-2010135427":[{m:"c6xb5",e:5}],"1#-1323691077":[{m:"Nb1-d2",e:7.5}],"-1#-2054243039":[{m:"e7-e6",e:8},{m:"Qd8-b6",e:8},{m:"Nb8-c6",e:8}],"1#-763833100":[{m:"Ng1-f3",e:5}],"-1#721155357":[{m:"a7-a6",e:5}],"1#399977518":[{m:"O-O",e:5}],"-1#227200474":[{m:"Bf8-e7",e:5}],"1#520896851":[{m:"Ng1-f3",e:6.667}],"-1#-410033990":[{m:"e7-e6",e:6.667}],"1#-1334245009":[{m:"O-O",e:6.667},{m:"Qd1-e2",e:6.667}],"1#1025267325":[{m:"Ng1-e2",e:5}],"-1#-1563247742":[{m:"Qd8-b6",e:5}],"1#944785392":[{m:"O-O",e:5}],"-1#571319812":[{m:"Nc6xd4",e:5}],"1#74382163":[{m:"Ne2xd4",e:5}],"-1#-1281455966":[{m:"Bb7xe4",e:8.333}],"1#