Skip to main content

miden_crypto/merkle/
empty_roots.rs

1use core::slice;
2
3use super::{Felt, Word, smt::InnerNode};
4
5// EMPTY NODES SUBTREES
6// ================================================================================================
7
8/// Contains precomputed roots of empty subtrees in a Merkle tree.
9pub struct EmptySubtreeRoots;
10
11impl EmptySubtreeRoots {
12    /// Returns a static slice with roots of empty subtrees of a Merkle tree starting at the
13    /// specified depth.
14    pub const fn empty_hashes(tree_depth: u8) -> &'static [Word] {
15        let ptr = &EMPTY_SUBTREES[255 - tree_depth as usize] as *const Word;
16        // SAFETY:
17        // 1. Lifetime: EMPTY_SUBTREES is a static array with 256 elements, so it outlives any
18        //    returned reference.
19        // 2. Bounds: tree_depth is a u8 (0-255). The starting index is 255 - tree_depth, which is
20        //    always in [0, 255]. The slice length is tree_depth + 1, so the end index is (255 -
21        //    tree_depth) + (tree_depth + 1) = 256, which is exactly the array length.
22        // 3. Alignment: ptr points to a valid Word in the array, satisfying slice::from_raw_parts
23        //    requirements.
24        // This would not be possible as a const fn with safe slice indexing, which is not stable.
25        unsafe { slice::from_raw_parts(ptr, tree_depth as usize + 1) }
26    }
27
28    /// Returns the node's digest for a sub-tree with all its leaves set to the empty word.
29    pub const fn entry(tree_depth: u8, node_depth: u8) -> &'static Word {
30        assert!(node_depth <= tree_depth);
31        let pos = 255 - tree_depth + node_depth;
32        &EMPTY_SUBTREES[pos as usize]
33    }
34
35    /// Returns a sparse Merkle tree [`InnerNode`] with two empty children.
36    ///
37    /// # Note
38    /// `node_depth` is the depth of the **parent** to have empty children. That is, `node_depth`
39    /// and the depth of the returned [`InnerNode`] are the same, and thus the empty hashes are for
40    /// subtrees of depth `node_depth + 1`.
41    pub(crate) const fn get_inner_node(tree_depth: u8, node_depth: u8) -> InnerNode {
42        let &child = Self::entry(tree_depth, node_depth + 1);
43        InnerNode { left: child, right: child }
44    }
45}
46
47// Poseidon2 empty subtree hashes for depths 0..255 (root at index 0). Generated by repeatedly
48// merging the empty word upward.
49const EMPTY_SUBTREES: [Word; 256] = [
50    Word::new([
51        Felt::new_unchecked(0x4c4f25c381e6b418),
52        Felt::new_unchecked(0x4efaef9f33cf00b3),
53        Felt::new_unchecked(0x9b4ccd92de23bca0),
54        Felt::new_unchecked(0x5cbbdf50c70326fb),
55    ]),
56    Word::new([
57        Felt::new_unchecked(0x6f4f58b1fd683ac0),
58        Felt::new_unchecked(0x98b0d7cc08c74f3a),
59        Felt::new_unchecked(0x0ec6e4033bd6571f),
60        Felt::new_unchecked(0x5d8262a48141ef78),
61    ]),
62    Word::new([
63        Felt::new_unchecked(0x6a63aa718072ee71),
64        Felt::new_unchecked(0xea6da6a9d34039b0),
65        Felt::new_unchecked(0x12b3466ee1dea119),
66        Felt::new_unchecked(0x554a18ea9e8eb63f),
67    ]),
68    Word::new([
69        Felt::new_unchecked(0x8c9f6f0a5a929353),
70        Felt::new_unchecked(0xd77fdb28292001c6),
71        Felt::new_unchecked(0x915a07da255563e5),
72        Felt::new_unchecked(0x18e8401cfda4dc43),
73    ]),
74    Word::new([
75        Felt::new_unchecked(0x85ba2b42cd9f245b),
76        Felt::new_unchecked(0xc115f22e9485e488),
77        Felt::new_unchecked(0xf3048ff1fc10cb7b),
78        Felt::new_unchecked(0xbb0dd42baec71f4f),
79    ]),
80    Word::new([
81        Felt::new_unchecked(0x58d2b955c592a555),
82        Felt::new_unchecked(0x059bab14b5e84168),
83        Felt::new_unchecked(0xb8bd990c0af52b1d),
84        Felt::new_unchecked(0x6914c44744a57a2b),
85    ]),
86    Word::new([
87        Felt::new_unchecked(0x91baf2cf95412a72),
88        Felt::new_unchecked(0xc72a7b4e3ef1d622),
89        Felt::new_unchecked(0x9a99975e5ab63e0b),
90        Felt::new_unchecked(0x9b16c5c66c7586ee),
91    ]),
92    Word::new([
93        Felt::new_unchecked(0x426b357fabf42949),
94        Felt::new_unchecked(0x8709ad884a7ddb13),
95        Felt::new_unchecked(0x5c7bee1ee2f68a87),
96        Felt::new_unchecked(0xa7da1212f0218184),
97    ]),
98    Word::new([
99        Felt::new_unchecked(0xdb29c8aa1f19bce8),
100        Felt::new_unchecked(0x272ddbb96bb8a008),
101        Felt::new_unchecked(0x3e390b4c8d4bcb80),
102        Felt::new_unchecked(0xaf37f1594a9038a8),
103    ]),
104    Word::new([
105        Felt::new_unchecked(0x085a13128e900c0c),
106        Felt::new_unchecked(0x5784c3e83c6c2355),
107        Felt::new_unchecked(0x980aedea6a7e9fcd),
108        Felt::new_unchecked(0x7acc863dfba2ed8e),
109    ]),
110    Word::new([
111        Felt::new_unchecked(0x5ea58f1598470e6d),
112        Felt::new_unchecked(0x400c8c0f92222b7d),
113        Felt::new_unchecked(0x0fbcbed8e27387f8),
114        Felt::new_unchecked(0x82bc62efd05c114c),
115    ]),
116    Word::new([
117        Felt::new_unchecked(0x5b44914d0bf7b2c5),
118        Felt::new_unchecked(0xda1a4ff72d0d1e9a),
119        Felt::new_unchecked(0xc1ce4f8428eb0d50),
120        Felt::new_unchecked(0xf5ff337bc642e2e3),
121    ]),
122    Word::new([
123        Felt::new_unchecked(0x8359bfcbca34cb46),
124        Felt::new_unchecked(0xe82f32b88c5666c2),
125        Felt::new_unchecked(0x66423a5bb08de622),
126        Felt::new_unchecked(0xc9652d509826e5f6),
127    ]),
128    Word::new([
129        Felt::new_unchecked(0x6e68f94374d4bc14),
130        Felt::new_unchecked(0x6e793711d79b0cfb),
131        Felt::new_unchecked(0x2f7b445e1dd0100b),
132        Felt::new_unchecked(0x723e3e45f2825c2f),
133    ]),
134    Word::new([
135        Felt::new_unchecked(0x77feeb0c5f52033c),
136        Felt::new_unchecked(0xf585a9f40bc6379c),
137        Felt::new_unchecked(0x761d43ca6808af7f),
138        Felt::new_unchecked(0x5bd50d39bf707d3b),
139    ]),
140    Word::new([
141        Felt::new_unchecked(0xd517236676f152ce),
142        Felt::new_unchecked(0x0c8763bedf2d0a12),
143        Felt::new_unchecked(0xe8c118f6922937bd),
144        Felt::new_unchecked(0x4fe8bd8ef1acfa95),
145    ]),
146    Word::new([
147        Felt::new_unchecked(0x96d944f4048b971e),
148        Felt::new_unchecked(0x60470c914ff5b86e),
149        Felt::new_unchecked(0x1d1b2780ccf538a7),
150        Felt::new_unchecked(0x79cca49fd17f1ea6),
151    ]),
152    Word::new([
153        Felt::new_unchecked(0x4db6c0e245289509),
154        Felt::new_unchecked(0x7e23e1237bb3b42b),
155        Felt::new_unchecked(0x26ed2be12edb3df8),
156        Felt::new_unchecked(0xc73fc0c321466ba0),
157    ]),
158    Word::new([
159        Felt::new_unchecked(0xf4d102ff48eb8faf),
160        Felt::new_unchecked(0x8003b9d941b4a022),
161        Felt::new_unchecked(0x9e17f1edd40819a8),
162        Felt::new_unchecked(0x3b0f05835eeb4d7a),
163    ]),
164    Word::new([
165        Felt::new_unchecked(0x3d1b8bd3071b2b98),
166        Felt::new_unchecked(0xa794c8cded26a3a9),
167        Felt::new_unchecked(0xd0173a1c4483a95b),
168        Felt::new_unchecked(0xf4cb877e2c41e10b),
169    ]),
170    Word::new([
171        Felt::new_unchecked(0xfac0e64c6f5a183e),
172        Felt::new_unchecked(0x1ce5a42204919c27),
173        Felt::new_unchecked(0xcc3e93ee7f5f5b68),
174        Felt::new_unchecked(0x40890d85ab73dbed),
175    ]),
176    Word::new([
177        Felt::new_unchecked(0xe4a5839f68d1428c),
178        Felt::new_unchecked(0xb04141af0bcd7c6e),
179        Felt::new_unchecked(0x15876f1a5c40d606),
180        Felt::new_unchecked(0x5e7e0f1546b8f66d),
181    ]),
182    Word::new([
183        Felt::new_unchecked(0x8440ee0558f7750e),
184        Felt::new_unchecked(0x8ab26896d8c22617),
185        Felt::new_unchecked(0x3301c974c37fc64a),
186        Felt::new_unchecked(0x39e8f07f3739d84b),
187    ]),
188    Word::new([
189        Felt::new_unchecked(0xdea9bc5832fd621d),
190        Felt::new_unchecked(0x3cd34508a2a4aff5),
191        Felt::new_unchecked(0xfb0986c303d559f0),
192        Felt::new_unchecked(0xb3622c645327f880),
193    ]),
194    Word::new([
195        Felt::new_unchecked(0xd6c5f7a1531cf087),
196        Felt::new_unchecked(0x114cf2ac95e0cee3),
197        Felt::new_unchecked(0xd8835c2c0ff1dfe8),
198        Felt::new_unchecked(0x62ae27c77404a384),
199    ]),
200    Word::new([
201        Felt::new_unchecked(0xe29f14d09f47b04b),
202        Felt::new_unchecked(0x533ea3fa6b298a76),
203        Felt::new_unchecked(0xb78b67033c9064de),
204        Felt::new_unchecked(0xd7c87b4821cbbfa0),
205    ]),
206    Word::new([
207        Felt::new_unchecked(0x93c7a74d0def216d),
208        Felt::new_unchecked(0xddb3170d3cbf7553),
209        Felt::new_unchecked(0x8c5470c0a538c7a8),
210        Felt::new_unchecked(0xae95587051aa3371),
211    ]),
212    Word::new([
213        Felt::new_unchecked(0x51fef34c69193b93),
214        Felt::new_unchecked(0xe10207f668aaabec),
215        Felt::new_unchecked(0xbf04a03680bd70ea),
216        Felt::new_unchecked(0x6ffd5e8ac06ab267),
217    ]),
218    Word::new([
219        Felt::new_unchecked(0x36c0cc1726d5f776),
220        Felt::new_unchecked(0xda699e36a057bf54),
221        Felt::new_unchecked(0xe50e1a16719ce9d7),
222        Felt::new_unchecked(0x0362ffdcd7166b33),
223    ]),
224    Word::new([
225        Felt::new_unchecked(0xbda2e0822ceca3be),
226        Felt::new_unchecked(0x18d920168dd7cfd3),
227        Felt::new_unchecked(0xc9af295181c108f0),
228        Felt::new_unchecked(0x6f43459ca6286f64),
229    ]),
230    Word::new([
231        Felt::new_unchecked(0x6bcbded8665027ff),
232        Felt::new_unchecked(0x52c89ea7e2b2824c),
233        Felt::new_unchecked(0xef14967767d21f83),
234        Felt::new_unchecked(0x87f520ca8640f685),
235    ]),
236    Word::new([
237        Felt::new_unchecked(0x94e18c15e22f8a24),
238        Felt::new_unchecked(0x745f09ab5e3eeca5),
239        Felt::new_unchecked(0x6fc2fec9f65bc60b),
240        Felt::new_unchecked(0xd4e4aca63a43a809),
241    ]),
242    Word::new([
243        Felt::new_unchecked(0xa72cd5e0a9dbd78a),
244        Felt::new_unchecked(0x1bd859442151023b),
245        Felt::new_unchecked(0xe93168e5153a73d3),
246        Felt::new_unchecked(0x1944bf967eaea104),
247    ]),
248    Word::new([
249        Felt::new_unchecked(0xc094c3946c426b72),
250        Felt::new_unchecked(0xe2b3d4652ec373f2),
251        Felt::new_unchecked(0x1627f44f3c70ba62),
252        Felt::new_unchecked(0xdd7ec3f1746bcb77),
253    ]),
254    Word::new([
255        Felt::new_unchecked(0x8335704932578d63),
256        Felt::new_unchecked(0x0a73e42cc7c17d84),
257        Felt::new_unchecked(0xf0d977e0b870de98),
258        Felt::new_unchecked(0xc3931cc44c9e9225),
259    ]),
260    Word::new([
261        Felt::new_unchecked(0x3dab0e77122f9016),
262        Felt::new_unchecked(0x931cf6c3711bf31f),
263        Felt::new_unchecked(0x3b007a30619f3df3),
264        Felt::new_unchecked(0x12892b2d3a64dbda),
265    ]),
266    Word::new([
267        Felt::new_unchecked(0x00eb98933ba2f6bb),
268        Felt::new_unchecked(0xb7002750b3367b93),
269        Felt::new_unchecked(0xda039ebdad7cb2fc),
270        Felt::new_unchecked(0x172ae08e17d4e8d4),
271    ]),
272    Word::new([
273        Felt::new_unchecked(0xf2cb4906b28f35c2),
274        Felt::new_unchecked(0x4bb30dca93339b8f),
275        Felt::new_unchecked(0x89205b67d713298d),
276        Felt::new_unchecked(0x977eb680b5770040),
277    ]),
278    Word::new([
279        Felt::new_unchecked(0x1c8bf29ccba294fe),
280        Felt::new_unchecked(0xfecaead56c11576c),
281        Felt::new_unchecked(0x189f3b1165497858),
282        Felt::new_unchecked(0xdf1b25359471086f),
283    ]),
284    Word::new([
285        Felt::new_unchecked(0x358ee429251b0900),
286        Felt::new_unchecked(0xa18acdc332bf723a),
287        Felt::new_unchecked(0x38ac0b7c9ca73880),
288        Felt::new_unchecked(0x34d4eaad1b5f0496),
289    ]),
290    Word::new([
291        Felt::new_unchecked(0xe9023a1544703b89),
292        Felt::new_unchecked(0x6db0aa42d2e16023),
293        Felt::new_unchecked(0x8122a04db9523900),
294        Felt::new_unchecked(0x9d01f08dc8a514e1),
295    ]),
296    Word::new([
297        Felt::new_unchecked(0x274f6fc77438bb26),
298        Felt::new_unchecked(0xc25ff1046af9c4cd),
299        Felt::new_unchecked(0x82a69843472e69d3),
300        Felt::new_unchecked(0xe5a626ddfec0d5ec),
301    ]),
302    Word::new([
303        Felt::new_unchecked(0xc7bc0974d4d1ebdc),
304        Felt::new_unchecked(0xa63ee049dbc1346a),
305        Felt::new_unchecked(0x59cce9fbd6216ecb),
306        Felt::new_unchecked(0x1506f9b3a667fc21),
307    ]),
308    Word::new([
309        Felt::new_unchecked(0x740975d66980e9b3),
310        Felt::new_unchecked(0x491071fde38ebcbc),
311        Felt::new_unchecked(0x51d27f9782b7aa71),
312        Felt::new_unchecked(0xe2cccee6a3058f81),
313    ]),
314    Word::new([
315        Felt::new_unchecked(0xefafa0d1cca18f6b),
316        Felt::new_unchecked(0x21d01e1f4d3200fd),
317        Felt::new_unchecked(0x32543fb5cb1f1330),
318        Felt::new_unchecked(0x574e659ac1bd470a),
319    ]),
320    Word::new([
321        Felt::new_unchecked(0xb8be198c6b934315),
322        Felt::new_unchecked(0x032729d41beabbd2),
323        Felt::new_unchecked(0xe8ae241489f2f7be),
324        Felt::new_unchecked(0x2f6be58f340ce431),
325    ]),
326    Word::new([
327        Felt::new_unchecked(0x61192457c61235d5),
328        Felt::new_unchecked(0x12a955ce18e6c305),
329        Felt::new_unchecked(0xcdd90649a2bbe9ab),
330        Felt::new_unchecked(0x91b25426cf074b2e),
331    ]),
332    Word::new([
333        Felt::new_unchecked(0x28179dce83b0d50e),
334        Felt::new_unchecked(0x93a7870c5eb916ed),
335        Felt::new_unchecked(0xdfe027afc4f5480a),
336        Felt::new_unchecked(0x9ab5b0ae17c54ace),
337    ]),
338    Word::new([
339        Felt::new_unchecked(0xcb3bbd3a71dab53e),
340        Felt::new_unchecked(0x4304ceec93bfb5ea),
341        Felt::new_unchecked(0x2f2e6eccc76b435e),
342        Felt::new_unchecked(0xef13f7ce5fc20766),
343    ]),
344    Word::new([
345        Felt::new_unchecked(0xf1cab7b14b2b4886),
346        Felt::new_unchecked(0x5c8a8f437fde7974),
347        Felt::new_unchecked(0x25caa4ead5c6f47f),
348        Felt::new_unchecked(0x968d3e942a727813),
349    ]),
350    Word::new([
351        Felt::new_unchecked(0xc8ca564e1fa15e70),
352        Felt::new_unchecked(0x3541a4393cced221),
353        Felt::new_unchecked(0x8e3e6294a5a3e70a),
354        Felt::new_unchecked(0x41fd4afd00ba830c),
355    ]),
356    Word::new([
357        Felt::new_unchecked(0xc2cabf38295ecfc6),
358        Felt::new_unchecked(0xcd115741a673fa37),
359        Felt::new_unchecked(0xacb77a4ab17f55d7),
360        Felt::new_unchecked(0x7e1840e35c545330),
361    ]),
362    Word::new([
363        Felt::new_unchecked(0x750c303c0e6d0dab),
364        Felt::new_unchecked(0xcb66103f5bb48380),
365        Felt::new_unchecked(0x9eec24d54e17f633),
366        Felt::new_unchecked(0x4e553d6e7f94254c),
367    ]),
368    Word::new([
369        Felt::new_unchecked(0xfb1bc99cffe0024b),
370        Felt::new_unchecked(0xd0fa793ff9b9ec3f),
371        Felt::new_unchecked(0x6923727eedaf58ed),
372        Felt::new_unchecked(0x503b9a6dec12cb30),
373    ]),
374    Word::new([
375        Felt::new_unchecked(0x77fe721f644abb71),
376        Felt::new_unchecked(0x4d7856e2d36a578e),
377        Felt::new_unchecked(0x02bf228c6daa5349),
378        Felt::new_unchecked(0xad735e6136044c50),
379    ]),
380    Word::new([
381        Felt::new_unchecked(0x1552e98b8399fee0),
382        Felt::new_unchecked(0x660aa729b5cef551),
383        Felt::new_unchecked(0xb00bcdaae79cbf64),
384        Felt::new_unchecked(0x0837b92aa8d6c16b),
385    ]),
386    Word::new([
387        Felt::new_unchecked(0x288a230cf0ae5b21),
388        Felt::new_unchecked(0xa47da6db58a203f0),
389        Felt::new_unchecked(0x127ccfa9e3e7ea72),
390        Felt::new_unchecked(0xd0a6ca2919ff6f3a),
391    ]),
392    Word::new([
393        Felt::new_unchecked(0x7927c07d0e07ee1e),
394        Felt::new_unchecked(0x101f4053bd001276),
395        Felt::new_unchecked(0xccdfcc6d0a9a2582),
396        Felt::new_unchecked(0x33a309ccc919a439),
397    ]),
398    Word::new([
399        Felt::new_unchecked(0x571070fa8529b634),
400        Felt::new_unchecked(0x6f9d97f1091906cc),
401        Felt::new_unchecked(0x2524aeca304cb9e4),
402        Felt::new_unchecked(0x4088d46b157038b8),
403    ]),
404    Word::new([
405        Felt::new_unchecked(0x8624643f3c389919),
406        Felt::new_unchecked(0x17d782b4204db31c),
407        Felt::new_unchecked(0xe75a4060068ba11a),
408        Felt::new_unchecked(0x4fad0d4319891940),
409    ]),
410    Word::new([
411        Felt::new_unchecked(0x574cb69ffca04275),
412        Felt::new_unchecked(0x493938a8bccb44db),
413        Felt::new_unchecked(0xfb7ffc6b92f6a3e2),
414        Felt::new_unchecked(0x534c9d53b229d295),
415    ]),
416    Word::new([
417        Felt::new_unchecked(0x31ae7423925ed97b),
418        Felt::new_unchecked(0xd38e2640229f51d7),
419        Felt::new_unchecked(0xdf41da363b58b070),
420        Felt::new_unchecked(0x43fe9fc24daf4a62),
421    ]),
422    Word::new([
423        Felt::new_unchecked(0x5ab7380fbcc148fd),
424        Felt::new_unchecked(0x8ce336f0167b134c),
425        Felt::new_unchecked(0x435f4ecdd3ba555e),
426        Felt::new_unchecked(0xbea93960c5fa8d26),
427    ]),
428    Word::new([
429        Felt::new_unchecked(0x45f7ea2a8fcd752f),
430        Felt::new_unchecked(0x19735515777c9278),
431        Felt::new_unchecked(0x2f70d26769c7c5e4),
432        Felt::new_unchecked(0xdcdd31f5d5336d5b),
433    ]),
434    Word::new([
435        Felt::new_unchecked(0x8105568c603d0a4f),
436        Felt::new_unchecked(0xf11521a9400f2d43),
437        Felt::new_unchecked(0x0343856906a3b205),
438        Felt::new_unchecked(0x658b1805b9e5a6b0),
439    ]),
440    Word::new([
441        Felt::new_unchecked(0xb8235afd656e68d1),
442        Felt::new_unchecked(0x8e9325b28c9db5b8),
443        Felt::new_unchecked(0xb8e9b84eafe92bf1),
444        Felt::new_unchecked(0xaaab7303aec7b932),
445    ]),
446    Word::new([
447        Felt::new_unchecked(0x522be39d1d039336),
448        Felt::new_unchecked(0x54778cf95a13a4b7),
449        Felt::new_unchecked(0xf686afe997af8e76),
450        Felt::new_unchecked(0x49d00abd183e9577),
451    ]),
452    Word::new([
453        Felt::new_unchecked(0x7a87110967de6216),
454        Felt::new_unchecked(0x4e6a5094cbcd350a),
455        Felt::new_unchecked(0x4d21aca4636aa2af),
456        Felt::new_unchecked(0x9baefa59ca318945),
457    ]),
458    Word::new([
459        Felt::new_unchecked(0xce4215291a0ee341),
460        Felt::new_unchecked(0x681e92bc5d92c35f),
461        Felt::new_unchecked(0x9ab62118bae03dbd),
462        Felt::new_unchecked(0xd662cdec48a1cb55),
463    ]),
464    Word::new([
465        Felt::new_unchecked(0x444bff5dd5d99841),
466        Felt::new_unchecked(0xcbc0bad4128802a7),
467        Felt::new_unchecked(0x7dc627dd675321a9),
468        Felt::new_unchecked(0x12ab3cc573078686),
469    ]),
470    Word::new([
471        Felt::new_unchecked(0x8743c664828e6b76),
472        Felt::new_unchecked(0xfe5d9306c95b1713),
473        Felt::new_unchecked(0x73de4560e75e8062),
474        Felt::new_unchecked(0x25536f84dd8fa10e),
475    ]),
476    Word::new([
477        Felt::new_unchecked(0x0eb224b91daef640),
478        Felt::new_unchecked(0xbe21b47657f5137f),
479        Felt::new_unchecked(0xcdc4e271cd9d455b),
480        Felt::new_unchecked(0xf91afc1c595493db),
481    ]),
482    Word::new([
483        Felt::new_unchecked(0x0fef850ea1af29ee),
484        Felt::new_unchecked(0xf391f562226b0ced),
485        Felt::new_unchecked(0x7710b9c25a70cdc0),
486        Felt::new_unchecked(0x1aa67e3c7783e360),
487    ]),
488    Word::new([
489        Felt::new_unchecked(0x9728bb0dc4399b39),
490        Felt::new_unchecked(0x6b4967135b05596b),
491        Felt::new_unchecked(0x98d77568369f548e),
492        Felt::new_unchecked(0x1003df8f565f3e5b),
493    ]),
494    Word::new([
495        Felt::new_unchecked(0x562424e7c70bfeb6),
496        Felt::new_unchecked(0x701766ac2bcb299c),
497        Felt::new_unchecked(0xea733a7d64bf2c86),
498        Felt::new_unchecked(0x9010902157097cfa),
499    ]),
500    Word::new([
501        Felt::new_unchecked(0x821b070d6522c246),
502        Felt::new_unchecked(0x92c01259b7e9b96b),
503        Felt::new_unchecked(0x49202f5a484e8b28),
504        Felt::new_unchecked(0x72928828b97dd37c),
505    ]),
506    Word::new([
507        Felt::new_unchecked(0x06eb0da16018d870),
508        Felt::new_unchecked(0x1e56486cd6353a5b),
509        Felt::new_unchecked(0x5ce12d3f3dc19b05),
510        Felt::new_unchecked(0x9b80ef76e5fa3575),
511    ]),
512    Word::new([
513        Felt::new_unchecked(0xc35eee558722b546),
514        Felt::new_unchecked(0xdb166a796f0a02c2),
515        Felt::new_unchecked(0xf69e31d05695c58d),
516        Felt::new_unchecked(0x289bc5bc90544fcc),
517    ]),
518    Word::new([
519        Felt::new_unchecked(0x25b0e88c7012e834),
520        Felt::new_unchecked(0xa7224182373a6440),
521        Felt::new_unchecked(0x173777468abc3d44),
522        Felt::new_unchecked(0xe54cf20cffcf86ca),
523    ]),
524    Word::new([
525        Felt::new_unchecked(0xc02e6a573c7ed292),
526        Felt::new_unchecked(0x35b6402d71d0adb9),
527        Felt::new_unchecked(0x5cd2c8a6ac3e7083),
528        Felt::new_unchecked(0x2388eda39acb5336),
529    ]),
530    Word::new([
531        Felt::new_unchecked(0x78c00bf96ea42bbf),
532        Felt::new_unchecked(0x1ec02d8b1dbc38ff),
533        Felt::new_unchecked(0xe7de2bfb53624b36),
534        Felt::new_unchecked(0x022aedad8ef3616b),
535    ]),
536    Word::new([
537        Felt::new_unchecked(0x3ad714ca78bbe472),
538        Felt::new_unchecked(0x2a6ad98c25e3a428),
539        Felt::new_unchecked(0x75524799f1ce7b8c),
540        Felt::new_unchecked(0x7ee22afe3881d875),
541    ]),
542    Word::new([
543        Felt::new_unchecked(0x9b1d77b5f98a118a),
544        Felt::new_unchecked(0x5db8bc2ce3f61e6d),
545        Felt::new_unchecked(0xa683c9daa18110d8),
546        Felt::new_unchecked(0x753272e15a587968),
547    ]),
548    Word::new([
549        Felt::new_unchecked(0x060ca6e344060800),
550        Felt::new_unchecked(0xfae2f90213b86ff0),
551        Felt::new_unchecked(0x0606ac5f147b803d),
552        Felt::new_unchecked(0x434de966bd04f765),
553    ]),
554    Word::new([
555        Felt::new_unchecked(0x8ef48ccfce07f406),
556        Felt::new_unchecked(0xf5a41d2111325bfe),
557        Felt::new_unchecked(0x17264f6eb5b4cdaa),
558        Felt::new_unchecked(0xec2310908b7b83d8),
559    ]),
560    Word::new([
561        Felt::new_unchecked(0xdb1b803fe8febe93),
562        Felt::new_unchecked(0xd9dfce0805d65336),
563        Felt::new_unchecked(0x6bb502b32f767b27),
564        Felt::new_unchecked(0xde85ac18157d6386),
565    ]),
566    Word::new([
567        Felt::new_unchecked(0xf65dac4e4a996af3),
568        Felt::new_unchecked(0xfde7682301ddddd9),
569        Felt::new_unchecked(0xf3115bf873b0358c),
570        Felt::new_unchecked(0x6a8f813a7a583575),
571    ]),
572    Word::new([
573        Felt::new_unchecked(0xe8cb62a3817385f0),
574        Felt::new_unchecked(0xb183563b68457034),
575        Felt::new_unchecked(0x0504d9e6b8e8bb6b),
576        Felt::new_unchecked(0x36b2fafe5f506100),
577    ]),
578    Word::new([
579        Felt::new_unchecked(0xf41e8ab106786bd4),
580        Felt::new_unchecked(0x1b2f564e57db0f66),
581        Felt::new_unchecked(0xc920d858114aed61),
582        Felt::new_unchecked(0xba4618226512e159),
583    ]),
584    Word::new([
585        Felt::new_unchecked(0x01befb99c9341601),
586        Felt::new_unchecked(0x900b096476ccc620),
587        Felt::new_unchecked(0xbb57d9835686b4bc),
588        Felt::new_unchecked(0x4c17d0a1558ae848),
589    ]),
590    Word::new([
591        Felt::new_unchecked(0xff222f8e8701f045),
592        Felt::new_unchecked(0x217dd307fededabf),
593        Felt::new_unchecked(0xfcf0c23bb1384f18),
594        Felt::new_unchecked(0x51f60bd42142dfd0),
595    ]),
596    Word::new([
597        Felt::new_unchecked(0x452212d261e584c4),
598        Felt::new_unchecked(0xeebdb4a2ccebd4a9),
599        Felt::new_unchecked(0x79cb25167abd229d),
600        Felt::new_unchecked(0x36a3793c743e1e30),
601    ]),
602    Word::new([
603        Felt::new_unchecked(0x01caf9bb188b2f2f),
604        Felt::new_unchecked(0xaebb85879b3f6d6f),
605        Felt::new_unchecked(0x3d1e118a45ecaf5d),
606        Felt::new_unchecked(0xc8d325d158fb1d76),
607    ]),
608    Word::new([
609        Felt::new_unchecked(0x459c4c9f4ef519ce),
610        Felt::new_unchecked(0xc91a01bd97fc5938),
611        Felt::new_unchecked(0x091183436933fcc3),
612        Felt::new_unchecked(0xd4824d71e41c687a),
613    ]),
614    Word::new([
615        Felt::new_unchecked(0x5bea80fe6b9eccad),
616        Felt::new_unchecked(0x0094dc3df67db3c7),
617        Felt::new_unchecked(0x41df3c2193134951),
618        Felt::new_unchecked(0x4433faaebeedafdb),
619    ]),
620    Word::new([
621        Felt::new_unchecked(0xd846b8d025899bbf),
622        Felt::new_unchecked(0xc88b0d0f914359be),
623        Felt::new_unchecked(0x1aa4242a605cec57),
624        Felt::new_unchecked(0x54a4c144cb6138ac),
625    ]),
626    Word::new([
627        Felt::new_unchecked(0xe78e15f937e23f9f),
628        Felt::new_unchecked(0xa2dd1699cda36767),
629        Felt::new_unchecked(0x0f72e41266047f3d),
630        Felt::new_unchecked(0x975be883eb3c1b59),
631    ]),
632    Word::new([
633        Felt::new_unchecked(0x35c61b05315ee566),
634        Felt::new_unchecked(0x431031de15b6bd94),
635        Felt::new_unchecked(0xac3cdcc29b203e9c),
636        Felt::new_unchecked(0x4ea89420b63a861b),
637    ]),
638    Word::new([
639        Felt::new_unchecked(0x6e30a3f2468a73e8),
640        Felt::new_unchecked(0x13378272d987ee1b),
641        Felt::new_unchecked(0xb76724d0f023d9c5),
642        Felt::new_unchecked(0x01ece73b5f000a3b),
643    ]),
644    Word::new([
645        Felt::new_unchecked(0x0b1d5556f721b3fa),
646        Felt::new_unchecked(0x1e4eb49b7d09cdfa),
647        Felt::new_unchecked(0x25c8fbf2bbfa4037),
648        Felt::new_unchecked(0xdf4c7b917fad54d7),
649    ]),
650    Word::new([
651        Felt::new_unchecked(0xafb7411d2986278d),
652        Felt::new_unchecked(0x52aff0e894aa5a93),
653        Felt::new_unchecked(0xb5ea358f35b12b1e),
654        Felt::new_unchecked(0xd935ee5912b2e915),
655    ]),
656    Word::new([
657        Felt::new_unchecked(0x7d2fd3ca225e5354),
658        Felt::new_unchecked(0x7237154354e48d89),
659        Felt::new_unchecked(0xc333dd09608804ad),
660        Felt::new_unchecked(0xe9097f0416711084),
661    ]),
662    Word::new([
663        Felt::new_unchecked(0xa1d950c36fd9f939),
664        Felt::new_unchecked(0xad28b64388bf93e1),
665        Felt::new_unchecked(0xc43be9724ea1d9d2),
666        Felt::new_unchecked(0x727307c17f2e1bfe),
667    ]),
668    Word::new([
669        Felt::new_unchecked(0xb4c89f66d142e19b),
670        Felt::new_unchecked(0xf608ec08b6165621),
671        Felt::new_unchecked(0x10ece5bbbc02e0fd),
672        Felt::new_unchecked(0x8c9f28a65cf173e9),
673    ]),
674    Word::new([
675        Felt::new_unchecked(0x1f631999cd61b4c3),
676        Felt::new_unchecked(0xe3c5a6cf71f4bae1),
677        Felt::new_unchecked(0x5c34e905be52ab53),
678        Felt::new_unchecked(0x653a911dd9c1d7dc),
679    ]),
680    Word::new([
681        Felt::new_unchecked(0xa272f052fe6234ef),
682        Felt::new_unchecked(0x3a7a2b3f32c38206),
683        Felt::new_unchecked(0x2ecdfb73c120cc73),
684        Felt::new_unchecked(0xaa2fd92278513ebc),
685    ]),
686    Word::new([
687        Felt::new_unchecked(0xf467afb92e2d6795),
688        Felt::new_unchecked(0xef30265ea67632c7),
689        Felt::new_unchecked(0x64ad8acfd6375081),
690        Felt::new_unchecked(0xadc4c536cb9bd2ab),
691    ]),
692    Word::new([
693        Felt::new_unchecked(0x482ce2a7e663c83b),
694        Felt::new_unchecked(0x48e05f89c4d5be26),
695        Felt::new_unchecked(0x604eb9b913153b9d),
696        Felt::new_unchecked(0xfa9986b504865cc5),
697    ]),
698    Word::new([
699        Felt::new_unchecked(0xaeb76174b9cdc11d),
700        Felt::new_unchecked(0xd3c91d07fabaf276),
701        Felt::new_unchecked(0x4582555f33ef461f),
702        Felt::new_unchecked(0xd744b889d614cc9f),
703    ]),
704    Word::new([
705        Felt::new_unchecked(0x9b3f64333c21296a),
706        Felt::new_unchecked(0x6fb3c324efd10a40),
707        Felt::new_unchecked(0x8c8cf62b454f4efb),
708        Felt::new_unchecked(0xacef39f5726e16d6),
709    ]),
710    Word::new([
711        Felt::new_unchecked(0x4e3b7bffad47bce6),
712        Felt::new_unchecked(0x6b56fb3ca25e2094),
713        Felt::new_unchecked(0xbc323b5db596de2f),
714        Felt::new_unchecked(0x6430b549346296f6),
715    ]),
716    Word::new([
717        Felt::new_unchecked(0xeef784d4e8af60cc),
718        Felt::new_unchecked(0x62392952cf05b74d),
719        Felt::new_unchecked(0x4c70721202e81f91),
720        Felt::new_unchecked(0xc87f494c6dc691ee),
721    ]),
722    Word::new([
723        Felt::new_unchecked(0x14cdbb3645c32ac1),
724        Felt::new_unchecked(0x63854ea3b584025f),
725        Felt::new_unchecked(0xb3d88642bc0171f4),
726        Felt::new_unchecked(0xd868c6895bb01153),
727    ]),
728    Word::new([
729        Felt::new_unchecked(0x88a590242df9557d),
730        Felt::new_unchecked(0x64b807bf410bfde2),
731        Felt::new_unchecked(0x65b47f4e180efc80),
732        Felt::new_unchecked(0x0246f8de53fdd07e),
733    ]),
734    Word::new([
735        Felt::new_unchecked(0x202e98bf1e19ce05),
736        Felt::new_unchecked(0xd5f063d66ef11d6c),
737        Felt::new_unchecked(0x0aed03a3854e1a13),
738        Felt::new_unchecked(0xc74d8a8797926799),
739    ]),
740    Word::new([
741        Felt::new_unchecked(0x9b5fa4970f8e5aa5),
742        Felt::new_unchecked(0xdd35b0607ccf18e3),
743        Felt::new_unchecked(0x05e89c2cf1e443c8),
744        Felt::new_unchecked(0x5cebc8ae5a9d3646),
745    ]),
746    Word::new([
747        Felt::new_unchecked(0xf4ae5469926b2191),
748        Felt::new_unchecked(0xd7ffd83acb02c8ba),
749        Felt::new_unchecked(0xcc4f40c6c36bb791),
750        Felt::new_unchecked(0x9f698d2a6fc0d9bf),
751    ]),
752    Word::new([
753        Felt::new_unchecked(0x99b27009934262e2),
754        Felt::new_unchecked(0x393667c95ea35de8),
755        Felt::new_unchecked(0xf1cbf6b3ee65bc73),
756        Felt::new_unchecked(0xdf500c8e4c4e2dcf),
757    ]),
758    Word::new([
759        Felt::new_unchecked(0x20f52c072ad4a580),
760        Felt::new_unchecked(0xfd022f5d7a6ac0d2),
761        Felt::new_unchecked(0x9c389855acb74ab0),
762        Felt::new_unchecked(0xbabb009925c8b3fd),
763    ]),
764    Word::new([
765        Felt::new_unchecked(0x323b431386ba76d1),
766        Felt::new_unchecked(0x5dd6911ae570e2ee),
767        Felt::new_unchecked(0x08c231b8ff9f4a73),
768        Felt::new_unchecked(0x8bd6f86c6c291580),
769    ]),
770    Word::new([
771        Felt::new_unchecked(0x4a3ba00112507849),
772        Felt::new_unchecked(0xb1028b1610d6eed2),
773        Felt::new_unchecked(0xf039a251eb8f3690),
774        Felt::new_unchecked(0x269123f91b0cd017),
775    ]),
776    Word::new([
777        Felt::new_unchecked(0x24dc3153d23be189),
778        Felt::new_unchecked(0x61d889575042bf98),
779        Felt::new_unchecked(0x502059e5d751cf8a),
780        Felt::new_unchecked(0x5a1ac378f44c8063),
781    ]),
782    Word::new([
783        Felt::new_unchecked(0x9b0975a9c1efb2ce),
784        Felt::new_unchecked(0xa26cd01acb659cf2),
785        Felt::new_unchecked(0x2a7929ca8686292b),
786        Felt::new_unchecked(0xea2b392841ecc63e),
787    ]),
788    Word::new([
789        Felt::new_unchecked(0xe791c55d25a490c4),
790        Felt::new_unchecked(0xeecf48698a684036),
791        Felt::new_unchecked(0x5d3540063eb35547),
792        Felt::new_unchecked(0xb2e9037e6b8aa5d1),
793    ]),
794    Word::new([
795        Felt::new_unchecked(0xa9127c67712cdb2b),
796        Felt::new_unchecked(0xd8e0c828f48e52db),
797        Felt::new_unchecked(0x1633d413bcc7af58),
798        Felt::new_unchecked(0x0809fc9b1368c0d4),
799    ]),
800    Word::new([
801        Felt::new_unchecked(0x543d5e5a9a354cdb),
802        Felt::new_unchecked(0x8efe9432a3bff23f),
803        Felt::new_unchecked(0x9c71988c5e808465),
804        Felt::new_unchecked(0xde3133d276c4154c),
805    ]),
806    Word::new([
807        Felt::new_unchecked(0xd0292ad96a0420cf),
808        Felt::new_unchecked(0xb5598209c1f1c840),
809        Felt::new_unchecked(0x0aad93f39bb6aad5),
810        Felt::new_unchecked(0xfa2731146eb5ec8e),
811    ]),
812    Word::new([
813        Felt::new_unchecked(0x4db14fa9d981dbbd),
814        Felt::new_unchecked(0x22fd5e0be0a72322),
815        Felt::new_unchecked(0x962aef99d2b73f36),
816        Felt::new_unchecked(0x5cdd78b8c75ae55b),
817    ]),
818    Word::new([
819        Felt::new_unchecked(0x84b235264584bd50),
820        Felt::new_unchecked(0x112dd2d6f48ec693),
821        Felt::new_unchecked(0x1f0c9d23e85f4fc9),
822        Felt::new_unchecked(0x9d04f0c90a1171a5),
823    ]),
824    Word::new([
825        Felt::new_unchecked(0x16f07a5ae66351fd),
826        Felt::new_unchecked(0xada478edb194ba48),
827        Felt::new_unchecked(0xa01d9a0643361e47),
828        Felt::new_unchecked(0xc2783e0dcf7f5d17),
829    ]),
830    Word::new([
831        Felt::new_unchecked(0x5110b3efad0c529e),
832        Felt::new_unchecked(0x48b791b96bf4ea5c),
833        Felt::new_unchecked(0xabdf56400d294f79),
834        Felt::new_unchecked(0x724043dce50148bb),
835    ]),
836    Word::new([
837        Felt::new_unchecked(0x03e8bffe1e1140ef),
838        Felt::new_unchecked(0xdc13aa83b5aae1a3),
839        Felt::new_unchecked(0x778a7c5dc01067b4),
840        Felt::new_unchecked(0x143d90ce1cde2b69),
841    ]),
842    Word::new([
843        Felt::new_unchecked(0xffa1b474293b1e6e),
844        Felt::new_unchecked(0xb6229a9c4d92e06f),
845        Felt::new_unchecked(0x49d61074cb93984e),
846        Felt::new_unchecked(0xd8f2e27fa43903fe),
847    ]),
848    Word::new([
849        Felt::new_unchecked(0xf1c88b3c6963e9c9),
850        Felt::new_unchecked(0x79b01206f4228f67),
851        Felt::new_unchecked(0x785331aed09e6417),
852        Felt::new_unchecked(0x14ebf0052c629ce4),
853    ]),
854    Word::new([
855        Felt::new_unchecked(0x9e711763920a39ec),
856        Felt::new_unchecked(0x811261ad01af5ecc),
857        Felt::new_unchecked(0xe3b9780ef2bc32ef),
858        Felt::new_unchecked(0x6d8607b24c9a0fe1),
859    ]),
860    Word::new([
861        Felt::new_unchecked(0x4627a6abb9778b76),
862        Felt::new_unchecked(0xbb8f08e059cd41ae),
863        Felt::new_unchecked(0x8c7714f9a4607cf6),
864        Felt::new_unchecked(0xf0cff546e3ef1715),
865    ]),
866    Word::new([
867        Felt::new_unchecked(0xff3f03af9dc9b872),
868        Felt::new_unchecked(0xb97da931b2f5699e),
869        Felt::new_unchecked(0xc7fde13a1dacb964),
870        Felt::new_unchecked(0x36921c1f64e0be45),
871    ]),
872    Word::new([
873        Felt::new_unchecked(0x2215a5523302825b),
874        Felt::new_unchecked(0xff666312178e368d),
875        Felt::new_unchecked(0x90d132b0e5eeb0c8),
876        Felt::new_unchecked(0xfc4f22d00d823840),
877    ]),
878    Word::new([
879        Felt::new_unchecked(0x7fe036297012e736),
880        Felt::new_unchecked(0x3b6c20423571b6f9),
881        Felt::new_unchecked(0x9df39bfa1dddd86d),
882        Felt::new_unchecked(0xd1f22c6f91ffd626),
883    ]),
884    Word::new([
885        Felt::new_unchecked(0xe4ce0c7900d5c400),
886        Felt::new_unchecked(0xdb50cd5902dbc524),
887        Felt::new_unchecked(0x19c5108d705b5d6e),
888        Felt::new_unchecked(0x0a5edbcf5f072095),
889    ]),
890    Word::new([
891        Felt::new_unchecked(0xa8635e8441c074d9),
892        Felt::new_unchecked(0x4d4a382fc9e24e90),
893        Felt::new_unchecked(0xa3a4f1e2d230e956),
894        Felt::new_unchecked(0xea9550e2f96b025c),
895    ]),
896    Word::new([
897        Felt::new_unchecked(0x85186edcf25307d3),
898        Felt::new_unchecked(0xdc41a7269053ae80),
899        Felt::new_unchecked(0x93af4e65c4adf29e),
900        Felt::new_unchecked(0x78ea5f3bd2b45729),
901    ]),
902    Word::new([
903        Felt::new_unchecked(0x26e561b2419831eb),
904        Felt::new_unchecked(0x7f135d5f29089733),
905        Felt::new_unchecked(0x3850c48388c33f2d),
906        Felt::new_unchecked(0x72ac40cb157ae2fc),
907    ]),
908    Word::new([
909        Felt::new_unchecked(0xaf0446459af542b6),
910        Felt::new_unchecked(0x8b80ece90ad8d3d9),
911        Felt::new_unchecked(0x06dd02781b0fcb5c),
912        Felt::new_unchecked(0x241b136a83ec8e36),
913    ]),
914    Word::new([
915        Felt::new_unchecked(0x7360e118d7c4c44b),
916        Felt::new_unchecked(0x85e005756a549eaa),
917        Felt::new_unchecked(0x94366e7d3ee2ca48),
918        Felt::new_unchecked(0x24a184b27fa785c6),
919    ]),
920    Word::new([
921        Felt::new_unchecked(0x9cb5db6f8ba877f4),
922        Felt::new_unchecked(0x432d1947a9c888d0),
923        Felt::new_unchecked(0x6d27e4d577889f05),
924        Felt::new_unchecked(0x25dc7800934ef1ae),
925    ]),
926    Word::new([
927        Felt::new_unchecked(0x79100c8b724fb432),
928        Felt::new_unchecked(0xbff994b931dfe75b),
929        Felt::new_unchecked(0x27953506d29f90f9),
930        Felt::new_unchecked(0x90cc228b50167ce1),
931    ]),
932    Word::new([
933        Felt::new_unchecked(0xf0a48a5fc2e1d9db),
934        Felt::new_unchecked(0x5c54aad80cc50dd9),
935        Felt::new_unchecked(0x13cad4ffa16a608c),
936        Felt::new_unchecked(0x7159e79c02364b4d),
937    ]),
938    Word::new([
939        Felt::new_unchecked(0x2f1fa97d85531c87),
940        Felt::new_unchecked(0x5c0ec79fe63e1fb1),
941        Felt::new_unchecked(0x767e71a7fe617d25),
942        Felt::new_unchecked(0xa460b484a64a72d6),
943    ]),
944    Word::new([
945        Felt::new_unchecked(0xd095e4e7ddbe11d9),
946        Felt::new_unchecked(0x453d9ac44b09a471),
947        Felt::new_unchecked(0x182494a14d004713),
948        Felt::new_unchecked(0xbc44a57e6559a878),
949    ]),
950    Word::new([
951        Felt::new_unchecked(0xaff03a0d76dbf96e),
952        Felt::new_unchecked(0x47f6ce8ec92e94d5),
953        Felt::new_unchecked(0xf798359c1c4a03af),
954        Felt::new_unchecked(0x452903ccd4a9491c),
955    ]),
956    Word::new([
957        Felt::new_unchecked(0x732e5861313fb854),
958        Felt::new_unchecked(0x272125f78566ed70),
959        Felt::new_unchecked(0xae9292d495ebd45a),
960        Felt::new_unchecked(0x86bdeb0a07d26c1d),
961    ]),
962    Word::new([
963        Felt::new_unchecked(0x85204c664906b68a),
964        Felt::new_unchecked(0x9ad6a41ac55c8ca6),
965        Felt::new_unchecked(0x78ed8975fc245b38),
966        Felt::new_unchecked(0x04abc3716c66d8c7),
967    ]),
968    Word::new([
969        Felt::new_unchecked(0x9147153b745abe81),
970        Felt::new_unchecked(0x335727d370b2952c),
971        Felt::new_unchecked(0xb998783bb0e788d4),
972        Felt::new_unchecked(0xd0b2538a8693485c),
973    ]),
974    Word::new([
975        Felt::new_unchecked(0x293bf549fe01832a),
976        Felt::new_unchecked(0x3c2fcbf24b3df870),
977        Felt::new_unchecked(0xd89e2f0981e50703),
978        Felt::new_unchecked(0x923c1c2a5c86b530),
979    ]),
980    Word::new([
981        Felt::new_unchecked(0x420f112e6e401f4c),
982        Felt::new_unchecked(0x56253ed049ca9ffc),
983        Felt::new_unchecked(0x23de3e2ac1d7c0f0),
984        Felt::new_unchecked(0xd915d95eebde33ad),
985    ]),
986    Word::new([
987        Felt::new_unchecked(0x0ce48bc6b7f60997),
988        Felt::new_unchecked(0x14c1f28114ed20dc),
989        Felt::new_unchecked(0xc9b631257e9360f2),
990        Felt::new_unchecked(0x0dbb92b86a787d22),
991    ]),
992    Word::new([
993        Felt::new_unchecked(0xa6090168b2137a1d),
994        Felt::new_unchecked(0x1704a3d034139f9a),
995        Felt::new_unchecked(0x59e95cc0e9d888e5),
996        Felt::new_unchecked(0x9d3399e08765af8d),
997    ]),
998    Word::new([
999        Felt::new_unchecked(0xffdee1cf2986e9f7),
1000        Felt::new_unchecked(0x5397b903c6b5ebda),
1001        Felt::new_unchecked(0x1e43c3fcd46bc842),
1002        Felt::new_unchecked(0x7ce3b02f30ce57fa),
1003    ]),
1004    Word::new([
1005        Felt::new_unchecked(0x47b832abef714aee),
1006        Felt::new_unchecked(0xfffb987574d18093),
1007        Felt::new_unchecked(0xe179cd82ceda459d),
1008        Felt::new_unchecked(0xd8ab8964cbb76761),
1009    ]),
1010    Word::new([
1011        Felt::new_unchecked(0x5f262e1313906e57),
1012        Felt::new_unchecked(0xead7d293a5ec34f7),
1013        Felt::new_unchecked(0x71f00b646fe16b05),
1014        Felt::new_unchecked(0x369383554b95ccff),
1015    ]),
1016    Word::new([
1017        Felt::new_unchecked(0x33afc010464d552c),
1018        Felt::new_unchecked(0xbb3668a62b613767),
1019        Felt::new_unchecked(0xe2f75b19d35b5ba5),
1020        Felt::new_unchecked(0xc12ec8ce30145a34),
1021    ]),
1022    Word::new([
1023        Felt::new_unchecked(0xd9a77ee302a7ef62),
1024        Felt::new_unchecked(0xd430d0b64b15a046),
1025        Felt::new_unchecked(0x3c703c28c36b480b),
1026        Felt::new_unchecked(0xbbf1835b1712cf20),
1027    ]),
1028    Word::new([
1029        Felt::new_unchecked(0x8fd394d77b23871f),
1030        Felt::new_unchecked(0x6d5f95be96bb7250),
1031        Felt::new_unchecked(0x2e0fbd527f36cb80),
1032        Felt::new_unchecked(0xc93f3d342bf426a2),
1033    ]),
1034    Word::new([
1035        Felt::new_unchecked(0x7e5bf5ee62826fa9),
1036        Felt::new_unchecked(0x20e6c3a52f775fae),
1037        Felt::new_unchecked(0x4eb2d1abb33e904d),
1038        Felt::new_unchecked(0x72e1209fa99f708f),
1039    ]),
1040    Word::new([
1041        Felt::new_unchecked(0xd86e6262761401e3),
1042        Felt::new_unchecked(0x44e2113d07886377),
1043        Felt::new_unchecked(0x3da5d19b1351a070),
1044        Felt::new_unchecked(0xfd145bfce40317cf),
1045    ]),
1046    Word::new([
1047        Felt::new_unchecked(0xf1de7bc452f8a5e4),
1048        Felt::new_unchecked(0xdfe809b30c00a82f),
1049        Felt::new_unchecked(0x5401374848fa780c),
1050        Felt::new_unchecked(0xb7772cc983cd0f1c),
1051    ]),
1052    Word::new([
1053        Felt::new_unchecked(0x842bed45416a5375),
1054        Felt::new_unchecked(0x5178af9038c0d528),
1055        Felt::new_unchecked(0x00b52dad36b57a36),
1056        Felt::new_unchecked(0xb182d8bcd3f318aa),
1057    ]),
1058    Word::new([
1059        Felt::new_unchecked(0xdffaab3f6934e1b4),
1060        Felt::new_unchecked(0xddd03d1890a3b637),
1061        Felt::new_unchecked(0xc9aa99613dce13af),
1062        Felt::new_unchecked(0x70a96801d20b9bbf),
1063    ]),
1064    Word::new([
1065        Felt::new_unchecked(0xa1800d8a2337584f),
1066        Felt::new_unchecked(0x1fd72730d2609dbb),
1067        Felt::new_unchecked(0x01a2a4b509765b2a),
1068        Felt::new_unchecked(0x6e99776f568dfe7c),
1069    ]),
1070    Word::new([
1071        Felt::new_unchecked(0x05ad4de4955a46eb),
1072        Felt::new_unchecked(0xdbdd6949031e33c7),
1073        Felt::new_unchecked(0x8a7df981d720ff61),
1074        Felt::new_unchecked(0x447325552a7235e7),
1075    ]),
1076    Word::new([
1077        Felt::new_unchecked(0x5322892e1842df01),
1078        Felt::new_unchecked(0x3841a93cfac9660e),
1079        Felt::new_unchecked(0x5e26b5de4a4e3d37),
1080        Felt::new_unchecked(0x388836b50d100120),
1081    ]),
1082    Word::new([
1083        Felt::new_unchecked(0xcce89e91d179eaec),
1084        Felt::new_unchecked(0xe68ce121dcab4d44),
1085        Felt::new_unchecked(0x0d56cbe0ace2d4ec),
1086        Felt::new_unchecked(0x2329986c74293ce5),
1087    ]),
1088    Word::new([
1089        Felt::new_unchecked(0x12358aee10ffa5fc),
1090        Felt::new_unchecked(0xbe7a6293921468e6),
1091        Felt::new_unchecked(0xe15970cc955d864b),
1092        Felt::new_unchecked(0xbf37f6ae3e331aab),
1093    ]),
1094    Word::new([
1095        Felt::new_unchecked(0xb5f111968b241e6e),
1096        Felt::new_unchecked(0x7cc928c1c338b4ad),
1097        Felt::new_unchecked(0x26dde0cdcb31d42c),
1098        Felt::new_unchecked(0xd0c319d0f0aa9512),
1099    ]),
1100    Word::new([
1101        Felt::new_unchecked(0x87077ff16b8f3d8e),
1102        Felt::new_unchecked(0x4e6be6654ec08848),
1103        Felt::new_unchecked(0x71a9d5e1e3ab9085),
1104        Felt::new_unchecked(0xf6bd087b7508d595),
1105    ]),
1106    Word::new([
1107        Felt::new_unchecked(0x53dc74b301a7036e),
1108        Felt::new_unchecked(0x4a431b1485944c51),
1109        Felt::new_unchecked(0x50b33f4d61724832),
1110        Felt::new_unchecked(0xda5f40612948fb0b),
1111    ]),
1112    Word::new([
1113        Felt::new_unchecked(0x95c6101469bf6744),
1114        Felt::new_unchecked(0x1a9980d26ef6569f),
1115        Felt::new_unchecked(0x4613db415a103854),
1116        Felt::new_unchecked(0x4107edef06f4b2e2),
1117    ]),
1118    Word::new([
1119        Felt::new_unchecked(0xdd4af77853f150b5),
1120        Felt::new_unchecked(0x08eecf1e24bdeb59),
1121        Felt::new_unchecked(0x32aef82f2bffd372),
1122        Felt::new_unchecked(0x9b05edc6cca613c6),
1123    ]),
1124    Word::new([
1125        Felt::new_unchecked(0xc9925f2d3619d2f4),
1126        Felt::new_unchecked(0x4facfbe75c1407ff),
1127        Felt::new_unchecked(0x9862025a201309e9),
1128        Felt::new_unchecked(0x71c2179aa2551d12),
1129    ]),
1130    Word::new([
1131        Felt::new_unchecked(0xa0e3480ba8ac4ccb),
1132        Felt::new_unchecked(0x2dad4a92bf7c2476),
1133        Felt::new_unchecked(0xbb5c9dbd61176a1a),
1134        Felt::new_unchecked(0xabfd55e2a7e15949),
1135    ]),
1136    Word::new([
1137        Felt::new_unchecked(0x4553b43fba664b10),
1138        Felt::new_unchecked(0xbdbd5f8d304338ad),
1139        Felt::new_unchecked(0xa877020ae3ba30dd),
1140        Felt::new_unchecked(0x7705853732414d3e),
1141    ]),
1142    Word::new([
1143        Felt::new_unchecked(0x1af7a763a925fb31),
1144        Felt::new_unchecked(0xabd019c3cd9cef0a),
1145        Felt::new_unchecked(0x9798360eb35e9915),
1146        Felt::new_unchecked(0xfa854bee8e192cc6),
1147    ]),
1148    Word::new([
1149        Felt::new_unchecked(0x1c0219a536aa2654),
1150        Felt::new_unchecked(0xab431a3352c51fff),
1151        Felt::new_unchecked(0x64c431d78d5e7bf4),
1152        Felt::new_unchecked(0xafb35aa8b2696229),
1153    ]),
1154    Word::new([
1155        Felt::new_unchecked(0x947321f3ed487702),
1156        Felt::new_unchecked(0xf7887258489ec613),
1157        Felt::new_unchecked(0xbcfef077528b8ee1),
1158        Felt::new_unchecked(0xa2d7cf3ec671bd26),
1159    ]),
1160    Word::new([
1161        Felt::new_unchecked(0xb71476ee7dfbf7be),
1162        Felt::new_unchecked(0x159c699add5d8b81),
1163        Felt::new_unchecked(0x3aa0817318acd24f),
1164        Felt::new_unchecked(0x0002ba5068fbf7b7),
1165    ]),
1166    Word::new([
1167        Felt::new_unchecked(0xd687e4208f4c1da8),
1168        Felt::new_unchecked(0x616d2ae62f438ddb),
1169        Felt::new_unchecked(0x19afddf13d62ab5a),
1170        Felt::new_unchecked(0xedb19ff512b83f28),
1171    ]),
1172    Word::new([
1173        Felt::new_unchecked(0x7b016fcc9c1e70ba),
1174        Felt::new_unchecked(0x2c7b452f73a3bffc),
1175        Felt::new_unchecked(0xec5a0392306813d7),
1176        Felt::new_unchecked(0xae99a69220be5139),
1177    ]),
1178    Word::new([
1179        Felt::new_unchecked(0x0b197925db766537),
1180        Felt::new_unchecked(0xfe666f05cdcf50e0),
1181        Felt::new_unchecked(0xec34f13b232d627e),
1182        Felt::new_unchecked(0xf41f55a319b54d35),
1183    ]),
1184    Word::new([
1185        Felt::new_unchecked(0x0e73225571eb96e2),
1186        Felt::new_unchecked(0x8df169b862333236),
1187        Felt::new_unchecked(0x3f66b218ba56d6a7),
1188        Felt::new_unchecked(0x21b48323f2629c74),
1189    ]),
1190    Word::new([
1191        Felt::new_unchecked(0x2dab8971e1f636ea),
1192        Felt::new_unchecked(0xf1a61cb7873dd513),
1193        Felt::new_unchecked(0x24ce44bee61d79b4),
1194        Felt::new_unchecked(0xe85ec3af93cfd356),
1195    ]),
1196    Word::new([
1197        Felt::new_unchecked(0x372b613b73452a2d),
1198        Felt::new_unchecked(0x2326929e7c83670c),
1199        Felt::new_unchecked(0x24a6024d88efd716),
1200        Felt::new_unchecked(0x9ada032226ee8f41),
1201    ]),
1202    Word::new([
1203        Felt::new_unchecked(0x70e5fa8e228fe225),
1204        Felt::new_unchecked(0x3fb83ff7de835a4c),
1205        Felt::new_unchecked(0xba460412906dd260),
1206        Felt::new_unchecked(0xb9af693a54538497),
1207    ]),
1208    Word::new([
1209        Felt::new_unchecked(0x8b4c559f5a1d954d),
1210        Felt::new_unchecked(0x609f0803e2108430),
1211        Felt::new_unchecked(0xc2bc9c612459417a),
1212        Felt::new_unchecked(0x20c0c2fb3c4d3adc),
1213    ]),
1214    Word::new([
1215        Felt::new_unchecked(0x4480f11ea7c0eff0),
1216        Felt::new_unchecked(0xfb5f2a5816b0b191),
1217        Felt::new_unchecked(0x741a8e48d77b5c1f),
1218        Felt::new_unchecked(0xee4de2c193b44fbc),
1219    ]),
1220    Word::new([
1221        Felt::new_unchecked(0x77fc4d4d2f5c78bd),
1222        Felt::new_unchecked(0xb73c33d13ae1a81f),
1223        Felt::new_unchecked(0xb77676f6190217ad),
1224        Felt::new_unchecked(0x4a6e3dce800ea807),
1225    ]),
1226    Word::new([
1227        Felt::new_unchecked(0x4d0c2f131ed8fdcb),
1228        Felt::new_unchecked(0xa93c45c839d9d744),
1229        Felt::new_unchecked(0x02099f58db023eb2),
1230        Felt::new_unchecked(0x51f830a886d83c68),
1231    ]),
1232    Word::new([
1233        Felt::new_unchecked(0x49969ad712828350),
1234        Felt::new_unchecked(0x43fbaea306d8503a),
1235        Felt::new_unchecked(0xb29e4a5c3b708c23),
1236        Felt::new_unchecked(0x996982a21d90c3a8),
1237    ]),
1238    Word::new([
1239        Felt::new_unchecked(0x459ee8bb2709673f),
1240        Felt::new_unchecked(0xa65a9f6a0774863d),
1241        Felt::new_unchecked(0x35069377f2cd8aa6),
1242        Felt::new_unchecked(0xdade69a1b1f0ed54),
1243    ]),
1244    Word::new([
1245        Felt::new_unchecked(0xba6232a69b2193e8),
1246        Felt::new_unchecked(0xacb491cbe92045f3),
1247        Felt::new_unchecked(0xb62f47a82bddccb0),
1248        Felt::new_unchecked(0xf7eb0e2318aa52ef),
1249    ]),
1250    Word::new([
1251        Felt::new_unchecked(0x8816f48f1e32ea78),
1252        Felt::new_unchecked(0xf8be81a5ff3885fd),
1253        Felt::new_unchecked(0x78c2ebe575085888),
1254        Felt::new_unchecked(0xf40367a41cc0f59f),
1255    ]),
1256    Word::new([
1257        Felt::new_unchecked(0xfb488e200bf9ca63),
1258        Felt::new_unchecked(0x8f8f4d7278d0e78c),
1259        Felt::new_unchecked(0x09b208e717282c66),
1260        Felt::new_unchecked(0xc876de43c913a66c),
1261    ]),
1262    Word::new([
1263        Felt::new_unchecked(0x877130417c2e5f36),
1264        Felt::new_unchecked(0xd50485c08bd277e7),
1265        Felt::new_unchecked(0xd0945268a2883728),
1266        Felt::new_unchecked(0x718d24bc8c73f8f7),
1267    ]),
1268    Word::new([
1269        Felt::new_unchecked(0x2505d387c8fdb218),
1270        Felt::new_unchecked(0x92233caaab007401),
1271        Felt::new_unchecked(0x11e6575e5cc339ed),
1272        Felt::new_unchecked(0xf43bcccacfb04389),
1273    ]),
1274    Word::new([
1275        Felt::new_unchecked(0x3e60e99a73b1614d),
1276        Felt::new_unchecked(0xd964d5b908f4d69c),
1277        Felt::new_unchecked(0x435ce6a2a2a1b505),
1278        Felt::new_unchecked(0x5e99c0a0a9499af4),
1279    ]),
1280    Word::new([
1281        Felt::new_unchecked(0x2f6395587ab70784),
1282        Felt::new_unchecked(0xcc979c15c9b0f084),
1283        Felt::new_unchecked(0x51af7bedd42eea2d),
1284        Felt::new_unchecked(0x36a4868b22b43bc3),
1285    ]),
1286    Word::new([
1287        Felt::new_unchecked(0x6a86ad5c47406d72),
1288        Felt::new_unchecked(0xbb2ed4c37164785a),
1289        Felt::new_unchecked(0x2381850a1cac59bd),
1290        Felt::new_unchecked(0x080ccb801113a2ac),
1291    ]),
1292    Word::new([
1293        Felt::new_unchecked(0x2d18d649a43a5732),
1294        Felt::new_unchecked(0xd110805fc5adda4b),
1295        Felt::new_unchecked(0xae9472d633a0a594),
1296        Felt::new_unchecked(0xa2eea0294cd6000c),
1297    ]),
1298    Word::new([
1299        Felt::new_unchecked(0x8d19318f37b7ada1),
1300        Felt::new_unchecked(0xd6086bb2699993a2),
1301        Felt::new_unchecked(0xc9f0ea948bd6fb17),
1302        Felt::new_unchecked(0x6a4b12267d002adb),
1303    ]),
1304    Word::new([
1305        Felt::new_unchecked(0x58e4e9ced3ba344f),
1306        Felt::new_unchecked(0x4b764faa2ffb83d5),
1307        Felt::new_unchecked(0xadd9ea03fd82865e),
1308        Felt::new_unchecked(0x36a7d0fd5ce7128b),
1309    ]),
1310    Word::new([
1311        Felt::new_unchecked(0xb9e425390904a962),
1312        Felt::new_unchecked(0x6248e00cf596f6ad),
1313        Felt::new_unchecked(0x5bf008948a2a3a8c),
1314        Felt::new_unchecked(0xd0a2993b00962d0d),
1315    ]),
1316    Word::new([
1317        Felt::new_unchecked(0x85eeb4a3202d1865),
1318        Felt::new_unchecked(0xd16cf9ef8b96ef19),
1319        Felt::new_unchecked(0x24bda888285c7727),
1320        Felt::new_unchecked(0x4f3196ef8aa475cf),
1321    ]),
1322    Word::new([
1323        Felt::new_unchecked(0x2e3905a28ab152c3),
1324        Felt::new_unchecked(0x3d65c64fc03e1154),
1325        Felt::new_unchecked(0x463924157589e96a),
1326        Felt::new_unchecked(0xc35e18d4a80c7857),
1327    ]),
1328    Word::new([
1329        Felt::new_unchecked(0x0e0dd8d6d834bfb0),
1330        Felt::new_unchecked(0x258cea707ab121ae),
1331        Felt::new_unchecked(0x8a3fe0de0f960a8a),
1332        Felt::new_unchecked(0x5effb1253cd26baf),
1333    ]),
1334    Word::new([
1335        Felt::new_unchecked(0xb8ed0f83a58af02d),
1336        Felt::new_unchecked(0x57ada4648830369e),
1337        Felt::new_unchecked(0x2705908277842e7d),
1338        Felt::new_unchecked(0x2de8c38841905254),
1339    ]),
1340    Word::new([
1341        Felt::new_unchecked(0x01024b6c34916d38),
1342        Felt::new_unchecked(0xc5d13622ac399a0f),
1343        Felt::new_unchecked(0x1f7ec2453e58755d),
1344        Felt::new_unchecked(0x914696bdc2f6337b),
1345    ]),
1346    Word::new([
1347        Felt::new_unchecked(0x302bc4cbe410549f),
1348        Felt::new_unchecked(0x0687682a5bfb498b),
1349        Felt::new_unchecked(0x17f9642a6e1db393),
1350        Felt::new_unchecked(0x7e121da3e183cbbf),
1351    ]),
1352    Word::new([
1353        Felt::new_unchecked(0x301a5478e91a76ae),
1354        Felt::new_unchecked(0x4de2b12e5e088b92),
1355        Felt::new_unchecked(0x51273b62ecd5a68f),
1356        Felt::new_unchecked(0x40279ae1e9935d83),
1357    ]),
1358    Word::new([
1359        Felt::new_unchecked(0x481559529cca1ff6),
1360        Felt::new_unchecked(0x8996fd99e0263131),
1361        Felt::new_unchecked(0xb51d6c798e0a9618),
1362        Felt::new_unchecked(0x02f201e4b0d84be5),
1363    ]),
1364    Word::new([
1365        Felt::new_unchecked(0x261df526ace9314b),
1366        Felt::new_unchecked(0x49a2b33ae0558f78),
1367        Felt::new_unchecked(0x3e937ac29f1cb809),
1368        Felt::new_unchecked(0xd4e69b8d954d1b83),
1369    ]),
1370    Word::new([
1371        Felt::new_unchecked(0x087aa9955e4d4a36),
1372        Felt::new_unchecked(0x838e53729e90910b),
1373        Felt::new_unchecked(0x779677482e323c3e),
1374        Felt::new_unchecked(0xce7bdd3aa6fdc27c),
1375    ]),
1376    Word::new([
1377        Felt::new_unchecked(0x0ad2740bdeede05c),
1378        Felt::new_unchecked(0x4ddeb7bcb67cc62e),
1379        Felt::new_unchecked(0x60ed83e6dac9a793),
1380        Felt::new_unchecked(0xd80bb6bf2da311b4),
1381    ]),
1382    Word::new([
1383        Felt::new_unchecked(0xc04a9481f0b29e1e),
1384        Felt::new_unchecked(0x9a481b8ed93d1b77),
1385        Felt::new_unchecked(0xd7e49f5922c9ead3),
1386        Felt::new_unchecked(0x6953a58c463a59d0),
1387    ]),
1388    Word::new([
1389        Felt::new_unchecked(0x67ee9f3c62f968c4),
1390        Felt::new_unchecked(0xf00c80b729593732),
1391        Felt::new_unchecked(0x7fe66eb7c570a24f),
1392        Felt::new_unchecked(0x7ea3069a9803d86c),
1393    ]),
1394    Word::new([
1395        Felt::new_unchecked(0x428450f886f972d0),
1396        Felt::new_unchecked(0x4328af23a159c7a3),
1397        Felt::new_unchecked(0x63071f75da7753cc),
1398        Felt::new_unchecked(0x950419829efc0e10),
1399    ]),
1400    Word::new([
1401        Felt::new_unchecked(0x1ba95e067e6c0008),
1402        Felt::new_unchecked(0x4a77f23e46b4cddf),
1403        Felt::new_unchecked(0xeb0e31fee924bfb5),
1404        Felt::new_unchecked(0x0c85ab57bd415e0a),
1405    ]),
1406    Word::new([
1407        Felt::new_unchecked(0xcffc94c55d0d6e56),
1408        Felt::new_unchecked(0xe9d3712ac7b68613),
1409        Felt::new_unchecked(0x62480bf5b986f2e3),
1410        Felt::new_unchecked(0x3bcc8d7b5eae8efb),
1411    ]),
1412    Word::new([
1413        Felt::new_unchecked(0x775920b95e7970b7),
1414        Felt::new_unchecked(0xf9332431a4cc3253),
1415        Felt::new_unchecked(0xbba433c4d80ec75c),
1416        Felt::new_unchecked(0x3fb3215e800c349d),
1417    ]),
1418    Word::new([
1419        Felt::new_unchecked(0xa184a7960e40c822),
1420        Felt::new_unchecked(0xe03a49f308042948),
1421        Felt::new_unchecked(0x1749bfbf216b538b),
1422        Felt::new_unchecked(0x26fad80a8da486b1),
1423    ]),
1424    Word::new([
1425        Felt::new_unchecked(0xbd938e79c6cd6c29),
1426        Felt::new_unchecked(0x2156b7c66b5c09cb),
1427        Felt::new_unchecked(0x73b98936bf8bacd3),
1428        Felt::new_unchecked(0x8ec375b7b5325a23),
1429    ]),
1430    Word::new([
1431        Felt::new_unchecked(0x19a33afa6ed1163f),
1432        Felt::new_unchecked(0x0e814e995a9e1eab),
1433        Felt::new_unchecked(0x43224eebc470703f),
1434        Felt::new_unchecked(0xdc75121ef0b93a68),
1435    ]),
1436    Word::new([
1437        Felt::new_unchecked(0xdbdb8aa056a94d1f),
1438        Felt::new_unchecked(0x2f56fa5a63f2908f),
1439        Felt::new_unchecked(0x85867da0a35026c3),
1440        Felt::new_unchecked(0xb38df4dd02aa42d6),
1441    ]),
1442    Word::new([
1443        Felt::new_unchecked(0x3150518851b78b42),
1444        Felt::new_unchecked(0x8fdf76effe34149f),
1445        Felt::new_unchecked(0x4b15085fd8ffda6d),
1446        Felt::new_unchecked(0x351a1eb1cca3bc29),
1447    ]),
1448    Word::new([
1449        Felt::new_unchecked(0xf61249b1f1bfe39c),
1450        Felt::new_unchecked(0xcc8677045409f1ce),
1451        Felt::new_unchecked(0x5f9c5495d5d927c4),
1452        Felt::new_unchecked(0x0e5a2880b78e5dad),
1453    ]),
1454    Word::new([
1455        Felt::new_unchecked(0x83dbe82a80826195),
1456        Felt::new_unchecked(0xc34b1ff758f368ab),
1457        Felt::new_unchecked(0x32be0ec28cd358d4),
1458        Felt::new_unchecked(0x2c17f4ce7b7d2c5f),
1459    ]),
1460    Word::new([
1461        Felt::new_unchecked(0xe795cf57d11db27f),
1462        Felt::new_unchecked(0x2cb18688e05bee75),
1463        Felt::new_unchecked(0x9053996e66be08c7),
1464        Felt::new_unchecked(0x5c4a7af36aeda2a6),
1465    ]),
1466    Word::new([
1467        Felt::new_unchecked(0xd104cc98855f0782),
1468        Felt::new_unchecked(0xf132ef3e1c524ce4),
1469        Felt::new_unchecked(0x864ae826c01eafd4),
1470        Felt::new_unchecked(0x7bf085d210e943b8),
1471    ]),
1472    Word::new([
1473        Felt::new_unchecked(0x2547ce4b049c50c4),
1474        Felt::new_unchecked(0xcee6d1972a3673b5),
1475        Felt::new_unchecked(0x90783afc4609b5ec),
1476        Felt::new_unchecked(0x89edcabb4405e9eb),
1477    ]),
1478    Word::new([
1479        Felt::new_unchecked(0xc71c12484b9a29e8),
1480        Felt::new_unchecked(0x52ba25685e80757d),
1481        Felt::new_unchecked(0x7aec2a9d6afc3abb),
1482        Felt::new_unchecked(0x9369baf4a41c91ff),
1483    ]),
1484    Word::new([
1485        Felt::new_unchecked(0xb8df5b247fd4dba9),
1486        Felt::new_unchecked(0xe5b3b8b8280421db),
1487        Felt::new_unchecked(0xde35f32fe39ae8f6),
1488        Felt::new_unchecked(0x3a52c20200b3e702),
1489    ]),
1490    Word::new([
1491        Felt::new_unchecked(0xcd84755676b282a1),
1492        Felt::new_unchecked(0x6be2b9eeceefdcf5),
1493        Felt::new_unchecked(0x6330de9426d1ffc0),
1494        Felt::new_unchecked(0x669dee285bf50868),
1495    ]),
1496    Word::new([
1497        Felt::new_unchecked(0x6b762dd088805b01),
1498        Felt::new_unchecked(0x69f8c41ca96e2d10),
1499        Felt::new_unchecked(0x65facc7fe98db521),
1500        Felt::new_unchecked(0x8e520142fc2b93cd),
1501    ]),
1502    Word::new([
1503        Felt::new_unchecked(0x3a9e36c9855dae83),
1504        Felt::new_unchecked(0xb7d8df3d2fdfc3cd),
1505        Felt::new_unchecked(0x36f699d93e940b30),
1506        Felt::new_unchecked(0xbcad4890a9a4f9e2),
1507    ]),
1508    Word::new([
1509        Felt::new_unchecked(0xaa97020f9a848d8f),
1510        Felt::new_unchecked(0xd19e3d9a74691527),
1511        Felt::new_unchecked(0xb6031c44189c6601),
1512        Felt::new_unchecked(0xb55918234e061ee0),
1513    ]),
1514    Word::new([
1515        Felt::new_unchecked(0x675dd7d25620bde1),
1516        Felt::new_unchecked(0xf1315af5fa0fdc97),
1517        Felt::new_unchecked(0xec342842c30d7f44),
1518        Felt::new_unchecked(0x09907b3a3d77cbb9),
1519    ]),
1520    Word::new([
1521        Felt::new_unchecked(0x1201c4524996115f),
1522        Felt::new_unchecked(0x298b7361e465e677),
1523        Felt::new_unchecked(0xb5606ebdc0b21687),
1524        Felt::new_unchecked(0xf76a4fb8c47d213d),
1525    ]),
1526    Word::new([
1527        Felt::new_unchecked(0xb9d89de99096f8ab),
1528        Felt::new_unchecked(0x3ffeec3e3a0c7d26),
1529        Felt::new_unchecked(0x05883a69fee8236c),
1530        Felt::new_unchecked(0x2d9034ca2df17a19),
1531    ]),
1532    Word::new([
1533        Felt::new_unchecked(0xdaf329acf17f9313),
1534        Felt::new_unchecked(0x4c71884a628539e4),
1535        Felt::new_unchecked(0x882aca9fdb79254f),
1536        Felt::new_unchecked(0x6ddd1c729017bf62),
1537    ]),
1538    Word::new([
1539        Felt::new_unchecked(0xb871e32185a9f3e9),
1540        Felt::new_unchecked(0x27504edc7ae3fd79),
1541        Felt::new_unchecked(0xf7b9c0133737c08c),
1542        Felt::new_unchecked(0xfc50ceef9c615643),
1543    ]),
1544    Word::new([
1545        Felt::new_unchecked(0x8d530c37efa3e5b4),
1546        Felt::new_unchecked(0x37f32d830f306f6b),
1547        Felt::new_unchecked(0x9601886ad8115670),
1548        Felt::new_unchecked(0x7d80f7f8d5c63a62),
1549    ]),
1550    Word::new([
1551        Felt::new_unchecked(0x993bdf8dfa6a1edc),
1552        Felt::new_unchecked(0x2ea3c247340dba0e),
1553        Felt::new_unchecked(0x7c2e1f1fc79e2f21),
1554        Felt::new_unchecked(0x8f42990e74d5d817),
1555    ]),
1556    Word::new([
1557        Felt::new_unchecked(0xbf7073e84f3cddea),
1558        Felt::new_unchecked(0x60f7c5ee9b3d932e),
1559        Felt::new_unchecked(0x31d73e322198371f),
1560        Felt::new_unchecked(0x8d5346bb34751ac8),
1561    ]),
1562    Word::new([
1563        Felt::new_unchecked(0xfbc3edafb6c813b9),
1564        Felt::new_unchecked(0x35d8cfadb189f5af),
1565        Felt::new_unchecked(0x9cc65f5d198e28f1),
1566        Felt::new_unchecked(0x14a74616a8e04623),
1567    ]),
1568    Word::new([
1569        Felt::new_unchecked(0xe0c4c734868c11c6),
1570        Felt::new_unchecked(0xee1f9ed1da448050),
1571        Felt::new_unchecked(0x19fd124dd8f24870),
1572        Felt::new_unchecked(0xcdd77f41d7deff73),
1573    ]),
1574    Word::new([
1575        Felt::new_unchecked(0x5b31a8b9799ff836),
1576        Felt::new_unchecked(0xe385174fe60f4b08),
1577        Felt::new_unchecked(0xe82c6be88d50767c),
1578        Felt::new_unchecked(0x2778f3b6a18981e2),
1579    ]),
1580    Word::new([
1581        Felt::new_unchecked(0x0000000000000000),
1582        Felt::new_unchecked(0x0000000000000000),
1583        Felt::new_unchecked(0x0000000000000000),
1584        Felt::new_unchecked(0x0000000000000000),
1585    ]),
1586];
1587
1588// TESTS
1589// ================================================================================================
1590
1591#[cfg(test)]
1592mod tests {
1593    use super::{
1594        super::{EMPTY_WORD, Poseidon2},
1595        EMPTY_SUBTREES, EmptySubtreeRoots,
1596    };
1597
1598    #[test]
1599    fn all_depths_opens_to_zero() {
1600        // assert the length of the static constants is correct and will cover every possible depth
1601        assert!(EMPTY_SUBTREES.len() > u8::MAX as usize);
1602
1603        for depth in 0..=u8::MAX {
1604            // fetch the subtrees and reverse it so the path is leaf -> root
1605            let mut subtree = EmptySubtreeRoots::empty_hashes(depth).to_vec();
1606            subtree.reverse();
1607
1608            // the length of the subtrees set must be equal to depth + 1 as we also
1609            // include the root
1610            assert_eq!(depth as usize + 1, subtree.len());
1611
1612            // assert the opening is zero
1613            let initial = EMPTY_WORD;
1614            assert_eq!(initial, subtree.remove(0));
1615
1616            // compute every node of the path manually and compare with the output
1617            subtree
1618                .into_iter()
1619                .scan(initial, |state, x| {
1620                    *state = Poseidon2::merge(&[*state; 2]);
1621                    Some((x, *state))
1622                })
1623                .for_each(|(x, computed)| assert_eq!(x, computed));
1624        }
1625    }
1626
1627    #[test]
1628    fn test_entry() {
1629        // check the leaf is always the empty work
1630        for depth in 0..255 {
1631            assert_eq!(EmptySubtreeRoots::entry(depth, depth), &EMPTY_WORD);
1632        }
1633
1634        // check the root matches the first element of empty_hashes
1635        for depth in 0..255 {
1636            assert_eq!(
1637                EmptySubtreeRoots::entry(depth, 0),
1638                &EmptySubtreeRoots::empty_hashes(depth)[0]
1639            );
1640        }
1641    }
1642}