diff --git a/src/dcaiti_control/CMakeLists.txt b/src/dcaiti_control/CMakeLists.txt index abe6f7e..96da4cb 100644 --- a/src/dcaiti_control/CMakeLists.txt +++ b/src/dcaiti_control/CMakeLists.txt @@ -33,7 +33,7 @@ if(BUILD_TESTING) endif() install( - DIRECTORY config description launch worlds + DIRECTORY config description launch worlds tracks DESTINATION share/${PROJECT_NAME} ) diff --git a/src/dcaiti_control/description/assets/blue_cone.dae b/src/dcaiti_control/description/assets/blue_cone.dae new file mode 100644 index 0000000..401b585 --- /dev/null +++ b/src/dcaiti_control/description/assets/blue_cone.dae @@ -0,0 +1,326 @@ + + + + + Blender User + Blender 3.3.11 commit date:2023-09-21, commit time:06:07, hash:6a3240da1dc8 + + 2023-10-29T19:28:02 + 2023-10-29T19:28:02 + + Z_UP + + + + + + + 39.59775 + 1.777778 + 0.1 + 100 + + + + + + 0 + 0 + 10 + + + + + + + + 39.59775 + 1.777778 + 0.1 + 100 + + + + + + 0 + 0 + 10 + + + + + + + + 39.59775 + 1.777778 + 0.1 + 100 + + + + + + 0 + 0 + 10 + + + + + + + + + 1000 1000 1000 + 1 + 0 + 0.00111109 + + + + + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1000 + 29.99998 + 75 + 0.15 + 0 + 1 + 2 + 0.04999995 + 30.002 + 1 + 3 + 2880 + 3 + 1 + 1 + 0.1 + 0.1 + 1 + + + + + + + 1000 1000 1000 + 1 + 0 + 0.00111109 + + + + + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1000 + 29.99998 + 75 + 0.15 + 0 + 1 + 2 + 0.04999995 + 30.002 + 1 + 3 + 2880 + 3 + 1 + 1 + 0.1 + 0.1 + 1 + + + + + + + 1000 1000 1000 + 1 + 0 + 0.00111109 + + + + + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 1000 + 29.99998 + 75 + 0.15 + 0 + 1 + 2 + 0.04999995 + 30.002 + 1 + 3 + 2880 + 3 + 1 + 1 + 0.1 + 0.1 + 1 + + + + + + + + + + + 0 0 0 1 + + + 0.04249268 0.02488011 0.8000007 1 + + + 1.45 + + + + + + + + + + + 0 0 0 1 + + + 1 1 1 1 + + + 1.45 + + + + + + + + + + + + + + + + + + + + -56.327 4.32448 127 -74.8325 5.00945 29 -56.4928 0 127 -75 0 29 -74.8325 -5.00945 29 -74.3308 9.99652 29 -55.8307 8.62359 127 -73.4971 14.9389 29 -55.0068 12.8721 127 -72.3352 19.8147 29 -53.86 17.045 127 -70.8502 24.6019 29 -52.3972 21.118 127 -69.0487 29.2792 29 -50.6269 25.067 127 -66.9389 33.8258 29 -48.5595 28.8689 127 -64.5301 38.2212 29 -61.8331 42.446 29 -46.2071 32.5014 127 -58.86 46.4812 29 -43.5836 35.9431 127 -55.6239 50.3089 29 -40.7043 39.1739 127 -52.1394 53.9118 29 -37.5861 42.1749 127 -48.4221 57.2739 29 -34.2474 44.9283 127 -44.4885 60.3803 29 -30.7077 47.4181 127 -40.3562 63.2169 29 -26.9877 49.6296 127 -36.0436 65.7712 29 -31.5701 68.0318 29 -23.1094 51.5499 127 -26.9556 69.9885 29 -19.0955 53.1676 127 -22.2207 71.6327 29 -14.9695 54.4734 127 -17.3865 72.9569 29 -10.7557 55.4595 127 -12.4747 73.9553 29 -7.50718 74.6233 29 -2.50612 74.9581 29 2.159861 56.32713 127 2.50612 74.9581 29 7.50718 74.6233 29 12.4747 73.9553 29 10.7557 55.4595 127 17.3865 72.9569 29 14.9695 54.4734 127 22.2207 71.6327 29 19.0955 53.1676 127 26.9556 69.9885 29 23.1094 51.5499 127 31.5701 68.0318 29 26.9877 49.6296 127 36.0436 65.7712 29 40.3562 63.2169 29 30.7077 47.4181 127 44.4885 60.3803 29 34.2474 44.9283 127 48.4221 57.2739 29 37.5861 42.1749 127 52.1394 53.9118 29 40.7043 39.1739 127 55.6239 50.3089 29 43.5836 35.9431 127 58.86 46.4812 29 46.2071 32.5014 127 61.8331 42.446 29 48.5595 28.8689 127 64.5301 38.2212 29 66.9389 33.8258 29 50.6269 25.067 127 69.0487 29.2792 29 52.3972 21.118 127 70.8502 24.6019 29 53.86 17.045 127 72.3352 19.8147 29 55.0068 12.8721 127 73.4971 14.9389 29 55.8307 8.62359 127 74.3308 9.99652 29 56.327 4.32448 127 74.8325 5.00945 29 56.4928 0 127 75 0 29 74.8325 -5.00945 29 56.327 -4.32448 127 74.3308 -9.99652 29 55.8307 -8.62359 127 73.4971 -14.9389 29 55.0068 -12.8721 127 72.3352 -19.8147 29 53.86 -17.045 127 70.8502 -24.6019 29 52.3972 -21.118 127 69.0487 -29.2792 29 50.6269 -25.067 127 66.9389 -33.8258 29 48.5595 -28.8689 127 64.5301 -38.2212 29 61.8331 -42.446 29 46.2071 -32.5014 127 58.86 -46.4812 29 43.5836 -35.9431 127 55.6239 -50.3089 29 40.7043 -39.1739 127 52.1394 -53.9118 29 37.5861 -42.1749 127 48.4221 -57.2739 29 34.2474 -44.9283 127 44.4885 -60.3803 29 30.7077 -47.4181 127 40.3562 -63.2169 29 26.9877 -49.6296 127 36.0436 -65.7712 29 31.5701 -68.0318 29 23.1094 -51.5499 127 26.9556 -69.9885 29 19.0955 -53.1676 127 22.2207 -71.6327 29 14.9695 -54.4734 127 17.3865 -72.9569 29 10.7557 -55.4595 127 12.4747 -73.9553 29 7.50718 -74.6233 29 2.50612 -74.9581 29 -2.159861 -56.32713 127 -2.50612 -74.9581 29 -7.50718 -74.6233 29 -12.4747 -73.9553 29 -10.7557 -55.4595 127 -17.3865 -72.9569 29 -14.9695 -54.4734 127 -22.2207 -71.6327 29 -19.0955 -53.1676 127 -26.9556 -69.9885 29 -23.1094 -51.5499 127 -31.5701 -68.0318 29 -26.9877 -49.6296 127 -36.0436 -65.7712 29 -40.3562 -63.2169 29 -30.7077 -47.4181 127 -44.4885 -60.3803 29 -34.2474 -44.9283 127 -48.4221 -57.2739 29 -37.5861 -42.1749 127 -52.1394 -53.9118 29 -40.7043 -39.1739 127 -55.6239 -50.3089 29 -43.5836 -35.9431 127 -58.86 -46.4812 29 -46.2071 -32.5014 127 -61.8331 -42.446 29 -48.5595 -28.8689 127 -64.5301 -38.2212 29 -66.9389 -33.8258 29 -50.6269 -25.067 127 -69.0487 -29.2792 29 -52.3972 -21.118 127 -70.8502 -24.6019 29 -53.86 -17.045 127 -72.3352 -19.8147 29 -55.0068 -12.8721 127 -73.4971 -14.9389 29 -55.8307 -8.62359 127 -74.3308 -9.99652 29 -56.327 -4.32448 127 -113.334 6.14477 29 -113.5 0 29 -113.5 0 4 -113.334 -6.14477 29 -113.417 -6.145891 4 -112.835 -12.2715 29 -113.0904 -12.28164 4 -112.005 -18.3623 29 -112.005 -18.3623 4 -110.846 -24.3991 29 -110.846 -24.3991 4 -109.363 -30.3645 29 -109.363 -30.3645 4 -107.559 -36.2407 29 -107.559 -36.2407 4 -105.439 -42.0107 29 -105.439 -42.0107 4 -103.01 -47.6574 29 -103.01 -47.6574 4 -100.279 -53.1644 29 -100.279 -53.1644 4 -97.2533 -58.5154 29 -97.2533 -58.5154 4 -93.9427 -63.6947 29 -93.9427 -63.6947 4 -90.3566 -68.6873 29 -90.3566 -68.6873 4 -86.5054 -73.4783 29 -86.5054 -73.4783 4 -82.4005 -78.0539 29 -82.4005 -78.0539 4 -78.0539 -82.4005 29 -78.0539 -82.4005 4 -73.4783 -86.5054 29 -73.4783 -86.5054 4 -68.6873 -90.3566 29 -68.6873 -90.3566 4 -63.6947 -93.9427 29 -63.6947 -93.9427 4 -58.5154 -97.2533 29 -58.5154 -97.2533 4 -53.1644 -100.279 29 -53.1644 -100.279 4 -47.6574 -103.01 29 -47.6574 -103.01 4 -42.0107 -105.439 29 -42.0107 -105.439 4 -36.2407 -107.559 29 -36.2407 -107.559 4 -30.3645 -109.363 29 -30.3645 -109.363 4 -24.3991 -110.846 29 -24.3991 -110.846 4 -18.3623 -112.005 29 -18.3623 -112.005 4 -12.2715 -112.835 29 -6.14477 -113.334 29 0 -113.5 29 0 -113.5 4 6.14477 -113.334 29 6.145891 -113.417 4 12.2715 -112.835 29 18.3623 -112.005 29 18.3623 -112.005 4 24.3991 -110.846 29 24.3991 -110.846 4 30.3645 -109.363 29 30.3645 -109.363 4 36.2407 -107.559 29 36.2407 -107.559 4 42.0107 -105.439 29 42.0107 -105.439 4 47.6574 -103.01 29 47.6574 -103.01 4 53.1644 -100.279 29 53.1644 -100.279 4 58.5154 -97.2533 29 58.5154 -97.2533 4 63.6947 -93.9427 29 63.6947 -93.9427 4 68.6873 -90.3566 29 68.6873 -90.3566 4 73.4783 -86.5054 29 73.4783 -86.5054 4 78.0539 -82.4005 29 78.0539 -82.4005 4 82.4005 -78.0539 29 82.4005 -78.0539 4 86.5054 -73.4783 29 86.5054 -73.4783 4 90.3566 -68.6873 29 90.3566 -68.6873 4 93.9427 -63.6947 29 93.9427 -63.6947 4 97.2533 -58.5154 29 97.2533 -58.5154 4 100.279 -53.1644 29 100.279 -53.1644 4 103.01 -47.6574 29 103.01 -47.6574 4 105.439 -42.0107 29 105.439 -42.0107 4 107.559 -36.2407 29 107.559 -36.2407 4 109.363 -30.3645 29 109.363 -30.3645 4 110.846 -24.3991 29 110.846 -24.3991 4 112.005 -18.3623 29 112.005 -18.3623 4 112.835 -12.2715 29 113.334 -6.14477 29 113.5 0 29 113.5 0 4 113.334 6.14477 29 112.835 12.2715 29 113.0904 12.28164 4 112.005 18.3623 29 112.005 18.3623 4 110.846 24.3991 29 110.846 24.3991 4 109.363 30.3645 29 109.363 30.3645 4 107.559 36.2407 29 107.559 36.2407 4 105.439 42.0107 29 105.439 42.0107 4 103.01 47.6574 29 103.01 47.6574 4 100.279 53.1644 29 100.279 53.1644 4 97.2533 58.5154 29 97.2533 58.5154 4 93.9427 63.6947 29 93.9427 63.6947 4 90.3566 68.6873 29 90.3566 68.6873 4 86.5054 73.4783 29 86.5054 73.4783 4 82.4005 78.0539 29 82.4005 78.0539 4 78.0539 82.4005 29 78.0539 82.4005 4 73.4783 86.5054 29 73.4783 86.5054 4 68.6873 90.3566 29 68.6873 90.3566 4 63.6947 93.9427 29 63.6947 93.9427 4 58.5154 97.2533 29 58.5154 97.2533 4 53.1644 100.279 29 53.1644 100.279 4 47.6574 103.01 29 47.6574 103.01 4 42.0107 105.439 29 42.0107 105.439 4 36.2407 107.559 29 36.2407 107.559 4 30.3645 109.363 29 30.3645 109.363 4 24.3991 110.846 29 24.3991 110.846 4 18.3623 112.005 29 18.3623 112.005 4 12.2715 112.835 29 6.14477 113.334 29 6.144692 113.417 4 0 113.5 29 0 113.5 4 -6.14477 113.334 29 -6.145891 113.417 4 -12.2715 112.835 29 -12.28164 113.0904 4 -18.3623 112.005 29 -18.3623 112.005 4 -24.3991 110.846 29 -24.3991 110.846 4 -30.3645 109.363 29 -30.3645 109.363 4 -36.2407 107.559 29 -36.2407 107.559 4 -42.0107 105.439 29 -42.0107 105.439 4 -47.6574 103.01 29 -47.6574 103.01 4 -53.1644 100.279 29 -53.1644 100.279 4 -58.5154 97.2533 29 -58.5154 97.2533 4 -63.6947 93.9427 29 -63.6947 93.9427 4 -68.6873 90.3566 29 -68.6873 90.3566 4 -73.4783 86.5054 29 -73.4783 86.5054 4 -78.0539 82.4005 29 -78.0539 82.4005 4 -82.4005 78.0539 29 -82.4005 78.0539 4 -86.5054 73.4783 29 -86.5054 73.4783 4 -90.3566 68.6873 29 -90.3566 68.6873 4 -93.9427 63.6947 29 -93.9427 63.6947 4 -97.2533 58.5154 29 -97.2533 58.5154 4 -100.279 53.1644 29 -100.279 53.1644 4 -103.01 47.6574 29 -103.01 47.6574 4 -105.439 42.0107 29 -105.439 42.0107 4 -107.559 36.2407 29 -107.559 36.2407 4 -109.363 30.3645 29 -109.363 30.3645 4 -110.846 24.3991 29 -110.846 24.3991 4 -112.005 18.3623 29 -112.005 18.3623 4 -112.835 12.2715 29 -113.5 93.5 4 -113.354 95.9107 4 -112.919 98.2863 4 -112.2 100.592 4 -111.209 102.794 4 -109.96 104.861 4 -108.47 106.762 4 -106.762 108.47 4 -104.861 109.96 4 -102.794 111.209 4 -100.592 112.2 4 -98.2863 112.919 4 -95.9107 113.354 4 -93.5 113.5 4 93.5 113.5 4 95.9107 113.354 4 98.2863 112.919 4 100.592 112.2 4 102.794 111.209 4 104.861 109.96 4 106.762 108.47 4 108.47 106.762 4 109.96 104.861 4 111.209 102.794 4 112.2 100.592 4 112.919 98.2863 4 113.354 95.9107 4 113.5 93.5 4 113.5 -93.5 4 113.354 -95.9107 4 112.919 -98.2863 4 112.2 -100.592 4 111.209 -102.794 4 109.96 -104.861 4 108.47 -106.762 4 106.762 -108.47 4 104.861 -109.96 4 102.794 -111.209 4 100.592 -112.2 4 98.2863 -112.919 4 95.9107 -113.354 4 93.5 -113.5 4 -93.5 -113.5 4 -95.9107 -113.354 4 -98.2863 -112.919 4 -100.592 -112.2 4 -102.794 -111.209 4 -104.861 -109.96 4 -106.762 -108.47 4 -108.47 -106.762 4 -109.96 -104.861 4 -111.209 -102.794 4 -112.2 -100.592 4 -112.919 -98.2863 4 -113.354 -95.9107 4 -113.5 -93.5 4 -93.5 113.5 0 93.5 113.5 0 98.25135 112.7772 0 102.6746 110.9437 0 106.762 108.47 0 108.47 106.762 0 109.96 104.861 0 111.209 102.794 0 112.2 100.592 0 112.919 98.2863 0 113.354 95.9107 0 113.5 93.5 0 113.5 -93.5 0 112.7772 -98.25135 0 110.9437 -102.6746 0 108.47 -106.762 0 106.762 -108.47 0 104.861 -109.96 0 102.794 -111.209 0 100.592 -112.2 0 98.2863 -112.919 0 95.9107 -113.354 0 93.5 -113.5 0 -93.5 -113.5 0 -95.9107 -113.354 0 -98.2863 -112.919 0 -100.592 -112.2 0 -102.794 -111.209 0 -104.861 -109.96 0 -106.762 -108.47 0 -108.47 -106.762 0 -109.62 -104.7437 0 -111.9872 -100.5463 0 -113.2815 -95.90411 0 -113.5 -93.5 0 -113.5 93.5 0 -113.354 95.9107 0 -112.919 98.2863 0 -112.2 100.592 0 -111.209 102.794 0 -109.96 104.861 0 -108.47 106.762 0 -106.762 108.47 0 -104.861 109.96 0 -102.7164 110.9307 0 -98.26436 112.7749 0 -95.90411 113.2815 0 -39.5208 3.60877 216 -39.6853 0 216 39.6441 -1.80626 216 -39.5208 -3.60877 216 39.3156 -5.40381 216 -39.0289 -7.18764 216 38.6613 -8.956583 216 -38.2136 -10.707 216 37.6867 -12.4351 216 -37.0817 -14.1375 216 36.3998 -15.8106 216 -35.6424 -17.451 216 34.8112 -19.0551 216 -33.9078 -20.6198 216 32.9342 -22.1418 216 -31.8923 -23.6178 216 30.7843 -25.0449 216 -29.6125 -26.4201 216 28.3793 -27.7405 216 -27.0873 -29.0034 216 25.7391 -30.2062 216 -24.3376 -31.3464 216 22.8857 -32.4217 216 -21.3863 -33.4297 216 19.8426 -34.3684 216 -18.2578 -35.2359 216 16.6351 -36.0304 216 -14.978 -36.7502 216 13.2898 -37.3939 216 -11.574 -37.96 216 9.83431 -38.4474 216 -8.0742 -38.8552 216 6.260047 -38.85602 216 2.697 -39.42866 216 -0.903364 -39.59273 216 39.6441 1.80626 216 -4.50746 39.4284 216 -8.0742 38.8552 216 -11.574 37.96 216 34.8112 19.0551 216 32.9342 22.1418 216 30.7843 25.0449 216 28.3793 27.7405 216 25.7391 30.2062 216 22.8857 32.4217 216 19.8426 34.3684 216 16.6351 36.0304 216 13.2898 37.3939 216 9.83431 38.4474 216 6.29736 39.1824 216 2.70822 39.5927 216 -0.903363 39.675 216 -14.978 36.7502 216 -18.2578 35.2359 216 -21.3863 33.4297 216 -24.3376 31.3464 216 -27.0873 29.0034 216 -29.6125 26.4201 216 -31.8923 23.6178 216 -33.9078 20.6198 216 -35.6424 17.451 216 -37.0817 14.1375 216 -38.2136 10.707 216 -39.0289 7.18764 216 -22.3359 2.71208 307 -31.0604 1.41517 261.5 -22.5 0 307 -31.0604 -1.41517 261.5 -22.3359 -2.71208 307 -30.803 -4.23378 261.5 -21.8462 -5.3846 307 -30.2904 -7.01731 261.5 -29.5268 -9.742691 261.5 -30.803 4.23378 261.5 -21.8462 5.3846 307 -30.2904 7.01731 261.5 -29.5268 9.742691 261.5 -28.5185 12.3873 261.5 -27.2739 14.9293 261.5 -25.8033 17.3476 261.5 -24.1189 19.6222 261.5 -22.2346 21.7341 261.5 -20.1661 23.666 261.5 -17.9305 25.4017 261.5 -15.5463 26.927 261.5 -13.0333 28.2291 261.5 -10.4123 29.2974 261.5 -7.70499 30.1228 261.5 -4.93386 30.6987 261.5 -2.12184 31.0201 261.5 0.707768 31.0846 261.5 3.53151 30.8914 261.5 6.32598 30.4423 261.5 9.06804 29.7409 261.5 11.735 28.7931 261.5 14.3046 27.6067 261.5 16.7558 26.1915 261.5 19.0681 24.5593 261.5 21.2224 22.7236 261.5 23.2008 20.6996 261.5 24.987 18.5041 261.5 26.5661 16.1552 261.5 27.9251 13.6725 261.5 29.0528 11.0765 261.5 29.9396 8.38869 261.5 30.5784 5.63138 261.5 30.9638 2.8274 261.5 31.0926 0 261.5 30.9638 -2.8274 261.5 30.5784 -5.63138 261.5 29.9396 -8.38869 261.5 29.0528 -11.0765 261.5 27.9251 -13.6725 261.5 26.5661 -16.1552 261.5 24.987 -18.5041 261.5 23.2008 -20.6996 261.5 21.2224 -22.7236 261.5 19.0681 -24.5593 261.5 16.7558 -26.1915 261.5 14.3046 -27.6067 261.5 11.735 -28.7931 261.5 9.06804 -29.7409 261.5 6.32598 -30.4423 261.5 3.53151 -30.8914 261.5 0.707768 -31.0846 261.5 -2.12184 -31.0201 261.5 -4.93386 -30.6987 261.5 -7.70499 -30.1228 261.5 -10.4123 -29.2974 261.5 -13.0333 -28.2291 261.5 -15.5463 -26.927 261.5 -17.9305 -25.4017 261.5 -20.1661 -23.666 261.5 -22.2346 -21.7341 261.5 -24.1189 -19.6222 261.5 -25.8033 -17.3476 261.5 -27.2739 -14.9293 261.5 -28.5185 -12.3873 261.5 -21.0379 7.97861 307 -19.9228 10.4563 307 -18.5171 12.7815 307 -16.8415 14.9203 307 -14.9203 16.8415 307 -12.7815 18.5171 307 -10.4563 19.9228 307 -7.97861 21.0379 307 -5.3846 21.8462 307 0.00248003 22.41795 307 7.97861 21.0379 307 10.4563 19.9228 307 12.7815 18.5171 307 14.9203 16.8415 307 16.8415 14.9203 307 18.5171 12.7815 307 19.9228 10.4563 307 21.0379 7.97861 307 21.8462 5.3846 307 22.3359 2.71208 307 22.5 0 307 22.3359 -2.71208 307 21.8462 -5.3846 307 21.0379 -7.97861 307 19.9228 -10.4563 307 18.5171 -12.7815 307 16.8415 -14.9203 307 14.9203 -16.8415 307 12.7815 -18.5171 307 10.4563 -19.9228 307 7.97861 -21.0379 307 5.3846 -21.8462 307 2.689832 -22.09105 307 -0.00248003 -22.41795 307 -2.707133 -22.17217 307 -7.97861 -21.0379 307 -10.4563 -19.9228 307 -12.7815 -18.5171 307 -14.9203 -16.8415 307 -16.8415 -14.9203 307 -18.5171 -12.7815 307 -19.9228 -10.4563 307 -21.0379 -7.97861 307 -6.455019 55.87268 127 6.443407 55.59762 127 6.455019 -55.87268 127 -6.443407 -55.59762 127 39.1533 5.377726 216 -2.724389 21.92851 307 -113.2566 12.28667 4 113.4585 6.14325 3.934342 95.90411 113.2815 0 104.7437 109.62 0 -113.417 6.145891 4 -12.28667 -113.2566 4 100.5463 111.9872 0 38.50113 8.919478 216 12.27021 -113.0903 4 37.21431 12.2969 216 2.692311 22.17307 307 -2.159069 56.36863 127 2.159069 -56.36863 127 36.09283 15.69356 216 5.32557 21.52407 307 113.2566 -12.28667 4 -6.145891 -113.417 4 -100.5207 111.9935 0 113.417 -6.145891 4 -5.32557 -21.52407 307 12.28164 113.0904 4 -110.9437 -102.6746 0 -4.50746 -39.01879 216 111.9872 -100.5463 0 113.2815 -95.90411 0 109.62 -104.7437 0 -112.7772 -98.25135 0 + + + + + + + + + + -0.98189 0.03764241 0.1856749 -0.9821013 0.03284031 0.1854688 -0.9821013 -0.03284031 0.1854688 -0.977744 0.09836 0.1853164 -0.9760968 0.1126838 0.1858428 -0.9690086 0.1634553 0.1852158 -0.9645904 0.1870599 0.1859407 -0.9559391 0.2278016 0.1851674 -0.9474291 0.2603718 0.1859703 -0.9385851 0.2911516 0.1851729 -0.924732 0.3321158 0.1859299 -0.9170277 0.3532004 0.1852288 -0.896613 0.4019408 0.1858192 -0.8913786 0.4136353 0.1853379 -0.8632421 0.4694154 0.1856399 -0.8617262 0.4722478 0.1854991 -0.8282737 0.5287487 0.1854391 -0.8247632 0.5341148 0.1857071 -0.7911331 0.5829015 0.1852955 -0.7814351 0.5956624 0.185864 -0.7504432 0.634456 0.1852043 -0.7335306 0.653724 0.1859512 -0.7063887 0.6831757 0.1851651 -0.6813396 0.7079493 0.1859679 -0.659183 0.7288257 0.1851781 -0.6251493 0.7580394 0.1859159 -0.6090324 0.7712097 0.1852438 -0.5653061 0.8036848 0.1857951 -0.5561308 0.8101605 0.1853607 -0.5021299 0.8446403 0.185603 -0.5007612 0.8454682 0.1855312 -0.4431957 0.8770403 0.1854122 -0.4360042 0.880569 0.185738 -0.3836269 0.9047117 0.1852766 -0.3672928 0.9113416 0.1858834 -0.3223621 0.9283242 0.1851941 -0.2964685 0.9367635 0.1859586 -0.2596231 0.9477924 0.1851635 -0.2238857 0.9567093 0.185964 -0.1957466 0.9630107 0.1851851 -0.09395951 0.9780033 0.1862292 -0.1309059 0.9734714 0.1876627 -0.1126432 0.9757086 0.1878945 -0.06562858 0.9803199 0.1861876 0.009441018 0.9824429 0.1863247 0 0.9824044 0.1867666 0.06562352 0.9802442 0.1865879 0.1648382 0.9679065 0.1896981 0.1308379 0.9729661 0.1903115 0.03145658 0.9820652 0.1858993 0.1957466 0.9630109 0.1851851 0.2238857 0.9567093 0.185964 0.2596231 0.9477924 0.1851634 0.2964685 0.9367635 0.1859586 0.3223621 0.9283242 0.1851941 0.3672928 0.9113416 0.1858834 0.3836269 0.9047117 0.1852765 0.4360042 0.880569 0.185738 0.4431957 0.8770403 0.1854124 0.5007612 0.8454682 0.1855313 0.5021299 0.8446403 0.185603 0.5561308 0.8101605 0.1853607 0.5653061 0.8036848 0.1857951 0.6090324 0.7712097 0.1852438 0.6251493 0.7580394 0.1859159 0.659183 0.7288257 0.1851781 0.6813396 0.7079493 0.1859679 0.7063887 0.6831757 0.1851651 0.7335306 0.653724 0.1859512 0.7504432 0.634456 0.1852043 0.7814351 0.5956624 0.185864 0.7911331 0.5829015 0.1852955 0.8247632 0.5341148 0.1857071 0.8282737 0.5287486 0.185439 0.8617262 0.4722478 0.185499 0.8632421 0.4694154 0.1856399 0.8913787 0.4136352 0.1853379 0.896613 0.4019408 0.1858192 0.9170277 0.3532004 0.1852288 0.924732 0.3321158 0.1859299 0.9385851 0.2911516 0.1851729 0.9474291 0.2603718 0.1859703 0.9559391 0.2278016 0.1851674 0.9645904 0.1870599 0.1859407 0.9690086 0.1634552 0.1852158 0.9760968 0.1126838 0.1858428 0.977744 0.09836 0.1853163 0.98189 0.03764241 0.1856749 0.9821013 0.03284031 0.1854688 0.9821013 -0.03284031 0.1854688 0.98189 -0.03764241 0.1856749 0.977744 -0.09836 0.1853164 0.9760968 -0.1126838 0.1858428 0.9690086 -0.1634553 0.1852158 0.9645904 -0.1870599 0.1859407 0.9559391 -0.2278016 0.1851674 0.9474291 -0.2603718 0.1859703 0.9385851 -0.2911516 0.1851729 0.924732 -0.3321158 0.1859299 0.9170277 -0.3532004 0.1852288 0.896613 -0.4019408 0.1858192 0.8913786 -0.4136353 0.1853379 0.8632421 -0.4694154 0.1856399 0.8617262 -0.4722478 0.1854991 0.8282737 -0.5287487 0.1854391 0.8247632 -0.5341148 0.1857071 0.7911331 -0.5829015 0.1852955 0.7814351 -0.5956624 0.185864 0.7504432 -0.634456 0.1852043 0.7335306 -0.653724 0.1859512 0.7063887 -0.6831757 0.1851651 0.6813396 -0.7079493 0.1859679 0.659183 -0.7288257 0.1851781 0.6251493 -0.7580394 0.1859159 0.6090324 -0.7712097 0.1852438 0.5653061 -0.8036848 0.1857951 0.5561308 -0.8101605 0.1853607 0.5021299 -0.8446403 0.185603 0.5007612 -0.8454682 0.1855312 0.4431957 -0.8770403 0.1854122 0.4360042 -0.880569 0.185738 0.3836269 -0.9047117 0.1852766 0.3672928 -0.9113416 0.1858834 0.3223621 -0.9283242 0.1851941 0.2964685 -0.9367635 0.1859586 0.2596231 -0.9477924 0.1851635 0.2238857 -0.9567093 0.185964 0.1957466 -0.9630107 0.1851851 0.09395951 -0.9780033 0.1862292 0.1309059 -0.9734714 0.1876627 0.1126432 -0.9757086 0.1878945 0.06562858 -0.9803199 0.1861876 -0.009441018 -0.9824429 0.1863247 0 -0.9824044 0.1867666 -0.06562352 -0.9802442 0.1865879 -0.1648382 -0.9679065 0.1896981 -0.1308379 -0.9729661 0.1903115 -0.03145658 -0.9820652 0.1858993 -0.1957466 -0.9630109 0.1851851 -0.2238857 -0.9567093 0.185964 -0.2596231 -0.9477924 0.1851634 -0.2964685 -0.9367635 0.1859586 -0.3223621 -0.9283242 0.1851941 -0.3672928 -0.9113416 0.1858834 -0.3836269 -0.9047117 0.1852765 -0.4360042 -0.880569 0.185738 -0.4431957 -0.8770403 0.1854124 -0.5007612 -0.8454682 0.1855313 -0.5021299 -0.8446403 0.185603 -0.5561308 -0.8101605 0.1853607 -0.5653061 -0.8036848 0.1857951 -0.6090324 -0.7712097 0.1852438 -0.6251493 -0.7580394 0.1859159 -0.659183 -0.7288257 0.1851781 -0.6813396 -0.7079493 0.1859679 -0.7063887 -0.6831757 0.1851651 -0.7335306 -0.653724 0.1859512 -0.7504432 -0.634456 0.1852043 -0.7814351 -0.5956624 0.185864 -0.7911331 -0.5829015 0.1852955 -0.8247632 -0.5341148 0.1857071 -0.8282737 -0.5287486 0.185439 -0.8617262 -0.4722478 0.185499 -0.8632421 -0.4694154 0.1856399 -0.8913787 -0.4136352 0.1853379 -0.896613 -0.4019408 0.1858192 -0.9170277 -0.3532004 0.1852288 -0.924732 -0.3321158 0.1859299 -0.9385851 -0.2911516 0.1851729 -0.9474291 -0.2603718 0.1859703 -0.9559391 -0.2278016 0.1851674 -0.9645904 -0.1870599 0.1859407 -0.9690086 -0.1634552 0.1852158 -0.9760968 -0.1126838 0.1858428 -0.977744 -0.09836 0.1853163 -0.98189 -0.03764241 0.1856749 0 0 1 -4.65834e-7 0 1 4.65834e-7 0 1 -0.9996299 0.02700418 0.003319978 -0.9999089 0.01350182 0 -0.9996354 -0.02700114 0 -0.9999034 -0.01350492 0.003320276 -0.9966942 -0.08117777 0.003312647 -0.9985337 -0.05316078 0.01022017 -0.9907912 -0.1350162 0.01017427 -0.9844411 -0.1757152 0 -0.9820649 -0.1885432 0 -0.9820644 -0.1885462 0 -0.9704617 -0.2412551 0 -0.9704611 -0.2412581 0 -0.9559645 -0.2934828 0 -0.9559644 -0.2934828 0 -0.9386483 -0.3448759 0 -0.9186148 -0.3951546 0 -0.9186136 -0.3951573 0 -0.8958881 -0.4442799 0 -0.8958868 -0.4442824 0 -0.8704776 -0.4922082 0 -0.842576 -0.5385774 0 -0.8425789 -0.538573 0 -0.8121942 -0.5833871 0 -0.8121972 -0.583383 0 -0.7794052 -0.6265203 0 -0.7794068 -0.6265183 0 -0.7443565 -0.6677826 0 -0.7071071 -0.7071065 0 -0.7071063 -0.7071073 0 -0.6677829 -0.7443562 0 -0.6265177 -0.7794072 0 -0.6265193 -0.779406 0 -0.5833859 -0.8121951 0 -0.5833852 -0.8121957 0 -0.5385747 -0.8425778 0 -0.4922088 -0.8704773 0 -0.4922095 -0.8704768 0 -0.4442812 -0.8958874 0 -0.3951551 -0.9186144 0 -0.3448769 -0.9386479 0 -0.3448761 -0.9386482 0 -0.2934823 -0.9559645 0 -0.2412571 -0.9704613 0 -0.1885451 -0.9820646 0 -0.1885452 -0.9820646 0 -0.1350235 -0.9908424 0 -0.2017367 -0.9792985 0.01663631 -0.08116614 -0.9965581 0.01685506 -0.02611392 -0.9996535 0.003319323 -0.02700364 -0.9996299 0.003320276 -0.01350247 -0.9999089 0 0.02700376 -0.9996354 0 0.01350241 -0.9999034 0.003320574 0.08117717 -0.9966942 0.003313124 0.05326342 -0.9985285 0.01019418 0.1350166 -0.9907918 0.01011204 0.1753906 -0.9844989 0 0.1885452 -0.9820646 0 0.1885451 -0.9820646 0 0.2412571 -0.9704613 0 0.2934823 -0.9559645 0 0.3448761 -0.9386482 0 0.3448769 -0.9386479 0 0.3951551 -0.9186144 0 0.4442812 -0.8958874 0 0.4922095 -0.8704768 0 0.4922088 -0.8704773 0 0.5385747 -0.8425778 0 0.5833852 -0.8121957 0 0.5833859 -0.8121951 0 0.6265193 -0.779406 0 0.6265177 -0.7794072 0 0.6677829 -0.7443562 0 0.7071064 -0.7071073 0 0.7071071 -0.7071065 0 0.7443565 -0.6677826 0 0.7794068 -0.6265183 0 0.7794052 -0.6265203 0 0.8121972 -0.583383 0 0.8121942 -0.5833871 0 0.8425789 -0.538573 0 0.842576 -0.5385774 0 0.8704776 -0.4922082 0 0.8958868 -0.4442824 0 0.8958881 -0.4442799 0 0.9186136 -0.3951573 0 0.9186148 -0.3951546 0 0.9386483 -0.3448759 0 0.9559645 -0.2934828 0 0.9559644 -0.2934828 0 0.9704611 -0.2412581 0 0.9704617 -0.2412551 0 0.9820644 -0.1885462 0 0.9820649 -0.1885432 0 0.9908421 -0.1350263 0 0.9792987 -0.201736 0.01663672 0.9965581 -0.08116668 0.01685458 0.9996535 -0.02611303 0.003319978 0.9996299 -0.02700418 0.003319978 0.9999089 -0.01350182 0 0.9996354 0.02700114 0 0.9999645 0.006808996 0.004966199 0.9966878 0.08117371 0.004945397 0.9981604 0.05976092 0.01021903 0.9907912 0.1350162 0.01017427 0.9844411 0.1757152 0 0.9820649 0.1885432 0 0.9820644 0.1885462 0 0.9704617 0.2412551 0 0.9704611 0.2412581 0 0.9559645 0.2934828 0 0.9559644 0.2934828 0 0.9386483 0.3448759 0 0.9186148 0.3951546 0 0.9186136 0.3951573 0 0.8958881 0.4442799 0 0.8958868 0.4442824 0 0.8704776 0.4922082 0 0.842576 0.5385774 0 0.8425789 0.538573 0 0.8121942 0.5833871 0 0.8121972 0.583383 0 0.7794052 0.6265203 0 0.7794068 0.6265183 0 0.7443565 0.6677826 0 0.7071071 0.7071065 0 0.7071063 0.7071073 0 0.6677829 0.7443562 0 0.6265177 0.7794072 0 0.6265193 0.779406 0 0.5833859 0.8121951 0 0.5833852 0.8121957 0 0.5385747 0.8425778 0 0.4922088 0.8704773 0 0.4922095 0.8704768 0 0.4442812 0.8958874 0 0.3951551 0.9186144 0 0.3448769 0.9386479 0 0.3448761 0.9386482 0 0.2934823 0.9559645 0 0.2412571 0.9704613 0 0.1885451 0.9820646 0 0.1885452 0.9820646 0 0.1350235 0.9908424 0 0.1757048 0.9843909 0.01012516 0.08117336 0.9966477 0.01021224 0.05315291 0.9985809 0.003316283 0.02700364 0.9996299 0.003317892 0.0135051 0.9999088 0 -0.02700376 0.9996354 0 -0.01350241 0.9999034 0.003320574 -0.08117717 0.9966942 0.003313124 -0.05316078 0.9985337 0.01021969 -0.1350166 0.9907912 0.01017403 -0.1757137 0.9844413 0 -0.1885452 0.9820646 0 -0.1885451 0.9820646 0 -0.2412571 0.9704613 0 -0.2934823 0.9559645 0 -0.3448761 0.9386482 0 -0.3448769 0.9386479 0 -0.3951551 0.9186144 0 -0.4442812 0.8958874 0 -0.4922095 0.8704768 0 -0.4922088 0.8704773 0 -0.5385747 0.8425778 0 -0.5833852 0.8121957 0 -0.5833859 0.8121951 0 -0.6265193 0.779406 0 -0.6265177 0.7794072 0 -0.6677829 0.7443562 0 -0.7071064 0.7071073 0 -0.7071071 0.7071065 0 -0.7443565 0.6677826 0 -0.7794068 0.6265183 0 -0.7794052 0.6265203 0 -0.8121972 0.583383 0 -0.8121942 0.5833871 0 -0.8425789 0.538573 0 -0.842576 0.5385774 0 -0.8704776 0.4922082 0 -0.8958868 0.4442824 0 -0.8958881 0.4442799 0 -0.9186136 0.3951573 0 -0.9186148 0.3951546 0 -0.9386483 0.3448759 0 -0.9559645 0.2934828 0 -0.9559644 0.2934828 0 -0.9704611 0.2412581 0 -0.9704617 0.2412551 0 -0.9820644 0.1885462 0 -0.9820649 0.1885432 0 -0.9908421 0.1350263 0 -0.9792987 0.201736 0.01663672 -0.9965581 0.08116668 0.01685458 -0.9996535 0.02611303 0.003319978 -1.57979e-7 0 1 1.58042e-7 0 1 -3.16008e-7 0 1 3.15945e-7 0 1 -1.58019e-7 0 1 5.16139e-7 0 1 -3.16273e-7 0 1 0 0 1 1.57972e-7 0 1 4.73996e-7 0 1 -5.16221e-7 0 1 5.53348e-7 0 1 -1.58052e-7 0 1 -2.36974e-7 0 1 0 0 1 9.48514e-7 0 1 0 0 1 -4.73924e-7 0 1 1.03264e-6 0 1 -4.74109e-7 0 1 -3.16244e-7 0 1 0 0 1 1.03268e-6 0 1 -1.03268e-6 0 1 0 0 1 3.16244e-7 0 1 4.74109e-7 0 1 -1.03264e-6 0 1 4.73924e-7 0 1 0 0 1 -9.48514e-7 0 1 5.15963e-7 0 1 5.16024e-7 0 1 0 0 1 2.36974e-7 0 1 1.58052e-7 0 1 -5.53348e-7 0 1 5.16222e-7 0 1 -4.73996e-7 0 1 -1.57972e-7 0 1 0 0 1 3.16273e-7 0 1 -2.5807e-7 0 1 1.58019e-7 0 1 -3.15945e-7 0 1 3.16008e-7 0 1 -1.58042e-7 0 1 0 0 1 1.57979e-7 0 1 -5.16139e-7 0 1 5.16221e-7 0 1 -1.03268e-6 0 1 1.03268e-6 0 1 -5.15963e-7 0 1 -5.16024e-7 0 1 -5.16222e-7 0 1 2.5807e-7 0 1 0 0 1 -3.69912e-7 0 1 6.3506e-7 0 1 0 0 1 -3.1753e-7 0 1 0.1623254 -8.18732e-4 0.986737 3.69912e-7 0 1 -6.3506e-7 0 1 0 0 1 3.1753e-7 0 1 9.5007e-4 0.9999996 0 0 1 0 -9.50057e-4 0.9999997 0 0.09051519 0.9958951 0 0.06044119 0.9980061 -0.01818668 0.210003 0.9775338 -0.01806634 0.1799968 0.982993 -0.03641223 0.3252975 0.9449134 -0.03633505 0.2972623 0.9532607 -0.05412107 0.4395914 0.8966487 -0.05273193 0.4093155 0.9095054 -0.0725311 0.5375322 0.8401839 -0.0717647 0.5151874 0.8525909 -0.08758276 0.4931369 0.8654866 -0.08802872 0.6168879 0.7870511 0 0.7071068 0.7071068 0 0.7870526 0.616886 0 0.7870495 0.6168898 0 0.8558799 0.5171747 0 0.9119067 0.4103977 0 0.9546593 0.2977006 0 0.9546611 0.2976949 0 0.9836454 0.1801157 0 0.9981712 0.06045097 0 1 0 0 0.8605856 -0.02248108 0.5088096 0.9958951 -0.09051549 0 0.998006 -0.06044095 -0.01819074 0.9775337 -0.2100037 -0.0180664 0.9829932 -0.1799963 -0.03641217 0.9449135 -0.3252975 -0.0363335 0.9532603 -0.2972643 -0.05411773 0.8966506 -0.4395875 -0.05273222 0.9095048 -0.4093167 -0.07253289 0.8401838 -0.5375332 -0.07175821 0.8525909 -0.5151874 -0.08758276 0.8654853 -0.4931394 -0.08802855 0.7870526 -0.616886 0 0.7071068 -0.7071068 0 0.6168879 -0.7870511 0 0.5171747 -0.8558799 0 0.4103989 -0.9119063 0 0.4103965 -0.9119073 0 0.2976968 -0.9546605 0 0.2976987 -0.95466 0 0.1801151 -0.9836456 0 0.1801162 -0.9836454 0 0.06045114 -0.9981712 0 0.06045079 -0.9981712 0 -9.5007e-4 -0.9999996 0 0 -1 0 -0.02248072 -0.8605731 0.5088307 -0.06045079 -0.9981712 0 -0.06045114 -0.9981712 0 -0.1801162 -0.9836454 0 -0.1801151 -0.9836456 0 -0.2976987 -0.95466 0 -0.2976968 -0.9546605 0 -0.4103965 -0.9119073 0 -0.4103989 -0.9119063 0 -0.5171747 -0.8558799 0 -0.6168879 -0.7870511 0 -0.7071068 -0.7071068 0 -0.8688609 -0.4950562 0 -0.7842222 -0.6146737 -0.0846861 -0.8391588 -0.5368713 -0.08707267 -0.8536551 -0.5158367 -0.07201015 -0.8955373 -0.4390417 -0.07249462 -0.9106186 -0.4098179 -0.05313444 -0.9441606 -0.3250384 -0.0539515 -0.9540263 -0.2975032 -0.03641211 -0.9770432 -0.2098983 -0.03646242 -0.9834839 -0.1800861 -0.01812511 -0.9957301 -0.09050053 -0.01819902 -0.9981712 -0.06045097 0 -0.9999996 9.5007e-4 0 -1 0 0 -0.8605856 0.02248108 0.5088096 -0.9981712 0.06045097 0 -0.9836454 0.1801157 0 -0.9546611 0.2976949 0 -0.9546593 0.2977006 0 -0.9119067 0.4103977 0 -0.8558799 0.5171747 0 -0.7870495 0.6168898 0 -0.7870526 0.616886 0 -0.7071068 0.7071068 0 -0.6168879 0.7870511 0 -0.4123576 0.9110221 0 -0.5159302 0.8538139 -0.06941151 -0.4345732 0.8978419 -0.07089602 -0.4097907 0.9105612 -0.05431401 -0.3267453 0.9435374 -0.05454206 -0.2975054 0.9540404 -0.03601974 -0.2097369 0.9770814 -0.03636527 -0.1800866 0.9834837 -0.01812994 -0.09050077 0.9957302 -0.01819491 -0.06045079 0.9981712 0 0 0 -1 3.82669e-7 0 1 8.33383e-7 0 1 3.52515e-5 0 1 2.99957e-6 0 1 -4.86047e-6 0 1 -8.53244e-7 0 1 9.54624e-6 0 1 -3.54661e-6 0 1 9.89785e-6 0 1 -5.83589e-6 0 1 -2.76842e-7 0 1 -2.53185e-6 0 1 -9.18829e-7 0 1 8.53685e-7 0 1 9.7741e-7 0 -1 -9.7741e-7 0 -1 -0.9806894 0.05933856 0.186353 -0.9827579 0 0.1848968 -0.9806894 -0.05933856 0.186353 -0.9786463 -0.08937132 0.1851055 -0.9665001 -0.177098 0.1857789 -0.9663518 -0.1779595 0.1857279 -0.9462742 -0.2651268 0.1851297 -0.9460721 -0.2650702 0.1862406 -0.9333012 -0.307946 0.1847111 -0.9786463 0.08937132 0.1851055 -0.9665002 0.177098 0.1857788 -0.9663518 0.1779595 0.1857278 -0.9462742 0.2651268 0.1851298 -0.9460721 0.2650702 0.1862406 -0.9333012 0.307946 0.184711 -0.9180421 0.3500186 0.1862412 -0.9014245 0.3915554 0.1847118 -0.8824143 0.4320412 0.1862407 -0.8620833 0.4719049 0.1847112 -0.8394709 0.5104933 0.1862401 -0.815613 0.5483223 0.1847111 -0.7895803 0.5847029 0.1862404 -0.7623687 0.6202224 0.184711 -0.7331157 0.6541066 0.1862416 -0.7027983 0.6869905 0.1847122 -0.6706213 0.71804 0.1862408 -0.6374121 0.7480559 0.1847109 -0.6025289 0.7760629 0.1862398 -0.5667643 0.8029073 0.1847113 -0.5294789 0.8276271 0.1862409 -0.4913885 0.8511282 0.1847108 -0.4520063 0.8723561 0.1862402 -0.4119687 0.8922799 0.1847112 -0.3708408 0.9098306 0.1862403 -0.3291218 0.926046 0.1847101 -0.2865255 0.9397968 0.1862402 -0.2435429 0.9521389 0.1847116 -0.1999128 0.9619508 0.1862406 -0.1559407 0.9703426 0.1847102 -0.1115714 0.9761489 0.1862399 -0.06708741 0.9805004 0.1847118 -0.02238875 0.9822489 0.1862413 0.0223897 0.9825379 0.1847105 0.0670669 0.9802128 0.1862396 0.1116219 0.9764336 0.1847109 0.1558996 0.9700567 0.1862403 0.1999579 0.9622365 0.1847103 0.2434765 0.9518582 0.18624 0.2866073 0.9400733 0.1847115 0.3290097 0.9257791 0.1862413 0.3709437 0.9101005 0.1847106 0.4118507 0.8920168 0.1862397 0.4521507 0.8726065 0.1847102 0.4912511 0.8508743 0.18624 0.5296077 0.8278875 0.1847108 0.5665907 0.8026764 0.1862412 0.6027312 0.7762712 0.1847109 0.637232 0.7478304 0.1862395 0.6707978 0.7182705 0.1847103 0.702606 0.6867745 0.1862405 0.7333431 0.6542856 0.1847118 0.7621347 0.6200525 0.1862409 0.7898006 0.5848905 0.184711 0.8153787 0.5481529 0.1862417 0.8397245 0.5106313 0.1847121 0.8618348 0.4717576 0.1862406 0.9190368 0.3503949 0.1805408 0.90232 0.3919683 0.1793866 0.9347664 0.3086314 0.1759507 0.9348309 0.3084321 0.175957 0.9196916 0.3504112 0.177142 0.957781 0.2218922 0.1828097 0.9671714 0.1780933 0.1812797 0.9739912 0.1338704 0.1828114 0.9739944 0.1338481 0.1828106 0.9814862 0.04471415 0.1862404 0.9827929 0 0.184711 0.9814862 -0.04471415 0.1862404 0.9787212 -0.08936923 0.1847106 0.9733532 -0.1337845 0.1862404 0.9665387 -0.1780027 0.1847106 0.9571532 -0.2217487 0.1862402 0.9463508 -0.2651451 0.1847112 0.9330331 -0.3078374 0.1862406 0.9183175 -0.3501076 0.1847103 0.9011517 -0.391459 0.1862409 0.8826675 -0.4321804 0.1847119 0.8618348 -0.4717576 0.1862406 0.8397243 -0.5106316 0.1847122 0.8153787 -0.5481529 0.1862417 0.7898004 -0.5848909 0.1847113 0.7621347 -0.6200525 0.1862409 0.7333438 -0.6542848 0.1847115 0.702606 -0.6867745 0.1862405 0.670797 -0.7182712 0.1847106 0.637232 -0.7478304 0.1862395 0.6027312 -0.7762712 0.1847108 0.5665907 -0.8026764 0.1862412 0.5296077 -0.8278875 0.1847108 0.4912511 -0.8508743 0.18624 0.4521507 -0.8726065 0.1847102 0.4118507 -0.8920168 0.1862397 0.3709437 -0.9101005 0.1847105 0.3290097 -0.9257791 0.1862413 0.2866087 -0.940073 0.1847113 0.2434765 -0.9518582 0.18624 0.111717 -0.9772025 0.1805395 0.1561 -0.9713153 0.1793864 0.1561064 -0.9713143 0.1793866 0.06711083 -0.9808552 0.1828091 0.04476296 -0.9822625 0.18209 -0.02239614 -0.9825724 0.1845263 -0.1547287 -0.9716209 0.1789191 -0.1117464 -0.9777129 0.1777366 -0.04507642 -0.982764 0.1792851 -0.1999128 -0.9619508 0.1862406 -0.2435442 -0.9521386 0.1847115 -0.2865255 -0.9397968 0.1862402 -0.3291218 -0.926046 0.18471 -0.3708408 -0.9098306 0.1862403 -0.4119687 -0.8922799 0.1847112 -0.4520063 -0.8723561 0.1862402 -0.4913885 -0.8511282 0.1847108 -0.5294789 -0.8276271 0.1862409 -0.5667643 -0.8029073 0.1847112 -0.6025289 -0.7760629 0.1862398 -0.637413 -0.7480552 0.1847107 -0.6706213 -0.71804 0.1862408 -0.7027976 -0.6869912 0.1847125 -0.7331157 -0.6541066 0.1862416 -0.7623684 -0.6202228 0.1847113 -0.7895803 -0.5847029 0.1862404 -0.815613 -0.5483223 0.184711 -0.8394709 -0.5104933 0.1862401 -0.8620834 -0.4719046 0.184711 -0.8824143 -0.4320412 0.1862407 -0.9014245 -0.3915553 0.1847117 -0.9180421 -0.3500186 0.1862412 -0.938003 0.2922837 0.1863347 -0.9182788 0.3501104 0.1848964 -0.8959263 0.403216 0.1863678 -0.882611 0.4321384 0.1850796 -0.8408649 0.5083453 0.1858264 -0.8395606 0.51055 0.1856796 -0.7897447 0.5848249 0.1851567 -0.7734077 0.6059104 0.1863145 -0.7333037 0.6542769 0.1848989 -0.6947166 0.6947166 0.1863811 -0.6707736 0.7182037 0.1850576 -0.6059627 0.7734726 0.1858751 -0.6025989 0.776154 0.1856328 -0.5295866 0.8277953 0.185184 -0.5082972 0.8407909 0.1862925 -0.4521207 0.8725813 0.1849021 -0.4032169 0.8959208 0.1863927 -0.3709245 0.9100419 0.1850374 -0.2923086 0.9380773 0.1859217 -0.2865596 0.9399154 0.1855875 -0.1999545 0.9621405 0.1852135 -0.03035622 0.981198 0.1906016 -0.1114164 0.9747925 0.1933029 -0.1734215 0.9661958 0.190764 -0.02238655 0.9821563 0.18673 0.08905464 0.978181 0.1877002 0.06703001 0.9796949 0.1889573 0.155825 0.9696008 0.1886609 0.234851 0.9528934 0.1919355 0.2432165 0.9508368 0.1917165 0.1769995 0.9658956 0.1889894 0.3290881 0.9260001 0.1849999 0.4032469 0.8959875 0.1860067 0.4119101 0.8921433 0.1855006 0.4913409 0.8510327 0.1852765 0.5083087 0.8408009 0.1862155 0.5667349 0.8028793 0.1849228 0.6058987 0.7733919 0.1864183 0.6373867 0.7480103 0.1849832 0.6947633 0.6947594 0.1860464 0.7027084 0.686881 0.1854602 0.7622714 0.6201634 0.1853105 0.7734253 0.6059274 0.186186 0.8155828 0.5482929 0.1849317 0.8407691 0.5082859 0.186421 0.8620449 0.471875 0.1849667 0.8959758 0.4032378 0.1860827 0.9012939 0.3915207 0.1854213 0.9331925 0.3078937 0.1853464 0.9380365 0.292292 0.1861534 0.9573916 0.2218059 0.1849423 0.9663802 0.177074 0.1864246 0.9735934 0.1338175 0.184956 0.9807333 0.05934125 0.1861209 0.9816485 0.04471784 0.1853828 0.9816485 -0.04471784 0.1853828 0.9807333 -0.05934125 0.1861209 0.9735935 -0.1338176 0.184956 0.9663802 -0.1770741 0.1864246 0.9573916 -0.221806 0.1849423 0.9380365 -0.2922921 0.1861535 0.9331925 -0.3078937 0.1853464 0.9012939 -0.3915203 0.1854212 0.8959758 -0.4032378 0.1860827 0.8620451 -0.4718746 0.1849666 0.8407691 -0.5082859 0.186421 0.8155828 -0.5482929 0.1849318 0.7734258 -0.6059269 0.1861859 0.7622714 -0.6201634 0.1853104 0.7027094 -0.6868801 0.18546 0.6947633 -0.6947594 0.1860463 0.6373867 -0.7480103 0.1849831 0.6058982 -0.7733923 0.1864184 0.5667349 -0.8028793 0.1849229 0.5083079 -0.8408013 0.1862156 0.4913395 -0.8510335 0.1852767 0.4119101 -0.8921433 0.1855006 0.4032461 -0.8959878 0.1860067 0.3290881 -0.9260001 0.185 0.2922797 -0.937989 0.1864117 0.2435397 -0.9521003 0.1849146 0.08889818 -0.97839 0.1866819 0.1557732 -0.9692782 0.1903538 0.06701117 -0.9793657 0.1906629 0.1183917 -0.9750885 0.1875789 -0.02238655 -0.9821567 0.1867276 -0.08886945 -0.9779422 0.1890274 -0.1115266 -0.9757566 0.1883111 -0.235879 -0.953001 0.1901325 -0.1996883 -0.9608588 0.1920286 -0.2861795 -0.9386692 0.1923581 -0.1771392 -0.9666517 0.1849488 -0.3709245 -0.9100418 0.1850376 -0.4032161 -0.8959211 0.1863928 -0.4521222 -0.8725806 0.1849021 -0.5082979 -0.8407905 0.1862925 -0.5295866 -0.8277953 0.185184 -0.6025989 -0.776154 0.1856327 -0.6059633 -0.7734721 0.1858749 -0.6707736 -0.7182036 0.1850578 -0.6947166 -0.6947166 0.186381 -0.7333037 -0.6542769 0.1848989 -0.7734074 -0.6059108 0.1863148 -0.7897455 -0.5848241 0.1851565 -0.8395608 -0.5105496 0.1856796 -0.8408649 -0.5083453 0.1858264 -0.882611 -0.4321384 0.1850796 -0.8959263 -0.403216 0.1863678 -0.9182788 -0.3501106 0.1848965 -0.9380031 -0.2922835 0.1863347 -0.9817734 -0.04475176 0.1847113 -0.982504 0 0.1862416 -0.9817734 0.04475176 0.1847113 -0.978433 0.08935177 0.1862401 -0.9736393 0.1338219 0.184711 -0.9662563 0.1779419 0.1862404 -0.9574372 0.2218015 0.1847109 -0.9784329 -0.08935177 0.1862401 -0.9736393 -0.1338219 0.184711 -0.9662563 -0.177942 0.1862405 -0.9574372 -0.2218015 0.1847109 -2.13421e-7 0 -1 -1.76161e-6 0 -1 1.41707e-6 0 -1 -4.75318e-6 0 -1 -8.14364e-6 0 -1 6.12271e-6 0 -1 -8.33348e-7 0 -1 -2.26712e-6 0 -1 4.03257e-6 0 -1 -6.98104e-5 0 -1 -4.40412e-7 0 -1 4.59421e-7 0 -1 2.76841e-7 0 -1 9.14864e-7 0 -1 2.53332e-7 0 -1 -3.28345e-6 0 1 9.87079e-6 0 1 -0.9815843 0.04474425 0.185716 -0.9819349 0.03764635 0.1854367 -0.9819349 -0.03764635 0.1854367 -0.9762085 0.1126965 0.1852473 -0.9734131 0.133789 0.1859237 -0.9647372 0.187091 0.1851457 -0.9571995 0.2217454 0.186006 -0.9475817 0.2604132 0.185132 -0.9330771 0.3078727 0.1859614 -0.9248616 0.3321592 0.1852064 -0.9012369 0.3914757 0.1857929 -0.89669 0.4019765 0.1853699 -0.8632629 0.4694271 0.1855137 -0.8619326 0.4718205 0.1856279 -0.8248279 0.5341574 0.1852971 -0.8154312 0.5482 0.185873 -0.7815398 0.5957421 0.1851676 -0.7621808 0.6200702 0.1859937 -0.7336469 0.6538276 0.1851266 -0.7026253 0.6868233 0.1859881 -0.6814442 0.7080567 0.1851745 -0.6372723 0.7478908 0.1858586 -0.6252225 0.7581272 0.1853104 -0.5666676 0.8027697 0.1856034 -0.5653349 0.803725 0.1855341 -0.5021545 0.8446802 0.1853541 -0.4912844 0.8509489 0.1858107 -0.4360498 0.8806602 0.185198 -0.4118708 0.8920637 0.1859703 -0.3673457 0.9114736 0.1851302 -0.3290392 0.9258164 0.1860033 -0.2965152 0.936909 0.1851501 -0.2434873 0.9519194 0.1859123 -0.2239158 0.956839 0.1852592 -0.1559108 0.9701594 0.1856953 -0.09401983 0.97863 0.1828761 -0.1127495 0.9766414 0.1829186 -0.06708753 0.9804738 0.1848528 0.009444832 0.9828403 0.1842169 0.02239179 0.9825569 0.1846096 0.165105 0.9694748 0.1812705 0.1117129 0.9772245 0.1804232 0.03148412 0.9829161 0.1813415 0.1999104 0.9620068 0.1859545 0.2239177 0.9568468 0.1852167 0.2865496 0.9398813 0.1857755 0.2965006 0.9368671 0.1853847 0.3673201 0.9114101 0.1854928 0.3708772 0.9099362 0.1856509 0.4360437 0.8806452 0.1852836 0.4520474 0.87241 0.1858873 0.5021725 0.8447118 0.1851614 0.5294772 0.8276826 0.185998 0.5653781 0.8037883 0.1851271 0.6025829 0.7760825 0.1859833 0.6252379 0.7581459 0.185182 0.6706519 0.7181142 0.1858442 0.6814238 0.7080374 0.1853234 0.7332217 0.6541765 0.1855779 0.7335866 0.6537738 0.1855547 0.7815127 0.5957245 0.1853384 0.789633 0.584763 0.1858277 0.824845 0.5341681 0.1851892 0.8395207 0.5105072 0.1859773 0.8633278 0.4694599 0.185129 0.9179498 0.3499816 0.1867649 0.8961203 0.4017211 0.1886495 0.9323617 0.3078413 0.1895664 0.9239081 0.3318181 0.1905011 0.9174072 0.3495377 0.1902306 0.9471986 0.2603105 0.1872253 0.9643643 0.1870161 0.1871536 0.9660226 0.1778806 0.1875069 0.9758831 0.1126589 0.186976 0.9733569 0.1337596 0.1862389 0.9819911 0.037651 0.1851378 0.9825484 0 0.1860074 0.9819911 -0.037651 0.1851378 0.9784896 -0.08934742 0.1859443 0.9762126 -0.1126969 0.1852259 0.9663448 -0.1779671 0.1857562 0.9646902 -0.1870794 0.1854029 0.9475188 -0.2603985 0.1854747 0.9461765 -0.2650962 0.1856725 0.9248495 -0.3321572 0.1852704 0.9181088 -0.3500254 0.1858999 0.8967269 -0.401993 0.1851556 0.8824484 -0.4320745 0.1860013 0.8633278 -0.4694599 0.185129 0.8395207 -0.5105072 0.1859773 0.8248448 -0.5341684 0.1851893 0.789633 -0.584763 0.1858277 0.781513 -0.5957242 0.1853383 0.7335864 -0.6537742 0.1855546 0.7332217 -0.6541765 0.1855779 0.6814242 -0.7080371 0.1853234 0.6706519 -0.7181142 0.1858442 0.6252379 -0.7581459 0.1851822 0.6025829 -0.7760825 0.1859833 0.5653781 -0.8037883 0.1851271 0.5294772 -0.8276826 0.185998 0.5021725 -0.8447118 0.1851614 0.4520474 -0.87241 0.1858873 0.4360437 -0.8806452 0.1852836 0.3708772 -0.9099362 0.1856509 0.3673201 -0.9114102 0.1854928 0.2965006 -0.9368671 0.1853848 0.2865496 -0.9398813 0.1857755 0.2239177 -0.9568467 0.1852167 0.1115643 -0.9758719 0.1876901 0.09394139 -0.9778264 0.1871647 0.1559175 -0.9701327 0.1858293 0.112702 -0.9762299 0.1851312 0.04472529 -0.9814304 0.186532 -0.009443581 -0.9827103 0.1849093 -0.1545591 -0.9705703 0.1846753 -0.1650172 -0.9689591 0.1840862 -0.03147011 -0.9824786 0.1836996 -0.0450325 -0.9817955 0.1845257 -0.2239158 -0.956839 0.1852593 -0.2434873 -0.9519194 0.1859123 -0.2965151 -0.9369089 0.1851502 -0.3290392 -0.9258164 0.1860033 -0.3673457 -0.9114736 0.1851301 -0.4118708 -0.8920637 0.1859703 -0.4360498 -0.8806602 0.185198 -0.4912844 -0.8509489 0.1858107 -0.5021545 -0.8446802 0.1853541 -0.5653344 -0.8037251 0.1855341 -0.5666676 -0.8027697 0.1856034 -0.6252225 -0.7581272 0.1853104 -0.6372723 -0.7478908 0.1858586 -0.6814438 -0.708057 0.1851746 -0.7026253 -0.6868233 0.1859881 -0.7336469 -0.6538275 0.1851267 -0.7621808 -0.6200702 0.1859937 -0.7815396 -0.5957424 0.1851677 -0.8154312 -0.5482 0.185873 -0.824828 -0.5341571 0.1852971 -0.8619326 -0.4718205 0.1856279 -0.8632629 -0.4694271 0.1855137 -0.8966899 -0.4019765 0.18537 -0.9012369 -0.3914757 0.1857929 -0.9248616 -0.3321592 0.1852064 -0.9330771 -0.3078727 0.1859614 -0.9475817 -0.2604132 0.185132 -0.9571995 -0.2217454 0.186006 -0.9647373 -0.187091 0.1851458 -0.9734131 -0.133789 0.1859237 -0.9762085 -0.1126964 0.1852473 -0.9815843 -0.04474431 0.185716 -9.26894e-7 0 -1 9.26894e-7 0 -1 -6.91789e-5 0 -1 6.56703e-7 0 1 1 -4.75108e-4 0 -0.01287639 0.9535422 0.3009843 0.01287853 0.9535171 0.3010634 0.978522 0.008812248 0.2059544 0.9999955 0.0029971 0 0.9535418 -0.01287633 0.3009855 0.01287639 -0.9535422 0.3009843 0.0029971 -0.9999955 0 -0.01287633 -0.9535395 0.3009929 -0.9535418 -0.01287639 0.3009856 -0.9999955 -0.0029971 0 -0.9535418 0.01287633 0.3009855 + + + + + + + + + + + + + + +

