view release on metacpan or search on metacpan
4819 4830 4842 4856 4867 4880 4891 4902 4915 4928 4941 4954 4966 4979
4991 5002 5016 5027 5039 5052 5065 5077 5089 5103 5115 5128 5139 5153
5166 5177 5190 5203 5214 5225 5238 5251 5262 5274 5285 5298 5310 5323
5336 5348 5360 5372 5386 5399 5412 5423 5437 5450 5462 5473 5488 5499
5510 5523 5535 5547 5558 5570 5584 5596 5609 5622 5635 5646 5658 5670
5681 5692 5706 5718 5732 5744 5756 5770 5782 5797 5810 5822 5835 5847
5860 5872 5884 5897 5908 5921 5934 5948 5959 5971 5983 5996 6008 6020
6033 6046 6059 6072 6085 6096 6110 6123 6134 6149 6161 6172 6187 6200
6210 6224 6235 6248 6259 6272 6285 6299 6312 6324 6339 6352 6364 6375
6389 6402 6414 6426 6439 6451 6463 6477 6489 6502 6513 6528 6541 6554
6568 6580 6593 6603 6617 6632 6644 6658 6671 6682 6695 6709 6721 6734
6747 6758 6770 6783 6795 6807 6820 6833 6845 6858 6871 6884 6895 6908
6920 6934 6947 6960 6972 6985 6996 7011 7024 7038 7051 7063 7077 7088
7100 7115 7127 7140 7151 7162 7176 7191 7203 7220 7230 7241 7254 7267
7279 7294 7307 7322 7335 7347 7361 7371 7383 7395 7410 7423 7434 7450
7461 7473 7487 7499 7510 7520 7533 7548 7559 7570 7583 7597 7610 7622
7637 7653 7663 7673 7684 7699 7711 7723 7735 7747 7761 7774 7789 7801
7813 7828 7838 7851 7864 7876 7888 7901 7917 7930 7941 7954 7967 7980
7995 8008 8020 8032 8043 8054 8065 8074 8086 8099 8112 8126 8140 8153
8164 8177 8188 8202 8211 8221 8230 8239 8249 8262 8274 8287 8301 8315
8326 8342 8354 8366 8378 8391 8406 8419 8431 8443 8456 8471 8481 8490
8499 8508 8519 8530 8541 8552 8566 8579 8592 8604 8616 8629 8642 8655
8668 8680 8693 8708 8723 8734 8745 8756 8769 8780 8792 8804 8814 8829
8842 8851);
is_deeply( \@b_calls, \@base_calls );
is( 1600, $abi->get_max_trace );
is( "M3", $abi->get_sample_name );
my $seq = "TTTTGACGCNCCTTACGCAAATCTCGNCACGAACCTTCCCCTGAAGAAATTGCCAATCTGC
TCGAAAAACCCGTCGCAGAGGTCAAGCGCATGCTTGGACTGAATGAGCGGGTGTCCTCGGTG
GATGTTTCTTTAGGCCCTGATTCCGATAAAACCCTGCTCGATACCCTGACAGATGATCGACCT
ACAGATCCTTGCTAGCTGCTTCAGGACGATGACCTGTCGCAAAGTATCGATCAGTGGTTGTCT
GAACTTACAGACAAGCAGCGTGAGGTGGTGATTCGCCGCTTCGGGTTGCGTGGTCATGAAAGC
AGTACCCTCGAAGATGTTGGTCTGGAGATTGGTCTGACACGCGAACGTGTTCGGCAGATTCAA
GTCGAGGGGCTCAAGCGTTTGCGCGAGATCCTTGAGCGCAACGGTTTGTCCAGTGAGTCGCTG
TTTCAGTAACAGGCATCCTGCTCGCTAAAAAGCCCCGAAATATTCGGGGCTTTTTTGTGCCCG
CAGAATCTGGACCGCTGCTGCCAAGGGGTTTTTTTGAGTGCGTGCGGGTGACCGGTCAGTCTC
AAAAGTGCAGTCAGGCAGGGGTTGGAACTTTATCTGTCATGGGCTGTAAGCCTTTGCTTACCT
TTNATGTAAGCCAAGGGCGAAAACAGGCTTGCGGATAGNTTCGCTTCTGACTTTTCATAGGTT
GNAACTGATTGAAATTTAAACATTNTNATTGTTNTGNTAAGAN";
$seq =~ s/\n//g;
$seq =~ s/\s//g;
is( $seq, $abi->get_sequence() );
#print STDERR $abi->get_sequence_length();
is( 733, $abi->get_sequence_length() );
my @trace = qw(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 3 6 8 11 12 10 7 4 1 0 12 42 92 161 251 341 416 460 462 423
349 254 163 90 38 8 0 0 0 0 0 0 0 0 1 4 8 13 20 26 34 44 56 72 90 110 128
146 163 183 207 242 287 342 405 475 548 622 698 775 852 929 1008 1093 1187
1294 1417 1556 1600 1600 1600 1600 1600 1600 1600 1600 1600 1565 1395 1265
1174 1101 1020 914 775 611 439 281 159 75 25 2 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 13 73 182 339 533 739 898 976 956 843 663 455 276 138 48
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 101 236 420 642 857
1007 1063 1022 913 784 681 633 641 678 706 694 625 507 368 248 183 197
295 458 647 817 928 956 905 800 683 597 570 609 695 793 863 877 821 704
548 381 235 127 54 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 4 6 8 10 9 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 5 59 163 314 495 691
835 892 850 720 533 346 191 80 17 0 0 0 0 0 0 0 0 0 0 0 0 53 165 337 554
803 1005 1112 1099 969 754 509 301 141 42 0 0 5 10 15 20 26 28 30 33 36
41 46 51 54 53 46 35 29 46 110 243 454 729 1028 1292 1461 1491 1380 1165
915 711 618 662 824 1048 1257 1383 1383 1251 1018 735 465 253 109 29 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
51 147 285 448 623 743 783 743 650 552 500 522 618 755 880 940 906
776 579 379 209 86 17 0 0 0 0 0 0 0 57 204 438 732 1063 1342 1490
1489 1375 1218 1102 1081 1158 1283 1377 1368 1230 992 730 537 480
578 792 1040 1232 1299 1214 998 705 439 222 77 3 0 0 0 0 0 0 0 0 0
0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 32 127 282 483 709 902 997 967 826 629 452 372 439 652 958
1272 1499 1570 1462 1201 854 534 275 99 10 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 37 135 289 484 699 872 947 906 773 602 467 428
512 696 919 1100 1172 1108 934 718 545 485 562 748 971 1145 1205
1130 955 752 604 569 656 824 998 1099 1080 943 745 563 478 531
713 965 1201 1339 1329 1171 903 605 349 157 42 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 73 182 333 510 688 805 833
768 626 443 275 141 51 6 0 0 0 0 0 0 0 0 1 57 173 349 571
823 1024 1126 1102 961 737 491 283 128 35 0 5 10 12 11 12
9 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 36 159 370 652 978 1282 1460 1466 1299 1011 690 432 314 361
548 806 1045 1190 1195 1060 824 555 325 150 42 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 43 139 284 463 663 817 884 847 715 523 336 180 70 10 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 2 2 1 1 0 0 0 0 0
0 0 0 0 0 0 0 0 34 135 304 528 789 1030 1177 1196 1084 868 601 367
182 61 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
39 145 315 531 773 976 1072 1037 885 670 465 341 344 476 693 924
1095 1150 1070 877 621 386 196 69 6 1 6 9 10 10 10 6 2 0 0 0 0 0
0 0 0 0 0 66 217 450 743 1077 1351 1494 1472 1294 1005 677 399 188
57 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 5 6 5 4 2 1 0 0 0 1 2 3 3
2 1 0 0 0 0 0 2 3 4 5 5 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7
10 13 15 13 10 6 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 2 3 3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 4 8 13 17 19 17 13 9 4 2 3 6 10 15 19 20 19 14 9 5 2 0 0 0
0 0 0 0 0 12 77 196 364 566 775 923 975 919 771 567 365 199 83 19 0
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 67 186 359 570
798 968 1039 998 856 650 428 246 113 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 46 137
269 430 609 745 806 779 673 515 342 198 92 27 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 4 50 137 265 421 590 719 776 749 647 493 327 189 87 25
0 0 0 0 0 0 15 58 127 220 338 458 551 595 582 513 415 323 280 315 433
608 793 931 978 913 751 536 335 198 179 292 517 791 1056 1237 1287 1197
997 751 533 405 400 510 690 879 1014 1053 981 819 606 391 219 97 26 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 76 187 340 523
708 837 881 831 701 520 338 190 82 20 0 0 0 0 0 0 24 84 181 307 454 586
669 685 631 521 381 244 134 57 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 45 133 263 424 605 746 817 802 708 558 384 233 117 42 5 0 0 0 0 0 38 127
267 447 660 846 963 984 908 755 560 362 206 95 29 0 0 0 0 0 0 0 0 0 0 23 96
222 395 605 813 964 1023 978 839 640 424 247 115 34 0 0 2 2 2 2 2 0 0 0 0 0 0
0 0 0 0 0 0 0 29 128 302 541 830 1119 1327 1407 1344 1153 882 587 344 163 52
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 107 236
406 609 799 925 960 900 758 569 373 214 99 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 120 265 456 685 901 1047 1094 1032 878
668 445 260 125 41 3 0 0 0 0 0 3 65 185 365 589 846 1055 1172 1176 1067
874 639 409 229 104 32 1 0 0 0 0 0 0 0 0 1 55 167 337 550 797 1001 1118
1123 1017 826 593 373 201 84 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 27 89
182 302 443 565 641 656 608 510 382 249 144 67 20 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 24 116 276 499 769 1045 1249 1341 1303 1147 910 641 397 212 88
21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57 172 346 566 825 1042 1174
1195 1104 923 693 455 264 126 42 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 52 161
327 536 780 985 1107 1122 1027 848 620 398 222 97 25 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 24 104 239 424 650 877 1044 1118 1086 957 761 541 336 182
77 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 64 163 303 473 655 793 858 841 752
621 492 402 378 422 515 624 709 739 700 599 463 327 231 202 251 368 528 690
817 877 858 764 618 448 286 160 73 22 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3
37 99 190 301 424 519 566 555 488 379 257 153 72 21 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 3 3 3 2 1 0 0 0 0 0 0 0 0 8 53 135 253 401 563 694 768 770
703 581 429 277 158 72 21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 72 174 318
499 691 848 939 948 875 738 565 389 235 124 53 14 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 3 3 3 2 1 0 0 2 3 4 4 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 2 42 117 228 365 518 637 699 691 619 508 393 311 290 340 449 591
728 823 852 808 701 553 393 245 135 60 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 123 254 421 621 800 921 961 916 796 626 439
272 145 61 15 0 0 0 0 0 0 33 111 235 399 597 781 911 964 930 821 660 478 306
173 81 26 2 0 0 0 0 0 0 0 0 0 33 103 212 354 526 681 791 834 803 707 566 408
258 143 64 19 0 0 0 0 0 0 8 56 147 278 441 621 764 843 845 775 659 532 430 381
392 451 535 612 657 653 600 507 393 276 173 95 44 15 2 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 3 35 97 189 307 442 558 632 651 612 524 409 285 174 93 40 10
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 35 95 189 314 464 605 714 771 766 702
593 460 325 206 116 56 21 5 2 5 8 11 15 16 17 16 15 13 10 7 5 2 1 0 0 0 0 0
0 0 0 0 0 0 3 6 11 17 22 25 26 24 20 17 13 10 9 10 12 15 17 19 19 20 20 19
18 16 12 8 5 1 0 0 0 0 0 0 0 0 0 0 1 2 4 6 8 9 10 10 11 10 8 6 4 1 0 0 27 87
185 316 481 640 766 834 833 764 642 490 335 202 105 42 9 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 7 8 9 9 9 10 11 12 14 16 18 19 19 17 13
9 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 3 3 4 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 38 100 190 304 434 545 619 641 608 527
415 292 181 97 40 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 84 179 308
472 631 759 832 836 774 666 539 429 364 359 414 511 622 716 767 762 701 602
490 395 340 336 381 462 551 627 668 665 616 533 429 321 221 141 80 41 18 8 3
2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 15 48 103 179 275 372 453 503 517 490 430 348
260 176 107 58 27 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 19 49 93 149 213
270 308 323 312 280 232 179 127 83 48 25 11 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 38 89 162 254 354 438 494 513 495 449
388 332 297 292 317 366 424 475 504 501 465 402 320 234 154 90 45 18 4 0
0 0 0 0 5 34 91 179 297 437 569 672 728 728 672 572 447 317 201 113 53 18
5 5 8 11 12 11 9 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 54 116 196 295 389 461 499 497 458 390
306 218 138 78 36 12 0 0 0 0 0 0 0 26 83 175 300 457 611 734 807 817 763 657 521
376 241 138 67 24 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 42 87 147 222 294 352 386 392 371 325
264 198 135 81 44 19 6 0 0 0 0 20 59 119 198 296 389 463 507 515 487 427 348 261
177 106 56 24 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 22 65 134 227 343 455 547 602 615 585 522 442 367 311 285
290 320 363 405 431 434 411 365 303 234 167 109 63 32 13 3 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 32 68 116 174 232 277 302 307 290
256 210 160 110 67 36 15 3 0 0 0 0 0 0 0 9 35 81 145 228 317 395 451 474 462 417
348 265 183 111 59 25 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7
37 90 169 272 389 497 578 619 616 575 509 436 374 338 333 354 391 429 454 458 434
387 323 252 181 119 69 35 15 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 16 43 83 135 197 253 295 316 314 289 247 197
145 98 61 35 18 8 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 1 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 18 54 112 190 289 388 473 530 553 539 494 431 368 318 293 298 327 370
413 443 450 432 391 332 266 200 140 91 54 28 13 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 44 93 161
249 339 421 482 513 511 477 417 340 257 178 111 62 29 10 1 0 0 0 0 0 7 37 91 171
274 392 499 580 622 620 576 499 403 302 208 131 73 36 14 3 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 34 71 120 182 241 290 321 330 318 286 242 191 141
96 60 33 16 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 11 34 69 118 181 244 300 341 361 360 342 313 282 259 247 249 261 280
296 303 297 274 237 191 142 97 60 32 15 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 28 61 109 174 247 317 378 421 442 437 407 358 297
232 168 114 70 39 18 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 4 5 4 4 2 1 0 0 0 0 4
17 38 69 112 163 216 268 312 342 354 346 320 278 227 174 123 79 46 23 9 2 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 10 35 74 127 198 273 341 395 428 437 420 382 328 266 201 141 90 51 25 9 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 23 47 77 113 146 169 182 183 178 168 160 161 172
195 228 266 301 328 341 336 315 281 239 193 150 111 78 51 31 17 7 2 0 6 23 54 98
159 228 298 359 402 422 415 385 336 278 216 160 111 73 43 23 11 4 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 11 28 55 92 138 185 228 261 279 281
264 232 191 145 101 62 34 15 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 24 52 88 134 178 216 242 254
253 245 234 227 231 247 276 314 354 390 414 421 411 387 356 327 309 306 323 355 396
436 466 480 474 452 419 385 357 343 345 362 388 416 438 448 442 422 394 366 347 344
361 395 439 483 516 529 517 479 421 350 276 207 148 102 68 42 25 13 5 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 14 30 53 86 123 160 194 221 237 242 237 227 216
209 210 220 237 257 276 290 295 292 281 267 253 243 240 245 255 266 274 276 267 248
220 186 148 112 79 51 30 15 6 2 4 12 27 49 79 115 154 190 219 238 244 235 216 187
155 122 91 64 41 24 12 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 7 9 11 11 11 9 6 4 2 0 0 1 3 5 8 9 9 8
6 5 4 4 5 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 7 24 49 83 125 166 199 221 230 225 209 184 154 123 94 67 46 29 16
8 3 0 0 0 2 12 30 58 96 141 185 225 255 271 277 273 265 260 261 271 288 309
328 340 340 327 302 267 225 182 141 104 73 49 29 16 8 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 4 3 2
1 0 0 0 0 0 0 0 0 8 22 44 75 116 159 201 237 264 279 279 265 241 207 170
132 98 68 43 25 13 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 11 29 55
91 133 175 214 245 264 272 270 260 247 234 226 225 232 245 261 277 289
292 286 269 244 212 177 140 107 76 50 30 17 8 4 4 6 8 9 9 9 10 11 13
16 19 20 20 17 13 9 5 2 0 0 0 1 2 5 7 9 10 8 6 4 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8
19 36 60 87 116 144 168 186 195 196 188 173 152 127 101 74 49 29 15
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 12 27 47 74 105 138 170 201 227 246
256 255 244 224 196 166 134 105 80 59 43 31 22 14 8 4 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 13 26 45 68 96 125 154 180 200 209 209 198
178 152 123 95 68 46 28 15 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 15 33 58 92
130 168 202 230 250 260 263 260 253 247 244 244 249 256 264 271 274 272 264 252
236 221 210 203 201 205 210 216 221 222 219 213 205 196 188 184 184 187 193 199
203 202 196 183 165 142 118 94 72 51 33 20 11 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 3 11 21 30 38 40 35 26 16 7 1 0 0 0 0 0 0 0 0 0 5 14 28 47 71 96 118 136
147 151 147 136 120 103 84 66 51 37 25 15 9 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 4 13 26 45 67 90 111 128 140 148 149 144 134 118 99 77 55 35 20
10 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 17 31 49 69 89
105 117 122 122 116 105 90 74 58 42 27 16 8 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 13 27 47 73 101 128 152
171 183 189 191 190 190 190 194 201 209 219 226 229 226 216 199 176 152 126 101 79
61 44 29 18 10 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 3 12 26 46 72 100 127 150 166 176 178 173 161 144 124 102 79 58 40 25
14 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 9 12 13 12 9 5 2 0 0 0 0 0 3 10 21 36 56 78 100 121
140 153 160 161 155 142 125 106 84 63 44 27 15 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6
12 21 34 50 68 86 103 119 131 141 149 155 160 165 170 175 180 185 187 189 186 180
169 155 137 118 99 82 66 53 42 34 27 21 16 11 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 18 34 54 80 104 126 142 152 154 149 137 121 102 83
62 44 27 15 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 9 19 33 51 73 95 117
138 158 173 182 184 180 170 155 138 119 101 83 65 48 31 18 9 3 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 10 18 29 42 52 59 65 70 76 84 95 107 121 136 149 160 169
175 178 178 174 166 156 143 128 113 97 80 62 44 28 16 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 6 14 25 40 58 77 96 116 134 149 159 165 165 162 156 151 147 145
145 148 151 154 155 152 146 136 122 106 88 72 55 41 27 17 9 4 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
5 12 25 44 68 94 120 143 162 178 188 195 197 196 193 189 184 181 179 180 181 182 182
180 176 170 163 154 148 143 142 143 148 155 163 171 178 182 185 184 181 176 172 168
167 167 167 168 165 160 152 140 126 111 96 81 67 55 44 35 29 26 26 30 38 51 66 84 103
122 139 153 162 164 160 150 136 118 99 82 66 52 41 32 25 19 14 11 9 8 6 5 4 2 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 14 22 31 40 49 56 64 69 74 76 76 72 65 55 43
31 20 11 5 2 0 0 0 2 5 11 18 28 39 50 60 69 76 79 78 74 67 57 47 37 29 21 14 9
5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6
15 26 36 45 46 39 28 18 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 17 29 45 61 77 91 104 115
124 128 130 126 119 108 93 77 59 43 28 17 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 6 10 12 13 11 8 5 1 0 0 0 0 0 1 6 14
25 41 59 79 100 119 138 152 162 165 162 153 139 123 105 87 72 59 49 41 37
35 35 36 39 42 47 54 63 73 82 91 97 101 100 95 87 77 64 51 41 33 28 25 24
23 21 18 14 9 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2
5 10 16 25 33 42 50 58 66 74 82 90 100 110 120 131 140 148 153 158 159
159 158 153 147 139 130 119 107 93 78 61 44 28 16 7 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9 17 27 39 49 57 62 65 64 61
58 52 44 35 24 15 8 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 5 12 23 37 55 73 89 103 113 118 121 122 123 125 129 134 137
138 135 131 123 116 110 106 102 100 96 89 78 64 47 31 18 8 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 10 20 32 46 59 70 77 82 87 92
99 108 120 134 150 165 178 189 197 199 198 194 187 180 173 168 163 161
159 159 158 157 154 150 143 136 126 116 106 97 87 79 69 60 50 42 36
34 36 42 52 63 77 90 102 112 120 124 125 123 117 108 98 85 72 58 46
34 23 14 8 3 1 0 0 0 0 0 0 0 0 0 0 0 3 8 13 19 24 26 25 20 14 8 4 0
0 0 0 0 0 0 0 0 2 5 10 15 20 24 24 23 18 13 8 4 2 0 0 0 0 0 2 5 9 16
25 36 50 63 77 89 99 107 112 114 114 111 103 93 80 66 52 39 27 18 11
6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 6 7 7 6 4
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 9 15 22 30 36 40 42 40 36 29 20 12 6 1 0 0 0
0 0 0 0 0 0 0 0 1 3 6 9 12 14 14 12 9 6 3 1 0 0 0 0 0 1 1 1 1 0 0 0 2 7 13 19
27 32 36 39 42 47 54 62 72 82 91 100 107 113 119 124 129 135 141 149 156 162
166 168 167 163 157 148 138 126 114 104 94 87 81 77 72 67 60 53 45 38 32 29
29 31 35 40 45 51 56 59 59 48 37 26 14 2 0 72 275 433
);
my @array = $abi->get_trace("A");
is_deeply(\@trace, \@array);
@array = $abi->get_trace("G");
@trace = qw(
0 0 0 0 0 0 0 7 22 46 78 120 161 196 219 232 235 236 240 254 277 305 331 347 344 324 292 258 229 215 217 229 243 250 242 218 181 137 92 55 28 11 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
8 42 103 194 313 444 560 638 664 632 551 438 315 205 120 68 46 48 64 88 116 145 175 206 239 273 310 350 395 446 501 560 616 670 720 769 822 888 968 1063 1163 1254 1317 1338 1305 1222 1097 950 800 664 551 462 392 334 282 233 188 154 137 145
181 241 317 393 451 478 465 412 331 237 149 81 34 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 28 83 167 275 401 506 568 573 521 424 303 191 102 41 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 0 0 0 0 0 0 0 0 0 29 99 214 369 555 727 845 882 831 703 528 346 198 91 26 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 3 4 5 5 5 4 2 1 0 0 0
0 6 49 132 256 413 586 727 803 797 711 569 401 247 129 56 28 32 51 73 94 109 120 127 134 139 144 147 149 151 153 154 155 155 154 152 149 145 141 134 126 115 102 86 70 53 37 24 14 7 2 0 0 0 0 0 0 0 0 0
0 0 0 13 61 144 260 401 540 637 667 624 516 371 235 123 46 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 74 232 473 775 1118 1391 1527 1493 1298 993 661 380 171 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 212 439 724 1050 1316 1453 1426 1246 956 638 368 166 44 0 0 0
0 0 0 0 1 1 2 3 4 3 3 3 3 4 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 3 4 3 2 2 1 0 0 0 0 0 0 0 0 18 137 359 676 1059 1460 1600 1600 1600 1455 1061 678 364
145 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 138 347 649 1021 1409 1600 1600 1600 1478 1099 716 396 166 36 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
55 154 301 484 685 836 902 865 732 536 346 185 71 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 82 224 428 677 941 1134 1204 1135 943 677 428 221 79 7 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 18 87 206 369 560 744 862 882 802 641 442 267 129 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 90 203 351 522 677 768 771 688 540 367 218 103 31 0 0 0 0 0 0 0 0
41 154 340 585 868 1117 1252 1230 1051 770 498 256 124 209 497 883 1335 1600 1600 1600 1600 1579 1119 697 360 133 17 0 1 3 3 3 4 5 6 9 13 16 18 18 16 13 10 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 7 83 235 456 724 1016 1233 1322 1262 1070 795 516 285 120 27 0 0 0 0 0 0 0 0 0 0 0 43 139 291 483 703 883 977 959 834 633 420 237 102 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 29 157 381 689 1049 1403 1600 1600 1544 1252 882 545 277 99 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
49 186 407 689 1005 1273 1403 1359 1158 861 559 341 268 352 556 810 1031 1153 1143 1006 780 523 307 144 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 72 241 501
826 1192 1490 1600 1594 1381 1050 695 397 177 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 90 256 506 820 1174 1458 1600 1587 1400 1094 740 440 209 64 0 0 0 0 0 0
0 0 52 161 328 538 778 971 1071 1053 923 715 480 280 130 38 0 0 0 0 0 0 0 0 0 0 0 54 168 343 561 806 993 1072 1023 863 646 450 346 376 536 779 1026 1200 1245 1145 929 662 421 267 236 323 486 667 805 859 814 684 504 324
178 76 18 0 0 0 0 0 0 0 0 13 91 240 458 730 1025 1255 1368 1336 1168 906 608 359 169 52 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 100 213 355 514 641 695 661 552 404 272 208 243 380 586 809 986 1071 1040 903 695 463 271 127 38 0 0 0 0 0 0 0 0 2 55 170 349 583 856 1088
1219 1215 1072 832 563 352 266 338 556 860 1168 1395 1481 1405 1191 892 582 329 147 41 0 2 5 6 6 8 6 4 2 1 1 2 2 2 2 2 1 0 0 35 148 339 592 889 1168 1345 1377 1260 1025 731 455 238 92 16 0 0 0 0 0 0
0 0 1 2 3 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 2 2 1 1 0 0 0 0 0 0 0 0 0 23 96 217 382 574 754 866 878 786 611 417 242 121 124 261 490 768 1063 1285 1384 1338 1164 904 617 369 184 66 10 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 70 178 337 536 751 923 1014 1004 896 714 503 310 162 63 12 0 0 0 0 0 0 0 1 2 2 3 3 3 3 2 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 77 162 271 395 501 559 557 496 393 273 166 84 30 4 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 83 207 379 587 804 962 1028 987 853 656 442 261 126 43 4 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 44 119 230 369 523 648 717 713 640 514 364 226 118 47 9 0 0 0 0 0 0 0 0 1 2 2 2 2 2 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23
85 190 336 514 689 819 876 848 743 584 405 247 127 49 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 96 211 365 548 721 836 871 819 694 526 349 203 97 32 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 63 170 326 518 729 893 975 957 846 670 469 287 149 59 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 8 55 142 265 412 566 679 723 691 592 450 297 172 80 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 61 136 235 352 462 536 557 523 442 333 219 126 59 18 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 9 12 14 14 13 11 9 8 8 11 13 14 12 10
7 3 0 7 60 166 322 521 744 929 1037 1047 956 789 582 377 213 99 31 2 1 1 1 1 1 0 0 0 0 0 1 2 4 5 6 6 4 3 1 0 0 0 0 0 0 0 0 0 0 27 103 233 413 636 860 1031 1112 1086 960 763
537 331 174 70 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 73 182 336 527 731 890 971 958 856 689 493 310 168 72 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 46 116 216 340 472 574 620 600 516 388 257 147 105 152 294 501 753 993 1174 1257 1228 1095 886 643
411 230 104 31 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 33 92 178 285 404 498 546 541 484 390 279 175 95 40 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 53 133 246 383 528 638 692 679 604 486 349 220 121 53 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 44 136 275 451 659 836 944 963 892 747 562 372 216 105 36 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21 66 134 221 322 409 463 472 437 367 276 182 106 51 17 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 28 104 229 395 595 786 921 974 935 817 645 454 281 151 64 16 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 57 123 211 313 409 473 495 469 405 317 223 138 75 33 10 0 0 0 0 0 0 0 0
1 1 2 2 3 3 4 5 6 6 6 5 4 4 3 4 4 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 2 27 79 157 259 378 482 550 570 537 460 356 245 148 76 31 7 0 2 2 2 2 2 1 0 0 24
91 204 360 553 745 891 960 938 832 669 489 336 245 235 302 424 565 690 765 774 715 603 461 315 189 98 40 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 97 216 377 573 767 913 983 965 867 709
524 345 200 98 36 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 62 146 263 409 560 682 750 751 689 576 437 296 177 91 36 8 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 40 95 173 271 376 463 514 520 481 405 309 210 125 64 25 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 72 147 244 359 461 530 551 523 453 355 249 153 82 34 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 36
89 162 252 347 420 458 453 409 336 247 161 92 43 14 1 0 0 0 0 0 0 0 0 0 20 63 132 225 339 447 527 566 555 499 407 300 195 112 53 18 2 0 0 0 0 0 0 0 23 77 164 280 423 560 664 715 706 638 528 396
265 156 79 30 6 0 0 0 0 0 0 18 84 204 378 603 849 1061 1197 1232 1157 991 774 554 384 301 323 444 636 854 1050 1182 1221 1160 1014 812 590 385 220 108 41 11 3 3 3 3 2 0 0 9 50 127 241 390 560 711 815 853 820 724
593 459 356 307 323 397 508 627 724 775 770 708 602 470 335 214 121 58 21 4 0 0 0 0 0 0 0 11 50 118 217 342 477 590 661 676 635 548 432 310 199 113 55 22 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 23 62 117 186 264 329 371 382 360 313 248 179 114 64 30 10 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 11 44 98 173 264 356 428 467 467 429 362 279 194 120 65 29 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 13 41 85 144 214 278 321 336 320 280 230 190 175 199 260 350 449 535 587 595 554 477 383 294 230 206 224 278 350 421 472 492 473 420 344 259 176 107 58 28 12 6 5 5 4 3 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 9 48 117 216 344 485 607 687 713 681 598 482 355 236 138 70 29 8 0 0 0 0 0 0 0 9 38 86 153 238 328 402 449 460 433 376 299 217 142 82 41 17 5 1 0 0 0 0 0 13 50 115
208 326 450 554 618 632 595 520 428 346 295 289 328 400 484 556 598 597 552 473 373 270 178 106 56 27 12 6 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2 26 72 142 231 337 432 499 527 512 459 378 286 196 120 65 29 10 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 20 61 128
219 335 452 550 614 633 603 532 433 322 218 132 70 31 12 4 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 8 30 69 125 196 270 333 373 385 365 320 256 187 123 71 35 13 3 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 8 29 63 107 161 210 245 259 250 220 178 129 82 46 21 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 46 98 166 251 332 395 427 425 389 329 254 178 112
62 28 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 28 73 140 228 329 421 489 521 512 465 390 300 209 131 72 33 12 4 3 4 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1
20 59 119 198 292 380 444 476 470 430 369 303 250 222 227 263 320 383 436 465 464 432 373 299 221 148 88 46 20 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 9 38 88 160 253 354 441 500 522 505 457 392 332 292 282 305 353 413 467 500 503 471 412 333 249 170 105 57 27 10 2 0 0 0 0 1 15 46 92 154 230 303 361 396 403 381 335 274 207 143 89 49 23 8 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 51 119 215 341 477 597 680 714 694 628 532 429 340 282 261 274 310 354 392 408 399 364 310 244 179 121 74 42 22 11 5 3
2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 37 85 151 235 323 397 444 458 437 387 316 239 165 102 57 28 12 5 3 2 2 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 30 67 117 179 243 296 328 336 320 282 230 173 117 71 38 16 4 0 0 0 0 0 0 0 3 17 42 80 126 179
225 257 270 263 237 199 154 110 70 40 19 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 36 77 132 202 272 330 368 379 364 325 270 208 148 95 55 28
11 3 0 0 0 0 0 2 18 49 95 156 227 293 342 366 363 334 285 224 164 110 67 37 18 8 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 22
49 85 130 174 209 230 234 223 203 181 168 170 191 230 281 335 381 409 413 391 346 285 218 153 98 56 28 11 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 22 51 92 146 205 258 298 318 316 294 254 203 149 101
61 33 15 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 9 32 72 125 193 263 324 364 379 368 333 280 219 157 101 58 29 11 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 19 43 75 115 156 188 207 209 194 167
131 94 59 33 15 4 0 0 0 0 0 7 26 60 110 174 245 310 359 384 381 353 308 260 222 208 227 278 353 439 516 569 585 562 504 426 345 279 240 237 268 321 383 438 471 474 447 395 332 273 234 222 244 293 361 432 491 527 530 501
443 367 282 201 130 75 38 16 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 3 22 57 109 178 259 336 400 440 451 433 390 330 261 193 133 84 48 25 11 3 1 0 0 0 0 0 2 15 38 73 120 175 227 270 295 301 286 254 208 158 109 68 37 17 5 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 17 49 101 170 255 338 406 448 459 439 391 326 253 183 120 72 38 17 6 1 0 0 0 0 1 8 22 45 74 112 150 183 207 219 217 200 174 141 105 72 45 25
12 4 1 0 0 0 0 0 5 21 48 85 133 184 228 259 271 263 239 203 161 119 83 52 30 16 7 2 0 0 4 22 57 111 183 270 355 428 478 497 484 443 379 304 229 160 105 64 36 19 9 4 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 23
57 105 167 239 305 356 384 387 365 323 269 210 153 104 64 35 17 6 1 0 0 2 10 27 53 89 134 180 221 252 265 261 241 208 168 126 88 56 32 16 7 2 0 0 0 0 0 0 0 7 26 58 102 158 217 269 305 322 317 292
252 204 153 107 69 40 20 9 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 22 48 85 132 181 223 253 266 261 242 217
192 178 180 200 235 280 325 362 382 382 362 324 274 219 165 116 76 46 25 12 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 15 42 83 139 207 276 335 378 399
394 365 319 262 202 146 99 64 40 24 15 10 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 28 57 97 146 195 238 269 283
282 265 236 197 156 116 81 51 30 15 6 2 0 0 0 0 2 14 39 77 129 193 257 313 353 372 368 342 299 246 191 139 95 61 35 18 8 3 0 0 2 15 41 83 141 214 292 365 421 454 458 434 388 326 258 193 136 92 59 39
26 19 14 11 8 5 3 1 0 0 1 2 2 2 2 1 0 0 0 0 0 8 23 46 76 114 150 180 200 207 201 184 159 128 98 70 47 30 18 11 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 5 19 44
80 128 182 236 282 313 326 319 293 253 204 154 107 68 39 20 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 2 11 27 51 83 119 155 185 205 214 208 192 168 139 109 81 59 41 27 17 10 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8 21 42 73 111 153 192 223 244 249 241 223 202 185 179 188 215 257 308 359 402 428 432 413 375 321 261 200 144 99 64 40 25 15 9 5 3 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 4 16 38 70 115 168 225 277 319 345 350 335 301 255 203 151 106 69 41 22 10 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 11 28 53 88 128
169 204 229 239 235 217 189 155 120 89 63 42 27 16 9 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 17 41 77 125 181 236 285 321 341 342 325 294 252 205 158 116 82 55 35 21 12 6 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 11 24 44 69 96 121 141 154 157 151 137 119 97 74 53 35 20 10 4 1 0 0 0 0 0
0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 10 22 40 63 88 112 131 145 152 154 150 145 141 142 150 166 186 209 228 241 244 236 221 202 183 169 164 167 177 192 205 215 218 214 203
190 177 169 171 185 210 244 282 315 339 347 338 312 275 229 182 138 100 69 46 28 16 8 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 17 39 70 114 166 220 271 312 339 347 337 310 272 227 180 138
101 72 49 33 20 11 5 3 5 16 34 61 96 138 180 220 252 273 281 274 254 224 188 148 111 77 51 31 17 8 3 1 0 0 0 0 0 0 1 2 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
3 13 31 55 85 117 146 166 178 177 167 150 129 105 85 67 52 40 30 21 13 7 3 1 0 0 0 0 0 0 0 0 0 1 5 14 29 49 73 100 124 144 157 161 156 144 126 104 81 60 42 27 16 9 4 2 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 14 32 58 93 134 175 212 241 261
268 265 252 234 217 202 194 196 205 218 232 241 242 234 215 188 157 124 94 68 47 33 23 16 11 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 11 27 50 82 120
158 192 220 236 240 233 216 191 162 132 102 75 51 33 19 10 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 12 28 51 82 118 154 186 211 226 230 222 204 179 150 119 92 67 48 33 22 15 10 6 3 1 0 0
0 0 0 0 0 0 0 0 0 0 0 7 20 40 69 107 148 186 220 243 255 254 240 217 188 155 122 91 65 44 28 17 9 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 3 11 26 48 77 110 141 167 186 196 197 192 185 180 181 192 215 249 291 335 375 404 417 413 392 359 320 281 249 228 219 222 233 247 259 265 262 251 231 210 191 180 180 192 214 243 273 298 314 317
307 283 249 208 167 127 93 64 42 25 14 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 20 41 71 109 151 191 226 250 261 259 243 216 183 146 110 78 51 30 16 7 2 1 5 14 28 49
76 108 142 174 199 218 226 223 209 187 159 127 96 67 41 23 11 3 0 0 0 0 0 6 19 38 65 101 139 176 206 227 236 232 216 192 161 128 96 68 43 25 13 5 1 0 0 0 0 0 5 15 29 48 70 91 107 116 119 114
104 90 75 59 45 31 19 11 5 1 0 0 0 2 9 20 36 58 84 110 136 158 173 180 179 169 149 126 99 72 48 28 15 6 2 0 0 0 0 0 3 11 24 41 64 89 112 132 146 153 154 150 144 138 136 141 152 170 191 212
228 238 237 228 210 189 168 149 137 131 131 134 139 141 140 135 123 107 89 68 47 30 16 7 2 0 0 0 0 0 0 2 10 25 47 75 109 141 168 187 197 197 188 172 150 125 99 74 50 31 17 8 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 11 24 42 66 92 115 135 150 160 163 162 158 153 149 148 150 156 163 170 175 176 172 162 147 127 105 82 61 41 26 14 7 2 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9 19 33 52 72 91 107 119 125 124 118 108 95 80 64 48 33 20 11 4 1 0 0 1 3 5 6 7 7 5 3 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 6 15 29 50 74 101 128 153 174 188 195 193 183 167 145 121 97 74 53 35 21 11 4 1 0 0 0 3 10 22 39 62 87 113 136 154 165 168 163 150 133 112 90
68 49 32 19 10 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 10 19 30 43 56 67 76 82 84 83 79 71 61 50 38 26 16 8 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 5 13 26 43 64 85 104 120 131 138 140 140 139 138 140 145 155 168 184 201 215 224 225 220 207 188 165 139 112 88 67 49 36 26 19 13 8 4 2 0 0 0 0 0 0 0 0 0
0 1 3 8 16 26 39 53 67 80 92 102 108 112 113 114 115 119 126 137 151 169 186 203 216 223 224 220 214 206 200 197 198 201 206 209 211 208 200 187 173 157 144 135 131 134 141 153 167 181 192 197 197 190 178 161 142 122 103 85
69 54 41 29 19 11 5 1 0 0 0 0 0 1 1 1 1 0 0 0 1 6 15 30 51 77 106 136 163 187 207 219 225 226 221 212 203 195 189 186 186 186 186 183 178 169 155 139 121 101 82 66 49 36 25 17 11 6 3 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 10 21 36 57 81 104
125 143 157 164 166 161 153 140 124 108 91 75 61 48 35 24 15 8 3 1 0 1 3 5 6 6 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 14 26 42
62 84 107 130 152 172 187 199 205 207 204 200 195 191 191 194 199 206 211 213 211 205 195 184 171 161 151 146 142 142 145 149 153 157 159 157 152 142 129 113 94 76 58 41 28 18 10 5 2 1 0 0 0 0 0 0 0 0 0 0
0 0 0 1 5 11 22 38 57 79 102 124 145 161 172 178 179 175 165 152 133 113 91 71 51 35 22 14 9 7 7 8 8 8 6 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 11 22 37 56 79 101
121 139 152 158 157 150 139 125 108 93 79 65 52 40 29 20 12 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 5 12 24 40 60 80 101 120 136 147 153 155 151 141 128 113 95 77 60 43 30 20 13 8 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 4 6 6 5 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 20 38 60 87 114 139
159 174 182 184 178 168 154 137 119 100 82 63 46 30 18 10 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9 20 33 50 69 88 104 117 126 131 131 126 117 104 89 74
57 42 30 18 10 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 10 18 28 40 54 69 83 96 109 118 125 130 135 138 144
151 160 173 187 202 217 229 236 238 234 224 212 198 183 170 160 153 150 149 149 148 146 142 135 126 116 103 90 76 62 48 35 23 14 7 3 0 0 1 3 9 17 26 39 51 63 73 82 88 92 92 90 85 79 70 61 51 42 32 24
18 12 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 4 9 17 29 44 60 77 93 106 116 123 127 129 130 131 135 141 149 158 169 179 186 191 191 186 176 163 145 127 108 90 72 57 44 33 24 16 10 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 4 9 18 31 47 65 84 100 114 123 129 132 132 128 122 113 101 86 71 55 40 27 17 10 5 4 6 11 18 26 36 47 58 68 78 87 94 98 100 101 101 103 106 112 121 132 144 155 164
169 168 163 151 136 118 99 80 63 50 39 31 25 21 17 12 8 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 13 24 37 52 67 83 99 115 130 143 153 159 160 156 148 136 122 105 88
71 56 43 33 25 20 16 13 10 7 5 3 1 1 1 2 3 5 5 6 5 4 3 2 1 0 0 0 0 0 0 1 4 7 13 19 27 38 51 64 80 98 114 130 144 154 160 160 155 146 135 121 107 93 79 66 53 42 32 23
18 14 12 10 8 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 7 9 8 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 1 3 7 13 19 28 38 51 64
79 95 110 120 127 129 126 120 111 99 87 75 62 52 43 34 26 19 13 7 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 2 5 10 14 18 20 20 18 14 10 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 14 23 35 48
62 75 88 99 110 119 126 131 135 138 139 141 143 145 149 155 162 170 177 182 185 184 178 169 156 141 124 108 92 79 67 58 49 43 36 30 24 18 13 8 5 2 1 0 0 0 0 0 3 8 15 23 35 48 61 74 88 101 112 122
130 135 138 138 135 129 121 111 98 85 72 59 48 37 29 23 18 14 12 9 8 6 5 4 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 2 4 8 12 18 26 38 51 65 79 92 105 115 123 129 132 132 128 120 110 96 80 65 54 44 37 32 28 23 18 12 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 9 16
23 33 44 56 68 81 93 105 114 122 127 131 130 127 121 113 102 90 76 61 47 34 22 13 7 4 4 4 6 6 7 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 2 3 4 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 3 2 1 0 0 0 0 1 2 3 4 4 4 4 4 4 4 4 4 3 2 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 7 9 11 11 13 14 14 14 14 13 11 11 9 7 6 5
3 2 1 0 0 1 3 5 8 10 13 14 14 12 10 6 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 7 9 13 19 26 35 46 60
74 89 103 118 131 142 152 158 160 158 151 140 127 113 97 82 68 56 44 35 26 20 14 10 6 4 2 1 0 1 3 5 8 10 12 12 10 8 5 3 1 0 0 2 6 11 17 23 27 29 31 29 27 25 23 21 20 20 22 25
31 39 48 59 71 83 93 102 108 112 113 112 110 105 98 89 78 66 53 41 31 22 16 12 10 9 8 7 6 5 3 2 1 2 2 3 4 5 5 5 5 5 5 5 4 3 2 1 0 0 0 0 0 0 0 2 6 10 17 25
34 42 50 57 64 69 73 76 77 76 73 69 65 60 54 47 39 31 22 15 11 10 12 16 19 16 14 10 4 0 31 104 162
);
is_deeply(\@trace,\@array);
@array = $abi->get_trace("C");
@trace = qw(
631 581 509 451 386 324 273 239 224 224 234 252 271 290 308 323 335 344 347 345 337 324 306 284 259 232 203 173 143 112 81 53 31 15 4 8 29 65 115 177 238 285 308 299 262 202 136 80 37 9 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 2 19 50 94 146 201 238 247 226 176 122 72 31 5 0 17 71 161 285 434 580 684 722 684 579 430 281 157 66 13 0 0 0 0 0 0 0 10 67 172 322 507 708 866 949 941 845 685 494 312 171 74 19
4 16 34 59 98 151 223 331 499 757 1129 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1417 843 435 179 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 50 165 341 562 820 1057 1240 1360 1421 1428 1381 1273 1102 877 622 390 206 81 15 0 0 0 0 0 0 1 58 178 368 618 914 1177 1350 1395 1302 1094 817 533 304 138 40 0 7 17 27 36 44 45 40 34 28 25 24 23 22 19 14
9 5 1 0 0 3 6 8 10 10 8 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 84 230 440 696 975 1184 1277 1233 1063 806 535 308 138 36 0 0 0 0 0 0 0 0 0 27 99 210 350 505 633 691 665 561
406 260 135 47 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 189 394 651 940 1176 1288 1252 1075 802 526 291 120 22 0 24 114 274 498 775 1061 1273 1365 1313 1129 855
566 324 144 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 26 49 80 120 167 223 292 371 457 540 613 682 760 877 1065 1354 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1504 1147 984 1018 1211 1480 1600 1600 1600 1600 1320 919 564 286
101 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 98 202 323 449 532 540 473 357 244 197 257 438 709 1001 1232 1336 1285 1101 851 621 479 457 539 667 772 799 733 598 447 343 332 421 583 764 902 949 888
732 521 326 167 59 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 2 6 9 11 12 10 7 4 4 6 9 11 11 10 7 4 6 14 26 38 49 52 47 36 24 12 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 87 214 392
607 823 971 1012 931 743 519 313 146 36 87 265 527 845 1203 1472 1586 1521 1295 966 629 349 147 33 0 0 0 0 0 0 1 10 24 40 56 70 73 64 48 32 17 5 0 0 0 0 0 0 0 0 0 46 165 354 593 862 1088 1200 1172 1011
761 500 279 118 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 41 128 259 423 611 761 836 821 719 557 374 219 103 31 0 0 0 0 0 0 0 0 0 0 46 151 312 512 737 914 993 954 808 591 381 203
78 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 2 6 11 15 17 16 12 8 3 0 1 4 8 11 13 12 10 6 2 0 3 7 9 9 9 7 4 1 0 0 0 0 0 0 72 237
498 831 1218 1544 1600 1600 1496 1137 762 432 182 137 316 627 996 1396 1600 1600 1600 1317 927 571 349 316 466 737 1031 1251 1331 1249 1028 730 456 233 82 7 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 22 98 223 386
570 735 822 810 702 528 347 193 79 15 0 0 0 0 0 0 0 50 148 293 466 656 793 842 791 655 468 295 152 54 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3
4 4 4 3 2 0 0 1 3 7 11 15 18 19 21 25 31 43 57 74 91 105 115 119 118 113 107 101 94 84 67 50 33 17 29 96 220 391 596 791 922 956 883 723 517 323 168 64 11 7 12 13 12 14 9 3 0 0 0 1
1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 11 105 282 534 836 1157 1385 1467 1385 1161 851 547 297 122 25 0 0 0 0 0 0 0 0 59 212 462 794 1183 1535 1600 1600 1600 1299 905 554 277 95 7 10 28 47 64 80 84
74 56 37 21 9 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 156 378 689 1070 1456 1600 1600 1600 1486 1113 726 409 180 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 66 240 523 895 1331 1600 1600 1600 1600 1486 1063 665 352 141 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 2 3 3 3 3 1 0 0 1 9 20 35 50 62 65 59 45 30 16 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 10 18 25 31 32 27
20 12 5 1 0 0 0 0 0 0 0 0 64 216 455 760 1111 1408 1573 1567 1395 1101 755 454 223 75 5 0 1 2 2 3 4 4 4 3 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 9 13 15 14
11 8 4 1 0 0 0 1 2 2 2 2 1 0 0 0 2 7 12 17 22 22 18 14 8 4 0 0 0 0 0 0 13 57 132 236 360 478 552 557 489 366 245 136 126 244 493 805 1155 1439 1589 1568 1387 1092 755 456 231 85 14 0
0 0 0 0 0 0 8 45 114 210 326 446 532 565 535 453 338 219 123 53 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 9 20 34 49 60 64 61 50 35 21 11 3 0 0 0 0 0 0 0 0 0 0 0 0 2 5 9 11 12 11 9 5 2 0 0 0 0 2 3 4
3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 29 89 177 286 407 501 544 529 461 358 245 146 73 27 4 0 0 0 0 0 1 1 2 2 1 0 0 0 0 0 0 1 2 2 2 2 1
0 0 0 0 0 0 0 0 0 0 2 6 10 14 17 18 15 10 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 59 163 312 492 685 826 880 831 692 494 314 161 77 113 272 487 740 988 1149
1186 1092 902 677 490 398 429 567 764 953 1073 1087 990 809 585 370 203 89 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 9 17 27 37 42 41 33 23 14 6 1 0 0 2 4 5
5 5 4 2 0 0 0 0 0 0 0 0 4 46 125 235 365 499 587 603 544 432 305 212 197 283 460 693 926 1100 1171 1121 966 743 500 296 144 50 5 0 0 0 0 0 0 0 0 0 0 0 2 6 13 20 28 31 30 24 17 10
4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 4 4 4 3 1 0 0 0 2 6 10 14 15 13 10 6 3 0 0 0 0 0 0 0 0 35 126 282 498 767 1027 1220 1298 1238 1052
783 513 285 148 151 290 511 771 1020 1184 1223 1131 935 690 462 308 263 329 479 660 818 909 909 821 669 488 313 176 81 26 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 70 168 301 459 617 727 766 728 624 481
330 198 102 41 10 0 0 0 0 0 0 0 0 4 40 109 211 338 479 592 653 650 582 468 331 206 108 42 8 0 0 0 0 0 0 0 0 0 0 0 0 2 9 17 28 39 47 48 43 33 22 12 4 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 49 179 393 679 1020 1339 1554 1600 1510 1263 931 603 334 176 169 306 536 807 1067 1242 1291 1203 1003 744 489 303 227 270 410 601 783 909 946 889 756 580 396 238 123 50 12 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 92 250 487 788 1128 1411 1581 1599 1466 1213 899 584 332 154 50 9 12 18 22 24 22 16 9 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 8 16 25 34 39 39 34 25 16 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 10 18 27 35 40 41 37 29 20 12 5 1 0 0 0 0 0 0 0 32 120 265 458 687 902
1046 1087 1019 861 647 423 243 113 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 118 252 427 635 821 938 959 877 708 495 307 153 88 142 314 545 825 1096 1291 1373 1325 1162 923 656 409 222 97 28 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 126 286 506 774 1038 1233 1316 1272 1112 875 611 373 195 78 19 8 17 24 28 31 26 18 10 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 12 21 30 38
41 40 33 24 16 8 2 0 0 0 0 0 0 0 29 102 217 365 536 684 766 761 670 519 355 234 206 298 507 795 1104 1364 1516 1526 1397 1160 866 574 333 163 60 11 0 0 0 0 0 0 1 1 2 2 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 4 47 129 249 397 564 697 769 768 696 573 425 282 164 81 32 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 7 8 8 7 5 2 0 0 0 0 0 0 0 0 17
80 191 346 536 731 877 946 925 822 663 483 314 178 86 32 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 35 101 198 317 453 563 624 626 570 472 353 238 141 73 33 12 4 2 2 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 72 147 241 352 444 499 505 462 382 283 187 109 58 33 28 33 38 40 34 25 16 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 6 67 190 377 617 896 1136 1291 1327 1241 1054 808 553 331 171 69 17 0 0 0 0 0 0 0 0 0 0 0 3 6 11 16 21 25 27 27 27 25 22 17 12 7 3 1 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 3 3 4 3 0 0 53 167 347 584 869 1126 1302 1361 1289 1102 842 564 332 180 145 228 409 639 881 1076 1185 1186 1084 901 678 455 268 135 52 12 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 2 3 5 5 5 3 2 0 0 0 0 0 0 0 0 28 84 167 275 400 507 575 591 553 471 362 248 150 77 31 7 0 0 0 0 0 0 3 36 97 185 295 418 516 570 571 518 427 316 206
117 55 18 3 4 6 8 9 8 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 8 11 14 14 12 9 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 5 11 17 23 27 27 22 16 10 5 1 0 0 0 0 0 0 0 22 69 142 234 343 436 495 507 473 402 309 213 129 68 29 9 1 0 0 0 0 0 0 0 0 0 0 0 0 2 6 10 16 22 26 27 25 20 14
8 3 0 0 0 0 0 0 0 0 37 119 248 417 623 809 941 992 953 834 664 476 303 168 77 29 12 14 19 22 22 18 12 7 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 3 3 2 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 7 30 72 132 208 288 355 396 405 381 330 263 194 130 79 43 21 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 7 9 11 9 8
4 2 0 0 0 0 0 0 0 0 15 74 182 340 541 762 950 1072 1104 1043 907 723 526 348 206 109 51 22 9 5 3 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 73 193
373 604 869 1101 1258 1310 1249 1091 870 630 410 236 120 57 33 31 35 38 35 27 18 10 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 104 243 440 688 948 1161 1288 1305 1211 1030 799 561 353 197
98 47 30 28 27 24 18 10 3 0 0 2 5 10 14 18 20 20 17 14 9 6 3 1 0 0 0 0 0 0 0 0 0 28 94 200 339 511 673 793 849 834 750 619 464 313 186 96 39 10 0 0 0 0 0 0 0 0 0 0
1 2 2 2 2 1 0 0 2 26 73 141 225 321 399 445 453 422 362 285 207 138 83 45 22 9 3 0 0 0 0 0 0 1 2 3 4 4 4 2 1 0 0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0
0 0 4 10 17 24 31 33 31 27 21 17 13 10 8 6 4 2 0 0 0 1 4 7 8 9 8 6 3 1 0 0 0 0 2 4 7 10 11 10 7 4 2 0 0 0 1 2 3 4 5 6 6 8 9 11 12 12 11 8
6 3 1 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 4 4 4 3 1 0 0 0 0 0 0 0 0 2 5 10 15 21 26 30 33 34 33 30 24 17 11 6 2 0 0 0
0 2 4 5 7 8 7 5 3 1 0 0 0 0 1 20 58 115 189 276 353 405 424 406 358 288 212 139 81 41 16 4 0 0 0 0 0 0 10 35 76 131 200 267 319 344 338 301 243 174 114 78 80 125 215 338 474 600 693 736
721 652 544 417 292 184 104 50 20 6 1 0 0 0 0 10 31 65 108 162 212 249 268 266 244 207 162 118 80 51 31 20 13 8 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 29 65 114 173 234 280
305 305 282 241 190 139 94 58 32 16 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 9 11 12 11 9 5 3 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 40 89 157 241 327 398 440 448 422 367 295 220 150 93 52 27 12 5 1 0 0 0 0 0 1 3 4 4 4 3 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 3 3 2 1 0 0 0 0 0 2 4 4 5 4 3 1 0 0 0 0 0 0 0 0 17 52 108 183 277 367 438 478 479 444 380 300 217 144 88 50 28 17 14 14 15 16 17 17 16 13 9
6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 7 8 7 6 4 2 1 0 1 3 4 5 4 4 2 0 0 0 0 0 3 7 12 16 19 20 17 12 7 3 1
0 0 0 0 0 0 0 2 24 70 143 242 363 483 580 638 648 610 531 428 318 218 136 78 42 21 10 4 2 0 0 2 5 6 7 7 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 6 40 106 204 336 489 630 735 783 765 687 567 433 312 232 207 239 318 423 530 611 651 640 581 489 387 296 237 222 250 312 390 465 519 541 526 478 407 324 242 167 108 65 36 18 8 3 1 0 0 0 0 7 25
55 94 143 192 229 249 248 228 193 149 105 65 35 15 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 6 7 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0
0 0 1 5 10 16 23 29 31 31 27 22 16 11 7 4 2 1 0 0 0 1 3 3 3 3 3 1 0 0 0 1 3 5 8 10 11 9 7 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 3 5 6 8 8 6 4 3 1 0 0 0 5 25 59 107 169 238 299 342 361 354 323 275 218 162 112 73 44 25 13 6 2 1 0 0 0
0 0 0 0 0 0 0 0 0 0 1 3 5 6 7 7 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 4 7 9 10 9 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 10 17 25
32 36 35 31 23 16 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 8 10 11 10 8 5 2 1
0 0 0 6 26 60 107 166 230 284 320 333 322 290 243 191 140 95 59 33 17 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12 44 104 190 305 433 552 645 697 700
657 576 472 360 257 167 99 52 24 8 1 0 5 27 69 134 225 336 449 550 622 654 641 588 503 402 298 206 130 76 39 18 7 2 0 0 0 0 0 11 38 85 157 254 363 469 558 612 624 593 526 435 335 239 158 96 53 26 11 3
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 10 44 106 201 328 474 615 729 798 811 768 679 561 433 312 210 131 76 40 19 8 2 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 2 2 2 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 11 33 67 114 175 235 289 326 341 332 302 255 200 146 99 63
39 24 17 13 10 8 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 9 29 59 98 147 192 226 244 244 227 197 159 119 84 56 35 22 14 11 11 10 10 9 7 5 2 1 0 0 0 0 0 1 1 1 1 1 0 0
0 0 0 0 0 1 2 4 6 7 8 8 7 6 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 19 46 86 138 198 254 300 327 331 314 279 231 181 133 94 66 49 39 34 30 25 20 13 8 4
2 3 3 3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 3 3 3 2 0 0 0 0 0 4 16 35 63 100 140 177 206 223 226 216 194 163 129 96 67 44 27 15 7 3 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 1 2 2 1 1 0 0 0 0 0 0 0 2 4 6 8 8 6 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 14 44 89 151 228 302 361 398 406 387 345 290 229 171 122 84 57 38 26 18 12 7 4 1 0 1 10 29 57 95 143 191 232 261 274 268 245 211 170 129 94 67 48 37 30 25 20 14 9 4 1 0 0 0 0 3 6 11 15
19 20 20 16 11 7 3 1 0 0 0 0 0 0 15 45 95 163 250 337 413 466 488 478 438 377 304 231 163 108 66 38 20 9 5 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 1 1 2 2 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 11 34 69 117 178 239 292 327 341 332 302 255 200 146 97 60 34 17 9 4 3 1 0 0 0 13 42 89 155 242 335 421
488 526 528 496 436 358 276 199 133 83 47 24 11 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 7 9 9 8 7 5 3 1 0 0 0 0 0 0 0 0 0 1 4 9 14 19 21 21 17 12 7
3 0 0 0 0 0 0 4 20 50 95 155 226 294 351 386 394 375 336 289 247 223 226 257 311 376 441 492 518 515 483 428 356 280 207 145 97 63 40 26 18 12 8 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 2 2 2 0 0 0 0 12 37 77 134 209 288 363 422 458 466 445 400 338 268 199 139 89 51 27 12 4 0 0 0 1 15
45 91 156 239 324 399 454 482 477 441 383 313 240 176 126 91 69 56 48 40 32 22 14 7 2 0 0 0 0 0 0 0 0 8 27 61 111 181 261 341 410 457 475 462 423 363 295 227 165 114 73 43 23 11 3 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0
0 0 0 0 2 4 5 7 7 6 4 2 0 0 0 6 18 37 64 97 131 160 180 191 190 181 167 154 149 159 188 238 303 373 439 486 505 496 457 397 325 252 187 134 97 74 60 52 44 36 25 16 8 2 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 1 2 3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 5 6 5 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 5 17 37 66 104 143 178 203 216 212 197 170 136 100 68 40 21 8 2 0 0 0 0 0 7 22 43 71 105 137 162 177 181 173 158 135 110 84 60 39 22 12 4 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 17 37 64 99 135 166 190 202 203 192 172 145
117 88 63 43 28 17 11 8 5 4 4 3 2 2 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 13 41 87
152 239 330 416 487 532 547 531 487 424 350 276 206 147 99 65 40 24 14 9 7 6 6 5 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 32 67 112 169 225 273 304 318 312 291 257
217 175 134 98 66 40 22 10 3 0 0 0 1 3 5 6 7 6 4 3 1 0 0 0 1 9 24 44 68 95 116 129 133 128 116 101 88 80 84 102 138 187 245 305 358 395 411 405 377 334 282 227 176 133 97 68 44 27 15 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 19 43 76 119 163 202 229 241 239 220 193 161 128 97 73 53 39 29 21 14 9 5 2 0 0 3 12 29 53 85 122 156 183 201 207 200 182 156 125 93 61 37 19 7
1 0 0 0 0 7 23 48 80 119 157 186 205 211 207 193 172 148 124 101 81 65 50 38 25 16 8 3 0 0 1 3 4 4 4 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 3 5 8 9 8 7 4 2 0 0 0 0 0 0 0 1 2 2 2 2 2 4 7 12 16 18 16 13 9 5 1 0 0 0 0 0 0 0 0 1 6 17 35 62 98 139 184 225 261 284 293 285 264 235 206 182 171 176 196
229 268 306 335 352 353 341 320 296 275 262 259 266 278 292 301 304 297 282 261 240 221 207 200 199 203 209 214 215 212 202 186 164 140 115 92 72 56 43 33 25 18 13 9 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 3 5 6 7 8 7 8 7 8 7 6 5 3 1 0 0 0 0 0 0 1 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 9 11 12 10 7 4 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 8 21 39 64 93 123 148 167 178 179 170 154 132 108 84 62 44 30 21 16 15 14 12 10 7 4 2 0 0 0 0 0 0 0 1 3 6 8 10 10 8 6 3 1 0 0 0 0 1 3
4 5 6 5 3 1 0 0 0 0 0 0 1 10 25 47 78 116 155 193 225 249 264 267 260 242 216 185 152 120 90 65 46 32 23 17 14 12 10 9 6 5 4 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 2 2 1 1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 16 32 54 84 123 168 216 262 300 325 333 323 300 270 240 217 208 213 231 257 285 308 321 323 315 299 280 265 257 258 267 284 304 323 337 342 336 319 290 253 212
169 126 89 56 32 16 6 0 2 8 18 32 52 74 97 118 136 149 157 158 154 143 128 109 89 69 50 35 23 14 8 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 2 2 2 2 2 1 1 1 2 4 5 6 6 6 4 2 1 0 1 5 14 29 51 78 109 139 166 187 199 204 198 184 161 133 101 68 41 22 8 1 0 2 4 6 7 8 6 4 2 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 10 25 48 83 127 178 231 283 327 359 375 372 353 324 290 259 238 232 241 263 295 329 360 380 387 378 354 317 272 223 177 134 97 67
43 25 13 5 1 3 9 20 34 52 70 87 98 104 104 99 90 80 70 60 51 43 33 23 15 8 3 0 0 0 0 1 3 6 8 10 10 8 5 2 1 0 0 0 8 21 41 67 97 125 147 161 165 162 152 137 121 106 93 80
68 57 45 32 20 12 5 1 1 2 4 5 7 8 7 5 4 2 1 0 0 1 6 16 31 51 77 104 128 147 158 160 153 139 124 111 108 116 139 174 217 264 306 338 355 356 340 311 273 229 185 144 109 81 59 45 36 32 28 25
22 17 12 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 6 8 9 9 8 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 3 6 9 12 14 12 9 6 3 0 0 0 0
0 0 0 2 4 7 9 10 9 7 4 2 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 6 9 11 13 12 10 7 5 2 0 0 0
0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 3 14 29 51 81 116 152 189 225 256 279 293 292 279 253 218 179 140 105 76 55 40 31 26 21 17 13 10
8 6 4 4 3 2 1 1 1 1 1 1 1 0 0 0 0 1 2 2 2 2 1 0 3 14 34 64 104 151 198 240 273 294 301 295 277 252 223 192 162 135 110 87 67 50 35 22 13 7 5 6 10 13 16 18 17 14 9 6
2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 2 4 7 8 9 7 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 3 9 19 35 57 86 120 158
195 231 259 276 279 270 250 224 199 181 175 182 203 234 268 298 320 329 324 306 279 246 212 177 145 116 90 67 49 33 22 14 9 8 10 15 19 23 25 23 19 13 8 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 5 12 23 39 60 84 109 135 157 174 183 183 174 158 137 114 90 69 52 39 30 24 21 18 16 12 8 5 4 5 8 11 15 17 17 13 10 6 2 0 0 0 0 1 2 5 7 10 13 15 19 24 32 44 58 75 93 111 128
140 148 150 145 135 121 105 89 74 60 49 39 31 24 19 14 11 11 13 18 26 38 53 69 85 101 113 122 125 124 118 110 98 85 71 59 47 38 32 28 26 25 24 23 21 20 19 18 18 17 14 10 7 4 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 16 31 47 64 77 82 83 83 86 95
114 139 167 195 217 230 232 223 205 182 155 128 103 81 62 46 33 21 12 6 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 17 32 51 73 94 110 122 126 125 120 111
100 90 78 67 55 43 31 21 12 6 2 0 0 0 0 0 0 1 3 5 6 8 9 9 10 10 10 9 8 6 4 2 1 0 0 0 4 12 24 41 63 88 115 140 162 179 191 196 193 184 170 152 132 111 90 69 50 32 18 8
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 6 7 6 5 3 1 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 2 4 7 9 10 9 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 6 7 6 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 4 9 16 26 41 61 86 116 149 184 218 247 267 278 278 269 251 228 201 173 145 119 94 71 52 36 23 14 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 2 1 0 0 0 0 0 1 1 1 2 3 8 16 28 44 61 77 91 102 108 109 107 102 96 88 80 71 62 51 39 26 16 8 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 1 4 10 18 29 42 56 70 83 95 104 108 107 102 94 83 71 60 48 38 28 20 14 10 8 6 5 4 2 1 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 11 21 35 52 70 92 113 135 154 171 184 191 192 187 175 159 138 116 92 68 48 31 19 10
4 2 0 0 0 0 0 0 0 1 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0 1 2 3 2 2 1 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1
1 0 0 0 0 4 12 24 41 61 83 103 121 135 147 154 158 157 154 148 141 135 131 130 133 141 152 165 177 185 190 187 177 163 145 125 105 85 65 48 31 19 9 3 0 0 0 0 0 0 0 0 0 0 0 2 3 6 8 9
8 7 4 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 10 19 32 47 64 80 95 107 116 122 122 118 109 97 81 65 47 31 18 9 3 0 1 3 5 8 10 12 12 10 9 7 5 4 2 1 0
0 0 0 0 0 0 0 0 0 0 3 11 24 44 71 105 140 174 206 231 246 252 248 236 221 205 192 186 186 193 202 212 219 222 219 212 198 182 162 141 120 102 88 77 69 63 56 48 39 30 22 15 10 8 8 10 12 14 14 13
10 7 4 2 0 0 0 0 0 0 0 0 0 0 1 3 8 13 19 27 34 41 49 59 69 79 88 94 96 95 91 84 75 66 56 46 38 32 26 22 18 14 9 6 3 1 0 0 0 2 5 9 14 20 24 25 24 20 15 10
5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 5 7 9 9 8 6 3 3 4 6 8 9 10 9 6 4 2 0 0 0 0 0 0 2 5 7 9 9 7 5 2 0 0 0 3 11 23 39 59 79
98 114 127 137 145 149 151 150 147 144 140 138 140 143 150 160 171 181 189 194 194 190 181 168 151 133 113 92 72 53 38 24 14 7 3 1 0 0 0 0 0 0 0 0 2 3 4 4 4 3 3 2 2 2 2 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 9 13 16 18 18 18 18 18 19 21 26 36 49 66 86 107 127 143 155 160 160 154 145 134 122 108 95 82 70 59 48 39 31 23 17 11 7 4 2 0 0 0 0 0 0
0 0 0 0 0 1 3 6 9 13 14 15 13 11 9 8 7 7 8 9 9 9 8 6 4 2 1 0 0 0 0 0 0 0 0 0 2 7 15 26 42 61 82 105 130 155 182 207 230 249 262 267 263 250 229 204 176 149 122 98
77 60 45 34 24 17 11 6 3 1 0 0 0 0 1 3 4 6 7 7 5 3 2 0 0 0 0 0 0 0 3 9 18 32 50 70 89 109 126 140 149 154 154 150 143 131 118 103 85 68 51 36 22 12 5 2 0 2 3 5
6 8 8 8 8 8 7 6 5 4 2 1 1 0 0 0 0 0 0 0 0 0 2 7 14 23 35 48 61 74 88 101 111 118 121 119 112 101 87 71 54 38 24 13 6 2 1 2 4 6 7 9 9 8 6 4 2 1 0 0
0 0 0 0 0 1 2 3 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 8 9 10 9 6 4 2 0 0 0 0 0 0 0
0 0 1 1 1 1 1 2 5 9 14 19 23 23 20 15 10 5 1 0 0 0 0 0 0 0 0 0 7 20 39 61 84 100 105 97 79 55 34 16 4 0 1 5 10 16 23 29 33 36 39 43 49 55 63 71 77 82 86 87
86 84 79 72 64 55 45 35 26 17 11 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 12 20 29 38 46 53 58 63 66 68 67 66 61 54 45 37 28 21 14 10 6 3 1 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 9 17 29 43 59 75 92 108 124 141 156 170 181 188 188 182 172 159 142 125 108 91 74 58 44 31 20 12 7 3 1 0 0 0 0 0 0 0 0 0 0 0 2 4 6
7 7 5 3 2 1 2 6 10 15 21 26 31 37 44 52 62 72 81 88 92 92 86 77 64 50 37 28 22 20 21 22 21 18 15 10 5 2 2 3 5 6 6 5 3 2 0 0 0 0 0 0 0 0 1 2 2 2 2 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 10 18 30 43 59 75 92 107 122 135 147 157 163 168 168 164 159 150 139 126 111 93 75
58 42 29 19 11 7 4 3 3 3 3 2 2 2 2 2 2 2 1 1 0 0 0 0 0 0 0 1 1 2 2 2 2 2 3 5 7 10 13 14 14 13 10 6 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 2 2 2 2 2 1 0 0 0 0 0 2 5 6 8 8 6 4 2 0 0 0 0 2 5 7 10 11 10 7 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 8 11
15 16 15 12 8 5 2 1 1 3 4 6 7 8 8 8 8 9 9 8 6 5 3 2 0 0 2 6 11 17 22 26 28 28 26 24 21 18 16 15 14 13 14 15 18 22 26 33 40 49 60 74 89 106 125 144 163 178 190 196
197 192 182 170 154 138 123 108 95 82 71 60 52 45 41 38 37 35 33 31 28 24 20 15 10 6 3 1 0 0 0 0 0 2 5 10 14 19 22 23 22 21 20 19 20 21 23 25 26 25 23 19 14 9 6 2 0 0 0 3
7 14 21 30 37 42 43 41 36 29 22 16 11 7 5 4 2 1 0 1 1 3 4 6 7 8 8 7 7 7 8 10 12 14 15 15 14 12 9 8 7 8 9 11 12 11 8 6 3 1 0 0 2 4 6 7 7 6 4 2
0 0 2 4 6 8 9 10 9 9 8 8 9 9 9 8 6 4 3 1 0 0 0 0 1 4 7 11 15 17 18 17 14 10 7 3 1 2 5 9 15 20 24 26 25 22 17 11 7 3 1 0 0 0 0 0 0 0 1 2
5 8 10 12 11 10 7 4 2 0 0 0 0 0 1 2 3 3 2 1 0 0 0 0 0 0 0 0 0 0 1 2 5 7 9 10 10 9 9 8 8 8 8 8 9 9 9 8 6 4 3 1 0 0 0 0 0 1 2 4
5 8 9 11 13 14 15 16 16 16 15 13 11 10 8 8 7 7 7 6 4 3 4 4 5 5 4 3 2 0 0 3 6
);
is_deeply(\@trace,\@array);
@array = $abi->get_trace("T");
@trace = qw(
67 62 58 75 100 133 174 223 282 358 454 576 733 942 1220 1584 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 149...
323 256 221 209 210 212 209 199 183 162 140 118 95 73 52 33 18 8 2 0 0 0 0 0 0 0 0 0 0 0 1 2 5 11 22 37 55 76 98 116 129 135 134 124 108 86 62 39 22 9 2 0 0 0 0 0 0 0 0 0
0 0 0 0 0 2 7 16 27 40 53 64 73 81 90 99 112 124 136 147 156 163 169 172 173 168 157 137 111 79 51 27 11 1 0 0 0 35 132 286 479 692 868 946 908 768 572 381 250 212 267 389 528 636 676 633 518 366 227 112
35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 18 37 63 98 139 186 240 301 368 440 515
592 675 767 871 987 1117 1254 1392 1527 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1600 1549 1381 1218 1060 905 753 606 467 341 230 141 79 36 10 7 72 203 399 646 920 1135 1238 1203 1035 776 510 284 118 24 0 0 0 0 0 0 0
0 0 0 0 0 0 2 6 12 17 20 20 16 11 6 1 0 0 0 0 38 128 271 453 666 848 955 961 868 702 500 311 165 67 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 10 16 21 23
21 16 10 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 5 8 12 18 29 45 66 90 113 128 130 119 95 66 39 20 12 14 18 20 19 15 9 3 0 0 0 0 0 0 0 0 0 24 127 306 544
816 1072 1216 1211 1057 799 528 292 147 139 254 422 605 759 826 792 671 493 318 173 70 13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 101 254 468 724 982 1159 1211 1124 922 655 410 210 75 7 0 8 15 21 23 25 20 12 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 3 10 20 32 44 52 54 51 45 40 37 40 47 55 62 63 56 44 30 17 7 1
0 0 0 0 0 0 0 0 9 27 50 75 100 113 113 103 88 75 64 52 39 29 18 46 144 330 592 913 1220 1436 1502 1397 1146 819 510 276 176 212 347 506 648 717 693 587 432 277 149 59 11 3 11 21 28 34 35 29 20 11 5 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 9 21 31 36 34 30 21 8 14 101 272 524 836 1169 1421 1528 1462 1240 916 593 324 132 26 0 0 0 0 0 0 0 0
0 17 98 245 453 704 961 1141 1200 1121 925 659 413 211 74 5 1 10 21 30 38 44 42 34 24 14 7 3 0 0 0 0 0 0 0 0 33 153 361 645 978 1299 1506 1546 1413 1141 801 492 248 87 9 11 24 36 47 58 59 52 43 36
33 37 48 64 81 95 103 103 96 85 72 59 47 37 29 20 13 8 3 1 1 9 22 38 55 68 72 64 49 32 17 11 18 36 54 70 78 72 57 39 24 20 29 46 65 80 84 75 57 38 24 21 30 48 66 79 82 73 57 42
33 37 53 76 95 105 97 76 52 28 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 15 18 17 17 13 8 39 115 231 377 539 666 726 701 598 444 288 157 64 12 0 0
0 0 0 0 0 0 0 0 0 0 1 5 10 15 19 21 18 14 8 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 16 28 42 57 70 76 78 75 68 57 45 32 20 11 5 1 0 0 0 0 0 0
0 2 10 24 44 68 93 111 116 107 85 59 35 15 2 5 12 19 18 19 16 10 2 5 72 204 397 632 887 1075 1150 1093 921 676 435 235 95 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 12 32 59 87 115 128 124
104 74 46 23 13 16 29 43 56 64 64 55 41 28 15 6 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 9 14 19 22 22 19 14 9 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 57 223 497 858 1275 1600 1600 1600 1600 1320 898 533 251 74 0 4 16 27 35 41 41 31 20 10 3 0 0 0 0 0 0 0 0 0 0 0 64 229 487 810 1165 1452 1578 1511 1271 928 592 312 171 178 308 477 656 773 797 725 579 399 242
118 38 0 6 13 18 19 20 16 9 3 0 0 2 6 10 12 13 12 8 5 2 0 0 0 0 0 0 0 0 0 0 0 3 13 28 44 60 65 56 44 29 12 0 0 57 229 509 865 1262 1600 1600 1600 1501 1135 745 419 182 46 4
16 26 33 35 33 24 13 4 0 0 0 0 0 0 0 0 0 5 17 31 46 59 60 50 38 23 7 0 51 195 435 757 1139 1495 1600 1600 1600 1302 912 561 281 97 7 4 13 20 22 22 21 13 5 0 0 0 0 0 0 0 0 3
18 42 72 107 137 151 146 123 88 56 28 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 11 14 17 16 13 8 4 1 0 4 8 13 17 19 17 13 8 4 1 0 0 1 2 2 2 2 1 0 0
34 134 298 512 757 977 1103 1105 985 773 525 312 147 44 0 3 5 4 4 5 3 0 15 91 231 429 667 913 1088 1149 1082 904 661 423 228 92 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37 150 334
570 833 1063 1183 1164 1015 776 516 296 134 37 0 0 0 0 0 0 0 0 0 0 0 1 2 4 5 6 5 4 2 0 0 0 0 1 3 3 3 3 3 1 0 9 58 145 265 405 546 640 664 614 503 361 227 119 46 8 3 7 10
10 11 9 5 1 0 0 4 10 17 24 30 30 26 19 12 5 1 0 0 0 0 0 0 0 0 0 53 191 415 707 1047 1350 1531 1547 1397 1121 784 481 244 89 12 3 8 6 6 7 5 0 1 54 161 322 523 748 924 1004 969 826 613
399 217 121 133 244 394 558 683 731 689 572 414 261 152 116 158 262 391 511 586 595 538 433 302 186 94 34 4 0 0 0 0 0 0 0 9 99 268 506 788 1084 1283 1339 1238 1011 721 449 262 201 268 425 615 774 849 818 690 504 321 188 154
231 403 614 818 954 985 906 739 527 329 172 67 11 0 0 0 3 13 30 51 73 91 98 92 75 52 32 15 4 0 0 0 0 2 4 6 8 8 7 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22 109 258 459 696 928 1082 1123 1043 865 633 405 222 94 23 0 2 3 4 4 4 3 1 0 0 0 0 0 0 0 0 0 0 36 132 290 499 747 974 1117 1142 1040 838
585 359 184 116 159 298 470 654 790 846 810 693 525 346 199 91 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 13 20 25 27 24 18 11 5 1 0 0 0 0 0 0 0 56 178
365 602 876 1105 1236 1240 1120 905 647 404 216 88 20 0 0 0 0 1 6 14 24 35 44 46 42 34 26 22 25 34 48 62 71 73 65 50 33 19 8 8 20 39 62 86 103 109 101 84 61 40 27 24 33 48 64 74 74 64 47 30
15 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 100 246 446 683 924 1090 1145 1079 912 684 446 254 116 34 4 11 18 23 28 28 24 18 13 8 5 2 1 0 0 0 0
0 0 0 0 47 171 370 628 929 1199 1364 1388 1269 1039 754 478 260 111 28 1 3 3 3 3 3 0 0 0 0 1 5 11 17 23 27 27 24 18 12 6 2 0 0 0 0 0 0 0 14 89 225 419 656 909 1102 1193 1163 1023 805 556
338 172 64 10 0 0 0 0 2 7 16 26 37 44 44 36 27 16 7 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 98 234 418 635 851 997 1043 980 828 623 410 236
110 35 3 5 10 12 14 14 11 7 4 2 1 0 0 0 0 0 0 0 4 12 22 33 44 49 47 38 27 16 7 1 0 0 0 0 0 0 0 0 0 5 19 40 65 93 114 122 117 100 76 51 31 17 8 5 3 2 1 0
0 0 0 0 0 0 0 0 49 154 315 524 772 988 1127 1160 1083 915 695 468 276 137 51 11 4 7 9 10 11 10 8 6 5 4 2 1 0 0 0 0 0 0 8 59 158 308 502 721 910 1031 1055 979 823 618 406 235 111 36 2 0
0 0 0 0 0 0 0 0 0 0 0 0 2 6 10 15 18 19 17 13 9 5 3 1 0 0 0 0 2 10 22 37 53 64 67 59 45 30 15 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 20 104 249 448 688
933 1110 1184 1140 992 776 536 326 168 65 13 0 0 2 7 18 32 51 68 80 82 74 57 39 22 8 1 0 0 0 0 0 0 0 0 2 11 26 45 68 92 109 117 116 106 90 71 50 31 18 7 2 0 0 0 0 0 0 0 0
0 0 9 68 180 344 550 779 968 1077 1086 994 823 610 396 226 105 33 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 175 356 579 831 1031 1127 1101 960 745 509 311 191 168 236 364 512 638 709 709
640 521 377 240 132 58 15 3 7 9 9 10 7 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 73 220 443 726 1058 1338 1511 1542 1425 1191 890 581 334 155 47 0 0 1 6 13 23 35 48 57 61 59 51 39 26 15 7 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 36 140 313 546 825 1096 1286 1356 1294 1116 865 592 356 180 68 15 8 14 17 19 18 13 7 2 0 0 0 0 0 0 0 0 0 0 0 0 23 110 265 479 740 1007 1203 1284 1234
1067 828 575 368 248 232 304 430 564 665 703 672 579 448 306 184 93 36 7 0 0 0 0 0 0 0 0 0 0 0 0 0 3 13 29 50 73 94 108 112 107 95 77 57 37 23 11 3 0 0 0 1 3 5 7 8 6 5 2 1
0 0 0 0 0 0 0 0 0 0 8 23 44 66 87 99 95 79 57 35 16 4 0 0 0 0 0 0 5 15 28 42 59 70 74 74 68 60 52 46 43 41 40 37 31 26 29 53 112 214 358 532 712 865 962 983 925 801 637 464
309 189 109 66 49 49 57 66 75 81 83 82 78 70 61 53 46 43 44 49 58 72 86 99 110 115 112 99 79 56 35 17 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 84 203 367 562 761 904 962 925 805 631
439 268 140 56 14 4 6 5 5 5 3 0 0 20 70 150 257 387 509 597 631 607 529 416 290 178 93 37 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 3 10 20 31 42 49 50 45 35 24 14 6 4 8 16 24 32 35 32 25 17 9 3 0 3 11 24 38 53 63 66 59 45 30 17 7 1 0 0 12 54 125 223 343 464 556 599 585 520 416 295 184
99 41 9 0 0 0 0 0 0 38 131 284 493 751 1002 1192 1285 1262 1130 919 671 429 242 111 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 39 105
206 340 497 639 741 780 751 658 523 371 232 125 54 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 14 28 46 66 82 91 92 85 73 57 41 26 14 7 2 0 0 3 27 75 147 237 340 427 478 485 445 368 272 176 99
45 16 7 10 12 13 12 8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 26 77 156 257 375 476 540 550 504 414 300 190 110 82 113 200 321 453 565 633 644 595 499 377 251 147 72 25 3 0 0 0 0 0 0 0
14 49 106 181 273 362 427 455 443 391 312 220 137 73 29 5 0 0 0 0 0 0 0 0 0 3 49 137 267 430 615 768 859 871 804 676 514 349 208 107 42 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
4 7 8 9 8 6 3 0 2 7 14 24 34 43 48 47 41 31 21 11 4 0 0 0 0 0 51 154 308 500 721 903 1006 1013 925 770 587 420 304 259 286 365 468 561 617 620 571 478 363 245 146 75 29 6 0 0 2 9 19 30
42 49 49 41 30 19 8 1 0 0 0 0 0 0 0 0 0 0 1 6 17 29 44 59 70 74 73 66 56 43 30 18 10 4 0 0 0 0 0 0 0 0 0 0 1 6 15 27 39 47 49 44 33 21 11 3 0 0 0 0
0 0 0 0 0 2 9 20 33 49 64 74 78 75 68 57 46 37 33 32 35 41 46 48 48 42 35 25 16 9 4 1 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 12 23 36 50 61
66 66 60 51 39 27 16 8 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 5 5 5 4 2 3 26 73 145 241 352 453 524 549 526 461 368 266 172 98 48 20 6 2 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 4 13 27 43 61 74 78 74 61 44 28 15 5 0 0 2 5 8 11 12 11 8 5 2 0 0 0 0 16 55 118 203 308 408 485 523 517 468 390 295 201 121 63 27 10 6 7 8 8 6 3
1 0 0 0 0 0 0 1 1 1 1 1 0 0 2 26 71 139 225 324 408 460 472 440 375 291 205 131 77 43 25 16 11 8 4 1 2 6 9 11 11 10 7 3 0 0 0 0 0 1 21 66 143 252 392 538 665 749 774 735
641 511 373 254 176 151 177 242 330 417 481 510 496 442 359 262 168 95 43 13 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 6 9 12 14 15 13 10 7 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 2 7 14 20 26 28 26 20 13 7 3 0 0 0 0 0 0 0 0 0 12 62 152 283 451 638 798 904 934 887 775 626 475 353 279 261 290 348 411 460 480 464 415 343 260 179 110 59 27 9
2 0 0 0 0 0 0 0 0 0 0 1 3 4 5 5 4 3 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 37 92 171 275 390 489 558 581 555 489 399 305 230 189 189 226
289 360 421 457 459 428 369 293 213 142 86 48 26 17 14 14 14 12 9 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 13 40 88 159 252 356 457 535 578 577 532 453 355 253 163 93
47 20 7 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 20 50 97 159 231 298 349 375 371 339 286 223 160 106 65 35 17 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 31 75 147 251
378 513 636 723 758 733 654 536 403 275 170 95 50 28 19 16 12 9 5 2 0 1 3 4 6 8 9 10 11 15 20 29 40 51 60 65 65 58 46 34 24 18 18 25 36 47 55 58 54 45 33 22 14 11 14 20 29 38 46 52
56 57 55 50 42 32 21 12 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9 16 25 35 42 46 47 44 39 32 22 14 8 3 0 0 5 25 60 110 171 236 289 321 326 305 263 209 154 103
65 36 19 9 4 1 0 0 2 5 8 11 12 10 8 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 45 111 204 320 446 549 610 620 579 498 394 283
183 104 51 19 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 9 15 19 20 18 14 9 4 0 0 2 8 15 23 33 39 41 38 31 22 13 7 2 0 0
0 0 0 0 0 0 0 0 0 8 38 94 176 286 413 531 624 676 679 633 547 436 318 208 121 60 23 4 0 0 0 0 0 4 20 53 104 175 258 341 409 450 455 427 370 300 229 175 145 144 170 213 260 301 324 323 299 257 203 148
97 57 29 12 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 13 37 76 131 200 270 329 368 379 361 317 257 191 129 77 41 18 6 0 0 0 0 0 0 0 0 23 72 149 247 366 474 554 590 581 529
447 347 247 160 92 46 21 8 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 12 18 24 29 32 33 31 27 21 15 8 4 1 0 0 0 0 0 0 0 0
0 5 29 74 142 235 346 454 545 602 618 590 524 435 341 259 202 180 190 224 269 309 334 335 312 270 217 161 112 73 47 31 22 18 15 12 8 6 3 1 0 0 0 0 0 0 0 0 0 0 0 4 19 46 85 137 196 251 296 321
323 303 264 213 159 108 67 37 18 7 2 0 0 0 0 0 0 5 36 93 173 273 386 480 543 565 544 487 406 313 224 146 86 45 21 8 2 0 0 0 0 0 0 0 0 0 0 0 1 3 6 10 14 16 17 16 12 8 5 2
0 0 0 0 0 0 0 0 0 0 0 0 3 9 16 24 31 33 31 24 16 9 3 0 0 0 0 0 0 0 0 0 1 4 8 14 19 23 23 20 14 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 12 19 27 33 37 37 36 32 28 24 21 19 19 19 21 22 22 20 16 11 7 3 1 0 0 0 0 0 0 0 1 4 8 11 13 14 12 10 13 26 54 100 164 239
316 381 424 438 420 375 310 240 172 116 77 53 40 33 28 21 15 9 3 6 25 59 109 176 253 325 381 413 415 387 337 277 220 175 152 152 171 201 234 261 275 272 252 219 177 132 89 53 28 12 3 0 0 0 0 0 0 0 0 0
0 0 0 0 1 2 2 2 2 2 1 0 0 0 1 2 3 4 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 6 10 14 19 23 24 25 24 21 17 13 8 4 1
0 0 0 0 0 0 0 0 0 11 36 80 144 229 320 407 475 514 518 490 435 365 291 228 184 163 168 192 225 260 286 294 283 254 212 163 115 74 42 20 8 2 0 0 0 0 0 0 0 0 0 0 1 6 14 24 34 44 49 49
45 38 31 25 21 20 21 24 29 35 41 46 50 49 45 37 27 18 9 3 0 0 7 25 56 101 159 223 280 324 347 348 327 290 244 195 148 107 72 44 24 11 3 0 0 0 0 0 0 0 0 0 1 4 8 11 13 13 11 8
4 1 0 0 0 0 0 0 1 3 5 7 8 11 14 17 22 27 29 29 27 22 17 13 10 8 6 5 4 2 2 2 3 2 3 2 2 3 5 8 11 13 15 13 10 7 3 1 0 0 1 2 3 4 4 4 3 1 0 0
1 3 4 4 4 3 2 1 0 0 0 0 0 0 0 6 31 79 150 246 358 465 551 603 614 582 516 428 333 243 169 113 73 46 28 16 8 2 0 0 0 0 0 0 0 0 2 7 13 21 30 35 37 34 29 21 14 10 10 13
20 29 38 45 49 50 47 42 35 30 24 19 13 9 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 16 38 72 120 180 244 304 351 378 381 360 318 268 217 176 152 148 160 184 210
231 241 236 220 195 169 147 136 137 151 175 204 228 244 245 230 201 163 123 86 55 32 18 9 5 2 1 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 1 5 10 15 20 23 20 15 10 5 1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 4 9 14 18 21 20 17 13 9 7 6 6 7 7 5 4 3 4 9 19 34 50 66 79 87 88 85 77 65 52 37 24 13 6 1 0 0 0 0 0 0 0 5 19 45 84 139 202
268 327 373 399 404 388 352 303 246 189 134 89 54 30 15 6 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 15 47 96 161 242 321 385 426 437 419 377 322 265 220 193 188 202 230 260 285 295 287 262 223 178 134
95 66 47 37 31 28 25 22 19 15 13 11 11 11 11 9 7 5 2 1 0 2 7 14 23 35 46 53 57 54 45 34 22 12 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 4 8 11
14 15 14 12 8 5 2 1 0 0 0 0 0 0 0 0 0 1 3 7 12 17 20 22 22 21 20 20 21 23 26 29 31 32 31 28 24 19 14 9 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 13 18
23 25 26 24 21 17 12 7 4 1 0 0 0 5 18 39 67 104 140 172 194 205 203 192 173 152 133 120 117 128 150 183 218 250 271 275 262 235 199 164 138 127 133 153 180 205 223 226 215 190 159 123 89 61 37 21 10 4 0 0
0 3 9 19 35 58 87 120 153 182 203 209 201 181 151 119 87 61 39 23 12 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7 13 19 25 30 32 33 34 34 33 31
28 23 19 18 21 31 48 72 103 136 169 195 213 218 210 189 159 125 90 60 38 25 19 19 21 22 20 16 11 6 2 0 0 0 0 0 0 0 0 3 8 15 23 34 44 52 56 56 51 42 31 20 10 5 7 19 43 80 128 184
240 288 321 334 325 296 253 203 155 114 83 64 51 43 34 25 16 8 2 0 0 0 0 0 1 3 6 10 13 15 15 14 11 8 7 7 8 8 8 7 5 2 1 0 1 12 35 73 128 200 277 352 413 454 468 454 415 357 289 221
159 109 73 49 35 27 23 21 21 22 27 37 52 73 98 123 145 159 163 155 139 118 100 89 90 104 130 164 198 227 244 248 236 213 185 158 137 128 130 144 164 189 210 224 226 214 190 157 120 86 58 37 23 13 8 4 1 0 0 0
0 0 0 0 0 0 0 0 3 8 16 24 33 38 40 39 35 29 22 16 10 7 8 15 30 53 82 116 151 182 205 215 213 199 175 144 113 83 58 38 24 13 7 3 3 4 8 12 17 21 24 25 24 22 17 12 7 3 1 1
2 3 3 3 3 1 1 0 0 0 0 0 0 0 0 0 0 0 3 7 13 20 27 32 35 37 36 34 32 28 24 19 16 13 11 11 11 12 13 13 11 9 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 1 9 29 61 109 174 249 329 403 464 503 517 503 463 404 335 262 194 135 86 50 26 11 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 29 62 107 165 226 279 318 337
337 319 286 246 203 163 129 101 78 58 39 25 14 6 1 0 2 5 8 9 9 7 5 2 0 0 0 0 0 8 30 68 123 195 276 351 411 447 456 437 395 338 274 210 153 105 68 41 23 12 5 1 0 0 0 0 0 0 0 3
9 16 24 33 36 36 32 25 16 9 4 1 0 0 0 0 0 0 0 9 33 73 131 209 298 385 461 519 548 548 519 465 393 312 232 161 105 65 42 31 27 28 30 31 31 29 25 20 14 8 4 1 0 2 6 11 16 22 25 25
23 19 15 12 11 13 16 19 21 21 18 13 8 4 1 3 9 15 22 28 29 26 20 14 9 6 6 6 8 9 10 12 15 20 27 35 41 45 45 41 34 24 15 8 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 2 4 7 10 14 18 22 24 25 24 20 15 10 6 2 0 0 1 8 21 42 74 116 166 220 272 316 345 357 348 322 281 231 178 128 85 52 29 16 12 13 21 36 61 97 143 198 256 311 356 383 390 378 350 313 274 239 214
200 197 203 215 228 237 241 236 222 199 171 139 107 76 48 27 13 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 4 5 5 5 4 5 5 5 4 4 2 1 0 0 0
2 3 5 6 7 5 4 2 1 0 0 0 1 3 4 6 6 6 5 3 1 1 0 0 0 0 0 0 6 23 52 96 156 225 297 364 417 452 464 453 422 378 329 283 248 226 218 219 226 231 231 224 208 189 171 157 151 154 166 184
203 219 229 231 222 207 187 168 154 148 151 162 177 194 208 215 213 205 191 175 161 154 155 164 179 196 210 218 217 207 192 175 162 156 160 172 190 209 226 236 238 230 212 185 155 123 95 72 54 43 34 26 20 17 16 20 30 44 63 86
113 140 164 183 192 191 180 160 134 107 82 60 45 36 31 30 32 33 32 28 22 15 8 3 0 0 0 2 5 7 9 9 8 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 2 3 6 10 16 20 24 26 25 20 14 9 4 1 0 0 1 2 4 5 6 5 4 2 1 0 2 7 13 20 28 36 41 46 49 52 52 49 42 33 23 13 6 2 0 0 0 1 4 9 14 20 25 29
32 32 31 30 28 25 23 20 19 19 23 32 48 73 107 148 195 242 284 317 336 338 323 293 255 212 171 132 101 76 55 38 24 14 7 2 0 4 18 41 74 117 166 212 252 283 300 303 292 270 237 199 160 124 93 70 54 44 37 33
27 21 15 10 7 8 11 16 22 26 29 30 29 26 22 18 13 9 5 2 0 0 0 0 1 4 8 15 22 28 31 31 28 21 14 8 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 5 10 17 23 27 27 23 17 10 5 1 0 0 0 0 0 3 13 30 57 94 141 193 246 294 332 355 360 348 320 280 233 184 138 97 64 41 27 20 18 18 20 21 22 23 22 20 17 12 8 4 1 0 0 0 8 25
54 93 143 198 252 299 335 358 366 359 340 309 270 227 184 143 107 79 57 42 31 22 14 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 7 10 13
14 11 8 5 2 0 0 0 0 0 2 6 11 17 23 28 32 34 35 34 32 30 26 22 17 14 11 9 10 13 17 21 23 23 18 13 8 3 0 3 7 10 13 14 12 10 7 4 4 4 5 5 4 3 1 0 0 0 0 1
5 11 18 27 37 50 66 86 110 135 159 177 187 187 180 169 157 149 147 152 162 174 186 194 197 196 192 186 178 170 161 153 146 142 141 145 151 159 165 168 166 161 152 142 134 130 131 136 145 157 168 176 181 180 175 169 162 157 156 160
165 173 181 188 191 190 185 176 165 154 147 145 148 155 163 168 168 164 156 145 135 128 126 130 140 155 171 185 195 198 191 178 157 132 105 80 58 41 30 22 19 17 17 16 15 13 11 8 5 2 1 0 0 0 0 0 0 0 0 0
1 2 4 6 9 12 14 16 18 19 23 30 44 65 93 125 158 187 210 223 228 220 204 180 151 119 89 62 41 26 18 14 14 15 16 14 11 7 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4
12 27 47 75 105 135 162 184 200 208 211 207 197 181 161 137 111 87 65 48 36 28 22 18 14 10 5 3 2 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 8 12 15 16
15 11 7 5 4 5 8 11 13 13 12 11 9 8 9 11 15 20 27 37 51 69 92 116 141 164 183 196 203 202 192 174 150 122 92 65 43 28 19 15 15 14 13 10 7 3 1 0 0 0 0 0 0 2 7 15 24 35 43 47
45 39 28 18 9 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 4 4 4 3 2 1 0 0 1 3 5 6 7 5 4 2 1 0 0 1 3 4 5 7 8 11 15 23 33 48 65 86 105 120 129 130
121 106 88 69 53 41 33 29 25 22 18 13 8 4 1 0 0 0 0 1 5 10 14 17 19 16 12 7 4 3 4 7 10 14 17 19 20 20 19 19 19 22 28 38 50 66 83 99 111 119 120 115 105 92 78 63 50 38 28 18
11 6 2 0 0 2 11 27 52 84 122 158 190 213 225 227 218 202 179 152 123 94 68 47 30 19 13 10 8 7 5 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 8
13 19 23 23 22 18 14 11 9 9 10 12 13 14 14 13 12 11 11 12 14 17 21 24 25 24 19 13 8 3 0 3 10 23 42 67 95 123 148 165 174 173 163 146 127 106 88 72 55 38 25 14 5 0 3 16 37 62 88 109
116 107 83 57 33 14 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 5 9 12 17 22 29 39 53 69 84 97 104 103 95 82 66 49 35 23 14 8 5 2 1 0 0 0
0 0 0 0 0 0 0 0 1 5 11 17 23 25 23 17 11 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 3 4 5 6 6 6 5 6 6 6 5 4 3 1 0 0 0 0 0 1 3 4 5 6 6 6 5 5 5 6 6 6 5 4 3 1 0 0 0 0 0 1 1 1 1 1 0 1 5 13 25 42 65
90 115 137 155 164 166 162 153 142 130 120 113 109 107 108 111 114 116 116 114 108 100 89 77 63 49 37 27 21 18 18 19 20 17 14 9 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 3 4 5 6 7 7 6 5 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0 1 7 20 41 68 102 137 169 196 214 224 224 216 201 184 167 152 141 136 135 135 136 134 130 123 115 107 102 100 102 108 116 124 130 135
136 133 127 117 104 88 70 52 34 20 10 4 3 11 27 48 77 111 145 177 203 221 231 232 224 209 190 167 144 120 97 74 53 34 20 9 2 0 0 1 7 18 33 53 74 96 114 130 143 153 160 164 164 161 153 142 128 112 94 75
56 41 27 18 13 11 12 17 23 31 39 47 54 59 61 62 63 63 65 68 70 69 64 55 42 28 16 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 11 26 47 72 100 128 151 171 186 197 203 203 195 181 160 134
108 84 64 49 40 33 27 21 14 9 4 1 0 0 1 2 3 3 3 2 1 0 0 0 0 0 0 0 0 0 1 2 4 5 6 5 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 4 15 32 56 88 124 160 194
223 243 254 254 244 226 203 178 154 132 115 100 89 77 63 48 33 20 11 8 12 22 35 50 64 77 85 89 89 84 76 64 50 37 24 14 6 2 0 0 0 0 0 0 1 3 5 6 6 6 5 4 4 6 9 13 16 16 16 13
9 5 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 18 32 53 75 101 126 148 165 178 184 184 180 174 168 163 157 155 152 150 147 143 137 128 119 109
99 92 87 85 87 92 100 109 118 126 130 132 128 120 108 94 79 64 49 36 24 14 7 2 0 0 0 0 0 0 0 0 0 0 0 0 0 5 18 37 62 93 125 155 180 201 218 230 238 240 237 229 218 205 192 180 169 161 152 143
132 120 107 93 79 67 54 44 33 25 16 11 6 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 19 39 65 100 134 168 195 214 224 226 220 210 196 182 170 160 151 145 138 132
124 117 109 103 99 98 99 103 108 112 114 115 114 113 112 111 111 109 103 93 80 64 46 30 17 8 3 0 0 0 0 0 0 0 0 0 0 0 0 6 19 37 60 91 121 149 175 197 216 229 236 234 226 209 186 160 133 107 84 64
48 36 27 19 15 14 17 26 41 60 83 104 124 139 151 158 162 162 160 153 141 124 102 77 51 31 15 4 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 5 6 8 8 6 5 3 1 0 0 0 0 0 1 3 4 5
5 4 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7 12 18 24 28 30 30 27 22 16 11 6 2 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 2 3 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 4 7 10 13 13 10 7 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 11 23 40 63 88 114 140 164 185 201 212 214 210
199 184 166 147 131 119 109 102 97 94 90 84 77 66 53 39 25 14 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 2 2 2 2 1 0 1 5 15 27 45 65 88 109 129 147 165 180 191 199 202 198 185 165 140 114 89 70 57 51 47 43 38 31 21 13 6 2 0 0 0 0 0 0 0 0 0 0 1 5 12 20
30 39 47 51 53 54 55 55 57 59 62 66 69 71 73 74 72 70 66 63 61 60 62 66 70 74 74 69 59 48 35 26 24 30 44 62 81 95 100 95 78 56 36 18 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 2 7 14 23 34 46 58 71 85 103 121 142 160 177 190 198 199 195 186 172 155 138 121 106 93 84 76 69 63 58 53 48 43 38 34 31 29 28 27 28 29 32 37 43 50 59 68 78 88 98 108 113 116 114 109 99 88 76 63
51 40 31 22 15 10 5 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 9 22 39 62 87 112 136 155 171 183 191 195 195 191 185 177 168 158 146 135 122 111 100 93 90 92 98 106
116 121 123 120 111 100 90 81 74 70 68 64 59 51 40 27 17 9 2 0 0 0 0 0 0 0 0 0 0 0 1 9 21 39 61 86 110 132 153 170 184 194 198 195 185 168 144 118 91 66 47 34 26 24 22 20 16 12 7 3
1 1 3 5 6 6 5 3 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 5 8 13 21 32 46 62 76 88 94 96 92 87 81 77 76 79 85 92 99 103 104 100 93 85 76 69 63 59 55 49 42 32 22
13 6 1 0 1 5 10 17 25 32 39 43 46 47 47 45 42 37 32 26 20 16 14 14 14 14 14 11 8 5 2 0 0 0 0 0 0 1 2 3 4 3 2 1 0 0 0 0 0 0 0 0 0 0 1 4 9 17 29 43
58 74 91 107 120 129 134 134 129 120 107 91 73 56 40 27 17 11 8 5 3 2 1 0 0 0 0 0 0 0 0 0 0 0 3 11 23 38 58 79 99 115 128 136 140 138 132 125 117 109 104 100 98 97 96 94 92 87 82 74
65 54 42 30 19 10 4 2 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 7 17 31 50 70 90 107 120 130 137 143 145 146 146 143 137 131 123 115 106 98 92 86
82 79 75 71 66 60 55 51 50 50 52 54 56 55 52 47 40 32 24 16 9 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 2 2 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 9 19 33 51 70 88 105 119 129 135 137 137 134 130 125 120 115 111 108 104 101 97 94 91 88 86 83 80 76 71 65 58 51 44 38 34 30 29 29 32 36 40 45 50 56
60 64 66 65 62 57 50 41 34 27 23 22 24 28 31 34 36 36 36 35 35 35 36 36 36 34 29 24 19 17 18 25 38 54 73 91 108 121 131 137 140 139 136 131 124 116 109 104 100 99 101 103 105 106 103 98 90 79 65 50
34 21 10 3 0 0 0 4 9 15 21 26 29 27 24 21 18 18 21 27 34 43 49 54 55 56 55 56 57 59 62 63 64 65 65 65 65 65 63 62 59 56 52 48 42 36 29 22 18 16 17 23 33 44 56 66 71 73 71 65
57 46 35 24 14 7 2 0 0 0 0 1 4 7 11 14 16 15 13 12 13 14 19 26 34 43 53 64 74 82 90 94 96 95 92 85 76 65 54 43 35 28 25 22 19 17 13 10 6 3 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 10 19 28 37 43 45 40 30 22 12 4 5 22 35
);
is_deeply(\@trace,\@array);
is (8853, $abi->get_trace_length());
#print STDERR $abi->get_trace_length();
#my $abi1 = ABI->new("t/TEST_modified.abi");
is(734, $abi->get_corrected_sequence_length());
@base_calls = $abi->get_corrected_base_calls();
@b_calls =
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AC/MrGamoo.pm view on Meta::CPAN
# -*- perl -*-
# Copyright (c) 2010 AdCopy
# Author: Jeff Weisberg
# Created: 2010-May-13 18:18 (EDT)
# Function: documentation
#
# $Id: MrGamoo.pm,v 1.2 2011/01/12 19:29:21 jaw Exp $
package AC::MrGamoo;
use strict;
our $VERSION = 1.0;
=head1 NAME
AC::MrGamoo - Map/Reduce Framework
=head1 SYNOPSIS
use AC::MrGamoo::D;
use strict;
my $m = AC::MrGamoo::D->new( );
$m->daemon( $configfile, {
argv => \@ARGV,
foreground => $OPT{f},
debugall => $OPT{d},
port => $OPT{p},
} );
exit;
=head1 CONFIG FILE
various parameters need to be specified in a config file.
if you modify the file, it will be reloaded automagically.
=over 4
=item port
specify the TCP port to use
port 3504
=item environment
specify the environment or realm to run in, so you can run multiple
independent map/reduce networks, such as production, staging, and dev.
environment prod
=item allow
specify networks allowed to connect.
allow 127.0.0.1
allow 192.168.10.0/24
=item seedpeer
specify initial peers to contact when starting. the author generally
specifies 2 on the east coast, and 2 on the west coast.
seedpeer 192.168.10.11:3503
seedpeer 192.168.10.12:3503
=item secret
specify a secret key used to encrypt data transfered between
systems in different datacenters.
secret squeamish-ossifrage
=item syslog
specify a syslog facility for log messages.
syslog local5
=item basedir
local directory to store files
basedir /home/data
=item debug
enable debugging for a particular section
debug job
=back
=head1 BUGS
Too many to list here.
=head1 SEE ALSO
AC::MrGamoo::Client
=head1 AUTHOR
Jeff Weisberg - http://www.solvemedia.com/
=cut
1;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AC/Yenta.pm view on Meta::CPAN
=head2 Eventual Consistency
Key-value data is versioned with timestamps. By default, newest wins.
Maps can be configured to keep and return multiple versions and client
code can use other conflict resolution mechanisms.
Lost, missing or otherwise inconsistent data is detected
by kibitzing merkle tree hash values.
=head2 Topological awareness
Yentas can take network topology into account when tranferring
data around to minimize long-distance transfers. You will need to
write a custom C<MySelf> class with a C<my_datacenter> function.
=head2 Multiple Network Interfaces / NAT
Yentas can take advantage of multiple network interfaces with
different IP addresses (eg. a private internal network + a public network),
or multiple addresses (eg. a private addresses and a public address)
and various NAT configurations.
You will need to write a custom C<MySelf> class and C<my_network_info>
function.
=head2 Network Information
By default, yentas obtain their primary IP address by calling
C<gethostbyname( hostname() )>. If this either does not work on your
systems, or isn't the value you want to use,
you will need to write a custom C<MySelf> class and C<my_network_info>
function.
=head1 CONFIG FILE
various parameters need to be specified in a config file.
if you modify the file, it will be reloaded automagically.
=over 4
=item port
specify the TCP port to use
port 3503
=item environment
specify the environment or realm to run in, so you can run multiple
independent yenta networks, such as production, staging, and dev.
environment prod
=item allow
specify networks allowed to connect.
allow 127.0.0.1
allow 192.168.10.0/24
=item seedpeer
specify initial peers to contact when starting. the author generally
specifies 2 on the east coast, and 2 on the west coast.
seedpeer 192.168.10.11:3503
seedpeer 192.168.10.12:3503
=item secret
specify a secret key used to encrypt data transfered between
yentas in different datacenters.
secret squeamish-ossifrage
=item syslog
specify a syslog facility for log messages.
syslog local5
=item debug
enable debugging for a particular section
debug map
=item map
configure a map (a collection of key-value data). you do not need
to configure the same set of maps on all servers. maps should be
configured similarly on all servers that they are on.
map users {
backend bdb
dbfile /home/acdata/users.ydb
history 4
}
=back
=head1 BUGS
Too many to list here.
=head1 SEE ALSO
AC::Yenta::Client
Amazon Dynamo - http://www.allthingsdistributed.com/2007/10/amazons_dynamo.html
=head1 AUTHOR
Jeff Weisberg - http://www.solvemedia.com/
=cut
1;
view all matches for this distribution
view release on metacpan or search on metacpan
t/acl.permit.txt view on Meta::CPAN
/action=[create-user] group=[(admin|superadmin)]/ Allow admins and superadmins to create users
/action=[delete-user] group=[(super)?admin]/ Allow admins and superadmins to delete users
/action=[login] group=[user]/ Allow users to login
/action=[send-mail] group=[user] dow=[(mon|tue|wed|thu|fri)]/ Allow users to send mail during the work week
/action=[login-app] group=[(super-)?admin] ip=[1.2.3.\d{1,3}] dow=[.*]/ Allow superadmins to login to the app from 1.2.3.0/24
/account=[.*?@.*.adm] action=[login-mac] group=[(super-)?admin]/ Allow mac access to superadmins
view all matches for this distribution
view release on metacpan or search on metacpan
tiny-AES-c/aes.c view on Meta::CPAN
*/
/*****************************************************************************/
/* Includes: */
/*****************************************************************************/
#include <stdint.h>
#include <string.h> // CBC mode, for memset
#include "aes.h"
/*****************************************************************************/
/* Defines: */
/*****************************************************************************/
// The number of columns comprising a state in AES. This is a constant in AES. Value=4
#define Nb 4
#if defined(AES256) && (AES256 == 1)
#define Nk 8
#define Nr 14
#elif defined(AES192) && (AES192 == 1)
#define Nk 6
#define Nr 12
#else
#define Nk 4 // The number of 32 bit words in a key.
#define Nr 10 // The number of rounds in AES Cipher.
#endif
// jcallan@github points out that declaring Multiply as a function
// reduces code size considerably with the Keil ARM compiler.
// See this link for more information: https://github.com/kokke/tiny-AES-C/pull/3
#ifndef MULTIPLY_AS_A_FUNCTION
#define MULTIPLY_AS_A_FUNCTION 0
#endif
/*****************************************************************************/
/* Private variables: */
/*****************************************************************************/
// state - array holding the intermediate results during decryption.
typedef uint8_t state_t[4][4];
// The lookup-tables are marked const so they can be placed in read-only storage instead of RAM
// The numbers below can be computed dynamically trading ROM for RAM -
// This can be useful in (embedded) bootloader applications, where ROM is often limited.
static const uint8_t sbox[256] = {
//0 1 2 3 4 5 6 7 8 9 A B C D E F
0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 };
static const uint8_t rsbox[256] = {
0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb,
0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb,
0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,
0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25,
0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92,
0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,
0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06,
0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b,
0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,
0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e,
0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b,
0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,
0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f,
0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef,
0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,
0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d };
// The round constant word array, Rcon[i], contains the values given by
// x to the power (i-1) being powers of x (x is denoted as {02}) in the field GF(2^8)
static const uint8_t Rcon[11] = {
0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36 };
/*
* Jordan Goulder points out in PR #12 (https://github.com/kokke/tiny-AES-C/pull/12),
* that you can remove most of the elements in the Rcon array, because they are unused.
*
* From Wikipedia's article on the Rijndael key schedule @ https://en.wikipedia.org/wiki/Rijndael_key_schedule#Rcon
*
* "Only the first some of these constants are actually used â up to rcon[10] for AES-128 (as 11 round keys are needed),
* up to rcon[8] for AES-192, up to rcon[7] for AES-256. rcon[0] is not used in AES algorithm."
*/
/*****************************************************************************/
/* Private functions: */
/*****************************************************************************/
/*
static uint8_t getSBoxValue(uint8_t num)
{
return sbox[num];
}
*/
#define getSBoxValue(num) (sbox[(num)])
/*
static uint8_t getSBoxInvert(uint8_t num)
{
return rsbox[num];
}
*/
#define getSBoxInvert(num) (rsbox[(num)])
// This function produces Nb(Nr+1) round keys. The round keys are used in each round to decrypt the states.
static void KeyExpansion(uint8_t* RoundKey, const uint8_t* Key)
{
unsigned i, j, k;
uint8_t tempa[4]; // Used for the column/row operations
// The first round key is the key itself.
for (i = 0; i < Nk; ++i)
{
RoundKey[(i * 4) + 0] = Key[(i * 4) + 0];
RoundKey[(i * 4) + 1] = Key[(i * 4) + 1];
RoundKey[(i * 4) + 2] = Key[(i * 4) + 2];
RoundKey[(i * 4) + 3] = Key[(i * 4) + 3];
view all matches for this distribution
view release on metacpan or search on metacpan
==================================================
Changes from 2017-10-27 00:00:00 +0000 to present.
==================================================
------------------------------------------
version 0.010 at 2019-10-27 21:13:50 +0000
------------------------------------------
Change: 3d51004bd8892bda9bb21bdb0ca3cff03438a579
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-10-27 22:13:21 +0000
Release 0.010
Change: 80f861c2343ec5f2e7826a1dcadf9dd6a4364d78
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-10-27 22:13:21 +0000
Exclude temporary files for releases
Change: 867d10e770465e46b886df93eb7385c8926a99a5
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-10-27 22:06:01 +0000
2018 -> 2019
Change: 91bccdc2f18dfd7160cf0120863296b93f930a0c
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-10-27 20:23:24 +0000
Merge branch 'string_class' into 'master'
text labels now supported
See merge request vi.le/perl-ai-confusionmatrix!2
Change: 64a9b5f6fc680e7b8fc3f83a1e8ccaf6f4178eff
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-10-27 13:33:23 +0000
Add comment about emptying the CSV file
Change: 2c0b2d745e8dd44999bb3460d07e1e3f52cda206
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-10-27 12:30:47 +0000
Merge branch 'clear_csv' into 'master'
handle reuse of csv
See merge request vi.le/perl-ai-confusionmatrix!1
Change: f05d56c0f1a6eff14aea5dfbe02d2792219f9693
Author: john <4852923-john---@users.noreply.gitlab.com>
Date : 2019-10-25 16:45:02 +0000
text labels now supported
Change: 591bbb1ca3ea73b7963ab5eae29739b360ceb4cf
Author: john <4852923-john---@users.noreply.gitlab.com>
Date : 2019-10-24 22:37:48 +0000
handle reuse of csv
Change: c758dd7ff4eba2541be53832427349e8c1db6185
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-06-08 17:03:24 +0000
Add .gitlab-ci.yml to excluded files
Change: 102cc4c476c08a47ff672fa41f26ca5b66fb1aa7
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2019-06-08 17:03:04 +0000
Rename some variables to improve readability
------------------------------------------
version 0.009 at 2018-06-23 12:11:29 +0000
------------------------------------------
Change: 26715ae3594c73d64d14226b47d52636d2685a79
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-06-23 14:11:29 +0000
Release 0.009
Change: facd8f12a48582eab14e71c9e16a1e4bb7de14ba
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-06-23 13:37:50 +0000
Change git repository URL
Change: 01c4725ed70a887a24e1b287a8b5d7cfb36f5ff7
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-06-05 21:53:14 +0000
Travis CI -> Gitlab CI
Change: afc765032c1dddcf7a371da058a0565caadd3a31
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-02-24 14:20:16 +0000
Fix function getConfusionMatrix in the doc
Change: b718f61845a79d7f5dbc84fff6708583df2a6308
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-02-07 18:54:12 +0000
Add the ability to retrieve the confusion matrix data
Change: ac01df632c259c96152217d84bb50bdc28f52240
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-01-24 19:02:36 +0000
Clarify the documentation about the expected format of the input
matrix
Change: 4d11cf8544859f74d7af1798728a057101288aec
Author: Vincent Lequertier <vi.le@autistici.org>
Date : 2018-01-22 20:40:16 +0000
view all matches for this distribution
view release on metacpan or search on metacpan
1.000 Sat, 14 Nov 2020 18:03:39 +0100
- Added support (long awaited ;) for multi-core processing, through MCE.
- Added direct support for native arrays instead of packed scalars (for chromosomes).
- Some bug fixes.
0.401 Fri, 19 Nov 2011 19:22:45 +0100
- Some bug fixes.
0.341 Mon, 23 Mar 2009 17:21:52 +0100
- Fixed bug in a documentation. Thanks to Randal L. Schwartz :-)
0.34 Tue, 17 Mar 2009 20:39:16 +0100
- Fixed bug in PMX strategy. Thanks to Maciej Misiak :-)
0.335 Sat, 07 Feb 2009 20:04:52 +0100
- Little changes in a Makefile.PL (especially for Sun Solaris)
0.334 Fri, 23 Jan 2009 00:03:26 +0100
- Module 'Digest::MD5' is loaded by default,
0.333 Fri, 22 Jan 2009 15:30:06 +0100
- Some improvments in 'getFittest' function,
- Added 'getFittest_as_arrayref' function,
0.332 Wed, 21 Jan 2009 00:31:01 +0100
- Some changes in tests.
0.331 Tue, 20 Jan 2009 23:55:20 +0100
- Added tests.
- Some improvments in the 'inject' function.
0.33 Mon, 19 Jan 2009 00:38:06 +0100
- Added 'strict' mode.
- Added 'inject' function.
0.32 Sun, 18 Jan 2009 01:16:37 +0100
- Fixes in rangevectors.
0.31 Sat, 17 Jan 2009 20:32:27 +0100
- Fixes in mutation. Added changing of fitness for mutated chromosomes.
0.30 Fri, 16 Jan 2009 00:06:29 +0100
- Fixes in as_string method.
0.29 Thu, 15 Jan 2009 21:13:15 +0100
- Added full support for variable-length chromosomes.
0.28
- Little fixes. Again :-)
0.27
- Little fixes.
0.26 Sun, 11 Jan 2009 22:04:26 +0100
- Little modifications in crossover.
- Added supprot for variable-length chromosomes. Thanks to Leonid Zamdborg :-)
0.25 Mon, 24 Nov 2008 18:57:27 +0100
- Little fix in a counter of generations.
0.24 Mon, 10 Nov 2008 11:34:12 +0100
- Little speed up in main loop.
0.23 Mon, 10 Nov 2008 10:14:32 +0100
- Little modification in main loop. Infinity loop available.
0.22 Wed, 05 Nov 2008 00:49:18 +0100
- Added "-preserve" parameter.
- Little speed up (Class::Accessor::Fast => Class::Accessor::Fast::XS).
0.21 Fri, 10 Oct 2008 03:41:39 +0200
- Fixed mutation in rangevectors. Thanks to Christoph Meissner :-)
0.20 Sat, 04 Oct 2008 02:39:28 +0200
- Again... Little bug in mutation (inversion; listvectors only) - fixed. Thanks to Alec Chen :-)
0.19 Wed, 24 Sep 2008 19:52:33 +0200
- Little bug in mutation - fixed. Thanks to Alec Chen :-)
0.18 Fri, 19 Sep 2008 21:41:46 +0200
- Little fixes in documentation.
0.17 Fri, 19 Sep 2008 03:52:21 +0200
- Added documentation :-)
0.16 Mon, 15 Sep 2008 12:12:44 +0200
- Increased speed during chart generation.
- More documentation.
- Feature 'say' removed for compatibility.
0.15 Sun, 14 Sep 2008 02:14:02 +0200
- Increased speed :-)
- Changes way of mutation is made.
- Added charts.
- Added possibility to save/load GA.
- More documentation.
0.1 Sat, 13 Sep 2008 02:04:25 +0200
- First release.
view all matches for this distribution
view release on metacpan or search on metacpan
t/01-activation-funcs.t view on Meta::CPAN
_float($c->get_element(0,2), 1, "Element correct at 0,2");
_float($c->get_element(0,3), 1, "Element correct at 0,3");
_float($c->get_element(0,4), 1, "Element correct at 0,4");
_float($c->get_element(0,5), .001, "Element correct at 0,5");
_float($c->get_element(0,6), .001, "Element correct at 0,6");
_float($c->get_element(0,7), 1, "Element correct at 0,7");
_float($c->get_element(0,8), 1, "Element correct at 0,8");
_float($c->get_element(0,9), .001, "Element correct at 0,9");
# Test tanh
my $d = tanh($m);
_float($d->get_element(0,0), 0, "Element correct at 0,0");
_float($d->get_element(0,1), 1.99999733e-03, "Element correct at 0,1");
_float($d->get_element(0,2), 9.95054754e-01, "Element correct at 0,2");
_float($d->get_element(0,3), 9.99329300e-01, "Element correct at 0,3");
_float($d->get_element(0,4), 9.99999146e-01, "Element correct at 0,4");
_float($d->get_element(0,5), -7.99999998e-05, "Element correct at 0,5");
_float($d->get_element(0,6), -9.66389636e-01, "Element correct at 0,6");
_float($d->get_element(0,7), 9.99999970e-01, "Element correct at 0,7");
_float($d->get_element(0,8), 1, "Element correct at 0,8");
_float($d->get_element(0,9), -1, "Element correct at 0,9");
#Test derivative of tanh
$d = d_tanh($m);
_float($d->get_element(0,0), 1.00000000e+00, "Element correct at 0,0");
_float($d->get_element(0,1), 9.99996000e-01, "Element correct at 0,1");
_float($d->get_element(0,2), 9.86603717e-03, "Element correct at 0,2");
_float($d->get_element(0,3), 1.34095068e-03, "Element correct at 0,3");
_float($d->get_element(0,4), 1.70882169e-06, "Element correct at 0,4");
_float($d->get_element(0,5), 9.99999994e-01, "Element correct at 0,5");
_float($d->get_element(0,6), 6.60910712e-02, "Element correct at 0,6");
_float($d->get_element(0,7), 6.09199171e-08, "Element correct at 0,7");
_float($d->get_element(0,8), 0, "Element correct at 0,8");
_float($d->get_element(0,9), 0, "Element correct at 0,9");
# Test softmax
my $e = Math::Lapack::Matrix->new(
[
[1, 2, 1], # sample 1
[2, 4, 2], # sample 1
[3, 5, 3], # sample 2
[6, 6, 6]
]);
my $soft = softmax($e);
is($e->rows, 4, "Right number of rows - softmax");
is($e->columns, 3, "Right number of cols - softmax");
# prob of first col
_float($soft->get_element(0,0), 0.00626879, "Element correct at 0,0");
_float($soft->get_element(1,0), 0.01704033, "Element correct at 1,0");
_float($soft->get_element(2,0), 0.04632042, "Element correct at 2,0");
_float($soft->get_element(3,0), 0.93037047, "Element correct at 3,0");
# prob of second col
_float($soft->get_element(0,1), 0.01203764, "Element correct at 0,1");
_float($soft->get_element(1,1), 0.08894682, "Element correct at 1,1");
_float($soft->get_element(2,1), 0.24178252, "Element correct at 2,1");
_float($soft->get_element(3,1), 0.65723302, "Element correct at 3,1");
#prob of third col
_float($soft->get_element(0,2), 0.00626879, "Element correct at 0,2");
_float($soft->get_element(1,2), 0.01704033, "Element correct at 1,2");
_float($soft->get_element(2,2), 0.04632042, "Element correct at 2,2");
_float($soft->get_element(3,2), 0.93037047, "Element correct at 3,2");
done_testing;
sub _float {
my ($a, $b, $c) = @_;
is($a, float($b, tolerance => 0.00001), $c);
}
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AI/MicroStructure/germany.pm view on Meta::CPAN
# names Hornow-Wadelsdorf 03130
# names Tschernitz 03130
# names Drieschnitz-Kahsel 03130
# names Wolfshain 03130
# names Lieskau 03130 03238 06120
# names Reuthen 03130
# names Spremberg 03130
# names Felixsee 03130
# names Forst 57537 76694
# names Wiesengrund 03149 03159
# names Gastrose-Kerkwitz 03172
# names Atterwasch 03172
# names Guben 03172
# names Lutzketal 03172
# names Pinnow-Heideland 03172
# names Grabko 03172
# names Peitz 03185
# names Teichland 03185
# names Turnow-Preilack 03185
# names Tauer 03185
# names Drachhausen 03185
# names Drehnow 03185
# names Drewitz 03197 39291
# names Bronkow 03205
# names Bischdorf 03205
# names Luckaitztal 03205 03229
# names Missen 03205
# names Calau 03205
# names Mlode 03205
# names Laasow 03205 15913
# names Bolschwitz 03205
# names Ogrosen 03205
# names Kemmen 03205
# names Lipten 03205
# names Lug 03205 76848
# names Werchow 03205
# names Hindenberg 03222
# names Ragow 03222 15749
# names Boblitz 03222
# names Vetschau 03226
# names Suschow 03226
# names Leipe 03226
# names Raddusch 03226
# names Staupitz 03238
# names Sallgast 03238
# names Schadewitz 03238
# names Dollenchen 03238
# names Lugau 03238
# names Gorden 03238
# names Massen 03238
# names Lindena 03238
# names Lindthal 03238
# names Betten 03238
# names Ponnsdorf 03238
# names Schacksdorf 03238
# names Oppelhain 03238
# names Finsterwalde 03238
# names Lichterfeld 03238
# names Gruhno 03238
# names Fischwasser 03238
# names Babben 03246
# names Crinitz 03246
# names Gahro 03246
# names Breitenau 03249 56237
# names Sonnewalde 03249
# names Bahren 03249
# names Kleinkrausnik 03249
# names Zeckerin 03249
# names Pahlsdorf 03249
# names Schilda 03253
# names Trebbus 03253
# names Hennersdorf 03253
# names Arenzhain 03253
# names Doberlug-Kirchhain 03253
# names Buchhain 03253
# names Werenzhain 03253
# names Nexdorf 03253
# names Brenitz 03253
# names Frankena 03253
# names Leipzig 04103 04105 04107 04109 04129 04155 04157 04159 04177 04179 04205 04207 04209 04229 04249 04275 04277 04279 04289 04299 04315 04317 04318 04319 04329 04347 04349 04357
# names Markkleeberg 04416
# names Taucha 04425 06679
# names Schkeuditz 04435
# names Zwenkau 04442
# names Borsdorf 04451
# names Kitzen 04460
# names Wiedemar 04509
# names Delitzsch 04509
# names Zschortau 04509
# names Neukyhna 04509
# names Krostitz 04509
# names Zwochau 04509
# names Rackwitz 04519
# names Elstertrebnitz 04523
# names Pegau 04523
# names Groitzsch 04539
# names Wyhratal 04552
# names Borna 04552
# names Regis-Breitingen 04565
# names Kitzscher 04567
# names Heuersdorf 04574
# names Deutzen 04574
# names Neukieritzsch 04575
# names Espenhain 04579
# names Altenburg 04600
# names Nobitz 04603
# names Saara 04603 07589
# names Windischleuba 04603
# names Meuselwitz 04610
# names Wintersdorf 04610
# names Lucka 04613
# names Starkenberg 04617
# names Monstab 04617
# names Rositz 04617
# names Haselbach 04617 94354
# names Naundorf 04617 04769 04936
# names Gerstenberg 04617
# names Treben 04617
# names Tegkwitz 04617
# names Fockendorf 04617
# names Kriebitzsch 04617
# names Ziegelheim 04618
# names Langenleuba-Niederhain 04618
# names Frohnsdorf 04618
# names Lumpzig 04626
# names Mehna 04626
# names Dobitschen 04626
# names Drogen 04626
# names Altkirchen 04626
# names Vollmershain 04626
# names Posterstein 04626
# names Jonaswalde 04626
# names Heukewalde 04626
# names Thonhausen 04626
# names Geithain 04643
# names Eulatal 04651
# names Frohburg 04654
# names Kohren-Sahlis 04655
# names Narsdorf 04657
# names Grimma 04668
lib/AI/MicroStructure/germany.pm view on Meta::CPAN
# names Kolochau 04936
# names Malitschkendorf 04936
# names Wehrhain 04936
# names Frankenhain 04936 99330
# names Hillmersdorf 04936
# names Freileben 04936
# names Lebusa 04936
# names Halle 06108 06110 06112 06114 06116 06118 06120 06122 06124 06126 06128 06130 06132 33790 37620 49843
# names Teutschenthal 06179
# names Steuden 06179
# names Schochwitz 06179
# names Schkopau 06179 06184 06258
# names Langenbogen 06179
# names Holleben 06179
# names Hohenweiden 06179
# names Zscherben 06179
# names Zappendorf 06179
# names Dornstedt 06179
# names Angersdorf 06179
# names Bennstedt 06179
# names Ermlitz 06184
# names Dieskau 06184
# names Burgliebenau 06184
# names Lochau 06184
# names Spickendorf 06188
# names Sietzsch 06188
# names Schwerz 06188
# names Landsberg 06188
# names Hohenthurm 06188
# names Braschwitz 06188
# names Brachstedt 06188
# names Queis 06188
# names Oppin 06188
# names Niemberg 06188
# names Wallwitz 06193 39291
# names Teicha 06193
# names Sennewitz 06193
# names Krosigk 06193
# names Gutenberg 06193 55595
# names Petersberg 06193 07616 36100 66989
# names Nehlitz 06193
# names Nauendorf 06193 99448
# names Morl 06193
# names Kloschwitz 06198
# names Wettin 06198
# names Fienstedt 06198
# names Brachwitz 06198
# names Neutz-Lettewitz 06198
# names Beesenstedt 06198
# names Gimritz 06198
# names Beuna 06217
# names Merseburg 06217
# names Geusa 06217
# names Tollwitz 06231
# names Rodden 06231
# names Kreypau 06231
# names Oebles-Schlechtewitz 06231
# names Nempitz 06231
# names Spergau 06237
# names Leuna 06237
# names Krumpa 06242
# names Braunsbedra 06242
# names Knapendorf 06246
# names Klobikau 06246
# names Berge 14641 19348 39638 49626
# names Milzau 06246
# names Wallendorf 06254 54675
# names Zweimen 06254
# names Friedensdorf 06254
# names Luppenau 06254
# names Korbetha 06258
# names Frankleben 06259
# names Vitzenburg 06268
# names Steigra 06268
# names Schmon 06268
# names Leimbach 06268 36433 53518 54673
# names Ziegelroda 06268
# names Querfurt 06268
# names Oechlitz 06268
# names Obhausen 06268
# names Albersroda 06268
# names Schraplau 06279
# names Esperstedt 06279 06567
# names Alberstedt 06279
# names Volkstedt 06295
# names Schmalzerode 06295
# names Rottelsdorf 06295
# names Rothenschirmbach 06295
# names Hornburg 06295 38315
# names Hedersleben 06295 06458
# names Wolferode 06295
# names Dederstedt 06295
# names Burgsdorf 06295
# names Bornstedt 06295 39343
# names Bischofrode 06295
# names Polleben 06295
# names Osterhausen 06295
# names Neehausen 06295
# names Siersleben 06308
# names Siebigerode 06308
# names Klostermansfeld 06308
# names Augsdorf 06308
# names Annarode 06308
# names Benndorf 06308
# names Helbra 06311
# names Hergisdorf 06313
# names Wimmelburg 06313
# names Ahlsdorf 06313
# names Stedten 06317
# names Seeburg 06317 14476 37136
# names Erdeborn 06317
# names Aseleben 06317
# names Amsdorf 06317
# names Walbeck 06333 39356
# names Sylda 06333
# names Ritterode 06333
# names Hettstedt 06333
# names Harkerode 06333
# names Wiederstedt 06333
# names Welfesholz 06333
# names Welbsleben 06333
# names Endorf 06333
# names Quenstedt 06333
# names Neuplatendorf 06333
# names Arnstedt 06333
# names Greifenhagen 06333
lib/AI/MicroStructure/germany.pm view on Meta::CPAN
# names Kirchberg 08107 55481 84434
# names Lichtentanne 08115
# names Hartenstein 08118 91235
# names Wildenfels 08134
# names Crinitzberg 08147
# names Werda 08223
# names Rodewisch 08228
# names Treuen 08233
# names Ellefeld 08236
# names Steinberg 08237 24972 92449
# names Bergen 08239 29303 55608 83346 91790
# names Markneukirchen 08258
# names Erlbach 08265 84567
# names Zwota 08267
# names Aue 08280
# names Schneeberg 08289 63936
# names Schlema 08301
# names Eibenstock 08309
# names Bernsbach 08315
# names Zschorlau 08321
# names Bockau 08324
# names Sosa 08326
# names Beierfeld 08340
# names Erlabrunn 08349 97250
# names Johanngeorgenstadt 08349
# names Markersbach 08352
# names Raschau 08352
# names Glauchau 08371
# names Remse 08373
# names Dennheritz 08393
# names Meerane 08393
# names Waldenburg 08396 74638
# names Oberwiera 08396
# names Werdau 08412
# names Leubnitz 08412
# names Fraureuth 08427
# names Langenbernsdorf 08428
# names Crimmitschau 08451
# names Heinsdorfergrund 08468
# names Lengenfeld 08485
# names Netzschkau 08491
# names Limbach 08491 55606 57629 74838
# names Neumark 08496 99439
# names Mylau 08499
# names Plauen 08523 08525 08527 08529
# names Reuth 08538 54597
# names Burgstein 08538
# names Weischlitz 08538
# names Mehltheuer 08539
# names Theuma 08541
# names Neuensalz 08541
# names Syrau 08548
# names Oelsnitz 08606
# names Tirpersdorf 08606
# names Eichigt 08626
# names Adorf 08626
# names Brambach 06862
# names Chemnitz 09111 09112 09113 09114 09116 09117 09119 09120 09122 09123 09125 09126 09127 09130 09131
# names Limbach-Oberfrohna 09212
# names Burkhardtsdorf 09235
# names Niederfrohna 09243
# names Lichtenau 09244 33165 77839 91586
# names Taura 09249
# names Wechselburg 09306
# names Erlau 09306
# names Zettlitz 09306
# names Seelitz 09306
# names Rochlitz 09306
# names Penig 09322
# names Geringswalde 09326
# names Lunzenau 09328
# names Callenberg 09337
# names Hohenstein-Ernstthal 09337
# names Oberlungwitz 09353
# names Niederdorf 09366
# names Erlbach-Kirchberg 09385
# names Gornsdorf 09390
# names Auerbach 09392 94530
# names Hohndorf 09394 24217
# names Hormersdorf 09395
# names Zschopau 09405
# names Thum 09419
# names Ehrenfriedersdorf 09427
# names Wolkenstein 09429
# names Drebach 09430
# names Venusberg 09430
# names Scharfenstein 09435
# names Amtsberg 09439
# names Annaberg-Buchholz 09456
# names Mildenau 09456
# names Sehmatal 09465
# names Geyer 09468
# names Tannenberg 09468
# names Crottendorf 09474
# names Elterlein 09481
# names Scheibenberg 09481
# names Oberwiesenthal 09484
# names Schlettau 09487
# names Wiesa 09488
# names Marienberg 09496
# names Pobershau 09496
# names Pockau 09509
# names Pfaffroda 09526
# names Heidersdorf 09526
# names Olbernhau 09526
# names Deutschneudorf 09548
# names Falkenau 09569
# names Frankenstein 09569 67468
# names Gahlenz 09569
# names Oederan 09569
# names Leubsdorf 09573 53547
# names Augustusburg 09573
# names Eppendorf 09575
# names Niederwiesa 09577
# names Borstendorf 09579
# names Freiberg 09599
# names Brand-Erbisdorf 09618
# names Sayda 09619
# names Sayda 09619
# names Frauenstein 09623
# names Bobritzsch 09627
# names Reinsberg 09629
# names Siebenlehn 09634
lib/AI/MicroStructure/germany.pm view on Meta::CPAN
# names Lauterbach 36341 78730 99826
# names Grebenhain 36355
# names Herbstein 36358
# names Wartenberg 36367 85456
# names Lautertal 36369 64686 96486
# names Sinntal 36391
# names Steinau 21775
# names Freiensteinau 36399
# names Martinroda 36404 98693
# names Oechsen 36404
# names Vacha 36404
# names Unterbreizbach 36414
# names Rockenstuhl 36419
# names Geisa 36419
# names Schleid 36419 54636
# names Gerstengrund 36419
# names Buttlar 36419
# names Immelborn 36433
# names Moorgrund 36433
# names Steinbach 36448 37308 56291
# names Liebenstein 99330
# names Schweina 36448
# names Neidhartshausen 36452
# names Kaltennordheim 36452
# names Diedorf 36452 86420
# names Zella 36452
# names Empfertshausen 36452
# names Kaltenlengsfeld 36452
# names Brunnhartshausen 36452
# names Klings 36452
# names Andenhausen 36452
# names Barchfeld 36456
# names Stadtlengsfeld 36457
# names Urnshausen 36457
# names Weilar 36457
# names Frauensee 36460
# names Merkers-Kieselbach 36460
# names Dorndorf 36460
# names Dermbach 36466
# names Wiesenthal 36466
# names Tiefenort 36469
# names Duderstadt 37115
# names Bovenden 37120
# names Scheden 37127
# names Niemetal 37127
# names Dransfeld 37127
# names Gleichen 37130
# names Landolfshausen 37136
# names Seulingen 37136
# names Waake 37136
# names Adelebsen 37139
# names Northeim 37154
# names Uslar 37170
# names Hardegsen 37181
# names Moringen 37186 39599
# names Katlenburg-Lindau 37191
# names Wahlsburg 37194
# names Bodenfelde 37194
# names Wulften 37199
# names Witzenhausen 37213 37214 37215 37216 37217 37218
# names Lichtenau 09244 33165 77839 91586
# names Neu-Eichenberg 37249
# names Eschwege 37269
# names Meinhard 37276
# names Wanfried 37281
# names Waldkappel 37284
# names Wehretal 37287
# names Herleshausen 37293
# names Ringgau 37296
# names Berkatal 37297
# names Reinholterode 37308
# names Glasehausen 37308
# names Krombach 37308 63829
# names Heiligenstadt 91332
# names Sickerode 37308
# names Volkerode 37308
# names Wiesenfeld 37308
# names Schimberg 37308
# names Heuthen 37308
# names Wingerode 37308
# names Kella 37308
# names Bodenrode-Westhausen 37308
# names Geismar 37308
# names Pfaffschwende 37308
# names Geisleden 37308
# names Schachtebich 37318
# names Lutter 37318
# names Rohrberg 37318 38489
# names Kirchgandern 37318
# names Thalwenden 37318
# names Hohengandern 37318
# names Wahlhausen 37318
# names Mackenrode 37318
# names Fretterode 37318
# names Gerbershausen 37318
# names Uder 37318
# names Eichstruth 37318
# names Steinheuterode 37318
# names Lenterode 37318
# names Bornhagen 37318
# names Marth 37318
# names Lindewerra 37318
# names Asbach-Sickenberg 37318
# names Rustenfelde 37318
# names Burgwalde 37318
# names Arenshausen 37318
# names Birkenfelde 37318
# names Schwobfeld 37318
# names Dieterode 37318
# names Dietzenrode-Vatterode 37318
# names Kallmerode 37327
# names Leinefelde 37327
# names Hausen 37327 55608 63840 91353 93345 97647
# names Wehnde 37339
# names Haynrode 37339
# names Brehme 37339
# names Teistungen 37339
# names Wintzingerode 37339
# names Berlingerode 37339
# names Worbis 37339
# names Ferna 37339
lib/AI/MicroStructure/germany.pm view on Meta::CPAN
# names Losenrade 39615
# names Lichterfelde 39615
# names Leppin 39615
# names Aulosen 39615
# names Gollensdorf 39615
# names Thielbeer 39619
# names Schrampe 39619
# names Ziemendorf 39619
# names Arendsee 39619
# names Vienau 39624
# names Kremkau 39624
# names Kalbe 27419
# names Kakerbeck 39624
# names Kahrstedt 39624
# names Jeetze 39624
# names Zethlingen 39624
# names Winkelstedt 39624
# names Wernstedt 39624
# names Brunau 39624
# names Packebusch 39624
# names Neuendorf 18246 38486 54597 97788
# names Damm 18196 19374
# names Altmersleben 39624
# names Berkau 39624
# names Badel 39624
# names Holzhausen 39629
# names Bismark 17322
# names Wannefeld 39638
# names Solpke 39638
# names Seethen 39638
# names Schwiesau 39638
# names Schenkenhorst 39638
# names Neuendorf 18246 38486 54597 97788
# names Kassieck 39638
# names Jeseritz 39638
# names Hottendorf 39638
# names Hemstedt 39638
# names Zobbenitz 39638
# names Zichtau 39638
# names Wiepke 39638
# names Gardelegen 39638
# names Estedt 39638
# names Engersen 39638
# names Dorst 39638
# names Breitenfeld 39638
# names Potzehne 39638
# names Lindstedt 39638
# names Letzlingen 39638
# names Algenstedt 39638
# names Berenbrock 39638
# names Oebisfelde 39646
# names Sichau 39649
# names Sachau 39649
# names Jeggau 39649
# names Dannefeld 39649
# names Peckfitz 39649
# names Miesterhorst 39649
# names Mieste 39649
# names Meerbusch 40667 40668 40670
# names Erkrath 40699
# names Hilden 40721 40723 40724
# names Langenfeld 40764 56729 91474
# names Monheim 86653
# names Mettmann 40822
# names Ratingen 40878 40880 40882 40883 40885
# names Nettetal 41334
# names Korschenbroich 41352
# names Neuss 41460 41462 41464 41466 41468 41469 41470 41472
# names Grevenbroich 41515 41516 41517
# names Dormagen 41539 41540 41541 41542
# names Kaarst 41564
# names Rommerskirchen 41569
# names Viersen 41747 41748 41749 41751
# names Erkelenz 41812
# names Wegberg 41844
# names Wassenberg 41849
# names Wuppertal 42103 42105 42107 42109 42111 42113 42115 42117 42119 42275 42277 42279 42281 42283 42285 42287 42289 42327 42329 42349 42369 42389 42399
# names Radevormwald 42477
# names Velbert 42549 42551 42553 42555
# names Heiligenhaus 42579
# names Solingen 42651 42653 42655 42657 42659 42697 42699 42719
# names Haan 42781
# names Leichlingen 42799
# names Remscheid 42853 42855 42857 42859 42897 42899
# names Wermelskirchen 42929
# names Dortmund 44135 44137 44139 44141 44143 44145 44147 44149 44225 44227 44229 44263 44265 44267 44269 44287 44289 44309 44319 44328 44329 44339 44357 44359 44369 44379 44388
# names Castrop-Rauxel 44575 44577 44579 44581
# names Herne 44623 44625 44627 44628 44629 44649 44651 44652 44653
# names Bochum 44787 44789 44791 44793 44795 44797 44799 44801 44803 44805 44807 44809 44866 44867 44869 44879 44892 44894
# names Essen 45127 45128 45130 45131 45133 45134 45136 45138 45139 45141 45143 45144 45145 45147 45149 45219 45239 45257 45259 45276 45277 45279 45289 45307 45309 45326 45327 45329 45355 45356 45357 45359
# names Hattingen 45525 45527 45529
# names Recklinghausen 45657 45659 45661 45663 45665
# names Herten 45699 45701
# names Datteln 45711
# names Waltrop 45731
# names Oer-Erkenschwick 45739
# names Marl 45768 45770 45772 49448
# names Gelsenkirchen 45879 45881 45883 45884 45886 45888 45889 45891 45892 45894 45896 45897 45899
# names Gladbeck 45964 45966 45968
# names Oberhausen 46045 46047 46049 46117 46119 46145 46147 46149 55606 76887 82386 86697
# names Bottrop 46236 46238 46240 46242 46244
# names Dorsten 46282 46284 46286
# names Velen 46342
# names Raesfeld 46348
# names Heiden 46359
# names Bocholt 46395 46397 46399
# names Isselburg 46419
# names Emmerich 46446
# names Rees 46459
# names Wesel 46483 46485 46487
# names Hamminkeln 46499
# names Xanten 46509
# names Schermbeck 46514
# names Alpen 46519
# names Dinslaken 46535 46537 46539
# names Voerde 46562
# names Duisburg 47051 47053 47055 47057 47058 47059 47119 47137 47138 47139 47166 47167 47169 47178 47179 47198 47199 47226 47228 47229 47239 47249 47259 47269 47279
# names Moers 47441 47443 47445 47447
# names Kamp-Lintfort 47475
# names Rheinberg 47495
# names Neukirchen-Vluyn 47506
lib/AI/MicroStructure/germany.pm view on Meta::CPAN
# names Unnau 57648
# names Schwerte 58239
# names Ennepetal 58256
# names Gevelsberg 58285
# names Wetter 35083
# names Herdecke 58313
# names Schwelm 58332
# names Breckerfeld 58339
# names Witten 58452 58453 58454 58455 58456
# names Meinerzhagen 58540
# names Halver 58553
# names Kierspe 58566
# names Iserlohn 58636 58638 58640 58642 58644
# names Hemer 58675
# names Menden 58706 58708 58710
# names Wickede 58739
# names Altena 58762
# names Nachrodt-Wiblingwerde 58769
# names Werdohl 58791
# names Balve 58802
# names Neuenrade 58809
# names Plettenberg 58840
# names Herscheid 58849
# names Kamen 59174
# names Bergkamen 59192
# names Ahlen 59227 59229
# names Beckum 59269
# names Oelde 59302
# names Ennigerloh 59320
# names Wadersloh 59329
# names Werne 59368
# names Selm 59379
# names Nordkirchen 59394
# names Olfen 59399
# names Unna 59423 59425 59427
# names Holzwickede 59439
# names Werl 59457
# names Ense 59469
# names Soest 59494
# names Lippetal 59510
# names Welver 59514
# names Lippstadt 59555 59556 59557 59558
# names Warstein 59581
# names Geseke 59590
# names Erwitte 59597
# names Arnsberg 59755 59757 59759 59821 59823
# names Sundern 59846
# names Meschede 59872
# names Eslohe 59889
# names Bestwig 59909
# names Brilon 59929
# names Olsberg 59939
# names Winterberg 59955
# names Medebach 59964
# names Hallenberg 59969
# names Bromskirchen 59969
# names Nidderau 61130
# names Niederdorfelden 61138
# names Friedberg 61169 86316
# names Karben 61184
# names Rosbach 06242 53547 56271 94439
# names Niddatal 61194
# names Florstadt 61197
# names Reichelsheim 61203 64385
# names Echzell 61209
# names Nauheim 64569
# names Usingen 61250
# names Neu-Anspach 61267
# names Wehrheim 61273
# names Weilrod 61276
# names Homburg 66424
# names Friedrichsdorf 61381
# names Schmitten 61389
# names Oberursel 61440
# names Steinbach 36448 37308 56291
# names Offenbach 63065 63067 63069 63071 63073 63075
# names Rodgau 63110
# names Dietzenbach 63128
# names Heusenstamm 63150
# names Obertshausen 63179
# names Neu-Isenburg 63263
# names Dreieich 63303
# names Egelsbach 63329
# names Hanau 63450 63452 63454 63456 63457
# names Maintal 63477
# names Seligenstadt 63500
# names Langenselbold 63505
# names Hainburg 63512
# names Erlensee 63526
# names Mainhausen 63533
# names Neuberg 63543
# names Hammersbach 63546
# names Gelnhausen 63571
# names Freigericht 63579
# names Linsengericht 63589
# names Hasselroth 63594
# names Birstein 63633
# names Brachttal 63636
# names Jossgrund 63637
# names Nidda 63667
# names Altenstadt 63674 86972 89281
# names Schotten 63679
# names Ortenberg 63683 77799
# names Gedern 63688
# names Ranstadt 63691
# names Limeshain 63694
# names Glauburg 63695
# names Hirzenhain 63697
# names Kefenrod 63699
# names Aschaffenburg 63739 63741 63743
# names Goldbach 63773 99869
# names Kleinostheim 63801
# names Haibach 63808 94353
# names Mainaschaff 63814
# names Elsenfeld 63820
# names Westerngrund 63825
# names Sommerkahl 63825
# names Blankenbach 63825
# names Geiselbach 63826
# names Kleinkahl 63828
# names Wiesen 63831
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AI/NNFlex.pm view on Meta::CPAN
use vars qw ($VERSION);
#use warnings;
###############################################################################
# NNFlex - Neural Network (flexible) - a heavily custom NN simulator
#
# Sept 2004 - CW Colbourn
#
# This was developed from the abortive nnseq package originally intended
# for real time neural networks.
# The basis of the approach for this version is a very flexible, modular
# set of packages. This package constitutes the base, allowing the modeller
# to create meshes, apply input, and read output ONLY!
#
# Separate modules are to be written to perform feedback adjustments,
# various activation functions, text/gui front ends etc
#
###############################################################################
# Version Control
# ===============
#
# 0.1 20040905 CColbourn New module
# added NNFlex::datasets
#
# 0.11 20050113 CColbourn Added NNFlex::lesion
# Improved Draw
# added NNFlex::datasets
#
# 0.12 20050116 CColbourn Fixed reinforce.pm bug
# Added call into datasets
# in ::run to offer alternative
# syntax
#
# 0.13 20050121 CColbourn Created momentum learning module
#
# 0.14 20050201 CColbourn Abstracted derivatiive of activation
# function into a separate function call
# instead of hardcoded 1-y*y in backprop
# tanh, linear & momentum
#
# 0.15 20050206 CColbourn Fixed a bug in feedforward.pm. Stopped
# calling dbug unless scalar debug > 0
# in a lot of calls
#
# 0.16 20050218 CColbourn Changed from a hash of weights to an
# array of weights, to make it easier
# to adapt the code to PDL
#
# 0.17 20050302 CColbourn Changed input params to ::output to
# be param=>parameter not anon hash
# Included round parameter in output
#
# 0.20 20050307 CColbourn Modified for inheritance to simplify
# future network types
#
# 0.21 20050316 CColbourn Rewrote perldocs, implemented fahlman
# constant, chopped out old legacy stuff
# put math functions in mathlib, etc etc
#
# 0.22 20050317 CColbourn Implemented ::connect method
#
# 0.23 20050424 CColbourn Included Hopfield module in dist.
#
# 0.24 20050620 CColbourn Corrected a bug in the bias weight
# calculation
#
#
###############################################################################
# ToDo
# ====
#
# Modify init to allow recurrent layer/node connections
# write cmd & gui frontends
# Speed the bugger up!
#
# Odd thought - careful coding of a network would allow grafting of
# two different network types or learning algorithms, like an effectve
# single network with 2 layers unsupervised and 2 layers supervised
#
# Clean up the perldocs
#
###############################################################################
$VERSION = "0.24";
###############################################################################
my @DEBUG; # a single, solitary, shameful global variable. Couldn't
#avoid it really. It allows correct control of debug
#information before the $network object is created
# (in ::layer->new & ::node->new for example).
###############################################################################
###############################################################################
# package NNFlex
###############################################################################
###############################################################################
package AI::NNFlex;
use AI::NNFlex::Mathlib;
use base qw(AI::NNFlex::Mathlib);
###############################################################################
# AI::NNFlex::new
###############################################################################
sub new
{
my $class = shift;
my $network={};
bless $network,$class;
# intercept the new style 'empty network' constructor call
# Maybe I should deprecate the old one, but its convenient, provided you
# can follow the mess of hashes
if (!grep /HASH/,@_)
{
my %config = @_;
foreach (keys %config)
{
$network->{$_} = $config{$_};
}
return $network;
}
# Otherwise, continue assuming that the whole network is defined in
# a pair of anonymous hashes
my $params = shift;
my $netParams = shift;
my @layers;
dbug ($netParams,"Entered AI::NNFlex::new with params $params $netParams",2);
# clean up case & spaces in layer defs from pre 0.14 constructor calls:
my $cleanParams;
foreach my $layer(@{$params})
lib/AI/NNFlex.pm view on Meta::CPAN
=head1 ACKNOWLEDGEMENTS
Phil Brierley, for his excellent free java code, that solved my backprop problem
Dr Martin Le Voi, for help with concepts of NN in the early stages
Dr David Plaut, for help with the project that this code was originally intended for.
Graciliano M.Passos for suggestions & improved code (see SEE ALSO).
Dr Scott Fahlman, whose very readable paper 'An empirical study of learning speed in backpropagation networks' (1988) has driven many of the improvements made so far.
=head1 SEE ALSO
AI::NNFlex::Backprop
AI::NNFlex::Feedforward
AI::NNFlex::Mathlib
AI::NNFlex::Dataset
AI::NNEasy - Developed by Graciliano M.Passos
(Shares some common code with NNFlex)
=head1 TODO
Lots of things:
clean up the perldocs some more
write gamma modules
write BPTT modules
write a perceptron learning module
speed it up
write a tk gui
=head1 CHANGES
v0.11 introduces the lesion method, png support in the draw module and datasets.
v0.12 fixes a bug in reinforce.pm & adds a reflector in feedforward->run to make $network->run($dataset) work.
v0.13 introduces the momentum learning algorithm and fixes a bug that allowed training to proceed even if the node activation function module can't be loaded
v0.14 fixes momentum and backprop so they are no longer nailed to tanh hidden units only.
v0.15 fixes a bug in feedforward, and reduces the debug overhead
v0.16 changes some underlying addressing of weights, to simplify and speed
v0.17 is a bugfix release, plus some cleaning of UI
v0.20 changes AI::NNFlex to be a base class, and ships three different network types (i.e. training algorithms). Backprop & momentum are both networks of the feedforward class, and inherit their 'run' method from feedforward.pm. 0.20 also fixes a who...
v0.21 cleans up the perldocs more, and makes nnflex more distinctly a base module. There are quite a number of changes in Backprop in the v0.21 distribution.
v0.22 introduces the ::connect method, to allow creation of recurrent connections, and manual control over connections between nodes/layers.
v0.23 includes a Hopfield module in the distribution.
v0.24 fixes a bug in the bias weight calculations
=head1 COPYRIGHT
Copyright (c) 2004-2005 Charles Colbourn. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
=head1 CONTACT
charlesc@nnflex.g0n.net
=cut
view all matches for this distribution
view release on metacpan or search on metacpan
Model:
category | P(category)
---------+--------------------------------
T=N | 0.527777777777778 (= 38 / 72 )
T=V | 0.472222222222222 (= 34 / 72 )
---------+--------------------------------
category | Tp | P( Tp | category )
---------+------+-------------------------------
T=N | N | 0.131578947368421 (= 5 / 38)
T=N | PREV | 0.710526315789474 (= 27 / 38)
T=N | V | 0.157894736842105 (= 6 / 38)
---------+------+-------------------------------
T=V | N | 0.794117647058823 (= 27 / 34)
T=V | PREV | 0.205882352941176 (= 7 / 34)
---------+------+-------------------------------
category | W | P( W | category )
---------+-------+-----------------------------------
T=N | * | 0.012987012987013 (= 0.5 / 38.5)
T=N | duck | 0.467532467532468 (= 18 / 38.5)
T=N | ducks | 0.233766233766234 (= 9 / 38.5)
T=N | flies | 0.103896103896104 (= 4 / 38.5)
T=N | fly | 0.181818181818182 (= 7 / 38.5)
---------+-------+-----------------------------------
T=V | * | 0.0144927536231884 (= 0.5 / 34.5)
T=V | duck | 0.173913043478261 (= 6 / 34.5)
T=V | ducks | 0.115942028985507 (= 4 / 34.5)
T=V | flies | 0.260869565217391 (= 9 / 34.5)
T=V | fly | 0.434782608695652 (= 15 / 34.5)
---------+-------+-----------------------------------
category | Wf | P( Wf | category )
---------+-------+-----------------------------------
T=N | * | 0.012987012987013 (= 0.5 / 38.5)
T=N | END | 0.155844155844156 (= 6 / 38.5)
T=N | duck | 0.025974025974026 (= 1 / 38.5)
T=N | ducks | 0.103896103896104 (= 4 / 38.5)
T=N | flies | 0.233766233766234 (= 9 / 38.5)
T=N | fly | 0.467532467532468 (= 18 / 38.5)
---------+-------+-----------------------------------
T=V | * | 0.0144927536231884 (= 0.5 / 34.5)
T=V | END | 0.811594202898551 (= 28 / 34.5)
T=V | duck | 0.0579710144927536 (= 2 / 34.5)
T=V | ducks | 0.115942028985507 (= 4 / 34.5)
---------+-------+-----------------------------------
category | Wp | P( Wp | category )
---------+-------+-----------------------------------
T=N | * | 0.012987012987013 (= 0.5 / 38.5)
T=N | PREV | 0.701298701298701 (= 27 / 38.5)
T=N | duck | 0.207792207792208 (= 8 / 38.5)
T=N | fly | 0.0779220779220779 (= 3 / 38.5)
---------+-------+-----------------------------------
T=V | * | 0.0144927536231884 (= 0.5 / 34.5)
T=V | PREV | 0.202898550724638 (= 7 / 34.5)
T=V | duck | 0.347826086956522 (= 12 / 34.5)
T=V | ducks | 0.144927536231884 (= 5 / 34.5)
T=V | flies | 0.115942028985507 (= 4 / 34.5)
T=V | fly | 0.173913043478261 (= 6 / 34.5)
---------+-------+-----------------------------------
view all matches for this distribution
view release on metacpan or search on metacpan
t/book_list_test-filled.csv view on Meta::CPAN
number,random_num,book_name,brand,predicted,glossy_cover,has_plastic_layer_on_cover,male_present,female_present,total_people_1,total_people_2,total_people_3,total_people_4,total_people_5_n_above,has_flowers,flower_coverage_more_than_half,has_leaves,l...
1,0.417522248963749,"æ èå® ç©åº 4",1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0
2,0.224038175730797,"è·èè²æ¢¦å¹»ç¾ç³",0,0,1,1,1,1,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0
3,0.323147737886061,"ç±ç天空ä¸é¨äº",0,0,1,1,1,1,0,1,0,0,0,1,0,1,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0
4,0.580112146332982,"å®å¨ä¸æå½çå¿",0,0,1,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,1,0,0,1,0,1,1,0,0,0,0,0,0,1,0,0,0
5,0.84919477537331,"é£èµ°è¿æ£®æ",1,1,0,1,0,1,1,0,0,0,0,1,0,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,0,0,0,0,0,0,1,0,0
6,0.516378068835505,"ç¥ç鿥",1,0,0,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1
7,0.264807238500381,"è·èå°å¥³é¦ 1",1,1,0,1,0,1,1,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0
8,0.136196854429181,"èæ·å¥³é©¾å°ä¹ç¾å¥³è®ç»è¥",1,0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0
9,0.755023161812434,"åé¶ä¸å¤ç¾æ¢¦æ",0,0,1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0
10,0.242905525403648,"æè½å¬å°ä½ çå¿å",0,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0
view all matches for this distribution
view release on metacpan or search on metacpan
t/market_distances.csv view on Meta::CPAN
Time,Distance for p=1/5,Distance for p=1/4,Distance for p=1/3,Distance for p=1/2
3,2.20390685817943,1.86184472810659,1.4062395575543,0.694339961796531
4,2.65836447674038,2.26331668553754,1.7386819481692,0.929264413350463
5,3.06230068525675,2.62033143332123,2.03394934133622,1.13533755724841
6,3.43433255897496,2.94648822228056,2.29733943004874,1.32129395148101
7,3.76963760388737,3.24857285134172,2.5473364675614,1.49352002226159
8,4.09187661516117,3.52939665070617,2.78534764430845,1.65383653313492
9,4.38725512901747,3.79685724738136,3.00623741635859,1.80452785710269
10,4.67340480517611,4.0486527345638,3.21803472315078,1.94573376810207
11,4.94342302380845,4.28498915230596,3.41442631236156,2.08239689856648
12,5.20268159473013,4.5170610075855,3.6036574643471,2.2122029492149
13,5.45763467324796,4.74023859372547,3.78835396803746,2.33504312566703
14,5.70206133400777,4.95582974537557,3.96216963058667,2.45479251597452
15,5.93931262039552,5.16181139594489,4.13326231483212,2.56903110150368
16,6.17139615608872,5.36602322525954,4.29740939344421,2.68490291795958
17,6.3950846281385,5.56298591086072,4.46054868275856,2.79361492078853
18,6.6087682645797,5.75441496200866,4.61398249894056,2.89899549393626
19,6.81973278905252,5.93407659464775,4.76860842930897,3.00182275398773
20,7.02636287722095,6.11516721560373,4.91225245035137,3.10050805924155
21,7.23242432259673,6.29344729974593,5.0534466980465,3.19867361682337
22,7.42769709031436,6.46726929391134,5.19542931699548,3.29249342473829
23,7.62312228262743,6.63393247411735,5.33584772040357,3.38517946279568
24,7.81333298682508,6.79930244412904,5.47011179836626,3.47543307384225
25,8.00075593972841,6.96220146234916,5.60128583784344,3.56381149325776
26,8.18030989787345,7.12675831317987,5.73188138288428,3.65092024522026
27,8.36081271278308,7.28855097208513,5.86191722709495,3.73542184576297
28,8.53654270178619,7.44137026307577,5.98490455118383,3.81852300697758
29,8.7180180901157,7.59482361610875,6.10872806335597,3.90028827449531
30,8.89211204035398,7.74530883861539,6.23353629669239,3.97939285426001
31,9.05936190454104,7.89112698200244,6.35378166838727,4.05748315008713
32,9.22876220941479,8.03356079295908,6.46965085740425,4.13657263423399
33,9.39637983127106,8.17964002073194,6.58929082303221,4.215781536638
34,9.55993758993725,8.32355578084026,6.7037088022461,4.29165097785193
35,9.72390086953826,8.46561813205241,6.82055919614506,4.36493857179666
36,9.88291625341879,8.60843883675489,6.93453919037446,4.44132456294798
37,10.039732468867,8.74748120946581,7.04540643434339,4.51432297393512
38,10.192930282007,8.88686856969154,7.15450946270189,4.5846843003464
39,10.3508472309367,9.02265669866678,7.26553002640702,4.65332632492369
40,10.5055428856049,9.1535572165092,7.37269312392077,4.72184168666153
41,10.6552826090571,9.28217043383,7.47537519502653,4.79069164468586
42,10.8118623774783,9.41414516761536,7.57989905172289,4.8543807923924
43,10.9617706925019,9.54442987366186,7.68111520078321,4.91823988575994
44,11.1115318722294,9.6745431078426,7.78302438145392,4.98487545371278
45,11.2586028238955,9.8023572940785,7.88636771902836,5.04870523335181
46,11.39930192309,9.93108013159638,7.98844122142138,5.11218929650585
47,11.54938249885,10.0510952176608,8.08561002353031,5.17784036781129
48,11.6863524391096,10.1707079674891,8.18542827426303,5.24076114499932
49,11.8238239919329,10.2886875103281,8.282579027812,5.30559763268582
50,11.9629554325808,10.4113861070146,8.37800833907232,5.37064502103969
51,12.0996570446061,10.5297788062826,8.47473555268778,5.43297223980223
52,12.2382516189823,10.6484503665826,8.57009729454152,5.49296107295833
53,12.3675986626206,10.7698765386712,8.66554460181806,5.55242404805706
54,12.5015062567925,10.8869519032463,8.75812689908684,5.61287471076547
55,12.6390830332619,10.9999032653733,8.85388143616009,5.67416366865105
56,12.7729336700411,11.114273902987,8.94788394198448,5.7333094740287
57,12.905640478369,11.2274350676996,9.03915378688735,5.79443666494764
58,13.0394379752516,11.3409101029844,9.12900902593611,5.85459123414502
59,13.1671241388709,11.4539004367081,9.2183674401593,5.91185321419463
60,13.2956588234944,11.5671421157854,9.31065688254398,5.96703096131844
61,13.4270639369063,11.6831719070084,9.39880459291107,6.02194790321876
62,13.5548353484384,11.7951021154447,9.49279544530896,6.07619349423694
63,13.6878662020857,11.9043736854634,9.57881625987641,6.13496200964353
view all matches for this distribution
view release on metacpan or search on metacpan
lib/AI/TensorFlow/Libtensorflow/Manual/Notebook/InferenceUsingTFHubMobileNetV2Model.pod view on Meta::CPAN
my $includes_background_class = $probabilities_batched->dim(0) == IMAGENET_LABEL_COUNT_WITH_BG;
if( IN_IPERL ) {
my $html = IPerl->html(
my_table( [0..$#image_names], sub {
my ($batch_idx, $h) = @_;
my $image_name = $image_names[$batch_idx];
my @top_for_image = $top_lists[$batch_idx]->list;
(
$h->tt($image_name),
$h->a( { href => $images_for_test_to_uri{$image_name} },
$h->img({
src => $images_for_test_to_uri{$image_name},
alt => $image_name,
width => '50%',
})
),
do {
my @tr;
push @tr, [ $h->th('Rank', 'Label No', 'Label', 'Prob') ];
while( my ($i, $label_index) = each @top_for_image ) {
my $class_index = $includes_background_class ? $label_index : $label_index + 1;
push @tr, [ $h->td(
$i + 1,
$class_index,
$labels[$class_index],
$probabilities_batched->at($label_index,$batch_idx),
) ];
}
$h->table([$h->tr(@tr)])
},
)
})
);
IPerl->display($html);
} else {
for my $batch_idx (0..$#image_names) {
my $image_name = $image_names[$batch_idx];
my @top_for_image = $top_lists[$batch_idx]->list;
my @td;
say "Image name: `$image_name`";
my $header = [ ('Rank', 'Label No', 'Label', 'Prob') ];
my @rows;
while( my ($i, $label_index) = each @top_for_image ) {
my $class_index = $includes_background_class ? $label_index : $label_index + 1;
push @rows, [ (
$i + 1,
$class_index,
$labels[$class_index],
$probabilities_batched->at($label_index,$batch_idx),
) ];
}
say generate_table( rows => [ $header, @rows ], header_row => 1 );
print "\n";
}
}
B<DISPLAY>:
=for html <span style="display:inline-block;margin-left:1em;"><p><table style="width: 100%"><tr><td><tt>apple</tt></td><td><a href="https://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg"><img alt="apple" src="https://upload.wikimedia.org/...
my $p_approx_batched = $probabilities_batched->sumover->approx(1, 1e-5);
p $p_approx_batched;
say "All probabilities sum up to approximately 1" if $p_approx_batched->all->sclr;
B<STREAM (STDOUT)>:
All probabilities sum up to approximately 1
B<STREAM (STDERR)>:
=for html <span style="display:inline-block;margin-left:1em;"><pre style="display: block"><code><span style="color: #cc66cc;">PDL</span><span style="color: #33ccff;"> {</span><span style="">
</span><span style="color: #6666cc;">Data </span><span style=""> : </span><span style="color: #33ccff;">[</span><span style="color: #ff6633;">1 1 1 1 1 1 1 1 1 1 1 1</span><span style="color: #33ccff;">]</span><span style="">
</span><span style="color: #6666cc;">Type </span><span style=""> : </span><span style="color: #cc66cc;">double</span><span style="">
</span><span style="color: #6666cc;">Shape </span><span style=""> : </span><span style="color: #33ccff;">[</span><span style="color: #9999cc;">12</span><span style="color: #33ccff;">]</span><span style="">
</span><span style="color: #6666cc;">Nelem </span><span style=""> : </span><span style="color: #dd6;">12</span><span style="">
</span><span style="color: #6666cc;">Min </span><span style=""> : </span><span style="color: #f66;">1</span><span style="">
</span><span style="color: #6666cc;">Max </span><span style=""> : </span><span style="color: #99f;">1</span><span style="">
</span><span style="color: #6666cc;">Badflag </span><span style=""> : </span><span style="color: #2c2;">No</span><span style="">
</span><span style="color: #6666cc;">Has Bads</span><span style=""> : </span><span style="color: #2c2;">No</span><span style="">
</span><span style="color: #33ccff;">}</span><span style="">
</span></code></pre></span>
B<RESULT>:
1
=head1 RESOURCE USAGE
use Filesys::DiskUsage qw/du/;
my $total = du( { 'human-readable' => 1, dereference => 1 },
$model_archive_path, $model_base, $labels_path );
say "Disk space usage: $total"; undef;
B<STREAM (STDOUT)>:
Disk space usage: 27.45M
=head1 DEBUGGING
The following images can be used to test the C<load_image_to_pdl> function.
my @solid_channel_uris = (
'https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Solid_red.svg/480px-Solid_red.svg.png',
'https://upload.wikimedia.org/wikipedia/commons/thumb/1/1d/Green_00FF00_9x9.svg/480px-Green_00FF00_9x9.svg.png',
'https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Solid_blue.svg/480px-Solid_blue.svg.png',
);
undef;
=head1 CPANFILE
requires 'AI::TensorFlow::Libtensorflow';
requires 'AI::TensorFlow::Libtensorflow::DataType';
requires 'Archive::Extract';
requires 'Data::Printer';
requires 'Data::Printer::Filter::PDL';
requires 'FFI::Platypus::Buffer';
requires 'FFI::Platypus::Memory';
view all matches for this distribution
view release on metacpan or search on metacpan
samples/postCutoffMatrix view on Meta::CPAN
C0013604 C0005889 1
C0013604 C0302908 1
C0013604 C1521806 1
C0015385 C0543467 1
C0015385 C3241922 1
C0015385 C3828701 1
C0015802 C1880198 1
C0018889 C0041967 1
C0018889 C1281574 1
C0018893 C0041967 1
C0018893 C1281574 1
C0019664 C0020564 1
C0019664 C0205171 1
C0019664 C1293134 1
C0019664 C2711450 1
C0019665 C0020564 1
C0019665 C0205171 1
C0019665 C1293134 1
C0019665 C2711450 1
C0020564 C0230415 1
C0023692 C0162859 1
C0026538 C0036658 1
C0026538 C0392747 1
C0026538 C0443172 1
C0026538 C1455667 1
C0027361 C0445247 1
C0027627 C1418945 1
C0027651 C0030797 1
C0027651 C0559769 1
C0027651 C1279864 1
C0027769 C0871641 1
C0029180 C1880198 1
C0030685 C0011849 1
C0030797 C0743013 1
C0031869 C0043246 1
C0034013 C0015780 1
C0034013 C0043210 1
C0034013 C0086287 1
C0034013 C1705497 1
C0034013 C1705498 1
C0037304 C0013313 1
C0037304 C3714794 1
C0039452 C0333056 1
C0039798 C0013369 1
C0040820 C0041967 1
C0040820 C1281574 1
C0041105 C0332282 1
C0041105 C1522326 1
C0041411 C0039249 1
C0041701 C0166872 1
C0041834 C0680208 1
C0041967 C0332287 1
C0041967 C1705690 1
C0042034 C0549177 1
C0042036 C0030685 1
C0042037 C0030685 1
C0042153 C0041411 1
C0043210 C0042034 1
C0043210 C1552835 1
C0043246 C0549177 1
C0043246 C1704243 1
C0043250 C0018787 1
C0043250 C1281570 1
C0087111 C0013369 1
C0150312 C0224334 1
C0150312 C0226964 1
C0150312 C0227296 1
C0150312 C3714556 1
C0166872 C0015802 1
C0175668 C1418945 1
C0179326 C3816446 1
C0183089 C1518543 1
C0184073 C0013313 1
C0205082 C0868928 1
C0205082 C1706255 1
C0205082 C1706256 1
C0205171 C0027769 1
C0205171 C0599851 1
C0205171 C1302234 1
C0205171 C1705232 1
C0205314 C1513371 1
C0205314 C1705738 1
C0205314 C2347637 1
C0205314 C2348146 1
C0205392 C0302523 1
C0205392 C0700325 1
C0205392 C1551359 1
C0205392 C2741673 1
C0205392 C2981730 1
C0205392 C3244290 1
C0205436 C1418945 1
C0220806 C1551359 1
C0220806 C2741673 1
C0220806 C2981730 1
C0220880 C0036658 1
C0220880 C0392747 1
C0220880 C0443172 1
C0220880 C1455667 1
C0224334 C0179326 1
C0226964 C0011646 1
C0226964 C1123023 1
C0227296 C0011646 1
C0227296 C1123023 1
C0228174 C0333056 1
C0230415 C0332287 1
C0230415 C1705690 1
C0237607 C0015967 1
C0237753 C0018889 1
C0237753 C0018893 1
C0237753 C0040820 1
C0237820 C1517320 1
C0242202 C0333056 1
C0262512 C0020564 1
C0262512 C0205171 1
C0262512 C1293134 1
C0262512 C2711450 1
C0262926 C0020564 1
C0262926 C0205171 1
C0262926 C1293134 1
C0262926 C2711450 1
C0262950 C0184073 1
C0272457 C0439792 1
C0282411 C0012634 1
C0282411 C0205314 1
C0282411 C1280500 1
C0282411 C2348382 1
C0282411 C2699424 1
C0302523 C0027651 1
C0302523 C0080178 1
C0302523 C0229671 1
C0302523 C0445247 1
C0302908 C0282411 1
C0302908 C1515981 1
C0332256 C0005889 1
C0332256 C0302908 1
C0332256 C1521806 1
C0332282 C0009938 1
C0332285 C0224334 1
C0332285 C0226964 1
C0332285 C0227296 1
C0332285 C3714556 1
C0332287 C0282411 3
C0332287 C0302523 1
C0332287 C0678257 1
C0332287 C0700325 1
C0332287 C1514811 1
C0332287 C1706462 1
C0332287 C1964257 1
C0332287 C2985925 1
C0332840 C0037009 1
C0332840 C1269056 1
C0332840 C3714597 1
C0332853 C0029180 1
C0332853 C1278884 1
C0332853 C3273750 1
C0333056 C1553404 1
C0333056 C2348570 1
C0349590 C1979842 1
C0391978 C0184073 1
C0392148 C0025552 1
C0392747 C0150312 1
C0392747 C0332285 1
C0439792 C0549177 1
C0439792 C1704243 1
C0440102 C0013604 1
C0442726 C0392148 1
C0443172 C0150312 1
C0443172 C0332285 1
C0444930 C0262950 1
C0444930 C0391978 1
C0444930 C1266908 1
C0444930 C1266909 1
C0445247 C0237607 1
C0445247 C0562520 1
C0445247 C3245512 1
C0449788 C0018889 1
C0449788 C0018893 1
C0449788 C0040820 1
C0457083 C0041411 1
C0459768 C0001554 1
C0459768 C0039798 1
C0459768 C0087111 1
C0459768 C0441472 1
C0459768 C1522326 1
C0459768 C1533734 1
C0459768 C1705169 1
C0459768 C3266814 1
C0459768 C3538994 1
C0487852 C0006104 1
C0487852 C1269537 1
C0500470 C0029180 1
C0500470 C1278884 1
C0500470 C3273750 1
C0520555 C0679006 1
C0520555 C1947967 1
C0524646 C0150312 1
C0524646 C0332285 1
C0543467 C0850304 1
C0543467 C1515981 1
C0549177 C0237753 1
C0549177 C0262950 1
C0549177 C0391978 1
C0549177 C0449788 1
C0549177 C1265611 1
C0549177 C1266908 1
C0549177 C1266909 1
C0549177 C1554108 1
C0549177 C1561573 1
C0559769 C0743013 1
C0599851 C0871641 1
C0677554 C0029180 1
C0677554 C1278884 1
C0677554 C3273750 1
C0678257 C0026538 1
C0678257 C0220880 1
C0679006 C0015965 1
C0679006 C0242291 1
C0679006 C1305737 1
C0680208 C0459768 1
C0681814 C0042036 1
C0681814 C0042037 1
C0681814 C0302523 1
C0681814 C0700325 1
C0681814 C2963137 1
C0681814 C3244290 1
C0681841 C1139930 1
C0700325 C0027651 1
C0700325 C0080178 1
C0700325 C0229671 1
C0700325 C0445247 1
C0748706 C0037993 1
C0748706 C0771377 1
C0748706 C1278932 1
C0850304 C0884358 1
C0868928 C0002688 1
C0868928 C0002940 1
C0868928 C0011168 1
C0868928 C0016169 1
C0868928 C0020255 1
C0868928 C0027627 1
C0868928 C0034013 1
C0868928 C0037304 1
C0868928 C0041105 2
C0868928 C0041701 1
C0868928 C0041834 1
C0868928 C0043210 1
C0868928 C0043250 1
C0868928 C0175668 1
C0868928 C0205436 1
C0868928 C0237820 1
C0868928 C0272457 1
C0868928 C0332840 1
C0868928 C0487852 1
C0868928 C0520555 1
C0868928 C0524646 1
C0868928 C1293108 1
C0868928 C1546539 1
C0868928 C1555688 1
C0868928 C1963137 1
C0868928 C2004454 1
C0868928 C2348205 1
C0868928 C3263723 1
C0871641 C0748706 1
C0871641 C1456498 1
C0871641 C1999232 1
C1262865 C1979842 1
C1265611 C0039452 1
C1265611 C0228174 1
C1265611 C0242202 1
C1265611 C1280654 1
C1266908 C0184073 1
C1266909 C0184073 1
C1268981 C0033119 1
C1278884 C1880198 1
C1279864 C0743013 1
C1280090 C0543467 1
C1280090 C3241922 1
C1280090 C3828701 1
C1280500 C0003818 2
C1280500 C0543467 1
C1280500 C2348256 2
C1280500 C3241922 1
C1280500 C3828701 1
C1280654 C0333056 1
C1281574 C0332287 1
C1281574 C1705690 1
C1293108 C0332287 1
C1293108 C1705690 1
C1293134 C0230415 1
C1302234 C0012634 1
C1418945 C0332287 1
C1418945 C1705690 1
C1456498 C3277934 1
C1513371 C0442726 1
C1514811 C0868928 1
C1514811 C1533148 1
C1515981 C0229671 1
C1515981 C0868928 1
C1515981 C1533148 1
C1517320 C1280500 1
C1518543 C0444930 1
C1521806 C0282411 1
C1521806 C1515981 1
C1522326 C0013369 1
C1533148 C0016169 1
C1533148 C2348205 1
C1533734 C0013369 1
C1546539 C0037009 1
C1546539 C1269056 1
C1546539 C3714597 1
C1551359 C0205082 1
C1551359 C0205171 1
C1551359 C0440102 1
C1551359 C1280500 1
C1551359 C3540008 1
C1551359 C3540761 1
C1551359 C3540762 1
C1551359 C3540763 1
C1551359 C3540765 1
C1551359 C3540766 1
C1551359 C3540769 1
C1552835 C0549177 1
C1554108 C0039452 1
C1554108 C0228174 1
C1554108 C0242202 1
C1554108 C1280654 1
C1555688 C1517320 1
C1561573 C0039452 1
C1561573 C0228174 1
C1561573 C0242202 1
C1561573 C1280654 1
C1704243 C0262950 1
C1704243 C0391978 1
C1704243 C1265611 1
C1704243 C1266908 1
C1704243 C1266909 1
C1704243 C1554108 1
C1704243 C1561573 1
C1705169 C0013369 1
C1705232 C0012634 1
C1705255 C0020564 1
C1705255 C0205171 1
C1705255 C1293134 1
C1705255 C2711450 1
C1705690 C0282411 3
C1705690 C0302523 1
C1705690 C0678257 1
C1705690 C0700325 1
C1705690 C1514811 1
C1705690 C1706462 1
C1705690 C1964257 1
C1705690 C2985925 1
C1705738 C0442726 1
C1706255 C0002688 1
C1706255 C0002940 1
C1706255 C0011168 1
C1706255 C0020255 1
C1706255 C0027627 1
C1706255 C0034013 1
C1706255 C0037304 1
C1706255 C0041105 2
C1706255 C0041701 1
C1706255 C0041834 1
C1706255 C0043210 1
C1706255 C0043250 1
C1706255 C0175668 1
C1706255 C0205436 1
C1706255 C0237820 1
C1706255 C0272457 1
C1706255 C0332840 1
C1706255 C0487852 1
C1706255 C0520555 1
C1706255 C0524646 1
C1706255 C1293108 1
C1706255 C1546539 1
C1706255 C1555688 1
C1706255 C1963137 1
C1706255 C2004454 1
C1706255 C3263723 1
C1706256 C0002688 1
C1706256 C0002940 1
C1706256 C0011168 1
C1706256 C0020255 1
C1706256 C0027627 1
C1706256 C0034013 1
C1706256 C0037304 1
C1706256 C0041105 2
C1706256 C0041701 1
C1706256 C0041834 1
C1706256 C0043210 1
C1706256 C0043250 1
C1706256 C0175668 1
C1706256 C0205436 1
C1706256 C0237820 1
C1706256 C0272457 1
C1706256 C0332840 1
C1706256 C0487852 1
C1706256 C0520555 1
C1706256 C0524646 1
C1706256 C1293108 1
C1706256 C1546539 1
C1706256 C1555688 1
C1706256 C1963137 1
C1706256 C2004454 1
C1706256 C3263723 1
C1706462 C0868928 1
C1706462 C1533148 1
C1707522 C0033119 1
C1709305 C0027361 1
C1720176 C0042153 1
C1720176 C0457083 1
C1720176 C0459768 1
C1720176 C0871641 1
C1720176 C1947944 1
C1720294 C0042153 1
C1720294 C0457083 1
C1720294 C0459768 1
C1720294 C0871641 1
C1720294 C1947944 1
C1880198 C0023692 1
C1880198 C0183089 1
C1947944 C0041411 1
C1947967 C0015965 1
C1947967 C0242291 1
C1947967 C1305737 1
C1964257 C0445247 1
C1979842 C0332256 1
C1979842 C2700400 1
C1999232 C3277934 1
C2004062 C0020564 1
C2004062 C0205171 1
C2004062 C1293134 1
C2004062 C2711450 1
C2004454 C1517320 1
C2347637 C0442726 1
C2348146 C0442726 1
C2348205 C0349590 1
C2348205 C1262865 1
C2348256 C0032346 1
C2348256 C0332287 1
C2348256 C1548769 1
C2348256 C1550590 1
C2348256 C1705690 1
C2348382 C0543467 1
C2348382 C3241922 1
C2348382 C3828701 1
C2699424 C0349590 1
C2699424 C1262865 1
C2700400 C0005889 1
C2700400 C0302908 1
C2700400 C1521806 1
C2711450 C0230415 1
C2741673 C0205082 1
C2741673 C0205171 1
C2741673 C0440102 1
C2741673 C1280500 1
C2741673 C3540008 1
C2741673 C3540761 1
C2741673 C3540762 1
view all matches for this distribution
view release on metacpan or search on metacpan
cpanfile.snapshot view on Meta::CPAN
File::Temp 0.19
Module::Build 0.40
Scalar::Util 0
Test::Deep 0
Test::More 0.88
XML::LibXML 0
Package-Stash-0.36
pathname: D/DO/DOY/Package-Stash-0.36.tar.gz
provides:
Package::Stash 0.36
Package::Stash::PP 0.36
requirements:
B 0
Carp 0
Config 0
Dist::CheckConflicts 0.02
ExtUtils::MakeMaker 6.30
File::Find 0
File::Spec 0
File::Temp 0
Getopt::Long 0
Module::Implementation 0.06
Package::Stash::XS 0.26
Scalar::Util 0
Symbol 0
Test::Fatal 0
Test::More 0.88
Test::Requires 0
Text::ParseWords 0
base 0
constant 0
lib 0
strict 0
warnings 0
Package-Stash-XS-0.28
pathname: D/DO/DOY/Package-Stash-XS-0.28.tar.gz
provides:
CompileTime undef
Package::Stash::XS 0.28
requirements:
ExtUtils::MakeMaker 6.30
XSLoader 0
strict 0
warnings 0
Readonly-1.03
pathname: R/RO/ROODE/Readonly-1.03.tar.gz
provides:
Readonly 1.03
Readonly::Array 1.03
Readonly::Hash 1.03
Readonly::Scalar 1.03
requirements:
ExtUtils::MakeMaker 0
Sub-Exporter-Progressive-0.001010
pathname: F/FR/FREW/Sub-Exporter-Progressive-0.001010.tar.gz
provides:
Sub::Exporter::Progressive 0.001010
requirements:
ExtUtils::MakeMaker 0
Test::More 0.88
Sub-Uplevel-0.24
pathname: D/DA/DAGOLDEN/Sub-Uplevel-0.24.tar.gz
provides:
Sub::Uplevel 0.24
requirements:
Carp 0
Exporter 0
ExtUtils::MakeMaker 6.30
File::Find 0
File::Temp 0
Test::More 0
constant 0
strict 0
warnings 0
Test-Deep-0.110
pathname: R/RJ/RJBS/Test-Deep-0.110.tar.gz
provides:
Test::Deep 0.110
Test::Deep::All undef
Test::Deep::Any undef
Test::Deep::Array undef
Test::Deep::ArrayEach undef
Test::Deep::ArrayElementsOnly undef
Test::Deep::ArrayLength undef
Test::Deep::ArrayLengthOnly undef
Test::Deep::Blessed undef
Test::Deep::Boolean undef
Test::Deep::Cache undef
Test::Deep::Cache::Simple undef
Test::Deep::Class undef
Test::Deep::Cmp undef
Test::Deep::Code undef
Test::Deep::Hash undef
Test::Deep::HashEach undef
Test::Deep::HashElements undef
Test::Deep::HashKeys undef
Test::Deep::HashKeysOnly undef
Test::Deep::Ignore undef
Test::Deep::Isa undef
Test::Deep::ListMethods undef
Test::Deep::MM undef
Test::Deep::Methods undef
Test::Deep::NoTest undef
Test::Deep::Number undef
Test::Deep::Ref undef
Test::Deep::RefType undef
Test::Deep::Regexp undef
Test::Deep::RegexpMatches undef
Test::Deep::RegexpRef undef
Test::Deep::RegexpRefOnly undef
Test::Deep::RegexpVersion undef
Test::Deep::ScalarRef undef
Test::Deep::ScalarRefOnly undef
Test::Deep::Set undef
Test::Deep::Shallow undef
Test::Deep::Stack undef
Test::Deep::String undef
Test::Deep::SubHash undef
Test::Deep::SubHashElements undef
Test::Deep::SubHashKeys undef
Test::Deep::SubHashKeysOnly undef
Test::Deep::SuperHash undef
Test::Deep::SuperHashElements undef
Test::Deep::SuperHashKeys undef
cpanfile.snapshot view on Meta::CPAN
XML::LibXML::Number 2.0105
XML::LibXML::PI 2.0105
XML::LibXML::Pattern 2.0105
XML::LibXML::Reader 2.0105
XML::LibXML::RegExp 2.0105
XML::LibXML::RelaxNG 2.0105
XML::LibXML::SAX 2.0105
XML::LibXML::SAX::AttributeNode 2.0105
XML::LibXML::SAX::Builder 2.0105
XML::LibXML::SAX::Generator 2.0105
XML::LibXML::SAX::Parser 2.0105
XML::LibXML::Schema 2.0105
XML::LibXML::Text 2.0105
XML::LibXML::XPathContext 2.0105
XML::LibXML::XPathExpression 2.0105
XML::LibXML::_SAXParser 2.0105
requirements:
ExtUtils::MakeMaker 6.56
Test::More 0
XML::NamespaceSupport 1.07
XML::SAX 0.11
base 0
strict 0
vars 0
warnings 0
XML-NamespaceSupport-1.11
pathname: P/PE/PERIGRIN/XML-NamespaceSupport-1.11.tar.gz
provides:
XML::NamespaceSupport 1.11
requirements:
ExtUtils::MakeMaker 6.42
Test::More 0.47
XML-SAX-0.99
pathname: G/GR/GRANTM/XML-SAX-0.99.tar.gz
provides:
XML::SAX 0.99
XML::SAX::DocumentLocator undef
XML::SAX::ParserFactory 1.01
XML::SAX::PurePerl 0.99
XML::SAX::PurePerl::DebugHandler undef
XML::SAX::PurePerl::Exception undef
XML::SAX::PurePerl::Productions undef
XML::SAX::PurePerl::Reader undef
XML::SAX::PurePerl::Reader::Stream undef
XML::SAX::PurePerl::Reader::String undef
XML::SAX::PurePerl::Reader::URI undef
requirements:
ExtUtils::MakeMaker 0
File::Temp 0
XML::NamespaceSupport 0.03
XML::SAX::Base 1.05
XML-SAX-Base-1.08
pathname: G/GR/GRANTM/XML-SAX-Base-1.08.tar.gz
provides:
XML::SAX::Base 1.08
XML::SAX::Base::NoHandler 1.08
XML::SAX::Exception 1.08
requirements:
ExtUtils::MakeMaker 6.31
Test::More 0.88
namespace-clean-0.24
pathname: R/RI/RIBASUSHI/namespace-clean-0.24.tar.gz
provides:
namespace::clean 0.24
requirements:
B::Hooks::EndOfScope 0.12
ExtUtils::CBuilder 0.27
Package::Stash 0.23
Test::More 0.88
view all matches for this distribution
view release on metacpan or search on metacpan
lib/ANSI/Palette.pm view on Meta::CPAN
palette_256();
...
use ANSI::Palette qw/ansi_256/;
background_text_256(208, 33, "This is a test for background_text_256\n");
background_bold_256(160, 33, "This is a test for background_bold_256\n");
background_underline_256(226, 33, "This is a test for background_underline_256\n");
background_italic_256(118, 33, "This is a test for background_italic_256\n");
=head1 EXPORT
A list of functions that can be exported. You can delete this section
if you don't export anything, such as for a purely object-oriented module.
=head2 reset
=cut
=head2 palette_8
prints a font color palette containing the 8 base colors
\e[Nm
31 32 33 34 35 36 37
=cut
=head2 palette_16
prints a font color palette containing the 8 base colors and the bright variation.
\e[Nm
30 31 32 33 34 35 36 37
\e[N;1m
30 31 32 33 34 35 36 37
=cut
=head2 palette_256
prints a font color palette containing the extended 256 terminal colour codes.
\e[38;5;Nm
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256
=cut
=head2 text_8
print text using one of the 8 base colors.
text_8(32, "This is a test for text_8\n");
=cut
=head2 text_16
print text using one of the 16 base colors.
text_16(32, 1, "This is a test for text_16\n");
=cut
=head2 text_256
print text using one of the 256 base colors.
text_256(32, "This is a test for text_256\n");
=cut
=head2 bold_8
print bold text using one of the 8 base colors.
bold_8(32, "This is a test for bold_8\n");
=cut
=head2 bold_16
print bold text using one of the 16 base colors.
bold_16(32, 1, "This is a test for bold_16\n");
=cut
=head2 bold_256
print bold text using one of the 256 base colors.
bold_256(32, "this is a test for bold_256\n");
=cut
=head2 underline_8
print underlined text using one of the 8 base colors.
underline_8(32, "This is a test for underline_8\n");
=cut
=head2 underline_16
view all matches for this distribution
view release on metacpan or search on metacpan
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-26 23:16:30 +0000
Starting version 0.012. Add popular_medias method to API::Instagram.
Some methods do not require token anymore (as Instagram API Docs
describes). Add relatioship get/set method to API::Instagramm::User.
Change: 3e4383545f6a505294ff8a4eb0ed754e4720cd04
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-23 12:07:07 +0000
The Object is created via 'new' again, instance is a new method.
Removed MooX::Singleton dependencie. Starting version 0.011
Change: 4436d8ec5c7eca17222ed619716760f1307c1309
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-22 14:51:36 +0000
Added search method to API::Instagram. Add API::Instagram::Search
module
Change: 9d38ad15993ac27178e3ab9413ad29889ffaa45d
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-22 11:24:00 +0000
Fixed 00-instagram.t error
Change: c5d019cd43e4e218f56f8529160f31a9de5b2680
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-22 11:18:15 +0000
Now API::Instagram is a singleton. Starting version 0.010
Change: 3ad5168aebfb3b4f0bfbb5ea35c9804143c1001c
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-21 21:38:52 +0000
Starting version 0.009
Change: c11b9ff04f2128df3e536b08fc54f108d659fad6
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-21 21:36:25 +0000
Added more tests. Now coverage of 100%
Change: c7d6c67501d1e0ca0168f8c020fed2701cf76cb3
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-21 21:35:10 +0000
Some bugs fixed. Add last_likes and last_comments mehtods to
API::Instagram::Media objects
Change: 78e1204e2c853e2e2f4f33261b0ac0a59b71f6e6
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 23:37:40 +0000
Adding API::Instagram::Media tests
Change: 1014b57b8f0a5135a8e2c0c366160b70d9ec1a4e
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 20:24:03 +0000
Replacing LWP::UserAgent with Furl
Change: 2284e36dc0b688c91ea316bfda29baedc9e803cd
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 17:29:55 +0000
Removed tabs from .travis.yml
Change: f22e0e16a014f3b8a2ea2c9d63a9fd6e43579688
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 17:26:44 +0000
Trying Coveralls again
Change: 69cab747152bf33aaa444479634466fa543e66d0
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 12:27:07 +0000
Removing Coveralls badge
Change: e27f80a2a218910cb8df05e35a833d5097199ffa
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 12:15:22 +0000
Coveralls badge
Change: 1a34fb41fcf395de0f1fb41cd7732b33a77c51a7
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-20 11:02:46 +0000
Adding Coverall badge
Change: 5845d74efe9ca8a1e7c37378f892ba0e562edb81
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-19 22:37:32 +0000
Many bug fixes; Better cache management; Starting version 0.008'
Change: 3d4f7c2554f544dfbf1607279d96ad908ec7a483
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-17 11:26:38 +0000
Fixed profile_picture method on API::Instagram::User. Objects
creation returns undef when Instagram returns an error during
request. API::Instagram::User keeps user previous data when attempt
to reload fails. Starting version 0.007.
Change: ee143d09d124ba0f37b4710008b43d79d786ff73
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-17 01:37:20 +0000
Removed use API::Instagram::Direct request
Change: 905fe6e5d9a8c1a161372a85a297e785f11113b0
Author: Gabriel Vieira <gabriel.vieira@gmail.com>
Date : 2014-08-17 01:28:00 +0000
Media Tags attribute is lazy now - only when requested the tags
objects are generated. Fixed Data request when generating an object.
view all matches for this distribution
view release on metacpan or search on metacpan
lib/API/MikroTik.pm view on Meta::CPAN
package API::MikroTik;
use Mojo::Base '-base';
use API::MikroTik::Response;
use API::MikroTik::Sentence qw(encode_sentence);
use Carp ();
use Mojo::Collection;
use Mojo::IOLoop;
use Mojo::Util qw(md5_sum deprecated);
use Scalar::Util 'weaken';
deprecated "API::MikroTik is deprecated in favour of MikroTik::Client\n";
use constant CONN_TIMEOUT => $ENV{API_MIKROTIK_CONNTIMEOUT};
use constant DEBUG => $ENV{API_MIKROTIK_DEBUG} || 0;
use constant PROMISES => !!(eval { require Mojo::Promise; 1 });
our $VERSION = 'v0.242';
has error => '';
has host => '192.168.88.1';
has ioloop => sub { Mojo::IOLoop->new() };
has password => '';
has port => 0;
has timeout => 10;
has tls => 1;
has user => 'admin';
has _tag => 0;
# Aliases
Mojo::Util::monkey_patch(__PACKAGE__, 'cmd', \&command);
Mojo::Util::monkey_patch(__PACKAGE__, 'cmd_p', \&command_p);
Mojo::Util::monkey_patch(__PACKAGE__, '_fail', \&_finish);
sub DESTROY { Mojo::Util::_global_destruction() or shift->_cleanup() }
sub cancel {
my $cb = ref $_[-1] eq 'CODE' ? pop : sub { };
return shift->_command(Mojo::IOLoop->singleton, '/cancel', {'tag' => shift},
undef, $cb);
}
sub command {
my $cb = ref $_[-1] eq 'CODE' ? pop : undef;
my ($self, $cmd, $attr, $query) = @_;
# non-blocking
return $self->_command(Mojo::IOLoop->singleton, $cmd, $attr, $query, $cb)
if $cb;
# blocking
my $res;
$self->_command($self->ioloop, $cmd, $attr, $query,
sub { $_[0]->ioloop->stop(); $res = $_[2]; });
$self->ioloop->start();
return $res;
}
sub command_p {
Carp::croak 'Mojolicious v7.54+ is required for using promises.'
unless PROMISES;
my ($self, $cmd, $attr, $query) = @_;
my $p = Mojo::Promise->new();
$self->_command(
Mojo::IOLoop->singleton,
$cmd, $attr, $query,
sub {
return $p->reject($_[1], $_[2]) if $_[1];
$p->resolve($_[2]);
}
);
return $p;
}
sub subscribe {
view all matches for this distribution
view release on metacpan or search on metacpan
t/01_basic.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More 0.98;
use Test::TCP;
use Plack::Test;
use HTTP::Request::Common;
use AnyEvent;
use AnyEvent::Socket;
use JSON::XS;
use APNS::Agent;
my $cv = AnyEvent->condvar;
my $apns_port = empty_port;
tcp_server undef, $apns_port, sub {
my $fh = shift or die $!;
my $handle = AnyEvent::Handle->new(fh => $fh);
$handle->push_read( chunk => 1, sub {
is($_[1], pack('C', 1), 'command ok');
$handle->push_read( chunk => 4, sub {
is($_[1], pack('N', 1), 'identifier ok');
$handle->push_read( chunk => 4, sub {
my $expiry = unpack('N', $_[1]);
my $diff = $expiry - (time() + 3600*24);
ok 0 <= $diff && $diff < 5, 'expiry ok';
$handle->push_read( chunk => 2, sub {
is($_[1], pack('n', 32), 'token size ok');
$handle->push_read( chunk => 32, sub {
is($_[1], 'd'x32, 'token ok');
$handle->push_read( chunk => 2, sub {
my $payload_length = unpack('n', $_[1]);
$handle->push_read( chunk => $payload_length, sub {
my $payload = $_[1];
my $p = decode_json($payload);
is(length $payload, $payload_length, 'payload length ok');
is $p->{aps}->{alert}, 'ã»ã', 'value of alert';
$cv->send;
});
});
});
});
});
});
});
};
local $Log::Minimal::LOG_LEVEL = "NONE";
my $apns_agent = APNS::Agent->new(
sandbox => 1,
certificate => 'dummy',
private_key => 'dummy',
debug_port => $apns_port,
);
test_psgi
app => $apns_agent->to_app,
client => sub {
my $cb = shift;
ok !$apns_agent->__apns->connected;
my $req = POST 'http://localhost', [
token => unpack("H*", 'd'x32),
alert => 'ã»ã',
];
my $res = $cb->($req);
like $res->content, qr/Accepted/;
subtest 'monitor' => sub {
my $req = GET 'http://localhost/monitor';
my $res = $cb->($req);
ok $res->is_success;
my $result = decode_json($res->content);
is $result->{sent}, 0;
view all matches for this distribution
view release on metacpan or search on metacpan
lib/ARS/Simple.pm view on Meta::CPAN
1; # End of ARS::Simple
__END__
=head1 NAME
ARS::Simple - A simplified interface to Remedy ARSystem
=head1 SYNOPSIS
A simple interface to Remedy ARSystem utilising the ARSperl API interface.
Keeps your code more readable and by use of the cache avoids your credentials
being spread through all your scripts.
use ARS::Simple;
my $ar = ARS::Simple->new({
server => 'my_remedy_server',
user => 'admin',
password => 'admin',
});
### Get the Entry-ID/Request-ID for all User's with Login starting with 'g'
# Here $eid is any array reference of entry-id/request-id values
my $data = $ar->get_list({
form => 'User',
query => qq{'Login' LIKE "g%"},
});
print Data::Dumper->Dump([$data], ['data']), "\n";
# Resulting data dump:
# $data = {
# 'eids' => [
# '000000000004467',
# '000000000004469',
# '000000000004470',
# ],
# 'numMatches' => 3
#};
### Get data from a form, based on a query (as you would use in the User Tool)
my $form = 'User';
my $entryListLabel = $ar->get_data_by_label({
form => $form,
query => qq{'Login Name' LIKE "ge%"}, # Login Name = FID 101
lfid => { 'LoginName', 101, 'FullName', 8, 'LicenseType', 109, },
});
print Data::Dumper->Dump([$entryListLabel], ['entryListLabel']), "\n";
# Resulting data dump:
# $entryListLabel = {
# '000000000014467' => {
# 'FullName' => 'Geoff Batty',
# 'LicenseType' => 0,
# 'LoginName' => 'gbatty'
# },
# '000000000014469' => {
# 'FullName' => 'Greg George',
# 'LicenseType' => 2,
# 'LoginName' => 'gregg'
# },
# '000000000024470' => {
# 'FullName' => 'Gabrielle Gustoff',
# 'LicenseType' => 0,
# 'LoginName' => 'ggustoff'
# },
# Update a record, change the Login Name to 'greg'
my %lvp = ( LoginName => 'greg' );
$ar->update_record({
eid => '000000000014469',
form => 'User',
lvp => \%lvp,
lfid => { 'LoginName', 101, 'FullName', 8, 'LicenseType', 109, },
});
=head1 VERSION
Version 0.01
=head2 FEATURES
=over 4
=item *
Provides obfuscated storage for default user and password so they are
not scattered throuhout all your scripts
=item *
Provide a perlish interface to ARSperl which makes your code
more readable
=back
=head1 METHODS
=head2 new
Constructor for ARS::Simple. There are three required arguments:
=over 4
=item server
The name (or possibly IP Address) of the Remedy ARSystem server you
wish to connect to.
=item user
The user you wish to connect as (this is often a user with administrator
privilages). Note that while this is a required argument, it may be supplied
via the configuration file to avoid lots of scripts with the user (and password)
in them (less to change, not on display so safer).
=item password
The password to the user you wish to connect as. This may come from the configuration
file if set.
=back
view all matches for this distribution
view release on metacpan or search on metacpan
example/GetCharMenu.pl view on Meta::CPAN
#!/usr/local/bin/perl
#
# $Header: /cvsroot/arsperl/ARSperl/example/GetCharMenu.pl,v 1.8 2003/03/28 05:51:56 jcmurphy Exp $
#
# NAME
# GetCharMenu.pl
#
# USAGE
# GetCharMenu.pl [server] [username] [password] [menuname]
#
# DESCRIPTION
# Retrieve and print information about the named menu.
#
# AUTHOR
# Jeff Murphy
# jcmurphy@acsu.buffalo.edu
#
# $Log: GetCharMenu.pl,v $
# Revision 1.8 2003/03/28 05:51:56 jcmurphy
# more 5.x edits
#
# Revision 1.7 2001/10/24 14:21:27 jcmurphy
# MergeEntry doc update, minor test/example tweaks
#
# Revision 1.6 2000/05/24 18:05:26 jcmurphy
# primary ars4.5 integration in this checkpoint.
#
# Revision 1.5 1998/10/14 13:55:34 jcmurphy
# fixed syntax error
#
# Revision 1.4 1998/09/16 14:38:31 jcmurphy
# updated changeDiary code
#
# Revision 1.3 1998/02/25 19:21:32 jcmurphy
# updated to printout query if query style menu
#
# Revision 1.2 1997/11/10 23:36:52 jcmurphy
# added refreshCode to the output
#
# Revision 1.1 1996/11/21 20:13:51 jcmurphy
# Initial revision
#
#
use ARS;
require 'ars_QualDecode.pl';
# SUBROUTINE
# printl
#
# DESCRIPTION
# prints the string after printing X number of tabs
sub printl {
my $t = shift;
my @s = @_;
if(defined($t)) {
for( ; $t > 0 ; $t--) {
print "\t";
}
print @s;
}
}
($server, $username, $password, $name) = @ARGV;
if(!defined($name)) {
print "Usage: $0 [server] [username] [password] [menuname]\n";
exit 0;
}
$ctrl = ars_Login($server, $username, $password);
print "Calling ars_GetCharMenu($ctrl, $name)..\n";
($finfo = ars_GetCharMenu($ctrl, $name)) ||
die "error in GetCharMenu: $ars_errstr";
# 10005
print "Calling ars_GetCharMenuItems($ctrl, $name)..\n";
my ($menuItems) = ars_GetCharMenuItems($ctrl, $name);
die "$ars_errstr\n" unless defined($menuItems);
print "menuItems=<<$menuItems>> (should be an array ref)\n";
view all matches for this distribution
view release on metacpan or search on metacpan
applications/htmlroot/cgi-bin/admin/timeperiods.pl view on Meta::CPAN
print_header (*STDOUT, $pagedir, $pageset, $htmlTitle, $subTitle, 3600, '', 'F', '', $sessionID);
print "<form action=\"" . $ENV{SCRIPT_NAME} . "\" method=\"post\" name=\"timeperiods\">\n";
$pageNo = 1; $pageOffset = 0;
} else {
print_header (*STDOUT, $pagedir, $pageset, $htmlTitle, $subTitle, 3600, '', 'F', '', $sessionID);
}
if ($action eq 'deleteView' or $action eq 'duplicateView' or $action eq 'editView' or $action eq 'insertView' or $action eq 'listView') {
print <<HTML;
<input type="hidden" name="pagedir" value="$pagedir">
<input type="hidden" name="pageset" value="$pageset">
<input type="hidden" name="debug" value="$debug">
<input type="hidden" name="CGISESSID" value="$sessionID">
<input type="hidden" name="pageNo" value="$pageNo">
<input type="hidden" name="pageOffset" value="$pageOffset">
<input type="hidden" name="action" value="$nextAction">
<input type="hidden" name="orderBy" value="$orderBy">
<input type="hidden" name="catalogIDreload" value="0">
HTML
} else {
print "<br>\n";
}
print " <input type=\"hidden\" name=\"catalogID\" value=\"$CcatalogID\">\n <input type=\"hidden\" name=\"timeperiodID\" value=\"$CtimeperiodID\">\n" if ($formDisabledPrimaryKey ne '' and $action ne 'displayView');
print <<HTML;
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr align="center"><td>
<table border="0" cellspacing="0" cellpadding="0"><tr>
HTML
if ( $iconAdd ) {
print <<HTML;
<td class="StatusItem"><a href="$urlWithAccessParameters&action=insertView&orderBy=$orderBy">[Insert timeperiod]</a></td>
<td class="StatusItem"> </td>
HTML
}
print <<HTML;
<td class="StatusItem"><a href="$urlWithAccessParameters&action=listView&orderBy=$orderBy">[List all timeperiods]</a></td>
</tr></table>
</td></tr>
HTML
if ($action eq 'deleteView' or $action eq 'displayView' or $action eq 'duplicateView' or $action eq 'editView' or $action eq 'insertView') {
my $activatedChecked = ($Cactivated eq 'on') ? ' checked' : '';
print <<HTML;
<tr><td> </td></tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="0">
<tr><td><b>Catalog ID: </b></td><td>
<input type="text" name="catalogID" value="$CcatalogID" size="5" maxlength="5" disabled>
</td></tr><tr><td><b>Timeperiod ID: </b></td><td>
<input type="text" name="timeperiodID" value="$CtimeperiodID" size="2" maxlength="2" $formDisabledPrimaryKey>
</td></tr><tr><td><b>Timeperiod Alias: </b></td><td>
<input type="text" name="timeperiodAlias" value="$CtimeperiodAlias" size="24" maxlength="24" $formDisabledAll>
</td></tr><tr><td><b>Timeperiod Name: </b></td><td>
<input type="text" name="timeperiodName" value="$CtimeperiodName" size="64" maxlength="64" $formDisabledAll>
</td></tr><tr><td><b>Sunday: </b></td><td>
<input type="text" name="sunday" value="$Csunday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Monday: </b></td><td>
<input type="text" name="monday" value="$Cmonday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Tuesday: </b></td><td>
<input type="text" name="tuesday" value="$Ctuesday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Wednesday: </b></td><td>
<input type="text" name="wednesday" value="$Cwednesday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Thursday: </b></td><td>
<input type="text" name="thursday" value="$Cthursday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Friday: </b></td><td>
<input type="text" name="friday" value="$Cfriday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Saturday: </b></td><td>
<input type="text" name="saturday" value="$Csaturday" size="36" maxlength="36" $formDisabledAll> format: [00:00-24:00[,00:00-24:00]{0,2}]
</td></tr><tr><td><b>Activated: </b></td><td>
<input type="checkbox" name="activated" $activatedChecked $formDisabledAll>
</td></tr>
HTML
print " <tr><td> </td><td><br>Please enter all required information before committing the required information. Required fields are marked in bold.</td></tr>\n" if ($action eq 'duplicateView' or $action eq 'editView' or $action eq '...
print " <tr align=\"left\"><td align=\"right\"><br><input type=\"submit\" value=\"$submitButton\"></td><td><br><input type=\"reset\" value=\"Reset\"></td></tr>\n" if ($action ne 'displayView');
print " </table>\n";
} elsif ($action eq 'delete' or $action eq 'edit' or $action eq 'insert') {
print " <tr><td align=\"center\"><br><br><h1>Timeperiod: $htmlTitle</h1></td></tr>";
print " <tr><td align=\"center\">$matchingTimeperiods</td></tr>" if (defined $matchingTimeperiods and $matchingTimeperiods ne '');
} else {
print " <tr><td><br><table align=\"center\" border=0 cellpadding=1 cellspacing=1 bgcolor='#333344'><tr><td align=\"left\"><b>Catalog ID: </b></td><td>$catalogIDSelect</td></tr></table></td></tr>";
print " <tr><td align=\"center\"><br>$matchingTimeperiods</td></tr>";
}
print " </table>\n";
if ($action eq 'deleteView' or $action eq 'duplicateView' or $action eq 'editView' or $action eq 'insertView' or $action eq 'listView') {
print "</form>\n";
} else {
print "<br>\n";
}
}
}
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
print_legend (*STDOUT);
print '</BODY>', "\n", '</HTML>', "\n";
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
view all matches for this distribution
view release on metacpan or search on metacpan
=head2 param_count EXPR
Returns the number of times EXPR appears in the request (Form or
QueryString).
For example, if URL is
myscript.asp?x=a&x=b&y=c
then
param_count('x');
returns 2.
NOTE: Under Apache::ASP, param_count() performs some manipulation
using CGI::param() because Apache::ASP doesn't support the
$obj->{Count} property used in this function.
=cut
sub param_count {
if ($APACHE) {
return scalar( @{[ CGI::param($_[0]) ]} );
}
if ($main::Request->ServerVariables('REQUEST_METHOD')->Item eq 'GET') {
return $main::Request->QueryString($_[0])->{Count};
} else {
return $main::Request->Form($_[0])->{Count};
}
}
=head2 AddDeathHook LIST
Allows cleanup code to be executed when you C<die> or C<exit>.
Useful for closing database connections in the event of a
fatal error.
<%
my $conn = Win32::OLE-new('ADODB.Connection');
$conn->Open("MyDSN");
$conn->BeginTrans();
ASP::AddDeathHook( sub { $Conn->Close if $Conn; } );
%>
Death hooks are not executed except by explicitly calling the die() or exit()
methods provided by ASP.pm.
AddDeathHook is not exported.
=cut
sub AddDeathHook { push @DeathHooks, @_; }
# These two functions are ripped from CGI.pm
sub expire_calc {
my($time) = @_;
my(%mult) = ('s'=>1,
'm'=>60,
'h'=>60*60,
'd'=>60*60*24,
'M'=>60*60*24*30,
'y'=>60*60*24*365);
# format for time can be in any of the forms...
# "now" -- expire immediately
# "+180s" -- in 180 seconds
# "+2m" -- in 2 minutes
# "+12h" -- in 12 hours
# "+1d" -- in 1 day
# "+3M" -- in 3 months
# "+2y" -- in 2 years
# "-3m" -- 3 minutes ago(!)
# If you don't supply one of these forms, we assume you are
# specifying the date yourself
my $offset;
if ( !$time || $time eq 'now' ) {
$offset = 0;
} elsif ( $time =~ /^([+-]?\d+)([mhdMy]?)/ ) {
$offset = ($mult{$2} || 1)*$1;
} else {
return $time;
}
return ($time + $offset);
}
=head1 AUTHOR
Tim Hammerquist E<lt>F<tim@dichosoft.com>E<gt>
=head1 HISTORY
=over 4
=item Version 1.07
Added Warn() because warn() overloading doesn't appear to work
under Apache::ASP.
Was forced to clear @DeathHooks array after calling _END() because
of the persistent state of Apache::ASP holding over contents across
executions.
Removed BinaryWrite(), SetCookie(), and Autoload functionality.
=item Version 1.00
The escapeHTML() and unescapeHTML() functions now accept array refs as well
as lists, as Win32::ASP::HTMLEncode() was supposed to.
Thanks to Matt Sergeant for the fix.
=item Version 0.97
Optimized and debugged.
=item Version 0.77
Overloaded warn() and subsequently removed prototypes.
Exported $ScriptingNamespace object.
Added methods escape(), unescape(), escapeHTML(), unescapeHTML().
Thanks to Bill Odom for pointing these out!
view all matches for this distribution
view release on metacpan or search on metacpan
xt/12_nested-boolean.t view on Meta::CPAN
# -*- mode: cperl -*-
use strict;
use Test::More;
use AWS::CLIWrapper;
my $AMI_ID = 'ami-0cc905e12087478be'; # Ubuntu 18.04
my $aws = AWS::CLIWrapper->new;
my $res;
my $err;
$res = $aws->ec2('run-instances', {
count => 1,
image_id => $AMI_ID,
instance_type => 't2.micro',
key_name => 'hirose31-aws-tokyo',
network_interfaces => [
{
DeviceIndex => 0,
SubnetId => 'subnet-00c69dad8729ad024',
PrivateIpAddress => "10.0.0.240",
Groups => [ 'sg-0ec4572b2c015784c' ],
AssociatePublicIpAddress => JSON::true, # not $AWS::CLIWrapper::true,
},
],
})
or die sprintf("Code : %s\nMessage: %s",
$AWS::CLIWrapper::Error->{Code},
$AWS::CLIWrapper::Error->{Message},
);
ok($res, 'run-instances');
my $instance_id = $res->{Instances}[0]{InstanceId};
ok($instance_id, 'getting instance id');
$res = $aws->ec2('terminate-instances', {
instance_ids => [$instance_id],
})
or die sprintf("Code : %s\nMessage: %s",
$AWS::CLIWrapper::Error->{Code},
$AWS::CLIWrapper::Error->{Message},
);
ok($res, 'terminate-instances');
done_testing;
view all matches for this distribution
view release on metacpan or search on metacpan
t/ip-ranges.json view on Meta::CPAN
{
"syncToken": "1423319529",
"createDate": "2015-02-07-14-36-01",
"prefixes": [
{
"ip_prefix": "50.19.0.0/16",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.98.0/24",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.254.0/24",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "75.101.128.0/17",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.192.0/22",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.194.0.0/15",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.224.0/21",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.192.0/19",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.208.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.172.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "50.16.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.54.0/23",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.222.0.0/20",
"region": "cn-north-1",
"service": "AMAZON"
},
{
"ip_prefix": "52.16.0.0/15",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.76.0.0/15",
t/ip-ranges.json view on Meta::CPAN
"ip_prefix": "54.179.0.0/16",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.160.0/19",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "52.68.0.0/15",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.153.128.0/17",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.199.0.0/16",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.34.32.0/19",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.232.0/22",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "204.246.176.0/20",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.246.0.0/16",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "46.137.128.0/18",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.92.128.0/17",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.32.120.0/22",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.240.0/24",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.236.0/22",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.4.0/22",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.94.0.0/16",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "52.64.0.0/17",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.240.0/22",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.230.0.0/16",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.223.0.0/16",
"region": "cn-north-1",
"service": "AMAZON"
},
{
"ip_prefix": "184.72.0.0/18",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.247.0.0/16",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.224.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.100.0/23",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.215.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.250.0/23",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.68.0.0/14",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.200.0/24",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.206.0.0/16",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "72.44.32.0/19",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.252.0/24",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.151.128.0/17",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "184.73.0.0/16",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "96.127.0.0/17",
"region": "us-gov-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.248.0/24",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.196.0/24",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.204.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.192.0/19",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "203.83.220.0/22",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "216.137.32.0/19",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "52.28.0.0/16",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.216.0.0/15",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.252.0.0/16",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.78.0.0/16",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "72.21.192.0/19",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.255.0/24",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "122.248.192.0/18",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.93.0.0/16",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.253.0/24",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.232.0/22",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.160.0.0/13",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "177.71.128.0/17",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.244.0/22",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.108.0/22",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.196.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.224.0/22",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "204.246.164.0/22",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "46.137.0.0/17",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.176.0.0/15",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.244.0/23",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.210.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.99.0/24",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.155.0.0/16",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.249.0/24",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.193.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.203.0/24",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "50.18.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.192.0.0/16",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.230.0/23",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "184.169.128.0/17",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.0.0/17",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.251.0.0/16",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.104.0/23",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "87.238.80.0/21",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.56.0/21",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "184.72.128.0/17",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.128.0/18",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "52.0.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.229.0.0/16",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.197.0/24",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.8.0/21",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "46.51.224.0/19",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "216.182.224.0/20",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.248.0/21",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.241.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.66.0.0/16",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.200.0.0/15",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.74.0.0/15",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.144.0.0/14",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.198.0.0/16",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.79.0.0/16",
"region": "ap-southeast-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.202.0.0/15",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "176.34.128.0/17",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.67.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.88.0.0/14",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "204.236.128.0/18",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.148.0.0/15",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.151.0.0/17",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.248.0.0/15",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.236.0/22",
"region": "us-gov-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.226.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.128.0/18",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.48.0/22",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "204.246.174.0/23",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.226.0/24",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "204.246.160.0/22",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "175.41.128.0/18",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "52.10.0.0/15",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.225.0/24",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.214.0.0/16",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.227.0/24",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.32.125.0/25",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.244.0/22",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.245.0.0/16",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.150.0.0/16",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.234.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.128.0/19",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "178.236.0.0/20",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "103.246.148.0/23",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.208.0/20",
"region": "cn-north-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.184.0.0/13",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.242.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "204.236.192.0/18",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "67.202.0.0/18",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.212.0.0/15",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.154.0.0/16",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.199.0/24",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.174.0.0/15",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.233.0.0/18",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.152.0.0/16",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.233.64.0/18",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.32.112.0/21",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "207.171.160.0/20",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "107.20.0.0/14",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "46.137.192.0/19",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "52.12.0.0/15",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.178.0.0/16",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.220.0/22",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "46.51.192.0/20",
t/ip-ranges.json view on Meta::CPAN
"ip_prefix": "54.239.52.0/23",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.183.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "79.125.0.0/17",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.32.96.0/21",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "103.246.150.0/23",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.240.0/22",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.169.0.0/16",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.221.0.0/16",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.2.0/23",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "176.32.104.0/21",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.34.0.0/19",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.168.0.0/16",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.247.0/24",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "185.48.120.0/22",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "46.137.224.0/19",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "52.74.0.0/16",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "204.246.168.0/22",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.16.0/20",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "205.251.252.0/23",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "184.72.64.0/18",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "46.51.128.0/18",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.96.0/24",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.207.0.0/16",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.244.0.0/16",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "177.72.240.0/21",
"region": "sa-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.240.198.0/24",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "176.34.64.0/18",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.219.0.0/16",
"region": "us-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "207.171.176.0/20",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.254.0/24",
"region": "us-gov-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.80.0.0/13",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.239.32.0/21",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "23.20.0.0/14",
"region": "us-east-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.218.0.0/16",
"region": "us-west-2",
"service": "AMAZON"
},
{
"ip_prefix": "54.72.0.0/15",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.170.0.0/15",
"region": "eu-west-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.255.0.0/16",
"region": "ap-southeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.182.0.0/16",
"region": "GLOBAL",
"service": "AMAZON"
},
{
"ip_prefix": "27.0.0.0/22",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.231.192.0/20",
"region": "eu-central-1",
"service": "AMAZON"
},
{
"ip_prefix": "54.95.0.0/16",
"region": "ap-northeast-1",
"service": "AMAZON"
},
{
"ip_prefix": "103.4.8.0/21",
t/ip-ranges.json view on Meta::CPAN
"ip_prefix": "107.23.255.0/26",
"region": "us-east-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.245.168.0/26",
"region": "us-west-2",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.250.253.192/26",
"region": "ap-northeast-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.228.16.0/26",
"region": "eu-west-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.251.31.128/26",
"region": "ap-southeast-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.252.79.128/26",
"region": "ap-southeast-2",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.243.31.192/26",
"region": "us-east-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "177.71.207.128/26",
"region": "sa-east-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.244.52.192/26",
"region": "us-west-2",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.183.255.128/26",
"region": "us-west-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "54.252.254.192/26",
"region": "ap-southeast-2",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "176.34.159.192/26",
"region": "eu-west-1",
"service": "ROUTE53_HEALTHCHECKS"
},
{
"ip_prefix": "205.251.254.0/24",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "54.239.192.0/19",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "204.246.176.0/20",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "54.230.0.0/16",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "205.251.250.0/23",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "205.251.192.0/19",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "216.137.32.0/19",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "204.246.164.0/22",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "205.251.249.0/24",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "54.192.0.0/16",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "54.239.128.0/18",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "54.240.128.0/18",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "204.246.174.0/23",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "204.246.168.0/22",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "205.251.252.0/23",
"region": "GLOBAL",
"service": "CLOUDFRONT"
},
{
"ip_prefix": "54.182.0.0/16",
"region": "GLOBAL",
"service": "CLOUDFRONT"
}
]
}
view all matches for this distribution
view release on metacpan or search on metacpan
xt/author/tidyall.t view on Meta::CPAN
# This file was automatically generated by Dist::Zilla::Plugin::Test::TidyAll v$VERSION
use Test::More 0.88;
BEGIN {
if ( $] < 5.010 ) {
plan skip_all => 'This test requires Perl version 5.010';
}
}
use Test::Code::TidyAll 0.24;
tidyall_ok(
verbose => ( exists $ENV{TEST_TIDYALL_VERBOSE} ? $ENV{TEST_TIDYALL_VERBOSE} : 1 ),
jobs => ( exists $ENV{TEST_TIDYALL_JOBS} ? $ENV{TEST_TIDYALL_JOBS} : 4 ),
);
done_testing;
view all matches for this distribution
view release on metacpan or search on metacpan
Revision history for Perl extension aws-lambda
0.6.0 2025-09-10T02:50:47Z
- Perl 5.42.0 is released #194
0.5.5 2025-09-10T01:19:36Z
- ap-southeast-6 is available #199
- bump JSON::XS 4.04 and Cpanel::JSON::XS 4.04 #197
- bump IO::Socket::SSL 2.095 #184, #187, #193
0.5.4 2025-06-16T02:52:21Z
- ap-east-2 is available #182
- bump IO::Socket::SSL 2.091 #177, #181
- bump Mozilla::CA 20250602 #177
0.5.3 2025-06-04T10:53:08Z
- Perl 5.40.2 and 5.38.4 are released #170
0.5.2 2025-01-20T20:32:05Z
- Perl 5.40.1 and 5.38.3 are released #164
- ap-northeast-7 adn mx-central-1 are available #166
- bump IO::Socket::SSL 2.089 #155
- bump YAML::XS 0.902.0 #156, #158
- bump Mozii::CA 20240924 #159
- bump Cpanel::JSON::XS v4.39 #160
- bump YAML::Tiny v1.76 #161, #162
0.5.1 2024-08-26T11:04:34Z
- ap-southeast-5 is available
- AWS Lambda Functions powered by AWS Graviton2 now available on ca-west-1
- bump JSON::MaybeXS 1.004008 #152, #153
- bump Mozilla::CA 20240730 #150
- bump IO::Socket::SSL 2.088 #147, 148, #149
0.5.0 2024-06-11T05:13:06Z
- Perl 5.40.0 is released
- bump IO::Socket::SSL 2.085 #140
- bump YAML::XS 0.89 #142
0.4.3 2024-01-22T01:05:31Z
- bump Paws v0.46 #138
- bump YAML 1.31 #136
- bump Net::SSLeay 1.94 #137
0.4.2 2023-12-22T00:18:48Z
- ca-west-1 is available
- bump Mozilla::CA 20231213
0.4.1 2023-12-01T14:13:48Z
- Perl 5.38.2 and 5.36.3 are released
0.4.0 2023-11-14T10:45:45Z
- introduce Amazon Linux 2023 based image
0.3.0 2023-09-04T11:31:05Z
- AWS Lambda Functions powered by AWS Graviton2 now available in 6 additional regions #121
- disable HTTP timeout #119
- bump Mozilla::CA 20230821 #120
0.2.0 2023-08-09T11:25:36Z
- bump Mozilla::CA 20230807
- support streaming response
0.1.2 2023-08-05T22:22:19Z
- bump Mozilla::CA 20230801
- install Carton
0.1.1 2023-08-01T13:32:15Z
- ap-south-2, ap-southeast-4, eu-central-2, eu-south-2 and il-central-1 are available.
0.1.0 2023-07-31T11:31:41Z
- switch build environment from lambci/lambda based to public.ecr.aws/lambda/provided based.
- stop building Amazon Linux 2 based layers.
- These layers are still available however they will not receive any updates.
0.0.40 2023-07-09T17:55:20Z
- Perl 5.38.0 is released
- Perl 5.36.1 is released
0.0.39 2022-11-20T18:56:48Z
- update dependency modules
0.0.38 2022-11-13T05:40:29Z
- fix Untagged opnames warnings, closes https://github.com/shogo82148/p5-aws-lambda/issues/97
- Off load perlstrip to AWS Lambda.
- add fallback to content-type
0.0.37 2022-10-08T13:28:41Z
- arm64 compatible layers are now available on 12 additional regions
- Africa (Cape Town) af-south-1
- Asia Pacific (Seoul) ap-northeast-2
- Asia Pacific (Jakarta) ap-southeast-3
- Asia Pacific (Hong Kong) ap-east-1
- Asia Pacific (Osaka) ap-northeast-3
- Canada (Central) ca-central-1
- Europe (Paris) eu-west-3
- Europe (Stockholm) eu-north-1
- Europe (Milan) eu-south-1
- Middle East (Bahrain) me-south-1
- South America (Sao Paulo) sa-east-1
- US West (N. California) us-west-1
- x86_64 compatible layers are now available on Middle East (UAE) Region me-central-1
0.0.36 2022-05-30T14:10:22Z
- support AWS Lambda Functions URLs
0.0.35 2022-03-25T07:55:09Z
- Perl 5.34.1 is released
0.0.34 2021-12-16T09:26:58Z
- Asia Pacific (Jakarta) Region ap-southeast-3 is available
0.0.33 2021-11-22T00:18:42Z
- add missing dependency expat
0.0.32 2021-11-21T01:39:00Z
- fix broken dependencies, closes https://github.com/shogo82148/p5-aws-lambda/issues/75
- migrate to https://gallery.ecr.aws/shogo82148/lambda-provided
0.0.31 2021-10-26T13:20:57Z
- Europe (Stockholm) eu-north-1 is available
0.0.30 2021-10-06T00:13:52Z
- add amd64 compatible layers
- pre-install some modules
0.0.29 2021-07-16T11:25:47Z
- bump Paws 0.44
0.0.28 2021-06-13T15:46:13Z
- Fix mojibake when the input and the output are utf8 encoded
- Update WwwCounter v4.0.0 in the examples
0.0.27 2021-05-21T03:58:38Z
- Perl 5.34.0 is released
0.0.26 2021-05-09T02:54:24Z
- bump Paws 0.43
0.0.25 2021-03-02T05:32:05Z
- new region Asia Pacific (Osaka) ap-northeast-3 is available
- custom registry name https://gallery.ecr.aws/shogo82148/p5-aws-lambda is now available
- old one https://gallery.ecr.aws/w2s0h5h2/p5-aws-lambda is still alive
0.0.24 2021-01-25T10:18:13Z
- perl 5.32.1 is released
0.0.23 2021-01-02T02:20:42Z
- support Container Image format https://aws.amazon.com/jp/blogs/aws/new-for-aws-lambda-container-image-support/
0.0.22 2020-08-15T04:48:07Z
- Perl 5.32.0 on Amazon Linux 2 is released
0.0.21 2020-06-22T11:24:18Z
- Nothing changes. I mistook releasing v0.0.20 and v0.0.19
0.0.20 2020-06-21T01:48:12Z
- Perl 5.32.0 is released
0.0.19 2020-06-19T23:02:01Z
- add interface for getting layers' information
0.0.18 2020-06-02T19:54:22Z
- Perl 5.30.3 and 5.28.3 are released
0.0.17 2020-04-28T10:07:10Z
- new region Europe (Milan) eu-south-1 is available
0.0.16 2020-04-23T00:23:44Z
- new region Africa (Cape Town) af-south-1 is available
0.0.15 2020-04-17T11:53:53Z
- fix syntax error of POD
0.0.14 2020-04-11T11:37:43Z
- AWS::Lambda::PSGI supports API Gateway v2 now
0.0.13 2020-03-15T00:14:09Z
- perl 5.30.2 is released
0.0.12 2020-03-11T06:42:11Z
- bump up AWS::XRay to 0.11
0.0.11 2019-11-13T03:04:08Z
- perl 5.30.1 is released
0.0.10 2019-09-21T20:07:37Z
- apply perlstrip and podstrip
0.0.9 2019-08-24T07:07:48Z
- new region Middle East (Bahrain) me-south-1 is available
0.0.8 2019-08-22T00:01:37Z
- minor fix of typo in the pod
0.0.7 2019-08-21T09:15:30Z
- support XRay and AWS::XRay is pre-installed
- AWS::Lambda::PSGI injects the lambda request id into psgix.request_id
0.0.6 2019-07-16T16:45:33Z
- add Paws layer
- use virtual hostedâstyle s3 urls instead of path style urls
0.0.5 2019-05-22T12:42:18Z
- perl 5.30.0 is released
view all matches for this distribution