use crate::{ByColor, ByPiece, BySquare, Color, File, Piece, Square};
#[derive(Copy, Clone, Debug, Default, PartialEq, Eq)]
pub(crate) struct Zobrist(u64);
impl Zobrist {
#[inline]
pub fn new() -> Self {
Self::default()
}
#[inline]
pub fn toggle_side_to_move(&mut self) {
self.0 ^= SIDE_TO_MOVE;
}
#[inline]
pub fn toggle_castling(&mut self, color: Color, file: File) {
self.0 ^= CASTLING[color][file as usize];
}
#[inline]
pub fn toggle_en_passant(&mut self, square: Square) {
self.0 ^= EN_PASSANT[square];
}
#[inline]
pub fn toggle_piece(&mut self, color: Color, piece_: Piece, square: Square) {
self.0 ^= PIECES[color][piece_][square];
}
#[inline]
pub fn get(self) -> u64 {
self.0
}
}
const SIDE_TO_MOVE: u64 = 0x2c90c18bb6e3acb8;
const CASTLING: ByColor<[u64; 8]> = ByColor {
white: [
0x08a4ac1eb784db07,
0x6400ab3ced373473,
0x671f9f77519f0bb7,
0x421773c058659e9f,
0xdbeaa2befc7dd52e,
0x785081eae72e023e,
0x42e650a91e3f8206,
0x436d0b0df536789c,
],
black: [
0x775bc827e5e04b4e,
0x4c1c818a3e9e406c,
0x18595a9fa8f3c659,
0x55cf4a936e22da3b,
0xbad54b1e9ed31e84,
0xf6805758ce646cf1,
0xbe4a878216c7b06b,
0x2b83c9cf93e646b7,
],
};
const EN_PASSANT: BySquare<u64> = BySquare::from_array([
0x6cec2479ff68b486,
0x9d48e8e768749581,
0xf1ea7c9a0eb63e0a,
0xd45a0e1196078305,
0x72e20003b0920322,
0x56dc907851fa7389,
0x7a9030722c36daa8,
0x45d74588abc60af0,
0x0440c5afa7327ca6,
0x1d32774d143fc014,
0xf55699b579a976df,
0x7a11d53e51799d38,
0x76ef12d495683410,
0x58b0864201acab23,
0x2c7a30190c9b680c,
0xfb38c2b94eac4dde,
0x0c7d44aafffafd3c,
0xbe77e3c57876603d,
0x43359981aef158b6,
0x96c5843821d3774c,
0xd9d1074386c6a4f6,
0x7d6d4fcc3a677594,
0xd63db44f0536922f,
0x17ea6bc65db7905f,
0x9a7b9e866117b563,
0x36332adf43856428,
0x09d3c078cb63a5dd,
0xc3481ff8fb11e051,
0x7eb06e0b00e100b2,
0xadef90003410e418,
0x844f7c3454f36978,
0xc95c679963e554be,
0x808df81d084b1ac5,
0x57f22725402af657,
0xfe34b108bb15c936,
0xa83de0426d879a7a,
0x17cd23fcf7c87ae5,
0x08a5762c4ad27344,
0xc01f682206a0b78f,
0x8c886b28fd486479,
0xefd6604dd74ef331,
0x9395b7be1b7b2af6,
0x390ab1259fa4f61e,
0xd5cb423da5bd788d,
0x8a9749924de67571,
0x94415248777631b0,
0xb5a52046e43f5228,
0x5e24f5e31e61299f,
0xcb2e6039f2ef5cf6,
0x336db2090760ddf6,
0x4ece5db4706a2827,
0x937f617bb5a4fff5,
0x130a2f3777526afa,
0xef10ead3b3906625,
0x336a5b817c003298,
0x3e30b85fba011078,
0xf40ef9e6a4286729,
0xedce3d190b22c475,
0x79097dc467f072f6,
0x3127a443db1300a6,
0xada8426cd88a2f90,
0xd3f1a53940fa8074,
0x5614d401c0506809,
0x71b2b47238c910fd,
]);
const PIECES: ByColor<ByPiece<BySquare<u64>>> = ByColor {
white: ByPiece {
pawn: BySquare::from_array([
0xc9b1f555d6879c5c,
0x165104da3ae1d71e,
0xc80206e997c0ba17,
0xbe617ba447413142,
0xc5859897e0c86573,
0xd0e05cc8cbd39233,
0x98e1842abb5e0aad,
0x9ffe74b1fee7bfc6,
0x02aae3c5834112eb,
0x57b97b2a1383f1f4,
0x5b4b51b5c3501a73,
0x7bfcfb51acd527be,
0x576a3a1f311d4ed0,
0xf6b2cd267b6b317a,
0x63e2ea7c3b0620a8,
0x4b05e94a37501822,
0x4facc615a4c9c599,
0x18f5b9a48a169565,
0x2ecd8929ff60a298,
0xeb3b8a4879100d3b,
0xfe2c4df16d940f0c,
0xac3ee0dab412785e,
0xeb37028d2844f187,
0x78eaf7e56fade42d,
0x75d81389b6b49b59,
0xb10033eff7d74587,
0xcc7087f06f9c6e5a,
0xd675d5af606fadfd,
0xf252088a0cac437c,
0xf29dfeaa439b5d68,
0x70deabea37f71cfa,
0x39ef138de4db249f,
0x152f02a5af9145c7,
0xf7451dcb6d1e546f,
0xefc184dfa418979b,
0x3e7c1ca6701f87f6,
0xc62e7fbebc21bf98,
0xd1d342df69016d6f,
0x40ac46922cd5be70,
0x825e8abff8a4d449,
0x3f7d4a4c3cffdf8d,
0x1f361f3e1bdd05e4,
0xdd3c012dd3a7ca0d,
0x0278fe322e54c666,
0x5c2a34b21a9bc74e,
0x02527c0e4cfad22a,
0x5379ed80fc48e2d8,
0x04dac555c279a059,
0x771f3e429e827124,
0x1e737cca15fe2b23,
0x05c65aa0a1b5c73c,
0xf928226ef70732d9,
0x9420ae38e285371b,
0x842ab990cfe7ffa5,
0xfc8fa839d6c78a4a,
0x8d2f0108f399ff1a,
0x54ae1d31f12a3a9a,
0x6c8fe38d1e2b7c01,
0x0f6e8c62591a54b7,
0x06e058cc6973b404,
0x6163dc6743e6f143,
0x3b24d873bf33196b,
0x324624bef1e86644,
0xd964c1d2a2257447,
]),
knight: BySquare::from_array([
0xd771df546b107981,
0x28dbe4925155cfb1,
0xe98f1da7dd185217,
0x450c2b8655b83d6d,
0xdb7618e930c938d8,
0x338a2eea9e7de1d5,
0xcd969ff127fcd06d,
0x483cd9f2988ed921,
0x1c454353907240b6,
0x8de24df982fb8812,
0x47a9f591a20741b5,
0x4719079e91fa93a9,
0x928004e2ea3c1c57,
0xf9944e0e7b7bd2cd,
0x5b6e0b89cee7a7e7,
0x06b0848520e9c853,
0x07598d032dc3f470,
0xbf7b0b2896e511ca,
0xacdaa52a1a006371,
0x4695dc5c6bdb77d2,
0x6ee68b67940668a9,
0x3b137133efb8e178,
0x0a0725c45b50cdcd,
0xf8f05bf6ad87227c,
0x03044ec666d5f675,
0x3f740c1b5e9947ac,
0x69923be4fc0631b4,
0x9c0a42a980293a8c,
0xbd27e0bf9b5b33ae,
0x8ec90afe5c89120e,
0x17cdfc446f995b6b,
0x3a5a689f1fec762b,
0x05b504880c412422,
0xa0f519356b4fc3ca,
0x308ffe553025c4d7,
0xb285fa10025e04bb,
0x6eb83da2396d2086,
0x6a4eefa3342ec6e7,
0xa2ce496d28cc7e08,
0x0390b8786e1ceb2e,
0x1c0fec4fb2594804,
0x2cfd28d17a6a916d,
0x0be66255637bfa8c,
0xb0a701bafd7f5475,
0xa927b13d06f7d513,
0x37c1c20139de040f,
0x468976a0bc836372,
0xefea3c24ca5c6196,
0xe64d2ca0f46987d8,
0x36d6fc5417890154,
0xa0cb00a08f7161c3,
0xa15bb86898e8b2b1,
0xfe774edfe6e40972,
0x5a79da96e315241c,
0x02d0bd549870270e,
0xe23c6fd047432134,
0x2616ec2f521c6f00,
0xe8ae36f62263028e,
0xc4937c69794f9006,
0x921b1fdd715b5425,
0x8c581ebef5dfddf2,
0xcd2530782a2e0105,
0x0fe7ec521ec9c47d,
0x2041ba568cca9c56,
]),
bishop: BySquare::from_array([
0x0f6d2b31646ef91e,
0x6b896281567bb702,
0xf0ed15386bc6067a,
0x2e3d2c563d563ea5,
0xe02cacf38b52ed08,
0xfeb645f9899e1e1b,
0xfdc418de2e097259,
0x014d72e7425e7938,
0x87dbd130957a7721,
0xfd18e8ef3e279696,
0x0a5a509aeb5d85e0,
0x2cf5a89caf2efdb4,
0xae4a2b34ad38df57,
0xe6f5ec53725c845a,
0xddd5d8b5bc11c095,
0x24bf3d6af439816c,
0x3d9ebc9b9d6c41e1,
0xf4106dc508009266,
0x0254b6e67c6c087d,
0x915ec7eca2bd2b7d,
0x0cee95bc3f50e4c4,
0xc5cdb1a54cd85801,
0xa8b8a888bfd9ebf0,
0x620be7d783281a65,
0x47274611cf368661,
0xc486e041517ec63e,
0x69a58a2809195b09,
0x4bacbc54c7382b54,
0x231249b2f4a5317f,
0xbe476297a306c269,
0xaba324d9ab6b7611,
0xfe4462006ba93d83,
0xd4ce20104de33635,
0x3561ff43a79964d0,
0x811d3f0683a51421,
0x7c92c590d51afd67,
0xc8863e02f5e3e556,
0xfb9a0952df17df4d,
0x91b2a885c2739be9,
0xced416cebdb17390,
0x5f638743c077b45c,
0x7e34a311f95a7559,
0xfa61b29cadbe2ed8,
0x39ac57c608d46db7,
0x7b24cb886edb9362,
0xac8566bf59cb61bc,
0x7d38dc22061a986f,
0x304898d5c8af29fc,
0x7a760b51a031ce94,
0x7370cdb5ca5734bd,
0xf52f9ca4dd94776a,
0x5150f227f9adf58a,
0xb7a5395520bbc4b0,
0x5e2fcec4e1cbe523,
0x9206849cf06cfdb5,
0x056b1975c1e06f5e,
0xaa240b927458598e,
0x149e876836174e97,
0x3008ee9d541eb33d,
0xc5c45e1931c3646a,
0xbb9b1f7614c80f6f,
0xd23848cfa588940c,
0x446c1283a0180d52,
0xda23eed9094a7639,
]),
rook: BySquare::from_array([
0xd3596ffaf228c176,
0xbef777da4d3b8414,
0xaa744de90242a1c9,
0xdefe0cdadd2a152f,
0x47597cb9437c408a,
0x761969303f8e8caf,
0xef9c233c146efad9,
0x7fa7d905b6885cc5,
0x926346438a42440d,
0x78527a249599a331,
0xf71df20f7fe7c2c7,
0x3992ce4b6cf6a738,
0x2690694e48478b82,
0xb35b50811cc5043f,
0xdb285fb9375b5e1a,
0xfc27c9e13f060701,
0xc1f4696695f2158c,
0x11ef07ddbec4aeaa,
0x5e6e7aebce15835b,
0xb288211ac102b7ea,
0xb4465c124b25c399,
0x5600546420a48215,
0x94f35a8c718ccc3e,
0x51a222142995a7ea,
0x1187a82c23da9ed5,
0x50ecba6fcd151792,
0x77e544f5906f8d0a,
0x9150d898862024a4,
0xe2a423e31ef1bbb7,
0x2de5729b73ce679b,
0xf4d73475ec0f2c7c,
0xd6ef701b35d5f2b4,
0x68dc9f6a90df58e1,
0x57dd4a8bd954e111,
0xadb1877cd19bf3f6,
0xd43875787274cedd,
0xbca99575c4d70aca,
0x2b941dfa67ff0564,
0x8b12a71946f66e22,
0x7c1579b4da5aa07b,
0x4da2292dcc2766a8,
0xb28c9226590550aa,
0xb816547f628c82f1,
0xe951d029709fb48e,
0xc5953604a467ffac,
0x89a4b5581e82c0a8,
0x2d7500c3e2167d71,
0xdfa1485dacd65c8d,
0xd2bf944fb5637d42,
0x5031bc2b37729084,
0xf8664ec3ae4a4232,
0xfe8deda8da134501,
0xeca767aca79ce9ce,
0x774fbf8c228d4371,
0x4988c8cae86d2b3e,
0xfcb56dbd61881d86,
0xaf40daf1bdba985d,
0x0f2c8a8ba9da0006,
0x94ca34522d0e1668,
0x2d08cf76264d91b2,
0x820368cf5126f861,
0x8d9cbcc266d2ef4d,
0xc6c27ee7a3df13be,
0x1473b4b033eeddeb,
]),
queen: BySquare::from_array([
0x7d270ee27fbf1749,
0x2cb7d4b9e881d472,
0x906f1216326fcae0,
0xb648d223e69dac09,
0xb4ee49b984c5a687,
0xd916ae5fe6a0db65,
0x3dc1ec2a0eef7ec5,
0xdbbb25bf5079133e,
0xec07a2d11eaeff93,
0xaf291a7dc7add496,
0x58fbf0fa42e67a88,
0x01ee97c52d9cf188,
0x9e1fd9f8f6f4d82d,
0xe91a2f0573fe13d3,
0xbe227d25c830e3a8,
0x82cb98316ac3229d,
0xf738d5772422142c,
0x259a73e99fac3ab1,
0xda1c642514087da3,
0x6e0f1c73bb5ddb00,
0xecb8a482fafe125a,
0x5dd02394713bf551,
0x96ad91003617ad89,
0x96e8b436505d0003,
0xe5940338c5ff9ce2,
0xacc07588faf1855c,
0xa052baa1b0c4d051,
0x3fa1cfc761a8947d,
0x8196edb304520a16,
0x6596750c2324b36b,
0xe843ebb42265f828,
0x3fe86a0049974929,
0x02e302051611032d,
0x221ab0805fe0e994,
0x3858da84b89d823f,
0xcae8c3389252af1b,
0x81263d829bca0cd2,
0x4bcbd5a2f620db92,
0xb4314f7d4eac5af4,
0x2781b78bf9e05d9d,
0x85b9af160e781519,
0x736df97fb8847d9a,
0x512b4e5021fda1bf,
0x94a940896bf9f2a2,
0x72ad1a6f3c7b9623,
0x0c85c26832c63f38,
0x703de2d1a43505c3,
0x844ddd9996128e3b,
0xacccd6e373d8f3c4,
0x6f37f64f6fa0efbb,
0xfa1d79bfee034fb2,
0x5f67912446738c07,
0x35797ef01ede0d42,
0xe85c9d0f1000277b,
0x8878dd97d9ef290d,
0x3eec6dd1cf5c1b1b,
0x9febb86055369335,
0x6d043b3fa350ea87,
0xe794cc96138ac4a2,
0x232cc59a11736418,
0xca26c81d1df640ce,
0x0292ff39f924bd6f,
0xb6f90ebfe352ea31,
0x9ff6eb7873f596ab,
]),
king: BySquare::from_array([
0x3e0d3e5ebf0eccd3,
0xcab47fff3d5d2b63,
0x98e5ef200893ad28,
0xd59117d0aa4b9840,
0xe1e412a3b1f4f3b6,
0x79cd732da09025f2,
0xebacd7784e297004,
0x61e01a36afc87612,
0x20d67cfe2e97e051,
0x88aef85f2a220f3b,
0x326015975424b2aa,
0x48fbf503b89f8534,
0x42f797f22d81b2b3,
0x8a0442d7808fc992,
0x97945f2c08931f03,
0xf73cd2dffb3c1c5b,
0x64d9126e1eaf9165,
0x203d6acaaf5ca20d,
0x141f3c5e861ee6f5,
0xa3cf65f4d158c766,
0xd6d38acab6247574,
0x241f020acabfba0e,
0x6b5e8f336cff2971,
0xe4de7fb45048ef33,
0xc62c78ad07a9f392,
0x9452d722d417d3c1,
0x696621c256245bc0,
0x3f9059718142fb03,
0xd52b579b43f0bfcc,
0x46ae96495c0472a7,
0xb3c152e66b490382,
0x01def4a855b9a562,
0x4c994690ef814d83,
0x33881772bd84fdf0,
0xdfabdaa384fdf250,
0xf225a0e699ed7f45,
0xfbcc86a08ca16b7d,
0xa8e94d964f35e979,
0xd0992454c942e996,
0x5d145e2fe67804ad,
0x838c2e3e16fd25ca,
0x01a65b1d23fd5584,
0xb148a65f50615644,
0x740a5f5bf5c93148,
0xf25d68cac2706a95,
0xbbb20241fcdc6235,
0x4165f0288862eff6,
0x32bed896b2f6f4ae,
0xeaf307aae7e53dcf,
0x6de916305935deeb,
0x2b1a6315e6eb6fc4,
0x9eae66a6e64367d2,
0x595828200a2c3e85,
0x84018fcebd91bd7a,
0x14dfb90aabb722b1,
0x539aa7cf503f744b,
0xea83c695ad15e87d,
0xf22cd62e91270c40,
0x4f71998945decbdd,
0xbbf4619535c8ba48,
0xbcff8e0375382b62,
0xaa44035d73fcfe6e,
0x8a2c4a0e1c76cb8e,
0x735b4346049b7886,
]),
},
black: ByPiece {
pawn: BySquare::from_array([
0xc78d9a406a4cbdeb,
0x1a850863f1b1afcb,
0xa2c431ba1d10011a,
0x987b08a89fc41f6b,
0xa51d5e1f7ec87983,
0xd25815676b80ffd7,
0x9d9d0339a1d29ff4,
0x1b6235e2d011981f,
0xbfe0b379765df7fd,
0x2a89ada797a18049,
0x07be7bd46dcb2609,
0xf7026e044c6e3bdf,
0x67fcb51a202222fc,
0x8cc58c6ce971c0dd,
0x68913d8dd359676f,
0x0fa067a96916cac4,
0xa20012ed54daad68,
0x75d4e562e6cd7f4c,
0xe4477ab1baa7b646,
0xaeccb4de02748006,
0x339af09b057f7e59,
0x43d5e005143b7c02,
0xa5729854ccbee1d3,
0xda084fc3e5450dc1,
0x3a64726787372af4,
0x4ce92db87b5dcccf,
0x8074e40b5e0f9d67,
0x50a4b5cf8b8fff48,
0x8e1dc273b538dbdc,
0x8ad42832c26ac7fd,
0xed2ffd84435bc569,
0x4f9061ef031af5d9,
0x57d774f7119a33bb,
0xac4bf8b508fb7eaa,
0xc7e7277612912d8c,
0xd2e90f760d419027,
0x2bddfa27c04e5c1c,
0xb15855825f95b9c1,
0x1a2de5975fcd0551,
0xd39ce73252d55707,
0x95b766a274901abb,
0x3610cb5879f8d050,
0x7ec2763f3d5ad740,
0xd9b63751c75a24a7,
0x69de20ce8d64b139,
0xbc074b8c0aa49da5,
0x8324f2596f1c5894,
0xbebd92b574b3a273,
0x0c8b949c0d54e0c8,
0x012516783b182ab0,
0x6210972bd01966eb,
0xba7013dc3e86057e,
0x3bd803eae66c39c5,
0x181d94e778b87ef6,
0x0cb7854f7e1e393a,
0x24466e6d173a3e38,
0x97d7d80afa346360,
0x05481b8df366a061,
0x787e0928725547ff,
0x728593d517e11bea,
0x85402ff156e267b7,
0x5b43e25deb0933ed,
0x56d928235548d64d,
0x7780df96360afae1,
]),
knight: BySquare::from_array([
0x3be85a89bceb6519,
0xc6c13eb5cf98077b,
0xfe50e3e7e92ba358,
0x0b84649ed327a134,
0xc0c8ba73d3f01ba0,
0x5bc087a284606afb,
0x088518a7fa99ec49,
0x4bd442628e566e10,
0xcced5571d8e4460a,
0xfe39d3d0a142e5c4,
0xb0676fb61dd358ed,
0x1728c859e5e1dc32,
0x19c1ecde9bfed7f9,
0x11c4979d5046b76d,
0xd8671fd69636f3fa,
0x5d55d8c69465512f,
0x5809a5f1095cc389,
0x994c2c827e35616a,
0x8b50c287fb1ade8c,
0x5553d0aba57a4d82,
0x891004d2b4b64997,
0xaf8395ca479a758e,
0xa16712268786114c,
0xa3648e3a2d83f456,
0x9fe4dfd20bd302da,
0xc731379b791f695d,
0x6bbadd0af10415a8,
0x001898f763aff6c5,
0x45e66dbccc90a837,
0xa79ca89e489b60b8,
0x5a000093fb1e7b80,
0x211d072b38b04a92,
0xde9cd93e25ab1ec8,
0xaf3a837d0c9556cc,
0xc8cd07d84df26d36,
0x37f74e81d0867cb5,
0xa1be90ae1782d21f,
0x633764e97b44bd57,
0xec2cd73f9c6872c6,
0xa45db88ecc00e2f2,
0x85428d72700ecd6e,
0x7b435dcf964b6cb1,
0x31a14082db7e50ae,
0xf3a05d0bda943ee7,
0x647012735fb853f8,
0xf26f8bb832f10770,
0xa6bcfeafa94c2488,
0xd808bc211a1d51c0,
0xe78bfbb9eea6f6b0,
0xc093eac1f94da3ac,
0x85c8c9041804ab06,
0xe903773ac415c3fc,
0xb576df544253c4a1,
0x4221f7fa7c8cad12,
0x98e34212edb2edba,
0x8959b96e633d6f7e,
0xa37cf510a903bb26,
0x5af5b47ff0aa7e75,
0x2f20c122c283db3a,
0x93e07314a90c3ebe,
0x8fba9faf777d1471,
0x56514ed79e5a56d2,
0xcd1854db4877f830,
0xcdf7e9b667f4352c,
]),
bishop: BySquare::from_array([
0x5fc0a0e0376298bd,
0xaf9dddf6bd119f72,
0x6ee7f1c20a4c3949,
0xe109a0704d174270,
0x2a77e904380f2e68,
0xf2b4631fd0e2d2df,
0xc664c1d35f41e7e1,
0x22f6692a186f4b3c,
0x274ea97fd6b5b8f3,
0x274f80543f1294b1,
0x81e7d9b3479c2130,
0xbe178d4582b2048b,
0x7f342780962be127,
0x2dde602ce95bed64,
0xc21d83795502a9e2,
0xb46394cd6b8198ff,
0x452f0cb6fffc1834,
0x645f90862b00b633,
0x6e17e67aba10c609,
0x308c41e743653a7a,
0xbacbfa8ab2fd1090,
0xb2b523226bbcd16a,
0xffecad46c9756b5b,
0x74f92fbd4ac76568,
0x872a2c58dc8e6685,
0x0747ade9e4971846,
0xf3c254b103a98550,
0xdf45270623c6a3cb,
0x35350cd24ba98535,
0x286a653a8559e2da,
0xa2087b0d7925b608,
0xe037e3f756c16759,
0xf514c163aad56f21,
0x38d4201a4b8fde42,
0x58a1c25c95e55349,
0x53e47bb6ab090d35,
0x902e36676e9f7a26,
0xe00057840afa3658,
0x776a9924aa5a934b,
0x01fa6f7650f049f1,
0xaecb1cd96c69f487,
0x40ed97a61faf653d,
0xa15ae720a26c56a8,
0xc29ebc7141bfede4,
0xbd4b4698cadcd459,
0x988b94dbd0fddb28,
0x46ab4982185cfa89,
0xdc21744d486a06d3,
0x9d57f27c5d5f4f83,
0x364a06a9063e9b85,
0x87419832ac44b7f3,
0x27888b24024ee343,
0x32c7a527264cb45b,
0x25ccdd77074b2224,
0x0e7d3d450e2a812c,
0x28a0229dfba8a181,
0x0657447e7c359c28,
0x04c7af9808dbff53,
0xc26434dbb2839d3e,
0x92b8dfcb4ff5aae7,
0x553f6f2c02680514,
0xfe55bb57b87e534d,
0xf93b6ed1593a44c6,
0xb5516f46b68fb240,
]),
rook: BySquare::from_array([
0x291a225e4c31a7e2,
0x72149b16e173fc38,
0x15f32d6f9bbe5872,
0xa64c4cace916037c,
0x7c60fb48797e9a95,
0xa03a7b8447eb0333,
0x1c08c40a157a68d7,
0x42f30b20aa288cfe,
0xbbbd218f0718d518,
0x8d92770d0fe8130b,
0xc07a4bc08a47f71a,
0xe2e7a50757907de9,
0x4732c57913090427,
0x0abd8252ee15aa0a,
0x643eebc2371b1f69,
0x82a2f22b11760522,
0xd9932af759b9a116,
0x763b4da7eb71a584,
0x0de32125172170e3,
0x8522b86cef0c6f8c,
0x3e9a4937fba5f998,
0xf8fff1fddb8a38a2,
0x28632ff85ce2005e,
0xfc9d9dbe45565d8e,
0x657c200772fe7544,
0x36d0d6990860e462,
0xdba6b01777b7db98,
0x9fb3c27cb1396ebb,
0x786ea3cda8204787,
0x97af15369f75f3fe,
0x5c9f9f4fb80f36de,
0x1d81d66b57706ddb,
0xa4aa9886fa7f9512,
0xe9137488b92dd8a0,
0xddc783764a272be3,
0x8a1f37152ddc3f67,
0x51161a7e15148d56,
0x594df5aeb1598fc4,
0xeadf58c6337605c8,
0x359ed7e6d71732ce,
0x6fd3f9537290fe21,
0xe7cf5f37d0a975b5,
0x7af77af5bdda540a,
0x4d648b2fe5f1f8bc,
0x2adfd758dc920aa9,
0x9aef18d35ac6d310,
0x146486c57cefabb7,
0x7a7cfec7f8c4a4ca,
0x2dfb40cdab90c467,
0x5d0c1c4ae10cbc3b,
0x5005e0a33c699f56,
0x31fbb862ed7062f2,
0x34996bc3c15da599,
0x2893e09d6495cb8f,
0x4d24e6a2be93ba37,
0x78953ab3cadd686d,
0x19faccb8781f5ba4,
0x829fe890916a8998,
0xe0516be83e14e6ea,
0x10a068ef4621afe8,
0xfb2c2a2fa65a2338,
0x7a8f182ff94f78dd,
0x4db030c7d978e644,
0xd4e34f4fab036ed0,
]),
queen: BySquare::from_array([
0xb1948887bf6b71d4,
0x31c6d244fcc78cd5,
0x6e8696c3f2467ad9,
0x6419d3feb1fe9ecc,
0x73753e01f3d85eed,
0xbf2f6c64dc29e659,
0x9ec4464ab7efb385,
0xaeac50b12e62802e,
0x663bcab761263bd6,
0xb386fe35a15dd424,
0x30fe251531c93166,
0x69b428f7398e002c,
0x974bcfbbbca7c977,
0xbab2a8c7df67411f,
0x6d404ba3b3b5df5d,
0x626fe64a9cb932d3,
0xdf1847c2c7c38455,
0xc15c905f2787e40d,
0x3ceb93430b9e76c3,
0xa42ac8e61dfc757a,
0xdddb3be18eac10af,
0x2a265739e12aa335,
0xf766ab19859eada9,
0x2a6ab1c2895dad1a,
0x33f194e2d982371a,
0xaf83b32ced6fcae6,
0x3f766b753fe26e43,
0x2cc5ef37e7bea9c6,
0x0e126cfff5113dab,
0x4fbf39a3a72a9f7f,
0x0e6ce9a5249db928,
0x6b6a5042a37a7c95,
0x87d75b1e924720ff,
0x95547ad4cf3b23e2,
0xcf2b03f1aefafea0,
0x5b1435e3f1e8c42b,
0x936182a65819aa82,
0xddb80bfbd6c889df,
0x205f7b544acef373,
0xa56f5476673ec067,
0x1c765bc645bbb571,
0x7f5e599e56ffd956,
0x1c93c44a6d40c96e,
0x38d04e999d0d5e1a,
0x9a2c87699408ddd0,
0xf8580599c9182c2b,
0x9d469800cf7e0d5d,
0xa9ce07332adb9c16,
0x382290d9828fdad5,
0x9bc4c94d84aa9395,
0x8d2001d023ec3124,
0x5c5c71dffba8ddfb,
0x9aef1aadcfa27914,
0xd7044dc7d938eb95,
0x47c983299e082b23,
0x0f62cc76b596cd54,
0x721838004c941f32,
0xaba7ab92b0ea4225,
0xa8bac975f657785c,
0xec3b1f4c09483d2b,
0xfe92ab50792870c8,
0x80c6165f735a7cf0,
0xf7ef1abc53994f57,
0xf53392774a8dd13d,
]),
king: BySquare::from_array([
0x10c26ebf72e025f2,
0xa854901b1c060b2a,
0x16b11f2c00d3e049,
0x4404d72284e4ed49,
0x887227cbabfac7d7,
0xb54322455c15d6be,
0x90b39aa78e455cc8,
0x80fdf8de1bdc5f50,
0x74ac80d648bf277e,
0xd0bf0ffb7a36930b,
0x22c2a39e6a084db5,
0x108137384f95daf4,
0xb4733a07906689b3,
0xa6150ffbc7d5ecf7,
0xdc713190083e8e4c,
0x83a0f771d93a25de,
0xf21c2967612437e2,
0xa83ac09b61380064,
0x6a82c6b258cd5997,
0x64799f1e4473ae2a,
0x22f64a8f927088fc,
0xf068a6024dffe8f8,
0x7810ec5658cd54a1,
0x52e241bd246549e8,
0x3fb9101f08fc995e,
0xba619ad620ae21bd,
0xdbe0101711ab9f83,
0x9ee3b9a42246c7b9,
0xc4371cb406d9b7af,
0x062939cda0992e44,
0x3fa0f81df546ba1a,
0xb7fc745957a8ea32,
0x65d29347ab4a40af,
0x88e1e1c17e80f48f,
0x1f9c5ef5db101b46,
0x764cb5e93b2ac10e,
0x6f1e8c0799716e3a,
0x8ef01341009c36f9,
0x4f23379219339a95,
0x5953c0e562d132da,
0x454a09a83a6552ef,
0x4e518938a68ae6cb,
0x7e6af2ccc2e448c4,
0x9fc787cb3e31caaa,
0xb00e538c6df78ead,
0xd435f09a0527f934,
0xca9a01e264dcc586,
0x89d2923044786ec3,
0x6eb3ebb224e2f43d,
0xc0854948694b43c4,
0xf0d09ecb89ccd676,
0x118ca6c79c206121,
0x9dfb6e9555eb4ec5,
0xe217a2033d2e3376,
0x755488ab7ebb1a92,
0xa74af458387b17e8,
0x83f8bea33eecf058,
0x2dc09edb26f4c89c,
0xc48c94f4517401f9,
0x04c5c932bda5185b,
0x63adf5bfd534397c,
0x9ad2ecca1ed927e0,
0x55a09dd4a1b5370f,
0x23056fa954a16d20,
]),
},
};