0 0 1 0 2 0 2 1 1 1 3 1 2 2 3 2 4 2 1 3 0 3 5 3 5 4 0 4 6 4 5 5 6 5 7 5 7 6 6 6 8 6 7 7 8 7 9 7 9 8 8 8 10 8 9 9 10 9 11 9 11 10 10 10 12 10 11 11 12 11 13 11 13 12 12 12 14 12 13 13 14 13 15 13 15 14 14 14 16 14 15 15 16 15 17 15 17 16 16 16 18 16 18 17 16 17 19 17 18 18 19 18 20 18 20 19 19 19 21 19 20 20 21 20 22 20 22 21 21 21 23 21 22 22 23 22 24 22 24 23 23 23 25 23 24 24 25 24 26 24 26 25 25 25 27 25 26 26 27 26 28 26 28 27 27 27 29 27 28 28 29 28 30 28 30 29 29 29 31 29 30 30 31 30 32 30 32 31 31 31 33 31 33 32 31 32 34 32 33 33 34 33 35 33 35 34 34 34 36 34 35 35 36 35 37 35 37 36 36 36 38 36 37 37 38 37 39 37 39 38 38 38 40 38 39 39 40 39 41 39 41 40 40 40 677 40 41 41 677 41 42 41 42 42 677 42 694 42 42 43 694 43 43 43 43 44 694 44 44 44 43 45 44 45 45 45 45 46 44 46 46 46 46 47 44 47 678 47 46 48 678 48 47 48 47 49 678 49 48 49 47 50 48 50 49 50 49 51 48 51 50 51 49 52 50 52 51 52 51 53 50 53 52 53 51 54 52 54 53 54 53 55 52 55 54 55 53 56 54 56 55 56 55 57 54 57 56 57 55 58 56 58 57 58 57 59 56 59 58 59 58 60 56 60 59 60 58 61 59 61 60 61 60 62 59 62 61 62 60 63 61 63 62 63 62 64 61 64 63 64 62 65 63 65 64 65 64 66 63 66 65 66 64 67 65 67 66 67 66 68 65 68 67 68 66 69 67 69 68 69 68 70 67 70 69 70 68 71 69 71 70 71 70 72 69 72 71 72 70 73 71 73 72 73 72 74 71 74 73 74 73 75 71 75 74 75 73 76 74 76 75 76 75 77 74 77 76 77 75 78 76 78 77 78 77 79 76 79 78 79 77 80 78 80 79 80 79 81 78 81 80 81 79 82 80 82 81 82 81 83 80 83 82 83 81 84 82 84 83 84 83 85 82 85 84 85 83 86 84 86 85 86 85 87 84 87 86 87 85 88 86 88 87 88 87 89 86 89 88 89 88 90 86 90 89 90 88 91 89 91 90 91 90 92 89 92 91 92 90 93 91 93 92 93 92 94 91 94 93 94 92 95 93 95 94 95 94 96 93 96 95 96 94 97 95 97 96 97 96 98 95 98 97 98 96 99 97 99 98 99 98 100 97 100 99 100 98 101 99 101 100 101 100 102 99 102 101 102 100 103 101 103 102 103 102 104 101 104 103 104 103 105 101 105 104 105 103 106 104 106 105 106 105 107 104 107 106 107 105 108 106 108 107 108 107 109 106 109 108 109 107 110 108 110 109 110 109 111 108 111 110 111 109 112 110 112 111 112 111 113 110 113 112 113 111 114 112 114 113 114 113 115 112 115 114 115 113 116 114 116 115 116 115 117 114 117 116 117 115 118 116 118 117 118 117 119 116 119 118 119 118 120 116 120 119 120 118 121 119 121 120 121 120 122 119 122 121 122 120 123 121 123 122 123 122 124 121 124 123 124 122 125 123 125 124 125 124 126 123 126 125 126 124 127 125 127 126 127 126 128 125 128 679 128 126 129 679 129 127 129 127 130 679 130 695 130 127 131 695 131 128 131 128 132 695 132 129 132 128 133 129 133 130 133 130 134 129 134 131 134 131 135 129 135 680 135 131 136 680 136 132 136 132 137 680 137 133 137 132 138 133 138 134 138 134 139 133 139 135 139 134 140 135 140 136 140 136 141 135 141 137 141 136 142 137 142 138 142 138 143 137 143 139 143 138 144 139 144 140 144 140 145 139 145 141 145 140 146 141 146 142 146 142 147 141 147 143 147 143 148 141 148 144 148 143 149 144 149 145 149 145 150 144 150 146 150 145 151 146 151 147 151 147 152 146 152 148 152 147 153 148 153 149 153 149 154 148 154 150 154 149 155 150 155 151 155 151 156 150 156 152 156 151 157 152 157 153 157 153 158 152 158 154 158 153 159 154 159 155 159 155 160 154 160 156 160 155 161 156 161 157 161 157 162 156 162 158 162 158 163 156 163 159 163 158 164 159 164 160 164 160 165 159 165 161 165 160 166 161 166 162 166 162 167 161 167 163 167 162 168 163 168 164 168 164 169 163 169 165 169 164 170 165 170 166 170 166 171 165 171 167 171 166 172 167 172 168 172 168 173 167 173 169 173 168 174 169 174 4 174 4 175 169 175 2 175 169 176 89 176 2 176 2 176 89 176 86 176 2 176 86 176 0 176 0 176 86 176 84 176 0 176 84 176 6 176 6 176 84 176 82 176 6 176 82 176 8 176 8 176 82 176 80 176 8 176 80 176 10 176 10 176 80 176 78 176 10 176 78 176 12 176 12 176 78 176 76 176 12 176 76 176 14 176 14 176 76 176 74 176 14 176 74 176 16 176 16 176 74 176 71 176 16 176 71 176 19 176 19 176 71 176 69 176 19 176 69 176 21 176 21 176 69 176 67 176 21 176 67 176 23 176 23 176 67 176 65 176 23 176 65 176 25 176 25 176 65 176 63 176 25 176 63 176 27 176 27 176 63 176 61 176 27 176 61 176 29 176 29 176 61 176 59 176 29 176 59 176 31 176 31 176 59 176 56 176 31 176 56 176 34 176 34 176 56 176 54 176 34 176 54 176 36 176 36 176 54 176 52 176 36 176 52 176 38 176 38 176 52 176 50 176 38 177 678 177 40 177 40 176 678 176 677 176 89 176 169 176 91 176 91 176 169 176 167 176 91 176 167 176 93 176 93 176 167 176 165 176 93 176 165 176 95 176 95 176 165 176 163 176 95 176 163 176 97 176 97 176 163 176 161 176 97 176 161 176 99 176 99 176 161 176 159 176 99 176 159 176 101 176 101 176 159 176 156 176 101 176 156 176 104 176 104 176 156 176 154 176 104 176 154 176 106 176 106 176 154 176 152 176 106 176 152 176 108 176 108 176 152 176 150 176 108 176 150 176 110 176 110 176 150 176 148 176 110 176 148 176 112 176 112 176 148 176 146 176 112 176 146 176 114 176 114 176 146 176 144 176 114 176 144 176 116 176 116 176 144 176 141 176 116 176 141 176 119 176 119 176 141 176 139 176 119 176 139 176 121 176 121 176 139 176 137 176 121 176 137 176 123 176 123 176 137 176 135 176 123 178 680 178 125 178 125 176 680 176 679 176 170 179 687 179 171 179 171 180 687 180 172 180 171 181 172 181 173 181 173 182 172 182 174 182 173 183 174 183 175 183 175 184 174 184 176 184 175 185 176 185 177 185 177 186 176 186 178 186 177 187 178 187 179 187 179 188 178 188 180 188 179 189 180 189 181 189 181 190 180 190 182 190 181 191 182 191 183 191 183 192 182 192 184 192 183 193 184 193 185 193 185 193 184 193 186 193 185 194 186 194 187 194 187 195 186 195 188 195 187 196 188 196 189 196 189 197 188 197 190 197 189 198 190 198 191 198 191 198 190 198 192 198 191 199 192 199 193 199 193 200 192 200 194 200 193 201 194 201 195 201 195 202 194 202 196 202 195 203 196 203 197 203 197 204 196 204 198 204 197 205 198 205 199 205 199 205 198 205 200 205 199 206 200 206 201 206 201 207 200 207 202 207 201 208 202 208 203 208 203 208 202 208 204 208 203 209 204 209 205 209 205 210 204 210 206 210 205 211 206 211 207 211 207 212 206 212 208 212 207 213 208 213 209 213 209 213 208 213 210 213 209 214 210 214 211 214 211 215 210 215 212 215 211 216 212 216 213 216 213 216 212 216 214 216 213 217 214 217 215 217 215 217 214 217 216 217 215 218 216 218 217 218 217 219 216 219 218 219 217 220 218 220 219 220 219 220 218 220 220 220 219 221 220 221 221 221 221 221 220 221 222 221 221 222 222 222 223 222 223 223 222 223 224 223 223 224 224 224 225 224 225 225 224 225 688 225 225 226 688 226 226 226 226 227 688 227 699 227 226 228 699 228 227 228 227 229 699 229 228 229 227 230 228 230 229 230 229 231 228 231 230 231 229 232 230 232 231 232 231 233 230 233 691 233 231 234 691 234 232 234 232 235 691 235 233 235 232 236 233 236 234 236 234 237 233 237 235 237 234 238 235 238 236 238 236 238 235 238 237 238 236 239 237 239 238 239 238 239 237 239 239 239 238 240 239 240 240 240 240 241 239 241 241 241 240 242 241 242 242 242 242 242 241 242 243 242 242 243 243 243 244 243 244 243 243 243 245 243 244 244 245 244 246 244 246 245 245 245 247 245 246 246 247 246 248 246 248 246 247 246 249 246 248 247 249 247 250 247 250 248 249 248 251 248 250 249 251 249 252 249 252 250 251 250 253 250 252 251 253 251 254 251 254 251 253 251 255 251 254 252 255 252 256 252 256 253 255 253 257 253 256 254 257 254 258 254 258 254 257 254 259 254 258 255 259 255 260 255 260 256 259 256 261 256 260 257 261 257 262 257 262 258 261 258 263 258 262 259 263 259 264 259 264 260 263 260 265 260 264 261 265 261 266 261 266 261 265 261 267 261 266 262 267 262 268 262 268 263 267 263 269 263 268 264 269 264 270 264 270 265 269 265 271 265 270 266 271 266 272 266 272 266 271 266 273 266 272 267 273 267 274 267 274 268 273 268 275 268 274 269 275 269 276 269 276 270 275 270 277 270 276 271 277 271 278 271 278 272 277 272 279 272 278 273 279 273 280 273 280 274 279 274 698 274 280 275 698 275 281 275 281 276 698 276 701 276 281 277 701 277 282 277 282 278 701 278 283 278 282 279 283 279 284 279 284 280 283 280 684 280 284 281 684 281 285 281 285 282 684 282 286 282 285 283 286 283 287 283 287 284 286 284 288 284 287 285 288 285 289 285 289 286 288 286 290 286 289 287 290 287 291 287 291 288 290 288 292 288 291 289 292 289 293 289 293 290 292 290 294 290 293 291 294 291 295 291 295 291 294 291 296 291 295 292 296 292 297 292 297 293 296 293 298 293 297 294 298 294 299 294 299 295 298 295 300 295 299 296 300 296 301 296 301 296 300 296 302 296 301 297 302 297 303 297 303 298 302 298 304 298 303 299 304 299 305 299 305 300 304 300 306 300 305 301 306 301 307 301 307 302 306 302 308 302 307 303 308 303 309 303 309 303 308 303 310 303 309 304 310 304 311 304 311 305 310 305 312 305 311 306 312 306 313 306 313 306 312 306 314 306 313 307 314 307 315 307 315 308 314 308 316 308 315 309 316 309 317 309 317 310 316 310 318 310 317 311 318 311 319 311 319 311 318 311 320 311 319 312 320 312 321 312 321 313 320 313 322 313 321 314 322 314 323 314 323 314 322 314 324 314 323 315 324 315 325 315 325 315 324 315 326 315 325 316 326 316 327 316 327 317 326 317 328 317 327 318 328 318 329 318 329 318 328 318 330 318 329 319 330 319 331 319 331 319 330 319 332 319 331 320 332 320 333 320 333 321 332 321 334 321 333 322 334 322 335 322 335 323 334 323 703 323 335 324 703 324 336 324 336 325 703 325 337 325 336 326 337 326 338 326 338 327 337 327 339 327 338 328 339 328 340 328 340 329 339 329 341 329 340 330 341 330 342 330 342 331 341 331 343 331 342 332 343 332 344 332 344 333 343 333 345 333 344 334 345 334 346 334 346 335 345 335 347 335 346 336 347 336 348 336 348 336 347 336 349 336 348 337 349 337 350 337 350 337 349 337 351 337 350 338 351 338 352 338 352 339 351 339 353 339 352 340 353 340 354 340 354 340 353 340 355 340 354 341 355 341 356 341 356 341 355 341 357 341 356 342 357 342 358 342 358 343 357 343 359 343 358 344 359 344 360 344 360 344 359 344 361 344 360 345 361 345 362 345 362 346 361 346 363 346 362 347 363 347 364 347 364 348 363 348 365 348 364 349 365 349 366 349 366 349 365 349 367 349 366 350 367 350 368 350 368 351 367 351 369 351 368 352 369 352 370 352 370 352 369 352 371 352 370 353 371 353 372 353 372 354 371 354 373 354 372 355 373 355 374 355 374 356 373 356 375 356 374 357 375 357 376 357 376 358 375 358 377 358 376 359 377 359 378 359 378 359 377 359 379 359 378 360 379 360 380 360 380 361 379 361 381 361 380 362 381 362 382 362 382 363 381 363 383 363 382 364 383 364 384 364 384 364 383 364 385 364 384 365 385 365 386 365 386 366 385 366 387 366 386 367 387 367 388 367 388 368 387 368 389 368 388 369 389 369 390 369 390 370 389 370 391 370 390 371 391 371 392 371 392 372 391 372 683 372 392 373 683 373 170 373 170 374 683 374 687 374 1 176 170 176 3 176 3 176 170 176 171 176 3 176 171 176 173 176 170 176 1 176 392 176 392 176 1 176 5 176 392 176 5 176 390 176 390 375 5 375 7 375 390 176 7 176 388 176 388 376 7 376 9 376 388 176 9 176 386 176 386 176 9 176 384 176 384 176 9 176 11 176 384 176 11 176 382 176 382 377 11 377 13 377 382 176 13 176 380 176 380 378 13 378 15 378 380 176 15 176 378 176 378 379 15 379 17 379 378 380 17 380 376 380 376 381 17 381 18 381 376 176 18 176 374 176 374 176 18 176 372 176 372 382 18 382 20 382 372 176 20 176 370 176 370 383 20 383 22 383 370 176 22 176 368 176 368 384 22 384 24 384 368 385 24 385 366 385 366 386 24 386 26 386 366 176 26 176 364 176 364 176 26 176 362 176 362 387 26 387 28 387 362 176 28 176 360 176 360 388 28 388 30 388 360 176 30 176 358 176 358 176 30 176 32 176 358 176 32 176 356 176 356 389 32 389 33 389 356 176 33 176 354 176 354 176 33 176 352 176 352 390 33 390 35 390 352 176 35 176 350 176 350 391 35 391 37 391 350 176 37 176 348 176 348 392 37 392 39 392 348 393 39 393 346 393 346 394 39 394 41 394 346 176 41 176 344 176 344 176 41 176 342 176 342 395 41 395 42 395 342 176 42 176 340 176 340 396 42 396 43 396 340 397 43 397 338 397 338 176 43 176 45 176 338 398 45 398 336 398 336 399 45 399 46 399 336 176 46 176 335 176 335 400 46 400 47 400 335 176 47 176 333 176 333 176 47 176 331 176 331 401 47 401 49 401 331 402 49 402 329 402 329 403 49 403 51 403 329 176 51 176 327 176 327 404 51 404 53 404 327 176 53 176 325 176 325 405 53 405 55 405 325 406 55 406 323 406 323 407 55 407 321 407 321 408 55 408 57 408 321 176 57 176 319 176 319 176 57 176 58 176 319 176 58 176 317 176 317 409 58 409 60 409 317 176 60 176 315 176 315 410 60 410 62 410 315 176 62 176 313 176 313 176 62 176 311 176 311 411 62 411 64 411 311 412 64 412 309 412 309 413 64 413 66 413 309 176 66 176 307 176 307 414 66 414 68 414 307 176 68 176 305 176 305 415 68 415 70 415 305 176 70 176 303 176 303 176 70 176 301 176 301 416 70 416 72 416 301 417 72 417 299 417 299 418 72 418 73 418 299 176 73 176 297 176 297 419 73 419 75 419 297 176 75 176 295 176 295 420 75 420 77 420 295 176 77 176 293 176 293 176 77 176 79 176 293 176 79 176 291 176 291 176 79 176 289 176 289 421 79 421 81 421 289 422 81 422 287 422 287 423 81 423 83 423 287 176 83 176 285 176 285 176 83 176 85 176 285 176 85 176 284 176 284 176 85 176 87 176 284 176 87 176 282 176 282 176 87 176 281 176 281 176 87 176 88 176 281 176 88 176 280 176 280 176 88 176 90 176 280 176 90 176 278 176 278 423 90 423 92 423 278 176 92 176 276 176 276 421 92 421 94 421 276 176 94 176 274 176 274 176 94 176 272 176 272 176 94 176 96 176 272 176 96 176 270 176 270 420 96 420 98 420 270 176 98 176 268 176 268 419 98 419 100 419 268 176 100 176 266 176 266 418 100 418 102 418 266 424 102 424 264 424 264 416 102 416 103 416 264 176 103 176 262 176 262 176 103 176 260 176 260 415 103 415 105 415 260 176 105 176 258 176 258 414 105 414 107 414 258 176 107 176 256 176 256 413 107 413 109 413 256 425 109 425 254 425 254 411 109 411 111 411 254 176 111 176 252 176 252 176 111 176 250 176 250 410 111 410 113 410 250 176 113 176 248 176 248 409 113 409 115 409 248 176 115 176 246 176 246 176 115 176 117 176 246 176 117 176 244 176 244 408 117 408 118 408 244 176 118 176 242 176 242 176 118 176 240 176 240 405 118 405 120 405 240 176 120 176 238 176 238 404 120 404 122 404 238 176 122 176 236 176 236 403 122 403 124 403 236 402 124 402 234 402 234 401 124 401 126 401 234 176 126 176 232 176 232 176 126 176 231 176 231 400 126 400 127 400 231 176 127 176 229 176 229 399 127 399 128 399 229 426 128 426 227 426 227 176 128 176 130 176 227 427 130 427 226 427 226 396 130 396 131 396 226 176 131 176 225 176 225 395 131 395 132 395 225 176 132 176 223 176 223 176 132 176 221 176 221 394 132 394 134 394 221 393 134 393 219 393 219 392 134 392 136 392 219 176 136 176 217 176 217 391 136 391 138 391 217 176 138 176 215 176 215 390 138 390 140 390 215 428 140 428 213 428 213 429 140 429 211 429 211 389 140 389 142 389 211 176 142 176 209 176 209 176 142 176 143 176 209 176 143 176 207 176 207 388 143 388 145 388 207 176 145 176 205 176 205 387 145 387 147 387 205 176 147 176 203 176 203 176 147 176 201 176 201 386 147 386 149 386 201 430 149 430 199 430 199 384 149 384 151 384 199 176 151 176 197 176 197 383 151 383 153 383 197 176 153 176 195 176 195 382 153 382 155 382 195 176 155 176 193 176 193 176 155 176 191 176 191 381 155 381 157 381 191 431 157 431 189 431 189 379 157 379 158 379 189 176 158 176 187 176 187 378 158 378 160 378 187 176 160 176 185 176 185 377 160 377 162 377 185 176 162 176 183 176 183 176 162 176 164 176 183 176 164 176 181 176 181 176 164 176 179 176 179 376 164 376 166 376 179 432 166 432 177 432 177 375 166 375 168 375 177 176 168 176 175 176 175 176 168 176 4 176 175 176 4 176 173 176 173 176 4 176 3 176 393 433 683 433 391 433 391 434 389 434 393 434 393 176 389 176 387 176 393 435 387 435 385 435 385 176 383 176 393 176 393 176 383 176 381 176 393 176 381 176 379 176 379 176 377 176 393 176 393 176 377 176 375 176 393 176 375 176 373 176 373 176 371 176 393 176 393 176 371 176 369 176 393 176 369 176 394 176 394 176 369 176 395 176 395 176 369 176 396 176 396 176 369 176 397 176 397 176 369 176 398 176 398 176 369 176 399 176 399 176 369 176 367 176 399 176 367 176 400 176 400 176 367 176 401 176 401 176 367 176 402 176 402 176 367 176 403 176 403 176 367 176 404 176 404 176 367 176 405 176 405 176 367 176 406 176 406 176 367 176 365 176 406 176 365 176 363 176 363 176 361 176 406 176 406 176 361 176 359 176 406 176 359 176 357 176 357 176 355 176 406 176 406 176 355 176 353 176 406 176 353 176 351 176 351 176 349 176 406 176 406 176 349 176 347 176 406 176 347 176 345 176 345 176 343 176 406 176 337 176 703 176 407 176 407 176 703 176 334 176 334 176 332 176 407 176 407 176 332 176 330 176 407 176 330 176 328 176 328 176 326 176 407 176 407 176 326 176 324 176 407 176 324 176 322 176 322 176 320 176 407 176 407 176 320 176 318 176 407 176 318 176 316 176 316 176 314 176 407 176 407 176 314 176 312 176 407 176 312 176 408 176 408 176 312 176 409 176 409 176 312 176 410 176 410 176 312 176 411 176 411 176 312 176 412 176 412 176 312 176 413 176 413 176 312 176 414 176 414 176 312 176 310 176 414 176 310 176 415 176 415 176 310 176 416 176 416 176 310 176 417 176 417 176 310 176 418 176 418 176 310 176 419 176 419 176 310 176 420 176 420 176 310 176 308 176 420 176 308 176 306 176 306 176 304 176 420 176 420 176 304 176 302 176 420 176 302 176 300 176 300 176 298 176 420 176 420 176 298 176 296 176 420 176 296 176 294 176 294 176 292 176 420 176 420 176 292 176 290 176 420 436 290 436 288 436 288 176 286 176 420 176 420 437 286 437 684 437 421 438 698 438 279 438 279 439 277 439 421 439 421 176 277 176 275 176 421 440 275 440 273 440 273 176 271 176 421 176 421 176 271 176 269 176 421 176 269 176 267 176 267 176 265 176 421 176 421 176 265 176 263 176 421 176 263 176 261 176 261 176 259 176 421 176 421 176 259 176 257 176 421 176 257 176 422 176 422 176 257 176 423 176 423 176 257 176 424 176 424 176 257 176 425 176 425 176 257 176 426 176 426 176 257 176 427 176 427 176 257 176 255 176 427 176 255 176 428 176 428 176 255 176 429 176 429 176 255 176 430 176 430 176 255 176 431 176 431 176 255 176 432 176 432 176 255 176 433 176 433 176 255 176 434 176 434 176 255 176 253 176 434 176 253 176 251 176 251 176 249 176 434 176 434 176 249 176 247 176 434 176 247 176 245 176 245 176 243 176 434 176 434 176 243 176 241 176 434 176 241 176 239 176 239 176 237 176 434 176 434 176 237 176 235 176 434 176 235 176 233 176 233 176 691 176 434 176 435 176 688 176 224 176 224 176 222 176 435 176 435 176 222 176 220 176 435 176 220 176 218 176 218 176 216 176 435 176 435 176 216 176 214 176 435 176 214 176 212 176 212 176 210 176 435 176 435 176 210 176 208 176 435 176 208 176 206 176 206 176 204 176 435 176 435 176 204 176 202 176 435 176 202 176 436 176 436 176 202 176 437 176 437 176 202 176 438 176 438 176 202 176 439 176 439 176 202 176 440 176 440 176 202 176 441 176 441 176 202 176 442 176 442 176 202 176 200 176 442 176 200 176 443 176 443 176 200 176 444 176 444 176 200 176 445 176 445 176 200 176 446 176 446 176 200 176 447 176 447 176 200 176 448 176 448 176 200 176 198 176 448 176 198 176 196 176 196 176 194 176 448 176 448 176 194 176 192 176 448 176 192 176 190 176 190 176 188 176 448 176 448 176 188 176 186 176 448 176 186 176 184 176 184 176 182 176 448 176 448 176 182 176 180 176 448 441 180 441 178 441 178 176 176 176 448 176 341 442 449 442 406 442 449 443 339 443 450 443 450 444 337 444 407 444 450 445 407 445 685 445 685 446 407 446 408 446 685 447 408 447 451 447 451 448 408 448 409 448 451 449 409 449 689 449 689 450 409 450 410 450 689 451 410 451 452 451 452 452 410 452 411 452 452 453 411 453 686 453 686 454 411 454 412 454 686 455 412 455 453 455 453 456 412 456 413 456 453 457 413 457 454 457 454 457 413 457 414 457 454 458 414 458 455 458 455 459 414 459 415 459 455 460 415 460 456 460 456 460 415 460 416 460 456 461 416 461 457 461 457 461 416 461 417 461 457 462 417 462 458 462 458 463 417 463 418 463 458 464 418 464 459 464 459 464 418 464 419 464 459 465 419 465 460 465 460 465 419 465 420 465 460 466 283 466 461 466 701 467 698 467 461 467 461 468 421 468 707 468 707 469 421 469 422 469 707 470 422 470 462 470 462 471 422 471 423 471 462 472 423 472 706 472 706 473 423 473 424 473 706 474 424 474 463 474 463 475 424 475 425 475 463 476 425 476 708 476 708 477 425 477 426 477 708 478 426 478 464 478 464 479 426 479 427 479 464 480 427 480 465 480 465 480 427 480 428 480 465 481 428 481 466 481 466 481 428 481 429 481 466 482 429 482 467 482 467 482 429 482 430 482 467 483 430 483 468 483 468 484 430 484 431 484 468 485 431 485 469 485 469 486 431 486 432 486 469 487 432 487 470 487 470 488 432 488 433 488 470 489 433 489 471 489 471 490 433 490 434 490 230 491 471 491 434 491 471 492 228 492 472 492 699 493 688 493 472 493 472 494 435 494 473 494 473 495 435 495 436 495 473 496 436 496 474 496 474 497 436 497 437 497 474 498 437 498 475 498 475 499 437 499 438 499 475 500 438 500 476 500 476 501 438 501 439 501 476 502 439 502 477 502 477 502 439 502 440 502 477 503 440 503 478 503 478 503 440 503 441 503 478 504 441 504 479 504 479 504 441 504 442 504 479 505 442 505 480 505 480 506 442 506 443 506 480 507 443 507 704 507 704 508 443 508 444 508 704 509 444 509 481 509 481 510 444 510 445 510 481 511 445 511 709 511 709 512 445 512 446 512 709 513 446 513 482 513 482 514 446 514 447 514 482 515 447 515 483 515 483 516 447 516 448 516 174 517 483 517 448 517 483 518 172 518 484 518 687 519 683 519 484 519 484 520 393 520 485 520 485 520 393 520 394 520 485 521 394 521 486 521 486 521 394 521 395 521 486 522 395 522 487 522 487 523 395 523 396 523 487 524 396 524 488 524 488 524 396 524 397 524 488 525 397 525 489 525 489 525 397 525 398 525 489 526 398 526 490 526 490 527 398 527 399 527 490 528 399 528 491 528 491 528 399 528 400 528 491 529 400 529 492 529 492 529 400 529 401 529 492 530 401 530 493 530 493 531 401 531 402 531 493 532 402 532 700 532 700 533 402 533 403 533 700 534 403 534 494 534 494 535 403 535 404 535 494 536 404 536 495 536 495 537 404 537 405 537 495 538 405 538 449 538 449 539 405 539 406 539 461 540 462 540 706 540 461 540 463 540 708 540 708 540 465 540 461 540 465 540 466 540 461 540 461 540 466 540 467 540 461 540 467 540 468 540 468 540 469 540 461 540 461 540 469 540 470 540 461 540 470 540 471 540 471 540 472 540 461 540 461 540 472 540 460 540 460 540 472 540 483 540 460 540 483 540 450 540 450 540 483 540 484 540 450 540 484 540 449 540 449 540 484 540 485 540 449 540 485 540 486 540 472 540 473 540 483 540 483 540 473 540 474 540 483 540 474 540 475 540 475 540 476 540 483 540 483 540 476 540 477 540 483 540 477 540 478 540 478 540 480 540 483 540 483 540 480 540 704 540 481 540 709 540 483 540 486 540 487 540 449 540 449 540 487 540 488 540 449 540 488 540 489 540 489 540 490 540 449 540 449 540 490 540 491 540 491 540 493 540 449 540 493 540 700 540 449 540 449 540 494 540 495 540 450 540 451 540 689 540 450 540 452 540 686 540 686 540 454 540 450 540 454 540 455 540 450 540 450 540 455 540 456 540 450 540 456 540 457 540 457 540 458 540 450 540 450 540 458 540 459 540 450 540 459 540 460 540 496 176 497 176 498 176 498 176 499 176 500 176 500 176 499 176 501 176 502 176 501 176 503 176 506 176 505 176 507 176 508 176 509 176 510 176 512 541 513 541 514 541 514 542 513 542 515 542 516 176 517 176 518 176 518 176 517 176 519 176 518 176 519 176 520 176 520 176 519 176 521 176 522 176 523 176 524 176 524 176 525 176 526 176 531 543 536 543 537 543 537 176 538 176 531 176 531 544 538 544 539 544 531 545 539 545 540 545 531 546 541 546 542 546 531 547 542 547 543 547 543 176 544 176 531 176 531 548 545 548 546 548 546 176 547 176 531 176 534 549 548 549 498 549 498 550 548 550 549 550 498 551 549 551 550 551 498 552 551 552 552 552 498 553 554 553 555 553 498 176 557 176 558 176 498 176 558 176 559 176 559 554 496 554 498 554 0 540 84 540 2 540 2 540 84 540 86 540 2 540 86 540 169 540 169 540 86 540 89 540 169 540 89 540 167 540 167 540 89 540 91 540 167 540 91 540 165 540 165 540 91 540 93 540 165 540 93 540 163 540 163 540 93 540 95 540 163 540 95 540 161 540 161 540 95 540 97 540 161 540 97 540 159 540 159 540 97 540 99 540 159 540 99 540 156 540 156 540 99 540 101 540 156 540 101 540 154 540 154 540 101 540 104 540 154 540 104 540 152 540 152 540 104 540 106 540 152 540 106 540 150 540 150 540 106 540 108 540 150 540 108 540 148 540 148 540 108 540 110 540 148 540 110 540 146 540 146 540 110 540 112 540 146 540 112 540 144 540 144 540 112 540 114 540 144 540 114 540 141 540 141 540 114 540 116 540 141 540 116 540 139 540 139 540 116 540 119 540 139 540 119 540 137 540 137 540 119 540 121 540 137 540 121 540 135 540 135 540 121 540 123 540 135 540 123 540 133 540 123 555 680 555 133 555 84 540 0 540 82 540 82 540 0 540 6 540 82 540 6 540 80 540 80 540 6 540 8 540 80 540 8 540 78 540 78 540 8 540 10 540 78 540 10 540 76 540 76 540 10 540 12 540 76 540 12 540 74 540 74 540 12 540 14 540 74 540 14 540 71 540 71 540 14 540 16 540 71 540 16 540 69 540 69 540 16 540 19 540 69 540 19 540 67 540 67 540 19 540 21 540 67 540 21 540 65 540 65 540 21 540 23 540 65 540 23 540 63 540 63 540 23 540 25 540 63 540 25 540 61 540 61 540 25 540 27 540 61 540 27 540 59 540 59 540 27 540 29 540 59 540 29 540 56 540 56 540 29 540 31 540 56 540 31 540 54 540 54 540 31 540 34 540 54 540 34 540 52 540 52 540 34 540 36 540 52 540 36 540 50 540 50 540 36 540 38 540 50 540 38 540 48 540 38 556 678 556 48 556 560 557 561 557 562 557 562 558 561 558 563 558 562 559 563 559 564 559 564 560 563 560 565 560 564 561 565 561 566 561 566 562 565 562 567 562 566 563 567 563 568 563 568 564 567 564 503 564 568 565 503 565 505 565 561 566 560 566 569 566 569 567 560 567 570 567 569 568 570 568 571 568 571 569 570 569 572 569 571 570 572 570 558 570 558 571 572 571 557 571 557 572 572 572 573 572 557 573 573 573 556 573 556 574 573 574 574 574 556 575 574 575 555 575 555 576 574 576 575 576 555 577 575 577 554 577 554 578 575 578 576 578 554 579 576 579 553 579 553 580 576 580 577 580 553 581 577 581 552 581 552 582 577 582 578 582 552 583 578 583 551 583 551 584 578 584 579 584 551 585 579 585 550 585 550 586 579 586 580 586 550 587 580 587 549 587 549 588 580 588 581 588 549 589 581 589 548 589 548 590 581 590 582 590 548 591 582 591 534 591 534 592 582 592 583 592 534 593 583 593 533 593 533 594 583 594 584 594 533 595 584 595 532 595 532 596 584 596 585 596 532 597 585 597 547 597 547 598 585 598 586 598 547 599 586 599 546 599 546 600 586 600 587 600 546 601 587 601 545 601 545 602 587 602 588 602 545 603 588 603 544 603 544 604 588 604 589 604 544 605 589 605 543 605 543 606 589 606 590 606 543 607 590 607 542 607 542 608 590 608 591 608 542 609 591 609 541 609 541 610 591 610 592 610 541 611 592 611 540 611 540 612 592 612 593 612 540 613 593 613 539 613 539 614 593 614 594 614 539 615 594 615 538 615 538 616 594 616 595 616 538 617 595 617 537 617 537 618 595 618 596 618 537 619 596 619 536 619 536 620 596 620 597 620 536 621 597 621 535 621 535 622 597 622 598 622 535 623 598 623 696 623 696 624 598 624 599 624 696 625 599 625 692 625 692 626 599 626 600 626 692 627 600 627 690 627 690 628 600 628 601 628 690 629 601 629 681 629 681 630 601 630 602 630 681 631 602 631 531 631 531 632 602 632 603 632 531 633 603 633 498 633 498 634 603 634 604 634 498 635 604 635 500 635 500 636 604 636 605 636 500 637 605 637 502 637 502 638 605 638 606 638 502 639 606 639 504 639 504 640 606 640 607 640 504 641 607 641 506 641 506 642 607 642 608 642 506 643 608 643 508 643 508 644 608 644 609 644 508 645 609 645 510 645 510 646 609 646 610 646 510 647 610 647 512 647 512 648 610 648 611 648 512 649 611 649 514 649 514 650 611 650 612 650 514 651 612 651 516 651 516 652 612 652 613 652 516 653 613 653 518 653 518 654 613 654 614 654 518 655 614 655 520 655 520 656 614 656 615 656 520 657 615 657 522 657 522 658 615 658 616 658 522 659 616 659 524 659 524 660 616 660 617 660 524 661 617 661 526 661 526 662 617 662 618 662 526 663 618 663 528 663 528 664 618 664 619 664 528 665 619 665 529 665 529 666 619 666 620 666 529 667 620 667 530 667 530 668 620 668 621 668 530 669 621 669 705 669 705 670 621 670 622 670 705 671 622 671 527 671 527 672 622 672 623 672 527 673 623 673 525 673 525 674 623 674 624 674 525 675 624 675 523 675 523 676 624 676 625 676 523 677 625 677 521 677 521 678 625 678 626 678 521 679 626 679 519 679 519 680 626 680 627 680 519 681 627 681 517 681 517 682 627 682 628 682 517 683 628 683 515 683 515 684 628 684 629 684 515 685 629 685 513 685 513 686 629 686 630 686 513 687 630 687 511 687 511 688 630 688 631 688 511 689 631 689 509 689 509 690 631 690 632 690 509 691 632 691 507 691 507 692 632 692 633 692 507 693 633 693 505 693 505 694 633 694 568 694 570 695 634 695 572 695 572 696 634 696 573 696 634 697 635 697 573 697 573 698 635 698 574 698 635 699 636 699 574 699 574 700 636 700 575 700 575 701 636 701 576 701 576 702 636 702 637 702 576 703 637 703 577 703 577 704 637 704 638 704 577 705 638 705 578 705 578 706 638 706 639 706 578 707 639 707 579 707 579 708 639 708 580 708 639 709 640 709 580 709 580 710 640 710 581 710 640 711 641 711 581 711 581 712 641 712 582 712 641 713 642 713 582 713 582 714 642 714 583 714 583 715 642 715 584 715 584 716 642 716 682 716 584 717 682 717 585 717 585 718 682 718 643 718 585 719 643 719 586 719 586 720 643 720 693 720 586 721 693 721 587 721 587 722 693 722 588 722 693 723 697 723 588 723 588 724 697 724 589 724 697 725 644 725 589 725 589 726 644 726 590 726 644 727 645 727 590 727 590 728 645 728 591 728 591 729 645 729 592 729 592 730 645 730 646 730 592 731 646 731 593 731 593 732 646 732 647 732 593 733 647 733 594 733 594 734 647 734 648 734 594 735 648 735 595 735 595 736 648 736 596 736 648 737 649 737 596 737 596 738 649 738 597 738 649 739 650 739 597 739 597 740 650 740 598 740 650 741 651 741 598 741 598 742 651 742 599 742 599 743 651 743 600 743 600 744 651 744 652 744 600 745 652 745 601 745 601 746 652 746 653 746 601 747 653 747 602 747 602 748 653 748 654 748 602 749 654 749 603 749 603 750 654 750 604 750 654 751 655 751 604 751 604 752 655 752 605 752 655 753 656 753 605 753 605 754 656 754 606 754 656 755 657 755 606 755 606 756 657 756 607 756 607 757 657 757 608 757 608 758 657 758 658 758 608 759 658 759 609 759 609 760 658 760 659 760 609 761 659 761 610 761 610 762 659 762 660 762 610 763 660 763 611 763 611 764 660 764 612 764 660 765 661 765 612 765 612 766 661 766 613 766 661 767 662 767 613 767 613 768 662 768 614 768 662 769 663 769 614 769 614 770 663 770 615 770 615 771 663 771 616 771 616 772 663 772 664 772 616 773 664 773 617 773 617 774 664 774 665 774 617 775 665 775 618 775 618 776 665 776 666 776 618 777 666 777 619 777 619 778 666 778 620 778 666 779 667 779 620 779 620 780 667 780 621 780 667 781 668 781 621 781 621 782 668 782 622 782 668 783 702 783 622 783 622 784 702 784 623 784 623 785 702 785 624 785 624 786 702 786 669 786 624 787 669 787 625 787 625 788 669 788 670 788 625 789 670 789 626 789 626 790 670 790 671 790 626 791 671 791 627 791 627 792 671 792 628 792 671 793 672 793 628 793 628 794 672 794 629 794 672 795 673 795 629 795 629 796 673 796 630 796 673 797 674 797 630 797 630 798 674 798 631 798 631 799 674 799 632 799 632 800 674 800 675 800 632 801 675 801 633 801 633 802 675 802 676 802 633 803 676 803 568 803 568 804 676 804 566 804 499 805 563 805 497 805 497 806 563 806 561 806 497 807 561 807 496 807 496 808 561 808 569 808 496 809 569 809 559 809 559 810 569 810 571 810 559 811 571 811 558 811 563 812 499 812 565 812 565 813 499 813 501 813 565 814 501 814 567 814 567 815 501 815 503 815 499 816 497 816 498 816 498 817 557 817 556 817 556 540 555 540 498 540 498 818 554 818 553 818 553 540 552 540 498 540 498 819 551 819 550 819 534 540 533 540 498 540 498 820 533 820 532 820 498 821 532 821 531 821 531 822 532 822 547 822 531 823 545 823 544 823 531 824 541 824 540 824 536 825 696 825 692 825 501 826 500 826 502 826 503 827 502 827 504 827 503 540 504 540 505 540 505 540 504 540 506 540 507 540 506 540 508 540 507 828 508 828 509 828 509 540 510 540 511 540 511 540 510 540 512 540 511 540 512 540 513 540 515 829 514 829 516 829 515 830 516 830 517 830 521 540 520 540 522 540 521 540 522 540 523 540 523 540 524 540 525 540 705 540 525 540 528 540 705 540 528 540 529 540 564 176 655 176 562 176 562 176 655 176 654 176 562 176 654 176 560 176 560 176 654 176 653 176 560 176 653 176 570 176 570 176 653 176 652 176 570 176 652 176 634 176 634 176 652 176 651 176 634 176 651 176 635 176 635 176 651 176 650 176 635 176 650 176 636 176 636 176 650 176 649 176 636 176 649 176 637 176 637 176 649 176 648 176 637 176 648 176 638 176 638 176 648 176 647 176 638 176 647 176 639 176 639 176 647 176 646 176 639 176 646 176 640 176 640 176 646 176 645 176 640 176 645 176 641 176 641 176 645 176 644 176 682 831 641 831 697 831 682 176 697 176 693 176 655 176 564 176 656 176 656 176 564 176 566 176 656 176 566 176 657 176 657 176 566 176 676 176 657 176 676 176 658 176 658 176 676 176 675 176 658 176 675 176 659 176 659 176 675 176 674 176 659 176 674 176 660 176 660 176 674 176 673 176 660 176 673 176 661 176 661 176 673 176 672 176 661 176 672 176 662 176 662 176 672 176 671 176 662 176 671 176 663 176 663 176 671 176 670 176 663 176 670 176 664 176 664 176 670 176 669 176 664 176 702 176 665 176 666 832 668 832 667 832 678 984 677 984 44 984 678 176 50 176 48 176 680 985 679 985 129 985 680 176 135 176 133 176 529 176 705 176 530 176 450 540 689 540 452 540 406 176 343 176 341 176 450 540 685 540 451 540 666 176 702 176 668 176 692 986 681 986 531 986 682 176 693 176 643 176 44 540 677 540 694 540 129 540 679 540 695 540 448 987 176 987 174 987 449 540 700 540 494 540 665 176 702 176 666 176 483 540 704 540 481 540 434 176 691 176 230 176 461 540 707 540 462 540 420 988 684 988 460 988 706 540 463 540 461 540 483 540 709 540 482 540 38 176 50 176 678 176 123 176 135 176 680 176 341 989 339 989 449 989 450 990 339 990 337 990 460 991 684 991 283 991 421 992 461 992 698 992 461 993 283 993 701 993 230 994 228 994 471 994 435 995 472 995 688 995 472 996 228 996 699 996 174 997 172 997 483 997 393 998 484 998 683 998 484 999 172 999 687 999 708 540 464 540 465 540 478 540 479 540 480 540 491 540 492 540 493 540 686 540 453 540 454 540 692 540 531 540 536 540 536 540 535 540 696 540 527 540 525 540 705 540 525 540 526 540 528 540 642 176 641 176 682 176 641 176 644 176 697 176 664 176 669 176 702 176 692 540 690 540 681 540

