longfellow 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. checksums.yaml +7 -0
  2. data/CODE_OF_CONDUCT.md +10 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +152 -0
  5. data/ext/longfellow/CMakeLists.txt +76 -0
  6. data/ext/longfellow/extconf.rb +77 -0
  7. data/lib/longfellow/attribute.rb +65 -0
  8. data/lib/longfellow/c.rb +105 -0
  9. data/lib/longfellow/errors.rb +78 -0
  10. data/lib/longfellow/version.rb +5 -0
  11. data/lib/longfellow/zk_spec.rb +40 -0
  12. data/lib/longfellow.rb +162 -0
  13. data/sig/longfellow.rbs +74 -0
  14. data/vendor/longfellow-zk/LICENSE +203 -0
  15. data/vendor/longfellow-zk/lib/algebra/blas.h +121 -0
  16. data/vendor/longfellow-zk/lib/algebra/bogorng.h +68 -0
  17. data/vendor/longfellow-zk/lib/algebra/compare.h +40 -0
  18. data/vendor/longfellow-zk/lib/algebra/convolution.h +219 -0
  19. data/vendor/longfellow-zk/lib/algebra/crt.cc +42 -0
  20. data/vendor/longfellow-zk/lib/algebra/crt.h +299 -0
  21. data/vendor/longfellow-zk/lib/algebra/crt_convolution.h +114 -0
  22. data/vendor/longfellow-zk/lib/algebra/crt_test.cc +371 -0
  23. data/vendor/longfellow-zk/lib/algebra/fft.h +104 -0
  24. data/vendor/longfellow-zk/lib/algebra/fft_interpolation.h +304 -0
  25. data/vendor/longfellow-zk/lib/algebra/fft_interpolation_test.cc +168 -0
  26. data/vendor/longfellow-zk/lib/algebra/fft_test.cc +257 -0
  27. data/vendor/longfellow-zk/lib/algebra/fp.h +59 -0
  28. data/vendor/longfellow-zk/lib/algebra/fp2.h +240 -0
  29. data/vendor/longfellow-zk/lib/algebra/fp24.h +342 -0
  30. data/vendor/longfellow-zk/lib/algebra/fp24_6.h +305 -0
  31. data/vendor/longfellow-zk/lib/algebra/fp24_6_test.cc +197 -0
  32. data/vendor/longfellow-zk/lib/algebra/fp2_test.cc +280 -0
  33. data/vendor/longfellow-zk/lib/algebra/fp_generic.h +533 -0
  34. data/vendor/longfellow-zk/lib/algebra/fp_p128.h +91 -0
  35. data/vendor/longfellow-zk/lib/algebra/fp_p256.h +68 -0
  36. data/vendor/longfellow-zk/lib/algebra/fp_p256k1.h +123 -0
  37. data/vendor/longfellow-zk/lib/algebra/fp_p384.h +65 -0
  38. data/vendor/longfellow-zk/lib/algebra/fp_p521.h +62 -0
  39. data/vendor/longfellow-zk/lib/algebra/fp_test.cc +522 -0
  40. data/vendor/longfellow-zk/lib/algebra/hash.h +39 -0
  41. data/vendor/longfellow-zk/lib/algebra/interpolation.h +117 -0
  42. data/vendor/longfellow-zk/lib/algebra/interpolation_test.cc +74 -0
  43. data/vendor/longfellow-zk/lib/algebra/limb.h +153 -0
  44. data/vendor/longfellow-zk/lib/algebra/limb_test.cc +75 -0
  45. data/vendor/longfellow-zk/lib/algebra/nat.cc +32 -0
  46. data/vendor/longfellow-zk/lib/algebra/nat.h +212 -0
  47. data/vendor/longfellow-zk/lib/algebra/nat_test.cc +183 -0
  48. data/vendor/longfellow-zk/lib/algebra/nussbaumer.h +400 -0
  49. data/vendor/longfellow-zk/lib/algebra/nussbaumer_test.cc +138 -0
  50. data/vendor/longfellow-zk/lib/algebra/nussbaumerfp2_test.cc +139 -0
  51. data/vendor/longfellow-zk/lib/algebra/permutations.h +79 -0
  52. data/vendor/longfellow-zk/lib/algebra/poly.h +240 -0
  53. data/vendor/longfellow-zk/lib/algebra/poly_test.cc +123 -0
  54. data/vendor/longfellow-zk/lib/algebra/reed_solomon.h +150 -0
  55. data/vendor/longfellow-zk/lib/algebra/reed_solomon_extension.h +108 -0
  56. data/vendor/longfellow-zk/lib/algebra/reed_solomon_extension_test.cc +76 -0
  57. data/vendor/longfellow-zk/lib/algebra/reed_solomon_test.cc +473 -0
  58. data/vendor/longfellow-zk/lib/algebra/rfft.h +400 -0
  59. data/vendor/longfellow-zk/lib/algebra/rfft_test.cc +102 -0
  60. data/vendor/longfellow-zk/lib/algebra/static_string.h +29 -0
  61. data/vendor/longfellow-zk/lib/algebra/sysdep.h +495 -0
  62. data/vendor/longfellow-zk/lib/algebra/sysdep_test.cc +41 -0
  63. data/vendor/longfellow-zk/lib/algebra/twiddle.h +59 -0
  64. data/vendor/longfellow-zk/lib/algebra/utility.h +86 -0
  65. data/vendor/longfellow-zk/lib/algebra/utility_test.cc +86 -0
  66. data/vendor/longfellow-zk/lib/arrays/affine.h +56 -0
  67. data/vendor/longfellow-zk/lib/arrays/affine_test.cc +220 -0
  68. data/vendor/longfellow-zk/lib/arrays/dense.h +210 -0
  69. data/vendor/longfellow-zk/lib/arrays/eq.h +75 -0
  70. data/vendor/longfellow-zk/lib/arrays/eqs.h +137 -0
  71. data/vendor/longfellow-zk/lib/arrays/eqs_test.cc +151 -0
  72. data/vendor/longfellow-zk/lib/arrays/sparse.h +192 -0
  73. data/vendor/longfellow-zk/lib/cbor/host_decoder.h +323 -0
  74. data/vendor/longfellow-zk/lib/cbor/host_decoder_test.cc +541 -0
  75. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor.h +594 -0
  76. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_byte_decoder.h +150 -0
  77. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_byte_decoder_test.cc +147 -0
  78. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_constants.h +27 -0
  79. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_pluck.h +110 -0
  80. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_pluck_test.cc +55 -0
  81. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_test.cc +174 -0
  82. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_testing.h +98 -0
  83. data/vendor/longfellow-zk/lib/circuits/cbor_parser/cbor_witness.h +312 -0
  84. data/vendor/longfellow-zk/lib/circuits/cbor_parser/mso2_test.cc +662 -0
  85. data/vendor/longfellow-zk/lib/circuits/cbor_parser/mso_test.cc +485 -0
  86. data/vendor/longfellow-zk/lib/circuits/cbor_parser/scan.h +104 -0
  87. data/vendor/longfellow-zk/lib/circuits/cbor_parser/scan_test.cc +137 -0
  88. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor.h +640 -0
  89. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_byte_decoder.h +150 -0
  90. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_byte_decoder_test.cc +147 -0
  91. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_constants.h +27 -0
  92. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_testing.h +99 -0
  93. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/cbor_witness.h +319 -0
  94. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/lexer_test.cc +120 -0
  95. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/mdoc_examples_test.cc +89 -0
  96. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/parser_circuit_test.cc +506 -0
  97. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/parser_size_test.cc +79 -0
  98. data/vendor/longfellow-zk/lib/circuits/cbor_parser_v2/parser_test.cc +473 -0
  99. data/vendor/longfellow-zk/lib/circuits/compiler/canonicalization_test.cc +185 -0
  100. data/vendor/longfellow-zk/lib/circuits/compiler/circuit_dump.h +65 -0
  101. data/vendor/longfellow-zk/lib/circuits/compiler/compiler.h +471 -0
  102. data/vendor/longfellow-zk/lib/circuits/compiler/compiler_test.cc +110 -0
  103. data/vendor/longfellow-zk/lib/circuits/compiler/node.h +176 -0
  104. data/vendor/longfellow-zk/lib/circuits/compiler/pdqhash.h +127 -0
  105. data/vendor/longfellow-zk/lib/circuits/compiler/schedule.h +435 -0
  106. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_circuit.h +371 -0
  107. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_external_test.cc +246 -0
  108. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_test.cc +587 -0
  109. data/vendor/longfellow-zk/lib/circuits/ecdsa/verify_witness.h +201 -0
  110. data/vendor/longfellow-zk/lib/circuits/logic/bit_adder.h +140 -0
  111. data/vendor/longfellow-zk/lib/circuits/logic/bit_adder_test.cc +64 -0
  112. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker.h +247 -0
  113. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker_constants.h +35 -0
  114. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker_encoder.h +72 -0
  115. data/vendor/longfellow-zk/lib/circuits/logic/bit_plucker_test.cc +183 -0
  116. data/vendor/longfellow-zk/lib/circuits/logic/compiler_backend.h +62 -0
  117. data/vendor/longfellow-zk/lib/circuits/logic/counter.h +171 -0
  118. data/vendor/longfellow-zk/lib/circuits/logic/counter_test.cc +102 -0
  119. data/vendor/longfellow-zk/lib/circuits/logic/evaluation_backend.h +94 -0
  120. data/vendor/longfellow-zk/lib/circuits/logic/logic.h +1232 -0
  121. data/vendor/longfellow-zk/lib/circuits/logic/logic_circuit_test.cc +310 -0
  122. data/vendor/longfellow-zk/lib/circuits/logic/logic_test.cc +521 -0
  123. data/vendor/longfellow-zk/lib/circuits/logic/memcmp.h +68 -0
  124. data/vendor/longfellow-zk/lib/circuits/logic/memcmp_test.cc +148 -0
  125. data/vendor/longfellow-zk/lib/circuits/logic/polynomial.h +94 -0
  126. data/vendor/longfellow-zk/lib/circuits/logic/polynomial_test.cc +62 -0
  127. data/vendor/longfellow-zk/lib/circuits/logic/routing.h +445 -0
  128. data/vendor/longfellow-zk/lib/circuits/logic/routing_test.cc +241 -0
  129. data/vendor/longfellow-zk/lib/circuits/logic/unary.h +55 -0
  130. data/vendor/longfellow-zk/lib/circuits/logic/unary_plucker.h +77 -0
  131. data/vendor/longfellow-zk/lib/circuits/logic/unary_plucker_constants.h +37 -0
  132. data/vendor/longfellow-zk/lib/circuits/logic/unary_plucker_test.cc +53 -0
  133. data/vendor/longfellow-zk/lib/circuits/logic/unary_size_test.cc +69 -0
  134. data/vendor/longfellow-zk/lib/circuits/logic/unary_test.cc +62 -0
  135. data/vendor/longfellow-zk/lib/circuits/mac/mac_circuit.h +193 -0
  136. data/vendor/longfellow-zk/lib/circuits/mac/mac_circuit_test.cc +223 -0
  137. data/vendor/longfellow-zk/lib/circuits/mac/mac_reference.h +72 -0
  138. data/vendor/longfellow-zk/lib/circuits/mac/mac_witness.h +94 -0
  139. data/vendor/longfellow-zk/lib/circuits/mdoc/circuit_maker.cc +242 -0
  140. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_attribute_ids.h +311 -0
  141. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_attribute_test.cc +64 -0
  142. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_circuit_id.cc +85 -0
  143. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_constants.h +85 -0
  144. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_decompress.cc +41 -0
  145. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_decompress.h +27 -0
  146. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_examples.h +5232 -0
  147. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_generate_circuit.cc +199 -0
  148. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_hash.h +554 -0
  149. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_signature.h +143 -0
  150. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_signature_test.cc +444 -0
  151. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_test_attributes.h +157 -0
  152. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_witness.h +863 -0
  153. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_zk.cc +693 -0
  154. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_zk.h +216 -0
  155. data/vendor/longfellow-zk/lib/circuits/mdoc/mdoc_zk_test.cc +724 -0
  156. data/vendor/longfellow-zk/lib/circuits/mdoc/zk_spec.cc +100 -0
  157. data/vendor/longfellow-zk/lib/circuits/mdoc/zk_spec_test.cc +155 -0
  158. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_circuit.h +330 -0
  159. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_circuit_test.cc +607 -0
  160. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_io.h +26 -0
  161. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_witness.cc +163 -0
  162. data/vendor/longfellow-zk/lib/circuits/sha/flatsha256_witness.h +47 -0
  163. data/vendor/longfellow-zk/lib/circuits/sha/sha256_constants.cc +34 -0
  164. data/vendor/longfellow-zk/lib/circuits/sha/sha256_constants.h +27 -0
  165. data/vendor/longfellow-zk/lib/circuits/sha/sha256_test_values.h +389 -0
  166. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/ptrcred.h +171 -0
  167. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small.h +218 -0
  168. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_examples.h +118 -0
  169. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_io.h +25 -0
  170. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_test.cc +208 -0
  171. data/vendor/longfellow-zk/lib/circuits/tests/anoncred/small_witness.h +130 -0
  172. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode.h +508 -0
  173. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_circuit_test.cc +95 -0
  174. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_test.cc +119 -0
  175. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_util.cc +47 -0
  176. data/vendor/longfellow-zk/lib/circuits/tests/base64/decode_util.h +29 -0
  177. data/vendor/longfellow-zk/lib/circuits/tests/ec/pk_circuit.h +231 -0
  178. data/vendor/longfellow-zk/lib/circuits/tests/ec/pk_circuit_test.cc +428 -0
  179. data/vendor/longfellow-zk/lib/circuits/tests/ec/pk_witness.h +102 -0
  180. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt.h +190 -0
  181. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt_constants.h +26 -0
  182. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt_test.cc +559 -0
  183. data/vendor/longfellow-zk/lib/circuits/tests/jwt/jwt_witness.h +315 -0
  184. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f.h +411 -0
  185. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f_io.h +32 -0
  186. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f_test.cc +364 -0
  187. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_1f_witness.h +278 -0
  188. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation.h +146 -0
  189. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation_constants.h +25 -0
  190. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation_test.cc +315 -0
  191. data/vendor/longfellow-zk/lib/circuits/tests/mdoc/mdoc_revocation_witness.h +136 -0
  192. data/vendor/longfellow-zk/lib/circuits/tests/pq/bitaddr/bitaddr.h +250 -0
  193. data/vendor/longfellow-zk/lib/circuits/tests/pq/bitaddr/bitaddr_test.cc +333 -0
  194. data/vendor/longfellow-zk/lib/circuits/tests/pq/bitaddr/bitaddr_witness.h +152 -0
  195. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44.h +903 -0
  196. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_circuit_test.cc +274 -0
  197. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_eval_test.cc +440 -0
  198. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_examples.cc +8851 -0
  199. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_examples.h +93 -0
  200. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_types.cc +24 -0
  201. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_types.h +118 -0
  202. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_witness.h +453 -0
  203. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_44_witness_test.cc +49 -0
  204. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref.cc +458 -0
  205. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref.h +150 -0
  206. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test.cc +398 -0
  207. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test_vectors.inc +3618 -0
  208. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test_vectors_pkdecode.inc +689 -0
  209. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/ml_dsa_ref_test_vectors_sigdecode.inc +1501 -0
  210. data/vendor/longfellow-zk/lib/circuits/tests/pq/ml_dsa/sigdecode_test_vectors.inc +540 -0
  211. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_circuit.h +394 -0
  212. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_circuit_test.cc +577 -0
  213. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_constants.h +90 -0
  214. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_witness.cc +174 -0
  215. data/vendor/longfellow-zk/lib/circuits/tests/ripemd/ripemd_witness.h +140 -0
  216. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_circuit.h +351 -0
  217. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_circuit_test.cc +466 -0
  218. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_reference.cc +207 -0
  219. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_reference.h +59 -0
  220. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_reference_test.cc +153 -0
  221. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_round_constants.cc +39 -0
  222. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_round_constants.h +29 -0
  223. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_slicing.h +31 -0
  224. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_witness.cc +83 -0
  225. data/vendor/longfellow-zk/lib/circuits/tests/sha3/sha3_witness.h +72 -0
  226. data/vendor/longfellow-zk/lib/circuits/tests/sha3/shake_test_vectors.h +477 -0
  227. data/vendor/longfellow-zk/lib/ec/elliptic_curve.h +596 -0
  228. data/vendor/longfellow-zk/lib/ec/elliptic_curve_test.cc +548 -0
  229. data/vendor/longfellow-zk/lib/ec/p256.cc +36 -0
  230. data/vendor/longfellow-zk/lib/ec/p256.h +60 -0
  231. data/vendor/longfellow-zk/lib/ec/p256k1.cc +34 -0
  232. data/vendor/longfellow-zk/lib/ec/p256k1.h +60 -0
  233. data/vendor/longfellow-zk/lib/gf2k/gf2_128.h +503 -0
  234. data/vendor/longfellow-zk/lib/gf2k/gf2_128_bench.cc +48 -0
  235. data/vendor/longfellow-zk/lib/gf2k/gf2_128_test.cc +416 -0
  236. data/vendor/longfellow-zk/lib/gf2k/gf2poly.h +74 -0
  237. data/vendor/longfellow-zk/lib/gf2k/lch14.h +242 -0
  238. data/vendor/longfellow-zk/lib/gf2k/lch14_bench.cc +75 -0
  239. data/vendor/longfellow-zk/lib/gf2k/lch14_reed_solomon.h +127 -0
  240. data/vendor/longfellow-zk/lib/gf2k/lch14_reed_solomon_test.cc +110 -0
  241. data/vendor/longfellow-zk/lib/gf2k/lch14_test.cc +246 -0
  242. data/vendor/longfellow-zk/lib/gf2k/sysdep.h +329 -0
  243. data/vendor/longfellow-zk/lib/ligero/ligero_param.h +449 -0
  244. data/vendor/longfellow-zk/lib/ligero/ligero_prover.h +354 -0
  245. data/vendor/longfellow-zk/lib/ligero/ligero_test.cc +136 -0
  246. data/vendor/longfellow-zk/lib/ligero/ligero_transcript.h +67 -0
  247. data/vendor/longfellow-zk/lib/ligero/ligero_verifier.h +272 -0
  248. data/vendor/longfellow-zk/lib/merkle/merkle_commitment.h +104 -0
  249. data/vendor/longfellow-zk/lib/merkle/merkle_tree.h +216 -0
  250. data/vendor/longfellow-zk/lib/merkle/merkle_tree_test.cc +240 -0
  251. data/vendor/longfellow-zk/lib/proto/circuit.h +354 -0
  252. data/vendor/longfellow-zk/lib/proto/circuit_test.cc +202 -0
  253. data/vendor/longfellow-zk/lib/random/random.h +119 -0
  254. data/vendor/longfellow-zk/lib/random/random_test.cc +189 -0
  255. data/vendor/longfellow-zk/lib/random/secure_random_engine.h +37 -0
  256. data/vendor/longfellow-zk/lib/random/transcript.h +193 -0
  257. data/vendor/longfellow-zk/lib/random/transcript_test.cc +344 -0
  258. data/vendor/longfellow-zk/lib/sumcheck/circuit.h +148 -0
  259. data/vendor/longfellow-zk/lib/sumcheck/circuit_id.h +71 -0
  260. data/vendor/longfellow-zk/lib/sumcheck/equad.h +126 -0
  261. data/vendor/longfellow-zk/lib/sumcheck/hquad.h +115 -0
  262. data/vendor/longfellow-zk/lib/sumcheck/prover.h +59 -0
  263. data/vendor/longfellow-zk/lib/sumcheck/prover_layers.h +362 -0
  264. data/vendor/longfellow-zk/lib/sumcheck/quad.h +227 -0
  265. data/vendor/longfellow-zk/lib/sumcheck/quad_builder.h +211 -0
  266. data/vendor/longfellow-zk/lib/sumcheck/quad_test.cc +169 -0
  267. data/vendor/longfellow-zk/lib/sumcheck/sumcheck_test.cc +324 -0
  268. data/vendor/longfellow-zk/lib/sumcheck/testing.h +69 -0
  269. data/vendor/longfellow-zk/lib/sumcheck/transcript_sumcheck.h +85 -0
  270. data/vendor/longfellow-zk/lib/sumcheck/verifier.h +84 -0
  271. data/vendor/longfellow-zk/lib/sumcheck/verifier_layers.h +221 -0
  272. data/vendor/longfellow-zk/lib/testing/test_main.cc +50 -0
  273. data/vendor/longfellow-zk/lib/util/ceildiv.h +164 -0
  274. data/vendor/longfellow-zk/lib/util/ceildiv_test.cc +152 -0
  275. data/vendor/longfellow-zk/lib/util/crc64.h +45 -0
  276. data/vendor/longfellow-zk/lib/util/crypto.cc +39 -0
  277. data/vendor/longfellow-zk/lib/util/crypto.h +108 -0
  278. data/vendor/longfellow-zk/lib/util/log.cc +110 -0
  279. data/vendor/longfellow-zk/lib/util/log.h +33 -0
  280. data/vendor/longfellow-zk/lib/util/panic.h +40 -0
  281. data/vendor/longfellow-zk/lib/util/readbuffer.h +67 -0
  282. data/vendor/longfellow-zk/lib/util/serialization.h +54 -0
  283. data/vendor/longfellow-zk/lib/zk/zk_common.h +455 -0
  284. data/vendor/longfellow-zk/lib/zk/zk_proof.h +378 -0
  285. data/vendor/longfellow-zk/lib/zk/zk_prover.h +202 -0
  286. data/vendor/longfellow-zk/lib/zk/zk_test.cc +340 -0
  287. data/vendor/longfellow-zk/lib/zk/zk_testing.h +154 -0
  288. data/vendor/longfellow-zk/lib/zk/zk_verifier.h +109 -0
  289. metadata +347 -0
