diff --git a/miden-crypto/src/aead/aead_rpo/mod.rs b/miden-crypto/src/aead/aead_rpo/mod.rs index 6fd6feee4..b39276ec3 100644 --- a/miden-crypto/src/aead/aead_rpo/mod.rs +++ b/miden-crypto/src/aead/aead_rpo/mod.rs @@ -531,9 +531,9 @@ impl SpongeState { fn squeeze_tag(&mut self) -> AuthTag { self.permute(); AuthTag( - self.state[RATE_RANGE_FIRST_HALF] + self.state[RATE_RANGE_SECOND_HALF] .try_into() - .expect("rate first half is exactly AUTH_TAG_SIZE elements"), + .expect("rate second half is exactly AUTH_TAG_SIZE elements"), ) } diff --git a/miden-crypto/src/dsa/falcon512_rpo/tests/data.rs b/miden-crypto/src/dsa/falcon512_rpo/tests/data.rs index a3447ce8a..54561914b 100644 --- a/miden-crypto/src/dsa/falcon512_rpo/tests/data.rs +++ b/miden-crypto/src/dsa/falcon512_rpo/tests/data.rs @@ -1758,57 +1758,57 @@ pub(crate) static SK_POLYS: [[[i16; 512]; 4]; NUM_TEST_VECTORS] = [ /// This was generated on an `Intel Core i5-8279U` running on Linux kernel `5.4.0-144-generic` and /// built with Rust `1.88.0`. pub(crate) const DETERMINISTIC_SIGNATURE: [u8; SIG_SERIALIZED_LEN] = [ - 185, 1, 22, 144, 158, 211, 85, 196, 199, 194, 123, 220, 135, 121, 154, 120, 141, 154, 66, 32, - 56, 47, 239, 41, 38, 121, 124, 172, 190, 21, 238, 237, 69, 36, 36, 245, 63, 146, 222, 205, 107, - 153, 60, 69, 60, 10, 91, 243, 160, 222, 120, 21, 132, 54, 134, 200, 184, 209, 102, 174, 244, - 236, 77, 155, 224, 162, 181, 104, 251, 8, 40, 30, 9, 14, 184, 153, 181, 189, 100, 74, 238, 146, - 99, 20, 84, 157, 181, 82, 118, 220, 172, 2, 233, 176, 72, 241, 169, 13, 245, 117, 157, 112, 30, - 76, 218, 217, 199, 73, 94, 220, 50, 113, 143, 125, 218, 52, 196, 133, 90, 209, 27, 230, 125, - 153, 181, 235, 98, 178, 151, 63, 190, 194, 43, 186, 139, 54, 38, 8, 203, 17, 91, 137, 246, 187, - 114, 179, 210, 11, 61, 177, 55, 129, 172, 18, 200, 29, 53, 203, 254, 78, 168, 251, 249, 209, 1, - 103, 177, 6, 28, 222, 220, 220, 55, 158, 166, 228, 43, 183, 31, 38, 32, 174, 174, 113, 247, - 108, 148, 225, 245, 15, 228, 225, 234, 160, 25, 161, 201, 189, 147, 158, 12, 249, 57, 71, 113, - 17, 104, 43, 187, 53, 240, 35, 244, 54, 198, 79, 88, 154, 133, 242, 85, 168, 180, 233, 161, - 103, 77, 75, 161, 81, 33, 75, 155, 10, 247, 73, 46, 24, 55, 237, 87, 219, 83, 17, 138, 226, 41, - 250, 159, 229, 73, 94, 89, 161, 70, 82, 45, 13, 193, 6, 33, 70, 127, 181, 120, 203, 81, 171, - 39, 166, 31, 201, 41, 65, 240, 178, 93, 136, 58, 71, 147, 38, 27, 204, 158, 63, 123, 120, 81, - 136, 101, 47, 63, 22, 238, 79, 226, 137, 126, 71, 217, 53, 217, 204, 96, 108, 222, 34, 161, 31, - 162, 42, 186, 101, 139, 61, 37, 97, 145, 133, 179, 65, 163, 79, 87, 19, 49, 80, 126, 112, 246, - 92, 214, 184, 153, 247, 246, 187, 199, 133, 116, 184, 45, 223, 6, 33, 101, 117, 101, 227, 207, - 127, 238, 91, 114, 134, 53, 127, 98, 204, 219, 219, 168, 136, 63, 210, 153, 218, 186, 138, 170, - 76, 215, 67, 34, 132, 146, 12, 38, 42, 149, 76, 172, 209, 231, 24, 77, 212, 205, 171, 235, 236, - 159, 220, 92, 62, 9, 164, 54, 49, 51, 192, 47, 238, 3, 229, 98, 26, 100, 47, 101, 132, 194, 8, - 142, 141, 173, 107, 191, 102, 19, 181, 209, 71, 168, 61, 175, 33, 37, 125, 37, 203, 19, 116, - 144, 176, 55, 4, 165, 47, 238, 101, 20, 131, 197, 146, 167, 222, 185, 140, 132, 80, 128, 226, - 150, 93, 203, 160, 196, 162, 141, 105, 190, 50, 92, 98, 31, 136, 102, 46, 24, 153, 6, 55, 78, - 135, 146, 24, 147, 221, 31, 74, 189, 115, 157, 83, 74, 147, 64, 255, 204, 79, 255, 31, 74, 65, - 143, 115, 35, 72, 59, 244, 26, 130, 173, 69, 96, 26, 215, 61, 97, 41, 69, 236, 230, 105, 119, - 30, 220, 90, 128, 250, 48, 134, 130, 205, 142, 196, 49, 184, 190, 101, 220, 199, 168, 217, 105, - 242, 157, 100, 135, 163, 156, 205, 172, 241, 35, 148, 124, 244, 45, 97, 213, 114, 55, 10, 126, - 117, 173, 135, 77, 239, 135, 58, 68, 243, 200, 222, 100, 52, 219, 26, 19, 217, 109, 32, 39, - 118, 130, 139, 38, 101, 231, 38, 126, 228, 20, 197, 91, 211, 248, 253, 74, 27, 201, 4, 52, 158, - 38, 116, 79, 62, 17, 107, 99, 75, 166, 247, 119, 31, 140, 97, 229, 48, 73, 179, 23, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 9, 155, 125, 185, 64, 84, 225, 93, 95, 10, 178, 100, 198, 160, 180, 110, 66, - 53, 41, 212, 204, 170, 160, 237, 167, 160, 122, 168, 168, 68, 93, 180, 2, 255, 84, 191, 48, - 157, 91, 57, 228, 201, 192, 75, 145, 62, 104, 175, 135, 156, 9, 128, 122, 1, 210, 73, 150, 34, - 200, 59, 228, 99, 89, 40, 54, 25, 217, 86, 245, 170, 187, 28, 224, 144, 102, 208, 225, 180, - 106, 60, 184, 144, 29, 213, 222, 166, 45, 212, 135, 24, 164, 201, 83, 26, 181, 36, 130, 38, - 173, 109, 97, 235, 192, 26, 43, 248, 157, 36, 62, 182, 118, 28, 234, 32, 6, 171, 179, 224, 30, - 170, 75, 80, 101, 228, 221, 195, 238, 144, 170, 6, 57, 109, 171, 41, 157, 234, 0, 103, 243, - 207, 105, 76, 164, 83, 35, 27, 73, 134, 177, 241, 38, 98, 86, 16, 200, 61, 190, 53, 115, 49, - 157, 169, 143, 109, 119, 196, 109, 151, 31, 54, 94, 22, 246, 174, 164, 162, 173, 60, 74, 18, - 220, 166, 122, 176, 32, 166, 107, 100, 229, 32, 161, 185, 210, 8, 49, 230, 61, 184, 212, 197, - 41, 114, 239, 214, 114, 177, 9, 39, 254, 197, 24, 151, 86, 141, 25, 206, 200, 146, 167, 36, 29, - 224, 66, 141, 123, 73, 246, 49, 80, 207, 109, 160, 72, 249, 70, 164, 10, 211, 190, 15, 104, - 147, 186, 216, 202, 251, 27, 246, 250, 104, 57, 91, 119, 19, 98, 173, 247, 70, 85, 8, 13, 70, - 69, 120, 52, 21, 87, 112, 50, 11, 75, 213, 167, 79, 42, 106, 58, 250, 77, 12, 133, 174, 108, - 113, 82, 17, 17, 98, 126, 97, 172, 87, 218, 221, 79, 84, 113, 33, 148, 62, 105, 150, 66, 152, - 153, 39, 237, 96, 75, 81, 1, 56, 6, 98, 92, 138, 114, 242, 189, 40, 38, 197, 118, 96, 130, 145, - 229, 138, 153, 44, 49, 89, 120, 209, 167, 205, 202, 28, 65, 174, 219, 125, 99, 31, 88, 48, 254, - 227, 34, 88, 138, 138, 60, 144, 106, 148, 158, 248, 154, 181, 53, 3, 45, 233, 164, 68, 80, 207, - 42, 209, 157, 159, 128, 94, 241, 55, 166, 231, 115, 130, 41, 132, 19, 135, 225, 120, 36, 101, - 204, 210, 161, 84, 197, 63, 5, 36, 178, 4, 229, 237, 43, 49, 212, 80, 219, 20, 172, 182, 189, - 9, 193, 112, 73, 63, 37, 148, 148, 184, 201, 96, 83, 62, 32, 186, 249, 54, 103, 208, 112, 216, + 185, 1, 49, 100, 34, 177, 39, 53, 190, 227, 187, 229, 174, 59, 206, 209, 55, 168, 94, 121, 223, + 102, 175, 213, 188, 26, 185, 233, 198, 252, 249, 138, 82, 22, 171, 253, 118, 25, 164, 99, 187, + 36, 109, 69, 198, 5, 16, 70, 234, 156, 145, 45, 71, 247, 255, 137, 71, 108, 215, 161, 85, 46, + 110, 45, 26, 71, 171, 47, 181, 153, 48, 142, 250, 169, 149, 108, 193, 17, 239, 43, 255, 253, + 190, 217, 63, 139, 49, 228, 103, 101, 201, 241, 236, 162, 110, 246, 146, 195, 202, 159, 63, + 237, 121, 235, 235, 216, 41, 27, 127, 141, 61, 13, 41, 133, 97, 80, 207, 33, 90, 59, 250, 95, + 240, 34, 95, 25, 43, 115, 31, 51, 124, 214, 88, 143, 111, 143, 65, 29, 175, 167, 200, 233, 68, + 194, 224, 232, 184, 183, 95, 49, 65, 81, 81, 9, 82, 27, 60, 196, 39, 103, 33, 209, 97, 88, 92, + 214, 121, 201, 66, 191, 172, 175, 76, 165, 196, 191, 205, 5, 147, 179, 11, 173, 36, 186, 173, + 211, 229, 41, 235, 251, 245, 44, 234, 164, 157, 66, 166, 146, 187, 156, 43, 23, 184, 108, 107, + 30, 45, 252, 98, 185, 136, 152, 185, 94, 120, 149, 133, 200, 96, 255, 188, 183, 9, 122, 52, + 220, 92, 171, 53, 43, 119, 97, 73, 36, 69, 194, 117, 179, 10, 158, 180, 173, 216, 34, 147, 150, + 73, 137, 38, 104, 147, 147, 128, 76, 28, 9, 134, 72, 86, 33, 109, 238, 37, 19, 189, 248, 222, + 221, 252, 185, 150, 102, 200, 66, 208, 254, 154, 102, 110, 46, 180, 253, 181, 90, 136, 15, 15, + 99, 250, 71, 8, 41, 206, 249, 247, 177, 87, 27, 246, 193, 91, 240, 148, 39, 138, 141, 166, 109, + 36, 20, 109, 14, 103, 47, 30, 48, 13, 38, 188, 151, 233, 74, 148, 7, 147, 132, 238, 106, 86, + 146, 36, 206, 56, 89, 102, 213, 66, 84, 151, 47, 116, 223, 164, 206, 177, 164, 17, 55, 231, 93, + 236, 115, 92, 161, 28, 171, 33, 153, 86, 140, 123, 224, 201, 107, 121, 129, 63, 212, 221, 148, + 62, 172, 44, 184, 103, 217, 88, 67, 173, 172, 42, 115, 151, 179, 29, 118, 114, 186, 202, 80, + 153, 89, 92, 81, 0, 74, 55, 201, 247, 54, 90, 199, 243, 119, 172, 31, 15, 182, 170, 200, 127, + 183, 91, 189, 237, 241, 154, 248, 229, 16, 117, 149, 15, 79, 156, 246, 160, 147, 77, 38, 144, + 194, 119, 69, 131, 46, 23, 185, 43, 66, 194, 77, 185, 30, 206, 92, 4, 218, 161, 156, 24, 54, + 238, 89, 201, 37, 148, 39, 185, 89, 137, 206, 171, 148, 189, 181, 185, 205, 168, 104, 182, 93, + 82, 17, 77, 143, 31, 188, 108, 11, 168, 116, 147, 166, 55, 160, 209, 153, 5, 146, 59, 46, 231, + 219, 112, 200, 110, 9, 148, 200, 94, 93, 247, 234, 48, 90, 88, 104, 34, 18, 120, 235, 25, 231, + 42, 156, 145, 165, 233, 143, 17, 227, 155, 44, 216, 185, 202, 54, 242, 53, 233, 206, 161, 176, + 221, 204, 124, 208, 104, 87, 80, 128, 163, 122, 150, 178, 5, 184, 146, 50, 121, 95, 174, 151, + 57, 4, 174, 208, 27, 157, 135, 190, 121, 1, 68, 57, 81, 69, 235, 205, 137, 82, 161, 209, 12, + 212, 9, 9, 77, 22, 251, 36, 37, 13, 50, 61, 89, 164, 69, 105, 92, 233, 136, 195, 210, 103, 102, + 73, 20, 5, 28, 162, 56, 169, 245, 255, 8, 134, 70, 53, 38, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 155, 125, 185, 64, 84, 225, 93, 95, 10, 178, 100, 198, 160, 180, 110, 66, 53, + 41, 212, 204, 170, 160, 237, 167, 160, 122, 168, 168, 68, 93, 180, 2, 255, 84, 191, 48, 157, + 91, 57, 228, 201, 192, 75, 145, 62, 104, 175, 135, 156, 9, 128, 122, 1, 210, 73, 150, 34, 200, + 59, 228, 99, 89, 40, 54, 25, 217, 86, 245, 170, 187, 28, 224, 144, 102, 208, 225, 180, 106, 60, + 184, 144, 29, 213, 222, 166, 45, 212, 135, 24, 164, 201, 83, 26, 181, 36, 130, 38, 173, 109, + 97, 235, 192, 26, 43, 248, 157, 36, 62, 182, 118, 28, 234, 32, 6, 171, 179, 224, 30, 170, 75, + 80, 101, 228, 221, 195, 238, 144, 170, 6, 57, 109, 171, 41, 157, 234, 0, 103, 243, 207, 105, + 76, 164, 83, 35, 27, 73, 134, 177, 241, 38, 98, 86, 16, 200, 61, 190, 53, 115, 49, 157, 169, + 143, 109, 119, 196, 109, 151, 31, 54, 94, 22, 246, 174, 164, 162, 173, 60, 74, 18, 220, 166, + 122, 176, 32, 166, 107, 100, 229, 32, 161, 185, 210, 8, 49, 230, 61, 184, 212, 197, 41, 114, + 239, 214, 114, 177, 9, 39, 254, 197, 24, 151, 86, 141, 25, 206, 200, 146, 167, 36, 29, 224, 66, + 141, 123, 73, 246, 49, 80, 207, 109, 160, 72, 249, 70, 164, 10, 211, 190, 15, 104, 147, 186, + 216, 202, 251, 27, 246, 250, 104, 57, 91, 119, 19, 98, 173, 247, 70, 85, 8, 13, 70, 69, 120, + 52, 21, 87, 112, 50, 11, 75, 213, 167, 79, 42, 106, 58, 250, 77, 12, 133, 174, 108, 113, 82, + 17, 17, 98, 126, 97, 172, 87, 218, 221, 79, 84, 113, 33, 148, 62, 105, 150, 66, 152, 153, 39, + 237, 96, 75, 81, 1, 56, 6, 98, 92, 138, 114, 242, 189, 40, 38, 197, 118, 96, 130, 145, 229, + 138, 153, 44, 49, 89, 120, 209, 167, 205, 202, 28, 65, 174, 219, 125, 99, 31, 88, 48, 254, 227, + 34, 88, 138, 138, 60, 144, 106, 148, 158, 248, 154, 181, 53, 3, 45, 233, 164, 68, 80, 207, 42, + 209, 157, 159, 128, 94, 241, 55, 166, 231, 115, 130, 41, 132, 19, 135, 225, 120, 36, 101, 204, + 210, 161, 84, 197, 63, 5, 36, 178, 4, 229, 237, 43, 49, 212, 80, 219, 20, 172, 182, 189, 9, + 193, 112, 73, 63, 37, 148, 148, 184, 201, 96, 83, 62, 32, 186, 249, 54, 103, 208, 112, 216, 216, 217, 97, 70, 4, 18, 42, 182, 117, 21, 222, 204, 168, 164, 123, 1, 189, 145, 70, 80, 218, 192, 136, 81, 22, 159, 137, 194, 70, 246, 187, 150, 50, 54, 154, 203, 214, 73, 174, 205, 44, 192, 105, 138, 192, 109, 238, 21, 64, 232, 181, 218, 129, 125, 92, 145, 87, 64, 222, 169, 183, diff --git a/miden-crypto/src/dsa/falcon512_rpo/tests/mod.rs b/miden-crypto/src/dsa/falcon512_rpo/tests/mod.rs index 9ef4106a7..8d7adb01a 100644 --- a/miden-crypto/src/dsa/falcon512_rpo/tests/mod.rs +++ b/miden-crypto/src/dsa/falcon512_rpo/tests/mod.rs @@ -1,7 +1,8 @@ use alloc::vec::Vec; use data::{ - EXPECTED_SIG, EXPECTED_SIG_POLYS, NUM_TEST_VECTORS, SK_POLYS, SYNC_DATA_FOR_TEST_VECTOR, + DETERMINISTIC_SIGNATURE, EXPECTED_SIG, EXPECTED_SIG_POLYS, NUM_TEST_VECTORS, SK_POLYS, + SYNC_DATA_FOR_TEST_VECTOR, }; use prng::Shake256Testing; use rand::{RngCore, SeedableRng}; @@ -10,7 +11,6 @@ use rand_chacha::ChaCha20Rng; use super::{Serializable, math::Polynomial}; use crate::dsa::falcon512_rpo::{ PREVERSIONED_NONCE, PREVERSIONED_NONCE_LEN, SIG_NONCE_LEN, SIG_POLY_BYTE_LEN, SecretKey, - tests::data::DETERMINISTIC_SIGNATURE, }; mod data; diff --git a/miden-crypto/src/hash/algebraic_sponge/mod.rs b/miden-crypto/src/hash/algebraic_sponge/mod.rs index d035a147c..7afafc71c 100644 --- a/miden-crypto/src/hash/algebraic_sponge/mod.rs +++ b/miden-crypto/src/hash/algebraic_sponge/mod.rs @@ -22,24 +22,24 @@ pub(crate) mod rescue; // CONSTANTS // ================================================================================================ -/// Sponge state is set to 12 field elements or 96 bytes; 8 elements are reserved for rate and -/// the remaining 4 elements are reserved for capacity. +/// Sponge state is set to 12 field elements or 96 bytes; 8 elements are reserved for the rate and +/// the remaining 4 elements are reserved for the capacity. pub(crate) const STATE_WIDTH: usize = 12; -/// The rate portion of the state is located in elements 4 through 11. -pub(crate) const RATE_RANGE: Range = 4..12; +/// The rate portion of the state is located in elements 0 through 7. +pub(crate) const RATE_RANGE: Range = 0..8; pub(crate) const RATE_WIDTH: usize = RATE_RANGE.end - RATE_RANGE.start; -pub(crate) const INPUT1_RANGE: Range = 4..8; -pub(crate) const INPUT2_RANGE: Range = 8..12; +/// The first and second 4-element words of the rate portion. +pub(crate) const INPUT1_RANGE: Range = 0..4; +pub(crate) const INPUT2_RANGE: Range = 4..8; -/// The capacity portion of the state is located in elements 0, 1, 2, and 3. -pub(crate) const CAPACITY_RANGE: Range = 0..4; +/// The capacity portion of the state is located in elements 8, 9, 10, and 11. +pub(crate) const CAPACITY_RANGE: Range = 8..12; -/// The output of the hash function is a digest which consists of 4 field elements or 32 bytes. -/// -/// The digest is returned from state elements 4, 5, 6, and 7 (the first four elements of the -/// rate portion). +/// The output of the hash function is a digest which consists of 4 field elements or 32 bytes, +/// taken from the second word of the rate portion of the state (the middle word of the 3-word +/// sponge state). pub(crate) const DIGEST_RANGE: Range = 4..8; /// The number of byte chunks defining a field element when hashing a sequence of bytes @@ -97,7 +97,7 @@ pub(crate) trait AlgebraicSponge { Self::apply_permutation(&mut state); } - // return the first 4 elements of the state as hash result + // return the digest portion of the state as hash result Word::new(state[DIGEST_RANGE].try_into().unwrap()) } @@ -170,7 +170,7 @@ pub(crate) trait AlgebraicSponge { Self::apply_permutation(&mut state); } - // return the first 4 elements of the rate as hash result. + // return the digest portion of the rate as hash result. Word::new(state[DIGEST_RANGE].try_into().unwrap()) } diff --git a/miden-crypto/src/hash/algebraic_sponge/poseidon2/mod.rs b/miden-crypto/src/hash/algebraic_sponge/poseidon2/mod.rs index 0180f831d..08700a134 100644 --- a/miden-crypto/src/hash/algebraic_sponge/poseidon2/mod.rs +++ b/miden-crypto/src/hash/algebraic_sponge/poseidon2/mod.rs @@ -126,17 +126,18 @@ impl Poseidon2 { /// Number of internal rounds. pub const NUM_INTERNAL_ROUNDS: usize = NUM_INTERNAL_ROUNDS; - /// Sponge state is set to 12 field elements or 768 bytes; 8 elements are reserved for rate and - /// the remaining 4 elements are reserved for capacity. + /// Sponge state is set to 12 field elements or 768 bytes; 8 elements are reserved for the + /// rate and the remaining 4 elements are reserved for the capacity. pub const STATE_WIDTH: usize = STATE_WIDTH; - /// The rate portion of the state is located in elements 4 through 11 (inclusive). + /// The rate portion of the state is located in elements 0 through 7 (inclusive). pub const RATE_RANGE: Range = RATE_RANGE; - /// The capacity portion of the state is located in elements 0, 1, 2, and 3. + /// The capacity portion of the state is located in elements 8, 9, 10, and 11. pub const CAPACITY_RANGE: Range = CAPACITY_RANGE; - /// The output of the hash function can be read from state elements 4, 5, 6, and 7. + /// The output of the hash function can be read from state elements 4, 5, 6, and 7 (the second + /// word of the rate portion, i.e. the middle word of the sponge state). pub const DIGEST_RANGE: Range = DIGEST_RANGE; /// Matrix used for computing the linear layers of internal rounds. diff --git a/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/mod.rs b/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/mod.rs index 07bba9533..f1a25d20a 100644 --- a/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/mod.rs +++ b/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/mod.rs @@ -88,17 +88,18 @@ impl Rpo256 { /// The number of rounds is set to 7 to target 128-bit security level. pub const NUM_ROUNDS: usize = NUM_ROUNDS; - /// Sponge state is set to 12 field elements or 768 bytes; 8 elements are reserved for rate and - /// the remaining 4 elements are reserved for capacity. + /// Sponge state is set to 12 field elements or 768 bytes; 8 elements are reserved for the + /// rate and the remaining 4 elements are reserved for the capacity. pub const STATE_WIDTH: usize = STATE_WIDTH; - /// The rate portion of the state is located in elements 4 through 11 (inclusive). + /// The rate portion of the state is located in elements 0 through 7 (inclusive). pub const RATE_RANGE: Range = RATE_RANGE; - /// The capacity portion of the state is located in elements 0, 1, 2, and 3. + /// The capacity portion of the state is located in elements 8, 9, 10, and 11. pub const CAPACITY_RANGE: Range = CAPACITY_RANGE; - /// The output of the hash function can be read from state elements 4, 5, 6, and 7. + /// The output of the hash function can be read from state elements 4, 5, 6, and 7 (the second + /// word of the rate portion, i.e. the middle word of the sponge state). pub const DIGEST_RANGE: Range = DIGEST_RANGE; /// MDS matrix used for computing the linear layer in a RPO round. diff --git a/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/tests.rs b/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/tests.rs index bb177eaa9..2d67702f9 100644 --- a/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/tests.rs +++ b/miden-crypto/src/hash/algebraic_sponge/rescue/rpo/tests.rs @@ -9,7 +9,7 @@ use super::{ }; use crate::{ FieldElement, ONE, StarkField, Word, ZERO, - hash::algebraic_sponge::{BINARY_CHUNK_SIZE, CAPACITY_RANGE, RATE_WIDTH}, + hash::algebraic_sponge::{BINARY_CHUNK_SIZE, CAPACITY_RANGE, RATE_RANGE, RATE_WIDTH}, }; #[test] @@ -144,7 +144,8 @@ fn hash_padding_no_extra_permutation_call() { let mut state = [ZERO; STATE_WIDTH]; // padding when hashing bytes state[CAPACITY_RANGE.start] = Felt::from(RATE_WIDTH as u8); - *state.last_mut().unwrap() = Felt::new(u64::from_le_bytes(final_chunk)); + // place the final padded chunk into the last rate element + state[RATE_RANGE.start + RATE_WIDTH - 1] = Felt::new(u64::from_le_bytes(final_chunk)); Rpo256::apply_permutation(&mut state); assert_eq!(&r1[0..4], &state[DIGEST_RANGE]); @@ -226,7 +227,7 @@ fn hash_test_vectors() { ]; for i in 0..elements.len() { - let expected = Word::new(*EXPECTED[i]); + let expected = EXPECTED[i]; let result = Rpo256::hash_elements(&elements[..(i + 1)]); assert_eq!(result, expected); } @@ -271,117 +272,117 @@ proptest! { const EXPECTED: [Word; 19] = [ Word::new([ - Felt::new(18126731724905382595), - Felt::new(7388557040857728717), - Felt::new(14290750514634285295), - Felt::new(7852282086160480146), + Felt::new(15469139178109825283), + Felt::new(13298322520406718581), + Felt::new(17526830383584509711), + Felt::new(11090661028409776847), ]), Word::new([ - Felt::new(10139303045932500183), - Felt::new(2293916558361785533), - Felt::new(15496361415980502047), - Felt::new(17904948502382283940), + Felt::new(11706991355830235601), + Felt::new(17934710181964143981), + Felt::new(4452402857411820110), + Felt::new(11507536382314375479), ]), Word::new([ - Felt::new(17457546260239634015), - Felt::new(803990662839494686), - Felt::new(10386005777401424878), - Felt::new(18168807883298448638), + Felt::new(2999547141091331606), + Felt::new(3815970388294335083), + Felt::new(3235818406702695957), + Felt::new(6413763952416051197), ]), Word::new([ - Felt::new(13072499238647455740), - Felt::new(10174350003422057273), - Felt::new(9201651627651151113), - Felt::new(6872461887313298746), + Felt::new(5139836888548140301), + Felt::new(3876981810195464724), + Felt::new(16089700743443351350), + Felt::new(1833434212470092856), ]), Word::new([ - Felt::new(2903803350580990546), - Felt::new(1838870750730563299), - Felt::new(4258619137315479708), - Felt::new(17334260395129062936), + Felt::new(15554982301745873839), + Felt::new(151818417656338362), + Felt::new(9548070910841645331), + Felt::new(13558459638592248743), ]), Word::new([ - Felt::new(8571221005243425262), - Felt::new(3016595589318175865), - Felt::new(13933674291329928438), - Felt::new(678640375034313072), + Felt::new(2397011179117920116), + Felt::new(8752502466497753750), + Felt::new(4652194430176185727), + Felt::new(474647832046121463), ]), Word::new([ - Felt::new(16314113978986502310), - Felt::new(14587622368743051587), - Felt::new(2808708361436818462), - Felt::new(10660517522478329440), + Felt::new(4230974115326455730), + Felt::new(1896316786078360494), + Felt::new(11147868109563898491), + Felt::new(6393232086365640838), ]), Word::new([ - Felt::new(2242391899857912644), - Felt::new(12689382052053305418), - Felt::new(235236990017815546), - Felt::new(5046143039268215739), + Felt::new(2837471104304140642), + Felt::new(5153261125632881780), + Felt::new(640241909830199468), + Felt::new(16978206582833722982), ]), Word::new([ - Felt::new(5218076004221736204), - Felt::new(17169400568680971304), - Felt::new(8840075572473868990), - Felt::new(12382372614369863623), + Felt::new(9383518511358660362), + Felt::new(9070368828200673888), + Felt::new(16333766749737601006), + Felt::new(267018218564404219), ]), Word::new([ - Felt::new(9783834557155203486), - Felt::new(12317263104955018849), - Felt::new(3933748931816109604), - Felt::new(1843043029836917214), + Felt::new(9842084245203653494), + Felt::new(3624620050543733613), + Felt::new(11549596931368439046), + Felt::new(15569501800395392802), ]), Word::new([ - Felt::new(14498234468286984551), - Felt::new(16837257669834682387), - Felt::new(6664141123711355107), - Felt::new(4590460158294697186), + Felt::new(1982074106153676251), + Felt::new(3670811651680553202), + Felt::new(13020939175959765999), + Felt::new(1631228032466827189), ]), Word::new([ - Felt::new(4661800562479916067), - Felt::new(11794407552792839953), - Felt::new(9037742258721863712), - Felt::new(6287820818064278819), + Felt::new(12498438494396623236), + Felt::new(12522140033657837500), + Felt::new(15931812573179338859), + Felt::new(4524495014558894935), ]), Word::new([ - Felt::new(7752693085194633729), - Felt::new(7379857372245835536), - Felt::new(9270229380648024178), - Felt::new(10638301488452560378), + Felt::new(15280875087510385592), + Felt::new(1616122979288813833), + Felt::new(8971164051716151989), + Felt::new(7735253038562305937), ]), Word::new([ - Felt::new(11542686762698783357), - Felt::new(15570714990728449027), - Felt::new(7518801014067819501), - Felt::new(12706437751337583515), + Felt::new(3109214984643679462), + Felt::new(911083193857751305), + Felt::new(5901679412876477991), + Felt::new(13358708367525191703), ]), Word::new([ - Felt::new(9553923701032839042), - Felt::new(7281190920209838818), - Felt::new(2488477917448393955), - Felt::new(5088955350303368837), + Felt::new(15186971827737962282), + Felt::new(18413440267559781060), + Felt::new(10496575362998017360), + Felt::new(13081559717536478834), ]), Word::new([ - Felt::new(4935426252518736883), - Felt::new(12584230452580950419), - Felt::new(8762518969632303998), - Felt::new(18159875708229758073), + Felt::new(5459020364317991813), + Felt::new(13522209963728741381), + Felt::new(7336753520967971663), + Felt::new(6316033838662753634), ]), Word::new([ - Felt::new(12795429638314178838), - Felt::new(14360248269767567855), - Felt::new(3819563852436765058), - Felt::new(10859123583999067291), + Felt::new(9420108075927647958), + Felt::new(6547816111471735269), + Felt::new(12220545288446975893), + Felt::new(3577117082695137213), ]), Word::new([ - Felt::new(2695742617679420093), - Felt::new(9151515850666059759), - Felt::new(15855828029180595485), - Felt::new(17190029785471463210), + Felt::new(12908714971205406449), + Felt::new(12995350974802899384), + Felt::new(5883568711258737532), + Felt::new(383173514483963899), ]), Word::new([ - Felt::new(13205273108219124830), - Felt::new(2524898486192849221), - Felt::new(14618764355375283547), - Felt::new(10615614265042186874), + Felt::new(17503723628055804519), + Felt::new(9438267265380355731), + Felt::new(8794036951449618344), + Felt::new(10910433304110137166), ]), ]; diff --git a/miden-crypto/src/hash/algebraic_sponge/rescue/rpx/mod.rs b/miden-crypto/src/hash/algebraic_sponge/rescue/rpx/mod.rs index b248c41ca..164e8f0ec 100644 --- a/miden-crypto/src/hash/algebraic_sponge/rescue/rpx/mod.rs +++ b/miden-crypto/src/hash/algebraic_sponge/rescue/rpx/mod.rs @@ -94,17 +94,18 @@ impl Rpx256 { // CONSTANTS // -------------------------------------------------------------------------------------------- - /// Sponge state is set to 12 field elements or 768 bytes; 8 elements are reserved for rate and - /// the remaining 4 elements are reserved for capacity. + /// Sponge state is set to 12 field elements or 768 bytes; 8 elements are reserved for the + /// rate and the remaining 4 elements are reserved for the capacity. pub const STATE_WIDTH: usize = STATE_WIDTH; - /// The rate portion of the state is located in elements 4 through 11 (inclusive). + /// The rate portion of the state is located in elements 0 through 7 (inclusive). pub const RATE_RANGE: Range = RATE_RANGE; - /// The capacity portion of the state is located in elements 0, 1, 2, and 3. + /// The capacity portion of the state is located in elements 8, 9, 10, and 11. pub const CAPACITY_RANGE: Range = CAPACITY_RANGE; - /// The output of the hash function can be read from state elements 4, 5, 6, and 7. + /// The output of the hash function can be read from state elements 4, 5, 6, and 7 (the second + /// word of the rate portion, i.e. the middle word of the sponge state). pub const DIGEST_RANGE: Range = DIGEST_RANGE; /// MDS matrix used for computing the linear layer in the (FB) and (E) rounds. diff --git a/miden-crypto/src/merkle/empty_roots.rs b/miden-crypto/src/merkle/empty_roots.rs index 5c3fe1ae4..61fff9988 100644 --- a/miden-crypto/src/merkle/empty_roots.rs +++ b/miden-crypto/src/merkle/empty_roots.rs @@ -1,6 +1,6 @@ use core::slice; -use super::{EMPTY_WORD, Felt, Word, smt::InnerNode}; +use super::{Felt, Word, smt::InnerNode}; // EMPTY NODES SUBTREES // ================================================================================================ @@ -40,1528 +40,1528 @@ impl EmptySubtreeRoots { const EMPTY_SUBTREES: [Word; 256] = [ Word::new([ - Felt::new(0xee3d94db86d48dc4), - Felt::new(0x3d13166c7aba0368), - Felt::new(0x282e861f2936aa7), - Felt::new(0xf0328a1745537b4), + Felt::new(0xd4d013b3bb384b34), + Felt::new(0xd03164f8cbc65f58), + Felt::new(0xbbfc036f32fc5c85), + Felt::new(0xf7eabfadb9a3fb61), ]), Word::new([ - Felt::new(0x33174b312b730760), - Felt::new(0x9d1e00c5b50352b2), - Felt::new(0x16bf9ec4acef2e42), - Felt::new(0x4263877e63c4cbe7), + Felt::new(0xf67819110a99cafd), + Felt::new(0xef4a557934d0e308), + Felt::new(0x38031399d83ac329), + Felt::new(0xce88f2cbc782d190), ]), Word::new([ - Felt::new(0xa8e039042672a8bc), - Felt::new(0x1010d951d941d9d4), - Felt::new(0xd3e8f0ecc866ac3b), - Felt::new(0xb2dbbbb80da232ba), + Felt::new(0xac2fe313423178d2), + Felt::new(0xc8a44a83bcc6e12c), + Felt::new(0xbe463e50848cfaab), + Felt::new(0x974703e9298be16b), ]), Word::new([ - Felt::new(0xa0d2c1a3e455f299), - Felt::new(0x648e8e13867dc8eb), - Felt::new(0xe79f94ea61189847), - Felt::new(0xb88a89e1f2765a31), + Felt::new(0x879a7b6596dda9d9), + Felt::new(0xeb84fe8bcacdd2a2), + Felt::new(0x4840c52b62678f35), + Felt::new(0xbdb0155f421fa824), ]), Word::new([ - Felt::new(0xe168133fd9ab570d), - Felt::new(0x6fc7d0295ac5a3a2), - Felt::new(0xc973ea026e9411c), - Felt::new(0x63c29ea04552b532), + Felt::new(0xef950eb94178972d), + Felt::new(0xed3b56a2ee3e12cd), + Felt::new(0x4ce4e3dc76ff1240), + Felt::new(0x4abfa77e86abfd46), ]), Word::new([ - Felt::new(0x27e57ecc0f9f196), - Felt::new(0xc02f6e29fd19b059), - Felt::new(0x4a42fbc436efb0b6), - Felt::new(0xbff30574a98a1b29), + Felt::new(0x37a613ec638abc0d), + Felt::new(0x175a746054e30ce5), + Felt::new(0x5f9a13bf814d989a), + Felt::new(0xa87b8193d1558cfb), ]), Word::new([ - Felt::new(0x18c32592a4f4d0b), - Felt::new(0x6b9a08797252d5d5), - Felt::new(0xdbfe48f00a088a2), - Felt::new(0x16b4c3e485b173e3), + Felt::new(0x785fe8125ea68f6f), + Felt::new(0xfb24b14b32d727b0), + Felt::new(0xb694a134f1a93ea3), + Felt::new(0x25a5a60d80a3f845), ]), Word::new([ - Felt::new(0x26c8902938b831a5), - Felt::new(0x66ee91b36943f92e), - Felt::new(0x4e8deeafef9f5725), - Felt::new(0xbb35751d5dfb0a33), + Felt::new(0x860d2c1f729163b5), + Felt::new(0x2d633c512bcdd061), + Felt::new(0x279ad767db4e8c58), + Felt::new(0x9cca290b0d23c7), ]), Word::new([ - Felt::new(0x74af678f8e020ff4), - Felt::new(0xd4784cda0beed295), - Felt::new(0x4380949d841d793c), - Felt::new(0xdf587011d09d3bbb), + Felt::new(0x242a36a169740cdc), + Felt::new(0xd52c9f5159ca6de7), + Felt::new(0x56bd22a92d8ac820), + Felt::new(0xc47b5731b5d117e8), ]), Word::new([ - Felt::new(0xa211d1da76aaef98), - Felt::new(0xd904ccc6435e268), - Felt::new(0x1c6f16a5d03b8416), - Felt::new(0x87800f7f5da9c93), + Felt::new(0xe0ec018cda37fc72), + Felt::new(0xc6c4c0c4027ac161), + Felt::new(0x31706e4106bb7364), + Felt::new(0x2c98fdc73a6aff32), ]), Word::new([ - Felt::new(0xa00bbad0a52adeff), - Felt::new(0xe22179c651da9d76), - Felt::new(0x474f10493a3723f4), - Felt::new(0x84397e6bd34a1f5b), + Felt::new(0x5c353e1ae891454f), + Felt::new(0x81288a98893b47b7), + Felt::new(0xb4123d11cf90f0d6), + Felt::new(0x59d86d7b3e4d8803), ]), Word::new([ - Felt::new(0xe8f440afef4d082b), - Felt::new(0x14fff8e329613cc9), - Felt::new(0x78e984bc8b40f4f1), - Felt::new(0x6ed8f02e5be1bab2), + Felt::new(0x6ed50dc2f8ebca44), + Felt::new(0x96cac3183d07e9ee), + Felt::new(0x510e65c781fd85ae), + Felt::new(0x364de2f26f64f4b9), ]), Word::new([ - Felt::new(0xda824edf085b5f9f), - Felt::new(0xc8a8f1c1b86d349e), - Felt::new(0xe1bf6975afb7b2de), - Felt::new(0xd7df51ea51028489), + Felt::new(0x46acade0fa75da3), + Felt::new(0xe5ca56dd8a3ec270), + Felt::new(0x496e1498d81c5867), + Felt::new(0x8a357dd809d4e1af), ]), Word::new([ - Felt::new(0xf64873d31456de99), - Felt::new(0x1fc9cb920b6c72b), - Felt::new(0x96613d9d71af4373), - Felt::new(0x61d607eb097e76c9), + Felt::new(0x79ea9c14b4f80e54), + Felt::new(0x883a1aa66b877d7d), + Felt::new(0x2821d027cf4b82f), + Felt::new(0x498b9fbbb9154b65), ]), Word::new([ - Felt::new(0xca304d2b3b778719), - Felt::new(0xa54d8602f37eed39), - Felt::new(0xb4574db6dc09bcf2), - Felt::new(0x5e42cd4f1de9587c), + Felt::new(0x8141c1f5a278091b), + Felt::new(0xa462c11136d598b), + Felt::new(0x93ac8ed23507910a), + Felt::new(0x514a3f91433bd1), ]), Word::new([ - Felt::new(0x17575dfa689d8a07), - Felt::new(0x1db9d374d7436444), - Felt::new(0x21d1e8dca296f38d), - Felt::new(0xbc4aad43a9d93f54), + Felt::new(0x2638564f8f4124a8), + Felt::new(0xedb10a48ac24fbde), + Felt::new(0x8614d28f2aa8fc8f), + Felt::new(0x36ec52375c4db737), ]), Word::new([ - Felt::new(0x9fa0697330c054cd), - Felt::new(0xd5d57fbf059452e8), - Felt::new(0xe848fafb1c43414c), - Felt::new(0xacb7754fd77c9d52), + Felt::new(0x17bb63973b3ce758), + Felt::new(0xbceb2233c011acb9), + Felt::new(0x1353c736a9944f64), + Felt::new(0x755cb79ca6f7f55c), ]), Word::new([ - Felt::new(0x406af89b918e596c), - Felt::new(0xb735a2c588ee87df), - Felt::new(0xb40ff1dd1c3c6599), - Felt::new(0x675a582b4c8a68ac), + Felt::new(0xcd102aca9271751c), + Felt::new(0xe9517a03fa6e0961), + Felt::new(0x31253e5814e7c010), + Felt::new(0x391f3e31cb7a16d8), ]), Word::new([ - Felt::new(0x530ff6be0c86a2f6), - Felt::new(0x5541fabfefd34c91), - Felt::new(0x4af1579d212149ae), - Felt::new(0x23962b7df862f27c), + Felt::new(0xacd417612af2a6ac), + Felt::new(0x238b4d41647e0407), + Felt::new(0x43bd0eb02df70e6a), + Felt::new(0xe9f44baff7a2a27a), ]), Word::new([ - Felt::new(0x1676b694f41cfc0d), - Felt::new(0x59b165ea5f354fd8), - Felt::new(0x5b45ee14e2501f08), - Felt::new(0xd0c8ca7bc2e01e18), + Felt::new(0x1116ad4d849e6806), + Felt::new(0xd6190ac4ec72eef2), + Felt::new(0x3ecf9207fd73cd85), + Felt::new(0x6c78ec956d2d1051), ]), Word::new([ - Felt::new(0x2cff5d1e629ddc7b), - Felt::new(0x5062be34e4351fe), - Felt::new(0xfd76495b9d8ea67), - Felt::new(0xb96453b1c8060ca8), + Felt::new(0x205fe8449bfce0de), + Felt::new(0xe165f38d70da454a), + Felt::new(0x822e14e93a452d0a), + Felt::new(0x94d05b4cd577a64), ]), Word::new([ - Felt::new(0x860b00517d3de1ef), - Felt::new(0xd609c82af07b9dad), - Felt::new(0xa54a528b8f1cbddc), - Felt::new(0xb4fff658ed97e635), + Felt::new(0xf492fd7cacb1922), + Felt::new(0x2a703ca8f69ad1c8), + Felt::new(0xfcadfa03b409ead8), + Felt::new(0x782795592ae9a71e), ]), Word::new([ - Felt::new(0xd002cea8f347c347), - Felt::new(0xa135cebffdf3ec10), - Felt::new(0xb0200ea08da2cef4), - Felt::new(0x4e6f2f75d627b137), + Felt::new(0xa64f8b17ffb12710), + Felt::new(0x62f2e2fcae200d34), + Felt::new(0xbafb78b1425cddb1), + Felt::new(0xcfb390385991d1a7), ]), Word::new([ - Felt::new(0xc1983ce677cabbf4), - Felt::new(0x58f0143480f44788), - Felt::new(0xf8c23e4f84b6c6c1), - Felt::new(0xc9ce41371c4900b8), + Felt::new(0x3536fe931db61ed7), + Felt::new(0x23cc15387a7c7c4d), + Felt::new(0xd186b10bba44f5a0), + Felt::new(0xcc0774c067c213ca), ]), Word::new([ - Felt::new(0x837d99979bc9a5e6), - Felt::new(0x7621559aa4af175a), - Felt::new(0x6986737347c799c2), - Felt::new(0x8cee99eb47c3e702), + Felt::new(0x27f3232af1718d73), + Felt::new(0x6990c361978421b3), + Felt::new(0xa4a29b2ef4262014), + Felt::new(0x2245bc20ac47d643), ]), Word::new([ - Felt::new(0x42e17ba02508a41f), - Felt::new(0xb95e349bd55ba61f), - Felt::new(0xcc2bfeb29c4c68b2), - Felt::new(0xf268f57860a446b1), + Felt::new(0xfaf974458f303f50), + Felt::new(0xd0f09ad179c053b4), + Felt::new(0x1da69781fd4092b9), + Felt::new(0x1a199f9d1188e3a4), ]), Word::new([ - Felt::new(0xd3ffd4ccc6dda508), - Felt::new(0x81db1910ef04ca07), - Felt::new(0x5c698ee6c3aeab97), - Felt::new(0x2ac1e2c2c5f237de), + Felt::new(0x8507c4f9b071ed40), + Felt::new(0x474c7c36c6f0e46), + Felt::new(0x1c86f35500c8ffb6), + Felt::new(0x1e643fd431145fbc), ]), Word::new([ - Felt::new(0x1f42a1ef25bd0aad), - Felt::new(0x81b0f63e2760b8db), - Felt::new(0xe9607c7061b018f9), - Felt::new(0xf02a88202294a700), + Felt::new(0xdda5fad6063ec39c), + Felt::new(0x5beb591fe9f74db8), + Felt::new(0x2cd9f4a80f04ff02), + Felt::new(0x7268b4fb35179185), ]), Word::new([ - Felt::new(0xea5da09b39b60468), - Felt::new(0xe48ea41d94fe91a7), - Felt::new(0x24dde954ce08b32b), - Felt::new(0xe1bb6e41bd0613e6), + Felt::new(0x308f6a5c95ce95fc), + Felt::new(0x82f70df64a17e9f0), + Felt::new(0xe80de3338c098af1), + Felt::new(0x5fe10b5e07998b3b), ]), Word::new([ - Felt::new(0xc5e9f7188b43a24f), - Felt::new(0x8d7132abc9d901e4), - Felt::new(0xdc09a33ff4d0eb03), - Felt::new(0xa119bb1db594b4cf), + Felt::new(0x28e4f449c4dc2adf), + Felt::new(0xe174db2e584aa9c3), + Felt::new(0xe8e3eb3aed67d861), + Felt::new(0x38fc385388fe3b4b), ]), Word::new([ - Felt::new(0x589002afcbd4a233), - Felt::new(0xe4eae44d3c2a308d), - Felt::new(0x8bc0bca14b6b4dde), - Felt::new(0x3716e0e86a7aaa6c), + Felt::new(0xae686c27269cbf5b), + Felt::new(0x11b9c5ff17793d4), + Felt::new(0xe0c5db4b2059c649), + Felt::new(0x445555cda23e2339), ]), Word::new([ - Felt::new(0xaa4ba9602230007e), - Felt::new(0x2b2c3e14b888a3d4), - Felt::new(0x90a36fb42ec2ba19), - Felt::new(0x2e07ef26b078c4a7), + Felt::new(0x37af66cbfacb6574), + Felt::new(0xb6f29cd32ecff8a9), + Felt::new(0x109cc2114e88e51), + Felt::new(0x315e647d8b7aff19), ]), Word::new([ - Felt::new(0x32307da7aad33113), - Felt::new(0x343ed87928b9ab0c), - Felt::new(0x1c01d79482c021f0), - Felt::new(0x6f866afccc595439), + Felt::new(0x88435bdfe977671b), + Felt::new(0xbac2cd47398206ae), + Felt::new(0x8a6524314f775ffa), + Felt::new(0x50a0747244165a47), ]), Word::new([ - Felt::new(0x9780804b58b0d066), - Felt::new(0x1329929c6dc19c09), - Felt::new(0xc04add06dbaef6bf), - Felt::new(0xf494a28db17c5c4), + Felt::new(0xf93146fff2f3e0a0), + Felt::new(0xd1a7fb4ede819b11), + Felt::new(0x349045c7bc84e1e), + Felt::new(0x9c2b9a154ae7bbe7), ]), Word::new([ - Felt::new(0xe9dbb1c64d55571f), - Felt::new(0x663f0f716f28734), - Felt::new(0x7285fd4b8e87a78c), - Felt::new(0x2e152a4595b7597e), + Felt::new(0xad06f8b05dac78ee), + Felt::new(0x37816807e44d3780), + Felt::new(0xe8e5bd1da59ce1d9), + Felt::new(0x91ae41e1b89275aa), ]), Word::new([ - Felt::new(0x5531fabfa5960807), - Felt::new(0x8afe79be96d903a4), - Felt::new(0x24321cce4f1942f8), - Felt::new(0xb1829ec9d60aac8f), + Felt::new(0x4715873f981c2ccf), + Felt::new(0xb7aa499ae6b01e62), + Felt::new(0x959a1928d30e11d0), + Felt::new(0xcc9abdbe7aaad07b), ]), Word::new([ - Felt::new(0x9f7afc6634a82d1), - Felt::new(0x496e26bc17af352b), - Felt::new(0x8216f090e1d13381), - Felt::new(0x610cf5a3b3e190f9), + Felt::new(0x3dcf6c350a8e526), + Felt::new(0xc52777fc1f6b32e8), + Felt::new(0x9c49c05bb56ddc2e), + Felt::new(0xa1b3dfc99f13a03f), ]), Word::new([ - Felt::new(0xb5f8c141a9acd007), - Felt::new(0x4430345ace970576), - Felt::new(0x64d97e5533db3170), - Felt::new(0x95c016d769b0fc2d), + Felt::new(0xa597f830226ef1f5), + Felt::new(0x5e1fcf25e10b4cf3), + Felt::new(0xe025b9a81ee9756d), + Felt::new(0x5dd31ba2e0ec0692), ]), Word::new([ - Felt::new(0x88820d6a7ba5a94a), - Felt::new(0x27b614d79eb7b30b), - Felt::new(0xff2751e904085d5f), - Felt::new(0x752509a0860b37d), + Felt::new(0x4be63f346843f194), + Felt::new(0xb30132e5e74d00db), + Felt::new(0xe2ccdeb944709adc), + Felt::new(0xd1f0139c25f9b13d), ]), Word::new([ - Felt::new(0x1070bc84bb53a855), - Felt::new(0x1edad3d5da84e59b), - Felt::new(0x8efd48a13e4dfe0d), - Felt::new(0x3ab20af6203aba62), + Felt::new(0xca9cd71ab6856ea8), + Felt::new(0x10f6ea721a4bf0a5), + Felt::new(0x9a06e1a183a22306), + Felt::new(0x8a3faeaf4a2ea40), ]), Word::new([ - Felt::new(0xb4d6d3cc85438d08), - Felt::new(0x5592639fb2792724), - Felt::new(0x5939996ea4c52176), - Felt::new(0xaa83a79236367ee7), + Felt::new(0xb7e44129fa910201), + Felt::new(0xee63e42d5870e05), + Felt::new(0x90de82957f6f7611), + Felt::new(0x922508602610b4c4), ]), Word::new([ - Felt::new(0x4c08ac735aa1925a), - Felt::new(0x84951e177ac84e86), - Felt::new(0xd5b2657778d3271a), - Felt::new(0x375f75333654a77c), + Felt::new(0x5748ea87fe17aa82), + Felt::new(0xf254ca97acb5860b), + Felt::new(0xf226ad12f0ef99d1), + Felt::new(0xe8f16fcdee81c903), ]), Word::new([ - Felt::new(0x2fcbd8fcd125e5), - Felt::new(0xd8f711ed1b369d43), - Felt::new(0x9688301695b6bcd4), - Felt::new(0x52a010319401179), + Felt::new(0xb9082632c812362), + Felt::new(0x9ebd9df147cc9ac1), + Felt::new(0x149c151789f00cc), + Felt::new(0xec10fb00b714c0c9), ]), Word::new([ - Felt::new(0x1c67f8fde4c9c070), - Felt::new(0x438ccdf9d82b3a3f), - Felt::new(0xb9324515d5547ff5), - Felt::new(0x85ff37504c8230f0), + Felt::new(0xf223d6595826f21d), + Felt::new(0xce63a90b49c4ca59), + Felt::new(0xf727d89b56e794bb), + Felt::new(0x1c9181246b3526b6), ]), Word::new([ - Felt::new(0xcf8b6fabda4621f3), - Felt::new(0x1df94bb4ea8aeb6d), - Felt::new(0x8efffb7e8996b9e5), - Felt::new(0xa9aef575e8a86c4d), + Felt::new(0xe0af5862ca07232b), + Felt::new(0xb860dc5cf7476388), + Felt::new(0x318cf53cb85cf0aa), + Felt::new(0xc77418b80807b2f4), ]), Word::new([ - Felt::new(0x6e20862a64baaaef), - Felt::new(0xc54fbbfa034d6f1b), - Felt::new(0x16d9fd099f5bba71), - Felt::new(0xe4ac4cf3186fae83), + Felt::new(0x315464c85cd19846), + Felt::new(0x14b0c0ef112d95fe), + Felt::new(0xdece0dcc6de0455f), + Felt::new(0x3b164fa9f4be4c06), ]), Word::new([ - Felt::new(0x12914625293d7f84), - Felt::new(0xd3b46add4f77be8), - Felt::new(0xaac8846e6eeb9acd), - Felt::new(0xab6a69452b4b167b), + Felt::new(0x8e66d668c9d512c5), + Felt::new(0xea846421e3ec6e05), + Felt::new(0xffc03d33dadcbac8), + Felt::new(0xab1ae8f59bf9a5d6), ]), Word::new([ - Felt::new(0x69652e812cdfe03d), - Felt::new(0x22731622b139de96), - Felt::new(0xd7226e9a887f368d), - Felt::new(0xe9bbf6ad8f51ee13), + Felt::new(0xe163b5dabfe4edd0), + Felt::new(0x4dc36c5ed11f9cb2), + Felt::new(0xc451461bd8f8cda5), + Felt::new(0x9792f15ace2257a7), ]), Word::new([ - Felt::new(0xc39a01964af141d7), - Felt::new(0xb5ab2062263dcaa2), - Felt::new(0x1d7fbcd9204cbd34), - Felt::new(0xd48c517d5543c163), + Felt::new(0xad94af4ea13cbd58), + Felt::new(0x49c76b5c6b037521), + Felt::new(0x3fff24b5cba2abbc), + Felt::new(0xd2ea4cae87e32bc3), ]), Word::new([ - Felt::new(0x44118fda0c2b4af2), - Felt::new(0x487d307ce7444bb2), - Felt::new(0x171b7c6a17d734b2), - Felt::new(0xd9a737ddf65949d9), + Felt::new(0x5ee230a2b21fbcc7), + Felt::new(0xe7c913b10480cb37), + Felt::new(0x6a24020e33160aa4), + Felt::new(0x84c850b3d3ee08d2), ]), Word::new([ - Felt::new(0xc2cdc1b940450fec), - Felt::new(0x29864b9632eff0cd), - Felt::new(0x9ae31f150850e78c), - Felt::new(0xf9f9d0ef1092be87), + Felt::new(0x3bd7c1276c057731), + Felt::new(0x7624e520a4e8689f), + Felt::new(0x9fc7046216ea744f), + Felt::new(0x1e91ef277981e545), ]), Word::new([ - Felt::new(0x1703dd34002f3862), - Felt::new(0xf04b44446be81ea1), - Felt::new(0x8da51598849beb99), - Felt::new(0x8112e155f7f856a0), + Felt::new(0x750ed3b5ce658966), + Felt::new(0x1ad8497510856c13), + Felt::new(0x6a454fcd8e9aecae), + Felt::new(0xe173f9edaa9f520), ]), Word::new([ - Felt::new(0x3d4da8351f41dc1c), - Felt::new(0x682e55817f56f30b), - Felt::new(0xf20cc7fe5b98b951), - Felt::new(0x8297d3de042785d4), + Felt::new(0x3da83f217a938e84), + Felt::new(0x72429a871dd069e8), + Felt::new(0x56fef2cfd959214e), + Felt::new(0xebdec7e27de3d78e), ]), Word::new([ - Felt::new(0x1f9d07a435a6d13e), - Felt::new(0x789a1330825c199a), - Felt::new(0x6e058e9dbc30f3a0), - Felt::new(0xb09be46b59290984), + Felt::new(0xe4f9bd5af54aea89), + Felt::new(0x93e3490464ba3dec), + Felt::new(0x2977298399d5431a), + Felt::new(0x8cbf576d0718e734), ]), Word::new([ - Felt::new(0xaf2d49c9a3975d21), - Felt::new(0xebd4d399fc30a751), - Felt::new(0x224a3884ca353e5d), - Felt::new(0xbebba344bbe055a7), + Felt::new(0xbab45c995d032de2), + Felt::new(0x72f5b2172139a0ac), + Felt::new(0x9e187c1cf79c0b58), + Felt::new(0x9b90ca39e8bb2da9), ]), Word::new([ - Felt::new(0xdf576dc16b0abc3f), - Felt::new(0x40439af403c36338), - Felt::new(0x317b1f2308849c53), - Felt::new(0x91e5c9d14107cb04), + Felt::new(0xae672772d64afa0c), + Felt::new(0x370fa7b34411bee9), + Felt::new(0x28ae49eb522be4f3), + Felt::new(0x1e5737f6b6d7a0f), ]), Word::new([ - Felt::new(0x93af916aa15f97e2), - Felt::new(0x50d4aec3e408fba7), - Felt::new(0xd16bd5f71b6d6915), - Felt::new(0x27b96db871be03ef), + Felt::new(0x1c901146dab3e028), + Felt::new(0xa48d69faa209a43d), + Felt::new(0x812dee69d638b842), + Felt::new(0xafef0923d1fc3d54), ]), Word::new([ - Felt::new(0x72fce6dd7d54e348), - Felt::new(0x632a2e8b6177c670), - Felt::new(0xefd897bebdc4ec2b), - Felt::new(0xfe66bfe440033790), + Felt::new(0x59633b3e017134fb), + Felt::new(0xb0e7714970789f95), + Felt::new(0x8d025fa5876626da), + Felt::new(0x964013427fb35552), ]), Word::new([ - Felt::new(0xc581364aef408d6a), - Felt::new(0xfcc7efb35cccae32), - Felt::new(0xee0a97dded065fbf), - Felt::new(0x2b1eb2c45fd0e633), + Felt::new(0xa6f318dbb996cec6), + Felt::new(0x602d3f78ea9e5fc7), + Felt::new(0x33cc086f6c81ec4c), + Felt::new(0xfb5875ef0723ac08), ]), Word::new([ - Felt::new(0x9e460e8159152a88), - Felt::new(0xcc5a2946f03bf507), - Felt::new(0x95535e9cf29e4ab9), - Felt::new(0x29b23d31ffe6df18), + Felt::new(0x47f22a85e61ccce2), + Felt::new(0x183642989e08d0c4), + Felt::new(0xdbc6ac210367e51d), + Felt::new(0x713d9f083fb06bed), ]), Word::new([ - Felt::new(0xbae2c405d8ba715d), - Felt::new(0xb886f0545ae16153), - Felt::new(0x728d5965a4cdfc0b), - Felt::new(0x86bd552048f3ebc4), + Felt::new(0x3b9b50e61ac294de), + Felt::new(0xa2d43695646f9847), + Felt::new(0xbf7baaab45a7a335), + Felt::new(0xfff6990e4e2af1c5), ]), Word::new([ - Felt::new(0x3a4c6dbaa6feda93), - Felt::new(0x8a32917885a3f22c), - Felt::new(0xd6016ba7fc1a0717), - Felt::new(0x3bfd41569497b156), + Felt::new(0x2f14338754790fc2), + Felt::new(0x880c6e172b727a07), + Felt::new(0x62648c19e70a3d9a), + Felt::new(0x11cb177e7cfb88c0), ]), Word::new([ - Felt::new(0xa907fad371653f15), - Felt::new(0x6be9ce6ac746f5bc), - Felt::new(0x1bee5ac8750d2444), - Felt::new(0x16050d83d4f7a90c), + Felt::new(0xbcc6ccf09f20091d), + Felt::new(0x7522cbe658fd241a), + Felt::new(0x1812abe3a41a4280), + Felt::new(0xfc42fb700c9dee6b), ]), Word::new([ - Felt::new(0x4b194182aa7e9324), - Felt::new(0x813af49c845cea5e), - Felt::new(0x6886f4d8628bab16), - Felt::new(0xe3b6ef1419e2432c), + Felt::new(0x9f9ed8a88a3d4726), + Felt::new(0xba717fb8a0e5a430), + Felt::new(0x8b6c5d03ae8285e0), + Felt::new(0xc79ea08e4547b79c), ]), Word::new([ - Felt::new(0x3edc103de28f1fac), - Felt::new(0xb6a05b8802d6ed5c), - Felt::new(0xf320c3f130a175c8), - Felt::new(0x326c8bb02f9a51f6), + Felt::new(0xbfabb7d2dcad0d97), + Felt::new(0x1b1b6214bd392a65), + Felt::new(0xc0dfcf7f7c8a0075), + Felt::new(0x92f1111ac16144a6), ]), Word::new([ - Felt::new(0x5b1ac27a49b5d1da), - Felt::new(0x9e1fa75b04da7545), - Felt::new(0x9a522396a1cd68af), - Felt::new(0x91a4d435f3fcd43f), + Felt::new(0xbf5f42c3265dcb0), + Felt::new(0x407eb8baea7dcb85), + Felt::new(0xb8ed9f82f53adca), + Felt::new(0x48259d20bd4bdb71), ]), Word::new([ - Felt::new(0x318ac5d8f1e489ce), - Felt::new(0x339e7a0b2aec5843), - Felt::new(0x38f15bf9832a2c28), - Felt::new(0x5e3fef94216f72f1), + Felt::new(0xc4f4b1eb33ce8426), + Felt::new(0x5a8bde74b2d03fef), + Felt::new(0x92edaf43c6da7999), + Felt::new(0x72e9f2ac423e2c0a), ]), Word::new([ - Felt::new(0xc43e0723d2a7e79c), - Felt::new(0xa06167cc0ebdf1e5), - Felt::new(0xe62f10089af57ba6), - Felt::new(0x838c863d60b859a2), + Felt::new(0x598f122070bf172b), + Felt::new(0x5150f2a1c8871ab9), + Felt::new(0xb12f586f154cdad3), + Felt::new(0xcfce74f1c561e599), ]), Word::new([ - Felt::new(0xd10456af5f30e5d5), - Felt::new(0x235df7fe21fb912c), - Felt::new(0xe5acc29d13d80779), - Felt::new(0x580b83247a1f6524), + Felt::new(0x438ae220bc4198c0), + Felt::new(0x8dc7553ee68ff669), + Felt::new(0xc535627dc3bc8821), + Felt::new(0x9f82b9714c7fccf9), ]), Word::new([ - Felt::new(0x2a8b1bf7e9bc5675), - Felt::new(0x9e523f2d659a3e30), - Felt::new(0x3ecfdb1615666b74), - Felt::new(0xf53746b86fedee7f), + Felt::new(0x652ffdc3400dafdb), + Felt::new(0xa66c9e994e20af01), + Felt::new(0x7d34b0be5266c533), + Felt::new(0xea275f50b8ff8b9e), ]), Word::new([ - Felt::new(0xa12095b3b22680a9), - Felt::new(0x3010ad751585161d), - Felt::new(0xfb9c0ea33c7437b2), - Felt::new(0x9225d8151ec724a8), + Felt::new(0x7a91e0682cfb3425), + Felt::new(0x544b7251e18d909e), + Felt::new(0xd3d9b1f4d64c1345), + Felt::new(0x3a7ac3166398adf9), ]), Word::new([ - Felt::new(0x1b09eac8ad815107), - Felt::new(0x33cb241ad41b562d), - Felt::new(0xa04f457b4cd1ece9), - Felt::new(0x84f27a45985d700e), + Felt::new(0x13b43b61fd8b9763), + Felt::new(0x7621715646680ba7), + Felt::new(0x9554a9e85f3ef765), + Felt::new(0xb82abbece04fe626), ]), Word::new([ - Felt::new(0xe5598d92d1507185), - Felt::new(0x84aa2bf7d87a26e8), - Felt::new(0x158f0e13550dec2a), - Felt::new(0x54d699e5eb65ee63), + Felt::new(0x47c8c9caaae02ee2), + Felt::new(0x69170ecdb159f653), + Felt::new(0x19e86343ec24c391), + Felt::new(0xd97d7f86759e06db), ]), Word::new([ - Felt::new(0x902e89f122f8f8f7), - Felt::new(0xc2da7127af8c699a), - Felt::new(0x75762e75b77a1662), - Felt::new(0x7e683b3c116af130), + Felt::new(0xaa016ad8b15ae2a3), + Felt::new(0xbf79198389f5e29a), + Felt::new(0xebb1be02db8e5dad), + Felt::new(0xbaad4adddac74614), ]), Word::new([ - Felt::new(0xabc2aa2ecd2316dd), - Felt::new(0x44558fa721857f00), - Felt::new(0xf61dd475fdbc23d0), - Felt::new(0x22ba84332065a9e8), + Felt::new(0xa598203fd55a57b5), + Felt::new(0x792d5bb12dfa6981), + Felt::new(0x60165fc661111f52), + Felt::new(0xfba792703986303a), ]), Word::new([ - Felt::new(0x5aa94e045e4bb7ae), - Felt::new(0xf6ddadbdd8747728), - Felt::new(0xeeab65efab2a1d2), - Felt::new(0xd12cc579c49b9db5), + Felt::new(0x22945a0a7900e41f), + Felt::new(0x6be915078ff845f2), + Felt::new(0x217d9b0dd802d38a), + Felt::new(0x78f69158f7f54bf9), ]), Word::new([ - Felt::new(0x71ea68262a73196a), - Felt::new(0x9612483af09f1bde), - Felt::new(0x7fe5fd69bbf241a4), - Felt::new(0x34de27c57b37975d), + Felt::new(0x76e23b690cd0c900), + Felt::new(0x6d8206a2d66bbeb), + Felt::new(0xe9aa6f3f234fbbb4), + Felt::new(0xe44e67909ba1f23c), ]), Word::new([ - Felt::new(0xf29bc8ba140714f6), - Felt::new(0xf0b44caca4f6561e), - Felt::new(0x742695d702446774), - Felt::new(0x7e1437b52ee16c0c), + Felt::new(0xb54f48d189e7a365), + Felt::new(0xd266320771aab9f3), + Felt::new(0xafcc721b705424b5), + Felt::new(0x6408c7735a1039fc), ]), Word::new([ - Felt::new(0x13f6180493eaa129), - Felt::new(0x8fa2e77f499c911c), - Felt::new(0x1223e5ccda975bf), - Felt::new(0xc2a362e5449eac8b), + Felt::new(0x15f30216ae30560b), + Felt::new(0x4459070f418e2bfd), + Felt::new(0x9913a6f33eb9830b), + Felt::new(0x57f960ec9034c946), ]), Word::new([ - Felt::new(0xcf1254ec733c8fb0), - Felt::new(0x34359ae1e2272fc9), - Felt::new(0xce928a65262d59d5), - Felt::new(0xc84e1f72e2e78101), + Felt::new(0x3a81ce1c4756c8a6), + Felt::new(0xb340cc1d756ec0a7), + Felt::new(0xa8270bc5bdc0b8cb), + Felt::new(0x689965c6ba6cbe15), ]), Word::new([ - Felt::new(0x8841b659676a2df5), - Felt::new(0x4c808c965135ff8f), - Felt::new(0x374d574fd96ee7d1), - Felt::new(0xa0ae0e5765bc8716), + Felt::new(0x37f8b3632548361c), + Felt::new(0x8d04fff8fc271035), + Felt::new(0x6660bc2cafa82aa9), + Felt::new(0x8afbedd48a8365cd), ]), Word::new([ - Felt::new(0xba3692cf34a6eb7a), - Felt::new(0x384dce8b1fd8fcd5), - Felt::new(0x248f1c83f6cf6055), - Felt::new(0xbf50ca14b3c5b022), + Felt::new(0xd2441cfa99cc7793), + Felt::new(0x9fa78d1bdb13041a), + Felt::new(0x77ff29ad572478e7), + Felt::new(0x6d9f5ef24c925e07), ]), Word::new([ - Felt::new(0x18611824fa468341), - Felt::new(0xaab4187ff224ec04), - Felt::new(0x4ad742d8a070d084), - Felt::new(0xfa3bb42df7d86480), + Felt::new(0x2c80aa446b66d913), + Felt::new(0x57275023986521ae), + Felt::new(0xaedcf3d27a794882), + Felt::new(0x19a6cef92c027139), ]), Word::new([ - Felt::new(0x2ab25bf43fc462b5), - Felt::new(0x6ac0cc243f54b796), - Felt::new(0x2401eabf391a2199), - Felt::new(0x62a71dae211b983), + Felt::new(0xbd054fd6a112de4e), + Felt::new(0x834c58a59932bbf8), + Felt::new(0x3ae96c071ee1793d), + Felt::new(0x8ef8f97ff99c5454), ]), Word::new([ - Felt::new(0xbc5e568df9f18772), - Felt::new(0xee864850b75a99ba), - Felt::new(0x2a53e3e6776ae456), - Felt::new(0x8eb51bedbe483d7c), + Felt::new(0x8856f7bb1b174a59), + Felt::new(0xf6563ff354a46696), + Felt::new(0xe1fbc7d206c90227), + Felt::new(0xcaa3af84acd3c8e1), ]), Word::new([ - Felt::new(0xce8161f4c705bfbb), - Felt::new(0xf1071a4e343a37e9), - Felt::new(0xddc4878a9e5de00f), - Felt::new(0xee33d737cd3c5dc8), + Felt::new(0x66772e7cb41d39fc), + Felt::new(0xacca4213ddea573d), + Felt::new(0x42664f05a276b4cc), + Felt::new(0xb29fe26a22456679), ]), Word::new([ - Felt::new(0x9eadd43aebfcd43d), - Felt::new(0xf35cec43429c0a95), - Felt::new(0xcad253fc16b63e5a), - Felt::new(0xea25dc9baaf21d38), + Felt::new(0x24e2318aebce5b35), + Felt::new(0x73077a8a48ad184), + Felt::new(0x8bbc90259569d580), + Felt::new(0x56480eff5d4c906a), ]), Word::new([ - Felt::new(0xa85a87fbf220f449), - Felt::new(0x1db1c09109882161), - Felt::new(0xab5139cb30eb2c88), - Felt::new(0xe62f2ade31d95b14), + Felt::new(0x35b40543fd5d212b), + Felt::new(0xa58a937ff2de45f6), + Felt::new(0x5fcccfd472db95d8), + Felt::new(0x4f161100757a6dea), ]), Word::new([ - Felt::new(0xad3fae6f7f635376), - Felt::new(0x21e5dba9b8e21ac8), - Felt::new(0x86506eeeba6c7151), - Felt::new(0x6bf71fdffc8d9ae7), + Felt::new(0x5dadd572c3c22422), + Felt::new(0x3206d7f7b44ebf8d), + Felt::new(0x8b4bf193244db448), + Felt::new(0x6bcb14c07dcc9c98), ]), Word::new([ - Felt::new(0x37ec52a9396f4574), - Felt::new(0xf19404a514aa9285), - Felt::new(0x3ed5ae669769c4e7), - Felt::new(0x2286b493b85c9481), + Felt::new(0xaa20788fc7f3a4d0), + Felt::new(0xe2e2bfd3f097ca53), + Felt::new(0xa978d0066c19352f), + Felt::new(0x5398d184423634e7), ]), Word::new([ - Felt::new(0xc37fc37b83940bd2), - Felt::new(0xe3d67417540b620b), - Felt::new(0x1495f7a7848dde0a), - Felt::new(0xeaf4f9c053465ff), + Felt::new(0x91d0351a7c8be21f), + Felt::new(0xda7751040d856eea), + Felt::new(0x4c5a8dc777ef48de), + Felt::new(0x5b2f5c5e4cca2803), ]), Word::new([ - Felt::new(0x80131752569df8f0), - Felt::new(0x30720a862b82f732), - Felt::new(0xabed5fb95dbe678b), - Felt::new(0x6cf7da37075ad45e), + Felt::new(0xc691ee791a55a457), + Felt::new(0xeb1c793f34c2734), + Felt::new(0xbcae087a3d678be3), + Felt::new(0xf3831ebdcedce937), ]), Word::new([ - Felt::new(0xa318ea66909473fe), - Felt::new(0x4a6c6ebc4bee8b3c), - Felt::new(0xf0d622f04ce1b02e), - Felt::new(0x92c2f8e192c000a1), + Felt::new(0x70698bc7a47bfee6), + Felt::new(0xd0de44e29f3f53c3), + Felt::new(0x1c783f6a3027d6d4), + Felt::new(0xcf471edad4b8b5b1), ]), Word::new([ - Felt::new(0xb39d728756dca017), - Felt::new(0x4f66acee5bcd7d98), - Felt::new(0xf623331bed29e125), - Felt::new(0xbcfc777f0eb03793), + Felt::new(0x9d9a7ba0c28c9b0), + Felt::new(0xa9c5ded371690a3), + Felt::new(0x68cead239c142d5d), + Felt::new(0xb3da455ac3e8c280), ]), Word::new([ - Felt::new(0x6cdabd98e067b039), - Felt::new(0xd6356a27c3df3ddc), - Felt::new(0xd5afb88820db9d2f), - Felt::new(0x8203a7adfa667bfc), + Felt::new(0x45e78e5a90711466), + Felt::new(0x5e586906a8afdbfe), + Felt::new(0x6957d43fe2fbf643), + Felt::new(0x8169390aa0a7a016), ]), Word::new([ - Felt::new(0x1ddef8e482da50e0), - Felt::new(0x7fa3c9c0865609ec), - Felt::new(0x6ca762886d4d6227), - Felt::new(0x9a95160f2a4fe5d9), + Felt::new(0x651849781803dcba), + Felt::new(0x1dfa87fa6bb77c70), + Felt::new(0x407a3c5fa2a98eba), + Felt::new(0x1d68b5e80773f948), ]), Word::new([ - Felt::new(0x607230c3b366dbd5), - Felt::new(0x5b996a7d876b7602), - Felt::new(0xf61df5d15469c8ea), - Felt::new(0x9bb4f5c06ac49403), + Felt::new(0xd1bc04ab006424b9), + Felt::new(0xc26dca97a7c8b57c), + Felt::new(0x3ebccc08d498980f), + Felt::new(0x4aadc0cf30681742), ]), Word::new([ - Felt::new(0x6a27c9e7082595e7), - Felt::new(0xbf93eb89e2090438), - Felt::new(0xd2db18139bedc636), - Felt::new(0x79710c33a1f1f612), + Felt::new(0x691bbae5c2363914), + Felt::new(0x2701ea5c4090a565), + Felt::new(0x543dad0d02a72d6c), + Felt::new(0x7ca616c64e6e8431), ]), Word::new([ - Felt::new(0xf54e4461aa09608b), - Felt::new(0x898a7b52804d88c9), - Felt::new(0xbc548fab0257ea25), - Felt::new(0xe783017a62b49474), + Felt::new(0xd3e4efff0a78a14f), + Felt::new(0xfc4778255fc8af49), + Felt::new(0x546dc6aa0893f40a), + Felt::new(0xef5cce0fc114d149), ]), Word::new([ - Felt::new(0xf7efdb376a7734c9), - Felt::new(0x2d4ded56d9ef2076), - Felt::new(0xa17d90a509b879d0), - Felt::new(0xcf012a20045b29e1), + Felt::new(0x649810ed8e93ca3e), + Felt::new(0x4485a76dd95d5525), + Felt::new(0x7c900111bca87c90), + Felt::new(0x10e1fe25f069dde8), ]), Word::new([ - Felt::new(0x37e40a30232a4f06), - Felt::new(0xfbd9877fb761052e), - Felt::new(0xc4c41f56a70377cd), - Felt::new(0x631e942f6680d4cc), + Felt::new(0xec89042fdd1f8b54), + Felt::new(0xf0078a00c08ce8e4), + Felt::new(0x62270559b0fc131b), + Felt::new(0xe0b082313e5a1e06), ]), Word::new([ - Felt::new(0xcf868b6d54b515a5), - Felt::new(0xa522edf7c43f7aee), - Felt::new(0x66057652f34d479), - Felt::new(0x59f4a86223bc80bd), + Felt::new(0x45339be9146a2de8), + Felt::new(0x5fc43b172c080f4a), + Felt::new(0x1326d84051af11cc), + Felt::new(0xd4388c68206e571), ]), Word::new([ - Felt::new(0xb7214ce5a0ba8dfd), - Felt::new(0x5c7a6e583e4e255e), - Felt::new(0xabc8369f8bf38a1c), - Felt::new(0xb5db79ae07f0689c), + Felt::new(0x90f7990f2011d278), + Felt::new(0xd7fd43dfe4e2801a), + Felt::new(0x891eeb2683ddbcd), + Felt::new(0x6428a09bd8abd20d), ]), Word::new([ - Felt::new(0x18c980169ef2d0bb), - Felt::new(0x6526b64df8eb4eac), - Felt::new(0xfe4d8327ca5bd91a), - Felt::new(0xe36d607069c7dd85), + Felt::new(0xa5391efe50dbd262), + Felt::new(0xed3faada8319059c), + Felt::new(0x65ba768005e0ca21), + Felt::new(0x1db0617dde441c19), ]), Word::new([ - Felt::new(0x602a97209948e5cc), - Felt::new(0xb7d19db914da726), - Felt::new(0xe4e43672c24d376c), - Felt::new(0x8bb9f7465e019213), + Felt::new(0xfd185ff92b0d6665), + Felt::new(0x493b9e981a928985), + Felt::new(0x10a8cc048b503dfc), + Felt::new(0x431de81f245199a1), ]), Word::new([ - Felt::new(0x187bff077d393e3d), - Felt::new(0x17fb9a97c5055580), - Felt::new(0x618469c060eb2719), - Felt::new(0xfc7be4b58477e5ac), + Felt::new(0xe7bd111d49122dee), + Felt::new(0xf3cbc6eb3ae9ad03), + Felt::new(0x1aa06cb4e6bfd9d0), + Felt::new(0x7000818ef60948bf), ]), Word::new([ - Felt::new(0x1d40fcbc7a25cc97), - Felt::new(0xaee142f7cebadbd5), - Felt::new(0x22dbaed94300ddf8), - Felt::new(0xe069c36278753a06), + Felt::new(0x3f937eae6d1bc12f), + Felt::new(0x31a6204b20c50f62), + Felt::new(0x2cb6d3bf7fb63b71), + Felt::new(0x1c6cebf6859f190), ]), Word::new([ - Felt::new(0xcd1e21c5f02ce44d), - Felt::new(0x3b0ddbaa04daff25), - Felt::new(0xbb55cd14f54818c7), - Felt::new(0xc57f1b84ed302102), + Felt::new(0x23a2608bd7511a70), + Felt::new(0x2328fecd0c0a2f0), + Felt::new(0x143309aa803444bb), + Felt::new(0x2eecdeeb0b07b412), ]), Word::new([ - Felt::new(0x5c8e1f56cbdb0f87), - Felt::new(0xeeeb31b4d317cf1d), - Felt::new(0x8bf45cd3659a6d1), - Felt::new(0x9e179aa20693175a), + Felt::new(0x7d5255c15fc9e91e), + Felt::new(0x88fa800205f9bb7e), + Felt::new(0xd0d04e515e67def2), + Felt::new(0x1ed6ea55bc8dd77), ]), Word::new([ - Felt::new(0x10f58975fbb0fca), - Felt::new(0x5f35c19eb0f615c1), - Felt::new(0x9870cdafe46a3d), - Felt::new(0xcec9d9f3925df88b), + Felt::new(0xe9fc5915ab61bc1c), + Felt::new(0xe0fa6afd6ba01d69), + Felt::new(0xd68964b10660f670), + Felt::new(0x71ac2e66b0aae13b), ]), Word::new([ - Felt::new(0x89e90b2f029b50c0), - Felt::new(0xd78a4223d0036c8a), - Felt::new(0x996b326a1d5cd76d), - Felt::new(0x5b314d29bb1694e3), + Felt::new(0x4b9e9c11f88d00f5), + Felt::new(0x904f275afc6569f6), + Felt::new(0x239211eb0caaae5f), + Felt::new(0x65b0d08a872ad7e3), ]), Word::new([ - Felt::new(0x1be6e6955ba0f3a8), - Felt::new(0xc7e07c49076315ef), - Felt::new(0x93e91de5c7849fb2), - Felt::new(0xe81bc86fc641596f), + Felt::new(0x2d8d73f55112b25b), + Felt::new(0x26ec281b0f117fed), + Felt::new(0xa46f4c881fc9e482), + Felt::new(0x12f35ea175321d2a), ]), Word::new([ - Felt::new(0x5320464735f18522), - Felt::new(0x1a741214432ca63d), - Felt::new(0xaf3ed59d324bdbe8), - Felt::new(0x2493eb414c91ac94), + Felt::new(0xc925b59421e1185a), + Felt::new(0xece7ad8c5b6a7db5), + Felt::new(0xbc442d8a7c34f00b), + Felt::new(0xc374185ff90c0322), ]), Word::new([ - Felt::new(0x35897b61f231fa86), - Felt::new(0xb1531e954332f229), - Felt::new(0x92e950b1c1f874a), - Felt::new(0x469de0412ca52491), + Felt::new(0x7fba94f35276b575), + Felt::new(0xd625f7f21f1baac), + Felt::new(0xc41275842f9300ee), + Felt::new(0x5492c759b87ee3c9), ]), Word::new([ - Felt::new(0x1ecea76deca59ec5), - Felt::new(0xe884b570f5d54e45), - Felt::new(0x58939f3a1b5bc7e1), - Felt::new(0xf14eab10f926958f), + Felt::new(0x5e7ac2514a419f0), + Felt::new(0xb0199d08f87b3ed8), + Felt::new(0x13b400822a4b9e1d), + Felt::new(0xdb6b8650afbd6151), ]), Word::new([ - Felt::new(0x26251aa927a69723), - Felt::new(0xb1808fe0795ab008), - Felt::new(0xd195fe923d1944c9), - Felt::new(0x2334a61c28dc63c), + Felt::new(0x8376cb5929253d7c), + Felt::new(0x42d91f237dd12ad6), + Felt::new(0x9e67f40f473b732), + Felt::new(0xeca585705164c30c), ]), Word::new([ - Felt::new(0xe4b659081d9cf4e4), - Felt::new(0xf1174a5f72916819), - Felt::new(0x1de902b42b3b4054), - Felt::new(0xbe2bc215120367d0), + Felt::new(0xf56d326ab2704657), + Felt::new(0x36b7b3cbb427dac5), + Felt::new(0xf5a3c35828d1dc16), + Felt::new(0xe4cfcc9f8e73ad43), ]), Word::new([ - Felt::new(0xfc87b8043d32428f), - Felt::new(0x8f8cb244e3ddf6da), - Felt::new(0xc7539186ece143a7), - Felt::new(0xf28008f902075229), + Felt::new(0xd8f934e88142ea2), + Felt::new(0x8ab48d17bb596fcd), + Felt::new(0x97e762d1913c0de5), + Felt::new(0xc8e798ef60c725c7), ]), Word::new([ - Felt::new(0xf76c24c9f86c44d3), - Felt::new(0x97c7abcbb6d07d35), - Felt::new(0x9d8e37a1697a0d4), - Felt::new(0xa3f818e48770f5fa), + Felt::new(0x2b33eb4fe46d78ff), + Felt::new(0xe4fbf85087422d68), + Felt::new(0xa3be71210e8f07c), + Felt::new(0xa1e41e6de4e24b04), ]), Word::new([ - Felt::new(0x885686c79c1cd95e), - Felt::new(0xcdebe76fd203c23e), - Felt::new(0xdf9b7cd5099673ed), - Felt::new(0xe60438536ad13270), + Felt::new(0x3499268114e2ff9a), + Felt::new(0x3a4eb48c12aad261), + Felt::new(0x343cfd326c8df4b1), + Felt::new(0x74cbc3fb5b2c35c5), ]), Word::new([ - Felt::new(0x7790809942b9389d), - Felt::new(0xa3d82432c31de99), - Felt::new(0xaea11fece88c7d27), - Felt::new(0x5cc764da96d0b2f0), + Felt::new(0xe2db367c1f0e87a4), + Felt::new(0x257b6b62b00cdc95), + Felt::new(0x8ad4bbfe269b4f24), + Felt::new(0x15a7808dae47469f), ]), Word::new([ - Felt::new(0x80e555c41170427f), - Felt::new(0x87e68144276d79c8), - Felt::new(0xebdc63f28aa58a53), - Felt::new(0x168dd22672627819), + Felt::new(0xf3f305ae11e902e3), + Felt::new(0xab8176baa941360), + Felt::new(0x673dd00da221d423), + Felt::new(0xf120e4140db91620), ]), Word::new([ - Felt::new(0xea1dc59c29da5b6c), - Felt::new(0xa33188c0a077761), - Felt::new(0xabd3c84cddbe1477), - Felt::new(0xd28244bc92f36e0f), + Felt::new(0xe13397eddcef1eb8), + Felt::new(0xbb461d028b2262e5), + Felt::new(0xbda28412299d8c4d), + Felt::new(0xf9a109d8f521a030), ]), Word::new([ - Felt::new(0xdadc2beb7ccfe3fa), - Felt::new(0x218532461f981fb4), - Felt::new(0xf0455f1d4e2f9732), - Felt::new(0xa7338b43d2b7e62d), + Felt::new(0x657ee72c8354d725), + Felt::new(0x3a4c9b595816234a), + Felt::new(0x34c6d1c59e857419), + Felt::new(0xde2140b75cda5dd9), ]), Word::new([ - Felt::new(0x195d8bc1cfe2711a), - Felt::new(0x44e392ba7e259f47), - Felt::new(0x480120d41e18ab3c), - Felt::new(0x2056ffb29c2d89d1), + Felt::new(0xb2f7808dd5314cd), + Felt::new(0x7c92e41ab97b7a69), + Felt::new(0x549f566db9a2d2cc), + Felt::new(0x3cbfc66615ab87c3), ]), Word::new([ - Felt::new(0x382e33ba5fe6ada3), - Felt::new(0x45402a8903efebc9), - Felt::new(0xb9b0d63a59c70da), - Felt::new(0x7afebd4726d8cfe5), + Felt::new(0xf8f3210f53c4a73c), + Felt::new(0xe02f8e93ca2188b3), + Felt::new(0xa85f1eec8661e796), + Felt::new(0xb54092a35c662891), ]), Word::new([ - Felt::new(0xbf60bf6b45a4c9d), - Felt::new(0xfb5b9b553646f19c), - Felt::new(0x9949b60ce7639da3), - Felt::new(0x9c62552c0d1868ff), + Felt::new(0xcc140605c8a0d881), + Felt::new(0x5c7fe7024738f5cf), + Felt::new(0x13c57d32b06956a5), + Felt::new(0x2bff77fe08d36405), ]), Word::new([ - Felt::new(0xdb2a0aba0fc5e4f8), - Felt::new(0x8ee4f01d4b0fa49e), - Felt::new(0xd70a17a77b5c4a03), - Felt::new(0x57aaaa5b48fea66e), + Felt::new(0x604a6b8a3ae5b211), + Felt::new(0x5b14ba687fb547f6), + Felt::new(0x45f41c6840cae70), + Felt::new(0xb4d5c4e603e7cc3b), ]), Word::new([ - Felt::new(0x6d635940443564cb), - Felt::new(0xc7fbf0e26b5e3ff6), - Felt::new(0xa45bce664368b65e), - Felt::new(0xd6c5c1a92be0c60d), + Felt::new(0x1fdc3eb7a3d09c11), + Felt::new(0xe10c597520ebbeba), + Felt::new(0xd9d46277af171b81), + Felt::new(0xfb66d8ffed0bef45), ]), Word::new([ - Felt::new(0x6ea62d6033fb2dd3), - Felt::new(0x1a37910cf90ec6d8), - Felt::new(0x83d826e9933760b5), - Felt::new(0xf8387c90d9c6b5a9), + Felt::new(0x3b19f1217bb8ac2c), + Felt::new(0xc30c4d66bc8307e3), + Felt::new(0x2937cf7d450d6ec6), + Felt::new(0x1a3d27024116c65a), ]), Word::new([ - Felt::new(0x134766f1da2fbc91), - Felt::new(0xcfaeea545df2c757), - Felt::new(0xd0accefaed1eaa0f), - Felt::new(0xec38d4053f84b163), + Felt::new(0x43e05c31ac79e6e1), + Felt::new(0xe0e4963f57bdad22), + Felt::new(0x5d6a9d02318c7052), + Felt::new(0x2ab9fd1657a6fadb), ]), Word::new([ - Felt::new(0xb02ad1e757380aee), - Felt::new(0x4538b8ea13112d4), - Felt::new(0xb2d761fe842a2a85), - Felt::new(0x8e98d58adf5a1f29), + Felt::new(0x870787ce13b67a3f), + Felt::new(0xdf6f383b7692c34b), + Felt::new(0xec1f9575cae0fb8c), + Felt::new(0x1ed224d4a11a1cac), ]), Word::new([ - Felt::new(0x44603d9549ddee64), - Felt::new(0x43de72d570967bbb), - Felt::new(0x4a3e71144e62d0fa), - Felt::new(0xffb2fdcb48965939), + Felt::new(0xb14f93cd4d7a6190), + Felt::new(0x1175e467ae8927f1), + Felt::new(0xd766f48993f79b8d), + Felt::new(0xd0ecb7b95da7a3a), ]), Word::new([ - Felt::new(0x606f3ee12fe9ec0c), - Felt::new(0xe7d494ab8e483d87), - Felt::new(0x3b47f7c0d316cd4a), - Felt::new(0x86f941c7fa834581), + Felt::new(0xf295cc19be44b7b), + Felt::new(0xf8c363f4ccd43929), + Felt::new(0x25dd3ecc30d5444b), + Felt::new(0xa063f10b17b9dcb0), ]), Word::new([ - Felt::new(0x30c2385facf08b86), - Felt::new(0x4446168e25ac2c21), - Felt::new(0x61c6db1c3f283b21), - Felt::new(0x2fdf6bc360bf803), + Felt::new(0x8d5d0e77c8267630), + Felt::new(0xaff7c4d2f12478c9), + Felt::new(0x2a33f3ba8713cfc4), + Felt::new(0xc1280360eb72e35f), ]), Word::new([ - Felt::new(0xeec8d9cc3e46d243), - Felt::new(0x65bcae511dcce39), - Felt::new(0xd3da5bbfdbd09cd3), - Felt::new(0xe7c35fc3d11216a5), + Felt::new(0xd65de0b57652adc7), + Felt::new(0xfbfb5deaa67d3f5f), + Felt::new(0xf80fed0effee9198), + Felt::new(0x7e139def23feb7a8), ]), Word::new([ - Felt::new(0x841fb6fb35e7b49b), - Felt::new(0xfc4e2e1239caa7b8), - Felt::new(0x37cb93ec88f102e5), - Felt::new(0xa707a1556032152c), + Felt::new(0xb4cf7c907eb0febe), + Felt::new(0x176f5bcbca3a6edf), + Felt::new(0xc6b4758c8ae4d5e9), + Felt::new(0x93c702b36ef009ea), ]), Word::new([ - Felt::new(0x37c67bd7b7cef984), - Felt::new(0x75bbe46da2ee5c90), - Felt::new(0x3a5c568d1f71cab1), - Felt::new(0x36939cdca2dc0b55), + Felt::new(0x7f9cd2b8111f7fc9), + Felt::new(0x8764ee15c8a8fd1e), + Felt::new(0xfbe86cb1e581a8ee), + Felt::new(0xb841aba3fe114522), ]), Word::new([ - Felt::new(0x4f76756a55f3a644), - Felt::new(0xd30f8fa45394aff4), - Felt::new(0x65c55096158b202f), - Felt::new(0x368a5fb0b0d475d0), + Felt::new(0x6b64364593166c72), + Felt::new(0xbd45aadb0cb8be97), + Felt::new(0x55e33691198d1c63), + Felt::new(0xdf152a5bc9d89ec1), ]), Word::new([ - Felt::new(0xa9b9acd256cabb0f), - Felt::new(0xd8b1170f301208c7), - Felt::new(0xab152f908d46bf8), - Felt::new(0x1b7a10556730ec16), + Felt::new(0x8f92a67707c031ee), + Felt::new(0xa7e9c99dcdce915f), + Felt::new(0xa8c464c9655377e8), + Felt::new(0x3f9862d16c624dc5), ]), Word::new([ - Felt::new(0xd967a72076e3059c), - Felt::new(0xbd1015a08ffe8881), - Felt::new(0xf72f186dde0c6e78), - Felt::new(0xa58910205352895a), + Felt::new(0x122f73b5cf63f6e), + Felt::new(0xab8a77660bf07314), + Felt::new(0xdb4a9f742ac96790), + Felt::new(0x2c744408fb6e9114), ]), Word::new([ - Felt::new(0x130333f2fd400a4d), - Felt::new(0xf20104837a118d6e), - Felt::new(0xda1e5d608fb9062c), - Felt::new(0xb8ac5c76d60950b8), + Felt::new(0x31504ebc54a0b34), + Felt::new(0x93a548139238f54e), + Felt::new(0xa44eab497d5f43de), + Felt::new(0xa47c24d2b11970b4), ]), Word::new([ - Felt::new(0x65d0deae6fb0c6cb), - Felt::new(0x1b442ae344dcd9e7), - Felt::new(0x1eedabab8fc07fa4), - Felt::new(0xb0dc89b96f256189), + Felt::new(0x90bd7b36e037e432), + Felt::new(0xf03b6474b5a7fed), + Felt::new(0x1049be2c887db78f), + Felt::new(0x45bfc229a2fe81fb), ]), Word::new([ - Felt::new(0xef88de626968c17a), - Felt::new(0x569a01072cdbbc2b), - Felt::new(0xc99bbba6d083c68f), - Felt::new(0x9ed4a176fe341849), + Felt::new(0xabcefab499c0518e), + Felt::new(0x8bed8a8c40f921d2), + Felt::new(0xf4ae6b74a02eb437), + Felt::new(0x6c4d719eb921ae9d), ]), Word::new([ - Felt::new(0x5d49d1e9d17448a6), - Felt::new(0x6974d510bc47ee66), - Felt::new(0xbcbea4dec0b68586), - Felt::new(0xdaa5457e0cfd3e61), + Felt::new(0x260185045bb46d9d), + Felt::new(0xcf6ec8ae1f324cde), + Felt::new(0xbf83f33d0d1f4e54), + Felt::new(0x3e7ca1d7b25b432d), ]), Word::new([ - Felt::new(0x9fceba739503cda0), - Felt::new(0xb9daf271ac42c8ba), - Felt::new(0x10fe3e8de8680d83), - Felt::new(0xd7e1dc73ced7730b), + Felt::new(0xb8f8851ca74c1cda), + Felt::new(0x4f6df636586033d9), + Felt::new(0x6c994c0373b29e0a), + Felt::new(0x73dbba9f1ed6e62d), ]), Word::new([ - Felt::new(0x93ec6c422d4271ea), - Felt::new(0x73923813232b0e70), - Felt::new(0xbbe6a4441a900b65), - Felt::new(0x36b2164f37c9319b), + Felt::new(0xc25d70362fbb8e6), + Felt::new(0x9cf890e6f04bcd17), + Felt::new(0x8a0de9733a8073fe), + Felt::new(0x46530c0b1af91701), ]), Word::new([ - Felt::new(0xce3ecb2eed624694), - Felt::new(0xb7e1d75fff7a454c), - Felt::new(0x86c24aa3a8d92d2b), - Felt::new(0xb1ba74cafa9ce649), + Felt::new(0x2833f20b21253d73), + Felt::new(0x171651cfff7653e7), + Felt::new(0xaf46abb15edab5d6), + Felt::new(0xf6c4fbcf9bfb1d00), ]), Word::new([ - Felt::new(0xb5fae724eb357479), - Felt::new(0x359532ddc4840cb9), - Felt::new(0x4b111251e037e9fa), - Felt::new(0xfcdab1cdd314c1d9), + Felt::new(0x977adf260beec8f9), + Felt::new(0x5b1d61a580e45560), + Felt::new(0x73ca72831e5ed08b), + Felt::new(0x22ff61c90fb6e384), ]), Word::new([ - Felt::new(0xb3a89464d21c9ff1), - Felt::new(0x8136e1b457a59ca8), - Felt::new(0x88b0fa606b53c4d5), - Felt::new(0x89645f8a9dfe97a2), + Felt::new(0xad56100db7ca3d2e), + Felt::new(0xc5d8ae7a5383a975), + Felt::new(0xa98f96eb5c11adda), + Felt::new(0x7d237a5fe25e1eb), ]), Word::new([ - Felt::new(0xfe115ef35b814cbf), - Felt::new(0x63de467fb93b6851), - Felt::new(0x17c73b03c9f44ad8), - Felt::new(0x53742721f568b5be), + Felt::new(0xa07becb353f7632d), + Felt::new(0xe6e9d83924e7d496), + Felt::new(0x12ca0d4e0dbe8926), + Felt::new(0x6f91ced93d13bbc9), ]), Word::new([ - Felt::new(0xd8110ea6e905cc2), - Felt::new(0xd67b3c7cea25100), - Felt::new(0x9e49b38ed51d1c60), - Felt::new(0xe9e24f9b597c9bfd), + Felt::new(0x6205022f021e9e52), + Felt::new(0xb21425564d0dc6e), + Felt::new(0xd01417852116ed4), + Felt::new(0xc6e8873a45103e07), ]), Word::new([ - Felt::new(0xefe9086b5bb5a504), - Felt::new(0x991f92a90c9346a3), - Felt::new(0xe4fab215a20f453b), - Felt::new(0x4e4d4dde9146d61a), + Felt::new(0xa5f38eebc66c8343), + Felt::new(0xa450e9296284f3d5), + Felt::new(0xe37183efd7fdcf95), + Felt::new(0xd6bb1cb064b35688), ]), Word::new([ - Felt::new(0xaa998c3b26497ffa), - Felt::new(0x985bd5cf4ccefb3c), - Felt::new(0xce44e80aa02424bb), - Felt::new(0x75158a37503aed75), + Felt::new(0x748b2d0dd944d29b), + Felt::new(0xd3b3b54a3da8a1d3), + Felt::new(0x21d7bd2270d61e92), + Felt::new(0x9b75fa746ae8b2a1), ]), Word::new([ - Felt::new(0xdb61760c917116f1), - Felt::new(0xf378c9645174a832), - Felt::new(0x1216aa71b73e7fac), - Felt::new(0x8a4e7f0591a129fd), + Felt::new(0xa511501f657507a0), + Felt::new(0x19165e4754f3ed9d), + Felt::new(0x2ace29354f4e1d8f), + Felt::new(0xadce35ebef9d24f3), ]), Word::new([ - Felt::new(0xaf11a04daaf4ed67), - Felt::new(0xd3e59f0d7dad9064), - Felt::new(0x30c206089a2c294d), - Felt::new(0xe104db59761e8a99), + Felt::new(0xd4ba2d693b3633f7), + Felt::new(0x52efedf7c2ac4aaa), + Felt::new(0xeb37284afc24c35b), + Felt::new(0x863f13cc0bf171fb), ]), Word::new([ - Felt::new(0x70b545ba7a6d447), - Felt::new(0x6ac0e423ddf68913), - Felt::new(0xf9b50997257bb033), - Felt::new(0xdac37c7b1c18b48a), + Felt::new(0x8adabc40751600f6), + Felt::new(0x5238237a22320513), + Felt::new(0x505d4119aff831b5), + Felt::new(0x737bd824227bdf79), ]), Word::new([ - Felt::new(0xd182b9dff0fcd5c0), - Felt::new(0xf87619ae86b6eb02), - Felt::new(0x6838c1b612b17cb5), - Felt::new(0x9b705d5b6bcf92c), + Felt::new(0xc1de282526b1afb), + Felt::new(0x19f8e7f3bf0385ff), + Felt::new(0x55fb725d5460a86e), + Felt::new(0xcad39afdf9fa734c), ]), Word::new([ - Felt::new(0xfba622b3026c6193), - Felt::new(0xdacde486f8129b96), - Felt::new(0xd5acd22a7c2cf6aa), - Felt::new(0xf5beb40535e6c0f2), + Felt::new(0x637e4a633e7de21c), + Felt::new(0x29d2c89b8f2a2ec), + Felt::new(0x69a37600dd8006f9), + Felt::new(0xffe3ace3832836be), ]), Word::new([ - Felt::new(0x59bde17b2d501969), - Felt::new(0xb4abe1389123d3b9), - Felt::new(0x683d8dd8635d9a67), - Felt::new(0x347e01da4c07833), + Felt::new(0x7e7bb406e6e68eb6), + Felt::new(0x42fd1a00fe90f07a), + Felt::new(0xdc929ff5c1f95f36), + Felt::new(0x2e0fcdc7ec106f74), ]), Word::new([ - Felt::new(0x4e28956ab7162a06), - Felt::new(0xccfcc7358f48c727), - Felt::new(0x7b3485f20c979144), - Felt::new(0xeeb27fa694f1c8fd), + Felt::new(0xb8edfe12d74f2432), + Felt::new(0x90655225dc06dad8), + Felt::new(0x187b20a22e063446), + Felt::new(0x99e524f17a47f4ab), ]), Word::new([ - Felt::new(0x275b2c0ee883807b), - Felt::new(0x8f68f2016c1391cd), - Felt::new(0xb59fdccb20322765), - Felt::new(0xeb9b902c5351d5d4), + Felt::new(0xe3214c002b4d91b9), + Felt::new(0x8ce0980a402beea4), + Felt::new(0xb80bd13058762136), + Felt::new(0xefd36e8aaa35a4eb), ]), Word::new([ - Felt::new(0xb767d8cb8816cc8e), - Felt::new(0xbd29bb02cdcbc9af), - Felt::new(0xeb1dca9bfebee6f), - Felt::new(0x57597da8109c0354), + Felt::new(0xc8c24a71db116def), + Felt::new(0x9fda558b10f464f3), + Felt::new(0x834f584b76c4f511), + Felt::new(0x8879a92b279f5dff), ]), Word::new([ - Felt::new(0xeb32a8db8cf216), - Felt::new(0xeb5532ac68f304c1), - Felt::new(0x9bca72ffccb957ee), - Felt::new(0x33d4b152ebedb841), + Felt::new(0xa9cc91a4844140ba), + Felt::new(0xd99c820f6ba53279), + Felt::new(0x22ce2e5c1bb67c2), + Felt::new(0xe4ed89b91a3215bc), ]), Word::new([ - Felt::new(0x439b20dce9810169), - Felt::new(0x2b693e2530a1b88c), - Felt::new(0x36b8898f4e900c7a), - Felt::new(0x7bf5064dde3a0da1), + Felt::new(0xb1f07af2b0d44426), + Felt::new(0xc93ac44cec3001b6), + Felt::new(0xa0cc5631afe8a52), + Felt::new(0xefc2eb64204581d0), ]), Word::new([ - Felt::new(0x8794201ce6158fe0), - Felt::new(0xfcc53644557471f3), - Felt::new(0xa66d87f6ae6f64d0), - Felt::new(0x4e876d9d933b2ad0), + Felt::new(0x4d596e360735cd62), + Felt::new(0x883c4a5afb24c772), + Felt::new(0xe6c74e3673dd040d), + Felt::new(0x6de900ae0a64e62a), ]), Word::new([ - Felt::new(0x6ff8f4900e43bab6), - Felt::new(0x40014f298cb7b9a3), - Felt::new(0x9d6b252ff946ee3d), - Felt::new(0xb014d99ab8508072), + Felt::new(0x72e1554134177582), + Felt::new(0x74c2dde1e7d50f7), + Felt::new(0x237367b8ff8d1b97), + Felt::new(0x7cdaec5a8f3596a7), ]), Word::new([ - Felt::new(0x9cdd5a4a37511cae), - Felt::new(0x684444122d770c18), - Felt::new(0x8982944b22a22577), - Felt::new(0x50a58d944629de54), + Felt::new(0x8d5ac0e295e9ad40), + Felt::new(0xb12011f67d462a4e), + Felt::new(0x6214a41f78b42e2a), + Felt::new(0x89d751210bd9bedf), ]), Word::new([ - Felt::new(0x853f5b8ad557fac3), - Felt::new(0xdab1743c03b8da56), - Felt::new(0xc70d6683d4f4c086), - Felt::new(0x2f1d0f67a5dfae4c), + Felt::new(0x5ee06879079ffec8), + Felt::new(0xaa7047aa22e4aefe), + Felt::new(0x18ae92e73f414cf8), + Felt::new(0xd8c2d9ed8a016651), ]), Word::new([ - Felt::new(0xf3b6fe76eb11284), - Felt::new(0xbeb9e98b146c63a8), - Felt::new(0xc7e8824fce7777ad), - Felt::new(0x5229918b04410d6a), + Felt::new(0x6bf7f0c5ef5fb62), + Felt::new(0x3ab988fe26df509e), + Felt::new(0xb8d98916a3d6f8c0), + Felt::new(0xb8a2ccf3d88aa22b), ]), Word::new([ - Felt::new(0xc170c46601ffc4f3), - Felt::new(0x1258e8e47103c39b), - Felt::new(0x612e99da984aac99), - Felt::new(0xc82fcfcf56d6dd94), + Felt::new(0xeb14f90eb129495), + Felt::new(0xad5544f3d2fa34a5), + Felt::new(0xa5dcbdb33fd3ae5f), + Felt::new(0xc146d0e211609f2a), ]), Word::new([ - Felt::new(0xf793819d04d5679d), - Felt::new(0xb738b97ec0a52dd3), - Felt::new(0x4df897389119a098), - Felt::new(0xa5af45eb0d007785), + Felt::new(0x23eeabdad5222559), + Felt::new(0xf94212e980d51b58), + Felt::new(0xf8bd5fcfc020fd47), + Felt::new(0x3e8c699a4f3f9ed0), ]), Word::new([ - Felt::new(0xfcf59c6c9d7280e7), - Felt::new(0x662b993b320f3345), - Felt::new(0xeb8e04ba28f156fa), - Felt::new(0xe72233ee6a444749), + Felt::new(0x35510ef512eba172), + Felt::new(0x243e71b8bb0bfa9), + Felt::new(0xc178c0407c5b8c5a), + Felt::new(0x719b9dbe54690edf), ]), Word::new([ - Felt::new(0x7ad6b7badfc9e757), - Felt::new(0x3332f340184af6f5), - Felt::new(0xe92a736dcdf52022), - Felt::new(0xf1759f8041119245), + Felt::new(0x7a729626722ec422), + Felt::new(0x5df920bef43b68be), + Felt::new(0xf44b13d234f9f0e3), + Felt::new(0x3ebe8b56ff76c2da), ]), Word::new([ - Felt::new(0x166382d3c8ca3a95), - Felt::new(0x36c8c25f971d771a), - Felt::new(0xe82cc977ee1402cc), - Felt::new(0xe13f6dc2ab919177), + Felt::new(0x521a6c924b85acd6), + Felt::new(0xda67ddaeeb322495), + Felt::new(0xb1f5cf4394b4c0b9), + Felt::new(0xd063bcdfbd1cca6), ]), Word::new([ - Felt::new(0x41fb8b9d5a9ab5e8), - Felt::new(0xb2a608f5d6fbc37d), - Felt::new(0xe81719d9778c54b4), - Felt::new(0xcc0d4373ef2bb8e1), + Felt::new(0x82b7e92b9a2d6c2), + Felt::new(0x6e7dc03dbd0e3887), + Felt::new(0x26574b1181171077), + Felt::new(0x21d1c72cda3ae50d), ]), Word::new([ - Felt::new(0x60b3788c45c1bc29), - Felt::new(0xcb38969a428c5423), - Felt::new(0xca11f6b9d957f57c), - Felt::new(0x7a166881648514cb), + Felt::new(0x4f1dd03ac44d5b93), + Felt::new(0x3719c2c17c16573f), + Felt::new(0xa62b25429e586d67), + Felt::new(0x91ece8161ce4fd47), ]), Word::new([ - Felt::new(0x3548d7dcbe4af37f), - Felt::new(0xb199194f25a6f55a), - Felt::new(0x751017bda8f0d816), - Felt::new(0x80117260c6525c4a), + Felt::new(0x74fed6086fa9e444), + Felt::new(0x9e1bb02f6d1ae35b), + Felt::new(0x9a1fac3e0d85b4ec), + Felt::new(0x851a0f32ff83ea46), ]), Word::new([ - Felt::new(0x1d1d34d842e95671), - Felt::new(0x38ab2833c4a2bded), - Felt::new(0x3a53caf5f6e20f5f), - Felt::new(0xfee946c5ebce837d), + Felt::new(0xfdf751ce8311a960), + Felt::new(0x995db041e58c6b4b), + Felt::new(0xfd2329370427b43b), + Felt::new(0x5464a4535b97b588), ]), Word::new([ - Felt::new(0x65dbb5d849e46f92), - Felt::new(0x753679d0d09d1250), - Felt::new(0xc539adf9062e7698), - Felt::new(0xd76f4b13d2635af3), + Felt::new(0x566bb18034c4f2df), + Felt::new(0xa29b8f0166ee91e6), + Felt::new(0xd99f7d8bac1a300e), + Felt::new(0x3623e182ecfaa2d1), ]), Word::new([ - Felt::new(0x9eae446581f7076d), - Felt::new(0x237138e3a1c55ee8), - Felt::new(0xfb54da0b58969484), - Felt::new(0x9a899375c4f10483), + Felt::new(0x28bb3fa02deeb5f4), + Felt::new(0x9973c94fe575f58), + Felt::new(0x7fecf369b4c75201), + Felt::new(0x46ac9e6ef87b64db), ]), Word::new([ - Felt::new(0x88b12578d3c36cc4), - Felt::new(0x9cd868d6a29df146), - Felt::new(0x5443d21524637821), - Felt::new(0xceb3692fad9f76b9), + Felt::new(0x77156d3318b84c9c), + Felt::new(0xe90ac7f7735d014e), + Felt::new(0xd94597b0f9c42ca5), + Felt::new(0x98e1722780783100), ]), Word::new([ - Felt::new(0x4e45d3e34ebfcb0d), - Felt::new(0xedca6a0f8d90eb2e), - Felt::new(0x1a182dad4a914731), - Felt::new(0xd89946f41f53f106), + Felt::new(0x88a527fe1a96e0f4), + Felt::new(0x91cff1cafe6246bf), + Felt::new(0x5fa8b7963f0a33cf), + Felt::new(0x1a508cdc64416220), ]), Word::new([ - Felt::new(0x42a89e1abee8b12d), - Felt::new(0x3af360678475225a), - Felt::new(0x3e28a1cdede0c7a3), - Felt::new(0x25cc76ad1c8788e), + Felt::new(0x87a89450bc5f86cb), + Felt::new(0xa3525d6cc28b29a8), + Felt::new(0xa987ca169f962184), + Felt::new(0x8d693a95bf3b308b), ]), Word::new([ - Felt::new(0xa6e955e3b0721737), - Felt::new(0xbbd721b51cbc605f), - Felt::new(0xfa537854669f20a5), - Felt::new(0x2a1ab83bb24d43f7), + Felt::new(0xb3ac2bf2d6bf6a1b), + Felt::new(0x400de6a583281412), + Felt::new(0x48c37a98a327cb2d), + Felt::new(0x8f07ad8c5f976fff), ]), Word::new([ - Felt::new(0x1c289dc62c4e7907), - Felt::new(0x186437cf1f8b3abf), - Felt::new(0x929244addee54abf), - Felt::new(0x42ec87a9141b58fb), + Felt::new(0x7c7e5b1bf28628d1), + Felt::new(0x5431db8f2d931abc), + Felt::new(0x2ff48e4d67c941b4), + Felt::new(0xb12eb971883414ae), ]), Word::new([ - Felt::new(0xf5ea743b81e59fee), - Felt::new(0x32e2c826d0fc57d4), - Felt::new(0xbc411bca1b745388), - Felt::new(0xc9af8de5bc3b8692), + Felt::new(0x6600bdb29e65b07a), + Felt::new(0x717cfd190413ab00), + Felt::new(0xcf168b5a3866ff72), + Felt::new(0xbea885247f7da786), ]), Word::new([ - Felt::new(0xf75129028d95ebab), - Felt::new(0xf9d02d7713784ff2), - Felt::new(0x944b5fea457c946b), - Felt::new(0xa6645d6f5389a91f), + Felt::new(0x330ed69ada6e87ed), + Felt::new(0x185406699f6df77d), + Felt::new(0xd439f4a71006e469), + Felt::new(0x361e9bfaf5ed849c), ]), Word::new([ - Felt::new(0x236ce9e32fb0131c), - Felt::new(0x92cac3a2b67600b8), - Felt::new(0x437914d1d9e409bb), - Felt::new(0x6bff102a4ea81e38), + Felt::new(0x9c768b1bf13ac484), + Felt::new(0xd9d4c94e6f5aca01), + Felt::new(0x43d63d3adddd2408), + Felt::new(0x973d4a38470f26fb), ]), Word::new([ - Felt::new(0x9906825ec6d45f25), - Felt::new(0x1245ccf4121950a2), - Felt::new(0xff82337f357949bb), - Felt::new(0xe1f59f6b824f97af), + Felt::new(0xbcf2e27086297a62), + Felt::new(0xa9a9e6af284d1e9), + Felt::new(0xb50cc0e2ba6d8ef3), + Felt::new(0xd0124f1e61a89e12), ]), Word::new([ - Felt::new(0xd6030ea8046f0d1e), - Felt::new(0x69fd3c732586f5db), - Felt::new(0x765cccb10c151f30), - Felt::new(0xd1bad2f1ba1bdc5b), + Felt::new(0xb4c0b52477226b1f), + Felt::new(0xb1755a2a840a831), + Felt::new(0x8de661c5f4bd9276), + Felt::new(0x8d124f0f3082cfbc), ]), Word::new([ - Felt::new(0xd4a0cff6578c123e), - Felt::new(0xf11a17948930b14a), - Felt::new(0xd128dd2a4213b53c), - Felt::new(0x2df8fe54f23f6b91), + Felt::new(0x6ed5ae308aa4bc7e), + Felt::new(0xe6a058fd79632207), + Felt::new(0xb951365f5848d42a), + Felt::new(0x5351e6e47fed2efd), ]), Word::new([ - Felt::new(0xa891ab94552907b2), - Felt::new(0xc64b69708f99b16e), - Felt::new(0xb99d29be9af9df15), - Felt::new(0xa452647d61bd3d7b), + Felt::new(0x8bf48a21b17ebfa2), + Felt::new(0x1f109ebbbfa3399f), + Felt::new(0x3c9b44b1248c31c0), + Felt::new(0x63adebe371b8bc48), ]), Word::new([ - Felt::new(0xd339a7d5f35bdf7e), - Felt::new(0x296127097a98dbdd), - Felt::new(0x66d3eac876c1a984), - Felt::new(0x2714db555ccbdca4), + Felt::new(0x222099944ea7cc27), + Felt::new(0x316d0d6f15f41f46), + Felt::new(0xf17a1c6075a142f6), + Felt::new(0x35e50a02433991d7), ]), Word::new([ - Felt::new(0x6ca87920a067acd6), - Felt::new(0x55a102d742879de5), - Felt::new(0xa3f57a4b6a56d7f3), - Felt::new(0x18770879a832a177), + Felt::new(0xfb2367e02a63a830), + Felt::new(0xec1c038af97c4bd1), + Felt::new(0xb3d489220fbb7df3), + Felt::new(0x792cb7969609334a), ]), Word::new([ - Felt::new(0x1208793a0a77e984), - Felt::new(0x89ed5a1f45b34219), - Felt::new(0x8d74e6f75e77ef03), - Felt::new(0xa78cc9b7d29a1ee9), + Felt::new(0x8d76893d4ca22979), + Felt::new(0x2c7ba9d515b4e3f4), + Felt::new(0x39edc914820c4ca0), + Felt::new(0xe639b77a01292a15), ]), Word::new([ - Felt::new(0x345fffecefd56a65), - Felt::new(0x23dec03b9f663006), - Felt::new(0x66f452be070b34d8), - Felt::new(0xe1c6aaaa54765dc), + Felt::new(0x9b29640d071b0f11), + Felt::new(0x308cb2d119d63acc), + Felt::new(0x5d573a7d33b488cd), + Felt::new(0x7eeb10baca790915), ]), Word::new([ - Felt::new(0xb7b714ca60c77011), - Felt::new(0x5ffe9476baa10259), - Felt::new(0xbea15cd2b4150dda), - Felt::new(0x4467804ab919e3d8), + Felt::new(0xcaa0baf1eb15ce67), + Felt::new(0x89f30dae011914da), + Felt::new(0xbb9a31468b153cee), + Felt::new(0x1b92a7d0d1fce8bb), ]), Word::new([ - Felt::new(0x21c65ff7a4185640), - Felt::new(0x5d20fffcc7779035), - Felt::new(0x92b571249fa728d5), - Felt::new(0xe9e2eeca83b49342), + Felt::new(0x7705c0b4816f8c8e), + Felt::new(0xa0ee27f0210207dc), + Felt::new(0x1ec9024f4368818a), + Felt::new(0xf3bf993f2fe0f538), ]), Word::new([ - Felt::new(0x2be46f9d0b431948), - Felt::new(0xa5c1a12c95a56f44), - Felt::new(0xc620adca5cd874), - Felt::new(0x51c64b969c1dc0c9), + Felt::new(0xa029e705850e3a3e), + Felt::new(0xe277c0af06a2b9ff), + Felt::new(0x4c40b30cc5b95beb), + Felt::new(0xc0b36a51afe62f5a), ]), Word::new([ - Felt::new(0xae9e7f421ab12b3f), - Felt::new(0x5f90e40cdb47bbec), - Felt::new(0x3d2a6be00ce19d31), - Felt::new(0x609632a98643a06c), + Felt::new(0xdff45e106cb643b), + Felt::new(0x99559a0e5499fe9b), + Felt::new(0x81c5e8b6020138fe), + Felt::new(0xbf6e1cb9cb625a6b), ]), Word::new([ - Felt::new(0xde0f38c1d4cf5977), - Felt::new(0x3d6f0f44105b0fb2), - Felt::new(0x5f34005bed22db6f), - Felt::new(0x377009a91543c872), + Felt::new(0x9388e9a0b434071f), + Felt::new(0x784722585f5a7aa2), + Felt::new(0x221afc22061b63b2), + Felt::new(0x341153b01693c583), ]), Word::new([ - Felt::new(0x8763f1c59420f662), - Felt::new(0xbe15cc9b37fdbdb3), - Felt::new(0xeed75857d5451487), - Felt::new(0x10b3507901fcfb8b), + Felt::new(0x9177622e69ded3fe), + Felt::new(0x34324c4324e12cd5), + Felt::new(0x59a6b81b4e0c9321), + Felt::new(0xf267e523cd486bcd), ]), Word::new([ - Felt::new(0x2e40aeb53f7ba2f5), - Felt::new(0xed598b103221e46), - Felt::new(0xed943dae7f3be8f7), - Felt::new(0x7115a61b37a95c30), + Felt::new(0xc5d14c4b40b190ed), + Felt::new(0xc7437bdd38e193c6), + Felt::new(0x55d189d25bc408e6), + Felt::new(0x68df3f58ce2cd9f9), ]), Word::new([ - Felt::new(0xef9bdb6947abe190), - Felt::new(0xfe47c74c5ad62e2b), - Felt::new(0xf85ee41bc6960d64), - Felt::new(0x55e51b57d5990e2b), + Felt::new(0xa68327c1bef41681), + Felt::new(0x23dbfd6200a53231), + Felt::new(0x498254d87f792150), + Felt::new(0x2a44b2f4aa95eb36), ]), Word::new([ - Felt::new(0x81798808c02cffe0), - Felt::new(0x22df79cb29991e51), - Felt::new(0x965714f831e09f90), - Felt::new(0x67ac8aef55047894), + Felt::new(0x64e0617f2fa74e39), + Felt::new(0x96e6deb7cc18acf3), + Felt::new(0xcb387346b641d5a9), + Felt::new(0x8812aec31d8823a2), ]), Word::new([ - Felt::new(0x321d58dfe138e326), - Felt::new(0xee80b399b444c937), - Felt::new(0x6cbc565ad3d69ccf), - Felt::new(0x6ea9e44922bdc48e), + Felt::new(0xe692e4887677c8fe), + Felt::new(0x14f2fc14386b22d6), + Felt::new(0x28100128fd3c512), + Felt::new(0x459ceee98dbd974e), ]), Word::new([ - Felt::new(0xf2a11cd35120f6c3), - Felt::new(0x4e77378973b2ca8), - Felt::new(0x1adb26e6c1630440), - Felt::new(0x42e5495895baee92), + Felt::new(0xac762fde8050484f), + Felt::new(0x730af9b96aa010d2), + Felt::new(0xd78518c6bd98bb61), + Felt::new(0x3cf65f2ca5df413f), ]), Word::new([ - Felt::new(0xe07020daabcdebae), - Felt::new(0x2d5c6456b50a05c3), - Felt::new(0x3050bdec1715085b), - Felt::new(0xe4d05bce00c4f30d), + Felt::new(0xb5b906b764d00027), + Felt::new(0x9fef3c78c401e2dc), + Felt::new(0xf97396aa3bc7c85a), + Felt::new(0x47e536bc737555b8), ]), Word::new([ - Felt::new(0xe64d54038f19cbc3), - Felt::new(0xde70db9c37ffc1a6), - Felt::new(0xb4a54682fe025b15), - Felt::new(0xcb4e28247a791f29), + Felt::new(0xd5ffa2b14d89afff), + Felt::new(0x96709c25efd3e35), + Felt::new(0x9861444eea858fd), + Felt::new(0xe97e7ef564aab34), ]), Word::new([ - Felt::new(0x9cd2815cef52b092), - Felt::new(0xd46fa4485d7aaf5c), - Felt::new(0x275777fd3b9637f7), - Felt::new(0x684317aab8bb48da), + Felt::new(0xd7e3fbf61c6f8223), + Felt::new(0x161c8894f336f976), + Felt::new(0x4aa5779491256f1a), + Felt::new(0x13304f507cef63a3), ]), Word::new([ - Felt::new(0xfef7ca5bc1a8531), - Felt::new(0x66da24a709f70f60), - Felt::new(0xc6d0048b0222dc8d), - Felt::new(0xd82cc216eed266b4), + Felt::new(0x73150e203e8b9f59), + Felt::new(0x7cc26c0dc04c2d24), + Felt::new(0xc4e2e3c2e2fe31b), + Felt::new(0x7144f633a0728c93), ]), Word::new([ - Felt::new(0xc11007d4b20c68e8), - Felt::new(0xb88dea2c92f105d1), - Felt::new(0xfe885fceee959992), - Felt::new(0x4d8c71eeb47c8f90), + Felt::new(0x4c34aa465787c650), + Felt::new(0x1f5b6b30b3886ad8), + Felt::new(0x85d5d22c426637b6), + Felt::new(0x714938f35901a5a6), ]), Word::new([ - Felt::new(0x980fbe89dd050886), - Felt::new(0xdb7ad3a9a9f39be1), - Felt::new(0xf830b6439c7e9bc0), - Felt::new(0xdd76938b7c686c07), + Felt::new(0xf2458896b53e2072), + Felt::new(0x1d276282b4ca608e), + Felt::new(0x5383200c860ff1bb), + Felt::new(0xe1ab1f4d0e13baeb), ]), Word::new([ - Felt::new(0xb678629d183cf841), - Felt::new(0x664f19c21a6465bc), - Felt::new(0xba142578e79eb9d0), - Felt::new(0x1d57cbcdb2bbcb18), + Felt::new(0xf5d5c034a0297f9b), + Felt::new(0x8fe0d16710676fb6), + Felt::new(0x45efb3bf6031097a), + Felt::new(0x7a3ebc763170cbff), ]), Word::new([ - Felt::new(0xc8822aae44990ed3), - Felt::new(0xf7edce1d2a235ab4), - Felt::new(0x8f35d229e981ca01), - Felt::new(0x50dc4c673c8fc58), + Felt::new(0x700f4c46edd1c1ba), + Felt::new(0xb891fdd1dcc9b4ce), + Felt::new(0xa0eca77abaa82648), + Felt::new(0x1fa70514c05600d2), ]), Word::new([ - Felt::new(0x86edc215b92306e7), - Felt::new(0xe333ce17fd0f40df), - Felt::new(0xabcca6409bb48e29), - Felt::new(0xa110affea61c2951), + Felt::new(0xce651dadc88f1d12), + Felt::new(0x70bb2fe45f3d6441), + Felt::new(0xc9084119c4b1c48c), + Felt::new(0x6eadd41d575eb231), ]), Word::new([ - Felt::new(0x269d782ba380a2e4), - Felt::new(0x32bdc65a619310cd), - Felt::new(0x52895e02cb1df991), - Felt::new(0x1749f76388896455), + Felt::new(0x9ad37c76486ddbd4), + Felt::new(0xc4441d6d4537cea8), + Felt::new(0x35217566b537e99c), + Felt::new(0xb3286d64bc3a8c0e), ]), Word::new([ - Felt::new(0x8f99ac4698f12102), - Felt::new(0x9983407c99f948c5), - Felt::new(0x7b89856f980cb407), - Felt::new(0x8acff0a017e68367), + Felt::new(0xb52d785f4d08ef1a), + Felt::new(0xce18284b28477fb7), + Felt::new(0x5b1786b38931c1b4), + Felt::new(0x4eb6848ccfafea80), ]), Word::new([ - Felt::new(0xe7983973c759318a), - Felt::new(0xb389a6754d7976ca), - Felt::new(0x1d7ded5044c6ede6), - Felt::new(0x4290fc214bd001d7), + Felt::new(0x8d1f5927e174300d), + Felt::new(0x82ecc51e9f8fd848), + Felt::new(0x70d2d1205acc7410), + Felt::new(0x450f26de53764aea), ]), Word::new([ - Felt::new(0x2a1607db398812eb), - Felt::new(0xbbaaed6d5de95899), - Felt::new(0x53699ff1add9cc48), - Felt::new(0x71c99c4c20a2cbe9), + Felt::new(0x78d2b10fa83c20a3), + Felt::new(0xba4aa51f82f228df), + Felt::new(0x931595bcd91f012e), + Felt::new(0x806ce2ed4ff375d7), ]), Word::new([ - Felt::new(0x9c211abaf37beba7), - Felt::new(0x44f91ee2c8f84830), - Felt::new(0xdaf1ca95546ff105), - Felt::new(0x4d15218eb972c855), + Felt::new(0x7f9d9c145a6d8f34), + Felt::new(0x1589efb30430f049), + Felt::new(0xdaae113fe8ea8bf), + Felt::new(0xc22d9ed231e180b8), ]), Word::new([ - Felt::new(0x47018b067647ff40), - Felt::new(0xabd25bc93e3cd280), - Felt::new(0x1e33fd9953262800), - Felt::new(0x9b8f68c64db159c3), + Felt::new(0x6c9cce48f777b8db), + Felt::new(0xc963033cdfcc3eac), + Felt::new(0xfad09eedfff0482a), + Felt::new(0x28eb5607a25a5cc9), ]), Word::new([ - Felt::new(0xa20fb2bcf2636418), - Felt::new(0xdc8996a5085ba820), - Felt::new(0x349b49cddfc936d4), - Felt::new(0x1d816c1d0bfef815), + Felt::new(0xa00aef448a097720), + Felt::new(0x31db189b5c633c34), + Felt::new(0xcee74e8d4a496da), + Felt::new(0x1a31a14cce810863), ]), Word::new([ - Felt::new(0xc19364d95b916e9b), - Felt::new(0xdcb0cf99f9ca31b5), - Felt::new(0x1b5493d83dca1621), - Felt::new(0xf0758e5e3459a0f9), + Felt::new(0xe3d71b05ac867f3a), + Felt::new(0x5c7ab1e6c3f3c749), + Felt::new(0x980f13958d1203d), + Felt::new(0xab6dea61dab9b3cb), ]), Word::new([ - Felt::new(0xdf2cb895c1de5b3a), - Felt::new(0xb7347b591512353a), - Felt::new(0xfdbbce7837412eb7), - Felt::new(0x893fa2af604d446f), + Felt::new(0x65cd98966451cc0f), + Felt::new(0xbc86e07d4e4685b1), + Felt::new(0x552d5160d91266ac), + Felt::new(0x838c05d03ef922ad), ]), Word::new([ - Felt::new(0x75d2b8fc6043d11e), - Felt::new(0xa6559eaebeed7d5f), - Felt::new(0xa9379773dad056b3), - Felt::new(0xf3bcf80d0748d3c1), + Felt::new(0x7ee3580bee2f4108), + Felt::new(0xa15be9b72fe7d7f8), + Felt::new(0x3a6ab01d40b1f9be), + Felt::new(0xf86f8b22a4db595a), ]), Word::new([ - Felt::new(0x35b731f6c583214a), - Felt::new(0x26249962927dd05f), - Felt::new(0x75fc431a3e7c9e93), - Felt::new(0x170c1036d421083d), + Felt::new(0xc9ca753fec71b643), + Felt::new(0xccdc18345ad0bb92), + Felt::new(0xf838d0cd1e9a22b2), + Felt::new(0xceafe749ebe09ca5), ]), Word::new([ - Felt::new(0x1d6fbabfdf0d9096), - Felt::new(0x7d7c9687d9eca6cc), - Felt::new(0xd62974b75d27af1c), - Felt::new(0x93ed9a3825cc1c35), + Felt::new(0x68aed7a433ba6f89), + Felt::new(0x872f414e44578643), + Felt::new(0x21f3e5c852e0edee), + Felt::new(0x617580f1bd0a9bbd), ]), Word::new([ - Felt::new(0xd30946664518ff6e), - Felt::new(0xd3e54aedfb7ba7e5), - Felt::new(0xb91107b2bfadfa1d), - Felt::new(0x2f7b0b2cb06cc43b), + Felt::new(0x6e9c957b61e49f55), + Felt::new(0xd08f4ef34c34daca), + Felt::new(0xd9498340c980973a), + Felt::new(0x592dc9098a00bcf5), ]), Word::new([ - Felt::new(0x47d1dc850260558e), - Felt::new(0x8e5dbde02c522c39), - Felt::new(0x3464d9fe9fd4a1e), - Felt::new(0xf9e5bcfe534437be), + Felt::new(0xdb3a7671f2f213ff), + Felt::new(0x98d8c80be9778636), + Felt::new(0xa83e7eda3baae466), + Felt::new(0x414627e94cef5a42), ]), Word::new([ - Felt::new(0x83378fd3d8e8a235), - Felt::new(0x5c12793119b6dfdb), - Felt::new(0xfc6f110fe6acbc57), - Felt::new(0x3138336422622a48), + Felt::new(0x9f8c71dd51c1b90b), + Felt::new(0x72849d1a55d42ee0), + Felt::new(0xb5a9f39b4e358b5a), + Felt::new(0x484007711542ed58), ]), Word::new([ - Felt::new(0x239c939a0a9787a0), - Felt::new(0x6c0d389b75f1cfb4), - Felt::new(0xc1947a136998e2a1), - Felt::new(0x76c1779e38ffb573), + Felt::new(0xf12e3506d6b6c442), + Felt::new(0xc4d45c104667788f), + Felt::new(0xf47c201e0a040319), + Felt::new(0xe62268fa6f2d91e0), ]), Word::new([ - Felt::new(0x7a266f705e62cd23), - Felt::new(0x7246a2960a038c2), - Felt::new(0xc1f47087a22fa2cb), - Felt::new(0xf298d4651af0b8b2), + Felt::new(0xfcec56c151f429d0), + Felt::new(0x240c895a3839cc45), + Felt::new(0x4a2f94d5ab28c7e4), + Felt::new(0x46898fef30fcf6b0), ]), Word::new([ - Felt::new(0x623bcdb6cc15e3ad), - Felt::new(0x8a6e820adf4725c3), - Felt::new(0x48737f1587e13208), - Felt::new(0xbf747c141bf3564c), + Felt::new(0x24a37f64007709c1), + Felt::new(0x30e34cd6365f2af5), + Felt::new(0xbc6ee1fce63257df), + Felt::new(0x47878c244a01a6d4), ]), Word::new([ - Felt::new(0x14842ec18fe2348c), - Felt::new(0x3701e593309841cf), - Felt::new(0x8e85c9f1884fdf7b), - Felt::new(0xa4cc06a6b8cae8e3), + Felt::new(0xf899cf62d3e064da), + Felt::new(0xdac739aafa7c1bf8), + Felt::new(0x2f76cb83eb1ac830), + Felt::new(0x19eaebd00c4585ec), ]), Word::new([ - Felt::new(0xcfebb64f4bf4f79), - Felt::new(0x54754d70569eeecd), - Felt::new(0x50405a6b79d1ae83), - Felt::new(0x9075f17ccebc056c), + Felt::new(0xb5889a2b3ade4339), + Felt::new(0xede5c4fb389619b4), + Felt::new(0x82699c26c8224722), + Felt::new(0xaccc76e026c53c65), ]), Word::new([ - Felt::new(0x9a93d03d0f9c825f), - Felt::new(0xf704fa1580fe53c7), - Felt::new(0xf95df7a7d06a22b7), - Felt::new(0x8462e18adf8b3607), + Felt::new(0x743d9808cb20cc9c), + Felt::new(0x118be69d793662c7), + Felt::new(0xf4e1de748f1cd76d), + Felt::new(0xdff5ee2bd200f9c9), ]), Word::new([ - Felt::new(0xb5210a5cbd9556b4), - Felt::new(0x6fd4218ebf3c7336), - Felt::new(0x19d661830be725ae), - Felt::new(0x28a2862b49428353), + Felt::new(0xfdea51ddaf36659a), + Felt::new(0xdef47a885c19e76c), + Felt::new(0x67fa40c1770baeee), + Felt::new(0x21e5a0cc0fba1cbe), ]), Word::new([ - Felt::new(0x93ceddc8a18724fe), - Felt::new(0x4e3299172e9130ed), - Felt::new(0x80229e0e1808c860), - Felt::new(0x13f479347eb7fd78), + Felt::new(0xeb80d35cc0b80b64), + Felt::new(0x1e4ba2d214e73fc0), + Felt::new(0xe06df54f53df077d), + Felt::new(0x4fb92dcdde85bb1c), ]), Word::new([ - Felt::new(0x86e4db88d39d4203), - Felt::new(0x81c24ca37b068741), - Felt::new(0x12b7d21371ca58f5), - Felt::new(0xb6546d4722efcbb0), + Felt::new(0xa0124f39e4fbbd8a), + Felt::new(0xa435a6d56e35ebf0), + Felt::new(0xa2da045c9e074ea5), + Felt::new(0x84b29221d6db5162), ]), Word::new([ - Felt::new(0x96ce1320155172c5), - Felt::new(0xbf622c3a5ab86fba), - Felt::new(0x5876a31266554836), - Felt::new(0x4f23fd3646963922), + Felt::new(0x863188446bc5e810), + Felt::new(0xe657920004e47792), + Felt::new(0x6763c88831d8bce5), + Felt::new(0x4226d55266af4de1), ]), Word::new([ - Felt::new(0x48f59a613c9baa43), - Felt::new(0x761de5ad2fd2c806), - Felt::new(0x2db99e809e35728f), - Felt::new(0x38b05ac131a0edc0), + Felt::new(0xb60470c3c5b77a8b), + Felt::new(0xdb7427ff68da5d48), + Felt::new(0x313ce707732b0c65), + Felt::new(0xa48b9a001ede6e4f), ]), Word::new([ - Felt::new(0x6e4fba2ef071cb8a), - Felt::new(0x77c415814dc5a0e5), - Felt::new(0xa0492c8344a64bb1), - Felt::new(0xc6dd5e8dbc841fe5), + Felt::new(0xbe58cae47a3bda6c), + Felt::new(0xedf2981cab8486e8), + Felt::new(0xe44eedfd2bd4db7c), + Felt::new(0xdf571d975e7451dc), ]), Word::new([ - Felt::new(0xa31e2e634187fec), - Felt::new(0xa4c019c12457e4b1), - Felt::new(0xa7b9de27a75ec6b4), - Felt::new(0x990bacb76b218164), + Felt::new(0x5d275ba45b8fc0ae), + Felt::new(0x597293899adcd624), + Felt::new(0x3d9d9d9f905c69a9), + Felt::new(0x3a2c0b8006b88d28), ]), Word::new([ - Felt::new(0x97c85363ab1c997e), - Felt::new(0xa95cd8ccab0b41b3), - Felt::new(0xb98b7ebc3680470b), - Felt::new(0x22fe1b13640f19a9), + Felt::new(0x566ea960c032817e), + Felt::new(0x3fc2f2397688666f), + Felt::new(0xae91b4ebf6d38e4e), + Felt::new(0x55678e62f7c0bad9), ]), Word::new([ - Felt::new(0x113c9a5f0dfbf187), - Felt::new(0x77f2dc9c46f3d699), - Felt::new(0xc3d92d34c950f8f4), - Felt::new(0x9cc6aaf7ffdaf2b6), + Felt::new(0x68a5ab07664b7030), + Felt::new(0x734268d2eddd56dc), + Felt::new(0x741e2227a74ba6a9), + Felt::new(0x6db8b16f53a72693), ]), Word::new([ - Felt::new(0xa5f51bc68b62924c), - Felt::new(0x54182d0b8b519f87), - Felt::new(0x15b42760e2ad50a5), - Felt::new(0x3b2d54cae046788), + Felt::new(0x1a741f201036a8ef), + Felt::new(0x7ec9f53168688afe), + Felt::new(0xf7f10daf37abc4c3), + Felt::new(0xe22740bb94b207f5), ]), Word::new([ - Felt::new(0xefec815078a58b7d), - Felt::new(0x2d02bd88ae2b8a3d), - Felt::new(0x7b3dee115eaac60a), - Felt::new(0x8e659da09a00ffad), + Felt::new(0xcf1682e05e224ca3), + Felt::new(0xb19bc6e35bc5563c), + Felt::new(0x36b025ea30c77fd1), + Felt::new(0x9cba72b1fe696a74), ]), Word::new([ - Felt::new(0x1987fb02253b4338), - Felt::new(0xa7c1e3a856b329be), - Felt::new(0x8d90defd305553e8), - Felt::new(0xb132ee2f7526c94d), + Felt::new(0x6727617dfcad0e43), + Felt::new(0x99f101fde0e17103), + Felt::new(0x5c5795c42f9154cb), + Felt::new(0x442937b3e266f4f), ]), Word::new([ - Felt::new(0x1556b5441e77734f), - Felt::new(0xa2ceaf4b2822a233), - Felt::new(0x41e5ee79d553e00c), - Felt::new(0xf2cdc04fd67a69f2), + Felt::new(0xe6d73c0ee48c7c65), + Felt::new(0x6899de7915dd4ad3), + Felt::new(0x650106188d5c1fa2), + Felt::new(0xfaf90f9fb37c2d6e), ]), Word::new([ - Felt::new(0xd4a8d6025cb6e3a), - Felt::new(0xd8d181277e183f21), - Felt::new(0x3bf9725618de11d3), - Felt::new(0xb26a0eb5a7d9c86e), + Felt::new(0x4248bb3fcd7ad129), + Felt::new(0xeb70d914516b8428), + Felt::new(0x28feb90174c69f3f), + Felt::new(0x1ec9ac80fc9fbb60), ]), Word::new([ - Felt::new(0xcdc5ad1e45e351c2), - Felt::new(0xf00b06807244caa6), - Felt::new(0xbbb01495c9a7e17d), - Felt::new(0xd9614df7e656a73f), + Felt::new(0x106686f6c74957d5), + Felt::new(0x32105c15b1aa5c4), + Felt::new(0x6dedbe92c47a4b32), + Felt::new(0xfc9d1cf1465600e0), ]), Word::new([ - Felt::new(0xfc61931c05c4a55f), - Felt::new(0xcff6ce2372650a9), - Felt::new(0x6e6c32ff4dc92c6), - Felt::new(0x1b72d8c04b0e409d), + Felt::new(0x39cb2c4dbe76972a), + Felt::new(0x4ebb766f9906e2c5), + Felt::new(0x755f76642ccbc6f), + Felt::new(0x5b00eadd79ed3e47), ]), Word::new([ Felt::new(0x77d6e2f32439dbf0), @@ -1569,7 +1569,7 @@ const EMPTY_SUBTREES: [Word; 256] = [ Felt::new(0xd3ad9fb0cea61624), Felt::new(0x66ab5c684fbb8597), ]), - EMPTY_WORD, + Word::new([Felt::new(0x0), Felt::new(0x0), Felt::new(0x0), Felt::new(0x0)]), ]; #[test] @@ -1589,7 +1589,7 @@ fn all_depths_opens_to_zero() { assert_eq!(depth as usize + 1, subtree.len()); // assert the opening is zero - let initial = EMPTY_WORD; + let initial = crate::EMPTY_WORD; assert_eq!(initial, subtree.remove(0)); // compute every node of the path manually and compare with the output @@ -1607,7 +1607,7 @@ fn all_depths_opens_to_zero() { fn test_entry() { // check the leaf is always the empty work for depth in 0..255 { - assert_eq!(EmptySubtreeRoots::entry(depth, depth), &EMPTY_WORD); + assert_eq!(EmptySubtreeRoots::entry(depth, depth), &crate::EMPTY_WORD); } // check the root matches the first element of empty_hashes diff --git a/miden-crypto/src/merkle/smt/forest/tests.rs b/miden-crypto/src/merkle/smt/forest/tests.rs index 93e011eb3..ffded19a1 100644 --- a/miden-crypto/src/merkle/smt/forest/tests.rs +++ b/miden-crypto/src/merkle/smt/forest/tests.rs @@ -32,10 +32,10 @@ fn test_insert_root_empty() -> Result<(), MerkleError> { assert_eq!( forest.insert(empty_tree_root, key, value)?, Word::new([ - Felt::new(10376354645124572258), - Felt::new(13808228093617896354), - Felt::new(4835829334388921262), - Felt::new(2144113770050911180) + Felt::new(8004305032057544734), + Felt::new(8775568154390432518), + Felt::new(15738879297545046620), + Felt::new(8472837894474537954), ]), ); Ok(()) @@ -52,10 +52,10 @@ fn test_insert_multiple_values() -> Result<(), MerkleError> { assert_eq!( new_root, Word::new([ - Felt::new(10376354645124572258), - Felt::new(13808228093617896354), - Felt::new(4835829334388921262), - Felt::new(2144113770050911180) + Felt::new(8004305032057544734), + Felt::new(8775568154390432518), + Felt::new(15738879297545046620), + Felt::new(8472837894474537954), ]), ); @@ -63,10 +63,10 @@ fn test_insert_multiple_values() -> Result<(), MerkleError> { assert_eq!( new_root, Word::new([ - Felt::new(10376354645124572258), - Felt::new(13808228093617896354), - Felt::new(4835829334388921262), - Felt::new(2144113770050911180) + Felt::new(8004305032057544734), + Felt::new(8775568154390432518), + Felt::new(15738879297545046620), + Felt::new(8472837894474537954), ]), ); @@ -79,10 +79,10 @@ fn test_insert_multiple_values() -> Result<(), MerkleError> { assert_eq!( new_root, Word::new([ - Felt::new(1600265794710932756), - Felt::new(4102884415474859847), - Felt::new(7916203901318401823), - Felt::new(9187865964280213047) + Felt::new(11871408080611032882), + Felt::new(15075599519659351786), + Felt::new(2187602169790640097), + Felt::new(3917634304176870231), ]) ); @@ -108,10 +108,10 @@ fn test_batch_insert() -> Result<(), MerkleError> { assert_eq!( new_root, Word::new([ - Felt::new(7086678883692273722), - Felt::new(12292668811816691012), - Felt::new(10126815404170194367), - Felt::new(1147037274136690014) + Felt::new(4696704423458811136), + Felt::new(6409025055729277967), + Felt::new(16123112516746934247), + Felt::new(14531375043307302369), ]) );