+
+ + + +

496 833 0 833 497 833 497 834 0 834 2 834 497 835 2 835 169 835 0 836 496 836 6 836 6 837 496 837 559 837 6 838 559 838 8 838 8 839 559 839 558 839 8 840 558 840 10 840 10 841 558 841 557 841 10 842 557 842 12 842 12 843 557 843 556 843 12 844 556 844 14 844 14 845 556 845 16 845 16 846 556 846 555 846 16 847 555 847 19 847 19 848 555 848 554 848 19 849 554 849 21 849 21 850 554 850 553 850 21 851 553 851 23 851 23 852 553 852 552 852 23 853 552 853 25 853 25 854 552 854 551 854 25 855 551 855 27 855 27 856 551 856 550 856 27 857 550 857 29 857 29 858 550 858 31 858 31 859 550 859 549 859 31 860 549 860 34 860 34 861 549 861 548 861 34 862 548 862 36 862 36 863 548 863 534 863 36 864 534 864 38 864 38 865 534 865 533 865 38 866 533 866 40 866 40 867 533 867 532 867 40 868 532 868 677 868 677 869 532 869 694 869 694 870 532 870 547 870 694 871 547 871 44 871 44 872 547 872 546 872 44 873 546 873 678 873 678 874 546 874 545 874 678 875 545 875 48 875 48 876 545 876 544 876 48 877 544 877 50 877 50 878 544 878 543 878 50 879 543 879 52 879 52 880 543 880 54 880 54 881 543 881 542 881 54 882 542 882 56 882 56 883 542 883 541 883 56 884 541 884 59 884 59 885 541 885 540 885 59 886 540 886 61 886 61 887 540 887 539 887 61 888 539 888 63 888 63 889 539 889 538 889 63 890 538 890 65 890 65 891 538 891 537 891 65 892 537 892 67 892 67 893 537 893 69 893 69 894 537 894 536 894 69 895 536 895 71 895 71 896 536 896 535 896 71 897 535 897 74 897 74 898 535 898 696 898 74 899 696 899 76 899 76 900 696 900 692 900 76 901 692 901 78 901 78 902 692 902 690 902 78 903 690 903 80 903 80 904 690 904 82 904 82 905 690 905 681 905 82 906 681 906 84 906 84 907 681 907 531 907 84 908 531 908 86 908 86 909 531 909 498 909 86 910 498 910 89 910 89 911 498 911 500 911 89 912 500 912 91 912 91 913 500 913 502 913 91 914 502 914 93 914 93 915 502 915 95 915 95 916 502 916 504 916 95 917 504 917 97 917 97 918 504 918 506 918 97 919 506 919 99 919 99 920 506 920 508 920 99 921 508 921 101 921 101 922 508 922 510 922 101 923 510 923 104 923 104 924 510 924 512 924 104 925 512 925 106 925 106 926 512 926 108 926 108 927 512 927 514 927 108 928 514 928 110 928 110 929 514 929 516 929 110 930 516 930 112 930 112 931 516 931 518 931 112 932 518 932 114 932 114 933 518 933 520 933 114 934 520 934 116 934 116 935 520 935 522 935 116 936 522 936 119 936 119 937 522 937 524 937 119 938 524 938 121 938 121 939 524 939 123 939 123 940 524 940 526 940 123 941 526 941 125 941 125 942 526 942 528 942 125 943 528 943 679 943 679 944 528 944 529 944 679 945 529 945 695 945 695 946 529 946 530 946 695 947 530 947 129 947 129 948 530 948 705 948 129 949 705 949 680 949 680 950 705 950 133 950 133 951 705 951 527 951 133 952 527 952 135 952 135 953 527 953 525 953 135 954 525 954 137 954 137 955 525 955 523 955 137 956 523 956 139 956 139 957 523 957 521 957 139 958 521 958 141 958 141 959 521 959 519 959 141 960 519 960 144 960 144 961 519 961 146 961 146 962 519 962 517 962 146 963 517 963 148 963 148 964 517 964 515 964 148 965 515 965 150 965 150 966 515 966 513 966 150 967 513 967 152 967 152 968 513 968 511 968 152 969 511 969 154 969 154 970 511 970 509 970 154 971 509 971 156 971 156 972 509 972 507 972 156 973 507 973 159 973 159 974 507 974 161 974 161 975 507 975 505 975 161 976 505 976 163 976 163 977 505 977 503 977 163 978 503 978 165 978 165 979 503 979 501 979 165 980 501 980 167 980 167 981 501 981 499 981 167 982 499 982 169 982 169 983 499 983 497 983