@@ -0,0 +1,689 @@
1
+
2
+ extern const size_t kPublicKeySize = 1312;
3
+
4
+ std::vector<MlDsa44PkDecodeTest> GetPkDecodeTests() {
5
+ return {
6
+ {
7
+ {
8
+ 72, 253, 118, 192, 98, 128, 246, 188, 35, 248, 223, 161, 160,
9
+ 215, 106, 121, 125, 225, 164, 229, 88, 94, 55, 111, 154, 132,
10
+ 103, 129, 238, 252, 193, 185, 182, 97, 216, 253, 196, 117, 193,
11
+ 162, 109, 138, 11, 70, 15, 80, 220, 218, 20, 9, 237, 146,
12
+ 214, 38, 169, 228, 6, 216, 215, 38, 7, 92, 77, 5, 217,
13
+ 10, 210, 172, 11, 61, 33, 37, 154, 254, 119, 26, 244, 139,
14
+ 101, 100, 38, 44, 11, 129, 232, 14, 171, 219, 44, 201, 151,
15
+ 56, 223, 39, 118, 4, 14, 124, 109, 188, 44, 226, 152, 9,
16
+ 248, 82, 237, 146, 237, 157, 23, 204, 227, 34, 6, 43, 52,
17
+ 140, 222, 155, 146, 203, 211, 44, 182, 194, 240, 179, 47, 166,
18
+ 182, 252, 175, 148, 116, 20, 86, 206, 23, 74, 170, 7, 23,
19
+ 209, 50, 116, 150, 190, 144, 19, 184, 168, 178, 130, 21, 189,
20
+ 245, 181, 58, 240, 68, 98, 10, 138, 201, 16, 161, 138, 3,
21
+ 69, 172, 63, 237, 127, 232, 91, 102, 86, 170, 106, 144, 1,
22
+ 37, 93, 183, 151, 234, 195, 195, 187, 72, 252, 62, 210, 250,
23
+ 8, 158, 38, 69, 90, 29, 131, 219, 4, 192, 205, 150, 238,
24
+ 0, 130, 88, 215, 212, 158, 78, 113, 55, 42, 151, 50, 184,
25
+ 20, 211, 160, 8, 50, 0, 173, 164, 209, 3, 174, 121, 115,
26
+ 73, 57, 73, 188, 198, 164, 196, 246, 31, 29, 151, 118, 27,
27
+ 44, 181, 234, 233, 142, 130, 219, 63, 118, 205, 253, 29, 59,
28
+ 204, 11, 189, 31, 124, 143, 124, 198, 124, 188, 238, 88, 22,
29
+ 3, 199, 254, 48, 11, 97, 133, 17, 19, 127, 173, 18, 95,
30
+ 224, 198, 24, 212, 177, 58, 175, 234, 117, 14, 199, 170, 46,
31
+ 68, 237, 241, 157, 39, 228, 62, 75, 108, 48, 178, 167, 250,
32
+ 229, 102, 77, 171, 129, 45, 56, 19, 216, 183, 8, 58, 169,
33
+ 103, 212, 249, 179, 170, 83, 163, 155, 103, 36, 45, 133, 220,
34
+ 127, 27, 145, 238, 185, 123, 184, 75, 80, 139, 113, 86, 211,
35
+ 119, 88, 23, 183, 148, 176, 233, 160, 244, 99, 183, 50, 240,
36
+ 227, 154, 29, 146, 154, 185, 227, 253, 241, 65, 95, 29, 230,
37
+ 90, 133, 4, 14, 231, 165, 82, 180, 222, 191, 164, 191, 183,
38
+ 64, 239, 232, 163, 9, 113, 183, 41, 91, 112, 250, 92, 55,
39
+ 198, 238, 148, 115, 153, 229, 209, 126, 64, 120, 72, 102, 253,
40
+ 18, 183, 33, 145, 96, 66, 97, 156, 197, 66, 103, 69, 13,
41
+ 5, 88, 119, 33, 192, 231, 140, 96, 134, 187, 252, 166, 247,
42
+ 161, 181, 14, 19, 53, 225, 173, 138, 181, 74, 18, 122, 88,
43
+ 176, 253, 94, 190, 240, 242, 19, 62, 48, 141, 84, 78, 188,
44
+ 102, 100, 96, 83, 117, 57, 72, 37, 147, 92, 183, 169, 33,
45
+ 242, 123, 39, 53, 110, 11, 116, 23, 218, 50, 192, 64, 195,
46
+ 59, 20, 252, 122, 144, 112, 2, 229, 248, 41, 106, 13, 90,
47
+ 26, 192, 29, 139, 25, 33, 214, 72, 162, 16, 52, 177, 14,
48
+ 166, 207, 139, 11, 232, 240, 170, 137, 132, 103, 117, 87, 170,
49
+ 204, 152, 224, 88, 78, 125, 217, 116, 233, 61, 255, 119, 236,
50
+ 107, 166, 168, 88, 94, 89, 165, 109, 115, 94, 225, 92, 130,
51
+ 122, 179, 75, 139, 102, 46, 32, 61, 248, 219, 123, 184, 123,
52
+ 62, 148, 235, 143, 211, 8, 12, 184, 208, 85, 142, 3, 24,
53
+ 42, 98, 126, 72, 24, 182, 69, 141, 212, 68, 122, 161, 227,
54
+ 197, 251, 53, 164, 246, 250, 146, 158, 4, 123, 223, 44, 54,
55
+ 30, 160, 75, 5, 190, 145, 156, 162, 119, 78, 245, 71, 109,
56
+ 224, 236, 178, 14, 228, 177, 25, 77, 203, 18, 129, 5, 101,
57
+ 0, 190, 158, 240, 222, 201, 135, 117, 92, 165, 172, 86, 101,
58
+ 6, 19, 18, 50, 69, 95, 176, 196, 0, 130, 123, 158, 27,
59
+ 22, 247, 132, 174, 37, 105, 116, 13, 2, 159, 52, 119, 56,
60
+ 171, 86, 55, 139, 101, 188, 67, 245, 49, 246, 60, 62, 140,
61
+ 86, 197, 146, 5, 66, 35, 99, 198, 133, 59, 125, 164, 58,
62
+ 41, 251, 31, 100, 236, 85, 198, 231, 176, 229, 37, 190, 228,
63
+ 217, 35, 243, 219, 179, 206, 79, 66, 137, 157, 126, 183, 201,
64
+ 34, 94, 94, 101, 145, 25, 33, 146, 80, 125, 59, 61, 187,
65
+ 160, 207, 1, 106, 79, 84, 122, 8, 114, 54, 176, 143, 7,
66
+ 30, 143, 154, 102, 59, 206, 22, 230, 150, 168, 211, 174, 227,
67
+ 39, 160, 166, 155, 203, 230, 13, 60, 44, 25, 204, 117, 195,
68
+ 13, 92, 219, 12, 142, 38, 141, 212, 74, 116, 242, 20, 152,
69
+ 38, 102, 35, 108, 107, 245, 153, 174, 158, 134, 233, 79, 85,
70
+ 222, 254, 173, 206, 64, 22, 8, 221, 124, 58, 22, 188, 70,
71
+ 46, 226, 2, 201, 9, 115, 129, 109, 62, 158, 54, 248, 135,
72
+ 3, 124, 138, 13, 110, 169, 244, 236, 85, 21, 13, 241, 170,
73
+ 23, 96, 41, 81, 53, 47, 63, 77, 235, 93, 191, 237, 154,
74
+ 187, 178, 18, 103, 31, 115, 183, 75, 181, 243, 28, 97, 147,
75
+ 64, 190, 148, 60, 105, 10, 174, 132, 112, 95, 172, 241, 42,
76
+ 228, 131, 47, 53, 156, 153, 100, 189, 159, 162, 226, 81, 43,
77
+ 225, 159, 125, 157, 209, 37, 205, 44, 233, 2, 4, 208, 114,
78
+ 96, 219, 57, 170, 28, 91, 143, 205, 138, 28, 134, 87, 198,
79
+ 133, 122, 102, 21, 129, 146, 102, 129, 195, 37, 80, 225, 55,
80
+ 197, 71, 174, 189, 51, 246, 205, 237, 229, 165, 72, 126, 182,
81
+ 60, 36, 120, 198, 91, 77, 126, 121, 192, 28, 115, 243, 134,
82
+ 43, 157, 209, 120, 147, 233, 10, 210, 119, 125, 88, 128, 205,
83
+ 192, 31, 73, 197, 247, 55, 43, 22, 77, 55, 134, 79, 110,
84
+ 146, 67, 78, 255, 27, 129, 100, 16, 115, 158, 201, 26, 137,
85
+ 204, 7, 50, 57, 140, 59, 2, 253, 78, 47, 90, 237, 74,
86
+ 43, 132, 109, 37, 124, 173, 136, 43, 24, 173, 111, 237, 11,
87
+ 248, 101, 145, 184, 103, 232, 91, 70, 154, 107, 159, 243, 58,
88
+ 60, 61, 152, 176, 132, 206, 92, 93, 164, 186, 89, 193, 231,
89
+ 102, 19, 189, 131, 239, 46, 36, 26, 86, 212, 239, 66, 3,
90
+ 190, 46, 217, 154, 118, 96, 104, 93, 226, 36, 79, 73, 43,
91
+ 247, 181, 16, 144, 220, 222, 3, 192, 158, 18, 18, 67, 176,
92
+ 202, 162, 236, 245, 243, 127, 31, 251, 235, 153, 201, 220, 109,
93
+ 10, 134, 42, 76, 138, 9, 31, 221, 68, 97, 183, 15, 146,
94
+ 233, 66, 87, 195, 181, 52, 31, 184, 168, 186, 236, 137, 189,
95
+ 117, 140, 133, 109, 109, 106, 149, 160, 254, 137, 249, 250, 49,
96
+ 150, 145, 238, 214, 68, 115, 172, 33, 233, 129, 103, 19, 243,
97
+ 130, 40, 239, 70, 248, 242, 50, 117, 207, 99, 180, 126, 80,
98
+ 214, 221, 195, 109, 211, 231, 53, 242, 16, 178, 78, 217, 201,
99
+ 54, 141, 134, 18, 88, 104, 195, 230, 66, 151, 203, 227, 221,
100
+ 166, 36, 199, 151, 216, 195, 13, 222, 236, 68, 104, 87, 170,
101
+ 147, 94, 155, 8, 194, 120, 31, 243, 138, 112, 79, 185, 142,
102
+ 69, 202, 181, 217, 71, 112, 121, 16, 106, 194, 211, 80, 23,
103
+ 144, 227, 67, 224, 239, 146, 176, 249, 214, 129, 62, 178, 69,
104
+ 153, 103, 191, 249, 241, 124, 242, 59, 181, 22, 192, 181, 133,
105
+ 48, 210, 182, 210, 18, 13, 91, 238, 6, 234, 246, 183, 178,
106
+ 248, 50, 68, 192, 18, 162, 139, 209, 187, 224, 146, 166, 204,
107
+ 175, 3, 35, 213, 156, 9, 215, 77, 197, 196, 229, 13, 241,
108
+ 19, 75, 31, 202, 118, 26, 108, 87, 145, 255, 37, 72,
109
+ },
110
+ {72, 253, 118, 192, 98, 128, 246, 188, 35, 248, 223,
111
+ 161, 160, 215, 106, 121, 125, 225, 164, 229, 88, 94,
112
+ 55, 111, 154, 132, 103, 129, 238, 252, 193, 185},
113
+ {{
114
+ 438u, 536u, 989u, 787u, 373u, 176u, 730u, 553u, 523u,
115
+ 977u, 256u, 881u, 218u, 581u, 720u, 587u, 726u, 585u,
116
+ 586u, 27u, 984u, 437u, 114u, 368u, 333u, 577u, 173u,
117
+ 840u, 940u, 834u, 531u, 148u, 666u, 511u, 423u, 976u,
118
+ 395u, 281u, 614u, 176u, 267u, 544u, 238u, 684u, 219u,
119
+ 587u, 380u, 226u, 991u, 393u, 71u, 56u, 380u, 795u,
120
+ 715u, 904u, 408u, 514u, 303u, 949u, 402u, 891u, 377u,
121
+ 816u, 739u, 392u, 688u, 208u, 652u, 759u, 297u, 814u,
122
+ 211u, 395u, 43u, 963u, 947u, 395u, 874u, 1010u, 175u,
123
+ 293u, 327u, 344u, 974u, 645u, 676u, 30u, 279u, 180u,
124
+ 835u, 601u, 190u, 228u, 897u, 674u, 690u, 352u, 977u,
125
+ 982u, 693u, 14u, 79u, 393u, 522u, 610u, 268u, 644u,
126
+ 906u, 320u, 708u, 254u, 1005u, 543u, 446u, 409u, 598u,
127
+ 682u, 262u, 6u, 293u, 471u, 379u, 938u, 963u, 752u,
128
+ 139u, 1009u, 574u, 692u, 143u, 632u, 294u, 657u, 469u,
129
+ 524u, 219u, 1u, 220u, 603u, 238u, 128u, 392u, 861u,
130
+ 724u, 935u, 788u, 221u, 810u, 165u, 899u, 82u, 211u,
131
+ 552u, 800u, 0u, 173u, 105u, 61u, 696u, 889u, 604u,
132
+ 916u, 292u, 700u, 305u, 74u, 987u, 287u, 455u, 873u,
133
+ 109u, 300u, 685u, 670u, 571u, 898u, 1014u, 867u, 821u,
134
+ 509u, 711u, 195u, 47u, 957u, 775u, 247u, 498u, 198u,
135
+ 799u, 747u, 355u, 790u, 448u, 1004u, 195u, 267u, 344u,
136
+ 280u, 76u, 383u, 171u, 497u, 897u, 198u, 262u, 797u,
137
+ 234u, 687u, 378u, 231u, 796u, 682u, 267u, 724u, 967u,
138
+ 925u, 265u, 1006u, 300u, 108u, 140u, 635u, 1002u, 741u,
139
+ 857u, 692u, 518u, 45u, 206u, 385u, 735u, 520u, 590u,
140
+ 634u, 849u, 1017u, 684u, 314u, 653u, 923u, 281u, 722u,
141
+ 532u, 988u, 735u, 273u, 954u, 953u, 542u, 187u, 321u,
142
+ 395u, 412u, 309u, 479u,
143
+ },
144
+ {
145
+ 856u, 453u, 331u, 706u, 233u, 296u, 575u, 733u, 50u, 252u,
146
+ 430u, 118u, 658u, 614u, 571u, 1015u, 497u, 976u, 469u, 920u,
147
+ 346u, 289u, 224u, 924u, 677u, 276u, 491u, 767u, 932u, 495u,
148
+ 11u, 957u, 1000u, 616u, 784u, 733u, 809u, 22u, 935u, 371u,
149
+ 567u, 945u, 334u, 462u, 409u, 121u, 1005u, 257u, 120u, 402u,
150
+ 982u, 75u, 439u, 72u, 521u, 265u, 97u, 359u, 44u, 413u,
151
+ 325u, 323u, 384u, 477u, 33u, 496u, 206u, 386u, 902u, 814u,
152
+ 623u, 990u, 417u, 941u, 304u, 212u, 481u, 683u, 856u, 298u,
153
+ 530u, 542u, 773u, 1014u, 606u, 47u, 815u, 79u, 62u, 844u,
154
+ 328u, 313u, 700u, 281u, 518u, 333u, 373u, 526u, 596u, 588u,
155
+ 860u, 621u, 538u, 968u, 891u, 329u, 739u, 45u, 884u, 645u,
156
+ 813u, 768u, 832u, 752u, 323u, 1008u, 122u, 36u, 39u, 916u,
157
+ 504u, 650u, 214u, 360u, 26u, 880u, 177u, 102u, 545u, 565u,
158
+ 548u, 66u, 308u, 940u, 608u, 830u, 907u, 514u, 782u, 683u,
159
+ 137u, 481u, 854u, 349u, 170u, 563u, 521u, 355u, 334u, 607u,
160
+ 845u, 933u, 829u, 511u, 711u, 431u, 166u, 554u, 485u, 357u,
161
+ 421u, 219u, 487u, 901u, 604u, 672u, 823u, 302u, 651u, 921u,
162
+ 514u, 244u, 1016u, 758u, 903u, 494u, 62u, 741u, 254u, 846u,
163
+ 8u, 515u, 267u, 343u, 910u, 512u, 673u, 392u, 126u, 530u,
164
+ 865u, 278u, 141u, 309u, 932u, 645u, 483u, 753u, 863u, 656u,
165
+ 758u, 190u, 489u, 18u, 891u, 823u, 866u, 120u, 928u, 338u,
166
+ 992u, 582u, 668u, 488u, 231u, 981u, 327u, 27u, 718u, 715u,
167
+ 14u, 121u, 411u, 308u, 715u, 68u, 88u, 404u, 512u, 943u,
168
+ 777u, 891u, 969u, 353u, 455u, 661u, 684u, 341u, 102u, 76u,
169
+ 530u, 332u, 500u, 705u, 196u, 128u, 952u, 633u, 539u, 453u,
170
+ 79u, 698u, 293u, 282u, 215u, 8u,
171
+ },
172
+ {
173
+ 159u, 461u, 903u, 684u, 854u, 717u, 600u, 753u, 323u, 125u,
174
+ 867u, 243u, 62u, 419u, 85u, 587u, 517u, 208u, 562u, 793u,
175
+ 901u, 846u, 583u, 234u, 809u, 1022u, 577u, 945u, 597u, 497u,
176
+ 782u, 918u, 549u, 303u, 414u, 143u, 1011u, 246u, 235u, 319u,
177
+ 322u, 866u, 1001u, 733u, 713u, 904u, 485u, 405u, 401u, 70u,
178
+ 290u, 322u, 893u, 846u, 947u, 642u, 463u, 640u, 246u, 337u,
179
+ 122u, 130u, 871u, 704u, 911u, 897u, 241u, 618u, 870u, 910u,
180
+ 364u, 920u, 150u, 234u, 749u, 910u, 39u, 424u, 442u, 814u,
181
+ 486u, 771u, 707u, 100u, 460u, 221u, 220u, 368u, 219u, 899u,
182
+ 616u, 564u, 724u, 274u, 807u, 83u, 664u, 393u, 566u, 432u,
183
+ 363u, 637u, 745u, 634u, 390u, 1018u, 340u, 889u, 510u, 939u,
184
+ 12u, 89u, 264u, 823u, 935u, 88u, 700u, 913u, 546u, 11u,
185
+ 457u, 194u, 23u, 438u, 574u, 423u, 899u, 543u, 3u, 671u,
186
+ 216u, 440u, 169u, 829u, 350u, 85u, 269u, 700u, 378u, 384u,
187
+ 297u, 340u, 755u, 252u, 845u, 890u, 1013u, 950u, 922u, 174u,
188
+ 299u, 412u, 799u, 476u, 187u, 725u, 243u, 71u, 310u, 258u,
189
+ 190u, 805u, 659u, 41u, 174u, 33u, 503u, 689u, 753u, 266u,
190
+ 62u, 190u, 53u, 615u, 585u, 757u, 671u, 168u, 286u, 173u,
191
+ 993u, 871u, 471u, 838u, 293u, 819u, 658u, 11u, 4u, 180u,
192
+ 519u, 877u, 569u, 810u, 433u, 573u, 717u, 802u, 97u, 350u,
193
+ 454u, 673u, 615u, 85u, 641u, 420u, 22u, 782u, 37u, 84u,
194
+ 894u, 788u, 583u, 875u, 827u, 984u, 461u, 379u, 606u, 290u,
195
+ 638u, 813u, 579u, 480u, 966u, 854u, 996u, 485u, 192u, 199u,
196
+ 823u, 539u, 299u, 103u, 909u, 589u, 745u, 130u, 893u, 501u,
197
+ 88u, 864u, 12u, 127u, 329u, 497u, 895u, 172u, 278u, 467u,
198
+ 99u, 318u, 622u, 228u, 228u, 1021u,
199
+ },
200
+ {
201
+ 283u, 288u, 262u, 460u, 414u, 690u, 145u, 818u, 519u, 588u,
202
+ 195u, 238u, 258u, 959u, 756u, 360u, 749u, 722u, 66u, 438u,
203
+ 37u, 863u, 138u, 174u, 280u, 1003u, 726u, 47u, 504u, 89u,
204
+ 905u, 414u, 1000u, 406u, 420u, 430u, 927u, 700u, 963u, 244u,
205
+ 152u, 300u, 232u, 371u, 93u, 681u, 411u, 773u, 743u, 217u,
206
+ 977u, 526u, 751u, 267u, 418u, 344u, 980u, 187u, 52u, 760u,
207
+ 302u, 694u, 873u, 385u, 360u, 151u, 590u, 316u, 841u, 458u,
208
+ 863u, 66u, 144u, 951u, 61u, 768u, 670u, 132u, 49u, 705u,
209
+ 714u, 808u, 862u, 975u, 895u, 711u, 703u, 615u, 201u, 887u,
210
+ 166u, 536u, 42u, 659u, 152u, 124u, 221u, 81u, 886u, 62u,
211
+ 402u, 186u, 372u, 781u, 181u, 973u, 897u, 674u, 186u, 635u,
212
+ 984u, 470u, 396u, 865u, 726u, 425u, 149u, 936u, 159u, 998u,
213
+ 506u, 396u, 281u, 954u, 214u, 209u, 711u, 134u, 489u, 480u,
214
+ 310u, 972u, 130u, 970u, 110u, 993u, 754u, 332u, 247u, 399u,
215
+ 692u, 31u, 357u, 887u, 451u, 219u, 637u, 215u, 242u, 132u,
216
+ 235u, 869u, 713u, 845u, 104u, 74u, 88u, 218u, 620u, 267u,
217
+ 919u, 242u, 478u, 667u, 804u, 497u, 393u, 783u, 525u, 823u,
218
+ 78u, 417u, 599u, 234u, 489u, 621u, 520u, 560u, 503u, 972u,
219
+ 138u, 988u, 916u, 570u, 581u, 370u, 411u, 287u, 368u, 30u,
220
+ 673u, 777u, 211u, 468u, 257u, 910u, 67u, 1016u, 302u, 706u,
221
+ 761u, 117u, 1000u, 712u, 325u, 486u, 1014u, 998u, 241u, 159u,
222
+ 959u, 724u, 22u, 368u, 91u, 194u, 722u, 173u, 301u, 52u,
223
+ 603u, 443u, 672u, 987u, 695u, 556u, 815u, 272u, 704u, 132u,
224
+ 186u, 838u, 187u, 184u, 617u, 818u, 943u, 192u, 338u, 627u,
225
+ 777u, 885u, 84u, 787u, 485u, 67u, 319u, 300u, 543u, 434u,
226
+ 423u, 432u, 343u, 996u, 607u, 288u,
227
+ }},
228
+ {232, 93, 94, 100, 133, 57, 15, 224, 201, 12, 32, 212, 15,
229
+ 55, 179, 89, 229, 179, 229, 15, 174, 97, 58, 121, 97, 163,
230
+ 49, 162, 184, 187, 188, 151, 231, 179, 164, 17, 7, 144, 97,
231
+ 133, 249, 178, 198, 118, 29, 206, 197, 54, 52, 190, 234, 15,
232
+ 237, 195, 89, 211, 68, 6, 109, 44, 110, 96, 156, 4},
233
+ },
234
+ {
235
+ {
236
+ 95, 9, 237, 111, 76, 200, 122, 175, 49, 158, 249, 111, 215,
237
+ 153, 16, 190, 92, 170, 217, 62, 217, 132, 38, 159, 146, 194,
238
+ 161, 223, 84, 62, 173, 146, 57, 111, 80, 207, 242, 32, 34,
239
+ 239, 77, 73, 101, 239, 101, 186, 252, 249, 47, 166, 228, 190,
240
+ 239, 223, 152, 65, 247, 200, 141, 118, 247, 26, 224, 165, 75,
241
+ 85, 111, 159, 247, 47, 206, 114, 164, 174, 129, 93, 35, 102,
242
+ 134, 51, 47, 220, 157, 160, 141, 37, 179, 185, 26, 199, 119,
243
+ 77, 1, 11, 15, 82, 120, 231, 143, 152, 31, 83, 177, 226,
244
+ 71, 190, 217, 106, 107, 206, 145, 163, 83, 90, 26, 27, 91,
245
+ 58, 240, 176, 125, 250, 145, 31, 67, 212, 139, 161, 46, 235,
246
+ 191, 137, 194, 218, 184, 179, 241, 62, 121, 7, 194, 121, 133,
247
+ 134, 253, 84, 170, 220, 172, 238, 23, 142, 220, 130, 123, 146,
248
+ 223, 229, 249, 237, 235, 9, 215, 215, 152, 88, 171, 201, 48,
249
+ 133, 54, 11, 208, 39, 92, 239, 253, 3, 1, 59, 228, 192,
250
+ 202, 209, 44, 88, 240, 43, 253, 240, 130, 128, 233, 211, 203,
251
+ 242, 97, 20, 65, 90, 146, 200, 186, 0, 27, 181, 163, 70,
252
+ 81, 41, 26, 154, 199, 37, 83, 37, 239, 135, 25, 93, 181,
253
+ 168, 159, 209, 158, 151, 114, 235, 243, 19, 179, 38, 117, 119,
254
+ 57, 26, 90, 235, 165, 81, 198, 131, 35, 1, 34, 69, 167,
255
+ 238, 129, 30, 0, 211, 230, 158, 161, 10, 76, 225, 163, 167,
256
+ 117, 169, 134, 13, 218, 87, 90, 33, 64, 64, 126, 171, 127,
257
+ 58, 65, 135, 168, 244, 34, 120, 9, 145, 74, 91, 142, 173,
258
+ 55, 35, 195, 33, 214, 56, 60, 114, 31, 23, 174, 243, 173,
259
+ 247, 0, 75, 189, 174, 77, 188, 14, 6, 4, 9, 211, 52,
260
+ 90, 105, 17, 146, 230, 15, 139, 47, 144, 49, 132, 248, 120,
261
+ 104, 220, 23, 249, 157, 214, 8, 138, 150, 174, 56, 148, 228,
262
+ 164, 79, 140, 231, 238, 201, 68, 204, 7, 34, 252, 241, 36,
263
+ 198, 14, 29, 222, 149, 153, 248, 239, 255, 78, 21, 215, 83,
264
+ 121, 69, 229, 28, 186, 57, 51, 89, 35, 88, 64, 207, 146,
265
+ 206, 51, 234, 149, 57, 48, 196, 247, 77, 211, 10, 10, 156,
266
+ 198, 33, 186, 211, 13, 195, 20, 173, 19, 182, 82, 204, 246,
267
+ 122, 60, 102, 68, 120, 144, 13, 4, 216, 244, 34, 198, 146,
268
+ 227, 58, 71, 70, 49, 218, 218, 35, 7, 102, 6, 130, 77,
269
+ 12, 16, 47, 82, 17, 7, 173, 38, 118, 229, 93, 77, 61,
270
+ 112, 61, 240, 207, 85, 220, 158, 31, 255, 44, 58, 147, 222,
271
+ 85, 0, 239, 183, 95, 92, 51, 179, 165, 47, 154, 80, 246,
272
+ 189, 67, 161, 164, 89, 130, 209, 88, 171, 249, 19, 164, 244,
273
+ 52, 245, 177, 89, 180, 252, 222, 118, 215, 124, 38, 149, 10,
274
+ 142, 162, 117, 61, 154, 76, 207, 255, 168, 229, 148, 249, 103,
275
+ 102, 147, 90, 204, 157, 135, 50, 38, 224, 87, 27, 110, 202,
276
+ 152, 117, 26, 63, 136, 195, 12, 58, 192, 242, 238, 145, 67,
277
+ 195, 117, 80, 248, 221, 199, 59, 81, 181, 69, 150, 80, 58,
278
+ 193, 240, 23, 59, 100, 65, 90, 157, 75, 97, 45, 95, 227,
279
+ 227, 110, 3, 77, 184, 11, 221, 66, 166, 79, 193, 59, 133,
280
+ 181, 60, 38, 36, 68, 96, 3, 190, 118, 141, 250, 84, 241,
281
+ 18, 224, 211, 208, 104, 6, 218, 79, 198, 197, 67, 94, 117,
282
+ 108, 99, 110, 141, 244, 153, 124, 134, 180, 226, 44, 67, 215,
283
+ 222, 60, 101, 253, 167, 112, 99, 148, 219, 241, 240, 63, 53,
284
+ 231, 28, 18, 18, 9, 235, 248, 32, 70, 253, 140, 164, 204,
285
+ 13, 77, 18, 255, 80, 215, 14, 124, 89, 167, 101, 207, 51,
286
+ 9, 238, 205, 42, 150, 183, 68, 40, 240, 79, 232, 163, 247,
287
+ 181, 131, 3, 98, 37, 110, 74, 150, 245, 196, 87, 168, 35,
288
+ 132, 104, 202, 193, 102, 47, 68, 136, 136, 210, 54, 218, 216,
289
+ 10, 2, 16, 94, 69, 163, 175, 57, 60, 86, 30, 1, 76,
290
+ 14, 201, 18, 153, 158, 227, 38, 195, 104, 29, 56, 10, 102,
291
+ 71, 7, 197, 82, 143, 218, 10, 29, 71, 106, 231, 17, 78,
292
+ 74, 245, 131, 79, 73, 97, 207, 69, 240, 142, 97, 139, 17,
293
+ 31, 169, 36, 195, 220, 109, 156, 163, 150, 233, 119, 201, 102,
294
+ 34, 74, 236, 234, 31, 216, 198, 211, 47, 179, 42, 227, 149,
295
+ 2, 209, 230, 23, 225, 79, 169, 2, 152, 87, 171, 81, 89,
296
+ 72, 33, 1, 20, 186, 78, 15, 211, 57, 163, 94, 95, 0,
297
+ 50, 144, 241, 217, 233, 200, 71, 244, 45, 228, 246, 72, 35,
298
+ 108, 121, 238, 219, 221, 232, 93, 52, 192, 3, 31, 253, 143,
299
+ 91, 60, 134, 142, 96, 211, 140, 94, 240, 137, 36, 63, 72,
300
+ 214, 202, 209, 183, 203, 216, 241, 3, 176, 144, 249, 106, 163,
301
+ 91, 239, 31, 138, 49, 154, 141, 221, 197, 177, 204, 153, 204,
302
+ 238, 53, 115, 67, 105, 91, 64, 228, 91, 171, 6, 128, 136,
303
+ 28, 109, 210, 77, 158, 151, 40, 209, 253, 151, 1, 175, 127,
304
+ 30, 240, 105, 135, 52, 229, 171, 194, 44, 180, 216, 88, 14,
305
+ 93, 63, 221, 176, 1, 246, 138, 67, 35, 176, 11, 238, 177,
306
+ 1, 162, 254, 17, 164, 129, 67, 166, 14, 195, 249, 78, 14,
307
+ 211, 174, 18, 28, 35, 116, 190, 168, 98, 78, 21, 4, 185,
308
+ 94, 155, 248, 16, 117, 192, 223, 19, 101, 110, 48, 19, 70,
309
+ 1, 57, 53, 202, 142, 74, 127, 186, 205, 81, 73, 33, 27,
310
+ 185, 191, 196, 88, 129, 58, 144, 14, 24, 25, 228, 106, 182,
311
+ 104, 129, 81, 150, 189, 103, 31, 209, 34, 188, 209, 29, 43,
312
+ 160, 47, 168, 80, 58, 157, 159, 224, 61, 135, 208, 29, 79,
313
+ 186, 19, 162, 114, 157, 202, 15, 2, 17, 111, 192, 37, 69,
314
+ 173, 242, 222, 246, 81, 111, 15, 83, 243, 142, 8, 102, 41,
315
+ 234, 245, 99, 224, 131, 177, 166, 204, 232, 24, 106, 9, 36,
316
+ 206, 220, 180, 87, 200, 9, 185, 54, 255, 232, 82, 9, 174,
317
+ 102, 38, 219, 200, 247, 16, 192, 181, 102, 40, 163, 156, 14,
318
+ 133, 103, 16, 192, 75, 117, 4, 95, 84, 85, 248, 100, 229,
319
+ 10, 80, 62, 239, 40, 135, 139, 96, 129, 197, 183, 229, 34,
320
+ 72, 168, 10, 89, 23, 20, 3, 33, 111, 44, 170, 3, 133,
321
+ 179, 0, 35, 100, 140, 45, 215, 126, 18, 193, 131, 58, 20,
322
+ 245, 242, 158, 72, 226, 123, 148, 135, 118, 45, 104, 229, 78,
323
+ 87, 119, 44, 226, 9, 212, 138, 226, 226, 176, 219, 59, 23,
324
+ 61, 254, 212, 154, 169, 193, 59, 184, 131, 243, 7, 198, 46,
325
+ 238, 205, 26, 230, 83, 79, 251, 149, 113, 229, 192, 244, 102,
326
+ 114, 218, 113, 221, 166, 201, 234, 45, 150, 142, 38, 219, 182,
327
+ 135, 114, 213, 14, 202, 239, 98, 58, 218, 10, 124, 89, 139,
328
+ 205, 121, 123, 244, 105, 91, 50, 224, 204, 231, 203, 68, 189,
329
+ 156, 83, 8, 228, 35, 166, 108, 12, 247, 215, 82, 24, 74,
330
+ 76, 111, 56, 161, 1, 25, 255, 94, 169, 61, 220, 38, 110,
331
+ 231, 51, 15, 1, 196, 19, 139, 160, 79, 167, 27, 193, 239,
332
+ 143, 251, 134, 72, 118, 130, 149, 227, 37, 83, 82, 18, 135,
333
+ 195, 44, 72, 54, 39, 42, 131, 238, 213, 83, 150, 213, 83,
334
+ 153, 132, 228, 168, 153, 45, 60, 48, 217, 58, 106, 252, 220,
335
+ 36, 144, 193, 35, 119, 179, 34, 205, 213, 182, 234, 155, 156,
336
+ 50, 132, 78, 26, 51, 4, 73, 38, 65, 0, 10, 169,
337
+ },
338
+ {95, 9, 237, 111, 76, 200, 122, 175, 49, 158, 249,
339
+ 111, 215, 153, 16, 190, 92, 170, 217, 62, 217, 132,
340
+ 38, 159, 146, 194, 161, 223, 84, 62, 173, 146},
341
+ {{
342
+ 825u, 27u, 245u, 971u, 544u, 968u, 222u, 293u, 869u, 379u,
343
+ 934u, 1010u, 1017u, 395u, 586u, 763u, 1007u, 567u, 25u, 989u,
344
+ 456u, 419u, 887u, 107u, 480u, 745u, 340u, 445u, 927u, 1021u,
345
+ 226u, 459u, 676u, 107u, 472u, 141u, 614u, 225u, 755u, 880u,
346
+ 157u, 872u, 600u, 716u, 697u, 454u, 892u, 309u, 769u, 962u,
347
+ 288u, 481u, 999u, 547u, 505u, 332u, 689u, 504u, 996u, 870u,
348
+ 874u, 922u, 284u, 654u, 595u, 662u, 433u, 364u, 58u, 60u,
349
+ 987u, 1001u, 913u, 199u, 324u, 559u, 673u, 715u, 1022u, 550u,
350
+ 706u, 566u, 827u, 966u, 318u, 478u, 32u, 487u, 645u, 865u,
351
+ 335u, 681u, 220u, 939u, 382u, 568u, 732u, 736u, 295u, 894u,
352
+ 485u, 894u, 702u, 39u, 983u, 565u, 393u, 685u, 201u, 332u,
353
+ 872u, 44u, 976u, 777u, 757u, 1015u, 259u, 704u, 579u, 771u,
354
+ 458u, 820u, 386u, 961u, 299u, 63u, 47u, 514u, 1001u, 756u,
355
+ 812u, 391u, 276u, 656u, 293u, 802u, 186u, 704u, 849u, 654u,
356
+ 326u, 596u, 418u, 616u, 455u, 201u, 597u, 956u, 391u, 838u,
357
+ 853u, 674u, 415u, 948u, 377u, 458u, 1003u, 252u, 817u, 154u,
358
+ 885u, 605u, 419u, 360u, 491u, 105u, 101u, 527u, 291u, 128u,
359
+ 82u, 669u, 494u, 928u, 1u, 844u, 742u, 103u, 170u, 304u,
360
+ 993u, 488u, 858u, 677u, 390u, 643u, 381u, 361u, 33u, 16u,
361
+ 996u, 685u, 639u, 78u, 116u, 674u, 756u, 520u, 151u, 580u,
362
+ 842u, 918u, 728u, 222u, 803u, 112u, 354u, 227u, 572u, 988u,
363
+ 369u, 696u, 499u, 491u, 15u, 300u, 701u, 875u, 964u, 58u,
364
+ 6u, 577u, 304u, 211u, 346u, 90u, 289u, 922u, 783u, 994u,
365
+ 258u, 198u, 132u, 574u, 647u, 881u, 279u, 894u, 361u, 35u,
366
+ 650u, 933u, 906u, 592u, 228u, 1001u, 196u, 926u, 494u, 306u,
367
+ 196u, 31u, 34u, 127u, 591u, 792u,
368
+ },
369
+ {
370
+ 270u, 903u, 349u, 614u, 1016u, 1019u, 239u, 85u, 983u,
371
+ 596u, 87u, 917u, 540u, 622u, 819u, 356u, 35u, 22u,
372
+ 244u, 587u, 974u, 652u, 350u, 230u, 48u, 497u, 223u,
373
+ 845u, 522u, 770u, 105u, 135u, 954u, 884u, 48u, 83u,
374
+ 941u, 388u, 299u, 817u, 758u, 798u, 611u, 273u, 120u,
375
+ 868u, 64u, 864u, 756u, 392u, 300u, 910u, 826u, 401u,
376
+ 788u, 872u, 986u, 456u, 608u, 25u, 386u, 787u, 256u,
377
+ 188u, 338u, 452u, 720u, 154u, 374u, 889u, 213u, 245u,
378
+ 368u, 15u, 255u, 343u, 732u, 999u, 1009u, 179u, 826u,
379
+ 932u, 349u, 1u, 1007u, 1005u, 453u, 205u, 435u, 1001u,
380
+ 418u, 322u, 502u, 239u, 532u, 658u, 601u, 96u, 397u,
381
+ 685u, 1017u, 260u, 842u, 211u, 501u, 620u, 837u, 1010u,
382
+ 734u, 477u, 973u, 153u, 661u, 898u, 552u, 470u, 573u,
383
+ 806u, 244u, 1023u, 424u, 313u, 921u, 415u, 870u, 676u,
384
+ 197u, 631u, 647u, 396u, 514u, 351u, 539u, 667u, 396u,
385
+ 470u, 794u, 527u, 56u, 51u, 58u, 176u, 751u, 583u,
386
+ 835u, 368u, 263u, 993u, 989u, 753u, 275u, 725u, 581u,
387
+ 37u, 933u, 772u, 1008u, 709u, 579u, 261u, 346u, 743u,
388
+ 532u, 181u, 863u, 248u, 750u, 13u, 77u, 750u, 464u,
389
+ 267u, 934u, 83u, 956u, 532u, 181u, 399u, 578u, 272u,
390
+ 864u, 896u, 875u, 565u, 250u, 85u, 303u, 896u, 211u,
391
+ 564u, 102u, 872u, 591u, 369u, 60u, 377u, 117u, 219u,
392
+ 742u, 565u, 500u, 806u, 103u, 722u, 226u, 203u, 372u,
393
+ 891u, 316u, 857u, 639u, 450u, 99u, 741u, 797u, 963u,
394
+ 319u, 461u, 462u, 72u, 274u, 706u, 910u, 131u, 326u,
395
+ 831u, 584u, 818u, 269u, 147u, 1009u, 323u, 727u, 771u,
396
+ 407u, 669u, 869u, 243u, 147u, 952u, 717u, 394u, 889u,
397
+ 274u, 40u, 1020u, 644u, 655u, 503u, 237u, 56u, 392u,
398
+ 549u, 667u, 356u, 982u,
399
+ },
400
+ {
401
+ 964u, 533u, 570u, 528u, 616u, 114u, 620u, 189u, 68u, 546u,
402
+ 296u, 219u, 218u, 694u, 32u, 64u, 350u, 209u, 762u, 230u,
403
+ 572u, 917u, 17u, 304u, 270u, 178u, 401u, 634u, 739u, 201u,
404
+ 652u, 117u, 568u, 386u, 118u, 29u, 709u, 980u, 424u, 43u,
405
+ 797u, 657u, 630u, 71u, 590u, 338u, 63u, 318u, 329u, 984u,
406
+ 92u, 961u, 398u, 728u, 280u, 124u, 169u, 201u, 460u, 439u,
407
+ 924u, 424u, 665u, 479u, 713u, 153u, 162u, 945u, 1002u, 519u,
408
+ 109u, 847u, 815u, 684u, 562u, 599u, 258u, 436u, 382u, 900u,
409
+ 335u, 170u, 384u, 350u, 427u, 596u, 133u, 133u, 1u, 645u,
410
+ 235u, 61u, 467u, 206u, 490u, 381u, 512u, 12u, 793u, 871u,
411
+ 233u, 498u, 836u, 183u, 740u, 573u, 564u, 432u, 633u, 763u,
412
+ 477u, 931u, 93u, 13u, 60u, 124u, 1021u, 739u, 965u, 536u,
413
+ 142u, 216u, 205u, 378u, 496u, 290u, 1010u, 288u, 726u, 114u,
414
+ 893u, 814u, 472u, 252u, 768u, 578u, 761u, 218u, 442u, 957u,
415
+ 543u, 98u, 419u, 566u, 477u, 113u, 203u, 615u, 716u, 379u,
416
+ 819u, 269u, 873u, 22u, 580u, 367u, 683u, 1u, 136u, 114u,
417
+ 621u, 884u, 484u, 606u, 296u, 884u, 383u, 6u, 943u, 927u,
418
+ 769u, 423u, 135u, 333u, 702u, 778u, 44u, 557u, 397u, 57u,
419
+ 861u, 847u, 781u, 6u, 758u, 226u, 564u, 704u, 523u, 123u,
420
+ 27u, 648u, 510u, 260u, 26u, 270u, 678u, 195u, 924u, 315u,
421
+ 782u, 948u, 298u, 112u, 35u, 925u, 651u, 394u, 334u, 261u,
422
+ 912u, 378u, 155u, 62u, 849u, 769u, 991u, 324u, 742u, 193u,
423
+ 531u, 81u, 912u, 212u, 714u, 675u, 1012u, 745u, 461u, 596u,
424
+ 532u, 108u, 953u, 303u, 396u, 517u, 58u, 932u, 384u, 100u,
425
+ 740u, 410u, 651u, 517u, 593u, 869u, 635u, 125u, 721u, 776u,
426
+ 283u, 119u, 43u, 1000u, 642u, 322u,
427
+ },
428
+ {
429
+ 314u, 999u, 521u, 247u, 135u, 884u, 241u, 745u, 531u, 168u,
430
+ 471u, 810u, 527u, 64u, 753u, 769u, 293u, 849u, 810u, 891u,
431
+ 502u, 980u, 246u, 332u, 755u, 547u, 608u, 165u, 490u, 253u,
432
+ 518u, 527u, 689u, 809u, 652u, 99u, 362u, 258u, 226u, 883u,
433
+ 948u, 533u, 156u, 740u, 822u, 575u, 302u, 37u, 686u, 409u,
434
+ 434u, 803u, 247u, 4u, 860u, 410u, 808u, 808u, 233u, 532u,
435
+ 103u, 4u, 188u, 469u, 772u, 279u, 341u, 993u, 356u, 697u,
436
+ 256u, 249u, 239u, 458u, 184u, 386u, 385u, 497u, 603u, 139u,
437
+ 72u, 682u, 400u, 93u, 788u, 64u, 754u, 177u, 938u, 320u,
438
+ 824u, 2u, 35u, 793u, 728u, 860u, 638u, 68u, 60u, 234u,
439
+ 276u, 189u, 495u, 290u, 994u, 286u, 121u, 474u, 45u, 346u,
440
+ 238u, 349u, 119u, 139u, 158u, 848u, 650u, 184u, 782u, 878u,
441
+ 827u, 837u, 995u, 851u, 410u, 106u, 956u, 736u, 899u, 508u,
442
+ 96u, 187u, 494u, 691u, 609u, 335u, 847u, 382u, 793u, 917u,
443
+ 192u, 445u, 806u, 873u, 369u, 439u, 154u, 939u, 557u, 933u,
444
+ 616u, 876u, 950u, 161u, 343u, 59u, 970u, 187u, 934u, 872u,
445
+ 10u, 607u, 181u, 822u, 889u, 286u, 671u, 365u, 50u, 824u,
446
+ 636u, 815u, 324u, 815u, 313u, 33u, 996u, 392u, 714u, 49u,
447
+ 1015u, 181u, 389u, 296u, 844u, 539u, 531u, 6u, 793u, 959u,
448
+ 661u, 246u, 732u, 905u, 630u, 207u, 271u, 256u, 316u, 556u,
449
+ 928u, 467u, 442u, 772u, 1007u, 739u, 111u, 290u, 630u, 352u,
450
+ 569u, 151u, 595u, 148u, 113u, 782u, 44u, 402u, 627u, 168u,
451
+ 643u, 379u, 317u, 601u, 981u, 596u, 73u, 914u, 424u, 870u,
452
+ 962u, 192u, 729u, 654u, 966u, 883u, 36u, 100u, 572u, 476u,
453
+ 691u, 840u, 348u, 731u, 1002u, 806u, 809u, 528u, 590u, 198u,
454
+ 67u, 292u, 294u, 16u, 160u, 676u,
455
+ }},
456
+ {232, 241, 202, 6, 101, 29, 49, 94, 139, 252, 197, 187, 175,
457
+ 98, 59, 67, 25, 5, 8, 0, 134, 179, 141, 248, 32, 43,
458
+ 150, 78, 176, 134, 114, 152, 98, 96, 106, 115, 23, 191, 44,
459
+ 21, 123, 189, 196, 229, 116, 140, 150, 63, 12, 60, 134, 181,
460
+ 117, 214, 192, 135, 107, 239, 56, 225, 177, 216, 101, 6},
461
+ },
462
+ {
463
+ {
464
+ 179, 139, 148, 237, 225, 128, 223, 218, 112, 60, 78, 222, 134,
465
+ 164, 36, 75, 59, 36, 247, 68, 138, 250, 191, 7, 169, 229,
466
+ 170, 244, 128, 49, 79, 3, 167, 25, 38, 92, 122, 139, 213,
467
+ 46, 221, 135, 113, 25, 181, 34, 28, 132, 179, 143, 21, 63,
468
+ 255, 85, 30, 189, 57, 140, 88, 211, 76, 241, 208, 85, 98,
469
+ 12, 126, 196, 185, 102, 3, 32, 89, 217, 74, 179, 226, 149,
470
+ 88, 211, 45, 244, 1, 148, 94, 22, 211, 122, 74, 0, 205,
471
+ 178, 101, 239, 52, 246, 76, 48, 127, 183, 14, 145, 61, 238,
472
+ 206, 73, 202, 154, 46, 180, 37, 189, 199, 45, 86, 206, 100,
473
+ 51, 36, 130, 165, 96, 221, 228, 97, 188, 172, 40, 45, 100,
474
+ 195, 91, 30, 221, 18, 147, 44, 255, 48, 20, 237, 201, 73,
475
+ 71, 114, 139, 159, 17, 17, 60, 89, 36, 224, 190, 96, 24,
476
+ 49, 201, 32, 120, 92, 132, 237, 40, 21, 60, 72, 236, 129,
477
+ 203, 142, 14, 40, 145, 94, 169, 143, 16, 90, 176, 19, 14,
478
+ 3, 25, 43, 182, 143, 63, 227, 132, 203, 86, 76, 196, 82,
479
+ 35, 173, 205, 237, 165, 38, 30, 101, 51, 173, 117, 73, 30,
480
+ 158, 144, 220, 39, 82, 74, 174, 42, 54, 122, 176, 192, 34,
481
+ 21, 156, 2, 157, 113, 112, 64, 59, 139, 152, 104, 180, 64,
482
+ 111, 5, 72, 50, 119, 254, 67, 212, 188, 112, 201, 88, 154,
483
+ 179, 224, 85, 44, 53, 122, 93, 160, 216, 43, 34, 145, 21,
484
+ 135, 127, 146, 19, 157, 101, 30, 166, 74, 186, 6, 117, 45,
485
+ 79, 234, 234, 128, 189, 124, 11, 32, 75, 163, 95, 1, 3,
486
+ 216, 69, 23, 13, 69, 136, 99, 250, 27, 173, 125, 56, 52,
487
+ 84, 77, 197, 29, 98, 99, 59, 76, 113, 92, 253, 199, 126,
488
+ 140, 222, 96, 129, 211, 202, 133, 9, 220, 217, 185, 120, 107,
489
+ 93, 176, 175, 225, 29, 75, 125, 239, 246, 54, 115, 221, 137,
490
+ 213, 49, 111, 131, 246, 3, 233, 38, 220, 9, 233, 205, 116,
491
+ 245, 175, 186, 73, 186, 200, 40, 205, 152, 25, 57, 97, 173,
492
+ 201, 136, 188, 237, 130, 148, 75, 26, 253, 229, 94, 244, 137,
493
+ 245, 114, 7, 85, 28, 190, 93, 221, 199, 43, 18, 57, 248,
494
+ 54, 183, 138, 192, 51, 199, 213, 13, 195, 210, 30, 196, 13,
495
+ 162, 181, 104, 39, 36, 237, 221, 239, 94, 73, 225, 119, 112,
496
+ 20, 15, 13, 69, 183, 82, 254, 227, 146, 55, 33, 228, 28,
497
+ 156, 56, 73, 61, 80, 135, 250, 213, 121, 99, 74, 45, 143,
498
+ 18, 134, 254, 199, 173, 192, 81, 55, 150, 128, 32, 60, 212,
499
+ 85, 10, 246, 247, 101, 2, 253, 10, 110, 14, 44, 166, 120,
500
+ 141, 164, 26, 122, 177, 240, 60, 4, 104, 187, 161, 179, 128,
501
+ 46, 17, 94, 57, 191, 16, 190, 76, 87, 243, 210, 166, 64,
502
+ 81, 104, 250, 34, 22, 235, 188, 32, 7, 144, 235, 134, 44,
503
+ 116, 197, 102, 224, 127, 161, 92, 145, 106, 16, 201, 49, 232,
504
+ 104, 117, 244, 191, 211, 80, 234, 73, 207, 180, 102, 129, 146,
505
+ 161, 174, 165, 251, 31, 48, 176, 18, 63, 101, 62, 141, 177,
506
+ 107, 32, 14, 187, 4, 40, 219, 94, 241, 26, 95, 122, 68,
507
+ 249, 165, 254, 162, 80, 114, 28, 160, 7, 99, 129, 8, 57,
508
+ 125, 199, 186, 206, 208, 82, 167, 31, 172, 232, 74, 96, 154,
509
+ 58, 255, 88, 230, 85, 47, 26, 242, 61, 21, 173, 137, 186,
510
+ 194, 98, 180, 58, 115, 51, 152, 208, 126, 239, 88, 1, 83,
511
+ 248, 179, 106, 43, 79, 138, 196, 176, 143, 208, 97, 195, 246,
512
+ 164, 169, 62, 251, 34, 110, 172, 215, 114, 69, 72, 230, 69,
513
+ 151, 46, 162, 75, 45, 18, 232, 231, 147, 108, 248, 127, 132,
514
+ 237, 180, 217, 29, 162, 32, 122, 243, 47, 182, 87, 192, 22,
515
+ 137, 228, 82, 39, 134, 117, 70, 245, 51, 15, 150, 218, 2,
516
+ 92, 12, 21, 72, 102, 116, 233, 15, 116, 48, 206, 111, 13,
517
+ 93, 124, 123, 169, 53, 201, 72, 255, 90, 113, 132, 226, 38,
518
+ 74, 212, 83, 130, 178, 84, 196, 16, 215, 81, 40, 18, 16,
519
+ 25, 85, 198, 180, 226, 200, 185, 0, 3, 33, 229, 195, 158,
520
+ 159, 253, 89, 218, 252, 43, 216, 136, 143, 65, 242, 30, 235,
521
+ 187, 0, 7, 226, 196, 13, 65, 60, 129, 121, 137, 130, 0,
522
+ 177, 156, 126, 76, 227, 93, 133, 193, 37, 68, 234, 2, 198,
523
+ 65, 195, 218, 216, 188, 254, 11, 7, 137, 172, 222, 44, 93,
524
+ 128, 8, 37, 107, 233, 108, 195, 182, 152, 253, 74, 59, 78,
525
+ 155, 117, 94, 109, 6, 193, 214, 213, 184, 167, 116, 178, 128,
526
+ 16, 111, 143, 225, 34, 99, 56, 74, 18, 146, 103, 246, 122,
527
+ 97, 184, 164, 234, 76, 59, 214, 169, 214, 67, 245, 178, 190,
528
+ 19, 56, 85, 121, 54, 110, 20, 218, 49, 205, 40, 250, 5,
529
+ 26, 11, 108, 129, 72, 189, 54, 133, 95, 150, 120, 106, 206,
530
+ 251, 143, 42, 231, 36, 209, 212, 54, 117, 116, 59, 61, 240,
531
+ 129, 44, 239, 78, 189, 43, 60, 142, 48, 191, 43, 23, 156,
532
+ 41, 155, 211, 162, 248, 52, 130, 122, 216, 236, 119, 218, 47,
533
+ 62, 117, 18, 16, 86, 145, 76, 223, 104, 227, 87, 77, 45,
534
+ 22, 198, 105, 193, 47, 3, 63, 42, 180, 106, 74, 1, 209,
535
+ 122, 144, 213, 77, 52, 105, 220, 156, 2, 134, 41, 46, 127,
536
+ 122, 150, 86, 64, 174, 46, 117, 136, 19, 231, 202, 166, 187,
537
+ 96, 37, 32, 170, 225, 213, 115, 56, 135, 130, 42, 206, 176,
538
+ 198, 229, 157, 197, 107, 228, 73, 203, 25, 154, 204, 247, 159,
539
+ 112, 78, 110, 36, 130, 133, 61, 216, 195, 205, 247, 184, 55,
540
+ 31, 75, 117, 247, 158, 19, 232, 79, 186, 228, 244, 35, 2,
541
+ 205, 22, 103, 177, 102, 198, 134, 6, 197, 25, 156, 56, 48,
542
+ 135, 183, 177, 66, 241, 248, 30, 201, 104, 52, 17, 115, 169,
543
+ 115, 82, 25, 255, 162, 241, 85, 168, 170, 222, 74, 130, 200,
544
+ 84, 15, 76, 144, 233, 191, 252, 146, 139, 172, 168, 102, 126,
545
+ 77, 109, 74, 23, 9, 89, 132, 232, 108, 29, 143, 190, 49,
546
+ 20, 82, 10, 123, 196, 69, 144, 201, 186, 210, 53, 247, 77,
547
+ 248, 161, 136, 147, 149, 177, 234, 235, 121, 131, 76, 244, 169,
548
+ 249, 226, 187, 160, 149, 50, 108, 85, 215, 45, 62, 210, 43,
549
+ 91, 26, 99, 200, 13, 155, 2, 14, 184, 13, 189, 102, 94,
550
+ 211, 234, 90, 134, 111, 182, 106, 19, 68, 250, 54, 236, 1,
551
+ 137, 20, 88, 69, 130, 191, 146, 8, 195, 193, 116, 185, 133,
552
+ 201, 79, 229, 57, 41, 65, 53, 233, 164, 0, 10, 50, 54,
553
+ 199, 253, 26, 177, 160, 136, 15, 35, 0, 76, 166, 47, 83,
554
+ 142, 127, 76, 99, 153, 66, 136, 212, 30, 254, 40, 57, 247,
555
+ 199, 238, 110, 33, 215, 156, 189, 236, 199, 117, 218, 106, 58,
556
+ 55, 41, 239, 245, 252, 78, 52, 0, 91, 17, 32, 246, 253,
557
+ 190, 65, 60, 243, 106, 88, 98, 197, 178, 204, 207, 5, 226,
558
+ 141, 248, 240, 240, 186, 237, 173, 170, 1, 66, 248, 121, 94,
559
+ 209, 5, 213, 18, 111, 133, 69, 162, 98, 165, 245, 60, 121,
560
+ 67, 66, 203, 174, 50, 192, 3, 29, 164, 0, 31, 121, 72,
561
+ 119, 186, 162, 116, 4, 199, 205, 161, 105, 121, 182, 144, 199,
562
+ 132, 11, 203, 71, 251, 98, 0, 218, 48, 40, 230, 7, 230,
563
+ 77, 77, 111, 98, 157, 209, 99, 57, 205, 251, 234, 55, 22,
564
+ 224, 227, 195, 247, 179, 236, 46, 123, 180, 7, 245, 11,
565
+ },
566
+ {179, 139, 148, 237, 225, 128, 223, 218, 112, 60, 78,
567
+ 222, 134, 164, 36, 75, 59, 36, 247, 68, 138, 250,
568
+ 191, 7, 169, 229, 170, 244, 128, 49, 79, 3},
569
+ {{
570
+ 423u, 390u, 450u, 489u, 395u, 949u, 466u, 543u, 369u, 326u,
571
+ 555u, 112u, 900u, 1004u, 344u, 252u, 511u, 917u, 977u, 230u,
572
+ 140u, 214u, 205u, 965u, 464u, 149u, 198u, 504u, 452u, 430u,
573
+ 54u, 128u, 345u, 694u, 820u, 906u, 149u, 214u, 733u, 976u,
574
+ 1u, 933u, 357u, 844u, 634u, 18u, 208u, 715u, 869u, 315u,
575
+ 867u, 307u, 816u, 479u, 235u, 580u, 573u, 955u, 156u, 809u,
576
+ 666u, 267u, 603u, 756u, 455u, 395u, 229u, 403u, 51u, 137u,
577
+ 600u, 386u, 221u, 121u, 966u, 690u, 296u, 267u, 54u, 367u,
578
+ 286u, 183u, 305u, 178u, 255u, 268u, 721u, 807u, 841u, 145u,
579
+ 183u, 638u, 273u, 772u, 403u, 145u, 736u, 47u, 390u, 196u,
580
+ 201u, 520u, 455u, 529u, 237u, 330u, 961u, 288u, 492u, 736u,
581
+ 236u, 58u, 296u, 932u, 661u, 574u, 528u, 22u, 315u, 56u,
582
+ 259u, 710u, 866u, 574u, 831u, 312u, 184u, 347u, 76u, 177u,
583
+ 565u, 692u, 461u, 379u, 618u, 120u, 869u, 844u, 858u, 293u,
584
+ 542u, 39u, 457u, 159u, 594u, 914u, 682u, 216u, 122u, 44u,
585
+ 556u, 84u, 668u, 832u, 793u, 449u, 832u, 718u, 392u, 418u,
586
+ 180u, 976u, 86u, 288u, 818u, 925u, 63u, 849u, 188u, 604u,
587
+ 396u, 617u, 179u, 376u, 709u, 212u, 378u, 23u, 394u, 175u,
588
+ 290u, 356u, 113u, 510u, 914u, 836u, 601u, 121u, 678u, 658u,
589
+ 107u, 468u, 813u, 659u, 686u, 515u, 189u, 735u, 512u, 300u,
590
+ 931u, 87u, 48u, 864u, 837u, 837u, 80u, 545u, 611u, 766u,
591
+ 721u, 502u, 56u, 269u, 213u, 789u, 541u, 216u, 950u, 304u,
592
+ 113u, 855u, 127u, 507u, 652u, 55u, 22u, 846u, 458u, 609u,
593
+ 448u, 871u, 185u, 734u, 470u, 705u, 431u, 888u, 177u, 501u,
594
+ 751u, 445u, 819u, 885u, 393u, 117u, 755u, 525u, 1014u, 576u,
595
+ 622u, 880u, 265u, 890u, 844u, 981u,
596
+ },
597
+ {
598
+ 687u, 622u, 932u, 802u, 296u, 563u, 409u, 228u, 353u, 619u,
599
+ 140u, 754u, 749u, 288u, 185u, 105u, 509u, 953u, 837u, 551u,
600
+ 757u, 476u, 336u, 113u, 446u, 855u, 125u, 175u, 274u, 526u,
601
+ 879u, 732u, 138u, 240u, 115u, 855u, 781u, 176u, 493u, 784u,
602
+ 525u, 360u, 651u, 157u, 292u, 891u, 765u, 379u, 329u, 504u,
603
+ 775u, 81u, 271u, 323u, 884u, 330u, 1022u, 184u, 889u, 132u,
604
+ 228u, 775u, 905u, 292u, 61u, 468u, 936u, 855u, 889u, 664u,
605
+ 724u, 572u, 530u, 929u, 127u, 695u, 448u, 468u, 355u, 514u,
606
+ 32u, 271u, 349u, 41u, 1014u, 381u, 38u, 1012u, 522u, 923u,
607
+ 704u, 664u, 376u, 291u, 426u, 488u, 177u, 828u, 67u, 416u,
608
+ 443u, 232u, 11u, 186u, 529u, 599u, 1011u, 66u, 190u, 467u,
609
+ 821u, 843u, 166u, 80u, 645u, 1001u, 546u, 709u, 974u, 130u,
610
+ 7u, 740u, 110u, 178u, 372u, 433u, 518u, 511u, 161u, 87u,
611
+ 681u, 65u, 457u, 524u, 654u, 469u, 1012u, 239u, 269u, 937u,
612
+ 841u, 307u, 619u, 517u, 402u, 936u, 602u, 1006u, 31u, 12u,
613
+ 299u, 252u, 613u, 847u, 792u, 430u, 544u, 707u, 75u, 160u,
614
+ 731u, 87u, 431u, 380u, 122u, 593u, 607u, 1018u, 162u, 148u,
615
+ 455u, 640u, 775u, 88u, 136u, 228u, 893u, 689u, 235u, 835u,
616
+ 850u, 1001u, 705u, 930u, 74u, 664u, 937u, 1020u, 600u, 377u,
617
+ 757u, 104u, 498u, 335u, 721u, 550u, 698u, 176u, 838u, 234u,
618
+ 883u, 524u, 265u, 507u, 239u, 86u, 304u, 993u, 691u, 730u,
619
+ 242u, 553u, 196u, 1004u, 264u, 391u, 707u, 317u, 666u, 250u,
620
+ 763u, 904u, 710u, 862u, 370u, 529u, 612u, 279u, 663u, 139u,
621
+ 186u, 181u, 18u, 506u, 318u, 434u, 1016u, 287u, 728u, 723u,
622
+ 473u, 135u, 522u, 488u, 1011u, 395u, 379u, 769u, 278u, 290u,
623
+ 302u, 157u, 390u, 413u, 852u, 207u,
624
+ },
625
+ {
626
+ 527u, 677u, 45u, 368u, 268u, 517u, 612u, 465u, 1001u, 259u,
627
+ 775u, 824u, 367u, 835u, 965u, 493u, 425u, 589u, 140u, 1021u,
628
+ 346u, 284u, 552u, 155u, 74u, 245u, 37u, 714u, 84u, 49u,
629
+ 369u, 327u, 552u, 4u, 401u, 340u, 198u, 173u, 142u, 743u,
630
+ 768u, 64u, 594u, 783u, 926u, 871u, 415u, 873u, 1020u, 522u,
631
+ 141u, 574u, 577u, 956u, 689u, 751u, 768u, 129u, 78u, 55u,
632
+ 65u, 79u, 920u, 549u, 130u, 64u, 459u, 506u, 844u, 888u,
633
+ 85u, 774u, 37u, 657u, 46u, 792u, 833u, 688u, 397u, 755u,
634
+ 1022u, 450u, 144u, 690u, 222u, 843u, 5u, 34u, 805u, 602u,
635
+ 718u, 781u, 182u, 870u, 175u, 237u, 846u, 358u, 487u, 437u,
636
+ 262u, 432u, 349u, 739u, 167u, 157u, 11u, 66u, 879u, 99u,
637
+ 558u, 396u, 568u, 146u, 289u, 414u, 758u, 94u, 902u, 658u,
638
+ 234u, 723u, 355u, 679u, 982u, 336u, 815u, 762u, 19u, 334u,
639
+ 917u, 217u, 110u, 645u, 797u, 820u, 552u, 382u, 416u, 44u,
640
+ 364u, 544u, 980u, 218u, 901u, 407u, 905u, 425u, 974u, 1022u,
641
+ 680u, 924u, 292u, 308u, 877u, 468u, 884u, 846u, 771u, 519u,
642
+ 812u, 955u, 980u, 174u, 572u, 35u, 1011u, 174u, 23u, 615u,
643
+ 434u, 846u, 162u, 318u, 35u, 490u, 216u, 507u, 423u, 191u,
644
+ 318u, 157u, 257u, 344u, 145u, 979u, 653u, 909u, 343u, 851u,
645
+ 354u, 792u, 361u, 1008u, 50u, 252u, 42u, 685u, 166u, 5u,
646
+ 721u, 30u, 345u, 311u, 308u, 794u, 461u, 10u, 390u, 906u,
647
+ 1010u, 489u, 662u, 21u, 740u, 186u, 117u, 226u, 625u, 811u,
648
+ 934u, 46u, 598u, 128u, 426u, 376u, 829u, 225u, 647u, 672u,
649
+ 226u, 707u, 454u, 889u, 89u, 431u, 484u, 722u, 412u, 616u,
650
+ 972u, 1021u, 777u, 313u, 110u, 137u, 88u, 246u, 984u, 880u,
651
+ 892u, 739u, 823u, 711u, 852u, 989u,
652
+ },
653
+ {
654
+ 926u, 516u, 254u, 745u, 228u, 253u, 34u, 820u, 790u, 89u,
655
+ 619u, 793u, 646u, 321u, 412u, 624u, 56u, 460u, 888u, 710u,
656
+ 322u, 572u, 495u, 804u, 104u, 77u, 817u, 677u, 627u, 596u,
657
+ 1009u, 651u, 497u, 533u, 682u, 890u, 586u, 544u, 332u, 61u,
658
+ 76u, 612u, 1022u, 1010u, 914u, 802u, 650u, 410u, 382u, 851u,
659
+ 166u, 93u, 265u, 278u, 648u, 435u, 797u, 931u, 795u, 80u,
660
+ 594u, 706u, 71u, 279u, 400u, 690u, 299u, 215u, 503u, 531u,
661
+ 543u, 546u, 403u, 101u, 683u, 943u, 889u, 800u, 836u, 679u,
662
+ 761u, 760u, 523u, 598u, 50u, 347u, 373u, 183u, 574u, 756u,
663
+ 434u, 105u, 99u, 882u, 432u, 10u, 14u, 878u, 976u, 410u,
664
+ 862u, 692u, 430u, 537u, 623u, 685u, 310u, 272u, 762u, 781u,
665
+ 30u, 548u, 20u, 342u, 36u, 766u, 146u, 194u, 28u, 467u,
666
+ 441u, 609u, 252u, 917u, 313u, 74u, 852u, 932u, 164u, 640u,
667
+ 800u, 216u, 455u, 703u, 785u, 642u, 904u, 195u, 2u, 304u,
668
+ 934u, 203u, 229u, 510u, 844u, 600u, 41u, 545u, 724u, 903u,
669
+ 655u, 228u, 1015u, 945u, 750u, 133u, 215u, 871u, 715u, 799u,
670
+ 629u, 694u, 934u, 220u, 809u, 379u, 975u, 315u, 52u, 704u,
671
+ 277u, 128u, 502u, 959u, 27u, 241u, 755u, 538u, 549u, 789u,
672
+ 178u, 1011u, 92u, 904u, 141u, 62u, 783u, 747u, 493u, 683u,
673
+ 26u, 264u, 504u, 926u, 277u, 23u, 725u, 964u, 86u, 278u,
674
+ 674u, 344u, 858u, 243u, 889u, 144u, 180u, 699u, 50u, 240u,
675
+ 464u, 656u, 768u, 583u, 135u, 477u, 698u, 296u, 71u, 796u,
676
+ 461u, 616u, 918u, 729u, 912u, 305u, 184u, 812u, 839u, 190u,
677
+ 6u, 872u, 48u, 394u, 126u, 920u, 333u, 979u, 550u, 629u,
678
+ 977u, 600u, 211u, 1007u, 1002u, 397u, 513u, 911u, 963u, 253u,
679
+ 715u, 187u, 123u, 493u, 848u, 47u,
680
+ }},
681
+ {40, 53, 119, 68, 126, 64, 23, 159, 26, 113, 118, 112, 206,
682
+ 179, 85, 122, 40, 84, 123, 194, 48, 133, 8, 129, 9, 115,
683
+ 126, 248, 125, 185, 197, 80, 213, 149, 159, 97, 87, 53, 116,
684
+ 163, 0, 28, 153, 32, 228, 158, 92, 91, 159, 88, 80, 220,
685
+ 177, 190, 58, 105, 10, 182, 247, 39, 34, 100, 88, 15},
686
+ },
687
+
688
+ };
689
+ }