diff --git a/ecc/javascript/bech32_ecc.js b/ecc/javascript/bech32_ecc.js index 5e2d110..e8e0dae 100644 --- a/ecc/javascript/bech32_ecc.js +++ b/ecc/javascript/bech32_ecc.js @@ -2,149 +2,149 @@ var CHARSET = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l'; var GENERATOR = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3]; var GF1024_EXP = [ - 1, 303, 635, 446, 997, 640, 121, 142, 959, 420, 350, 438, 166, 39, 543, - 335, 831, 691, 117, 632, 719, 97, 107, 374, 558, 797, 54, 150, 858, 877, - 724, 1013, 294, 23, 354, 61, 164, 633, 992, 538, 469, 659, 174, 868, 184, - 809, 766, 563, 866, 851, 257, 520, 45, 770, 535, 524, 408, 213, 436, 760, - 472, 330, 933, 799, 616, 361, 15, 391, 756, 814, 58, 608, 554, 680, 993, - 821, 942, 813, 843, 484, 193, 935, 321, 919, 572, 741, 423, 559, 562, - 589, 296, 191, 493, 685, 891, 665, 435, 60, 395, 2, 606, 511, 853, 746, - 32, 219, 284, 631, 840, 661, 837, 332, 78, 311, 670, 887, 111, 195, 505, - 190, 194, 214, 709, 380, 819, 69, 261, 957, 1018, 161, 739, 588, 7, 708, - 83, 328, 507, 736, 317, 899, 47, 348, 1000, 345, 882, 245, 367, 996, 943, - 514, 304, 90, 804, 295, 312, 793, 387, 833, 249, 921, 660, 618, 823, 496, - 722, 30, 782, 225, 892, 93, 480, 372, 112, 738, 867, 636, 890, 950, 968, - 386, 622, 642, 551, 369, 234, 846, 382, 365, 442, 592, 343, 986, 122, - 1023, 59, 847, 81, 790, 4, 437, 983, 931, 244, 64, 415, 529, 487, 944, - 35, 938, 664, 156, 583, 53, 999, 222, 390, 987, 341, 388, 389, 170, 721, - 879, 138, 522, 627, 765, 322, 230, 440, 14, 168, 143, 656, 991, 224, 595, - 550, 94, 657, 752, 667, 1005, 451, 734, 744, 638, 292, 585, 157, 872, - 590, 601, 827, 774, 930, 475, 571, 33, 500, 871, 969, 173, 21, 828, 450, - 1009, 147, 960, 705, 201, 228, 998, 497, 1021, 613, 688, 772, 508, 36, - 366, 715, 468, 956, 725, 730, 861, 425, 647, 701, 221, 759, 95, 958, 139, - 805, 8, 835, 679, 614, 449, 128, 791, 299, 974, 617, 70, 628, 57, 273, - 430, 67, 750, 405, 780, 703, 643, 776, 778, 340, 171, 1022, 276, 308, - 495, 243, 644, 460, 857, 28, 336, 286, 41, 695, 448, 431, 364, 149, 43, - 233, 63, 762, 902, 181, 240, 501, 584, 434, 275, 1008, 444, 443, 895, - 812, 612, 927, 383, 66, 961, 1006, 690, 346, 3, 881, 900, 747, 271, 672, - 162, 402, 456, 748, 971, 755, 490, 105, 808, 977, 72, 732, 182, 897, 625, - 163, 189, 947, 850, 46, 115, 403, 231, 151, 629, 278, 874, 16, 934, 110, - 492, 898, 256, 807, 598, 700, 498, 140, 481, 91, 523, 860, 134, 252, 771, - 824, 119, 38, 816, 820, 641, 342, 757, 513, 577, 990, 463, 40, 920, 955, - 17, 649, 533, 82, 103, 896, 862, 728, 259, 86, 466, 87, 253, 556, 323, - 457, 963, 432, 845, 527, 745, 849, 863, 1015, 888, 488, 567, 727, 132, - 674, 764, 109, 669, 6, 1003, 552, 246, 542, 96, 324, 781, 912, 248, 694, - 239, 980, 210, 880, 683, 144, 177, 325, 546, 491, 326, 339, 623, 941, 92, - 207, 783, 462, 263, 483, 517, 1012, 9, 620, 220, 984, 548, 512, 878, 421, - 113, 973, 280, 962, 159, 310, 945, 268, 465, 806, 889, 199, 76, 873, 865, - 34, 645, 227, 290, 418, 693, 926, 80, 569, 639, 11, 50, 291, 141, 206, - 544, 949, 185, 518, 133, 909, 135, 467, 376, 646, 914, 678, 841, 954, - 318, 242, 939, 951, 743, 1017, 976, 359, 167, 264, 100, 241, 218, 51, 12, - 758, 368, 453, 309, 192, 648, 826, 553, 473, 101, 478, 673, 397, 1001, - 118, 265, 331, 650, 356, 982, 652, 655, 510, 634, 145, 414, 830, 924, - 526, 966, 298, 737, 18, 504, 401, 697, 360, 288, 1020, 842, 203, 698, - 537, 676, 279, 581, 619, 536, 907, 876, 1019, 398, 152, 1010, 994, 68, - 42, 454, 580, 836, 99, 565, 137, 379, 503, 22, 77, 582, 282, 412, 352, - 611, 347, 300, 266, 570, 270, 911, 729, 44, 557, 108, 946, 637, 597, 461, - 630, 615, 238, 763, 681, 718, 334, 528, 200, 459, 413, 79, 24, 229, 713, - 906, 579, 384, 48, 893, 370, 923, 202, 917, 98, 794, 754, 197, 530, 662, - 52, 712, 677, 56, 62, 981, 509, 267, 789, 885, 561, 316, 684, 596, 226, - 13, 985, 779, 123, 720, 576, 753, 948, 406, 125, 315, 104, 519, 426, 502, - 313, 566, 1016, 767, 796, 281, 749, 740, 136, 84, 908, 424, 936, 198, - 355, 274, 735, 967, 5, 154, 428, 541, 785, 704, 486, 671, 600, 532, 381, - 540, 574, 187, 88, 378, 216, 621, 499, 419, 922, 485, 494, 476, 255, 114, - 188, 668, 297, 400, 918, 787, 158, 25, 458, 178, 564, 422, 768, 73, 1011, - 717, 575, 404, 547, 196, 829, 237, 394, 301, 37, 65, 176, 106, 89, 85, - 675, 979, 534, 803, 995, 363, 593, 120, 417, 452, 26, 699, 822, 223, 169, - 416, 235, 609, 773, 211, 607, 208, 302, 852, 965, 603, 357, 761, 247, - 817, 539, 250, 232, 272, 129, 568, 848, 624, 396, 710, 525, 183, 686, 10, - 285, 856, 307, 811, 160, 972, 55, 441, 289, 723, 305, 373, 351, 153, 733, - 409, 506, 975, 838, 573, 970, 988, 913, 471, 205, 337, 49, 594, 777, 549, - 815, 277, 27, 916, 333, 353, 844, 800, 146, 751, 186, 375, 769, 358, 392, - 883, 474, 788, 602, 74, 130, 329, 212, 155, 131, 102, 687, 293, 870, 742, - 726, 427, 217, 834, 904, 29, 127, 869, 407, 338, 832, 470, 482, 810, 399, - 439, 393, 604, 929, 682, 447, 714, 251, 455, 875, 319, 477, 464, 521, - 258, 377, 937, 489, 792, 172, 314, 327, 124, 20, 531, 953, 591, 886, 320, - 696, 71, 859, 578, 175, 587, 707, 663, 283, 179, 795, 989, 702, 940, 371, - 692, 689, 555, 903, 410, 651, 75, 429, 818, 362, 894, 515, 31, 545, 666, - 706, 952, 864, 269, 254, 349, 711, 802, 716, 784, 1007, 925, 801, 445, - 148, 260, 658, 385, 287, 262, 204, 126, 586, 1004, 236, 165, 854, 411, - 932, 560, 19, 215, 1002, 775, 653, 928, 901, 964, 884, 798, 839, 786, - 433, 610, 116, 855, 180, 479, 910, 1014, 599, 915, 905, 306, 516, 731, - 626, 978, 825, 344, 605, 654, 209 + 1, 32, 311, 139, 206, 553, 934, 180, 537, 145, 910, 131, 462, 373, 652, + 927, 675, 840, 938, 308, 235, 958, 948, 756, 1007, 979, 356, 172, 281, + 124, 240, 222, 41, 23, 736, 367, 460, 309, 203, 649, 831, 570, 454, 117, + 464, 693, 392, 1010, 115, 272, 348, 667, 383, 972, 644, 671, 511, 610, + 129, 398, 818, 922, 515, 977, 292, 747, 15, 480, 386, 690, 360, 300, + 1003, 851, 202, 681, 520, 689, 264, 604, 630, 513, 913, 867, 1021, 403, + 146, 1006, 1011, 83, 39, 471, 597, 854, 106, 560, 134, 366, 492, 2, 64, + 583, 278, 412, 370, 620, 321, 315, 267, 572, 262, 924, 707, 56, 567, 102, + 944, 628, 577, 470, 629, 609, 225, 766, 687, 712, 344, 539, 209, 457, + 405, 82, 7, 224, 734, 920, 579, 406, 50, 887, 381, 908, 195, 905, 99, + 784, 749, 207, 521, 657, 63, 727, 696, 40, 55, 983, 484, 258, 796, 877, + 573, 294, 683, 584, 246, 30, 960, 772, 109, 720, 600, 758, 943, 404, 114, + 304, 107, 528, 433, 485, 290, 555, 998, 755, 783, 269, 764, 751, 143, 78, + 903, 419, 933, 212, 361, 268, 732, 984, 4, 128, 430, 517, 785, 717, 504, + 642, 607, 534, 369, 524, 561, 166, 89, 359, 204, 617, 481, 418, 901, 483, + 482, 450, 245, 126, 176, 665, 319, 395, 914, 771, 141, 14, 448, 181, 569, + 422, 773, 77, 999, 723, 568, 390, 562, 198, 809, 250, 414, 306, 43, 87, + 167, 121, 80, 71, 679, 968, 516, 817, 1018, 371, 588, 118, 432, 453, 21, + 672, 808, 218, 169, 441, 229, 638, 769, 205, 585, 214, 297, 843, 970, + 580, 374, 748, 239, 830, 538, 241, 254, 286, 156, 558, 838, 618, 385, + 722, 536, 177, 697, 8, 256, 860, 298, 811, 186, 985, 36, 439, 293, 715, + 312, 363, 332, 155, 718, 408, 498, 962, 836, 554, 966, 964, 900, 451, + 213, 329, 59, 599, 790, 557, 806, 282, 28, 896, 323, 379, 844, 810, 154, + 750, 175, 377, 780, 365, 396, 882, 477, 789, 589, 86, 135, 334, 219, 137, + 142, 110, 688, 296, 875, 765, 719, 440, 197, 841, 906, 3, 96, 880, 413, + 338, 859, 458, 501, 802, 410, 434, 389, 594, 950, 692, 424, 709, 248, + 478, 885, 317, 459, 469, 533, 273, 380, 940, 500, 770, 173, 313, 331, + 123, 16, 512, 945, 596, 886, 349, 699, 72, 839, 586, 182, 601, 726, 664, + 287, 188, 793, 973, 676, 936, 372, 684, 680, 552, 902, 387, 658, 95, 423, + 805, 378, 876, 541, 17, 544, 646, 735, 952, 884, 285, 252, 350, 731, 824, + 730, 792, 1005, 915, 803, 442, 133, 270, 668, 415, 274, 284, 220, 105, + 592, 1014, 243, 190, 857, 394, 946, 564, 6, 192, 1001, 787, 653, 959, + 916, 963, 868, 797, 845, 778, 429, 613, 97, 848, 170, 473, 917, 995, 595, + 918, 899, 291, 523, 721, 632, 961, 804, 346, 603, 662, 223, 9, 288, 619, + 417, 997, 659, 127, 144, 942, 436, 325, 443, 165, 57, 535, 337, 827, 698, + 104, 624, 705, 120, 112, 368, 556, 774, 45, 151, 846, 874, 733, 1016, + 307, 11, 352, 44, 183, 633, 993, 531, 465, 661, 191, 889, 189, 825, 762, + 559, 870, 861, 266, 540, 49, 791, 525, 529, 401, 210, 425, 741, 463, 341, + 955, 788, 621, 353, 12, 384, 754, 815, 58, 631, 545, 678, 1000, 819, 954, + 820, 858, 490, 194, 937, 340, 923, 547, 742, 431, 549, 550, 582, 310, + 171, 505, 674, 872, 669, 447, 37, 407, 18, 576, 502, 834, 746, 47, 215, + 265, 636, 833, 650, 863, 330, 91, 295, 651, 895, 125, 208, 489, 162, 217, + 201, 713, 376, 812, 90, 263, 956, 1012, 179, 761, 591, 22, 704, 88, 327, + 507, 738, 303, 907, 35, 343, 1019, 339, 891, 253, 382, 1004, 947, 532, + 305, 75, 807, 314, 299, 779, 397, 850, 234, 926, 643, 639, 801, 506, 706, + 24, 768, 237, 894, 93, 487, 354, 108, 752, 879, 637, 865, 957, 980, 388, + 626, 641, 575, 358, 236, 862, 362, 364, 428, 581, 342, 987, 100, 1008, + 51, 855, 74, 775, 13, 416, 965, 932, 244, 94, 391, 530, 497, 930, 52, + 951, 660, 159, 590, 54, 1015, 211, 393, 978, 324, 411, 402, 178, 729, + 888, 157, 526, 625, 737, 335, 251, 446, 5, 160, 153, 654, 991, 228, 606, + 566, 70, 647, 767, 655, 1023, 467, 725, 760, 623, 289, 587, 150, 878, + 605, 598, 822, 794, 941, 468, 565, 38, 503, 866, 989, 164, 25, 800, 474, + 1013, 147, 974, 708, 216, 233, 1022, 499, 994, 627, 673, 776, 493, 34, + 375, 716, 472, 949, 724, 728, 856, 426, 645, 703, 200, 745, 79, 935, 148, + 814, 26, 832, 682, 616, 449, 149, 782, 301, 971, 612, 65, 615, 33, 279, + 444, 69, 743, 399, 786, 685, 648, 799, 781, 333, 187, 1017, 275, 316, + 491, 226, 670, 479, 853, 10, 320, 283, 60, 695, 456, 437, 357, 140, 46, + 247, 62, 759, 911, 163, 249, 510, 578, 438, 261, 1020, 435, 421, 869, + 829, 634, 897, 355, 76, 967, 996, 691, 328, 27, 864, 925, 739, 271, 700, + 168, 409, 466, 757, 975, 740, 495, 98, 816, 986, 68, 711, 184, 921, 611, + 161, 185, 953, 852, 42, 119, 400, 242, 158, 622, 257, 892, 29, 928, 116, + 496, 898, 259, 828, 602, 694, 488, 130, 494, 66, 519, 849, 138, 238, 798, + 813, 122, 48, 823, 826, 666, 351, 763, 527, 593, 982, 452, 53, 919, 931, + 20, 640, 543, 81, 103, 912, 835, 714, 280, 92, 455, 85, 231, 574, 326, + 475, 981, 420, 837, 522, 753, 847, 842, 1002, 883, 509, 546, 710, 152, + 686, 744, 111, 656, 31, 992, 563, 230, 542, 113, 336, 795, 909, 227, 702, + 232, 990, 196, 873, 701, 136, 174, 345, 571, 486, 322, 347, 635, 929, 84, + 199, 777, 461, 277, 508, 514, 1009, 19, 608, 193, 969, 548, 518, 881, + 445, 101, 976, 260, 988, 132, 302, 939, 276, 476, 821, 890, 221, 73, 871, + 893, 61, 663, 255, 318, 427, 677, 904, 67, 551, 614 ]; var GF1024_LOG = [ -1, 0, 99, 363, 198, 726, 462, 132, 297, 495, 825, 528, 561, 693, 231, 66, 396, 429, 594, 990, 924, 264, 627, 33, 660, 759, 792, 858, 330, 891, - 165, 957, 104, 259, 518, 208, 280, 776, 416, 13, 426, 333, 618, 339, 641, - 52, 388, 140, 666, 852, 529, 560, 678, 213, 26, 832, 681, 309, 70, 194, - 97, 35, 682, 341, 203, 777, 358, 312, 617, 125, 307, 931, 379, 765, 875, - 951, 515, 628, 112, 659, 525, 196, 432, 134, 717, 781, 438, 440, 740, - 780, 151, 408, 487, 169, 239, 293, 467, 21, 672, 622, 557, 571, 881, 433, - 704, 376, 779, 22, 643, 460, 398, 116, 172, 503, 751, 389, 1004, 18, 576, - 415, 789, 6, 192, 696, 923, 702, 981, 892, 302, 816, 876, 880, 457, 537, - 411, 539, 716, 624, 224, 295, 406, 531, 7, 233, 478, 586, 864, 268, 974, - 338, 27, 392, 614, 839, 727, 879, 211, 250, 758, 507, 830, 129, 369, 384, - 36, 985, 12, 555, 232, 796, 221, 321, 920, 263, 42, 934, 778, 479, 761, - 939, 1006, 344, 381, 823, 44, 535, 866, 739, 752, 385, 119, 91, 566, 80, - 120, 117, 771, 675, 721, 514, 656, 271, 670, 602, 980, 850, 532, 488, - 803, 1022, 475, 801, 878, 57, 121, 991, 742, 888, 559, 105, 497, 291, - 215, 795, 236, 167, 692, 520, 272, 661, 229, 391, 814, 340, 184, 798, - 984, 773, 650, 473, 345, 558, 548, 326, 202, 145, 465, 810, 471, 158, - 813, 908, 412, 441, 964, 750, 401, 50, 915, 437, 975, 126, 979, 491, 556, - 577, 636, 685, 510, 963, 638, 367, 815, 310, 723, 349, 323, 857, 394, - 606, 505, 713, 630, 938, 106, 826, 332, 978, 599, 834, 521, 530, 248, - 883, 32, 153, 90, 754, 592, 304, 635, 775, 804, 1, 150, 836, 1013, 828, - 324, 565, 508, 113, 154, 708, 921, 703, 689, 138, 547, 911, 929, 82, 228, - 443, 468, 480, 483, 922, 135, 877, 61, 578, 111, 860, 654, 15, 331, 851, - 895, 484, 320, 218, 420, 190, 1019, 143, 362, 634, 141, 965, 10, 838, - 632, 861, 34, 722, 580, 808, 869, 554, 598, 65, 954, 787, 337, 187, 281, - 146, 563, 183, 668, 944, 171, 837, 23, 867, 541, 916, 741, 625, 123, 736, - 186, 357, 665, 977, 179, 156, 219, 220, 216, 67, 870, 902, 774, 98, 820, - 574, 613, 900, 755, 596, 370, 390, 769, 314, 701, 894, 56, 841, 949, 987, - 631, 658, 587, 204, 797, 790, 522, 745, 9, 502, 763, 86, 719, 288, 706, - 887, 728, 952, 311, 336, 446, 1002, 348, 96, 58, 199, 11, 901, 230, 833, - 188, 352, 351, 973, 3, 906, 335, 301, 266, 244, 791, 564, 619, 909, 371, - 444, 760, 657, 328, 647, 490, 425, 913, 511, 439, 540, 283, 40, 897, 849, - 60, 570, 872, 257, 749, 912, 572, 1007, 170, 407, 898, 492, 79, 747, 732, - 206, 454, 918, 375, 482, 399, 92, 748, 325, 163, 274, 405, 744, 260, 346, - 707, 626, 595, 118, 842, 136, 279, 684, 584, 101, 500, 422, 149, 956, - 1014, 493, 536, 705, 51, 914, 225, 409, 55, 822, 590, 448, 655, 205, 676, - 925, 735, 431, 784, 54, 609, 604, 39, 812, 737, 729, 466, 14, 533, 958, - 481, 770, 499, 855, 238, 182, 464, 569, 72, 947, 442, 642, 24, 87, 989, - 688, 88, 47, 762, 623, 709, 455, 817, 526, 637, 258, 84, 845, 738, 768, - 698, 423, 933, 664, 620, 607, 629, 212, 347, 249, 982, 935, 131, 89, 252, - 927, 189, 788, 853, 237, 691, 646, 403, 1010, 734, 253, 874, 807, 903, - 1020, 100, 802, 71, 799, 1003, 633, 355, 276, 300, 649, 64, 306, 161, - 608, 496, 743, 180, 485, 819, 383, 1016, 226, 308, 393, 648, 107, 19, 37, - 585, 2, 175, 645, 247, 527, 5, 419, 181, 317, 327, 519, 542, 289, 567, - 430, 579, 950, 582, 994, 1021, 583, 234, 240, 976, 41, 160, 109, 677, - 937, 210, 95, 959, 242, 753, 461, 114, 733, 368, 573, 458, 782, 605, 680, - 544, 299, 73, 652, 905, 477, 690, 93, 824, 882, 277, 946, 361, 17, 945, - 523, 472, 334, 930, 597, 603, 793, 404, 290, 942, 316, 731, 270, 960, - 936, 133, 122, 821, 966, 679, 662, 907, 282, 968, 767, 653, 20, 697, 222, - 164, 835, 30, 285, 886, 456, 436, 640, 286, 1015, 380, 840, 245, 724, - 137, 593, 173, 130, 715, 85, 885, 551, 246, 449, 103, 366, 372, 714, 313, - 865, 241, 699, 674, 374, 68, 421, 562, 292, 59, 809, 342, 651, 459, 227, - 46, 711, 764, 868, 53, 413, 278, 800, 255, 993, 318, 854, 319, 695, 315, - 469, 166, 489, 969, 730, 1001, 757, 873, 686, 197, 303, 919, 155, 673, - 940, 712, 25, 999, 63, 863, 972, 967, 785, 152, 296, 512, 402, 377, 45, - 899, 829, 354, 77, 69, 856, 417, 811, 953, 124, 418, 75, 794, 162, 414, - 1018, 568, 254, 265, 772, 588, 16, 896, 157, 889, 298, 621, 110, 844, - 1000, 108, 545, 601, 78, 862, 447, 185, 195, 818, 450, 387, 49, 805, 102, - 986, 1005, 827, 329, 28, 932, 410, 287, 435, 451, 962, 517, 48, 174, 43, - 893, 884, 261, 251, 516, 395, 910, 611, 29, 501, 223, 476, 364, 144, 871, - 998, 687, 928, 115, 453, 513, 176, 94, 168, 667, 955, 353, 434, 382, 400, - 139, 365, 996, 343, 948, 890, 1012, 663, 610, 718, 538, 1008, 639, 470, - 848, 543, 1011, 859, 671, 756, 83, 427, 159, 746, 669, 589, 971, 524, - 356, 995, 904, 256, 201, 988, 62, 397, 81, 720, 917, 209, 549, 943, 486, - 76, 148, 207, 509, 644, 386, 700, 534, 177, 550, 961, 926, 546, 428, 284, - 127, 294, 8, 269, 359, 506, 445, 997, 806, 591, 725, 178, 262, 846, 373, - 831, 504, 305, 843, 553, 378, 1017, 783, 474, 683, 581, 200, 498, 694, - 191, 217, 847, 941, 424, 235, 38, 74, 616, 786, 147, 4, 273, 214, 142, - 575, 992, 463, 983, 243, 360, 970, 350, 267, 615, 766, 494, 31, 1009, - 452, 710, 552, 128, 612, 600, 275, 322, 193 + 165, 957, 1, 804, 775, 635, 304, 592, 754, 90, 153, 32, 883, 248, 530, + 521, 834, 599, 911, 547, 138, 689, 703, 921, 708, 154, 113, 508, 565, + 324, 828, 1013, 836, 150, 100, 802, 903, 1020, 874, 807, 734, 253, 403, + 1010, 691, 646, 853, 237, 189, 788, 252, 927, 131, 89, 982, 935, 347, + 249, 629, 212, 620, 607, 933, 664, 698, 423, 364, 476, 871, 144, 687, + 998, 115, 928, 513, 453, 94, 176, 667, 168, 353, 955, 517, 962, 174, 48, + 893, 43, 261, 884, 516, 251, 910, 395, 29, 611, 223, 501, 199, 58, 901, + 11, 1002, 446, 96, 348, 973, 351, 906, 3, 833, 230, 352, 188, 502, 9, 86, + 763, 790, 797, 745, 522, 952, 728, 336, 311, 288, 719, 887, 706, 727, + 879, 614, 839, 758, 507, 211, 250, 864, 268, 478, 586, 27, 392, 974, 338, + 224, 295, 716, 624, 7, 233, 406, 531, 876, 880, 302, 816, 411, 539, 457, + 537, 463, 992, 575, 142, 970, 360, 243, 983, 786, 616, 74, 38, 214, 273, + 4, 147, 612, 128, 552, 710, 193, 322, 275, 600, 766, 615, 267, 350, 452, + 1009, 31, 494, 133, 122, 821, 966, 731, 270, 960, 936, 968, 767, 653, 20, + 679, 662, 907, 282, 30, 285, 886, 456, 697, 222, 164, 835, 380, 840, 245, + 724, 436, 640, 286, 1015, 298, 889, 157, 896, 1000, 844, 110, 621, 78, + 601, 545, 108, 195, 185, 447, 862, 49, 387, 450, 818, 1005, 986, 102, + 805, 932, 28, 329, 827, 451, 435, 287, 410, 496, 743, 180, 485, 64, 306, + 161, 608, 355, 276, 300, 649, 71, 799, 1003, 633, 175, 645, 247, 527, 19, + 37, 585, 2, 308, 393, 648, 107, 819, 383, 1016, 226, 826, 106, 978, 332, + 713, 505, 938, 630, 857, 323, 606, 394, 310, 815, 349, 723, 963, 510, + 367, 638, 577, 556, 685, 636, 126, 975, 491, 979, 50, 401, 437, 915, 529, + 560, 666, 852, 26, 832, 678, 213, 70, 194, 681, 309, 682, 341, 97, 35, + 518, 208, 104, 259, 416, 13, 280, 776, 618, 339, 426, 333, 388, 140, 641, + 52, 562, 292, 68, 421, 674, 374, 241, 699, 46, 711, 459, 227, 342, 651, + 59, 809, 885, 551, 715, 85, 173, 130, 137, 593, 313, 865, 372, 714, 103, + 366, 246, 449, 694, 498, 217, 191, 941, 847, 235, 424, 378, 553, 783, + 1017, 683, 474, 200, 581, 262, 178, 373, 846, 504, 831, 843, 305, 359, + 269, 445, 506, 806, 997, 725, 591, 232, 796, 221, 321, 920, 263, 42, 934, + 830, 129, 369, 384, 36, 985, 12, 555, 44, 535, 866, 739, 752, 385, 119, + 91, 778, 479, 761, 939, 1006, 344, 381, 823, 67, 216, 220, 219, 156, 179, + 977, 665, 900, 613, 574, 820, 98, 774, 902, 870, 894, 701, 314, 769, 390, + 370, 596, 755, 204, 587, 658, 631, 987, 949, 841, 56, 397, 81, 988, 62, + 256, 201, 995, 904, 76, 148, 943, 486, 209, 549, 720, 917, 177, 550, 700, + 534, 644, 386, 207, 509, 294, 8, 284, 127, 546, 428, 961, 926, 430, 567, + 950, 579, 994, 582, 583, 1021, 419, 5, 317, 181, 519, 327, 289, 542, 95, + 210, 242, 959, 461, 753, 733, 114, 240, 234, 41, 976, 109, 160, 937, 677, + 595, 118, 842, 136, 279, 684, 584, 101, 163, 274, 405, 744, 260, 346, + 707, 626, 454, 918, 375, 482, 399, 92, 748, 325, 170, 407, 898, 492, 79, + 747, 732, 206, 991, 121, 57, 878, 801, 475, 1022, 803, 795, 215, 291, + 497, 105, 559, 888, 742, 514, 721, 675, 771, 117, 120, 80, 566, 488, 532, + 850, 980, 602, 670, 271, 656, 925, 676, 205, 655, 54, 784, 431, 735, 812, + 39, 604, 609, 14, 466, 729, 737, 956, 149, 422, 500, 705, 536, 493, 1014, + 409, 225, 914, 51, 448, 590, 822, 55, 265, 772, 588, 16, 414, 1018, 568, + 254, 418, 75, 794, 162, 417, 811, 953, 124, 354, 77, 69, 856, 377, 45, + 899, 829, 152, 296, 512, 402, 863, 972, 967, 785, 628, 515, 659, 112, + 765, 379, 951, 875, 125, 617, 931, 307, 777, 203, 312, 358, 169, 487, + 293, 239, 780, 740, 408, 151, 781, 717, 440, 438, 196, 525, 134, 432, 34, + 722, 632, 861, 869, 554, 580, 808, 954, 787, 598, 65, 281, 146, 337, 187, + 668, 944, 563, 183, 23, 867, 171, 837, 741, 625, 541, 916, 186, 357, 123, + 736, 661, 272, 391, 229, 167, 236, 520, 692, 773, 984, 473, 650, 340, + 814, 798, 184, 145, 202, 810, 465, 558, 345, 326, 548, 441, 412, 750, + 964, 158, 471, 908, 813, 760, 657, 371, 444, 490, 425, 328, 647, 266, + 244, 335, 301, 619, 909, 791, 564, 872, 257, 60, 570, 572, 1007, 749, + 912, 439, 540, 913, 511, 897, 849, 283, 40, 793, 603, 597, 930, 316, 942, + 290, 404, 17, 361, 946, 277, 334, 472, 523, 945, 477, 905, 652, 73, 882, + 824, 93, 690, 782, 458, 573, 368, 299, 544, 680, 605, 859, 671, 756, 83, + 470, 848, 543, 1011, 589, 971, 524, 356, 427, 159, 746, 669, 365, 996, + 343, 948, 434, 382, 400, 139, 718, 538, 1008, 639, 890, 1012, 663, 610, + 331, 851, 895, 484, 320, 218, 420, 190, 1019, 143, 362, 634, 141, 965, + 10, 838, 929, 82, 228, 443, 468, 480, 483, 922, 135, 877, 61, 578, 111, + 860, 654, 15, 892, 981, 702, 923, 696, 192, 6, 789, 415, 576, 18, 1004, + 389, 751, 503, 172, 116, 398, 460, 643, 22, 779, 376, 704, 433, 881, 571, + 557, 622, 672, 21, 467, 166, 489, 315, 469, 319, 695, 318, 854, 255, 993, + 278, 800, 53, 413, 764, 868, 999, 63, 712, 25, 673, 940, 919, 155, 197, + 303, 873, 686, 1001, 757, 969, 730, 958, 533, 770, 481, 855, 499, 182, + 238, 569, 464, 947, 72, 642, 442, 87, 24, 688, 989, 47, 88, 623, 762, + 455, 709, 526, 817, 258, 637, 845, 84, 768, 738 ]; const encodings = { @@ -170,31 +170,31 @@ module.exports = { function syndrome (residue) { var low = residue & 0x1f; return low ^ (low << 10) ^ (low << 20) ^ - ((residue >> 5) & 1 ? 0x31edd3c4 : 0) ^ - ((residue >> 6) & 1 ? 0x335f86a8 : 0) ^ - ((residue >> 7) & 1 ? 0x363b8870 : 0) ^ - ((residue >> 8) & 1 ? 0x3e6390c9 : 0) ^ - ((residue >> 9) & 1 ? 0x2ec72192 : 0) ^ - ((residue >> 10) & 1 ? 0x1046f79d : 0) ^ - ((residue >> 11) & 1 ? 0x208d4e33 : 0) ^ - ((residue >> 12) & 1 ? 0x130ebd6f : 0) ^ - ((residue >> 13) & 1 ? 0x2499fade : 0) ^ - ((residue >> 14) & 1 ? 0x1b27d4b5 : 0) ^ - ((residue >> 15) & 1 ? 0x04be1eb4 : 0) ^ - ((residue >> 16) & 1 ? 0x0968b861 : 0) ^ - ((residue >> 17) & 1 ? 0x1055f0c2 : 0) ^ - ((residue >> 18) & 1 ? 0x20ab4584 : 0) ^ - ((residue >> 19) & 1 ? 0x1342af08 : 0) ^ - ((residue >> 20) & 1 ? 0x24f1f318 : 0) ^ - ((residue >> 21) & 1 ? 0x1be34739 : 0) ^ - ((residue >> 22) & 1 ? 0x35562f7b : 0) ^ - ((residue >> 23) & 1 ? 0x3a3c5bff : 0) ^ - ((residue >> 24) & 1 ? 0x266c96f7 : 0) ^ - ((residue >> 25) & 1 ? 0x25c78b65 : 0) ^ - ((residue >> 26) & 1 ? 0x1b1f13ea : 0) ^ - ((residue >> 27) & 1 ? 0x34baa2f4 : 0) ^ - ((residue >> 28) & 1 ? 0x3b61c0e1 : 0) ^ - ((residue >> 29) & 1 ? 0x265325c2 : 0); + ((residue >> 5) & 1 ? 0x3d0195bd : 0) ^ + ((residue >> 6) & 1 ? 0x2a932b53 : 0) ^ + ((residue >> 7) & 1 ? 0x072653af : 0) ^ + ((residue >> 8) & 1 ? 0x0cdc067e : 0) ^ + ((residue >> 9) & 1 ? 0x19ac89f5 : 0) ^ + ((residue >> 10) & 1 ? 0x15922369 : 0) ^ + ((residue >> 11) & 1 ? 0x29b443f2 : 0) ^ + ((residue >> 12) & 1 ? 0x03f826ed : 0) ^ + ((residue >> 13) & 1 ? 0x0574c8fa : 0) ^ + ((residue >> 14) & 1 ? 0x087935dd : 0) ^ + ((residue >> 15) & 1 ? 0x2c6dcf4f : 0) ^ + ((residue >> 16) & 1 ? 0x0acfbfbe : 0) ^ + ((residue >> 17) & 1 ? 0x158bfa75 : 0) ^ + ((residue >> 18) & 1 ? 0x2993d5e3 : 0) ^ + ((residue >> 19) & 1 ? 0x03b70fc6 : 0) ^ + ((residue >> 20) & 1 ? 0x051e8fd6 : 0) ^ + ((residue >> 21) & 1 ? 0x08b99aa5 : 0) ^ + ((residue >> 22) & 1 ? 0x1167b06a : 0) ^ + ((residue >> 23) & 1 ? 0x205f60d4 : 0) ^ + ((residue >> 24) & 1 ? 0x12aae581 : 0) ^ + ((residue >> 25) & 1 ? 0x04296874 : 0) ^ + ((residue >> 26) & 1 ? 0x0846f4c1 : 0) ^ + ((residue >> 27) & 1 ? 0x108d4d82 : 0) ^ + ((residue >> 28) & 1 ? 0x210ebf04 : 0) ^ + ((residue >> 29) & 1 ? 0x1299fb28 : 0); } function locate_errors (residue, length) {