+
+
+
+
+ + + + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.055189 0.6045247 0.7946723 5.903862 0 0 0 1 + + + + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054209 -0.6141704 -6.925791 -4.01133e-9 0.8953956 0.4452714 4.958309 0 0 0 1 + + + + 9.86784e-4 0 0 0 0 9.86784e-4 0 0 0 0 0.001 0 0 0 0 1 + + + + + + + + + + + 0.07677899 0.1474173 -0.9860898 -27.50253 -0.9967403 0.03592319 -0.07223785 -6.925791 0.02477439 0.9884218 0.1496949 4.958309 0 0 0 1 + + + + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183911 1.005454 -0.05518897 0.6045246 0.7946723 5.903862 0 0 0 1 + + + + 0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1 + + + + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + + + + + + + +
\ No newline at end of file diff --git a/src/dcaiti_control/description/assets/yellow_cone.dae b/src/dcaiti_control/description/assets/yellow_cone.dae index 5807b0a..702a937 100644 --- a/src/dcaiti_control/description/assets/yellow_cone.dae +++ b/src/dcaiti_control/description/assets/yellow_cone.dae @@ -5,8 +5,8 @@ Blender User Blender 3.3.11 commit date:2023-09-21, commit time:06:07, hash:6a3240da1dc8 - 2023-10-29T16:28:48 - 2023-10-29T16:28:48 + 2023-10-29T19:26:22 + 2023-10-29T19:26:22 Z_UP diff --git a/src/dcaiti_control/description/blue_cone.xacro b/src/dcaiti_control/description/blue_cone.xacro new file mode 100644 index 0000000..8fd54e3 --- /dev/null +++ b/src/dcaiti_control/description/blue_cone.xacro @@ -0,0 +1,24 @@ + + + + + + + + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/dcaiti_control/description/yellow_cone.xacro b/src/dcaiti_control/description/yellow_cone.xacro index 81864ba..e1ecf39 100644 --- a/src/dcaiti_control/description/yellow_cone.xacro +++ b/src/dcaiti_control/description/yellow_cone.xacro @@ -3,12 +3,12 @@ + + + true + + - - - - - diff --git a/src/dcaiti_control/launch/launch_sim.py b/src/dcaiti_control/launch/launch_sim.py index 3f202da..e7ae612 100644 --- a/src/dcaiti_control/launch/launch_sim.py +++ b/src/dcaiti_control/launch/launch_sim.py @@ -1,4 +1,5 @@ import os +from pathlib import Path from ament_index_python.packages import get_package_share_directory @@ -16,6 +17,139 @@ from launch_ros.actions import Node from launch.actions import RegisterEventHandler from launch.event_handlers import OnProcessExit +from pathlib import Path +from typing import List, Tuple, Union, cast, Dict +from struct import Struct +from enum import IntEnum + +import numpy as np + + + +class ConeTypes(IntEnum): + """ + Enum for all possible cone types + """ + + UNKNOWN = 0 + YELLOW = 1 + RIGHT = 1 + BLUE = 2 + LEFT = 2 + ORANGE_SMALL = 3 + START_FINISH_AREA = 3 + ORANGE_BIG = 4 + START_FINISH_LINE = 4 + + +HEADER_STRUCT = Struct("6sBBhBB") +BLOCK_STRUCT = Struct("2h4B") + +LytObjectIndexToConeType: Dict[int, ConeTypes] = { + 25: ConeTypes.UNKNOWN, + 29: ConeTypes.YELLOW, + 30: ConeTypes.YELLOW, + 23: ConeTypes.BLUE, + 24: ConeTypes.BLUE, + 27: ConeTypes.ORANGE_BIG, + 20: ConeTypes.ORANGE_SMALL, +} + +def split_header_blocks(data: bytes) -> Tuple[bytes, bytes]: + """ + Split the content of the lyt file into header and block. This split is easy because + the header has a fixed size + + Args: + data (bytes): The content of the lyt file + + Returns: + Tuple[bytes, bytes]: The header and the block + """ + return data[: HEADER_STRUCT.size], data[HEADER_STRUCT.size :] + + +def verify_lyt_header(header_data: bytes) -> None: + """ + Parse the header and perform some sanity checks suggested by the LFS documentation + + Args: + header_data (bytes): The header bytes of the `.lyt` file + """ + + header = cast( + Tuple[bytes, int, int, int, int, int], HEADER_STRUCT.unpack(header_data) + ) + + file_type, version, revision, _, _, _ = header + assert file_type == b"LFSLYT" + assert version <= 0, version + # revision allowed up to 252 + # https://www.lfs.net/forum/thread/96153-LYT-revision-252-in-W-patch + assert revision <= 252, revision + + +def extract_cone_lists(blocks_data: bytes) -> List[List[Tuple[float, float]]]: + """ + Extract the cone object positions from the object blocks bytes of a lyt file + + Args: + blocks_data (bytes): The data in the lyt file that is not the header + + Returns: + List[List[Tuple[int, int]]]: The cone positions split by cone type + """ + decoded_blocks = BLOCK_STRUCT.iter_unpack(blocks_data) + all_cones_per_type: List[List[Tuple[float, float]]] = [[] for _ in ConeTypes] + + # cone_info: + for cone_info in decoded_blocks: + obj_x, obj_y, _, _, lyt_obj_idx, _ = cast( + Tuple[int, int, int, int, int, int], cone_info + ) + + try: + cone_type = LytObjectIndexToConeType[lyt_obj_idx] + except KeyError: + # not a cone + continue + + # the stored x,y pos is multiplied by + # 16 in the file so we need to convert it back + # (and cast to a float by using real div) + obj_x_meters = obj_x / 16 + obj_y_meters = obj_y / 16 + all_cones_per_type[cone_type].append((obj_x_meters, obj_y_meters)) + return all_cones_per_type + + +def load_lyt_file(filename: Union[Path, str]) -> List[np.ndarray]: + """ + Load a `.lyt` file and return the positions of the cone objects inside it split + according to `ConeTypes` + + Args: + filename (Path): The path to the `.lyt` file + + Returns: + List[np.ndarray]: A list of 2d np.ndarrays representing the cone positions of + for all cone types + """ + if isinstance(filename, str): + filename = Path(filename) + assert filename.is_file(), filename + assert filename.suffix == ".lyt", filename + data = filename.read_bytes() + header_data, blocks_data = split_header_blocks(data) + verify_lyt_header(header_data) + + all_cones_per_type = extract_cone_lists(blocks_data) + + all_cones_per_type_arrays = [ + np.array(cone_list) for cone_list in all_cones_per_type + ] + + return all_cones_per_type_arrays def generate_launch_description(): @@ -25,15 +159,17 @@ def generate_launch_description(): package_name='dcaiti_control' #<--- CHANGE ME use_ros2_control = LaunchConfiguration('use_ros2_control') + track = LaunchConfiguration('track') rsp = IncludeLaunchDescription( PythonLaunchDescriptionSource([os.path.join( get_package_share_directory(package_name),'launch','rsp.launch.py' )]), launch_arguments={'use_sim_time': 'true', 'use_ros2_control': use_ros2_control}.items() ) - gazebo_params_path = os.path.join(get_package_share_directory(package_name),'config','gazebo_config.yml') - world_path = os.path.join(get_package_share_directory(package_name),'worlds') - description_path = os.path.join(get_package_share_directory(package_name),'description') + base_path = Path(get_package_share_directory(package_name)) + world_path = base_path / 'worlds' + description_path = base_path /'description' + # Include the Gazebo launch file, provided by the gazebo_ros package gazebo = IncludeLaunchDescription( @@ -48,20 +184,54 @@ def generate_launch_description(): '-topic', 'robot_description', '-name', 'spawn_robot', '-z', '0.5', + '-x', '-7', ], output='screen' ) - cone_xacro = f'{description_path}/yellow_cone.xacro' - cone_config = Command(['xacro ', cone_xacro]) - spawn_cone = Node(package='ros_gz_sim', executable='create', - arguments=[ - '-string', cone_config, - '-name', 'spawned_cone', - '-z', '10', - ], - output='screen' - ) + cone_positions = [x.reshape(-1,2) for x in load_lyt_file(base_path / 'tracks' / 'AU2_skidpad.lyt')] + center = np.mean(cone_positions[ConeTypes.ORANGE_BIG], axis=0) + + cone_positions_centered = [x - center for x in cone_positions] + + + cones_dict = { + "unknown": cone_positions_centered[ConeTypes.UNKNOWN].tolist(), + "yellow": cone_positions_centered[ConeTypes.YELLOW].tolist(), + "blue": cone_positions_centered[ConeTypes.BLUE].tolist(), + "orange_small": cone_positions_centered[ConeTypes.ORANGE_SMALL].tolist(), + "orange_big": cone_positions_centered[ConeTypes.ORANGE_BIG].tolist(), + } + + yellow_cone_xacro = f'{description_path}/yellow_cone.xacro' + yellow_cone_config = Command(['xacro ', yellow_cone_xacro]) + blue_cone_xacro = f'{description_path}/blue_cone.xacro' + blue_cone_config = Command(['xacro ', blue_cone_xacro]) + cone_spawner = [] + for i, (x,y) in enumerate(cones_dict['yellow']): + spawn_cone = Node(package='ros_gz_sim', executable='create', + arguments=[ + '-string', yellow_cone_config, + '-name', f'yellow_cone_{i}', + '-z', '0.3', + '-y', str(y), + '-x', str(x), + ], + output='screen' + ) + cone_spawner.append(spawn_cone) + for i, (x,y) in enumerate(cones_dict['blue']): + spawn_cone = Node(package='ros_gz_sim', executable='create', + arguments=[ + '-string', blue_cone_config, + '-name', f'blue_cone_{i}', + '-z', '0.3', + '-y', str(y), + '-x', str(x), + ], + output='screen' + ) + cone_spawner.append(spawn_cone) # Bridge bridge = Node( @@ -111,11 +281,14 @@ def generate_launch_description(): 'use_ros2_control', default_value='true', description='Use ros2_control if true'), + DeclareLaunchArgument( + 'track', + default_value='AU2_skidpad.lyt', + description='Which track to load'), bridge, rsp, gazebo, spawn_entity, - spawn_cone, delayed_diff_drive_spawner, delayed_joint_broad_spawner, - ]) + ]+ cone_spawner ) diff --git a/src/dcaiti_control/track/readlyt.py b/src/dcaiti_control/track/readlyt.py deleted file mode 100644 index 6b1d734..0000000 --- a/src/dcaiti_control/track/readlyt.py +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding:utf-8 -*- -""" -Description: Based on https://www.lfs.net/programmer/lyt -""" - -from pathlib import Path -from typing import List, Tuple, Union, cast, Dict -from struct import Struct -from enum import IntEnum - -import numpy as np - - - -class ConeTypes(IntEnum): - """ - Enum for all possible cone types - """ - - UNKNOWN = 0 - YELLOW = 1 - RIGHT = 1 - BLUE = 2 - LEFT = 2 - ORANGE_SMALL = 3 - START_FINISH_AREA = 3 - ORANGE_BIG = 4 - START_FINISH_LINE = 4 - - -HEADER_STRUCT = Struct("6sBBhBB") -BLOCK_STRUCT = Struct("2h4B") - -LytObjectIndexToConeType: Dict[int, ConeTypes] = { - 25: ConeTypes.UNKNOWN, - 29: ConeTypes.YELLOW, - 30: ConeTypes.YELLOW, - 23: ConeTypes.BLUE, - 24: ConeTypes.BLUE, - 27: ConeTypes.ORANGE_BIG, - 20: ConeTypes.ORANGE_SMALL, -} - -def split_header_blocks(data: bytes) -> Tuple[bytes, bytes]: - """ - Split the content of the lyt file into header and block. This split is easy because - the header has a fixed size - - Args: - data (bytes): The content of the lyt file - - Returns: - Tuple[bytes, bytes]: The header and the block - """ - return data[: HEADER_STRUCT.size], data[HEADER_STRUCT.size :] - - -def verify_lyt_header(header_data: bytes) -> None: - """ - Parse the header and perform some sanity checks suggested by the LFS documentation - - Args: - header_data (bytes): The header bytes of the `.lyt` file - """ - - header = cast( - Tuple[bytes, int, int, int, int, int], HEADER_STRUCT.unpack(header_data) - ) - - file_type, version, revision, _, _, _ = header - assert file_type == b"LFSLYT" - assert version <= 0, version - # revision allowed up to 252 - # https://www.lfs.net/forum/thread/96153-LYT-revision-252-in-W-patch - assert revision <= 252, revision - - -def extract_cone_lists(blocks_data: bytes) -> List[List[Tuple[float, float]]]: - """ - Extract the cone object positions from the object blocks bytes of a lyt file - - Args: - blocks_data (bytes): The data in the lyt file that is not the header - - Returns: - List[List[Tuple[int, int]]]: The cone positions split by cone type - """ - decoded_blocks = BLOCK_STRUCT.iter_unpack(blocks_data) - all_cones_per_type: List[List[Tuple[float, float]]] = [[] for _ in ConeTypes] - - # cone_info: - for cone_info in decoded_blocks: - obj_x, obj_y, _, _, lyt_obj_idx, _ = cast( - Tuple[int, int, int, int, int, int], cone_info - ) - - try: - cone_type = LytObjectIndexToConeType[lyt_obj_idx] - except KeyError: - # not a cone - continue - - # the stored x,y pos is multiplied by - # 16 in the file so we need to convert it back - # (and cast to a float by using real div) - obj_x_meters = obj_x / 16 - obj_y_meters = obj_y / 16 - all_cones_per_type[cone_type].append((obj_x_meters, obj_y_meters)) - return all_cones_per_type - - -def load_lyt_file(filename: Union[Path, str]) -> List[np.ndarray]: - """ - Load a `.lyt` file and return the positions of the cone objects inside it split - according to `ConeTypes` - - Args: - filename (Path): The path to the `.lyt` file - - Returns: - List[np.ndarray]: A list of 2d np.ndarrays representing the cone positions of - for all cone types - """ - if isinstance(filename, str): - filename = Path(filename) - assert filename.is_file(), filename - assert filename.suffix == ".lyt", filename - data = filename.read_bytes() - header_data, blocks_data = split_header_blocks(data) - verify_lyt_header(header_data) - - all_cones_per_type = extract_cone_lists(blocks_data) - - all_cones_per_type_arrays = [ - np.array(cone_list) for cone_list in all_cones_per_type - ] - - return all_cones_per_type_arrays - - -def main(): - # parse arguments - import argparse - import json - - # one argument for the lyt file - parser = argparse.ArgumentParser(description="Parse a lyt file") - parser.add_argument("lyt_file", type=str, help="The lyt file to parse") - - args = parser.parse_args() - - # load the lyt file - lyt_file = Path(args.lyt_file) - cone_positions = [x.reshape(-1,2) for x in load_lyt_file(lyt_file)] - - - center = np.mean(cone_positions[ConeTypes.ORANGE_BIG], axis=0) - - cone_positions_centered = [x - center for x in cone_positions] - - - cones_dict = { - "unknown": cone_positions_centered[ConeTypes.UNKNOWN].tolist(), - "yellow": cone_positions_centered[ConeTypes.YELLOW].tolist(), - "blue": cone_positions_centered[ConeTypes.BLUE].tolist(), - "orange_small": cone_positions_centered[ConeTypes.ORANGE_SMALL].tolist(), - "orange_big": cone_positions_centered[ConeTypes.ORANGE_BIG].tolist(), - } - - # print the cones as json - print(json.dumps(cones_dict, indent=1)) - -if __name__ == "__main__": - main() - diff --git a/src/dcaiti_control/track/AU2_skidpad.lyt b/src/dcaiti_control/tracks/AU2_skidpad.lyt similarity index 100% rename from src/dcaiti_control/track/AU2_skidpad.lyt rename to src/dcaiti_control/tracks/AU2_skidpad.lyt