diff --git a/.gitignore b/.gitignore index 0d20b64..69fa6ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,14 @@ *.pyc +.DS_Store +target +bin +build +.gradle +*.iml +*.ipr +*.iws +*.log +.classpath +.project +.settings +.idea \ No newline at end of file diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..af4a91f --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Aditya Grover + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/emb/karate.emb b/emb/karate.emb index 0c3c45d..8f7edb4 100644 --- a/emb/karate.emb +++ b/emb/karate.emb @@ -1,35 +1,35 @@ 34 128 -1 -0.004201 -0.005411 0.003924 -0.002613 0.001724 -0.004548 0.000187 0.003301 0.003636 0.000353 -0.002871 0.000258 0.002610 -0.003075 -0.001770 -0.003710 0.001728 -0.002344 0.003666 -0.002113 0.002859 -0.000265 0.001757 0.001774 0.000803 0.000892 0.002228 0.003572 0.001540 -0.001283 -0.004028 0.002972 -0.001052 0.001235 -0.002513 -0.004013 -0.002618 -0.001578 0.003195 -0.004765 -0.004068 -0.002515 0.003441 0.003286 -0.002354 -0.001857 -0.002187 0.000009 0.003658 0.003438 -0.004273 0.004676 -0.000947 0.004520 -0.004521 0.000147 -0.000911 0.003638 -0.003276 0.001743 0.002836 -0.004833 -0.003180 0.000674 -0.003148 0.000464 0.000726 0.001919 -0.003957 -0.001004 -0.000306 -0.003565 0.003683 -0.000273 -0.001836 -0.002237 0.003405 -0.002533 0.002044 -0.004086 -0.001904 -0.004308 -0.000161 -0.003931 -0.002643 -0.002415 -0.001415 -0.000713 0.002926 0.000751 0.001812 0.000807 0.001360 -0.000561 -0.001593 -0.000046 -0.000844 -0.003737 0.003586 0.001884 -0.003600 0.002709 0.001152 -0.001402 0.002049 0.003525 0.004213 0.002966 -0.002046 0.000356 -0.001611 -0.001917 0.001100 0.003331 -0.002625 -0.001967 0.002471 0.002992 -0.004072 -0.002084 -0.000916 0.001756 -0.002633 -0.001077 -0.001703 -0.000645 -0.000935 0.001691 -34 -0.002381 -0.003183 0.002605 0.003162 0.003456 -0.002464 0.004356 -0.000608 -0.002327 0.000236 -0.004350 0.000877 0.001389 -0.001762 -0.002334 -0.002796 0.003336 0.000214 0.002837 0.002893 0.001176 -0.000671 0.004738 -0.002291 0.000474 -0.003804 0.002305 -0.001554 -0.001274 0.003276 0.003573 0.001622 -0.003251 0.001409 0.000740 0.002075 0.004983 0.001914 0.000308 0.001008 -0.003225 0.003877 0.003704 0.002567 -0.002123 -0.002400 0.002620 -0.002937 0.002286 0.003337 0.000918 0.002061 0.002358 0.003558 -0.003262 -0.004214 -0.000371 0.000553 -0.000513 -0.001317 -0.000939 0.001276 -0.004070 0.001428 0.000059 -0.002698 -0.002136 -0.003548 0.003247 -0.000687 -0.001913 -0.000306 -0.003449 0.002575 0.000768 -0.000530 -0.002816 0.003840 0.000949 0.001740 -0.003538 -0.002738 0.001158 -0.002928 0.001661 0.003789 -0.000346 0.001041 -0.002605 0.001779 -0.002313 0.000766 -0.000003 -0.000698 -0.002143 0.002995 -0.001893 0.002130 -0.001230 -0.001032 -0.002365 0.003742 -0.001352 -0.003363 -0.003886 0.000282 0.003777 -0.000277 -0.001261 0.001088 0.001788 0.000508 0.000222 0.003408 -0.001198 -0.001379 0.000774 0.004389 -0.001780 0.003411 -0.000964 -0.001595 0.002149 -0.000902 -0.003354 0.002989 0.002183 0.001570 -33 -0.000361 -0.002779 0.000870 0.003366 0.003028 -0.003569 -0.000598 0.003828 0.002190 -0.000243 0.001853 0.000128 0.000446 -0.003209 0.003147 0.001597 -0.001163 0.002479 -0.003096 -0.000398 0.003361 -0.000127 0.002978 -0.002784 -0.002445 -0.000228 -0.002297 0.000194 0.001987 0.001938 -0.000707 0.003429 -0.000491 0.003628 -0.003699 -0.003040 -0.000170 -0.000090 -0.003614 0.003088 -0.001785 0.001780 0.002173 -0.002040 -0.001768 0.002043 -0.000983 -0.002893 -0.002941 -0.000328 -0.001357 0.003654 0.002355 -0.001661 -0.004142 0.001254 -0.002331 0.001192 0.002829 0.002381 0.003989 -0.004162 -0.002473 0.001977 0.002884 -0.003034 0.003734 -0.002086 0.001453 0.002339 0.003309 -0.000551 0.001308 0.001771 -0.002134 0.002508 0.001359 -0.000468 0.001181 -0.000535 0.003706 -0.002225 -0.001585 -0.002648 0.000245 0.002906 -0.001255 -0.000456 0.000138 0.001101 0.003489 0.002932 -0.000169 -0.001772 0.002712 0.003625 -0.002686 -0.003353 0.003464 -0.001125 -0.003165 -0.002652 -0.001816 0.003742 0.001406 -0.003012 0.001604 0.001181 0.002112 -0.002026 -0.001047 0.000606 0.000996 -0.002913 0.001522 0.000745 -0.000105 -0.002979 -0.003285 -0.003296 0.001669 -0.000435 0.002694 0.000647 0.001268 -0.001299 -0.002540 -0.002247 -3 -0.003596 0.000052 0.003685 0.000628 0.001091 -0.000617 0.002491 0.000202 -0.003510 -0.001339 0.001394 -0.002471 -0.003585 -0.004417 -0.001635 -0.003316 0.003439 -0.003103 -0.000660 -0.002279 -0.002555 0.001548 -0.000440 0.003868 0.003661 -0.001645 -0.000079 0.002771 0.003950 0.003843 -0.002196 -0.002023 -0.003782 0.003720 -0.001359 -0.003447 0.001642 0.002394 0.001105 0.001643 0.000057 -0.003652 0.001375 0.003769 -0.002266 -0.000379 0.002710 -0.002774 -0.003786 0.002873 0.002891 -0.000846 -0.003533 0.001407 -0.002991 -0.002665 -0.002162 0.001131 -0.002058 0.003630 -0.003115 0.001360 -0.001281 0.003831 0.000039 -0.002790 0.003415 0.002606 0.000793 -0.003411 0.002347 0.000782 -0.002218 0.002485 0.001934 -0.001562 0.003801 -0.001058 0.003552 -0.001080 -0.000534 0.002138 -0.001458 -0.002454 0.001033 0.001944 -0.000340 0.001067 -0.002342 -0.000957 -0.001088 0.002104 -0.000778 0.000434 -0.003728 0.002997 -0.003617 0.002635 0.003566 0.000474 -0.003946 0.000955 -0.003835 -0.001275 0.001691 0.003915 0.000215 -0.000038 0.002660 -0.002242 0.002471 0.000018 0.000836 0.000704 0.000453 0.001831 -0.001091 0.002718 0.002653 0.000295 -0.002107 -0.003594 -0.001149 -0.001405 -0.002797 0.000855 0.001258 0.002057 -2 0.002658 -0.001979 -0.000436 -0.001005 -0.001075 -0.000479 0.002316 0.002634 -0.002977 -0.000255 -0.001769 0.002965 0.002420 -0.003720 -0.000488 -0.004182 -0.002442 0.001434 -0.000589 -0.000356 0.002010 0.000991 0.003767 -0.000098 -0.002919 -0.000901 -0.001779 0.000521 0.002429 0.002123 0.002540 -0.000800 -0.003857 0.003494 -0.003916 0.001500 0.001588 -0.002638 0.001335 -0.001866 0.000409 0.003043 0.002571 0.000249 -0.003312 -0.000084 -0.001944 -0.001476 0.001598 -0.001574 -0.000160 -0.001992 0.002142 0.004403 -0.004861 -0.000741 0.001812 0.003393 -0.002777 0.003458 -0.001374 0.000997 -0.000857 -0.002342 -0.001395 0.002602 -0.001019 -0.001566 -0.003868 -0.002546 -0.001262 -0.000840 0.003292 -0.000664 -0.000757 0.002507 0.001819 -0.001712 0.000804 -0.001503 -0.002365 -0.003012 -0.003644 -0.000408 0.001633 0.003816 -0.000835 -0.000548 0.003398 -0.002560 0.002863 0.003238 0.000794 -0.004054 -0.004536 0.001741 -0.001908 -0.002737 -0.002010 0.003205 0.001672 -0.002115 0.000705 -0.004151 -0.000587 -0.003268 0.005179 0.004289 -0.003180 0.000079 -0.002953 0.001662 0.001665 -0.001591 -0.003536 -0.000800 0.000671 0.002633 -0.003773 -0.001297 -0.001629 -0.002354 0.001746 -0.004799 0.001165 0.002030 0.003851 0.001055 -4 -0.000269 0.003187 0.000232 0.001655 0.002381 -0.002810 -0.003203 0.004010 0.000692 -0.002104 0.003259 0.001266 0.002822 -0.001493 -0.000968 -0.001320 0.000674 -0.002632 0.001144 0.002284 0.001770 -0.000759 -0.002034 -0.001374 0.001883 0.000858 -0.002530 0.002108 0.003302 -0.001341 -0.002037 -0.002309 -0.000749 -0.000291 -0.001895 -0.001414 0.002804 0.002357 0.001355 0.001655 0.000755 -0.003081 0.003591 0.003784 0.001266 -0.002961 -0.000891 -0.003277 -0.002535 -0.002306 0.002492 -0.002631 0.000966 0.001688 -0.002360 0.001210 0.001673 0.000552 0.001428 -0.001613 0.004102 -0.002427 0.001400 0.000535 0.002442 0.003415 -0.003859 0.001764 -0.000279 -0.001811 0.000436 0.001269 0.002687 -0.003556 0.002335 -0.001123 0.003731 0.002163 -0.001702 0.002947 0.001135 -0.004187 -0.000892 0.000816 0.001824 -0.000457 0.003774 -0.002181 0.002825 0.001292 -0.002476 -0.000630 -0.003298 -0.001515 -0.001484 0.001739 -0.003363 -0.002258 0.000513 -0.000165 -0.002924 0.001083 0.003488 0.003156 -0.003225 0.001958 -0.001930 0.001793 -0.001684 -0.001350 0.003158 -0.001126 0.000301 0.001157 -0.000258 0.002639 -0.000333 0.001716 -0.000947 -0.000189 0.001817 0.000752 -0.003427 -0.004335 -0.003758 0.001031 0.003531 0.002675 -32 -0.002066 -0.003762 -0.003647 0.000229 0.000311 0.000034 0.002862 -0.000507 -0.001579 0.000880 -0.001341 0.002437 -0.001270 0.000406 0.000480 0.001592 0.000929 -0.001582 -0.003601 0.000225 0.000531 0.002870 -0.002584 -0.001791 -0.003093 -0.001237 -0.001776 0.003664 0.001427 -0.001760 -0.001215 -0.000084 0.003361 0.002564 -0.002637 -0.000162 0.003464 0.003556 -0.000966 -0.002895 -0.003463 0.001691 -0.000039 -0.000189 -0.003747 -0.000846 0.003010 0.001477 -0.000454 -0.003130 -0.000944 0.001986 -0.001079 0.002241 -0.003603 -0.002888 -0.001784 -0.000222 -0.000384 -0.000927 0.001418 -0.000097 -0.003207 0.003761 -0.003566 -0.001281 -0.002542 0.002706 0.000340 -0.004103 -0.003329 0.002942 0.001155 -0.001536 -0.001904 0.002564 0.001191 0.000549 -0.000371 -0.000412 -0.001181 -0.002148 0.002812 -0.000115 -0.000505 0.003844 0.001635 0.000711 0.001293 -0.002694 0.001736 0.002776 0.002394 -0.002717 0.001029 0.000274 0.000149 -0.001546 -0.003356 -0.003440 0.001189 -0.002639 -0.003726 -0.002461 0.002390 0.003855 0.003832 -0.001943 -0.003636 0.001403 0.000540 -0.002127 0.002251 0.002903 0.002378 0.002216 -0.000737 0.003680 0.002772 -0.001605 -0.001645 -0.003948 0.000067 0.001101 0.002797 -0.003384 -0.003623 0.003164 -14 -0.001912 -0.003154 0.003907 -0.003109 0.002052 0.000909 -0.001747 -0.001081 -0.001765 0.002132 -0.004156 0.002202 -0.001198 -0.001078 0.000169 0.000551 0.001954 -0.000460 0.000899 -0.002335 0.003310 0.003905 0.000424 0.002421 -0.001239 0.001796 0.002838 0.003872 -0.003580 0.003378 0.001804 0.001575 -0.001744 0.003056 0.002060 -0.001898 -0.000810 0.000106 -0.001415 -0.000693 -0.004187 0.000461 0.002273 0.002946 -0.000853 0.001417 0.001222 0.002135 0.000127 0.003910 -0.002022 0.000669 -0.000878 0.002652 -0.000485 -0.001831 -0.003456 0.003702 -0.003007 -0.001999 0.000167 -0.003545 0.002168 -0.002941 -0.003019 0.002042 0.002141 -0.002505 -0.000836 -0.002632 -0.002922 0.002638 -0.002845 0.003622 0.003497 0.001743 0.001620 -0.000676 -0.000673 -0.003558 -0.002090 -0.000097 0.002252 0.003077 -0.003440 0.003702 -0.001545 -0.001445 0.002199 -0.000912 -0.000372 -0.000753 0.000544 -0.001140 -0.002488 0.004284 -0.002802 0.002767 0.003257 0.000955 -0.003716 0.000214 -0.001051 0.001872 -0.003323 0.002418 0.004302 0.004032 -0.003894 -0.001252 -0.003517 -0.002863 -0.002194 0.001676 0.002903 -0.001277 -0.002835 -0.000258 -0.001746 0.001311 -0.000221 -0.002311 -0.000376 -0.003881 0.001595 -0.001232 -0.002077 0.000658 -20 -0.000627 -0.002065 0.000120 0.000889 -0.002822 -0.003880 0.003749 0.002015 -0.002658 -0.001472 -0.002505 -0.002326 0.004071 -0.001051 -0.001376 -0.001279 -0.003091 0.001110 -0.001334 -0.003098 0.002627 -0.001731 0.003061 0.000428 0.001492 0.002804 0.003771 -0.000949 0.001231 -0.002845 -0.003041 -0.000959 0.000789 -0.000791 0.002299 0.001425 0.004018 -0.002806 -0.002763 -0.004256 -0.004048 -0.001975 -0.002146 0.000513 0.001465 0.000206 0.003291 0.000167 0.001181 -0.002592 -0.004059 0.000736 0.002602 -0.003217 -0.001176 0.000397 0.000106 -0.003667 -0.003360 0.002236 0.004269 0.001216 0.001180 0.001455 -0.000761 -0.000931 0.000131 0.002461 -0.002975 0.002590 -0.002199 0.001538 -0.001709 -0.000452 -0.000027 0.002208 0.001910 -0.000854 0.001302 0.002440 0.000798 -0.003731 -0.000483 -0.003873 0.002178 0.003968 -0.002921 0.001319 -0.002344 0.001813 0.002845 0.000582 0.000823 -0.001160 0.000950 0.000084 0.001945 -0.001031 -0.002616 0.003498 -0.002619 -0.002962 -0.003764 0.003183 -0.000591 0.002495 -0.000180 0.000865 0.002973 0.002721 -0.002030 0.002362 0.000583 0.001738 -0.002591 -0.001917 0.002893 0.002422 0.000002 0.000743 -0.000706 0.003554 0.000056 -0.003479 0.001202 0.002187 -0.002716 0.001410 -30 0.002945 -0.004128 -0.003013 0.003850 -0.003672 0.000990 0.003161 -0.001440 -0.000274 0.001945 -0.004166 0.000394 -0.001114 -0.002374 -0.001708 -0.003186 0.000996 -0.000841 -0.003739 0.003524 0.001513 -0.001941 0.004293 -0.003708 0.001495 -0.002175 0.002706 -0.000114 -0.003288 0.002353 -0.000696 -0.002162 0.000689 -0.001608 -0.002616 0.002512 0.000894 0.002935 0.000822 -0.003763 -0.000589 0.001589 0.001684 0.003899 -0.000267 0.000964 0.000235 -0.003178 -0.000697 0.001791 -0.000903 0.003020 0.002128 -0.003445 0.001787 0.000851 -0.004213 0.001340 0.001930 0.000404 0.001375 -0.003710 0.003045 0.001229 0.003582 -0.002377 -0.002085 -0.001237 0.001614 -0.003101 0.001371 0.000540 0.000042 -0.000182 0.000796 -0.002050 0.000536 0.003349 0.000046 0.003059 -0.004061 -0.002493 -0.003647 -0.001140 0.000244 0.003407 -0.002918 0.001490 -0.002118 0.001100 0.003444 -0.003282 0.000784 0.001906 0.003006 0.001672 -0.002681 0.002722 0.001002 -0.002251 0.003204 0.000995 -0.002357 -0.004025 -0.001249 -0.000804 0.002525 0.001555 -0.003911 -0.000955 -0.002340 -0.003838 -0.002498 -0.002398 0.003127 -0.001763 -0.003399 -0.000574 -0.001830 0.003645 -0.003242 0.000976 0.000523 0.001197 0.002498 0.002103 0.003853 0.001148 -6 0.000799 -0.002240 0.001109 0.003701 0.000424 0.000662 0.002603 0.002830 -0.000208 0.000558 0.000861 -0.000024 -0.000890 -0.002948 0.002266 -0.000981 -0.001420 -0.003230 0.001787 -0.002677 -0.000349 -0.002361 -0.000232 -0.003056 0.002877 -0.002264 0.001113 -0.003576 0.000441 0.003969 0.000333 -0.002447 0.001529 -0.000420 0.000601 -0.000542 0.001657 0.003425 -0.003802 -0.004604 -0.002868 0.002381 0.004338 -0.001618 -0.004437 0.001809 0.002518 -0.003863 0.003651 0.003364 -0.000984 0.003130 -0.003234 0.000774 0.002046 -0.002593 -0.000704 -0.001676 0.002140 -0.003484 0.004575 0.001502 -0.000060 0.000712 0.000164 -0.003609 -0.003017 0.000482 -0.002823 -0.003494 0.001939 -0.000630 -0.002184 0.003472 0.002841 -0.000437 0.002333 0.003560 -0.000933 0.000932 -0.003648 0.002148 0.001803 0.000520 0.003018 -0.003118 0.002880 -0.001511 -0.001017 0.000155 0.003424 0.001624 0.002448 0.002158 -0.000650 0.001709 0.000982 -0.004601 0.002932 -0.001631 0.001994 -0.001586 -0.000535 -0.000021 -0.002554 0.002818 0.000221 0.004273 0.001931 -0.001671 0.002611 0.001813 -0.000679 0.002040 0.000267 0.003413 0.001227 -0.001374 -0.000563 -0.000855 0.000439 -0.002409 0.003005 -0.004977 -0.003714 0.001292 0.003909 -0.003024 -24 0.002073 0.000958 0.002995 0.003640 0.001138 -0.001113 -0.000009 0.000986 0.001404 0.001513 0.003159 0.000132 0.002967 -0.003713 -0.000246 -0.002366 -0.001542 -0.001006 0.000972 -0.000980 0.001336 0.001164 0.000615 0.003504 0.001262 0.002931 -0.001076 -0.002419 -0.000630 0.002750 -0.003431 0.000842 -0.003924 -0.001155 0.000910 -0.001382 0.004391 -0.002001 -0.000433 -0.002696 0.000496 0.003729 0.000220 0.002222 -0.001081 0.001920 -0.002555 0.003019 0.001118 -0.002314 0.003290 0.001559 -0.003125 0.003829 0.002676 0.002972 0.002801 0.000533 -0.001214 -0.001593 0.000154 -0.000992 0.001118 0.000622 -0.003196 -0.002348 -0.001176 0.001954 -0.001480 0.001880 0.001111 0.002236 -0.003160 0.000364 0.000583 -0.000336 -0.003006 -0.002744 -0.000636 0.003325 0.003152 0.002153 0.000562 0.002278 -0.001898 -0.002550 -0.002453 0.003733 0.002095 0.001340 -0.000941 0.001133 0.001575 -0.001740 0.001452 0.004019 0.002321 0.000776 -0.000909 -0.001117 -0.002952 0.003584 0.002447 0.002015 -0.002048 0.002803 0.001184 0.001225 0.000198 0.001750 0.003420 -0.002166 0.000219 0.000547 -0.003985 -0.001165 -0.001253 -0.001160 0.002049 0.002804 0.000773 -0.003426 0.000851 -0.002633 0.003208 0.001819 0.000290 0.003066 -7 0.003360 -0.000750 -0.003270 -0.000832 -0.003031 0.002089 0.001337 0.001331 0.003963 -0.000723 -0.002071 0.001278 0.001087 -0.004861 0.002874 -0.000238 0.000584 -0.000802 -0.002744 -0.000815 0.001818 -0.001766 0.001109 0.003137 0.003220 -0.002913 -0.003706 -0.002015 -0.002379 -0.000922 0.002435 0.003658 -0.002995 -0.003136 -0.002982 -0.001004 -0.001533 -0.003441 -0.001510 -0.002818 -0.004629 0.001413 0.002018 0.003041 -0.000695 0.002552 0.001453 -0.000379 0.003114 0.000977 -0.003074 0.003844 0.000159 0.003827 -0.003356 0.001729 0.000120 -0.002352 0.002514 0.003630 0.002007 -0.000436 0.000630 0.002492 -0.001342 0.001095 0.001265 0.003791 0.000165 -0.003573 -0.001541 0.002670 -0.002970 0.001418 0.001644 0.001029 -0.000555 0.001868 0.000072 -0.002903 0.000209 0.002605 -0.001274 0.003016 -0.001927 -0.002487 -0.003088 0.000745 -0.001904 0.002345 0.004423 0.000015 0.003588 -0.000939 -0.001350 0.003220 0.002564 -0.004230 -0.002399 0.000831 -0.002436 0.001307 -0.004199 -0.001289 -0.001191 -0.003132 -0.002197 0.000944 0.003060 0.000258 0.001466 0.003689 -0.001541 -0.003059 -0.002863 -0.000573 -0.001054 -0.001519 -0.003954 0.003585 -0.002183 0.002893 0.003418 0.000136 -0.002808 -0.001898 0.003513 0.003830 -9 -0.001438 -0.000313 -0.003108 -0.000884 0.000067 -0.000404 -0.000064 0.002145 0.004033 -0.000512 0.000504 0.003559 0.000611 -0.004340 -0.001000 -0.001668 -0.002023 0.002283 -0.001845 0.001200 -0.002895 0.003329 0.004241 -0.003453 -0.001456 0.002318 -0.001577 -0.003694 -0.000946 0.002263 0.001096 0.003742 -0.002452 -0.002010 0.003231 -0.002622 0.003657 0.000047 -0.003666 0.002410 -0.004110 -0.003272 0.001939 0.003623 -0.003349 -0.001724 0.000296 -0.002360 -0.001780 -0.003469 -0.003031 0.001620 -0.002138 0.001156 0.002720 -0.001577 -0.001972 -0.000212 -0.001137 -0.002237 0.000686 -0.000913 -0.002997 0.001998 0.001934 -0.001959 0.001784 -0.000071 -0.001505 -0.000305 0.001510 0.003031 0.003489 -0.001512 0.003445 -0.001886 -0.002394 0.003543 -0.003001 0.002065 0.002589 -0.001565 -0.003665 -0.004310 -0.001918 -0.000073 0.000192 0.000144 -0.002062 0.001407 0.002614 -0.001153 0.004112 0.003475 -0.001115 -0.003391 0.001868 -0.000455 0.000116 0.002018 -0.003967 -0.003197 -0.003536 0.000705 0.000685 0.000063 -0.001063 0.003658 -0.004060 -0.003363 0.002785 0.000480 0.003444 -0.001385 -0.000593 -0.002194 -0.003486 0.003798 -0.002100 0.002755 -0.001809 -0.002262 -0.001270 0.000146 -0.002439 0.003397 0.000325 0.002002 -8 0.000413 -0.004083 0.002184 0.000894 -0.002542 0.001106 0.002290 0.000988 -0.000035 0.002941 -0.001918 0.000382 -0.002313 -0.000491 0.003105 -0.002976 0.001962 -0.000097 0.003684 0.002325 -0.000715 -0.000128 -0.000260 -0.003468 0.001145 0.003802 -0.000276 0.002726 -0.001684 0.002608 -0.001069 0.000703 0.000655 0.002485 -0.001509 -0.001551 0.003764 -0.000836 0.003172 0.003265 -0.001639 0.000310 -0.002352 0.003169 0.000595 0.003042 -0.002454 -0.000722 -0.001490 0.002220 -0.002433 -0.001791 0.003998 0.002625 -0.003355 -0.000215 -0.003780 -0.001211 -0.002122 -0.002293 -0.001872 -0.003570 0.000646 0.001473 0.001781 -0.002973 0.003021 -0.001440 -0.000423 -0.003232 -0.002900 -0.001586 -0.002016 -0.000123 -0.000404 0.001295 -0.002227 -0.000860 -0.000622 -0.000500 0.002129 -0.003705 -0.002510 0.001427 -0.003611 0.003975 0.002671 0.000768 0.001150 -0.002706 0.002285 -0.002239 -0.000301 -0.000372 -0.001534 -0.002440 -0.001305 -0.003907 -0.002340 -0.002957 0.002538 -0.003285 -0.004205 -0.001471 0.002949 -0.003035 0.002486 -0.003574 -0.001853 -0.002487 -0.003806 0.001936 0.002002 -0.000281 -0.004055 0.003165 -0.001764 -0.000681 -0.002511 -0.000170 -0.002228 -0.003445 0.003402 0.000209 0.001776 -0.003534 0.002678 -0.002119 -28 -0.003461 -0.003424 0.004057 0.000331 -0.000013 0.002734 0.000866 -0.000761 -0.002472 -0.000208 0.001245 0.003212 -0.000251 0.001955 -0.002192 -0.001119 -0.000938 -0.002447 0.002303 0.001738 -0.002945 -0.000136 0.000119 -0.000859 -0.001835 0.002608 -0.003422 0.001377 0.003390 0.000008 -0.000848 0.003460 0.001633 0.003487 0.000098 -0.003813 0.002907 0.001558 0.001345 0.000515 -0.002097 -0.002797 0.002686 0.003278 -0.003754 -0.002116 -0.003595 -0.000984 -0.003403 -0.002143 -0.004214 0.001190 0.002275 -0.002245 0.002882 -0.000686 -0.003185 -0.002854 -0.003956 0.000242 0.000240 -0.002727 0.002499 0.002575 0.000831 -0.001360 -0.001050 0.003427 -0.003356 -0.004386 -0.001647 0.003141 -0.003009 -0.003361 -0.000525 0.001168 -0.000375 0.002952 -0.003591 0.002767 -0.000061 -0.004188 0.001603 0.000459 -0.001052 0.004090 0.000820 0.002802 0.000386 0.001369 0.001642 0.000333 -0.001905 -0.003331 0.002397 -0.000986 -0.000426 0.001673 -0.000034 -0.002780 -0.003028 0.003571 -0.003944 -0.001791 0.002013 0.003616 0.004105 0.003923 0.000833 -0.003785 0.001432 0.001222 -0.002652 -0.000676 0.000709 -0.002366 -0.003034 -0.000612 -0.001637 -0.002091 0.000116 -0.001711 0.000528 0.001967 -0.003145 -0.003414 0.001040 0.002373 -25 -0.003008 -0.002321 -0.002215 -0.001395 -0.003493 -0.001373 -0.001578 -0.002671 0.003891 -0.000416 -0.001816 -0.001702 0.000240 0.002269 -0.000747 -0.004122 0.001886 -0.002395 0.002294 0.003446 0.003670 -0.000949 0.003302 0.002754 0.001032 -0.003507 0.001043 -0.001103 -0.003780 0.002504 0.001876 0.000724 0.000338 -0.003124 -0.003933 0.001049 -0.002525 0.003247 -0.002409 -0.002366 -0.003958 0.002402 -0.001631 -0.002566 0.001608 0.003984 0.001690 0.003118 0.002806 0.000354 -0.004329 0.003457 0.002334 0.001909 -0.003979 -0.001919 0.002316 -0.003760 -0.001259 0.003172 -0.001313 0.001835 0.001902 -0.001164 -0.003480 -0.002136 -0.000884 0.001875 -0.003847 -0.000232 -0.000824 -0.002269 0.001986 0.002501 -0.000837 -0.003584 -0.003479 0.002082 0.002042 -0.001795 -0.000068 -0.002797 -0.000310 -0.003629 -0.001223 -0.000331 -0.000311 -0.003724 -0.003374 -0.003715 -0.001854 -0.000842 0.003721 -0.002809 -0.001909 0.001663 -0.000088 -0.000775 0.001038 0.001724 -0.003890 0.001525 -0.003807 0.000730 0.001715 -0.001217 0.002071 0.002155 0.002063 -0.001863 -0.002018 0.000182 0.001676 -0.001978 -0.004386 -0.001125 0.002220 0.000068 -0.001128 -0.001245 0.000715 0.003099 -0.000844 -0.003250 -0.002033 0.004068 -0.003256 0.000336 -26 0.002905 0.001224 0.000936 -0.001211 0.001682 -0.002627 0.002304 -0.001298 -0.003631 -0.001511 -0.001810 -0.002664 0.003643 -0.003651 -0.001122 0.001684 0.001334 -0.000571 -0.001328 0.001499 0.004322 0.000904 0.003970 0.002061 -0.001900 -0.001896 -0.003817 -0.002299 -0.001991 0.003642 0.002051 0.001169 0.000870 -0.003305 -0.004084 -0.003584 0.002547 -0.001070 -0.001644 -0.001683 -0.001278 -0.002848 -0.002443 -0.000549 -0.002489 0.004407 -0.003270 -0.000182 -0.001536 0.003218 0.002740 0.002925 -0.001333 -0.002556 -0.000571 -0.001159 0.001182 0.001087 -0.003631 0.000529 0.002347 -0.002360 0.000468 0.003900 0.000485 -0.000057 0.001557 -0.003174 0.000671 0.000024 0.000209 0.000618 -0.002238 -0.000865 0.002555 -0.002773 -0.003547 0.000073 -0.001169 -0.001563 -0.003142 0.001395 0.000900 0.000746 0.001595 0.002975 -0.003432 0.000503 -0.000276 -0.000338 0.001822 0.000518 0.003333 0.003507 0.002153 -0.001244 -0.001196 0.000646 0.003107 -0.001985 0.000669 -0.000098 -0.000008 0.002314 0.001432 0.001854 0.003673 0.001325 0.003481 0.003064 -0.003204 -0.001651 0.000816 0.002866 0.000733 -0.000165 0.000811 -0.001548 0.003306 -0.003974 -0.000501 -0.002957 -0.001908 -0.004442 0.000873 0.003157 -0.001737 -0.003116 -5 0.000411 -0.004075 -0.003797 -0.000045 0.002905 -0.001526 0.003767 -0.003139 0.003891 -0.002558 0.002749 0.003297 -0.002676 0.000358 0.002191 -0.003928 -0.002158 -0.003381 -0.001182 0.001902 0.002634 0.003191 -0.003142 0.003989 0.001428 -0.002838 -0.000633 -0.003244 -0.001162 -0.000556 -0.002317 -0.000983 -0.002494 0.001644 0.002043 -0.003297 0.001357 0.001670 -0.001048 -0.000126 0.002831 -0.000469 -0.001704 0.000122 -0.002915 0.000653 0.000606 -0.001013 -0.000036 -0.001669 -0.001197 0.003738 0.003401 -0.003265 0.001866 -0.002566 0.001959 -0.001192 0.002401 -0.003735 -0.001097 -0.002940 0.002248 0.003065 -0.003020 0.000186 0.003096 -0.000779 0.001339 -0.003271 -0.001914 0.000518 -0.002508 -0.003232 0.001219 -0.002947 -0.002061 -0.003189 -0.003225 -0.003571 -0.002824 -0.000006 -0.001668 -0.000418 -0.002665 -0.003493 0.002268 0.003531 0.001922 0.000025 0.003400 -0.001229 0.001871 0.001128 -0.003093 0.001335 -0.003326 -0.002943 0.003657 0.003803 -0.004282 0.000127 -0.002327 -0.003929 -0.003681 -0.001219 0.001866 0.000208 -0.003273 -0.001434 -0.002492 0.000283 0.001228 -0.002748 -0.002659 0.003356 0.003300 0.001025 0.002888 0.001422 -0.000581 0.001433 0.001102 -0.004292 -0.003432 0.002079 -0.001633 0.004112 -29 -0.001040 -0.000540 -0.002149 -0.001521 0.001701 -0.002342 0.000086 -0.003065 0.000050 0.001356 0.001491 0.003738 -0.001864 -0.001740 0.000044 -0.002581 -0.003577 -0.003729 0.002223 -0.000478 0.002323 -0.001675 -0.003196 -0.000863 -0.002857 -0.001846 -0.000338 -0.001839 0.002924 0.002559 0.002735 -0.000949 0.002197 -0.000335 -0.003020 0.000696 0.003831 0.001529 0.001829 -0.003910 0.003147 0.002373 -0.003520 -0.003389 0.001946 0.004034 -0.001636 -0.000779 -0.002380 0.000460 -0.001392 -0.000460 -0.002156 0.000244 -0.004205 0.003670 0.003730 0.002609 0.001385 0.001594 0.001478 -0.003522 -0.002520 0.000320 -0.003257 -0.002388 -0.003728 -0.001217 0.002377 0.003217 -0.003061 -0.000046 -0.003344 0.002392 0.000962 0.003486 0.003306 0.000547 0.001269 -0.000195 -0.003623 0.002253 0.002239 -0.003095 0.000808 0.001201 0.002513 -0.003384 0.000278 -0.003676 0.001307 -0.002819 -0.000498 0.001236 0.003356 0.003376 -0.002924 0.002932 -0.000246 -0.003195 -0.002802 0.002716 -0.001274 0.000683 0.001333 0.000310 -0.002539 -0.002679 0.001045 0.001518 0.002166 0.000668 -0.003082 -0.001942 -0.003338 -0.003358 -0.001861 -0.002891 0.002926 -0.000462 -0.001377 -0.000956 -0.002585 -0.002742 0.002734 0.002287 -0.001509 -0.003072 -11 -0.003377 -0.003406 0.001612 0.001362 0.002061 -0.001911 -0.002333 0.003545 0.002867 -0.003062 -0.000970 0.001436 -0.001917 0.001548 0.003723 -0.004007 -0.001653 -0.001134 0.000531 -0.003118 0.003219 -0.001026 0.002902 0.000713 -0.001089 -0.002329 -0.001914 0.000324 -0.002637 -0.002327 0.001978 -0.000143 0.001888 -0.003423 0.001506 0.002962 0.004228 0.002605 -0.000059 0.003047 0.001665 0.003037 0.004223 0.000255 -0.001965 0.002626 0.003041 0.002499 -0.001365 0.002004 0.001107 0.001610 0.000245 0.000326 -0.000760 -0.003125 0.000535 0.002607 -0.004074 0.001041 0.000283 -0.002953 0.003578 0.003101 -0.003110 0.000848 -0.003930 -0.000722 0.002333 -0.004084 0.000290 -0.000408 -0.002787 -0.001252 0.004069 0.001258 0.001343 -0.002683 -0.002705 -0.001435 0.001183 0.002993 -0.000916 -0.001560 -0.003897 0.000091 0.003733 0.000241 0.001834 0.000640 -0.000820 -0.002677 0.001647 0.002757 0.001210 -0.001820 0.001799 -0.001178 -0.000907 0.003378 0.002820 0.003639 -0.001828 0.000602 -0.001470 -0.000500 0.002729 -0.002453 0.001509 -0.002795 -0.000392 0.003329 -0.003889 -0.002064 -0.000802 -0.001863 -0.002989 0.002527 -0.001460 -0.002188 0.000895 -0.002896 0.003963 -0.004483 -0.001525 -0.003432 -0.002181 0.000747 -31 0.001485 0.000120 0.003213 0.002553 -0.000862 -0.003707 -0.000156 -0.003291 -0.003254 0.001058 0.002705 0.004438 0.003661 -0.004247 0.000072 -0.004295 -0.003954 0.001150 0.001614 -0.000266 0.001582 -0.001516 -0.002047 0.003137 0.001333 0.000972 0.002272 0.003710 0.000048 0.000703 -0.002637 0.004084 -0.004132 0.003124 0.001719 0.002346 -0.000078 -0.000498 0.003285 -0.004365 -0.000343 0.002647 0.000814 -0.001061 -0.002175 0.000329 -0.002558 -0.003264 -0.001127 0.002241 -0.003910 0.003731 0.000496 -0.001235 0.000237 -0.002407 0.000997 -0.001864 -0.004155 -0.003461 0.003701 -0.001826 -0.003477 -0.002761 -0.002930 -0.001870 -0.003924 -0.001886 -0.002449 -0.000957 -0.000096 -0.002117 0.000223 0.000052 0.002701 0.000028 0.004066 -0.000951 0.003471 0.001886 0.001184 -0.002185 -0.002381 -0.002524 0.000768 0.000666 -0.003207 -0.002382 0.000457 -0.002876 -0.003136 0.003446 0.003896 -0.001202 -0.004370 0.000962 -0.003014 -0.000762 -0.000330 0.003154 -0.004581 0.000065 -0.000570 -0.003619 -0.001893 0.000982 0.002407 0.002991 0.001584 0.000061 -0.002959 -0.003736 -0.002169 -0.002650 0.000799 0.002692 -0.003601 0.004221 -0.004296 0.002318 -0.002659 -0.002535 -0.001849 -0.004470 -0.000991 0.002458 -0.003471 0.000537 -27 0.001988 -0.004363 -0.002448 -0.003123 0.000675 0.001225 0.001916 0.003586 -0.002694 0.000959 -0.002212 -0.001414 -0.001034 0.002824 -0.000464 -0.002846 0.003441 -0.002553 0.000103 -0.003748 0.003411 0.001727 0.001850 0.003610 0.000322 -0.003301 -0.003664 0.003261 -0.001949 0.001776 0.000545 -0.002853 -0.001779 -0.002485 0.001875 -0.002675 -0.001413 -0.000286 -0.001480 -0.003126 -0.003441 0.000157 -0.000495 0.001158 0.000833 0.003066 0.003806 -0.000624 0.000251 0.002489 0.002303 0.002707 -0.002385 0.003668 -0.001117 -0.003300 -0.000917 0.001282 0.003011 0.001663 -0.002207 0.003382 -0.002101 -0.000051 0.000591 -0.000021 -0.002820 0.002833 -0.000927 -0.001261 -0.003664 0.003011 0.000505 -0.003847 -0.002004 -0.003443 0.002563 -0.002551 -0.001869 0.000938 -0.003047 -0.000971 -0.000192 0.003135 -0.003815 0.001008 0.003695 -0.001374 -0.003817 0.000673 -0.002707 -0.003474 0.001192 0.000713 -0.003033 0.000555 0.000692 -0.003059 0.003073 -0.002904 -0.004212 0.000510 0.002546 -0.003792 0.002111 0.002121 0.003835 -0.002717 -0.003126 0.002253 0.001890 -0.000292 -0.000984 -0.001570 0.001595 -0.001867 -0.000537 0.001480 -0.002834 -0.000673 -0.002652 0.002645 0.001920 -0.003661 -0.002808 0.002348 0.001117 0.000517 -13 0.002561 -0.000549 0.001446 -0.002658 -0.001195 -0.001120 0.001659 -0.002252 0.001128 0.002785 -0.002487 -0.002026 0.001981 -0.004149 0.001225 -0.001099 -0.003309 -0.001697 -0.001309 -0.003002 0.004452 -0.000142 -0.003035 0.001187 -0.003661 -0.000164 0.003543 0.002581 0.000993 0.000547 -0.002560 0.002434 -0.001482 -0.001969 -0.000229 -0.002866 0.004237 0.003882 0.000353 -0.001361 0.001239 0.000483 0.000597 0.002348 -0.000568 0.003768 0.001293 0.000576 -0.001801 0.002676 -0.003220 0.003444 0.002326 0.002935 -0.003366 -0.002937 -0.003505 -0.002582 0.002118 -0.002612 0.003049 0.000029 -0.002446 -0.002448 0.002436 -0.003103 -0.002555 -0.002331 0.002842 -0.004162 -0.002672 -0.001648 0.000009 -0.002360 0.001816 -0.003316 -0.000834 -0.001585 -0.002991 -0.002987 0.000044 -0.003280 -0.001118 -0.002396 -0.004133 0.000232 0.002394 -0.000752 -0.002836 0.003871 0.004596 -0.001423 -0.002152 -0.003518 0.000106 -0.001587 -0.000266 -0.004413 -0.002439 0.000376 0.002244 0.000231 -0.001686 -0.000163 -0.001332 -0.003756 0.003722 -0.001767 -0.000430 -0.004093 0.003576 -0.000615 -0.000848 0.002915 -0.003601 -0.002821 -0.003245 0.003885 0.000687 -0.002221 0.000572 0.002443 0.004086 0.000680 -0.001649 0.002722 0.001876 0.003382 -17 -0.000566 -0.001579 0.000902 0.002616 -0.003765 -0.002910 0.002549 0.002261 0.003865 0.003293 0.001267 0.004282 0.001954 0.001686 -0.001945 0.002382 -0.000050 -0.004051 -0.001948 0.002241 0.000287 -0.003492 0.003123 -0.002468 0.003096 0.002288 -0.001240 -0.000119 0.001848 0.003361 0.000848 0.000500 0.001830 -0.000665 -0.002078 -0.003546 0.002900 0.001832 -0.000960 0.001757 -0.001542 -0.003360 -0.001803 0.003041 -0.002242 -0.001537 0.001511 0.002242 -0.000562 0.001856 -0.002407 -0.001516 0.000647 -0.003525 0.001830 -0.001701 -0.003862 0.003788 0.002519 -0.003562 0.001371 -0.001689 0.001855 -0.001367 0.000580 0.002528 -0.000534 -0.000673 0.000658 0.001327 -0.002768 -0.000662 0.000460 -0.002228 0.003038 0.003853 -0.002383 -0.002368 0.000997 -0.003491 0.001121 -0.000161 0.003075 0.002855 -0.003815 0.000179 0.003284 -0.001963 0.003958 -0.000960 -0.002535 -0.000320 -0.000413 0.003245 -0.001545 -0.000218 0.003288 0.001235 0.002719 0.002567 0.001420 -0.000652 -0.002448 0.001810 0.000242 -0.001333 0.001106 -0.002260 -0.002308 0.002841 -0.000220 0.000819 0.003761 0.001592 0.000054 -0.000213 -0.001265 0.003771 -0.001059 -0.003528 0.002882 0.002726 0.002369 0.001729 -0.003931 -0.001795 -0.000013 0.003041 -18 0.001171 -0.000595 -0.003190 -0.001043 0.001685 -0.001412 -0.003003 0.002168 0.002872 0.003982 -0.001096 0.003291 0.003279 -0.001109 0.001099 -0.004061 -0.001632 0.001240 -0.002992 0.003684 0.004484 -0.000435 0.004453 0.000674 0.003254 0.003290 0.000531 -0.000090 0.001814 0.001676 -0.000158 0.002777 0.001021 0.002612 0.001425 -0.002489 -0.000678 -0.000188 0.000912 0.002708 -0.001989 0.003948 -0.002709 -0.000856 -0.001546 0.003215 -0.003388 0.000153 0.001716 -0.001764 -0.000959 -0.002412 0.003312 0.003828 -0.001174 0.003114 0.000340 -0.003546 -0.002132 -0.001238 0.002339 -0.004148 -0.000050 -0.000175 0.003031 0.000454 0.000621 -0.001913 0.003015 0.002812 -0.002600 -0.000345 0.002753 -0.003765 0.003354 0.002318 0.003764 0.002295 0.001424 -0.000759 -0.003895 0.001716 0.002035 -0.003371 -0.003597 0.001858 0.002902 -0.000371 -0.002660 0.002871 0.001210 -0.002703 0.003619 -0.003342 -0.004335 0.001868 -0.002327 0.002323 0.001930 -0.001810 -0.001242 0.002781 -0.000673 0.000761 0.000471 0.000499 -0.002065 -0.002781 -0.001139 -0.003377 -0.002366 -0.002561 -0.002822 -0.002179 0.000073 -0.002459 -0.000318 -0.002543 0.002399 -0.001211 -0.000841 -0.003746 -0.000367 -0.001833 0.001985 -0.003614 -0.002976 -0.001937 -22 0.002335 -0.002499 -0.000660 0.000105 -0.000599 -0.002929 -0.000741 -0.000922 -0.002288 -0.001077 -0.001577 0.001465 0.002288 -0.002570 0.002313 -0.001807 -0.002804 -0.001367 0.003710 0.003150 0.003038 -0.000265 0.003726 0.000539 -0.003020 0.003361 -0.001023 -0.003786 0.001994 0.002900 -0.000178 -0.002393 -0.003188 0.000287 -0.001465 -0.003088 -0.000534 -0.001356 -0.002370 -0.003316 0.002977 -0.003549 -0.002674 0.003282 0.001747 0.004085 -0.003282 0.002209 0.002884 -0.001628 -0.002809 -0.001613 -0.003212 -0.001177 0.002981 0.000338 0.002453 0.003163 0.001839 -0.002975 0.001979 0.001291 0.001709 0.003503 -0.000851 0.000922 -0.003869 0.001956 0.003431 0.002612 -0.001744 0.001956 -0.000384 -0.001506 0.004059 0.001809 -0.002647 0.001658 0.002908 -0.000784 -0.003037 -0.001548 0.002447 -0.004063 -0.000585 -0.002147 0.002858 -0.003372 0.002540 -0.000077 0.002495 -0.001478 0.000478 -0.003617 -0.000883 0.000917 -0.000988 0.000053 0.003047 -0.002385 -0.001116 0.000799 0.001417 0.002791 0.001104 0.002768 0.000088 0.002661 -0.000074 0.000275 0.002707 0.000409 0.002520 0.002997 -0.001845 -0.000368 -0.002863 0.000579 -0.002984 -0.001223 0.001462 -0.002137 0.001658 -0.002707 0.001073 0.000587 0.002242 0.000821 -23 0.000611 0.002501 -0.003570 0.001282 -0.000603 0.002500 -0.000756 0.003329 0.001817 -0.001504 -0.001728 0.000655 0.000834 -0.003283 -0.002814 0.001839 -0.000615 0.002689 0.001753 0.003671 -0.000921 -0.001500 -0.003004 0.002688 0.000962 -0.000720 -0.003348 -0.003016 -0.003497 0.002549 -0.000661 0.001258 -0.000915 -0.000119 -0.003535 -0.002607 0.001945 -0.002357 -0.002896 0.000304 -0.001037 0.000480 0.001784 0.001960 0.001999 -0.001307 -0.001477 0.003005 -0.002298 -0.000598 0.000891 -0.000742 0.002838 -0.003005 -0.000462 -0.003595 -0.002279 -0.000441 -0.000414 -0.003579 0.000704 -0.001967 0.002855 0.001069 0.002848 -0.000826 0.002024 0.003218 0.001146 0.002813 0.000251 0.000703 0.003762 0.000531 -0.003242 0.000452 0.002364 0.000852 0.003556 0.001638 0.003673 -0.002553 0.002981 -0.000799 -0.001645 0.003286 -0.002038 0.001193 -0.002634 -0.001638 0.001366 0.001307 -0.003044 -0.000314 -0.004089 -0.001900 0.000987 -0.001721 -0.001266 0.003585 -0.001490 -0.001140 0.002822 -0.003433 -0.000858 -0.003239 -0.002772 -0.001712 0.001898 0.001046 -0.003592 -0.002523 -0.001546 -0.003124 -0.001412 -0.001061 -0.002721 0.001731 0.000389 0.000303 0.001346 0.002482 -0.002295 -0.002716 0.002008 -0.002920 -0.000354 -0.000207 -21 -0.003239 0.003199 0.000283 -0.003613 -0.003611 -0.000894 -0.000813 -0.002542 0.000628 0.003782 0.000232 0.000515 0.000761 -0.003684 -0.000323 0.000152 0.000072 -0.000188 0.002102 0.000718 0.002688 -0.000434 -0.000963 0.001963 0.000500 -0.001298 0.001527 0.000467 0.000286 0.000070 0.002828 -0.000909 0.000067 0.001742 -0.003312 -0.002596 -0.000583 0.003773 0.002621 0.001056 -0.003313 0.003741 -0.002588 -0.002156 -0.003396 0.001468 0.000787 0.000889 0.002984 -0.000624 0.002944 0.002349 0.002868 -0.002342 -0.001410 0.001503 0.000190 -0.003409 -0.003822 0.003105 -0.001974 -0.000099 0.000692 0.003041 0.003649 -0.001312 -0.000546 -0.003475 -0.002191 -0.004030 0.003121 -0.003867 0.000759 0.001747 0.002611 0.000151 -0.002520 -0.002801 0.001541 0.002684 -0.001984 0.000625 -0.001555 -0.003988 -0.002900 -0.001895 -0.002336 -0.002123 0.003469 -0.002788 0.003569 0.001592 -0.001933 0.003502 -0.000309 -0.001329 -0.002641 0.001755 0.001118 -0.000344 -0.001595 -0.001848 -0.001308 0.003357 0.003812 0.002330 -0.000187 -0.002731 -0.001499 -0.002372 0.003856 0.003049 -0.000857 0.001583 -0.002156 0.003506 -0.003690 -0.000207 0.000689 0.003546 -0.000544 -0.001621 0.000341 -0.004162 0.002538 0.001013 0.003098 -0.003180 -10 0.000770 -0.000737 -0.001956 0.000862 0.001715 0.003586 0.002424 -0.000119 0.003327 -0.002781 0.002029 0.002644 -0.002337 0.002613 -0.001493 0.002772 0.001162 0.002480 -0.002066 0.000899 0.002262 -0.000504 0.000857 0.003820 -0.001672 -0.000914 0.001416 -0.002664 -0.001056 -0.002233 -0.003135 -0.003082 0.001330 0.003051 -0.003287 -0.000878 0.002975 -0.003420 -0.002949 -0.003495 -0.002515 -0.001261 0.003502 0.003524 0.002968 0.004043 0.003805 -0.000988 0.003896 -0.003029 0.000126 0.001424 0.003207 -0.001452 -0.001530 0.002186 0.001563 -0.003521 -0.003595 0.001699 0.001613 -0.000372 -0.003814 0.001117 0.000249 0.001009 -0.001986 -0.002267 -0.003523 -0.003192 0.002672 -0.003054 0.003668 -0.000360 0.003723 0.001514 -0.000041 -0.001756 -0.003151 -0.000232 -0.003759 -0.002741 0.000135 0.002324 -0.003303 0.001108 -0.002880 -0.002673 -0.000094 -0.001832 0.003548 0.000910 0.003596 0.002789 0.000114 0.002625 -0.000681 -0.003650 0.000887 0.002540 -0.001792 -0.001513 -0.000380 0.000944 -0.001994 -0.001015 0.003884 0.003846 -0.002917 0.001867 0.003435 -0.003842 0.001944 -0.001403 0.001487 0.000238 0.000939 0.003200 -0.001317 -0.002961 -0.000391 -0.001739 0.000142 -0.000012 0.003808 -0.000979 -0.002128 0.001262 -16 -0.000542 0.001064 0.000947 0.000119 -0.001062 -0.000410 0.002650 -0.000855 0.000198 0.000733 -0.002479 0.001750 -0.001647 0.002778 0.003032 -0.002499 -0.003648 -0.004053 -0.003760 -0.003467 -0.000335 0.001278 0.002691 -0.001259 0.001500 0.000388 0.001227 -0.000447 -0.001326 -0.003331 -0.002774 0.002067 -0.001292 -0.003583 0.001461 0.001512 0.003866 -0.002934 -0.002338 -0.003929 -0.002631 0.003346 0.002544 0.000483 0.001729 -0.001216 0.002203 0.002709 -0.002795 0.003933 0.002739 0.001103 0.000847 0.001880 0.001331 0.000101 -0.000391 0.000607 0.000414 -0.003369 0.002364 -0.003997 -0.001339 -0.003570 0.001765 -0.001143 -0.000104 0.003382 -0.001597 -0.003279 0.002892 -0.003812 0.001121 -0.002248 0.003412 -0.001503 0.003459 -0.002436 -0.001912 0.001291 0.003574 -0.002180 0.000591 -0.001828 0.000787 0.003797 0.000327 0.003118 0.001904 0.000774 -0.003021 0.001426 -0.003665 0.001305 0.000170 0.002560 0.003014 -0.001806 -0.001665 -0.003802 0.003273 0.001870 0.003619 -0.002359 -0.002284 -0.002723 -0.001688 -0.000446 0.002669 0.001360 -0.001225 0.003678 -0.003755 0.002064 0.001564 0.002183 -0.001365 0.002919 0.000556 -0.002406 -0.000858 0.001575 -0.001801 -0.002374 0.003021 0.002289 0.000566 0.003839 -15 -0.003671 -0.002750 0.002806 -0.003062 0.000937 0.003497 0.002172 -0.003468 0.000193 -0.001341 0.001325 -0.000046 0.000372 0.001074 0.001637 -0.001853 -0.003009 -0.002201 -0.002869 -0.003415 0.003648 0.001917 0.000653 0.001197 -0.003022 0.000060 -0.002426 -0.000156 0.000358 -0.002509 -0.002241 0.002276 0.002879 -0.000537 0.000202 -0.000195 -0.001394 0.000012 0.003633 0.001174 -0.003132 0.000174 -0.000527 0.000561 0.002355 0.003773 -0.003755 -0.000782 -0.000814 -0.001477 -0.000688 0.000609 -0.000397 0.001982 -0.003039 -0.003958 -0.004075 -0.003616 0.000782 0.002837 0.003543 0.002891 0.000567 -0.003107 0.001130 0.003317 0.000973 -0.000687 0.003040 0.002618 0.001940 -0.002014 0.001809 -0.003457 -0.002177 -0.001096 0.001831 0.000155 -0.003915 -0.003253 0.000002 0.002166 0.000153 -0.003241 -0.003232 -0.002403 -0.001445 -0.003636 0.000132 0.002356 0.001953 0.002281 0.003388 -0.002405 -0.003717 0.002557 0.001396 0.003503 0.001614 0.003425 0.002534 -0.000291 -0.003198 0.000986 0.002252 -0.003053 0.002747 0.001515 -0.000427 -0.003864 0.000269 -0.000877 -0.001587 -0.003013 -0.002698 0.003113 0.001752 0.004258 -0.003479 0.002835 0.002507 -0.003338 0.003714 0.002208 -0.003976 0.000523 0.001914 0.002451 -19 0.003269 -0.002360 0.003501 -0.001979 -0.000996 0.000809 -0.000743 -0.002244 0.002147 0.000409 -0.003399 0.002635 -0.001015 0.000535 -0.001297 0.000680 -0.003154 -0.003446 0.002542 0.003478 0.001457 -0.003204 0.000559 0.001888 0.000062 0.003186 -0.001062 0.000483 -0.001288 -0.001161 0.000051 0.001469 0.000952 -0.003751 -0.001223 -0.000349 -0.003541 0.002562 0.002555 0.000882 -0.000103 -0.000568 0.000158 -0.001104 0.002869 0.001788 0.002610 -0.002753 -0.000847 0.001608 -0.001743 -0.000362 -0.003265 -0.001553 0.003200 0.002179 -0.003142 0.001943 0.003575 -0.001240 -0.000379 -0.002567 0.002960 0.002599 -0.000511 -0.003469 0.002812 -0.000831 -0.002373 -0.002722 0.000755 -0.000022 0.000646 0.000777 -0.001938 -0.003782 0.003027 0.002155 -0.003204 -0.003058 -0.000912 0.000134 0.000179 -0.003345 -0.002329 0.000319 0.002737 0.001675 -0.002876 -0.001546 -0.000298 0.002842 0.003987 0.002072 -0.002190 0.003184 -0.000678 0.000183 0.000808 -0.002781 0.001805 0.002189 -0.003323 -0.002582 -0.000910 0.000474 -0.000127 0.000464 -0.000956 -0.001386 -0.002111 -0.000173 0.000723 -0.002258 0.002916 0.002445 0.003502 0.003441 -0.003121 0.002871 -0.001395 -0.001428 -0.001736 -0.003026 -0.003399 0.000949 -0.003468 -0.002455 -12 -0.003842 -0.003516 0.000471 -0.002675 -0.002052 -0.001600 -0.002321 -0.003507 -0.002319 0.002635 0.003610 0.004106 -0.000865 0.001596 0.000236 0.002364 -0.003597 0.001031 0.002448 -0.003682 0.001689 0.003108 0.001688 -0.001959 -0.003577 -0.001613 0.002154 0.001155 0.000493 -0.000345 0.001644 0.001643 -0.004032 0.001239 0.001078 0.002568 -0.000866 0.002503 0.000011 0.001783 -0.000243 -0.000147 0.002199 -0.000841 -0.001272 0.003788 0.001785 -0.000984 -0.003176 -0.001285 -0.001841 0.002071 -0.000661 -0.003624 -0.003398 -0.003444 0.000352 0.000549 -0.000235 0.001567 0.002767 0.001342 -0.002673 0.002324 -0.003222 0.000289 0.002311 -0.000384 0.003185 0.003429 0.003855 0.002074 0.001327 0.001188 0.001026 -0.000382 0.003691 0.003194 0.000658 0.003618 -0.000884 0.000755 -0.003266 -0.002351 -0.003056 0.003460 -0.000822 -0.000854 -0.002470 -0.003117 -0.000109 0.002925 -0.001283 -0.001306 0.001584 -0.002209 0.002548 -0.003899 0.001494 0.000061 -0.004158 -0.003300 0.000136 0.000720 0.000234 -0.003784 0.000747 -0.000299 0.003553 -0.003506 -0.003352 -0.000247 -0.000002 0.002419 0.000807 0.003009 -0.001468 0.003559 -0.003953 -0.003312 -0.001792 -0.002016 0.001876 0.002257 -0.001549 0.000546 -0.003809 0.000157 +1 -0.014876 -0.229356 0.023806 0.067841 0.090910 -0.144880 0.150130 0.075787 0.046873 -0.025290 -0.095061 0.084067 0.022556 -0.197516 0.051331 -0.241755 0.004764 -0.232580 -0.031161 -0.013199 0.233664 -0.011230 0.140365 0.096059 0.068695 -0.165448 -0.100326 -0.012106 0.011358 0.170880 -0.012065 0.044922 -0.139547 -0.037438 -0.095815 -0.138876 0.183298 0.116599 -0.055275 -0.080746 -0.100899 0.053135 0.141539 0.179031 -0.131575 0.127407 0.099880 -0.064466 -0.029267 0.157667 -0.028006 0.174557 -0.022628 0.148424 -0.174256 -0.179070 -0.059111 0.088243 0.086486 -0.033525 0.117324 -0.099924 -0.026303 0.151631 -0.063171 -0.079035 -0.073884 0.059158 0.136396 -0.156904 -0.089332 0.054849 -0.108355 -0.044886 0.131026 -0.063695 0.086190 0.014780 -0.002258 -0.120929 -0.115947 -0.029460 0.023848 -0.102442 -0.111003 0.058831 0.121057 0.008298 -0.056379 0.072060 0.048521 -0.006848 0.087435 -0.054377 -0.153402 0.207793 -0.070880 -0.107374 0.120661 -0.008031 -0.145239 0.157040 -0.122576 -0.109220 -0.100591 0.017339 0.173152 0.001466 0.015540 -0.049476 0.057062 0.019142 -0.027390 0.016272 -0.091249 -0.008336 -0.042350 0.178391 -0.066354 -0.029698 -0.038339 -0.048144 0.134590 -0.234350 -0.217189 0.074112 0.057659 0.201265 +34 -0.043236 -0.184561 0.086898 0.155603 0.126673 -0.103197 0.194487 -0.020264 -0.096339 0.018373 -0.113667 0.012346 0.015797 -0.198612 -0.094771 -0.205460 0.049062 -0.081919 0.027739 0.088356 0.151644 -0.009231 0.201849 0.050836 -0.023565 -0.149574 -0.049034 -0.044401 -0.037658 0.224190 -0.010381 0.071883 -0.170195 0.034827 -0.167335 -0.075119 0.218483 0.090103 -0.035649 -0.134331 -0.168675 0.210952 0.128298 0.087990 -0.063460 0.092851 0.023417 -0.128993 -0.074394 0.129745 0.093197 0.249170 -0.001558 0.100948 -0.161581 -0.110734 -0.069279 0.041938 0.008046 0.054898 0.023925 -0.086794 -0.147930 0.155933 0.051813 -0.310828 -0.066930 -0.007734 0.062363 -0.038964 0.059932 0.004334 -0.072056 0.082316 -0.050440 -0.114736 0.039152 0.079540 0.074609 0.144051 -0.082203 -0.145513 0.004876 -0.252469 0.005756 0.245110 -0.101092 0.065562 -0.171087 0.005519 -0.005527 0.094499 0.054681 -0.044853 -0.037731 0.285537 -0.169364 0.082962 0.097452 -0.184904 -0.246170 0.201754 -0.079283 -0.180332 -0.009282 0.074115 0.221057 0.033268 0.021976 0.014238 0.086000 -0.090141 -0.070816 -0.046511 -0.025651 -0.059833 -0.086892 0.139139 -0.074664 0.109995 -0.096493 -0.132756 0.014005 -0.184265 0.008678 0.209333 0.024216 0.046068 +33 -0.037151 -0.193182 0.077220 0.145653 0.123061 -0.110840 0.185281 -0.003266 -0.074293 0.013228 -0.108248 0.023448 0.017491 -0.203065 -0.068931 -0.211348 0.036744 -0.099373 0.013532 0.072291 0.169995 -0.009909 0.193386 0.056882 -0.015445 -0.150086 -0.060747 -0.037020 -0.029384 0.216726 -0.015124 0.072654 -0.162907 0.029320 -0.163866 -0.086833 0.208782 0.090374 -0.040612 -0.127639 -0.159738 0.193453 0.128516 0.092407 -0.070034 0.102198 0.026696 -0.120459 -0.073511 0.130051 0.074555 0.242593 0.000266 0.103154 -0.166959 -0.113425 -0.069956 0.046228 0.019883 0.047479 0.043045 -0.096340 -0.130470 0.151841 0.041735 -0.279075 -0.063606 0.000315 0.068115 -0.050509 0.045616 0.007611 -0.069524 0.064300 -0.031539 -0.102848 0.052158 0.066086 0.064956 0.109075 -0.078587 -0.132586 0.004139 -0.232968 -0.010310 0.221729 -0.075292 0.054786 -0.151444 0.012827 0.007983 0.083758 0.057488 -0.049456 -0.048113 0.276285 -0.158635 0.053341 0.102118 -0.161438 -0.231241 0.187751 -0.082484 -0.163907 -0.014804 0.060307 0.209479 0.030831 0.023088 0.002885 0.075017 -0.076178 -0.068085 -0.047820 -0.030464 -0.050482 -0.082474 0.133255 -0.076936 0.086339 -0.085110 -0.118404 0.027944 -0.186448 -0.009368 0.183909 0.023062 0.057413 +3 -0.028561 -0.205411 0.056815 0.105204 0.107464 -0.127154 0.173082 0.029493 -0.026830 -0.005606 -0.101965 0.047164 0.018824 -0.210376 -0.017246 -0.231535 0.027110 -0.170617 -0.010041 0.031033 0.197806 -0.006828 0.168036 0.082497 0.027082 -0.157874 -0.080517 -0.019565 -0.000477 0.203291 -0.015622 0.058068 -0.156901 0.000501 -0.131919 -0.116712 0.199355 0.106443 -0.044448 -0.103124 -0.131104 0.115538 0.131251 0.140924 -0.098906 0.113108 0.063865 -0.097658 -0.058951 0.142671 0.027667 0.202568 -0.018042 0.131458 -0.174052 -0.145032 -0.066079 0.062356 0.048391 0.014275 0.072580 -0.089248 -0.084891 0.152485 -0.006358 -0.189735 -0.068464 0.033716 0.102633 -0.109285 -0.020809 0.035645 -0.092487 0.013135 0.052743 -0.089519 0.070987 0.045890 0.035846 -0.001593 -0.098935 -0.083680 0.012137 -0.175651 -0.054943 0.149670 0.019547 0.031285 -0.114596 0.042073 0.024935 0.042274 0.071669 -0.057264 -0.105576 0.250713 -0.121465 -0.015699 0.109578 -0.090905 -0.194813 0.173052 -0.108581 -0.135182 -0.051883 0.047640 0.190100 0.018619 0.022392 -0.026230 0.077392 -0.031160 -0.044318 -0.011937 -0.059609 -0.030396 -0.066347 0.157975 -0.064017 0.032325 -0.066449 -0.089884 0.073737 -0.207898 -0.113919 0.137631 0.044525 0.131904 +2 -0.014195 -0.206891 0.039293 0.085593 0.095233 -0.124536 0.156750 0.051983 0.001926 -0.015428 -0.094487 0.068283 0.022594 -0.197800 0.013198 -0.227624 0.008343 -0.180030 -0.019804 0.011482 0.205034 -0.006173 0.155285 0.082322 0.037030 -0.151400 -0.087726 -0.019770 0.005120 0.180771 -0.010223 0.048888 -0.152389 -0.009914 -0.112808 -0.117258 0.191241 0.099122 -0.047605 -0.088254 -0.111873 0.091852 0.139276 0.156382 -0.111017 0.116605 0.073830 -0.084164 -0.043307 0.137957 0.005370 0.179475 -0.012714 0.137657 -0.170627 -0.155057 -0.059229 0.074431 0.059581 -0.005058 0.088855 -0.090385 -0.056987 0.144462 -0.028853 -0.128125 -0.068681 0.038364 0.110911 -0.127508 -0.048368 0.043526 -0.091543 -0.015820 0.086858 -0.069705 0.077332 0.030236 0.014120 -0.050888 -0.104370 -0.061443 0.009650 -0.136330 -0.077768 0.111878 0.061145 0.022060 -0.081506 0.053774 0.040389 0.023848 0.076200 -0.059771 -0.129641 0.226712 -0.095737 -0.059849 0.105248 -0.044966 -0.162578 0.155537 -0.106955 -0.124103 -0.077882 0.022313 0.180785 0.018175 0.012676 -0.037498 0.061517 -0.005846 -0.034860 -0.004758 -0.074445 -0.020110 -0.054517 0.165222 -0.071541 0.005364 -0.052736 -0.073605 0.103373 -0.216421 -0.150806 0.105295 0.055725 0.159106 +4 -0.014641 -0.203711 0.034961 0.085020 0.095704 -0.131868 0.150660 0.056755 0.011886 -0.016651 -0.089766 0.067894 0.024813 -0.194787 0.020632 -0.224535 0.010860 -0.193962 -0.023700 0.008739 0.211455 -0.009271 0.145376 0.082361 0.047274 -0.151999 -0.089413 -0.014303 0.007932 0.174257 -0.014606 0.045983 -0.143194 -0.019511 -0.106699 -0.121798 0.188384 0.107257 -0.049663 -0.084457 -0.107101 0.077382 0.134446 0.157648 -0.108230 0.113253 0.079461 -0.079183 -0.043650 0.138382 0.001375 0.174463 -0.015088 0.134528 -0.166295 -0.153995 -0.057372 0.071027 0.069189 -0.016081 0.099031 -0.091601 -0.048610 0.142226 -0.029463 -0.114172 -0.072477 0.043485 0.114788 -0.127927 -0.054399 0.046114 -0.091841 -0.023762 0.094924 -0.068927 0.077757 0.029653 0.009168 -0.056918 -0.098812 -0.055162 0.015343 -0.122034 -0.078487 0.094937 0.074184 0.015670 -0.075195 0.058859 0.034632 0.014311 0.071581 -0.055793 -0.125368 0.216919 -0.088715 -0.066234 0.104393 -0.041869 -0.155419 0.150385 -0.102527 -0.107840 -0.081059 0.026027 0.165621 0.010435 0.014196 -0.037497 0.064977 -0.004085 -0.032967 0.003786 -0.069743 -0.013293 -0.051573 0.158915 -0.062837 -0.001615 -0.044520 -0.061123 0.099564 -0.209667 -0.159169 0.095354 0.052871 0.161271 +32 -0.028685 -0.213070 0.047301 0.108818 0.109415 -0.128147 0.176653 0.027303 -0.025159 -0.004165 -0.105345 0.053321 0.018802 -0.204727 -0.014004 -0.228356 0.026948 -0.172561 -0.012788 0.035630 0.203829 -0.004683 0.168709 0.078730 0.022190 -0.164596 -0.086578 -0.023510 -0.008559 0.203468 -0.010573 0.059740 -0.148701 -0.003012 -0.134304 -0.112708 0.203686 0.109460 -0.050573 -0.109072 -0.136512 0.126445 0.128359 0.133714 -0.103106 0.115873 0.066037 -0.090537 -0.055603 0.139785 0.027898 0.210594 -0.017086 0.130375 -0.174136 -0.149086 -0.063542 0.062951 0.050607 0.008530 0.075894 -0.092578 -0.084852 0.157976 -0.014030 -0.184613 -0.072039 0.032966 0.101139 -0.104970 -0.026077 0.038771 -0.092542 0.011978 0.047402 -0.082716 0.062619 0.046412 0.032246 0.000488 -0.098291 -0.080592 0.019979 -0.166354 -0.054311 0.148484 0.019857 0.032152 -0.108305 0.035798 0.024141 0.041786 0.075691 -0.055285 -0.095965 0.244279 -0.114245 -0.016270 0.102579 -0.095522 -0.187384 0.167964 -0.106744 -0.134279 -0.050422 0.048754 0.190782 0.013687 0.018321 -0.018169 0.071399 -0.032380 -0.043966 -0.010604 -0.056195 -0.028461 -0.064954 0.154093 -0.059146 0.030605 -0.064815 -0.091060 0.073829 -0.205478 -0.104267 0.131276 0.034881 0.128345 +24 -0.029315 -0.189772 0.068621 0.134244 0.113263 -0.111526 0.179366 0.006049 -0.055758 0.008379 -0.101671 0.030253 0.020045 -0.200031 -0.051633 -0.212913 0.031469 -0.122085 0.007588 0.056852 0.173856 -0.008787 0.179263 0.067520 0.002459 -0.148246 -0.065914 -0.037638 -0.025133 0.208168 -0.016622 0.063915 -0.162850 0.012209 -0.148385 -0.094801 0.212578 0.094363 -0.044566 -0.125276 -0.148900 0.172375 0.128087 0.110670 -0.080469 0.106983 0.040901 -0.105512 -0.063393 0.132020 0.064159 0.230891 -0.009803 0.113915 -0.160158 -0.123251 -0.063602 0.050361 0.029889 0.029696 0.051962 -0.091280 -0.110055 0.153433 0.019818 -0.245125 -0.068114 0.014500 0.076046 -0.066689 0.022533 0.020194 -0.083352 0.046498 -0.001833 -0.098371 0.049496 0.056079 0.051472 0.077022 -0.081356 -0.108193 0.010358 -0.201614 -0.025917 0.187518 -0.045225 0.052643 -0.135496 0.023657 0.010510 0.068199 0.063236 -0.049041 -0.063124 0.265099 -0.134215 0.031199 0.096965 -0.135953 -0.212055 0.182376 -0.084096 -0.150302 -0.031544 0.058467 0.196833 0.024433 0.022537 0.000038 0.078107 -0.060734 -0.059215 -0.031952 -0.043136 -0.043312 -0.075321 0.136955 -0.064975 0.072500 -0.075805 -0.107042 0.043740 -0.190984 -0.039007 0.166575 0.030490 0.083785 +14 -0.027129 -0.198493 0.061423 0.105227 0.107909 -0.116048 0.165620 0.021164 -0.039371 0.000798 -0.105297 0.046454 0.020127 -0.201215 -0.025640 -0.218301 0.026254 -0.145145 -0.003993 0.036285 0.189837 -0.001548 0.169266 0.074046 0.012566 -0.145471 -0.070417 -0.019415 -0.011722 0.199796 -0.013031 0.061321 -0.155937 0.010501 -0.129864 -0.105259 0.194787 0.093700 -0.043040 -0.106005 -0.136448 0.129663 0.130622 0.132160 -0.088718 0.109683 0.051199 -0.096384 -0.058666 0.135832 0.033188 0.202058 -0.010150 0.124697 -0.166948 -0.134049 -0.066910 0.061093 0.035829 0.016422 0.067523 -0.093323 -0.088033 0.141622 0.001714 -0.188714 -0.062100 0.020227 0.088135 -0.091097 -0.010059 0.031509 -0.082984 0.023107 0.036634 -0.082443 0.064717 0.047751 0.036376 0.020414 -0.091274 -0.092302 0.010257 -0.170598 -0.046212 0.162372 -0.004781 0.033150 -0.109946 0.033680 0.021587 0.046615 0.063440 -0.057116 -0.089360 0.243070 -0.123019 0.000268 0.100286 -0.097457 -0.190594 0.162703 -0.092669 -0.130177 -0.047080 0.045170 0.186444 0.027099 0.014230 -0.019465 0.063650 -0.042349 -0.049969 -0.016807 -0.047529 -0.034889 -0.069347 0.142300 -0.068355 0.042539 -0.065908 -0.092345 0.059285 -0.191807 -0.077834 0.134570 0.036721 0.108272 +30 -0.029805 -0.195961 0.067188 0.138667 0.112269 -0.110647 0.186154 -0.000130 -0.064409 0.011206 -0.110666 0.029180 0.017283 -0.202088 -0.059766 -0.216968 0.035102 -0.117452 0.007007 0.065951 0.173340 -0.011271 0.187594 0.059655 -0.000878 -0.153483 -0.060203 -0.036643 -0.028904 0.212611 -0.014515 0.062677 -0.160968 0.015566 -0.153099 -0.088347 0.209994 0.097673 -0.040055 -0.127585 -0.150775 0.176175 0.128623 0.109289 -0.077416 0.104198 0.038445 -0.114737 -0.066683 0.134714 0.065543 0.233909 -0.003867 0.105055 -0.159656 -0.122573 -0.070121 0.050437 0.028871 0.034093 0.049062 -0.093662 -0.113433 0.153901 0.031128 -0.253415 -0.068951 0.007318 0.077145 -0.065763 0.028671 0.015899 -0.078109 0.049580 -0.008314 -0.102949 0.051671 0.064192 0.055459 0.087741 -0.088441 -0.117364 0.004683 -0.212010 -0.019745 0.199981 -0.053953 0.052947 -0.143431 0.021250 0.012143 0.067632 0.060727 -0.045437 -0.058646 0.265112 -0.144213 0.040904 0.099171 -0.143674 -0.210708 0.183055 -0.085558 -0.160468 -0.027837 0.057454 0.201077 0.025756 0.017544 -0.000789 0.073068 -0.067587 -0.063775 -0.036334 -0.034737 -0.045930 -0.079362 0.137832 -0.069735 0.079231 -0.082655 -0.107603 0.038808 -0.186957 -0.032019 0.173386 0.033657 0.076414 +6 0.002078 -0.268463 -0.003595 0.061690 0.088494 -0.169720 0.158606 0.118915 0.104116 -0.043795 -0.095630 0.123569 0.022248 -0.218749 0.115644 -0.277518 -0.014723 -0.313166 -0.060689 -0.047875 0.288100 -0.020190 0.132303 0.118331 0.117887 -0.200003 -0.132013 -0.017603 0.019659 0.177378 -0.006264 0.034392 -0.144590 -0.073253 -0.077074 -0.172127 0.207134 0.149657 -0.083728 -0.071973 -0.090280 0.020017 0.167903 0.226158 -0.175951 0.159062 0.152982 -0.053364 -0.014949 0.189750 -0.065455 0.174992 -0.030634 0.172406 -0.186966 -0.233308 -0.063218 0.106419 0.135712 -0.083162 0.167874 -0.111255 0.019922 0.172214 -0.106326 -0.006885 -0.089321 0.084059 0.181457 -0.217192 -0.148822 0.081893 -0.144617 -0.089499 0.217508 -0.047376 0.106679 -0.000777 -0.035308 -0.219362 -0.139127 0.023513 0.039169 -0.045416 -0.159940 -0.008134 0.218900 -0.008446 -0.026698 0.104784 0.072880 -0.043530 0.111360 -0.052411 -0.210585 0.205173 -0.034588 -0.189699 0.137564 0.055408 -0.113309 0.151570 -0.151678 -0.094919 -0.158202 -0.006576 0.163549 -0.015275 0.019636 -0.075174 0.055843 0.066792 -0.019707 0.035878 -0.116778 0.019480 -0.031952 0.205222 -0.063552 -0.076776 -0.017083 -0.022952 0.203400 -0.281455 -0.323782 0.030069 0.078347 0.272427 +28 -0.031933 -0.197667 0.064274 0.115887 0.109673 -0.112831 0.172487 0.015226 -0.045440 0.000922 -0.100285 0.041999 0.019360 -0.195612 -0.036887 -0.218494 0.025783 -0.140635 0.001926 0.047809 0.179597 -0.007532 0.172192 0.069171 0.007049 -0.146625 -0.074777 -0.025957 -0.010022 0.198732 -0.015366 0.065234 -0.151395 0.012260 -0.137601 -0.103174 0.199766 0.096171 -0.039490 -0.110485 -0.138451 0.140136 0.128419 0.120470 -0.087535 0.103411 0.041446 -0.101929 -0.063897 0.129588 0.039896 0.211609 -0.006230 0.115810 -0.161193 -0.129435 -0.065928 0.050153 0.031238 0.023657 0.060655 -0.092088 -0.094960 0.147079 0.012121 -0.212376 -0.067530 0.022987 0.080594 -0.086674 0.001573 0.025931 -0.081351 0.024362 0.018821 -0.089987 0.060000 0.054546 0.038437 0.043187 -0.088256 -0.103463 0.010522 -0.187656 -0.037527 0.173049 -0.014719 0.041709 -0.121271 0.031382 0.019447 0.054744 0.061988 -0.056360 -0.078127 0.246409 -0.128369 0.010664 0.099073 -0.115142 -0.199420 0.175094 -0.094355 -0.143670 -0.035543 0.051635 0.192875 0.027025 0.020782 -0.017472 0.072300 -0.045097 -0.055823 -0.026098 -0.047309 -0.039429 -0.071946 0.141525 -0.068355 0.048830 -0.069811 -0.097455 0.053574 -0.189748 -0.071610 0.145047 0.036588 0.100697 +9 -0.028741 -0.211076 0.054543 0.113454 0.112192 -0.125957 0.179462 0.027106 -0.028922 -0.004419 -0.107562 0.053037 0.021575 -0.217922 -0.024299 -0.237413 0.024300 -0.160490 -0.008231 0.041769 0.199263 -0.003726 0.183270 0.076422 0.018500 -0.159869 -0.083470 -0.031711 -0.011421 0.213216 -0.012059 0.066545 -0.164235 0.000059 -0.135374 -0.114367 0.211365 0.103426 -0.050803 -0.107760 -0.144874 0.131460 0.138487 0.143084 -0.099800 0.116327 0.059543 -0.104551 -0.061709 0.139687 0.031561 0.216445 -0.014551 0.132551 -0.174128 -0.147784 -0.069049 0.061083 0.044929 0.013560 0.073751 -0.095200 -0.094416 0.159048 0.001244 -0.203643 -0.068519 0.027594 0.098585 -0.101190 -0.011652 0.036458 -0.086973 0.017561 0.045833 -0.092934 0.063652 0.055411 0.034048 0.017822 -0.095928 -0.093888 0.008178 -0.187700 -0.052890 0.162931 0.005551 0.035677 -0.122494 0.039770 0.026802 0.046470 0.076745 -0.054114 -0.100411 0.253836 -0.121971 -0.008027 0.105489 -0.097454 -0.201514 0.171386 -0.106460 -0.139697 -0.050451 0.044910 0.193437 0.025752 0.016820 -0.024537 0.076425 -0.037152 -0.045500 -0.020131 -0.057735 -0.035467 -0.071962 0.158357 -0.070841 0.044458 -0.070259 -0.096717 0.068233 -0.206222 -0.099504 0.146867 0.042443 0.123567 +8 -0.017865 -0.211108 0.047087 0.089959 0.095930 -0.129200 0.162559 0.046570 -0.004375 -0.008637 -0.098684 0.061683 0.021941 -0.204175 0.012324 -0.233112 0.015407 -0.184187 -0.015316 0.016029 0.207185 -0.006227 0.154479 0.078815 0.037447 -0.147990 -0.084808 -0.012550 0.005331 0.188156 -0.016680 0.052601 -0.150952 -0.007804 -0.117620 -0.122416 0.198871 0.103815 -0.043373 -0.089026 -0.118659 0.092678 0.133247 0.160776 -0.106863 0.122023 0.070368 -0.087064 -0.050659 0.143238 0.005149 0.183299 -0.011017 0.141231 -0.177581 -0.152867 -0.065982 0.068455 0.058193 -0.006387 0.090205 -0.095814 -0.063365 0.149157 -0.020920 -0.143041 -0.067499 0.037596 0.111694 -0.126333 -0.047938 0.041035 -0.095825 -0.012171 0.082612 -0.074008 0.073319 0.033771 0.017426 -0.041337 -0.098758 -0.070711 0.009757 -0.141484 -0.076250 0.121256 0.057527 0.022052 -0.087179 0.051636 0.038312 0.022068 0.071565 -0.062129 -0.121745 0.227285 -0.099703 -0.054338 0.100271 -0.059531 -0.161960 0.151497 -0.109298 -0.116800 -0.066790 0.026844 0.177323 0.011312 0.014639 -0.038243 0.063205 -0.009735 -0.033455 0.000628 -0.073667 -0.017436 -0.058714 0.157400 -0.066595 0.007332 -0.054345 -0.075661 0.096529 -0.204896 -0.138533 0.104377 0.054124 0.149600 +7 0.004536 -0.254080 -0.005178 0.057268 0.083031 -0.160793 0.152251 0.109620 0.097156 -0.041831 -0.095120 0.116381 0.023259 -0.211618 0.107966 -0.263637 -0.010155 -0.292228 -0.062469 -0.041445 0.275748 -0.017947 0.131967 0.117549 0.107937 -0.190531 -0.131160 -0.015198 0.016388 0.167363 -0.002318 0.040055 -0.140953 -0.069910 -0.079856 -0.160896 0.193364 0.132179 -0.076877 -0.067679 -0.087655 0.021391 0.153731 0.214042 -0.160299 0.151596 0.140628 -0.047208 -0.016141 0.176074 -0.061066 0.166253 -0.026844 0.168321 -0.184576 -0.212191 -0.057258 0.100167 0.125962 -0.066334 0.153393 -0.106310 0.015351 0.163925 -0.100897 -0.008578 -0.081105 0.081465 0.172725 -0.203431 -0.141983 0.080377 -0.138018 -0.082646 0.200963 -0.042303 0.096555 -0.001276 -0.029828 -0.206510 -0.126383 0.019984 0.033506 -0.044342 -0.150970 0.000560 0.194671 -0.005433 -0.028069 0.098008 0.067910 -0.039512 0.106683 -0.054327 -0.194675 0.199312 -0.033676 -0.172281 0.121926 0.047836 -0.112250 0.145785 -0.146147 -0.089646 -0.142902 -0.010297 0.153126 -0.016220 0.020992 -0.066057 0.052915 0.063302 -0.019462 0.027044 -0.111650 0.011834 -0.033692 0.189723 -0.062758 -0.066532 -0.020178 -0.020366 0.188008 -0.256947 -0.294357 0.027996 0.071474 0.257231 +11 -0.011104 -0.238662 0.017651 0.075369 0.092326 -0.150237 0.153379 0.086072 0.059588 -0.030736 -0.095822 0.094182 0.019264 -0.201241 0.068715 -0.252125 -0.001463 -0.247265 -0.041062 -0.019052 0.248472 -0.015812 0.142417 0.101158 0.078408 -0.176218 -0.110534 -0.015693 0.006325 0.172081 -0.007481 0.042705 -0.139252 -0.048455 -0.091122 -0.140135 0.198064 0.126991 -0.064129 -0.073303 -0.096557 0.056212 0.147887 0.185500 -0.139213 0.137412 0.115886 -0.059514 -0.031032 0.163974 -0.028957 0.175716 -0.019992 0.148652 -0.174109 -0.192077 -0.060479 0.089457 0.094409 -0.044620 0.125362 -0.103718 -0.012229 0.158348 -0.069101 -0.065849 -0.080717 0.060038 0.149384 -0.170787 -0.098626 0.059951 -0.119967 -0.054091 0.151870 -0.056308 0.087860 0.008745 -0.011980 -0.135536 -0.113264 -0.013711 0.025772 -0.088830 -0.123062 0.048005 0.141393 0.006782 -0.051220 0.078137 0.050331 -0.016018 0.092582 -0.048781 -0.161419 0.206455 -0.058673 -0.120110 0.115591 0.007645 -0.128734 0.152522 -0.128197 -0.101811 -0.113094 0.007255 0.165345 -0.009922 0.018239 -0.054996 0.055853 0.032588 -0.030402 0.013102 -0.091771 -0.001437 -0.045370 0.179492 -0.062742 -0.036980 -0.031203 -0.044651 0.151537 -0.240748 -0.230398 0.058123 0.057474 0.209633 +26 -0.023020 -0.198035 0.052784 0.110189 0.107711 -0.121333 0.171473 0.021895 -0.032644 -0.004038 -0.101837 0.043534 0.021820 -0.197700 -0.022046 -0.215946 0.026357 -0.152653 -0.007251 0.039833 0.193019 -0.007593 0.170483 0.074832 0.018060 -0.156527 -0.080434 -0.030780 -0.016583 0.199059 -0.008473 0.058927 -0.147682 -0.004470 -0.132989 -0.106190 0.197362 0.098274 -0.048066 -0.107485 -0.132600 0.128865 0.123421 0.123282 -0.093707 0.113453 0.053405 -0.093328 -0.056185 0.139182 0.038118 0.209039 -0.012684 0.115021 -0.161031 -0.138554 -0.060245 0.059080 0.041824 0.012730 0.069979 -0.091850 -0.083236 0.151016 -0.000600 -0.187181 -0.064777 0.020779 0.092040 -0.088948 -0.010133 0.029883 -0.087822 0.018203 0.037744 -0.086909 0.054650 0.046275 0.033388 0.017380 -0.092644 -0.080701 0.014382 -0.165403 -0.043736 0.150511 -0.000230 0.035232 -0.110608 0.033784 0.020769 0.043880 0.070284 -0.044217 -0.083884 0.235181 -0.114249 -0.003872 0.101984 -0.097426 -0.181580 0.163574 -0.092290 -0.129696 -0.045518 0.044875 0.183125 0.017928 0.022999 -0.011724 0.063166 -0.037035 -0.048019 -0.016431 -0.049066 -0.030906 -0.062725 0.139018 -0.059069 0.036730 -0.063343 -0.088477 0.062320 -0.195873 -0.085636 0.136442 0.033857 0.105298 +5 -0.004594 -0.243196 0.005785 0.065577 0.090126 -0.153967 0.154449 0.088095 0.073435 -0.034911 -0.090112 0.105713 0.019047 -0.202371 0.080980 -0.256649 -0.007039 -0.264985 -0.047738 -0.023556 0.256849 -0.011095 0.131734 0.108428 0.090315 -0.180211 -0.114032 -0.017658 0.012227 0.170835 -0.010182 0.037963 -0.142614 -0.050532 -0.080946 -0.151261 0.194782 0.130602 -0.067567 -0.069304 -0.087982 0.037704 0.145634 0.197020 -0.148580 0.139400 0.123792 -0.058108 -0.025629 0.162819 -0.041917 0.169209 -0.018981 0.148528 -0.171418 -0.200696 -0.057636 0.091955 0.108952 -0.060386 0.133370 -0.104544 -0.001118 0.159968 -0.081236 -0.038192 -0.073945 0.064121 0.156134 -0.179419 -0.115688 0.067210 -0.123707 -0.069146 0.169208 -0.053796 0.087754 0.002529 -0.021773 -0.162555 -0.120582 -0.002197 0.026520 -0.068466 -0.132423 0.023636 0.163203 0.004269 -0.038202 0.083627 0.058034 -0.025884 0.094432 -0.049474 -0.176491 0.197759 -0.052375 -0.139631 0.121160 0.028213 -0.123731 0.142645 -0.131270 -0.097683 -0.127133 0.000257 0.157086 -0.010924 0.011315 -0.059939 0.049982 0.040890 -0.020221 0.020389 -0.098609 0.009737 -0.034123 0.182243 -0.056289 -0.046906 -0.025897 -0.031945 0.160402 -0.243433 -0.254963 0.048785 0.060837 0.227462 +20 -0.018263 -0.203119 0.044032 0.096708 0.093959 -0.128945 0.162148 0.043488 -0.007986 -0.009540 -0.096424 0.056310 0.026605 -0.195246 0.002651 -0.219970 0.010107 -0.169680 -0.017086 0.016119 0.202129 -0.011583 0.155043 0.076787 0.035868 -0.145195 -0.074411 -0.020829 0.000230 0.177906 -0.018463 0.050058 -0.145409 -0.009500 -0.112073 -0.111484 0.195414 0.098849 -0.049618 -0.097075 -0.119716 0.099080 0.128173 0.144992 -0.099394 0.113066 0.072445 -0.084550 -0.045729 0.134319 0.009104 0.186786 -0.007951 0.121093 -0.163520 -0.145787 -0.061469 0.061240 0.054717 -0.003879 0.090869 -0.089566 -0.062849 0.143736 -0.016331 -0.146340 -0.067350 0.033961 0.102259 -0.106254 -0.036726 0.037258 -0.089962 -0.005363 0.069195 -0.070990 0.071186 0.033198 0.022662 -0.022449 -0.093300 -0.071684 0.012518 -0.146311 -0.064636 0.120725 0.039939 0.025594 -0.091103 0.050819 0.034654 0.027948 0.068914 -0.054067 -0.108076 0.222217 -0.094144 -0.042908 0.096560 -0.056561 -0.162761 0.147145 -0.100650 -0.112914 -0.066399 0.030850 0.167822 0.012409 0.018386 -0.025553 0.059479 -0.014568 -0.037243 -0.002874 -0.064027 -0.021660 -0.052850 0.151709 -0.062739 0.015709 -0.051125 -0.065736 0.086524 -0.197463 -0.121859 0.108248 0.041986 0.136731 +29 -0.029217 -0.192326 0.054517 0.112169 0.109076 -0.116282 0.168307 0.012174 -0.039994 0.001809 -0.098568 0.043412 0.016036 -0.194299 -0.030963 -0.214521 0.024745 -0.142613 0.001282 0.044642 0.182777 -0.008179 0.165616 0.068198 0.007098 -0.151797 -0.073324 -0.030752 -0.013393 0.199615 -0.007267 0.059101 -0.145442 0.004420 -0.136301 -0.096027 0.197822 0.096257 -0.041719 -0.111380 -0.130995 0.141976 0.118482 0.111795 -0.082441 0.109905 0.046891 -0.095926 -0.059965 0.130532 0.041412 0.206435 -0.013023 0.116034 -0.163667 -0.124636 -0.056119 0.056049 0.037650 0.022077 0.060789 -0.090658 -0.095441 0.145759 0.002065 -0.204009 -0.069661 0.018610 0.086614 -0.079012 -0.004151 0.026184 -0.085070 0.029903 0.024578 -0.082741 0.056755 0.050838 0.039933 0.035330 -0.089804 -0.088362 0.014101 -0.179165 -0.036571 0.161763 -0.008797 0.033754 -0.115875 0.024550 0.017247 0.047270 0.064382 -0.047846 -0.073251 0.242764 -0.122172 0.010656 0.094378 -0.111195 -0.190514 0.167477 -0.090849 -0.132405 -0.037286 0.048096 0.180554 0.017383 0.021162 -0.010220 0.072079 -0.041447 -0.053255 -0.023962 -0.050160 -0.038334 -0.069232 0.134364 -0.059308 0.047420 -0.068231 -0.094575 0.052337 -0.190503 -0.066888 0.144212 0.031240 0.094808 +25 -0.035282 -0.206988 0.058312 0.120805 0.111692 -0.122058 0.177212 0.011913 -0.038791 0.000927 -0.108893 0.039183 0.017992 -0.200517 -0.036279 -0.230321 0.033777 -0.150954 0.003472 0.053558 0.195164 -0.010270 0.183469 0.076504 0.012123 -0.165208 -0.076565 -0.032481 -0.022911 0.213152 -0.007764 0.065099 -0.152898 0.001475 -0.147454 -0.099935 0.198991 0.104754 -0.047584 -0.118899 -0.147034 0.153900 0.125362 0.112688 -0.085567 0.114880 0.050960 -0.097374 -0.057590 0.140256 0.042312 0.225302 -0.010500 0.123003 -0.172205 -0.137021 -0.060565 0.052122 0.037197 0.026949 0.059353 -0.090034 -0.097365 0.150803 0.002949 -0.221907 -0.071696 0.022900 0.083551 -0.083490 0.000902 0.022435 -0.083410 0.035583 0.017835 -0.096991 0.054303 0.057029 0.046537 0.039250 -0.092136 -0.098973 0.014844 -0.194283 -0.038230 0.170998 -0.015587 0.034901 -0.129690 0.023305 0.011655 0.053895 0.073493 -0.053029 -0.081261 0.257914 -0.129617 0.012464 0.105111 -0.118070 -0.207143 0.181815 -0.098697 -0.145136 -0.036175 0.052328 0.198538 0.023094 0.025383 -0.012243 0.072062 -0.047573 -0.054932 -0.028930 -0.052588 -0.039808 -0.068874 0.144699 -0.067824 0.051959 -0.071644 -0.097496 0.054996 -0.205749 -0.075276 0.158864 0.029401 0.100663 +31 -0.024721 -0.196744 0.058380 0.113582 0.105830 -0.121297 0.167197 0.019532 -0.034359 0.000843 -0.097467 0.050559 0.023386 -0.199146 -0.025068 -0.221343 0.019521 -0.144300 -0.002430 0.040385 0.189624 -0.010693 0.165790 0.073749 0.016852 -0.147830 -0.069561 -0.021950 -0.011725 0.194129 -0.016407 0.062914 -0.153591 0.008004 -0.129214 -0.098710 0.194018 0.095890 -0.038745 -0.108933 -0.131078 0.135748 0.126969 0.121269 -0.088126 0.106741 0.049527 -0.099419 -0.056658 0.134461 0.031972 0.206586 -0.006793 0.116740 -0.162558 -0.134426 -0.061724 0.054186 0.037368 0.011571 0.070313 -0.091875 -0.092170 0.139323 0.001843 -0.195481 -0.071051 0.018516 0.087994 -0.088950 -0.006768 0.022944 -0.078728 0.019804 0.034330 -0.084489 0.066822 0.045952 0.039824 0.025499 -0.089017 -0.093305 0.008225 -0.178437 -0.045249 0.156472 -0.003366 0.031600 -0.112111 0.031002 0.017235 0.050212 0.068844 -0.052336 -0.091898 0.240929 -0.123371 -0.004094 0.099499 -0.095697 -0.192394 0.166625 -0.092753 -0.139534 -0.047868 0.042766 0.186704 0.021796 0.018163 -0.016969 0.065114 -0.043754 -0.051935 -0.024208 -0.049579 -0.030092 -0.069234 0.149659 -0.071942 0.045299 -0.067596 -0.091622 0.060503 -0.197020 -0.083051 0.139514 0.033104 0.107531 +22 -0.013324 -0.230635 0.030984 0.088591 0.098398 -0.146396 0.163462 0.062319 0.023642 -0.020648 -0.099384 0.080721 0.024131 -0.211143 0.037357 -0.247551 0.004881 -0.220844 -0.026082 0.005365 0.235157 -0.011633 0.157542 0.093512 0.056209 -0.167003 -0.100317 -0.023583 0.006637 0.191703 -0.011954 0.047766 -0.152447 -0.027922 -0.108449 -0.136209 0.200194 0.117877 -0.060827 -0.089997 -0.109545 0.076386 0.139793 0.174219 -0.123702 0.133703 0.092394 -0.075265 -0.038618 0.153266 -0.011535 0.186323 -0.021598 0.141207 -0.172176 -0.175036 -0.060644 0.081859 0.082517 -0.028496 0.111178 -0.097627 -0.040972 0.160566 -0.045475 -0.110720 -0.077981 0.050738 0.134783 -0.140888 -0.071112 0.053822 -0.108662 -0.030518 0.117828 -0.066935 0.077736 0.026950 0.008733 -0.083885 -0.111567 -0.043562 0.023202 -0.124658 -0.096351 0.084337 0.097076 0.012733 -0.073115 0.064600 0.044382 0.006441 0.085194 -0.057568 -0.141985 0.225707 -0.083323 -0.081665 0.116622 -0.032448 -0.156502 0.157640 -0.117900 -0.110662 -0.090711 0.023899 0.173482 0.005736 0.018212 -0.042824 0.065584 0.007001 -0.030511 0.008229 -0.081783 -0.010709 -0.054062 0.172114 -0.066413 -0.011092 -0.042839 -0.063262 0.123231 -0.230025 -0.185480 0.091342 0.055049 0.181622 +18 -0.015417 -0.214277 0.033568 0.083404 0.097872 -0.136150 0.154404 0.056222 0.014330 -0.011620 -0.096729 0.072457 0.026223 -0.203257 0.023977 -0.237472 0.008288 -0.197167 -0.026483 0.010702 0.221724 -0.008589 0.155733 0.087548 0.049251 -0.153534 -0.090079 -0.016234 0.008239 0.184684 -0.013617 0.052859 -0.144751 -0.016284 -0.107096 -0.126905 0.189289 0.107405 -0.049989 -0.084131 -0.112761 0.084732 0.130879 0.158727 -0.113563 0.124991 0.077743 -0.078021 -0.041654 0.141569 -0.004045 0.177146 -0.013704 0.141408 -0.172169 -0.155901 -0.059869 0.069247 0.066292 -0.015319 0.100727 -0.096667 -0.051426 0.146661 -0.030962 -0.120108 -0.069545 0.041643 0.121472 -0.126646 -0.059835 0.045643 -0.093986 -0.024604 0.099842 -0.067088 0.080691 0.030676 0.013505 -0.064096 -0.106151 -0.051701 0.018067 -0.132257 -0.087097 0.100177 0.077086 0.015532 -0.081299 0.060097 0.039849 0.012022 0.080452 -0.060635 -0.132832 0.221661 -0.089939 -0.063792 0.107578 -0.042526 -0.156943 0.152924 -0.109913 -0.109055 -0.076827 0.024759 0.166726 0.006231 0.015524 -0.042275 0.060000 -0.004546 -0.034933 0.000960 -0.073690 -0.017648 -0.052686 0.157787 -0.060782 -0.004237 -0.047121 -0.067493 0.103352 -0.211196 -0.156758 0.091279 0.046849 0.158989 +15 -0.038742 -0.181860 0.076422 0.131426 0.114511 -0.098082 0.178220 -0.010870 -0.073351 0.011362 -0.102118 0.022538 0.017705 -0.190122 -0.066676 -0.203583 0.031577 -0.098463 0.013143 0.065663 0.161812 -0.006469 0.180472 0.057628 -0.016408 -0.140837 -0.057834 -0.035330 -0.027581 0.201601 -0.016786 0.068714 -0.151775 0.025442 -0.151069 -0.079852 0.197741 0.085267 -0.030836 -0.120840 -0.152323 0.180546 0.119559 0.091588 -0.062273 0.098330 0.021480 -0.112452 -0.068518 0.119750 0.070742 0.224954 -0.001131 0.101519 -0.157838 -0.112446 -0.068340 0.037492 0.016034 0.044963 0.041362 -0.083752 -0.120886 0.138655 0.039096 -0.254089 -0.061011 0.000680 0.064335 -0.045800 0.042723 0.005416 -0.063940 0.055067 -0.029680 -0.099408 0.048734 0.063396 0.055471 0.101279 -0.075155 -0.121488 0.004649 -0.219147 -0.012046 0.203272 -0.072077 0.048097 -0.141964 0.013599 0.007170 0.079798 0.055884 -0.049460 -0.051760 0.258512 -0.143937 0.057159 0.090866 -0.145522 -0.209132 0.174501 -0.077477 -0.152952 -0.012560 0.055284 0.195636 0.030398 0.019197 -0.000547 0.072016 -0.072628 -0.064853 -0.043871 -0.032922 -0.043684 -0.075295 0.130494 -0.071538 0.086941 -0.077534 -0.114188 0.026202 -0.169823 -0.011775 0.173016 0.026535 0.057350 +21 -0.037420 -0.185872 0.075212 0.132879 0.113678 -0.109162 0.182616 -0.006157 -0.069429 0.015099 -0.106679 0.026768 0.019289 -0.203249 -0.063559 -0.210844 0.034637 -0.106484 0.014566 0.065066 0.167636 -0.008758 0.178195 0.061537 -0.008662 -0.145704 -0.056369 -0.033000 -0.026404 0.205464 -0.012827 0.065584 -0.158924 0.023812 -0.155812 -0.089556 0.206468 0.094386 -0.034654 -0.124362 -0.155135 0.181627 0.122971 0.098689 -0.074483 0.101350 0.031976 -0.111959 -0.065660 0.129340 0.071359 0.233446 0.000091 0.104223 -0.162610 -0.115789 -0.067045 0.041616 0.017170 0.040659 0.043462 -0.090928 -0.119716 0.149512 0.037119 -0.255346 -0.065734 0.000813 0.065450 -0.061481 0.036765 0.007069 -0.071992 0.055703 -0.015099 -0.099670 0.046978 0.058795 0.057399 0.096904 -0.081081 -0.120390 0.004858 -0.215712 -0.017138 0.200160 -0.064753 0.048738 -0.137154 0.013772 0.011125 0.075829 0.053434 -0.044530 -0.054077 0.259626 -0.147324 0.047909 0.094240 -0.146305 -0.214405 0.176736 -0.080233 -0.151088 -0.017518 0.060732 0.197316 0.025517 0.018441 -0.000798 0.078102 -0.066112 -0.064402 -0.035222 -0.035596 -0.042058 -0.081538 0.131786 -0.067695 0.083589 -0.080054 -0.110993 0.029966 -0.183058 -0.017387 0.173030 0.031126 0.062610 +17 -0.003820 -0.258748 0.007511 0.073799 0.087261 -0.166561 0.164332 0.103193 0.086301 -0.032979 -0.095967 0.114296 0.023835 -0.209231 0.087164 -0.264820 -0.005851 -0.289037 -0.053388 -0.027257 0.271622 -0.022929 0.143493 0.109600 0.104106 -0.188538 -0.123153 -0.017891 0.014887 0.181230 -0.006468 0.039014 -0.144970 -0.062753 -0.089660 -0.163364 0.210163 0.142884 -0.075443 -0.073802 -0.096341 0.035099 0.155266 0.212611 -0.160332 0.146925 0.138555 -0.055615 -0.024053 0.181979 -0.048630 0.178089 -0.024028 0.157596 -0.180789 -0.216782 -0.066465 0.103743 0.122200 -0.068508 0.147465 -0.110282 0.003898 0.167303 -0.087383 -0.037417 -0.086446 0.072099 0.169359 -0.193109 -0.129178 0.071290 -0.134761 -0.075162 0.187776 -0.051138 0.093057 0.001767 -0.021234 -0.181341 -0.128279 0.001945 0.036843 -0.066448 -0.146718 0.022767 0.183774 -0.000486 -0.038667 0.091760 0.056919 -0.029739 0.102607 -0.047634 -0.190349 0.213284 -0.046043 -0.152270 0.132497 0.031042 -0.125947 0.157345 -0.144651 -0.101663 -0.137798 0.000075 0.170512 -0.016977 0.015676 -0.058873 0.058126 0.048742 -0.019961 0.026767 -0.105519 0.007691 -0.039213 0.200967 -0.064217 -0.058417 -0.023250 -0.029369 0.180964 -0.262813 -0.285498 0.048213 0.068696 0.249874 +27 -0.032797 -0.195288 0.069216 0.133867 0.116239 -0.108610 0.185740 0.001955 -0.069550 0.011745 -0.109189 0.025742 0.016789 -0.195331 -0.063692 -0.214459 0.037900 -0.112968 0.012206 0.062131 0.171920 -0.008059 0.188124 0.063971 -0.005678 -0.152287 -0.063619 -0.034477 -0.029278 0.212291 -0.014158 0.063290 -0.162670 0.017202 -0.150986 -0.090824 0.207567 0.092173 -0.041477 -0.128388 -0.156671 0.178513 0.125848 0.103988 -0.072492 0.104946 0.038800 -0.114130 -0.067412 0.133543 0.070577 0.235690 -0.006427 0.108785 -0.161936 -0.123446 -0.068509 0.048673 0.026509 0.039035 0.043219 -0.087330 -0.122572 0.151673 0.033088 -0.258004 -0.068483 0.008963 0.071063 -0.058590 0.029735 0.015208 -0.073341 0.049656 -0.017644 -0.104967 0.052495 0.060227 0.055990 0.094341 -0.085367 -0.121196 0.006500 -0.214212 -0.020933 0.204051 -0.055618 0.050813 -0.148297 0.018130 0.005314 0.070086 0.059821 -0.045203 -0.059863 0.264393 -0.141945 0.042087 0.099247 -0.147625 -0.218392 0.180336 -0.078466 -0.159995 -0.019518 0.060393 0.201583 0.023242 0.017542 0.004161 0.076312 -0.067760 -0.062782 -0.038626 -0.033126 -0.048242 -0.077472 0.137043 -0.071898 0.078713 -0.083230 -0.106774 0.034610 -0.186021 -0.027404 0.176257 0.028692 0.068829 +13 -0.016251 -0.202210 0.044203 0.088466 0.096507 -0.126337 0.159309 0.039759 -0.004149 -0.007473 -0.097593 0.056936 0.024332 -0.200536 0.006949 -0.221349 0.011997 -0.176938 -0.019105 0.014213 0.206004 -0.006592 0.149878 0.080568 0.030047 -0.150166 -0.079204 -0.015752 0.001669 0.182771 -0.015711 0.054895 -0.149152 -0.011902 -0.116221 -0.118940 0.195229 0.105479 -0.047902 -0.094361 -0.116620 0.097874 0.131618 0.149932 -0.103497 0.118331 0.071413 -0.082989 -0.049628 0.140691 0.008150 0.189791 -0.012064 0.134192 -0.171061 -0.151393 -0.064362 0.064645 0.060668 -0.005979 0.090131 -0.090428 -0.066909 0.141823 -0.018341 -0.146798 -0.070384 0.033815 0.111008 -0.118907 -0.042392 0.039118 -0.091291 -0.008561 0.075513 -0.077024 0.069740 0.033468 0.017223 -0.035632 -0.096566 -0.069470 0.013172 -0.144055 -0.072647 0.118751 0.048097 0.022301 -0.091841 0.053665 0.037036 0.025523 0.069075 -0.060058 -0.112545 0.225052 -0.098872 -0.048194 0.099967 -0.061093 -0.164970 0.155288 -0.104344 -0.117836 -0.068449 0.027251 0.178255 0.012349 0.016290 -0.034276 0.068646 -0.016171 -0.038488 -0.000464 -0.068722 -0.024287 -0.060751 0.158546 -0.063426 0.011159 -0.052163 -0.070405 0.093148 -0.201658 -0.132882 0.112448 0.048381 0.147612 +16 -0.035511 -0.202433 0.074765 0.137003 0.120944 -0.118830 0.192556 0.003611 -0.063796 0.008194 -0.113915 0.035100 0.017987 -0.209628 -0.054792 -0.230371 0.031344 -0.130028 0.005399 0.060351 0.183567 -0.007812 0.195586 0.067352 -0.000746 -0.156934 -0.066758 -0.034735 -0.023160 0.217018 -0.017857 0.071274 -0.169265 0.016625 -0.155325 -0.095593 0.218590 0.094721 -0.042875 -0.128845 -0.157651 0.177348 0.135764 0.114344 -0.078313 0.107115 0.041332 -0.114620 -0.072006 0.140880 0.065547 0.235994 -0.004975 0.119182 -0.171357 -0.127930 -0.069664 0.051912 0.027303 0.033553 0.053918 -0.097968 -0.121946 0.152773 0.029148 -0.257393 -0.069424 0.013343 0.078061 -0.073751 0.027466 0.012917 -0.077428 0.046133 -0.000511 -0.104481 0.061024 0.061056 0.054253 0.080574 -0.086068 -0.123117 0.007125 -0.222340 -0.023653 0.207997 -0.047278 0.051753 -0.143597 0.023012 0.008929 0.073471 0.060931 -0.052019 -0.070416 0.277388 -0.146257 0.033883 0.101535 -0.145533 -0.219929 0.189848 -0.087398 -0.162705 -0.030509 0.055889 0.206549 0.028086 0.023714 -0.004239 0.078097 -0.061218 -0.065298 -0.034074 -0.040147 -0.044006 -0.080637 0.149864 -0.073541 0.072015 -0.083348 -0.112196 0.039528 -0.199341 -0.039605 0.177897 0.033195 0.086814 +10 -0.027585 -0.194088 0.059197 0.119915 0.110972 -0.109276 0.174774 0.014288 -0.042095 -0.000858 -0.100241 0.042340 0.015622 -0.194950 -0.039811 -0.211997 0.029892 -0.130081 -0.000935 0.049677 0.180622 -0.008247 0.175306 0.071121 0.006256 -0.149930 -0.067700 -0.032686 -0.017300 0.199301 -0.015064 0.058100 -0.155358 0.013960 -0.142041 -0.098388 0.204942 0.091471 -0.045583 -0.114575 -0.142506 0.146433 0.133451 0.124666 -0.082104 0.110766 0.052044 -0.105706 -0.057250 0.130125 0.046488 0.215138 -0.005023 0.115444 -0.165828 -0.127673 -0.063402 0.051871 0.031160 0.026004 0.060362 -0.090928 -0.104118 0.150557 0.012237 -0.215296 -0.068170 0.014316 0.081505 -0.084544 0.007917 0.021841 -0.077922 0.032457 0.022610 -0.088440 0.057599 0.052640 0.040163 0.045724 -0.092811 -0.102962 0.008316 -0.186414 -0.038811 0.175640 -0.023215 0.038689 -0.124989 0.026973 0.020717 0.056677 0.068148 -0.047932 -0.078206 0.253664 -0.129277 0.009820 0.098881 -0.111326 -0.200409 0.169981 -0.092098 -0.142026 -0.041227 0.047309 0.194378 0.028011 0.015665 -0.009721 0.075129 -0.051944 -0.050750 -0.027879 -0.043975 -0.038653 -0.069770 0.145200 -0.069432 0.052571 -0.072166 -0.100100 0.053520 -0.189645 -0.060939 0.148898 0.033137 0.097645 +19 -0.027732 -0.191410 0.071374 0.126421 0.111070 -0.107876 0.176676 0.002585 -0.056623 0.007753 -0.107521 0.034261 0.017425 -0.196124 -0.054218 -0.209829 0.028584 -0.119391 0.010084 0.061913 0.173410 -0.011680 0.179995 0.065147 -0.001625 -0.142977 -0.063433 -0.032499 -0.024087 0.202601 -0.014654 0.065021 -0.157166 0.014068 -0.147521 -0.090713 0.201155 0.093299 -0.036933 -0.116991 -0.146786 0.164469 0.126893 0.108293 -0.072268 0.104702 0.041552 -0.111925 -0.064965 0.130148 0.057931 0.221071 -0.006557 0.107943 -0.158583 -0.118838 -0.068929 0.049770 0.029246 0.031526 0.049580 -0.091647 -0.108593 0.149711 0.025498 -0.241462 -0.062069 0.007796 0.072132 -0.069099 0.023806 0.015895 -0.073660 0.045420 -0.004704 -0.098964 0.055777 0.060156 0.047455 0.072451 -0.083713 -0.113153 0.005848 -0.206370 -0.026630 0.191575 -0.042831 0.048624 -0.137622 0.019955 0.012079 0.069761 0.063439 -0.046717 -0.067139 0.259465 -0.137931 0.031655 0.095115 -0.133943 -0.204654 0.176064 -0.087317 -0.151846 -0.029655 0.053095 0.194311 0.026293 0.017557 -0.005392 0.070930 -0.060431 -0.056958 -0.035492 -0.035889 -0.039722 -0.070587 0.140291 -0.072385 0.073148 -0.077481 -0.105852 0.037980 -0.184668 -0.039701 0.162597 0.027359 0.074613 +23 -0.033210 -0.184668 0.068293 0.134566 0.114270 -0.104607 0.178711 0.001390 -0.065522 0.009054 -0.106138 0.027556 0.018583 -0.199027 -0.063989 -0.206200 0.033015 -0.105313 0.014056 0.067949 0.166519 -0.009827 0.178455 0.063617 -0.006858 -0.146158 -0.062987 -0.037576 -0.029466 0.209047 -0.015356 0.066887 -0.160449 0.021807 -0.155659 -0.090378 0.207961 0.088324 -0.040872 -0.123138 -0.151890 0.176836 0.126912 0.103274 -0.069964 0.100173 0.030907 -0.109336 -0.069626 0.127748 0.067974 0.227998 -0.000047 0.103285 -0.161713 -0.120993 -0.068281 0.045139 0.020741 0.034411 0.045739 -0.092077 -0.115655 0.148847 0.035084 -0.252089 -0.062115 0.008133 0.069460 -0.054618 0.033052 0.012278 -0.067598 0.053203 -0.019130 -0.097868 0.052464 0.061815 0.059491 0.093377 -0.076428 -0.121617 0.008539 -0.212696 -0.018011 0.203398 -0.061353 0.051035 -0.142295 0.014292 0.010089 0.074233 0.053472 -0.047926 -0.059945 0.256730 -0.142284 0.041962 0.092629 -0.139135 -0.213449 0.175437 -0.076828 -0.156503 -0.021848 0.053856 0.192573 0.025691 0.021557 0.001070 0.069397 -0.069436 -0.063409 -0.040655 -0.036039 -0.045850 -0.079422 0.133649 -0.068391 0.078443 -0.077553 -0.106411 0.028381 -0.181549 -0.019292 0.166210 0.027056 0.064981 +12 -0.021273 -0.227668 0.038558 0.090407 0.099022 -0.140312 0.164310 0.052033 0.009098 -0.013410 -0.097127 0.077289 0.022158 -0.207640 0.021235 -0.240299 0.006905 -0.202974 -0.020711 0.006990 0.226572 -0.006636 0.162136 0.086941 0.045041 -0.167648 -0.092316 -0.020622 0.001998 0.192480 -0.011041 0.053884 -0.157959 -0.018872 -0.112976 -0.125813 0.202160 0.115976 -0.054787 -0.090532 -0.118860 0.091723 0.145099 0.166208 -0.120442 0.130763 0.087454 -0.084446 -0.048270 0.149799 -0.000930 0.194755 -0.016566 0.135677 -0.178469 -0.171928 -0.064194 0.077802 0.071331 -0.014707 0.104369 -0.097693 -0.055641 0.159833 -0.037280 -0.129457 -0.070626 0.042838 0.127276 -0.129173 -0.052652 0.049975 -0.101368 -0.018337 0.098129 -0.073238 0.081095 0.033745 0.013358 -0.056144 -0.107931 -0.054709 0.014202 -0.137441 -0.089349 0.108359 0.072167 0.020375 -0.085731 0.056013 0.039300 0.019503 0.078827 -0.056725 -0.129791 0.227478 -0.089512 -0.069089 0.113283 -0.044508 -0.168694 0.157203 -0.113424 -0.119602 -0.082808 0.021959 0.180182 0.008560 0.020195 -0.041412 0.060062 -0.004268 -0.036427 0.002955 -0.074725 -0.013607 -0.056984 0.172375 -0.070957 -0.001239 -0.051512 -0.070750 0.111761 -0.219853 -0.165831 0.102570 0.048231 0.167540 diff --git a/node2vec_spark/README.md b/node2vec_spark/README.md new file mode 100644 index 0000000..43f6684 --- /dev/null +++ b/node2vec_spark/README.md @@ -0,0 +1,139 @@ +# node2vec on spark + +This library is a implementation using scala for running on spark of *node2vec* as described in the paper: +> node2vec: Scalable Feature Learning for Networks. +> Aditya Grover and Jure Leskovec. +> Knowledge Discovery and Data Mining, 2016. +> + +The *node2vec* algorithm learns continuous representations for nodes in any (un)directed, (un)weighted graph. Please check the [project page](https://snap.stanford.edu/node2vec/) for more details. + + +### Building node2vec_spark +**In order to build node2vec_spark, use the following:** + +``` +$ git clone https://github.com/Skarface-/node2vec.git +$ mvn clean package +``` + +**and requires:**
+Maven 3.0.5 or newer
+Java 7+
+Scala 2.10 or newer. + +This will produce jar file in "node2vec_spark/target/" + +### Examples +This library has two functions: *randomwalk* and *embedding*.
+These were described in these papers [node2vec: Scalable Feature Learning for Networks](http://arxiv.org/abs/1607.00653) and [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/abs/1301.3781). + +### Random walk +Example: + + ./spark-submit --class com.navercorp.Main \ + ./node2vec_spark/target/node2vec-0.0.1-SNAPSHOT.jar \ + --cmd randomwalk --p 100.0 --q 100.0 --walkLength 40 \ + --input --output + +#### Options +Invoke a command without arguments to list available arguments and their default values: + +``` +--cmd COMMAND + Functions: randomwalk or embedding. If you want to execute all functions "randomwalk" and "embedding" sequentially input "node2vec". Default "node2vec" +--input [INPUT] + Input edgelist path. The supported input format is an edgelist: "node1_id_int node2_id_int " +--output [OUTPUT] + Random paths path. +--walkLength WALK_LENGTH + Length of walk per source. Default is 80. +--numWalks NUM_WALKS + Number of walks per source. Default is 10. +--p P + Return hyperparaemter. Default is 1.0. +--q Q + Inout hyperparameter. Default is 1.0. +--weighted Boolean + Specifying (un)weighted. Default is true. +--directed Boolean + Specifying (un)directed. Default is false. +--degree UPPER_BOUND_OF_NUMBER_OF_NEIGHBORS + Specifying upper bound of number of neighbors. Default is 30. +--indexed Boolean + Specifying whether nodes in edgelist are indexed or not. Default is true. +``` + +* If "indexed" is set to false, *node2vec_spark* index nodes in input edgelist, example:
+ **unindexed edgelist:**
+ node1 node2 1.0
+ node2 node7 1.0
+ + **indexed:**
+ 1 2 1.0
+ 2 3 1.0
+ + 1 node1
+ 2 node2
+ 3 node7 + +#### Input +The supported input format is an edgelist: + + node1_id_int node2_id_int + or + node1_str node2_str , Please set the option "indexed" to false + + +#### Output +The output file (number of nodes)*numWalks random paths as follows: + + src_node_id_int node1_id_int node2_id_int ... noden_id_int + + +### Embedding random paths +Example: + + ./spark-submit --class com.navercorp.Main \ + ./node2vec_spark/target/node2vec-0.0.1-SNAPSHOT.jar \ + --cmd embedding --dim 50 --iter 20 \ + --input --nodePath --output + +#### Options +Invoke a command without arguments to list available arguments and their default values: + +``` +--cmd COMMAND + embedding. If you want to execute sequentially all functions: "randomwalk" and "embedding", input "node2vec". default "node2vec" +--input [INPUT] + Input random paths. The supported input format is an random paths: "src_node_id_int node1_id_int ... noden_id_int" +--output [OUTPUT] + word2vec model(.bin) and embeddings(.emb). +--nodePath [NODE\_PATH] + Input node2index path. The supported input format: "node1_str node1_id_int" +--iter ITERATION + Number of epochs in SGD. Default 10. +--dim DIMENSION + Number of dimensions. Default is 128. +--window WINDOW_SIZE + Context size for optimization. Default is 10. + +``` + +#### Input +The supported input format is an random paths: + + src_node_id_int node1_id_int ... noden_id_int + +#### Output +The output files are **embeddings and word2vec model.** The embeddings file has the following format: + + node1_str dim1 dim2 ... dimd + +where dim1, ... , dimd is the d-dimensional representation learned by word2vec. + +the output file *word2vec model* has the spark word2vec model format. please reference to https://spark.apache.org/docs/1.5.2/mllib-feature-extraction.html#word2vec + +## References +1. [node2vec: Scalable Feature Learning for Networks](http://arxiv.org/abs/1607.00653) +2. [Efficient Estimation of Word Representations in Vector Space](https://arxiv.org/abs/1301.3781) \ No newline at end of file diff --git a/node2vec_spark/pom.xml b/node2vec_spark/pom.xml new file mode 100644 index 0000000..b958576 --- /dev/null +++ b/node2vec_spark/pom.xml @@ -0,0 +1,129 @@ + + + + 4.0.0 + + com.navercorp + node2vec + jar + 0.0.1-SNAPSHOT + + node2vec_spark + http://snap.stanford.edu/node2vec/ + + + UTF-8 + bin + 2.4.3 + 1.4.0 + 1.7 + 2.10 + + + + + + org.scala-tools + maven-scala-plugin + 2.15.2 + + + + compile + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.4 + + + copy-dependencies + package + + copy-dependencies + + + ${project.build.directory}/lib + + + + + + org.apache.maven.plugins + maven-shade-plugin + 1.6 + + + package + + shade + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + UTF-8 + + + + org.apache.maven.plugins + maven-surefire-plugin + + false + + + + + + + + org.apache.hadoop + hadoop-hdfs + 2.7.1 + + + org.scala-lang + scala-library + ${scala.binary.version}.5 + provided + + + org.apache.spark + spark-core_${scala.binary.version} + 1.6.1 + provided + + + org.apache.spark + spark-mllib_${scala.binary.version} + 1.6.1 + provided + + + com.github.scopt + scopt_${scala.binary.version} + 3.3.0 + + + org.scala-lang + scala-library + + + + + com.google.guava + guava + 19.0 + + + + diff --git a/node2vec_spark/src/main/resources/log4j2.properties b/node2vec_spark/src/main/resources/log4j2.properties new file mode 100644 index 0000000..d941e1b --- /dev/null +++ b/node2vec_spark/src/main/resources/log4j2.properties @@ -0,0 +1,9 @@ + +appender.out.type = Console +appender.out.name = out +appender.out.layout.type = PatternLayout +appender.out.layout.pattern = [%30.30t] %-30.30c{1} %-5p %m%n +logger.springframework.name = org.springframework +logger.springframework.level = WARN +rootLogger.level = INFO +rootLogger.appenderRef.out.ref = out diff --git a/node2vec_spark/src/main/scala/com/navercorp/Main.scala b/node2vec_spark/src/main/scala/com/navercorp/Main.scala new file mode 100644 index 0000000..f3494e5 --- /dev/null +++ b/node2vec_spark/src/main/scala/com/navercorp/Main.scala @@ -0,0 +1,119 @@ +package com.navercorp + +import java.io.Serializable +import org.apache.spark.{SparkContext, SparkConf} +import scopt.OptionParser +import com.navercorp.lib.AbstractParams + +object Main { + object Command extends Enumeration { + type Command = Value + val node2vec, randomwalk, embedding = Value + } + import Command._ + + case class Params(iter: Int = 10, + lr: Double = 0.025, + numPartition: Int = 10, + dim: Int = 128, + window: Int = 10, + walkLength: Int = 80, + numWalks: Int = 10, + p: Double = 1.0, + q: Double = 1.0, + weighted: Boolean = true, + directed: Boolean = false, + degree: Int = 30, + indexed: Boolean = true, + nodePath: String = null, + input: String = null, + output: String = null, + cmd: Command = Command.node2vec) extends AbstractParams[Params] with Serializable + val defaultParams = Params() + + val parser = new OptionParser[Params]("Node2Vec_Spark") { + head("Main") + opt[Int]("walkLength") + .text(s"walkLength: ${defaultParams.walkLength}") + .action((x, c) => c.copy(walkLength = x)) + opt[Int]("numWalks") + .text(s"numWalks: ${defaultParams.numWalks}") + .action((x, c) => c.copy(numWalks = x)) + opt[Double]("p") + .text(s"return parameter p: ${defaultParams.p}") + .action((x, c) => c.copy(p = x)) + opt[Double]("q") + .text(s"in-out parameter q: ${defaultParams.q}") + .action((x, c) => c.copy(q = x)) + opt[Boolean]("weighted") + .text(s"weighted: ${defaultParams.weighted}") + .action((x, c) => c.copy(weighted = x)) + opt[Boolean]("directed") + .text(s"directed: ${defaultParams.directed}") + .action((x, c) => c.copy(directed = x)) + opt[Int]("degree") + .text(s"degree: ${defaultParams.degree}") + .action((x, c) => c.copy(degree = x)) + opt[Boolean]("indexed") + .text(s"Whether nodes are indexed or not: ${defaultParams.indexed}") + .action((x, c) => c.copy(indexed = x)) + opt[String]("nodePath") + .text("Input node2index file path: empty") + .action((x, c) => c.copy(nodePath = x)) + opt[String]("input") + .required() + .text("Input edge file path: empty") + .action((x, c) => c.copy(input = x)) + opt[String]("output") + .required() + .text("Output path: empty") + .action((x, c) => c.copy(output = x)) + opt[String]("cmd") + .required() + .text(s"command: ${defaultParams.cmd.toString}") + .action((x, c) => c.copy(cmd = Command.withName(x))) + note( + """ + |For example, the following command runs this app on a synthetic dataset: + | + | bin/spark-submit --class com.nhn.sunny.vegapunk.ml.model.Node2vec \ + """.stripMargin + + s"| --lr ${defaultParams.lr}" + + s"| --iter ${defaultParams.iter}" + + s"| --numPartition ${defaultParams.numPartition}" + + s"| --dim ${defaultParams.dim}" + + s"| --window ${defaultParams.window}" + + s"| --input " + + s"| --node " + + s"| --output " + ) + } + + def main(args: Array[String]) = { + parser.parse(args, defaultParams).map { param => + val conf = new SparkConf().setAppName("Node2Vec") + val context: SparkContext = new SparkContext(conf) + + Node2vec.setup(context, param) + + param.cmd match { + case Command.node2vec => Node2vec.load() + .initTransitionProb() + .randomWalk() + .embedding() + .save() + case Command.randomwalk => Node2vec.load() + .initTransitionProb() + .randomWalk() + .saveRandomPath() + case Command.embedding => { + val randomPaths = Word2vec.setup(context, param).read(param.input) + Word2vec.fit(randomPaths).save(param.output) + Node2vec.loadNode2Id(param.nodePath).saveVectors() + } + } + } getOrElse { + sys.exit(1) + } + } +} diff --git a/node2vec_spark/src/main/scala/com/navercorp/Node2vec.scala b/node2vec_spark/src/main/scala/com/navercorp/Node2vec.scala new file mode 100644 index 0000000..07ec21a --- /dev/null +++ b/node2vec_spark/src/main/scala/com/navercorp/Node2vec.scala @@ -0,0 +1,281 @@ +package com.navercorp + + +import java.io.Serializable +import scala.util.Try +import scala.collection.mutable.ArrayBuffer +import org.slf4j.{Logger, LoggerFactory} +import org.apache.spark.SparkContext +import org.apache.spark.rdd.RDD +import org.apache.spark.graphx.{EdgeTriplet, Graph, _} +import com.navercorp.graph.{GraphOps, EdgeAttr, NodeAttr} + +object Node2vec extends Serializable { + lazy val logger: Logger = LoggerFactory.getLogger(getClass.getName); + + var context: SparkContext = null + var config: Main.Params = null + var node2id: RDD[(String, Long)] = null + var indexedEdges: RDD[Edge[EdgeAttr]] = _ + var indexedNodes: RDD[(VertexId, NodeAttr)] = _ + var graph: Graph[NodeAttr, EdgeAttr] = _ + var randomWalkPaths: RDD[(Long, ArrayBuffer[Long])] = null + + def setup(context: SparkContext, param: Main.Params): this.type = { + this.context = context + this.config = param + + this + } + + def load(): this.type = { + val bcMaxDegree = context.broadcast(config.degree) + val bcEdgeCreator = config.directed match { + case true => context.broadcast(GraphOps.createDirectedEdge) + case false => context.broadcast(GraphOps.createUndirectedEdge) + } + + val inputTriplets: RDD[(Long, Long, Double)] = config.indexed match { + case true => readIndexedGraph(config.input) + case false => indexingGraph(config.input) + } + + indexedNodes = inputTriplets.flatMap { case (srcId, dstId, weight) => + bcEdgeCreator.value.apply(srcId, dstId, weight) + }.reduceByKey(_++_).map { case (nodeId, neighbors: Array[(VertexId, Double)]) => + var neighbors_ = neighbors + if (neighbors_.length > bcMaxDegree.value) { + neighbors_ = neighbors.sortWith{ case (left, right) => left._2 > right._2 }.slice(0, bcMaxDegree.value) + } + + (nodeId, NodeAttr(neighbors = neighbors_.distinct)) + }.repartition(200).cache + + indexedEdges = indexedNodes.flatMap { case (srcId, clickNode) => + clickNode.neighbors.map { case (dstId, weight) => + Edge(srcId, dstId, EdgeAttr()) + } + }.repartition(200).cache + + this + } + + def initTransitionProb(): this.type = { + val bcP = context.broadcast(config.p) + val bcQ = context.broadcast(config.q) + + graph = Graph(indexedNodes, indexedEdges) + .mapVertices[NodeAttr] { case (vertexId, clickNode) => + val (j, q) = GraphOps.setupAlias(clickNode.neighbors) + val nextNodeIndex = GraphOps.drawAlias(j, q) + clickNode.path = Array(vertexId, clickNode.neighbors(nextNodeIndex)._1) + + clickNode + } + .mapTriplets { edgeTriplet: EdgeTriplet[NodeAttr, EdgeAttr] => + val (j, q) = GraphOps.setupEdgeAlias(bcP.value, bcQ.value)(edgeTriplet.srcId, edgeTriplet.srcAttr.neighbors, edgeTriplet.dstAttr.neighbors) + edgeTriplet.attr.J = j + edgeTriplet.attr.q = q + edgeTriplet.attr.dstNeighbors = edgeTriplet.dstAttr.neighbors.map(_._1) + + edgeTriplet.attr + }.cache + + this + } + + def randomWalk(): this.type = { + val edge2attr = graph.triplets.map { edgeTriplet => + (s"${edgeTriplet.srcId}${edgeTriplet.dstId}", edgeTriplet.attr) + }.repartition(200).cache + edge2attr.first + + for (iter <- 0 until config.numWalks) { + var prevWalk: RDD[(Long, ArrayBuffer[Long])] = null + var randomWalk = graph.vertices.map { case (nodeId, clickNode) => + val pathBuffer = new ArrayBuffer[Long]() + pathBuffer.append(clickNode.path:_*) + (nodeId, pathBuffer) + }.cache + var activeWalks = randomWalk.first + graph.unpersist(blocking = false) + graph.edges.unpersist(blocking = false) + for (walkCount <- 0 until config.walkLength) { + prevWalk = randomWalk + randomWalk = randomWalk.map { case (srcNodeId, pathBuffer) => + val prevNodeId = pathBuffer(pathBuffer.length - 2) + val currentNodeId = pathBuffer.last + + (s"$prevNodeId$currentNodeId", (srcNodeId, pathBuffer)) + }.join(edge2attr).map { case (edge, ((srcNodeId, pathBuffer), attr)) => + try { + val nextNodeIndex = GraphOps.drawAlias(attr.J, attr.q) + val nextNodeId = attr.dstNeighbors(nextNodeIndex) + pathBuffer.append(nextNodeId) + + (srcNodeId, pathBuffer) + } catch { + case e: Exception => throw new RuntimeException(e.getMessage) + } + }.cache + + activeWalks = randomWalk.first() + prevWalk.unpersist(blocking=false) + } + + + if (randomWalkPaths != null) { + val prevRandomWalkPaths = randomWalkPaths + randomWalkPaths = randomWalkPaths.union(randomWalk).cache() + randomWalkPaths.first + prevRandomWalkPaths.unpersist(blocking = false) + } else { + randomWalkPaths = randomWalk + } + } + + this + } + + def embedding(): this.type = { + val randomPaths = randomWalkPaths.map { case (vertexId, pathBuffer) => + Try(pathBuffer.map(_.toString).toIterable).getOrElse(null) + }.filter(_!=null) + + Word2vec.setup(context, config).fit(randomPaths) + + this + } + + def save(): this.type = { + this.saveRandomPath() + .saveModel() + .saveVectors() + } + + def saveRandomPath(): this.type = { + randomWalkPaths + .map { case (vertexId, pathBuffer) => + Try(pathBuffer.mkString("\t")).getOrElse(null) + } + .filter(x => x != null && x.replaceAll("\\s", "").length > 0) + .repartition(200) + .saveAsTextFile(config.output) + + this + } + + def saveModel(): this.type = { + Word2vec.save(config.output) + + this + } + + def saveVectors(): this.type = { + val node2vector = context.parallelize(Word2vec.getVectors.toList) + .map { case (nodeId, vector) => + (nodeId.toLong, vector.mkString(",")) + } + + if (this.node2id != null) { + val id2Node = this.node2id.map{ case (strNode, index) => + (index, strNode) + } + + node2vector.join(id2Node) + .map { case (nodeId, (vector, name)) => s"$name\t$vector" } + .repartition(200) + .saveAsTextFile(s"${config.output}.emb") + } else { + node2vector.map { case (nodeId, vector) => s"$nodeId\t$vector" } + .repartition(200) + .saveAsTextFile(s"${config.output}.emb") + } + + this + } + + def cleanup(): this.type = { + node2id.unpersist(blocking = false) + indexedEdges.unpersist(blocking = false) + indexedNodes.unpersist(blocking = false) + graph.unpersist(blocking = false) + randomWalkPaths.unpersist(blocking = false) + + this + } + + def loadNode2Id(node2idPath: String): this.type = { + try { + this.node2id = context.textFile(config.nodePath).map { node2index => + val Array(strNode, index) = node2index.split("\\s") + (strNode, index.toLong) + } + } catch { + case e: Exception => logger.info("Failed to read node2index file.") + this.node2id = null + } + + this + } + + def readIndexedGraph(tripletPath: String) = { + val bcWeighted = context.broadcast(config.weighted) + + val rawTriplets = context.textFile(tripletPath) + if (config.nodePath == null) { + this.node2id = createNode2Id(rawTriplets.map { triplet => + val parts = triplet.split("\\s") + (parts.head, parts(1), -1) + }) + } else { + loadNode2Id(config.nodePath) + } + + rawTriplets.map { triplet => + val parts = triplet.split("\\s") + val weight = bcWeighted.value match { + case true => Try(parts.last.toDouble).getOrElse(1.0) + case false => 1.0 + } + + (parts.head.toLong, parts(1).toLong, weight) + } + } + + + def indexingGraph(rawTripletPath: String): RDD[(Long, Long, Double)] = { + val rawEdges = context.textFile(rawTripletPath).map { triplet => + val parts = triplet.split("\\s") + + Try { + (parts.head, parts(1), Try(parts.last.toDouble).getOrElse(1.0)) + }.getOrElse(null) + }.filter(_!=null) + + this.node2id = createNode2Id(rawEdges) + + rawEdges.map { case (src, dst, weight) => + (src, (dst, weight)) + }.join(node2id).map { case (src, (edge: (String, Double), srcIndex: Long)) => + try { + val (dst: String, weight: Double) = edge + (dst, (srcIndex, weight)) + } catch { + case e: Exception => null + } + }.filter(_!=null).join(node2id).map { case (dst, (edge: (Long, Double), dstIndex: Long)) => + try { + val (srcIndex, weight) = edge + (srcIndex, dstIndex, weight) + } catch { + case e: Exception => null + } + }.filter(_!=null) + } + + def createNode2Id[T <: Any](triplets: RDD[(String, String, T)]) = triplets.flatMap { case (src, dst, weight) => + Try(Array(src, dst)).getOrElse(Array.empty[String]) + }.distinct().zipWithIndex() + +} diff --git a/node2vec_spark/src/main/scala/com/navercorp/Word2vec.scala b/node2vec_spark/src/main/scala/com/navercorp/Word2vec.scala new file mode 100644 index 0000000..aa209cf --- /dev/null +++ b/node2vec_spark/src/main/scala/com/navercorp/Word2vec.scala @@ -0,0 +1,55 @@ +package com.navercorp + +import org.apache.spark.SparkContext +import org.apache.spark.mllib.feature.{Word2Vec, Word2VecModel} +import org.apache.spark.rdd.RDD + +object Word2vec extends Serializable { + var context: SparkContext = null + var word2vec = new Word2Vec() + var model: Word2VecModel = null + + def setup(context: SparkContext, param: Main.Params): this.type = { + this.context = context + /** + * model = sg + * update = hs + */ + word2vec.setLearningRate(param.lr) + .setNumIterations(param.iter) + .setNumPartitions(param.numPartition) + .setMinCount(0) + .setVectorSize(param.dim) + + val word2vecWindowField = word2vec.getClass.getDeclaredField("org$apache$spark$mllib$feature$Word2Vec$$window") + word2vecWindowField.setAccessible(true) + word2vecWindowField.setInt(word2vec, param.window) + + this + } + + def read(path: String): RDD[Iterable[String]] = { + context.textFile(path).repartition(200).map(_.split("\\s").toSeq) + } + + def fit(input: RDD[Iterable[String]]): this.type = { + model = word2vec.fit(input) + + this + } + + def save(outputPath: String): this.type = { + model.save(context, s"$outputPath.bin") + this + } + + def load(path: String): this.type = { + model = Word2VecModel.load(context, path) + + this + } + + def getVectors = this.model.getVectors + +} + diff --git a/node2vec_spark/src/main/scala/com/navercorp/graph/GraphOps.scala b/node2vec_spark/src/main/scala/com/navercorp/graph/GraphOps.scala new file mode 100644 index 0000000..960fa8c --- /dev/null +++ b/node2vec_spark/src/main/scala/com/navercorp/graph/GraphOps.scala @@ -0,0 +1,69 @@ +package com.navercorp.graph + +import scala.collection.mutable.ArrayBuffer + +object GraphOps { + def setupAlias(nodeWeights: Array[(Long, Double)]): (Array[Int], Array[Double]) = { + val K = nodeWeights.length + val J = Array.fill(K)(0) + val q = Array.fill(K)(0.0) + + val smaller = new ArrayBuffer[Int]() + val larger = new ArrayBuffer[Int]() + + val sum = nodeWeights.map(_._2).sum + nodeWeights.zipWithIndex.foreach { case ((nodeId, weight), i) => + q(i) = K * weight / sum + if (q(i) < 1.0) { + smaller.append(i) + } else { + larger.append(i) + } + } + + while (smaller.nonEmpty && larger.nonEmpty) { + val small = smaller.remove(smaller.length - 1) + val large = larger.remove(larger.length - 1) + + J(small) = large + q(large) = q(large) + q(small) - 1.0 + if (q(large) < 1.0) smaller.append(large) + else larger.append(large) + } + + (J, q) + } + + def setupEdgeAlias(p: Double = 1.0, q: Double = 1.0)(srcId: Long, srcNeighbors: Array[(Long, Double)], dstNeighbors: Array[(Long, Double)]): (Array[Int], Array[Double]) = { + val neighbors_ = dstNeighbors.map { case (dstNeighborId, weight) => + var unnormProb = weight / q + if (srcId == dstNeighborId) unnormProb = weight / p + else if (srcNeighbors.exists(_._1 == dstNeighborId)) unnormProb = weight + + (dstNeighborId, unnormProb) + } + + setupAlias(neighbors_) + } + + def drawAlias(J: Array[Int], q: Array[Double]): Int = { + val K = J.length + val kk = math.floor(math.random * K).toInt + + if (math.random < q(kk)) kk + else J(kk) + } + + lazy val createUndirectedEdge = (srcId: Long, dstId: Long, weight: Double) => { + Array( + (srcId, Array((dstId, weight))), + (dstId, Array((srcId, weight))) + ) + } + + lazy val createDirectedEdge = (srcId: Long, dstId: Long, weight: Double) => { + Array( + (srcId, Array((dstId, weight))) + ) + } +} diff --git a/node2vec_spark/src/main/scala/com/navercorp/graph/package.scala b/node2vec_spark/src/main/scala/com/navercorp/graph/package.scala new file mode 100644 index 0000000..1b83969 --- /dev/null +++ b/node2vec_spark/src/main/scala/com/navercorp/graph/package.scala @@ -0,0 +1,12 @@ +package com.navercorp + +import java.io.Serializable + +package object graph { + case class NodeAttr(var neighbors: Array[(Long, Double)] = Array.empty[(Long, Double)], + var path: Array[Long] = Array.empty[Long]) extends Serializable + + case class EdgeAttr(var dstNeighbors: Array[Long] = Array.empty[Long], + var J: Array[Int] = Array.empty[Int], + var q: Array[Double] = Array.empty[Double]) extends Serializable +} diff --git a/node2vec_spark/src/main/scala/com/navercorp/lib/AbstractParams.scala b/node2vec_spark/src/main/scala/com/navercorp/lib/AbstractParams.scala new file mode 100644 index 0000000..0790ab9 --- /dev/null +++ b/node2vec_spark/src/main/scala/com/navercorp/lib/AbstractParams.scala @@ -0,0 +1,53 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.navercorp.lib + +import scala.reflect.runtime.universe._ + +/** + * Abstract class for parameter case classes. + * This overrides the [[toString]] method to print all case class fields by name and value. + * @tparam T Concrete parameter class. + */ +abstract class AbstractParams[T: TypeTag] { + + private def tag: TypeTag[T] = typeTag[T] + + /** + * Finds all case class fields in concrete class instance, and outputs them in JSON-style format: + * { + * [field name]:\t[field value]\n + * [field name]:\t[field value]\n + * ... + * } + */ + override def toString: String = { + val tpe = tag.tpe + val allAccessors = tpe.declarations.collect { + case m: MethodSymbol if m.isCaseAccessor => m + } + val mirror = runtimeMirror(getClass.getClassLoader) + val instanceMirror = mirror.reflect(this) + allAccessors.map { f => + val paramName = f.name.toString + val fieldMirror = instanceMirror.reflectField(f) + val paramValue = fieldMirror.get + s" $paramName:\t$paramValue" + }.mkString("{\n", ",\n", "\n}") + } +} \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..faa710c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +networkx==1.11 +numpy==1.11.2 +gensim==0.13.3 diff --git a/src/main.py b/src/main.py index 7caa4e5..82ac735 100644 --- a/src/main.py +++ b/src/main.py @@ -30,11 +30,11 @@ def parse_args(): parser.add_argument('--dimensions', type=int, default=128, help='Number of dimensions. Default is 128.') - parser.add_argument('--walk-length', type=int, default=10, - help='Length of walk per source. Default is 10.') + parser.add_argument('--walk-length', type=int, default=80, + help='Length of walk per source. Default is 80.') parser.add_argument('--num-walks', type=int, default=10, - help='Number of walks per source. Default is 40.') + help='Number of walks per source. Default is 10.') parser.add_argument('--window-size', type=int, default=10, help='Context size for optimization. Default is 10.') @@ -99,9 +99,6 @@ def main(args): walks = G.simulate_walks(args.num_walks, args.walk_length) learn_embeddings(walks) -args = parse_args() -main(args) - - - - +if __name__ == "__main__": + args = parse_args() + main(args)