diff --git a/contrib/action_nitro/Makefile b/contrib/action_nitro/Makefile deleted file mode 100644 index 22c93588b9..0000000000 --- a/contrib/action_nitro/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -all: bin/action_nitro - -bin/action_nitro: $(shell nitls -M src/action_nitro.nit -m linux) pre-build - nitc src/action_nitro.nit -m linux -o $@ - -android: bin/action_nitro.apk -bin/action_nitro.apk: $(shell nitls -M src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit) pre-build android/res/ - nitc src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit -o $@ - -android-release: $(shell nitls -M src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit) pre-build android/res/ - nitc src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit -o bin/action_nitro.apk --release - -ios: bin/action_nitro.app -bin/action_nitro.app: $(shell nitls -M src/action_nitro.nit -m ios -m src/touch_ui.nit) pre-build - nitc src/action_nitro.nit -m ios -m src/touch_ui.nit -o $@ --compile-dir nit_compile - -src/gen/texts.nit: art/texts.svg - make -C ../inkscape_tools/ - ../inkscape_tools/bin/svg_to_png_and_nit art/texts.svg -a assets/ -s src/gen/ -x 2.0 -g - -src/gen/planes.nit: art/planes.svg - make -C ../inkscape_tools/ - ../inkscape_tools/bin/svg_to_png_and_nit art/planes.svg -a assets/ -s src/gen/ -x 2.0 -g - -android/res/: art/icon.svg - make -C ../inkscape_tools/ - ../inkscape_tools/bin/svg_to_icons --out android/res --android art/icon.svg - -pre-build: src/gen/texts.nit src/gen/planes.nit - -check: bin/action_nitro - NIT_TESTING=true bin/action_nitro diff --git a/contrib/action_nitro/README.md b/contrib/action_nitro/README.md deleted file mode 100644 index 517f81359f..0000000000 --- a/contrib/action_nitro/README.md +++ /dev/null @@ -1,31 +0,0 @@ -Action Nitro! an action platformer where you jump from plane to plane to reach the ISS and defeat the bad guys. - -# Screenshot - -![Screenshot in atmosphere](doc/screenshot.jpg) - -![Screenshot in space](doc/space.jpg) - -# Compile and run - For those used to Nit - -1. Compile the Nit tools from the root of this repository. - Refer to the root README file for directions. - -2. Install the packages requisited by _gamnit_. - See the list in `../../lib/gamnit/README.md`. - -3. Compile the game with a simple call to `make` from this folder. - -4. Run with `bin/action_nitro`. - -# Art - -* Character art created by jeremygooch under CC-BY 3.0. -* City skyline created by Alucard under CC-BY 3.0. -* Helicopter art by SpriteAttack under CC-BY-SA 3.0. -* Planes, derived from the helicopter art created by Alexis Laferrière under CC-BY-SA 3.0. -* Parachute and powerups art created by Alexis Laferrière under CC0. -* Particles created by kenny.nl under CC0. -* Stars textures created by StumpyStrust under CC0. -* Splash background credit NASA. -* 3D model of ISS credit NASA Ames Research Center. diff --git a/contrib/action_nitro/art/icon.svg b/contrib/action_nitro/art/icon.svg deleted file mode 100644 index a0701e16f5..0000000000 --- a/contrib/action_nitro/art/icon.svg +++ /dev/null @@ -1,508 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/action_nitro/art/icon_background.png b/contrib/action_nitro/art/icon_background.png deleted file mode 100644 index 22529ca30a..0000000000 Binary files a/contrib/action_nitro/art/icon_background.png and /dev/null differ diff --git a/contrib/action_nitro/art/planes.svg b/contrib/action_nitro/art/planes.svg deleted file mode 100644 index 690bbdb918..0000000000 --- a/contrib/action_nitro/art/planes.svg +++ /dev/null @@ -1,2515 +0,0 @@ - - - -image/svg+xml \ No newline at end of file diff --git a/contrib/action_nitro/art/texts.svg b/contrib/action_nitro/art/texts.svg deleted file mode 100644 index e48f4452b6..0000000000 --- a/contrib/action_nitro/art/texts.svg +++ /dev/null @@ -1,2265 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/action_nitro/assets/images/.gitignore b/contrib/action_nitro/assets/images/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/action_nitro/assets/images/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/action_nitro/assets/models/iss.mtl b/contrib/action_nitro/assets/models/iss.mtl deleted file mode 100644 index 1d3bd7c1dd..0000000000 --- a/contrib/action_nitro/assets/models/iss.mtl +++ /dev/null @@ -1,56 +0,0 @@ -# Blender MTL File: 'iss-low-poly.blend' -# Material Count: 6 - -newmtl Brown -Ns 94.117647 -Ka 0.000000 0.000000 0.000000 -Kd 0.298039 0.236343 0.128566 -Ks 0.200000 0.200000 0.200000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl ISSDarkMetal -Ns 11.764706 -Ka 0.000000 0.000000 0.000000 -Kd 0.087672 0.087672 0.087672 -Ks 0.500000 0.500000 0.500000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl ISSGray2 -Ns 11.764706 -Ka 0.000000 0.000000 0.000000 -Kd 0.301372 0.301372 0.301372 -Ks 0.500000 0.500000 0.500000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl ISSMetal1 -Ns 11.764706 -Ka 0.000000 0.000000 0.000000 -Kd 0.476716 0.476716 0.476716 -Ks 0.500000 0.500000 0.500000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl ISSSolarPanels -Ns 11.764706 -Ka 0.000000 0.000000 0.000000 -Kd 0.054525 0.029527 0.376471 -Ks 0.500000 0.500000 0.500000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl ISSWhiteMetal -Ns 11.764706 -Ka 0.000000 0.000000 0.000000 -Kd 0.701366 0.701366 0.701366 -Ks 0.500000 0.500000 0.500000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/action_nitro/assets/models/iss.obj b/contrib/action_nitro/assets/models/iss.obj deleted file mode 100644 index 66fc5e9874..0000000000 --- a/contrib/action_nitro/assets/models/iss.obj +++ /dev/null @@ -1,7412 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: 'iss-low-poly.blend' -# www.blender.org -mtllib iss.mtl -o ISS_Untitled -v 9.008803 1.651852 -8.731386 -v 9.008803 2.345881 -8.731386 -v 9.008803 3.017658 -8.731386 -v 5.121459 1.651852 -8.731386 -v 5.121458 2.345881 -8.731386 -v 5.121458 3.017657 -8.731386 -v 1.201806 1.652170 -8.784288 -v 1.201807 2.345881 -8.667174 -v 1.201806 3.017657 -8.667174 -v 1.201806 3.017657 -8.860678 -v 1.201807 2.345881 -8.901156 -v 5.121459 1.651852 -8.828051 -v 5.121458 2.345881 -8.828051 -v 5.121458 3.017657 -8.828051 -v 9.008803 1.651852 -8.828051 -v 9.008803 2.345883 -8.828051 -v 9.008803 3.017658 -8.828051 -v 9.008803 1.651852 -8.779718 -v 9.008803 2.345882 -8.779718 -v 9.008803 3.017658 -8.779719 -v 5.121458 3.017657 -8.779719 -v 5.121459 1.651852 -8.779718 -v 9.008802 -0.240459 -8.731386 -v 9.008801 0.450014 -8.731386 -v 9.008803 1.140486 -8.731386 -v 5.121459 -0.240460 -8.731386 -v 5.121459 0.450013 -8.731386 -v 5.121459 1.140486 -8.731386 -v 1.201806 -0.240385 -8.731386 -v 1.201807 0.450014 -8.731386 -v 1.201806 1.133425 -8.731386 -v 1.201806 -0.240385 -8.784534 -v 1.201806 1.133424 -8.784534 -v 1.201806 -0.240385 -8.828051 -v 1.201807 0.450014 -8.828051 -v 1.201806 1.133424 -8.828051 -v 5.121459 -0.240460 -8.828051 -v 5.121459 0.450013 -8.828051 -v 5.121459 1.140486 -8.828051 -v 9.008802 -0.240459 -8.828051 -v 9.008801 0.450015 -8.828051 -v 9.008803 1.140486 -8.828051 -v 9.008801 -0.240459 -8.779718 -v 9.008801 0.450014 -8.779719 -v 9.008803 1.140486 -8.779718 -v 5.121459 1.140486 -8.779718 -v 5.121459 -0.240460 -8.779718 -v 9.008803 -2.117631 -8.731386 -v 9.008803 -1.435079 -8.731386 -v 9.008803 -0.751826 -8.731386 -v 5.121460 -2.117631 -8.731386 -v 5.121460 -1.435079 -8.731386 -v 5.121459 -0.751827 -8.731386 -v 1.201807 -2.117631 -8.731386 -v 1.201807 -1.435078 -8.731386 -v 1.201806 -0.751827 -8.731386 -v 1.201807 -2.117632 -8.784534 -v 1.201806 -0.748388 -8.784534 -v 1.201807 -2.117632 -8.828051 -v 1.201807 -1.435077 -8.828051 -v 1.201806 -0.751827 -8.828051 -v 5.121460 -2.117631 -8.828051 -v 5.121459 -1.435079 -8.828051 -v 5.121459 -0.751827 -8.828051 -v 9.008803 -2.117630 -8.828051 -v 9.008803 -1.435079 -8.828051 -v 9.008803 -0.751826 -8.828051 -v 9.008804 -2.117631 -8.779719 -v 9.008804 -1.435079 -8.779718 -v 9.008803 -0.751825 -8.779719 -v 5.121459 -0.751826 -8.779718 -v 5.121460 -2.117631 -8.779719 -v -1.619671 0.571115 -29.949284 -v -1.619671 0.675225 -29.949284 -v -1.619671 0.779336 -29.949284 -v -10.686809 0.571114 -29.949284 -v -10.686809 0.675224 -29.949284 -v -10.686809 0.779335 -29.949284 -v -19.753946 0.571113 -29.949284 -v -19.753946 0.675223 -29.949284 -v -19.753946 0.779334 -29.949284 -v -19.753946 0.571113 -31.014002 -v -19.753946 0.675223 -31.014002 -v -19.753942 0.779334 -31.013134 -v -19.753946 0.571113 -32.078720 -v -19.753946 0.675223 -32.078720 -v -19.753942 0.779334 -32.078350 -v -10.686809 0.571114 -32.078720 -v -10.686809 0.675224 -32.078720 -v -10.686809 0.779335 -32.078720 -v -1.619671 0.571115 -32.078720 -v -1.619671 0.675226 -32.078720 -v -1.619671 0.779336 -32.078720 -v -1.619671 0.571115 -31.014002 -v -1.619671 0.675225 -31.014002 -v -1.619671 0.779336 -31.014002 -v -10.686809 0.779335 -31.014002 -v -10.686809 0.571114 -31.014002 -v -19.551571 0.779334 -32.078350 -v -19.551571 0.675223 -32.078720 -v -19.551571 0.571113 -32.078720 -v -19.551571 0.571113 -31.014002 -v -19.551571 0.571113 -29.949284 -v -19.551571 0.675223 -29.949284 -v -19.551571 0.779334 -29.949387 -v -19.551571 0.779334 -31.013134 -v -1.857360 0.779336 -32.078720 -v -1.857360 0.675225 -32.078720 -v -1.857360 0.571115 -32.078720 -v -1.857360 0.571115 -31.014002 -v -1.857359 0.571115 -29.949284 -v -1.857359 0.675225 -29.949284 -v -1.857359 0.779336 -29.949284 -v -1.857360 0.779336 -31.014002 -v -13.839814 0.779335 -32.078720 -v -13.839814 0.675224 -32.078720 -v -13.839814 0.571113 -32.078720 -v -13.839814 0.571113 -31.014002 -v -13.839814 0.571113 -29.949284 -v -13.839814 0.675224 -29.949284 -v -13.839814 0.779334 -29.949284 -v -13.839814 0.779335 -31.014002 -v -1.619671 0.571114 -26.549715 -v -1.619671 0.675225 -26.549715 -v -1.619671 0.779336 -26.549715 -v -10.686806 0.571113 -26.549715 -v -10.686806 0.675224 -26.549715 -v -10.686806 0.779334 -26.549715 -v -19.753942 0.571112 -26.549715 -v -19.753942 0.675223 -26.549715 -v -19.753942 0.779333 -26.549715 -v -19.753942 0.571112 -27.614433 -v -19.753942 0.675223 -27.614433 -v -19.753942 0.779334 -27.614433 -v -19.753942 0.571112 -28.679152 -v -19.753942 0.675223 -28.679152 -v -19.753942 0.779334 -28.679152 -v -10.686806 0.571114 -28.679152 -v -10.686806 0.675224 -28.679152 -v -10.686806 0.779335 -28.679152 -v -1.619671 0.571115 -28.679152 -v -1.619671 0.675225 -28.679152 -v -1.619671 0.779336 -28.679152 -v -1.619671 0.571115 -27.614433 -v -1.619671 0.675225 -27.614433 -v -1.619671 0.779336 -27.614433 -v -10.686806 0.779335 -27.614433 -v -10.686806 0.571113 -27.614433 -v -19.551571 0.779334 -28.679152 -v -19.551571 0.675223 -28.679152 -v -19.551571 0.571113 -28.679152 -v -19.551571 0.571112 -27.614433 -v -19.551571 0.571112 -26.549715 -v -19.551571 0.675223 -26.549715 -v -19.551571 0.779333 -26.549715 -v -19.551571 0.779334 -27.614433 -v -1.857359 0.779336 -28.679152 -v -1.857359 0.675225 -28.679152 -v -1.857359 0.571115 -28.679152 -v -1.857359 0.571115 -27.614433 -v -1.857359 0.571114 -26.549715 -v -1.857359 0.675225 -26.549715 -v -1.857359 0.779336 -26.549715 -v -1.857359 0.779336 -27.614433 -v -13.839811 0.779334 -28.679152 -v -13.839811 0.675224 -28.679152 -v -13.839811 0.571113 -28.679152 -v -13.839811 0.571113 -27.614433 -v -13.839811 0.571113 -26.549715 -v -13.839811 0.675224 -26.549715 -v -13.839811 0.779334 -26.549715 -v -13.839811 0.779334 -27.614433 -v -19.551571 0.918224 -27.614433 -v -19.551571 0.918224 -28.679152 -v -19.753942 0.918224 -28.679152 -v -19.753942 0.918224 -27.614433 -v -19.551571 0.918224 -26.549715 -v -19.753942 0.918224 -26.549715 -v -19.753942 0.918224 -32.077980 -v -19.551571 0.918224 -32.077980 -v -19.551571 0.918224 -29.949488 -v -19.753942 0.918224 -29.949488 -v -19.551571 0.918224 -31.012264 -v -19.753942 0.918224 -31.012264 -v -1.619671 0.571114 -21.560667 -v -1.619671 0.675225 -21.560667 -v -1.619671 0.779335 -21.560667 -v -10.686809 0.571113 -21.560667 -v -10.686809 0.675224 -21.560667 -v -10.686809 0.779334 -21.560667 -v -19.753946 0.571112 -21.560667 -v -19.753946 0.675222 -21.560667 -v -19.753946 0.779333 -21.560667 -v -19.753946 0.571112 -22.625385 -v -19.753946 0.675223 -22.625385 -v -19.753942 0.779333 -22.624519 -v -19.753946 0.571112 -23.690105 -v -19.753946 0.675223 -23.690105 -v -19.753942 0.779333 -23.689735 -v -10.686809 0.571113 -23.690105 -v -10.686809 0.675224 -23.690105 -v -10.686809 0.779334 -23.690105 -v -1.619671 0.571114 -23.690105 -v -1.619671 0.675225 -23.690105 -v -1.619671 0.779335 -23.690105 -v -1.619671 0.571114 -22.625385 -v -1.619671 0.675225 -22.625385 -v -1.619671 0.779335 -22.625385 -v -10.686809 0.779334 -22.625385 -v -10.686809 0.571113 -22.625385 -v -19.551571 0.779333 -23.689735 -v -19.551571 0.675223 -23.690105 -v -19.551571 0.571112 -23.690105 -v -19.551571 0.571112 -22.625385 -v -19.551571 0.571112 -21.560667 -v -19.551571 0.675222 -21.560667 -v -19.551571 0.779333 -21.560770 -v -19.551571 0.779333 -22.624519 -v -1.857360 0.779335 -23.690105 -v -1.857360 0.675225 -23.690105 -v -1.857360 0.571114 -23.690105 -v -1.857360 0.571114 -22.625385 -v -1.857359 0.571114 -21.560667 -v -1.857359 0.675225 -21.560667 -v -1.857359 0.779335 -21.560667 -v -1.857360 0.779335 -22.625385 -v -13.839814 0.779334 -23.690105 -v -13.839814 0.675223 -23.690105 -v -13.839814 0.571113 -23.690105 -v -13.839814 0.571113 -22.625385 -v -13.839814 0.571113 -21.560667 -v -13.839814 0.675223 -21.560667 -v -13.839814 0.779334 -21.560667 -v -13.839814 0.779334 -22.625385 -v -1.619671 0.571114 -18.161102 -v -1.619671 0.675224 -18.161102 -v -1.619671 0.779335 -18.161102 -v -10.686806 0.571113 -18.161102 -v -10.686806 0.675223 -18.161102 -v -10.686806 0.779334 -18.161102 -v -19.753942 0.571112 -18.161102 -v -19.753942 0.675222 -18.161102 -v -19.753942 0.779333 -18.161102 -v -19.753942 0.571112 -19.225817 -v -19.753942 0.675222 -19.225817 -v -19.753942 0.779333 -19.225817 -v -19.753942 0.571112 -20.290537 -v -19.753942 0.675222 -20.290537 -v -19.753942 0.779333 -20.290537 -v -10.686806 0.571113 -20.290537 -v -10.686806 0.675223 -20.290537 -v -10.686806 0.779334 -20.290537 -v -1.619671 0.571114 -20.290537 -v -1.619671 0.675224 -20.290537 -v -1.619671 0.779335 -20.290537 -v -1.619671 0.571114 -19.225817 -v -1.619671 0.675224 -19.225817 -v -1.619671 0.779335 -19.225817 -v -10.686806 0.779334 -19.225817 -v -10.686806 0.571113 -19.225817 -v -19.551571 0.779333 -20.290537 -v -19.551571 0.675222 -20.290537 -v -19.551571 0.571112 -20.290537 -v -19.551571 0.571112 -19.225817 -v -19.551571 0.571112 -18.161102 -v -19.551571 0.675222 -18.161102 -v -19.551571 0.779333 -18.161102 -v -19.551571 0.779333 -19.225817 -v -1.857359 0.779335 -20.290537 -v -1.857359 0.675224 -20.290537 -v -1.857359 0.571114 -20.290537 -v -1.857359 0.571114 -19.225817 -v -1.857359 0.571114 -18.161102 -v -1.857359 0.675224 -18.161102 -v -1.857359 0.779335 -18.161102 -v -1.857359 0.779335 -19.225817 -v -13.839811 0.779334 -20.290537 -v -13.839811 0.675223 -20.290537 -v -13.839811 0.571112 -20.290537 -v -13.839811 0.571112 -19.225817 -v -13.839811 0.571112 -18.161102 -v -13.839811 0.675223 -18.161102 -v -13.839811 0.779333 -18.161102 -v -13.839811 0.779333 -19.225817 -v -19.551571 0.918223 -19.225817 -v -19.551571 0.918223 -20.290537 -v -19.753942 0.918223 -20.290537 -v -19.753942 0.918223 -19.225817 -v -19.551571 0.918223 -18.161102 -v -19.753942 0.918223 -18.161102 -v -19.753942 0.918223 -23.689363 -v -19.551571 0.918223 -23.689363 -v -19.551571 0.918223 -21.560871 -v -19.753942 0.918223 -21.560871 -v -19.551571 0.918223 -22.623648 -v -19.753942 0.918223 -22.623648 -v 2.192353 0.571115 -28.755394 -v 2.192353 0.675226 -28.755394 -v 2.192353 0.779336 -28.755394 -v 11.259491 0.571116 -28.755394 -v 11.259491 0.675227 -28.755394 -v 11.259491 0.779337 -28.755394 -v 20.326626 0.571117 -28.755394 -v 20.326626 0.675228 -28.755394 -v 20.326626 0.779338 -28.755394 -v 20.326626 0.571117 -27.690676 -v 20.326626 0.675228 -27.690676 -v 20.326626 0.779338 -27.691544 -v 20.326626 0.571117 -26.625957 -v 20.326626 0.675228 -26.625957 -v 20.326626 0.779338 -26.626328 -v 11.259491 0.571116 -26.625957 -v 11.259491 0.675227 -26.625957 -v 11.259491 0.779337 -26.625957 -v 2.192353 0.571115 -26.625957 -v 2.192353 0.675225 -26.625957 -v 2.192353 0.779336 -26.625957 -v 2.192353 0.571115 -27.690676 -v 2.192353 0.675226 -27.690676 -v 2.192353 0.779336 -27.690676 -v 11.259491 0.779337 -27.690676 -v 11.259491 0.571116 -27.690676 -v 20.124250 0.779338 -26.626328 -v 20.124250 0.675228 -26.625957 -v 20.124250 0.571117 -26.625957 -v 20.124250 0.571117 -27.690676 -v 20.124250 0.571117 -28.755394 -v 20.124250 0.675228 -28.755394 -v 20.124250 0.779338 -28.755291 -v 20.124250 0.779338 -27.691544 -v 2.430042 0.779336 -26.625957 -v 2.430042 0.675226 -26.625957 -v 2.430042 0.571115 -26.625957 -v 2.430042 0.571115 -27.690676 -v 2.430041 0.571115 -28.755394 -v 2.430041 0.675226 -28.755394 -v 2.430041 0.779336 -28.755394 -v 2.430042 0.779336 -27.690676 -v 14.412498 0.779338 -26.625957 -v 14.412498 0.675227 -26.625957 -v 14.412498 0.571116 -26.625957 -v 14.412498 0.571116 -27.690676 -v 14.412498 0.571117 -28.755394 -v 14.412498 0.675227 -28.755394 -v 14.412498 0.779338 -28.755394 -v 14.412498 0.779338 -27.690676 -v 2.192353 0.571115 -32.154964 -v 2.192353 0.675226 -32.154964 -v 2.192353 0.779337 -32.154964 -v 11.259489 0.571117 -32.154964 -v 11.259489 0.675227 -32.154964 -v 11.259489 0.779338 -32.154964 -v 20.326622 0.571118 -32.154964 -v 20.326622 0.675228 -32.154964 -v 20.326622 0.779339 -32.154964 -v 20.326622 0.571117 -31.090244 -v 20.326622 0.675228 -31.090244 -v 20.326622 0.779339 -31.090244 -v 20.326622 0.571117 -30.025526 -v 20.326622 0.675228 -30.025526 -v 20.326622 0.779339 -30.025526 -v 11.259489 0.571116 -30.025526 -v 11.259489 0.675227 -30.025526 -v 11.259489 0.779337 -30.025526 -v 2.192353 0.571115 -30.025526 -v 2.192353 0.675226 -30.025526 -v 2.192353 0.779336 -30.025526 -v 2.192353 0.571115 -31.090244 -v 2.192353 0.675226 -31.090244 -v 2.192353 0.779336 -31.090244 -v 11.259489 0.779338 -31.090244 -v 11.259489 0.571116 -31.090244 -v 20.124250 0.779338 -30.025526 -v 20.124250 0.675228 -30.025526 -v 20.124250 0.571117 -30.025526 -v 20.124250 0.571117 -31.090244 -v 20.124250 0.571118 -32.154964 -v 20.124250 0.675228 -32.154964 -v 20.124250 0.779339 -32.154964 -v 20.124250 0.779339 -31.090244 -v 2.430041 0.779336 -30.025526 -v 2.430041 0.675226 -30.025526 -v 2.430041 0.571115 -30.025526 -v 2.430041 0.571115 -31.090244 -v 2.430041 0.571115 -32.154964 -v 2.430041 0.675226 -32.154964 -v 2.430041 0.779337 -32.154964 -v 2.430041 0.779336 -31.090244 -v 14.412494 0.779338 -30.025526 -v 14.412494 0.675227 -30.025526 -v 14.412494 0.571117 -30.025526 -v 14.412494 0.571117 -31.090244 -v 14.412494 0.571117 -32.154964 -v 14.412494 0.675227 -32.154964 -v 14.412494 0.779338 -32.154964 -v 14.412494 0.779338 -31.090244 -v 20.124250 0.918229 -31.090244 -v 20.124250 0.918229 -30.025526 -v 20.326622 0.918229 -30.025526 -v 20.326622 0.918229 -31.090244 -v 20.124250 0.918229 -32.154964 -v 20.326622 0.918229 -32.154964 -v 20.326622 0.918228 -26.626698 -v 20.124250 0.918228 -26.626698 -v 20.124250 0.918228 -28.755190 -v 20.326622 0.918229 -28.755190 -v 20.124250 0.918228 -27.692413 -v 20.326622 0.918228 -27.692413 -v -0.407079 -0.219039 0.496218 -v -0.567965 0.024332 0.496218 -v -0.567965 0.450011 0.496218 -v -0.567965 0.875689 0.496218 -v -0.407079 1.119061 0.496218 -v -0.567965 -0.401344 -20.777882 -v -0.567965 0.024334 -20.777882 -v -0.567965 0.450012 -20.777882 -v -0.567965 0.875691 -20.777882 -v -0.567965 1.301369 -20.777882 -v -0.567965 -0.401344 -29.464630 -v -0.567965 0.024335 -29.464630 -v -0.567965 0.450013 -29.464630 -v -0.567965 0.875692 -29.464630 -v -0.567965 1.301370 -29.464630 -v -0.142286 -0.401344 -29.464630 -v -0.142286 0.024335 -29.464630 -v -0.142286 0.450013 -29.464630 -v -0.142286 0.875692 -29.464630 -v -0.142287 1.301370 -29.464630 -v 0.283392 -0.401344 -29.464630 -v 0.283392 0.024335 -29.464630 -v 0.283392 0.450013 -29.464630 -v 0.283392 0.875692 -29.464630 -v 0.283392 1.301370 -29.464630 -v 0.709070 -0.401344 -29.464630 -v 0.709070 0.024335 -29.464630 -v 0.709070 0.450013 -29.464630 -v 0.709070 0.875692 -29.464630 -v 0.709070 1.301370 -29.464630 -v 1.134749 -0.401343 -29.464630 -v 1.134749 0.024335 -29.464630 -v 1.134749 0.450013 -29.464630 -v 1.134749 0.875692 -29.464630 -v 1.134749 1.301370 -29.464630 -v 1.134749 -0.401344 -20.777882 -v 1.134749 0.024334 -20.777882 -v 1.134749 0.450013 -20.777882 -v 1.134749 0.875691 -20.777882 -v 1.134749 1.301370 -20.777882 -v 0.973863 -0.219039 0.496218 -v 1.134749 0.024332 0.496218 -v 1.134749 0.450011 0.496218 -v 1.134749 0.875689 0.496218 -v 0.973863 1.119061 0.496218 -v 0.709070 1.301369 -20.777882 -v 0.602992 1.301368 0.496218 -v 0.283392 1.301369 -20.777882 -v 0.283392 1.301368 0.496218 -v -0.142287 1.301369 -20.777882 -v -0.142286 1.301368 0.496218 -v 0.709070 -0.401344 -20.777882 -v 0.602992 -0.401346 0.496218 -v 0.283392 -0.401344 -20.777882 -v 0.283392 -0.401346 0.496218 -v -0.142286 -0.401344 -20.777882 -v -0.142286 -0.401346 0.496218 -v 0.283392 1.301370 -29.099638 -v 0.709070 1.301370 -29.099638 -v 1.134749 1.301370 -29.099638 -v 1.134749 0.875692 -29.099638 -v 1.134749 0.450013 -29.099638 -v 1.134749 0.024335 -29.099638 -v 1.134749 -0.401343 -29.099638 -v 0.709070 -0.401344 -29.099638 -v 0.283392 -0.401344 -29.099638 -v -0.142286 -0.401344 -29.099638 -v -0.567965 -0.401344 -29.099638 -v -0.567965 0.024335 -29.099638 -v -0.567965 0.450013 -29.099638 -v -0.567965 0.875692 -29.099638 -v -0.567965 1.301370 -29.099638 -v -0.142287 1.301370 -29.099638 -v 0.499914 1.301369 -20.777882 -v 0.499914 1.301370 -29.099638 -v 0.499914 1.301370 -29.464630 -v 0.499915 0.875692 -29.464630 -v 0.499915 0.450013 -29.464630 -v 0.499915 0.024335 -29.464630 -v 0.499915 -0.401344 -29.464630 -v 0.499915 -0.401344 -29.099638 -v 0.499915 -0.401344 -20.777882 -v -0.567965 1.301370 -27.050383 -v -0.567965 0.875691 -27.050383 -v -0.567965 0.450013 -27.050383 -v -0.567965 0.024335 -27.050383 -v -0.567965 -0.401344 -27.050383 -v -0.142286 -0.401344 -27.050383 -v 0.283392 -0.401344 -27.050383 -v 0.499915 -0.401344 -27.050383 -v 0.709070 -0.401344 -27.050383 -v 1.134749 -0.401344 -27.050383 -v 1.134749 0.024335 -27.050383 -v 1.134749 0.450013 -27.050383 -v 1.134749 0.875692 -27.050383 -v 1.134749 1.301370 -27.050383 -v 0.709070 1.301370 -27.050383 -v 0.499914 1.301370 -27.050383 -v 0.283392 1.301370 -27.050383 -v -0.142287 1.301370 -27.050383 -v -0.567965 1.301369 -18.817778 -v -0.567965 0.875691 -18.817778 -v -0.567965 0.450012 -18.817778 -v -0.567965 0.024334 -18.817778 -v -0.567965 -0.401345 -18.817778 -v -0.142286 -0.401345 -18.817778 -v 0.283392 -0.401345 -18.817778 -v 0.499915 -0.401344 -18.817778 -v 0.709071 -0.401344 -18.817778 -v 1.134749 -0.401344 -18.817778 -v 1.134749 0.024334 -18.817778 -v 1.134749 0.450012 -18.817778 -v 1.134749 0.875691 -18.817778 -v 1.134749 1.301369 -18.817778 -v 0.709071 1.301369 -18.817778 -v 0.499914 1.301369 -18.817778 -v 0.283392 1.301369 -18.817778 -v -0.142287 1.301369 -18.817778 -v -0.567965 1.301369 -21.168400 -v -0.567965 0.875691 -21.168400 -v -0.567965 0.450012 -21.168400 -v -0.567965 0.024334 -21.168400 -v -0.567965 -0.401344 -21.168400 -v -0.142286 -0.401344 -21.168400 -v 0.283392 -0.401344 -21.168400 -v 0.499915 -0.401344 -21.168400 -v 0.709070 -0.401344 -21.168400 -v 1.134749 -0.401344 -21.168400 -v 1.134749 0.024334 -21.168400 -v 1.134749 0.450013 -21.168400 -v 1.134749 0.875691 -21.168400 -v 1.134749 1.301370 -21.168400 -v 0.709070 1.301370 -21.168400 -v 0.499914 1.301369 -21.168400 -v 0.283392 1.301369 -21.168400 -v -0.142287 1.301369 -21.168400 -v 0.499913 9.560802 -27.050383 -v 0.283391 9.560802 -27.050383 -v 0.499913 9.560802 -29.099638 -v 0.283391 9.560802 -29.099638 -v 0.499913 9.560801 -18.817778 -v 0.283391 9.560801 -18.817778 -v 0.499913 9.560801 -20.777882 -v 0.283391 9.560801 -20.777882 -v -1.492831 0.450013 -29.099638 -v -1.492831 0.875692 -29.099638 -v -1.492831 0.875692 -29.464630 -v -1.492831 0.450013 -29.464630 -v -1.492830 0.450012 -20.777882 -v -1.492831 0.875691 -20.777882 -v -1.492831 0.875691 -21.168400 -v -1.492830 0.450012 -21.168400 -v -0.407079 1.119062 -18.539156 -v -0.567965 0.875691 -18.539156 -v -0.567965 0.450012 -18.539156 -v -0.567965 0.024334 -18.539156 -v -0.407079 -0.219038 -18.539156 -v -0.142286 -0.401345 -18.539156 -v 0.283392 -0.401345 -18.539156 -v 0.499915 -0.401345 -18.539156 -v 0.709071 -0.401344 -18.539156 -v 0.973863 -0.219038 -18.539156 -v 1.134749 0.024334 -18.539156 -v 1.134749 0.450012 -18.539156 -v 1.134749 0.875691 -18.539156 -v 0.973863 1.119062 -18.539156 -v 0.709071 1.301369 -18.539156 -v 0.499914 1.301369 -18.539156 -v 0.283392 1.301369 -18.539156 -v -0.142287 1.301369 -18.539156 -v 1.985611 0.450013 -29.464630 -v 1.985611 0.875692 -29.464630 -v 1.985611 0.875692 -29.099638 -v 1.985611 0.450013 -29.099638 -v 1.985611 0.450013 -21.168400 -v 1.985611 0.875691 -21.168400 -v 1.985611 0.875691 -20.777882 -v 1.985611 0.450013 -20.777882 -v 2.162425 0.571114 -21.636942 -v 2.162425 0.675225 -21.636942 -v 2.162425 0.675225 -20.366812 -v 2.162425 0.571114 -20.366812 -v 1.134749 0.875691 -8.351144 -v 1.134751 0.450012 -8.351145 -v 1.134749 0.024334 -8.351144 -v 0.973863 -0.219038 -8.351144 -v 0.709071 -0.401345 -8.351144 -v 0.499915 -0.401345 -8.351146 -v 0.283392 -0.401345 -8.351146 -v -0.142286 -0.401345 -8.351144 -v -0.407079 -0.219039 -8.351144 -v -0.567965 0.024333 -8.351144 -v -0.567965 0.450011 -8.351146 -v -0.567965 0.875690 -8.351144 -v -0.407079 1.119061 -8.351144 -v -0.142286 1.301368 -8.351144 -v 0.283392 1.301368 -8.351146 -v 0.499915 1.301368 -8.351146 -v 0.709071 1.301368 -8.351144 -v 0.973863 1.119062 -8.351144 -v 1.134751 0.450012 -9.221807 -v 1.134749 0.024334 -9.221807 -v 0.973863 -0.219038 -9.221807 -v 0.709071 -0.401345 -9.221807 -v 0.499915 -0.401345 -9.221807 -v 0.283392 -0.401345 -9.221807 -v -0.142286 -0.401345 -9.221807 -v -0.407079 -0.219039 -9.221807 -v -0.567965 0.024333 -9.221807 -v -0.567965 0.450011 -9.221807 -v -0.567965 0.875690 -9.221807 -v -0.407079 1.119061 -9.221807 -v -0.142286 1.301368 -9.221807 -v 0.283392 1.301368 -9.221807 -v 0.499915 1.301368 -9.221807 -v 0.709071 1.301368 -9.221807 -v 0.973863 1.119062 -9.221807 -v 1.134749 0.875691 -9.221807 -v 1.201807 0.450012 -9.221807 -v 1.201807 0.024335 -9.221807 -v 1.201807 0.450012 -8.351145 -v 1.201807 0.024335 -8.351144 -v 1.201806 0.875691 -9.221807 -v 1.201806 0.875691 -8.351144 -v 1.134750 -2.117632 -9.221807 -v 1.134750 -2.117633 -8.351144 -v 1.201807 -2.117632 -9.221807 -v 1.201807 -2.117632 -8.351144 -v 1.134749 3.017656 -9.221807 -v 1.134749 3.017656 -8.351144 -v 1.201806 3.017656 -8.351144 -v 1.201806 3.017656 -9.221807 -v 1.134750 -2.117632 -8.901156 -v 1.134749 0.024333 -8.901156 -v 0.973863 -0.219038 -8.901156 -v 0.709071 -0.401345 -8.901156 -v 0.499915 -0.401345 -8.901157 -v 0.283392 -0.401345 -8.901157 -v -0.142286 -0.401345 -8.901156 -v -0.407079 -0.219039 -8.901156 -v -0.567965 0.024333 -8.901156 -v -0.567965 0.450011 -8.901157 -v -0.567965 0.875690 -8.901156 -v -0.407079 1.119061 -8.901156 -v -0.142286 1.301368 -8.901156 -v 0.283392 1.301368 -8.901157 -v 0.499915 1.301368 -8.901157 -v 0.709071 1.301368 -8.901156 -v 0.973863 1.119062 -8.901156 -v 1.134749 0.875690 -8.901156 -v 1.134749 3.017656 -8.901156 -v 1.134750 -2.117632 -8.667174 -v 1.134749 0.024333 -8.667174 -v 0.973863 -0.219038 -8.667174 -v 0.709071 -0.401345 -8.667174 -v 0.499915 -0.401345 -8.667176 -v 0.283392 -0.401345 -8.667176 -v -0.142286 -0.401345 -8.667174 -v -0.407079 -0.219039 -8.667174 -v -0.567965 0.024333 -8.667174 -v -0.567965 0.450011 -8.667176 -v -0.567965 0.875690 -8.667174 -v -0.407079 1.119061 -8.667174 -v -0.142286 1.301368 -8.667174 -v 0.283392 1.301368 -8.667176 -v 0.499915 1.301368 -8.667176 -v 0.709071 1.301368 -8.667174 -v 0.973863 1.119062 -8.667174 -v 1.134749 0.875690 -8.667174 -v 1.134749 3.017656 -8.667174 -v 2.162425 0.779335 -20.366812 -v 11.229562 0.571115 -20.366812 -v 11.229562 0.675226 -20.366812 -v 11.229562 0.779337 -20.366812 -v 20.296698 0.571116 -20.366812 -v 20.296698 0.675227 -20.366812 -v 20.296698 0.779338 -20.366812 -v 20.296698 0.571116 -19.302092 -v 20.296698 0.675227 -19.302092 -v 20.296694 0.779338 -19.302959 -v 20.296698 0.571116 -18.237373 -v 20.296698 0.675227 -18.237373 -v 20.296694 0.779337 -18.237743 -v 11.229562 0.571115 -18.237373 -v 11.229562 0.675226 -18.237373 -v 11.229562 0.779336 -18.237373 -v 2.162425 0.571114 -18.237373 -v 2.162425 0.675225 -18.237373 -v 2.162425 0.779335 -18.237373 -v 2.162425 0.571114 -19.302092 -v 2.162425 0.675225 -19.302092 -v 2.162425 0.779335 -19.302092 -v 11.229562 0.779337 -19.302092 -v 11.229562 0.571115 -19.302092 -v 20.094322 0.779337 -18.237743 -v 20.094322 0.675227 -18.237373 -v 20.094322 0.571116 -18.237373 -v 20.094322 0.571116 -19.302092 -v 20.094322 0.571116 -20.366812 -v 20.094322 0.675227 -20.366812 -v 20.094322 0.779338 -20.366707 -v 20.094322 0.779338 -19.302959 -v 2.400114 0.779335 -18.237373 -v 2.400114 0.675225 -18.237373 -v 2.400114 0.571114 -18.237373 -v 2.400114 0.571114 -19.302092 -v 2.400113 0.571114 -20.366812 -v 2.400113 0.675225 -20.366812 -v 2.400113 0.779336 -20.366812 -v 2.400114 0.779335 -19.302092 -v 14.382567 0.779337 -18.237373 -v 14.382567 0.675226 -18.237373 -v 14.382567 0.571116 -18.237373 -v 14.382567 0.571116 -19.302092 -v 14.382567 0.571116 -20.366812 -v 14.382567 0.675226 -20.366812 -v 14.382567 0.779337 -20.366812 -v 14.382567 0.779337 -19.302092 -v 2.162425 0.571115 -23.766378 -v 2.162425 0.675225 -23.766378 -v 2.162425 0.779336 -23.766378 -v 11.229560 0.571116 -23.766378 -v 11.229560 0.675226 -23.766378 -v 11.229560 0.779337 -23.766378 -v 20.296694 0.571117 -23.766378 -v 20.296694 0.675227 -23.766378 -v 20.296694 0.779338 -23.766378 -v 20.296694 0.571117 -22.701660 -v 20.296694 0.675227 -22.701660 -v 20.296694 0.779338 -22.701660 -v 20.296694 0.571117 -21.636942 -v 20.296694 0.675227 -21.636942 -v 20.296694 0.779338 -21.636942 -v 11.229560 0.571116 -21.636942 -v 11.229560 0.675226 -21.636942 -v 11.229560 0.779337 -21.636942 -v 2.162425 0.779336 -21.636942 -v 2.162425 0.571115 -22.701660 -v 2.162425 0.675225 -22.701660 -v 2.162425 0.779336 -22.701660 -v 11.229560 0.779337 -22.701660 -v 11.229560 0.571116 -22.701660 -v 20.094322 0.779338 -21.636942 -v 20.094322 0.675227 -21.636942 -v 20.094322 0.571117 -21.636942 -v 20.094322 0.571117 -22.701660 -v 20.094322 0.571117 -23.766378 -v 20.094322 0.675227 -23.766378 -v 20.094322 0.779338 -23.766378 -v 20.094322 0.779338 -22.701660 -v 2.400113 0.779336 -21.636942 -v 2.400113 0.675225 -21.636942 -v 2.400113 0.571114 -21.636942 -v 2.400113 0.571115 -22.701660 -v 2.400113 0.571115 -23.766378 -v 2.400113 0.675225 -23.766378 -v 2.400113 0.779336 -23.766378 -v 2.400113 0.779336 -22.701660 -v 14.382564 0.779337 -21.636942 -v 14.382564 0.675227 -21.636942 -v 14.382564 0.571116 -21.636942 -v 14.382564 0.571116 -22.701660 -v 14.382564 0.571116 -23.766378 -v 14.382564 0.675227 -23.766378 -v 14.382564 0.779337 -23.766378 -v 14.382564 0.779337 -22.701660 -v 20.094322 0.918228 -22.701660 -v 20.094322 0.918228 -21.636942 -v 20.296694 0.918228 -21.636942 -v 20.296694 0.918228 -22.701660 -v 20.094322 0.918228 -23.766378 -v 20.296694 0.918228 -23.766378 -v 20.296694 0.918228 -18.238113 -v 20.094322 0.918228 -18.238113 -v 20.094322 0.918228 -20.366606 -v 20.296694 0.918228 -20.366606 -v 20.094322 0.918228 -19.303829 -v 20.296694 0.918228 -19.303829 -v 1.134749 1.652489 -8.351144 -v 1.134749 1.652489 -8.667174 -v 1.134749 1.652489 -8.901156 -v 1.134749 1.652489 -9.221807 -v 1.201807 1.652490 -9.221807 -v 1.201807 1.652490 -8.351144 -v 1.134749 -0.748390 -8.351144 -v 1.201806 -0.748388 -8.351144 -v 1.201806 -0.748388 -9.221807 -v 1.134749 -0.748390 -9.221807 -v 1.134749 -0.748390 -8.901156 -v 1.134749 -0.748390 -8.667174 -v 1.201806 1.133424 -8.351144 -v 1.134750 1.133425 -8.351144 -v 1.134749 1.133424 -8.667174 -v 1.134749 1.133424 -8.901156 -v 1.134750 1.133425 -9.221807 -v 1.201806 1.133424 -9.221807 -v 1.201806 1.133424 -8.901156 -v 1.201806 1.133424 -8.667174 -v 1.201806 -0.240385 -8.351144 -v 1.201806 -0.240385 -8.667174 -v 1.201806 -0.240385 -8.901156 -v 1.201806 -0.240385 -9.221807 -v 1.134749 -0.240387 -9.221807 -v 1.134749 -0.240387 -8.901156 -v 1.134749 -0.240387 -8.667174 -v 1.134749 -0.240387 -8.351144 -v 1.134750 -2.117632 -8.784534 -v 1.134749 -0.748390 -8.784534 -v 1.134749 -0.240387 -8.784534 -v 1.134749 0.024333 -8.784534 -v 0.973863 -0.219038 -8.784534 -v 0.709071 -0.401345 -8.784534 -v 0.499915 -0.401345 -8.784534 -v 0.283392 -0.401345 -8.784534 -v -0.142286 -0.401345 -8.784534 -v -0.407079 -0.219039 -8.784534 -v -0.567965 0.024333 -8.784534 -v -0.567965 0.450011 -8.784535 -v -0.567965 0.875690 -8.784534 -v -0.407079 1.119061 -8.784534 -v -0.142286 1.301368 -8.784534 -v 0.283392 1.301368 -8.784534 -v 0.499915 1.301368 -8.784535 -v 0.709071 1.301368 -8.784534 -v 0.973863 1.119062 -8.784534 -v 1.134749 0.875690 -8.784534 -v 1.134749 1.133424 -8.784534 -v 1.134749 1.652489 -8.784534 -v 1.134749 3.017656 -8.779718 -v 1.134749 -1.435079 -9.221807 -v 1.134749 -1.435080 -8.901156 -v 1.134749 -1.435080 -8.784534 -v 1.134749 -1.435080 -8.667174 -v 1.134749 -1.435079 -8.351144 -v 1.201807 -1.435078 -8.351144 -v 1.201807 -1.435078 -9.221807 -v 1.134749 2.345879 -9.221807 -v 1.201807 2.345881 -9.221807 -v 1.201807 2.345880 -8.351144 -v 1.134749 2.345879 -8.351144 -v 1.134749 2.345879 -8.667174 -v 1.134749 2.345879 -8.779719 -v 1.134749 2.345879 -8.901156 -v 0.937660 7.649418 -29.099638 -v 0.937660 7.649418 -27.050383 -v 0.721137 7.649418 -27.050383 -v 0.721137 7.649418 -29.099638 -v 0.499914 5.476038 -29.099638 -v 0.499914 5.476038 -27.050383 -v 0.283391 5.476038 -27.050383 -v 0.283391 5.476038 -29.099638 -v 1.046128 3.326023 -29.099634 -v 1.046128 3.326023 -27.050383 -v 0.829605 3.326023 -27.050383 -v 0.829605 3.326023 -29.099634 -v 0.721136 7.619881 -20.777882 -v 0.937660 7.619881 -20.777882 -v 0.937660 7.619881 -18.817778 -v 0.721137 7.619880 -18.817778 -v 0.283391 5.581431 -20.777882 -v 0.499914 5.581431 -20.777882 -v 0.499914 5.581430 -18.817778 -v 0.283391 5.581430 -18.817778 -v 0.829605 3.382049 -20.777882 -v 1.046128 3.382049 -20.777882 -v 1.046128 3.382048 -18.817778 -v 0.829605 3.382048 -18.817778 -v 0.973863 1.119062 -12.013901 -v 1.134749 0.875690 -12.013901 -v 1.134749 0.450012 -12.013901 -v 1.134749 0.024333 -12.013901 -v 0.973863 -0.219038 -12.013901 -v 0.709071 -0.401345 -12.166787 -v 0.499915 -0.401345 -12.166787 -v 0.283392 -0.401345 -12.166787 -v -0.142286 -0.401345 -12.166787 -v -0.407079 -0.219038 -12.013901 -v -0.567965 0.024333 -12.013901 -v -0.567965 0.450012 -12.013901 -v -0.567965 0.875690 -12.013901 -v -0.407079 1.119062 -12.013901 -v -0.142287 1.301369 -12.013901 -v 0.283392 1.301369 -12.013901 -v 0.499914 1.301369 -12.013901 -v 0.709071 1.301369 -12.013901 -v 0.973863 1.119062 -12.589344 -v 1.134749 0.875690 -12.589344 -v 1.134749 0.450012 -12.589344 -v 1.134749 0.024333 -12.589344 -v 0.973863 -0.219038 -12.589344 -v 0.709071 -0.401345 -12.436458 -v 0.499915 -0.401345 -12.436458 -v 0.283392 -0.401345 -12.436458 -v -0.142286 -0.401345 -12.436458 -v -0.407079 -0.219038 -12.589344 -v -0.567965 0.024333 -12.589344 -v -0.567965 0.450012 -12.589344 -v -0.567965 0.875690 -12.589344 -v -0.407079 1.119062 -12.589344 -v -0.142287 1.301369 -12.589344 -v 0.283392 1.301369 -12.589344 -v 0.499914 1.301369 -12.589344 -v 0.709071 1.301369 -12.589344 -v 0.709001 -1.274205 -12.436458 -v 0.412779 -1.274205 -12.436458 -v 0.709001 -1.274205 -12.166787 -v 0.412779 -1.274205 -12.166787 -v 0.283392 -1.274205 -12.436458 -v 0.283392 -1.274205 -12.166787 -v -0.136777 -1.274205 -12.436458 -v -0.136777 -1.274205 -12.166787 -v 1.484052 -0.401345 -12.436458 -v 1.484052 -0.401345 -12.166787 -v 1.484052 -1.274205 -12.166787 -v 1.484052 -1.274205 -12.436458 -v -0.805945 -0.401345 -12.436458 -v -0.805945 -0.401345 -12.166787 -v -0.799959 -1.274205 -12.436458 -v -0.799959 -1.274205 -12.166787 -v 0.709001 -1.427194 -12.436458 -v 0.412779 -1.427194 -12.436458 -v 0.709001 -1.427194 -12.166787 -v 0.412779 -1.427194 -12.166787 -v 0.709001 -1.274205 -12.648116 -v 0.412779 -1.274205 -12.648116 -v 0.709001 -1.427194 -12.648116 -v 0.412779 -1.427194 -12.648116 -v 0.709001 -1.527088 -12.436458 -v 0.412779 -1.527088 -12.436458 -v 0.412779 -1.527088 -12.648116 -v 0.709001 -1.527088 -12.648116 -v 0.915556 -1.673144 -12.240674 -v 0.206224 -1.673144 -12.240674 -v 0.206224 -1.673144 -12.843901 -v 0.915556 -1.673143 -12.843901 -v 0.637735 -1.609145 -12.476937 -v 0.484046 -1.609145 -12.476937 -v 0.484046 -1.609145 -12.607636 -v 0.637735 -1.609145 -12.607636 -v 0.104509 -1.673144 -12.555409 -v 0.484046 -1.609145 -12.545131 -v 0.637735 -1.609145 -12.545131 -v 1.017272 -1.673143 -12.555409 -v 0.709001 -1.527088 -12.546891 -v 0.709001 -1.427194 -12.546891 -v 0.709001 -1.274205 -12.546891 -v 0.412779 -1.274205 -12.546891 -v 0.412779 -1.427194 -12.546891 -v 0.412779 -1.527088 -12.546891 -v 0.599990 -0.401345 -8.351145 -v 0.599990 -0.401345 -8.667175 -v 0.599990 -0.401345 -8.784534 -v 0.599990 -0.401345 -8.901156 -v 0.599990 -0.401345 -9.221807 -v 0.599990 -0.401345 -12.166787 -v 0.554513 -1.274205 -12.166787 -v 0.554513 -1.427194 -12.166787 -v 0.554513 -1.427194 -12.436458 -v 0.554513 -1.527088 -12.436458 -v 0.545619 -1.673144 -12.109035 -v 0.557582 -1.609145 -12.476937 -v 0.557582 -1.609145 -12.545131 -v 0.557582 -1.609145 -12.607636 -v 0.545619 -1.673143 -12.975540 -v 0.554513 -1.527088 -12.648116 -v 0.554513 -1.427194 -12.648116 -v 0.554513 -1.274205 -12.648116 -v 0.554513 -1.274205 -12.546891 -v 0.554513 -1.274205 -12.436458 -v 0.599990 -0.401345 -12.436458 -v 0.599990 -0.401344 -18.539156 -v 0.599990 -0.401344 -18.817778 -v 0.599990 -0.401344 -20.777882 -v 0.599990 -0.401344 -21.168400 -v 0.599990 -0.401344 -27.050383 -v 0.599990 -0.401344 -29.099638 -v 0.599990 -0.401344 -29.464630 -v 0.599990 0.024335 -29.464630 -v 0.599990 0.450013 -29.464630 -v 0.599990 0.875692 -29.464630 -v 0.599990 1.301370 -29.464630 -v 0.599990 1.301370 -29.099638 -v 0.599990 1.301370 -27.050383 -v 0.599990 1.301370 -21.168400 -v 0.599990 1.301369 -20.777882 -v 0.599990 1.301369 -18.817778 -v 0.599990 1.301369 -18.539156 -v 0.599990 1.301369 -12.589344 -v 0.599990 1.301369 -12.013901 -v 0.599990 1.301368 -9.221807 -v 0.599990 1.301368 -8.901156 -v 0.599990 1.301368 -8.784534 -v 0.599990 1.301368 -8.667175 -v 0.599990 1.301368 -8.351145 -v 9.008803 1.651850 8.736988 -v 9.008803 2.345880 8.736988 -v 5.121458 2.345879 8.736988 -v 5.121459 1.651850 8.736988 -v 9.008803 3.017656 8.736987 -v 5.121458 3.017656 8.736988 -v 1.201807 2.345880 8.672776 -v 1.201806 1.652169 8.789890 -v 1.201806 3.017655 8.672776 -v 1.201807 2.345879 8.906758 -v 5.121458 2.345879 8.833652 -v 5.121459 1.651850 8.833652 -v 1.201806 3.017656 8.866279 -v 5.121458 3.017656 8.833652 -v 9.008803 2.345881 8.833652 -v 9.008803 1.651850 8.833652 -v 9.008803 3.017656 8.833652 -v 9.008803 2.345880 8.785319 -v 9.008803 1.651851 8.785319 -v 9.008803 3.017657 8.785320 -v 5.121458 3.017655 8.785320 -v 5.121459 1.651851 8.785319 -v 9.008802 -0.240460 8.736988 -v 9.008801 0.450012 8.736988 -v 5.121459 0.450011 8.736988 -v 5.121459 -0.240462 8.736988 -v 9.008803 1.140485 8.736988 -v 5.121459 1.140484 8.736988 -v 1.201807 0.450012 8.736988 -v 1.201806 -0.240386 8.736988 -v 1.201806 1.133423 8.736988 -v 1.201806 -0.240387 8.833652 -v 1.201807 0.450013 8.833652 -v 5.121459 0.450011 8.833652 -v 5.121459 -0.240462 8.833652 -v 1.201806 1.133423 8.833652 -v 5.121459 1.140484 8.833652 -v 9.008801 0.450013 8.833652 -v 9.008802 -0.240461 8.833652 -v 9.008803 1.140484 8.833652 -v 9.008801 0.450012 8.785320 -v 9.008801 -0.240460 8.785319 -v 9.008803 1.140485 8.785319 -v 5.121459 1.140484 8.785319 -v 1.201806 1.133423 8.790135 -v 5.121459 -0.240462 8.785319 -v 1.201806 -0.240387 8.790135 -v 9.008803 -2.117632 8.736988 -v 9.008803 -1.435080 8.736988 -v 5.121460 -1.435081 8.736988 -v 5.121460 -2.117632 8.736988 -v 9.008803 -0.751827 8.736988 -v 5.121459 -0.751828 8.736988 -v 1.201807 -1.435079 8.736988 -v 1.201807 -2.117633 8.736988 -v 1.201806 -0.751829 8.736988 -v 1.201807 -2.117633 8.833652 -v 1.201807 -1.435079 8.833652 -v 5.121459 -1.435081 8.833652 -v 5.121460 -2.117633 8.833652 -v 1.201806 -0.751828 8.833652 -v 5.121459 -0.751828 8.833652 -v 9.008803 -1.435080 8.833652 -v 9.008803 -2.117631 8.833652 -v 9.008803 -0.751827 8.833652 -v 9.008804 -1.435080 8.785319 -v 9.008804 -2.117633 8.785320 -v 9.008803 -0.751827 8.785320 -v 5.121459 -0.751828 8.785319 -v 1.201806 -0.748389 8.790135 -v 5.121460 -2.117632 8.785320 -v 1.201807 -2.117634 8.790135 -v -1.857359 0.571109 29.954885 -v -1.857359 0.675220 29.954885 -v -10.686808 0.675219 29.954885 -v -10.686808 0.571108 29.954885 -v -1.857359 0.779331 29.954885 -v -10.686808 0.779330 29.954885 -v -19.551571 0.571107 29.954885 -v -19.551571 0.675218 29.954885 -v -19.753946 0.675218 29.954885 -v -19.753946 0.571107 29.954885 -v -19.551571 0.779329 29.954988 -v -19.753946 0.779328 29.954885 -v -19.753946 0.675218 31.019604 -v -19.753946 0.571107 31.019604 -v -19.753942 0.779328 31.018738 -v -19.753946 0.675218 32.084324 -v -19.753946 0.571107 32.084324 -v -19.753942 0.779328 32.083954 -v -19.551571 0.675218 32.084324 -v -19.551571 0.571107 32.084324 -v -19.551571 0.779328 32.083954 -v -10.686808 0.571108 32.084324 -v -10.686808 0.675219 32.084324 -v -1.857359 0.675220 32.084324 -v -1.857359 0.571109 32.084324 -v -10.686808 0.779329 32.084324 -v -1.857359 0.779330 32.084324 -v -1.619671 0.571109 32.084324 -v -1.619671 0.675220 32.084324 -v -1.619671 0.675220 31.019604 -v -1.619671 0.571109 31.019604 -v -1.619671 0.779330 32.084324 -v -1.619671 0.779331 31.019604 -v -1.619671 0.675220 29.954885 -v -1.619671 0.571110 29.954885 -v -1.619671 0.779331 29.954885 -v -1.857359 0.779331 31.019604 -v -10.686808 0.779329 31.019604 -v -1.857359 0.571109 31.019604 -v -10.686808 0.571108 31.019604 -v -19.551571 0.571107 31.019604 -v -13.839814 0.779329 32.084324 -v -13.839814 0.675218 32.084324 -v -13.839814 0.571108 32.084324 -v -13.839814 0.571108 31.019604 -v -13.839814 0.571108 29.954885 -v -13.839814 0.675219 29.954885 -v -13.839814 0.779329 29.954885 -v -13.839814 0.779329 31.019604 -v -19.551571 0.779328 31.018738 -v -1.857359 0.571110 26.555317 -v -1.857359 0.675220 26.555317 -v -10.686805 0.675219 26.555317 -v -10.686805 0.571109 26.555317 -v -1.857359 0.779331 26.555317 -v -10.686805 0.779330 26.555317 -v -19.551571 0.571108 26.555317 -v -19.551571 0.675218 26.555317 -v -19.753942 0.675218 26.555317 -v -19.753942 0.571108 26.555317 -v -19.551571 0.779329 26.555317 -v -19.753942 0.779329 26.555317 -v -19.753942 0.675218 27.620035 -v -19.753942 0.571108 27.620035 -v -19.753942 0.779329 27.620035 -v -19.753942 0.675218 28.684755 -v -19.753942 0.571107 28.684755 -v -19.753942 0.779329 28.684755 -v -19.551571 0.675218 28.684755 -v -19.551571 0.571108 28.684755 -v -19.551571 0.779329 28.684755 -v -10.686805 0.571109 28.684755 -v -10.686805 0.675219 28.684755 -v -1.857359 0.675220 28.684755 -v -1.857359 0.571110 28.684755 -v -10.686805 0.779330 28.684755 -v -1.857359 0.779331 28.684755 -v -1.619671 0.571110 28.684755 -v -1.619671 0.675220 28.684755 -v -1.619671 0.675220 27.620035 -v -1.619671 0.571110 27.620035 -v -1.619671 0.779331 28.684755 -v -1.619671 0.779331 27.620035 -v -1.619671 0.675220 26.555317 -v -1.619671 0.571110 26.555317 -v -1.619671 0.779331 26.555317 -v -1.857359 0.779331 27.620035 -v -10.686805 0.779330 27.620035 -v -19.551571 0.918219 27.620035 -v -19.551571 0.918219 28.684755 -v -19.753942 0.918219 28.684755 -v -19.753942 0.918219 27.620035 -v -19.551571 0.918219 26.555317 -v -19.753942 0.918219 26.555317 -v -1.857359 0.571110 27.620035 -v -10.686805 0.571109 27.620035 -v -19.551571 0.571108 27.620035 -v -13.839811 0.779329 28.684755 -v -13.839811 0.675219 28.684755 -v -13.839811 0.571108 28.684755 -v -13.839811 0.571108 27.620035 -v -13.839811 0.571108 26.555317 -v -13.839811 0.675219 26.555317 -v -13.839811 0.779329 26.555317 -v -13.839811 0.779329 27.620035 -v -19.551571 0.779329 27.620035 -v -19.753942 0.918218 32.083584 -v -19.551571 0.918218 32.083584 -v -19.753942 0.918219 29.955090 -v -19.551571 0.918219 29.955090 -v -19.551571 0.918218 31.017866 -v -19.753942 0.918218 31.017866 -v -1.857359 0.571110 21.566267 -v -1.857359 0.675221 21.566267 -v -10.686808 0.675220 21.566267 -v -10.686808 0.571109 21.566267 -v -1.857359 0.779331 21.566267 -v -10.686808 0.779330 21.566267 -v -19.551571 0.571108 21.566267 -v -19.551571 0.675219 21.566267 -v -19.753946 0.675219 21.566267 -v -19.753946 0.571108 21.566267 -v -19.551571 0.779329 21.566372 -v -19.753946 0.779329 21.566267 -v -19.753946 0.675219 22.630987 -v -19.753946 0.571108 22.630987 -v -19.753942 0.779329 22.630119 -v -19.753946 0.675219 23.695705 -v -19.753946 0.571108 23.695705 -v -19.753942 0.779329 23.695335 -v -19.551571 0.675219 23.695705 -v -19.551571 0.571108 23.695705 -v -19.551571 0.779329 23.695335 -v -10.686808 0.571109 23.695705 -v -10.686808 0.675220 23.695705 -v -1.857360 0.675221 23.695705 -v -1.857360 0.571110 23.695705 -v -10.686808 0.779330 23.695705 -v -1.857360 0.779331 23.695705 -v -1.619671 0.571110 23.695705 -v -1.619671 0.675221 23.695705 -v -1.619671 0.675221 22.630987 -v -1.619671 0.571110 22.630987 -v -1.619671 0.779331 23.695705 -v -1.619671 0.779331 22.630987 -v -1.619671 0.675221 21.566267 -v -1.619671 0.571110 21.566267 -v -1.619671 0.779331 21.566267 -v -1.857360 0.779331 22.630987 -v -10.686808 0.779330 22.630987 -v -1.857360 0.571110 22.630987 -v -10.686808 0.571109 22.630987 -v -19.551571 0.571108 22.630987 -v -13.839814 0.779330 23.695705 -v -13.839814 0.675219 23.695705 -v -13.839814 0.571109 23.695705 -v -13.839814 0.571109 22.630987 -v -13.839814 0.571109 21.566267 -v -13.839814 0.675219 21.566267 -v -13.839814 0.779330 21.566267 -v -13.839814 0.779330 22.630987 -v -19.551571 0.779329 22.630119 -v -1.857359 0.571111 18.166702 -v -1.857359 0.675221 18.166702 -v -10.686806 0.675220 18.166702 -v -10.686806 0.571109 18.166702 -v -1.857359 0.779332 18.166702 -v -10.686806 0.779331 18.166702 -v -19.551571 0.571108 18.166702 -v -19.551571 0.675219 18.166702 -v -19.753942 0.675219 18.166702 -v -19.753942 0.571108 18.166702 -v -19.551571 0.779330 18.166702 -v -19.753942 0.779330 18.166702 -v -19.753942 0.675219 19.231419 -v -19.753942 0.571108 19.231419 -v -19.753942 0.779329 19.231419 -v -19.753942 0.675219 20.296137 -v -19.753942 0.571108 20.296137 -v -19.753942 0.779329 20.296137 -v -19.551571 0.675219 20.296137 -v -19.551571 0.571108 20.296137 -v -19.551571 0.779329 20.296137 -v -10.686805 0.571109 20.296137 -v -10.686805 0.675220 20.296137 -v -1.857359 0.675221 20.296137 -v -1.857359 0.571110 20.296137 -v -10.686805 0.779330 20.296137 -v -1.857359 0.779331 20.296137 -v -1.619671 0.571110 20.296137 -v -1.619671 0.675221 20.296137 -v -1.619671 0.675221 19.231419 -v -1.619671 0.571110 19.231419 -v -1.619671 0.779332 20.296137 -v -1.619671 0.779332 19.231419 -v -1.619671 0.675221 18.166702 -v -1.619671 0.571111 18.166702 -v -1.619671 0.779332 18.166702 -v -1.857359 0.779332 19.231419 -v -10.686806 0.779330 19.231419 -v -19.551571 0.918220 19.231419 -v -19.551571 0.918219 20.296137 -v -19.753942 0.918219 20.296137 -v -19.753942 0.918220 19.231419 -v -19.551571 0.918220 18.166702 -v -19.753942 0.918220 18.166702 -v -1.857359 0.571110 19.231419 -v -10.686806 0.571109 19.231419 -v -19.551571 0.571108 19.231419 -v -13.839811 0.779330 20.296137 -v -13.839811 0.675219 20.296137 -v -13.839811 0.571109 20.296137 -v -13.839811 0.571109 19.231419 -v -13.839811 0.571109 18.166702 -v -13.839811 0.675220 18.166702 -v -13.839811 0.779330 18.166702 -v -13.839811 0.779330 19.231419 -v -19.551571 0.779329 19.231419 -v -19.753942 0.918219 23.694965 -v -19.551571 0.918219 23.694965 -v -19.753942 0.918219 21.566471 -v -19.551571 0.918219 21.566471 -v -19.551571 0.918219 22.629250 -v -19.753942 0.918219 22.629250 -v 2.430042 0.571110 28.760996 -v 2.430042 0.675221 28.760996 -v 11.259491 0.675222 28.760996 -v 11.259491 0.571111 28.760996 -v 2.430042 0.779331 28.760996 -v 11.259491 0.779332 28.760996 -v 20.124250 0.571112 28.760996 -v 20.124250 0.675223 28.760996 -v 20.326626 0.675223 28.760996 -v 20.326626 0.571112 28.760996 -v 20.124250 0.779333 28.760893 -v 20.326626 0.779333 28.760996 -v 20.326626 0.675223 27.696278 -v 20.326626 0.571112 27.696278 -v 20.326626 0.779333 27.697145 -v 20.326626 0.675223 26.631557 -v 20.326626 0.571112 26.631557 -v 20.326626 0.779334 26.631927 -v 20.124250 0.675223 26.631557 -v 20.124250 0.571112 26.631557 -v 20.124250 0.779334 26.631927 -v 11.259491 0.571111 26.631557 -v 11.259491 0.675222 26.631557 -v 2.430043 0.675221 26.631557 -v 2.430043 0.571110 26.631557 -v 11.259491 0.779332 26.631557 -v 2.430043 0.779331 26.631557 -v 2.192354 0.571110 26.631557 -v 2.192354 0.675221 26.631557 -v 2.192354 0.675221 27.696278 -v 2.192354 0.571110 27.696278 -v 2.192354 0.779331 26.631557 -v 2.192354 0.779331 27.696278 -v 2.192354 0.675221 28.760996 -v 2.192354 0.571110 28.760996 -v 2.192354 0.779331 28.760996 -v 2.430043 0.779331 27.696278 -v 11.259491 0.779332 27.696278 -v 2.430043 0.571110 27.696278 -v 11.259491 0.571111 27.696278 -v 20.124250 0.571112 27.696278 -v 14.412498 0.779333 26.631557 -v 14.412498 0.675222 26.631557 -v 14.412498 0.571112 26.631557 -v 14.412498 0.571112 27.696278 -v 14.412498 0.571112 28.760996 -v 14.412498 0.675222 28.760996 -v 14.412498 0.779333 28.760996 -v 14.412498 0.779333 27.696278 -v 20.124250 0.779333 27.697145 -v 2.430042 0.571110 32.160564 -v 2.430042 0.675220 32.160564 -v 11.259489 0.675221 32.160564 -v 11.259489 0.571111 32.160564 -v 2.430042 0.779331 32.160564 -v 11.259489 0.779332 32.160564 -v 20.124250 0.571112 32.160564 -v 20.124250 0.675223 32.160564 -v 20.326622 0.675223 32.160564 -v 20.326622 0.571112 32.160564 -v 20.124250 0.779333 32.160564 -v 20.326622 0.779333 32.160564 -v 20.326622 0.675223 31.095846 -v 20.326622 0.571112 31.095846 -v 20.326622 0.779333 31.095846 -v 20.326622 0.675223 30.031128 -v 20.326622 0.571112 30.031128 -v 20.326622 0.779333 30.031128 -v 20.124250 0.675223 30.031128 -v 20.124250 0.571112 30.031128 -v 20.124250 0.779333 30.031128 -v 11.259489 0.571111 30.031128 -v 11.259489 0.675222 30.031128 -v 2.430042 0.675221 30.031128 -v 2.430042 0.571110 30.031128 -v 11.259489 0.779332 30.031128 -v 2.430042 0.779331 30.031128 -v 2.192354 0.571110 30.031128 -v 2.192354 0.675221 30.031128 -v 2.192354 0.675220 31.095846 -v 2.192354 0.571110 31.095846 -v 2.192354 0.779331 30.031128 -v 2.192354 0.779331 31.095846 -v 2.192354 0.675220 32.160564 -v 2.192354 0.571110 32.160564 -v 2.192354 0.779331 32.160564 -v 2.430042 0.779331 31.095846 -v 11.259489 0.779332 31.095846 -v 20.124250 0.918223 31.095846 -v 20.124250 0.918223 30.031128 -v 20.326622 0.918223 30.031128 -v 20.326622 0.918223 31.095846 -v 20.124250 0.918223 32.160564 -v 20.326622 0.918223 32.160564 -v 2.430042 0.571110 31.095846 -v 11.259489 0.571111 31.095846 -v 20.124250 0.571112 31.095846 -v 14.412494 0.779333 30.031128 -v 14.412494 0.675222 30.031128 -v 14.412494 0.571111 30.031128 -v 14.412494 0.571111 31.095846 -v 14.412494 0.571111 32.160564 -v 14.412494 0.675222 32.160564 -v 14.412494 0.779332 32.160564 -v 14.412494 0.779332 31.095846 -v 20.124250 0.779333 31.095846 -v 20.326622 0.918224 26.632298 -v 20.124250 0.918224 26.632298 -v 20.326622 0.918223 28.760792 -v 20.124250 0.918223 28.760792 -v 20.124250 0.918224 27.698015 -v 20.326622 0.918224 27.698015 -v -0.407079 -0.219040 12.594946 -v -0.567964 0.024331 12.594946 -v -0.567964 0.024331 18.544756 -v -0.407079 -0.219041 18.544756 -v -0.567964 0.450010 12.594946 -v -0.567964 0.450009 18.544756 -v -0.567964 0.875688 12.594946 -v -0.567964 0.875687 18.544756 -v -0.407079 1.119060 12.594946 -v -0.407079 1.119059 18.544756 -v -0.567964 -0.401349 29.105240 -v -0.567964 0.024330 29.105240 -v -0.567964 0.024330 29.470232 -v -0.567964 -0.401349 29.470232 -v -0.567964 0.450008 29.105240 -v -0.567964 0.450008 29.470232 -v -0.567964 0.875687 29.105240 -v -0.567965 1.301365 29.105240 -v -0.567965 1.301365 29.470232 -v -0.567964 0.875687 29.470232 -v -0.142286 0.024330 29.470232 -v -0.142286 -0.401349 29.470232 -v -0.142286 0.450008 29.470232 -v -0.142286 0.875687 29.470232 -v -0.142286 1.301365 29.470232 -v 0.283392 0.024330 29.470232 -v 0.283392 -0.401349 29.470232 -v 0.283392 0.450008 29.470232 -v 0.283392 0.875687 29.470232 -v 0.283392 1.301365 29.470232 -v 0.499915 0.024330 29.470232 -v 0.499915 -0.401349 29.470232 -v 0.499915 0.450008 29.470232 -v 0.499915 0.875687 29.470232 -v 0.499915 1.301365 29.470232 -v 0.709071 -0.401349 29.470232 -v 0.709071 0.024330 29.470232 -v 1.134750 0.024330 29.470232 -v 1.134750 -0.401349 29.470232 -v 0.709071 0.450008 29.470232 -v 1.134750 0.450008 29.470232 -v 0.709071 0.875687 29.470232 -v 1.134750 0.875687 29.470232 -v 0.709071 1.301365 29.470232 -v 1.134750 1.301365 29.470232 -v 1.134750 0.024330 29.105240 -v 1.134750 -0.401349 29.105240 -v 1.134750 0.450008 29.105240 -v 1.134750 1.301365 29.105240 -v 1.134750 0.875687 29.105240 -v 0.973863 -0.219041 18.544756 -v 1.134749 0.024331 18.544756 -v 1.134749 0.024331 12.594946 -v 0.973863 -0.219040 12.594946 -v 1.134749 0.450009 18.544756 -v 1.134749 0.450010 12.594946 -v 1.134749 0.875688 18.544756 -v 1.134749 0.875688 12.594946 -v 0.973863 1.119059 18.544756 -v 0.973863 1.119060 12.594946 -v 0.709071 1.301365 29.105240 -v 0.709071 1.301367 12.594946 -v 0.709071 1.301366 18.544756 -v 0.499915 1.301365 29.105240 -v 0.283392 1.301365 29.105240 -v 0.499915 1.301367 12.594946 -v 0.499915 1.301366 18.544756 -v 0.283392 1.301366 18.544756 -v 0.283392 1.301366 12.594946 -v -0.142286 1.301365 29.105240 -v -0.142286 1.301366 18.544756 -v -0.142286 1.301366 12.594946 -v 0.709071 -0.401349 29.105240 -v 0.709071 -0.401347 12.442060 -v 0.709071 -0.401348 18.544756 -v 0.499915 -0.401349 29.105240 -v 0.283392 -0.401349 29.105240 -v 0.499915 -0.401348 18.544756 -v 0.499915 -0.401347 12.442060 -v 0.283392 -0.401347 12.442060 -v 0.283392 -0.401348 18.544756 -v -0.142286 -0.401349 29.105240 -v -0.142286 -0.401347 12.442060 -v -0.142286 -0.401348 18.544756 -v 0.499915 1.301366 20.783482 -v 0.499915 1.301366 21.174002 -v 0.283392 1.301366 21.174002 -v 0.283392 1.301366 20.783482 -v 1.134750 1.301366 20.783482 -v 1.134750 1.301366 21.174002 -v 0.709071 1.301366 21.174002 -v 0.709071 1.301366 20.783482 -v 1.134750 0.875687 21.174002 -v 1.134750 0.875687 20.783482 -v 1.134750 0.024331 21.174002 -v 1.134750 0.450009 21.174002 -v 1.134750 0.450009 20.783482 -v 1.134750 0.024331 20.783482 -v 1.134750 -0.401348 21.174002 -v 1.134750 -0.401348 20.783482 -v 0.709071 -0.401348 21.174002 -v 0.709071 -0.401348 20.783482 -v 0.283392 -0.401348 21.174002 -v 0.499915 -0.401348 21.174002 -v 0.499915 -0.401348 20.783482 -v 0.283392 -0.401348 20.783482 -v -0.142286 -0.401348 21.174002 -v -0.142286 -0.401348 20.783482 -v -0.567964 -0.401348 21.174002 -v -0.567964 -0.401348 20.783482 -v -0.567964 0.024330 20.783482 -v -0.567964 0.024330 21.174002 -v -0.567964 0.450009 20.783482 -v -0.567964 0.450009 21.174002 -v -0.567964 0.875687 20.783482 -v -0.567965 1.301366 20.783482 -v -0.567965 1.301366 21.174002 -v -0.567964 0.875687 21.174002 -v -0.142286 1.301366 20.783482 -v -0.142286 1.301366 21.174002 -v 0.599990 1.301366 18.544756 -v 0.599990 1.301367 12.594946 -v 0.599991 1.301366 21.174002 -v 0.599991 1.301366 20.783482 -v 0.599991 1.301365 29.470232 -v 0.599991 1.301365 29.105240 -v 0.599991 0.875687 29.470232 -v 0.599991 0.450008 29.470232 -v 0.599991 0.024330 29.470232 -v 0.599991 -0.401349 29.470232 -v 0.599991 -0.401349 29.105240 -v 0.599991 -0.401348 20.783482 -v 0.599991 -0.401348 21.174002 -v 0.599990 -0.401347 12.442060 -v 0.599990 -0.401348 18.544756 -v -0.567964 0.875687 27.055984 -v -0.567965 1.301365 27.055984 -v -0.567964 0.450008 27.055984 -v -0.567964 0.024330 27.055984 -v -0.567964 -0.401349 27.055984 -v -0.142286 -0.401349 27.055984 -v 0.283392 -0.401349 27.055984 -v 0.499915 -0.401349 27.055984 -v 0.709071 -0.401348 27.055984 -v 0.599991 -0.401348 27.055984 -v 1.134750 -0.401348 27.055984 -v 1.134750 0.024330 27.055984 -v 1.134750 0.450008 27.055984 -v 1.134750 0.875687 27.055984 -v 1.134750 1.301365 27.055984 -v 0.709071 1.301365 27.055984 -v 0.599991 1.301365 27.055984 -v 0.283391 9.560798 27.055984 -v 0.499914 9.560798 27.055984 -v 0.499914 9.560798 29.105240 -v 0.283391 9.560798 29.105240 -v -0.142286 1.301365 27.055984 -v 0.283392 1.301365 27.055984 -v -0.567964 0.875687 18.823378 -v -0.567965 1.301366 18.823378 -v -0.567964 0.450009 18.823378 -v -0.567964 0.024331 18.823378 -v -0.567964 -0.401348 18.823378 -v -0.142286 -0.401348 18.823378 -v 0.283392 -0.401348 18.823378 -v 0.499915 -0.401348 18.823378 -v 0.709071 -0.401348 18.823378 -v 0.599990 -0.401348 18.823378 -v 1.134749 -0.401348 18.823378 -v 1.134749 0.024331 18.823378 -v 1.134749 0.450009 18.823378 -v 1.134749 0.875688 18.823378 -v 1.134749 1.301366 18.823378 -v 0.709071 1.301366 18.823378 -v 0.599990 1.301366 18.823378 -v 0.283391 9.560798 18.823378 -v 0.499914 9.560798 18.823378 -v 0.499914 9.560798 20.783482 -v 0.283391 9.560798 20.783482 -v -0.142286 1.301366 18.823378 -v 0.283392 1.301366 18.823378 -v 0.499915 1.301365 27.055984 -v 1.046129 3.326018 27.055984 -v 0.829606 3.326018 27.055984 -v 1.046129 3.326018 29.105236 -v 0.829606 3.326018 29.105236 -v 0.499915 1.301366 18.823378 -v 1.046128 3.382045 18.823378 -v 0.829605 3.382045 18.823378 -v 1.046129 3.382045 20.783482 -v 0.829606 3.382045 20.783482 -v -1.492830 0.875686 29.105240 -v -1.492830 0.450008 29.105240 -v -1.492830 0.875686 29.470232 -v -1.492830 0.450008 29.470232 -v -1.492830 0.875687 20.783482 -v -1.492830 0.450009 20.783482 -v -1.492830 0.875687 21.174002 -v -1.492830 0.450009 21.174002 -v 1.985612 0.875687 29.470232 -v 1.985612 0.450008 29.470232 -v 1.985612 0.875687 29.105240 -v 1.985612 0.450008 29.105240 -v 1.985612 0.875688 21.174002 -v 1.985612 0.450009 21.174002 -v 1.985612 0.875688 20.783482 -v 1.985612 0.450009 20.783482 -v 2.162426 0.675221 21.642542 -v 2.162426 0.571111 21.642542 -v 2.162426 0.675221 20.372412 -v 2.162426 0.571111 20.372412 -v 1.134751 0.450010 8.356746 -v 1.134749 0.875690 8.356745 -v 1.134749 0.024332 8.356745 -v 0.973863 -0.219040 8.356745 -v 0.709071 -0.401347 8.356745 -v 0.599990 -0.401347 8.356746 -v 0.283392 -0.401347 8.356747 -v 0.499915 -0.401347 8.356747 -v -0.142286 -0.401347 8.356745 -v -0.407079 -0.219040 8.356745 -v -0.567965 0.024331 8.356745 -v -0.567965 0.450010 8.356747 -v -0.567965 0.875688 8.356745 -v -0.407079 1.119060 8.356745 -v -0.142286 1.301367 8.356745 -v 0.283392 1.301367 8.356747 -v 0.499915 1.301367 8.356747 -v 0.709071 1.301367 8.356745 -v 0.599990 1.301367 8.356746 -v 0.973863 1.119060 8.356745 -v 1.201807 0.024333 9.227408 -v 1.201807 0.450011 9.227408 -v 0.973863 -0.219040 9.227408 -v 1.134749 0.024332 9.227408 -v 1.134749 0.024332 8.906758 -v 0.973863 -0.219040 8.906758 -v 0.709071 -0.401347 9.227408 -v 0.709071 -0.401347 8.906758 -v 0.599990 -0.401347 9.227408 -v 0.599990 -0.401347 8.906758 -v 0.283392 -0.401347 9.227408 -v 0.499915 -0.401347 9.227408 -v 0.499915 -0.401347 8.906759 -v 0.283392 -0.401347 8.906759 -v -0.142286 -0.401347 9.227408 -v -0.142286 -0.401347 8.906758 -v -0.407079 -0.219040 9.227408 -v -0.407079 -0.219040 8.906758 -v -0.567965 0.024331 8.906758 -v -0.567965 0.024331 9.227408 -v -0.567965 0.450010 8.906759 -v -0.567965 0.450010 9.227408 -v -0.567965 0.875688 8.906758 -v -0.567965 0.875688 9.227408 -v -0.407079 1.119060 8.906758 -v -0.407079 1.119060 9.227408 -v -0.142286 1.301367 8.906758 -v -0.142286 1.301367 9.227408 -v 0.283392 1.301367 8.906759 -v 0.283392 1.301367 9.227408 -v 0.499915 1.301367 8.906759 -v 0.499915 1.301367 9.227408 -v 0.709071 1.301367 8.906758 -v 0.709071 1.301367 9.227408 -v 0.599990 1.301367 9.227408 -v 0.599990 1.301367 8.906758 -v 0.973863 1.119060 8.906758 -v 0.973863 1.119060 9.227408 -v 1.134749 0.875690 9.227408 -v 1.134749 0.875688 8.906758 -v 1.201806 0.875689 9.227408 -v 1.134751 0.450010 9.227408 -v 1.201807 0.024333 8.356745 -v 1.201807 0.450011 8.356746 -v 1.134750 -2.117634 8.906758 -v 1.134750 -2.117634 9.227408 -v 1.201807 -2.117634 9.227408 -v 1.134749 3.017655 9.227408 -v 1.134749 3.017655 8.906758 -v 1.201806 3.017655 9.227408 -v 1.201806 0.875689 8.356745 -v 1.134749 -0.240388 9.227408 -v 1.134749 -0.240388 8.906758 -v 1.201806 -0.240387 9.227408 -v 1.201806 -0.240387 8.906758 -v 1.134749 -0.240388 8.356745 -v 1.201806 -0.240387 8.356745 -v 1.134749 1.133423 8.906758 -v 1.134750 1.133423 9.227408 -v 1.201806 1.133423 8.356745 -v 1.134750 1.133423 8.356745 -v 1.201806 1.133423 9.227408 -v 1.201806 1.133423 8.906758 -v 1.134750 -2.117634 8.790135 -v 1.134749 0.024332 8.790135 -v 1.134749 -0.240388 8.790135 -v 0.973863 -0.219040 8.790135 -v 0.709071 -0.401347 8.790135 -v 0.599990 -0.401347 8.790135 -v 0.499915 -0.401347 8.790136 -v 0.283392 -0.401347 8.790136 -v -0.142286 -0.401347 8.790135 -v -0.407079 -0.219040 8.790135 -v -0.567965 0.024331 8.790135 -v -0.567965 0.450010 8.790137 -v -0.567965 0.875688 8.790135 -v -0.407079 1.119060 8.790135 -v -0.142286 1.301367 8.790135 -v 0.283392 1.301367 8.790136 -v 0.499915 1.301367 8.790137 -v 0.709071 1.301367 8.790135 -v 0.599990 1.301367 8.790136 -v 0.973863 1.119060 8.790135 -v 1.134749 0.875688 8.790135 -v 1.134749 1.133423 8.790135 -v 1.134749 3.017655 8.785319 -v 1.201806 1.133423 8.672776 -v 1.201806 -0.240387 8.672776 -v 1.134750 -2.117634 8.356745 -v 1.134750 -2.117634 8.672776 -v 1.201807 -2.117634 8.356745 -v 1.134749 0.024332 8.672776 -v 1.134749 -0.240388 8.672776 -v 0.973863 -0.219040 8.672776 -v 0.709071 -0.401347 8.672776 -v 0.599990 -0.401347 8.672776 -v 0.283392 -0.401347 8.672777 -v 0.499915 -0.401347 8.672777 -v -0.142286 -0.401347 8.672776 -v -0.407079 -0.219040 8.672776 -v -0.567965 0.024331 8.672776 -v -0.567965 0.450010 8.672777 -v -0.567965 0.875688 8.672776 -v -0.407079 1.119060 8.672776 -v -0.142286 1.301367 8.672776 -v 0.283392 1.301367 8.672777 -v 0.499915 1.301367 8.672777 -v 0.709071 1.301367 8.672776 -v 0.599990 1.301367 8.672776 -v 0.973863 1.119060 8.672776 -v 1.134749 0.875688 8.672776 -v 1.134749 1.133422 8.672776 -v 1.134749 3.017655 8.672776 -v 1.134749 3.017655 8.356745 -v 1.201806 3.017655 8.356745 -v 2.400114 0.571111 20.372412 -v 2.400114 0.675221 20.372412 -v 11.229562 0.675222 20.372412 -v 11.229562 0.571112 20.372412 -v 2.400114 0.779332 20.372412 -v 11.229562 0.779333 20.372412 -v 20.094322 0.571113 20.372412 -v 20.094322 0.675224 20.372412 -v 20.296698 0.675224 20.372412 -v 20.296698 0.571113 20.372412 -v 20.094322 0.779334 20.372307 -v 20.296698 0.779334 20.372412 -v 20.296698 0.675224 19.307692 -v 20.296698 0.571113 19.307692 -v 20.296694 0.779334 19.308559 -v 20.296698 0.675224 18.242973 -v 20.296698 0.571113 18.242973 -v 20.296694 0.779334 18.243343 -v 20.094322 0.675224 18.242973 -v 20.094322 0.571113 18.242973 -v 20.094322 0.779334 18.243343 -v 11.229562 0.571112 18.242973 -v 11.229562 0.675223 18.242973 -v 2.400114 0.675222 18.242973 -v 2.400114 0.571111 18.242973 -v 11.229562 0.779333 18.242973 -v 2.400114 0.779332 18.242973 -v 2.162425 0.571111 18.242973 -v 2.162425 0.675222 18.242973 -v 2.162425 0.675222 19.307692 -v 2.162425 0.571111 19.307692 -v 2.162425 0.779332 18.242973 -v 2.162425 0.779332 19.307692 -v 2.162426 0.779332 20.372412 -v 2.400114 0.779332 19.307692 -v 11.229562 0.779333 19.307692 -v 2.400114 0.571111 19.307692 -v 11.229562 0.571112 19.307692 -v 20.094322 0.571113 19.307692 -v 14.382567 0.779334 18.242973 -v 14.382567 0.675223 18.242973 -v 14.382567 0.571112 18.242973 -v 14.382567 0.571112 19.307692 -v 14.382567 0.571112 20.372412 -v 14.382567 0.675223 20.372412 -v 14.382567 0.779333 20.372412 -v 14.382567 0.779333 19.307692 -v 20.094322 0.779334 19.308559 -v 2.400114 0.571111 23.771978 -v 2.400114 0.675221 23.771978 -v 11.229560 0.675222 23.771978 -v 11.229560 0.571112 23.771978 -v 2.400114 0.779332 23.771978 -v 11.229560 0.779333 23.771978 -v 20.094322 0.571113 23.771978 -v 20.094322 0.675223 23.771978 -v 20.296694 0.675223 23.771978 -v 20.296694 0.571113 23.771978 -v 20.094322 0.779334 23.771978 -v 20.296694 0.779334 23.771978 -v 20.296694 0.675223 22.707262 -v 20.296694 0.571113 22.707262 -v 20.296694 0.779334 22.707262 -v 20.296694 0.675223 21.642542 -v 20.296694 0.571113 21.642542 -v 20.296694 0.779334 21.642542 -v 20.094322 0.675223 21.642542 -v 20.094322 0.571113 21.642542 -v 20.094322 0.779334 21.642542 -v 11.229560 0.571112 21.642542 -v 11.229560 0.675222 21.642542 -v 2.400114 0.675221 21.642542 -v 2.400114 0.571111 21.642542 -v 11.229560 0.779333 21.642542 -v 2.400114 0.779332 21.642542 -v 2.162426 0.675221 22.707262 -v 2.162426 0.571111 22.707262 -v 2.162426 0.779332 21.642542 -v 2.162426 0.779332 22.707262 -v 2.162426 0.675221 23.771978 -v 2.162426 0.571110 23.771978 -v 2.162426 0.779332 23.771978 -v 2.400114 0.779332 22.707262 -v 11.229560 0.779333 22.707262 -v 20.094322 0.918224 22.707262 -v 20.094322 0.918224 21.642542 -v 20.296694 0.918224 21.642542 -v 20.296694 0.918224 22.707262 -v 20.094322 0.918224 23.771978 -v 20.296694 0.918224 23.771978 -v 2.400114 0.571111 22.707262 -v 11.229560 0.571112 22.707262 -v 20.094322 0.571113 22.707262 -v 14.382564 0.779333 21.642542 -v 14.382564 0.675223 21.642542 -v 14.382564 0.571112 21.642542 -v 14.382564 0.571112 22.707262 -v 14.382564 0.571112 23.771978 -v 14.382564 0.675223 23.771978 -v 14.382564 0.779333 23.771978 -v 14.382564 0.779333 22.707262 -v 20.094322 0.779334 22.707262 -v 20.296694 0.918224 18.243713 -v 20.094322 0.918224 18.243713 -v 20.296694 0.918224 20.372208 -v 20.094322 0.918224 20.372208 -v 20.094322 0.918224 19.309429 -v 20.296694 0.918224 19.309429 -v 1.134749 2.345878 8.672776 -v 1.134749 1.652487 8.672776 -v 1.134749 1.652488 8.356745 -v 1.134749 2.345878 8.356745 -v 1.134749 2.345878 8.906758 -v 1.134749 1.652487 8.906758 -v 1.134749 1.652487 8.790135 -v 1.134749 2.345878 8.785320 -v 1.134749 1.652488 9.227408 -v 1.134749 2.345878 9.227408 -v 1.201807 1.652488 9.227408 -v 1.201807 2.345879 9.227408 -v 1.201807 1.652488 8.356745 -v 1.201807 2.345879 8.356745 -v 1.201806 -0.748390 8.356745 -v 1.134749 -0.748392 8.356745 -v 1.134749 -1.435081 8.356745 -v 1.201807 -1.435079 8.356745 -v 1.201806 -0.748390 9.227408 -v 1.201807 -1.435079 9.227408 -v 1.134749 -0.748392 9.227408 -v 1.134749 -1.435081 9.227408 -v 1.134749 -0.748392 8.906758 -v 1.134749 -1.435082 8.906758 -v 1.134749 -0.748392 8.790135 -v 1.134749 -1.435082 8.790135 -v 1.134749 -0.748392 8.672776 -v 1.134749 -1.435082 8.672776 -v 0.937660 7.649413 27.055984 -v 0.937660 7.649413 29.105240 -v 0.721138 7.649413 27.055984 -v 0.721138 7.649413 29.105240 -v 0.499914 5.476033 27.055984 -v 0.499914 5.476033 29.105240 -v 0.283392 5.476033 27.055984 -v 0.283392 5.476033 29.105240 -v 0.937660 7.619877 20.783482 -v 0.721137 7.619877 20.783482 -v 0.937660 7.619877 18.823378 -v 0.721137 7.619877 18.823378 -v 0.499914 5.581427 20.783482 -v 0.283392 5.581427 20.783482 -v 0.499914 5.581428 18.823378 -v 0.283392 5.581427 18.823378 -v 1.134749 0.875688 12.019503 -v 0.973863 1.119060 12.019503 -v 1.134749 0.450010 12.019503 -v 1.134749 0.024331 12.019503 -v 0.973863 -0.219040 12.019503 -v 0.709071 -0.401347 12.172389 -v 0.599990 -0.401347 12.172389 -v 0.283392 -0.401347 12.172389 -v 0.499915 -0.401347 12.172389 -v -0.142286 -0.401347 12.172389 -v -0.407079 -0.219040 12.019503 -v -0.567964 0.024331 12.019503 -v -0.567964 0.450010 12.019503 -v -0.567964 0.875688 12.019503 -v -0.407079 1.119060 12.019503 -v -0.142286 1.301366 12.019503 -v 0.283392 1.301367 12.019503 -v 0.499915 1.301367 12.019503 -v 0.709071 1.301367 12.019503 -v 0.599990 1.301367 12.019503 -v 0.554513 -1.427196 12.442060 -v 0.709001 -1.427196 12.442060 -v 0.709001 -1.427196 12.172389 -v 0.554513 -1.427196 12.172389 -v 0.283393 -1.274207 12.442060 -v 0.412780 -1.274207 12.442060 -v 0.412780 -1.274207 12.172389 -v 0.283393 -1.274207 12.172389 -v -0.136777 -1.274207 12.442060 -v -0.136777 -1.274207 12.172389 -v 0.709001 -1.274207 12.442060 -v 0.554513 -1.274207 12.442060 -v 1.484052 -0.401347 12.442060 -v 1.484052 -0.401347 12.172389 -v 1.484052 -1.274207 12.172389 -v 1.484052 -1.274207 12.442060 -v 0.554513 -1.274207 12.172389 -v 0.709001 -1.274207 12.172389 -v -0.805944 -0.401347 12.172389 -v -0.805944 -0.401347 12.442060 -v -0.799958 -1.274207 12.442060 -v -0.799958 -1.274207 12.172389 -v 0.554513 -1.274207 12.653718 -v 0.709001 -1.274207 12.653718 -v 0.709001 -1.427196 12.653718 -v 0.554513 -1.427196 12.653718 -v 0.412780 -1.427196 12.442060 -v 0.412780 -1.427196 12.172389 -v 0.709001 -1.274207 12.552493 -v 0.554513 -1.274207 12.552493 -v 0.709001 -1.427196 12.552493 -v 0.637735 -1.609147 12.482539 -v 0.557582 -1.609147 12.482539 -v 0.557582 -1.609147 12.550732 -v 0.637735 -1.609147 12.550732 -v 0.412780 -1.274207 12.552493 -v 0.412780 -1.427196 12.552493 -v 0.554513 -1.527090 12.442060 -v 0.709001 -1.527090 12.442060 -v 0.412780 -1.527090 12.552493 -v 0.412780 -1.527090 12.442060 -v 0.709001 -1.527090 12.653718 -v 0.554513 -1.527090 12.653718 -v 0.709001 -1.527090 12.552493 -v 0.545620 -1.673146 12.114636 -v 0.915556 -1.673146 12.246275 -v 0.104510 -1.673146 12.561010 -v 0.206225 -1.673146 12.246275 -v 0.915556 -1.673146 12.849502 -v 0.545620 -1.673146 12.981141 -v 1.017272 -1.673146 12.561010 -v 0.484046 -1.609147 12.550732 -v 0.484046 -1.609147 12.482539 -v 0.637735 -1.609147 12.613238 -v 0.557582 -1.609147 12.613238 -v 0.206225 -1.673146 12.849502 -v 0.484046 -1.609147 12.613238 -v 0.412780 -1.274207 12.653718 -v 0.412780 -1.427196 12.653718 -v 0.412780 -1.527090 12.653718 -v -0.567965 0.450011 0.337313 -v -0.567965 0.875689 0.337313 -v -0.567965 0.875689 -0.350863 -v -0.567965 0.450011 -0.350863 -v -1.610670 0.386734 0.357029 -v -1.610670 0.981275 0.357029 -v -1.610670 0.981275 -0.354651 -v -1.610670 0.386734 -0.354651 -v -2.924089 -12.674552 -0.024833 -v -2.924089 -12.674552 0.526422 -v 13.442554 -12.510528 -0.000001 -v 13.442554 -12.664490 0.534774 -v 13.977328 -12.736895 -0.000001 -v 13.977328 -12.664490 0.534774 -v 13.977328 -13.199265 0.534774 -v 13.977328 -13.661641 -0.000001 -v 13.977328 -13.734043 0.534774 -v 13.442554 -13.888003 -0.000001 -v 13.442554 -13.734043 0.534774 -v -2.935614 -13.742562 -0.022713 -v -2.924089 -13.742563 0.526416 -v -2.924089 -13.225971 0.526419 -v 13.442554 -13.199265 0.832429 -v 13.977328 -12.809298 0.534774 -v 13.977328 -13.199265 0.534774 -v 13.977328 -13.589234 0.534774 -v 14.187409 -12.956433 -0.000001 -v 14.187409 -12.956433 0.534774 -v 14.187409 -13.199265 0.534774 -v 14.187409 -13.442099 0.534774 -v 14.187409 -13.442099 -0.000001 -v 14.875766 -12.956433 -0.000001 -v 14.875766 -12.956433 0.534774 -v 14.875766 -13.199265 0.534774 -v 14.875766 -13.442099 0.534774 -v 14.875766 -13.442099 -0.000001 -v 15.232806 -12.956433 -0.000001 -v 15.232806 -12.956433 0.534774 -v 15.232806 -13.199265 0.534774 -v 15.232806 -13.199265 -0.000001 -v 15.232806 -13.442099 0.534774 -v 15.232806 -13.442099 -0.000001 -v 14.875766 -12.956433 0.833843 -v 14.875766 -13.199265 0.833843 -v 15.232806 -13.199265 0.833843 -v 15.232806 -12.956433 0.833843 -v 14.875766 -13.442099 0.833843 -v 15.232806 -13.442099 0.833843 -v 14.875766 -8.789302 0.534775 -v 15.232806 -8.789302 0.534775 -v 14.875766 -8.789302 0.833843 -v 15.232806 -8.789302 0.833843 -v 14.875766 -17.609238 0.534774 -v 15.232806 -17.609238 0.534774 -v 15.232806 -17.609238 0.833842 -v 14.875766 -17.609238 0.833842 -v 14.875766 -10.589252 0.833843 -v 14.875766 -10.589252 0.534774 -v 15.232806 -10.589252 0.534774 -v 15.232806 -10.589252 0.833843 -v 15.232806 -11.240461 0.833843 -v 14.875766 -11.240461 0.833843 -v 14.875766 -11.240461 0.534774 -v 15.232806 -11.240461 0.534774 -v 15.232806 -15.060581 0.833843 -v 15.232806 -15.060581 0.534774 -v 14.875764 -15.060581 0.534774 -v 14.875764 -15.060581 0.833843 -v 15.232806 -15.913557 0.833843 -v 15.232806 -15.913557 0.534774 -v 14.875764 -15.913557 0.534774 -v 14.875764 -15.913557 0.833843 -v 14.977250 -12.956433 0.833843 -v 15.131322 -12.956433 0.833843 -v 15.131322 -11.240461 0.833843 -v 14.977250 -11.240461 0.833843 -v 14.977250 -13.442099 0.833843 -v 15.131322 -13.442099 0.833843 -v 14.977246 -15.060581 0.833843 -v 15.131322 -15.060581 0.833843 -v 15.131322 -10.589252 0.833843 -v 14.977250 -10.589252 0.833843 -v 15.131322 -8.789302 0.833843 -v 14.977250 -8.789302 0.833843 -v 14.977246 -15.913557 0.833843 -v 15.131322 -15.913557 0.833843 -v 14.977250 -17.609238 0.833842 -v 15.131322 -17.609238 0.833842 -v 14.977250 -12.786880 8.114987 -v 15.131322 -12.786880 8.114987 -v 15.131322 -11.071037 8.093815 -v 14.977250 -11.071037 8.093815 -v 14.977250 -13.442099 8.104384 -v 15.131322 -13.442099 8.104384 -v 14.977246 -15.060581 8.104384 -v 15.131322 -15.060581 8.104384 -v 15.131322 -10.116888 8.190596 -v 14.977250 -10.116888 8.190596 -v 15.131322 -8.325019 8.020221 -v 14.977250 -8.325019 8.020221 -v 14.977246 -16.340508 8.206782 -v 15.131322 -16.340508 8.206782 -v 14.977250 -18.024162 8.005217 -v 15.131322 -18.024162 8.005217 -v 14.905099 -12.786880 8.114987 -v 15.203479 -12.786880 8.114987 -v 15.203479 -11.071037 8.093815 -v 14.905099 -11.071037 8.093815 -v 14.905099 -13.442099 8.104384 -v 15.203479 -13.442099 8.104384 -v 14.905097 -15.060581 8.104384 -v 15.203479 -15.060581 8.104384 -v 15.203479 -10.116888 8.190596 -v 14.905099 -10.116888 8.190596 -v 15.203479 -8.325019 8.020221 -v 14.905099 -8.325019 8.020221 -v 14.905097 -16.340508 8.206782 -v 15.203486 -16.340508 8.206782 -v 14.905103 -18.024162 8.005217 -v 15.203486 -18.024162 8.005217 -v 14.905099 -12.781251 8.571209 -v 15.203479 -12.781251 8.571209 -v 15.203479 -11.065410 8.550035 -v 14.905099 -11.065410 8.550035 -v 14.905099 -13.442099 8.560639 -v 15.203479 -13.442099 8.560639 -v 14.905097 -15.060581 8.560639 -v 15.203479 -15.060581 8.560639 -v 15.203479 -10.073702 8.644802 -v 14.905099 -10.073702 8.644802 -v 15.203479 -8.281833 8.474427 -v 14.905099 -8.281833 8.474427 -v 14.905097 -16.394737 8.659801 -v 15.203486 -16.394737 8.659801 -v 14.905103 -18.078396 8.458237 -v 15.203486 -18.078396 8.458237 -v 14.977250 -12.360950 0.833843 -v 14.977250 -11.835946 0.833843 -v 14.977250 -12.191441 8.107641 -v 14.977250 -11.666478 8.101163 -v 14.977250 -14.003751 0.833843 -v 14.977246 -14.498927 0.833843 -v 14.977246 -14.498927 8.104384 -v 14.977250 -14.003751 8.104384 -v 14.977250 -9.964626 0.833843 -v 14.977250 -9.413928 0.833843 -v 14.977250 -9.495066 8.131472 -v 14.977250 -8.946840 8.079345 -v 14.977246 -16.501999 0.833843 -v 14.977250 -17.020792 0.833843 -v 14.977250 -17.439890 8.075165 -v 14.977246 -16.924774 8.136833 -v 14.689975 -12.360950 0.833843 -v 14.689975 -11.835946 0.833843 -v 14.689975 -12.191441 8.107641 -v 14.689975 -11.666478 8.101163 -v 14.689975 -14.003747 0.833843 -v 14.689971 -14.498924 0.833843 -v 14.689971 -14.498924 8.104384 -v 14.689975 -14.003747 8.104384 -v 14.689975 -9.964626 0.833843 -v 14.689975 -9.413928 0.833843 -v 14.689975 -9.495066 8.131472 -v 14.689975 -8.946840 8.079345 -v 14.689971 -16.502003 0.833843 -v 14.689975 -17.020796 0.833843 -v 14.689975 -17.439894 8.075165 -v 14.689971 -16.924776 8.136833 -v -2.942585 -12.674549 -0.563176 -v 13.442554 -12.664490 -0.534777 -v 13.977328 -12.664490 -0.534777 -v 15.232806 -12.956433 -0.534777 -v 15.232806 -13.199265 -0.534777 -v 15.232806 -13.442099 -0.534777 -v 13.977328 -13.734043 -0.534777 -v 13.442554 -13.734043 -0.534777 -v -2.942580 -13.742560 -0.563185 -v -2.942583 -13.225968 -0.563181 -v 13.442554 -13.199265 -0.832432 -v 13.977328 -13.199265 -0.534777 -v 13.977328 -12.809298 -0.534777 -v 13.977328 -13.199265 -0.534777 -v 13.977328 -13.589234 -0.534777 -v 14.187409 -12.956433 -0.534777 -v 14.187409 -13.199265 -0.534777 -v 14.187409 -13.442099 -0.534777 -v 14.875766 -12.956433 -0.534777 -v 14.875766 -13.199265 -0.534777 -v 14.875766 -13.442099 -0.534777 -v 14.875766 -12.956433 -0.833846 -v 14.875766 -13.199265 -0.833846 -v 15.232806 -13.199265 -0.833846 -v 15.232806 -12.956433 -0.833846 -v 14.875766 -13.442099 -0.833846 -v 15.232806 -13.442099 -0.833846 -v 15.232806 -8.789302 -0.534777 -v 14.875766 -8.789302 -0.534777 -v 14.875766 -8.789302 -0.833845 -v 15.232806 -8.789302 -0.833845 -v 14.875766 -17.609238 -0.534777 -v 15.232806 -17.609238 -0.534777 -v 15.232806 -17.609238 -0.833846 -v 14.875766 -17.609238 -0.833846 -v 14.875766 -11.240461 -0.534777 -v 15.232806 -11.240461 -0.534777 -v 14.875766 -11.240461 -0.833845 -v 14.905099 -12.781250 -8.571211 -v 15.203479 -12.781250 -8.571211 -v 15.203479 -11.065409 -8.550037 -v 14.905099 -11.065409 -8.550037 -v 15.232806 -11.240461 -0.833845 -v 15.232806 -15.060581 -0.534777 -v 14.875764 -15.060581 -0.534777 -v 15.232806 -15.060581 -0.833846 -v 15.203479 -13.442098 -8.560641 -v 14.905099 -13.442098 -8.560641 -v 14.905097 -15.060580 -8.560641 -v 15.203479 -15.060580 -8.560641 -v 14.875764 -15.060581 -0.833846 -v 14.875766 -10.589252 -0.534777 -v 14.875766 -10.589252 -0.833845 -v 15.232806 -10.589252 -0.534777 -v 15.232806 -10.589252 -0.833845 -v 14.905099 -10.073701 -8.644804 -v 15.203479 -10.073701 -8.644804 -v 15.203479 -8.281832 -8.474429 -v 14.905099 -8.281832 -8.474429 -v 15.232806 -15.913557 -0.833846 -v 15.232806 -15.913557 -0.534777 -v 14.875764 -15.913557 -0.534777 -v 14.875764 -15.913557 -0.833846 -v 15.203486 -16.394735 -8.659805 -v 14.905097 -16.394735 -8.659805 -v 14.905103 -18.078394 -8.458241 -v 15.203486 -18.078394 -8.458241 -v 15.131322 -12.956433 -0.833846 -v 14.977250 -12.956433 -0.833846 -v 15.131322 -11.240461 -0.833845 -v 14.977250 -11.240461 -0.833845 -v 14.977250 -13.442099 -0.833846 -v 15.131322 -13.442099 -0.833846 -v 14.977246 -15.060581 -0.833846 -v 15.131322 -15.060581 -0.833846 -v 15.131322 -10.589252 -0.833845 -v 14.977250 -10.589252 -0.833845 -v 15.131322 -8.789302 -0.833845 -v 14.977250 -8.789302 -0.833845 -v 14.977246 -15.913557 -0.833846 -v 15.131322 -15.913557 -0.833846 -v 14.977250 -17.609238 -0.833846 -v 15.131322 -17.609238 -0.833846 -v 15.131322 -12.786879 -8.114989 -v 14.977250 -12.786879 -8.114989 -v 15.131322 -11.071036 -8.093817 -v 14.977250 -11.071036 -8.093817 -v 14.689975 -11.835946 -0.833845 -v 14.689975 -12.360950 -0.833846 -v 14.689975 -12.191440 -8.107643 -v 14.689975 -11.666477 -8.101165 -v 14.977250 -13.442098 -8.104386 -v 15.131322 -13.442098 -8.104386 -v 14.689975 -14.003747 -0.833846 -v 14.689971 -14.498924 -0.833846 -v 14.689971 -14.498923 -8.104386 -v 14.689975 -14.003746 -8.104386 -v 15.131322 -15.060580 -8.104386 -v 14.977246 -15.060580 -8.104386 -v 15.131322 -10.116887 -8.190598 -v 14.977250 -10.116887 -8.190598 -v 15.131322 -8.325018 -8.020223 -v 14.977250 -8.325018 -8.020223 -v 14.689975 -9.413928 -0.833845 -v 14.689975 -9.964626 -0.833845 -v 14.689975 -9.495065 -8.131474 -v 14.689975 -8.946839 -8.079347 -v 14.977246 -16.340506 -8.206784 -v 15.131322 -16.340506 -8.206784 -v 14.689971 -16.502003 -0.833846 -v 14.689975 -17.020796 -0.833846 -v 14.689975 -17.439892 -8.075169 -v 14.689971 -16.924774 -8.136837 -v 15.131322 -18.024160 -8.005220 -v 14.977250 -18.024160 -8.005220 -v 15.203479 -12.786879 -8.114989 -v 14.905099 -12.786879 -8.114989 -v 15.203479 -11.071036 -8.093817 -v 14.905099 -11.071036 -8.093817 -v 14.905099 -13.442098 -8.104386 -v 15.203479 -13.442098 -8.104386 -v 14.905097 -15.060580 -8.104386 -v 15.203479 -15.060580 -8.104386 -v 15.203479 -10.116887 -8.190598 -v 14.905099 -10.116887 -8.190598 -v 15.203479 -8.325018 -8.020223 -v 14.905099 -8.325018 -8.020223 -v 14.905097 -16.340506 -8.206784 -v 15.203486 -16.340506 -8.206784 -v 14.905103 -18.024160 -8.005220 -v 15.203486 -18.024160 -8.005220 -v 14.977250 -12.360950 -0.833846 -v 14.977250 -11.835946 -0.833845 -v 14.977250 -12.191440 -8.107643 -v 14.977250 -11.666477 -8.101165 -v 14.977246 -14.498927 -0.833846 -v 14.977250 -14.003751 -0.833846 -v 14.977246 -14.498926 -8.104386 -v 14.977250 -14.003750 -8.104386 -v 14.977250 -9.964626 -0.833845 -v 14.977250 -9.413928 -0.833845 -v 14.977250 -9.495065 -8.131474 -v 14.977250 -8.946839 -8.079347 -v 14.977250 -17.020792 -0.833846 -v 14.977246 -16.501999 -0.833846 -v 14.977250 -17.439888 -8.075169 -v 14.977246 -16.924772 -8.136837 -v -2.113228 -13.199276 0.832429 -v -2.113228 -12.664499 0.534774 -v -2.113228 -12.510539 -0.000001 -v -2.113228 -12.664499 -0.534777 -v -2.113228 -13.199276 -0.832431 -v -2.113228 -13.734052 -0.534777 -v -2.113228 -13.888014 -0.000001 -v -2.113228 -13.734052 0.534774 -v -3.927601 -13.796865 0.011647 -v -3.830018 -13.796864 0.288692 -v -3.587393 -13.796862 0.455452 -v -3.294612 -13.796864 0.448251 -v -3.061290 -13.796864 0.269836 -v -2.977399 -13.796862 -0.000001 -v -5.007541 -14.787398 -0.000001 -v -4.710554 -14.787398 0.914028 -v -3.933034 -14.787398 1.478929 -v -2.971967 -14.787402 1.478930 -v -2.194447 -14.787398 0.914028 -v -1.897461 -14.787398 -0.000001 -v -5.007541 -16.211174 -0.000001 -v -4.710556 -16.211174 0.914031 -v -3.933037 -16.211170 1.478929 -v -2.971968 -16.211174 1.478929 -v -2.194447 -16.211174 0.914026 -v -1.897459 -16.211174 -0.000001 -v -5.028159 -19.513569 -0.000002 -v -4.727237 -19.513565 1.181770 -v -3.939412 -19.513569 1.754156 -v -2.965599 -19.513569 1.754154 -v -2.177765 -19.513569 1.181761 -v -1.876841 -19.513569 -0.000002 -v -5.511664 -22.703224 -0.000002 -v -5.118406 -22.703220 1.236054 -v -4.088831 -22.703224 1.984077 -v -2.816191 -22.703224 1.984074 -v -1.786601 -22.703224 1.236035 -v -1.393334 -22.703224 -0.000002 -v -4.431327 -27.838896 -0.000002 -v -4.244390 -27.838900 0.391350 -v -3.754980 -27.838900 0.746927 -v -3.150030 -27.838900 0.746926 -v -2.660611 -27.838900 0.391342 -v -2.473669 -27.838896 -0.000002 -v -3.534389 -17.709658 1.719803 -v -3.370621 -17.709661 1.719803 -v -3.563780 -18.126120 1.786748 -v -3.341229 -18.126120 1.786747 -v -3.534389 -17.687191 1.859585 -v -3.370621 -17.687191 1.859586 -v -3.563780 -18.103649 1.926530 -v -3.341229 -18.103649 1.926529 -v -3.534365 -16.507442 2.239188 -v -3.370597 -16.507429 2.239187 -v -3.563800 -19.128782 2.249064 -v -3.341249 -19.128756 2.249060 -v -3.534365 -16.516912 10.684505 -v -3.370597 -16.516899 10.684505 -v -3.563800 -19.171793 10.709822 -v -3.341249 -19.171768 10.709823 -v -5.519253 -20.170036 -0.000002 -v -5.124544 -20.170033 1.236903 -v -4.091173 -20.170033 1.987686 -v -2.813845 -20.170036 1.987683 -v -1.780462 -20.170036 1.236888 -v -1.385746 -20.170033 -0.000002 -v -4.429674 -23.234221 -0.000002 -v -4.243053 -23.234221 0.581122 -v -3.754470 -23.234221 0.936097 -v -3.150540 -23.234221 0.936096 -v -2.661948 -23.234221 0.581113 -v -2.475323 -23.234221 -0.000002 -v -3.972225 -24.040497 -0.000002 -v -3.872967 -24.040497 0.435616 -v -3.613106 -24.040497 0.624416 -v -3.291897 -24.040497 0.624415 -v -3.032032 -24.040497 0.435612 -v -2.932772 -24.040497 -0.000002 -v -4.430962 -24.876295 -0.000002 -v -4.244094 -24.876297 0.433333 -v -3.754867 -24.876297 0.788777 -v -3.150143 -24.876297 0.788775 -v -2.660907 -24.876297 0.433324 -v -2.474035 -24.876295 -0.000002 -v -4.431147 -26.379904 -0.000002 -v -4.244244 -26.379908 0.412025 -v -3.754925 -26.379908 0.767537 -v -3.150086 -26.379908 0.767536 -v -2.660757 -26.379908 0.412017 -v -2.473849 -26.379904 -0.000002 -v -3.557476 -26.379881 0.767537 -v -3.347653 -26.379932 0.767536 -v -3.557376 -27.838873 0.746927 -v -3.347515 -27.838924 0.746926 -v -3.557468 -26.456675 6.204228 -v -3.347646 -26.456728 6.204228 -v -3.557368 -27.915668 6.183619 -v -3.347507 -27.915720 6.183618 -v -4.762257 -28.305780 -0.000002 -v -4.512117 -28.305784 0.585868 -v -3.857245 -28.305780 1.061656 -v -3.047770 -28.305780 1.061656 -v -2.392885 -28.305784 0.585853 -v -2.142739 -28.305780 -0.000002 -v -5.007548 -29.041300 -0.000003 -v -4.713654 -29.041309 0.763857 -v -3.452498 -29.041300 -0.000003 -v -3.936137 -29.041304 1.326147 -v -2.968882 -29.041300 1.326144 -v -2.191350 -29.041309 0.763839 -v -1.897447 -29.041300 -0.000003 -v -3.347515 -27.254871 0.750202 -v -3.557376 -27.254862 0.750202 -v -3.557476 -26.965038 0.752288 -v -3.347653 -26.965050 0.752288 -v -3.347653 -26.474892 1.034157 -v -3.347515 -27.933884 1.013548 -v -3.557375 -27.933832 1.013549 -v -3.557475 -26.474836 1.034158 -v -4.713654 -29.041309 -0.763862 -v -3.936137 -29.041304 -1.326152 -v -2.968882 -29.041300 -1.326149 -v -2.191350 -29.041309 -0.763845 -v -3.843710 -13.796864 -0.269848 -v -4.710554 -14.787398 -0.914031 -v -3.587393 -13.796862 -0.415157 -v -3.933034 -14.787398 -1.478932 -v -3.317609 -13.796862 -0.415157 -v -2.971967 -14.787402 -1.478932 -v -3.074980 -13.796862 -0.256581 -v -2.194447 -14.787398 -0.914031 -v -4.710556 -16.211174 -0.914034 -v -3.933037 -16.211170 -1.478932 -v -2.971968 -16.211174 -1.478932 -v -2.194447 -16.211174 -0.914029 -v -4.727237 -19.513565 -1.181773 -v -3.939412 -19.513569 -1.754159 -v -3.370597 -16.516899 -10.684509 -v -3.534366 -16.516912 -10.684508 -v -3.563800 -19.171793 -10.709826 -v -3.341249 -19.171768 -10.709828 -v -2.965599 -19.513569 -1.754157 -v -2.177765 -19.513569 -1.181764 -v -5.124544 -20.170033 -1.236907 -v -4.091173 -20.170033 -1.987689 -v -2.813845 -20.170036 -1.987686 -v -1.780462 -20.170036 -1.236892 -v -5.118406 -22.703220 -1.236058 -v -4.243053 -23.234221 -0.581126 -v -4.088831 -22.703224 -1.984081 -v -3.754470 -23.234221 -0.936101 -v -2.816191 -22.703224 -1.984078 -v -3.150540 -23.234221 -0.936100 -v -1.786601 -22.703224 -1.236039 -v -2.661948 -23.234221 -0.581117 -v -3.534389 -17.709658 -1.719806 -v -3.370621 -17.709661 -1.719807 -v -3.563780 -18.126120 -1.786751 -v -3.341229 -18.126120 -1.786750 -v -3.534389 -17.687191 -1.859588 -v -3.370621 -17.687191 -1.859589 -v -3.563780 -18.103649 -1.926533 -v -3.341229 -18.103649 -1.926532 -v -3.534366 -16.507442 -2.239191 -v -3.370597 -16.507429 -2.239191 -v -3.563800 -19.128782 -2.249067 -v -3.341249 -19.128756 -2.249065 -v -3.872967 -24.040497 -0.435621 -v -3.613106 -24.040497 -0.624420 -v -3.291897 -24.040497 -0.624419 -v -3.032032 -24.040497 -0.435616 -v -4.244094 -24.876297 -0.433337 -v -3.754867 -24.876297 -0.788781 -v -3.150143 -24.876297 -0.788780 -v -2.660907 -24.876297 -0.433329 -v -4.244244 -26.379908 -0.412030 -v -3.754925 -26.379908 -0.767541 -v -3.150086 -26.379908 -0.767540 -v -2.660757 -26.379908 -0.412022 -v -4.244390 -27.838900 -0.391355 -v -3.754980 -27.838900 -0.746932 -v -3.347646 -26.456728 -6.204233 -v -3.557468 -26.456675 -6.204233 -v -3.557368 -27.915668 -6.183624 -v -3.347507 -27.915720 -6.183623 -v -3.150030 -27.838900 -0.746931 -v -2.660611 -27.838900 -0.391347 -v -3.557476 -26.379881 -0.767541 -v -3.347653 -26.379932 -0.767540 -v -3.557376 -27.838873 -0.746932 -v -3.347515 -27.838924 -0.746931 -v -3.557476 -26.965038 -0.752293 -v -3.347653 -26.965050 -0.752292 -v -3.557376 -27.254862 -0.750207 -v -3.347515 -27.254871 -0.750206 -v -4.512117 -28.305784 -0.585873 -v -3.857245 -28.305780 -1.061661 -v -3.047770 -28.305780 -1.061661 -v -2.392885 -28.305784 -0.585858 -v -3.347515 -27.933884 -1.013552 -v -3.557375 -27.933832 -1.013553 -v -3.557475 -26.474836 -1.034163 -v -3.347653 -26.474892 -1.034162 -v -1.654676 3.672103 9.450353 -v -1.654676 3.173390 8.246353 -v -1.654676 3.672104 7.042353 -v -1.654676 4.876104 6.543640 -v -1.654676 6.080104 7.042353 -v -1.654676 6.578817 8.246354 -v -1.654676 6.080104 9.450354 -v -1.654676 4.876104 9.949066 -v -1.013241 3.672104 9.450353 -v -1.013241 3.173390 8.246353 -v -1.013241 3.672104 7.042353 -v -1.013241 4.876104 6.543640 -v -1.013241 6.080104 7.042353 -v -1.013241 6.578817 8.246354 -v -1.013241 6.080104 9.450354 -v -1.013241 4.876104 9.949066 -v -0.371813 3.672104 9.450353 -v -0.371813 3.173390 8.246353 -v -0.371813 3.672104 7.042353 -v -0.371813 4.876104 6.543640 -v -0.371813 6.080104 7.042353 -v -0.371813 6.578817 8.246354 -v -0.371813 6.080104 9.450354 -v -0.371813 4.876104 9.949066 -v 0.269622 3.672104 9.450353 -v 0.269622 3.173390 8.246353 -v 0.269622 3.672104 7.042353 -v 0.269622 4.876104 6.543640 -v 0.269622 6.080104 7.042353 -v 0.269622 6.578817 8.246354 -v 0.269622 6.080104 9.450354 -v 0.269622 4.876104 9.949066 -v -1.654676 4.876104 8.246353 -v 0.269622 4.876104 8.246353 -v -1.654676 5.757076 8.269782 -v -1.654676 5.524343 8.831650 -v -1.654676 4.962476 8.269781 -v -7.778719 -3.096066 -0.000000 -v -7.778723 -3.283003 0.391352 -v -7.778723 -3.772413 0.746929 -v -7.778723 -4.377363 0.746928 -v -7.778723 -4.866781 0.391344 -v -7.778719 -5.053724 -0.000000 -v -3.972052 -3.431493 0.219848 -v -3.985268 -3.431493 0.575616 -v -3.985267 -3.660457 0.575550 -v -3.985387 -4.387682 0.575482 -v -3.985476 -4.629086 0.575431 -v -3.972120 -4.629086 0.219577 -v -4.816118 -3.096431 -0.000000 -v -4.816121 -3.283299 0.433335 -v -4.816121 -3.772526 0.788778 -v -4.816121 -4.377250 0.788777 -v -4.816121 -4.866486 0.433326 -v -4.816118 -5.053358 -0.000000 -v -6.319727 -3.096246 -0.000000 -v -6.319730 -3.283149 0.412027 -v -6.319730 -3.772469 0.767539 -v -6.319730 -4.377307 0.767538 -v -6.319730 -4.866636 0.412019 -v -6.319726 -5.053545 -0.000000 -v -6.319704 -3.969917 0.767539 -v -6.319756 -4.179740 0.767538 -v -7.778696 -3.970017 0.746929 -v -7.778749 -4.179878 0.746928 -v -6.396498 -3.969926 6.204230 -v -6.396551 -4.179748 6.204230 -v -7.855491 -3.970025 6.183621 -v -7.855542 -4.179886 6.183620 -v -8.245604 -2.765136 -0.000000 -v -8.245607 -3.015275 0.585870 -v -8.245604 -3.670148 1.061658 -v -8.245604 -4.479622 1.061658 -v -8.245607 -5.134508 0.585855 -v -8.245604 -5.384654 -0.000000 -v -8.981123 -2.519844 -0.000000 -v -8.981133 -2.813739 0.763860 -v -8.981123 -4.074894 -0.000000 -v -8.981126 -3.591255 1.326149 -v -8.981123 -4.558511 1.326146 -v -8.981133 -5.336043 0.763842 -v -8.981123 -5.629946 -0.000000 -v -7.782130 -4.179878 1.007728 -v -7.782078 -3.970017 1.007729 -v -6.323086 -3.969918 1.028339 -v -6.323137 -4.179740 1.028338 -v -7.378605 -4.122077 0.758656 -v -7.378582 -4.027762 0.758656 -v -6.722883 -4.027718 0.767918 -v -6.722907 -4.122015 0.767918 -v -8.981133 -2.813738 -0.763860 -v -8.981126 -3.591255 -1.326149 -v -8.981123 -4.558510 -1.326146 -v -8.981133 -5.336042 -0.763842 -v -3.972045 -3.431493 -0.219878 -v -4.816121 -3.283299 -0.433335 -v -3.985066 -3.660457 -0.575666 -v -4.816121 -3.772526 -0.788779 -v -3.984947 -4.387682 -0.575734 -v -4.816121 -4.377250 -0.788778 -v -3.971977 -4.629086 -0.220148 -v -4.816121 -4.866486 -0.433327 -v -6.319730 -3.283149 -0.412028 -v -6.319730 -3.772468 -0.767539 -v -6.319730 -4.377307 -0.767538 -v -6.319730 -4.866636 -0.412020 -v -7.778723 -3.283003 -0.391353 -v -7.778723 -3.772413 -0.746930 -v -6.396551 -4.179747 -6.204231 -v -6.396498 -3.969924 -6.204231 -v -7.855491 -3.970024 -6.183622 -v -7.855542 -4.179885 -6.183621 -v -7.778723 -4.377363 -0.746929 -v -7.778723 -4.866781 -0.391345 -v -6.319704 -3.969917 -0.767539 -v -6.319756 -4.179740 -0.767538 -v -7.778696 -3.970017 -0.746930 -v -7.778749 -4.179878 -0.746929 -v -6.722883 -4.027718 -0.767919 -v -6.722907 -4.122015 -0.767919 -v -7.378582 -4.027762 -0.758657 -v -7.378605 -4.122077 -0.758656 -v -8.245607 -3.015275 -0.585871 -v -8.245604 -3.670147 -1.061659 -v -8.245604 -4.479622 -1.061659 -v -8.245607 -5.134508 -0.585856 -v -7.782078 -3.970017 -1.007730 -v -7.782130 -4.179878 -1.007729 -v -6.323086 -3.969918 -1.028339 -v -6.323137 -4.179740 -1.028338 -v -3.957825 4.552871 -7.401248 -v -3.645519 4.325967 -7.401248 -v -3.259487 4.325968 -7.401248 -v -2.947181 4.552871 -7.401248 -v -2.827892 4.920009 -7.401248 -v -2.947181 5.287146 -7.401248 -v -3.259488 5.514050 -7.401248 -v -3.645519 5.514050 -7.401248 -v -3.957825 5.287146 -7.401248 -v -4.077115 4.920009 -7.401248 -v -4.830028 3.919178 -5.125114 -v -3.978670 3.300631 -5.125114 -v -2.926335 3.300632 -5.125114 -v -2.074978 3.919179 -5.125114 -v -1.749789 4.920009 -5.125114 -v -2.074979 5.920839 -5.125114 -v -2.926336 6.539386 -5.125114 -v -3.978671 6.539386 -5.125114 -v -4.830028 5.920839 -5.125114 -v -5.155217 4.920009 -5.125114 -v -4.830028 3.919178 -1.960319 -v -3.978670 3.300631 -1.960319 -v -2.926335 3.300631 -1.960319 -v -2.074978 3.919178 -1.960319 -v -1.749789 4.920009 -1.960319 -v -2.074979 5.920839 -1.960319 -v -2.926336 6.539385 -1.960319 -v -3.978671 6.539385 -1.960319 -v -4.830028 5.920838 -1.960319 -v -5.155217 4.920008 -1.960319 -v -5.162907 3.174865 -1.718583 -v -3.452503 3.174865 -1.710404 -v -1.742099 3.174864 -1.710404 -v -1.742099 4.885270 -1.710404 -v -1.742099 6.595674 -1.710404 -v -3.452503 6.595673 -1.710404 -v -5.162908 6.595673 -1.710404 -v -5.155217 4.920008 -1.710404 -v -3.452503 4.920009 -7.401248 -v -4.830028 5.920839 -7.105429 -v -3.978671 6.539386 -7.105429 -v -2.926336 6.539386 -7.105429 -v -2.074979 5.920840 -7.105429 -v -1.749789 4.920009 -7.105429 -v -2.074978 3.919179 -7.105429 -v -2.926335 3.300632 -7.105429 -v -3.978670 3.300631 -7.105429 -v -4.830028 3.919178 -7.105429 -v -5.155217 4.920009 -7.105429 -v -3.605683 6.579287 -1.796116 -v -3.299323 6.579287 -1.796116 -v -1.839008 6.399213 -1.796116 -v -1.749789 4.895383 -1.796116 -v -1.839008 3.391552 -1.796116 -v -3.299323 3.211478 -1.796116 -v -3.605683 3.211478 -1.796116 -v -5.065998 3.391552 -1.796116 -v -5.155217 4.920008 -1.796116 -v -5.065998 6.399213 -1.796116 -v -11.580500 4.552870 0.497143 -v -11.580500 4.325966 0.184837 -v -11.580500 4.325966 -0.201195 -v -11.580500 4.552870 -0.513501 -v -11.580500 4.920007 -0.632790 -v -11.580500 5.287145 -0.513500 -v -11.580500 5.514048 -0.201194 -v -11.580500 5.514048 0.184837 -v -11.580500 5.287145 0.497143 -v -11.580500 4.920007 0.616433 -v -9.304365 3.919177 1.369346 -v -9.304365 3.300630 0.517989 -v -9.304365 3.300630 -0.534347 -v -9.304365 3.919178 -1.385703 -v -9.304365 4.920008 -1.710893 -v -9.304365 5.920838 -1.385703 -v -9.304365 6.539385 -0.534346 -v -9.304365 6.539384 0.517989 -v -9.304365 5.920837 1.369346 -v -9.304365 4.920007 1.694535 -v -5.381045 3.919178 1.369346 -v -5.381045 3.300631 0.517988 -v -5.381045 3.300631 -0.534347 -v -5.381045 3.919178 -1.385704 -v -5.381045 4.920008 -1.710893 -v -5.381045 5.920839 -1.385703 -v -5.381045 6.539385 -0.534346 -v -5.381045 6.539385 0.517989 -v -5.381045 5.920838 1.369346 -v -5.381045 4.920008 1.694535 -v -5.162907 3.174864 1.702714 -v -5.162907 3.174864 -0.008179 -v -5.162908 6.595673 -0.008179 -v -5.162908 6.595673 1.702225 -v -5.162907 4.920008 1.710405 -v -11.580500 4.920007 -0.008179 -v -11.284681 5.920837 1.369346 -v -11.284682 6.539384 0.517989 -v -11.284682 6.539384 -0.534346 -v -11.284681 5.920838 -1.385703 -v -11.284681 4.920007 -1.710893 -v -11.284681 3.919178 -1.385703 -v -11.284681 3.300630 -0.534347 -v -11.284681 3.300630 0.517989 -v -11.284681 3.919177 1.369346 -v -11.284681 4.920007 1.694535 -v -5.216842 6.579287 0.145001 -v -5.216842 6.579287 -0.161359 -v -5.216842 6.399213 -1.621674 -v -5.216842 4.895382 -1.710893 -v -5.216842 3.391552 -1.621674 -v -5.216842 3.211478 -0.161359 -v -5.216842 3.211478 0.145001 -v -5.216842 3.391551 1.605316 -v -5.216842 4.920008 1.694535 -v -5.216842 6.399212 1.605316 -v -3.452503 6.595673 1.702226 -v -1.742099 6.595673 0.000001 -v -1.742099 6.595673 1.702226 -v -1.742099 3.174865 0.008487 -v -1.742099 3.174865 1.702714 -v -3.452503 3.174865 -1.702714 -v -3.452503 3.174864 1.702714 -v -2.451672 -2.794919 1.377524 -v -1.833125 -2.794919 0.526167 -v -1.833125 -2.794919 -0.526168 -v -2.451672 -2.794919 -1.377525 -v -3.452502 -2.794919 -1.702714 -v -4.453332 -2.794919 -1.377525 -v -5.071879 -2.794919 -0.526168 -v -5.071879 -2.794919 0.526167 -v -4.453332 -2.794919 1.377524 -v -3.452502 -2.794919 1.702713 -v -2.451672 -1.192150 1.377524 -v -1.833125 -1.192150 0.526167 -v -1.833125 -1.192150 -0.526168 -v -2.451672 -1.192150 -1.377525 -v -3.452502 -1.192150 -1.702714 -v -4.453332 -1.192150 -1.377525 -v -5.071879 -1.192150 -0.526168 -v -5.071879 -1.192151 0.526167 -v -4.453332 -1.192151 1.377524 -v -3.452502 -1.192150 1.702714 -v -2.451673 2.898659 1.377525 -v -1.833125 2.898659 0.526168 -v -1.833126 2.898659 -0.526168 -v -2.451673 2.898659 -1.377524 -v -3.452503 2.898659 -1.702714 -v -4.453333 2.898659 -1.377524 -v -5.071880 2.898659 -0.526167 -v -5.071880 2.898659 0.526168 -v -4.453333 2.898659 1.377525 -v -3.452503 2.898659 1.702714 -v -3.172542 -3.388221 0.385331 -v -2.999517 -3.388221 0.147183 -v -2.999517 -3.388221 -0.147184 -v -3.172542 -3.388221 -0.385332 -v -3.452502 -3.388221 -0.476297 -v -3.732462 -3.388221 -0.385332 -v -3.905487 -3.388221 -0.147184 -v -3.905487 -3.388221 0.147184 -v -3.732462 -3.388221 0.385332 -v -3.452502 -3.388221 0.476296 -v -3.172714 -4.678638 0.385457 -v -2.999583 -4.678638 0.147386 -v -2.999451 -4.678638 -0.146982 -v -3.172370 -4.678638 -0.385207 -v -3.452289 -4.678638 -0.476297 -v -3.732290 -4.678638 -0.385457 -v -3.905421 -4.678638 -0.147386 -v -3.905552 -4.678638 0.146981 -v -3.732634 -4.678638 0.385206 -v -3.452715 -4.678638 0.476296 -v -2.888790 -5.314968 1.600358 -v -2.055783 -5.314969 0.963375 -v -1.756274 -5.314970 -0.041585 -v -2.104667 -5.314972 -1.030660 -v -2.967887 -5.314970 -1.626060 -v -4.016212 -5.314967 -1.600359 -v -4.849221 -5.314968 -0.963376 -v -5.148730 -5.314970 0.041583 -v -4.800337 -5.314970 1.030659 -v -3.937117 -5.314969 1.626058 -v -2.888789 -7.551289 1.600359 -v -2.055784 -7.551289 0.963377 -v -1.756276 -7.551291 -0.041581 -v -2.104670 -7.551291 -1.030658 -v -2.967892 -7.551290 -1.626062 -v -4.016215 -7.551287 -1.600362 -v -4.849219 -7.551289 -0.963380 -v -5.148728 -7.551291 0.041581 -v -4.800335 -7.551291 1.030660 -v -3.937115 -7.551289 1.626060 -v -2.888789 -9.698491 1.600359 -v -2.055785 -9.698492 0.963380 -v -1.756278 -9.698494 -0.041577 -v -2.104673 -9.698494 -1.030657 -v -2.967897 -9.698493 -1.626063 -v -4.016218 -9.698489 -1.600363 -v -4.849218 -9.698491 -0.963383 -v -5.148726 -9.698494 0.041579 -v -4.800333 -9.698493 1.030660 -v -3.937112 -9.698492 1.626059 -v -2.888788 -11.683494 1.600363 -v -2.055786 -11.683495 0.963383 -v -1.756278 -11.683496 -0.041576 -v -2.104675 -11.683497 -1.030655 -v -2.967902 -11.683496 -1.626064 -v -4.016220 -11.683493 -1.600368 -v -4.849217 -11.683494 -0.963388 -v -5.148725 -11.683496 0.041577 -v -4.800331 -11.683496 1.030660 -v -3.937111 -11.683495 1.626060 -v -3.294610 -12.625381 0.448254 -v -3.061290 -12.625381 0.269840 -v -2.977399 -12.625380 -0.011645 -v -3.074984 -12.625378 -0.288684 -v -3.316768 -12.625380 -0.455453 -v -3.610398 -12.625378 -0.448255 -v -3.843717 -12.625381 -0.269841 -v -3.927608 -12.625381 0.011644 -v -3.830023 -12.625381 0.288682 -v -3.588239 -12.625380 0.455452 -v -2.088918 3.008635 1.547703 -v -3.452503 3.008634 1.702714 -v -4.816088 3.008634 1.547702 -v -5.118416 3.008634 0.257176 -v -5.118416 3.008634 -0.257175 -v -4.816088 3.008635 -1.547702 -v -3.452503 3.008635 -1.702714 -v -2.088918 3.008635 -1.547702 -v -1.786590 3.008635 -0.257175 -v -1.786590 3.008635 0.257176 -v -2.947181 4.552870 9.887227 -v -3.259487 4.325966 9.887227 -v -3.645519 4.325966 9.887227 -v -3.957825 4.552870 9.887227 -v -4.077115 4.920007 9.887227 -v -3.957825 5.287145 9.887227 -v -3.645519 5.514048 9.887228 -v -3.259487 5.514048 9.887228 -v -2.947181 5.287145 9.887227 -v -2.827892 4.920007 9.887227 -v -2.074978 3.919178 5.909592 -v -2.926335 3.300630 5.909592 -v -3.978671 3.300631 5.909592 -v -4.830028 3.919178 5.909592 -v -5.155217 4.920007 5.909592 -v -4.830028 5.920838 5.909592 -v -3.978671 6.539385 5.909592 -v -2.926336 6.539385 5.909592 -v -2.074979 5.920838 5.909592 -v -1.749789 4.920008 5.909592 -v -2.074978 3.919178 1.986271 -v -2.926336 3.300631 1.986271 -v -3.978671 3.300631 1.986271 -v -4.830028 3.919178 1.986271 -v -5.155217 4.920008 1.986271 -v -4.830028 5.920838 1.986271 -v -3.978671 6.539385 1.986272 -v -2.926336 6.539385 1.986272 -v -2.074979 5.920838 1.986271 -v -1.749789 4.920008 1.986271 -v -1.749789 4.920008 1.711201 -v -3.452503 4.920007 9.887227 -v -2.074979 5.920838 9.591409 -v -2.926336 6.539384 9.591409 -v -3.978671 6.539384 9.591409 -v -4.830028 5.920838 9.591409 -v -5.155217 4.920007 9.591408 -v -4.830028 3.919177 9.591408 -v -3.978671 3.300630 9.591408 -v -2.926335 3.300630 9.591408 -v -2.074978 3.919177 9.591408 -v -1.749789 4.920008 9.591408 -v -3.299324 6.579287 1.822068 -v -3.605683 6.579287 1.822068 -v -5.065998 6.399212 1.822068 -v -5.155217 4.895382 1.822068 -v -5.065998 3.391551 1.822068 -v -3.605683 3.211478 1.822068 -v -3.299323 3.211478 1.822068 -v -1.839008 3.391552 1.822068 -v -1.749789 4.920008 1.822068 -v -1.839008 6.399213 1.822068 -v 4.703668 4.552872 -0.496834 -v 4.703668 4.325968 -0.184528 -v 4.703668 4.325968 0.201503 -v 4.703668 4.552872 0.513809 -v 4.703668 4.920009 0.633099 -v 4.703668 5.287147 0.513809 -v 4.703668 5.514050 0.201503 -v 4.703668 5.514050 -0.184528 -v 4.703668 5.287147 -0.496834 -v 4.703668 4.920009 -0.616124 -v 2.427534 3.919178 -1.369037 -v 2.427534 3.300632 -0.517680 -v 2.427534 3.300632 0.534655 -v 2.427534 3.919179 1.386012 -v 2.427534 4.920009 1.711201 -v 2.427534 5.920839 1.386012 -v 2.427533 6.539386 0.534655 -v 2.427533 6.539386 -0.517680 -v 2.427534 5.920839 -1.369037 -v 2.427534 4.920009 -1.694226 -v -1.495787 3.919178 -1.369037 -v -1.495787 3.300631 -0.517680 -v -1.495787 3.300631 0.534655 -v -1.495787 3.919178 1.386012 -v -1.495787 4.920008 1.711201 -v -1.495787 5.920839 1.386012 -v -1.495787 6.539385 0.534655 -v -1.495787 6.539386 -0.517680 -v -1.495787 5.920839 -1.369037 -v -1.495787 4.920009 -1.694226 -v 4.703668 4.920009 0.008487 -v 4.407850 5.920839 -1.369037 -v 4.407850 6.539386 -0.517680 -v 4.407850 6.539386 0.534655 -v 4.407850 5.920840 1.386012 -v 4.407850 4.920009 1.711201 -v 4.407850 3.919179 1.386012 -v 4.407850 3.300632 0.534655 -v 4.407850 3.300632 -0.517680 -v 4.407850 3.919179 -1.369037 -v 4.407850 4.920009 -1.694226 -v -1.659990 6.579287 -0.144692 -v -1.659990 6.579287 0.161667 -v -1.659990 6.399213 1.621983 -v -1.659990 4.895382 1.711201 -v -1.659990 3.391552 1.621982 -v -1.659990 3.211478 0.161667 -v -1.659990 3.211478 -0.144693 -v -1.659990 3.391552 -1.605008 -v -1.659990 4.920009 -1.694226 -v -1.659990 6.399213 -1.605007 -v -4.581180 6.595673 -1.136865 -v -5.036086 6.595673 -0.005026 -v -3.451570 6.595673 -1.590101 -v -4.583845 6.595673 1.128057 -v -3.453437 6.595673 1.583944 -v -1.868921 6.595673 -0.001132 -v -2.322494 6.595673 -1.134222 -v -2.322494 6.595673 1.130713 -v -4.160037 6.865136 -0.723460 -v -4.425473 6.865136 -0.003880 -v -3.451925 6.865136 -0.991332 -v -4.162000 6.865136 0.716411 -v -3.453082 6.865136 0.985980 -v -2.479533 6.865136 -0.001472 -v -2.744127 6.865136 -0.721767 -v -2.743849 6.865136 0.718113 -v -3.947885 6.996768 -0.507514 -v -4.032388 6.996768 -0.002862 -v -3.452143 6.996768 -0.592020 -v -3.949403 6.996768 0.502015 -v -3.452863 6.996768 0.587699 -v -2.872618 6.996768 -0.001459 -v -2.956501 6.996768 -0.506339 -v -2.956224 6.996768 0.503196 -v -3.832004 7.643464 -0.389193 -v -3.979092 7.643464 -0.002695 -v -3.452175 7.643464 -0.537747 -v -3.833200 7.643464 0.384173 -v -3.452832 7.643464 0.533628 -v -2.925915 7.643464 -0.001423 -v -3.072622 7.643464 -0.388294 -v -3.072380 7.643464 0.385078 -v -3.832003 8.287648 -0.389192 -v -3.979091 8.287648 -0.002694 -v -3.452503 8.287647 0.000001 -v -3.452175 8.287648 -0.537746 -v -3.833199 8.287648 0.384173 -v -3.452832 8.287648 0.533627 -v -2.925915 8.287648 -0.001424 -v -3.072623 8.287648 -0.388293 -v -3.072381 8.287648 0.385076 -v -3.937115 -7.551289 1.626060 -v -2.888789 -7.551289 1.600359 -v -3.937112 -9.698492 1.626059 -v -2.888789 -9.698491 1.600359 -v -3.406940 -7.551282 -1.615299 -v -3.577137 -7.551295 -1.611126 -v -3.406974 -9.698484 -1.615299 -v -3.577171 -9.698498 -1.611126 -v -3.498052 -7.551289 1.615296 -v -3.327854 -7.551289 1.611123 -v -3.498048 -9.698492 1.615295 -v -3.327851 -9.698491 1.611123 -v -3.549598 -7.551278 -7.434207 -v -3.719795 -7.551291 -7.430035 -v -3.549632 -9.698481 -7.434208 -v -3.719829 -9.698493 -7.430035 -v -3.355394 -7.551290 7.434206 -v -3.185197 -7.551289 7.430032 -v -3.355391 -9.698493 7.434204 -v -3.185194 -9.698492 7.430033 -v -2.218560 -7.055443 0.851103 -v -1.953956 -7.055445 -0.036736 -v -2.261748 -7.055445 -0.910544 -v -3.024368 -7.055444 -1.436558 -v -3.950519 -7.055441 -1.413852 -v -4.686444 -7.055442 -0.851105 -v -4.951047 -7.055445 0.036735 -v -4.643257 -7.055444 0.910545 -v -3.880638 -7.055443 1.436556 -v -2.954485 -7.055442 1.413850 -v -2.055784 -7.237567 0.963377 -v -1.756276 -7.237568 -0.041581 -v -2.104670 -7.237568 -1.030658 -v -2.967891 -7.237567 -1.626062 -v -4.016215 -7.237564 -1.600361 -v -4.849220 -7.237566 -0.963379 -v -5.148728 -7.237568 0.041581 -v -4.800335 -7.237567 1.030660 -v -3.937115 -7.237567 1.626060 -v -2.888790 -7.237566 1.600358 -v -2.055784 -6.836927 0.963376 -v -1.756275 -6.836929 -0.041582 -v -2.104669 -6.836929 -1.030658 -v -2.967890 -6.836927 -1.626061 -v -4.016214 -6.836924 -1.600361 -v -4.849220 -6.836926 -0.963378 -v -5.148728 -6.836929 0.041582 -v -4.800335 -6.836928 1.030659 -v -3.937115 -6.836927 1.626060 -v -2.888790 -6.836926 1.600358 -v -2.451672 1.007413 1.377525 -v -3.452502 1.007413 1.702714 -v -4.453333 1.007412 1.377524 -v -5.071879 1.007412 0.526168 -v -5.071880 1.007413 -0.526167 -v -4.453333 1.007413 -1.377524 -v -3.452503 1.007413 -1.702714 -v -2.451673 1.007413 -1.377524 -v -1.833125 1.007413 -0.526168 -v -1.833125 1.007413 0.526167 -v -2.920146 -4.629086 0.575784 -v -2.933027 -4.629086 0.220147 -v -2.932884 -4.629086 -0.219578 -v -2.919528 -4.629086 -0.575432 -v -3.452208 -4.629086 -0.590285 -v -3.452796 -4.629086 0.590284 -v -2.919853 -3.431493 0.575616 -v -2.932959 -3.431493 0.219877 -v -2.932952 -3.431493 -0.219848 -v -2.919821 -3.431493 -0.575599 -v -3.452487 -3.431493 -0.590285 -v -3.985183 -3.431493 0.575598 -v -3.452517 -3.431493 0.590285 -v -3.665772 -12.674549 -0.586765 -v -3.980918 -12.674552 -0.526416 -v -3.969392 -12.674553 0.022720 -v -3.962422 -12.674552 0.563182 -v -3.635842 -12.674551 0.596188 -v -3.239236 -12.674552 0.586766 -v -3.269165 -12.674551 -0.596187 -v -3.269165 -13.742562 -0.596197 -v -3.665772 -13.742560 -0.586769 -v -3.980909 -13.742563 -0.526428 -v -3.969385 -13.742565 0.022725 -v -3.962415 -13.742563 0.563200 -v -3.635842 -13.742562 0.596188 -v -3.239239 -13.742563 0.586762 -v -3.496025 -8.796081 1.627274 -v -3.496028 -8.453699 1.627275 -v -3.325831 -8.453699 1.623194 -v -3.325828 -8.796080 1.623195 -v -3.321171 -9.698491 1.883604 -v -3.491368 -9.698491 1.887775 -v -3.491371 -7.551289 1.887777 -v -3.321174 -7.551289 1.883603 -v -3.408058 -8.796080 -1.633972 -v -3.408024 -8.453698 -1.633972 -v -3.578221 -8.453700 -1.629892 -v -3.578254 -8.796082 -1.629893 -v -3.586246 -9.698498 -1.916168 -v -3.416050 -9.698484 -1.920340 -v -3.416016 -7.551282 -1.920340 -v -3.586213 -7.551295 -1.916167 -v -3.452598 -3.660457 0.590285 -v -2.919938 -3.660457 0.575665 -v -2.932979 -3.660457 0.219955 -v -2.932932 -3.660457 -0.219770 -v -2.919737 -3.660457 -0.575551 -v -3.452406 -3.660457 -0.590285 -v -3.452711 -4.387682 0.590285 -v -2.920057 -4.387682 0.575733 -v -2.933006 -4.387682 0.220065 -v -2.932905 -4.387682 -0.219660 -v -2.919617 -4.387682 -0.575483 -v -3.452293 -4.387682 -0.590285 -v -3.985183 -3.431493 0.575598 -v -4.001576 -4.229453 0.329184 -v -4.001621 -4.375394 0.311565 -v -3.994886 -4.384643 0.110682 -v -3.994815 -4.375394 -0.132493 -v -4.001354 -4.229453 -0.329386 -v -4.001415 -3.832827 -0.329352 -v -3.994849 -3.693160 -0.132357 -v -3.994852 -3.683911 0.110818 -v -4.001516 -3.693160 0.311659 -v -4.001516 -3.832827 0.329218 -v -5.796675 6.539385 -0.534346 -v -5.796675 5.920839 -1.385703 -v -5.796674 4.920008 -1.710893 -v -5.796674 3.919178 -1.385704 -v -5.796674 3.300631 -0.534347 -v -5.796674 3.300631 0.517988 -v -5.796674 3.919177 1.369346 -v -5.796674 4.920008 1.694535 -v -5.796675 5.920838 1.369346 -v -5.796675 6.539385 0.517989 -v -5.400309 5.778811 -0.287221 -v -5.400309 5.450778 -0.738720 -v -5.400309 4.920008 -0.911177 -v -5.400309 4.389239 -0.738720 -v -5.400309 4.061206 -0.287221 -v -5.400309 4.061205 0.270863 -v -5.400309 4.389238 0.722362 -v -5.400309 4.920008 0.894819 -v -5.400309 5.450777 0.722362 -v -5.400309 5.778810 0.270863 -v -4.830028 5.920838 -2.288950 -v -3.978671 6.539385 -2.288950 -v -2.926336 6.539386 -2.288950 -v -2.074979 5.920839 -2.288950 -v -1.749789 4.920009 -2.288950 -v -2.074978 3.919179 -2.288951 -v -2.926335 3.300631 -2.288951 -v -3.978670 3.300631 -2.288951 -v -4.830028 3.919178 -2.288951 -v -5.155217 4.920008 -2.288950 -v -4.084959 5.379514 -1.993850 -v -3.694080 5.663505 -1.993850 -v -3.210927 5.663505 -1.993850 -v -2.820047 5.379515 -1.993850 -v -2.670744 4.920009 -1.993850 -v -2.820047 4.460503 -1.993851 -v -3.210926 4.176512 -1.993851 -v -3.694079 4.176512 -1.993851 -v -4.084959 4.460502 -1.993851 -v -4.234262 4.920008 -1.993850 -v -4.830028 5.920838 2.391631 -v -5.155217 4.920008 2.391631 -v -4.830028 3.919178 2.391631 -v -3.978671 3.300631 2.391631 -v -2.926336 3.300631 2.391631 -v -2.074978 3.919178 2.391631 -v -1.749789 4.920008 2.391631 -v -2.074979 5.920838 2.391631 -v -2.926336 6.539385 2.391631 -v -3.978671 6.539385 2.391631 -v -4.109008 5.396987 1.987019 -v -4.263988 4.920008 1.987019 -v -4.109008 4.443029 1.987018 -v -3.703266 4.148240 1.987018 -v -3.201741 4.148240 1.987018 -v -2.795998 4.443029 1.987018 -v -2.641018 4.920008 1.987019 -v -2.795998 5.396987 1.987019 -v -3.201741 5.691775 1.987019 -v -3.703266 5.691776 1.987019 -v -1.131984 5.920839 -1.369037 -v -1.131984 6.539386 -0.517680 -v -1.131984 6.539385 0.534655 -v -1.131984 5.920839 1.386012 -v -1.131984 4.920008 1.711201 -v -1.131984 3.919178 1.386012 -v -1.131984 3.300631 0.534655 -v -1.131984 3.300631 -0.517680 -v -1.131984 3.919178 -1.369037 -v -1.131984 4.920009 -1.694226 -v -1.488951 5.490069 -0.776133 -v -1.488951 5.842386 -0.291211 -v -1.488951 5.842385 0.308186 -v -1.488951 5.490068 0.793108 -v -1.488951 4.920008 0.978332 -v -1.488951 4.349948 0.793108 -v -1.488951 3.997632 0.308186 -v -1.488951 3.997632 -0.291211 -v -1.488951 4.349948 -0.776133 -v -1.488951 4.920009 -0.961357 -v -3.452503 2.530598 1.702714 -v -4.453333 2.530598 1.377525 -v -5.071880 2.530598 0.526168 -v -5.071880 2.530598 -0.526167 -v -4.453333 2.530598 -1.377524 -v -3.452503 2.530598 -1.702714 -v -2.451673 2.530598 -1.377524 -v -1.833126 2.530598 -0.526168 -v -1.833125 2.530598 0.526168 -v -2.451673 2.530598 1.377525 -v -3.452503 2.880706 0.807230 -v -3.926981 2.880706 0.653063 -v -4.220224 2.880706 0.249448 -v -4.220224 2.880706 -0.249448 -v -3.926981 2.880706 -0.653063 -v -3.452503 2.880706 -0.807230 -v -2.978025 2.880706 -0.653063 -v -2.684781 2.880706 -0.249448 -v -2.684781 2.880706 0.249448 -v -2.978025 2.880706 0.653063 -v -2.074979 5.920838 7.719259 -v -2.926336 6.539385 7.719259 -v -3.978671 6.539384 7.719259 -v -4.830028 5.920838 7.719259 -v -5.155217 4.920007 7.719259 -v -4.830028 3.919177 7.719259 -v -3.978671 3.300630 7.719259 -v -2.926335 3.300630 7.719259 -v -2.074978 3.919177 7.719259 -v -1.749789 4.920008 7.719259 -v -2.074979 5.920837 8.765801 -v -2.926336 6.539385 8.765801 -v -3.978671 6.539384 8.765801 -v -4.830028 5.920838 8.765801 -v -5.155217 4.920007 8.765800 -v -4.830028 3.919177 8.765800 -v -3.978671 3.300630 8.765800 -v -2.926335 3.300630 8.765800 -v -2.074978 3.919177 8.765800 -v -1.749789 4.920007 8.765800 -v -1.773486 4.966765 8.707236 -v -1.930660 5.450499 8.707236 -v -1.773486 4.966764 8.201406 -v -1.930660 5.450499 8.201406 -v -3.269165 -13.225970 -0.596193 -v -3.665772 -13.225968 -0.586767 -v -3.980913 -13.225971 -0.526423 -v -3.969388 -13.225972 0.022723 -v -3.962419 -13.225971 0.563191 -v -3.635842 -13.225970 0.596188 -v -3.239237 -13.225971 0.586764 -v 8.708556 -13.199268 0.832429 -v 8.708556 -12.664494 0.534774 -v 8.708556 -12.510531 -0.000001 -v 8.708556 -12.664493 -0.534777 -v 8.708556 -13.199267 -0.832431 -v 8.708556 -13.734045 -0.534777 -v 8.708556 -13.888007 -0.000001 -v 8.708556 -13.734046 0.534774 -v 3.087406 -13.199271 0.832429 -v 3.087406 -12.664495 0.534774 -v 3.087406 -12.510535 -0.000001 -v 3.087406 -12.664495 -0.534777 -v 3.087406 -13.199271 -0.832431 -v 3.087406 -13.734049 -0.534777 -v 3.087406 -13.888011 -0.000001 -v 3.087406 -13.734049 0.534774 -v 8.436390 -12.408905 0.727682 -v 8.436390 -12.181362 -0.000001 -v 8.436390 -12.408904 -0.727685 -v 8.436390 -13.199265 -1.132712 -v 8.436390 -13.989630 -0.727685 -v 8.436390 -14.217177 -0.000001 -v 8.436390 -13.989631 0.727682 -v 8.436390 -13.199266 1.132709 -v 3.400564 -12.408908 0.727682 -v 3.400564 -12.181365 -0.000001 -v 3.400564 -12.408908 -0.727685 -v 3.400564 -13.199270 -1.132712 -v 3.400564 -13.989635 -0.727685 -v 3.400564 -14.217182 -0.000001 -v 3.400564 -13.989635 0.727682 -v 3.400564 -13.199270 1.132709 -v -1.833125 0.386734 0.363817 -v -1.833125 0.386734 -0.363817 -v -1.833125 0.981275 -0.363817 -v -1.833125 0.981275 0.363817 -v -0.635774 -1.192150 0.981227 -v -0.635775 -1.192150 -0.981228 -v -0.635775 0.386735 -0.678467 -v -0.635775 0.386734 0.678466 -vt 0.375000 0.000000 -vt 0.500000 0.000000 -vt 0.500000 0.125000 -vt 0.375000 0.125000 -vt 0.625000 0.000000 -vt 0.625000 0.125000 -vt 0.500000 0.250000 -vt 0.375000 0.250000 -vt 0.625000 0.250000 -vt 0.375000 0.500000 -vt 0.500000 0.500000 -vt 0.500000 0.625000 -vt 0.375000 0.625000 -vt 0.625000 0.500000 -vt 0.625000 0.625000 -vt 0.500000 0.750000 -vt 0.375000 0.750000 -vt 0.625000 0.750000 -vt 0.500000 0.875000 -vt 0.375000 0.875000 -vt 0.625000 0.875000 -vt 0.500000 1.000000 -vt 0.375000 1.000000 -vt 0.625000 1.000000 -vt 0.750000 0.000000 -vt 0.875000 0.000000 -vt 0.875000 0.125000 -vt 0.750000 0.125000 -vt 0.812500 0.250000 -vt 0.125000 0.000000 -vt 0.250000 0.000000 -vt 0.250000 0.125000 -vt 0.125000 0.125000 -vt 0.187500 0.250000 -vt 0.875000 0.250000 -vt 0.750000 0.250000 -vt 0.250000 0.250000 -vt 0.125000 0.250000 -vt 0.863384 0.125000 -vt 0.863384 0.093209 -vt 0.873244 0.093209 -vt 0.873244 0.125000 -vt 0.805064 0.125000 -vt 0.805064 0.093209 -vt 0.812500 0.093209 -vt 0.812500 0.125000 -vt 0.375000 0.003277 -vt 0.500000 0.003277 -vt 0.625000 0.003277 -vt 0.500000 0.746723 -vt 0.375000 0.746723 -vt 0.625000 0.746723 -vt 0.750000 0.003277 -vt 0.875000 0.003277 -vt 0.125000 0.003277 -vt 0.250000 0.003277 -vt 0.500000 0.502790 -vt 0.625000 0.502790 -vt 0.625000 0.581532 -vt 0.500000 0.581532 -vt 0.375000 0.502790 -vt 0.375000 0.581532 -vt 0.125000 0.168468 -vt 0.250000 0.168468 -vt 0.250000 0.247210 -vt 0.125000 0.247210 -vt 0.375000 0.168468 -vt 0.375000 0.247210 -vt 0.500000 0.168468 -vt 0.500000 0.247210 -vt 0.625000 0.168468 -vt 0.625000 0.247210 -vt 0.750000 0.168468 -vt 0.750000 0.247210 -vt 0.875000 0.168468 -vt 0.875000 0.247210 -vt 0.451716 0.304853 -vt 0.548284 0.304853 -vt 0.656250 0.156250 -vt 0.626409 0.064409 -vt 0.343750 0.156250 -vt 0.373591 0.248091 -vt 0.500000 0.375000 -vt 0.375000 0.375000 -vt 0.625000 0.375000 -vt 0.375000 0.414831 -vt 0.437500 0.414831 -vt 0.437500 0.429007 -vt 0.375000 0.429007 -vt 0.500000 0.414831 -vt 0.500000 0.429007 -vt 0.562500 0.414831 -vt 0.562500 0.429007 -vt 0.625000 0.414831 -vt 0.625000 0.429007 -vt 0.375000 0.498244 -vt 0.437500 0.498244 -vt 0.437500 0.500000 -vt 0.500000 0.498244 -vt 0.562500 0.498244 -vt 0.625000 0.498244 -vt 0.562500 0.500000 -vt 0.437500 0.562500 -vt 0.375000 0.562500 -vt 0.500000 0.562500 -vt 0.562500 0.562500 -vt 0.625000 0.562500 -vt 0.437500 0.625000 -vt 0.562500 0.625000 -vt 0.437500 0.656791 -vt 0.375000 0.656791 -vt 0.500000 0.656791 -vt 0.562500 0.656791 -vt 0.625000 0.656791 -vt 0.375000 0.687500 -vt 0.437500 0.687500 -vt 0.437500 0.750000 -vt 0.500000 0.687500 -vt 0.562500 0.687500 -vt 0.562500 0.750000 -vt 0.625000 0.687500 -vt 0.437500 0.751756 -vt 0.375000 0.751756 -vt 0.500000 0.751756 -vt 0.625000 0.751756 -vt 0.562500 0.751756 -vt 0.375000 0.820993 -vt 0.437500 0.820993 -vt 0.437500 0.835169 -vt 0.375000 0.835169 -vt 0.500000 0.820993 -vt 0.500000 0.835169 -vt 0.562500 0.820993 -vt 0.562500 0.835169 -vt 0.625000 0.820993 -vt 0.625000 0.835169 -vt 0.873244 0.000000 -vt 0.875000 0.062500 -vt 0.873244 0.062500 -vt 0.789831 0.062500 -vt 0.789831 0.000000 -vt 0.804007 0.000000 -vt 0.804007 0.062500 -vt 0.875000 0.093209 -vt 0.789831 0.093209 -vt 0.804007 0.093209 -vt 0.804007 0.125000 -vt 0.789831 0.125000 -vt 0.873244 0.187500 -vt 0.875000 0.187500 -vt 0.804007 0.187500 -vt 0.789831 0.187500 -vt 0.873244 0.250000 -vt 0.804007 0.250000 -vt 0.789831 0.250000 -vt 0.126756 0.000000 -vt 0.126756 0.062500 -vt 0.125000 0.062500 -vt 0.195993 0.000000 -vt 0.210169 0.000000 -vt 0.210169 0.062500 -vt 0.195993 0.062500 -vt 0.125000 0.093209 -vt 0.126756 0.093209 -vt 0.126756 0.125000 -vt 0.195993 0.093209 -vt 0.210169 0.093209 -vt 0.210169 0.125000 -vt 0.195993 0.125000 -vt 0.126756 0.187500 -vt 0.125000 0.187500 -vt 0.210169 0.187500 -vt 0.195993 0.187500 -vt 0.126756 0.250000 -vt 0.210169 0.250000 -vt 0.195993 0.250000 -vt 0.814379 0.093209 -vt 0.814379 0.125000 -vt 0.812500 0.000000 -vt 0.814379 0.000000 -vt 0.814379 0.062500 -vt 0.812500 0.062500 -vt 0.562500 0.810621 -vt 0.625000 0.810621 -vt 0.625000 0.812500 -vt 0.562500 0.812500 -vt 0.437500 0.810621 -vt 0.500000 0.810621 -vt 0.500000 0.812500 -vt 0.437500 0.812500 -vt 0.375000 0.810621 -vt 0.375000 0.812500 -vt 0.185621 0.062500 -vt 0.185621 0.000000 -vt 0.187500 0.000000 -vt 0.187500 0.062500 -vt 0.185621 0.125000 -vt 0.185621 0.093209 -vt 0.187500 0.093209 -vt 0.187500 0.125000 -vt 0.185621 0.187500 -vt 0.187500 0.187500 -vt 0.185621 0.250000 -vt 0.375000 0.437500 -vt 0.437500 0.437500 -vt 0.437500 0.439379 -vt 0.375000 0.439379 -vt 0.500000 0.437500 -vt 0.500000 0.439379 -vt 0.562500 0.437500 -vt 0.625000 0.437500 -vt 0.625000 0.439379 -vt 0.562500 0.439379 -vt 0.812500 0.187500 -vt 0.814379 0.187500 -vt 0.814379 0.250000 -vt 0.804007 0.078516 -vt 0.789831 0.078516 -vt 0.814379 0.078516 -vt 0.812500 0.078516 -vt 0.875000 0.078516 -vt 0.873244 0.078516 -vt 0.562500 0.671484 -vt 0.625000 0.671484 -vt 0.500000 0.671484 -vt 0.437500 0.671484 -vt 0.375000 0.671484 -vt 0.126756 0.078516 -vt 0.125000 0.078516 -vt 0.187500 0.078516 -vt 0.185621 0.078516 -vt 0.210169 0.078516 -vt 0.195993 0.078516 -vt 0.562500 0.488384 -vt 0.625000 0.488384 -vt 0.500000 0.488384 -vt 0.437500 0.488384 -vt 0.375000 0.488384 -vt 0.136616 0.187500 -vt 0.136616 0.250000 -vt 0.136616 0.125000 -vt 0.136616 0.093209 -vt 0.136616 0.062500 -vt 0.136616 0.078516 -vt 0.136616 0.000000 -vt 0.437500 0.761616 -vt 0.375000 0.761616 -vt 0.500000 0.761616 -vt 0.562500 0.761616 -vt 0.625000 0.761616 -vt 0.863384 0.062500 -vt 0.863384 0.000000 -vt 0.863384 0.078516 -vt 0.863384 0.187500 -vt 0.863384 0.250000 -vt 0.562500 0.430064 -vt 0.625000 0.430064 -vt 0.500000 0.430064 -vt 0.437500 0.430064 -vt 0.375000 0.430064 -vt 0.194936 0.187500 -vt 0.194936 0.250000 -vt 0.194936 0.125000 -vt 0.194936 0.093209 -vt 0.194936 0.062500 -vt 0.194936 0.078516 -vt 0.194936 0.000000 -vt 0.437500 0.819936 -vt 0.375000 0.819936 -vt 0.500000 0.819936 -vt 0.562500 0.819936 -vt 0.625000 0.819936 -vt 0.805064 0.062500 -vt 0.805064 0.000000 -vt 0.805064 0.078516 -vt 0.805064 0.187500 -vt 0.805064 0.250000 -vt 0.500000 0.851246 -vt 0.562500 0.851246 -vt 0.562500 0.875000 -vt 0.437500 0.851246 -vt 0.437500 0.875000 -vt 0.375000 0.851246 -vt 0.226246 0.062500 -vt 0.226246 0.000000 -vt 0.250000 0.070508 -vt 0.226246 0.078516 -vt 0.226246 0.125000 -vt 0.226246 0.093209 -vt 0.250000 0.093209 -vt 0.226246 0.187500 -vt 0.250000 0.187500 -vt 0.226246 0.250000 -vt 0.437500 0.375000 -vt 0.437500 0.398754 -vt 0.375000 0.398754 -vt 0.500000 0.398754 -vt 0.562500 0.375000 -vt 0.625000 0.398754 -vt 0.562500 0.398754 -vt 0.750000 0.187500 -vt 0.773754 0.187500 -vt 0.773754 0.250000 -vt 0.773754 0.125000 -vt 0.750000 0.078075 -vt 0.773754 0.093209 -vt 0.773754 0.062500 -vt 0.773754 0.078516 -vt 0.773754 0.000000 -vt 0.625000 0.851246 -vt 0.437500 0.847943 -vt 0.500000 0.847943 -vt 0.500000 0.849160 -vt 0.437500 0.849160 -vt 0.375000 0.847943 -vt 0.375000 0.849160 -vt 0.222943 0.062500 -vt 0.222943 0.000000 -vt 0.224160 0.000000 -vt 0.224160 0.062500 -vt 0.222943 0.078516 -vt 0.224160 0.078516 -vt 0.222943 0.125000 -vt 0.222943 0.093209 -vt 0.224160 0.093209 -vt 0.224160 0.125000 -vt 0.222943 0.187500 -vt 0.224160 0.187500 -vt 0.222943 0.250000 -vt 0.224160 0.250000 -vt 0.375000 0.400840 -vt 0.437500 0.400840 -vt 0.437500 0.402057 -vt 0.375000 0.402057 -vt 0.500000 0.400840 -vt 0.500000 0.402057 -vt 0.562500 0.400840 -vt 0.562500 0.402057 -vt 0.625000 0.400840 -vt 0.625000 0.402057 -vt 0.775840 0.187500 -vt 0.777057 0.187500 -vt 0.777057 0.250000 -vt 0.775840 0.250000 -vt 0.775840 0.125000 -vt 0.777057 0.125000 -vt 0.775840 0.093209 -vt 0.777057 0.093209 -vt 0.775840 0.062500 -vt 0.777057 0.062500 -vt 0.777057 0.078516 -vt 0.775840 0.078516 -vt 0.775840 0.000000 -vt 0.777057 0.000000 -vt 0.562500 0.847943 -vt 0.625000 0.847943 -vt 0.625000 0.849160 -vt 0.562500 0.849160 -vt 0.562500 0.849381 -vt 0.562500 0.849602 -vt 0.437500 0.849602 -vt 0.375000 0.849602 -vt 0.224602 0.000000 -vt 0.224602 0.062500 -vt 0.224602 0.078516 -vt 0.224602 0.093209 -vt 0.224602 0.125000 -vt 0.224602 0.187500 -vt 0.224602 0.250000 -vt 0.375000 0.400398 -vt 0.437500 0.400398 -vt 0.500000 0.400398 -vt 0.562500 0.400398 -vt 0.625000 0.400398 -vt 0.775398 0.187500 -vt 0.775398 0.250000 -vt 0.775398 0.125000 -vt 0.775398 0.093209 -vt 0.775398 0.062500 -vt 0.775398 0.078516 -vt 0.775398 0.000000 -vt 0.625000 0.849602 -vt 0.562500 0.850047 -vt 0.500000 0.850047 -vt 0.437500 0.850047 -vt 0.375000 0.850047 -vt 0.225047 0.062500 -vt 0.225047 0.000000 -vt 0.225047 0.078516 -vt 0.225047 0.125000 -vt 0.225047 0.093209 -vt 0.225047 0.187500 -vt 0.225047 0.250000 -vt 0.437500 0.399953 -vt 0.375000 0.399953 -vt 0.500000 0.399953 -vt 0.562500 0.399953 -vt 0.625000 0.399953 -vt 0.774953 0.187500 -vt 0.774953 0.250000 -vt 0.774953 0.125000 -vt 0.774953 0.093209 -vt 0.774953 0.062500 -vt 0.774953 0.078516 -vt 0.774953 0.000000 -vt 0.625000 0.850047 -vt 0.562500 0.837352 -vt 0.625000 0.837352 -vt 0.500000 0.837352 -vt 0.437500 0.837352 -vt 0.375000 0.837352 -vt 0.212352 0.062500 -vt 0.212352 0.000000 -vt 0.212352 0.078516 -vt 0.212352 0.125000 -vt 0.212352 0.093209 -vt 0.212352 0.187500 -vt 0.212352 0.250000 -vt 0.437500 0.412648 -vt 0.375000 0.412648 -vt 0.500000 0.412648 -vt 0.562500 0.412648 -vt 0.625000 0.412648 -vt 0.787648 0.187500 -vt 0.787648 0.250000 -vt 0.787648 0.125000 -vt 0.787648 0.093209 -vt 0.787648 0.062500 -vt 0.787648 0.078516 -vt 0.787648 0.000000 -vt 0.250000 0.078075 -vt 0.625000 0.000699 -vt 0.500000 0.000699 -vt 0.500000 0.749301 -vt 0.625000 0.749301 -vt 0.875000 0.000699 -vt 0.750000 0.000699 -vt 0.750000 0.042255 -vt 0.625000 0.042255 -vt 0.500000 0.042255 -vt 0.875000 0.042255 -vt 0.500000 0.707745 -vt 0.625000 0.707745 -vt 0.626409 0.248091 -vt 0.375000 0.312500 -vt 0.406250 0.312500 -vt 0.406250 0.437813 -vt 0.375000 0.437813 -vt 0.437500 0.312500 -vt 0.437500 0.437813 -vt 0.468750 0.312500 -vt 0.468750 0.437813 -vt 0.500000 0.312500 -vt 0.500000 0.437813 -vt 0.531250 0.312500 -vt 0.531250 0.437813 -vt 0.562500 0.312500 -vt 0.562500 0.437813 -vt 0.593750 0.312500 -vt 0.593750 0.437813 -vt 0.625000 0.312500 -vt 0.625000 0.437813 -vt 0.406250 0.563127 -vt 0.375000 0.563127 -vt 0.437500 0.563127 -vt 0.468750 0.563127 -vt 0.500000 0.563127 -vt 0.531250 0.563127 -vt 0.562500 0.563127 -vt 0.593750 0.563127 -vt 0.625000 0.563127 -vt 0.406250 0.688440 -vt 0.375000 0.688440 -vt 0.437500 0.688440 -vt 0.468750 0.688440 -vt 0.500000 0.688440 -vt 0.531250 0.688440 -vt 0.562500 0.688440 -vt 0.593750 0.688440 -vt 0.625000 0.688440 -vt 0.610485 0.045765 -vt 0.500000 0.150000 -vt 0.389515 0.045765 -vt 0.343750 0.156250 -vt 0.389515 0.266735 -vt 0.610485 0.266735 -vt 0.610485 0.954235 -vt 0.500000 0.837500 -vt 0.389515 0.954235 -vt 0.343750 0.843750 -vt 0.389515 0.733265 -vt 0.610485 0.733265 -vt 0.656250 0.843750 -vt 0.400000 0.312500 -vt 0.400000 0.335203 -vt 0.375000 0.335203 -vt 0.425000 0.312500 -vt 0.425000 0.335203 -vt 0.450000 0.312500 -vt 0.450000 0.335203 -vt 0.475000 0.312500 -vt 0.475000 0.335203 -vt 0.500000 0.335203 -vt 0.525000 0.312500 -vt 0.525000 0.335203 -vt 0.550000 0.312500 -vt 0.550000 0.335203 -vt 0.575000 0.312500 -vt 0.575000 0.335203 -vt 0.600000 0.312500 -vt 0.600000 0.335203 -vt 0.625000 0.335203 -vt 0.400000 0.437813 -vt 0.400000 0.552630 -vt 0.375000 0.552630 -vt 0.425000 0.437813 -vt 0.425000 0.552630 -vt 0.450000 0.437813 -vt 0.450000 0.552630 -vt 0.475000 0.437813 -vt 0.475000 0.552630 -vt 0.500000 0.552630 -vt 0.525000 0.437813 -vt 0.525000 0.552630 -vt 0.550000 0.437813 -vt 0.550000 0.552630 -vt 0.575000 0.437813 -vt 0.575000 0.552630 -vt 0.600000 0.437813 -vt 0.600000 0.552630 -vt 0.625000 0.552630 -vt 0.400000 0.563127 -vt 0.400000 0.651958 -vt 0.375000 0.651958 -vt 0.425000 0.563127 -vt 0.425000 0.651958 -vt 0.450000 0.563127 -vt 0.450000 0.651958 -vt 0.475000 0.563127 -vt 0.475000 0.651958 -vt 0.500000 0.651958 -vt 0.525000 0.563127 -vt 0.525000 0.651958 -vt 0.550000 0.563127 -vt 0.550000 0.651958 -vt 0.575000 0.563127 -vt 0.575000 0.651958 -vt 0.600000 0.563127 -vt 0.600000 0.651958 -vt 0.625000 0.651958 -vt 0.548284 0.007647 -vt 0.451716 0.007647 -vt 0.373591 0.064409 -vt 0.537500 0.688440 -vt 0.475000 0.688440 -vt 0.450000 0.688440 -vt 0.412500 0.688440 -vt 0.600000 0.688440 -vt 0.575000 0.688440 -vt 0.400000 0.549851 -vt 0.375000 0.549851 -vt 0.425000 0.549851 -vt 0.450000 0.549851 -vt 0.475000 0.549851 -vt 0.500000 0.549851 -vt 0.525000 0.549851 -vt 0.550000 0.549851 -vt 0.575000 0.549851 -vt 0.600000 0.549851 -vt 0.625000 0.549851 -vt 0.400000 0.553417 -vt 0.375000 0.553417 -vt 0.450000 0.553417 -vt 0.425000 0.553417 -vt 0.475000 0.553417 -vt 0.500000 0.553417 -vt 0.525000 0.553417 -vt 0.550000 0.553417 -vt 0.575000 0.553417 -vt 0.600000 0.553417 -vt 0.625000 0.553417 -vt 0.400000 0.627190 -vt 0.375000 0.627190 -vt 0.425000 0.627190 -vt 0.450000 0.627190 -vt 0.475000 0.627190 -vt 0.500000 0.627190 -vt 0.525000 0.627190 -vt 0.550000 0.627190 -vt 0.575000 0.627190 -vt 0.600000 0.627190 -vt 0.625000 0.627190 -vt 0.400000 0.550179 -vt 0.375000 0.550179 -vt 0.425000 0.550179 -vt 0.450000 0.550179 -vt 0.475000 0.550179 -vt 0.500000 0.550179 -vt 0.525000 0.550179 -vt 0.550000 0.550179 -vt 0.575000 0.550179 -vt 0.600000 0.550179 -vt 0.625000 0.550179 -vt 0.575000 0.358212 -vt 0.550000 0.358212 -vt 0.525000 0.358212 -vt 0.500000 0.358212 -vt 0.475000 0.358212 -vt 0.450000 0.358212 -vt 0.425000 0.358212 -vt 0.400000 0.358212 -vt 0.375000 0.358212 -vt 0.625000 0.358212 -vt 0.600000 0.358212 -vt 0.400000 0.551506 -vt 0.375000 0.551506 -vt 0.425000 0.551506 -vt 0.450000 0.551506 -vt 0.475000 0.551506 -vt 0.500000 0.551506 -vt 0.525000 0.551506 -vt 0.550000 0.551506 -vt 0.575000 0.551506 -vt 0.600000 0.551506 -vt 0.625000 0.551506 -vt 0.625000 0.561237 -vt 0.600000 0.561237 -vt 0.575000 0.561237 -vt 0.550000 0.561237 -vt 0.525000 0.561237 -vt 0.500000 0.561237 -vt 0.475000 0.561237 -vt 0.450000 0.561237 -vt 0.425000 0.561237 -vt 0.400000 0.561237 -vt 0.375000 0.561237 -vt 0.525000 0.557124 -vt 0.500000 0.557124 -vt 0.475000 0.557124 -vt 0.450000 0.557124 -vt 0.425000 0.557124 -vt 0.400000 0.557124 -vt 0.375000 0.557124 -vt 0.625000 0.557124 -vt 0.600000 0.557124 -vt 0.575000 0.557124 -vt 0.550000 0.557124 -vt 0.575000 0.558250 -vt 0.550000 0.558250 -vt 0.525000 0.558250 -vt 0.500000 0.558250 -vt 0.475000 0.558250 -vt 0.450000 0.558250 -vt 0.425000 0.558250 -vt 0.400000 0.558250 -vt 0.375000 0.558250 -vt 0.625000 0.558250 -vt 0.600000 0.558250 -vt 0.500000 0.556170 -vt 0.475000 0.556170 -vt 0.450000 0.556170 -vt 0.425000 0.556170 -vt 0.400000 0.556170 -vt 0.375000 0.556170 -vt 0.625000 0.556170 -vt 0.600000 0.556170 -vt 0.575000 0.556170 -vt 0.550000 0.556170 -vt 0.525000 0.556170 -vt 0.600000 0.562207 -vt 0.575000 0.562207 -vt 0.550000 0.562207 -vt 0.525000 0.562207 -vt 0.500000 0.562207 -vt 0.475000 0.562207 -vt 0.450000 0.562207 -vt 0.425000 0.562207 -vt 0.400000 0.562207 -vt 0.375000 0.562207 -vt 0.625000 0.562207 -vt 0.550000 0.387379 -vt 0.575000 0.387379 -vt 0.525000 0.387379 -vt 0.500000 0.387379 -vt 0.475000 0.387379 -vt 0.450000 0.387379 -vt 0.425000 0.387379 -vt 0.400000 0.387379 -vt 0.375000 0.387379 -vt 0.600000 0.387379 -vt 0.625000 0.387379 -vt 0.600000 0.372795 -vt 0.625000 0.087172 -vt 0.750000 0.087172 -vt 0.500000 0.087172 -vt 0.875000 0.087172 -vt 0.500000 0.662828 -vt 0.625000 0.662828 -vt 0.750000 0.046608 -vt 0.625000 0.046608 -vt 0.500000 0.046608 -vt 0.875000 0.046608 -vt 0.500000 0.703392 -vt 0.625000 0.703392 -vt 0.500000 0.083147 -vt 0.625000 0.083147 -vt 0.750000 0.083147 -vt 0.875000 0.083147 -vt 0.500000 0.666853 -vt 0.625000 0.666853 -usemtl ISSGray2 -s 1 -f 1/1 2/2 5/3 4/4 -f 2/2 3/5 6/6 5/3 -f 4/4 5/3 8/7 7/8 -f 5/3 6/6 9/9 8/7 -f 7/10 11/11 13/12 12/13 -f 11/11 10/14 14/15 13/12 -f 12/13 13/12 16/16 15/17 -f 13/12 14/15 17/18 16/16 -f 15/17 16/16 19/19 18/20 -f 16/16 17/18 20/21 19/19 -f 18/20 19/19 2/22 1/23 -f 19/19 20/21 3/24 2/22 -f 20/25 17/26 14/27 21/28 -f 3/5 20/25 21/28 6/6 -f 21/28 14/27 10/29 -f 6/6 21/28 10/29 9/9 -f 15/30 18/31 22/32 12/33 -f 18/31 1/1 4/4 22/32 -f 12/33 22/32 7/34 -f 22/32 4/4 7/8 -f 23/1 24/2 27/3 26/4 -f 24/2 25/5 28/6 27/3 -f 26/4 27/3 30/7 29/8 -f 27/3 28/6 31/9 30/7 -f 34/10 35/11 38/12 37/13 -f 35/11 36/14 39/15 38/12 -f 37/13 38/12 41/16 40/17 -f 38/12 39/15 42/18 41/16 -f 40/17 41/16 44/19 43/20 -f 41/16 42/18 45/21 44/19 -f 43/20 44/19 24/22 23/23 -f 44/19 45/21 25/24 24/22 -f 45/25 42/26 39/27 46/28 -f 25/5 45/25 46/28 28/6 -f 46/28 39/27 36/35 33/36 -f 28/6 46/28 33/36 31/9 -f 40/30 43/31 47/32 37/33 -f 43/31 23/1 26/4 47/32 -f 37/33 47/32 32/37 34/38 -f 47/32 26/4 29/8 32/37 -f 48/1 49/2 52/3 51/4 -f 49/2 50/5 53/6 52/3 -f 51/4 52/3 55/7 54/8 -f 52/3 53/6 56/9 55/7 -f 59/10 60/11 63/12 62/13 -f 60/11 61/14 64/15 63/12 -f 62/13 63/12 66/16 65/17 -f 63/12 64/15 67/18 66/16 -f 65/17 66/16 69/19 68/20 -f 66/16 67/18 70/21 69/19 -f 68/20 69/19 49/22 48/23 -f 69/19 70/21 50/24 49/22 -f 70/25 67/26 64/27 71/28 -f 50/5 70/25 71/28 53/6 -f 71/28 64/27 61/35 58/36 -f 53/6 71/28 58/36 56/9 -f 65/30 68/31 72/32 62/33 -f 68/31 48/1 51/4 72/32 -f 62/33 72/32 57/37 59/38 -f 72/32 51/4 54/8 57/37 -f 546/39 545/40 547/41 548/42 -f 550/43 549/44 551/45 552/46 -f 507/39 506/40 861/40 862/39 -f 506/40 483/41 860/41 861/40 -f 483/41 466/42 863/42 860/41 -f 466/42 507/39 862/39 863/42 -f 525/43 524/44 874/44 875/43 -f 524/44 482/45 873/45 874/44 -f 482/45 456/46 872/46 873/45 -f 456/46 525/43 875/43 872/46 -f 853/40 852/41 547/41 545/40 -f 854/39 853/40 545/40 546/39 -f 855/42 854/39 546/39 548/42 -f 852/41 855/42 548/42 547/41 -f 857/40 856/41 852/41 853/40 -f 858/39 857/40 853/40 854/39 -f 859/42 858/39 854/39 855/42 -f 856/41 859/42 855/42 852/41 -f 861/40 860/41 856/41 857/40 -f 862/39 861/40 857/40 858/39 -f 863/42 862/39 858/39 859/42 -f 860/41 863/42 859/42 856/41 -f 865/45 864/46 552/46 551/45 -f 866/44 865/45 551/45 549/44 -f 867/43 866/44 549/44 550/43 -f 864/46 867/43 550/43 552/46 -f 869/45 868/46 864/46 865/45 -f 870/44 869/45 865/45 866/44 -f 871/43 870/44 866/44 867/43 -f 868/46 871/43 867/43 864/46 -f 873/45 872/46 868/46 869/45 -f 874/44 873/45 869/45 870/44 -f 875/43 874/44 870/44 871/43 -f 872/46 875/43 871/43 868/46 -f 1003/1 1006/4 1005/3 1004/2 -f 1004/2 1005/3 1008/6 1007/5 -f 1006/4 1010/37 1009/7 1005/3 -f 1005/3 1009/7 1011/9 1008/6 -f 1010/10 1014/13 1013/12 1012/11 -f 1012/11 1013/12 1016/15 1015/14 -f 1014/13 1018/17 1017/16 1013/12 -f 1013/12 1017/16 1019/18 1016/15 -f 1018/17 1021/20 1020/19 1017/16 -f 1017/16 1020/19 1022/21 1019/18 -f 1021/20 1003/23 1004/22 1020/19 -f 1020/19 1004/22 1007/24 1022/21 -f 1022/25 1023/28 1016/27 1019/26 -f 1007/5 1008/6 1023/28 1022/25 -f 1023/28 1015/29 1016/27 -f 1008/6 1011/9 1015/29 1023/28 -f 1018/30 1014/33 1024/32 1021/31 -f 1021/31 1024/32 1006/4 1003/1 -f 1014/33 1010/37 1024/32 -f 1024/32 1010/37 1006/4 -f 1025/1 1028/4 1027/3 1026/2 -f 1026/2 1027/3 1030/6 1029/5 -f 1028/4 1032/8 1031/7 1027/3 -f 1027/3 1031/7 1033/9 1030/6 -f 1034/10 1037/13 1036/12 1035/11 -f 1035/11 1036/12 1039/15 1038/14 -f 1037/13 1041/17 1040/16 1036/12 -f 1036/12 1040/16 1042/18 1039/15 -f 1041/17 1044/20 1043/19 1040/16 -f 1040/16 1043/19 1045/21 1042/18 -f 1044/20 1025/23 1026/22 1043/19 -f 1043/19 1026/22 1029/24 1045/21 -f 1045/25 1046/28 1039/27 1042/26 -f 1029/5 1030/6 1046/28 1045/25 -f 1046/28 1047/36 1038/35 1039/27 -f 1030/6 1033/9 1047/36 1046/28 -f 1041/30 1037/33 1048/32 1044/31 -f 1044/31 1048/32 1028/4 1025/1 -f 1037/33 1034/38 1049/37 1048/32 -f 1048/32 1049/37 1032/8 1028/4 -f 1050/1 1053/4 1052/3 1051/2 -f 1051/2 1052/3 1055/6 1054/5 -f 1053/4 1057/8 1056/7 1052/3 -f 1052/3 1056/7 1058/9 1055/6 -f 1059/10 1062/13 1061/12 1060/11 -f 1060/11 1061/12 1064/15 1063/14 -f 1062/13 1066/17 1065/16 1061/12 -f 1061/12 1065/16 1067/18 1064/15 -f 1066/17 1069/20 1068/19 1065/16 -f 1065/16 1068/19 1070/21 1067/18 -f 1069/20 1050/23 1051/22 1068/19 -f 1068/19 1051/22 1054/24 1070/21 -f 1070/25 1071/28 1064/27 1067/26 -f 1054/5 1055/6 1071/28 1070/25 -f 1071/28 1072/36 1063/35 1064/27 -f 1055/6 1058/9 1072/36 1071/28 -f 1066/30 1062/33 1073/32 1069/31 -f 1069/31 1073/32 1053/4 1050/1 -f 1062/33 1059/38 1074/37 1073/32 -f 1073/32 1074/37 1057/8 1053/4 -f 1563/39 1566/42 1565/41 1564/40 -f 1586/43 1589/46 1588/45 1587/44 -f 1568/39 1594/39 1593/40 1592/40 -f 1592/40 1593/40 1595/41 1474/41 -f 1474/41 1595/41 1596/42 1475/42 -f 1475/42 1596/42 1594/39 1568/39 -f 1591/43 1599/43 1598/44 1597/44 -f 1597/44 1598/44 1600/45 1495/45 -f 1495/45 1600/45 1601/46 1498/46 -f 1498/46 1601/46 1599/43 1591/43 -f 1893/40 1564/40 1565/41 1894/41 -f 1895/39 1563/39 1564/40 1893/40 -f 1896/42 1566/42 1563/39 1895/39 -f 1894/41 1565/41 1566/42 1896/42 -f 1897/40 1893/40 1894/41 1898/41 -f 1899/39 1895/39 1893/40 1897/40 -f 1900/42 1896/42 1895/39 1899/39 -f 1898/41 1894/41 1896/42 1900/42 -f 1593/40 1897/40 1898/41 1595/41 -f 1594/39 1899/39 1897/40 1593/40 -f 1596/42 1900/42 1899/39 1594/39 -f 1595/41 1898/41 1900/42 1596/42 -f 1901/45 1588/45 1589/46 1902/46 -f 1903/44 1587/44 1588/45 1901/45 -f 1904/43 1586/43 1587/44 1903/44 -f 1902/46 1589/46 1586/43 1904/43 -f 1905/45 1901/45 1902/46 1906/46 -f 1907/44 1903/44 1901/45 1905/45 -f 1908/43 1904/43 1903/44 1907/44 -f 1906/46 1902/46 1904/43 1908/43 -f 1600/45 1905/45 1906/46 1601/46 -f 1598/44 1907/44 1905/45 1600/45 -f 1599/43 1908/43 1907/44 1598/44 -f 1601/46 1906/46 1908/43 1599/43 -usemtl ISSSolarPanels -f 111/47 112/48 77/3 76/4 -f 112/48 113/49 78/6 77/3 -f 88/13 89/12 108/50 109/51 -f 89/12 90/15 107/52 108/50 -f 114/53 107/54 90/27 97/28 -f 113/49 114/53 97/28 78/6 -f 109/55 110/56 98/32 88/33 -f 110/56 111/47 76/4 98/32 -f 100/57 99/58 115/59 116/60 -f 101/61 100/57 116/60 117/62 -f 117/63 118/64 102/65 101/66 -f 118/64 119/67 103/68 102/65 -f 119/67 120/69 104/70 103/68 -f 120/69 121/71 105/72 104/70 -f 121/71 122/73 106/74 105/72 -f 122/73 115/75 99/76 106/74 -f 116/60 115/59 90/15 89/12 -f 117/62 116/60 89/12 88/13 -f 88/33 98/32 118/64 117/63 -f 98/32 76/4 119/67 118/64 -f 76/4 77/3 120/69 119/67 -f 77/3 78/6 121/71 120/69 -f 78/6 97/28 122/73 121/71 -f 97/28 90/27 115/75 122/73 -f 161/47 162/48 127/3 126/4 -f 162/48 163/49 128/6 127/3 -f 138/13 139/12 158/50 159/51 -f 139/12 140/15 157/52 158/50 -f 164/53 157/54 140/27 147/28 -f 163/49 164/53 147/28 128/6 -f 159/55 160/56 148/32 138/33 -f 160/56 161/47 126/4 148/32 -f 150/57 149/58 165/59 166/60 -f 151/61 150/57 166/60 167/62 -f 167/63 168/64 152/65 151/66 -f 168/64 169/67 153/68 152/65 -f 169/67 170/69 154/70 153/68 -f 170/69 171/71 155/72 154/70 -f 171/71 172/73 156/74 155/72 -f 172/73 165/75 149/76 156/74 -f 166/60 165/59 140/15 139/12 -f 167/62 166/60 139/12 138/13 -f 138/33 148/32 168/64 167/63 -f 148/32 126/4 169/67 168/64 -f 126/4 127/3 170/69 169/67 -f 127/3 128/6 171/71 170/69 -f 128/6 147/28 172/73 171/71 -f 147/28 140/27 165/75 172/73 -f 223/47 224/48 189/3 188/4 -f 224/48 225/49 190/6 189/3 -f 200/13 201/12 220/50 221/51 -f 201/12 202/15 219/52 220/50 -f 226/53 219/54 202/27 209/28 -f 225/49 226/53 209/28 190/6 -f 221/55 222/56 210/32 200/33 -f 222/56 223/47 188/4 210/32 -f 212/57 211/58 227/59 228/60 -f 213/61 212/57 228/60 229/62 -f 229/63 230/64 214/65 213/66 -f 230/64 231/67 215/68 214/65 -f 231/67 232/69 216/70 215/68 -f 232/69 233/71 217/72 216/70 -f 233/71 234/73 218/74 217/72 -f 234/73 227/75 211/76 218/74 -f 228/60 227/59 202/15 201/12 -f 229/62 228/60 201/12 200/13 -f 200/33 210/32 230/64 229/63 -f 210/32 188/4 231/67 230/64 -f 188/4 189/3 232/69 231/67 -f 189/3 190/6 233/71 232/69 -f 190/6 209/28 234/73 233/71 -f 209/28 202/27 227/75 234/73 -f 273/47 274/48 239/3 238/4 -f 274/48 275/49 240/6 239/3 -f 250/13 251/12 270/50 271/51 -f 251/12 252/15 269/52 270/50 -f 276/53 269/54 252/27 259/28 -f 275/49 276/53 259/28 240/6 -f 271/55 272/56 260/32 250/33 -f 272/56 273/47 238/4 260/32 -f 262/57 261/58 277/59 278/60 -f 263/61 262/57 278/60 279/62 -f 279/63 280/64 264/65 263/66 -f 280/64 281/67 265/68 264/65 -f 281/67 282/69 266/70 265/68 -f 282/69 283/71 267/72 266/70 -f 283/71 284/73 268/74 267/72 -f 284/73 277/75 261/76 268/74 -f 278/60 277/59 252/15 251/12 -f 279/62 278/60 251/12 250/13 -f 250/33 260/32 280/64 279/63 -f 260/32 238/4 281/67 280/64 -f 238/4 239/3 282/69 281/67 -f 239/3 240/6 283/71 282/69 -f 240/6 259/28 284/73 283/71 -f 259/28 252/27 277/75 284/73 -f 335/47 336/48 301/3 300/4 -f 336/48 337/49 302/6 301/3 -f 312/13 313/12 332/50 333/51 -f 313/12 314/15 331/52 332/50 -f 338/53 331/54 314/27 321/28 -f 337/49 338/53 321/28 302/6 -f 333/55 334/56 322/32 312/33 -f 334/56 335/47 300/4 322/32 -f 324/57 323/58 339/59 340/60 -f 325/61 324/57 340/60 341/62 -f 341/63 342/64 326/65 325/66 -f 342/64 343/67 327/68 326/65 -f 343/67 344/69 328/70 327/68 -f 344/69 345/71 329/72 328/70 -f 345/71 346/73 330/74 329/72 -f 346/73 339/75 323/76 330/74 -f 340/60 339/59 314/15 313/12 -f 341/62 340/60 313/12 312/13 -f 312/33 322/32 342/64 341/63 -f 322/32 300/4 343/67 342/64 -f 300/4 301/3 344/69 343/67 -f 301/3 302/6 345/71 344/69 -f 302/6 321/28 346/73 345/71 -f 321/28 314/27 339/75 346/73 -f 385/47 386/48 351/3 350/4 -f 386/48 387/49 352/6 351/3 -f 362/13 363/12 382/50 383/51 -f 363/12 364/15 381/52 382/50 -f 388/53 381/54 364/27 371/28 -f 387/49 388/53 371/28 352/6 -f 383/55 384/56 372/32 362/33 -f 384/56 385/47 350/4 372/32 -f 374/57 373/58 389/59 390/60 -f 375/61 374/57 390/60 391/62 -f 391/63 392/64 376/65 375/66 -f 392/64 393/67 377/68 376/65 -f 393/67 394/69 378/70 377/68 -f 394/69 395/71 379/72 378/70 -f 395/71 396/73 380/74 379/72 -f 396/73 389/75 373/76 380/74 -f 390/60 389/59 364/15 363/12 -f 391/62 390/60 363/12 362/13 -f 362/33 372/32 392/64 391/63 -f 372/32 350/4 393/67 392/64 -f 350/4 351/3 394/69 393/67 -f 351/3 352/6 395/71 394/69 -f 352/6 371/28 396/73 395/71 -f 371/28 364/27 389/75 396/73 -f 715/47 716/48 681/3 680/4 -f 716/48 717/49 682/6 681/3 -f 692/13 693/12 712/50 713/51 -f 693/12 694/15 711/52 712/50 -f 718/53 711/54 694/27 701/28 -f 717/49 718/53 701/28 682/6 -f 713/55 714/56 702/32 692/33 -f 714/56 715/47 680/4 702/32 -f 704/57 703/58 719/59 720/60 -f 705/61 704/57 720/60 721/62 -f 721/63 722/64 706/65 705/66 -f 722/64 723/67 707/68 706/65 -f 723/67 724/69 708/70 707/68 -f 724/69 725/71 709/72 708/70 -f 725/71 726/73 710/74 709/72 -f 726/73 719/75 703/76 710/74 -f 720/60 719/59 694/15 693/12 -f 721/62 720/60 693/12 692/13 -f 692/33 702/32 722/64 721/63 -f 702/32 680/4 723/67 722/64 -f 680/4 681/3 724/69 723/67 -f 681/3 682/6 725/71 724/69 -f 682/6 701/28 726/73 725/71 -f 701/28 694/27 719/75 726/73 -f 763/47 764/48 731/3 730/4 -f 764/48 765/49 732/6 731/3 -f 742/13 743/12 760/50 761/51 -f 743/12 744/15 759/52 760/50 -f 766/53 759/54 744/27 749/28 -f 765/49 766/53 749/28 732/6 -f 761/55 762/56 750/32 742/33 -f 762/56 763/47 730/4 750/32 -f 752/57 751/58 767/59 768/60 -f 753/61 752/57 768/60 769/62 -f 769/63 770/64 754/65 753/66 -f 770/64 771/67 755/68 754/65 -f 771/67 772/69 756/70 755/68 -f 772/69 773/71 757/72 756/70 -f 773/71 774/73 758/74 757/72 -f 774/73 767/75 751/76 758/74 -f 768/60 767/59 744/15 743/12 -f 769/62 768/60 743/12 742/13 -f 742/33 750/32 770/64 769/63 -f 750/32 730/4 771/67 770/64 -f 730/4 731/3 772/69 771/67 -f 731/3 732/6 773/71 772/69 -f 732/6 749/28 774/73 773/71 -f 749/28 744/27 767/75 774/73 -f 1075/47 1078/4 1077/3 1076/48 -f 1076/48 1077/3 1080/6 1079/49 -f 1096/13 1099/51 1098/50 1097/12 -f 1097/12 1098/50 1101/52 1100/15 -f 1111/53 1112/28 1100/27 1101/54 -f 1079/49 1080/6 1112/28 1111/53 -f 1099/55 1096/33 1114/32 1113/56 -f 1113/56 1114/32 1078/4 1075/47 -f 1093/57 1117/60 1116/59 1095/58 -f 1094/61 1118/62 1117/60 1093/57 -f 1118/63 1094/66 1115/65 1119/64 -f 1119/64 1115/65 1081/68 1120/67 -f 1120/67 1081/68 1082/70 1121/69 -f 1121/69 1082/70 1085/72 1122/71 -f 1122/71 1085/72 1124/74 1123/73 -f 1123/73 1124/74 1095/76 1116/75 -f 1117/60 1097/12 1100/15 1116/59 -f 1118/62 1096/13 1097/12 1117/60 -f 1096/33 1118/63 1119/64 1114/32 -f 1114/32 1119/64 1120/67 1078/4 -f 1078/4 1120/67 1121/69 1077/3 -f 1077/3 1121/69 1122/71 1080/6 -f 1080/6 1122/71 1123/73 1112/28 -f 1112/28 1123/73 1116/75 1100/27 -f 1125/47 1128/4 1127/3 1126/48 -f 1126/48 1127/3 1130/6 1129/49 -f 1146/13 1149/51 1148/50 1147/12 -f 1147/12 1148/50 1151/52 1150/15 -f 1161/53 1162/28 1150/27 1151/54 -f 1129/49 1130/6 1162/28 1161/53 -f 1149/55 1146/33 1170/32 1169/56 -f 1169/56 1170/32 1128/4 1125/47 -f 1143/57 1173/60 1172/59 1145/58 -f 1144/61 1174/62 1173/60 1143/57 -f 1174/63 1144/66 1171/65 1175/64 -f 1175/64 1171/65 1131/68 1176/67 -f 1176/67 1131/68 1132/70 1177/69 -f 1177/69 1132/70 1135/72 1178/71 -f 1178/71 1135/72 1180/74 1179/73 -f 1179/73 1180/74 1145/76 1172/75 -f 1173/60 1147/12 1150/15 1172/59 -f 1174/62 1146/13 1147/12 1173/60 -f 1146/33 1174/63 1175/64 1170/32 -f 1170/32 1175/64 1176/67 1128/4 -f 1128/4 1176/67 1177/69 1127/3 -f 1127/3 1177/69 1178/71 1130/6 -f 1130/6 1178/71 1179/73 1162/28 -f 1162/28 1179/73 1172/75 1150/27 -f 1187/47 1190/4 1189/3 1188/48 -f 1188/48 1189/3 1192/6 1191/49 -f 1208/13 1211/51 1210/50 1209/12 -f 1209/12 1210/50 1213/52 1212/15 -f 1223/53 1224/28 1212/27 1213/54 -f 1191/49 1192/6 1224/28 1223/53 -f 1211/55 1208/33 1226/32 1225/56 -f 1225/56 1226/32 1190/4 1187/47 -f 1205/57 1229/60 1228/59 1207/58 -f 1206/61 1230/62 1229/60 1205/57 -f 1230/63 1206/66 1227/65 1231/64 -f 1231/64 1227/65 1193/68 1232/67 -f 1232/67 1193/68 1194/70 1233/69 -f 1233/69 1194/70 1197/72 1234/71 -f 1234/71 1197/72 1236/74 1235/73 -f 1235/73 1236/74 1207/76 1228/75 -f 1229/60 1209/12 1212/15 1228/59 -f 1230/62 1208/13 1209/12 1229/60 -f 1208/33 1230/63 1231/64 1226/32 -f 1226/32 1231/64 1232/67 1190/4 -f 1190/4 1232/67 1233/69 1189/3 -f 1189/3 1233/69 1234/71 1192/6 -f 1192/6 1234/71 1235/73 1224/28 -f 1224/28 1235/73 1228/75 1212/27 -f 1237/47 1240/4 1239/3 1238/48 -f 1238/48 1239/3 1242/6 1241/49 -f 1258/13 1261/51 1260/50 1259/12 -f 1259/12 1260/50 1263/52 1262/15 -f 1273/53 1274/28 1262/27 1263/54 -f 1241/49 1242/6 1274/28 1273/53 -f 1261/55 1258/33 1282/32 1281/56 -f 1281/56 1282/32 1240/4 1237/47 -f 1255/57 1285/60 1284/59 1257/58 -f 1256/61 1286/62 1285/60 1255/57 -f 1286/63 1256/66 1283/65 1287/64 -f 1287/64 1283/65 1243/68 1288/67 -f 1288/67 1243/68 1244/70 1289/69 -f 1289/69 1244/70 1247/72 1290/71 -f 1290/71 1247/72 1292/74 1291/73 -f 1291/73 1292/74 1257/76 1284/75 -f 1285/60 1259/12 1262/15 1284/59 -f 1286/62 1258/13 1259/12 1285/60 -f 1258/33 1286/63 1287/64 1282/32 -f 1282/32 1287/64 1288/67 1240/4 -f 1240/4 1288/67 1289/69 1239/3 -f 1239/3 1289/69 1290/71 1242/6 -f 1242/6 1290/71 1291/73 1274/28 -f 1274/28 1291/73 1284/75 1262/27 -f 1299/47 1302/4 1301/3 1300/48 -f 1300/48 1301/3 1304/6 1303/49 -f 1320/13 1323/51 1322/50 1321/12 -f 1321/12 1322/50 1325/52 1324/15 -f 1335/53 1336/28 1324/27 1325/54 -f 1303/49 1304/6 1336/28 1335/53 -f 1323/55 1320/33 1338/32 1337/56 -f 1337/56 1338/32 1302/4 1299/47 -f 1317/57 1341/60 1340/59 1319/58 -f 1318/61 1342/62 1341/60 1317/57 -f 1342/63 1318/66 1339/65 1343/64 -f 1343/64 1339/65 1305/68 1344/67 -f 1344/67 1305/68 1306/70 1345/69 -f 1345/69 1306/70 1309/72 1346/71 -f 1346/71 1309/72 1348/74 1347/73 -f 1347/73 1348/74 1319/76 1340/75 -f 1341/60 1321/12 1324/15 1340/59 -f 1342/62 1320/13 1321/12 1341/60 -f 1320/33 1342/63 1343/64 1338/32 -f 1338/32 1343/64 1344/67 1302/4 -f 1302/4 1344/67 1345/69 1301/3 -f 1301/3 1345/69 1346/71 1304/6 -f 1304/6 1346/71 1347/73 1336/28 -f 1336/28 1347/73 1340/75 1324/27 -f 1349/47 1352/4 1351/3 1350/48 -f 1350/48 1351/3 1354/6 1353/49 -f 1370/13 1373/51 1372/50 1371/12 -f 1371/12 1372/50 1375/52 1374/15 -f 1385/53 1386/28 1374/27 1375/54 -f 1353/49 1354/6 1386/28 1385/53 -f 1373/55 1370/33 1394/32 1393/56 -f 1393/56 1394/32 1352/4 1349/47 -f 1367/57 1397/60 1396/59 1369/58 -f 1368/61 1398/62 1397/60 1367/57 -f 1398/63 1368/66 1395/65 1399/64 -f 1399/64 1395/65 1355/68 1400/67 -f 1400/67 1355/68 1356/70 1401/69 -f 1401/69 1356/70 1359/72 1402/71 -f 1402/71 1359/72 1404/74 1403/73 -f 1403/73 1404/74 1369/76 1396/75 -f 1397/60 1371/12 1374/15 1396/59 -f 1398/62 1370/13 1371/12 1397/60 -f 1370/33 1398/63 1399/64 1394/32 -f 1394/32 1399/64 1400/67 1352/4 -f 1352/4 1400/67 1401/69 1351/3 -f 1351/3 1401/69 1402/71 1354/6 -f 1354/6 1402/71 1403/73 1386/28 -f 1386/28 1403/73 1396/75 1374/27 -f 1757/47 1760/4 1759/3 1758/48 -f 1758/48 1759/3 1762/6 1761/49 -f 1778/13 1781/51 1780/50 1779/12 -f 1779/12 1780/50 1783/52 1782/15 -f 1791/53 1792/28 1782/27 1783/54 -f 1761/49 1762/6 1792/28 1791/53 -f 1781/55 1778/33 1794/32 1793/56 -f 1793/56 1794/32 1760/4 1757/47 -f 1775/57 1797/60 1796/59 1777/58 -f 1776/61 1798/62 1797/60 1775/57 -f 1798/63 1776/66 1795/65 1799/64 -f 1799/64 1795/65 1763/68 1800/67 -f 1800/67 1763/68 1764/70 1801/69 -f 1801/69 1764/70 1767/72 1802/71 -f 1802/71 1767/72 1804/74 1803/73 -f 1803/73 1804/74 1777/76 1796/75 -f 1797/60 1779/12 1782/15 1796/59 -f 1798/62 1778/13 1779/12 1797/60 -f 1778/33 1798/63 1799/64 1794/32 -f 1794/32 1799/64 1800/67 1760/4 -f 1760/4 1800/67 1801/69 1759/3 -f 1759/3 1801/69 1802/71 1762/6 -f 1762/6 1802/71 1803/73 1792/28 -f 1792/28 1803/73 1796/75 1782/27 -f 1805/47 1808/4 1807/3 1806/48 -f 1806/48 1807/3 1810/6 1809/49 -f 1826/13 1829/51 1828/50 1827/12 -f 1827/12 1828/50 1831/52 1830/15 -f 1839/53 1840/28 1830/27 1831/54 -f 1809/49 1810/6 1840/28 1839/53 -f 1829/55 1826/33 1848/32 1847/56 -f 1847/56 1848/32 1808/4 1805/47 -f 1823/57 1851/60 1850/59 1825/58 -f 1824/61 1852/62 1851/60 1823/57 -f 1852/63 1824/66 1849/65 1853/64 -f 1853/64 1849/65 1811/68 1854/67 -f 1854/67 1811/68 1812/70 1855/69 -f 1855/69 1812/70 1815/72 1856/71 -f 1856/71 1815/72 1858/74 1857/73 -f 1857/73 1858/74 1825/76 1850/75 -f 1851/60 1827/12 1830/15 1850/59 -f 1852/62 1826/13 1827/12 1851/60 -f 1826/33 1852/63 1853/64 1848/32 -f 1848/32 1853/64 1854/67 1808/4 -f 1808/4 1854/67 1855/69 1807/3 -f 1807/3 1855/69 1856/71 1810/6 -f 1810/6 1856/71 1857/73 1840/28 -f 1840/28 1857/73 1850/75 1830/27 -f 2062/9 2063/9 2079/9 2078/9 -f 2068/14 2066/14 2082/14 2084/14 -f 2069/9 2071/9 2087/9 2085/9 -f 2076/14 2074/14 2090/14 2092/14 -f 2224/9 2240/9 2242/9 2226/9 -f 2231/14 2254/14 2249/14 2229/14 -f 2232/9 2256/9 2258/9 2234/9 -f 2239/14 2270/14 2265/14 2237/14 -f 2356/77 2358/77 2362/77 2360/77 -f 2359/78 2357/78 2361/78 2363/78 -f 2420/78 2419/78 2399/78 2401/78 -f 2422/77 2421/77 2400/77 2398/77 -f 2467/77 2442/77 2443/77 2469/77 -f 2470/78 2444/78 2441/78 2468/78 -f 2503/78 2488/78 2485/78 2506/78 -f 2505/77 2486/77 2487/77 2504/77 -f 2591/77 2590/77 2574/77 2572/77 -f 2589/78 2592/78 2573/78 2575/78 -f 2635/77 2616/77 2617/77 2633/77 -f 2634/78 2618/78 2615/78 2636/78 -f 3106/79 3105/79 3031/79 3029/79 -f 3104/80 3107/80 3030/80 3032/80 -f 3114/81 3113/81 3027/81 3025/81 -f 3112/82 3115/82 3026/82 3028/82 -usemtl ISSMetal1 -f 103/68 104/70 80/7 79/8 -f 104/70 105/72 81/9 80/7 -f 79/8 80/7 83/83 82/84 -f 80/7 81/9 84/85 83/83 -f 82/84 83/83 86/11 85/10 -f 83/83 84/85 87/14 86/11 -f 85/10 86/11 100/57 101/61 -f 86/11 87/14 99/58 100/57 -f 91/17 92/16 95/19 94/20 -f 92/16 93/18 96/21 95/19 -f 94/20 95/19 74/22 73/23 -f 95/19 96/21 75/24 74/22 -f 101/66 102/65 82/37 85/38 -f 102/65 103/68 79/8 82/37 -f 108/50 107/52 93/18 92/16 -f 109/51 108/50 92/16 91/17 -f 91/30 94/31 110/56 109/55 -f 94/31 73/1 111/47 110/56 -f 75/5 96/25 114/53 113/49 -f 96/25 93/26 107/54 114/53 -f 153/68 154/70 130/7 129/8 -f 154/70 155/72 131/9 130/7 -f 129/8 130/7 133/83 132/84 -f 130/7 131/9 134/85 133/83 -f 132/84 133/83 136/11 135/10 -f 133/83 134/85 137/14 136/11 -f 135/10 136/11 150/57 151/61 -f 136/11 137/14 149/58 150/57 -f 141/17 142/16 145/19 144/20 -f 142/16 143/18 146/21 145/19 -f 144/20 145/19 124/22 123/23 -f 145/19 146/21 125/24 124/22 -f 173/74 174/76 175/35 176/36 -f 177/72 173/74 176/36 178/9 -f 151/66 152/65 132/37 135/38 -f 152/65 153/68 129/8 132/37 -f 141/30 144/31 160/56 159/55 -f 144/31 123/1 161/47 160/56 -f 123/1 124/2 162/48 161/47 -f 124/2 125/5 163/49 162/48 -f 125/5 146/25 164/53 163/49 -f 146/25 143/26 157/54 164/53 -f 156/74 149/76 174/76 173/74 -f 99/76 87/35 179/35 180/76 -f 137/35 134/36 176/36 175/35 -f 155/72 156/74 173/74 177/72 -f 134/36 131/9 178/9 176/36 -f 131/9 155/72 177/72 178/9 -f 149/76 137/35 81/35 105/76 -f 137/35 175/35 182/35 81/35 -f 175/35 174/76 181/76 182/35 -f 174/76 149/76 105/76 181/76 -f 181/76 105/76 106/76 183/76 -f 182/35 181/76 183/76 184/35 -f 81/35 182/35 184/35 84/35 -f 183/76 106/76 99/76 180/76 -f 184/35 183/76 180/76 179/35 -f 84/35 184/35 179/35 87/35 -f 158/50 157/52 113/52 112/50 -f 157/52 143/18 75/18 113/52 -f 143/18 142/16 74/16 75/18 -f 159/51 158/50 112/50 111/51 -f 141/17 159/51 111/51 73/17 -f 215/68 216/70 192/7 191/8 -f 216/70 217/72 193/9 192/7 -f 191/8 192/7 195/83 194/84 -f 192/7 193/9 196/85 195/83 -f 194/84 195/83 198/11 197/10 -f 195/83 196/85 199/14 198/11 -f 197/10 198/11 212/57 213/61 -f 198/11 199/14 211/58 212/57 -f 203/17 204/16 207/19 206/20 -f 204/16 205/18 208/21 207/19 -f 206/20 207/19 186/22 185/23 -f 207/19 208/21 187/24 186/22 -f 213/66 214/65 194/37 197/38 -f 214/65 215/68 191/8 194/37 -f 220/50 219/52 205/18 204/16 -f 221/51 220/50 204/16 203/17 -f 203/30 206/31 222/56 221/55 -f 206/31 185/1 223/47 222/56 -f 187/5 208/25 226/53 225/49 -f 208/25 205/26 219/54 226/53 -f 265/68 266/70 242/7 241/8 -f 266/70 267/72 243/9 242/7 -f 241/8 242/7 245/83 244/84 -f 242/7 243/9 246/85 245/83 -f 244/84 245/83 248/11 247/10 -f 245/83 246/85 249/14 248/11 -f 247/10 248/11 262/57 263/61 -f 248/11 249/14 261/58 262/57 -f 253/17 254/16 257/19 256/20 -f 254/16 255/18 258/21 257/19 -f 256/20 257/19 236/22 235/23 -f 257/19 258/21 237/24 236/22 -f 285/74 286/76 287/35 288/36 -f 289/72 285/74 288/36 290/9 -f 263/66 264/65 244/37 247/38 -f 264/65 265/68 241/8 244/37 -f 253/30 256/31 272/56 271/55 -f 256/31 235/1 273/47 272/56 -f 235/1 236/2 274/48 273/47 -f 236/2 237/5 275/49 274/48 -f 237/5 258/25 276/53 275/49 -f 258/25 255/26 269/54 276/53 -f 268/74 261/76 286/76 285/74 -f 211/76 199/35 291/35 292/76 -f 249/35 246/36 288/36 287/35 -f 267/72 268/74 285/74 289/72 -f 246/36 243/9 290/9 288/36 -f 243/9 267/72 289/72 290/9 -f 261/76 249/35 193/35 217/76 -f 249/35 287/35 294/35 193/35 -f 287/35 286/76 293/76 294/35 -f 286/76 261/76 217/76 293/76 -f 293/76 217/76 218/76 295/76 -f 294/35 293/76 295/76 296/35 -f 193/35 294/35 296/35 196/35 -f 295/76 218/76 211/76 292/76 -f 296/35 295/76 292/76 291/35 -f 196/35 296/35 291/35 199/35 -f 270/50 269/52 225/52 224/50 -f 269/52 255/18 187/18 225/52 -f 255/18 254/16 186/16 187/18 -f 271/51 270/50 224/50 223/51 -f 253/17 271/51 223/51 185/17 -f 327/68 328/70 304/7 303/8 -f 328/70 329/72 305/9 304/7 -f 303/8 304/7 307/83 306/84 -f 304/7 305/9 308/85 307/83 -f 306/84 307/83 310/11 309/10 -f 307/83 308/85 311/14 310/11 -f 309/10 310/11 324/57 325/61 -f 310/11 311/14 323/58 324/57 -f 315/17 316/16 319/19 318/20 -f 316/16 317/18 320/21 319/19 -f 318/20 319/19 298/22 297/23 -f 319/19 320/21 299/24 298/22 -f 325/66 326/65 306/37 309/38 -f 326/65 327/68 303/8 306/37 -f 332/50 331/52 317/18 316/16 -f 333/51 332/50 316/16 315/17 -f 315/30 318/31 334/56 333/55 -f 318/31 297/1 335/47 334/56 -f 299/5 320/25 338/53 337/49 -f 320/25 317/26 331/54 338/53 -f 377/68 378/70 354/7 353/8 -f 378/70 379/72 355/9 354/7 -f 353/8 354/7 357/83 356/84 -f 354/7 355/9 358/85 357/83 -f 356/84 357/83 360/11 359/10 -f 357/83 358/85 361/14 360/11 -f 359/10 360/11 374/57 375/61 -f 360/11 361/14 373/58 374/57 -f 365/17 366/16 369/19 368/20 -f 366/16 367/18 370/21 369/19 -f 368/20 369/19 348/22 347/23 -f 369/19 370/21 349/24 348/22 -f 397/74 398/76 399/35 400/36 -f 401/72 397/74 400/36 402/9 -f 375/66 376/65 356/37 359/38 -f 376/65 377/68 353/8 356/37 -f 365/30 368/31 384/56 383/55 -f 368/31 347/1 385/47 384/56 -f 347/1 348/2 386/48 385/47 -f 348/2 349/5 387/49 386/48 -f 349/5 370/25 388/53 387/49 -f 370/25 367/26 381/54 388/53 -f 380/74 373/76 398/76 397/74 -f 323/76 311/35 403/35 404/76 -f 361/35 358/36 400/36 399/35 -f 379/72 380/74 397/74 401/72 -f 358/36 355/9 402/9 400/36 -f 355/9 379/72 401/72 402/9 -f 373/76 361/35 305/35 329/76 -f 361/35 399/35 406/35 305/35 -f 399/35 398/76 405/76 406/35 -f 398/76 373/76 329/76 405/76 -f 405/76 329/76 330/76 407/76 -f 406/35 405/76 407/76 408/35 -f 305/35 406/35 408/35 308/35 -f 407/76 330/76 323/76 404/76 -f 408/35 407/76 404/76 403/35 -f 308/35 408/35 403/35 311/35 -f 382/50 381/52 337/52 336/50 -f 381/52 367/18 299/18 337/52 -f 367/18 366/16 298/16 299/18 -f 383/51 382/50 336/50 335/51 -f 365/17 383/51 335/51 297/17 -f 903/86 904/87 564/88 565/89 -f 904/87 905/90 563/91 564/88 -f 905/90 906/92 562/93 563/91 -f 906/92 907/94 561/95 562/93 -f 476/96 477/97 420/98 419/10 -f 477/97 478/99 421/11 420/98 -f 479/100 480/101 423/14 422/102 -f 419/10 420/98 425/103 424/104 -f 420/98 421/11 426/105 425/103 -f 421/11 422/102 427/106 426/105 -f 422/102 423/14 428/107 427/106 -f 424/104 425/103 430/108 429/13 -f 425/103 426/105 431/12 430/108 -f 426/105 427/106 432/109 431/12 -f 427/106 428/107 433/15 432/109 -f 429/13 430/108 487/110 488/111 -f 430/108 431/12 486/112 487/110 -f 431/12 432/109 485/113 486/112 -f 432/109 433/15 484/114 485/113 -f 434/115 435/116 440/117 439/17 -f 435/116 436/118 441/16 440/117 -f 436/118 437/119 442/120 441/16 -f 437/119 438/121 443/18 442/120 -f 439/17 440/117 471/122 472/123 -f 440/117 441/16 470/124 471/122 -f 442/120 443/18 468/125 469/126 -f 570/127 571/128 897/129 898/130 -f 571/128 572/131 896/132 897/129 -f 572/131 573/133 895/134 896/132 -f 573/133 574/135 894/136 895/134 -f 468/137 443/26 438/138 467/139 -f 911/140 894/141 574/142 575/143 -f 483/41 484/144 433/27 466/42 -f 910/145 576/146 577/147 909/148 -f 481/149 466/42 433/27 428/150 -f 909/148 577/147 578/151 908/152 -f 481/149 428/150 423/35 480/153 -f 908/152 578/151 561/154 907/155 -f 439/30 472/156 473/157 434/158 -f 570/159 898/160 899/161 569/162 -f 488/163 489/164 474/165 429/33 -f 568/166 900/167 901/168 567/169 -f 429/33 474/165 475/170 424/171 -f 567/169 901/168 902/172 566/173 -f 424/171 475/170 476/174 419/38 -f 566/173 902/172 903/175 565/176 -f 482/45 542/177 543/178 456/46 -f 448/179 540/180 541/181 454/182 -f 539/183 540/184 448/185 447/186 -f 537/187 538/188 446/189 445/190 -f 536/191 537/187 445/190 444/192 -f 535/193 536/194 444/195 460/196 -f 533/197 534/198 490/199 462/200 -f 532/201 533/197 462/200 464/202 -f 531/203 532/201 464/202 414/34 -f 414/204 415/205 530/206 531/207 -f 415/205 416/208 529/209 530/206 -f 417/210 418/211 527/212 528/213 -f 458/214 544/215 527/216 418/29 -f 456/46 543/178 544/215 458/214 -f 911/140 575/143 995/217 996/218 -f 454/182 541/181 992/219 993/220 -f 467/139 438/138 989/221 990/222 -f 988/223 989/224 438/121 437/119 -f 987/225 988/223 437/119 436/118 -f 986/226 987/225 436/118 435/116 -f 985/227 986/226 435/116 434/115 -f 434/158 473/157 984/228 985/229 -f 981/230 982/231 535/193 460/196 -f 569/162 899/161 978/232 979/233 -f 492/234 491/235 480/101 479/100 -f 493/236 492/234 479/100 478/99 -f 494/237 493/236 478/99 477/97 -f 495/238 494/237 477/97 476/96 -f 476/174 475/170 496/239 495/240 -f 475/170 474/165 497/241 496/239 -f 474/165 489/164 498/242 497/241 -f 499/243 983/244 984/228 473/157 -f 473/157 472/156 500/245 499/243 -f 472/123 471/122 501/246 500/247 -f 471/122 470/124 502/248 501/246 -f 470/124 469/126 503/249 502/248 -f 469/126 468/125 504/250 503/249 -f 505/251 504/252 468/137 467/139 -f 991/253 505/251 467/139 990/222 -f 508/254 507/39 466/42 481/149 -f 491/255 508/254 481/149 480/153 -f 510/256 509/257 418/211 417/210 -f 511/258 510/256 417/210 416/208 -f 512/259 511/258 416/208 415/205 -f 513/260 512/259 415/205 414/204 -f 464/202 514/261 513/262 414/34 -f 462/200 515/263 514/261 464/202 -f 490/199 516/264 515/263 462/200 -f 460/196 517/265 980/266 981/230 -f 444/195 518/267 517/265 460/196 -f 444/192 445/190 519/268 518/269 -f 445/190 446/189 520/270 519/268 -f 446/189 447/186 521/271 520/270 -f 447/186 448/185 522/272 521/271 -f 523/273 522/274 448/179 454/182 -f 994/275 523/273 454/182 993/220 -f 526/276 525/43 456/46 458/214 -f 509/277 526/276 458/214 418/29 -f 528/213 527/212 491/235 492/234 -f 529/209 528/213 492/234 493/236 -f 530/206 529/209 493/236 494/237 -f 531/207 530/206 494/237 495/238 -f 495/240 496/239 532/201 531/203 -f 496/239 497/241 533/197 532/201 -f 497/241 498/242 534/198 533/197 -f 535/193 982/231 983/244 499/243 -f 499/243 500/245 536/194 535/193 -f 500/247 501/246 537/187 536/191 -f 501/246 502/248 538/188 537/187 -f 502/248 503/249 539/183 538/188 -f 503/249 504/250 540/184 539/183 -f 541/181 540/180 504/252 505/251 -f 992/219 541/181 505/251 991/253 -f 543/178 542/177 506/40 507/39 -f 544/215 543/178 507/39 508/254 -f 527/216 544/215 508/254 491/255 -f 478/99 479/100 554/100 553/99 -f 479/100 422/102 555/102 554/100 -f 422/102 421/11 556/11 555/102 -f 421/11 478/99 553/99 556/11 -f 416/208 417/210 558/210 557/208 -f 417/210 528/213 559/213 558/210 -f 528/213 529/209 560/209 559/213 -f 529/209 416/208 557/208 560/209 -f 553/99 554/100 142/100 141/99 -f 554/100 555/102 74/102 142/100 -f 555/102 556/11 73/11 74/102 -f 556/11 553/99 141/99 73/11 -f 557/208 558/210 254/210 253/208 -f 558/210 559/213 186/213 254/210 -f 559/213 560/209 185/209 186/213 -f 560/209 557/208 253/208 185/209 -f 562/93 561/95 509/257 510/256 -f 563/91 562/93 510/256 511/258 -f 564/88 563/91 511/258 512/259 -f 565/89 564/88 512/259 513/260 -f 514/261 566/173 565/176 513/262 -f 515/263 567/169 566/173 514/261 -f 516/264 568/166 567/169 515/263 -f 517/265 569/162 979/233 980/266 -f 518/267 570/159 569/162 517/265 -f 518/269 519/268 571/128 570/127 -f 519/268 520/270 572/131 571/128 -f 520/270 521/271 573/133 572/131 -f 521/271 522/272 574/135 573/133 -f 575/143 574/142 522/274 523/273 -f 995/217 575/143 523/273 994/275 -f 577/147 576/146 524/44 525/43 -f 578/151 577/147 525/43 526/276 -f 561/154 578/151 526/276 509/277 -f 441/16 442/120 580/120 579/16 -f 442/120 469/126 581/126 580/120 -f 469/126 470/124 582/124 581/126 -f 470/124 441/16 579/16 582/124 -f 538/188 539/183 584/183 583/188 -f 539/183 447/186 585/186 584/183 -f 447/186 446/189 586/189 585/186 -f 446/189 538/188 583/188 586/189 -f 579/16 580/120 366/120 365/16 -f 580/120 581/126 298/126 366/120 -f 581/126 582/124 297/124 298/126 -f 582/124 579/16 365/16 297/124 -f 583/188 584/183 588/183 587/188 -f 584/183 585/186 589/186 588/183 -f 585/186 586/189 590/189 589/186 -f 586/189 583/188 587/188 590/189 -f 592/278 591/279 452/280 451/19 -f 593/281 592/278 451/19 450/282 -f 594/283 593/281 450/282 449/20 -f 595/284 594/285 449/31 461/286 -f 958/287 595/284 461/286 -f 597/288 596/289 461/290 463/32 -f 598/291 597/288 463/32 465/292 -f 599/293 598/291 465/292 409/37 -f 409/84 410/294 600/295 599/296 -f 410/294 411/83 601/297 600/295 -f 412/298 413/85 603/299 602/300 -f 459/301 604/302 603/303 413/36 -f 457/28 605/304 604/302 459/301 -f 455/305 606/306 605/304 457/28 -f 455/305 607/307 1002/308 -f 453/25 608/309 607/307 455/305 -f 591/279 608/310 453/21 452/280 -f 628/311 627/312 35/313 34/314 -f 611/315 610/311 642/314 643/316 -f 612/317 611/318 643/319 644/320 -f 962/321 612/317 644/320 961/322 -f 614/323 613/324 645/325 646/326 -f 615/327 614/323 646/326 647/328 -f 616/329 615/327 647/328 648/330 -f 648/331 649/332 617/333 616/334 -f 649/332 650/335 618/336 617/333 -f 650/335 651/337 619/338 618/336 -f 651/337 652/339 620/340 619/338 -f 653/341 621/342 620/343 652/344 -f 654/345 622/346 621/342 653/341 -f 655/347 623/348 622/346 654/345 -f 656/349 624/350 998/351 999/352 -f 657/353 625/354 624/350 656/349 -f 626/355 625/356 657/357 658/358 -f 627/312 631/355 36/358 35/313 -f 610/311 609/312 627/312 628/311 -f 592/278 593/281 630/281 629/278 -f 641/314 633/311 635/311 59/314 -f 609/312 626/355 631/355 627/312 -f 637/355 659/358 10/359 640/355 -f 591/279 592/278 629/278 632/279 -f 642/314 610/311 811/311 812/314 -f 610/311 628/311 810/311 811/311 -f 628/311 34/314 809/314 810/311 -f 630/281 593/281 814/281 807/281 -f 626/355 658/358 802/358 803/355 -f 591/279 632/279 799/279 800/279 -f 36/358 631/355 804/355 805/358 -f 631/355 626/355 803/355 804/355 -f 33/360 36/358 805/358 -f 809/314 34/314 32/361 -f 815/361 641/314 59/314 57/361 -f 818/361 642/314 812/314 817/361 -f 643/316 642/314 818/361 819/362 -f 644/320 643/319 819/363 820/364 -f 961/322 644/320 820/364 960/365 -f 646/326 645/325 821/366 822/367 -f 647/328 646/326 822/367 823/368 -f 648/330 647/328 823/368 824/369 -f 824/370 825/371 649/332 648/331 -f 825/371 826/372 650/335 649/332 -f 826/372 827/373 651/337 650/335 -f 827/373 828/374 652/339 651/337 -f 829/375 653/341 652/344 828/376 -f 830/377 654/345 653/341 829/375 -f 831/378 655/347 654/345 830/377 -f 832/379 656/349 999/352 1000/380 -f 833/381 657/353 656/349 832/379 -f 658/358 657/357 833/382 834/360 -f 802/358 658/358 834/360 835/360 -f 10/359 659/358 837/360 -f 632/279 31/383 806/383 799/279 -f 30/384 31/383 632/279 629/278 -f 29/385 30/384 629/278 630/281 -f 808/385 29/385 630/281 807/281 -f 634/281 660/385 54/385 636/281 -f 593/281 661/385 813/385 814/281 -f 662/386 661/385 593/281 594/283 -f 663/387 662/388 594/285 595/284 -f 959/389 663/387 595/284 958/287 -f 665/390 664/391 596/289 597/288 -f 666/392 665/390 597/288 598/291 -f 667/393 666/392 598/291 599/293 -f 599/296 600/295 668/394 667/395 -f 600/295 601/297 669/396 668/394 -f 601/297 602/300 670/397 669/396 -f 602/300 603/299 671/398 670/397 -f 604/302 672/399 671/400 603/303 -f 605/304 673/401 672/399 604/302 -f 606/306 674/402 673/401 605/304 -f 607/307 675/403 1001/404 1002/308 -f 608/309 676/405 675/403 607/307 -f 677/383 676/406 608/310 591/279 -f 801/383 677/383 591/279 800/279 -f 9/383 678/383 638/279 639/279 -f 707/68 708/70 684/7 683/8 -f 708/70 709/72 685/9 684/7 -f 683/8 684/7 687/83 686/84 -f 684/7 685/9 688/85 687/83 -f 686/84 687/83 690/11 689/10 -f 687/83 688/85 691/14 690/11 -f 689/10 690/11 704/57 705/61 -f 690/11 691/14 703/58 704/57 -f 695/17 696/16 699/19 698/20 -f 696/16 697/18 700/21 699/19 -f 698/20 699/19 589/22 590/23 -f 699/19 700/21 679/24 589/22 -f 705/66 706/65 686/37 689/38 -f 706/65 707/68 683/8 686/37 -f 712/50 711/52 697/18 696/16 -f 713/51 712/50 696/16 695/17 -f 695/30 698/31 714/56 713/55 -f 698/31 590/1 715/47 714/56 -f 679/5 700/25 718/53 717/49 -f 700/25 697/26 711/54 718/53 -f 755/68 756/70 734/7 733/8 -f 756/70 757/72 735/9 734/7 -f 733/8 734/7 737/83 736/84 -f 734/7 735/9 738/85 737/83 -f 736/84 737/83 740/11 739/10 -f 737/83 738/85 741/14 740/11 -f 739/10 740/11 752/57 753/61 -f 740/11 741/14 751/58 752/57 -f 587/17 588/16 747/19 746/20 -f 588/16 745/18 748/21 747/19 -f 746/20 747/19 728/22 727/23 -f 747/19 748/21 729/24 728/22 -f 775/74 776/76 777/35 778/36 -f 779/72 775/74 778/36 780/9 -f 753/66 754/65 736/37 739/38 -f 754/65 755/68 733/8 736/37 -f 587/30 746/31 762/56 761/55 -f 746/31 727/1 763/47 762/56 -f 727/1 728/2 764/48 763/47 -f 728/2 729/5 765/49 764/48 -f 729/5 748/25 766/53 765/49 -f 748/25 745/26 759/54 766/53 -f 758/74 751/76 776/76 775/74 -f 703/76 691/35 781/35 782/76 -f 741/35 738/36 778/36 777/35 -f 757/72 758/74 775/74 779/72 -f 738/36 735/9 780/9 778/36 -f 735/9 757/72 779/72 780/9 -f 751/76 741/35 685/35 709/76 -f 741/35 777/35 784/35 685/35 -f 777/35 776/76 783/76 784/35 -f 776/76 751/76 709/76 783/76 -f 783/76 709/76 710/76 785/76 -f 784/35 783/76 785/76 786/35 -f 685/35 784/35 786/35 688/35 -f 785/76 710/76 703/76 782/76 -f 786/35 785/76 782/76 781/35 -f 688/35 786/35 781/35 691/35 -f 760/50 759/52 717/52 716/50 -f 759/52 745/18 679/18 717/52 -f 745/18 588/16 589/16 679/18 -f 761/51 760/50 716/50 715/51 -f 587/17 761/51 715/51 590/17 -f 849/383 788/383 787/279 848/279 -f 851/358 789/358 836/360 850/360 -f 790/355 789/358 851/358 845/355 -f 791/355 790/355 845/355 846/355 -f 7/359 791/355 846/355 11/358 -f 792/279 7/383 8/383 847/279 -f 787/279 792/279 847/279 848/279 -f 794/281 793/281 842/281 843/281 -f 55/385 56/385 794/281 843/281 -f 795/311 61/314 60/314 844/311 -f 796/311 795/311 844/311 838/311 -f 797/314 796/311 838/311 839/314 -f 816/361 797/314 839/314 840/361 -f 793/281 798/385 841/385 842/281 -f 800/279 799/279 792/279 787/279 -f 788/383 801/383 800/279 787/279 -f 789/358 802/358 835/360 836/360 -f 803/355 802/358 789/358 790/355 -f 804/355 803/355 790/355 791/355 -f 805/358 804/355 791/355 7/359 -f 33/360 805/358 7/359 -f 799/279 806/383 7/383 792/279 -f 56/385 808/385 807/281 794/281 -f 61/314 809/314 32/361 58/361 -f 810/311 809/314 61/314 795/311 -f 811/311 810/311 795/311 796/311 -f 812/314 811/311 796/311 797/314 -f 817/361 812/314 797/314 816/361 -f 814/281 813/385 798/385 793/281 -f 807/281 814/281 793/281 794/281 -f 806/383 33/360 7/359 -f 31/383 33/360 806/383 -f 32/361 29/385 808/385 -f 58/361 32/361 808/385 56/385 -f 660/385 815/361 57/361 54/385 -f 798/385 816/361 840/361 841/385 -f 813/385 817/361 816/361 798/385 -f 661/385 818/361 817/361 813/385 -f 819/362 818/361 661/385 662/386 -f 820/364 819/363 662/388 663/387 -f 960/365 820/364 663/387 959/389 -f 822/367 821/366 664/391 665/390 -f 823/368 822/367 665/390 666/392 -f 824/369 823/368 666/392 667/393 -f 667/395 668/394 825/371 824/370 -f 668/394 669/396 826/372 825/371 -f 669/396 670/397 827/373 826/372 -f 670/397 671/398 828/374 827/373 -f 672/399 829/375 828/376 671/400 -f 673/401 830/377 829/375 672/399 -f 674/402 831/378 830/377 673/401 -f 675/403 832/379 1000/380 1001/404 -f 676/405 833/381 832/379 675/403 -f 834/360 833/382 676/406 677/383 -f 835/360 834/360 677/383 801/383 -f 836/360 835/360 801/383 788/383 -f 850/360 836/360 788/383 849/383 -f 10/359 837/360 678/383 9/383 -f 839/314 838/311 633/311 641/314 -f 840/361 839/314 641/314 815/361 -f 841/385 840/361 815/361 660/385 -f 842/281 841/385 660/385 634/281 -f 843/281 842/281 634/281 636/281 -f 54/385 55/385 843/281 636/281 -f 844/311 60/314 59/314 635/311 -f 838/311 844/311 635/311 633/311 -f 846/355 845/355 637/355 640/355 -f 11/358 846/355 640/355 10/359 -f 847/279 8/383 9/383 639/279 -f 848/279 847/279 639/279 638/279 -f 678/383 849/383 848/279 638/279 -f 837/360 850/360 849/383 678/383 -f 659/358 851/358 850/360 837/360 -f 845/355 851/358 659/358 637/355 -f 877/407 876/408 625/356 626/355 -f 878/409 877/407 626/355 609/312 -f 879/410 878/409 609/312 610/311 -f 880/411 879/410 610/311 611/315 -f 881/412 880/413 611/318 612/317 -f 963/414 881/412 612/317 962/321 -f 883/415 882/416 613/324 614/323 -f 884/417 883/415 614/323 615/327 -f 885/418 884/417 615/327 616/329 -f 616/334 617/333 886/419 885/420 -f 617/333 618/336 887/421 886/419 -f 618/336 619/338 888/422 887/421 -f 619/338 620/340 889/423 888/422 -f 621/342 890/424 889/425 620/343 -f 622/346 891/426 890/424 621/342 -f 623/348 892/427 891/426 622/346 -f 624/350 893/428 997/429 998/351 -f 625/354 876/430 893/428 624/350 -f 895/134 894/136 876/408 877/407 -f 896/132 895/134 877/407 878/409 -f 897/129 896/132 878/409 879/410 -f 898/130 897/129 879/410 880/411 -f 899/161 898/160 880/413 881/412 -f 966/232 928/161 930/412 965/414 -f 916/168 913/167 915/416 917/415 -f 918/172 916/168 917/415 919/417 -f 903/175 902/172 884/417 885/418 -f 885/420 886/419 904/87 903/86 -f 886/419 887/421 905/90 904/87 -f 887/421 888/422 906/92 905/90 -f 888/422 889/423 907/94 906/92 -f 890/424 908/152 907/155 889/425 -f 891/426 909/148 908/152 890/424 -f 892/427 910/145 909/148 891/426 -f 893/428 911/140 996/218 997/429 -f 893/428 876/430 894/141 911/140 -f 978/232 899/161 912/161 977/232 -f 920/161 921/412 922/412 923/161 -f 881/412 963/414 964/414 914/412 -f 901/168 900/167 913/167 916/168 -f 882/416 883/415 917/415 915/416 -f 902/172 901/168 916/168 918/172 -f 883/415 884/417 919/417 917/415 -f 925/417 924/172 926/172 927/417 -f 899/161 881/412 921/412 920/161 -f 881/412 914/412 922/412 921/412 -f 914/412 912/161 923/161 922/412 -f 912/161 899/161 920/161 923/161 -f 884/417 902/172 924/172 925/417 -f 902/172 918/172 926/172 924/172 -f 918/172 919/417 927/417 926/172 -f 919/417 884/417 925/417 927/417 -f 975/232 932/161 934/161 974/232 -f 912/161 914/412 930/412 928/161 -f 914/412 964/414 965/414 930/412 -f 915/416 913/167 929/167 931/416 -f 977/232 912/161 954/161 976/232 -f 912/161 928/161 953/161 954/161 -f 944/161 969/232 970/232 950/161 -f 929/167 913/167 955/167 956/167 -f 928/161 966/232 967/232 936/161 -f 929/167 956/167 957/167 937/167 -f 974/232 934/161 939/161 973/232 -f 953/161 928/161 936/161 952/161 -f 936/161 967/232 968/232 940/161 -f 937/167 957/167 948/167 941/167 -f 973/232 939/161 943/161 972/232 -f 952/161 936/161 940/161 951/161 -f 940/161 968/232 969/232 944/161 -f 941/167 948/167 949/167 945/167 -f 972/232 943/161 947/161 971/232 -f 951/161 940/161 944/161 950/161 -f 948/167 942/167 946/167 949/167 -f 950/161 970/232 971/232 947/161 -f 943/161 951/161 950/161 947/161 -f 939/161 952/161 951/161 943/161 -f 934/161 953/161 952/161 939/161 -f 954/161 953/161 934/161 932/161 -f 976/232 954/161 932/161 975/232 -f 956/167 955/167 933/167 935/167 -f 957/167 956/167 935/167 938/167 -f 948/167 957/167 938/167 942/167 -f 596/289 958/287 461/286 -f 664/391 959/389 958/287 596/289 -f 821/366 960/365 959/389 664/391 -f 645/325 961/322 960/365 821/366 -f 613/324 962/321 961/322 645/325 -f 882/416 963/414 962/321 613/324 -f 964/414 963/414 882/416 915/416 -f 965/414 964/414 915/416 931/416 -f 929/167 966/232 965/414 931/416 -f 967/232 966/232 929/167 937/167 -f 968/232 967/232 937/167 941/167 -f 969/232 968/232 941/167 945/167 -f 970/232 969/232 945/167 949/167 -f 971/232 970/232 949/167 946/167 -f 942/167 972/232 971/232 946/167 -f 938/167 973/232 972/232 942/167 -f 935/167 974/232 973/232 938/167 -f 933/167 975/232 974/232 935/167 -f 955/167 976/232 975/232 933/167 -f 913/167 977/232 976/232 955/167 -f 900/167 978/232 977/232 913/167 -f 979/233 978/232 900/167 568/166 -f 980/266 979/233 568/166 516/264 -f 981/230 980/266 516/264 490/199 -f 490/199 534/198 982/231 981/230 -f 983/244 982/231 534/198 498/242 -f 984/228 983/244 498/242 489/164 -f 985/229 984/228 489/164 488/163 -f 488/111 487/110 986/226 985/227 -f 487/110 486/112 987/225 986/226 -f 486/112 485/113 988/223 987/225 -f 485/113 484/114 989/224 988/223 -f 990/222 989/221 484/144 483/41 -f 506/40 991/253 990/222 483/41 -f 542/177 992/219 991/253 506/40 -f 993/220 992/219 542/177 482/45 -f 524/44 994/275 993/220 482/45 -f 576/146 995/217 994/275 524/44 -f 996/218 995/217 576/146 910/145 -f 997/429 996/218 910/145 892/427 -f 998/351 997/429 892/427 623/348 -f 999/352 998/351 623/348 655/347 -f 1000/380 999/352 655/347 831/378 -f 1001/404 1000/380 831/378 674/402 -f 1002/308 1001/404 674/402 606/306 -f 455/305 1002/308 606/306 -f 1081/68 1084/8 1083/7 1082/70 -f 1082/70 1083/7 1086/9 1085/72 -f 1084/8 1088/84 1087/83 1083/7 -f 1083/7 1087/83 1089/85 1086/9 -f 1088/84 1091/10 1090/11 1087/83 -f 1087/83 1090/11 1092/14 1089/85 -f 1091/10 1094/61 1093/57 1090/11 -f 1090/11 1093/57 1095/58 1092/14 -f 1102/17 1105/20 1104/19 1103/16 -f 1103/16 1104/19 1107/21 1106/18 -f 1105/20 1109/23 1108/22 1104/19 -f 1104/19 1108/22 1110/24 1107/21 -f 1094/66 1091/38 1088/37 1115/65 -f 1115/65 1088/37 1084/8 1081/68 -f 1098/50 1103/16 1106/18 1101/52 -f 1099/51 1102/17 1103/16 1098/50 -f 1102/30 1099/55 1113/56 1105/31 -f 1105/31 1113/56 1075/47 1109/1 -f 1110/5 1079/49 1111/53 1107/25 -f 1107/25 1111/53 1101/54 1106/26 -f 1131/68 1134/8 1133/7 1132/70 -f 1132/70 1133/7 1136/9 1135/72 -f 1134/8 1138/84 1137/83 1133/7 -f 1133/7 1137/83 1139/85 1136/9 -f 1138/84 1141/10 1140/11 1137/83 -f 1137/83 1140/11 1142/14 1139/85 -f 1141/10 1144/61 1143/57 1140/11 -f 1140/11 1143/57 1145/58 1142/14 -f 1152/17 1155/20 1154/19 1153/16 -f 1153/16 1154/19 1157/21 1156/18 -f 1155/20 1159/23 1158/22 1154/19 -f 1154/19 1158/22 1160/24 1157/21 -f 1163/74 1166/36 1165/35 1164/76 -f 1167/72 1168/9 1166/36 1163/74 -f 1144/66 1141/38 1138/37 1171/65 -f 1171/65 1138/37 1134/8 1131/68 -f 1152/30 1149/55 1169/56 1155/31 -f 1155/31 1169/56 1125/47 1159/1 -f 1159/1 1125/47 1126/48 1158/2 -f 1158/2 1126/48 1129/49 1160/5 -f 1160/5 1129/49 1161/53 1157/25 -f 1157/25 1161/53 1151/54 1156/26 -f 1180/74 1163/74 1164/76 1145/76 -f 1095/76 1182/76 1181/35 1092/35 -f 1142/35 1165/35 1166/36 1139/36 -f 1135/72 1167/72 1163/74 1180/74 -f 1139/36 1166/36 1168/9 1136/9 -f 1136/9 1168/9 1167/72 1135/72 -f 1145/76 1085/76 1086/35 1142/35 -f 1142/35 1086/35 1183/35 1165/35 -f 1165/35 1183/35 1184/76 1164/76 -f 1164/76 1184/76 1085/76 1145/76 -f 1184/76 1185/76 1124/76 1085/76 -f 1183/35 1186/35 1185/76 1184/76 -f 1086/35 1089/35 1186/35 1183/35 -f 1185/76 1182/76 1095/76 1124/76 -f 1186/35 1181/35 1182/76 1185/76 -f 1089/35 1092/35 1181/35 1186/35 -f 1148/50 1076/50 1079/52 1151/52 -f 1151/52 1079/52 1110/18 1156/18 -f 1156/18 1110/18 1108/16 1153/16 -f 1149/51 1075/51 1076/50 1148/50 -f 1152/17 1109/17 1075/51 1149/51 -f 1193/68 1196/8 1195/7 1194/70 -f 1194/70 1195/7 1198/9 1197/72 -f 1196/8 1200/84 1199/83 1195/7 -f 1195/7 1199/83 1201/85 1198/9 -f 1200/84 1203/10 1202/11 1199/83 -f 1199/83 1202/11 1204/14 1201/85 -f 1203/10 1206/61 1205/57 1202/11 -f 1202/11 1205/57 1207/58 1204/14 -f 1214/17 1217/20 1216/19 1215/16 -f 1215/16 1216/19 1219/21 1218/18 -f 1217/20 1221/23 1220/22 1216/19 -f 1216/19 1220/22 1222/24 1219/21 -f 1206/66 1203/38 1200/37 1227/65 -f 1227/65 1200/37 1196/8 1193/68 -f 1210/50 1215/16 1218/18 1213/52 -f 1211/51 1214/17 1215/16 1210/50 -f 1214/30 1211/55 1225/56 1217/31 -f 1217/31 1225/56 1187/47 1221/1 -f 1222/5 1191/49 1223/53 1219/25 -f 1219/25 1223/53 1213/54 1218/26 -f 1243/68 1246/8 1245/7 1244/70 -f 1244/70 1245/7 1248/9 1247/72 -f 1246/8 1250/84 1249/83 1245/7 -f 1245/7 1249/83 1251/85 1248/9 -f 1250/84 1253/10 1252/11 1249/83 -f 1249/83 1252/11 1254/14 1251/85 -f 1253/10 1256/61 1255/57 1252/11 -f 1252/11 1255/57 1257/58 1254/14 -f 1264/17 1267/20 1266/19 1265/16 -f 1265/16 1266/19 1269/21 1268/18 -f 1267/20 1271/23 1270/22 1266/19 -f 1266/19 1270/22 1272/24 1269/21 -f 1275/74 1278/36 1277/35 1276/76 -f 1279/72 1280/9 1278/36 1275/74 -f 1256/66 1253/38 1250/37 1283/65 -f 1283/65 1250/37 1246/8 1243/68 -f 1264/30 1261/55 1281/56 1267/31 -f 1267/31 1281/56 1237/47 1271/1 -f 1271/1 1237/47 1238/48 1270/2 -f 1270/2 1238/48 1241/49 1272/5 -f 1272/5 1241/49 1273/53 1269/25 -f 1269/25 1273/53 1263/54 1268/26 -f 1292/74 1275/74 1276/76 1257/76 -f 1207/76 1294/76 1293/35 1204/35 -f 1254/35 1277/35 1278/36 1251/36 -f 1247/72 1279/72 1275/74 1292/74 -f 1251/36 1278/36 1280/9 1248/9 -f 1248/9 1280/9 1279/72 1247/72 -f 1257/76 1197/76 1198/35 1254/35 -f 1254/35 1198/35 1295/35 1277/35 -f 1277/35 1295/35 1296/76 1276/76 -f 1276/76 1296/76 1197/76 1257/76 -f 1296/76 1297/76 1236/76 1197/76 -f 1295/35 1298/35 1297/76 1296/76 -f 1198/35 1201/35 1298/35 1295/35 -f 1297/76 1294/76 1207/76 1236/76 -f 1298/35 1293/35 1294/76 1297/76 -f 1201/35 1204/35 1293/35 1298/35 -f 1260/50 1188/50 1191/52 1263/52 -f 1263/52 1191/52 1222/18 1268/18 -f 1268/18 1222/18 1220/16 1265/16 -f 1261/51 1187/51 1188/50 1260/50 -f 1264/17 1221/17 1187/51 1261/51 -f 1305/68 1308/8 1307/7 1306/70 -f 1306/70 1307/7 1310/9 1309/72 -f 1308/8 1312/84 1311/83 1307/7 -f 1307/7 1311/83 1313/85 1310/9 -f 1312/84 1315/10 1314/11 1311/83 -f 1311/83 1314/11 1316/14 1313/85 -f 1315/10 1318/61 1317/57 1314/11 -f 1314/11 1317/57 1319/58 1316/14 -f 1326/17 1329/20 1328/19 1327/16 -f 1327/16 1328/19 1331/21 1330/18 -f 1329/20 1333/23 1332/22 1328/19 -f 1328/19 1332/22 1334/24 1331/21 -f 1318/66 1315/38 1312/37 1339/65 -f 1339/65 1312/37 1308/8 1305/68 -f 1322/50 1327/16 1330/18 1325/52 -f 1323/51 1326/17 1327/16 1322/50 -f 1326/30 1323/55 1337/56 1329/31 -f 1329/31 1337/56 1299/47 1333/1 -f 1334/5 1303/49 1335/53 1331/25 -f 1331/25 1335/53 1325/54 1330/26 -f 1355/68 1358/8 1357/7 1356/70 -f 1356/70 1357/7 1360/9 1359/72 -f 1358/8 1362/84 1361/83 1357/7 -f 1357/7 1361/83 1363/85 1360/9 -f 1362/84 1365/10 1364/11 1361/83 -f 1361/83 1364/11 1366/14 1363/85 -f 1365/10 1368/61 1367/57 1364/11 -f 1364/11 1367/57 1369/58 1366/14 -f 1376/17 1379/20 1378/19 1377/16 -f 1377/16 1378/19 1381/21 1380/18 -f 1379/20 1383/23 1382/22 1378/19 -f 1378/19 1382/22 1384/24 1381/21 -f 1387/74 1390/36 1389/35 1388/76 -f 1391/72 1392/9 1390/36 1387/74 -f 1368/66 1365/38 1362/37 1395/65 -f 1395/65 1362/37 1358/8 1355/68 -f 1376/30 1373/55 1393/56 1379/31 -f 1379/31 1393/56 1349/47 1383/1 -f 1383/1 1349/47 1350/48 1382/2 -f 1382/2 1350/48 1353/49 1384/5 -f 1384/5 1353/49 1385/53 1381/25 -f 1381/25 1385/53 1375/54 1380/26 -f 1404/74 1387/74 1388/76 1369/76 -f 1319/76 1406/76 1405/35 1316/35 -f 1366/35 1389/35 1390/36 1363/36 -f 1359/72 1391/72 1387/74 1404/74 -f 1363/36 1390/36 1392/9 1360/9 -f 1360/9 1392/9 1391/72 1359/72 -f 1369/76 1309/76 1310/35 1366/35 -f 1366/35 1310/35 1407/35 1389/35 -f 1389/35 1407/35 1408/76 1388/76 -f 1388/76 1408/76 1309/76 1369/76 -f 1408/76 1409/76 1348/76 1309/76 -f 1407/35 1410/35 1409/76 1408/76 -f 1310/35 1313/35 1410/35 1407/35 -f 1409/76 1406/76 1319/76 1348/76 -f 1410/35 1405/35 1406/76 1409/76 -f 1313/35 1316/35 1405/35 1410/35 -f 1372/50 1300/50 1303/52 1375/52 -f 1375/52 1303/52 1334/18 1380/18 -f 1380/18 1334/18 1332/16 1377/16 -f 1373/51 1299/51 1300/50 1372/50 -f 1376/17 1333/17 1299/51 1373/51 -f 1411/86 1414/89 1413/88 1412/87 -f 1412/87 1413/88 1416/91 1415/90 -f 1415/90 1416/91 1418/93 1417/92 -f 1417/92 1418/93 1420/95 1419/94 -f 1421/96 1424/10 1423/98 1422/97 -f 1422/97 1423/98 1426/11 1425/99 -f 1427/100 1430/102 1429/14 1428/101 -f 1424/10 1432/104 1431/103 1423/98 -f 1423/98 1431/103 1433/105 1426/11 -f 1426/11 1433/105 1434/106 1430/102 -f 1430/102 1434/106 1435/107 1429/14 -f 1432/104 1437/13 1436/108 1431/103 -f 1431/103 1436/108 1438/12 1433/105 -f 1433/105 1438/12 1439/109 1434/106 -f 1434/106 1439/109 1440/15 1435/107 -f 1437/13 1442/111 1441/110 1436/108 -f 1436/108 1441/110 1443/112 1438/12 -f 1438/12 1443/112 1444/113 1439/109 -f 1439/109 1444/113 1445/114 1440/15 -f 1446/115 1449/17 1448/117 1447/116 -f 1447/116 1448/117 1451/16 1450/118 -f 1450/118 1451/16 1453/120 1452/119 -f 1452/119 1453/120 1455/18 1454/121 -f 1449/17 1457/123 1456/122 1448/117 -f 1448/117 1456/122 1458/124 1451/16 -f 1453/120 1460/126 1459/125 1455/18 -f 1461/127 1464/130 1463/129 1462/128 -f 1462/128 1463/129 1466/132 1465/131 -f 1465/131 1466/132 1468/134 1467/133 -f 1467/133 1468/134 1470/136 1469/135 -f 1459/137 1471/139 1454/138 1455/26 -f 1472/140 1473/143 1469/142 1470/141 -f 1474/41 1475/42 1440/27 1445/144 -f 1476/145 1479/148 1478/147 1477/146 -f 1480/149 1435/150 1440/27 1475/42 -f 1479/148 1482/152 1481/151 1478/147 -f 1480/149 1428/153 1429/35 1435/150 -f 1482/152 1419/155 1420/154 1481/151 -f 1449/30 1446/158 1483/157 1457/156 -f 1461/159 1485/162 1484/161 1464/160 -f 1442/163 1437/33 1487/165 1486/164 -f 1488/166 1491/169 1490/168 1489/167 -f 1437/33 1432/171 1492/170 1487/165 -f 1491/169 1494/173 1493/172 1490/168 -f 1432/171 1424/38 1421/174 1492/170 -f 1494/173 1414/176 1411/175 1493/172 -f 1495/45 1498/46 1497/178 1496/177 -f 1499/179 1502/182 1501/181 1500/180 -f 1503/183 1504/186 1499/185 1500/184 -f 1505/187 1508/190 1507/189 1506/188 -f 1509/191 1510/192 1508/190 1505/187 -f 1511/193 1512/196 1510/195 1509/194 -f 1513/197 1516/200 1515/199 1514/198 -f 1517/201 1518/202 1516/200 1513/197 -f 1519/203 1520/34 1518/202 1517/201 -f 1520/204 1519/207 1522/206 1521/205 -f 1521/205 1522/206 1524/209 1523/208 -f 1525/210 1528/213 1527/212 1526/211 -f 1529/214 1526/29 1527/216 1530/215 -f 1498/46 1529/214 1530/215 1497/178 -f 1472/140 1532/218 1531/217 1473/143 -f 1502/182 1534/220 1533/219 1501/181 -f 1471/139 1536/222 1535/221 1454/138 -f 1537/223 1452/119 1454/121 1535/224 -f 1538/225 1450/118 1452/119 1537/223 -f 1539/226 1447/116 1450/118 1538/225 -f 1540/227 1446/115 1447/116 1539/226 -f 1446/158 1540/229 1541/228 1483/157 -f 1542/230 1512/196 1511/193 1543/231 -f 1485/162 1545/233 1544/232 1484/161 -f 1546/234 1427/100 1428/101 1547/235 -f 1548/236 1425/99 1427/100 1546/234 -f 1549/237 1422/97 1425/99 1548/236 -f 1550/238 1421/96 1422/97 1549/237 -f 1421/174 1550/240 1551/239 1492/170 -f 1492/170 1551/239 1552/241 1487/165 -f 1487/165 1552/241 1553/242 1486/164 -f 1554/243 1483/157 1541/228 1555/244 -f 1483/157 1554/243 1556/245 1457/156 -f 1457/123 1556/247 1557/246 1456/122 -f 1456/122 1557/246 1558/248 1458/124 -f 1458/124 1558/248 1559/249 1460/126 -f 1460/126 1559/249 1560/250 1459/125 -f 1561/251 1471/139 1459/137 1560/252 -f 1562/253 1536/222 1471/139 1561/251 -f 1567/254 1480/149 1475/42 1568/39 -f 1547/255 1428/153 1480/149 1567/254 -f 1569/256 1525/210 1526/211 1570/257 -f 1571/258 1523/208 1525/210 1569/256 -f 1572/259 1521/205 1523/208 1571/258 -f 1573/260 1520/204 1521/205 1572/259 -f 1518/202 1520/34 1573/262 1574/261 -f 1516/200 1518/202 1574/261 1575/263 -f 1515/199 1516/200 1575/263 1576/264 -f 1512/196 1542/230 1578/266 1577/265 -f 1510/195 1512/196 1577/265 1579/267 -f 1510/192 1579/269 1580/268 1508/190 -f 1508/190 1580/268 1581/270 1507/189 -f 1507/189 1581/270 1582/271 1504/186 -f 1504/186 1582/271 1583/272 1499/185 -f 1584/273 1502/182 1499/179 1583/274 -f 1585/275 1534/220 1502/182 1584/273 -f 1590/276 1529/214 1498/46 1591/43 -f 1570/277 1526/29 1529/214 1590/276 -f 1528/213 1546/234 1547/235 1527/212 -f 1524/209 1548/236 1546/234 1528/213 -f 1522/206 1549/237 1548/236 1524/209 -f 1519/207 1550/238 1549/237 1522/206 -f 1550/240 1519/203 1517/201 1551/239 -f 1551/239 1517/201 1513/197 1552/241 -f 1552/241 1513/197 1514/198 1553/242 -f 1511/193 1554/243 1555/244 1543/231 -f 1554/243 1511/193 1509/194 1556/245 -f 1556/247 1509/191 1505/187 1557/246 -f 1557/246 1505/187 1506/188 1558/248 -f 1558/248 1506/188 1503/183 1559/249 -f 1559/249 1503/183 1500/184 1560/250 -f 1501/181 1561/251 1560/252 1500/180 -f 1533/219 1562/253 1561/251 1501/181 -f 1497/178 1568/39 1592/40 1496/177 -f 1530/215 1567/254 1568/39 1497/178 -f 1527/216 1547/255 1567/254 1530/215 -f 1425/99 1603/99 1602/100 1427/100 -f 1427/100 1602/100 1604/102 1430/102 -f 1430/102 1604/102 1605/11 1426/11 -f 1426/11 1605/11 1603/99 1425/99 -f 1523/208 1607/208 1606/210 1525/210 -f 1525/210 1606/210 1608/213 1528/213 -f 1528/213 1608/213 1609/209 1524/209 -f 1524/209 1609/209 1607/208 1523/208 -f 1603/99 1152/99 1153/100 1602/100 -f 1602/100 1153/100 1108/102 1604/102 -f 1604/102 1108/102 1109/11 1605/11 -f 1605/11 1109/11 1152/99 1603/99 -f 1607/208 1264/208 1265/210 1606/210 -f 1606/210 1265/210 1220/213 1608/213 -f 1608/213 1220/213 1221/209 1609/209 -f 1609/209 1221/209 1264/208 1607/208 -f 1418/93 1569/256 1570/257 1420/95 -f 1416/91 1571/258 1569/256 1418/93 -f 1413/88 1572/259 1571/258 1416/91 -f 1414/89 1573/260 1572/259 1413/88 -f 1574/261 1573/262 1414/176 1494/173 -f 1575/263 1574/261 1494/173 1491/169 -f 1576/264 1575/263 1491/169 1488/166 -f 1577/265 1578/266 1545/233 1485/162 -f 1579/267 1577/265 1485/162 1461/159 -f 1579/269 1461/127 1462/128 1580/268 -f 1580/268 1462/128 1465/131 1581/270 -f 1581/270 1465/131 1467/133 1582/271 -f 1582/271 1467/133 1469/135 1583/272 -f 1473/143 1584/273 1583/274 1469/142 -f 1531/217 1585/275 1584/273 1473/143 -f 1478/147 1591/43 1597/44 1477/146 -f 1481/151 1590/276 1591/43 1478/147 -f 1420/154 1570/277 1590/276 1481/151 -f 1451/16 1611/16 1610/120 1453/120 -f 1453/120 1610/120 1612/126 1460/126 -f 1460/126 1612/126 1613/124 1458/124 -f 1458/124 1613/124 1611/16 1451/16 -f 1506/188 1615/188 1614/183 1503/183 -f 1503/183 1614/183 1616/186 1504/186 -f 1504/186 1616/186 1617/189 1507/189 -f 1507/189 1617/189 1615/188 1506/188 -f 1611/16 1376/16 1377/120 1610/120 -f 1610/120 1377/120 1332/126 1612/126 -f 1612/126 1332/126 1333/124 1613/124 -f 1613/124 1333/124 1376/16 1611/16 -f 1615/188 1619/188 1618/183 1614/183 -f 1614/183 1618/183 1620/186 1616/186 -f 1616/186 1620/186 1621/189 1617/189 -f 1617/189 1621/189 1619/188 1615/188 -f 1622/278 451/19 452/280 1623/279 -f 1624/281 450/282 451/19 1622/278 -f 1625/283 449/20 450/282 1624/281 -f 1626/284 461/431 449/31 1625/285 -f 1627/287 461/431 1626/284 -f 1628/288 463/32 461/431 1629/289 -f 1630/291 465/292 463/32 1628/288 -f 1631/293 409/37 465/292 1630/291 -f 409/84 1631/296 1632/295 410/294 -f 410/294 1632/295 1633/297 411/83 -f 411/83 1633/297 1634/300 412/298 -f 412/298 1634/300 1635/299 413/85 -f 459/301 413/36 1635/303 1636/302 -f 457/28 459/301 1636/302 1637/304 -f 455/305 457/28 1637/304 1638/306 -f 455/305 1640/308 1639/307 -f 453/25 455/305 1639/307 1641/309 -f 1623/279 452/280 453/21 1641/310 -f 1642/311 1034/314 1035/313 1643/312 -f 1644/315 1647/316 1646/314 1645/311 -f 1648/317 1649/320 1647/319 1644/318 -f 1650/321 1651/322 1649/320 1648/317 -f 1652/323 1655/326 1654/325 1653/324 -f 1656/327 1657/328 1655/326 1652/323 -f 1658/329 1659/330 1657/328 1656/327 -f 1659/331 1658/334 1661/333 1660/332 -f 1660/332 1661/333 1663/336 1662/335 -f 1662/335 1663/336 1665/338 1664/337 -f 1664/337 1665/338 1667/340 1666/339 -f 1668/341 1666/344 1667/343 1669/342 -f 1670/345 1668/341 1669/342 1671/346 -f 1672/347 1670/345 1671/346 1673/348 -f 1674/349 1677/352 1676/351 1675/350 -f 1678/353 1674/349 1675/350 1679/354 -f 1680/355 1681/358 1678/357 1679/356 -f 1643/312 1035/313 1038/358 1682/355 -f 1645/311 1642/311 1643/312 1683/312 -f 1622/278 1685/278 1684/281 1624/281 -f 1686/314 1059/314 1688/311 1687/311 -f 1683/312 1643/312 1682/355 1680/355 -f 1689/355 1691/355 1015/359 1690/358 -f 1623/279 1692/279 1685/278 1622/278 -f 1646/314 1694/314 1693/311 1645/311 -f 1645/311 1693/311 1695/311 1642/311 -f 1642/311 1695/311 1696/314 1034/314 -f 1684/281 1698/281 1697/281 1624/281 -f 1680/355 1700/355 1699/358 1681/358 -f 1623/279 1702/279 1701/279 1692/279 -f 1038/358 1704/358 1703/355 1682/355 -f 1682/355 1703/355 1700/355 1680/355 -f 1047/360 1704/358 1038/358 -f 1696/314 1049/361 1034/314 -f 1705/361 1074/361 1059/314 1686/314 -f 1706/361 1707/361 1694/314 1646/314 -f 1647/316 1708/362 1706/361 1646/314 -f 1649/320 1709/364 1708/363 1647/319 -f 1651/322 1710/365 1709/364 1649/320 -f 1655/326 1712/367 1711/366 1654/325 -f 1657/328 1713/368 1712/367 1655/326 -f 1659/330 1714/369 1713/368 1657/328 -f 1714/370 1659/331 1660/332 1715/371 -f 1715/371 1660/332 1662/335 1716/372 -f 1716/372 1662/335 1664/337 1717/373 -f 1717/373 1664/337 1666/339 1718/374 -f 1719/375 1718/376 1666/344 1668/341 -f 1720/377 1719/375 1668/341 1670/345 -f 1721/378 1720/377 1670/345 1672/347 -f 1722/379 1723/380 1677/352 1674/349 -f 1724/381 1722/379 1674/349 1678/353 -f 1681/358 1725/360 1724/382 1678/357 -f 1699/358 1726/360 1725/360 1681/358 -f 1015/359 1727/360 1690/358 -f 1692/279 1701/279 1728/383 1033/383 -f 1031/384 1685/278 1692/279 1033/383 -f 1032/385 1684/281 1685/278 1031/384 -f 1729/385 1698/281 1684/281 1032/385 -f 1730/281 1732/281 1057/385 1731/385 -f 1624/281 1697/281 1734/385 1733/385 -f 1735/386 1625/283 1624/281 1733/385 -f 1736/387 1626/284 1625/285 1735/388 -f 1737/389 1627/287 1626/284 1736/387 -f 1738/390 1628/288 1629/289 1739/391 -f 1740/392 1630/291 1628/288 1738/390 -f 1741/393 1631/293 1630/291 1740/392 -f 1631/296 1741/395 1742/394 1632/295 -f 1632/295 1742/394 1743/396 1633/297 -f 1633/297 1743/396 1744/397 1634/300 -f 1634/300 1744/397 1745/398 1635/299 -f 1636/302 1635/303 1745/400 1746/399 -f 1637/304 1636/302 1746/399 1747/401 -f 1638/306 1637/304 1747/401 1748/402 -f 1639/307 1640/308 1750/404 1749/403 -f 1641/309 1639/307 1749/403 1751/405 -f 1752/383 1623/279 1641/310 1751/406 -f 1753/383 1702/279 1623/279 1752/383 -f 1011/383 1756/279 1755/279 1754/383 -f 1763/68 1766/8 1765/7 1764/70 -f 1764/70 1765/7 1768/9 1767/72 -f 1766/8 1770/84 1769/83 1765/7 -f 1765/7 1769/83 1771/85 1768/9 -f 1770/84 1773/10 1772/11 1769/83 -f 1769/83 1772/11 1774/14 1771/85 -f 1773/10 1776/61 1775/57 1772/11 -f 1772/11 1775/57 1777/58 1774/14 -f 1784/17 1787/20 1786/19 1785/16 -f 1785/16 1786/19 1789/21 1788/18 -f 1787/20 1621/23 1620/22 1786/19 -f 1786/19 1620/22 1790/24 1789/21 -f 1776/66 1773/38 1770/37 1795/65 -f 1795/65 1770/37 1766/8 1763/68 -f 1780/50 1785/16 1788/18 1783/52 -f 1781/51 1784/17 1785/16 1780/50 -f 1784/30 1781/55 1793/56 1787/31 -f 1787/31 1793/56 1757/47 1621/1 -f 1790/5 1761/49 1791/53 1789/25 -f 1789/25 1791/53 1783/54 1788/26 -f 1811/68 1814/8 1813/7 1812/70 -f 1812/70 1813/7 1816/9 1815/72 -f 1814/8 1818/84 1817/83 1813/7 -f 1813/7 1817/83 1819/85 1816/9 -f 1818/84 1821/10 1820/11 1817/83 -f 1817/83 1820/11 1822/14 1819/85 -f 1821/10 1824/61 1823/57 1820/11 -f 1820/11 1823/57 1825/58 1822/14 -f 1619/17 1833/20 1832/19 1618/16 -f 1618/16 1832/19 1835/21 1834/18 -f 1833/20 1837/23 1836/22 1832/19 -f 1832/19 1836/22 1838/24 1835/21 -f 1841/74 1844/36 1843/35 1842/76 -f 1845/72 1846/9 1844/36 1841/74 -f 1824/66 1821/38 1818/37 1849/65 -f 1849/65 1818/37 1814/8 1811/68 -f 1619/30 1829/55 1847/56 1833/31 -f 1833/31 1847/56 1805/47 1837/1 -f 1837/1 1805/47 1806/48 1836/2 -f 1836/2 1806/48 1809/49 1838/5 -f 1838/5 1809/49 1839/53 1835/25 -f 1835/25 1839/53 1831/54 1834/26 -f 1858/74 1841/74 1842/76 1825/76 -f 1777/76 1860/76 1859/35 1774/35 -f 1822/35 1843/35 1844/36 1819/36 -f 1815/72 1845/72 1841/74 1858/74 -f 1819/36 1844/36 1846/9 1816/9 -f 1816/9 1846/9 1845/72 1815/72 -f 1825/76 1767/76 1768/35 1822/35 -f 1822/35 1768/35 1861/35 1843/35 -f 1843/35 1861/35 1862/76 1842/76 -f 1842/76 1862/76 1767/76 1825/76 -f 1862/76 1863/76 1804/76 1767/76 -f 1861/35 1864/35 1863/76 1862/76 -f 1768/35 1771/35 1864/35 1861/35 -f 1863/76 1860/76 1777/76 1804/76 -f 1864/35 1859/35 1860/76 1863/76 -f 1771/35 1774/35 1859/35 1864/35 -f 1828/50 1758/50 1761/52 1831/52 -f 1831/52 1761/52 1790/18 1834/18 -f 1834/18 1790/18 1620/16 1618/16 -f 1829/51 1757/51 1758/50 1828/50 -f 1619/17 1621/17 1757/51 1829/51 -f 1865/383 1868/279 1867/279 1866/383 -f 1869/358 1872/360 1871/360 1870/358 -f 1873/355 1874/355 1869/358 1870/358 -f 1875/355 1876/355 1874/355 1873/355 -f 1010/359 1012/358 1876/355 1875/355 -f 1877/279 1878/279 1009/383 1010/383 -f 1867/279 1868/279 1878/279 1877/279 -f 1879/281 1882/281 1881/281 1880/281 -f 1056/385 1882/281 1879/281 1058/385 -f 1883/311 1884/311 1060/314 1063/314 -f 1885/311 1886/311 1884/311 1883/311 -f 1887/314 1888/314 1886/311 1885/311 -f 1889/361 1890/361 1888/314 1887/314 -f 1880/281 1881/281 1892/385 1891/385 -f 1702/279 1867/279 1877/279 1701/279 -f 1866/383 1867/279 1702/279 1753/383 -f 1870/358 1871/360 1726/360 1699/358 -f 1700/355 1873/355 1870/358 1699/358 -f 1703/355 1875/355 1873/355 1700/355 -f 1704/358 1010/359 1875/355 1703/355 -f 1047/360 1010/359 1704/358 -f 1701/279 1877/279 1010/383 1728/383 -f 1058/385 1879/281 1698/281 1729/385 -f 1063/314 1072/361 1049/361 1696/314 -f 1695/311 1883/311 1063/314 1696/314 -f 1693/311 1885/311 1883/311 1695/311 -f 1694/314 1887/314 1885/311 1693/311 -f 1707/361 1889/361 1887/314 1694/314 -f 1697/281 1880/281 1891/385 1734/385 -f 1698/281 1879/281 1880/281 1697/281 -f 1728/383 1010/383 1047/360 -f 1033/383 1728/383 1047/360 -f 1049/361 1729/385 1032/385 -f 1072/361 1058/385 1729/385 1049/361 -f 1731/385 1057/385 1074/361 1705/361 -f 1891/385 1892/385 1890/361 1889/361 -f 1734/385 1891/385 1889/361 1707/361 -f 1733/385 1734/385 1707/361 1706/361 -f 1708/362 1735/386 1733/385 1706/361 -f 1709/364 1736/387 1735/388 1708/363 -f 1710/365 1737/389 1736/387 1709/364 -f 1712/367 1738/390 1739/391 1711/366 -f 1713/368 1740/392 1738/390 1712/367 -f 1714/369 1741/393 1740/392 1713/368 -f 1741/395 1714/370 1715/371 1742/394 -f 1742/394 1715/371 1716/372 1743/396 -f 1743/396 1716/372 1717/373 1744/397 -f 1744/397 1717/373 1718/374 1745/398 -f 1746/399 1745/400 1718/376 1719/375 -f 1747/401 1746/399 1719/375 1720/377 -f 1748/402 1747/401 1720/377 1721/378 -f 1749/403 1750/404 1723/380 1722/379 -f 1751/405 1749/403 1722/379 1724/381 -f 1725/360 1752/383 1751/406 1724/382 -f 1726/360 1753/383 1752/383 1725/360 -f 1871/360 1866/383 1753/383 1726/360 -f 1872/360 1865/383 1866/383 1871/360 -f 1015/359 1011/383 1754/383 1727/360 -f 1888/314 1686/314 1687/311 1886/311 -f 1890/361 1705/361 1686/314 1888/314 -f 1892/385 1731/385 1705/361 1890/361 -f 1881/281 1730/281 1731/385 1892/385 -f 1882/281 1732/281 1730/281 1881/281 -f 1057/385 1732/281 1882/281 1056/385 -f 1884/311 1688/311 1059/314 1060/314 -f 1886/311 1687/311 1688/311 1884/311 -f 1876/355 1691/355 1689/355 1874/355 -f 1012/358 1015/359 1691/355 1876/355 -f 1878/279 1756/279 1011/383 1009/383 -f 1868/279 1755/279 1756/279 1878/279 -f 1754/383 1755/279 1868/279 1865/383 -f 1727/360 1754/383 1865/383 1872/360 -f 1690/358 1727/360 1872/360 1869/358 -f 1874/355 1689/355 1690/358 1869/358 -f 1909/407 1680/355 1679/356 1910/408 -f 1911/409 1683/312 1680/355 1909/407 -f 1912/410 1645/311 1683/312 1911/409 -f 1913/411 1644/315 1645/311 1912/410 -f 1914/412 1648/317 1644/318 1913/413 -f 1915/414 1650/321 1648/317 1914/412 -f 1916/415 1652/323 1653/324 1917/416 -f 1918/417 1656/327 1652/323 1916/415 -f 1919/418 1658/329 1656/327 1918/417 -f 1658/334 1919/420 1920/419 1661/333 -f 1661/333 1920/419 1921/421 1663/336 -f 1663/336 1921/421 1922/422 1665/338 -f 1665/338 1922/422 1923/423 1667/340 -f 1669/342 1667/343 1923/425 1924/424 -f 1671/346 1669/342 1924/424 1925/426 -f 1673/348 1671/346 1925/426 1926/427 -f 1675/350 1676/351 1928/429 1927/428 -f 1679/354 1675/350 1927/428 1910/430 -f 1468/134 1909/407 1910/408 1470/136 -f 1466/132 1911/409 1909/407 1468/134 -f 1463/129 1912/410 1911/409 1466/132 -f 1464/130 1913/411 1912/410 1463/129 -f 1484/161 1914/412 1913/413 1464/160 -f 1929/232 1932/414 1931/412 1930/161 -f 1933/168 1936/415 1935/416 1934/167 -f 1937/172 1938/417 1936/415 1933/168 -f 1411/175 1919/418 1918/417 1493/172 -f 1919/420 1411/86 1412/87 1920/419 -f 1920/419 1412/87 1415/90 1921/421 -f 1921/421 1415/90 1417/92 1922/422 -f 1922/422 1417/92 1419/94 1923/423 -f 1924/424 1923/425 1419/155 1482/152 -f 1925/426 1924/424 1482/152 1479/148 -f 1926/427 1925/426 1479/148 1476/145 -f 1927/428 1928/429 1532/218 1472/140 -f 1927/428 1472/140 1470/141 1910/430 -f 1544/232 1940/232 1939/161 1484/161 -f 1941/161 1944/161 1943/412 1942/412 -f 1914/412 1946/412 1945/414 1915/414 -f 1490/168 1933/168 1934/167 1489/167 -f 1917/416 1935/416 1936/415 1916/415 -f 1493/172 1937/172 1933/168 1490/168 -f 1916/415 1936/415 1938/417 1918/417 -f 1947/417 1950/417 1949/172 1948/172 -f 1484/161 1941/161 1942/412 1914/412 -f 1914/412 1942/412 1943/412 1946/412 -f 1946/412 1943/412 1944/161 1939/161 -f 1939/161 1944/161 1941/161 1484/161 -f 1918/417 1947/417 1948/172 1493/172 -f 1493/172 1948/172 1949/172 1937/172 -f 1937/172 1949/172 1950/417 1938/417 -f 1938/417 1950/417 1947/417 1918/417 -f 1951/232 1954/232 1953/161 1952/161 -f 1939/161 1930/161 1931/412 1946/412 -f 1946/412 1931/412 1932/414 1945/414 -f 1935/416 1956/416 1955/167 1934/167 -f 1940/232 1958/232 1957/161 1939/161 -f 1939/161 1957/161 1959/161 1930/161 -f 1960/161 1963/161 1962/232 1961/232 -f 1955/167 1965/167 1964/167 1934/167 -f 1930/161 1967/161 1966/232 1929/232 -f 1955/167 1969/167 1968/167 1965/167 -f 1954/232 1971/232 1970/161 1953/161 -f 1959/161 1972/161 1967/161 1930/161 -f 1967/161 1974/161 1973/232 1966/232 -f 1969/167 1976/167 1975/167 1968/167 -f 1971/232 1978/232 1977/161 1970/161 -f 1972/161 1979/161 1974/161 1967/161 -f 1974/161 1960/161 1961/232 1973/232 -f 1976/167 1981/167 1980/167 1975/167 -f 1978/232 1983/232 1982/161 1977/161 -f 1979/161 1963/161 1960/161 1974/161 -f 1975/167 1980/167 1985/167 1984/167 -f 1963/161 1982/161 1983/232 1962/232 -f 1977/161 1982/161 1963/161 1979/161 -f 1970/161 1977/161 1979/161 1972/161 -f 1953/161 1970/161 1972/161 1959/161 -f 1957/161 1952/161 1953/161 1959/161 -f 1958/232 1951/232 1952/161 1957/161 -f 1965/167 1987/167 1986/167 1964/167 -f 1968/167 1988/167 1987/167 1965/167 -f 1975/167 1984/167 1988/167 1968/167 -f 1629/289 461/431 1627/287 -f 1739/391 1629/289 1627/287 1737/389 -f 1711/366 1739/391 1737/389 1710/365 -f 1654/325 1711/366 1710/365 1651/322 -f 1653/324 1654/325 1651/322 1650/321 -f 1917/416 1653/324 1650/321 1915/414 -f 1945/414 1935/416 1917/416 1915/414 -f 1932/414 1956/416 1935/416 1945/414 -f 1955/167 1956/416 1932/414 1929/232 -f 1966/232 1969/167 1955/167 1929/232 -f 1973/232 1976/167 1969/167 1966/232 -f 1961/232 1981/167 1976/167 1973/232 -f 1962/232 1980/167 1981/167 1961/232 -f 1983/232 1985/167 1980/167 1962/232 -f 1984/167 1985/167 1983/232 1978/232 -f 1988/167 1984/167 1978/232 1971/232 -f 1987/167 1988/167 1971/232 1954/232 -f 1986/167 1987/167 1954/232 1951/232 -f 1964/167 1986/167 1951/232 1958/232 -f 1934/167 1964/167 1958/232 1940/232 -f 1489/167 1934/167 1940/232 1544/232 -f 1545/233 1488/166 1489/167 1544/232 -f 1578/266 1576/264 1488/166 1545/233 -f 1542/230 1515/199 1576/264 1578/266 -f 1515/199 1542/230 1543/231 1514/198 -f 1555/244 1553/242 1514/198 1543/231 -f 1541/228 1486/164 1553/242 1555/244 -f 1540/229 1442/163 1486/164 1541/228 -f 1442/111 1540/227 1539/226 1441/110 -f 1441/110 1539/226 1538/225 1443/112 -f 1443/112 1538/225 1537/223 1444/113 -f 1444/113 1537/223 1535/224 1445/114 -f 1536/222 1474/41 1445/144 1535/221 -f 1592/40 1474/41 1536/222 1562/253 -f 1496/177 1592/40 1562/253 1533/219 -f 1534/220 1495/45 1496/177 1533/219 -f 1597/44 1495/45 1534/220 1585/275 -f 1477/146 1597/44 1585/275 1531/217 -f 1532/218 1476/145 1477/146 1531/217 -f 1928/429 1926/427 1476/145 1532/218 -f 1676/351 1673/348 1926/427 1928/429 -f 1677/352 1672/347 1673/348 1676/351 -f 1723/380 1721/378 1672/347 1677/352 -f 1750/404 1748/402 1721/378 1723/380 -f 1640/308 1638/306 1748/402 1750/404 -f 455/305 1638/306 1640/308 -f 411/83 412/298 1990/298 1989/83 -f 412/298 602/300 1991/300 1990/298 -f 602/300 601/297 1992/297 1991/300 -f 601/297 411/83 1989/83 1992/297 -f 1989/83 1990/298 1994/298 1993/83 -f 1990/298 1991/300 1995/300 1994/298 -f 1991/300 1992/297 1996/297 1995/300 -f 1992/297 1989/83 1993/83 1996/297 -f 1997/2 1998/5 2305/432 2306/433 -f 1999/3 2000/6 2002/9 2001/7 -f 2004/11 2005/14 2007/15 2006/12 -f 2310/434 2311/435 2009/18 2008/16 -f 2010/25 2009/26 2311/436 2304/437 -f 1998/5 2010/25 2304/437 2305/432 -f 2011/28 2007/27 2005/35 2003/36 -f 2000/6 2011/28 2003/36 2002/9 -f 2001/7 2002/9 2012/9 -f 2002/9 2003/85 2013/85 2012/9 -f 2003/85 2005/14 2014/14 2013/85 -f 2005/14 2004/11 2014/14 -f 2001/7 2012/9 2016/9 2015/7 -f 2012/9 2013/85 2017/85 2016/9 -f 2013/85 2014/14 2018/14 2017/85 -f 2014/14 2004/11 2019/11 2018/14 -f 2016/9 2017/85 2022/85 2021/9 -f 2017/85 2018/14 2023/14 2022/85 -f 2031/9 2032/85 2033/85 2034/9 -f 2032/85 2035/14 2036/14 2033/85 -f 2021/9 2022/85 2032/85 2031/9 -f 2027/85 2026/9 2034/9 2033/85 -f 2038/9 2037/9 2039/9 2040/9 -f 2022/85 2023/14 2035/14 2032/85 -f 2041/14 2042/14 2043/14 2044/14 -f 2029/14 2027/85 2033/85 2036/14 -f 2026/9 2021/9 2051/9 2052/9 -f 2021/9 2031/9 2050/9 2051/9 -f 2109/9 2110/9 2111/9 2112/9 -f 2034/9 2026/9 2052/9 2049/9 -f 2023/14 2029/14 2054/14 2055/14 -f 2029/14 2036/14 2053/14 2054/14 -f 2114/14 2113/14 2115/14 2116/14 -f 2035/14 2023/14 2055/14 2056/14 -f 2046/9 2045/9 2039/9 2037/9 -f 2047/9 2046/9 2037/9 2038/9 -f 2048/9 2047/9 2038/9 2040/9 -f 2118/9 2117/9 2119/9 2120/9 -f 2050/9 2049/9 2048/9 2045/9 -f 2051/9 2050/9 2045/9 2046/9 -f 2052/9 2051/9 2046/9 2047/9 -f 2049/9 2052/9 2047/9 2048/9 -f 2054/14 2053/14 2057/14 2058/14 -f 2055/14 2054/14 2058/14 2059/14 -f 2056/14 2055/14 2059/14 2060/14 -f 2053/14 2056/14 2060/14 2057/14 -f 2058/14 2057/14 2043/14 2042/14 -f 2059/14 2058/14 2042/14 2041/14 -f 2060/14 2059/14 2041/14 2044/14 -f 2122/14 2121/14 2123/14 2124/14 -f 2031/9 2034/9 2062/9 2061/9 -f 2034/9 2049/9 2063/9 2062/9 -f 2049/9 2050/9 2064/9 2063/9 -f 2050/9 2031/9 2061/9 2064/9 -f 2036/14 2035/14 2065/14 2066/14 -f 2035/14 2056/14 2067/14 2065/14 -f 2056/14 2053/14 2068/14 2067/14 -f 2053/14 2036/14 2066/14 2068/14 -f 2045/9 2048/9 2069/9 2070/9 -f 2048/9 2040/9 2071/9 2069/9 -f 2040/9 2039/9 2072/9 2071/9 -f 2039/9 2045/9 2070/9 2072/9 -f 2057/14 2060/14 2073/14 2074/14 -f 2060/14 2044/14 2075/14 2073/14 -f 2044/14 2043/14 2076/14 2075/14 -f 2043/14 2057/14 2074/14 2076/14 -f 2061/9 2062/9 2078/9 2077/9 -f 2063/9 2064/9 2080/9 2079/9 -f 2142/9 2141/9 2143/9 2144/9 -f 2066/14 2065/14 2081/14 2082/14 -f 2145/14 2146/14 2147/14 2148/14 -f 2067/14 2068/14 2084/14 2083/14 -f 2070/9 2069/9 2085/9 2086/9 -f 2071/9 2072/9 2088/9 2087/9 -f 2150/9 2149/9 2151/9 2152/9 -f 2074/14 2073/14 2089/14 2090/14 -f 2153/14 2154/14 2155/14 2156/14 -f 2075/14 2076/14 2092/14 2091/14 -f 2077/9 2078/9 2094/9 2093/9 -f 2078/9 2079/9 2095/9 2094/9 -f 2079/9 2080/9 2096/9 2095/9 -f 2080/9 2077/9 2093/9 2096/9 -f 2082/14 2081/14 2097/14 2098/14 -f 2081/14 2083/14 2099/14 2097/14 -f 2083/14 2084/14 2100/14 2099/14 -f 2084/14 2082/14 2098/14 2100/14 -f 2086/9 2085/9 2101/9 2102/9 -f 2085/9 2087/9 2103/9 2101/9 -f 2087/9 2088/9 2104/9 2103/9 -f 2088/9 2086/9 2102/9 2104/9 -f 2090/14 2089/14 2105/14 2106/14 -f 2089/14 2091/14 2107/14 2105/14 -f 2091/14 2092/14 2108/14 2107/14 -f 2092/14 2090/14 2106/14 2108/14 -f 2093/9 2094/9 2110/9 2109/9 -f 2094/9 2095/9 2111/9 2110/9 -f 2095/9 2096/9 2112/9 2111/9 -f 2096/9 2093/9 2109/9 2112/9 -f 2098/14 2097/14 2113/14 2114/14 -f 2097/14 2099/14 2115/14 2113/14 -f 2099/14 2100/14 2116/14 2115/14 -f 2100/14 2098/14 2114/14 2116/14 -f 2102/9 2101/9 2117/9 2118/9 -f 2101/9 2103/9 2119/9 2117/9 -f 2103/9 2104/9 2120/9 2119/9 -f 2104/9 2102/9 2118/9 2120/9 -f 2106/14 2105/14 2121/14 2122/14 -f 2105/14 2107/14 2123/14 2121/14 -f 2107/14 2108/14 2124/14 2123/14 -f 2108/14 2106/14 2122/14 2124/14 -f 2064/9 2061/9 2125/9 2126/9 -f 2061/9 2077/9 2127/9 2125/9 -f 2077/9 2080/9 2128/9 2127/9 -f 2080/9 2064/9 2126/9 2128/9 -f 2065/14 2067/14 2130/14 2129/14 -f 2067/14 2083/14 2131/14 2130/14 -f 2083/14 2081/14 2132/14 2131/14 -f 2081/14 2065/14 2129/14 2132/14 -f 2072/9 2070/9 2133/9 2134/9 -f 2070/9 2086/9 2135/9 2133/9 -f 2086/9 2088/9 2136/9 2135/9 -f 2088/9 2072/9 2134/9 2136/9 -f 2073/14 2075/14 2138/14 2137/14 -f 2075/14 2091/14 2139/14 2138/14 -f 2091/14 2089/14 2140/14 2139/14 -f 2089/14 2073/14 2137/14 2140/14 -f 2126/9 2125/9 2141/9 2142/9 -f 2125/9 2127/9 2143/9 2141/9 -f 2127/9 2128/9 2144/9 2143/9 -f 2128/9 2126/9 2142/9 2144/9 -f 2129/14 2130/14 2146/14 2145/14 -f 2130/14 2131/14 2147/14 2146/14 -f 2131/14 2132/14 2148/14 2147/14 -f 2132/14 2129/14 2145/14 2148/14 -f 2134/9 2133/9 2149/9 2150/9 -f 2133/9 2135/9 2151/9 2149/9 -f 2135/9 2136/9 2152/9 2151/9 -f 2136/9 2134/9 2150/9 2152/9 -f 2137/14 2138/14 2154/14 2153/14 -f 2138/14 2139/14 2155/14 2154/14 -f 2139/14 2140/14 2156/14 2155/14 -f 2140/14 2137/14 2153/14 2156/14 -f 1997/2 2306/433 2307/432 2157/5 -f 1999/3 2001/7 2159/9 2158/6 -f 2004/11 2006/12 2164/15 2163/14 -f 2310/434 2008/16 2165/18 2309/435 -f 2166/25 2308/437 2309/436 2165/26 -f 2157/5 2307/432 2308/437 2166/25 -f 2167/28 2168/36 2163/35 2164/27 -f 2158/6 2159/9 2168/36 2167/28 -f 2001/7 2169/9 2159/9 -f 2159/9 2169/9 2170/85 2168/85 -f 2168/85 2170/85 2171/14 2163/14 -f 2163/14 2171/14 2004/11 -f 2001/7 2015/7 2172/9 2169/9 -f 2169/9 2172/9 2173/85 2170/85 -f 2170/85 2173/85 2174/14 2171/14 -f 2171/14 2174/14 2019/11 2004/11 -f 2172/9 2175/9 2176/85 2173/85 -f 2173/85 2176/85 2177/14 2174/14 -f 2178/9 2181/9 2180/85 2179/85 -f 2179/85 2180/85 2183/14 2182/14 -f 2175/9 2178/9 2179/85 2176/85 -f 2161/85 2180/85 2181/9 2160/9 -f 2184/9 2187/9 2186/9 2185/9 -f 2176/85 2179/85 2182/14 2177/14 -f 2188/14 2191/14 2190/14 2189/14 -f 2162/14 2183/14 2180/85 2161/85 -f 2160/9 2193/9 2192/9 2175/9 -f 2175/9 2192/9 2194/9 2178/9 -f 2195/9 2198/9 2197/9 2196/9 -f 2181/9 2199/9 2193/9 2160/9 -f 2177/14 2201/14 2200/14 2162/14 -f 2162/14 2200/14 2202/14 2183/14 -f 2203/14 2206/14 2205/14 2204/14 -f 2182/14 2207/14 2201/14 2177/14 -f 2208/9 2185/9 2186/9 2209/9 -f 2210/9 2184/9 2185/9 2208/9 -f 2211/9 2187/9 2184/9 2210/9 -f 2212/9 2215/9 2214/9 2213/9 -f 2194/9 2209/9 2211/9 2199/9 -f 2192/9 2208/9 2209/9 2194/9 -f 2193/9 2210/9 2208/9 2192/9 -f 2199/9 2211/9 2210/9 2193/9 -f 2200/14 2217/14 2216/14 2202/14 -f 2201/14 2218/14 2217/14 2200/14 -f 2207/14 2219/14 2218/14 2201/14 -f 2202/14 2216/14 2219/14 2207/14 -f 2217/14 2189/14 2190/14 2216/14 -f 2218/14 2188/14 2189/14 2217/14 -f 2219/14 2191/14 2188/14 2218/14 -f 2220/14 2223/14 2222/14 2221/14 -f 2178/9 2225/9 2224/9 2181/9 -f 2181/9 2224/9 2226/9 2199/9 -f 2199/9 2226/9 2227/9 2194/9 -f 2194/9 2227/9 2225/9 2178/9 -f 2183/14 2229/14 2228/14 2182/14 -f 2182/14 2228/14 2230/14 2207/14 -f 2207/14 2230/14 2231/14 2202/14 -f 2202/14 2231/14 2229/14 2183/14 -f 2209/9 2233/9 2232/9 2211/9 -f 2211/9 2232/9 2234/9 2187/9 -f 2187/9 2234/9 2235/9 2186/9 -f 2186/9 2235/9 2233/9 2209/9 -f 2216/14 2237/14 2236/14 2219/14 -f 2219/14 2236/14 2238/14 2191/14 -f 2191/14 2238/14 2239/14 2190/14 -f 2190/14 2239/14 2237/14 2216/14 -f 2225/9 2241/9 2240/9 2224/9 -f 2226/9 2242/9 2243/9 2227/9 -f 2244/9 2247/9 2246/9 2245/9 -f 2229/14 2249/14 2248/14 2228/14 -f 2250/14 2253/14 2252/14 2251/14 -f 2230/14 2255/14 2254/14 2231/14 -f 2233/9 2257/9 2256/9 2232/9 -f 2234/9 2258/9 2259/9 2235/9 -f 2260/9 2263/9 2262/9 2261/9 -f 2237/14 2265/14 2264/14 2236/14 -f 2266/14 2269/14 2268/14 2267/14 -f 2238/14 2271/14 2270/14 2239/14 -f 2241/9 2273/9 2272/9 2240/9 -f 2240/9 2272/9 2274/9 2242/9 -f 2242/9 2274/9 2275/9 2243/9 -f 2243/9 2275/9 2273/9 2241/9 -f 2249/14 2277/14 2276/14 2248/14 -f 2248/14 2276/14 2278/14 2255/14 -f 2255/14 2278/14 2279/14 2254/14 -f 2254/14 2279/14 2277/14 2249/14 -f 2257/9 2281/9 2280/9 2256/9 -f 2256/9 2280/9 2282/9 2258/9 -f 2258/9 2282/9 2283/9 2259/9 -f 2259/9 2283/9 2281/9 2257/9 -f 2265/14 2285/14 2284/14 2264/14 -f 2264/14 2284/14 2286/14 2271/14 -f 2271/14 2286/14 2287/14 2270/14 -f 2270/14 2287/14 2285/14 2265/14 -f 2273/9 2195/9 2196/9 2272/9 -f 2272/9 2196/9 2197/9 2274/9 -f 2274/9 2197/9 2198/9 2275/9 -f 2275/9 2198/9 2195/9 2273/9 -f 2277/14 2203/14 2204/14 2276/14 -f 2276/14 2204/14 2205/14 2278/14 -f 2278/14 2205/14 2206/14 2279/14 -f 2279/14 2206/14 2203/14 2277/14 -f 2281/9 2212/9 2213/9 2280/9 -f 2280/9 2213/9 2214/9 2282/9 -f 2282/9 2214/9 2215/9 2283/9 -f 2283/9 2215/9 2212/9 2281/9 -f 2285/14 2220/14 2221/14 2284/14 -f 2284/14 2221/14 2222/14 2286/14 -f 2286/14 2222/14 2223/14 2287/14 -f 2287/14 2223/14 2220/14 2285/14 -f 2227/9 2289/9 2288/9 2225/9 -f 2225/9 2288/9 2290/9 2241/9 -f 2241/9 2290/9 2291/9 2243/9 -f 2243/9 2291/9 2289/9 2227/9 -f 2228/14 2293/14 2292/14 2230/14 -f 2230/14 2292/14 2294/14 2255/14 -f 2255/14 2294/14 2295/14 2248/14 -f 2248/14 2295/14 2293/14 2228/14 -f 2235/9 2297/9 2296/9 2233/9 -f 2233/9 2296/9 2298/9 2257/9 -f 2257/9 2298/9 2299/9 2259/9 -f 2259/9 2299/9 2297/9 2235/9 -f 2236/14 2301/14 2300/14 2238/14 -f 2238/14 2300/14 2302/14 2271/14 -f 2271/14 2302/14 2303/14 2264/14 -f 2264/14 2303/14 2301/14 2236/14 -f 2289/9 2244/9 2245/9 2288/9 -f 2288/9 2245/9 2246/9 2290/9 -f 2290/9 2246/9 2247/9 2291/9 -f 2291/9 2247/9 2244/9 2289/9 -f 2293/14 2250/14 2251/14 2292/14 -f 2292/14 2251/14 2252/14 2294/14 -f 2294/14 2252/14 2253/14 2295/14 -f 2295/14 2253/14 2250/14 2293/14 -f 2297/9 2260/9 2261/9 2296/9 -f 2296/9 2261/9 2262/9 2298/9 -f 2298/9 2262/9 2263/9 2299/9 -f 2299/9 2263/9 2260/9 2297/9 -f 2301/14 2266/14 2267/14 2300/14 -f 2300/14 2267/14 2268/14 2302/14 -f 2302/14 2268/14 2269/14 2303/14 -f 2303/14 2269/14 2266/14 2301/14 -f 2305/432 2304/437 3278/438 3279/439 -f 2306/433 2305/432 3279/439 3280/440 -f 2307/432 2306/433 3280/440 3281/439 -f 2308/437 2307/432 3281/439 3282/438 -f 2309/436 2308/437 3282/438 3283/441 -f 3284/442 2310/434 2309/435 3283/443 -f 3284/442 3285/443 2311/435 2310/434 -f 2304/437 2311/436 3285/441 3278/438 -f 2313/82 2312/81 2318/81 2319/82 -f 2314/77 2313/82 2319/82 2320/77 -f 2315/78 2314/77 2320/77 2321/78 -f 2316/444 2315/78 2321/78 2322/444 -f 2317/79 2316/444 2322/444 2323/79 -f 2319/82 2318/81 2324/81 2325/82 -f 2320/77 2319/82 2325/82 2326/77 -f 2321/78 2320/77 2326/77 2327/78 -f 2322/444 2321/78 2327/78 2328/444 -f 2323/79 2322/444 2328/444 2329/79 -f 2325/82 2324/81 2330/81 2331/82 -f 2326/77 2325/82 2331/82 2332/77 -f 2361/78 2360/77 2362/77 2363/78 -f 2328/444 2327/78 2333/78 2334/444 -f 2329/79 2328/444 2334/444 2335/79 -f 2331/82 2330/81 2364/81 2365/82 -f 2327/78 2326/77 2348/77 2349/78 -f 2326/77 2332/77 2350/77 2348/77 -f 2332/77 2333/78 2351/78 2350/77 -f 2333/78 2327/78 2349/78 2351/78 -f 2349/78 2348/77 2352/77 2353/78 -f 2348/77 2350/77 2354/77 2352/77 -f 2350/77 2351/78 2355/78 2354/77 -f 2351/78 2349/78 2353/78 2355/78 -f 2353/78 2352/77 2356/77 2357/78 -f 2352/77 2354/77 2358/77 2356/77 -f 2354/77 2355/78 2359/78 2358/77 -f 2355/78 2353/78 2357/78 2359/78 -f 2357/78 2356/77 2360/77 2361/78 -f 2358/77 2359/78 2363/78 2362/77 -f 2399/78 2398/77 2400/77 2401/78 -f 2391/78 2390/77 2394/77 2395/78 -f 2390/77 2344/77 2396/77 2394/77 -f 2344/77 2345/78 2397/78 2396/77 -f 2345/78 2391/78 2395/78 2397/78 -f 2395/78 2394/77 2417/77 2418/78 -f 2394/77 2396/77 2416/77 2417/77 -f 2396/77 2397/78 2415/78 2416/77 -f 2397/78 2395/78 2418/78 2415/78 -f 2416/77 2415/78 2420/78 2421/77 -f 2417/77 2416/77 2421/77 2422/77 -f 2418/78 2417/77 2422/77 2419/78 -f 2415/78 2418/78 2419/78 2420/78 -f 2421/77 2420/78 2401/78 2400/77 -f 2419/78 2422/77 2398/77 2399/78 -f 2427/82 2428/82 2318/81 2312/81 -f 2429/77 2430/77 2428/82 2427/82 -f 2431/78 2432/78 2430/77 2429/77 -f 2433/444 2434/444 2432/78 2431/78 -f 2317/79 2323/79 2434/444 2433/444 -f 2428/82 2435/82 2324/81 2318/81 -f 2430/77 2436/77 2435/82 2428/82 -f 2432/78 2437/78 2436/77 2430/77 -f 2434/444 2438/444 2437/78 2432/78 -f 2323/79 2329/79 2438/444 2434/444 -f 2435/82 2439/82 2330/81 2324/81 -f 2436/77 2440/77 2439/82 2435/82 -f 2441/78 2444/78 2443/77 2442/77 -f 2438/444 2446/444 2445/78 2437/78 -f 2329/79 2335/79 2446/444 2438/444 -f 2437/78 2460/78 2459/77 2436/77 -f 2436/77 2459/77 2461/77 2440/77 -f 2440/77 2461/77 2462/78 2445/78 -f 2445/78 2462/78 2460/78 2437/78 -f 2460/78 2464/78 2463/77 2459/77 -f 2459/77 2463/77 2465/77 2461/77 -f 2461/77 2465/77 2466/78 2462/78 -f 2462/78 2466/78 2464/78 2460/78 -f 2464/78 2468/78 2467/77 2463/77 -f 2463/77 2467/77 2469/77 2465/77 -f 2465/77 2469/77 2470/78 2466/78 -f 2466/78 2470/78 2468/78 2464/78 -f 2468/78 2441/78 2442/77 2467/77 -f 2469/77 2443/77 2444/78 2470/78 -f 2485/78 2488/78 2487/77 2486/77 -f 2481/78 2492/78 2491/77 2480/77 -f 2480/77 2491/77 2493/77 2484/77 -f 2484/77 2493/77 2494/78 2489/78 -f 2489/78 2494/78 2492/78 2481/78 -f 2492/78 2496/78 2495/77 2491/77 -f 2491/77 2495/77 2497/77 2493/77 -f 2493/77 2497/77 2498/78 2494/78 -f 2494/78 2498/78 2496/78 2492/78 -f 2497/77 2504/77 2503/78 2498/78 -f 2495/77 2505/77 2504/77 2497/77 -f 2496/78 2506/78 2505/77 2495/77 -f 2498/78 2503/78 2506/78 2496/78 -f 2504/77 2487/77 2488/78 2503/78 -f 2506/78 2485/78 2486/77 2505/77 -f 2507/445 2508/446 2516/447 2515/448 -f 2508/446 2509/449 2517/450 2516/447 -f 2509/449 2510/451 2518/452 2517/450 -f 2510/451 2511/453 2519/454 2518/452 -f 2511/453 2512/455 2520/456 2519/454 -f 2512/455 2513/457 2521/458 2520/456 -f 2513/457 2514/459 2522/460 2521/458 -f 2514/459 2507/461 2515/462 2522/460 -f 2515/448 2516/447 2524/463 2523/464 -f 2516/447 2517/450 2525/465 2524/463 -f 2517/450 2518/452 2526/466 2525/465 -f 2518/452 2519/454 2527/467 2526/466 -f 2519/454 2520/456 2528/468 2527/467 -f 2520/456 2521/458 2529/469 2528/468 -f 2521/458 2522/460 2530/470 2529/469 -f 2522/460 2515/462 2523/471 2530/470 -f 2523/464 2524/463 2532/472 2531/473 -f 2524/463 2525/465 2533/474 2532/472 -f 2525/465 2526/466 2534/475 2533/474 -f 2526/466 2527/467 2535/476 2534/475 -f 2527/467 2528/468 2536/477 2535/476 -f 2528/468 2529/469 2537/478 2536/477 -f 2529/469 2530/470 2538/479 2537/478 -f 2530/470 2523/471 2531/480 2538/479 -f 2508/2 2507/481 2539/482 -f 2509/483 2508/2 2539/482 -f 2510/484 2509/483 2539/482 -f 2511/485 2510/484 2539/482 -f 2512/453 2511/485 2539/482 -f 2514/79 2513/486 2539/482 -f 2507/481 2514/79 2539/482 -f 2531/487 2532/22 2540/488 -f 2532/22 2533/489 2540/488 -f 2533/489 2534/490 2540/488 -f 2534/490 2535/491 2540/488 -f 2535/491 2536/118 2540/488 -f 2536/118 2537/492 2540/488 -f 2537/492 2538/493 2540/488 -f 2538/493 2531/487 2540/488 -f 2513/486 2512/453 2541/453 2542/486 -f 2512/453 2539/482 2543/482 2541/453 -f 2539/482 2513/486 2542/486 2543/482 -f 2551/82 2550/81 3136/81 3137/82 -f 2552/77 2551/82 3137/82 3138/77 -f 2553/78 2552/77 3138/77 3129/78 -f 2554/444 2553/78 3129/78 3130/444 -f 2555/79 2554/444 3130/444 3131/79 -f 2573/78 2572/77 2574/77 2575/78 -f 2565/78 2564/77 2568/77 2569/78 -f 2546/77 2547/78 2571/78 2570/77 -f 2568/77 2570/77 2594/77 2595/77 -f 2590/77 2589/78 2575/78 2574/77 -f 2592/78 2591/77 2572/77 2573/78 -f 2594/77 2593/78 2589/78 2590/77 -f 2595/77 2594/77 2590/77 2591/77 -f 2596/78 2595/77 2591/77 2592/78 -f 2593/78 2596/78 2592/78 2589/78 -f 2601/82 3135/82 3136/81 2550/81 -f 2603/77 3134/77 3135/82 2601/82 -f 2605/78 3133/78 3134/77 2603/77 -f 2607/444 3132/444 3133/78 2605/78 -f 2555/79 3131/79 3132/444 2607/444 -f 2615/78 2618/78 2617/77 2616/77 -f 2611/78 2622/78 2621/77 2610/77 -f 2614/77 2623/77 2624/78 2619/78 -f 2621/77 2625/77 2627/77 2623/77 -f 2624/78 2628/78 2626/78 2622/78 -f 2633/77 2617/77 2618/78 2634/78 -f 2636/78 2615/78 2616/77 2635/77 -f 2627/77 2633/77 2634/78 2628/78 -f 2625/77 2635/77 2633/77 2627/77 -f 2626/78 2636/78 2635/77 2625/77 -f 2628/78 2634/78 2636/78 2626/78 -f 2637/445 2638/494 2683/495 2684/496 -f 2638/494 2639/497 2682/498 2683/495 -f 2639/497 2640/499 2681/500 2682/498 -f 2640/499 2641/501 2680/502 2681/500 -f 2641/501 2642/453 2679/503 2680/502 -f 2642/453 2643/504 2678/505 2679/503 -f 2643/504 2644/506 2677/507 2678/505 -f 2644/506 2645/508 2676/509 2677/507 -f 2645/508 2646/510 2685/511 2676/509 -f 2646/510 2637/461 2684/512 2685/511 -f 2647/448 2648/513 3166/514 3167/515 -f 2648/513 2649/516 3165/517 3166/514 -f 2649/516 2650/518 3164/519 3165/517 -f 2650/518 2651/520 3163/521 3164/519 -f 2651/520 2652/454 3162/522 3163/521 -f 2652/454 2653/523 3161/524 3162/522 -f 2653/523 2654/525 3160/526 3161/524 -f 2654/525 2655/527 3159/528 3160/526 -f 2655/527 2656/529 3168/530 3159/528 -f 2656/529 2647/462 3167/531 3168/530 -f 2657/464 2658/532 2692/533 2693/534 -f 2658/532 2659/535 2691/536 2692/533 -f 2659/535 2660/537 2690/538 2691/536 -f 2660/537 2661/539 2689/540 2690/538 -f 2661/539 2662/467 2688/541 2689/540 -f 2662/467 2663/542 2687/543 2688/541 -f 2663/542 2664/544 2686/545 2687/543 -f 2664/544 2665/546 2695/547 2686/545 -f 2665/546 2666/548 2694/549 2695/547 -f 2666/548 2657/471 2693/550 2694/549 -f 2638/551 2637/80 2675/482 -f 2639/552 2638/551 2675/482 -f 2640/553 2639/552 2675/482 -f 2641/81 2640/553 2675/482 -f 2642/82 2641/81 2675/482 -f 2643/77 2642/82 2675/482 -f 2644/78 2643/77 2675/482 -f 2645/444 2644/78 2675/482 -f 2646/79 2645/444 2675/482 -f 2637/80 2646/79 2675/482 -f 2677/507 2676/509 2655/527 2654/525 -f 2678/505 2677/507 2654/525 2653/523 -f 2679/503 2678/505 2653/523 2652/454 -f 2680/502 2679/503 2652/454 2651/520 -f 2681/500 2680/502 2651/520 2650/518 -f 2682/498 2681/500 2650/518 2649/516 -f 2683/495 2682/498 2649/516 2648/513 -f 2684/496 2683/495 2648/513 2647/448 -f 2685/511 2684/512 2647/462 2656/529 -f 2676/509 2685/511 2656/529 2655/527 -f 2687/543 2686/545 2672/554 -f 2688/541 2687/543 2672/554 2671/476 -f 2689/540 2688/541 2671/476 2670/555 -f 2690/538 2689/540 2670/555 2669/556 -f 2691/536 2690/538 2669/556 2668/557 -f 2692/533 2691/536 2668/557 -f 2693/534 2692/533 2668/557 2667/473 -f 2694/549 2693/550 2667/480 2674/558 -f 2695/547 2694/549 2674/558 2673/559 -f 2686/545 2695/547 2673/559 2672/554 -f 2696/445 2697/494 2739/495 2740/496 -f 2697/494 2698/497 2738/498 2739/495 -f 2698/497 2699/499 2737/500 2738/498 -f 2699/499 2700/501 2736/502 2737/500 -f 2700/501 2701/453 2735/503 2736/502 -f 2701/453 2702/504 2734/505 2735/503 -f 2702/504 2703/506 2733/507 2734/505 -f 2703/506 2704/508 2732/509 2733/507 -f 2704/508 2705/510 2741/511 2732/509 -f 2705/510 2696/461 2740/512 2741/511 -f 2706/448 2707/513 3144/560 3145/561 -f 2707/513 2708/516 3143/562 3144/560 -f 2708/516 2709/518 3142/563 3143/562 -f 2709/518 2710/520 3141/564 3142/563 -f 2710/520 2711/454 3140/565 3141/564 -f 2711/454 2712/523 3139/566 3140/565 -f 2712/523 2713/525 3148/567 3139/566 -f 2713/525 2714/527 3147/568 3148/567 -f 2714/527 2715/529 3146/569 3147/568 -f 2715/529 2706/462 3145/570 3146/569 -f 2716/464 2717/532 2748/533 2749/534 -f 2717/532 2718/535 2747/536 2748/533 -f 2718/535 2719/537 2746/538 2747/536 -f 2719/537 2720/539 2745/540 2746/538 -f 2720/539 2721/467 2744/541 2745/540 -f 2721/467 2722/542 2743/543 2744/541 -f 2722/542 2723/544 2742/545 2743/543 -f 2723/544 2724/546 2751/547 2742/545 -f 2724/546 2725/548 2750/549 2751/547 -f 2725/548 2716/471 2749/550 2750/549 -f 2697/551 2696/80 2731/482 -f 2698/552 2697/551 2731/482 -f 2699/553 2698/552 2731/482 -f 2700/81 2699/553 2731/482 -f 2701/82 2700/81 2731/482 -f 2702/77 2701/82 2731/482 -f 2703/78 2702/77 2731/482 -f 2704/444 2703/78 2731/482 -f 2705/79 2704/444 2731/482 -f 2696/80 2705/79 2731/482 -f 2733/507 2732/509 2714/527 2713/525 -f 2734/505 2733/507 2713/525 2712/523 -f 2735/503 2734/505 2712/523 2711/454 -f 2736/502 2735/503 2711/454 2710/520 -f 2737/500 2736/502 2710/520 2709/518 -f 2738/498 2737/500 2709/518 2708/516 -f 2739/495 2738/498 2708/516 2707/513 -f 2740/496 2739/495 2707/513 2706/448 -f 2741/511 2740/512 2706/462 2715/529 -f 2732/509 2741/511 2715/529 2714/527 -f 2743/543 2742/545 2728/554 -f 2744/541 2743/543 2728/554 2673/476 -f 2745/540 2744/541 2673/476 2674/555 -f 2746/538 2745/540 2674/555 2667/556 -f 2747/536 2746/538 2667/556 2727/557 -f 2748/533 2747/536 2727/557 -f 2749/534 2748/533 2727/557 2726/473 -f 2750/549 2749/550 2726/480 2730/558 -f 2751/547 2750/549 2730/558 2729/559 -f 2742/545 2751/547 2729/559 2728/554 -f 2759/445 2760/494 2770/513 2769/448 -f 2760/494 2761/497 2771/516 2770/513 -f 2761/497 2762/499 2772/518 2771/516 -f 2762/499 2763/501 2773/520 2772/518 -f 2763/501 2764/453 2774/454 2773/520 -f 2764/453 2765/504 2775/523 2774/454 -f 2765/504 2766/506 2776/525 2775/523 -f 2766/506 2767/508 2777/527 2776/525 -f 2767/508 2768/510 2778/529 2777/527 -f 2768/510 2759/461 2769/462 2778/529 -f 2769/448 2770/513 3072/571 3063/572 -f 2771/516 2772/518 3070/573 3071/574 -f 2772/518 2773/520 3069/575 3070/573 -f 2773/520 2774/454 3068/576 3069/575 -f 2774/454 2775/523 3067/577 3068/576 -f 2775/523 2776/525 3066/578 3067/577 -f 2776/525 2777/527 3065/579 3066/578 -f 2777/527 2778/529 3064/580 3065/579 -f 2778/529 2769/462 3063/581 3064/580 -f 2779/464 2780/532 2868/582 2859/583 -f 2780/532 2781/535 2867/584 2868/582 -f 2781/535 2782/537 2866/585 2867/584 -f 2782/537 2783/539 2865/586 2866/585 -f 2783/539 2784/467 2864/587 2865/586 -f 2784/467 2785/542 2863/588 2864/587 -f 2785/542 2786/544 2862/589 2863/588 -f 2786/544 2787/546 2861/590 2862/589 -f 2787/546 2788/548 2860/591 2861/590 -f 2788/548 2779/471 2859/592 2860/591 -f 2760/551 2759/80 2789/80 2790/551 -f 2761/552 2760/551 2790/551 2791/552 -f 2762/553 2761/552 2791/552 2792/553 -f 2763/81 2762/553 2792/553 2793/81 -f 2764/82 2763/81 2793/81 2794/82 -f 2765/77 2764/82 2794/82 2795/77 -f 2766/78 2765/77 2795/77 2796/78 -f 2767/444 2766/78 2796/78 2797/444 -f 2768/79 2767/444 2797/444 2798/79 -f 2759/80 2768/79 2798/79 2789/80 -f 2790/551 2789/80 3079/80 3080/551 -f 2791/552 2790/551 3080/551 3081/552 -f 2792/553 2791/552 3081/552 3082/553 -f 2793/81 2792/553 3082/553 3083/81 -f 2794/82 2793/81 3083/81 2603/82 -f 2795/77 2794/82 2603/82 2601/77 -f 2796/78 2795/77 2601/77 2550/78 -f 2797/444 2796/78 2550/78 3084/444 -f 2798/79 2797/444 3084/444 3085/79 -f 2789/80 2798/79 3085/79 3079/80 -f 2800/551 2799/80 2809/80 2810/551 -f 2801/552 2800/551 2810/551 2811/552 -f 2802/553 2801/552 2811/552 2812/553 -f 2803/81 2802/553 2812/553 2813/81 -f 2804/82 2803/81 2813/81 2814/82 -f 2805/77 2804/82 2814/82 2815/77 -f 2806/78 2805/77 2815/77 2816/78 -f 2807/444 2806/78 2816/78 2817/444 -f 2808/79 2807/444 2817/444 2818/79 -f 2799/80 2808/79 2818/79 2809/80 -f 2810/551 2809/80 3062/80 3053/551 -f 2811/552 2810/551 3053/551 3054/552 -f 2812/553 2811/552 3054/552 3055/553 -f 2813/81 2812/553 3055/553 3056/81 -f 2814/82 2813/81 3056/81 3057/82 -f 2815/77 2814/82 3057/82 3058/77 -f 2816/78 2815/77 3058/77 3059/78 -f 2817/444 2816/78 3059/78 3060/444 -f 2818/79 2817/444 3060/444 3061/79 -f 2809/80 2818/79 3061/79 3062/80 -f 2820/551 2819/80 2829/80 2830/551 -f 2821/552 2820/551 2830/551 2831/552 -f 2822/553 2821/552 2831/552 2832/553 -f 2823/81 2822/553 2832/553 2833/81 -f 3026/82 3025/81 3027/81 3028/82 -f 2825/77 2824/82 2834/82 2835/77 -f 2826/78 2825/77 2835/77 2836/78 -f 2827/444 2826/78 2836/78 2837/444 -f 2828/79 2827/444 2837/444 2838/79 -f 3030/80 3029/79 3031/79 3032/80 -f 2830/551 2829/80 2839/80 2840/551 -f 2831/552 2830/551 2840/551 2841/552 -f 2832/553 2831/552 2841/552 2842/553 -f 2833/81 2832/553 2842/553 2843/81 -f 2834/82 2833/81 2843/81 2844/82 -f 2835/77 2834/82 2844/82 2845/77 -f 2836/78 2835/77 2845/77 2846/78 -f 2837/444 2836/78 2846/78 2847/444 -f 2838/79 2837/444 2847/444 2848/79 -f 2829/80 2838/79 2848/79 2839/80 -f 2840/551 2839/80 2849/80 2850/551 -f 2841/552 2840/551 2850/551 2851/552 -f 2842/553 2841/552 2851/552 2852/553 -f 2843/81 2842/553 2852/553 2853/81 -f 2844/82 2843/81 2853/81 2854/82 -f 2845/77 2844/82 2854/82 2855/77 -f 2846/78 2845/77 2855/77 2856/78 -f 2847/444 2846/78 2856/78 2857/444 -f 2848/79 2847/444 2857/444 2858/79 -f 2839/80 2848/79 2858/79 2849/80 -f 2860/591 2859/592 2756/480 2758/558 -f 2861/590 2860/591 2758/558 2726/559 -f 2862/589 2861/590 2726/559 2727/554 -f 2863/588 2862/589 2727/554 -f 2864/587 2863/588 2727/554 2667/476 -f 2865/586 2864/587 2667/476 2757/555 -f 2866/585 2865/586 2757/555 2669/556 -f 2867/584 2866/585 2669/556 2755/557 -f 2868/582 2867/584 2755/557 -f 2859/583 2868/582 2755/557 2756/473 -f 2869/445 2870/494 2908/495 2909/496 -f 2870/494 2871/497 2907/498 2908/495 -f 2871/497 2872/499 2906/500 2907/498 -f 2872/499 2873/501 2905/502 2906/500 -f 2873/501 2874/453 2904/503 2905/502 -f 2874/453 2875/504 2903/505 2904/503 -f 2875/504 2876/506 2902/507 2903/505 -f 2876/506 2877/508 2901/509 2902/507 -f 2877/508 2878/510 2910/511 2901/509 -f 2878/510 2869/461 2909/512 2910/511 -f 2879/448 2880/513 3183/593 3184/594 -f 2880/513 2881/516 3182/595 3183/593 -f 2881/516 2882/518 3181/596 3182/595 -f 2882/518 2883/520 3180/597 3181/596 -f 2883/520 2884/454 3179/598 3180/597 -f 2884/454 2885/523 3188/599 3179/598 -f 2885/523 2886/525 3187/600 3188/599 -f 2886/525 2887/527 3186/601 3187/600 -f 2887/527 2888/529 3185/602 3186/601 -f 2888/529 2879/462 3184/603 3185/602 -f 2889/464 2890/532 2917/533 2918/534 -f 2890/532 2891/535 2916/536 2917/533 -f 2891/535 2892/537 2915/538 2916/536 -f 2892/537 2893/539 2914/540 2915/538 -f 2893/539 2894/467 2913/541 2914/540 -f 2894/467 2895/542 2912/543 2913/541 -f 2895/542 2896/544 2911/545 2912/543 -f 2896/544 2897/546 2920/547 2911/545 -f 2897/546 2898/548 2919/549 2920/547 -f 2898/548 2889/471 2918/550 2919/549 -f 2870/551 2869/80 2900/482 -f 2871/552 2870/551 2900/482 -f 2872/553 2871/552 2900/482 -f 2873/81 2872/553 2900/482 -f 2874/82 2873/81 2900/482 -f 2875/77 2874/82 2900/482 -f 2876/78 2875/77 2900/482 -f 2877/444 2876/78 2900/482 -f 2878/79 2877/444 2900/482 -f 2869/80 2878/79 2900/482 -f 2902/507 2901/509 3249/604 3250/605 -f 2903/505 2902/507 3250/605 3251/606 -f 2904/503 2903/505 3251/606 3252/607 -f 2905/502 2904/503 3252/607 3253/608 -f 2906/500 2905/502 3253/608 3254/609 -f 2907/498 2906/500 3254/609 3255/610 -f 2908/495 2907/498 3255/610 3256/611 -f 2909/496 2908/495 3256/611 3257/612 -f 2910/511 2909/512 3257/613 3258/614 -f 2901/509 2910/511 3258/614 3249/604 -f 2912/543 2911/545 2752/554 -f 2913/541 2912/543 2752/554 2729/476 -f 2914/540 2913/541 2729/476 2730/555 -f 2915/538 2914/540 2730/555 2726/556 -f 2916/536 2915/538 2726/556 2758/557 -f 2917/533 2916/536 2758/557 -f 2918/534 2917/533 2758/557 2756/473 -f 2919/549 2918/550 2756/480 2899/558 -f 2920/547 2919/549 2899/558 2754/559 -f 2911/545 2920/547 2754/559 2752/554 -f 2921/445 2922/494 2959/495 2960/496 -f 2922/494 2923/497 2958/498 2959/495 -f 2923/497 2924/499 2957/500 2958/498 -f 2924/499 2925/501 2956/502 2957/500 -f 2925/501 2926/453 2955/503 2956/502 -f 2926/453 2927/504 2954/505 2955/503 -f 2927/504 2928/506 2953/507 2954/505 -f 2928/506 2929/508 2952/509 2953/507 -f 2929/508 2930/510 2961/511 2952/509 -f 2930/510 2921/461 2960/512 2961/511 -f 2931/448 2932/513 3206/615 3207/616 -f 2932/513 2933/516 3205/617 3206/615 -f 2933/516 2934/518 3204/618 3205/617 -f 2934/518 2935/520 3203/619 3204/618 -f 2935/520 2936/454 3202/620 3203/619 -f 2936/454 2937/523 3201/621 3202/620 -f 2937/523 2938/525 3200/622 3201/621 -f 2938/525 2939/527 3199/623 3200/622 -f 2939/527 2940/529 3208/624 3199/623 -f 2940/529 2931/462 3207/625 3208/624 -f 2941/464 2942/532 2968/533 2969/534 -f 2942/532 2943/535 2967/536 2968/533 -f 2943/535 2944/537 2966/538 2967/536 -f 2944/537 2945/539 2965/540 2966/538 -f 2945/539 2946/467 2964/541 2965/540 -f 2946/467 2947/542 2963/543 2964/541 -f 2947/542 2948/544 2962/545 2963/543 -f 2948/544 2949/546 2971/547 2962/545 -f 2949/546 2950/548 2970/549 2971/547 -f 2950/548 2941/471 2969/550 2970/549 -f 2922/551 2921/80 2951/482 -f 2923/552 2922/551 2951/482 -f 2924/553 2923/552 2951/482 -f 2925/81 2924/553 2951/482 -f 2926/82 2925/81 2951/482 -f 2927/77 2926/82 2951/482 -f 2928/78 2927/77 2951/482 -f 2929/444 2928/78 2951/482 -f 2930/79 2929/444 2951/482 -f 2921/80 2930/79 2951/482 -f 2953/507 2952/509 2939/527 2938/525 -f 2954/505 2953/507 2938/525 2937/523 -f 2955/503 2954/505 2937/523 2936/454 -f 2956/502 2955/503 2936/454 2935/520 -f 2957/500 2956/502 2935/520 2934/518 -f 2958/498 2957/500 2934/518 2933/516 -f 2959/495 2958/498 2933/516 2932/513 -f 2960/496 2959/495 2932/513 2931/448 -f 2961/511 2960/512 2931/462 2940/529 -f 2952/509 2961/511 2940/529 2939/527 -f 2963/543 2962/545 2753/554 -f 2964/541 2963/543 2753/554 2754/476 -f 2965/540 2964/541 2754/476 2899/555 -f 2966/538 2965/540 2899/555 2756/556 -f 2967/536 2966/538 2756/556 2755/557 -f 2968/533 2967/536 2755/557 -f 2969/534 2968/533 2755/557 2669/473 -f 2970/549 2969/550 2669/480 2670/558 -f 2971/547 2970/549 2670/558 2671/559 -f 2962/545 2971/547 2671/559 2753/554 -f 2673/1 2728/2 2973/2 2972/1 -f 2672/4 2673/1 2972/1 2974/4 -f 2728/2 2729/5 2975/5 2973/2 -f 2729/5 2752/6 2976/6 2975/5 -f 2753/7 2671/8 2978/8 2977/7 -f 2671/8 2672/4 2974/4 2978/8 -f 2752/6 2754/9 2979/9 2976/6 -f 2754/9 2753/7 2977/7 2979/9 -f 2972/1 2973/2 2981/2 2980/1 -f 2974/4 2972/1 2980/1 2982/4 -f 2973/2 2975/5 2983/5 2981/2 -f 2975/5 2976/6 2984/6 2983/5 -f 2977/7 2978/8 2986/8 2985/7 -f 2978/8 2974/4 2982/4 2986/8 -f 2976/6 2979/9 2987/9 2984/6 -f 2979/9 2977/7 2985/7 2987/9 -f 2980/1 2981/2 2989/2 2988/1 -f 2982/4 2980/1 2988/1 2990/4 -f 2981/2 2983/5 2991/5 2989/2 -f 2983/5 2984/6 2992/6 2991/5 -f 2985/7 2986/8 2994/8 2993/7 -f 2986/8 2982/4 2990/4 2994/8 -f 2984/6 2987/9 2995/9 2992/6 -f 2987/9 2985/7 2993/7 2995/9 -f 2819/80 2828/79 3013/79 3014/80 -f 2828/79 2838/79 3015/79 3013/79 -f 2838/79 2829/80 3016/80 3015/79 -f 2829/80 2819/80 3014/80 3016/80 -f 2824/82 2823/81 3017/81 3018/82 -f 2823/81 2833/81 3019/81 3017/81 -f 2833/81 2834/82 3020/82 3019/81 -f 2834/82 2824/82 3018/82 3020/82 -f 3014/80 3013/79 3021/79 3022/80 -f 3013/79 3015/79 3023/79 3021/79 -f 3015/79 3016/80 3024/80 3023/79 -f 3016/80 3014/80 3022/80 3024/80 -f 3018/82 3017/81 3109/81 3110/82 -f 3017/81 3019/81 3108/81 3109/81 -f 3019/81 3020/82 3111/82 3108/81 -f 3020/82 3018/82 3110/82 3111/82 -f 3022/80 3021/79 3101/79 3102/80 -f 3021/79 3023/79 3100/79 3101/79 -f 3023/79 3024/80 3103/80 3100/79 -f 3024/80 3022/80 3102/80 3103/80 -f 3034/552 3033/551 3043/551 3044/552 -f 3035/553 3034/552 3044/552 3045/553 -f 3036/81 3035/553 3045/553 3046/81 -f 3037/82 3036/81 3046/81 3047/82 -f 3038/77 3037/82 3047/82 3048/77 -f 3039/78 3038/77 3048/77 3049/78 -f 3040/444 3039/78 3049/78 3050/444 -f 3041/79 3040/444 3050/444 3051/79 -f 3042/80 3041/79 3051/79 3052/80 -f 3033/551 3042/80 3052/80 3043/551 -f 3044/552 3043/551 2820/551 2821/552 -f 3045/553 3044/552 2821/552 2822/553 -f 3046/81 3045/553 2822/553 2823/81 -f 3047/82 3046/81 2823/81 2824/82 -f 3048/77 3047/82 2824/82 2825/77 -f 3049/78 3048/77 2825/77 2826/78 -f 3050/444 3049/78 2826/78 2827/444 -f 3051/79 3050/444 2827/444 2828/79 -f 3052/80 3051/79 2828/79 2819/80 -f 3043/551 3052/80 2819/80 2820/551 -f 3054/552 3053/551 3033/551 3034/552 -f 3055/553 3054/552 3034/552 3035/553 -f 3056/81 3055/553 3035/553 3036/81 -f 3057/82 3056/81 3036/81 3037/82 -f 3058/77 3057/82 3037/82 3038/77 -f 3059/78 3058/77 3038/77 3039/78 -f 3060/444 3059/78 3039/78 3040/444 -f 3061/79 3060/444 3040/444 3041/79 -f 3062/80 3061/79 3041/79 3042/80 -f 3053/551 3062/80 3042/80 3033/551 -f 2850/551 2849/80 3091/80 1998/551 -f 2851/552 2850/551 1998/551 1997/552 -f 2852/553 2851/552 1997/552 2157/553 -f 2853/81 2852/553 2157/553 3092/81 -f 2854/82 2853/81 3092/81 3086/82 -f 2855/77 2854/82 3086/82 3087/77 -f 2856/78 2855/77 3087/77 3088/78 -f 2857/444 2856/78 3088/78 3089/444 -f 2858/79 2857/444 3089/444 3090/79 -f 2849/80 2858/79 3090/79 3091/80 -f 3064/580 3063/581 3228/626 3219/627 -f 3065/579 3064/580 3219/627 3220/628 -f 3066/578 3065/579 3220/628 3221/629 -f 3067/577 3066/578 3221/629 3222/630 -f 3068/576 3067/577 3222/630 3223/631 -f 3069/575 3068/576 3223/631 3224/632 -f 3070/573 3069/575 3224/632 3225/633 -f 3071/574 3070/573 3225/633 3226/634 -f 3072/571 3071/574 3226/634 3227/635 -f 3063/572 3072/571 3227/635 3228/636 -f 3074/551 3073/80 2799/80 2800/551 -f 3075/552 3074/551 2800/551 2801/552 -f 3076/553 3075/552 2801/552 2802/553 -f 3077/81 3076/553 2802/553 2803/81 -f 2605/82 3077/81 2803/81 2804/82 -f 2607/77 2605/82 2804/82 2805/77 -f 2555/78 2607/77 2805/77 2806/78 -f 2554/444 2555/78 2806/78 2807/444 -f 3078/79 2554/444 2807/444 2808/79 -f 3073/80 3078/79 2808/79 2799/80 -f 3080/551 3079/80 3117/80 3118/551 -f 3081/552 3080/551 3118/551 3119/552 -f 3082/553 3081/552 3119/552 3120/553 -f 3083/81 3082/553 3120/553 3121/81 -f 2603/82 3083/81 3121/81 -f 3085/79 3084/444 2552/444 3116/79 -f 3079/80 3085/79 3116/79 3117/80 -f 3087/77 3086/82 3264/82 3265/77 -f 3088/78 3087/77 3265/77 3266/78 -f 3089/444 3088/78 3266/78 3267/444 -f 3090/79 3089/444 3267/444 3268/79 -f 3091/80 3090/79 3268/79 3269/80 -f 1998/551 3091/80 3269/80 2010/551 -f 3092/81 2157/553 2166/553 3263/81 -f 3086/82 3092/81 3263/81 3264/82 -f 2008/552 2009/551 2316/551 2317/552 -f 2165/553 2008/552 2317/552 2433/553 -f 3093/81 2165/553 2433/553 2431/81 -f 3094/82 3093/81 2431/81 2429/82 -f 3095/77 3094/82 2429/82 2427/77 -f 3096/78 3095/77 2427/77 2312/78 -f 3097/444 3096/78 2312/78 2313/444 -f 3098/79 3097/444 2313/444 2314/79 -f 3099/80 3098/79 2314/79 2315/80 -f 2009/551 3099/80 2315/80 2316/551 -f 3101/79 3100/79 3105/79 3106/79 -f 3102/80 3101/79 3106/79 3107/80 -f 3103/80 3102/80 3107/80 3104/80 -f 3100/79 3103/80 3104/80 3105/79 -f 3105/79 3104/80 3032/80 3031/79 -f 3107/80 3106/79 3029/79 3030/80 -f 3109/81 3108/81 3113/81 3114/81 -f 3110/82 3109/81 3114/81 3115/82 -f 3111/82 3110/82 3115/82 3112/82 -f 3108/81 3111/82 3112/82 3113/81 -f 3113/81 3112/82 3028/82 3027/81 -f 3115/82 3114/81 3025/81 3026/82 -f 3116/79 2552/444 2553/444 3122/79 -f 3117/80 3116/79 3122/79 3123/80 -f 3118/551 3117/80 3123/80 3124/551 -f 3119/552 3118/551 3124/551 3125/552 -f 3120/553 3119/552 3125/552 3126/553 -f 3121/81 3120/553 3126/553 3127/81 -f 2603/82 3121/81 3127/81 2605/82 -f 3122/79 2553/444 2554/444 3078/79 -f 3123/80 3122/79 3078/79 3073/80 -f 3124/551 3123/80 3073/80 3074/551 -f 3125/552 3124/551 3074/551 3075/552 -f 3126/553 3125/552 3075/552 3076/553 -f 3127/81 3126/553 3076/553 3077/81 -f 2605/82 3127/81 3077/81 -f 3084/444 2550/78 3128/444 -f 2552/444 3084/444 3128/444 -f 3140/565 3139/566 3149/637 3150/638 -f 3141/564 3140/565 3150/638 3151/639 -f 3142/563 3141/564 3151/639 3152/640 -f 3143/562 3142/563 3152/640 3153/641 -f 3144/560 3143/562 3153/641 3154/642 -f 3145/561 3144/560 3154/642 3155/643 -f 3146/569 3145/570 3155/644 3156/645 -f 3147/568 3146/569 3156/645 3157/646 -f 3148/567 3147/568 3157/646 3158/647 -f 3139/566 3148/567 3158/647 3149/637 -f 3150/638 3149/637 2722/542 2721/467 -f 3151/639 3150/638 2721/467 2720/539 -f 3152/640 3151/639 2720/539 2719/537 -f 3153/641 3152/640 2719/537 2718/535 -f 3154/642 3153/641 2718/535 2717/532 -f 3155/643 3154/642 2717/532 2716/464 -f 3156/645 3155/644 2716/471 2725/548 -f 3157/646 3156/645 2725/548 2724/546 -f 3158/647 3157/646 2724/546 2723/544 -f 3149/637 3158/647 2723/544 2722/542 -f 3160/526 3159/528 3169/648 3170/649 -f 3161/524 3160/526 3170/649 3171/650 -f 3162/522 3161/524 3171/650 3172/651 -f 3163/521 3162/522 3172/651 3173/652 -f 3164/519 3163/521 3173/652 3174/653 -f 3165/517 3164/519 3174/653 3175/654 -f 3166/514 3165/517 3175/654 3176/655 -f 3167/515 3166/514 3176/655 3177/656 -f 3168/530 3167/531 3177/657 3178/658 -f 3159/528 3168/530 3178/658 3169/648 -f 3170/649 3169/648 2665/546 2664/544 -f 3171/650 3170/649 2664/544 2663/542 -f 3172/651 3171/650 2663/542 2662/467 -f 3173/652 3172/651 2662/467 2661/539 -f 3174/653 3173/652 2661/539 2660/537 -f 3175/654 3174/653 2660/537 2659/535 -f 3176/655 3175/654 2659/535 2658/532 -f 3177/656 3176/655 2658/532 2657/464 -f 3178/658 3177/657 2657/471 2666/548 -f 3169/648 3178/658 2666/548 2665/546 -f 3180/597 3179/598 3189/659 3190/660 -f 3181/596 3180/597 3190/660 3191/661 -f 3182/595 3181/596 3191/661 3192/662 -f 3183/593 3182/595 3192/662 3193/663 -f 3184/594 3183/593 3193/663 3194/664 -f 3185/602 3184/603 3194/665 3195/666 -f 3186/601 3185/602 3195/666 3196/667 -f 3187/600 3186/601 3196/667 3197/668 -f 3188/599 3187/600 3197/668 3198/669 -f 3179/598 3188/599 3198/669 3189/659 -f 3190/660 3189/659 2894/467 2893/539 -f 3191/661 3190/660 2893/539 2892/537 -f 3192/662 3191/661 2892/537 2891/535 -f 3193/663 3192/662 2891/535 2890/532 -f 3194/664 3193/663 2890/532 2889/464 -f 3195/666 3194/665 2889/471 2898/548 -f 3196/667 3195/666 2898/548 2897/546 -f 3197/668 3196/667 2897/546 2896/544 -f 3198/669 3197/668 2896/544 2895/542 -f 3189/659 3198/669 2895/542 2894/467 -f 3200/622 3199/623 3209/648 3210/649 -f 3201/621 3200/622 3210/649 3211/650 -f 3202/620 3201/621 3211/650 3212/651 -f 3203/619 3202/620 3212/651 3213/652 -f 3204/618 3203/619 3213/652 3214/653 -f 3205/617 3204/618 3214/653 3215/654 -f 3206/615 3205/617 3215/654 3216/655 -f 3207/616 3206/615 3216/655 3217/656 -f 3208/624 3207/625 3217/657 3218/658 -f 3199/623 3208/624 3218/658 3209/648 -f 3210/649 3209/648 2949/546 2948/544 -f 3211/650 3210/649 2948/544 2947/542 -f 3212/651 3211/650 2947/542 2946/467 -f 3213/652 3212/651 2946/467 2945/539 -f 3214/653 3213/652 2945/539 2944/537 -f 3215/654 3214/653 2944/537 2943/535 -f 3216/655 3215/654 2943/535 2942/532 -f 3217/656 3216/655 2942/532 2941/464 -f 3218/658 3217/657 2941/471 2950/548 -f 3209/648 3218/658 2950/548 2949/546 -f 3220/628 3219/627 3229/670 3230/671 -f 3221/629 3220/628 3230/671 3231/672 -f 3222/630 3221/629 3231/672 3232/673 -f 3223/631 3222/630 3232/673 3233/674 -f 3224/632 3223/631 3233/674 3234/675 -f 3225/633 3224/632 3234/675 3235/676 -f 3226/634 3225/633 3235/676 3236/677 -f 3227/635 3226/634 3236/677 3237/678 -f 3228/636 3227/635 3237/678 3238/679 -f 3219/627 3228/626 3238/680 3229/670 -f 3230/671 3229/670 2788/548 2787/546 -f 3231/672 3230/671 2787/546 2786/544 -f 3232/673 3231/672 2786/544 2785/542 -f 3233/674 3232/673 2785/542 2784/467 -f 3234/675 3233/674 2784/467 2783/539 -f 3235/676 3234/675 2783/539 2782/537 -f 3236/677 3235/676 2782/537 2781/535 -f 3237/678 3236/677 2781/535 2780/532 -f 3238/679 3237/678 2780/532 2779/464 -f 3229/670 3238/680 2779/471 2788/548 -f 3240/681 3239/682 2887/527 2886/525 -f 3241/683 3240/681 2886/525 2885/523 -f 3242/684 3241/683 2885/523 2884/454 -f 3243/685 3242/684 2884/454 2883/520 -f 3244/686 3243/685 2883/520 2882/518 -f 3245/687 3244/686 2882/518 2881/516 -f 3246/688 3245/687 2881/516 2880/513 -f 3247/689 3246/688 2880/513 2879/448 -f 3248/690 3247/691 2879/462 2888/529 -f 3239/682 3248/690 2888/529 2887/527 -f 3250/605 3249/604 3239/682 3240/681 -f 3251/606 3250/605 3240/681 3241/683 -f 3252/607 3251/606 3241/683 3242/684 -f 3253/608 3252/607 3242/684 3243/685 -f 3254/609 3253/608 3243/685 3244/686 -f 3255/610 3254/609 3244/686 3245/687 -f 3256/611 3255/610 3245/687 3246/688 -f 3257/612 3256/611 3246/688 3247/689 -f 3258/614 3257/613 3247/691 3248/690 -f 3249/604 3258/614 3259/614 3260/604 -f 3258/614 3248/690 3261/690 3259/614 -f 3248/690 3239/682 3262/682 3261/690 -f 3239/682 3249/604 3260/604 3262/682 -f 3260/604 3259/614 2543/692 2542/604 -f 3259/614 3261/690 2543/692 -f 3261/690 3262/682 2541/682 2543/692 -f 3262/682 3260/604 2542/604 2541/682 -f 3263/81 2166/553 2165/553 3093/81 -f 3264/82 3263/81 3093/81 3094/82 -f 3265/77 3264/82 3094/82 3095/77 -f 3266/78 3265/77 3095/77 3096/78 -f 3267/444 3266/78 3096/78 3097/444 -f 3268/79 3267/444 3097/444 3098/79 -f 3269/80 3268/79 3098/79 3099/80 -f 2010/551 3269/80 3099/80 2009/551 -f 3271/693 3270/694 2011/28 2000/6 -f 3272/695 3271/693 2000/6 1999/3 -f 3273/693 3272/695 1999/3 2158/6 -f 3274/694 3273/693 2158/6 2167/28 -f 3275/696 3274/694 2167/28 2164/27 -f 2006/12 3276/697 3275/698 2164/15 -f 2006/12 2007/15 3277/698 3276/697 -f 3270/694 3277/696 2007/27 2011/28 -f 3279/439 3278/438 3301/699 3294/700 -f 3280/440 3279/439 3294/700 3295/701 -f 3281/439 3280/440 3295/701 3296/700 -f 3282/438 3281/439 3296/700 3297/699 -f 3283/441 3282/438 3297/699 3298/702 -f 3299/703 3284/442 3283/443 3298/704 -f 3299/703 3300/704 3285/443 3284/442 -f 3278/438 3285/441 3300/702 3301/699 -f 3287/705 3286/706 3271/693 3272/695 -f 3288/706 3287/705 3272/695 3273/693 -f 3289/707 3288/706 3273/693 3274/694 -f 3290/708 3289/707 3274/694 3275/696 -f 3276/697 3291/709 3290/710 3275/698 -f 3276/697 3277/698 3292/710 3291/709 -f 3293/707 3292/708 3277/696 3270/694 -f 3286/706 3293/707 3270/694 3271/693 -f 3295/701 3294/700 3286/706 3287/705 -f 3296/700 3295/701 3287/705 3288/706 -f 3297/699 3296/700 3288/706 3289/707 -f 3298/702 3297/699 3289/707 3290/708 -f 3291/709 3299/703 3298/704 3290/710 -f 3291/709 3292/710 3300/704 3299/703 -f 3301/699 3300/702 3292/708 3293/707 -f 3294/700 3301/699 3293/707 3286/706 -f 3306/513 3307/516 3308/516 3309/513 -f 2771/516 3071/574 3304/574 3303/516 -f 3071/574 3072/571 3305/571 3304/574 -f 3072/571 2770/513 3302/513 3305/571 -f 3302/513 3303/516 1996/516 1993/513 -f 3303/516 3304/574 1995/574 1996/516 -f 3304/574 3305/571 1994/571 1995/574 -f 3305/571 3302/513 1993/513 1994/571 -f 2770/513 2771/516 3307/516 3306/513 -f 2771/516 3303/516 3308/516 3307/516 -f 3303/516 3302/513 3309/513 3308/516 -f 3302/513 2770/513 3306/513 3309/513 -usemtl ISSDarkMetal -f 2025/7 2026/9 2027/85 2028/83 -f 2028/83 2027/85 2029/14 2030/11 -f 2015/7 2016/9 2021/9 2020/7 -f 2018/14 2019/11 2024/11 2023/14 -f 2020/7 2021/9 2026/9 2025/7 -f 2023/14 2024/11 2030/11 2029/14 -f 2025/7 2028/83 2161/85 2160/9 -f 2028/83 2030/11 2162/14 2161/85 -f 2015/7 2020/7 2175/9 2172/9 -f 2174/14 2177/14 2024/11 2019/11 -f 2020/7 2025/7 2160/9 2175/9 -f 2177/14 2162/14 2030/11 2024/11 -f 2371/82 2370/81 2376/81 2377/82 -f 2372/77 2371/82 2377/82 2378/77 -f 2373/78 2372/77 2378/77 2379/78 -f 2374/444 2373/78 2379/78 2380/444 -f 2375/79 2374/444 2380/444 2381/79 -f 2377/82 2376/81 2382/81 2383/82 -f 2378/77 2377/82 2383/82 2384/77 -f 2379/78 2378/77 2384/77 2385/78 -f 2380/444 2379/78 2385/78 2386/444 -f 2381/79 2380/444 2386/444 2387/79 -f 2383/82 2382/81 2388/81 2389/82 -f 2384/77 2383/82 2389/82 2390/77 -f 2385/78 2384/77 2390/77 2391/78 -f 2386/444 2385/78 2391/78 2392/444 -f 2387/79 2386/444 2392/444 2393/79 -f 2389/82 2388/81 2342/81 2343/82 -f 2390/77 2389/82 2343/82 2344/77 -f 2392/444 2391/78 2345/78 2346/444 -f 2393/79 2392/444 2346/444 2347/79 -f 2452/82 2471/82 2376/81 2370/81 -f 2454/77 2472/77 2471/82 2452/82 -f 2456/78 2473/78 2472/77 2454/77 -f 2458/444 2474/444 2473/78 2456/78 -f 2375/79 2381/79 2474/444 2458/444 -f 2471/82 2475/82 2382/81 2376/81 -f 2472/77 2476/77 2475/82 2471/82 -f 2473/78 2477/78 2476/77 2472/77 -f 2474/444 2478/444 2477/78 2473/78 -f 2381/79 2387/79 2478/444 2474/444 -f 2475/82 2479/82 2388/81 2382/81 -f 2476/77 2480/77 2479/82 2475/82 -f 2477/78 2481/78 2480/77 2476/77 -f 2478/444 2482/444 2481/78 2477/78 -f 2387/79 2393/79 2482/444 2478/444 -f 2479/82 2483/82 2342/81 2388/81 -f 2480/77 2484/77 2483/82 2479/82 -f 2482/444 2490/444 2489/78 2481/78 -f 2393/79 2347/79 2490/444 2482/444 -f 2557/82 2556/81 2562/81 2563/82 -f 2558/77 2557/82 2563/82 2564/77 -f 2559/78 2558/77 2564/77 2565/78 -f 2560/444 2559/78 2565/78 2566/444 -f 2561/79 2560/444 2566/444 2567/79 -f 2563/82 2562/81 2544/81 2545/82 -f 2564/77 2563/82 2545/82 2546/77 -f 2566/444 2565/78 2547/78 2548/444 -f 2567/79 2566/444 2548/444 2549/79 -f 2564/77 2546/77 2570/77 2568/77 -f 2547/78 2565/78 2569/78 2571/78 -f 2569/78 2568/77 2595/77 2596/78 -f 2570/77 2571/78 2593/78 2594/77 -f 2571/78 2569/78 2596/78 2593/78 -f 2602/82 2609/82 2562/81 2556/81 -f 2604/77 2610/77 2609/82 2602/82 -f 2606/78 2611/78 2610/77 2604/77 -f 2608/444 2612/444 2611/78 2606/78 -f 2561/79 2567/79 2612/444 2608/444 -f 2609/82 2613/82 2544/81 2562/81 -f 2610/77 2614/77 2613/82 2609/82 -f 2612/444 2620/444 2619/78 2611/78 -f 2567/79 2549/79 2620/444 2612/444 -f 2610/77 2621/77 2623/77 2614/77 -f 2619/78 2624/78 2622/78 2611/78 -f 2622/78 2626/78 2625/77 2621/77 -f 2623/77 2627/77 2628/78 2624/78 -f 3004/1 3005/2 3006/3 3007/4 -f 3005/2 3008/5 3009/6 3006/3 -f 3007/4 3006/3 3010/7 3011/8 -f 3006/3 3009/6 3012/9 3010/7 -f 2988/1 2989/2 2997/2 2996/1 -f 2990/4 2988/1 2996/1 2998/4 -f 2989/2 2991/5 2999/5 2997/2 -f 2991/5 2992/6 3000/6 2999/5 -f 2993/7 2994/8 3002/8 3001/7 -f 2994/8 2990/4 2998/4 3002/8 -f 2992/6 2995/9 3003/9 3000/6 -f 2995/9 2993/7 3001/7 3003/9 -f 2996/1 2997/2 3005/2 3004/1 -f 2998/4 2996/1 3004/1 3007/4 -f 2997/2 2999/5 3008/5 3005/2 -f 2999/5 3000/6 3009/6 3008/5 -f 3001/7 3002/8 3011/8 3010/7 -f 3002/8 2998/4 3007/4 3011/8 -f 3000/6 3003/9 3012/9 3009/6 -f 3003/9 3001/7 3010/7 3012/9 -f 3130/444 3129/78 2559/78 2560/444 -f 3131/79 3130/444 2560/444 2561/79 -f 3132/444 3131/79 2561/79 2608/444 -f 3133/78 3132/444 2608/444 2606/78 -f 3134/77 3133/78 2606/78 2604/77 -f 3135/82 3134/77 2604/77 2602/82 -f 3136/81 3135/82 2602/82 2556/81 -f 3137/82 3136/81 2556/81 2557/82 -f 3138/77 3137/82 2557/82 2558/77 -f 3129/78 3138/77 2558/77 2559/78 -usemtl ISSWhiteMetal -f 2409/82 2408/81 2410/482 -f 2411/77 2409/82 2410/482 -f 2412/78 2411/77 2410/482 -f 2413/444 2412/78 2410/482 -f 2414/79 2413/444 2410/482 -f 2343/82 2342/81 2402/81 2403/82 -f 2344/77 2343/82 2403/82 2404/77 -f 2345/78 2344/77 2404/77 2405/78 -f 2346/444 2345/78 2405/78 2406/444 -f 2347/79 2346/444 2406/444 2407/79 -f 2403/82 2402/81 2408/81 2409/82 -f 2404/77 2403/82 2409/82 2411/77 -f 2405/78 2404/77 2411/77 2412/78 -f 2406/444 2405/78 2412/78 2413/444 -f 2407/79 2406/444 2413/444 2414/79 -f 2423/82 2410/482 2408/81 -f 2424/77 2410/482 2423/82 -f 2425/78 2410/482 2424/77 -f 2426/444 2410/482 2425/78 -f 2414/79 2410/482 2426/444 -f 2483/82 2499/82 2402/81 2342/81 -f 2484/77 2500/77 2499/82 2483/82 -f 2489/78 2501/78 2500/77 2484/77 -f 2490/444 2502/444 2501/78 2489/78 -f 2347/79 2407/79 2502/444 2490/444 -f 2499/82 2423/82 2408/81 2402/81 -f 2500/77 2424/77 2423/82 2499/82 -f 2501/78 2425/78 2424/77 2500/77 -f 2502/444 2426/444 2425/78 2501/78 -f 2407/79 2414/79 2426/444 2502/444 -f 2583/82 2582/81 2584/482 -f 2585/77 2583/82 2584/482 -f 2586/78 2585/77 2584/482 -f 2587/444 2586/78 2584/482 -f 2588/79 2587/444 2584/482 -f 2545/82 2544/81 2576/81 2577/82 -f 2546/77 2545/82 2577/82 2578/77 -f 2547/78 2546/77 2578/77 2579/78 -f 2548/444 2547/78 2579/78 2580/444 -f 2549/79 2548/444 2580/444 2581/79 -f 2577/82 2576/81 2582/81 2583/82 -f 2578/77 2577/82 2583/82 2585/77 -f 2579/78 2578/77 2585/77 2586/78 -f 2580/444 2579/78 2586/78 2587/444 -f 2581/79 2580/444 2587/444 2588/79 -f 2597/82 2584/482 2582/81 -f 2598/77 2584/482 2597/82 -f 2599/78 2584/482 2598/77 -f 2600/444 2584/482 2599/78 -f 2588/79 2584/482 2600/444 -f 2613/82 2629/82 2576/81 2544/81 -f 2614/77 2630/77 2629/82 2613/82 -f 2619/78 2631/78 2630/77 2614/77 -f 2620/444 2632/444 2631/78 2619/78 -f 2549/79 2581/79 2632/444 2620/444 -f 2629/82 2597/82 2582/81 2576/81 -f 2630/77 2598/77 2597/82 2629/82 -f 2631/78 2599/78 2598/77 2630/77 -f 2632/444 2600/444 2599/78 2631/78 -f 2581/79 2588/79 2600/444 2632/444 -usemtl Brown -f 2332/77 2331/82 2365/82 2366/77 -f 2333/78 2332/77 2366/77 2367/78 -f 2334/444 2333/78 2367/78 2368/444 -f 2335/79 2334/444 2368/444 2369/79 -f 2337/82 2336/81 2370/81 2371/82 -f 2338/77 2337/82 2371/82 2372/77 -f 2339/78 2338/77 2372/77 2373/78 -f 2340/444 2339/78 2373/78 2374/444 -f 2341/79 2340/444 2374/444 2375/79 -f 2365/82 2364/81 2336/81 2337/82 -f 2366/77 2365/82 2337/82 2338/77 -f 2367/78 2366/77 2338/77 2339/78 -f 2368/444 2367/78 2339/78 2340/444 -f 2369/79 2368/444 2340/444 2341/79 -f 2439/82 2447/82 2364/81 2330/81 -f 2440/77 2448/77 2447/82 2439/82 -f 2445/78 2449/78 2448/77 2440/77 -f 2446/444 2450/444 2449/78 2445/78 -f 2335/79 2369/79 2450/444 2446/444 -f 2451/82 2452/82 2370/81 2336/81 -f 2453/77 2454/77 2452/82 2451/82 -f 2455/78 2456/78 2454/77 2453/77 -f 2457/444 2458/444 2456/78 2455/78 -f 2341/79 2375/79 2458/444 2457/444 -f 2447/82 2451/82 2336/81 2364/81 -f 2448/77 2453/77 2451/82 2447/82 -f 2449/78 2455/78 2453/77 2448/77 -f 2450/444 2457/444 2455/78 2449/78 -f 2369/79 2341/79 2457/444 2450/444 diff --git a/contrib/action_nitro/assets/particles/blackSmoke12.png b/contrib/action_nitro/assets/particles/blackSmoke12.png deleted file mode 100644 index 5c7e0ca7ad..0000000000 Binary files a/contrib/action_nitro/assets/particles/blackSmoke12.png and /dev/null differ diff --git a/contrib/action_nitro/assets/particles/blood07.png b/contrib/action_nitro/assets/particles/blood07.png deleted file mode 100644 index 4c590d5055..0000000000 Binary files a/contrib/action_nitro/assets/particles/blood07.png and /dev/null differ diff --git a/contrib/action_nitro/assets/particles/explosion00.png b/contrib/action_nitro/assets/particles/explosion00.png deleted file mode 100644 index 16a484f4e7..0000000000 Binary files a/contrib/action_nitro/assets/particles/explosion00.png and /dev/null differ diff --git a/contrib/action_nitro/assets/particles/whitePuff12.png b/contrib/action_nitro/assets/particles/whitePuff12.png deleted file mode 100644 index 3543b8d6ab..0000000000 Binary files a/contrib/action_nitro/assets/particles/whitePuff12.png and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/Tree03.png b/contrib/action_nitro/assets/textures/Tree03.png deleted file mode 100644 index 0f3d339ee4..0000000000 Binary files a/contrib/action_nitro/assets/textures/Tree03.png and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/blood_splatter.png b/contrib/action_nitro/assets/textures/blood_splatter.png deleted file mode 100644 index db957c7f08..0000000000 Binary files a/contrib/action_nitro/assets/textures/blood_splatter.png and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/city_background_clean.png b/contrib/action_nitro/assets/textures/city_background_clean.png deleted file mode 100644 index a6161fdb0a..0000000000 Binary files a/contrib/action_nitro/assets/textures/city_background_clean.png and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/fastgras01.jpg b/contrib/action_nitro/assets/textures/fastgras01.jpg deleted file mode 100644 index a60bd23453..0000000000 Binary files a/contrib/action_nitro/assets/textures/fastgras01.jpg and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/player.png b/contrib/action_nitro/assets/textures/player.png deleted file mode 100644 index bbd402f719..0000000000 Binary files a/contrib/action_nitro/assets/textures/player.png and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/splash.jpg b/contrib/action_nitro/assets/textures/splash.jpg deleted file mode 100644 index 8479ba8d92..0000000000 Binary files a/contrib/action_nitro/assets/textures/splash.jpg and /dev/null differ diff --git a/contrib/action_nitro/assets/textures/stars.jpg b/contrib/action_nitro/assets/textures/stars.jpg deleted file mode 100644 index cf81a3b633..0000000000 Binary files a/contrib/action_nitro/assets/textures/stars.jpg and /dev/null differ diff --git a/contrib/action_nitro/bin/.gitignore b/contrib/action_nitro/bin/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/action_nitro/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/action_nitro/doc/screenshot.jpg b/contrib/action_nitro/doc/screenshot.jpg deleted file mode 100644 index 0a42ced839..0000000000 Binary files a/contrib/action_nitro/doc/screenshot.jpg and /dev/null differ diff --git a/contrib/action_nitro/doc/space.jpg b/contrib/action_nitro/doc/space.jpg deleted file mode 100644 index 9769ea02ad..0000000000 Binary files a/contrib/action_nitro/doc/space.jpg and /dev/null differ diff --git a/contrib/action_nitro/net.xymus.action_nitro.txt b/contrib/action_nitro/net.xymus.action_nitro.txt deleted file mode 100644 index 2acd516d1c..0000000000 --- a/contrib/action_nitro/net.xymus.action_nitro.txt +++ /dev/null @@ -1,11 +0,0 @@ -Categories:Nit,Games -License:Apache2 -Web Site:http://nitlanguage.org -Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/action_nitro -Issue Tracker:https://github.com/nitlang/nit/issues - -Summary:Jump from plate to plane to reach the ISS and defeat the bad guys -Description: -Simple action platformer using many features of the gamnit game framework. -This was created by the Nit team in a weekend for the clibre gamejam 2016. -. diff --git a/contrib/action_nitro/package.ini b/contrib/action_nitro/package.ini deleted file mode 100644 index cf42196d90..0000000000 --- a/contrib/action_nitro/package.ini +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name=action_nitro -tags=example -maintainer=Alexis Laferrière -license=Apache-2.0 -desc=Action Nitro! an action platformer where you jump from plane to plane to reach the ISS and defeat the bad guys -[upstream] -browse=https://github.com/nitlang/nit/tree/master/contrib/action_nitro/ -git=https://github.com/nitlang/nit.git -git.directory=contrib/action_nitro/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues -apk=http://nitlanguage.org/fdroid/apk/action_nitro.apk diff --git a/contrib/action_nitro/src/action_nitro.nit b/contrib/action_nitro/src/action_nitro.nit deleted file mode 100644 index 485ebc2d38..0000000000 --- a/contrib/action_nitro/src/action_nitro.nit +++ /dev/null @@ -1,690 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -module action_nitro is - app_name "Action Nitro" - app_namespace "net.xymus.action_nitro" - app_version(1, 0, git_revision) -end - -import gamnit::depth -import gamnit::landscape - -import game - -import gen::texts -import gen::planes - -redef class App - - # Game world - var world: World = new World is lazy - - # --- - # Game world assets - - # Textures of the biplane, jet, helicopter, parachute and powerups - var planes_sheet = new PlanesImages - - # Animation when opening the parachute - var parachute_animation = new Animation(planes_sheet.parachute, 16.0) - - # Animation for the player movement - private var running_texture = new Texture("textures/player.png") - private var running_animation: Animation = running_texture.to_animation(10.0, 12, 0) - - # Boss 3D model - private var iss_model = new Model("models/iss.obj") - - # --- - # Ground textures - - private var ground_texture = new Texture("textures/fastgras01.jpg") - private var tree_texture = new Texture("textures/Tree03.png") - - # --- - # Blood splatter - - private var splatter_texture = new Texture("textures/blood_splatter.png") - private var splatter_material: TexturedMaterial do - var mat = new TexturedMaterial([1.0]*4, [0.0]*4, [0.0]*4) - mat.ambient_texture = splatter_texture - return mat - end - private var splatter_model = new LeafModel(new Plane, splatter_material) - - # --- - # Background - - private var city_texture = new TextureAsset("textures/city_background_clean.png") - - private var stars_texture = new Texture("textures/stars.jpg") - private var stars = new Sprite(stars_texture, new Point3d[Float](0.0, 1100.0, -600.0)) is lazy - - # --- - # Particle effects - - # Explosion particles - var explosions = new ParticleSystem(100, explosion_program, - new Texture("particles/explosion00.png")) - - # Blood explosion particles - var blood = new ParticleSystem(100, explosion_program, - new Texture("particles/blood07.png")) - - # Smoke for the background - var smoke = new ParticleSystem(500, smoke_program, - new Texture("particles/blackSmoke12.png")) - - # Static clouds particles - var clouds = new ParticleSystem(1600, static_program, - new Texture("particles/whitePuff12.png")) - - # --- - # Sound effects - - # TODO - #private var fx_fire = new Sound("sounds/fire.mp3") - - # --- - # UI - private var texts_sheet = new TextsImages - - private var tutorial_wasd = new Sprite(app.texts_sheet.tutorial_wasd, - app.ui_camera.center.offset(0.0, -250.0, 0.0)) is lazy - - private var tutorial_arrows = new Sprite(app.texts_sheet.tutorial_arrows, - app.ui_camera.center.offset(0.0, -350.0, 0.0)) is lazy - - private var tutorial_chute = new Sprite(app.texts_sheet.tutorial_chute, - app.ui_camera.center.offset(0.0, -450.0, 0.0)) is lazy - - private var tutorial_goal = new Sprite(app.texts_sheet.goal, - app.ui_camera.center.offset(0.0, 0.0, 0.0)) is lazy - - private var outro_directed = new Sprite(app.texts_sheet.directed, - app.ui_camera.center.offset(0.0, 400.0, 0.0)) is lazy - - private var outro_created = new Sprite(app.texts_sheet.created, - app.ui_camera.center.offset(0.0, -200.0, 0.0)) is lazy - - # --- - # Counters for the UI - - private var score_counter = new CounterSprites(texts_sheet.n, - new Point3d[Float](32.0, -64.0, 0.0)) - - private var altitude_counter = new CounterSprites(texts_sheet.n, - new Point3d[Float](1400.0, -64.0, 0.0)) - - # Did the player asked to skip the intro animation? - private var skip_intro = false - - redef fun on_create - do - blood.texture.as(RootTexture).premultiply_alpha = false - explosions.texture.as(RootTexture).premultiply_alpha = false - - super - - show_splash_screen new Texture("textures/splash.jpg") - - # Load 3d models - iss_model.load - if iss_model.errors.not_empty then print_error iss_model.errors.join("\n") - - # Setup cameras - world_camera.reset_height 60.0 - ui_camera.reset_height 1080.0 - - # Register particle systems - particle_systems.add smoke - particle_systems.add clouds - particle_systems.add blood - particle_systems.add explosions - - # Stars background - sprites.add stars - stars.scale = 2.1 - - # City background - city_texture.pixelated = true - var city_sprite = new Sprite(city_texture, new Point3d[Float](0.0, 370.0, -600.0)) - city_sprite.scale = 0.8 - sprites.add city_sprite - - # Setup ground - var ground_mesh = new Plane - ground_mesh.repeat_x = 100.0 - ground_mesh.repeat_y = 100.0 - - var ground_material = new TexturedMaterial( - [0.0, 0.1, 0.0, 1.0], [0.4, 0.4, 0.4, 1.0], [0.0]*4) - ground_material.diffuse_texture = ground_texture - - var ground_model = new LeafModel(ground_mesh, ground_material) - var ground = new Actor(ground_model, new Point3d[Float](0.0, 0.0, 0.0)) - ground.scale = 5000.0 - actors.add ground - - # Trees - for i in 2000.times do - var s = 0.1 + 0.1.rand - var h = tree_texture.height * s - var sprite = new Sprite(tree_texture, - new Point3d[Float](0.0 & 1500.0, h/2.0 - 10.0*s, 10.0 - 609.0.rand)) - sprite.static = true - sprite.scale = s - sprites.add sprite - - var c = 1.0.rand - c *= 0.7 - sprite.tint = [c, 1.0, c, 1.0] - end - - # Clouds - var no_clouds_layer = 200.0 - for i in [0 .. 32[ do - var zp = 1.0.rand - var x = 0.0 & 1000.0 * zp - var y = no_clouds_layer + (world.boss_altitude - no_clouds_layer*2.0).rand - var z = -500.0*zp - 10.0 - - var r = 50.0 & 1.0 - for j in [0..32[ do - var a = 2.0*pi.rand - var rj = r.rand - clouds.add(new Point3d[Float](x+2.0*a.cos*rj, y+a.sin*rj, z & 1.0), - 48000.0 & 16000.0, inf) - end - end - - # Move the sun to best light the ISS - light.position.x = 2000.0 - light.position.z = 4000.0 - - # Prepare for intro animation - ui_sprites.add tutorial_goal - world_camera.far = 1024.0 - end - - redef fun update(dt) - do - # Game logic - world.update dt - - # Update background color - var player = world.player - var player_pos = if player != null then player.center else new Point3d[Float](0.0, 200.0, 0.0) - var altitude = player_pos.y - var p = altitude / world.boss_altitude - var ip = 1.0 - p - glClearColor(0.3*ip, 0.3*ip, ip, 1.0) - stars.alpha = (1.4*p-0.4).clamp(0.0, 1.0) - - # Randomly add smoke - var poss = [ - new Point3d[Float](291.0, 338.0, -601.0), - new Point3d[Float](-356.0, 422.0, -601.0)] - - var r = 8.0 - if 2.rand == 0 then - var pos = poss.rand - smoke.add( - new Point3d[Float](pos.x & r, pos.y & r, pos.z & r), - 96000.0 & 16000.0, 10.0) - end - - # Move camera - world_camera.position.x = player_pos.x - world_camera.position.y = player_pos.y + 5.0 - - # Cinematic? - var t = world.t - var intro_duration = 8.0 - if t < intro_duration and not skip_intro then - var pitch = t/intro_duration - pitch = (pitch*pi).sin - world_camera.pitch = pitch - return - end - - if world.player == null then - world_camera.pitch = 0.0 - world_camera.far = 700.0 - - begin_play true - end - - # Update counters - score_counter.value = world.score - var alt = 0 - if world.player != null then alt = world.player.altitude.to_i - altitude_counter.value = alt - - # General movement on the X axis - if player != null then - player.moving = 0.0 - if pressed_keys.has("left") then player.moving -= 1.0 - if pressed_keys.has("right") then player.moving += 1.0 - end - - # Try to fire as long as a key is pressed - if pressed_keys.not_empty then - var a = inf - if pressed_keys.has("a") then - if pressed_keys.has("w") then - a = 0.75 * pi - else if pressed_keys.has("s") then - a = 1.25 * pi - else - a = pi - end - else if pressed_keys.has("d") then - if pressed_keys.has("w") then - a = 0.25 * pi - else if pressed_keys.has("s") then - a = 1.75 * pi - else - a = 0.0 - end - else if pressed_keys.has("w") then - a = 0.50 * pi - else if pressed_keys.has("s") then - a = 1.50 * pi - end - - if a != inf and player != null then - player.shoot(a, world) - hide_tutorial_wasd - end - end - - # Low-gravity controls - if player != null and player.is_alive and player.altitude >= world.boss_altitude then - var d = 50.0*dt - for key in pressed_keys do - if key == "up" then - player.inertia.y += d - else if key == "down" then - player.inertia.y -= d - else if key == "left" then - player.inertia.x -= d - else if key == "right" then - player.inertia.x += d - end - end - end - - # Detect if game won - var won_at = won_at - if won_at == null then - var boss = world.boss - if boss != null and not boss.is_alive then - self.won_at = world.t - end - else - # Show outro - var t_since_won = world.t - won_at - if t_since_won > 1.0 and not ui_sprites.has(outro_directed) then ui_sprites.add outro_directed - if t_since_won > 2.0 and not ui_sprites.has(outro_created) then ui_sprites.add outro_created - end - end - - # Begin playing, after intro if `initial`, otherwise after death - fun begin_play(initial: Bool) - do - ui_sprites.clear - - world.spawn_player - world.planes.add new Airplane(new Point3d[Float](0.0, world.player.center.y - 10.0, 0.0), 16.0, 4.0) - - if initial then - # Setup tutorial - ui_sprites.add_all([tutorial_wasd, tutorial_arrows, tutorial_chute]) - end - end - - # Seconds at which the game was won, using `world.t` as reference - private var won_at: nullable Float = null - - # Remove the tutorial sprite about WASD from `ui_sprites` - private fun hide_tutorial_wasd do if ui_sprites.has(tutorial_wasd) then ui_sprites.remove(tutorial_wasd) - - # Remove the tutorial sprite about arrows from `ui_sprites` - private fun hide_tutorial_arrows do if ui_sprites.has(tutorial_arrows) then ui_sprites.remove(tutorial_arrows) - - # Remove the tutorial sprite about the parachute from `ui_sprites` - private fun hide_tutorial_chute do if ui_sprites.has(tutorial_chute) then ui_sprites.remove(tutorial_chute) - - redef fun accept_event(event) - do - if super then return true - - if event isa QuitEvent then - print perfs - exit 0 - else if event isa KeyEvent then - if event.name == "escape" and event.is_down then - print perfs - exit 0 - end - - var player = world.player - if player != null and player.is_alive then - - # Hide tutorial about arrows once they are used - var arrows = once ["left", "right"] - if arrows.has(event.name) then hide_tutorial_arrows - - if player.altitude < world.boss_altitude then - if event.name == "space" and event.is_down and not player.parachute_deployed and player.plane == null then - player.parachute - if player.parachute_deployed then - var pc = player.center - world.parachute = new Parachute(new Point3d[Float](pc.x, pc.y + 5.0, pc.z-0.1), 8.0, 5.0) - end - hide_tutorial_chute - end - - if (event.name == "space" or event.name == "up") and event.is_down then - player.jump - end - - if event.name == "left" then - var mod = if event.is_down then -1.0 else 1.0 - player.moving += mod - player.animate_move - else if event.name == "right" then - var mod = if event.is_down then 1.0 else -1.0 - player.moving += mod - player.animate_move - end - end - end - end - - # When player is dead, respawn on spacebar or pointer depressed - if (event isa KeyEvent and event.name == "space") or - (event isa PointerEvent and not event.is_move and event.depressed) then - var player = world.player - if player == null then - skip_intro = true - else if not player.is_alive then - begin_play false - end - end - - return false - end -end - -redef class Body - # Sprite representing this entity if there is no `actor` - fun sprite: Sprite is abstract - - # 3D actor - fun actor: nullable Actor do return null - - init - do - var actor = actor - if actor != null then - app.actors.add actor - else app.sprites.add sprite - end - - redef fun destroy(world) - do - super - - var actor = actor - if actor != null then - app.actors.remove actor - else app.sprites.remove sprite - end -end - -redef class Human - redef fun die(world) - do - super - - death_animation - end - - # Show death animation (explosion) - fun death_animation - do - var force = 2.0 - health = 0.0 - for i in 16.times do - app.blood.add( - new Point3d[Float](center.x & force, center.y & force, center.z & force), - (4096.0 & 2048.0) * force, 0.3 & 0.1) - end - end -end - -redef class Platform - init do sprite.scale = width/sprite.texture.width - - redef fun update(dt, world) - do - super - - if inertia.x < 0.0 then - sprite.invert_x = false - else if inertia.x > 0.0 then - sprite.invert_x = true - end - end -end - -redef class Airplane - private fun texture: Texture do return if center.y < 600.0 then app.planes_sheet.biplane else app.planes_sheet.jet - - redef var sprite = new Sprite(texture, center) is lazy -end - -redef class Helicopter - redef var sprite = new Sprite(app.planes_sheet.helicopter, center) is lazy -end - -redef class Boss - redef var actor is lazy do - var actor = new Actor(app.iss_model, center) - actor.yaw = pi/2.0 - return actor - end - - redef fun death_animation - do - var force = 64.0 - app.explosions.add(center, 4096.0 * force, 0.3) - for i in (8.0*force).to_i.times do - app.explosions.add( - new Point3d[Float](center.x & force, center.y & force/8.0, center.z & force), - (2048.0 & 1024.0) * force, 0.3 + 5.0.rand, 5.0.rand) - end - end -end - -redef class Enemy - redef var sprite = new Sprite(app.running_animation.frames.rand, center) is lazy - init do sprite.scale = width/sprite.texture.width * 2.0 -end - -redef class Parachute - redef var sprite = new Sprite(app.planes_sheet.parachute_open, center) is lazy - init - do - sprite.scale = width / sprite.texture.width - sprite.animate app.parachute_animation - end -end - -redef class Player - redef var sprite = new Sprite(app.running_animation.frames.last, center) is lazy - init do sprite.scale = width/sprite.texture.width * 2.0 - - # Update current animation - fun animate_move - do - if moving == 0.0 then - sprite.animate_stop - else sprite.animate(app.running_animation, -1.0) - end - - redef fun update(dt, world) - do - super - if moving > 0.0 then - sprite.invert_x = false - else if moving < 0.0 then - sprite.invert_x = true - end - end - - redef fun die(world) - do - super - - if center.y < 10.0 then - # Blood splatter on the ground - var splatter = new Actor(app.splatter_model, - new Point3d[Float](center.x, 0.05 & 0.04, center.y)) - splatter.scale = 32.0 - splatter.yaw = 2.0*pi.rand - app.actors.add splatter - end - - # Display respawn instructions - app.ui_sprites.add new Sprite(app.texts_sheet.respawn, app.ui_camera.center.offset(0.0, 0.0, 0.0)) - end -end - -redef class Bullet - redef var sprite = new Sprite(weapon.bullet_texture, center) is lazy - init - do - sprite.scale = 0.03 - sprite.rotation = angle - end -end - -redef class Weapon - fun bullet_texture: Texture do return app.planes_sheet.bullet_ak -end - -redef class Pistol - redef fun bullet_texture do return app.planes_sheet.bullet_pistol -end - -redef class RocketLauncher - redef fun bullet_texture do return app.planes_sheet.bullet_rocket -end - -redef class Powerup - # Scale so it looks like 5 world units wide, not matter the size of the texture - init do sprite.scale = 5.0/sprite.texture.width -end - -redef class Ak47PU - redef var sprite = new Sprite(app.planes_sheet.ak, center) is lazy -end - -redef class RocketLauncherPU - redef var sprite = new Sprite(app.planes_sheet.rocket, center) is lazy -end - -redef class Life - redef var sprite = new Sprite(app.planes_sheet.health, center) is lazy - init do sprite.scale = 3.0/sprite.texture.height -end - -redef class World - - redef fun explode(center, force) - do - super - - # Particles - var range = 0.5 * force - app.explosions.add(center, 4096.0 * force, 0.3) - for i in (2.0*force).to_i.times do - app.explosions.add( - new Point3d[Float](center.x & range, center.y & range, center.z & range), - (2048.0 & 1024.0) * force, 0.3 & 0.3, 0.5.rand) - end - end -end - -# Manager to display numbers in sprite -class CounterSprites - - # TODO clean up and move up to lib - - # Number textures, from 0 to 9 - # - # Require: `textures.length == 10` - var textures: Array[Texture] - - # Center of the first digit in UI coordinates - var anchor: Point3d[Float] - - # Last set of sprites generated to display the `value=` - private var sprites = new Array[Sprite] - - # Update the value displayed by the counter by inserting new sprites into `app.ui_sprites` - fun value=(value: Int) - do - # Clean up last used sprites - for s in sprites do if app.ui_sprites.has(s) then app.ui_sprites.remove s - sprites.clear - - # Build new sprites - var s = value.to_s # TODO manipulate ints directly - var x = 0.0 - for c in s do - var i = c.to_i - var tex = textures[i] - - x += tex.width/2.0 - sprites.add new Sprite(tex, new Point3d[Float](anchor.x + x, anchor.y, anchor.z)) - x += tex.width/2.0 - end - - # Register sprites to be drawn by `app.ui_camera` - app.ui_sprites.add_all sprites - end -end - -redef class SmokeProgram - - # Redef source to get particles that move up faster - redef fun vertex_shader_core do return """ - vec4 c = center; - c.y += dt * 20.0; - c.x += dt * dt * 2.0; - - gl_Position = c * mvp; - gl_PointSize = scale / gl_Position.z * (pt+0.1); - - if (pt < 0.1) - v_color *= pt / 0.1; - else - v_color *= 1.0 - pt*0.9; - """ -end diff --git a/contrib/action_nitro/src/game/ai.nit b/contrib/action_nitro/src/game/ai.nit deleted file mode 100644 index fc33bc4822..0000000000 --- a/contrib/action_nitro/src/game/ai.nit +++ /dev/null @@ -1,84 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Smart enemies -module ai - -import core - -redef class Enemy - - # Square of the range to shoot at the player - fun range2: Float do return 32.0*32.0 - - redef fun update(dt, world) - do - super - - var player = world.player - if is_alive and player != null and player.is_alive and can_shoot(world) then - # Shoot if possible - if player.center.dist2(self.center) < range2 then - aim_and_shoot(world, player) - end - end - end - - # Aim to shoot at `target` - fun aim_and_shoot(world: World, target: Body) - do - # TODO aim forward of `moving` target - var angle = self.center.atan2(target.center) - - shoot(angle, world) - end - - # Go to `target` using jetpack-like movement - fun go_to(target: Point3d[Float], displacement: Float) do - var sc = center - var k = 1.0 - if target.x < sc.x then - inertia.x -= k - if inertia.x < -displacement then inertia.x = -displacement - else - inertia.x += k - if inertia.x > displacement then inertia.x = displacement - end - if target.y < sc.y then - inertia.y -= k - if inertia.y < -displacement then inertia.y = -displacement - else - inertia.y += k - if inertia.y > displacement then inertia.y = displacement - end - end -end - -redef class JetpackEnemy - redef fun update(dt, world) - do - super - - var player = world.player - if is_alive and player != null and player.is_alive and can_shoot(world) then - # Move towards player - var target = player.center - go_to(target, 40.0) - end - end -end - -redef class Boss - redef fun range2 do return 64.0*64.0 -end diff --git a/contrib/action_nitro/src/game/core.nit b/contrib/action_nitro/src/game/core.nit deleted file mode 100644 index 25cf4579c6..0000000000 --- a/contrib/action_nitro/src/game/core.nit +++ /dev/null @@ -1,842 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Core game logic of Action Nitro -module core - -import geometry - -# Root game object of the whole game logic -# -# Used as a visitor in all methods modifying the state of the world. -class World - - # The player, if the game has started - var player: nullable Player = null is writable - - # All live platforms - var planes = new Array[Platform] - - # All live enemies - var enemies = new Array[Enemy] - - # All live bullets shot by `enemies` - var enemy_bullets = new Array[Bullet] - - # All live bullets shot by `player` - var player_bullets = new Array[Bullet] - - # All live powerups - var powerups = new Array[Powerup] - - # Current open parachute, if any - var parachute: nullable Parachute = null is writable - - # Altitude at which to enter space and trigger the boss - var boss_altitude = 1200.0 - - # Boss, the ISS occupied by bad guys - var boss: nullable Boss = null is writable - - # Runtime of this game, in seconds - var t = 0.0 - - # Total score - var score = 0 - - # Approximate view of the camera, used to spawn stuff outside of the camera - fun camera_view: Box[Float] - do - # TODO update from client - var border = 100.0 - var player = player - if player != null then - return new Box[Float]( - player.center.x-border, player.center.x+border, - player.center.y+border, player.center.y-border) - else - return new Box[Float]( - -border, border, - border, -border) - end - end - - # Update the game logic for events over `dt` seconds - fun update(dt: Float) - do - t += dt - - # Visit all other game logic objects - for plane in planes.reverse_iterator do plane.update(dt, self) - for enemy in enemies.reverse_iterator do enemy.update(dt, self) - - var player = player - if player != null then player.update(dt, self) - - for i in enemy_bullets.reverse_iterator do i.update(dt, self) - for i in player_bullets.reverse_iterator do i.update(dt, self) - - for powerup in powerups.reverse_iterator do powerup.update(dt, self) - if parachute != null then parachute.update(dt, self) - - # Check if the player has reached the boss - var cam = camera_view - if player != null and player.altitude >= boss_altitude and boss == null then - var w = 64.0 - var boss = new Boss(new Point3d[Float](player.center.x, cam.top - 20.0, 0.0), w, 4.0, new Ak47) - self.boss = boss - enemies.add boss - - for i in 6.times do - var e = new WalkingEnemy(new Point3d[Float](boss.center.x & (w/2.0), boss.center.y + 4.0, -1.0.rand), 4.0, 4.0, new Pistol) - enemies.add e - end - end - end - - # Explosion at `center` of the given `force` - fun explode(center: Point3d[Float], force: Float) - do - var lists = [planes, enemies: Sequence[Body]] - var player = player - if player != null then lists.add([player]) - - for l in lists do - for body in l do - body.apply_force(center, force) - end - end - end - - # Spawn or respawn the player - fun spawn_player - do - var old_player = player - var pos = null - if old_player != null then - # Respawn just above the death position - pos = old_player.center - pos.y += 50.0 - end - - if pos == null then - # If `dev` is passed as a command line option, spawn near space - var alt = 200.0 - if args.has("dev") then alt = boss_altitude - 10.0 - - pos = new Point3d[Float](0.0, alt, 0.0) - end - - player = new Player(pos, 4.0, 4.0, new Ak47) - end -end - -# A physical object responding to hollywood physics -abstract class Body - super Boxed[Float] - - # Position at the center of the body - var center: Point3d[Float] - - # Inertia of this body - var inertia = new Point3d[Float](0.0, 0.0, 0.0) is writable - - # Is this body still alive? - var is_alive = true - - # Mass of this object, used by `apply_force` - fun mass: Float do return 1.0 - - # Width of this object, used to detect collisions - var width: Float - - # Height of this object, used to detect collisions - var height: Float - - # Current health level, starts at `max_health` - var health: Float = max_health - - # Maximum health for this object - fun max_health: Float do return 100.0 - - # Is this object affected by gravity? - fun affected_by_gravity: Bool do return true - - # Is this object dead? TODO merge with is_alive - fun dead: Bool do return health <= 0.0 - - # Apply game logic for the last `dt` seconds within `world` - fun update(dt: Float, world: World) - do - if affected_by_gravity then inertia.y -= 4.0 - - center.x += dt * inertia.x - center.y += dt * inertia.y - center.z += dt * inertia.z - - # Hit the ground - if bottom <= 0.0 and affected_by_gravity then - center.y = height / 2.0 - inertia.y = 0.0 - end - end - - # Apply a force, usually a result of `World::explode` - fun apply_force(origin: Point3d[Float], force: Float) - do - var dx = center.x - origin.x - var dy = center.y - origin.y - - var d2 = dx*dx + dy*dy - var d = d2.sqrt - #TODO if d2 > ? then return - - inertia.x += dx * force / d / mass * 4.0 - inertia.y += dy * force / d / mass * 12.0 - - # Destabilize player - if self isa Player then self.plane = null - end - - # Is this object out of `world.camera_view`? - fun out_of_screen(player: Player, world: World): Bool - do - var camera = world.camera_view - if right < camera.left - 20.0 then return true - if left > camera.right + 20.0 then return true - if top < camera.bottom - 20.0 then return true - if bottom > camera.top + 20.0 then return true - return false - end - - # Apply `damage` to this object - fun hit(damage: Float, world: World) - do - self.health -= damage - if self.health <= 0.0 then die(world) - end - - # Die in the game logic, with graphical animations - # - # Calls `destroy` by default. - fun die(world: World) - do - if not is_alive then return - is_alive = false - destroy world - end - - # Destroy this objects and most references to it - fun destroy(world: World) do end - - # --- - # Box services - - redef fun top do return center.y + height / 2.0 - redef fun bottom do return center.y - height / 2.0 - redef fun left do return center.x - width / 2.0 - redef fun right do return center.x + width / 2.0 -end - -# Something to stand on -abstract class Platform - super Body - - redef fun mass do return 20.0 - - redef fun affected_by_gravity do return false - - # Planes slow down when close to the player, `old_inertia` is the speed before it slowed down - private var old_inertia_y: nullable Float = null - - # Enemy the spawned on the plane - var enemy: nullable WalkingEnemy = null is writable - - redef fun die(world) - do - if not is_alive then return - super - world.explode(center, width) - world.score += 1 - if 100.0.rand > 50.0 then world.powerups.add(new Powerup(self.center, world)) - end - - redef fun destroy(world) - do - world.planes.remove self - super - end - - # Distance to the player - fun player_dist(world: World): Float do - var p = world.player - if p == null then return 0.0 - var px = p.center.x - var dst = center.x - px - return dst.abs - end - - # Has this plane slowed down because it is close to the player? - private var slowed_down = false - - # Has this plane already accelerated because it got far from the player? - private var accelerated = false - - redef fun update(dt, world) - do - # High friction on the Y axis to stabilize after an `apply_force` - inertia.y *= 0.95 - - super - - # Slow down if close to the player - var dst = player_dist(world) - if dst < 20.0 then - if not slowed_down then - old_inertia_y = inertia.y - - var speed = 10.0 + 15.0.rand - if inertia.x < 0.0 then - inertia.x = -speed - else inertia.x = speed - inertia.y = 0.0 - inertia.z = 0.0 - - slowed_down = true - if enemy != null then - enemy.inertia.x = inertia.x - enemy.inertia.y = inertia.y - enemy.inertia.z = inertia.z - end - end - else if dst > 30.0 and not accelerated then - var oi = old_inertia_y - if oi == null then return - - inertia.y = oi - accelerated = true - end - end -end - -# Airplane, the basic `Platform` -class Airplane - super Platform -end - -# Helicopter, the player rotates on its blades -class Helicopter - super Platform -end - -# Parachute to slow down the player -class Parachute - super Body - - redef var affected_by_gravity = false - - redef fun update(dt, world) do - super - inertia.x = 0.0 - inertia.y = 0.0 - inertia.z = 0.0 - center.x = world.player.center.x - center.y = world.player.center.y + 5.0 - end -end - -# Human body -abstract class Human - super Body - - # Input direction in `[-1.0 .. 1.0]` - var moving = 0.0 is writable - - # `moving` speed when on a plane, applied directly to `center` - var walking_speed = 20.0 - - # `moving` speed when in freefall, applied to `inertia` - var freefall_accel = 150.0 - - # Acceleration on the X axis applied when jumping - var jump_accel = 24.0 - - # On which plane is standing `self`? if any. - var plane: nullable Platform = null - - # Position in relation to `plane` - private var dx_to_plane = 0.0 - - # Equipped weapon - var weapon: Weapon - - # Rotation status when on a copter bladers, used by `update` - private var ltr = false - - # Is the parachute currently deployed? - var parachute_deployed = false - - redef var affected_by_gravity = true - - # Altitude (in meters) - fun altitude: Float do return center.y - - # Apply a jump from input - fun jump - do - var plane = plane - if plane != null then - # On solid plane, jump - inertia.y += 120.0 - inertia.x = plane.inertia.x + moving * jump_accel - - self.plane = null - end - end - - # Deploy parachute on input - fun parachute - do - var plane = plane - if plane == null and not parachute_deployed then - # Deploy parachute - parachute_deployed = true - inertia.y = -10.0 - - self.plane = null - end - end - - redef fun update(dt, world) - do - if not is_alive then return - - if altitude >= world.boss_altitude then - # In space - affected_by_gravity = false - inertia.y *= 0.99 - super - return - end - - # In atmosphere - - # On a plane? - var on_plane = plane - if on_plane != null then - # Is it still alive? - if not on_plane.is_alive then - on_plane = null - self.plane = null - end - end - - if on_plane != null then - # On a plane, applying special physics do not call super! - - # Precise movements - center.x = on_plane.center.x + dx_to_plane + moving * walking_speed * dt - center.y = on_plane.top + height / 2.0 - if plane isa Helicopter then - center.y = plane.top + height / 2.0 + 1.5 - var left_blade = plane.center.x - 5.0 - var right_blade = plane.center.x + 5.0 - var px = center.x - var blade_speed = 0.5 - if ltr then - if px >= right_blade then ltr = false - center.x = on_plane.center.x + dx_to_plane + moving * walking_speed * dt + blade_speed - else - if px <= left_blade then ltr = true - center.x = on_plane.center.x + dx_to_plane + moving * walking_speed * dt - blade_speed - end - end - - # Detect fall - if not (plane.left < right and plane.right > left) then - self.plane = null - end - else - # Freefall - - # Only influence the inertia - inertia.x += moving * freefall_accel * dt - inertia.x *= 0.99 - - var old_y = bottom - super - if parachute_deployed then - if inertia.y < -10.0 then inertia.y = -10.0 - end - - # Detect collision with planes - for plane in world.planes do # TODO optimize with quad tree - if plane.left < right and plane.right > left then - if old_y > plane.top and bottom <= plane.top then - var parachute = world.parachute - if parachute != null then - parachute.die world - world.parachute = null - end - parachute_deployed = false - # Landed on a plane - plane.inertia.y += inertia.y / plane.mass - - # Update self - self.plane = plane - inertia.x = 0.0 - inertia.y = 0.0 - center.y = plane.top + height / 2.0 - if plane isa Helicopter then - center.y = plane.top + height / 2.0 + 4.0 - end - break - end - end - end - end - - on_plane = self.plane - if on_plane != null then - dx_to_plane = center.x - on_plane.center.x - end - - # Die when hitting the ground - if bottom <= 0.0 then - die world - inertia.x = 0.0 - inertia.y = 0.0 - end - - return - end - - # Is the weapon ready to shoot? - fun can_shoot(world: World): Bool - do - return is_alive and world.t - weapon.last_shot >= weapon.cooldown - end - - # Open fire at `angle`! - fun shoot(angle: Float, world: World) - do - if not can_shoot(world) then return - - var x_inertia = angle.cos * weapon.power - var y_inertia = angle.sin * weapon.power - var new_center = new Point3d[Float](self.center.x, self.center.y, self.center.z - 0.2) - - var bullet = register_bullet(new_center, angle, world) - bullet.inertia.x = x_inertia - bullet.inertia.y = y_inertia - weapon.last_shot = world.t - end - - # Add a bullet, which type depends on `self` - protected fun register_bullet(new_center: Point3d[Float], angle: Float, world: World): Bullet - do - var bullet = new EnemyBullet(new_center, 2.0, 2.0, angle, self.weapon, world.t) - world.enemy_bullets.add(bullet) - return bullet - end -end - -# Player character -class Player - super Human - - # Basic starting weapon to which `self` reverts when out of bullets for powerup - var basic_weapon = new Ak47 - - redef fun shoot(angle, world) - do - super - - # Consume limited bullets from powerups - if can_shoot(world) then - weapon.bullet_number -= 1 - if weapon.bullet_number <= 0 then self.weapon = basic_weapon - end - end - - redef fun register_bullet(new_center, angle, world) - do - var bullet = new PlayerBullet(new_center, 2.0, 2.0, angle, self.weapon, world.t) - world.player_bullets.add(bullet) - return bullet - end - - redef fun update(dt, world) - do - super - - # Catch powerups - for p in world.powerups.reverse_iterator do - if self.intersects(p) then - p.apply self - p.die world - end - end - end - - redef fun max_health do return 200.0 -end - -# Enemy that can shoot -abstract class Enemy - super Human - - redef fun max_health do return 20.0 - - redef fun die(world) - do - super - world.score += 1 - if 100.0.rand > 90.0 then world.powerups.add(new Powerup(self.center, world)) - end - - redef fun destroy(world) - do - super - world.enemies.remove self - end -end - -# Enemy walking on a platform -class WalkingEnemy - super Enemy -end - -# Enemy with a jetpack -class JetpackEnemy - super Enemy - - redef fun affected_by_gravity do return false -end - -# The main boss, the ISS taken over by bad guys -class Boss - super Enemy - - # TODO this should not subclass Human! - - redef fun max_health do return 2000.0 - - redef fun affected_by_gravity do return false - - redef fun die(world) - do - super - world.score += 999 - end -end - -# Bonus powerup -class Powerup - super Body - - # Seconds to live - var lifespan = 10.0 - - # When has this powerup been created - var created = 0.0 is writable - - redef fun affected_by_gravity do return false - - new(center: Point3d[Float], world: World) - do - var v = 3.rand - var powerup: nullable Powerup = null - if v == 0 then powerup = new Ak47PU(center, 5.0, 5.0) - if v == 1 then powerup = new RocketLauncherPU(center, 5.0, 5.0) - if v == 2 then powerup = new Life(center, 5.0, 5.0) - assert powerup != null - - powerup.inertia.y = -2.0 - powerup.created = world.t - return powerup - end - - # Apply this powerup to `player` - fun apply(player: Player) do end - - redef fun update(dt, world) - do - super - if world.t - created > lifespan then die(world) - end - - redef fun destroy(world) - do - super - world.powerups.remove(self) - end -end - -# Weapon usable by a `Human` and `Boss` -abstract class Weapon - - # Second at which the last shot was taken - var last_shot = 0.0 - - # Number of bullets in the chamber, the weapon is lost when it reaches 0 - var bullet_number: Int is abstract - - # Damage made by a single bullet - fun damage: Float is abstract - - # Seconds between each shot - fun cooldown: Float is abstract - - # Speed of the bullet when leaving the weapon - fun power: Float is abstract - - # Seconds to live of the bullets - fun bullet_lifespan: Float is abstract -end - -# Bullet fired by a `weapon` -abstract class Bullet - super Body - - # Orientation - var angle: Float - - # `Weapon` that fired `self` - var weapon: Weapon - - # Second at which this bullet was fired - var creation_time: Float - - redef fun affected_by_gravity do return false - - redef fun update(dt, world) - do - super - if world.t - creation_time >= weapon.bullet_lifespan then die world - end - - # Hit `body` - fun hit_enemy(body: Body, world: World) - do - body.hit(self.weapon.damage, world) - die world - end -end - -# `Bullet` shot by the player -class PlayerBullet - super Bullet - - redef fun update(dt, world) - do - super - - for i in world.planes do if self.intersects(i) then hit_enemy(i, world) - for i in world.enemies do if self.intersects(i) then hit_enemy(i, world) - end - - redef fun destroy(world) do - super - world.player_bullets.remove self - end -end - -# `Bullet` shot by an enemy -class EnemyBullet - super Bullet - - redef fun update(dt, world) do - super - - var player = world.player - if player != null and self.intersects(player) then hit_enemy(player, world) - end - - redef fun destroy(world) do - super - world.enemy_bullets.remove self - end -end - -# Fast shooting weapon -class Ak47 - super Weapon - - redef var damage = 10.0 - - redef var cooldown = 0.1 - - redef var power = 70.0 - - redef var bullet_lifespan = 3.0 - - redef var bullet_number = 200 -end - -# Powerup to equip an `Ak47` -class Ak47PU - super Powerup - - redef fun apply(player) do player.weapon = new Ak47 -end - -# Slow but powerful rocket launcher -class RocketLauncher - super Weapon - - redef var damage = 500.0 - - redef var cooldown = 1.5 - - redef var power = 50.0 - - redef var bullet_lifespan = 5.0 - - redef var bullet_number = 20 -end - -# Powerup to equip a `RocketLauncher` -class RocketLauncherPU - super Powerup - - redef fun apply(player) do player.weapon = new RocketLauncher -end - -# Base weapon, a bit slow -class Pistol - super Weapon - - redef var damage = 10.0 - - redef var cooldown = 0.3 - - redef var power = 70.0 - - redef var bullet_lifespan = 3.0 - - redef var bullet_number = 10000 -end - -# Healing powerup -class Life - super Powerup - - redef fun apply(player) do player.health += 50.0 -end - -redef class Float - # Fuzzy value in `[self-variation..self+variation]` - fun &(variation: Float): Float do return self - variation + 2.0*variation.rand -end diff --git a/contrib/action_nitro/src/game/game.nit b/contrib/action_nitro/src/game/game.nit deleted file mode 100644 index 8938c36a45..0000000000 --- a/contrib/action_nitro/src/game/game.nit +++ /dev/null @@ -1,17 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import core -import ai -import planegen diff --git a/contrib/action_nitro/src/game/planegen.nit b/contrib/action_nitro/src/game/planegen.nit deleted file mode 100644 index 667783c090..0000000000 --- a/contrib/action_nitro/src/game/planegen.nit +++ /dev/null @@ -1,185 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Enemy generation -module planegen - -import core - -redef class World - - # Max planes within view - var max_planes = 12 - - # Max human enemies within view - var max_enemies = 2 - - redef fun update(dt) do - super - spawn_enemy spawn_plane - end - - # Randomly spawn a plane if needed - fun spawn_plane: Bool do - var p = player - if p == null then return false - if p.altitude >= boss_altitude then - return false - end - for i in planes.reverse_iterator do - if i.out_of_screen(p, self) then - #print "Despawning plane" - i.destroy self - end - end - - if p.dead then return false - if planes.length >= max_planes then return false - if 100.rand < 95 then return false - - var pos - var xspawn = 50.0.rand - var direction: Int - if xspawn >= 25.0 then - xspawn = camera_view.right - 1.0 - direction = 1 - else - xspawn = camera_view.left - 8.0 - direction = 0 - end - var yspawn - if planes.length == 0 then - #print "First plane spawn" - yspawn = p.center.y & 25.0 - else - var py = p.center.y - var planes_below = 0 - var planes_above = 0 - var above_y = new Array[Float] - var below_y = new Array[Float] - for i in planes do - #print "Plane coordinates = {i.center}" - var iy = i.center.y - if iy > py then - planes_above += 1 - above_y.add iy - else - planes_below += 1 - below_y.add iy - end - end - if planes_below < planes_above then - if planes_below == 0 then - yspawn = py - 15.0.rand - else - yspawn = below_y.rand - 25.0.rand - end - else - if planes_above == 0 then - yspawn = py + 15.0.rand - else - yspawn = above_y.rand + 25.0.rand - end - end - if yspawn < 0.0 then - yspawn = py + 15.0.rand - end - end - pos = new Point3d[Float](xspawn, yspawn, 0.0 & 0.2) - #print("Spawning plane at position {pos}") - var platform_type = 100.rand - var plane: Platform - if platform_type < 90 then - plane = new Airplane(pos, 16.0, 4.0) - else - plane = new Helicopter(pos, 16.0, 4.0) - end - var xspeed = 50.0 - if direction == 1 then xspeed = -xspeed - plane.inertia = new Point3d[Float](xspeed, -0.1, 0.0) - planes.add(plane) - return true - end - - # Randomly spawn an enemy if needed - fun spawn_enemy(spawned_plane: Bool) do - var p = player - if p == null then return - if p.altitude >= boss_altitude then - for e in enemies.reverse_iterator do if e isa JetpackEnemy then - e.destroy self - end - return - end - for i in enemies.reverse_iterator do - if i.out_of_screen(p, self) then - #print "Despawning enemy" - i.destroy self - end - end - - if enemies.length >= max_enemies then return - if 100.rand < 95 then return - - if spawned_plane then - var pl = planes.last - var pos = new Point3d[Float](pl.center.x, pl.center.y + pl.top / 2.0, 0.0) - #print "Spawning walking enemy at positon {pos}" - var enemy = new WalkingEnemy(pos, 3.0, 3.0, new Pistol) - enemy.inertia = pl.inertia - pl.enemy = enemy - enemies.add enemy - return - end - # 0: Up - # 1: Right - # 2: Down - # 3: Left - var dirspawn = 4.rand - var xspawn - var yspawn - var xinertia - var yinertia - var cam = camera_view - if dirspawn == 0 then - xspawn = (cam.right - cam.left).rand - yspawn = cam.top + 10.0 - yinertia = -(10.0.rand) - xinertia = 0.0 - else if dirspawn == 1 then - yspawn = (cam.top - cam.bottom).rand - xspawn = cam.right + 10.0 - xinertia = -(10.0.rand) - yinertia = 0.0 - else if dirspawn == 2 then - xspawn = (cam.right - cam.left).rand - yspawn = cam.bottom - 10.0 - yinertia = 10.0.rand - xinertia = 0.0 - else if dirspawn == 3 then - yspawn = (cam.top - cam.bottom).rand - xspawn = cam.left - 10.0 - xinertia = 10.0.rand - yinertia = 0.0 - else - #print "Rand failed, should not happen" - abort - end - var pos = new Point3d[Float](xspawn, yspawn, 0.0) - #print "Spawning jetpack enemy at positon {pos}" - var enemy = new JetpackEnemy(pos, 3.0, 3.0, new Pistol) - enemy.inertia = new Point3d[Float](xinertia, yinertia, 0.0) - enemies.add enemy - end -end diff --git a/contrib/action_nitro/src/gen/.gitignore b/contrib/action_nitro/src/gen/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/action_nitro/src/gen/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/action_nitro/src/touch_ui.nit b/contrib/action_nitro/src/touch_ui.nit deleted file mode 100644 index b97be7e320..0000000000 --- a/contrib/action_nitro/src/touch_ui.nit +++ /dev/null @@ -1,38 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import gamnit::virtual_gamepad - -import action_nitro - -redef class App - redef fun on_create - do - super - - var gamepad = new VirtualGamepad - gamepad.add_dpad(["up","left","down","right"]) - gamepad.add_dpad(["w","a","s","d"]) - gamepad.add_button("space", planes_sheet.open_chute) - self.gamepad = gamepad - end - - redef fun begin_play(initial) - do - super - - var gamepad = self.gamepad - if gamepad != null then gamepad.visible = true - end -end diff --git a/contrib/asteronits/.gitignore b/contrib/asteronits/.gitignore deleted file mode 100644 index db11f0f1f7..0000000000 --- a/contrib/asteronits/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/nit_compile diff --git a/contrib/asteronits/Makefile b/contrib/asteronits/Makefile deleted file mode 100644 index 846c337290..0000000000 --- a/contrib/asteronits/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -NITC=nitc -NITLS=nitls - -all: bin/asteronits - -bin/asteronits: $(shell ${NITLS} -M src/asteronits.nit -m linux) pre-build - ${NITC} src/asteronits.nit -m linux -o $@ - -bin/texture_atlas_parser: ../../lib/gamnit/texture_atlas_parser.nit - ${NITC} ../../lib/gamnit/texture_atlas_parser.nit -o $@ - -src/spritesheet.nit: bin/texture_atlas_parser - bin/texture_atlas_parser art/sheet.xml --dir src/ -n spritesheet - -pre-build: src/spritesheet.nit - -check: bin/asteronits - NIT_TESTING=true bin/asteronits - -# --- -# Android - -android: bin/asteronits.apk -bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit -m android) android/res/ pre-build - ${NITC} src/android.nit -m android -o $@ - -android-release: $(shell ${NITLS} -M src/asteronits.nit -m android) android/res/ pre-build - ${NITC} src/android.nit -m android -o bin/asteronits.apk --release - -android/res/: art/icon.svg - make -C ../inkscape_tools/ - ../inkscape_tools/bin/svg_to_icons --out android/res --android art/icon.svg - -# --- -# iOS - -ios: bin/asteronits.app -bin/asteronits.app: $(shell ${NITLS} -M src/asteronits.nit -m ios -m src/touch_ui.nit) pre-build ios/AppIcon.appiconset/Contents.json - ${NITC} src/asteronits.nit -m ios -m src/touch_ui.nit -o $@ --compile-dir nit_compile - -ios/AppIcon.appiconset/Contents.json: art/icon.svg - mkdir -p ios - ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --ios --out ios/AppIcon.appiconset/ diff --git a/contrib/asteronits/README.md b/contrib/asteronits/README.md deleted file mode 100644 index 30998616d2..0000000000 --- a/contrib/asteronits/README.md +++ /dev/null @@ -1,15 +0,0 @@ -Sample portable 2D game implemented with the `simple_2d` API of gamnit - -This projects is organized in 3 modules, one per concern: - -* `game_logic` defines the pure game logic without any of the display details. - -* `asteronits` implements the display logic with support for keyboard input events. - -* `touch_ui` adds an interface for touchscreen devices with buttons to open fire and control the ship. - -# Art - -* Graphics and laser sound created by Kenney.nl under CC0. -* Remote explosion sound created by NenadSimic under CC0. -* Close explosion sound created by dklon under CC-BY 3.0. diff --git a/contrib/asteronits/android/.gitignore b/contrib/asteronits/android/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/asteronits/android/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/asteronits/art/icon.svg b/contrib/asteronits/art/icon.svg deleted file mode 100644 index d8b9998b04..0000000000 --- a/contrib/asteronits/art/icon.svg +++ /dev/null @@ -1,1886 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/asteronits/art/sheet.xml b/contrib/asteronits/art/sheet.xml deleted file mode 100644 index 71e1ccf17a..0000000000 --- a/contrib/asteronits/art/sheet.xml +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/contrib/asteronits/assets/.gitignore b/contrib/asteronits/assets/.gitignore deleted file mode 100644 index 23a22a6387..0000000000 --- a/contrib/asteronits/assets/.gitignore +++ /dev/null @@ -1 +0,0 @@ -images/controls.png diff --git a/contrib/asteronits/assets/images/sheet.png b/contrib/asteronits/assets/images/sheet.png deleted file mode 100644 index 8c58b86c2d..0000000000 Binary files a/contrib/asteronits/assets/images/sheet.png and /dev/null differ diff --git a/contrib/asteronits/assets/sounds/explosion_asteroids.wav b/contrib/asteronits/assets/sounds/explosion_asteroids.wav deleted file mode 100644 index bc2a5f7bc0..0000000000 Binary files a/contrib/asteronits/assets/sounds/explosion_asteroids.wav and /dev/null differ diff --git a/contrib/asteronits/assets/sounds/explosion_ship.wav b/contrib/asteronits/assets/sounds/explosion_ship.wav deleted file mode 100644 index 2291b2b9a6..0000000000 Binary files a/contrib/asteronits/assets/sounds/explosion_ship.wav and /dev/null differ diff --git a/contrib/asteronits/assets/sounds/fire.ogg b/contrib/asteronits/assets/sounds/fire.ogg deleted file mode 100644 index a56e01aff0..0000000000 Binary files a/contrib/asteronits/assets/sounds/fire.ogg and /dev/null differ diff --git a/contrib/asteronits/bin/.gitignore b/contrib/asteronits/bin/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/asteronits/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/asteronits/org.nitlanguage.asteronits.txt b/contrib/asteronits/org.nitlanguage.asteronits.txt deleted file mode 100644 index 7e19cd51d7..0000000000 --- a/contrib/asteronits/org.nitlanguage.asteronits.txt +++ /dev/null @@ -1,10 +0,0 @@ -Categories:Nit,Games -License:Apache2 -Web Site:http://nitlanguage.org -Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/asteronits -Issue Tracker:https://github.com/nitlang/nit/issues - -Summary:Destroy asteroids in this simple 2D sample game made with gamnit -Description: -Sample portable gamnit game implemented with the flat API. -. diff --git a/contrib/asteronits/package.ini b/contrib/asteronits/package.ini deleted file mode 100644 index e32fcca1ef..0000000000 --- a/contrib/asteronits/package.ini +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name=asteronits -tags=example -maintainer=Alexis Laferrière -license=Apache-2.0 -desc=Sample portable 2D game implemented with the `simple_2d` API of gamnit -[upstream] -browse=https://github.com/nitlang/nit/tree/master/contrib/asteronits/ -git=https://github.com/nitlang/nit.git -git.directory=contrib/asteronits/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues -apk=http://nitlanguage.org/fdroid/apk/asteronits.apk diff --git a/contrib/asteronits/src/.gitignore b/contrib/asteronits/src/.gitignore deleted file mode 100644 index 2e17176ee4..0000000000 --- a/contrib/asteronits/src/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -controls.nit -spritesheet.nit diff --git a/contrib/asteronits/src/android.nit b/contrib/asteronits/src/android.nit deleted file mode 100644 index e7ac9df1d0..0000000000 --- a/contrib/asteronits/src/android.nit +++ /dev/null @@ -1,35 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import ::android -import ::android::vibration - -import asteronits -import touch_ui - -redef class Ship - redef fun hit - do - super - app.vibrator.vibrate 20 - end -end - -redef class Asteroid - redef fun destroy - do - super - app.vibrator.vibrate 10 - end -end diff --git a/contrib/asteronits/src/asteronits.nit b/contrib/asteronits/src/asteronits.nit deleted file mode 100644 index e0c9991f96..0000000000 --- a/contrib/asteronits/src/asteronits.nit +++ /dev/null @@ -1,246 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Portable game to destroy asteroids -module asteronits is - app_name "Asteronits" - app_namespace "org.nitlanguage.asteronits" - app_version(1, 0, git_revision) -end - -import gamnit::flat - -import gamnit::landscape - -import game_logic -import spritesheet - -redef class Spritesheet - # Largest meteors, organized by color - var meteors_big: Array[Array[Texture]] = [ - [meteor_brown_big1, meteor_brown_big2, meteor_brown_big3, meteor_brown_big4], - [meteor_grey_big1, meteor_grey_big2, meteor_grey_big3, meteor_grey_big4]] - - # Medium size meteors, organized by color - var meteors_med: Array[Array[Texture]] = [ - [meteor_brown_med1, meteor_brown_med3], - [meteor_grey_med1, meteor_grey_med2]] - - # Small meteors, organized by color - var meteors_small: Array[Array[Texture]] = [ - [meteor_brown_small1, meteor_brown_small2], - [meteor_grey_small1, meteor_grey_small2]] - - # Tiny meteors, organized by color - # - # TODO use these in particles - var meteors_tiny: Array[Array[Texture]] = [ - [meteor_brown_tiny1, meteor_brown_tiny2], - [meteor_grey_tiny1, meteor_grey_tiny2]] - - # Available ships - var ships: Array[Texture] = [enemy_green1] -end - -redef class App - - # Current world in play - var world = new World(12, 2, display.aspect_ratio) is lazy - - # Sound effects - private var fx_fire = new Sound("sounds/fire.ogg") - private var fx_explosion_ship = new Sound("sounds/explosion_ship.wav") - private var fx_explosion_asteroids = new Sound("sounds/explosion_asteroids.wav") - - redef fun create_scene - do - super - - # Move the camera to show all the world world in the screen range - world_camera.reset_height(world.half_height * 2.0) - - ui_camera.reset_height 720.0 - end - - # Main spritesheet with ships, asteroids and beams - var spritesheet = new Spritesheet - - redef fun update(dt) - do - # Update game logic - world.do_turn dt - - # Setup new world if all asteroids are destroyed - if world.asteroids.is_empty then - sprites.clear - world = new World(world.n_asteroids*2, world.n_asteroid_parts+1, display.aspect_ratio) - end - end - - redef fun accept_event(event) - do - if super then return true - - if event isa QuitEvent then - exit 0 - else if event isa KeyEvent then - var thrust = event.thrust - if thrust != 0.0 then - app.world.ship.applied_thrust = if event.is_down then thrust else 0.0 - return true - end - - var rot = event.rotation - if rot != 0.0 then - app.world.ship.applied_rotation = if event.is_down then rot else 0.0 - return true - end - - if event.name == "space" and event.is_down then - app.world.ship.fire - return true - else if event.name == "escape" then - exit 0 - else if event.name == "." and event.is_down then - dynamic_resolution_ratio *= 2.0 - print dynamic_resolution_ratio - else if event.name == "," and event.is_down then - dynamic_resolution_ratio /= 2.0 - print dynamic_resolution_ratio - end - end - - return false - end -end - -redef class SpacialObject - # Main `Sprite` to draw for this object - var sprite: Sprite is noinit - - # All `Sprites` composing this object - var sprites: Collection[Sprite] = new Ref[Sprite](sprite) is lazy - - init do app.sprites.add_all sprites - - redef fun do_turn(dt) - do - super - sprite.rotation = rotation - pi/2.0 - end - - redef fun destroy - do - super - for s in sprites do app.sprites.remove s - end -end - -redef class Asteroid - - init - do - # Select texture from `size` and `color` - var tex = if size == 3 then - app.spritesheet.meteors_big[color].rand - else if size == 2 then - app.spritesheet.meteors_med[color].rand - else app.spritesheet.meteors_small[color].rand - - sprite = new Sprite(tex, center) - super - end - - redef fun destroy - do - super - app.fx_explosion_asteroids.play - end -end - -redef class Bullet - init - do - sprite = new Sprite(app.spritesheet.laser_blue01, center) - super - end -end - -redef class Ship - init - do - sprite = new Sprite(app.spritesheet.ships.rand, center) - sprites = [sprite, thrust_sprite] - - super - end - - private var thrust_sprite = new Sprite(app.spritesheet.fire09, new Point3d[Float](0.0, 0.0, 0.0)) - - private var sprites_with_fire: Array[Sprite] = [thrust_sprite, sprite] is lazy - - redef fun do_turn(dt) - do - super - - # Update position of the thrust sprite - var dist_to_engine = 45.0 - thrust_sprite.center.x = center.x - dist_to_engine*rotation.cos - thrust_sprite.center.y = center.y - dist_to_engine*rotation.sin - thrust_sprite.center.z = center.z - thrust_sprite.rotation = rotation - pi/2.0 - - # Show or hide the thrust sprite - if applied_thrust > 0.0 then - thrust_sprite.alpha = 1.0 - - else if thrust_sprite.alpha > 0.0 then - thrust_sprite.alpha -= dt*4.0 - if thrust_sprite.alpha < 0.0 then thrust_sprite.alpha = 0.0 - end - - # HACK, the "enemy" ship used for the player points downwards - sprite.rotation += pi - end - - redef fun fire - do - super - app.fx_fire.play - end - - redef fun hit - do - super - app.fx_explosion_ship.play - end -end - -redef class KeyEvent - - # How does this event affect the ship thrust? - fun thrust: Float - do - if name == "up" or name == "w" then return 1.0 - return 0.0 - end - - # How does this event affect the ship thrust? - fun rotation: Float - do - if name == "right" or name == "d" then return -1.0 - if name == "left" or name == "a" then return 1.0 - return 0.0 - end -end diff --git a/contrib/asteronits/src/game_logic.nit b/contrib/asteronits/src/game_logic.nit deleted file mode 100644 index 785fe9d523..0000000000 --- a/contrib/asteronits/src/game_logic.nit +++ /dev/null @@ -1,276 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Pure game logic, independent of gamnit and other display concerns -module game_logic - -import geometry::points_and_lines - -# Root of all entities of a single play -class World - - # Number of original asteroids per play - var n_asteroids: Int - - # Number of parts created when an asteroid explodes - var n_asteroid_parts: Int - - # Ratio of the world: height / width - var ratio_height_width: Float - - # Minimum half size of the world, applied either to `half_width` of `half_height` - private var min_half_size = 500.0 - - # Width of the world - var half_width: Float = if ratio_height_width <= 1.0 then - min_half_size - else min_half_size * ratio_height_width is lazy - - # Height of the world - var half_height: Float = if ratio_height_width >= 1.0 then - min_half_size - else min_half_size / ratio_height_width is lazy - - # Player's ship - var ship = new Ship(self) - - # All live spacial objects - var objects = new Array[SpacialObject].with_items(ship) - - # All live asteroids - var asteroids = new Array[Asteroid] - - # All live bullets - var bullets = new Array[SpacialObject] - - init - do - for a in n_asteroids.times do - var asteroid = new Asteroid(self, 3) - asteroid.center.x = half_width - 2.0*half_width.rand - asteroid.center.y = half_height - 2.0*half_height.rand - asteroid.rotation_inertia = 0.5 - 1.0.rand - - objects.add asteroid - asteroids.add asteroid - end - end - - # Execute a turn that took `dt` seconds - fun do_turn(dt: Float) - do - for object in objects do object.do_turn dt - - for object in objects.to_a do if not object isa Asteroid then - - for asteroid in asteroids.to_a do - var d2 = object.center.dist2(asteroid.center) - - var r = object.radius + asteroid.radius - if d2 < r*r then - # Boom - if object == ship then - # The ship is invincible - # TODO health and losing - ship.hit - else - object.destroy - end - - asteroid.destroy - break - end - end - end - end -end - -# Physical object in space physics -abstract class SpacialObject - - # World in which this object belongs - var world: World - - # Current position - var center = new Point3d[Float](0.0, 0.0, 0.0) - - # Position inertia, applied on `center` at each `do_turn` - var inertia = new Point3d[Float](0.0, 0.0, 0.0) - - # Current rotation - var rotation = 0.0 - - # Rotation inertia, applied on `rotation` at each `do_turn` - var rotation_inertia = 0.0 - - # Rotation force, currently applied by the pilot - var applied_rotation = 0.0 is writable - - # Thrust force, currently applied by the pilot - var applied_thrust = 0.0 is writable - - # Radius of this object for collision detection - var radius: Float is noinit - - # New instance copying the data from `other` with an optional `variation` - init copy(other: SpacialObject, variation: nullable Float) - do - init other.world - - if variation == null then variation = 0.0 - - center.x = other.center.x - center.y = other.center.y - center.z = other.center.z - - inertia.x = other.inertia.x + variation - 2.0*variation.rand - inertia.y = other.inertia.y + variation - 2.0*variation.rand - - rotation = other.rotation - if variation != 0.0 then rotation = 2.0 * pi.rand - end - - # Apply `thrust` forward on this object - fun apply_thrust(thrust: Float) - do - inertia.x += thrust * rotation.cos - inertia.y += thrust * rotation.sin - end - - # Execute a turn that took `dt` seconds - fun do_turn(dt: Float) - do - # Forces to inertia - var t = applied_thrust * 5.0 - inertia.x += t * rotation.cos - inertia.y += t * rotation.sin - - # Arcade rotation - var r = applied_rotation * 0.05 - rotation += r - - # Realistic rotation, kept for reference and reality minded individuals - #var r = applied_rotation * 0.2 - #rotation_inertia += r - #rotation_inertia = rotation_inertia.clamp(-2.0, 2.0) - - # Inertia to position - rotation += rotation_inertia * dt - center.x += inertia.x * dt - center.y += inertia.y * dt - center.z += inertia.z * dt - - # Wrap objects so they stay in the screen - while center.x < -world.half_width do center.x += 2.0 * world.half_width - while center.x > world.half_width do center.x -= 2.0 * world.half_width - while center.y < -world.half_height do center.y += 2.0 * world.half_height - while center.y > world.half_height do center.y -= 2.0 * world.half_height - end - - # Destroy this object - fun destroy do world.objects.remove self -end - -# Player's ship -class Ship - super SpacialObject - - init do radius = 20.0 - - # Open fire forward - fun fire - do - var bullet = new Bullet.copy(world.ship) - bullet.center.z = -1.0 # in the background - bullet.apply_thrust 500.0 # give a boost - - world.objects.add bullet - world.bullets.add bullet - end - - # Something hits the ship - fun hit do end -end - -# Asteroid, the main obstacle in this game -class Asteroid - super SpacialObject - - # Size of this asteroid, should be greater than 0 - var size: Int - - # Color, or type, on this asteroid - var color: Int = 2.rand - - init - do - rotation_inertia = 0.5 - 1.0.rand - radius = 22.5 * size.to_f - end - - # New asteroid breaking off from `other` - init break_off(other: Asteroid) - do - size = other.size - 1 - color = other.color - - copy(other, 60.0) - end - - # Explode and break off this asteroid - redef fun destroy - do - super - - world.asteroids.remove self - - if size == 1 then return # Do not break off - - for p in world.n_asteroid_parts.times do - var asteroid = new Asteroid.break_off(self) - asteroid.size = size - 1 - asteroid.color = color - - asteroid.inertia.x += 1.0 - 2.0.rand - asteroid.inertia.y += 1.0 - 2.0.rand - - world.objects.add asteroid - world.asteroids.add asteroid - end - end -end - -# Bullet or beam fired from a `Ship` -class Bullet - super SpacialObject - - # Time left before this bullet expires - var ttl = 5.0 - - init do radius = 0.0 - - redef fun do_turn(dt) - do - super - - ttl -= dt - if ttl <= 0.0 then destroy - end - - redef fun destroy - do - super - world.bullets.remove self - end -end diff --git a/contrib/asteronits/src/touch_ui.nit b/contrib/asteronits/src/touch_ui.nit deleted file mode 100644 index 2264f28ddd..0000000000 --- a/contrib/asteronits/src/touch_ui.nit +++ /dev/null @@ -1,36 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Touchscreen UI for mobile devices -module touch_ui - -import gamnit::virtual_gamepad - -import asteronits - -redef class App - redef fun create_scene - do - super - - var gamepad = new VirtualGamepad - - var dpad = gamepad.add_dpad - if dpad != null then dpad.show_down = false - - gamepad.add_button("space", gamepad_spritesheet.fire) - gamepad.visible = true - self.gamepad = gamepad - end -end diff --git a/contrib/model_viewer/.gitignore b/contrib/model_viewer/.gitignore deleted file mode 100644 index 1e1503b35d..0000000000 --- a/contrib/model_viewer/.gitignore +++ /dev/null @@ -1 +0,0 @@ -android/ diff --git a/contrib/model_viewer/Makefile b/contrib/model_viewer/Makefile deleted file mode 100644 index d64fbaa228..0000000000 --- a/contrib/model_viewer/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -NITC=nitc -NITLS=nitls - -all: bin/model_viewer - -bin/model_viewer: $(shell ${NITLS} -M src/model_viewer.nit linux) - ${NITC} src/model_viewer.nit -m linux -o $@ - -check: bin/model_viewer - NIT_TESTING=true bin/model_viewer - -# --- -# Android - -android: bin/model_viewer.apk -bin/model_viewer.apk: $(shell ${NITLS} -M src/model_viewer.nit -m android) android/res/ - ${NITC} src/model_viewer.nit -m android -o $@ - -android-release: $(shell ${NITLS} -M src/model_viewer.nit -m android) android/res/ - ${NITC} src/model_viewer.nit -m android -o bin/model_viewer.apk --release - -android/res/: art/icon.png - make -C ../inkscape_tools/ - mkdir -p android/res/drawable-ldpi/ android/res/drawable-mdpi/ android/res/drawable-hdpi/ \ - android/res/drawable-xhdpi/ android/res/drawable-xxhdpi/ android/res/drawable-xxxhdpi/ - convert -resize 36x36 art/icon.png android/res/drawable-ldpi/icon.png - convert -resize 48x48 art/icon.png android/res/drawable-mdpi/icon.png - convert -resize 72x72 art/icon.png android/res/drawable-hdpi/icon.png - convert -resize 96x96 art/icon.png android/res/drawable-xhdpi/icon.png - convert -resize 144x144 art/icon.png android/res/drawable-xxhdpi/icon.png - convert -resize 192x192 art/icon.png android/res/drawable-xxxhdpi/icon.png - -bin/model_viewer_vr.apk: $(shell ${NITLS} -M src/model_viewer.nit android) android/res/ android/libs/cardboard.jar - ${NITC} src/model_viewer.nit -m android -m ../../lib/gamnit/depth/vr.nit -o $@ - -android/libs/cardboard.jar: - mkdir -p android/libs - curl --progress-bar -o android/libs/cardboard.jar \ - https://raw.githubusercontent.com/googlevr/gvr-android-sdk/e226f15c/CardboardSample/libs/cardboard.jar - -# --- -# iOS - -ios: bin/model_viewer.app -bin/model_viewer.app: $(shell ${NITLS} -M src/model_viewer.nit -m ios) - ${NITC} src/model_viewer.nit -m ios -o $@ --compile-dir nit_compile diff --git a/contrib/model_viewer/README.md b/contrib/model_viewer/README.md deleted file mode 100644 index 5c91a58a67..0000000000 --- a/contrib/model_viewer/README.md +++ /dev/null @@ -1,28 +0,0 @@ -Sample portable 3D app implemented with the gamnit depth framework - -This application uses the _depth_ framework to load and display 3D models. -It also applies the _flat_ framework to display the static UI elements (like the "Next model" label). - -The pretty earth model (`GlobeModel`) is implemented by a material with a custom graphical program. -It renders the earth with an displaced surface, a cloud layer, city lights and Phong lighting effects on the water. - -# Variations - -* For the desktop, the application is compiled to `bin/model_viewer`. - - This variation can show more models specified on the command line. - - ~~~ - bin/model_viewer [path_to_model ...] - ~~~ - -* For Android, the standard application is compiled to `bin/model_viewer.apk`. -* The virtual reality variant `bin/model_viewer_vr.apk` targets Android and uses Google Cardboard for head tracking. - -# Art - -* 3D models `Tree_01` and `Oak_Fall_01` were created by Kenney.nl and published under CC0. -* 3D model `Quandtum_BA-2_v1_1` was created by Quandtum and published under CC0. -* Some textures on the `Quandtum_BA-2_v1_1` model have been created with images from goodtextures.com. - These images can be used in free softwares, some restrictions still applies for modifications and other uses. -* Globe textures credit: NASA, Visible Earth diff --git a/contrib/model_viewer/art/icon.png b/contrib/model_viewer/art/icon.png deleted file mode 100644 index 71612a4e6d..0000000000 Binary files a/contrib/model_viewer/art/icon.png and /dev/null differ diff --git a/contrib/model_viewer/art/icon.xcf b/contrib/model_viewer/art/icon.xcf deleted file mode 100644 index efcf652c69..0000000000 Binary files a/contrib/model_viewer/art/icon.xcf and /dev/null differ diff --git a/contrib/model_viewer/art/next-prev-model.svg b/contrib/model_viewer/art/next-prev-model.svg deleted file mode 100644 index 77f9203727..0000000000 --- a/contrib/model_viewer/art/next-prev-model.svg +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/model_viewer/art/splash.xcf b/contrib/model_viewer/art/splash.xcf deleted file mode 100644 index 41a139054d..0000000000 Binary files a/contrib/model_viewer/art/splash.xcf and /dev/null differ diff --git a/contrib/model_viewer/assets/globe/clouds.png b/contrib/model_viewer/assets/globe/clouds.png deleted file mode 100644 index 6a34285fb2..0000000000 Binary files a/contrib/model_viewer/assets/globe/clouds.png and /dev/null differ diff --git a/contrib/model_viewer/assets/globe/earth.jpg b/contrib/model_viewer/assets/globe/earth.jpg deleted file mode 100644 index 53388c8b85..0000000000 Binary files a/contrib/model_viewer/assets/globe/earth.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/globe/elevation.jpg b/contrib/model_viewer/assets/globe/elevation.jpg deleted file mode 100644 index 48737a089c..0000000000 Binary files a/contrib/model_viewer/assets/globe/elevation.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/globe/lights.jpg b/contrib/model_viewer/assets/globe/lights.jpg deleted file mode 100644 index 48dff8d1d2..0000000000 Binary files a/contrib/model_viewer/assets/globe/lights.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/globe/seas.jpg b/contrib/model_viewer/assets/globe/seas.jpg deleted file mode 100644 index a078e6642e..0000000000 Binary files a/contrib/model_viewer/assets/globe/seas.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/models/Oak_Fall_01.mtl b/contrib/model_viewer/assets/models/Oak_Fall_01.mtl deleted file mode 100644 index 911da3ebac..0000000000 --- a/contrib/model_viewer/assets/models/Oak_Fall_01.mtl +++ /dev/null @@ -1,13 +0,0 @@ -# -## Alias OBJ Material File -# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited - -newmtl Fall_Leafs -Ka 0.000000 0.000000 0.000000 -Kd 0.619608 0.356863 0.235294 -Ks 0.330000 0.330000 0.330000 - -newmtl Wood -Ka 0.000000 0.000000 0.000000 -Kd 0.666667 0.545098 0.356863 -Ks 0.330000 0.330000 0.330000 diff --git a/contrib/model_viewer/assets/models/Oak_Fall_01.obj b/contrib/model_viewer/assets/models/Oak_Fall_01.obj deleted file mode 100644 index e77e7b3a9a..0000000000 --- a/contrib/model_viewer/assets/models/Oak_Fall_01.obj +++ /dev/null @@ -1,272 +0,0 @@ -# Alias OBJ Model File -# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited -# File units = meters - -mtllib Oak_Fall_01.mtl - -g Mesh1 Oak_Fall Model - -usemtl Fall_Leafs -v 1.57617 1.5335 -1.365 -vt -0.310227 0.697045 -vn 0.5 0 -0.866025 -v 0.788083 1.5335 -1.82 -vt 0.103409 0.697045 -v 0.788083 2.817 -1.82 -vt 0.103409 1.28045 -vn 0.497668 0.0964695 -0.861986 -v 1.57617 2.817 -1.365 -vt -0.310227 1.28045 -f 1/1/1 2/2/1 3/3/2 4/4/2 - -v 0.788083 1.27 -1.4196 -vt 0.0124091 0.936811 -vn 0.302516 -0.796201 -0.523973 -vt 0.103409 1.13477 -vt -0.310227 1.13477 -v 1.22941 1.27 -1.1648 -vt -0.219227 0.936811 -f 5/5/3 2/6/3 1/7/3 6/8/3 - -v 0.346757 1.27 -1.1648 -vt -0.401227 0.651596 -vn -0.302516 -0.796201 -0.523973 -v 1.80478e-015 1.5335 -1.365 -vt -0.310227 0.849557 -vt -0.723864 0.849557 -vt -0.632864 0.651596 -f 7/9/4 8/10/4 2/11/4 5/12/4 - -v 0 1.5335 -0.455 -vt -0.206818 0.421735 -vn -0.605032 -0.796201 -3.68114e-016 -vt -0.620455 0.421735 -vt -0.529455 0.223774 -v 0.346757 1.27 -0.6552 -vt -0.297818 0.223774 -f 9/13/5 8/14/5 7/15/5 10/16/5 - -vt -0.620455 0.697045 -vn -1 0 -7.93309e-016 -vt -0.206818 0.697045 -v 0 2.817 -0.455 -vt -0.206818 1.28045 -vn -0.995336 0.0964695 -6.93437e-016 -v 1.80478e-015 2.817 -1.365 -vt -0.620455 1.28045 -f 8/17/6 9/18/6 11/19/7 12/20/7 - -vt -0.103409 0.697045 -vn -0.5 0 0.866025 -v 0.788083 1.5335 -0 -vt 0.310227 0.697045 -v 0.788083 2.817 -0 -vt 0.310227 1.28045 -vn -0.497668 0.0964695 0.861986 -vt -0.103409 1.28045 -f 9/21/8 13/22/8 14/23/9 11/24/9 - -v 0.788083 1.27 -0.4004 -vt 0.219227 0.0811668 -vn -0.302516 -0.796201 0.523973 -vt 0.310227 0.279128 -vt -0.103409 0.279128 -vt -0.0124091 0.0811668 -f 15/25/10 13/26/10 9/27/10 10/28/10 - -v 1.22941 1.27 -0.6552 -vt 0.632864 0.366382 -vn 0.302516 -0.796201 0.523973 -v 1.57617 1.5335 -0.455 -vt 0.723864 0.564342 -vt 0.310227 0.564342 -vt 0.401227 0.366382 -f 16/29/11 17/30/11 13/31/11 15/32/11 - -vt 0.297818 0.794204 -vn 0.605032 -0.796201 4.38273e-018 -vt 0.529455 0.794204 -vt 0.620455 0.992165 -vt 0.206818 0.992165 -f 16/33/12 6/34/12 1/35/12 17/36/12 - -vt -0.558823 0.297818 -vn 0 -1 -0 -v 0.902339 1.27 -0.795744 -vt -0.410154 0.361702 -vt -0.558823 0.529455 -f 16/37/13 18/38/13 6/39/13 - -vt -0.35822 0.182 -f 15/40/13 18/38/13 16/37/13 - -v 0.673827 1.27 -0.795744 -vt -0.306285 0.361702 -f 15/40/13 19/41/13 18/38/13 - -vt -0.157617 0.297818 -f 10/42/13 19/41/13 15/40/13 - -v 0.673827 1.27 -1.02426 -vt -0.306285 0.465571 -f 19/41/13 10/42/13 20/43/13 - -vt -0.35822 0.645273 -f 10/42/13 5/44/13 20/43/13 - -vt -0.157617 0.529455 -f 5/44/13 10/42/13 7/45/13 - -v 0.902339 1.27 -1.02426 -vt -0.410154 0.465571 -f 20/43/13 5/44/13 21/46/13 - -f 21/46/13 5/44/13 6/39/13 - -f 21/46/13 6/39/13 18/38/13 - -usemtl Wood -v 0.968014 0 -0.73007 -vt 0.33185 -0.0227234 -vn 0.998666 0.0516433 -0 -v 0.968014 0 -1.08993 -vt 0.495423 -0.0227234 -vt 0.465571 0.555321 -vt 0.361702 0.555321 -f 22/47/14 23/48/14 21/49/14 18/50/14 - -v 0.608153 0 -0.73007 -vt -0.276433 0.33185 -v 0.608153 0 -1.08993 -vt -0.276433 0.495423 -vt -0.440006 0.495423 -vt -0.440006 0.33185 -f 24/51/13 25/52/13 23/53/13 22/54/13 - -vt -0.33185 0.0142759 -vn -0.998666 0.0516433 -0 -vt -0.361702 0.59232 -vt -0.465571 0.59232 -vt -0.495423 0.0142759 -f 24/55/15 19/56/15 20/57/15 25/58/15 - -vt 0.440006 0.0171378 -vn -1.52886e-017 0.0516433 0.998666 -vt 0.410154 0.595182 -vt 0.306285 0.595182 -vt 0.276433 0.0171378 -f 22/59/16 18/60/16 19/61/16 24/62/16 - -vt -0.276433 -0.0255853 -vn -1.52886e-017 0.0516433 -0.998666 -vt -0.306285 0.552459 -vt -0.410154 0.552459 -vt -0.440006 -0.0255853 -f 25/63/17 20/64/17 21/65/17 23/66/17 - -usemtl Fall_Leafs -vt 0.206818 0.697045 -vn 1 0 -0 -vt 0.620455 0.697045 -vt 0.620455 1.28045 -vn 0.995336 0.0964695 3.71398e-018 -v 1.57617 2.817 -0.455 -vt 0.206818 1.28045 -f 17/67/18 1/68/18 4/69/19 26/70/19 - -vt 0.206818 1.11904 -vt 0.620455 1.11904 -v 1.24517 4.5085 -1.1739 -vt 0.533591 1.90248 -vn 0.981387 0.192039 7.39332e-018 -v 1.24517 4.5085 -0.6461 -vt 0.293682 1.90248 -f 26/71/19 4/72/19 27/73/20 28/74/20 - -vt 0.103409 1.08464 -v 0.788083 4.5085 -1.4378 -vt 0.0165455 1.86809 -vn 0.490694 0.192039 -0.849906 -vt -0.223364 1.86809 -vt -0.310227 1.08464 -f 3/75/2 29/76/21 27/77/21 4/78/2 - -vt -0.310227 1.15343 -vn -0.497668 0.0964695 -0.861986 -v 0.330995 4.5085 -1.1739 -vt -0.397091 1.93688 -vn -0.490694 0.192039 -0.849906 -vt -0.637 1.93688 -vt -0.723864 1.15343 -f 12/79/22 30/80/23 29/81/23 3/82/22 - -v 0.330995 4.5085 -0.6461 -vt -0.293682 2.04007 -vn -0.981387 0.192039 -5.87097e-016 -vt -0.533591 2.04007 -vt -0.620455 1.25662 -vt -0.206818 1.25662 -f 31/83/24 30/84/24 12/85/7 11/86/7 - -vt -0.293682 1.50563 -vn -0.680934 0.732345 -5.13467e-017 -v 0.788083 4.9335 -0.91 -vt -0.413636 1.78933 -vt -0.533591 1.50563 -f 31/87/25 32/88/25 30/89/25 - -v 0.788083 4.5085 -0.3822 -vt 0.223364 1.6368 -vn -0.340467 0.732345 0.589706 -vt 0.103409 1.9205 -vt -0.0165455 1.6368 -f 33/90/26 32/91/26 31/92/26 - -vt 0.517045 1.65816 -vn 0.340467 0.732345 0.589706 -vt 0.397091 1.37446 -vt 0.637 1.37446 -f 32/93/27 33/94/27 28/95/27 - -vt 0.723864 1.22223 -vn 0.497668 0.0964695 0.861986 -vt 0.637 2.00567 -vn 0.490694 0.192039 0.849906 -vt 0.397091 2.00567 -vt 0.310227 1.22223 -f 26/96/28 28/97/29 33/98/29 14/99/28 - -vt 0.310227 1.29102 -vt 0.223364 2.07446 -vn -0.490694 0.192039 0.849906 -vt -0.0165455 2.07446 -vt -0.103409 1.29102 -f 14/100/9 33/101/30 31/102/30 11/103/9 - -vn 0.5 0 0.866025 -vt 0.723864 0.697045 -vt 0.723864 1.28045 -f 13/22/31 17/104/31 26/105/28 14/23/28 - -vt 0.533591 0.980952 -vn 0.680934 0.732345 -5.13467e-017 -vt 0.413636 1.26465 -vt 0.293682 0.980952 -f 27/106/32 32/107/32 28/108/32 - -vt 0.0165455 0.849782 -vn 0.340467 0.732345 -0.589706 -vt -0.103409 1.13348 -vt -0.223364 0.849782 -f 29/109/33 32/110/33 27/111/33 - -vt -0.397091 1.11212 -vn -0.340467 0.732345 -0.589706 -vt -0.517045 1.39582 -vt -0.637 1.11212 -f 30/112/34 32/113/34 29/114/34 - -vt -0.723864 0.697045 -vn -0.5 0 -0.866025 -vt -0.723864 1.28045 -f 2/115/35 8/1/35 12/4/22 3/116/22 diff --git a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.mtl b/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.mtl deleted file mode 100644 index 51e49b9650..0000000000 --- a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.mtl +++ /dev/null @@ -1,16 +0,0 @@ -# Blender MTL File: 'Quandtum_BA-2_v1_1.blend' -# Material Count: 1 - -newmtl Bot -Ns 96.078431 -Ka 1.000000 1.000000 1.000000 -Kd 0.640000 0.640000 0.640000 -Ks 1.000000 1.000000 1.000000 -Ni 1.000000 -d 1.000000 -illum 2 -map_Ka textures/Turret-Emission.jpg -map_Kd textures/Turret-Diffuse.jpg -map_Bump textures/Turret-Normal.jpg -map_Ks textures/Turret-Specular.jpg -map_Ns textures/Turret-Specular.jpg diff --git a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.obj b/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.obj deleted file mode 100644 index 1eb5ac9272..0000000000 --- a/contrib/model_viewer/assets/models/Quandtum_BA-2_v1_1.obj +++ /dev/null @@ -1,12305 +0,0 @@ -# Blender v2.69 (sub 0) OBJ File: 'Quandtum_BA-2_v1_1.blend' -# www.blender.org -mtllib Quandtum_BA-2_v1_1.mtl -o Bot.Mesh -v 1.187918 -1.208566 -1.835787 -v 1.214283 -2.337932 -2.085136 -v 1.260280 -1.972362 -2.092242 -v 1.244883 -1.534969 -1.987321 -v 1.364486 -1.256258 -1.668571 -v 1.308682 -2.363430 -1.995737 -v 1.405975 -2.011715 -1.954265 -v 1.420053 -1.582284 -1.821430 -v 1.087162 -2.560631 -2.035301 -v 1.346916 -2.381913 -1.942518 -v 1.436000 -1.290831 -1.569027 -v 1.171437 -2.608611 -1.939058 -v 1.491001 -1.616583 -1.722674 -v 1.464985 -2.040243 -1.872126 -v 1.176600 -2.315488 -2.022191 -v 1.218549 -1.975778 -2.027928 -v 1.203741 -1.560968 -1.928250 -v 1.331250 -1.294212 -1.612260 -v 1.280961 -2.353608 -1.928371 -v 1.371484 -2.021559 -1.888433 -v 1.384762 -1.609924 -1.760863 -v 1.065838 -2.539663 -1.966229 -v 1.338816 -2.385806 -1.864556 -v 1.422199 -1.329201 -1.501505 -v 1.155298 -2.611952 -1.863357 -v 1.474728 -1.647468 -1.652153 -v 1.449890 -2.057932 -1.796968 -v 1.200002 -2.702898 -1.917805 -v 1.422740 -2.462110 -1.922399 -v 1.450668 -1.047202 -1.388864 -v 1.559489 -2.104904 -1.852897 -v 1.061223 -0.969297 -1.590438 -v 1.599714 -1.648835 -1.696641 -v 1.316506 -1.039091 -1.331341 -v 1.229836 -1.009296 -1.434471 -v 1.128464 -1.018202 -1.705166 -v 1.293968 -1.062904 -1.548429 -v 1.361000 -1.095311 -1.455123 -v 1.263641 -1.104268 -1.493734 -v 1.351737 -1.135795 -1.388062 -v 1.541195 -1.281839 -1.525198 -v 0.960262 -1.205779 -1.928953 -v 1.092571 -2.336442 -2.134946 -v 1.072430 -1.970062 -2.169119 -v 1.019030 -1.532205 -2.079750 -v 0.716176 -1.248321 -1.933888 -v 0.962075 -2.359186 -2.137584 -v 0.871023 -2.005166 -2.173191 -v 0.776878 -1.574409 -2.084645 -v 0.897126 -2.376407 -2.126591 -v 0.594692 -1.280531 -1.913326 -v 1.015041 -2.606696 -2.003062 -v 0.656356 -1.606364 -2.064247 -v 0.770780 -2.031744 -2.156225 -v 1.075783 -2.314254 -2.063450 -v 1.057024 -1.973800 -2.094031 -v 1.006406 -1.558553 -2.009008 -v 0.699599 -1.286479 -1.870759 -v 0.934820 -2.349370 -2.070027 -v 0.849257 -2.015166 -2.102151 -v 0.759000 -1.602263 -2.016952 -v 1.143589 -2.561322 -2.012209 -v 0.848169 -2.379799 -2.065350 -v 0.556394 -1.318601 -1.855829 -v 0.973411 -2.609725 -1.937794 -v 0.617874 -1.636978 -2.002815 -v 0.728485 -2.049100 -2.092198 -v 0.977802 -2.700177 -2.008739 -v 0.827289 -2.454819 -2.166083 -v 0.463054 -1.035111 -1.793038 -v 0.688576 -2.094242 -2.209312 -v 0.883613 -0.967122 -1.663124 -v 0.559933 -1.636105 -2.122165 -v 0.518541 -1.029322 -1.657903 -v 0.653243 -1.002236 -1.670437 -v 0.915074 -1.015589 -1.792494 -v 0.686285 -1.055465 -1.797119 -v 0.572414 -1.085656 -1.777847 -v 0.668695 -1.096984 -1.737211 -v 0.531159 -1.125748 -1.723878 -v 0.489167 -1.268959 -1.955734 -v 1.110811 -2.540214 -1.947824 -v 1.026663 -2.571176 -2.036524 -v 1.187353 -2.573143 -1.970763 -v 0.996289 -2.560848 -1.969903 -v 1.162521 -2.562883 -1.901873 -v 1.078477 -1.201310 -1.892914 -v 1.136309 -1.527771 -2.043996 -v 1.169975 -1.966375 -2.139381 -v 1.155773 -2.334053 -2.115678 -v 1.284587 -1.227049 -1.760147 -v 1.340787 -1.553306 -1.912281 -v 1.340047 -1.987613 -2.029829 -v 1.265966 -2.347814 -2.044697 -v 1.217022 -1.337758 -1.906325 -v 1.098737 -0.923019 -1.639856 -v 1.179533 -2.473479 -2.054002 -v 1.242860 -2.166841 -2.099814 -v 1.262352 -1.759928 -2.056663 -v 1.396007 -1.386103 -1.736821 -v 1.258708 -0.966228 -1.488358 -v 1.246897 -2.491674 -1.990206 -v 1.364459 -2.199685 -1.984657 -v 1.426687 -1.804316 -1.901032 -v 1.110583 -2.575928 -2.012491 -v 1.507285 -1.256169 -1.591771 -v 1.565490 -1.623118 -1.763035 -v 1.524171 -2.078762 -1.918540 -v 1.386359 -2.434413 -1.986806 -v 1.194369 -2.666681 -1.980072 -v 1.070510 -2.689307 -1.917963 -v 1.265770 -2.511589 -1.950470 -v 1.413709 -2.223495 -1.916103 -v 1.468500 -1.421149 -1.635915 -v 1.323499 -0.997551 -1.398171 -v 1.493247 -1.836494 -1.808384 -v 1.108880 -1.554659 -1.977778 -v 1.140903 -1.970580 -2.068469 -v 1.128142 -2.312219 -2.047508 -v 1.247874 -1.262520 -1.693531 -v 1.294524 -1.578913 -1.857065 -v 1.294047 -1.991927 -1.969039 -v 1.225943 -2.327979 -1.983734 -v 1.171964 -1.385746 -1.855236 -v 1.144782 -2.444305 -1.992006 -v 1.202458 -2.157926 -2.035218 -v 1.220451 -1.774855 -1.994285 -v 1.361531 -1.420626 -1.679042 -v 1.222582 -2.476504 -1.922601 -v 1.332361 -2.200018 -1.917532 -v 1.391296 -1.823203 -1.837426 -v 1.083029 -2.558944 -1.944655 -v 1.040718 -2.699124 -1.845459 -v 1.258468 -2.511830 -1.872606 -v 1.401053 -2.234350 -1.839309 -v 1.452947 -1.457120 -1.567527 -v 1.477168 -1.860866 -1.735320 -v 0.975849 -0.963651 -1.635029 -v 1.144347 -0.984398 -1.525028 -v 1.060535 -2.792873 -1.896688 -v 1.405405 -0.929884 -1.320697 -v 1.578456 -1.432248 -1.602142 -v 1.596285 -1.887691 -1.787343 -v 1.498562 -2.297402 -1.896762 -v 1.325420 -2.597713 -1.929512 -v 1.025881 -1.011400 -1.758713 -v 1.219075 -1.035526 -1.634266 -v 1.416718 -1.021549 -1.455423 -v 1.188463 -1.087421 -1.581340 -v 1.158191 -1.113384 -1.770476 -v 1.329227 -1.159581 -1.608500 -v 1.398500 -1.193071 -1.512075 -v 1.297446 -1.199240 -1.552997 -v 1.386968 -1.232498 -1.444784 -v 1.495931 -1.164521 -1.457031 -v 0.837939 -1.221580 -1.942935 -v 0.897677 -1.547881 -2.093620 -v 0.971496 -1.983101 -2.180656 -v 1.027174 -2.344890 -2.142421 -v 0.986251 -1.334933 -2.000767 -v 0.892480 -0.920494 -1.724265 -v 1.092677 -2.472415 -2.089547 -v 1.086078 -2.164921 -2.163977 -v 1.050467 -1.757334 -2.143375 -v 0.738824 -1.378057 -2.005769 -v 0.671339 -0.959037 -1.728736 -v 0.999554 -2.488646 -2.091429 -v 0.917981 -2.194219 -2.167375 -v 0.823292 -1.796929 -2.147968 -v 0.560545 -1.244579 -1.979218 -v 0.631410 -1.611682 -2.145301 -v 0.760315 -2.069410 -2.231143 -v 0.898952 -2.428447 -2.186274 -v 1.026226 -2.664622 -2.048883 -v 0.957828 -2.507818 -2.076493 -v 0.834317 -2.216401 -2.153215 -v 0.615678 -1.410708 -1.984926 -v 0.561274 -0.988219 -1.710107 -v 0.710224 -1.826907 -2.128831 -v 0.816670 -1.257241 -1.869998 -v 0.891415 -1.573978 -2.022035 -v 0.961585 -1.987857 -2.105098 -v 1.013387 -2.325377 -2.070721 -v 0.981553 -1.383415 -1.933160 -v 1.074604 -2.443445 -2.020727 -v 1.069786 -2.156301 -2.089513 -v 1.036299 -1.772601 -2.069648 -v 0.722176 -1.412799 -1.940694 -v 0.969815 -2.473409 -2.026044 -v 0.893802 -2.194649 -2.097010 -v 0.803539 -1.816007 -2.077962 -v 0.908447 -2.507545 -2.015850 -v 0.789280 -2.226860 -2.089673 -v 0.578073 -1.446409 -1.925564 -v 0.669959 -1.850984 -2.065666 -v 0.778187 -0.979915 -1.674877 -v 0.449998 -0.918187 -1.711691 -v 0.513386 -1.419208 -2.038015 -v 0.620948 -1.875750 -2.186494 -v 0.758721 -2.288345 -2.199537 -v 0.898807 -2.592490 -2.104101 -v 0.800417 -1.030400 -1.805600 -v 0.534451 -1.010748 -1.816485 -v 0.784051 -1.082470 -1.746843 -v 0.937668 -1.110684 -1.860724 -v 0.701230 -1.151893 -1.865504 -v 0.583553 -1.183093 -1.845587 -v 0.684147 -1.191731 -1.803985 -v 0.543776 -1.222175 -1.789854 -v 0.476111 -1.152035 -1.874386 -v 1.058560 -2.580313 -2.023309 -v 1.155160 -2.581495 -1.983777 -v 1.036223 -2.565681 -1.953928 -v 1.122755 -2.566741 -1.918515 -v 1.186319 -0.939764 -1.571326 -v 1.315015 -1.356494 -1.829651 -v 1.352324 -1.777130 -1.986264 -v 1.309434 -2.179569 -2.047723 -v 1.213316 -2.484428 -2.022723 -v 1.371435 -0.904239 -1.387250 -v 1.544477 -1.406562 -1.668674 -v 1.561621 -1.861848 -1.853456 -v 1.462599 -2.270678 -1.961814 -v 1.296576 -2.567304 -1.993048 -v 1.260426 -1.370523 -1.776037 -v 1.305648 -1.792285 -1.927694 -v 1.265539 -2.172329 -1.986065 -v 1.177577 -2.459306 -1.961424 -v 1.251831 -1.131287 -1.697207 -v 1.462002 -1.138859 -1.523597 -v 1.218154 -1.174971 -1.637441 -v 0.999583 -0.916445 -1.691613 -v 1.106083 -1.330403 -1.964234 -v 1.160492 -1.753175 -2.109833 -v 1.167490 -2.161843 -2.139157 -v 1.136309 -2.474812 -2.072328 -v 0.781657 -0.934810 -1.736932 -v 0.862254 -1.350950 -2.014940 -v 0.936619 -1.772041 -2.156388 -v 1.001837 -2.175803 -2.173605 -v 1.046438 -2.482385 -2.091017 -v 1.085950 -2.749303 -1.957488 -v 0.521403 -0.893832 -1.735119 -v 0.584785 -1.394812 -2.061422 -v 0.692545 -1.851208 -2.209120 -v 0.830519 -2.262939 -2.220489 -v 0.964545 -2.563239 -2.128929 -v 1.080322 -1.380102 -1.902771 -v 1.131926 -1.768949 -2.040502 -v 1.138684 -2.153639 -2.068523 -v 1.109512 -2.447071 -2.006020 -v 0.863292 -1.365661 -1.938561 -v 0.928519 -1.787668 -2.082032 -v 0.990059 -2.168957 -2.098804 -v 1.029473 -2.457493 -2.022035 -v 1.052179 -1.106355 -1.825813 -v 0.819178 -1.125990 -1.874267 -v 0.547498 -1.127663 -1.897852 -v 0.800375 -1.169856 -1.808414 -v 0.880985 -1.086471 -1.688243 -v 0.918822 -1.065924 -1.651006 -v 0.969587 -1.059170 -1.622582 -v 1.025551 -1.067239 -1.607299 -v 1.078193 -1.088900 -1.607484 -v 0.858945 -1.125482 -1.635599 -v 0.896604 -1.100776 -1.597800 -v 0.947307 -1.092562 -1.569179 -v 1.003333 -1.102091 -1.554094 -v 1.056154 -1.127912 -1.554839 -v 0.848603 -1.157603 -1.611310 -v 0.883091 -1.142744 -1.566065 -v 0.932680 -1.137988 -1.534830 -v 0.989820 -1.144059 -1.522359 -v 1.045811 -1.160033 -1.530550 -v 0.843600 -1.197380 -1.600290 -v 0.876555 -1.194715 -1.551667 -v 0.925605 -1.194241 -1.519244 -v 0.983283 -1.196030 -1.507960 -v 1.040808 -1.199809 -1.519530 -v 0.844698 -1.238756 -1.604215 -v 0.877989 -1.248776 -1.556796 -v 0.927158 -1.252756 -1.524796 -v 0.984717 -1.250091 -1.513089 -v 1.041906 -1.241186 -1.523456 -v 0.851730 -1.275434 -1.622490 -v 0.887177 -1.296698 -1.580673 -v 0.937102 -1.304626 -1.550640 -v 0.993905 -1.298013 -1.536966 -v 1.048938 -1.277864 -1.541730 -v 0.863625 -1.301829 -1.652331 -v 0.902718 -1.331185 -1.619661 -v 0.953924 -1.341954 -1.592842 -v 1.009447 -1.332499 -1.575955 -v 1.060833 -1.304259 -1.571571 -v 0.878572 -1.313923 -1.689195 -v 0.922248 -1.346986 -1.667827 -v 0.975063 -1.359057 -1.644976 -v 1.028976 -1.348300 -1.624120 -v 1.075780 -1.316352 -1.608436 -v 0.894296 -1.309874 -1.727470 -v 0.942793 -1.341696 -1.717836 -v 0.997300 -1.353332 -1.699105 -v 1.049521 -1.343010 -1.674130 -v 1.091505 -1.312304 -1.646711 -v 0.908404 -1.290299 -1.761330 -v 0.961225 -1.316120 -1.762076 -v 1.017251 -1.325648 -1.746990 -v 1.067953 -1.317435 -1.718369 -v 1.105612 -1.292729 -1.680571 -v 0.930828 -1.228574 -1.814231 -v 0.983945 -1.251590 -1.815616 -v 1.040075 -1.260134 -1.800755 -v 1.090673 -1.252905 -1.771910 -v 1.128036 -1.231003 -1.733472 -v 1.090653 -1.124426 -1.638981 -v 1.103114 -1.159952 -1.670478 -v 1.115575 -1.195478 -1.701975 -v 1.068518 -1.169116 -1.586272 -v 1.080883 -1.210320 -1.617705 -v 1.093247 -1.251524 -1.649138 -v 0.893446 -1.121997 -1.719740 -v 0.905906 -1.157522 -1.751237 -v 0.918367 -1.193048 -1.782734 -v 0.871310 -1.166686 -1.667032 -v 0.883675 -1.207890 -1.698464 -v 0.896039 -1.249095 -1.729897 -v -0.000000 0.000000 0.559937 -v -0.038460 0.092850 0.987525 -v 0.053557 0.129300 0.559937 -v -0.092850 0.038460 0.987525 -v 0.129299 0.053558 0.559937 -v -0.038460 -0.092850 0.987525 -v 0.129299 -0.053557 0.559937 -v 0.092850 -0.038459 0.987525 -v 0.053557 -0.129299 0.559937 -v -0.092850 -0.038459 0.987525 -v -0.053558 -0.129299 0.559937 -v 0.038459 -0.092850 0.987525 -v -0.129300 -0.053557 0.559937 -v 0.038459 0.092850 0.987525 -v -0.129300 0.053558 0.559937 -v 0.092850 0.038460 0.987525 -v -0.053558 0.129300 0.559937 -v -0.032401 -0.078221 0.950122 -v -0.078222 0.032401 0.950122 -v 0.078221 0.032401 0.950122 -v 0.032400 0.078222 0.950122 -v 0.032400 -0.078221 0.950122 -v -0.032401 0.078222 0.950122 -v -0.078222 -0.032400 0.950122 -v 0.078221 -0.032400 0.950122 -v 0.070126 -0.029047 0.962019 -v -0.029048 -0.070126 0.962019 -v -0.070127 0.029047 0.962019 -v 0.070126 0.029048 0.962019 -v 0.029047 0.070127 0.962019 -v 0.029047 -0.070126 0.962019 -v -0.029048 0.070127 0.962019 -v -0.070127 -0.029047 0.962019 -v 0.017129 0.041354 0.978453 -v 0.041354 0.017130 0.978453 -v 0.041354 -0.017129 0.978453 -v 0.017129 -0.041354 0.978453 -v -0.017130 -0.041354 0.978453 -v -0.041354 -0.017129 0.978453 -v -0.041354 0.017130 0.978453 -v -0.017130 0.041354 0.978453 -v -0.071287 0.071287 0.987525 -v 0.053557 0.129300 0.987525 -v -0.100816 0.000000 0.987525 -v -0.000000 0.140392 0.559937 -v 0.099272 0.099272 0.559937 -v -0.071287 -0.071287 0.987525 -v 0.129299 0.053558 0.987525 -v 0.140391 0.000000 0.559937 -v -0.000000 -0.100815 0.987525 -v 0.129299 -0.053557 0.987525 -v 0.099272 -0.099272 0.559937 -v 0.071287 -0.071287 0.987525 -v 0.053557 -0.129299 0.987525 -v -0.000000 -0.140392 0.559937 -v -0.000000 0.100815 0.987525 -v -0.053558 -0.129299 0.987525 -v -0.099272 -0.099272 0.559937 -v 0.100815 0.000000 0.987525 -v -0.129300 -0.053557 0.987525 -v -0.140392 0.000000 0.559937 -v 0.071287 0.071287 0.987525 -v -0.129300 0.053558 0.987525 -v -0.099272 0.099272 0.559937 -v -0.053558 0.129300 0.987525 -v 0.060056 0.060056 0.950122 -v 0.038459 0.092850 0.950122 -v -0.000000 -0.084932 0.950122 -v -0.000000 0.084932 0.950122 -v 0.092850 0.038460 0.950122 -v -0.060056 0.060056 0.950122 -v 0.092850 -0.038459 0.950122 -v -0.084932 0.000000 0.950122 -v 0.038459 -0.092850 0.950122 -v -0.060056 -0.060056 0.950122 -v -0.038460 -0.092850 0.950122 -v 0.060056 -0.060056 0.950122 -v -0.092850 -0.038459 0.950122 -v 0.084932 0.000000 0.950122 -v -0.092850 0.038460 0.950122 -v -0.038460 0.092850 0.950122 -v 0.076142 0.000000 0.962019 -v 0.053840 0.053841 0.962019 -v -0.000000 -0.076142 0.962019 -v 0.053840 -0.053840 0.962019 -v -0.000000 0.076142 0.962019 -v -0.053841 0.053841 0.962019 -v -0.076142 0.000000 0.962019 -v -0.053841 -0.053840 0.962019 -v 0.027467 0.027468 0.979587 -v 0.024391 0.058886 0.972077 -v -0.000000 0.038846 0.979587 -v 0.038845 0.000000 0.979587 -v 0.058885 0.024391 0.972077 -v 0.027467 -0.027468 0.979587 -v 0.058885 -0.024391 0.972077 -v -0.000000 -0.038845 0.979587 -v 0.024391 -0.058885 0.972077 -v -0.027468 -0.027468 0.979587 -v -0.024391 -0.058885 0.972077 -v -0.038846 0.000000 0.979587 -v -0.058886 -0.024391 0.972077 -v -0.027468 0.027468 0.979587 -v -0.058886 0.024391 0.972077 -v -0.024391 0.058886 0.972077 -v -0.000000 0.140392 0.987525 -v 0.099272 0.099272 0.987525 -v 0.140391 0.000000 0.987525 -v 0.099272 -0.099272 0.987525 -v -0.000000 -0.140392 0.987525 -v -0.099272 -0.099272 0.987525 -v -0.140392 0.000000 0.987525 -v -0.099272 0.099272 0.987525 -v -0.000000 0.100815 0.950122 -v 0.071287 0.071287 0.950122 -v 0.100815 0.000000 0.950122 -v 0.071287 -0.071287 0.950122 -v -0.000000 -0.100815 0.950122 -v -0.071287 -0.071287 0.950122 -v -0.100816 0.000000 0.950122 -v -0.071287 0.071287 0.950122 -v -0.000000 0.000000 0.984690 -v -0.000000 0.062423 0.972360 -v 0.044139 0.044140 0.972360 -v 0.062423 0.000000 0.972360 -v 0.044139 -0.044139 0.972360 -v -0.000000 -0.062423 0.972360 -v -0.044140 -0.044139 0.972360 -v -0.062423 0.000000 0.972360 -v -0.044140 0.044140 0.972360 -v 1.750524 -1.273227 0.726173 -v 1.688630 -2.424659 0.632832 -v 1.788455 -2.081270 0.721865 -v 1.804838 -1.632543 0.752422 -v 1.562458 -1.290732 0.886599 -v 1.588084 -2.434017 0.718601 -v 1.633272 -2.095714 0.854240 -v 1.618261 -1.649909 0.911577 -v 1.592413 -2.611653 0.477869 -v 1.528859 -2.440978 0.751459 -v 1.451680 -1.303751 0.948059 -v 1.480184 -2.639663 0.550582 -v 1.508361 -1.662825 0.972550 -v 1.541863 -2.106457 0.904954 -v 1.637270 -2.382299 0.594706 -v 1.729267 -2.062886 0.676606 -v 1.744654 -1.637260 0.705372 -v 1.501095 -1.308424 0.846131 -v 1.528297 -2.403517 0.688628 -v 1.570316 -2.083784 0.815322 -v 1.555716 -1.656368 0.870055 -v 1.533404 -2.570652 0.455460 -v 1.453615 -2.422652 0.738755 -v 1.377808 -1.320705 0.926207 -v 1.407932 -2.620632 0.530094 -v 1.433799 -1.671554 0.948967 -v 1.466244 -2.101408 0.883841 -v 1.432393 -2.726928 0.566658 -v 1.481929 -2.519735 0.816115 -v 1.341930 -1.022926 0.981547 -v 1.498339 -2.172434 0.990009 -v 1.588851 -0.964844 0.615453 -v 1.465696 -1.697334 1.075143 -v 1.300067 -0.986233 0.846361 -v 1.414295 -0.977267 0.769504 -v 1.680466 -1.049562 0.682571 -v 1.504186 -1.065970 0.832944 -v 1.400350 -1.078173 0.890552 -v 1.443228 -1.087652 0.795047 -v 1.325981 -1.097723 0.872977 -v 1.403141 -1.293589 1.051057 -v 1.859843 -1.273468 0.505800 -v 1.747076 -2.424787 0.515014 -v 1.878659 -2.081469 0.540024 -v 1.913291 -1.632782 0.533794 -v 1.873773 -1.291418 0.259030 -v 1.754523 -2.434384 0.383083 -v 1.890154 -2.096280 0.336402 -v 1.927111 -1.650590 0.288978 -v 1.744845 -2.441453 0.316059 -v 1.855672 -1.304641 0.133666 -v 1.555284 -2.639828 0.399190 -v 1.909153 -1.663708 0.164607 -v 1.875217 -2.107191 0.232958 -v 1.685681 -2.382406 0.497114 -v 1.806830 -2.063057 0.520249 -v 1.839414 -1.637469 0.514350 -v 1.804411 -1.309092 0.234688 -v 1.694512 -2.403883 0.353561 -v 1.821087 -2.084337 0.309802 -v 1.856204 -1.657030 0.264312 -v 1.565317 -2.611593 0.532491 -v 1.689221 -2.423171 0.263804 -v 1.793563 -1.321621 0.088100 -v 1.495274 -2.620825 0.354026 -v 1.845256 -1.672461 0.119524 -v 1.812660 -2.102171 0.185515 -v 1.539093 -2.727163 0.351566 -v 1.767862 -2.520365 0.239713 -v 1.816177 -1.023971 0.025529 -v 1.916547 -2.173355 0.146958 -v 1.674139 -0.965032 0.443524 -v 1.964993 -1.698434 0.068626 -v 1.683246 -0.987077 0.073925 -v 1.691172 -0.977877 0.211358 -v 1.782935 -1.049787 0.476008 -v 1.795992 -1.066613 0.244702 -v 1.779025 -1.079007 0.127194 -v 1.728918 -1.088282 0.219135 -v 1.720018 -1.098592 0.078650 -v 1.908320 -1.294702 0.032684 -v 1.511807 -2.570604 0.498994 -v 1.595865 -2.616102 0.416704 -v 1.518702 -2.615932 0.572254 -v 1.537150 -2.585058 0.384202 -v 1.457326 -2.584882 0.545116 -v 1.816498 -1.271044 0.621597 -v 1.870289 -1.630377 0.648673 -v 1.842893 -2.079468 0.635574 -v 1.723902 -2.423491 0.576922 -v 1.664863 -1.279847 0.815763 -v 1.719856 -1.639110 0.841302 -v 1.717772 -2.086732 0.795790 -v 1.642833 -2.428198 0.680730 -v 1.781617 -1.418972 0.743636 -v 1.645438 -0.937729 0.660771 -v 1.625724 -2.542465 0.580733 -v 1.745664 -2.267739 0.682105 -v 1.810385 -1.868466 0.747006 -v 1.590977 -1.436717 0.906257 -v 1.475050 -0.953589 0.806117 -v 1.553973 -2.549143 0.641939 -v 1.616147 -2.279794 0.792587 -v 1.635348 -1.884759 0.896318 -v 1.564485 -2.622389 0.498059 -v 1.476735 -1.283818 1.024054 -v 1.539156 -1.687438 1.047824 -v 1.571283 -2.161819 0.961616 -v 1.554187 -2.507191 0.786784 -v 1.502275 -2.708683 0.568701 -v 1.447001 -2.701174 0.439865 -v 1.508944 -2.559236 0.656160 -v 1.539856 -2.288760 0.834913 -v 1.478683 -1.449914 0.968558 -v 1.374685 -0.965384 0.861799 -v 1.532244 -1.896875 0.953520 -v 1.801855 -1.635351 0.614731 -v 1.776097 -2.061292 0.602419 -v 1.666518 -2.381285 0.548410 -v 1.594551 -1.292010 0.771582 -v 1.663909 -1.643998 0.789429 -v 1.662090 -2.069748 0.746384 -v 1.592881 -2.388645 0.640084 -v 1.723603 -1.446522 0.690545 -v 1.576812 -2.494213 0.546359 -v 1.689361 -2.237608 0.639600 -v 1.750021 -1.861611 0.700329 -v 1.529217 -1.450603 0.864883 -v 1.495088 -2.513795 0.615960 -v 1.554268 -2.258646 0.757091 -v 1.572210 -1.882001 0.855563 -v 1.506130 -2.584922 0.469070 -v 1.377249 -2.687864 0.405249 -v 1.434695 -2.537522 0.644682 -v 1.464272 -2.276967 0.816935 -v 1.404763 -1.464162 0.945204 -v 1.456948 -1.898697 0.930758 -v 1.640337 -0.963162 0.533873 -v 1.515048 -0.969678 0.692563 -v 1.399961 -2.793507 0.416631 -v 1.311324 -0.887595 0.946793 -v 1.434083 -1.462191 1.074456 -v 1.489831 -1.950316 1.048525 -v 1.494583 -2.362603 0.909304 -v 1.460993 -2.641840 0.704036 -v 1.742306 -1.047515 0.584548 -v 1.600174 -1.055766 0.766547 -v 1.415510 -1.013164 0.954502 -v 1.538149 -1.087983 0.727222 -v 1.715495 -1.161394 0.704372 -v 1.533322 -1.178351 0.859772 -v 1.426015 -1.190962 0.919306 -v 1.472161 -1.198038 0.820589 -v 1.351894 -1.209214 0.899592 -v 1.372535 -1.158258 1.016302 -v 1.879341 -1.280319 0.383404 -v 1.932635 -1.639579 0.412367 -v 1.894748 -2.087122 0.439029 -v 1.757500 -2.428450 0.449577 -v 1.892432 -1.419216 0.520246 -v 1.744481 -0.937947 0.461112 -v 1.667431 -2.542557 0.496656 -v 1.820950 -2.267905 0.530338 -v 1.912131 -1.868690 0.541900 -v 1.906553 -1.437412 0.270098 -v 1.757102 -0.954210 0.237538 -v 1.672746 -2.549405 0.402509 -v 1.830543 -2.280267 0.360392 -v 1.925095 -1.885397 0.312226 -v 1.931355 -1.284820 0.107601 -v 1.987697 -1.688426 0.143626 -v 1.938083 -2.162627 0.222197 -v 1.788237 -2.507706 0.314969 -v 1.583017 -2.708861 0.405937 -v 1.656816 -2.559562 0.358069 -v 1.818077 -2.289373 0.274056 -v 1.888204 -1.450816 0.143019 -v 1.740702 -0.966190 0.123959 -v 1.908248 -1.897704 0.195547 -v 1.801613 -1.292466 0.354173 -v 1.857480 -1.644425 0.399216 -v 1.821736 -2.070100 0.424558 -v 1.694950 -2.388870 0.434328 -v 1.815038 -1.446724 0.506225 -v 1.610512 -2.494287 0.478426 -v 1.753069 -2.237749 0.511172 -v 1.838450 -1.861805 0.522068 -v 1.836232 -1.451279 0.245982 -v 1.616465 -2.514063 0.371280 -v 1.764862 -2.259110 0.332563 -v 1.854448 -1.882623 0.286609 -v 1.602773 -2.537892 0.305859 -v 1.758042 -2.277614 0.224733 -v 1.824873 -1.465088 0.098319 -v 1.844566 -1.899551 0.149372 -v 1.690876 -0.970065 0.338116 -v 1.770106 -0.888606 0.021951 -v 1.945524 -1.463318 0.043459 -v 1.958183 -1.951348 0.104391 -v 1.849851 -2.363385 0.193131 -v 1.665851 -2.642292 0.291070 -v 1.801212 -1.056209 0.361282 -v 1.839171 -1.014097 0.100459 -v 1.732345 -1.088411 0.335747 -v 1.821389 -1.161628 0.490904 -v 1.834883 -1.179016 0.251866 -v 1.817348 -1.191824 0.130430 -v 1.766664 -1.198687 0.226911 -v 1.756791 -1.210106 0.083375 -v 1.862249 -1.159337 0.029107 -v 1.578077 -2.624395 0.446543 -v 1.531690 -2.624293 0.540052 -v 1.517176 -2.589275 0.422366 -v 1.475624 -2.589183 0.506129 -v 1.567830 -0.943727 0.741939 -v 1.694784 -1.425682 0.834451 -v 1.730659 -1.874627 0.830389 -v 1.686672 -2.272298 0.743803 -v 1.589944 -2.547755 0.611252 -v 1.384897 -0.877837 0.919726 -v 1.507647 -1.452387 1.047384 -v 1.563092 -1.940180 1.020770 -v 1.567168 -2.351205 0.880306 -v 1.532501 -2.627206 0.682448 -v 1.644141 -1.419104 0.775773 -v 1.674293 -1.868556 0.779157 -v 1.633039 -2.244227 0.697797 -v 1.540711 -2.503473 0.575458 -v 1.632519 -1.167807 0.791155 -v 1.446123 -1.148491 0.989278 -v 1.566356 -1.189997 0.749388 -v 1.705210 -0.935751 0.566024 -v 1.848493 -1.416759 0.637628 -v 1.871788 -1.866434 0.649675 -v 1.791099 -2.266235 0.610085 -v 1.646598 -2.544466 0.538707 -v 1.762147 -0.944155 0.350222 -v 1.912197 -1.426161 0.396175 -v 1.930278 -1.875067 0.427984 -v 1.834378 -2.272623 0.446046 -v 1.670078 -2.547931 0.449713 -v 1.467779 -2.770892 0.450249 -v 1.793078 -0.878736 0.096888 -v 1.968487 -1.453402 0.118393 -v 1.980418 -1.941099 0.179496 -v 1.870690 -2.351874 0.268448 -v 1.691941 -2.627557 0.361040 -v 1.778443 -1.445025 0.602909 -v 1.803403 -1.859812 0.615744 -v 1.727836 -2.236285 0.578669 -v 1.592498 -2.497196 0.511818 -v 1.834842 -1.419524 0.391344 -v 1.855389 -1.868955 0.414092 -v 1.765323 -2.244518 0.431130 -v 1.611829 -2.503630 0.432092 -v 1.779402 -1.159279 0.603072 -v 1.840277 -1.168264 0.372343 -v 1.885263 -1.149459 0.104030 -v 1.766972 -1.190439 0.344974 -v 0.874137 -0.072697 0.644137 -v 0.924090 -0.122650 0.644137 -v 0.924090 -0.193295 0.644137 -v 0.838814 -0.157973 0.693786 -v 0.888640 -0.178611 0.838418 -v 0.788989 -0.178611 0.838418 -v 0.818176 -0.108147 0.838418 -v 0.888640 -0.137335 0.838418 -v 0.788989 -0.137335 0.838418 -v 1.093560 0.292984 -0.121358 -v 1.093560 0.121358 -0.292984 -v 1.093560 -0.121358 -0.292984 -v 1.093560 -0.292984 -0.121358 -v 1.093560 -0.292984 0.121358 -v 0.874137 -0.243249 0.838418 -v 1.093560 0.060866 0.332097 -v 1.173825 0.000000 -0.145497 -v 1.173825 -0.145497 0.000000 -v 1.173825 0.145498 0.000000 -v 1.093560 0.292984 0.121358 -v 0.753538 -0.122650 0.838418 -v 0.749101 -0.380203 -0.157485 -v 1.025283 0.089448 0.477009 -v 0.955232 -0.089447 0.477009 -v 0.851475 -0.416358 -0.462306 -v 0.851475 -0.098271 -0.685024 -v 0.851475 0.351573 -0.685024 -v 0.851475 0.669660 -0.462306 -v 1.025283 0.430563 0.167312 -v 1.025283 -0.430563 0.167312 -v 1.003557 -0.165728 -0.464350 -v 1.003557 0.454155 -0.219507 -v 0.955232 -0.430563 0.167312 -v 1.025283 -0.089447 0.477009 -v 0.818176 -0.207798 0.838418 -v 0.859453 -0.108147 0.838418 -v 0.859453 -0.207798 0.838418 -v 0.803492 -0.243249 0.838418 -v 0.924090 -0.122650 0.838418 -v 0.753538 -0.193295 0.838418 -v 0.803492 -0.072697 0.838418 -v 0.874137 -0.072697 0.838418 -v 0.924090 -0.193295 0.838418 -v 0.788989 0.137335 0.838418 -v 0.874137 0.243249 0.644137 -v 0.859453 0.207799 0.838418 -v 0.924090 0.193296 0.644137 -v 0.859453 0.108148 0.838418 -v 0.924090 0.122651 0.644137 -v 0.888640 0.178612 0.838418 -v 0.874137 0.072697 0.644137 -v 0.818176 0.207799 0.838418 -v 0.803492 0.072697 0.644137 -v 0.788989 0.178612 0.838418 -v 0.753538 0.122651 0.644137 -v 0.818176 0.108148 0.838418 -v 0.753538 0.193296 0.644137 -v 0.888640 0.137335 0.838418 -v 0.803492 0.243249 0.644137 -v 0.838814 0.157973 0.693786 -v 0.888640 0.178611 0.644137 -v 0.888640 0.137335 0.644137 -v 0.859453 0.108148 0.644137 -v 0.818176 0.108148 0.644137 -v 0.788989 0.137335 0.644137 -v 0.788989 0.178611 0.644137 -v 0.818176 0.207798 0.644137 -v 0.859453 0.207798 0.644137 -v 0.897023 -0.380203 0.157485 -v 0.897023 -0.380203 -0.157485 -v 0.897023 -0.157485 -0.380203 -v 0.897023 0.157485 -0.380203 -v 0.897023 0.380203 -0.157485 -v 0.897023 0.380203 0.157485 -v 0.878238 0.054073 0.438727 -v 0.921936 0.108160 0.427070 -v 0.921936 0.207541 0.386581 -v 0.955232 0.267793 0.403136 -v 0.955232 0.430563 0.167312 -v 0.878238 0.261384 0.354425 -v 1.093560 0.182224 0.281828 -v 0.803492 -0.072697 0.644137 -v 0.753538 -0.122650 0.644137 -v 0.753538 -0.193295 0.644137 -v 0.803492 -0.243249 0.644137 -v 0.874137 -0.243249 0.644137 -v 0.888640 -0.137334 0.423181 -v 0.888640 -0.178611 0.407436 -v 0.859453 -0.207797 0.393878 -v 0.818176 -0.207797 0.393878 -v 0.788989 -0.178611 0.407436 -v 0.788989 -0.137334 0.423181 -v 0.818176 -0.108147 0.432018 -v 0.859453 -0.108147 0.432018 -v 1.173825 0.063989 0.159232 -v 1.093560 -0.060866 0.332097 -v 0.878238 -0.054073 0.438727 -v 0.921936 -0.108160 0.427070 -v 0.921936 -0.207541 0.386581 -v 1.003557 0.197391 -0.464350 -v 0.878238 -0.261384 0.354425 -v 1.093560 -0.182224 0.281829 -v 0.749101 -0.380203 0.157485 -v 0.749101 -0.157485 -0.380203 -v 0.749101 0.157485 -0.380203 -v 0.749101 0.380203 -0.157485 -v 0.749101 0.380203 0.157485 -v 0.783638 0.054073 0.438727 -v 0.724188 0.108160 0.427070 -v 0.724188 0.207541 0.386581 -v 0.783638 0.261384 0.354425 -v 0.783638 -0.054073 0.438727 -v 0.724188 -0.108160 0.427070 -v 0.724188 -0.207541 0.386581 -v 0.783638 -0.261384 0.354425 -v 1.025283 0.267793 0.403136 -v 1.025283 -0.267792 0.403136 -v 0.933506 -0.422492 -0.219507 -v 1.003557 -0.422492 -0.219507 -v 0.933506 -0.165728 -0.464350 -v 0.955232 0.089448 0.477009 -v 0.933506 0.197391 -0.464350 -v 0.933506 0.454155 -0.219507 -v 0.955232 -0.267792 0.403136 -v 0.868328 -0.423461 -0.325842 -v 0.868328 -0.138308 -0.563310 -v 0.868327 0.264959 -0.563310 -v 0.868327 0.550112 -0.325842 -v 0.938379 0.550112 -0.325842 -v 0.938379 0.264959 -0.563310 -v 0.938379 -0.138308 -0.563310 -v 0.938379 -0.423461 -0.325842 -v 0.938379 -0.506980 -0.157927 -v 0.938379 0.633631 -0.157927 -v 1.173825 -0.063988 0.159232 -v 0.659388 0.000000 0.013883 -v 0.818176 -0.108147 0.693786 -v 0.859453 -0.108147 0.693786 -v 0.888640 -0.137334 0.693786 -v 0.888640 -0.178611 0.693786 -v 0.859453 -0.207798 0.693786 -v 0.877069 -0.196227 0.838418 -v 0.892914 -0.157973 0.838418 -v 0.784714 -0.157973 0.838418 -v 0.800560 -0.196227 0.838418 -v 0.838814 -0.103873 0.838418 -v 0.800560 -0.119719 0.838418 -v 0.877069 -0.119719 0.838418 -v 0.838814 -0.212073 0.838418 -v 0.773342 -0.223445 0.838418 -v 0.931406 -0.157973 0.838418 -v 1.093560 0.318118 0.000000 -v 1.093560 0.224943 -0.224943 -v 1.025283 0.380203 -0.157485 -v 1.147765 0.212503 -0.072955 -v 1.093560 0.000000 -0.318118 -v 1.147765 0.072955 -0.212503 -v 1.179819 -0.078990 -0.078990 -v 1.093560 -0.224943 -0.224943 -v 1.147765 -0.072955 -0.212503 -v 1.093560 -0.318118 0.000000 -v 1.147765 -0.212503 -0.072955 -v 1.093560 -0.240160 0.222155 -v 1.147765 -0.212503 0.072955 -v 1.093560 0.000000 0.337674 -v 1.093560 0.240160 0.222155 -v 1.179819 0.078990 -0.078990 -v 1.179819 -0.094987 0.082423 -v 1.179819 0.000000 0.139883 -v 1.179819 0.094987 0.082423 -v 1.147765 0.212503 0.072955 -v 1.025283 0.157485 -0.380203 -v 1.025283 -0.157485 -0.380203 -v 1.025283 -0.380203 -0.157485 -v 1.025283 -0.380203 0.157485 -v 1.147765 0.052587 0.239449 -v 1.025283 0.380203 0.157485 -v 0.749101 -0.412820 0.000000 -v 0.749101 -0.291908 -0.291907 -v 0.749101 0.291908 -0.291908 -v 0.933506 -0.486603 -0.003170 -v 0.659388 -0.380203 -0.157485 -v 1.025283 0.000000 0.485206 -v 1.025283 -0.178758 0.450344 -v 0.955232 0.178758 0.450344 -v 1.025283 0.352934 0.315440 -v 0.933506 0.518266 -0.003170 -v 0.955232 -0.380203 0.157485 -v 0.955232 -0.380203 -0.157485 -v 0.955232 -0.157485 -0.380203 -v 0.955232 0.157485 -0.380203 -v 0.955232 0.380203 -0.157485 -v 0.955232 0.380203 0.157485 -v 0.873201 -0.485597 -0.307469 -v 0.851475 -0.290254 -0.596729 -v 0.851475 0.126651 -0.717641 -v 0.851475 0.543556 -0.596729 -v 0.873201 0.707236 -0.307469 -v 0.781424 -0.416358 -0.462306 -v 0.781423 -0.098271 -0.685024 -v 0.781423 0.351573 -0.685024 -v 0.781423 0.669660 -0.462306 -v 0.955232 0.352934 0.315440 -v 1.003557 0.352362 -0.367283 -v 1.003557 0.015831 -0.500207 -v 0.746223 -0.157973 0.838418 -v 0.904286 -0.092501 0.838418 -v 0.773342 -0.092501 0.838418 -v 0.838814 -0.065381 0.838418 -v 0.904286 -0.223445 0.838418 -v 0.838814 -0.250564 0.838418 -v 0.877069 0.196228 0.838418 -v 0.874137 0.243249 0.838418 -v 0.838814 0.212073 0.838418 -v 0.838814 0.250565 0.644137 -v 0.904286 0.223445 0.644137 -v 0.800560 0.196228 0.838418 -v 0.924090 0.193296 0.838418 -v 0.931406 0.157973 0.644137 -v 0.784714 0.157973 0.838418 -v 0.924090 0.122651 0.838418 -v 0.904286 0.092501 0.644137 -v 0.800560 0.119719 0.838418 -v 0.874137 0.072697 0.838418 -v 0.838814 0.065382 0.644137 -v 0.838814 0.103873 0.838418 -v 0.803492 0.072697 0.838418 -v 0.773342 0.092501 0.644137 -v 0.877069 0.119719 0.838418 -v 0.753538 0.122651 0.838418 -v 0.746223 0.157973 0.644137 -v 0.892914 0.157973 0.838418 -v 0.753538 0.193296 0.838418 -v 0.773342 0.223445 0.644137 -v 0.803492 0.243249 0.838418 -v 0.859453 0.207798 0.693786 -v 0.888640 0.178611 0.693786 -v 0.888640 0.137335 0.693786 -v 0.859453 0.108148 0.693786 -v 0.818176 0.108148 0.693786 -v 0.788989 0.137335 0.693786 -v 0.788989 0.178611 0.693786 -v 0.818176 0.207798 0.693786 -v 0.659388 0.380203 0.157485 -v 0.877069 0.196227 0.644137 -v 0.892914 0.157973 0.644137 -v 0.877069 0.119719 0.644137 -v 0.838814 0.103873 0.644137 -v 0.800560 0.119719 0.644137 -v 0.784714 0.157973 0.644137 -v 0.800560 0.196227 0.644137 -v 0.838814 0.212073 0.644137 -v 0.887630 0.000000 0.442082 -v 0.892327 -0.317882 0.285463 -v 0.897023 -0.412820 0.000000 -v 0.897023 -0.291908 -0.291907 -v 0.897023 -0.000000 -0.412820 -v 0.897023 0.291908 -0.291908 -v 0.897023 0.412820 0.000000 -v 0.892327 0.317882 0.285463 -v 0.830938 -0.380203 0.157485 -v 0.830938 -0.380203 -0.157485 -v 0.830938 -0.157485 -0.380203 -v 0.830938 0.157485 -0.380203 -v 0.830938 0.380203 -0.157485 -v 0.830938 0.380203 0.157485 -v 0.722051 0.157911 0.411654 -v 0.834876 0.263521 0.353297 -v 0.834876 0.051936 0.439262 -v 0.908874 0.069733 0.435278 -v 0.924073 0.157911 0.411654 -v 0.908874 0.245787 0.363591 -v 1.025283 0.236471 0.365727 -v 0.788989 0.137335 0.423181 -v 0.955232 0.236471 0.365727 -v 1.025283 0.078986 0.430960 -v 0.788989 0.178611 0.407436 -v 0.955232 0.078986 0.430960 -v 0.818176 0.207798 0.393878 -v 0.859453 0.207798 0.393878 -v 0.888640 0.178611 0.407436 -v 0.888640 0.137335 0.423181 -v 0.859453 0.108147 0.432018 -v 0.818176 0.108147 0.432018 -v 1.147765 0.125542 0.209230 -v 1.093560 0.121639 0.313952 -v 0.788989 -0.137334 0.693786 -v 0.788989 -0.178611 0.693786 -v 0.818176 -0.207798 0.693786 -v 0.818176 -0.207798 0.644137 -v 0.788989 -0.178611 0.644137 -v 0.788989 -0.137334 0.644137 -v 0.818176 -0.108147 0.644137 -v 0.859453 -0.108147 0.644137 -v 0.888640 -0.137334 0.644137 -v 0.888640 -0.178611 0.644137 -v 0.859453 -0.207798 0.644137 -v 0.904286 -0.223445 0.644137 -v 0.931406 -0.157973 0.644137 -v 0.904286 -0.092501 0.644137 -v 0.838814 -0.065381 0.644137 -v 0.773342 -0.092501 0.644137 -v 0.746223 -0.157973 0.644137 -v 0.773342 -0.223445 0.644137 -v 0.838814 -0.250564 0.644137 -v 0.722051 -0.157911 0.411654 -v 0.838814 -0.103872 0.433088 -v 0.924073 -0.157911 0.411654 -v 0.838814 -0.212071 0.391623 -v 1.003557 0.518266 -0.003170 -v 0.800560 -0.196227 0.399523 -v 0.784714 -0.157973 0.415896 -v 0.800560 -0.119718 0.428739 -v 0.877069 -0.119718 0.428739 -v 0.892914 -0.157973 0.415896 -v 0.877069 -0.196227 0.399523 -v 1.093560 -0.121639 0.313952 -v 1.147765 -0.052587 0.239449 -v 0.834876 -0.263521 0.353297 -v 0.834876 -0.051936 0.439262 -v 0.908874 -0.069732 0.435278 -v 0.908874 -0.245786 0.363591 -v 1.025283 -0.236471 0.365727 -v 0.955232 -0.236471 0.365727 -v 1.025283 -0.078985 0.430960 -v 0.955232 -0.078985 0.430960 -v 1.147765 -0.125542 0.209230 -v 0.766370 0.000000 0.442082 -v 0.757735 -0.317882 0.285463 -v 0.749101 -0.000000 -0.412820 -v 0.749101 0.412820 0.000000 -v 0.659388 -0.380203 0.157485 -v 0.659388 -0.157485 -0.380203 -v 0.659388 0.157485 -0.380203 -v 0.659388 0.380203 -0.157485 -v 0.757735 0.317882 0.285463 -v 0.741188 0.245787 0.363591 -v 0.741188 0.069733 0.435278 -v 0.659388 0.078986 0.430960 -v 0.659388 0.236471 0.365727 -v 0.741188 -0.245786 0.363591 -v 0.741188 -0.069732 0.435278 -v 0.659388 -0.078985 0.430960 -v 0.659388 -0.236471 0.365727 -v 1.025283 -0.352934 0.315441 -v 1.003557 -0.486603 -0.003170 -v 1.025283 0.178758 0.450344 -v 0.955232 -0.352934 0.315441 -v 1.003557 -0.320699 -0.367283 -v 0.955232 -0.178758 0.450344 -v 0.955232 0.000000 0.485206 -v 0.933506 -0.320699 -0.367283 -v 0.933506 0.015831 -0.500207 -v 0.933506 0.352362 -0.367283 -v 0.868328 -0.506980 -0.157927 -v 0.868328 -0.310413 -0.469167 -v 0.868327 0.063326 -0.598087 -v 0.868327 0.437064 -0.469167 -v 0.868327 0.633631 -0.157927 -v 0.938379 0.437064 -0.469167 -v 0.938379 0.063326 -0.598087 -v 0.938379 -0.310413 -0.469167 -v 1.132824 0.249003 0.000000 -v 1.025283 0.412820 0.000000 -v 1.149263 0.154973 -0.154973 -v 1.025283 0.291908 -0.291908 -v 1.132824 0.000000 -0.249003 -v 1.025283 -0.000000 -0.412820 -v 1.193006 0.000000 0.016561 -v 1.149263 -0.154973 -0.154973 -v 1.025283 -0.291908 -0.291907 -v 1.132824 -0.249003 0.000000 -v 1.025283 -0.412820 0.000000 -v 1.149263 -0.168120 0.154155 -v 1.025283 -0.311654 0.288289 -v 1.149263 0.000000 0.237965 -v 1.025283 0.000000 0.438198 -v 1.149263 0.168120 0.154155 -v 1.025283 0.311654 0.288288 -v 0.659388 0.311654 0.288288 -v 0.659388 -0.412820 0.000000 -v 0.659388 -0.291908 -0.291907 -v 0.659388 0.291908 -0.291908 -v 0.955232 0.000000 0.438198 -v 0.955232 -0.311654 0.288289 -v 0.955232 -0.412820 0.000000 -v 0.955232 -0.291908 -0.291907 -v 0.955232 -0.000000 -0.412820 -v 0.955232 0.291908 -0.291908 -v 0.955232 0.311654 0.288288 -v 0.955232 0.412820 0.000000 -v 0.803150 -0.485597 -0.307469 -v 0.781424 -0.290254 -0.596729 -v 0.781423 0.126651 -0.717641 -v 0.781423 0.543556 -0.596729 -v 0.803149 0.707236 -0.307469 -v 0.838814 0.250565 0.838418 -v 0.904286 0.223445 0.838418 -v 0.931406 0.157973 0.838418 -v 0.904286 0.092501 0.838418 -v 0.838814 0.065382 0.838418 -v 0.773342 0.092501 0.838418 -v 0.746223 0.157973 0.838418 -v 0.773342 0.223445 0.838418 -v 0.838814 0.212073 0.693786 -v 0.877069 0.196227 0.693786 -v 0.892914 0.157973 0.693786 -v 0.877069 0.119719 0.693786 -v 0.838814 0.103873 0.693786 -v 0.800560 0.119719 0.693786 -v 0.784714 0.157973 0.693786 -v 0.800560 0.196227 0.693786 -v 0.659388 0.412820 0.000000 -v 0.659388 0.000000 0.438198 -v 0.659388 -0.311654 0.288289 -v 0.659388 -0.000000 -0.412820 -v 0.832907 0.000000 0.442349 -v 0.831923 -0.318416 0.285181 -v 0.830938 -0.412820 0.000000 -v 0.830938 -0.291908 -0.291907 -v 0.830938 -0.000000 -0.412820 -v 0.830938 0.291908 -0.291908 -v 0.830938 0.412820 0.000000 -v 0.831923 0.318417 0.285181 -v 0.838814 0.103872 0.433088 -v 0.955232 0.157850 0.407413 -v 1.025283 0.157850 0.407413 -v 0.838814 0.212072 0.391623 -v 0.659388 0.157850 0.407413 -v 0.800560 0.196227 0.399523 -v 0.784714 0.157973 0.415896 -v 0.800560 0.119719 0.428739 -v 0.877069 0.119719 0.428739 -v 0.892914 0.157973 0.415896 -v 0.877069 0.196227 0.399523 -v 1.132824 0.099110 0.253041 -v 0.838814 -0.212073 0.693786 -v 0.877069 -0.196227 0.693786 -v 0.892914 -0.157973 0.693786 -v 0.877069 -0.119718 0.693786 -v 0.838814 -0.103873 0.693786 -v 0.800560 -0.119718 0.693786 -v 0.784714 -0.157973 0.693786 -v 0.800560 -0.196227 0.693786 -v 0.800560 -0.196227 0.644137 -v 0.784714 -0.157973 0.644137 -v 0.800560 -0.119718 0.644137 -v 0.838814 -0.103873 0.644137 -v 0.877069 -0.119718 0.644137 -v 0.892914 -0.157973 0.644137 -v 0.877069 -0.196227 0.644137 -v 0.838814 -0.212073 0.644137 -v 0.955232 -0.157850 0.407413 -v 1.025283 -0.157850 0.407413 -v 0.659388 -0.157850 0.407413 -v 1.132824 -0.099110 0.253041 -v 0.544895 0.696067 -0.288320 -v 0.544895 0.288320 -0.696067 -v 0.191342 -0.340097 -0.821067 -v 0.544895 -0.288320 -0.696067 -v 0.191342 -0.821067 -0.340097 -v 0.544895 -0.696067 -0.288320 -v 0.166657 -0.713477 0.387925 -v 0.544895 -0.696067 0.288321 -v 0.166657 0.713478 0.387925 -v 0.544895 -0.288320 0.696067 -v 0.083622 -0.823788 0.154858 -v 0.544895 0.288321 0.696067 -v 0.166069 0.310356 0.749262 -v 0.544895 0.696067 0.288320 -v 0.707107 -0.478468 -0.198188 -v 0.707107 0.198188 0.478468 -v 0.707107 0.478468 -0.198188 -v 0.707107 -0.198188 -0.478468 -v 0.707107 -0.198188 0.478468 -v 0.707107 0.478468 0.198188 -v 0.707107 0.198188 -0.478468 -v 0.707107 -0.478468 0.198188 -v 0.659388 0.000000 0.000000 -v 0.141433 0.932922 0.094022 -v 0.141433 -0.932922 0.094022 -v 0.282886 -0.786051 0.380671 -v 0.282905 -0.333658 0.805521 -v 0.282905 0.333658 0.805521 -v 0.282886 0.786052 0.380671 -v 0.083329 -0.728391 0.393926 -v 0.083035 -0.316497 0.764091 -v 0.083035 0.316498 0.764091 -v 0.083329 0.728391 0.393926 -v 0.166069 -0.310355 0.749262 -v 0.083622 0.823788 0.154858 -v 0.191342 0.821067 -0.340097 -v 0.191342 0.340097 -0.821067 -v -0.544895 0.696067 -0.288320 -v -0.544895 0.288320 -0.696067 -v -0.191342 -0.340097 -0.821067 -v -0.544895 -0.288320 -0.696067 -v -0.191342 -0.821067 -0.340097 -v -0.544895 -0.696067 -0.288320 -v -0.166657 -0.713477 0.387925 -v -0.544895 -0.696067 0.288320 -v -0.166657 0.713478 0.387925 -v -0.544895 -0.288320 0.696067 -v -0.083622 -0.823788 0.154858 -v -0.544895 0.288321 0.696067 -v -0.166069 0.310356 0.749262 -v -0.544895 0.696067 0.288320 -v -0.141433 0.932922 0.094022 -v -0.141433 -0.932922 0.094022 -v -0.282886 -0.786051 0.380671 -v -0.282905 -0.333658 0.805521 -v -0.282905 0.333658 0.805521 -v -0.282886 0.786052 0.380671 -v -0.083328 -0.728391 0.393926 -v -0.083035 -0.316497 0.764091 -v -0.083035 0.316498 0.764091 -v -0.083328 0.728391 0.393926 -v -0.166069 -0.310355 0.749262 -v -0.083622 0.823788 0.154858 -v -0.191342 0.821067 -0.340097 -v -0.191342 0.340097 -0.821067 -v 0.544895 0.755780 -0.000000 -v 0.178865 0.919467 -0.061519 -v 0.544895 0.534417 -0.534417 -v 0.375401 0.773574 -0.320425 -v 0.544895 -0.000000 -0.755780 -v 0.191342 -0.000000 -0.891503 -v 0.375401 0.320425 -0.773574 -v 0.707107 0.250000 -0.603553 -v 0.544895 -0.534417 -0.534417 -v 0.191342 -0.630388 -0.630388 -v 0.000000 -0.346825 -0.837310 -v 0.375401 -0.320425 -0.773574 -v 0.707107 -0.250000 -0.603553 -v 0.544895 -0.755780 0.000000 -v 0.178865 -0.919467 -0.061519 -v 0.000000 -0.837310 -0.346825 -v 0.375401 -0.773574 -0.320425 -v 0.707107 -0.603553 -0.250000 -v 0.544895 -0.534417 0.534417 -v 0.146192 -0.787438 0.213267 -v 0.398287 -0.764820 0.330568 -v 0.707107 -0.603553 0.250000 -v 0.544895 0.000000 0.755780 -v 0.000000 -0.832560 0.154716 -v 0.166069 0.000000 0.813539 -v 0.166216 0.566314 0.594651 -v 0.398292 -0.318815 0.769687 -v 0.707107 -0.250000 0.603553 -v 0.544895 0.534417 0.534417 -v 0.000000 0.832560 0.154716 -v 0.398292 0.318815 0.769687 -v 0.707107 0.250000 0.603553 -v 0.398287 0.764820 0.330568 -v 0.707107 0.603553 0.250000 -v 0.707107 0.603553 -0.250000 -v 0.707107 -0.367352 -0.367352 -v 0.707107 0.000000 0.519514 -v 0.707107 0.367352 0.367352 -v 0.707107 0.519514 0.000000 -v 0.707107 0.367352 -0.367352 -v 0.707107 -0.000000 -0.519514 -v 0.707107 -0.519514 0.000000 -v 0.707107 -0.367352 0.367352 -v 0.659388 0.478468 -0.198188 -v 0.659388 0.478468 0.198188 -v 0.659388 0.198188 0.478468 -v 0.659388 -0.198188 0.478468 -v 0.659388 -0.478468 0.198188 -v 0.659388 -0.478468 -0.198188 -v 0.659388 -0.198188 -0.478468 -v 0.659388 0.198188 -0.478468 -v 0.091524 0.903905 0.188043 -v 0.091524 -0.903905 0.188043 -v 0.183088 -0.783522 0.434701 -v 0.183128 -0.340674 0.822462 -v 0.183128 0.340675 0.822461 -v 0.183088 0.783523 0.434700 -v 0.247513 0.882137 0.165686 -v 0.000000 0.946989 0.094019 -v 0.000000 -0.946989 0.094020 -v 0.247513 -0.882137 0.165686 -v 0.282901 -0.613585 0.630206 -v 0.282905 0.000000 0.874624 -v 0.282900 0.613585 0.630206 -v 0.083108 -0.577720 0.606001 -v 0.000000 -0.735848 0.396926 -v 0.083035 0.000000 0.829640 -v 0.000000 -0.319568 0.771506 -v 0.083108 0.577720 0.606001 -v 0.000000 0.319569 0.771506 -v 0.000000 0.735848 0.396926 -v 0.146192 0.787438 0.213267 -v 0.166216 -0.566313 0.594651 -v 0.000000 0.837310 -0.346825 -v 0.000000 0.346825 -0.837310 -v 0.191342 0.630388 -0.630388 -v -0.544895 0.755780 -0.000000 -v -0.178864 0.919467 -0.061519 -v -0.544895 0.534417 -0.534417 -v -0.375401 0.773574 -0.320425 -v -0.544895 -0.000000 -0.755780 -v -0.191342 -0.000000 -0.891503 -v -0.375401 0.320425 -0.773574 -v -0.707107 0.250000 -0.603553 -v -0.544895 -0.534417 -0.534417 -v -0.191342 -0.630388 -0.630388 -v -0.375401 -0.320425 -0.773574 -v -0.707107 -0.250000 -0.603553 -v -0.544895 -0.755780 0.000000 -v -0.178864 -0.919467 -0.061519 -v -0.375401 -0.773574 -0.320425 -v -0.707107 -0.603553 -0.250000 -v -0.544895 -0.534417 0.534417 -v -0.146192 -0.787438 0.213267 -v -0.398287 -0.764820 0.330568 -v -0.707107 -0.603553 0.250000 -v -0.544895 0.000000 0.755780 -v -0.166069 0.000000 0.813539 -v -0.166216 0.566314 0.594651 -v -0.398292 -0.318815 0.769687 -v -0.707107 -0.250000 0.603553 -v -0.544895 0.534417 0.534417 -v -0.398292 0.318815 0.769687 -v -0.707107 0.250000 0.603553 -v -0.398287 0.764820 0.330568 -v -0.707107 0.603553 0.250000 -v -0.707107 0.603553 -0.250000 -v -0.091524 0.903905 0.188043 -v -0.091524 -0.903905 0.188043 -v -0.183088 -0.783522 0.434701 -v -0.183128 -0.340674 0.822462 -v -0.183128 0.340675 0.822461 -v -0.183088 0.783523 0.434700 -v -0.247513 0.882137 0.165686 -v -0.247513 -0.882137 0.165686 -v -0.282901 -0.613585 0.630206 -v -0.282905 0.000000 0.874624 -v -0.282900 0.613585 0.630206 -v -0.083108 -0.577720 0.606001 -v -0.083035 0.000000 0.829640 -v -0.083108 0.577720 0.606001 -v -0.146192 0.787438 0.213267 -v -0.166216 -0.566313 0.594651 -v -0.191342 0.630388 -0.630388 -v 0.364049 0.867589 0.012906 -v 0.375401 0.593924 -0.593924 -v 0.375401 -0.000000 -0.839936 -v 0.375401 -0.593924 -0.593924 -v 0.364049 -0.867589 0.012906 -v 0.398291 -0.589723 0.593879 -v 0.398292 0.000000 0.835716 -v 0.398290 0.589724 0.593879 -v 0.707107 0.463388 -0.463388 -v 0.707107 0.655330 -0.000000 -v 0.707107 -0.000000 -0.655330 -v 0.707107 -0.463388 -0.463388 -v 0.707107 -0.655330 0.000000 -v 0.707107 -0.463388 0.463388 -v 0.707107 0.000000 0.655330 -v 0.707107 0.463388 0.463388 -v 0.659388 0.000000 0.519514 -v 0.659388 -0.367352 0.367352 -v 0.659388 -0.519514 0.000000 -v 0.659388 -0.367352 -0.367352 -v 0.659388 -0.000000 -0.519514 -v 0.659388 0.519514 0.000000 -v 0.659388 0.367352 -0.367352 -v 0.659388 0.367352 0.367352 -v 0.160177 0.864705 0.249712 -v 0.160177 -0.864705 0.249712 -v 0.183118 -0.621724 0.654965 -v 0.183128 0.000000 0.893018 -v 0.183118 0.621724 0.654965 -v -0.364049 0.867589 0.012906 -v -0.375401 0.593924 -0.593924 -v -0.375401 -0.000000 -0.839936 -v -0.375401 -0.593924 -0.593924 -v -0.364049 -0.867589 0.012906 -v -0.398291 -0.589723 0.593879 -v -0.398292 0.000000 0.835716 -v -0.398290 0.589724 0.593879 -v -0.707107 0.463388 -0.463388 -v -0.707107 0.655330 -0.000000 -v -0.707107 -0.000000 -0.655330 -v -0.707107 -0.463388 -0.463388 -v -0.707107 -0.655330 0.000000 -v -0.707107 -0.463388 0.463388 -v -0.707107 0.000000 0.655330 -v -0.707107 0.463388 0.463388 -v -0.160177 0.864705 0.249712 -v -0.160177 -0.864705 0.249712 -v -0.183118 -0.621724 0.654965 -v -0.183128 0.000000 0.893018 -v -0.183118 0.621724 0.654965 -v 0.000000 0.936560 -0.063201 -v 0.000000 -0.000000 -0.909140 -v 0.000000 -0.642859 -0.642859 -v 0.000000 -0.936560 -0.063201 -v 0.000000 0.913009 0.188039 -v 0.000000 -0.913009 0.188039 -v 0.000000 -0.583422 0.611676 -v 0.000000 0.000000 0.837691 -v 0.000000 0.583423 0.611676 -v 0.000000 0.642859 -0.642859 -v 0.863647 -0.626689 -1.251529 -v 0.682240 -0.619120 -0.627932 -v 0.647814 -0.632142 -0.674754 -v 0.673277 -0.653857 -0.605875 -v 0.636103 -0.677528 -0.645935 -v 0.659992 -0.676838 -0.573181 -v 0.618746 -0.707555 -0.603218 -v 0.644408 -0.684566 -0.534828 -v 0.598384 -0.717652 -0.553108 -v 0.628896 -0.675863 -0.496655 -v 0.578117 -0.706280 -0.503233 -v 0.615820 -0.652054 -0.464474 -v 0.561031 -0.675173 -0.461185 -v 0.607168 -0.616764 -0.443183 -v 0.549728 -0.629064 -0.433367 -v 0.635636 -0.619534 -0.690399 -v 0.787232 -0.626689 -1.282580 -v 0.825364 -0.643771 -1.266868 -v 0.482254 -0.619120 -0.709195 -v 0.539582 -0.632142 -0.718733 -v 0.597719 -0.636715 -0.706639 -v 0.473292 -0.653857 -0.687137 -v 0.527872 -0.677528 -0.689914 -v 0.585043 -0.685841 -0.675445 -v 0.460007 -0.676838 -0.654444 -v 0.510514 -0.707555 -0.647197 -v 0.566256 -0.718342 -0.629209 -v 0.444422 -0.684566 -0.616091 -v 0.490152 -0.717652 -0.597087 -v 0.544216 -0.729270 -0.574970 -v 0.428911 -0.675863 -0.577918 -v 0.469886 -0.706280 -0.547212 -v 0.522280 -0.716962 -0.520986 -v 0.415834 -0.652054 -0.545736 -v 0.452800 -0.675173 -0.505164 -v 0.503787 -0.683291 -0.475474 -v 0.407183 -0.616764 -0.524445 -v 0.441497 -0.629064 -0.477346 -v 0.491552 -0.633384 -0.445364 -v 0.559221 -0.619534 -0.721450 -v 0.879657 -0.585451 -1.245550 -v 0.864014 -0.544212 -1.252432 -v 0.604259 -0.575366 -0.436024 -v 0.545927 -0.574975 -0.424014 -v 0.644888 -0.576641 -0.536009 -v 0.685516 -0.577916 -0.635995 -v 0.652094 -0.578307 -0.685289 -v 0.682607 -0.536518 -0.628836 -v 0.648293 -0.524217 -0.675935 -v 0.673956 -0.501228 -0.607545 -v 0.636990 -0.478109 -0.648117 -v 0.660879 -0.477419 -0.575363 -v 0.619904 -0.447001 -0.606070 -v 0.645368 -0.468716 -0.537190 -v 0.599638 -0.435630 -0.556194 -v 0.629783 -0.476443 -0.498838 -v 0.579276 -0.445726 -0.506084 -v 0.616498 -0.499425 -0.466144 -v 0.561918 -0.475753 -0.463368 -v 0.607536 -0.534162 -0.444087 -v 0.550208 -0.521139 -0.434548 -v 0.636003 -0.537057 -0.691302 -v 0.825623 -0.585451 -1.267506 -v 0.771590 -0.585451 -1.289462 -v 0.787599 -0.544212 -1.283482 -v 0.825883 -0.527130 -1.268144 -v 0.404274 -0.575366 -0.517286 -v 0.437696 -0.574975 -0.467993 -v 0.487438 -0.574838 -0.435240 -v 0.444902 -0.576641 -0.617272 -v 0.485531 -0.577916 -0.717258 -v 0.543863 -0.578307 -0.729268 -v 0.482622 -0.536518 -0.710099 -v 0.540062 -0.524217 -0.719914 -v 0.598238 -0.519898 -0.707917 -v 0.473970 -0.501228 -0.688808 -v 0.528759 -0.478109 -0.692096 -v 0.586003 -0.469991 -0.677807 -v 0.460894 -0.477419 -0.656626 -v 0.511673 -0.447001 -0.650049 -v 0.567510 -0.436320 -0.632296 -v 0.445382 -0.468716 -0.618453 -v 0.491406 -0.435630 -0.600173 -v 0.545574 -0.424012 -0.578311 -v 0.429798 -0.476443 -0.580100 -v 0.471045 -0.445726 -0.550063 -v 0.523534 -0.434940 -0.524072 -v 0.416513 -0.499425 -0.547407 -v 0.453687 -0.475753 -0.507347 -v 0.504747 -0.467441 -0.477836 -v 0.407550 -0.534162 -0.525349 -v 0.441976 -0.521139 -0.478527 -v 0.492071 -0.516566 -0.446642 -v 0.559588 -0.537057 -0.722352 -v 1.003626 -1.231580 -1.599791 -v 0.933006 -0.691712 -1.245680 -v 0.889394 -0.724106 -1.270087 -v 0.917154 -0.691373 -1.206666 -v 0.868682 -0.723663 -1.219112 -v 0.902590 -0.674944 -1.170728 -v 0.849654 -0.702198 -1.172157 -v 0.891532 -0.644927 -1.143338 -v 0.835205 -0.662979 -1.136371 -v 0.885662 -0.605891 -1.128666 -v 0.827537 -0.611976 -1.117200 -v 0.885876 -0.563780 -1.128945 -v 0.827816 -0.556955 -1.117565 -v 0.892139 -0.525003 -1.144133 -v 0.835999 -0.506291 -1.137410 -v 0.879504 -0.725243 -1.291369 -v 0.927211 -1.231399 -1.630841 -v 0.960023 -1.240865 -1.602094 -v 0.733020 -0.691238 -1.326941 -v 0.781163 -0.723850 -1.314065 -v 0.836074 -0.735392 -1.294100 -v 0.717168 -0.690898 -1.287927 -v 0.760451 -0.723407 -1.263090 -v 0.813656 -0.734912 -1.238925 -v 0.702604 -0.674470 -1.251989 -v 0.741422 -0.701941 -1.216135 -v 0.793059 -0.711678 -1.188102 -v 0.691546 -0.644453 -1.224600 -v 0.726974 -0.662722 -1.180349 -v 0.777421 -0.669228 -1.149367 -v 0.685677 -0.605417 -1.209927 -v 0.719306 -0.611719 -1.161179 -v 0.769120 -0.614023 -1.128617 -v 0.685890 -0.563305 -1.210207 -v 0.719585 -0.556698 -1.161544 -v 0.769422 -0.554468 -1.129012 -v 0.692154 -0.524529 -1.225395 -v 0.727768 -0.506034 -1.181388 -v 0.778280 -0.499630 -1.150492 -v 0.803089 -0.725062 -1.322419 -v 1.032475 -1.208982 -1.625280 -v 1.029673 -1.186309 -1.663630 -v 0.903499 -0.495465 -1.171918 -v 0.850842 -0.467698 -1.173712 -v 0.925616 -0.585688 -1.226875 -v 0.947733 -0.675910 -1.281831 -v 0.908636 -0.703460 -1.317320 -v 0.959093 -0.646372 -1.309616 -v 0.923478 -0.664867 -1.353623 -v 0.965356 -0.607596 -1.324804 -v 0.931662 -0.614203 -1.373467 -v 0.965570 -0.565484 -1.325083 -v 0.931941 -0.559182 -1.373832 -v 0.959700 -0.526448 -1.310411 -v 0.924272 -0.508179 -1.354662 -v 0.948642 -0.496431 -1.283021 -v 0.909824 -0.468959 -1.318875 -v 0.934078 -0.480002 -1.247084 -v 0.890796 -0.447494 -1.271921 -v 0.918226 -0.479663 -1.208070 -v 0.870084 -0.447051 -1.220946 -v 0.905552 -0.679972 -1.355208 -v 0.978442 -1.208854 -1.647236 -v 0.924408 -1.208726 -1.669191 -v 0.953258 -1.186128 -1.694680 -v 0.996860 -1.176842 -1.692377 -v 0.703514 -0.494991 -1.253179 -v 0.742611 -0.467441 -1.217690 -v 0.794346 -0.457857 -1.189785 -v 0.725631 -0.585213 -1.308136 -v 0.747747 -0.675435 -1.363093 -v 0.800405 -0.703203 -1.361299 -v 0.759107 -0.645898 -1.390877 -v 0.815247 -0.664610 -1.397601 -v 0.872967 -0.671271 -1.384519 -v 0.765371 -0.607121 -1.406065 -v 0.823431 -0.613946 -1.417445 -v 0.881824 -0.616433 -1.405998 -v 0.765584 -0.565010 -1.406345 -v 0.823710 -0.558925 -1.417810 -v 0.882126 -0.556878 -1.406393 -v 0.759715 -0.525974 -1.391672 -v 0.816041 -0.507922 -1.398640 -v 0.873826 -0.501673 -1.385644 -v 0.748657 -0.495957 -1.364283 -v 0.801593 -0.468703 -1.362854 -v 0.858187 -0.459222 -1.346909 -v 0.734093 -0.479528 -1.328345 -v 0.782565 -0.447238 -1.315899 -v 0.837591 -0.435989 -1.296085 -v 0.718241 -0.479189 -1.289331 -v 0.761853 -0.446795 -1.264924 -v 0.815173 -0.435509 -1.240911 -v 0.829137 -0.679791 -1.386258 -v 1.180859 -0.645406 0.355250 -v 0.594171 -0.827093 0.144001 -v 0.645416 -0.830652 0.113862 -v 0.582832 -0.867274 0.138486 -v 0.630600 -0.883152 0.106657 -v 0.558528 -0.899571 0.126664 -v 0.598847 -0.925350 0.091211 -v 0.524961 -0.919068 0.110335 -v 0.554989 -0.950824 0.069876 -v 0.487240 -0.922795 0.091984 -v 0.505704 -0.955694 0.045899 -v 0.451108 -0.910186 0.074405 -v 0.458496 -0.939219 0.022931 -v 0.422066 -0.883161 0.060275 -v 0.420550 -0.903908 0.004469 -v 0.658134 -0.815698 0.100954 -v 1.216943 -0.645410 0.281079 -v 1.203219 -0.661802 0.320266 -v 0.688606 -0.827102 -0.050112 -v 0.696524 -0.830657 0.008810 -v 0.681357 -0.831904 0.066390 -v 0.677267 -0.867283 -0.055626 -v 0.681708 -0.883157 0.001604 -v 0.665321 -0.888729 0.058591 -v 0.652964 -0.899581 -0.067448 -v 0.649955 -0.925355 -0.013842 -v 0.630951 -0.934404 0.041872 -v 0.619397 -0.919077 -0.083778 -v 0.606097 -0.950829 -0.035177 -v 0.583480 -0.961977 0.018779 -v 0.581676 -0.922805 -0.102129 -v 0.556812 -0.955699 -0.059154 -v 0.530135 -0.967248 -0.007173 -v 0.545544 -0.910196 -0.119707 -v 0.509604 -0.939224 -0.082122 -v 0.479037 -0.949416 -0.032033 -v 0.516501 -0.883170 -0.133838 -v 0.471658 -0.903913 -0.100584 -v 0.437965 -0.911196 -0.052017 -v 0.694218 -0.815701 0.026783 -v 1.162960 -0.605827 0.365538 -v 1.160008 -0.566250 0.345103 -v 0.404535 -0.845832 0.051744 -v 0.397644 -0.855137 -0.006677 -v 0.497677 -0.815489 0.097056 -v 0.590820 -0.785145 0.142369 -v 0.641037 -0.775845 0.111730 -v 0.573288 -0.747817 0.133838 -v 0.618132 -0.727073 0.100584 -v 0.544246 -0.720791 0.119708 -v 0.580186 -0.691762 0.082122 -v 0.508114 -0.708182 0.102129 -v 0.532977 -0.675287 0.059154 -v 0.470393 -0.711909 0.083778 -v 0.483693 -0.680158 0.035177 -v 0.436826 -0.731406 0.067448 -v 0.439835 -0.705631 0.013842 -v 0.412523 -0.763703 0.055627 -v 0.408082 -0.747830 -0.001604 -v 0.401184 -0.803884 0.050112 -v 0.393266 -0.800329 -0.008809 -v 0.637283 -0.736541 0.090806 -v 1.188476 -0.605830 0.313091 -v 1.213991 -0.605832 0.260644 -v 1.196092 -0.566253 0.270932 -v 1.173732 -0.549858 0.305916 -v 0.498970 -0.845841 -0.142368 -v 0.448753 -0.855142 -0.111730 -v 0.413172 -0.858406 -0.064081 -v 0.592113 -0.815498 -0.097056 -v 0.685255 -0.785154 -0.051744 -v 0.692145 -0.775850 0.006677 -v 0.667724 -0.747826 -0.060275 -v 0.669240 -0.727078 -0.004469 -v 0.651825 -0.719791 0.052017 -v 0.638682 -0.720800 -0.074405 -v 0.631294 -0.691767 -0.022931 -v 0.610753 -0.681570 0.032034 -v 0.602550 -0.708191 -0.091984 -v 0.584086 -0.675292 -0.045899 -v 0.559655 -0.663738 0.007174 -v 0.564829 -0.711918 -0.110335 -v 0.534801 -0.680163 -0.069876 -v 0.506310 -0.669010 -0.018779 -v 0.531262 -0.731415 -0.126664 -v 0.490943 -0.705636 -0.091211 -v 0.458838 -0.696582 -0.041872 -v 0.506958 -0.763712 -0.138486 -v 0.459190 -0.747835 -0.106657 -v 0.424469 -0.742257 -0.058591 -v 0.495619 -0.803893 -0.144001 -v 0.444374 -0.800334 -0.113862 -v 0.408433 -0.799082 -0.066389 -v 0.673367 -0.736545 0.016635 -v 1.536358 -1.231944 0.528825 -v 1.164007 -0.710783 0.421187 -v 1.192851 -0.742883 0.380143 -v 1.126224 -0.712593 0.402674 -v 1.143485 -0.745248 0.355954 -v 1.090689 -0.698164 0.385279 -v 1.097057 -0.726395 0.333226 -v 1.062812 -0.669692 0.371650 -v 1.060634 -0.689196 0.315419 -v 1.046836 -0.631513 0.363861 -v 1.039760 -0.639312 0.305243 -v 1.045195 -0.589439 0.363099 -v 1.037615 -0.584340 0.304247 -v 1.058137 -0.549875 0.369480 -v 1.054525 -0.532647 0.312584 -v 1.214803 -0.743225 0.371777 -v 1.572648 -1.231869 0.454755 -v 1.542129 -1.241999 0.485718 -v 1.258981 -0.710588 0.227338 -v 1.244250 -0.742778 0.275232 -v 1.221028 -0.754118 0.328890 -v 1.221198 -0.712397 0.208825 -v 1.194885 -0.745142 0.251044 -v 1.167596 -0.756678 0.302709 -v 1.185664 -0.697968 0.191430 -v 1.148457 -0.726289 0.228316 -v 1.117342 -0.736272 0.278108 -v 1.157786 -0.669497 0.177800 -v 1.112033 -0.689090 0.210508 -v 1.077918 -0.696007 0.258833 -v 1.141811 -0.631318 0.170012 -v 1.091160 -0.639206 0.200332 -v 1.055325 -0.642014 0.247819 -v 1.140169 -0.589244 0.169250 -v 1.089015 -0.584234 0.199336 -v 1.053003 -0.582512 0.246741 -v 1.153111 -0.549679 0.175630 -v 1.105924 -0.532541 0.207673 -v 1.071305 -0.526560 0.255765 -v 1.251093 -0.743150 0.297706 -v 1.558713 -1.207595 0.558825 -v 1.596100 -1.183214 0.558145 -v 1.083692 -0.518844 0.382032 -v 1.087914 -0.492103 0.328983 -v 1.140988 -0.605927 0.410016 -v 1.198285 -0.693010 0.438000 -v 1.237637 -0.719662 0.402109 -v 1.223840 -0.661980 0.450551 -v 1.271027 -0.679119 0.418509 -v 1.236782 -0.622416 0.456932 -v 1.287936 -0.627426 0.426845 -v 1.235140 -0.580341 0.456170 -v 1.285791 -0.572453 0.425850 -v 1.219164 -0.542162 0.448381 -v 1.264917 -0.522570 0.415674 -v 1.191287 -0.513691 0.434752 -v 1.228494 -0.485370 0.397866 -v 1.155753 -0.499262 0.417357 -v 1.182066 -0.466517 0.375138 -v 1.117970 -0.501071 0.398844 -v 1.132701 -0.468882 0.350950 -v 1.274546 -0.694495 0.401096 -v 1.584374 -1.207542 0.506450 -v 1.610035 -1.207489 0.454074 -v 1.632390 -1.183140 0.484074 -v 1.626618 -1.173085 0.527182 -v 1.178666 -0.518649 0.188182 -v 1.139314 -0.491997 0.224073 -v 1.107446 -0.482676 0.273516 -v 1.235963 -0.605732 0.216166 -v 1.293259 -0.692815 0.244150 -v 1.289037 -0.719556 0.297198 -v 1.318814 -0.661784 0.256702 -v 1.322426 -0.679013 0.313598 -v 1.305645 -0.685100 0.370417 -v 1.331756 -0.622220 0.263083 -v 1.339336 -0.627320 0.321935 -v 1.323948 -0.629148 0.379441 -v 1.330114 -0.580146 0.262321 -v 1.337191 -0.572347 0.320939 -v 1.321626 -0.569646 0.378363 -v 1.314139 -0.541967 0.254532 -v 1.316317 -0.522464 0.310763 -v 1.299033 -0.515652 0.367348 -v 1.286261 -0.513495 0.240903 -v 1.279894 -0.485264 0.292955 -v 1.259609 -0.475388 0.348074 -v 1.250727 -0.499066 0.223507 -v 1.233466 -0.466411 0.270227 -v 1.209355 -0.454982 0.323473 -v 1.212944 -0.500876 0.204994 -v 1.184100 -0.468776 0.246039 -v 1.155923 -0.457541 0.297292 -v 1.310836 -0.694421 0.327025 -v 1.666868 -1.085842 0.428226 -v 1.633370 -1.059764 0.466150 -v 1.603599 -1.050567 0.515746 -v 1.582089 -1.059651 0.569462 -v 1.572115 -1.085633 0.619120 -v 1.607809 -1.106651 0.398933 -v 1.574888 -1.076423 0.437140 -v 1.545321 -1.065769 0.486835 -v 1.523608 -1.076310 0.540452 -v 1.513056 -1.106443 0.589828 -v 1.576834 -1.129750 0.383583 -v 1.534417 -1.106603 0.417085 -v 1.501515 -1.098436 0.465127 -v 1.483137 -1.106490 0.520396 -v 1.482080 -1.129542 0.574478 -v 1.556129 -1.164320 0.373344 -v 1.507364 -1.151772 0.403706 -v 1.472233 -1.147325 0.450646 -v 1.456084 -1.151659 0.507017 -v 1.461375 -1.164112 0.564238 -v 1.548846 -1.205099 0.369773 -v 1.497848 -1.205051 0.399041 -v 1.461933 -1.204995 0.445596 -v 1.446568 -1.204938 0.502352 -v 1.454092 -1.204890 0.560668 -v 1.556093 -1.245877 0.373415 -v 1.507318 -1.258330 0.403800 -v 1.472183 -1.262664 0.450747 -v 1.456038 -1.258217 0.507111 -v 1.461340 -1.245668 0.564310 -v 1.576769 -1.280447 0.383716 -v 1.534332 -1.303498 0.417258 -v 1.501423 -1.311553 0.465314 -v 1.483052 -1.303385 0.520569 -v 1.482015 -1.280238 0.574610 -v 1.607724 -1.303546 0.399106 -v 1.574777 -1.333678 0.437366 -v 1.545200 -1.344220 0.487080 -v 1.523497 -1.333565 0.540678 -v 1.512971 -1.303337 0.590001 -v 1.644247 -1.311657 0.417244 -v 1.622496 -1.344276 0.461064 -v 1.596851 -1.355691 0.512730 -v 1.571216 -1.344163 0.564375 -v 1.549493 -1.311448 0.608138 -v 1.680776 -1.303545 0.435367 -v 1.670224 -1.333678 0.484743 -v 1.648512 -1.344219 0.538360 -v 1.618944 -1.333565 0.588054 -v 1.586023 -1.303337 0.626261 -v 1.746068 -1.261106 0.467729 -v 1.736848 -1.288758 0.517764 -v 1.715603 -1.298428 0.571612 -v 1.685567 -1.288645 0.621075 -v 1.651314 -1.260897 0.658623 -v 1.591915 -1.129449 0.628996 -v 1.611714 -1.173265 0.638872 -v 1.631514 -1.217081 0.648747 -v 1.531297 -1.155666 0.598936 -v 1.549539 -1.204890 0.608045 -v 1.567781 -1.254113 0.617153 -v 1.686668 -1.129658 0.438101 -v 1.706468 -1.173474 0.447977 -v 1.726268 -1.217290 0.457853 -v 1.626051 -1.155875 0.408042 -v 1.644293 -1.205098 0.417150 -v 1.662535 -1.254322 0.426258 -v -1.182081 -1.207870 -1.842323 -v -1.205910 -2.337511 -2.090683 -v -1.249868 -1.971735 -2.099821 -v -1.235726 -1.534247 -1.995120 -v -1.364176 -1.254429 -1.680813 -v -1.303263 -2.362402 -2.004334 -v -1.400124 -2.010153 -1.966552 -v -1.416379 -1.580438 -1.834890 -v -1.081548 -2.560738 -2.036439 -v -1.343281 -2.380612 -1.952346 -v -1.439028 -1.288490 -1.583573 -v -1.169113 -2.608149 -1.942889 -v -1.490638 -1.614228 -1.738420 -v -1.461888 -2.038259 -1.886314 -v -1.170164 -2.315144 -2.026590 -v -1.210248 -1.975245 -2.034191 -v -1.196636 -1.560346 -1.934715 -v -1.332958 -1.292449 -1.623402 -v -1.277679 -2.352602 -1.936124 -v -1.367821 -2.020053 -1.899627 -v -1.383193 -1.608147 -1.773175 -v -1.062359 -2.539757 -1.966747 -v -1.337717 -2.384414 -1.874158 -v -1.427597 -1.326813 -1.515583 -v -1.155439 -2.611442 -1.866703 -v -1.476798 -1.645074 -1.667364 -v -1.449310 -2.055894 -1.810682 -v -1.198809 -2.702261 -1.922426 -v -1.420105 -2.460408 -1.934561 -v -1.458304 -1.044493 -1.404346 -v -1.557278 -2.102431 -1.870043 -v -1.062190 -0.968805 -1.593382 -v -1.600290 -1.645912 -1.715856 -v -1.326027 -1.036934 -1.342541 -v -1.235935 -1.007729 -1.442869 -v -1.125938 -1.017577 -1.710142 -v -1.296622 -1.061218 -1.558754 -v -1.366783 -1.093144 -1.467608 -v -1.268276 -1.102636 -1.503047 -v -1.359884 -1.133560 -1.400222 -v -1.545535 -1.278917 -1.543171 -v -0.951530 -1.206338 -1.928108 -v -1.082650 -2.336691 -2.136546 -v -1.059630 -1.970471 -2.170607 -v -1.007001 -1.532727 -2.080225 -v -0.707623 -1.250066 -1.925109 -v -0.952249 -2.360070 -2.134942 -v -0.858370 -2.006553 -2.168131 -v -0.765026 -1.576109 -2.077250 -v -0.887773 -2.377585 -2.121836 -v -0.587023 -1.282828 -1.900594 -v -1.010729 -2.607096 -2.001822 -v -0.645381 -1.608611 -2.052929 -v -0.758857 -2.033587 -2.147903 -v -1.068065 -2.314465 -2.064579 -v -1.046670 -1.974158 -2.095056 -v -0.996792 -1.559018 -2.009075 -v -0.693275 -1.288198 -1.861421 -v -0.927138 -2.350273 -2.066556 -v -0.838954 -2.016540 -2.096412 -v -0.749475 -1.603936 -2.008974 -v -1.138693 -2.561117 -2.015176 -v -0.840831 -2.381112 -2.059043 -v -0.550783 -1.320987 -1.841835 -v -0.971239 -2.610218 -1.935242 -v -0.609049 -1.639308 -1.990243 -v -0.718732 -2.051040 -2.082521 -v -0.973783 -2.700765 -2.006155 -v -0.817083 -2.456400 -2.158937 -v -0.458133 -1.037846 -1.776497 -v -0.675291 -2.096570 -2.198219 -v -0.882322 -0.967610 -1.660308 -v -0.547288 -1.638914 -2.107665 -v -0.517917 -1.031563 -1.643229 -v -0.652011 -1.003849 -1.660140 -v -0.909835 -1.016140 -1.790552 -v -0.681212 -1.057128 -1.787740 -v -0.568170 -1.087837 -1.764762 -v -0.665766 -1.098632 -1.727233 -v -0.528872 -1.128038 -1.709431 -v -0.480131 -1.271837 -1.939595 -v -1.107904 -2.540060 -1.949800 -v -1.021093 -2.571576 -2.035696 -v -1.183827 -2.572658 -1.975144 -v -0.992832 -2.561284 -1.968145 -v -1.161178 -2.562402 -1.905506 -v -1.070821 -1.201238 -1.895904 -v -1.125348 -1.527667 -2.048277 -v -1.158063 -1.966263 -2.144033 -v -1.146427 -2.333964 -2.119328 -v -1.281226 -1.225759 -1.769811 -v -1.334086 -1.551995 -1.923182 -v -1.331678 -1.986496 -2.039988 -v -1.258916 -2.347075 -2.051915 -v -1.209527 -1.337038 -1.913568 -v -1.097867 -0.922430 -1.644052 -v -1.172842 -2.473171 -2.058239 -v -1.233163 -2.166307 -2.106534 -v -1.252049 -1.759234 -2.064649 -v -1.394115 -1.384234 -1.749847 -v -1.262845 -0.964612 -1.497724 -v -1.242315 -2.490934 -1.996620 -v -1.358568 -2.198372 -1.995305 -v -1.421528 -1.802568 -1.914328 -v -1.105766 -2.575883 -2.014372 -v -1.509373 -1.253523 -1.608655 -v -1.563820 -1.620471 -1.781151 -v -1.519736 -2.076569 -1.934554 -v -1.381533 -2.432995 -1.997803 -v -1.190995 -2.666176 -1.984533 -v -1.069314 -2.689296 -1.918431 -v -1.262555 -2.510691 -1.957483 -v -1.410117 -2.221829 -1.928337 -v -1.469991 -1.418761 -1.651277 -v -1.330661 -0.995472 -1.409625 -v -1.491195 -1.834269 -1.823825 -v -1.100199 -1.554577 -1.981169 -v -1.131312 -1.970489 -2.072216 -v -1.120901 -2.312151 -2.050337 -v -1.246852 -1.261296 -1.701992 -v -1.289752 -1.577733 -1.866466 -v -1.287683 -1.990931 -1.977741 -v -1.220782 -2.327331 -1.989724 -v -1.166373 -1.385157 -1.860980 -v -1.139965 -2.444062 -1.995200 -v -1.194820 -2.157480 -2.040682 -v -1.212253 -1.774259 -2.000930 -v -1.361687 -1.418827 -1.690934 -v -1.220117 -2.475769 -1.928289 -v -1.328652 -2.198748 -1.927180 -v -1.388297 -1.821520 -1.849586 -v -1.080330 -2.558918 -1.945709 -v -1.041922 -2.699135 -1.844989 -v -1.257767 -2.510838 -1.879424 -v -1.399996 -2.232617 -1.851160 -v -1.456825 -1.454692 -1.582369 -v -1.477598 -1.858597 -1.750244 -v -0.975398 -0.963647 -1.635206 -v -1.147452 -0.983396 -1.530661 -v -1.060535 -2.792873 -1.896688 -v -1.414689 -0.927280 -1.334933 -v -1.581032 -1.429272 -1.621048 -v -1.595106 -1.884933 -1.806038 -v -1.495909 -2.295293 -1.911630 -v -1.323270 -2.596491 -1.938328 -v -1.021651 -1.011360 -1.760366 -v -1.218870 -1.034345 -1.642174 -v -1.422103 -1.019115 -1.469815 -v -1.190233 -1.086299 -1.588210 -v -1.154009 -1.112723 -1.776233 -v -1.330399 -1.157824 -1.619783 -v -1.402905 -1.190817 -1.525591 -v -1.300617 -1.197542 -1.563224 -v -1.393740 -1.230187 -1.457903 -v -1.501920 -1.161705 -1.473758 -v -0.828899 -1.222753 -1.938116 -v -0.885342 -1.549012 -2.090154 -v -0.958441 -1.984016 -2.178864 -v -1.017088 -2.345468 -2.141896 -v -0.975821 -1.335484 -2.000527 -v -0.888988 -0.921042 -1.721774 -v -1.084882 -2.472586 -2.090968 -v -1.074387 -2.165252 -2.165612 -v -1.037470 -1.757808 -2.144491 -v -0.728576 -1.379811 -1.997486 -v -0.668008 -0.960660 -1.719056 -v -0.991827 -2.489269 -2.089823 -v -0.906413 -2.195367 -2.163546 -v -0.810461 -1.798507 -2.141699 -v -0.550595 -1.247151 -1.965405 -v -0.617863 -1.614185 -2.133130 -v -0.746168 -2.071428 -2.222388 -v -0.887929 -2.429715 -2.181468 -v -1.020714 -2.665044 -2.047893 -v -0.950698 -2.508618 -2.073521 -v -0.823358 -2.217930 -2.146663 -v -0.606326 -1.413021 -1.972636 -v -0.558744 -0.990342 -1.696846 -v -0.698216 -1.829000 -2.118883 -v -0.810166 -1.258394 -1.864478 -v -0.881517 -1.575020 -2.018365 -v -0.950993 -1.988694 -2.103019 -v -1.005523 -2.325901 -2.069818 -v -0.973541 -1.383875 -1.932730 -v -1.068895 -2.443589 -2.021645 -v -1.060461 -2.156587 -2.090675 -v -1.025759 -1.773020 -2.070322 -v -0.714202 -1.414524 -1.931855 -v -0.964136 -2.474067 -2.023537 -v -0.884517 -2.195797 -2.092437 -v -0.793067 -1.817564 -2.071064 -v -0.903296 -2.508482 -2.011318 -v -0.780444 -2.228500 -2.081687 -v -0.570828 -1.448804 -1.912038 -v -0.660125 -1.853164 -2.054416 -v -0.776636 -0.980932 -1.668637 -v -0.447134 -0.920850 -1.694949 -v -0.502420 -1.422104 -2.022387 -v -0.607368 -1.878369 -2.173563 -v -0.746661 -2.290315 -2.190416 -v -0.891232 -2.593620 -2.099084 -v -0.794889 -1.031527 -1.799932 -v -0.528617 -1.013177 -1.802270 -v -0.780679 -1.083577 -1.740600 -v -0.930682 -1.111239 -1.859330 -v -0.694418 -1.153597 -1.856424 -v -0.577597 -1.185332 -1.832678 -v -0.679520 -1.193415 -1.794327 -v -0.539828 -1.224512 -1.775633 -v -0.469132 -1.154842 -1.858046 -v -1.053444 -2.580536 -2.023502 -v -1.151272 -2.581186 -1.987101 -v -1.033283 -2.565897 -1.953458 -v -1.120915 -2.566480 -1.920852 -v -1.187692 -0.938637 -1.578356 -v -1.310030 -1.355171 -1.840063 -v -1.344325 -1.775884 -1.997160 -v -1.301442 -2.178627 -2.056596 -v -1.207669 -2.483905 -2.028049 -v -1.378467 -0.901911 -1.400395 -v -1.544802 -1.403862 -1.686489 -v -1.558204 -1.859368 -1.871039 -v -1.457738 -2.268852 -1.975530 -v -1.292245 -2.566328 -2.000947 -v -1.257266 -1.369375 -1.784696 -v -1.299636 -1.791166 -1.937093 -v -1.259521 -2.171496 -1.993566 -v -1.173801 -2.458853 -1.965668 -v -1.250048 -1.130052 -1.705992 -v -1.465738 -1.136319 -1.539235 -v -1.218528 -1.173797 -1.645106 -v -0.997066 -0.916421 -1.692597 -v -1.096745 -1.330315 -1.967882 -v -1.148498 -1.753062 -2.114518 -v -1.156541 -2.161740 -2.143434 -v -1.129057 -2.474743 -2.075160 -v -0.777884 -0.935914 -1.730841 -v -0.851512 -1.352124 -2.010671 -v -0.923335 -1.773087 -2.153805 -v -0.989934 -2.176557 -2.172504 -v -1.038669 -2.482781 -2.090931 -v -1.083766 -2.749282 -1.958342 -v -0.517628 -0.896190 -1.720703 -v -0.572907 -1.397403 -2.048120 -v -0.678078 -1.853519 -2.198523 -v -0.817622 -2.264598 -2.213709 -v -0.955992 -2.564093 -2.126062 -v -1.073220 -1.380034 -1.905545 -v -1.122257 -1.768858 -2.044278 -v -1.129986 -2.153557 -2.071921 -v -1.104276 -2.447021 -2.008066 -v -0.855083 -1.366702 -1.934343 -v -0.917711 -1.788628 -2.079203 -v -0.980539 -2.169642 -2.097372 -v -1.023814 -2.457857 -2.021476 -v -1.046236 -1.106299 -1.828135 -v -0.811894 -1.127140 -1.869024 -v -0.539606 -1.130164 -1.883838 -v -0.795436 -1.170986 -1.802533 -v -0.879469 -1.087012 -1.685149 -v -0.918386 -1.066220 -1.649181 -v -0.970006 -1.059174 -1.622419 -v -1.026472 -1.066947 -1.608935 -v -1.079186 -1.088354 -1.610784 -v -0.859328 -1.126041 -1.631763 -v -0.898064 -1.101091 -1.595235 -v -0.949622 -1.092584 -1.568275 -v -1.006150 -1.101817 -1.554989 -v -1.059045 -1.127383 -1.557397 -v -0.849931 -1.158171 -1.607104 -v -0.885786 -1.143070 -1.563017 -v -0.936331 -1.138022 -1.533403 -v -0.993872 -1.143797 -1.522771 -v -1.049648 -1.159513 -1.532739 -v -0.845479 -1.197953 -1.595868 -v -0.879970 -1.195048 -1.548337 -v -0.930037 -1.194283 -1.517513 -v -0.988056 -1.195774 -1.508090 -v -1.045197 -1.199295 -1.521503 -v -0.846652 -1.239330 -1.599765 -v -0.881503 -1.249110 -1.553428 -v -0.931695 -1.252799 -1.523023 -v -0.989589 -1.249836 -1.513181 -v -1.046370 -1.240673 -1.525400 -v -0.853270 -1.276004 -1.618201 -v -0.890149 -1.297027 -1.577515 -v -0.941055 -1.304664 -1.549096 -v -0.998236 -1.297753 -1.537269 -v -1.052988 -1.277346 -1.543836 -v -0.864326 -1.302391 -1.648369 -v -0.904595 -1.331503 -1.616933 -v -0.956690 -1.341981 -1.591761 -v -1.012681 -1.332229 -1.576687 -v -1.064044 -1.303733 -1.574004 -v -0.878137 -1.314474 -1.685678 -v -0.922639 -1.347290 -1.665679 -v -0.976222 -1.359068 -1.644523 -v -1.030726 -1.348016 -1.625433 -v -1.077854 -1.315816 -1.611313 -v -0.892600 -1.310413 -1.724446 -v -0.941536 -1.341984 -1.716332 -v -0.996675 -1.353325 -1.699350 -v -1.049622 -1.342711 -1.676086 -v -1.092317 -1.311756 -1.650082 -v -0.905513 -1.290827 -1.758773 -v -0.958408 -1.316394 -1.761182 -v -1.014937 -1.325626 -1.747895 -v -1.066494 -1.317120 -1.720936 -v -1.105230 -1.292169 -1.684408 -v -0.925919 -1.229083 -1.812462 -v -0.979076 -1.251844 -1.815524 -v -1.035697 -1.260092 -1.802467 -v -1.087162 -1.252571 -1.775278 -v -1.125636 -1.230425 -1.738097 -v -1.090799 -1.123872 -1.642612 -v -1.102411 -1.159389 -1.674441 -v -1.114024 -1.194907 -1.706269 -v -1.070592 -1.168580 -1.589150 -v -1.082138 -1.209777 -1.620903 -v -1.093684 -1.250973 -1.652655 -v -0.891082 -1.122530 -1.716977 -v -0.902694 -1.158047 -1.748805 -v -0.914307 -1.193565 -1.780634 -v -0.870874 -1.167238 -1.663515 -v -0.882420 -1.208434 -1.695268 -v -0.893967 -1.249631 -1.727020 -v -1.750524 -1.273227 0.726173 -v -1.688630 -2.424658 0.632831 -v -1.788454 -2.081269 0.721864 -v -1.804838 -1.632543 0.752421 -v -1.562458 -1.290732 0.886599 -v -1.588084 -2.434017 0.718600 -v -1.633272 -2.095714 0.854240 -v -1.618261 -1.649909 0.911577 -v -1.592412 -2.611653 0.477868 -v -1.528858 -2.440977 0.751459 -v -1.451679 -1.303750 0.948058 -v -1.480183 -2.639662 0.550581 -v -1.508360 -1.662824 0.972550 -v -1.541863 -2.106456 0.904953 -v -1.637269 -2.382299 0.594705 -v -1.729266 -2.062886 0.676606 -v -1.744654 -1.637260 0.705372 -v -1.501094 -1.308424 0.846131 -v -1.528297 -2.403516 0.688627 -v -1.570316 -2.083784 0.815322 -v -1.555715 -1.656368 0.870055 -v -1.533403 -2.570652 0.455459 -v -1.453614 -2.422652 0.738754 -v -1.377808 -1.320704 0.926206 -v -1.407932 -2.620632 0.530093 -v -1.433798 -1.671554 0.948966 -v -1.466244 -2.101408 0.883841 -v -1.432393 -2.726928 0.566657 -v -1.481929 -2.519734 0.816114 -v -1.341930 -1.022926 0.981547 -v -1.498339 -2.172434 0.990009 -v -1.588851 -0.964844 0.615452 -v -1.465695 -1.697334 1.075142 -v -1.300067 -0.986233 0.846361 -v -1.414294 -0.977266 0.769504 -v -1.680466 -1.049562 0.682571 -v -1.504186 -1.065970 0.832944 -v -1.400350 -1.078172 0.890552 -v -1.443228 -1.087652 0.795046 -v -1.325980 -1.097723 0.872976 -v -1.403141 -1.293589 1.051056 -v -1.859843 -1.273468 0.505800 -v -1.747076 -2.424787 0.515013 -v -1.878659 -2.081469 0.540024 -v -1.913291 -1.632782 0.533793 -v -1.873773 -1.291418 0.259029 -v -1.754522 -2.434383 0.383082 -v -1.890153 -2.096280 0.336401 -v -1.927111 -1.650590 0.288977 -v -1.744845 -2.441453 0.316058 -v -1.855671 -1.304640 0.133666 -v -1.555284 -2.639828 0.399189 -v -1.909152 -1.663707 0.164606 -v -1.875217 -2.107191 0.232957 -v -1.685681 -2.382405 0.497113 -v -1.806830 -2.063057 0.520249 -v -1.839414 -1.637469 0.514350 -v -1.804410 -1.309092 0.234687 -v -1.694512 -2.403883 0.353560 -v -1.821087 -2.084337 0.309801 -v -1.856203 -1.657030 0.264312 -v -1.565316 -2.611593 0.532490 -v -1.689221 -2.423171 0.263804 -v -1.793563 -1.321621 0.088100 -v -1.495273 -2.620824 0.354025 -v -1.845255 -1.672461 0.119524 -v -1.812659 -2.102171 0.185514 -v -1.539092 -2.727163 0.351565 -v -1.767861 -2.520365 0.239713 -v -1.816177 -1.023971 0.025529 -v -1.916547 -2.173355 0.146957 -v -1.674138 -0.965031 0.443524 -v -1.964993 -1.698434 0.068625 -v -1.683245 -0.987077 0.073925 -v -1.691171 -0.977877 0.211358 -v -1.782935 -1.049787 0.476008 -v -1.795992 -1.066613 0.244702 -v -1.779024 -1.079007 0.127194 -v -1.728917 -1.088282 0.219134 -v -1.720018 -1.098592 0.078650 -v -1.908319 -1.294702 0.032684 -v -1.511807 -2.570604 0.498994 -v -1.595865 -2.616102 0.416703 -v -1.518702 -2.615932 0.572254 -v -1.537149 -2.585058 0.384201 -v -1.457325 -2.584882 0.545115 -v -1.816497 -1.271043 0.621596 -v -1.870289 -1.630377 0.648673 -v -1.842892 -2.079468 0.635573 -v -1.723902 -2.423491 0.576922 -v -1.664863 -1.279846 0.815762 -v -1.719856 -1.639110 0.841301 -v -1.717772 -2.086731 0.795789 -v -1.642833 -2.428197 0.680729 -v -1.781616 -1.418972 0.743635 -v -1.645437 -0.937729 0.660770 -v -1.625723 -2.542464 0.580732 -v -1.745664 -2.267738 0.682104 -v -1.810385 -1.868466 0.747006 -v -1.590976 -1.436717 0.906257 -v -1.475050 -0.953589 0.806117 -v -1.553973 -2.549143 0.641938 -v -1.616146 -2.279794 0.792586 -v -1.635347 -1.884758 0.896318 -v -1.564485 -2.622388 0.498058 -v -1.476735 -1.283818 1.024053 -v -1.539156 -1.687438 1.047823 -v -1.571283 -2.161818 0.961615 -v -1.554186 -2.507190 0.786783 -v -1.502275 -2.708683 0.568701 -v -1.447001 -2.701173 0.439864 -v -1.508944 -2.559236 0.656159 -v -1.539856 -2.288759 0.834912 -v -1.478682 -1.449913 0.968558 -v -1.374685 -0.965383 0.861799 -v -1.532244 -1.896875 0.953519 -v -1.801855 -1.635351 0.614730 -v -1.776096 -2.061292 0.602418 -v -1.666518 -2.381285 0.548409 -v -1.594550 -1.292010 0.771582 -v -1.663909 -1.643998 0.789428 -v -1.662089 -2.069747 0.746383 -v -1.592881 -2.388644 0.640083 -v -1.723603 -1.446522 0.690545 -v -1.576812 -2.494213 0.546358 -v -1.689360 -2.237608 0.639600 -v -1.750021 -1.861611 0.700328 -v -1.529216 -1.450603 0.864883 -v -1.495088 -2.513795 0.615960 -v -1.554268 -2.258646 0.757091 -v -1.572209 -1.882001 0.855562 -v -1.506130 -2.584921 0.469069 -v -1.377248 -2.687863 0.405248 -v -1.434694 -2.537521 0.644681 -v -1.464271 -2.276966 0.816934 -v -1.404762 -1.464162 0.945204 -v -1.456948 -1.898697 0.930757 -v -1.640337 -0.963162 0.533873 -v -1.515047 -0.969678 0.692563 -v -1.399961 -2.793507 0.416630 -v -1.311324 -0.887595 0.946792 -v -1.434082 -1.462191 1.074455 -v -1.489831 -1.950315 1.048524 -v -1.494583 -2.362602 0.909303 -v -1.460993 -2.641840 0.704035 -v -1.742306 -1.047515 0.584548 -v -1.600174 -1.055766 0.766547 -v -1.415510 -1.013164 0.954502 -v -1.538149 -1.087983 0.727221 -v -1.715495 -1.161394 0.704372 -v -1.533321 -1.178351 0.859771 -v -1.426015 -1.190961 0.919305 -v -1.472161 -1.198038 0.820589 -v -1.351894 -1.209214 0.899591 -v -1.372535 -1.158257 1.016302 -v -1.879341 -1.280319 0.383404 -v -1.932635 -1.639579 0.412367 -v -1.894748 -2.087121 0.439029 -v -1.757500 -2.428450 0.449576 -v -1.892432 -1.419216 0.520246 -v -1.744481 -0.937947 0.461112 -v -1.667431 -2.542556 0.496655 -v -1.820950 -2.267904 0.530337 -v -1.912130 -1.868690 0.541900 -v -1.906552 -1.437412 0.270098 -v -1.757101 -0.954210 0.237538 -v -1.672745 -2.549405 0.402508 -v -1.830543 -2.280266 0.360391 -v -1.925095 -1.885397 0.312225 -v -1.931355 -1.284820 0.107601 -v -1.987697 -1.688426 0.143626 -v -1.938083 -2.162626 0.222196 -v -1.788237 -2.507706 0.314968 -v -1.583016 -2.708861 0.405937 -v -1.656816 -2.559561 0.358069 -v -1.818077 -2.289372 0.274055 -v -1.888203 -1.450816 0.143019 -v -1.740701 -0.966190 0.123959 -v -1.908247 -1.897704 0.195547 -v -1.801612 -1.292466 0.354173 -v -1.857480 -1.644424 0.399215 -v -1.821736 -2.070099 0.424557 -v -1.694949 -2.388869 0.434327 -v -1.815037 -1.446723 0.506225 -v -1.610511 -2.494287 0.478425 -v -1.753069 -2.237749 0.511172 -v -1.838449 -1.861805 0.522067 -v -1.836232 -1.451279 0.245982 -v -1.616465 -2.514062 0.371279 -v -1.764861 -2.259110 0.332562 -v -1.854447 -1.882623 0.286608 -v -1.602772 -2.537892 0.305858 -v -1.758042 -2.277614 0.224732 -v -1.824872 -1.465088 0.098318 -v -1.844566 -1.899551 0.149371 -v -1.690876 -0.970065 0.338116 -v -1.770105 -0.888606 0.021951 -v -1.945523 -1.463318 0.043458 -v -1.958182 -1.951347 0.104390 -v -1.849851 -2.363385 0.193130 -v -1.665850 -2.642291 0.291069 -v -1.801211 -1.056209 0.361282 -v -1.839170 -1.014097 0.100459 -v -1.732345 -1.088411 0.335747 -v -1.821389 -1.161627 0.490904 -v -1.834882 -1.179015 0.251866 -v -1.817348 -1.191824 0.130430 -v -1.766664 -1.198687 0.226911 -v -1.756790 -1.210106 0.083375 -v -1.862248 -1.159337 0.029106 -v -1.578076 -2.624394 0.446542 -v -1.531689 -2.624292 0.540052 -v -1.517175 -2.589274 0.422365 -v -1.475623 -2.589183 0.506128 -v -1.567829 -0.943726 0.741939 -v -1.694784 -1.425682 0.834451 -v -1.730659 -1.874627 0.830389 -v -1.686671 -2.272297 0.743802 -v -1.589944 -2.547754 0.611251 -v -1.384897 -0.877837 0.919726 -v -1.507647 -1.452387 1.047384 -v -1.563092 -1.940179 1.020769 -v -1.567168 -2.351205 0.880305 -v -1.532501 -2.627205 0.682448 -v -1.644140 -1.419104 0.775772 -v -1.674293 -1.868556 0.779156 -v -1.633039 -2.244226 0.697796 -v -1.540710 -2.503473 0.575457 -v -1.632518 -1.167806 0.791155 -v -1.446122 -1.148491 0.989277 -v -1.566356 -1.189996 0.749388 -v -1.705210 -0.935751 0.566024 -v -1.848493 -1.416759 0.637627 -v -1.871788 -1.866434 0.649674 -v -1.791099 -2.266235 0.610084 -v -1.646598 -2.544466 0.538706 -v -1.762146 -0.944155 0.350221 -v -1.912197 -1.426161 0.396175 -v -1.930278 -1.875067 0.427983 -v -1.834378 -2.272623 0.446045 -v -1.670078 -2.547931 0.449712 -v -1.467779 -2.770891 0.450248 -v -1.793078 -0.878736 0.096888 -v -1.968487 -1.453402 0.118392 -v -1.980418 -1.941099 0.179496 -v -1.870690 -2.351874 0.268447 -v -1.691940 -2.627557 0.361039 -v -1.778443 -1.445025 0.602909 -v -1.803403 -1.859812 0.615743 -v -1.727836 -2.236285 0.578669 -v -1.592497 -2.497195 0.511817 -v -1.834842 -1.419524 0.391343 -v -1.855389 -1.868955 0.414091 -v -1.765323 -2.244518 0.431129 -v -1.611829 -2.503630 0.432091 -v -1.779402 -1.159279 0.603072 -v -1.840276 -1.168264 0.372343 -v -1.885263 -1.149459 0.104030 -v -1.766972 -1.190438 0.344973 -v -0.874137 -0.072697 0.644137 -v -0.924090 -0.122650 0.644137 -v -0.924090 -0.193295 0.644137 -v -0.838814 -0.157973 0.693786 -v -0.888640 -0.178611 0.838418 -v -0.788989 -0.178611 0.838418 -v -0.818176 -0.108147 0.838418 -v -0.888640 -0.137335 0.838418 -v -0.788989 -0.137335 0.838418 -v -1.093560 0.292984 -0.121358 -v -1.093560 0.121358 -0.292984 -v -1.093560 -0.121358 -0.292984 -v -1.093560 -0.292984 -0.121358 -v -1.093560 -0.292984 0.121358 -v -0.874137 -0.243249 0.838418 -v -1.093560 0.060866 0.332097 -v -1.173825 0.000000 -0.145497 -v -1.173825 -0.145497 0.000000 -v -1.173825 0.145498 0.000000 -v -1.093560 0.292984 0.121358 -v -0.753538 -0.122650 0.838418 -v -0.749101 -0.380203 -0.157485 -v -1.025283 0.089448 0.477009 -v -0.955232 -0.089447 0.477009 -v -0.851475 -0.416358 -0.462306 -v -0.851475 -0.098271 -0.685024 -v -0.851475 0.351573 -0.685024 -v -0.851475 0.669660 -0.462306 -v -1.025283 0.430563 0.167312 -v -1.025283 -0.430563 0.167312 -v -1.003557 -0.165728 -0.464350 -v -1.003557 0.454155 -0.219507 -v -0.955232 -0.430563 0.167312 -v -1.025283 -0.089447 0.477009 -v -0.818176 -0.207798 0.838418 -v -0.859453 -0.108147 0.838418 -v -0.859453 -0.207798 0.838418 -v -0.803492 -0.243249 0.838418 -v -0.924090 -0.122650 0.838418 -v -0.753538 -0.193295 0.838418 -v -0.803492 -0.072697 0.838418 -v -0.874137 -0.072697 0.838418 -v -0.924090 -0.193295 0.838418 -v -0.788989 0.137335 0.838418 -v -0.874137 0.243249 0.644137 -v -0.859453 0.207799 0.838418 -v -0.924090 0.193296 0.644137 -v -0.859453 0.108148 0.838418 -v -0.924090 0.122651 0.644137 -v -0.888640 0.178612 0.838418 -v -0.874137 0.072697 0.644137 -v -0.818176 0.207799 0.838418 -v -0.803492 0.072697 0.644137 -v -0.788989 0.178612 0.838418 -v -0.753538 0.122651 0.644137 -v -0.818176 0.108148 0.838418 -v -0.753538 0.193296 0.644137 -v -0.888640 0.137335 0.838418 -v -0.803492 0.243249 0.644137 -v -0.838814 0.157973 0.693786 -v -0.888640 0.178611 0.644137 -v -0.888640 0.137335 0.644137 -v -0.859453 0.108148 0.644137 -v -0.818176 0.108148 0.644137 -v -0.788989 0.137335 0.644137 -v -0.788989 0.178611 0.644137 -v -0.818176 0.207798 0.644137 -v -0.859453 0.207798 0.644137 -v -0.897023 -0.380203 0.157485 -v -0.897023 -0.380203 -0.157485 -v -0.897023 -0.157485 -0.380203 -v -0.897023 0.157485 -0.380203 -v -0.897023 0.380203 -0.157485 -v -0.897023 0.380203 0.157485 -v -0.878238 0.054073 0.438727 -v -0.921936 0.108160 0.427070 -v -0.921936 0.207541 0.386581 -v -0.955232 0.267793 0.403136 -v -0.955232 0.430563 0.167312 -v -0.878238 0.261384 0.354425 -v -1.093560 0.182224 0.281828 -v -0.803492 -0.072697 0.644137 -v -0.753538 -0.122650 0.644137 -v -0.753538 -0.193295 0.644137 -v -0.803492 -0.243249 0.644137 -v -0.874137 -0.243249 0.644137 -v -0.888640 -0.137334 0.423181 -v -0.888640 -0.178611 0.407436 -v -0.859453 -0.207797 0.393878 -v -0.818176 -0.207797 0.393878 -v -0.788989 -0.178611 0.407436 -v -0.788989 -0.137334 0.423181 -v -0.818176 -0.108147 0.432018 -v -0.859453 -0.108147 0.432018 -v -1.173825 0.063989 0.159232 -v -1.093560 -0.060866 0.332097 -v -0.878238 -0.054073 0.438727 -v -0.921936 -0.108160 0.427070 -v -0.921936 -0.207541 0.386581 -v -1.003557 0.197391 -0.464350 -v -0.878238 -0.261384 0.354425 -v -1.093560 -0.182224 0.281829 -v -0.749101 -0.380203 0.157485 -v -0.749101 -0.157485 -0.380203 -v -0.749101 0.157485 -0.380203 -v -0.749101 0.380203 -0.157485 -v -0.749101 0.380203 0.157485 -v -0.783638 0.054073 0.438727 -v -0.724188 0.108160 0.427070 -v -0.724188 0.207541 0.386581 -v -0.783638 0.261384 0.354425 -v -0.783638 -0.054073 0.438727 -v -0.724188 -0.108160 0.427070 -v -0.724188 -0.207541 0.386581 -v -0.783638 -0.261384 0.354425 -v -1.025283 0.267793 0.403136 -v -1.025283 -0.267792 0.403136 -v -0.933506 -0.422492 -0.219507 -v -1.003557 -0.422492 -0.219507 -v -0.933506 -0.165728 -0.464350 -v -0.955232 0.089448 0.477009 -v -0.933506 0.197391 -0.464350 -v -0.933506 0.454155 -0.219507 -v -0.955232 -0.267792 0.403136 -v -0.868328 -0.423461 -0.325842 -v -0.868328 -0.138308 -0.563310 -v -0.868327 0.264959 -0.563310 -v -0.868327 0.550112 -0.325842 -v -0.938379 0.550112 -0.325842 -v -0.938379 0.264959 -0.563310 -v -0.938379 -0.138308 -0.563310 -v -0.938379 -0.423461 -0.325842 -v -0.938379 -0.506980 -0.157927 -v -0.938379 0.633631 -0.157927 -v -1.173825 -0.063988 0.159232 -v -0.659388 0.000000 0.013883 -v -0.818176 -0.108147 0.693786 -v -0.859453 -0.108147 0.693786 -v -0.888640 -0.137334 0.693786 -v -0.888640 -0.178611 0.693786 -v -0.859453 -0.207798 0.693786 -v -0.877069 -0.196227 0.838418 -v -0.892914 -0.157973 0.838418 -v -0.784714 -0.157973 0.838418 -v -0.800560 -0.196227 0.838418 -v -0.838814 -0.103873 0.838418 -v -0.800560 -0.119719 0.838418 -v -0.877069 -0.119719 0.838418 -v -0.838814 -0.212073 0.838418 -v -0.773342 -0.223445 0.838418 -v -0.931406 -0.157973 0.838418 -v -1.093560 0.318118 0.000000 -v -1.093560 0.224943 -0.224943 -v -1.025283 0.380203 -0.157485 -v -1.147765 0.212503 -0.072955 -v -1.093560 0.000000 -0.318118 -v -1.147765 0.072955 -0.212503 -v -1.179819 -0.078990 -0.078990 -v -1.093560 -0.224943 -0.224943 -v -1.147765 -0.072955 -0.212503 -v -1.093560 -0.318118 0.000000 -v -1.147765 -0.212503 -0.072955 -v -1.093560 -0.240160 0.222155 -v -1.147765 -0.212503 0.072955 -v -1.093560 0.000000 0.337674 -v -1.093560 0.240160 0.222155 -v -1.179819 0.078990 -0.078990 -v -1.179819 -0.094987 0.082423 -v -1.179819 0.000000 0.139883 -v -1.179819 0.094987 0.082423 -v -1.147765 0.212503 0.072955 -v -1.025283 0.157485 -0.380203 -v -1.025283 -0.157485 -0.380203 -v -1.025283 -0.380203 -0.157485 -v -1.025283 -0.380203 0.157485 -v -1.147765 0.052587 0.239449 -v -1.025283 0.380203 0.157485 -v -0.749101 -0.412820 0.000000 -v -0.749101 -0.291908 -0.291907 -v -0.749101 0.291908 -0.291908 -v -0.933506 -0.486603 -0.003170 -v -0.659388 -0.380203 -0.157485 -v -1.025283 0.000000 0.485206 -v -1.025283 -0.178758 0.450344 -v -0.955232 0.178758 0.450344 -v -1.025283 0.352934 0.315440 -v -0.933506 0.518266 -0.003170 -v -0.955232 -0.380203 0.157485 -v -0.955232 -0.380203 -0.157485 -v -0.955232 -0.157485 -0.380203 -v -0.955232 0.157485 -0.380203 -v -0.955232 0.380203 -0.157485 -v -0.955232 0.380203 0.157485 -v -0.873201 -0.485597 -0.307469 -v -0.851475 -0.290254 -0.596729 -v -0.851475 0.126651 -0.717641 -v -0.851475 0.543556 -0.596729 -v -0.873201 0.707236 -0.307469 -v -0.781424 -0.416358 -0.462306 -v -0.781423 -0.098271 -0.685024 -v -0.781423 0.351573 -0.685024 -v -0.781423 0.669660 -0.462306 -v -0.955232 0.352934 0.315440 -v -1.003557 0.352362 -0.367283 -v -1.003557 0.015831 -0.500207 -v -0.746223 -0.157973 0.838418 -v -0.904286 -0.092501 0.838418 -v -0.773342 -0.092501 0.838418 -v -0.838814 -0.065381 0.838418 -v -0.904286 -0.223445 0.838418 -v -0.838814 -0.250564 0.838418 -v -0.877069 0.196228 0.838418 -v -0.874137 0.243249 0.838418 -v -0.838814 0.212073 0.838418 -v -0.838814 0.250565 0.644137 -v -0.904286 0.223445 0.644137 -v -0.800560 0.196228 0.838418 -v -0.924090 0.193296 0.838418 -v -0.931406 0.157973 0.644137 -v -0.784714 0.157973 0.838418 -v -0.924090 0.122651 0.838418 -v -0.904286 0.092501 0.644137 -v -0.800560 0.119719 0.838418 -v -0.874137 0.072697 0.838418 -v -0.838814 0.065382 0.644137 -v -0.838814 0.103873 0.838418 -v -0.803492 0.072697 0.838418 -v -0.773342 0.092501 0.644137 -v -0.877069 0.119719 0.838418 -v -0.753538 0.122651 0.838418 -v -0.746223 0.157973 0.644137 -v -0.892914 0.157973 0.838418 -v -0.753538 0.193296 0.838418 -v -0.773342 0.223445 0.644137 -v -0.803492 0.243249 0.838418 -v -0.859453 0.207798 0.693786 -v -0.888640 0.178611 0.693786 -v -0.888640 0.137335 0.693786 -v -0.859453 0.108148 0.693786 -v -0.818176 0.108148 0.693786 -v -0.788989 0.137335 0.693786 -v -0.788989 0.178611 0.693786 -v -0.818176 0.207798 0.693786 -v -0.659388 0.380203 0.157485 -v -0.877069 0.196227 0.644137 -v -0.892914 0.157973 0.644137 -v -0.877069 0.119719 0.644137 -v -0.838814 0.103873 0.644137 -v -0.800560 0.119719 0.644137 -v -0.784714 0.157973 0.644137 -v -0.800560 0.196227 0.644137 -v -0.838814 0.212073 0.644137 -v -0.887630 0.000000 0.442082 -v -0.892327 -0.317882 0.285463 -v -0.897023 -0.412820 0.000000 -v -0.897023 -0.291908 -0.291907 -v -0.897023 -0.000000 -0.412820 -v -0.897023 0.291908 -0.291908 -v -0.897023 0.412820 0.000000 -v -0.892327 0.317882 0.285463 -v -0.830938 -0.380203 0.157485 -v -0.830938 -0.380203 -0.157485 -v -0.830938 -0.157485 -0.380203 -v -0.830938 0.157485 -0.380203 -v -0.830938 0.380203 -0.157485 -v -0.830938 0.380203 0.157485 -v -0.722051 0.157911 0.411654 -v -0.834876 0.263521 0.353297 -v -0.834876 0.051936 0.439262 -v -0.908874 0.069733 0.435278 -v -0.924073 0.157911 0.411654 -v -0.908874 0.245787 0.363591 -v -1.025283 0.236471 0.365727 -v -0.788989 0.137335 0.423181 -v -0.955232 0.236471 0.365727 -v -1.025283 0.078986 0.430960 -v -0.788989 0.178611 0.407436 -v -0.955232 0.078986 0.430960 -v -0.818176 0.207798 0.393878 -v -0.859453 0.207798 0.393878 -v -0.888640 0.178611 0.407436 -v -0.888640 0.137335 0.423181 -v -0.859453 0.108147 0.432018 -v -0.818176 0.108147 0.432018 -v -1.147765 0.125542 0.209230 -v -1.093560 0.121639 0.313952 -v -0.788989 -0.137334 0.693786 -v -0.788989 -0.178611 0.693786 -v -0.818176 -0.207798 0.693786 -v -0.818176 -0.207798 0.644137 -v -0.788989 -0.178611 0.644137 -v -0.788989 -0.137334 0.644137 -v -0.818176 -0.108147 0.644137 -v -0.859453 -0.108147 0.644137 -v -0.888640 -0.137334 0.644137 -v -0.888640 -0.178611 0.644137 -v -0.859453 -0.207798 0.644137 -v -0.904286 -0.223445 0.644137 -v -0.931406 -0.157973 0.644137 -v -0.904286 -0.092501 0.644137 -v -0.838814 -0.065381 0.644137 -v -0.773342 -0.092501 0.644137 -v -0.746223 -0.157973 0.644137 -v -0.773342 -0.223445 0.644137 -v -0.838814 -0.250564 0.644137 -v -0.722051 -0.157911 0.411654 -v -0.838814 -0.103872 0.433088 -v -0.924073 -0.157911 0.411654 -v -0.838814 -0.212071 0.391623 -v -1.003557 0.518266 -0.003170 -v -0.800560 -0.196227 0.399523 -v -0.784714 -0.157973 0.415896 -v -0.800560 -0.119718 0.428739 -v -0.877069 -0.119718 0.428739 -v -0.892914 -0.157973 0.415896 -v -0.877069 -0.196227 0.399523 -v -1.093560 -0.121639 0.313952 -v -1.147765 -0.052587 0.239449 -v -0.834876 -0.263521 0.353297 -v -0.834876 -0.051936 0.439262 -v -0.908874 -0.069732 0.435278 -v -0.908874 -0.245786 0.363591 -v -1.025283 -0.236471 0.365727 -v -0.955232 -0.236471 0.365727 -v -1.025283 -0.078985 0.430960 -v -0.955232 -0.078985 0.430960 -v -1.147765 -0.125542 0.209230 -v -0.766370 0.000000 0.442082 -v -0.757735 -0.317882 0.285463 -v -0.749101 -0.000000 -0.412820 -v -0.749101 0.412820 0.000000 -v -0.659388 -0.380203 0.157485 -v -0.659388 -0.157485 -0.380203 -v -0.659388 0.157485 -0.380203 -v -0.659388 0.380203 -0.157485 -v -0.757735 0.317882 0.285463 -v -0.741188 0.245787 0.363591 -v -0.741188 0.069733 0.435278 -v -0.659388 0.078986 0.430960 -v -0.659388 0.236471 0.365727 -v -0.741188 -0.245786 0.363591 -v -0.741188 -0.069732 0.435278 -v -0.659388 -0.078985 0.430960 -v -0.659388 -0.236471 0.365727 -v -1.025283 -0.352934 0.315441 -v -1.003557 -0.486603 -0.003170 -v -1.025283 0.178758 0.450344 -v -0.955232 -0.352934 0.315441 -v -1.003557 -0.320699 -0.367283 -v -0.955232 -0.178758 0.450344 -v -0.955232 0.000000 0.485206 -v -0.933506 -0.320699 -0.367283 -v -0.933506 0.015831 -0.500207 -v -0.933506 0.352362 -0.367283 -v -0.868328 -0.506980 -0.157927 -v -0.868328 -0.310413 -0.469167 -v -0.868327 0.063326 -0.598087 -v -0.868327 0.437064 -0.469167 -v -0.868327 0.633631 -0.157927 -v -0.938379 0.437064 -0.469167 -v -0.938379 0.063326 -0.598087 -v -0.938379 -0.310413 -0.469167 -v -1.132824 0.249003 0.000000 -v -1.025283 0.412820 0.000000 -v -1.149263 0.154973 -0.154973 -v -1.025283 0.291908 -0.291908 -v -1.132824 0.000000 -0.249003 -v -1.025283 -0.000000 -0.412820 -v -1.193006 0.000000 0.016561 -v -1.149263 -0.154973 -0.154973 -v -1.025283 -0.291908 -0.291907 -v -1.132824 -0.249003 0.000000 -v -1.025283 -0.412820 0.000000 -v -1.149263 -0.168120 0.154155 -v -1.025283 -0.311654 0.288289 -v -1.149263 0.000000 0.237965 -v -1.025283 0.000000 0.438198 -v -1.149263 0.168120 0.154155 -v -1.025283 0.311654 0.288288 -v -0.659388 0.311654 0.288288 -v -0.659388 -0.412820 0.000000 -v -0.659388 -0.291908 -0.291907 -v -0.659388 0.291908 -0.291908 -v -0.955232 0.000000 0.438198 -v -0.955232 -0.311654 0.288289 -v -0.955232 -0.412820 0.000000 -v -0.955232 -0.291908 -0.291907 -v -0.955232 -0.000000 -0.412820 -v -0.955232 0.291908 -0.291908 -v -0.955232 0.311654 0.288288 -v -0.955232 0.412820 0.000000 -v -0.803150 -0.485597 -0.307469 -v -0.781424 -0.290254 -0.596729 -v -0.781423 0.126651 -0.717641 -v -0.781423 0.543556 -0.596729 -v -0.803149 0.707236 -0.307469 -v -0.838814 0.250565 0.838418 -v -0.904286 0.223445 0.838418 -v -0.931406 0.157973 0.838418 -v -0.904286 0.092501 0.838418 -v -0.838814 0.065382 0.838418 -v -0.773342 0.092501 0.838418 -v -0.746223 0.157973 0.838418 -v -0.773342 0.223445 0.838418 -v -0.838814 0.212073 0.693786 -v -0.877069 0.196227 0.693786 -v -0.892914 0.157973 0.693786 -v -0.877069 0.119719 0.693786 -v -0.838814 0.103873 0.693786 -v -0.800560 0.119719 0.693786 -v -0.784714 0.157973 0.693786 -v -0.800560 0.196227 0.693786 -v -0.659388 0.412820 0.000000 -v -0.659388 0.000000 0.438198 -v -0.659388 -0.311654 0.288289 -v -0.659388 -0.000000 -0.412820 -v -0.832907 0.000000 0.442349 -v -0.831923 -0.318416 0.285181 -v -0.830938 -0.412820 0.000000 -v -0.830938 -0.291908 -0.291907 -v -0.830938 -0.000000 -0.412820 -v -0.830938 0.291908 -0.291908 -v -0.830938 0.412820 0.000000 -v -0.831923 0.318417 0.285181 -v -0.838814 0.103872 0.433088 -v -0.955232 0.157850 0.407413 -v -1.025283 0.157850 0.407413 -v -0.838814 0.212072 0.391623 -v -0.659388 0.157850 0.407413 -v -0.800560 0.196227 0.399523 -v -0.784714 0.157973 0.415896 -v -0.800560 0.119719 0.428739 -v -0.877069 0.119719 0.428739 -v -0.892914 0.157973 0.415896 -v -0.877069 0.196227 0.399523 -v -1.132824 0.099110 0.253041 -v -0.838814 -0.212073 0.693786 -v -0.877069 -0.196227 0.693786 -v -0.892914 -0.157973 0.693786 -v -0.877069 -0.119718 0.693786 -v -0.838814 -0.103873 0.693786 -v -0.800560 -0.119718 0.693786 -v -0.784714 -0.157973 0.693786 -v -0.800560 -0.196227 0.693786 -v -0.800560 -0.196227 0.644137 -v -0.784714 -0.157973 0.644137 -v -0.800560 -0.119718 0.644137 -v -0.838814 -0.103873 0.644137 -v -0.877069 -0.119718 0.644137 -v -0.892914 -0.157973 0.644137 -v -0.877069 -0.196227 0.644137 -v -0.838814 -0.212073 0.644137 -v -0.955232 -0.157850 0.407413 -v -1.025283 -0.157850 0.407413 -v -0.659388 -0.157850 0.407413 -v -1.132824 -0.099110 0.253041 -v -0.707107 -0.478468 -0.198188 -v -0.707107 0.198188 0.478468 -v -0.707107 0.478468 -0.198188 -v -0.707107 -0.198188 -0.478468 -v -0.707107 -0.198188 0.478468 -v -0.707107 0.478468 0.198188 -v -0.707107 0.198188 -0.478468 -v -0.707107 -0.478468 0.198188 -v -0.659388 0.000000 0.000000 -v -0.707107 -0.367352 -0.367352 -v -0.707107 0.000000 0.519514 -v -0.707107 0.367352 0.367352 -v -0.707107 0.519514 0.000000 -v -0.707107 0.367352 -0.367352 -v -0.707107 -0.000000 -0.519514 -v -0.707107 -0.519514 0.000000 -v -0.707107 -0.367352 0.367352 -v -0.659388 0.478468 -0.198188 -v -0.659388 0.478468 0.198188 -v -0.659388 0.198188 0.478468 -v -0.659388 -0.198188 0.478468 -v -0.659388 -0.478468 0.198188 -v -0.659388 -0.478468 -0.198188 -v -0.659388 -0.198188 -0.478468 -v -0.659388 0.198188 -0.478468 -v -0.659388 0.000000 0.519514 -v -0.659388 -0.367352 0.367352 -v -0.659388 -0.519514 0.000000 -v -0.659388 -0.367352 -0.367352 -v -0.659388 -0.000000 -0.519514 -v -0.659388 0.519514 0.000000 -v -0.659388 0.367352 -0.367352 -v -0.659388 0.367352 0.367352 -v -0.863307 -0.626480 -1.251705 -v -0.682393 -0.618577 -0.627969 -v -0.647988 -0.631848 -0.674737 -v -0.673610 -0.653314 -0.605838 -v -0.636513 -0.677234 -0.645822 -v -0.660460 -0.676295 -0.573090 -v -0.619331 -0.707260 -0.603034 -v -0.644944 -0.684023 -0.534710 -v -0.599059 -0.717357 -0.552888 -v -0.629424 -0.675320 -0.496540 -v -0.578782 -0.705986 -0.503017 -v -0.616264 -0.651511 -0.464392 -v -0.561587 -0.674878 -0.461014 -v -0.607467 -0.616222 -0.443160 -v -0.550092 -0.628771 -0.433273 -v -0.635739 -0.619326 -0.690395 -v -0.786867 -0.626894 -1.282691 -v -0.825091 -0.643768 -1.266979 -v -0.482341 -0.619661 -0.709061 -v -0.539721 -0.632434 -0.718624 -v -0.597888 -0.636714 -0.706570 -v -0.473558 -0.654397 -0.686931 -v -0.528246 -0.677820 -0.689709 -v -0.585468 -0.685839 -0.675273 -v -0.460408 -0.677379 -0.654182 -v -0.511064 -0.707847 -0.646921 -v -0.566870 -0.718340 -0.628960 -v -0.444892 -0.685106 -0.615802 -v -0.490791 -0.717943 -0.596775 -v -0.544928 -0.729268 -0.574682 -v -0.429373 -0.676403 -0.577632 -v -0.470514 -0.706572 -0.546903 -v -0.522980 -0.716960 -0.520702 -v -0.416213 -0.652595 -0.545484 -v -0.453320 -0.675465 -0.504900 -v -0.504368 -0.683290 -0.475238 -v -0.407415 -0.617305 -0.524252 -v -0.441825 -0.629357 -0.477160 -v -0.491927 -0.633383 -0.445212 -v -0.559298 -0.619740 -0.721381 -v -0.879130 -0.585156 -1.245817 -v -0.863290 -0.544004 -1.252763 -v -0.604371 -0.574824 -0.436077 -v -0.546048 -0.574682 -0.424018 -v -0.644921 -0.576099 -0.536095 -v -0.685470 -0.577374 -0.636112 -v -0.652009 -0.578013 -0.685377 -v -0.682375 -0.535976 -0.629029 -v -0.647965 -0.523925 -0.676122 -v -0.673577 -0.500687 -0.607797 -v -0.636470 -0.477817 -0.648381 -v -0.660417 -0.476879 -0.575649 -v -0.619276 -0.446710 -0.606378 -v -0.644898 -0.468176 -0.537479 -v -0.598999 -0.435339 -0.556507 -v -0.629382 -0.475903 -0.499099 -v -0.578726 -0.445435 -0.506360 -v -0.616232 -0.498884 -0.466351 -v -0.561544 -0.475462 -0.463572 -v -0.607449 -0.533621 -0.444220 -v -0.550069 -0.520847 -0.434658 -v -0.635721 -0.536850 -0.691453 -v -0.825078 -0.585449 -1.267727 -v -0.771027 -0.585742 -1.289637 -v -0.786849 -0.544418 -1.283749 -v -0.825066 -0.527130 -1.268475 -v -0.404320 -0.575908 -0.517169 -v -0.437781 -0.575268 -0.467905 -v -0.487549 -0.574838 -0.435194 -v -0.444869 -0.577182 -0.617187 -v -0.485419 -0.578457 -0.717204 -v -0.543742 -0.578600 -0.729263 -v -0.482323 -0.537060 -0.710121 -v -0.539698 -0.524511 -0.720008 -v -0.597863 -0.519899 -0.708069 -v -0.473526 -0.501770 -0.688889 -v -0.528203 -0.478403 -0.692268 -v -0.585422 -0.469992 -0.678043 -v -0.460366 -0.477962 -0.656741 -v -0.511008 -0.447296 -0.650264 -v -0.566810 -0.436322 -0.632579 -v -0.444846 -0.469259 -0.618571 -v -0.490731 -0.435925 -0.600393 -v -0.544862 -0.424014 -0.578599 -v -0.429330 -0.476986 -0.580191 -v -0.470459 -0.446021 -0.550247 -v -0.522920 -0.434942 -0.524321 -v -0.416180 -0.499968 -0.547443 -v -0.453277 -0.476048 -0.507459 -v -0.504322 -0.467442 -0.478008 -v -0.407397 -0.534704 -0.525312 -v -0.441802 -0.521433 -0.478544 -v -0.491902 -0.516567 -0.446711 -v -0.559281 -0.537264 -0.722439 -v -1.004603 -1.231164 -1.599998 -v -0.933715 -0.690640 -1.246944 -v -0.890084 -0.723524 -1.270651 -v -0.918379 -0.690299 -1.207724 -v -0.870046 -0.723079 -1.219408 -v -0.904142 -0.673870 -1.171656 -v -0.851445 -0.701613 -1.172282 -v -0.893172 -0.643853 -1.144231 -v -0.837112 -0.662393 -1.136450 -v -0.887138 -0.604817 -1.129624 -v -0.829229 -0.611391 -1.117365 -v -0.886960 -0.562707 -1.130059 -v -0.828996 -0.556371 -1.117934 -v -0.892665 -0.523932 -1.145470 -v -0.836449 -0.505709 -1.138069 -v -0.879923 -0.724831 -1.291796 -v -0.927784 -1.231800 -1.630031 -v -0.961061 -1.240857 -1.601689 -v -0.732674 -0.692302 -1.325542 -v -0.781281 -0.724423 -1.313188 -v -0.836556 -0.735387 -1.293913 -v -0.717338 -0.691962 -1.286322 -v -0.761244 -0.723979 -1.261944 -v -0.814868 -0.734905 -1.238447 -v -0.703101 -0.675532 -1.250254 -v -0.742642 -0.702512 -1.214819 -v -0.794734 -0.711671 -1.187439 -v -0.692131 -0.645515 -1.222829 -v -0.728309 -0.663293 -1.178987 -v -0.779220 -0.669220 -1.148654 -v -0.686098 -0.606480 -1.208222 -v -0.720426 -0.612291 -1.159902 -v -0.770687 -0.614015 -1.127997 -v -0.685920 -0.564369 -1.208657 -v -0.720193 -0.557271 -1.160470 -v -0.770435 -0.554462 -1.128612 -v -0.691624 -0.525594 -1.224068 -v -0.727647 -0.506609 -1.180606 -v -0.778502 -0.499626 -1.150407 -v -0.803105 -0.725466 -1.321828 -v -1.032903 -1.208399 -1.625950 -v -1.029384 -1.185896 -1.664342 -v -0.903383 -0.494396 -1.173510 -v -0.850453 -0.467119 -1.174705 -v -0.925599 -0.584618 -1.228428 -v -0.947815 -0.674839 -1.283345 -v -0.908507 -0.702879 -1.318211 -v -0.958533 -0.645303 -1.311386 -v -0.922511 -0.664289 -1.354848 -v -0.964238 -0.606528 -1.326797 -v -0.929964 -0.613627 -1.374983 -v -0.964060 -0.564418 -1.327231 -v -0.929731 -0.558607 -1.375551 -v -0.958026 -0.525383 -1.312625 -v -0.921848 -0.507605 -1.356467 -v -0.947056 -0.495365 -1.285199 -v -0.907515 -0.468385 -1.320634 -v -0.932819 -0.478936 -1.249131 -v -0.888914 -0.446919 -1.273509 -v -0.917483 -0.478595 -1.209911 -v -0.868876 -0.446474 -1.222266 -v -0.904705 -0.679563 -1.356140 -v -0.978584 -1.208848 -1.647186 -v -0.924265 -1.209297 -1.668423 -v -0.952566 -1.186532 -1.694375 -v -0.996107 -1.176839 -1.692684 -v -0.702342 -0.496058 -1.252108 -v -0.741651 -0.468018 -1.217242 -v -0.793660 -0.457856 -1.190062 -v -0.724558 -0.586280 -1.307025 -v -0.746774 -0.676502 -1.361943 -v -0.799704 -0.703779 -1.360748 -v -0.757493 -0.646966 -1.389983 -v -0.813708 -0.665188 -1.397385 -v -0.871655 -0.671271 -1.385047 -v -0.763197 -0.608191 -1.405394 -v -0.821161 -0.614527 -1.417520 -v -0.879722 -0.616435 -1.406841 -v -0.763019 -0.566080 -1.405829 -v -0.820929 -0.559506 -1.418088 -v -0.879470 -0.556882 -1.407456 -v -0.756986 -0.527045 -1.391222 -v -0.813046 -0.508504 -1.399003 -v -0.870938 -0.501678 -1.386799 -v -0.746015 -0.497028 -1.363797 -v -0.798713 -0.469285 -1.363171 -v -0.855424 -0.459227 -1.348014 -v -0.731779 -0.480598 -1.327729 -v -0.780111 -0.447819 -1.316046 -v -0.835290 -0.435992 -1.297006 -v -0.716443 -0.480258 -1.288509 -v -0.760074 -0.447374 -1.264802 -v -0.813601 -0.435511 -1.241541 -v -0.827886 -0.680198 -1.386172 -v -1.180859 -0.645406 0.355250 -v -0.594171 -0.827093 0.144001 -v -0.645416 -0.830652 0.113862 -v -0.582831 -0.867274 0.138486 -v -0.630600 -0.883152 0.106657 -v -0.558528 -0.899571 0.126664 -v -0.598847 -0.925350 0.091211 -v -0.524961 -0.919068 0.110335 -v -0.554989 -0.950823 0.069876 -v -0.487240 -0.922795 0.091984 -v -0.505704 -0.955694 0.045899 -v -0.451108 -0.910186 0.074405 -v -0.458496 -0.939219 0.022931 -v -0.422066 -0.883160 0.060275 -v -0.420550 -0.903908 0.004469 -v -0.658134 -0.815697 0.100954 -v -1.216943 -0.645409 0.281079 -v -1.203219 -0.661802 0.320267 -v -0.688606 -0.827102 -0.050112 -v -0.696524 -0.830657 0.008810 -v -0.681357 -0.831904 0.066390 -v -0.677267 -0.867283 -0.055626 -v -0.681708 -0.883157 0.001604 -v -0.665321 -0.888729 0.058591 -v -0.652964 -0.899580 -0.067448 -v -0.649955 -0.925355 -0.013842 -v -0.630951 -0.934404 0.041872 -v -0.619397 -0.919077 -0.083778 -v -0.606097 -0.950828 -0.035177 -v -0.583480 -0.961976 0.018779 -v -0.581676 -0.922804 -0.102129 -v -0.556812 -0.955699 -0.059154 -v -0.530135 -0.967248 -0.007173 -v -0.545544 -0.910195 -0.119707 -v -0.509604 -0.939224 -0.082122 -v -0.479037 -0.949416 -0.032034 -v -0.516501 -0.883170 -0.133838 -v -0.471658 -0.903913 -0.100584 -v -0.437965 -0.911196 -0.052017 -v -0.694218 -0.815701 0.026783 -v -1.162960 -0.605827 0.365538 -v -1.160008 -0.566250 0.345103 -v -0.404535 -0.845832 0.051744 -v -0.397644 -0.855136 -0.006677 -v -0.497677 -0.815488 0.097056 -v -0.590819 -0.785145 0.142369 -v -0.641037 -0.775845 0.111730 -v -0.573288 -0.747816 0.133838 -v -0.618132 -0.727073 0.100584 -v -0.544246 -0.720791 0.119708 -v -0.580186 -0.691762 0.082122 -v -0.508114 -0.708181 0.102129 -v -0.532977 -0.675287 0.059154 -v -0.470393 -0.711909 0.083778 -v -0.483693 -0.680157 0.035177 -v -0.436826 -0.731405 0.067448 -v -0.439835 -0.705631 0.013842 -v -0.412523 -0.763703 0.055627 -v -0.408081 -0.747829 -0.001604 -v -0.401184 -0.803884 0.050112 -v -0.393266 -0.800329 -0.008809 -v -0.637283 -0.736541 0.090806 -v -1.188475 -0.605830 0.313091 -v -1.213991 -0.605832 0.260644 -v -1.196092 -0.566253 0.270932 -v -1.173732 -0.549858 0.305916 -v -0.498970 -0.845841 -0.142368 -v -0.448753 -0.855141 -0.111730 -v -0.413172 -0.858405 -0.064081 -v -0.592113 -0.815498 -0.097056 -v -0.685255 -0.785154 -0.051744 -v -0.692145 -0.775850 0.006677 -v -0.667724 -0.747826 -0.060275 -v -0.669240 -0.727078 -0.004469 -v -0.651825 -0.719790 0.052017 -v -0.638682 -0.720800 -0.074405 -v -0.631294 -0.691767 -0.022931 -v -0.610753 -0.681570 0.032034 -v -0.602550 -0.708191 -0.091984 -v -0.584086 -0.675292 -0.045899 -v -0.559655 -0.663738 0.007174 -v -0.564829 -0.711918 -0.110335 -v -0.534801 -0.680162 -0.069876 -v -0.506310 -0.669010 -0.018779 -v -0.531262 -0.731415 -0.126664 -v -0.490943 -0.705636 -0.091211 -v -0.458838 -0.696582 -0.041872 -v -0.506958 -0.763712 -0.138486 -v -0.459190 -0.747834 -0.106657 -v -0.424469 -0.742257 -0.058591 -v -0.495619 -0.803893 -0.144001 -v -0.444374 -0.800334 -0.113862 -v -0.408433 -0.799082 -0.066389 -v -0.673367 -0.736545 0.016635 -v -1.536357 -1.231944 0.528825 -v -1.164006 -0.710783 0.421187 -v -1.192850 -0.742883 0.380143 -v -1.126223 -0.712593 0.402674 -v -1.143485 -0.745247 0.355955 -v -1.090689 -0.698163 0.385279 -v -1.097056 -0.726395 0.333226 -v -1.062811 -0.669692 0.371650 -v -1.060633 -0.689195 0.315419 -v -1.046836 -0.631513 0.363861 -v -1.039760 -0.639312 0.305243 -v -1.045194 -0.589439 0.363099 -v -1.037615 -0.584339 0.304247 -v -1.058136 -0.549875 0.369480 -v -1.054524 -0.532646 0.312584 -v -1.214803 -0.743225 0.371777 -v -1.572647 -1.231869 0.454755 -v -1.542129 -1.241999 0.485718 -v -1.258980 -0.710587 0.227338 -v -1.244250 -0.742777 0.275232 -v -1.221028 -0.754118 0.328890 -v -1.221198 -0.712397 0.208825 -v -1.194885 -0.745142 0.251044 -v -1.167595 -0.756677 0.302709 -v -1.185663 -0.697968 0.191430 -v -1.148456 -0.726289 0.228316 -v -1.117342 -0.736271 0.278108 -v -1.157786 -0.669496 0.177800 -v -1.112033 -0.689089 0.210508 -v -1.077917 -0.696007 0.258833 -v -1.141810 -0.631317 0.170012 -v -1.091160 -0.639206 0.200332 -v -1.055324 -0.642013 0.247819 -v -1.140168 -0.589243 0.169250 -v -1.089014 -0.584233 0.199337 -v -1.053002 -0.582511 0.246741 -v -1.153110 -0.549679 0.175631 -v -1.105924 -0.532541 0.207673 -v -1.071305 -0.526559 0.255765 -v -1.251093 -0.743150 0.297706 -v -1.558712 -1.207594 0.558825 -v -1.596099 -1.183214 0.558145 -v -1.083691 -0.518844 0.382032 -v -1.087914 -0.492103 0.328983 -v -1.140988 -0.605927 0.410016 -v -1.198284 -0.693010 0.438000 -v -1.237636 -0.719662 0.402109 -v -1.223839 -0.661979 0.450551 -v -1.271026 -0.679118 0.418509 -v -1.236781 -0.622415 0.456932 -v -1.287935 -0.627425 0.426845 -v -1.235139 -0.580341 0.456170 -v -1.285790 -0.572452 0.425850 -v -1.219164 -0.542162 0.448382 -v -1.264917 -0.522569 0.415674 -v -1.191287 -0.513691 0.434752 -v -1.228494 -0.485370 0.397866 -v -1.155752 -0.499261 0.417357 -v -1.182065 -0.466517 0.375138 -v -1.117969 -0.501071 0.398844 -v -1.132700 -0.468881 0.350950 -v -1.274545 -0.694495 0.401096 -v -1.584373 -1.207541 0.506450 -v -1.610034 -1.207489 0.454074 -v -1.632390 -1.183139 0.484074 -v -1.626618 -1.173084 0.527182 -v -1.178666 -0.518649 0.188182 -v -1.139313 -0.491997 0.224073 -v -1.107445 -0.482675 0.273516 -v -1.235962 -0.605731 0.216166 -v -1.293259 -0.692814 0.244150 -v -1.289036 -0.719556 0.297198 -v -1.318814 -0.661784 0.256702 -v -1.322426 -0.679012 0.313598 -v -1.305645 -0.685099 0.370417 -v -1.331756 -0.622220 0.263083 -v -1.339335 -0.627319 0.321935 -v -1.323947 -0.629147 0.379441 -v -1.330114 -0.580146 0.262321 -v -1.337190 -0.572347 0.320939 -v -1.321625 -0.569645 0.378363 -v -1.314138 -0.541967 0.254532 -v -1.316317 -0.522463 0.310763 -v -1.299033 -0.515652 0.367349 -v -1.286261 -0.513495 0.240903 -v -1.279894 -0.485264 0.292956 -v -1.259608 -0.475387 0.348074 -v -1.250726 -0.499066 0.223507 -v -1.233465 -0.466411 0.270227 -v -1.209355 -0.454981 0.323473 -v -1.212944 -0.500876 0.204995 -v -1.184100 -0.468775 0.246039 -v -1.155922 -0.457541 0.297292 -v -1.310835 -0.694420 0.327026 -v -1.666868 -1.085842 0.428225 -v -1.633369 -1.059764 0.466150 -v -1.603599 -1.050567 0.515746 -v -1.582089 -1.059651 0.569461 -v -1.572115 -1.085633 0.619120 -v -1.607809 -1.106651 0.398933 -v -1.574888 -1.076423 0.437140 -v -1.545320 -1.065769 0.486835 -v -1.523607 -1.076310 0.540451 -v -1.513055 -1.106442 0.589828 -v -1.576834 -1.129750 0.383583 -v -1.534416 -1.106603 0.417084 -v -1.501514 -1.098436 0.465127 -v -1.483136 -1.106490 0.520396 -v -1.482080 -1.129541 0.574478 -v -1.556128 -1.164320 0.373344 -v -1.507364 -1.151771 0.403706 -v -1.472233 -1.147325 0.450646 -v -1.456083 -1.151659 0.507017 -v -1.461375 -1.164112 0.564238 -v -1.548845 -1.205099 0.369773 -v -1.497848 -1.205051 0.399041 -v -1.461933 -1.204994 0.445596 -v -1.446568 -1.204938 0.502352 -v -1.454092 -1.204890 0.560668 -v -1.556093 -1.245877 0.373415 -v -1.507318 -1.258330 0.403799 -v -1.472183 -1.262663 0.450747 -v -1.456037 -1.258217 0.507111 -v -1.461339 -1.245668 0.564310 -v -1.576768 -1.280447 0.383715 -v -1.534331 -1.303498 0.417257 -v -1.501422 -1.311553 0.465314 -v -1.483051 -1.303385 0.520569 -v -1.482015 -1.280238 0.574610 -v -1.607724 -1.303546 0.399106 -v -1.574776 -1.333678 0.437366 -v -1.545200 -1.344220 0.487079 -v -1.523496 -1.333565 0.540677 -v -1.512970 -1.303337 0.590000 -v -1.644246 -1.311657 0.417243 -v -1.622496 -1.344276 0.461064 -v -1.596850 -1.355690 0.512729 -v -1.571216 -1.344163 0.564375 -v -1.549493 -1.311448 0.608138 -v -1.680776 -1.303545 0.435366 -v -1.670224 -1.333678 0.484743 -v -1.648511 -1.344219 0.538360 -v -1.618944 -1.333565 0.588054 -v -1.586022 -1.303337 0.626261 -v -1.746067 -1.261105 0.467728 -v -1.736847 -1.288757 0.517763 -v -1.715603 -1.298428 0.571611 -v -1.685567 -1.288645 0.621075 -v -1.651313 -1.260897 0.658623 -v -1.591914 -1.129449 0.628996 -v -1.611714 -1.173265 0.638871 -v -1.631514 -1.217081 0.648747 -v -1.531297 -1.155666 0.598936 -v -1.549539 -1.204890 0.608044 -v -1.567780 -1.254113 0.617153 -v -1.686668 -1.129657 0.438101 -v -1.706468 -1.173473 0.447977 -v -1.726267 -1.217289 0.457852 -v -1.626051 -1.155874 0.408041 -v -1.644293 -1.205098 0.417150 -v -1.662534 -1.254322 0.426258 -v 1.346916 -2.381913 -1.942518 -v 1.265770 -2.511589 -1.950470 -v 1.413709 -2.223495 -1.916103 -v 1.436000 -1.290831 -1.569027 -v 1.468500 -1.421149 -1.635915 -v 1.398500 -1.193071 -1.512075 -v 1.171437 -2.608611 -1.939058 -v 1.070510 -2.689307 -1.917963 -v 1.070510 -2.689307 -1.917963 -v 1.491001 -1.616583 -1.722674 -v 1.493247 -1.836494 -1.808384 -v 1.464985 -2.040243 -1.872126 -v 1.338816 -2.385806 -1.864556 -v 1.258468 -2.511830 -1.872606 -v 1.401053 -2.234350 -1.839309 -v 1.422199 -1.329201 -1.501505 -v 1.452947 -1.457120 -1.567527 -v 1.386968 -1.232498 -1.444784 -v 1.155298 -2.611952 -1.863357 -v 1.040718 -2.699124 -1.845459 -v 1.040718 -2.699124 -1.845459 -v 1.474728 -1.647468 -1.652153 -v 1.477168 -1.860866 -1.735320 -v 1.449890 -2.057932 -1.796968 -v 1.200002 -2.702898 -1.917805 -v 1.325420 -2.597713 -1.929512 -v 1.060535 -2.792873 -1.896688 -v 1.060535 -2.792873 -1.896688 -v 1.060535 -2.792873 -1.896688 -v 1.422740 -2.462110 -1.922399 -v 1.498562 -2.297402 -1.896762 -v 1.450668 -1.047202 -1.388864 -v 1.405405 -0.929884 -1.320697 -v 1.405405 -0.929884 -1.320697 -v 1.495931 -1.164521 -1.457031 -v 1.559489 -2.104904 -1.852897 -v 1.596285 -1.887691 -1.787343 -v 1.061223 -0.969297 -1.590438 -v 0.975849 -0.963651 -1.635029 -v 1.144347 -0.984398 -1.525028 -v 1.144347 -0.984398 -1.525028 -v 1.599714 -1.648835 -1.696641 -v 1.578456 -1.432248 -1.602142 -v 1.316506 -1.039091 -1.331341 -v 1.316506 -1.039091 -1.331341 -v 1.316506 -1.039091 -1.331341 -v 1.323499 -0.997551 -1.398171 -v 1.323499 -0.997551 -1.398171 -v 1.323499 -0.997551 -1.398171 -v 1.229836 -1.009296 -1.434471 -v 1.361000 -1.095311 -1.455123 -v 1.351737 -1.135795 -1.388062 -v 1.541195 -1.281839 -1.525198 -v 0.897126 -2.376407 -2.126591 -v 0.834317 -2.216401 -2.153215 -v 0.957828 -2.507818 -2.076493 -v 0.594692 -1.280531 -1.913326 -v 0.583553 -1.183093 -1.845587 -v 0.615678 -1.410708 -1.984926 -v 1.015041 -2.606696 -2.003062 -v 0.656356 -1.606364 -2.064247 -v 0.710224 -1.826907 -2.128831 -v 0.770780 -2.031744 -2.156225 -v 0.848169 -2.379799 -2.065350 -v 0.789280 -2.226860 -2.089673 -v 0.908447 -2.507545 -2.015850 -v 0.556394 -1.318601 -1.855829 -v 0.543776 -1.222175 -1.789854 -v 0.578073 -1.446409 -1.925564 -v 0.973411 -2.609725 -1.937794 -v 0.617874 -1.636978 -2.002815 -v 0.669959 -1.850984 -2.065666 -v 0.728485 -2.049100 -2.092198 -v 0.977802 -2.700177 -2.008739 -v 0.898807 -2.592490 -2.104101 -v 0.827289 -2.454819 -2.166083 -v 0.758721 -2.288345 -2.199537 -v 0.463054 -1.035111 -1.793038 -v 0.476111 -1.152035 -1.874386 -v 0.449998 -0.918187 -1.711691 -v 0.449998 -0.918187 -1.711691 -v 0.688576 -2.094242 -2.209312 -v 0.620948 -1.875750 -2.186494 -v 0.883613 -0.967122 -1.663124 -v 0.778187 -0.979915 -1.674877 -v 0.778187 -0.979915 -1.674877 -v 0.559933 -1.636105 -2.122165 -v 0.513386 -1.419208 -2.038015 -v 0.518541 -1.029322 -1.657903 -v 0.518541 -1.029322 -1.657903 -v 0.518541 -1.029322 -1.657903 -v 0.561274 -0.988219 -1.710107 -v 0.561274 -0.988219 -1.710107 -v 0.561274 -0.988219 -1.710107 -v 0.653243 -1.002236 -1.670437 -v 0.572414 -1.085656 -1.777847 -v 0.531159 -1.125748 -1.723878 -v 0.489167 -1.268959 -1.955734 -v 0.999583 -0.916445 -1.691613 -v 1.098737 -0.923019 -1.639856 -v 1.186319 -0.939764 -1.571326 -v 1.258708 -0.966228 -1.488358 -v 1.462002 -1.138859 -1.523597 -v 1.507285 -1.256169 -1.591771 -v 1.544477 -1.406562 -1.668674 -v 1.565490 -1.623118 -1.763035 -v 1.561621 -1.861848 -1.853456 -v 1.524171 -2.078762 -1.918540 -v 1.462599 -2.270678 -1.961814 -v 1.386359 -2.434413 -1.986806 -v 1.296576 -2.567304 -1.993048 -v 1.194369 -2.666681 -1.980072 -v 1.085950 -2.749303 -1.957488 -v 1.085950 -2.749303 -1.957488 -v 1.085950 -2.749303 -1.957488 -v 1.371435 -0.904239 -1.387250 -v 1.371435 -0.904239 -1.387250 -v 1.218154 -1.174971 -1.637441 -v 1.247874 -1.262520 -1.693531 -v 1.260426 -1.370523 -1.776037 -v 1.171964 -1.385746 -1.855236 -v 1.080322 -1.380102 -1.902771 -v 1.416718 -1.021549 -1.455423 -v 1.188463 -1.087421 -1.581340 -v 0.892480 -0.920494 -1.724265 -v 0.781657 -0.934810 -1.736932 -v 0.671339 -0.959037 -1.728736 -v 0.547498 -1.127663 -1.897852 -v 0.560545 -1.244579 -1.979218 -v 0.584785 -1.394812 -2.061422 -v 0.631410 -1.611682 -2.145301 -v 0.692545 -1.851208 -2.209120 -v 0.760315 -2.069410 -2.231143 -v 0.830519 -2.262939 -2.220489 -v 0.898952 -2.428447 -2.186274 -v 0.964545 -2.563239 -2.128929 -v 1.026226 -2.664622 -2.048883 -v 0.521403 -0.893832 -1.735119 -v 0.521403 -0.893832 -1.735119 -v 0.800375 -1.169856 -1.808414 -v 0.816670 -1.257241 -1.869998 -v 0.863292 -1.365661 -1.938561 -v 0.981553 -1.383415 -1.933160 -v 0.534451 -1.010748 -1.816485 -v 0.784051 -1.082470 -1.746843 -v 0.880985 -1.086471 -1.688243 -v 0.880985 -1.086471 -1.688243 -v 0.918822 -1.065924 -1.651006 -v 0.969587 -1.059170 -1.622582 -v 1.025551 -1.067239 -1.607299 -v 1.078193 -1.088900 -1.607484 -v 1.078193 -1.088900 -1.607484 -v 1.056154 -1.127912 -1.554839 -v 0.858945 -1.125482 -1.635599 -v 0.848603 -1.157603 -1.611310 -v 1.045811 -1.160033 -1.530550 -v 0.843600 -1.197380 -1.600290 -v 1.040808 -1.199809 -1.519530 -v 0.844698 -1.238756 -1.604215 -v 1.041906 -1.241186 -1.523456 -v 0.851730 -1.275434 -1.622490 -v 1.048938 -1.277864 -1.541730 -v 0.863625 -1.301829 -1.652331 -v 1.060833 -1.304259 -1.571571 -v 0.878572 -1.313923 -1.689195 -v 1.075780 -1.316352 -1.608436 -v 0.894296 -1.309874 -1.727470 -v 1.091505 -1.312304 -1.646711 -v 0.908404 -1.290299 -1.761330 -v 1.105612 -1.292729 -1.680571 -v 0.930828 -1.228574 -1.814231 -v 0.930828 -1.228574 -1.814231 -v 0.983945 -1.251590 -1.815616 -v 1.040075 -1.260134 -1.800755 -v 1.090673 -1.252905 -1.771910 -v 1.128036 -1.231003 -1.733472 -v 1.128036 -1.231003 -1.733472 -v 0.918367 -1.193048 -1.782734 -v 1.115575 -1.195478 -1.701975 -v 1.090653 -1.124426 -1.638981 -v 1.103114 -1.159952 -1.670478 -v 0.893446 -1.121997 -1.719740 -v 0.905906 -1.157522 -1.751237 -v -0.038460 0.092850 0.987525 -v -0.071287 0.071287 0.987525 -v -0.000000 0.100815 0.987525 -v 0.053557 0.129300 0.559937 -v -0.000000 0.140392 0.559937 -v 0.099272 0.099272 0.559937 -v -0.092850 0.038460 0.987525 -v -0.100816 0.000000 0.987525 -v 0.129299 0.053558 0.559937 -v 0.140391 0.000000 0.559937 -v -0.038460 -0.092850 0.987525 -v -0.000000 -0.100815 0.987525 -v -0.071287 -0.071287 0.987525 -v 0.129299 -0.053557 0.559937 -v 0.099272 -0.099272 0.559937 -v 0.092850 -0.038459 0.987525 -v 0.100815 0.000000 0.987525 -v 0.071287 -0.071287 0.987525 -v 0.053557 -0.129299 0.559937 -v -0.000000 -0.140392 0.559937 -v -0.092850 -0.038459 0.987525 -v -0.053558 -0.129299 0.559937 -v -0.099272 -0.099272 0.559937 -v 0.038459 -0.092850 0.987525 -v -0.129300 -0.053557 0.559937 -v -0.140392 0.000000 0.559937 -v 0.038459 0.092850 0.987525 -v 0.071287 0.071287 0.987525 -v -0.129300 0.053558 0.559937 -v -0.099272 0.099272 0.559937 -v 0.092850 0.038460 0.987525 -v -0.053558 0.129300 0.559937 -v -0.032401 -0.078221 0.950122 -v -0.000000 -0.084932 0.950122 -v -0.060056 -0.060056 0.950122 -v -0.078222 0.032401 0.950122 -v -0.084932 0.000000 0.950122 -v -0.060056 0.060056 0.950122 -v 0.078221 0.032401 0.950122 -v 0.060056 0.060056 0.950122 -v 0.084932 0.000000 0.950122 -v 0.032400 0.078222 0.950122 -v -0.000000 0.084932 0.950122 -v 0.032400 -0.078221 0.950122 -v 0.060056 -0.060056 0.950122 -v -0.032401 0.078222 0.950122 -v -0.078222 -0.032400 0.950122 -v 0.078221 -0.032400 0.950122 -v 0.099272 0.099272 0.987525 -v 0.053557 0.129300 0.987525 -v -0.000000 0.140392 0.987525 -v 0.140391 0.000000 0.987525 -v 0.129299 0.053558 0.987525 -v 0.099272 -0.099272 0.987525 -v 0.129299 -0.053557 0.987525 -v -0.000000 -0.140392 0.987525 -v 0.053557 -0.129299 0.987525 -v -0.099272 -0.099272 0.987525 -v -0.053558 -0.129299 0.987525 -v -0.140392 0.000000 0.987525 -v -0.129300 -0.053557 0.987525 -v -0.099272 0.099272 0.987525 -v -0.129300 0.053558 0.987525 -v -0.053558 0.129300 0.987525 -v 0.071287 0.071287 0.950122 -v 0.038459 0.092850 0.950122 -v -0.000000 0.100815 0.950122 -v 0.100815 0.000000 0.950122 -v 0.092850 0.038460 0.950122 -v 0.071287 -0.071287 0.950122 -v 0.092850 -0.038459 0.950122 -v -0.000000 -0.100815 0.950122 -v 0.038459 -0.092850 0.950122 -v -0.071287 -0.071287 0.950122 -v -0.038460 -0.092850 0.950122 -v -0.100816 0.000000 0.950122 -v -0.092850 -0.038459 0.950122 -v -0.071287 0.071287 0.950122 -v -0.092850 0.038460 0.950122 -v -0.038460 0.092850 0.950122 -v 1.528859 -2.440978 0.751459 -v 1.508944 -2.559236 0.656160 -v 1.539856 -2.288760 0.834913 -v 1.451680 -1.303751 0.948059 -v 1.478683 -1.449914 0.968558 -v 1.426015 -1.190962 0.919306 -v 1.480184 -2.639663 0.550582 -v 1.447001 -2.701174 0.439865 -v 1.447001 -2.701174 0.439865 -v 1.508361 -1.662825 0.972550 -v 1.532244 -1.896875 0.953520 -v 1.541863 -2.106457 0.904954 -v 1.453615 -2.422652 0.738755 -v 1.434695 -2.537522 0.644682 -v 1.464272 -2.276967 0.816935 -v 1.377808 -1.320705 0.926207 -v 1.404763 -1.464162 0.945204 -v 1.351894 -1.209214 0.899592 -v 1.407932 -2.620632 0.530094 -v 1.377249 -2.687864 0.405249 -v 1.377249 -2.687864 0.405249 -v 1.433799 -1.671554 0.948967 -v 1.456948 -1.898697 0.930758 -v 1.466244 -2.101408 0.883841 -v 1.432393 -2.726928 0.566658 -v 1.460993 -2.641840 0.704036 -v 1.399961 -2.793507 0.416631 -v 1.399961 -2.793507 0.416631 -v 1.399961 -2.793507 0.416631 -v 1.481929 -2.519735 0.816115 -v 1.494583 -2.362603 0.909304 -v 1.341930 -1.022926 0.981547 -v 1.311324 -0.887595 0.946793 -v 1.311324 -0.887595 0.946793 -v 1.372535 -1.158258 1.016302 -v 1.498339 -2.172434 0.990009 -v 1.489831 -1.950316 1.048525 -v 1.588851 -0.964844 0.615453 -v 1.640337 -0.963162 0.533873 -v 1.515048 -0.969678 0.692563 -v 1.515048 -0.969678 0.692563 -v 1.465696 -1.697334 1.075143 -v 1.434083 -1.462191 1.074456 -v 1.300067 -0.986233 0.846361 -v 1.300067 -0.986233 0.846361 -v 1.300067 -0.986233 0.846361 -v 1.374685 -0.965384 0.861799 -v 1.374685 -0.965384 0.861799 -v 1.374685 -0.965384 0.861799 -v 1.414295 -0.977267 0.769504 -v 1.400350 -1.078173 0.890552 -v 1.325981 -1.097723 0.872977 -v 1.403141 -1.293589 1.051057 -v 1.744845 -2.441453 0.316059 -v 1.818077 -2.289373 0.274056 -v 1.656816 -2.559562 0.358069 -v 1.855672 -1.304641 0.133666 -v 1.817348 -1.191824 0.130430 -v 1.888204 -1.450816 0.143019 -v 1.555284 -2.639828 0.399190 -v 1.909153 -1.663708 0.164607 -v 1.908248 -1.897704 0.195547 -v 1.875217 -2.107191 0.232958 -v 1.689221 -2.423171 0.263804 -v 1.758042 -2.277614 0.224733 -v 1.602773 -2.537892 0.305859 -v 1.793563 -1.321621 0.088100 -v 1.756791 -1.210106 0.083375 -v 1.824873 -1.465088 0.098319 -v 1.495274 -2.620825 0.354026 -v 1.845256 -1.672461 0.119524 -v 1.844566 -1.899551 0.149372 -v 1.812660 -2.102171 0.185515 -v 1.539093 -2.727163 0.351566 -v 1.665851 -2.642292 0.291070 -v 1.767862 -2.520365 0.239713 -v 1.849851 -2.363385 0.193131 -v 1.816177 -1.023971 0.025529 -v 1.862249 -1.159337 0.029107 -v 1.770106 -0.888606 0.021951 -v 1.770106 -0.888606 0.021951 -v 1.916547 -2.173355 0.146958 -v 1.958183 -1.951348 0.104391 -v 1.674139 -0.965032 0.443524 -v 1.690876 -0.970065 0.338116 -v 1.690876 -0.970065 0.338116 -v 1.964993 -1.698434 0.068626 -v 1.945524 -1.463318 0.043459 -v 1.683246 -0.987077 0.073925 -v 1.683246 -0.987077 0.073925 -v 1.683246 -0.987077 0.073925 -v 1.740702 -0.966190 0.123959 -v 1.740702 -0.966190 0.123959 -v 1.740702 -0.966190 0.123959 -v 1.691172 -0.977877 0.211358 -v 1.779025 -1.079007 0.127194 -v 1.720018 -1.098592 0.078650 -v 1.908320 -1.294702 0.032684 -v 1.705210 -0.935751 0.566024 -v 1.645438 -0.937729 0.660771 -v 1.567830 -0.943727 0.741939 -v 1.475050 -0.953589 0.806117 -v 1.446123 -1.148491 0.989278 -v 1.476735 -1.283818 1.024054 -v 1.507647 -1.452387 1.047384 -v 1.539156 -1.687438 1.047824 -v 1.563092 -1.940180 1.020770 -v 1.571283 -2.161819 0.961616 -v 1.567168 -2.351205 0.880306 -v 1.554187 -2.507191 0.786784 -v 1.532501 -2.627206 0.682448 -v 1.502275 -2.708683 0.568701 -v 1.467779 -2.770892 0.450249 -v 1.467779 -2.770892 0.450249 -v 1.467779 -2.770892 0.450249 -v 1.384897 -0.877837 0.919726 -v 1.384897 -0.877837 0.919726 -v 1.566356 -1.189997 0.749388 -v 1.594551 -1.292010 0.771582 -v 1.644141 -1.419104 0.775773 -v 1.723603 -1.446522 0.690545 -v 1.778443 -1.445025 0.602909 -v 1.415510 -1.013164 0.954502 -v 1.538149 -1.087983 0.727222 -v 1.744481 -0.937947 0.461112 -v 1.762147 -0.944155 0.350222 -v 1.757102 -0.954210 0.237538 -v 1.885263 -1.149459 0.104030 -v 1.931355 -1.284820 0.107601 -v 1.968487 -1.453402 0.118393 -v 1.987697 -1.688426 0.143626 -v 1.980418 -1.941099 0.179496 -v 1.938083 -2.162627 0.222197 -v 1.870690 -2.351874 0.268448 -v 1.788237 -2.507706 0.314969 -v 1.691941 -2.627557 0.361040 -v 1.583017 -2.708861 0.405937 -v 1.793078 -0.878736 0.096888 -v 1.793078 -0.878736 0.096888 -v 1.766972 -1.190439 0.344974 -v 1.801613 -1.292466 0.354173 -v 1.834842 -1.419524 0.391344 -v 1.815038 -1.446724 0.506225 -v 1.839171 -1.014097 0.100459 -v 1.732345 -1.088411 0.335747 -v 0.874137 -0.072697 0.644137 -v 0.838814 -0.065381 0.644137 -v 0.904286 -0.092501 0.644137 -v 0.924090 -0.122650 0.644137 -v 0.931406 -0.157973 0.644137 -v 0.924090 -0.193295 0.644137 -v 0.904286 -0.223445 0.644137 -v 0.888640 -0.178611 0.838418 -v 0.892914 -0.157973 0.838418 -v 0.877069 -0.196227 0.838418 -v 0.788989 -0.178611 0.838418 -v 0.800560 -0.196227 0.838418 -v 0.784714 -0.157973 0.838418 -v 0.818176 -0.108147 0.838418 -v 0.800560 -0.119719 0.838418 -v 0.838814 -0.103873 0.838418 -v 0.888640 -0.137335 0.838418 -v 0.877069 -0.119719 0.838418 -v 0.788989 -0.137335 0.838418 -v 1.025283 0.089448 0.477009 -v 1.025283 0.000000 0.485206 -v 0.955232 -0.089447 0.477009 -v 0.955232 0.000000 0.485206 -v 0.955232 -0.178758 0.450344 -v 0.851475 -0.416358 -0.462306 -v 0.873201 -0.485597 -0.307469 -v 0.851475 -0.290254 -0.596729 -v 0.851475 -0.098271 -0.685024 -v 0.851475 0.126651 -0.717641 -v 0.851475 0.351573 -0.685024 -v 0.851475 0.543556 -0.596729 -v 0.851475 0.669660 -0.462306 -v 0.873201 0.707236 -0.307469 -v 1.025283 0.430563 0.167312 -v 1.025283 0.352934 0.315440 -v 1.025283 -0.430563 0.167312 -v 1.025283 -0.352934 0.315441 -v 1.003557 -0.486603 -0.003170 -v 0.868328 -0.506980 -0.157927 -v 0.933506 -0.486603 -0.003170 -v 0.955232 -0.430563 0.167312 -v 0.955232 -0.352934 0.315441 -v 1.025283 -0.089447 0.477009 -v 1.025283 -0.178758 0.450344 -v 0.818176 -0.207798 0.838418 -v 0.838814 -0.212073 0.838418 -v 0.859453 -0.108147 0.838418 -v 0.859453 -0.207798 0.838418 -v 0.803492 -0.243249 0.838418 -v 0.838814 -0.250564 0.838418 -v 0.773342 -0.223445 0.838418 -v 0.924090 -0.122650 0.838418 -v 0.904286 -0.092501 0.838418 -v 0.931406 -0.157973 0.838418 -v 0.753538 -0.193295 0.838418 -v 0.746223 -0.157973 0.838418 -v 0.803492 -0.072697 0.838418 -v 0.838814 -0.065381 0.838418 -v 0.868327 0.633631 -0.157927 -v 0.933506 0.518266 -0.003170 -v 0.924090 -0.193295 0.838418 -v 1.025283 0.178758 0.450344 -v 1.003557 0.518266 -0.003170 -v 0.788989 0.137335 0.838418 -v 0.800560 0.119719 0.838418 -v 0.784714 0.157973 0.838418 -v 0.874137 0.243249 0.644137 -v 0.838814 0.250565 0.644137 -v 0.904286 0.223445 0.644137 -v 0.859453 0.207799 0.838418 -v 0.838814 0.212073 0.838418 -v 0.877069 0.196228 0.838418 -v 0.924090 0.193296 0.644137 -v 0.931406 0.157973 0.644137 -v 0.859453 0.108148 0.838418 -v 0.877069 0.119719 0.838418 -v 0.838814 0.103873 0.838418 -v 0.924090 0.122651 0.644137 -v 0.904286 0.092501 0.644137 -v 0.888640 0.178612 0.838418 -v 0.892914 0.157973 0.838418 -v 0.874137 0.072697 0.644137 -v 0.838814 0.065382 0.644137 -v 0.818176 0.207799 0.838418 -v 0.800560 0.196228 0.838418 -v 0.803492 0.072697 0.644137 -v 0.773342 0.092501 0.644137 -v 0.788989 0.178612 0.838418 -v 0.753538 0.122651 0.644137 -v 0.746223 0.157973 0.644137 -v 0.818176 0.108148 0.838418 -v 0.753538 0.193296 0.644137 -v 0.773342 0.223445 0.644137 -v 0.888640 0.137335 0.838418 -v 0.803492 0.243249 0.644137 -v 1.025283 -0.267792 0.403136 -v 0.888640 0.178611 0.644137 -v 0.877069 0.196227 0.644137 -v 0.892914 0.157973 0.644137 -v 0.888640 0.137335 0.644137 -v 0.877069 0.119719 0.644137 -v 0.859453 0.108148 0.644137 -v 0.838814 0.103873 0.644137 -v 0.818176 0.108148 0.644137 -v 0.800560 0.119719 0.644137 -v 0.788989 0.137335 0.644137 -v 0.784714 0.157973 0.644137 -v 0.788989 0.178611 0.644137 -v 0.800560 0.196227 0.644137 -v 0.818176 0.207798 0.644137 -v 0.838814 0.212073 0.644137 -v 0.859453 0.207798 0.644137 -v 0.955232 0.267793 0.403136 -v 0.955232 0.178758 0.450344 -v 0.955232 0.352934 0.315440 -v 0.955232 0.430563 0.167312 -v 0.803492 -0.072697 0.644137 -v 0.773342 -0.092501 0.644137 -v 0.753538 -0.122650 0.644137 -v 0.746223 -0.157973 0.644137 -v 0.753538 -0.193295 0.644137 -v 0.773342 -0.223445 0.644137 -v 0.803492 -0.243249 0.644137 -v 0.838814 -0.250564 0.644137 -v 0.874137 -0.243249 0.644137 -v 0.888640 -0.137334 0.423181 -v 0.892914 -0.157973 0.415896 -v 0.877069 -0.119718 0.428739 -v 0.888640 -0.178611 0.407436 -v 0.877069 -0.196227 0.399523 -v 0.859453 -0.207797 0.393878 -v 0.838814 -0.212071 0.391623 -v 0.818176 -0.207797 0.393878 -v 0.800560 -0.196227 0.399523 -v 0.788989 -0.178611 0.407436 -v 0.784714 -0.157973 0.415896 -v 0.788989 -0.137334 0.423181 -v 0.800560 -0.119718 0.428739 -v 0.818176 -0.108147 0.432018 -v 0.838814 -0.103872 0.433088 -v 0.859453 -0.108147 0.432018 -v 1.025283 0.267793 0.403136 -v 0.955232 0.089448 0.477009 -v 0.955232 -0.267792 0.403136 -v 0.938379 -0.506980 -0.157927 -v 0.938379 0.633631 -0.157927 -v 0.800560 -0.119718 0.693786 -v 0.818176 -0.108147 0.693786 -v 0.838814 -0.103873 0.693786 -v 0.859453 -0.108147 0.693786 -v 0.877069 -0.119718 0.693786 -v 0.888640 -0.137334 0.693786 -v 0.892914 -0.157973 0.693786 -v 0.888640 -0.178611 0.693786 -v 0.877069 -0.196227 0.693786 -v 0.859453 -0.207798 0.693786 -v 0.838814 -0.212073 0.693786 -v 1.025283 0.291908 -0.291908 -v 1.025283 0.380203 -0.157485 -v 1.025283 0.412820 0.000000 -v 1.025283 0.157485 -0.380203 -v 1.025283 -0.000000 -0.412820 -v 1.025283 -0.157485 -0.380203 -v 1.025283 -0.291908 -0.291907 -v 1.025283 -0.380203 -0.157485 -v 1.025283 -0.412820 0.000000 -v 1.025283 -0.380203 0.157485 -v 1.025283 -0.311654 0.288289 -v 1.025283 0.311654 0.288288 -v 1.025283 0.380203 0.157485 -v 0.659388 -0.291908 -0.291907 -v 0.659388 -0.380203 -0.157485 -v 0.659388 -0.412820 0.000000 -v 0.955232 -0.311654 0.288289 -v 0.955232 -0.380203 0.157485 -v 0.955232 -0.412820 0.000000 -v 0.955232 -0.380203 -0.157485 -v 0.955232 -0.291908 -0.291907 -v 0.955232 -0.157485 -0.380203 -v 0.955232 -0.000000 -0.412820 -v 0.955232 0.157485 -0.380203 -v 0.955232 0.291908 -0.291908 -v 0.955232 0.380203 -0.157485 -v 0.955232 0.412820 0.000000 -v 0.955232 0.380203 0.157485 -v 0.955232 0.311654 0.288288 -v 0.803150 -0.485597 -0.307469 -v 0.781424 -0.416358 -0.462306 -v 0.781424 -0.290254 -0.596729 -v 0.781423 -0.098271 -0.685024 -v 0.781423 0.126651 -0.717641 -v 0.781423 0.351573 -0.685024 -v 0.781423 0.543556 -0.596729 -v 0.781423 0.669660 -0.462306 -v 0.803149 0.707236 -0.307469 -v 0.904286 0.223445 0.838418 -v 0.874137 0.243249 0.838418 -v 0.838814 0.250565 0.838418 -v 0.931406 0.157973 0.838418 -v 0.924090 0.193296 0.838418 -v 0.904286 0.092501 0.838418 -v 0.924090 0.122651 0.838418 -v 0.838814 0.065382 0.838418 -v 0.874137 0.072697 0.838418 -v 0.773342 0.092501 0.838418 -v 0.803492 0.072697 0.838418 -v 0.874137 -0.243249 0.838418 -v 0.904286 -0.223445 0.838418 -v 0.753538 -0.122650 0.838418 -v 0.746223 0.157973 0.838418 -v 0.753538 0.122651 0.838418 -v 0.773342 -0.092501 0.838418 -v 0.773342 0.223445 0.838418 -v 0.753538 0.193296 0.838418 -v 0.803492 0.243249 0.838418 -v 0.877069 0.196227 0.693786 -v 0.859453 0.207798 0.693786 -v 0.838814 0.212073 0.693786 -v 0.892914 0.157973 0.693786 -v 0.888640 0.178611 0.693786 -v 0.877069 0.119719 0.693786 -v 0.888640 0.137335 0.693786 -v 0.838814 0.103873 0.693786 -v 0.859453 0.108148 0.693786 -v 0.800560 0.119719 0.693786 -v 0.818176 0.108148 0.693786 -v 0.784714 0.157973 0.693786 -v 0.788989 0.137335 0.693786 -v 0.800560 0.196227 0.693786 -v 0.788989 0.178611 0.693786 -v 0.818176 0.207798 0.693786 -v 0.659388 0.311654 0.288288 -v 0.659388 0.380203 0.157485 -v 0.659388 0.412820 0.000000 -v 1.025283 0.236471 0.365727 -v 1.025283 0.157850 0.407413 -v 0.784714 0.157973 0.415896 -v 0.788989 0.137335 0.423181 -v 0.800560 0.119719 0.428739 -v 0.955232 0.236471 0.365727 -v 0.955232 0.157850 0.407413 -v 1.025283 0.000000 0.438198 -v 1.025283 0.078986 0.430960 -v 0.800560 0.196227 0.399523 -v 0.788989 0.178611 0.407436 -v 0.955232 0.000000 0.438198 -v 0.955232 0.078986 0.430960 -v 0.838814 0.212072 0.391623 -v 0.818176 0.207798 0.393878 -v 0.859453 0.207798 0.393878 -v 0.877069 0.196227 0.399523 -v 0.892914 0.157973 0.415896 -v 0.888640 0.178611 0.407436 -v 0.877069 0.119719 0.428739 -v 0.888640 0.137335 0.423181 -v 0.838814 0.103872 0.433088 -v 0.859453 0.108147 0.432018 -v 0.818176 0.108147 0.432018 -v 0.784714 -0.157973 0.693786 -v 0.788989 -0.137334 0.693786 -v 0.800560 -0.196227 0.693786 -v 0.788989 -0.178611 0.693786 -v 0.818176 -0.207798 0.693786 -v 0.838814 -0.212073 0.644137 -v 0.818176 -0.207798 0.644137 -v 0.800560 -0.196227 0.644137 -v 0.788989 -0.178611 0.644137 -v 0.784714 -0.157973 0.644137 -v 0.788989 -0.137334 0.644137 -v 0.800560 -0.119718 0.644137 -v 0.818176 -0.108147 0.644137 -v 0.838814 -0.103873 0.644137 -v 0.859453 -0.108147 0.644137 -v 0.877069 -0.119718 0.644137 -v 0.888640 -0.137334 0.644137 -v 0.892914 -0.157973 0.644137 -v 0.888640 -0.178611 0.644137 -v 0.877069 -0.196227 0.644137 -v 0.859453 -0.207798 0.644137 -v 0.874137 -0.072697 0.838418 -v 1.025283 -0.236471 0.365727 -v 1.025283 -0.157850 0.407413 -v 0.955232 -0.236471 0.365727 -v 0.955232 -0.157850 0.407413 -v 1.025283 -0.078985 0.430960 -v 0.955232 -0.078985 0.430960 -v 0.659388 -0.380203 0.157485 -v 0.659388 -0.311654 0.288289 -v 0.659388 -0.000000 -0.412820 -v 0.659388 -0.157485 -0.380203 -v 0.659388 0.291908 -0.291908 -v 0.659388 0.157485 -0.380203 -v 0.659388 0.380203 -0.157485 -v 0.659388 0.157850 0.407413 -v 0.659388 0.078986 0.430960 -v 0.659388 0.000000 0.438198 -v 0.659388 0.236471 0.365727 -v 0.659388 -0.157850 0.407413 -v 0.659388 -0.078985 0.430960 -v 0.659388 -0.236471 0.365727 -v 0.166657 -0.713477 0.387925 -v 0.166216 -0.566313 0.594651 -v 0.146192 -0.787438 0.213267 -v 0.166657 0.713478 0.387925 -v 0.146192 0.787438 0.213267 -v 0.166216 0.566314 0.594651 -v 0.083622 -0.823788 0.154858 -v 0.000000 -0.832560 0.154716 -v 0.166069 0.310356 0.749262 -v 0.166069 0.000000 0.813539 -v 0.707107 -0.478468 -0.198188 -v 0.707107 -0.519514 0.000000 -v 0.707107 -0.367352 -0.367352 -v 0.707107 0.198188 0.478468 -v 0.707107 0.367352 0.367352 -v 0.707107 0.000000 0.519514 -v 0.707107 0.478468 -0.198188 -v 0.707107 0.519514 0.000000 -v 0.707107 0.367352 -0.367352 -v 0.707107 -0.198188 -0.478468 -v 0.707107 -0.000000 -0.519514 -v 0.707107 -0.198188 0.478468 -v 0.707107 0.478468 0.198188 -v 0.707107 0.198188 -0.478468 -v 0.707107 -0.478468 0.198188 -v 0.166069 -0.310355 0.749262 -v 0.083622 0.823788 0.154858 -v 0.000000 0.832560 0.154716 -v -0.166657 -0.713477 0.387925 -v -0.146192 -0.787438 0.213267 -v -0.166216 -0.566313 0.594651 -v -0.166657 0.713478 0.387925 -v -0.166216 0.566314 0.594651 -v -0.146192 0.787438 0.213267 -v -0.083622 -0.823788 0.154858 -v -0.166069 0.310356 0.749262 -v -0.166069 0.000000 0.813539 -v -0.166069 -0.310355 0.749262 -v -0.083622 0.823788 0.154858 -v 0.707107 0.463388 -0.463388 -v 0.707107 0.250000 -0.603553 -v 0.707107 -0.000000 -0.655330 -v 0.707107 -0.250000 -0.603553 -v 0.707107 -0.463388 -0.463388 -v 0.707107 -0.603553 -0.250000 -v 0.707107 -0.655330 0.000000 -v 0.707107 -0.603553 0.250000 -v 0.707107 -0.463388 0.463388 -v 0.707107 -0.250000 0.603553 -v 0.707107 0.000000 0.655330 -v 0.707107 0.250000 0.603553 -v 0.707107 0.463388 0.463388 -v 0.707107 0.603553 0.250000 -v 0.707107 0.655330 -0.000000 -v 0.707107 0.603553 -0.250000 -v 0.659388 0.367352 -0.367352 -v 0.659388 0.478468 -0.198188 -v 0.659388 0.519514 0.000000 -v 0.659388 0.367352 0.367352 -v 0.659388 0.478468 0.198188 -v 0.659388 0.000000 0.519514 -v 0.659388 0.198188 0.478468 -v 0.659388 -0.367352 0.367352 -v 0.659388 -0.198188 0.478468 -v 0.659388 -0.519514 0.000000 -v 0.659388 -0.478468 0.198188 -v 0.659388 -0.367352 -0.367352 -v 0.659388 -0.478468 -0.198188 -v 0.659388 -0.000000 -0.519514 -v 0.659388 -0.198188 -0.478468 -v 0.659388 0.198188 -0.478468 -v 0.160177 0.864705 0.249712 -v 0.091524 0.903905 0.188043 -v 0.000000 0.913009 0.188039 -v 0.160177 -0.864705 0.249712 -v 0.091524 -0.903905 0.188043 -v 0.000000 -0.913009 0.188039 -v 0.183088 -0.783522 0.434701 -v 0.183118 -0.621724 0.654965 -v 0.183128 -0.340674 0.822462 -v 0.183128 0.000000 0.893018 -v 0.183128 0.340675 0.822461 -v 0.183118 0.621724 0.654965 -v 0.183088 0.783523 0.434700 -v -0.707107 0.463388 -0.463388 -v -0.707107 0.250000 -0.603553 -v -0.707107 -0.000000 -0.655330 -v -0.707107 -0.250000 -0.603553 -v -0.707107 -0.463388 -0.463388 -v -0.707107 -0.603553 -0.250000 -v -0.707107 -0.655330 0.000000 -v -0.707107 -0.603553 0.250000 -v -0.707107 -0.463388 0.463388 -v -0.707107 -0.250000 0.603553 -v -0.707107 0.000000 0.655330 -v -0.707107 0.250000 0.603553 -v -0.707107 0.463388 0.463388 -v -0.707107 0.603553 0.250000 -v -0.707107 0.655330 -0.000000 -v -0.707107 0.603553 -0.250000 -v -0.160177 0.864705 0.249712 -v -0.091524 0.903905 0.188043 -v -0.160177 -0.864705 0.249712 -v -0.091524 -0.903905 0.188043 -v -0.183088 -0.783522 0.434701 -v -0.183118 -0.621724 0.654965 -v -0.183128 -0.340674 0.822462 -v -0.183128 0.000000 0.893018 -v -0.183128 0.340675 0.822461 -v -0.183118 0.621724 0.654965 -v -0.183088 0.783523 0.434700 -v 0.879657 -0.585451 -1.245550 -v 0.863647 -0.626689 -1.251529 -v 0.825364 -0.643771 -1.266868 -v 0.673277 -0.653857 -0.605875 -v 0.682240 -0.619120 -0.627932 -v 0.659992 -0.676838 -0.573181 -v 0.644408 -0.684566 -0.534828 -v 0.628896 -0.675863 -0.496655 -v 0.615820 -0.652054 -0.464474 -v 0.607168 -0.616764 -0.443183 -v 0.604259 -0.575366 -0.436024 -v 0.685516 -0.577916 -0.635995 -v 0.652094 -0.578307 -0.685289 -v 0.635636 -0.619534 -0.690399 -v 0.597719 -0.636715 -0.706639 -v 0.771590 -0.585451 -1.289462 -v 0.787232 -0.626689 -1.282580 -v 0.473292 -0.653857 -0.687137 -v 0.482254 -0.619120 -0.709195 -v 0.460007 -0.676838 -0.654444 -v 0.444422 -0.684566 -0.616091 -v 0.428911 -0.675863 -0.577918 -v 0.415834 -0.652054 -0.545736 -v 0.407183 -0.616764 -0.524445 -v 0.404274 -0.575366 -0.517286 -v 0.485531 -0.577916 -0.717258 -v 0.543863 -0.578307 -0.729268 -v 0.559221 -0.619534 -0.721450 -v 0.864014 -0.544212 -1.252432 -v 0.825883 -0.527130 -1.268144 -v 0.673956 -0.501228 -0.607545 -v 0.682607 -0.536518 -0.628836 -v 0.660879 -0.477419 -0.575363 -v 0.645368 -0.468716 -0.537190 -v 0.629783 -0.476443 -0.498838 -v 0.616498 -0.499425 -0.466144 -v 0.607536 -0.534162 -0.444087 -v 0.636003 -0.537057 -0.691302 -v 0.598238 -0.519898 -0.707917 -v 0.787599 -0.544212 -1.283482 -v 0.473970 -0.501228 -0.688808 -v 0.482622 -0.536518 -0.710099 -v 0.460894 -0.477419 -0.656626 -v 0.445382 -0.468716 -0.618453 -v 0.429798 -0.476443 -0.580100 -v 0.416513 -0.499425 -0.547407 -v 0.407550 -0.534162 -0.525349 -v 0.559588 -0.537057 -0.722352 -v 1.032475 -1.208982 -1.625280 -v 1.003626 -1.231580 -1.599791 -v 0.960023 -1.240865 -1.602094 -v 0.917154 -0.691373 -1.206666 -v 0.933006 -0.691712 -1.245680 -v 0.902590 -0.674944 -1.170728 -v 0.891532 -0.644927 -1.143338 -v 0.885662 -0.605891 -1.128666 -v 0.885876 -0.563780 -1.128945 -v 0.892139 -0.525003 -1.144133 -v 0.903499 -0.495465 -1.171918 -v 0.947733 -0.675910 -1.281831 -v 0.908636 -0.703460 -1.317320 -v 0.879504 -0.725243 -1.291369 -v 0.836074 -0.735392 -1.294100 -v 0.924408 -1.208726 -1.669191 -v 0.927211 -1.231399 -1.630841 -v 0.717168 -0.690898 -1.287927 -v 0.733020 -0.691238 -1.326941 -v 0.702604 -0.674470 -1.251989 -v 0.691546 -0.644453 -1.224600 -v 0.685677 -0.605417 -1.209927 -v 0.685890 -0.563305 -1.210207 -v 0.692154 -0.524529 -1.225395 -v 0.703514 -0.494991 -1.253179 -v 0.747747 -0.675435 -1.363093 -v 0.800405 -0.703203 -1.361299 -v 0.803089 -0.725062 -1.322419 -v 1.029673 -1.186309 -1.663630 -v 0.996860 -1.176842 -1.692377 -v 0.965356 -0.607596 -1.324804 -v 0.959093 -0.646372 -1.309616 -v 0.965570 -0.565484 -1.325083 -v 0.959700 -0.526448 -1.310411 -v 0.948642 -0.496431 -1.283021 -v 0.934078 -0.480002 -1.247084 -v 0.918226 -0.479663 -1.208070 -v 0.905552 -0.679972 -1.355208 -v 0.872967 -0.671271 -1.384519 -v 0.953258 -1.186128 -1.694680 -v 0.765371 -0.607121 -1.406065 -v 0.759107 -0.645898 -1.390877 -v 0.765584 -0.565010 -1.406345 -v 0.759715 -0.525974 -1.391672 -v 0.748657 -0.495957 -1.364283 -v 0.734093 -0.479528 -1.328345 -v 0.718241 -0.479189 -1.289331 -v 0.829137 -0.679791 -1.386258 -v 1.162960 -0.605827 0.365538 -v 1.180859 -0.645406 0.355250 -v 1.203219 -0.661802 0.320266 -v 0.582832 -0.867274 0.138486 -v 0.594171 -0.827093 0.144001 -v 0.558528 -0.899571 0.126664 -v 0.524961 -0.919068 0.110335 -v 0.487240 -0.922795 0.091984 -v 0.451108 -0.910186 0.074405 -v 0.422066 -0.883161 0.060275 -v 0.404535 -0.845832 0.051744 -v 0.590820 -0.785145 0.142369 -v 0.641037 -0.775845 0.111730 -v 0.658134 -0.815698 0.100954 -v 0.681357 -0.831904 0.066390 -v 1.213991 -0.605832 0.260644 -v 1.216943 -0.645410 0.281079 -v 0.677267 -0.867283 -0.055626 -v 0.688606 -0.827102 -0.050112 -v 0.652964 -0.899581 -0.067448 -v 0.619397 -0.919077 -0.083778 -v 0.581676 -0.922805 -0.102129 -v 0.545544 -0.910196 -0.119707 -v 0.516501 -0.883170 -0.133838 -v 0.498970 -0.845841 -0.142368 -v 0.685255 -0.785154 -0.051744 -v 0.692145 -0.775850 0.006677 -v 0.694218 -0.815701 0.026783 -v 1.160008 -0.566250 0.345103 -v 1.173732 -0.549858 0.305916 -v 0.544246 -0.720791 0.119708 -v 0.573288 -0.747817 0.133838 -v 0.508114 -0.708182 0.102129 -v 0.470393 -0.711909 0.083778 -v 0.436826 -0.731406 0.067448 -v 0.412523 -0.763703 0.055627 -v 0.401184 -0.803884 0.050112 -v 0.637283 -0.736541 0.090806 -v 0.651825 -0.719791 0.052017 -v 1.196092 -0.566253 0.270932 -v 0.638682 -0.720800 -0.074405 -v 0.667724 -0.747826 -0.060275 -v 0.602550 -0.708191 -0.091984 -v 0.564829 -0.711918 -0.110335 -v 0.531262 -0.731415 -0.126664 -v 0.506958 -0.763712 -0.138486 -v 0.495619 -0.803893 -0.144001 -v 0.673367 -0.736545 0.016635 -v 1.558713 -1.207595 0.558825 -v 1.536358 -1.231944 0.528825 -v 1.542129 -1.241999 0.485718 -v 1.126224 -0.712593 0.402674 -v 1.164007 -0.710783 0.421187 -v 1.090689 -0.698164 0.385279 -v 1.062812 -0.669692 0.371650 -v 1.046836 -0.631513 0.363861 -v 1.045195 -0.589439 0.363099 -v 1.058137 -0.549875 0.369480 -v 1.083692 -0.518844 0.382032 -v 1.198285 -0.693010 0.438000 -v 1.237637 -0.719662 0.402109 -v 1.214803 -0.743225 0.371777 -v 1.221028 -0.754118 0.328890 -v 1.610035 -1.207489 0.454074 -v 1.572648 -1.231869 0.454755 -v 1.221198 -0.712397 0.208825 -v 1.258981 -0.710588 0.227338 -v 1.185664 -0.697968 0.191430 -v 1.157786 -0.669497 0.177800 -v 1.141811 -0.631318 0.170012 -v 1.140169 -0.589244 0.169250 -v 1.153111 -0.549679 0.175630 -v 1.178666 -0.518649 0.188182 -v 1.293259 -0.692815 0.244150 -v 1.289037 -0.719556 0.297198 -v 1.251093 -0.743150 0.297706 -v 1.596100 -1.183214 0.558145 -v 1.626618 -1.173085 0.527182 -v 1.236782 -0.622416 0.456932 -v 1.223840 -0.661980 0.450551 -v 1.235140 -0.580341 0.456170 -v 1.219164 -0.542162 0.448381 -v 1.191287 -0.513691 0.434752 -v 1.155753 -0.499262 0.417357 -v 1.117970 -0.501071 0.398844 -v 1.274546 -0.694495 0.401096 -v 1.305645 -0.685100 0.370417 -v 1.632390 -1.183140 0.484074 -v 1.331756 -0.622220 0.263083 -v 1.318814 -0.661784 0.256702 -v 1.330114 -0.580146 0.262321 -v 1.314139 -0.541967 0.254532 -v 1.286261 -0.513495 0.240903 -v 1.250727 -0.499066 0.223507 -v 1.212944 -0.500876 0.204994 -v 1.310836 -0.694421 0.327025 -v 0.707107 -0.367352 0.367352 -v 1.666868 -1.085842 0.428226 -v 1.666868 -1.085842 0.428226 -v 1.633370 -1.059764 0.466150 -v 1.603599 -1.050567 0.515746 -v 1.582089 -1.059651 0.569462 -v 1.572115 -1.085633 0.619120 -v 1.572115 -1.085633 0.619120 -v 1.513056 -1.106443 0.589828 -v 1.607809 -1.106651 0.398933 -v 1.576834 -1.129750 0.383583 -v 1.482080 -1.129542 0.574478 -v 1.556129 -1.164320 0.373344 -v 1.461375 -1.164112 0.564238 -v 1.548846 -1.205099 0.369773 -v 1.454092 -1.204890 0.560668 -v 1.556093 -1.245877 0.373415 -v 1.461340 -1.245668 0.564310 -v 1.576769 -1.280447 0.383716 -v 1.482015 -1.280238 0.574610 -v 1.607724 -1.303546 0.399106 -v 1.512971 -1.303337 0.590001 -v 1.644247 -1.311657 0.417244 -v 1.549493 -1.311448 0.608138 -v 1.680776 -1.303545 0.435367 -v 1.586023 -1.303337 0.626261 -v 1.746068 -1.261106 0.467729 -v 1.746068 -1.261106 0.467729 -v 1.736848 -1.288758 0.517764 -v 1.715603 -1.298428 0.571612 -v 1.685567 -1.288645 0.621075 -v 1.651314 -1.260897 0.658623 -v 1.651314 -1.260897 0.658623 -v 1.726268 -1.217290 0.457853 -v 1.631514 -1.217081 0.648747 -v 1.591915 -1.129449 0.628996 -v 1.611714 -1.173265 0.638872 -v 1.686668 -1.129658 0.438101 -v 1.706468 -1.173474 0.447977 -v -1.343281 -2.380612 -1.952346 -v -1.262555 -2.510691 -1.957483 -v -1.410117 -2.221829 -1.928337 -v -1.439028 -1.288490 -1.583573 -v -1.469991 -1.418761 -1.651277 -v -1.402905 -1.190817 -1.525591 -v -1.169113 -2.608149 -1.942889 -v -1.069314 -2.689296 -1.918431 -v -1.069314 -2.689296 -1.918431 -v -1.490638 -1.614228 -1.738420 -v -1.491195 -1.834269 -1.823825 -v -1.461888 -2.038259 -1.886314 -v -1.337717 -2.384414 -1.874158 -v -1.257767 -2.510838 -1.879424 -v -1.399996 -2.232617 -1.851160 -v -1.427597 -1.326813 -1.515583 -v -1.456825 -1.454692 -1.582369 -v -1.393740 -1.230187 -1.457903 -v -1.155439 -2.611442 -1.866703 -v -1.041922 -2.699135 -1.844989 -v -1.041922 -2.699135 -1.844989 -v -1.476798 -1.645074 -1.667364 -v -1.477598 -1.858597 -1.750244 -v -1.449310 -2.055894 -1.810682 -v -1.198809 -2.702261 -1.922426 -v -1.323270 -2.596491 -1.938328 -v -1.060535 -2.792873 -1.896688 -v -1.060535 -2.792873 -1.896688 -v -1.060535 -2.792873 -1.896688 -v -1.420105 -2.460408 -1.934561 -v -1.495909 -2.295293 -1.911630 -v -1.458304 -1.044493 -1.404346 -v -1.414689 -0.927280 -1.334933 -v -1.414689 -0.927280 -1.334933 -v -1.501920 -1.161705 -1.473758 -v -1.557278 -2.102431 -1.870043 -v -1.595106 -1.884933 -1.806038 -v -1.062190 -0.968805 -1.593382 -v -0.975398 -0.963647 -1.635206 -v -1.147452 -0.983396 -1.530661 -v -1.147452 -0.983396 -1.530661 -v -1.600290 -1.645912 -1.715856 -v -1.581032 -1.429272 -1.621048 -v -1.326027 -1.036934 -1.342541 -v -1.326027 -1.036934 -1.342541 -v -1.326027 -1.036934 -1.342541 -v -1.330661 -0.995472 -1.409625 -v -1.330661 -0.995472 -1.409625 -v -1.330661 -0.995472 -1.409625 -v -1.235935 -1.007729 -1.442869 -v -1.366783 -1.093144 -1.467608 -v -1.359884 -1.133560 -1.400222 -v -1.545535 -1.278917 -1.543171 -v -0.887773 -2.377585 -2.121836 -v -0.823358 -2.217930 -2.146663 -v -0.950698 -2.508618 -2.073521 -v -0.587023 -1.282828 -1.900594 -v -0.577597 -1.185332 -1.832678 -v -0.606326 -1.413021 -1.972636 -v -1.010729 -2.607096 -2.001822 -v -0.645381 -1.608611 -2.052929 -v -0.698216 -1.829000 -2.118883 -v -0.758857 -2.033587 -2.147903 -v -0.840831 -2.381112 -2.059043 -v -0.780444 -2.228500 -2.081687 -v -0.903296 -2.508482 -2.011318 -v -0.550783 -1.320987 -1.841835 -v -0.539828 -1.224512 -1.775633 -v -0.570828 -1.448804 -1.912038 -v -0.971239 -2.610218 -1.935242 -v -0.609049 -1.639308 -1.990243 -v -0.660125 -1.853164 -2.054416 -v -0.718732 -2.051040 -2.082521 -v -0.973783 -2.700765 -2.006155 -v -0.891232 -2.593620 -2.099084 -v -0.817083 -2.456400 -2.158937 -v -0.746661 -2.290315 -2.190416 -v -0.458133 -1.037846 -1.776497 -v -0.469132 -1.154842 -1.858046 -v -0.447134 -0.920850 -1.694949 -v -0.447134 -0.920850 -1.694949 -v -0.675291 -2.096570 -2.198219 -v -0.607368 -1.878369 -2.173563 -v -0.882322 -0.967610 -1.660308 -v -0.776636 -0.980932 -1.668637 -v -0.776636 -0.980932 -1.668637 -v -0.547288 -1.638914 -2.107665 -v -0.502420 -1.422104 -2.022387 -v -0.517917 -1.031563 -1.643229 -v -0.517917 -1.031563 -1.643229 -v -0.517917 -1.031563 -1.643229 -v -0.558744 -0.990342 -1.696846 -v -0.558744 -0.990342 -1.696846 -v -0.558744 -0.990342 -1.696846 -v -0.652011 -1.003849 -1.660140 -v -0.568170 -1.087837 -1.764762 -v -0.528872 -1.128038 -1.709431 -v -0.480131 -1.271837 -1.939595 -v -0.997066 -0.916421 -1.692597 -v -1.097867 -0.922430 -1.644052 -v -1.187692 -0.938637 -1.578356 -v -1.262845 -0.964612 -1.497724 -v -1.465738 -1.136319 -1.539235 -v -1.509373 -1.253523 -1.608655 -v -1.544802 -1.403862 -1.686489 -v -1.563820 -1.620471 -1.781151 -v -1.558204 -1.859368 -1.871039 -v -1.519736 -2.076569 -1.934554 -v -1.457738 -2.268852 -1.975530 -v -1.381533 -2.432995 -1.997803 -v -1.292245 -2.566328 -2.000947 -v -1.190995 -2.666176 -1.984533 -v -1.083766 -2.749282 -1.958342 -v -1.083766 -2.749282 -1.958342 -v -1.083766 -2.749282 -1.958342 -v -1.378467 -0.901911 -1.400395 -v -1.378467 -0.901911 -1.400395 -v -1.218528 -1.173797 -1.645106 -v -1.246852 -1.261296 -1.701992 -v -1.257266 -1.369375 -1.784696 -v -1.166373 -1.385157 -1.860980 -v -1.073220 -1.380034 -1.905545 -v -1.422103 -1.019115 -1.469815 -v -1.190233 -1.086299 -1.588210 -v -0.888988 -0.921042 -1.721774 -v -0.777884 -0.935914 -1.730841 -v -0.668008 -0.960660 -1.719056 -v -0.539606 -1.130164 -1.883838 -v -0.550595 -1.247151 -1.965405 -v -0.572907 -1.397403 -2.048120 -v -0.617863 -1.614185 -2.133130 -v -0.678078 -1.853519 -2.198523 -v -0.746168 -2.071428 -2.222388 -v -0.817622 -2.264598 -2.213709 -v -0.887929 -2.429715 -2.181468 -v -0.955992 -2.564093 -2.126062 -v -1.020714 -2.665044 -2.047893 -v -0.517628 -0.896190 -1.720703 -v -0.517628 -0.896190 -1.720703 -v -0.795436 -1.170986 -1.802533 -v -0.810166 -1.258394 -1.864478 -v -0.855083 -1.366702 -1.934343 -v -0.973541 -1.383875 -1.932730 -v -0.528617 -1.013177 -1.802270 -v -0.780679 -1.083577 -1.740600 -v -0.879469 -1.087012 -1.685149 -v -0.879469 -1.087012 -1.685149 -v -0.918386 -1.066220 -1.649181 -v -0.970006 -1.059174 -1.622419 -v -1.026472 -1.066947 -1.608935 -v -1.079186 -1.088354 -1.610784 -v -1.079186 -1.088354 -1.610784 -v -1.059045 -1.127383 -1.557397 -v -0.859328 -1.126041 -1.631763 -v -0.849931 -1.158171 -1.607104 -v -1.049648 -1.159513 -1.532739 -v -0.845479 -1.197953 -1.595868 -v -1.045197 -1.199295 -1.521503 -v -0.846652 -1.239330 -1.599765 -v -1.046370 -1.240673 -1.525400 -v -0.853270 -1.276004 -1.618201 -v -1.052988 -1.277346 -1.543836 -v -0.864326 -1.302391 -1.648369 -v -1.064044 -1.303733 -1.574004 -v -0.878137 -1.314474 -1.685678 -v -1.077854 -1.315816 -1.611313 -v -0.892600 -1.310413 -1.724446 -v -1.092317 -1.311756 -1.650082 -v -0.905513 -1.290827 -1.758773 -v -1.105230 -1.292169 -1.684408 -v -0.925919 -1.229083 -1.812462 -v -0.925919 -1.229083 -1.812462 -v -0.979076 -1.251844 -1.815524 -v -1.035697 -1.260092 -1.802467 -v -1.087162 -1.252571 -1.775278 -v -1.125636 -1.230425 -1.738097 -v -1.125636 -1.230425 -1.738097 -v -0.914307 -1.193565 -1.780634 -v -1.114024 -1.194907 -1.706269 -v -1.090799 -1.123872 -1.642612 -v -1.102411 -1.159389 -1.674441 -v -0.891082 -1.122530 -1.716977 -v -0.902694 -1.158047 -1.748805 -v -1.528858 -2.440977 0.751459 -v -1.508944 -2.559236 0.656159 -v -1.539856 -2.288759 0.834912 -v -1.451679 -1.303750 0.948058 -v -1.478682 -1.449913 0.968558 -v -1.426015 -1.190961 0.919305 -v -1.480183 -2.639662 0.550581 -v -1.447001 -2.701173 0.439864 -v -1.447001 -2.701173 0.439864 -v -1.508360 -1.662824 0.972550 -v -1.532244 -1.896875 0.953519 -v -1.541863 -2.106456 0.904953 -v -1.453614 -2.422652 0.738754 -v -1.434694 -2.537521 0.644681 -v -1.464271 -2.276966 0.816934 -v -1.377808 -1.320704 0.926206 -v -1.404762 -1.464162 0.945204 -v -1.351894 -1.209214 0.899591 -v -1.407932 -2.620632 0.530093 -v -1.377248 -2.687863 0.405248 -v -1.377248 -2.687863 0.405248 -v -1.433798 -1.671554 0.948966 -v -1.456948 -1.898697 0.930757 -v -1.466244 -2.101408 0.883841 -v -1.432393 -2.726928 0.566657 -v -1.460993 -2.641840 0.704035 -v -1.399961 -2.793507 0.416630 -v -1.399961 -2.793507 0.416630 -v -1.399961 -2.793507 0.416630 -v -1.481929 -2.519734 0.816114 -v -1.494583 -2.362602 0.909303 -v -1.341930 -1.022926 0.981547 -v -1.311324 -0.887595 0.946792 -v -1.311324 -0.887595 0.946792 -v -1.372535 -1.158257 1.016302 -v -1.498339 -2.172434 0.990009 -v -1.489831 -1.950315 1.048524 -v -1.588851 -0.964844 0.615452 -v -1.640337 -0.963162 0.533873 -v -1.515047 -0.969678 0.692563 -v -1.515047 -0.969678 0.692563 -v -1.465695 -1.697334 1.075142 -v -1.434082 -1.462191 1.074455 -v -1.300067 -0.986233 0.846361 -v -1.300067 -0.986233 0.846361 -v -1.300067 -0.986233 0.846361 -v -1.374685 -0.965383 0.861799 -v -1.374685 -0.965383 0.861799 -v -1.374685 -0.965383 0.861799 -v -1.414294 -0.977266 0.769504 -v -1.400350 -1.078172 0.890552 -v -1.325980 -1.097723 0.872976 -v -1.403141 -1.293589 1.051056 -v -1.744845 -2.441453 0.316058 -v -1.818077 -2.289372 0.274055 -v -1.656816 -2.559561 0.358069 -v -1.855671 -1.304640 0.133666 -v -1.817348 -1.191824 0.130430 -v -1.888203 -1.450816 0.143019 -v -1.555284 -2.639828 0.399189 -v -1.909152 -1.663707 0.164606 -v -1.908247 -1.897704 0.195547 -v -1.875217 -2.107191 0.232957 -v -1.689221 -2.423171 0.263804 -v -1.758042 -2.277614 0.224732 -v -1.602772 -2.537892 0.305858 -v -1.793563 -1.321621 0.088100 -v -1.756790 -1.210106 0.083375 -v -1.824872 -1.465088 0.098318 -v -1.495273 -2.620824 0.354025 -v -1.845255 -1.672461 0.119524 -v -1.844566 -1.899551 0.149371 -v -1.812659 -2.102171 0.185514 -v -1.539092 -2.727163 0.351565 -v -1.665850 -2.642291 0.291069 -v -1.767861 -2.520365 0.239713 -v -1.849851 -2.363385 0.193130 -v -1.816177 -1.023971 0.025529 -v -1.862248 -1.159337 0.029106 -v -1.770105 -0.888606 0.021951 -v -1.770105 -0.888606 0.021951 -v -1.916547 -2.173355 0.146957 -v -1.958182 -1.951347 0.104390 -v -1.674138 -0.965031 0.443524 -v -1.690876 -0.970065 0.338116 -v -1.690876 -0.970065 0.338116 -v -1.964993 -1.698434 0.068625 -v -1.945523 -1.463318 0.043458 -v -1.683245 -0.987077 0.073925 -v -1.683245 -0.987077 0.073925 -v -1.683245 -0.987077 0.073925 -v -1.740701 -0.966190 0.123959 -v -1.740701 -0.966190 0.123959 -v -1.740701 -0.966190 0.123959 -v -1.691171 -0.977877 0.211358 -v -1.779024 -1.079007 0.127194 -v -1.720018 -1.098592 0.078650 -v -1.908319 -1.294702 0.032684 -v -1.705210 -0.935751 0.566024 -v -1.645437 -0.937729 0.660770 -v -1.567829 -0.943726 0.741939 -v -1.475050 -0.953589 0.806117 -v -1.446122 -1.148491 0.989277 -v -1.476735 -1.283818 1.024053 -v -1.507647 -1.452387 1.047384 -v -1.539156 -1.687438 1.047823 -v -1.563092 -1.940179 1.020769 -v -1.571283 -2.161818 0.961615 -v -1.567168 -2.351205 0.880305 -v -1.554186 -2.507190 0.786783 -v -1.532501 -2.627205 0.682448 -v -1.502275 -2.708683 0.568701 -v -1.467779 -2.770891 0.450248 -v -1.467779 -2.770891 0.450248 -v -1.467779 -2.770891 0.450248 -v -1.384897 -0.877837 0.919726 -v -1.384897 -0.877837 0.919726 -v -1.566356 -1.189996 0.749388 -v -1.594550 -1.292010 0.771582 -v -1.644140 -1.419104 0.775772 -v -1.723603 -1.446522 0.690545 -v -1.778443 -1.445025 0.602909 -v -1.415510 -1.013164 0.954502 -v -1.538149 -1.087983 0.727221 -v -1.744481 -0.937947 0.461112 -v -1.762146 -0.944155 0.350221 -v -1.757101 -0.954210 0.237538 -v -1.885263 -1.149459 0.104030 -v -1.931355 -1.284820 0.107601 -v -1.968487 -1.453402 0.118392 -v -1.987697 -1.688426 0.143626 -v -1.980418 -1.941099 0.179496 -v -1.938083 -2.162626 0.222196 -v -1.870690 -2.351874 0.268447 -v -1.788237 -2.507706 0.314968 -v -1.691940 -2.627557 0.361039 -v -1.583016 -2.708861 0.405937 -v -1.793078 -0.878736 0.096888 -v -1.793078 -0.878736 0.096888 -v -1.766972 -1.190438 0.344973 -v -1.801612 -1.292466 0.354173 -v -1.834842 -1.419524 0.391343 -v -1.815037 -1.446723 0.506225 -v -1.839170 -1.014097 0.100459 -v -1.732345 -1.088411 0.335747 -v -0.874137 -0.072697 0.644137 -v -0.838814 -0.065381 0.644137 -v -0.904286 -0.092501 0.644137 -v -0.924090 -0.122650 0.644137 -v -0.931406 -0.157973 0.644137 -v -0.924090 -0.193295 0.644137 -v -0.904286 -0.223445 0.644137 -v -0.888640 -0.178611 0.838418 -v -0.892914 -0.157973 0.838418 -v -0.877069 -0.196227 0.838418 -v -0.788989 -0.178611 0.838418 -v -0.800560 -0.196227 0.838418 -v -0.784714 -0.157973 0.838418 -v -0.818176 -0.108147 0.838418 -v -0.800560 -0.119719 0.838418 -v -0.838814 -0.103873 0.838418 -v -0.888640 -0.137335 0.838418 -v -0.877069 -0.119719 0.838418 -v -0.788989 -0.137335 0.838418 -v -1.025283 0.089448 0.477009 -v -1.025283 0.000000 0.485206 -v -0.955232 -0.089447 0.477009 -v -0.955232 0.000000 0.485206 -v -0.955232 -0.178758 0.450344 -v -0.851475 -0.416358 -0.462306 -v -0.873201 -0.485597 -0.307469 -v -0.851475 -0.290254 -0.596729 -v -0.851475 -0.098271 -0.685024 -v -0.851475 0.126651 -0.717641 -v -0.851475 0.351573 -0.685024 -v -0.851475 0.543556 -0.596729 -v -0.851475 0.669660 -0.462306 -v -0.873201 0.707236 -0.307469 -v -1.025283 0.430563 0.167312 -v -1.025283 0.352934 0.315440 -v -1.025283 -0.430563 0.167312 -v -1.025283 -0.352934 0.315441 -v -1.003557 -0.486603 -0.003170 -v -0.868328 -0.506980 -0.157927 -v -0.933506 -0.486603 -0.003170 -v -0.955232 -0.430563 0.167312 -v -0.955232 -0.352934 0.315441 -v -1.025283 -0.089447 0.477009 -v -1.025283 -0.178758 0.450344 -v -0.818176 -0.207798 0.838418 -v -0.838814 -0.212073 0.838418 -v -0.859453 -0.108147 0.838418 -v -0.859453 -0.207798 0.838418 -v -0.803492 -0.243249 0.838418 -v -0.838814 -0.250564 0.838418 -v -0.773342 -0.223445 0.838418 -v -0.924090 -0.122650 0.838418 -v -0.904286 -0.092501 0.838418 -v -0.931406 -0.157973 0.838418 -v -0.753538 -0.193295 0.838418 -v -0.746223 -0.157973 0.838418 -v -0.803492 -0.072697 0.838418 -v -0.838814 -0.065381 0.838418 -v -0.868327 0.633631 -0.157927 -v -0.933506 0.518266 -0.003170 -v -0.924090 -0.193295 0.838418 -v -1.025283 0.178758 0.450344 -v -1.003557 0.518266 -0.003170 -v -0.788989 0.137335 0.838418 -v -0.800560 0.119719 0.838418 -v -0.784714 0.157973 0.838418 -v -0.874137 0.243249 0.644137 -v -0.838814 0.250565 0.644137 -v -0.904286 0.223445 0.644137 -v -0.859453 0.207799 0.838418 -v -0.838814 0.212073 0.838418 -v -0.877069 0.196228 0.838418 -v -0.924090 0.193296 0.644137 -v -0.931406 0.157973 0.644137 -v -0.859453 0.108148 0.838418 -v -0.877069 0.119719 0.838418 -v -0.838814 0.103873 0.838418 -v -0.924090 0.122651 0.644137 -v -0.904286 0.092501 0.644137 -v -0.888640 0.178612 0.838418 -v -0.892914 0.157973 0.838418 -v -0.874137 0.072697 0.644137 -v -0.838814 0.065382 0.644137 -v -0.818176 0.207799 0.838418 -v -0.800560 0.196228 0.838418 -v -0.803492 0.072697 0.644137 -v -0.773342 0.092501 0.644137 -v -0.788989 0.178612 0.838418 -v -0.753538 0.122651 0.644137 -v -0.746223 0.157973 0.644137 -v -0.818176 0.108148 0.838418 -v -0.753538 0.193296 0.644137 -v -0.773342 0.223445 0.644137 -v -0.888640 0.137335 0.838418 -v -0.803492 0.243249 0.644137 -v -1.025283 -0.267792 0.403136 -v -0.888640 0.178611 0.644137 -v -0.877069 0.196227 0.644137 -v -0.892914 0.157973 0.644137 -v -0.888640 0.137335 0.644137 -v -0.877069 0.119719 0.644137 -v -0.859453 0.108148 0.644137 -v -0.838814 0.103873 0.644137 -v -0.818176 0.108148 0.644137 -v -0.800560 0.119719 0.644137 -v -0.788989 0.137335 0.644137 -v -0.784714 0.157973 0.644137 -v -0.788989 0.178611 0.644137 -v -0.800560 0.196227 0.644137 -v -0.818176 0.207798 0.644137 -v -0.838814 0.212073 0.644137 -v -0.859453 0.207798 0.644137 -v -0.955232 0.267793 0.403136 -v -0.955232 0.178758 0.450344 -v -0.955232 0.352934 0.315440 -v -0.955232 0.430563 0.167312 -v -0.803492 -0.072697 0.644137 -v -0.773342 -0.092501 0.644137 -v -0.753538 -0.122650 0.644137 -v -0.746223 -0.157973 0.644137 -v -0.753538 -0.193295 0.644137 -v -0.773342 -0.223445 0.644137 -v -0.803492 -0.243249 0.644137 -v -0.838814 -0.250564 0.644137 -v -0.874137 -0.243249 0.644137 -v -0.888640 -0.137334 0.423181 -v -0.892914 -0.157973 0.415896 -v -0.877069 -0.119718 0.428739 -v -0.888640 -0.178611 0.407436 -v -0.877069 -0.196227 0.399523 -v -0.859453 -0.207797 0.393878 -v -0.838814 -0.212071 0.391623 -v -0.818176 -0.207797 0.393878 -v -0.800560 -0.196227 0.399523 -v -0.788989 -0.178611 0.407436 -v -0.784714 -0.157973 0.415896 -v -0.788989 -0.137334 0.423181 -v -0.800560 -0.119718 0.428739 -v -0.818176 -0.108147 0.432018 -v -0.838814 -0.103872 0.433088 -v -0.859453 -0.108147 0.432018 -v -1.025283 0.267793 0.403136 -v -0.955232 0.089448 0.477009 -v -0.955232 -0.267792 0.403136 -v -0.938379 -0.506980 -0.157927 -v -0.938379 0.633631 -0.157927 -v -0.800560 -0.119718 0.693786 -v -0.818176 -0.108147 0.693786 -v -0.838814 -0.103873 0.693786 -v -0.859453 -0.108147 0.693786 -v -0.877069 -0.119718 0.693786 -v -0.888640 -0.137334 0.693786 -v -0.892914 -0.157973 0.693786 -v -0.888640 -0.178611 0.693786 -v -0.877069 -0.196227 0.693786 -v -0.859453 -0.207798 0.693786 -v -0.838814 -0.212073 0.693786 -v -1.025283 0.291908 -0.291908 -v -1.025283 0.380203 -0.157485 -v -1.025283 0.412820 0.000000 -v -1.025283 0.157485 -0.380203 -v -1.025283 -0.000000 -0.412820 -v -1.025283 -0.157485 -0.380203 -v -1.025283 -0.291908 -0.291907 -v -1.025283 -0.380203 -0.157485 -v -1.025283 -0.412820 0.000000 -v -1.025283 -0.380203 0.157485 -v -1.025283 -0.311654 0.288289 -v -1.025283 0.311654 0.288288 -v -1.025283 0.380203 0.157485 -v -0.659388 -0.291908 -0.291907 -v -0.659388 -0.380203 -0.157485 -v -0.659388 -0.412820 0.000000 -v -0.955232 -0.311654 0.288289 -v -0.955232 -0.380203 0.157485 -v -0.955232 -0.412820 0.000000 -v -0.955232 -0.380203 -0.157485 -v -0.955232 -0.291908 -0.291907 -v -0.955232 -0.157485 -0.380203 -v -0.955232 -0.000000 -0.412820 -v -0.955232 0.157485 -0.380203 -v -0.955232 0.291908 -0.291908 -v -0.955232 0.380203 -0.157485 -v -0.955232 0.412820 0.000000 -v -0.955232 0.380203 0.157485 -v -0.955232 0.311654 0.288288 -v -0.803150 -0.485597 -0.307469 -v -0.781424 -0.416358 -0.462306 -v -0.781424 -0.290254 -0.596729 -v -0.781423 -0.098271 -0.685024 -v -0.781423 0.126651 -0.717641 -v -0.781423 0.351573 -0.685024 -v -0.781423 0.543556 -0.596729 -v -0.781423 0.669660 -0.462306 -v -0.803149 0.707236 -0.307469 -v -0.904286 0.223445 0.838418 -v -0.874137 0.243249 0.838418 -v -0.838814 0.250565 0.838418 -v -0.931406 0.157973 0.838418 -v -0.924090 0.193296 0.838418 -v -0.904286 0.092501 0.838418 -v -0.924090 0.122651 0.838418 -v -0.838814 0.065382 0.838418 -v -0.874137 0.072697 0.838418 -v -0.773342 0.092501 0.838418 -v -0.803492 0.072697 0.838418 -v -0.874137 -0.243249 0.838418 -v -0.904286 -0.223445 0.838418 -v -0.753538 -0.122650 0.838418 -v -0.746223 0.157973 0.838418 -v -0.753538 0.122651 0.838418 -v -0.773342 -0.092501 0.838418 -v -0.773342 0.223445 0.838418 -v -0.753538 0.193296 0.838418 -v -0.803492 0.243249 0.838418 -v -0.877069 0.196227 0.693786 -v -0.859453 0.207798 0.693786 -v -0.838814 0.212073 0.693786 -v -0.892914 0.157973 0.693786 -v -0.888640 0.178611 0.693786 -v -0.877069 0.119719 0.693786 -v -0.888640 0.137335 0.693786 -v -0.838814 0.103873 0.693786 -v -0.859453 0.108148 0.693786 -v -0.800560 0.119719 0.693786 -v -0.818176 0.108148 0.693786 -v -0.784714 0.157973 0.693786 -v -0.788989 0.137335 0.693786 -v -0.800560 0.196227 0.693786 -v -0.788989 0.178611 0.693786 -v -0.818176 0.207798 0.693786 -v -0.659388 0.311654 0.288288 -v -0.659388 0.380203 0.157485 -v -0.659388 0.412820 0.000000 -v -1.025283 0.236471 0.365727 -v -1.025283 0.157850 0.407413 -v -0.784714 0.157973 0.415896 -v -0.788989 0.137335 0.423181 -v -0.800560 0.119719 0.428739 -v -0.955232 0.236471 0.365727 -v -0.955232 0.157850 0.407413 -v -1.025283 0.000000 0.438198 -v -1.025283 0.078986 0.430960 -v -0.800560 0.196227 0.399523 -v -0.788989 0.178611 0.407436 -v -0.955232 0.000000 0.438198 -v -0.955232 0.078986 0.430960 -v -0.838814 0.212072 0.391623 -v -0.818176 0.207798 0.393878 -v -0.859453 0.207798 0.393878 -v -0.877069 0.196227 0.399523 -v -0.892914 0.157973 0.415896 -v -0.888640 0.178611 0.407436 -v -0.877069 0.119719 0.428739 -v -0.888640 0.137335 0.423181 -v -0.838814 0.103872 0.433088 -v -0.859453 0.108147 0.432018 -v -0.818176 0.108147 0.432018 -v -0.784714 -0.157973 0.693786 -v -0.788989 -0.137334 0.693786 -v -0.800560 -0.196227 0.693786 -v -0.788989 -0.178611 0.693786 -v -0.818176 -0.207798 0.693786 -v -0.838814 -0.212073 0.644137 -v -0.818176 -0.207798 0.644137 -v -0.800560 -0.196227 0.644137 -v -0.788989 -0.178611 0.644137 -v -0.784714 -0.157973 0.644137 -v -0.788989 -0.137334 0.644137 -v -0.800560 -0.119718 0.644137 -v -0.818176 -0.108147 0.644137 -v -0.838814 -0.103873 0.644137 -v -0.859453 -0.108147 0.644137 -v -0.877069 -0.119718 0.644137 -v -0.888640 -0.137334 0.644137 -v -0.892914 -0.157973 0.644137 -v -0.888640 -0.178611 0.644137 -v -0.877069 -0.196227 0.644137 -v -0.859453 -0.207798 0.644137 -v -0.874137 -0.072697 0.838418 -v -1.025283 -0.236471 0.365727 -v -1.025283 -0.157850 0.407413 -v -0.955232 -0.236471 0.365727 -v -0.955232 -0.157850 0.407413 -v -1.025283 -0.078985 0.430960 -v -0.955232 -0.078985 0.430960 -v -0.659388 -0.380203 0.157485 -v -0.659388 -0.311654 0.288289 -v -0.659388 -0.000000 -0.412820 -v -0.659388 -0.157485 -0.380203 -v -0.659388 0.291908 -0.291908 -v -0.659388 0.157485 -0.380203 -v -0.659388 0.380203 -0.157485 -v -0.659388 0.157850 0.407413 -v -0.659388 0.078986 0.430960 -v -0.659388 0.000000 0.438198 -v -0.659388 0.236471 0.365727 -v -0.659388 -0.157850 0.407413 -v -0.659388 -0.078985 0.430960 -v -0.659388 -0.236471 0.365727 -v -0.707107 -0.478468 -0.198188 -v -0.707107 -0.519514 0.000000 -v -0.707107 -0.367352 -0.367352 -v -0.707107 0.198188 0.478468 -v -0.707107 0.367352 0.367352 -v -0.707107 0.000000 0.519514 -v -0.707107 0.478468 -0.198188 -v -0.707107 0.519514 0.000000 -v -0.707107 0.367352 -0.367352 -v -0.707107 -0.198188 -0.478468 -v -0.707107 -0.000000 -0.519514 -v -0.707107 -0.198188 0.478468 -v -0.707107 0.478468 0.198188 -v -0.707107 0.198188 -0.478468 -v -0.707107 -0.478468 0.198188 -v -0.659388 0.367352 -0.367352 -v -0.659388 0.478468 -0.198188 -v -0.659388 0.519514 0.000000 -v -0.659388 0.367352 0.367352 -v -0.659388 0.478468 0.198188 -v -0.659388 0.000000 0.519514 -v -0.659388 0.198188 0.478468 -v -0.659388 -0.367352 0.367352 -v -0.659388 -0.198188 0.478468 -v -0.659388 -0.519514 0.000000 -v -0.659388 -0.478468 0.198188 -v -0.659388 -0.367352 -0.367352 -v -0.659388 -0.478468 -0.198188 -v -0.659388 -0.000000 -0.519514 -v -0.659388 -0.198188 -0.478468 -v -0.659388 0.198188 -0.478468 -v -0.879130 -0.585156 -1.245817 -v -0.863307 -0.626480 -1.251705 -v -0.825091 -0.643768 -1.266979 -v -0.673610 -0.653314 -0.605838 -v -0.682393 -0.618577 -0.627969 -v -0.660460 -0.676295 -0.573090 -v -0.644944 -0.684023 -0.534710 -v -0.629424 -0.675320 -0.496540 -v -0.616264 -0.651511 -0.464392 -v -0.607467 -0.616222 -0.443160 -v -0.604371 -0.574824 -0.436077 -v -0.685470 -0.577374 -0.636112 -v -0.652009 -0.578013 -0.685377 -v -0.635739 -0.619326 -0.690395 -v -0.597888 -0.636714 -0.706570 -v -0.771027 -0.585742 -1.289637 -v -0.786867 -0.626894 -1.282691 -v -0.473558 -0.654397 -0.686931 -v -0.482341 -0.619661 -0.709061 -v -0.460408 -0.677379 -0.654182 -v -0.444892 -0.685106 -0.615802 -v -0.429373 -0.676403 -0.577632 -v -0.416213 -0.652595 -0.545484 -v -0.407415 -0.617305 -0.524252 -v -0.404320 -0.575908 -0.517169 -v -0.485419 -0.578457 -0.717204 -v -0.543742 -0.578600 -0.729263 -v -0.559298 -0.619740 -0.721381 -v -0.863290 -0.544004 -1.252763 -v -0.825066 -0.527130 -1.268475 -v -0.673577 -0.500687 -0.607797 -v -0.682375 -0.535976 -0.629029 -v -0.660417 -0.476879 -0.575649 -v -0.644898 -0.468176 -0.537479 -v -0.629382 -0.475903 -0.499099 -v -0.616232 -0.498884 -0.466351 -v -0.607449 -0.533621 -0.444220 -v -0.635721 -0.536850 -0.691453 -v -0.597863 -0.519899 -0.708069 -v -0.786849 -0.544418 -1.283749 -v -0.473526 -0.501770 -0.688889 -v -0.482323 -0.537060 -0.710121 -v -0.460366 -0.477962 -0.656741 -v -0.444846 -0.469259 -0.618571 -v -0.429330 -0.476986 -0.580191 -v -0.416180 -0.499968 -0.547443 -v -0.407397 -0.534704 -0.525312 -v -0.559281 -0.537264 -0.722439 -v -1.032903 -1.208399 -1.625950 -v -1.004603 -1.231164 -1.599998 -v -0.961061 -1.240857 -1.601689 -v -0.918379 -0.690299 -1.207724 -v -0.933715 -0.690640 -1.246944 -v -0.904142 -0.673870 -1.171656 -v -0.893172 -0.643853 -1.144231 -v -0.887138 -0.604817 -1.129624 -v -0.886960 -0.562707 -1.130059 -v -0.892665 -0.523932 -1.145470 -v -0.903383 -0.494396 -1.173510 -v -0.947815 -0.674839 -1.283345 -v -0.908507 -0.702879 -1.318211 -v -0.879923 -0.724831 -1.291796 -v -0.836556 -0.735387 -1.293913 -v -0.924265 -1.209297 -1.668423 -v -0.927784 -1.231800 -1.630031 -v -0.717338 -0.691962 -1.286322 -v -0.732674 -0.692302 -1.325542 -v -0.703101 -0.675532 -1.250254 -v -0.692131 -0.645515 -1.222829 -v -0.686098 -0.606480 -1.208222 -v -0.685920 -0.564369 -1.208657 -v -0.691624 -0.525594 -1.224068 -v -0.702342 -0.496058 -1.252108 -v -0.746774 -0.676502 -1.361943 -v -0.799704 -0.703779 -1.360748 -v -0.803105 -0.725466 -1.321828 -v -1.029384 -1.185896 -1.664342 -v -0.996107 -1.176839 -1.692684 -v -0.964238 -0.606528 -1.326797 -v -0.958533 -0.645303 -1.311386 -v -0.964060 -0.564418 -1.327231 -v -0.958026 -0.525383 -1.312625 -v -0.947056 -0.495365 -1.285199 -v -0.932819 -0.478936 -1.249131 -v -0.917483 -0.478595 -1.209911 -v -0.904705 -0.679563 -1.356140 -v -0.871655 -0.671271 -1.385047 -v -0.952566 -1.186532 -1.694375 -v -0.763197 -0.608191 -1.405394 -v -0.757493 -0.646966 -1.389983 -v -0.763019 -0.566080 -1.405829 -v -0.756986 -0.527045 -1.391222 -v -0.746015 -0.497028 -1.363797 -v -0.731779 -0.480598 -1.327729 -v -0.716443 -0.480258 -1.288509 -v -0.827886 -0.680198 -1.386172 -v -1.162960 -0.605827 0.365538 -v -1.180859 -0.645406 0.355250 -v -1.203219 -0.661802 0.320267 -v -0.582831 -0.867274 0.138486 -v -0.594171 -0.827093 0.144001 -v -0.558528 -0.899571 0.126664 -v -0.524961 -0.919068 0.110335 -v -0.487240 -0.922795 0.091984 -v -0.451108 -0.910186 0.074405 -v -0.422066 -0.883160 0.060275 -v -0.404535 -0.845832 0.051744 -v -0.590819 -0.785145 0.142369 -v -0.641037 -0.775845 0.111730 -v -0.658134 -0.815697 0.100954 -v -0.681357 -0.831904 0.066390 -v -1.213991 -0.605832 0.260644 -v -1.216943 -0.645409 0.281079 -v -0.677267 -0.867283 -0.055626 -v -0.688606 -0.827102 -0.050112 -v -0.652964 -0.899580 -0.067448 -v -0.619397 -0.919077 -0.083778 -v -0.581676 -0.922804 -0.102129 -v -0.545544 -0.910195 -0.119707 -v -0.516501 -0.883170 -0.133838 -v -0.498970 -0.845841 -0.142368 -v -0.685255 -0.785154 -0.051744 -v -0.692145 -0.775850 0.006677 -v -0.694218 -0.815701 0.026783 -v -1.160008 -0.566250 0.345103 -v -1.173732 -0.549858 0.305916 -v -0.544246 -0.720791 0.119708 -v -0.573288 -0.747816 0.133838 -v -0.508114 -0.708181 0.102129 -v -0.470393 -0.711909 0.083778 -v -0.436826 -0.731405 0.067448 -v -0.412523 -0.763703 0.055627 -v -0.401184 -0.803884 0.050112 -v -0.637283 -0.736541 0.090806 -v -0.651825 -0.719790 0.052017 -v -1.196092 -0.566253 0.270932 -v -0.638682 -0.720800 -0.074405 -v -0.667724 -0.747826 -0.060275 -v -0.602550 -0.708191 -0.091984 -v -0.564829 -0.711918 -0.110335 -v -0.531262 -0.731415 -0.126664 -v -0.506958 -0.763712 -0.138486 -v -0.495619 -0.803893 -0.144001 -v -0.673367 -0.736545 0.016635 -v -1.558712 -1.207594 0.558825 -v -1.536357 -1.231944 0.528825 -v -1.542129 -1.241999 0.485718 -v -1.126223 -0.712593 0.402674 -v -1.164006 -0.710783 0.421187 -v -1.090689 -0.698163 0.385279 -v -1.062811 -0.669692 0.371650 -v -1.046836 -0.631513 0.363861 -v -1.045194 -0.589439 0.363099 -v -1.058136 -0.549875 0.369480 -v -1.083691 -0.518844 0.382032 -v -1.198284 -0.693010 0.438000 -v -1.237636 -0.719662 0.402109 -v -1.214803 -0.743225 0.371777 -v -1.221028 -0.754118 0.328890 -v -1.610034 -1.207489 0.454074 -v -1.572647 -1.231869 0.454755 -v -1.221198 -0.712397 0.208825 -v -1.258980 -0.710587 0.227338 -v -1.185663 -0.697968 0.191430 -v -1.157786 -0.669496 0.177800 -v -1.141810 -0.631317 0.170012 -v -1.140168 -0.589243 0.169250 -v -1.153110 -0.549679 0.175631 -v -1.178666 -0.518649 0.188182 -v -1.293259 -0.692814 0.244150 -v -1.289036 -0.719556 0.297198 -v -1.251093 -0.743150 0.297706 -v -1.596099 -1.183214 0.558145 -v -1.626618 -1.173084 0.527182 -v -1.236781 -0.622415 0.456932 -v -1.223839 -0.661979 0.450551 -v -1.235139 -0.580341 0.456170 -v -1.219164 -0.542162 0.448382 -v -1.191287 -0.513691 0.434752 -v -1.155752 -0.499261 0.417357 -v -1.117969 -0.501071 0.398844 -v -1.274545 -0.694495 0.401096 -v -1.305645 -0.685099 0.370417 -v -1.632390 -1.183139 0.484074 -v -1.331756 -0.622220 0.263083 -v -1.318814 -0.661784 0.256702 -v -1.330114 -0.580146 0.262321 -v -1.314138 -0.541967 0.254532 -v -1.286261 -0.513495 0.240903 -v -1.250726 -0.499066 0.223507 -v -1.212944 -0.500876 0.204995 -v -1.310835 -0.694420 0.327026 -v -0.707107 -0.367352 0.367352 -v -1.666868 -1.085842 0.428225 -v -1.666868 -1.085842 0.428225 -v -1.633369 -1.059764 0.466150 -v -1.603599 -1.050567 0.515746 -v -1.582089 -1.059651 0.569461 -v -1.572115 -1.085633 0.619120 -v -1.572115 -1.085633 0.619120 -v -1.513055 -1.106442 0.589828 -v -1.607809 -1.106651 0.398933 -v -1.576834 -1.129750 0.383583 -v -1.482080 -1.129541 0.574478 -v -1.556128 -1.164320 0.373344 -v -1.461375 -1.164112 0.564238 -v -1.548845 -1.205099 0.369773 -v -1.454092 -1.204890 0.560668 -v -1.556093 -1.245877 0.373415 -v -1.461339 -1.245668 0.564310 -v -1.576768 -1.280447 0.383715 -v -1.482015 -1.280238 0.574610 -v -1.607724 -1.303546 0.399106 -v -1.512970 -1.303337 0.590000 -v -1.644246 -1.311657 0.417243 -v -1.549493 -1.311448 0.608138 -v -1.680776 -1.303545 0.435366 -v -1.586022 -1.303337 0.626261 -v -1.746067 -1.261105 0.467728 -v -1.746067 -1.261105 0.467728 -v -1.736847 -1.288757 0.517763 -v -1.715603 -1.298428 0.571611 -v -1.685567 -1.288645 0.621075 -v -1.651313 -1.260897 0.658623 -v -1.651313 -1.260897 0.658623 -v -1.726267 -1.217289 0.457852 -v -1.631514 -1.217081 0.648747 -v -1.591914 -1.129449 0.628996 -v -1.611714 -1.173265 0.638871 -v -1.686668 -1.129657 0.438101 -v -1.706468 -1.173473 0.447977 -vt 0.595148 0.545044 -vt 0.595205 0.563545 -vt 0.576220 0.563819 -vt 0.576030 0.545141 -vt 0.576189 0.522072 -vt 0.595273 0.522319 -vt 0.614032 0.522383 -vt 0.614031 0.544992 -vt 0.614031 0.563464 -vt 0.604273 0.369295 -vt 0.601481 0.394923 -vt 0.588858 0.392887 -vt 0.594514 0.367324 -vt 0.600405 0.345810 -vt 0.607079 0.348235 -vt 0.614057 0.348001 -vt 0.614052 0.369953 -vt 0.614047 0.395617 -vt 0.599044 0.423653 -vt 0.597116 0.455302 -vt 0.579953 0.453878 -vt 0.583890 0.421805 -vt 0.614042 0.424291 -vt 0.614038 0.455805 -vt 0.595800 0.490213 -vt 0.577277 0.489389 -vt 0.614035 0.490505 -vt 0.556426 0.545379 -vt 0.556450 0.521677 -vt 0.556911 0.564390 -vt 0.584888 0.364006 -vt 0.593464 0.343782 -vt 0.576137 0.389422 -vt 0.568433 0.418657 -vt 0.562305 0.451472 -vt 0.558190 0.488003 -vt 0.618691 0.332898 -vt 0.622186 0.328451 -vt 0.627711 0.345815 -vt 0.621035 0.348238 -vt 0.614062 0.329898 -vt 0.830703 0.583935 -vt 0.830139 0.611512 -vt 0.818899 0.605777 -vt 0.819666 0.578920 -vt 0.819805 0.555699 -vt 0.831042 0.559359 -vt 0.824150 0.769641 -vt 0.823708 0.788261 -vt 0.810714 0.790624 -vt 0.811745 0.769048 -vt 0.813091 0.743692 -vt 0.825582 0.746367 -vt 0.831557 0.536865 -vt 0.819648 0.534238 -vt 0.819202 0.511553 -vt 0.831554 0.514497 -vt 0.827209 0.712833 -vt 0.814873 0.708486 -vt 0.816349 0.670396 -vt 0.828201 0.675917 -vt 0.829273 0.642264 -vt 0.817704 0.636422 -vt 0.460640 0.477452 -vt 0.463036 0.501044 -vt 0.452412 0.501582 -vt 0.452520 0.477956 -vt 0.452619 0.456777 -vt 0.458322 0.457280 -vt 0.464864 0.454366 -vt 0.469942 0.475214 -vt 0.474958 0.498849 -vt 0.465154 0.527907 -vt 0.466792 0.557739 -vt 0.452155 0.558092 -vt 0.452290 0.528393 -vt 0.479446 0.525993 -vt 0.482987 0.556354 -vt 0.467755 0.590688 -vt 0.467196 0.619138 -vt 0.451877 0.618991 -vt 0.452006 0.590843 -vt 0.485221 0.590073 -vt 0.484475 0.624231 -vt 0.507020 0.644201 -vt 0.506366 0.662846 -vt 0.487460 0.661986 -vt 0.488028 0.644939 -vt 0.507215 0.621109 -vt 0.481575 0.470529 -vt 0.489499 0.494372 -vt 0.473733 0.451002 -vt 0.496645 0.522155 -vt 0.502366 0.553588 -vt 0.505970 0.588680 -vt 0.448970 0.440530 -vt 0.452714 0.436948 -vt 0.446912 0.457226 -vt 0.440397 0.454250 -vt 0.445414 0.435214 -vt 0.808958 0.530284 -vt 0.808980 0.502410 -vt 0.808720 0.554682 -vt 0.808019 0.578457 -vt 0.806986 0.605210 -vt 0.796942 0.812200 -vt 0.798445 0.789857 -vt 0.809360 0.812999 -vt 0.807940 0.835534 -vt 0.795481 0.834736 -vt 0.805807 0.635838 -vt 0.804475 0.669810 -vt 0.634897 0.840524 -vt 0.650681 0.835642 -vt 0.653893 0.847074 -vt 0.637292 0.852250 -vt 0.620057 0.854019 -vt 0.620057 0.842048 -vt 0.802876 0.707895 -vt 0.801392 0.742994 -vt 0.686979 0.816680 -vt 0.704197 0.830110 -vt 0.696153 0.839303 -vt 0.683928 0.828508 -vt 0.668355 0.827084 -vt 0.669226 0.838615 -vt 0.595373 0.582516 -vt 0.595568 0.601907 -vt 0.577122 0.602258 -vt 0.576629 0.582884 -vt 0.614030 0.582411 -vt 0.614030 0.601845 -vt 0.844001 0.641310 -vt 0.843755 0.674937 -vt 0.863671 0.669937 -vt 0.863812 0.635939 -vt 0.777455 0.804354 -vt 0.778595 0.785758 -vt 0.557692 0.583627 -vt 0.558617 0.603025 -vt 0.822675 0.807048 -vt 0.821502 0.825843 -vt 0.505579 0.681638 -vt 0.486852 0.679363 -vt 0.841367 0.805347 -vt 0.841045 0.823964 -vt 0.860443 0.835085 -vt 0.861117 0.812509 -vt 0.782448 0.710791 -vt 0.781214 0.744088 -vt 0.799989 0.768274 -vt 0.632914 0.545046 -vt 0.652031 0.545144 -vt 0.651841 0.563821 -vt 0.632856 0.563546 -vt 0.632791 0.522321 -vt 0.651875 0.522076 -vt 0.623832 0.369299 -vt 0.633591 0.367332 -vt 0.639237 0.392897 -vt 0.626613 0.394928 -vt 0.629040 0.423658 -vt 0.644194 0.421814 -vt 0.648123 0.453886 -vt 0.630960 0.455306 -vt 0.632269 0.490216 -vt 0.650791 0.489395 -vt 0.671634 0.545383 -vt 0.671148 0.564393 -vt 0.671611 0.521683 -vt 0.397638 0.681084 -vt 0.398268 0.699925 -vt 0.376001 0.701147 -vt 0.374860 0.682186 -vt 0.643219 0.364018 -vt 0.651958 0.389437 -vt 0.634653 0.343791 -vt 0.785820 0.640511 -vt 0.784396 0.674110 -vt 0.659652 0.418672 -vt 0.665770 0.451485 -vt 0.790005 0.532910 -vt 0.789776 0.557504 -vt 0.669877 0.488013 -vt 0.886869 0.583196 -vt 0.875662 0.578572 -vt 0.875840 0.605438 -vt 0.887274 0.610775 -vt 0.844403 0.533638 -vt 0.845040 0.558223 -vt 0.863871 0.554737 -vt 0.863250 0.530347 -vt 0.886343 0.558624 -vt 0.874984 0.555362 -vt 0.886827 0.769023 -vt 0.874408 0.768863 -vt 0.874130 0.790464 -vt 0.887035 0.787648 -vt 0.887444 0.745711 -vt 0.874867 0.743474 -vt 0.886065 0.536128 -vt 0.874072 0.533922 -vt 0.885273 0.513776 -vt 0.872826 0.511269 -vt 0.887898 0.712139 -vt 0.875417 0.708226 -vt 0.504766 0.700508 -vt 0.484248 0.699407 -vt 0.887597 0.675209 -vt 0.875558 0.670106 -vt 0.887488 0.641537 -vt 0.875722 0.636106 -vt 0.843091 0.711664 -vt 0.843022 0.744983 -vt 0.863150 0.743186 -vt 0.863406 0.708056 -vt 0.788703 0.582546 -vt 0.444406 0.477377 -vt 0.441793 0.500947 -vt 0.429891 0.498643 -vt 0.435124 0.475052 -vt 0.439431 0.527791 -vt 0.437522 0.557606 -vt 0.421342 0.556074 -vt 0.425157 0.525747 -vt 0.436258 0.590542 -vt 0.436547 0.618986 -vt 0.419235 0.623916 -vt 0.418803 0.589767 -vt 0.396534 0.643675 -vt 0.415503 0.644579 -vt 0.415926 0.661624 -vt 0.397025 0.662310 -vt 0.396540 0.620596 -vt 0.423533 0.470259 -vt 0.415390 0.494033 -vt 0.787203 0.609885 -vt 0.431558 0.450802 -vt 0.407992 0.521753 -vt 0.401989 0.553135 -vt 0.398071 0.588189 -vt 0.609431 0.332896 -vt 0.605938 0.328447 -vt 0.416370 0.678992 -vt 0.418748 0.699032 -vt 0.780276 0.767253 -vt 0.862290 0.502492 -vt 0.844081 0.508283 -vt 0.528379 0.682951 -vt 0.527063 0.701936 -vt 0.842893 0.768168 -vt 0.862631 0.768501 -vt 0.864007 0.578519 -vt 0.863914 0.605290 -vt 0.873556 0.812875 -vt 0.861841 0.790126 -vt 0.872923 0.835449 -vt 0.605217 0.840523 -vt 0.602822 0.852250 -vt 0.586220 0.847073 -vt 0.589433 0.835641 -vt 0.553133 0.816680 -vt 0.556185 0.828508 -vt 0.543961 0.839303 -vt 0.535917 0.830110 -vt 0.844848 0.583285 -vt 0.844310 0.610656 -vt 0.571758 0.827084 -vt 0.570888 0.838614 -vt 0.632687 0.582517 -vt 0.651431 0.582885 -vt 0.650938 0.602257 -vt 0.632493 0.601906 -vt 0.670367 0.583628 -vt 0.669441 0.603025 -vt 0.886658 0.806463 -vt 0.886140 0.825289 -vt 0.841858 0.786721 -vt 0.776485 0.822947 -vt 0.456423 0.440566 -vt 0.460029 0.435285 -vt 0.627527 0.329700 -vt 0.790576 0.507555 -vt 0.600596 0.329694 -vt 0.438728 0.435816 -vt 0.466709 0.435952 -vt 0.627678 0.321797 -vt 0.640506 0.338950 -vt 0.388549 0.516550 -vt 0.399117 0.488036 -vt 0.452852 0.409213 -vt 0.665157 0.385129 -vt 0.675833 0.414757 -vt 0.614067 0.305766 -vt 0.538149 0.486285 -vt 0.543738 0.448489 -vt 0.552251 0.414737 -vt 0.562939 0.385108 -vt 0.516132 0.517127 -vt 0.524126 0.550031 -vt 0.653203 0.359831 -vt 0.372832 0.620152 -vt 0.374916 0.586169 -vt 0.529147 0.586863 -vt 0.530938 0.620870 -vt 0.587612 0.338937 -vt 0.600449 0.321791 -vt 0.684335 0.448506 -vt 0.689916 0.486298 -vt 0.539744 0.604028 -vt 0.538233 0.584566 -vt 0.530634 0.644819 -vt 0.529648 0.663920 -vt 0.535920 0.545612 -vt 0.535917 0.521122 -vt 0.372936 0.644088 -vt 0.505823 0.488524 -vt 0.536894 0.565094 -vt 0.482422 0.444047 -vt 0.494692 0.464430 -vt 0.689824 0.584567 -vt 0.688313 0.604028 -vt 0.373762 0.663176 -vt 0.692143 0.521131 -vt 0.380261 0.549384 -vt 0.692138 0.545617 -vt 0.574904 0.359814 -vt 0.468325 0.426220 -vt 0.410470 0.464038 -vt 0.422933 0.443764 -vt 0.691163 0.565098 -vt 0.437207 0.426066 -vt 0.487703 0.957684 -vt 0.486311 0.967387 -vt 0.475241 0.966081 -vt 0.475703 0.956127 -vt 0.486616 0.985191 -vt 0.488422 0.994938 -vt 0.476420 0.996920 -vt 0.475610 0.986936 -vt 0.486009 0.976363 -vt 0.474911 0.976540 -vt 0.494370 0.976144 -vt 0.494678 0.984423 -vt 0.494525 0.967926 -vt 0.495146 0.958185 -vt 0.495658 0.993793 -vt 0.502224 0.976074 -vt 0.502342 0.984086 -vt 0.502244 0.968090 -vt 0.502522 0.958761 -vt 0.502774 0.993068 -vt 0.509773 0.976174 -vt 0.509841 0.983955 -vt 0.509844 0.968263 -vt 0.509966 0.958582 -vt 0.509900 0.993086 -vt 0.517305 0.976181 -vt 0.517281 0.983996 -vt 0.517422 0.968266 -vt 0.517426 0.958905 -vt 0.517133 0.993283 -vt 0.524941 0.976270 -vt 0.524768 0.984170 -vt 0.525000 0.968362 -vt 0.524956 0.958524 -vt 0.524463 0.993609 -vt 0.532635 0.976380 -vt 0.532421 0.984458 -vt 0.532698 0.968305 -vt 0.532553 0.958696 -vt 0.531900 0.994063 -vt 0.540551 0.976491 -vt 0.540295 0.984867 -vt 0.540530 0.968158 -vt 0.539998 0.958637 -vt 0.539419 0.994701 -vt 0.549003 0.976568 -vt 0.548552 0.985521 -vt 0.548654 0.967664 -vt 0.547312 0.958110 -vt 0.547002 0.995681 -vt 0.563519 0.976587 -vt 0.562999 0.987126 -vt 0.562858 0.966125 -vt 0.561816 0.956127 -vt 0.562074 0.997511 -vt 0.468321 0.649889 -vt 0.460665 0.645197 -vt 0.451738 0.643445 -vt 0.442817 0.645013 -vt 0.435156 0.649667 -vt 0.442616 0.685443 -vt 0.435770 0.700660 -vt 0.434718 0.680950 -vt 0.451462 0.686803 -vt 0.451420 0.701935 -vt 0.460489 0.685447 -vt 0.467158 0.700838 -vt 0.468483 0.681098 -vt 0.468477 0.657598 -vt 0.468557 0.665350 -vt 0.468631 0.673175 -vt 0.961285 0.339786 -vt 0.965862 0.332936 -vt 0.975633 0.341571 -vt 0.970955 0.347548 -vt 0.966278 0.353526 -vt 0.956708 0.346636 -vt 0.961601 0.359503 -vt 0.952130 0.353487 -vt 0.956924 0.365481 -vt 0.947554 0.360336 -vt 0.953493 0.330476 -vt 0.959922 0.330476 -vt 0.943008 0.355790 -vt 0.940547 0.349851 -vt 0.947553 0.332936 -vt 0.940547 0.343422 -vt 0.943007 0.337482 -vt 0.947156 0.419266 -vt 0.940547 0.415534 -vt 0.946270 0.403817 -vt 0.953120 0.408394 -vt 0.959971 0.412971 -vt 0.953765 0.422999 -vt 0.966820 0.417548 -vt 0.960374 0.426731 -vt 0.966982 0.430464 -vt 0.973670 0.422125 -vt 0.976130 0.409756 -vt 0.976130 0.416185 -vt 0.950816 0.399271 -vt 0.956756 0.396811 -vt 0.963184 0.396811 -vt 0.973670 0.403817 -vt 0.969124 0.399271 -vt 0.434968 0.657391 -vt 0.434808 0.665140 -vt 0.434709 0.672999 -vt 0.355962 0.870669 -vt 0.360328 0.868914 -vt 0.361687 0.870942 -vt 0.356453 0.873123 -vt 0.603136 0.956752 -vt 0.609209 0.956752 -vt 0.610450 0.962744 -vt 0.601992 0.962744 -vt 0.594129 0.959631 -vt 0.597489 0.954516 -vt 0.097688 0.451912 -vt 0.091905 0.451913 -vt 0.091905 0.445841 -vt 0.097687 0.445840 -vt 0.330969 0.828720 -vt 0.330937 0.837298 -vt 0.265750 0.837297 -vt 0.265782 0.828720 -vt 0.265751 0.820142 -vt 0.330938 0.820142 -vt 0.365399 0.856511 -vt 0.367854 0.856020 -vt 0.367854 0.861689 -vt 0.365459 0.861216 -vt 0.593194 0.950222 -vt 0.588149 0.953651 -vt 0.584790 0.945889 -vt 0.590782 0.944648 -vt 0.097691 0.500495 -vt 0.097691 0.506570 -vt 0.091907 0.506569 -vt 0.091907 0.500495 -vt 0.330969 0.811564 -vt 0.265782 0.811564 -vt 0.265751 0.802986 -vt 0.330938 0.802986 -vt 0.363613 0.865544 -vt 0.365696 0.866932 -vt 0.597312 0.928634 -vt 0.593018 0.932929 -vt 0.587903 0.929569 -vt 0.593883 0.923589 -vt 0.601645 0.920229 -vt 0.602886 0.926222 -vt 0.330970 0.794409 -vt 0.265783 0.794409 -vt 0.265751 0.785831 -vt 0.330939 0.785831 -vt 0.618900 0.932752 -vt 0.614605 0.928458 -vt 0.617965 0.923343 -vt 0.623945 0.929323 -vt 0.627304 0.937085 -vt 0.621312 0.938326 -vt 0.097686 0.439768 -vt 0.091904 0.439769 -vt 0.091903 0.433697 -vt 0.097685 0.433696 -vt 0.330970 0.777253 -vt 0.265783 0.777253 -vt 0.265752 0.768675 -vt 0.330939 0.768675 -vt 0.346929 0.868882 -vt 0.351257 0.870728 -vt 0.350784 0.873123 -vt 0.345541 0.870965 -vt 0.590782 0.938575 -vt 0.584790 0.937432 -vt 0.330966 0.897343 -vt 0.330934 0.905920 -vt 0.265748 0.905920 -vt 0.265780 0.897342 -vt 0.265749 0.888764 -vt 0.330935 0.888765 -vt 0.360275 0.848860 -vt 0.361663 0.846777 -vt 0.365672 0.850786 -vt 0.363644 0.852145 -vt 0.608959 0.926222 -vt 0.610102 0.920230 -vt 0.097689 0.457984 -vt 0.091906 0.457985 -vt 0.097691 0.512644 -vt 0.097690 0.518718 -vt 0.091906 0.518718 -vt 0.091906 0.512643 -vt 0.330967 0.880187 -vt 0.265780 0.880186 -vt 0.265749 0.871609 -vt 0.330936 0.871609 -vt 0.614782 0.954340 -vt 0.619076 0.950045 -vt 0.624191 0.953405 -vt 0.618211 0.959385 -vt 0.343591 0.852198 -vt 0.341745 0.856527 -vt 0.339350 0.856053 -vt 0.341508 0.850810 -vt 0.330967 0.863031 -vt 0.265781 0.863031 -vt 0.265750 0.854453 -vt 0.330936 0.854453 -vt 0.351241 0.847074 -vt 0.350750 0.844619 -vt 0.356420 0.844619 -vt 0.355946 0.847014 -vt 0.621312 0.944399 -vt 0.627304 0.945542 -vt 0.097691 0.476202 -vt 0.091907 0.476202 -vt 0.091907 0.470129 -vt 0.097690 0.470129 -vt 0.330968 0.845876 -vt 0.265781 0.845875 -vt 0.097689 0.464056 -vt 0.091907 0.464057 -vt 0.097691 0.482275 -vt 0.091908 0.482275 -vt 0.345517 0.846801 -vt 0.346875 0.848829 -vt 0.097690 0.524792 -vt 0.091905 0.524792 -vt 0.097691 0.488348 -vt 0.091907 0.488348 -vt 0.341805 0.861232 -vt 0.339350 0.861723 -vt 0.097689 0.530867 -vt 0.091905 0.530866 -vt 0.091907 0.494421 -vt 0.097691 0.494422 -vt 0.341532 0.866956 -vt 0.343560 0.865598 -vt 0.355042 0.811516 -vt 0.349926 0.811516 -vt 0.349427 0.809111 -vt 0.355501 0.809111 -vt 0.361147 0.811347 -vt 0.359799 0.813399 -vt 0.339729 0.821923 -vt 0.339729 0.827039 -vt 0.337324 0.827537 -vt 0.337324 0.821464 -vt 0.339560 0.815818 -vt 0.341612 0.817166 -vt 0.359948 0.835204 -vt 0.363565 0.831586 -vt 0.365618 0.832934 -vt 0.361324 0.837229 -vt 0.355750 0.839641 -vt 0.355252 0.837236 -vt 0.350136 0.837236 -vt 0.349677 0.839641 -vt 0.344031 0.837405 -vt 0.345379 0.835353 -vt 0.363417 0.817017 -vt 0.365442 0.815641 -vt 0.367854 0.821215 -vt 0.365449 0.821713 -vt 0.341761 0.831735 -vt 0.339736 0.833111 -vt 0.345230 0.813548 -vt 0.343854 0.811523 -vt 0.365449 0.826829 -vt 0.367854 0.827288 -vt 0.810299 0.955389 -vt 0.831557 0.959792 -vt 0.828198 0.967553 -vt 0.806245 0.934132 -vt 0.814702 0.934132 -vt 0.789042 0.959444 -vt 0.789042 0.950986 -vt 0.361396 0.853651 -vt 0.358922 0.850889 -vt 0.355422 0.849669 -vt 0.831557 0.951334 -vt 0.798382 0.937245 -vt 0.348381 0.851077 -vt 0.345620 0.853551 -vt 0.344399 0.857052 -vt 0.792155 0.967307 -vt 0.814354 0.976646 -vt 0.805897 0.976646 -vt 0.345808 0.864092 -vt 0.348281 0.866853 -vt 0.351782 0.868074 -vt 0.828444 0.943471 -vt 0.792401 0.943225 -vt 0.362805 0.860691 -vt 0.363008 0.856989 -vt 0.822218 0.973533 -vt 0.798136 0.973287 -vt 0.358822 0.866665 -vt 0.361584 0.864192 -vt 0.822464 0.937491 -vt 0.351720 0.849465 -vt 0.355484 0.868277 -vt 0.344196 0.860753 -vt 0.359100 0.862536 -vt 0.356785 0.863624 -vt 0.353602 0.858871 -vt 0.359213 0.859981 -vt 0.360081 0.857575 -vt 0.358354 0.855688 -vt 0.357267 0.853373 -vt 0.354711 0.853260 -vt 0.352305 0.852392 -vt 0.350419 0.854119 -vt 0.348103 0.855206 -vt 0.347990 0.857762 -vt 0.347122 0.860168 -vt 0.348849 0.862054 -vt 0.349937 0.864370 -vt 0.352492 0.864483 -vt 0.354898 0.865351 -vt 0.595143 0.241809 -vt 0.595200 0.260309 -vt 0.576217 0.260583 -vt 0.576027 0.241907 -vt 0.576184 0.218840 -vt 0.595267 0.219087 -vt 0.614024 0.219149 -vt 0.614024 0.241757 -vt 0.614024 0.260227 -vt 0.604250 0.066059 -vt 0.601463 0.091693 -vt 0.588838 0.089658 -vt 0.594489 0.064090 -vt 0.600375 0.042567 -vt 0.607053 0.044992 -vt 0.614034 0.044757 -vt 0.614032 0.066716 -vt 0.614030 0.092385 -vt 0.599029 0.120425 -vt 0.597105 0.152074 -vt 0.579942 0.150651 -vt 0.583875 0.118578 -vt 0.614029 0.121061 -vt 0.614027 0.152576 -vt 0.595791 0.186983 -vt 0.577270 0.186160 -vt 0.614025 0.187274 -vt 0.556425 0.242146 -vt 0.556448 0.218447 -vt 0.556911 0.261155 -vt 0.584859 0.060774 -vt 0.593430 0.040541 -vt 0.576115 0.086196 -vt 0.568417 0.115434 -vt 0.562295 0.148248 -vt 0.558185 0.184777 -vt 0.618668 0.029646 -vt 0.622166 0.025195 -vt 0.627694 0.042569 -vt 0.621015 0.044994 -vt 0.614036 0.026643 -vt 0.951042 0.583989 -vt 0.950466 0.611576 -vt 0.939226 0.605834 -vt 0.940001 0.578968 -vt 0.940146 0.555736 -vt 0.951389 0.559401 -vt 0.944379 0.769685 -vt 0.943922 0.788299 -vt 0.930930 0.790651 -vt 0.931979 0.769083 -vt 0.933342 0.743736 -vt 0.945828 0.746419 -vt 0.951908 0.536892 -vt 0.939992 0.534261 -vt 0.939547 0.511560 -vt 0.951908 0.514508 -vt 0.947478 0.712894 -vt 0.935147 0.708541 -vt 0.936645 0.670457 -vt 0.948493 0.675985 -vt 0.949584 0.642332 -vt 0.938018 0.636484 -vt 0.190693 0.501950 -vt 0.193056 0.525548 -vt 0.182430 0.526070 -vt 0.182572 0.502443 -vt 0.182699 0.481262 -vt 0.188401 0.481772 -vt 0.194949 0.478866 -vt 0.199999 0.499724 -vt 0.204982 0.523370 -vt 0.195135 0.552416 -vt 0.196731 0.582251 -vt 0.182094 0.582583 -vt 0.182270 0.552884 -vt 0.209430 0.550523 -vt 0.212927 0.580888 -vt 0.197650 0.615200 -vt 0.197056 0.643645 -vt 0.181739 0.643481 -vt 0.181901 0.615334 -vt 0.215114 0.614607 -vt 0.214325 0.648756 -vt 0.236834 0.668744 -vt 0.236160 0.687373 -vt 0.217272 0.686502 -vt 0.217855 0.669460 -vt 0.237059 0.645664 -vt 0.211641 0.495055 -vt 0.219530 0.518914 -vt 0.203823 0.475514 -vt 0.226636 0.546710 -vt 0.232309 0.578151 -vt 0.235861 0.613244 -vt 0.179070 0.465010 -vt 0.182818 0.461433 -vt 0.176991 0.481704 -vt 0.170479 0.478720 -vt 0.175520 0.459689 -vt 0.929296 0.530303 -vt 0.929319 0.502410 -vt 0.929054 0.554717 -vt 0.928350 0.578502 -vt 0.927309 0.605263 -vt 0.917145 0.812207 -vt 0.918667 0.789874 -vt 0.929557 0.813016 -vt 0.928119 0.835541 -vt 0.915666 0.834733 -vt 0.926120 0.635895 -vt 0.924773 0.669865 -vt 0.766403 0.073521 -vt 0.750620 0.078401 -vt 0.747408 0.066970 -vt 0.764009 0.061795 -vt 0.781243 0.060025 -vt 0.781243 0.071996 -vt 0.923153 0.707943 -vt 0.921647 0.743031 -vt 0.714321 0.097357 -vt 0.697108 0.083926 -vt 0.705152 0.074735 -vt 0.717374 0.085531 -vt 0.732946 0.086957 -vt 0.732076 0.075427 -vt 0.595369 0.279277 -vt 0.595563 0.298665 -vt 0.577120 0.299016 -vt 0.576627 0.279645 -vt 0.614024 0.279172 -vt 0.614024 0.298603 -vt 0.007324 0.572595 -vt 0.007034 0.606218 -vt 0.026955 0.601245 -vt 0.027140 0.567249 -vt 0.897673 0.804349 -vt 0.898827 0.785761 -vt 0.557692 0.280388 -vt 0.558618 0.299784 -vt 0.942873 0.807079 -vt 0.941684 0.825866 -vt 0.235359 0.706138 -vt 0.216653 0.703858 -vt 0.004451 0.736600 -vt 0.004099 0.755212 -vt 0.023473 0.766362 -vt 0.024184 0.743793 -vt 0.902728 0.710826 -vt 0.901475 0.744110 -vt 0.920227 0.768301 -vt 0.632905 0.241810 -vt 0.652020 0.241908 -vt 0.651830 0.260584 -vt 0.632847 0.260309 -vt 0.632782 0.219088 -vt 0.651864 0.218842 -vt 0.623815 0.066061 -vt 0.633576 0.064093 -vt 0.639223 0.089662 -vt 0.626598 0.091695 -vt 0.629028 0.120427 -vt 0.644182 0.118582 -vt 0.648111 0.150655 -vt 0.630949 0.152076 -vt 0.632259 0.186984 -vt 0.650780 0.186163 -vt 0.671622 0.242148 -vt 0.671135 0.261156 -vt 0.671599 0.218450 -vt 0.127429 0.705558 -vt 0.128052 0.724431 -vt 0.105747 0.725638 -vt 0.104620 0.706645 -vt 0.643206 0.060778 -vt 0.651947 0.086202 -vt 0.634638 0.040545 -vt 0.906131 0.640561 -vt 0.904695 0.674155 -vt 0.659640 0.115440 -vt 0.665759 0.148253 -vt 0.910330 0.532930 -vt 0.910101 0.557538 -vt 0.669865 0.184781 -vt 0.050261 0.514526 -vt 0.039057 0.509890 -vt 0.039206 0.536761 -vt 0.050635 0.542112 -vt 0.007829 0.464917 -vt 0.008447 0.489508 -vt 0.027285 0.486037 -vt 0.026684 0.461639 -vt 0.049760 0.489947 -vt 0.038401 0.486673 -vt 0.049961 0.700356 -vt 0.037544 0.700176 -vt 0.037230 0.721773 -vt 0.050138 0.718980 -vt 0.050615 0.677048 -vt 0.038042 0.674792 -vt 0.049502 0.467441 -vt 0.037507 0.465224 -vt 0.048729 0.445079 -vt 0.036279 0.442561 -vt 0.051120 0.643479 -vt 0.038645 0.639548 -vt 0.234538 0.724972 -vt 0.214066 0.723869 -vt 0.050873 0.606551 -vt 0.038841 0.601431 -vt 0.050810 0.572878 -vt 0.039050 0.567431 -vt 0.006319 0.642938 -vt 0.006199 0.676252 -vt 0.026327 0.674485 -vt 0.026636 0.639360 -vt 0.909026 0.582590 -vt 0.174457 0.501853 -vt 0.171812 0.525421 -vt 0.159912 0.523100 -vt 0.165178 0.499516 -vt 0.169411 0.552263 -vt 0.167461 0.582077 -vt 0.151281 0.580522 -vt 0.155139 0.550199 -vt 0.166153 0.615014 -vt 0.166409 0.643460 -vt 0.149088 0.648372 -vt 0.148696 0.614216 -vt 0.126355 0.668113 -vt 0.145333 0.669037 -vt 0.145744 0.686085 -vt 0.126828 0.686761 -vt 0.126389 0.645023 -vt 0.153593 0.494706 -vt 0.145417 0.518469 -vt 0.907523 0.609934 -vt 0.161645 0.475261 -vt 0.137979 0.546180 -vt 0.131930 0.577555 -vt 0.127963 0.612610 -vt 0.609402 0.029645 -vt 0.605905 0.025194 -vt 0.146178 0.703470 -vt 0.148575 0.723540 -vt 0.900522 0.767266 -vt 0.025745 0.433773 -vt 0.007525 0.439552 -vt 0.258124 0.707470 -vt 0.256792 0.726419 -vt 0.006035 0.699432 -vt 0.025769 0.699795 -vt 0.027399 0.509825 -vt 0.027279 0.536599 -vt 0.036620 0.744179 -vt 0.024944 0.721415 -vt 0.035950 0.766747 -vt 0.796084 0.073520 -vt 0.798477 0.061793 -vt 0.815080 0.066968 -vt 0.811869 0.078401 -vt 0.848176 0.097357 -vt 0.845121 0.085528 -vt 0.857344 0.074728 -vt 0.865392 0.083920 -vt 0.008234 0.514573 -vt 0.007668 0.541944 -vt 0.829546 0.086956 -vt 0.830414 0.075425 -vt 0.632678 0.279278 -vt 0.651420 0.279645 -vt 0.650927 0.299016 -vt 0.632484 0.298665 -vt 0.670354 0.280389 -vt 0.669428 0.299784 -vt 0.049730 0.737790 -vt 0.049181 0.756611 -vt 0.004971 0.717979 -vt 0.896688 0.822932 -vt 0.186523 0.465055 -vt 0.190136 0.459777 -vt 0.627511 0.026445 -vt 0.910902 0.507559 -vt 0.600561 0.026443 -vt 0.168833 0.460284 -vt 0.196816 0.460452 -vt 0.356508 0.878102 -vt 0.361694 0.880155 -vt 0.358427 0.885130 -vt 0.355396 0.883930 -vt 0.352137 0.883930 -vt 0.350930 0.878102 -vt 0.735463 0.815259 -vt 0.735367 0.811743 -vt 0.762172 0.811751 -vt 0.762350 0.815260 -vt 0.365638 0.884099 -vt 0.367854 0.889218 -vt 0.362025 0.890425 -vt 0.360731 0.887434 -vt 0.762899 0.818791 -vt 0.735562 0.818786 -vt 0.367853 0.894796 -vt 0.365800 0.899982 -vt 0.360825 0.896714 -vt 0.362025 0.893684 -vt 0.735897 0.829913 -vt 0.766674 0.830018 -vt 0.768185 0.834103 -vt 0.736026 0.833947 -vt 0.691883 0.748465 -vt 0.711024 0.769126 -vt 0.689120 0.796235 -vt 0.670643 0.771852 -vt 0.705133 0.718480 -vt 0.725770 0.734546 -vt 0.685391 0.631928 -vt 0.664511 0.610555 -vt 0.690032 0.618037 -vt 0.710935 0.636289 -vt 0.643975 0.784714 -vt 0.662938 0.811701 -vt 0.636369 0.811701 -vt 0.614157 0.792186 -vt 0.367847 0.587001 -vt 0.367847 0.601413 -vt 0.357015 0.601413 -vt 0.357015 0.587001 -vt 0.707993 0.686076 -vt 0.701052 0.655923 -vt 0.725069 0.662943 -vt 0.730389 0.697300 -vt 0.746007 0.578845 -vt 0.749266 0.578845 -vt 0.749265 0.601209 -vt 0.746006 0.601209 -vt 0.742747 0.601209 -vt 0.742748 0.578845 -vt 0.721980 0.420557 -vt 0.741189 0.412375 -vt 0.751644 0.438007 -vt 0.731987 0.449323 -vt 0.726453 0.578845 -vt 0.729712 0.578845 -vt 0.729712 0.601209 -vt 0.726453 0.601209 -vt 0.723194 0.601209 -vt 0.723194 0.578845 -vt 0.713417 0.578844 -vt 0.716676 0.578844 -vt 0.716676 0.601209 -vt 0.713417 0.601209 -vt 0.710158 0.601209 -vt 0.710158 0.578844 -vt 0.700381 0.578844 -vt 0.703640 0.578844 -vt 0.703640 0.601209 -vt 0.700381 0.601209 -vt 0.697122 0.601209 -vt 0.697122 0.578845 -vt 0.750815 0.470683 -vt 0.771206 0.457249 -vt 0.802585 0.472754 -vt 0.774443 0.488347 -vt 0.719935 0.578844 -vt 0.719935 0.601209 -vt 0.619982 0.731423 -vt 0.615725 0.716103 -vt 0.629090 0.711152 -vt 0.637544 0.725347 -vt 0.646823 0.740612 -vt 0.622780 0.749423 -vt 0.596841 0.748597 -vt 0.601213 0.730806 -vt 0.604120 0.719269 -vt 0.651016 0.712811 -vt 0.639812 0.701930 -vt 0.648030 0.693529 -vt 0.659153 0.696482 -vt 0.676092 0.700888 -vt 0.665292 0.723411 -vt 0.660138 0.678370 -vt 0.645127 0.682169 -vt 0.640548 0.668915 -vt 0.654798 0.661081 -vt 0.670085 0.652800 -vt 0.677508 0.676212 -vt 0.643050 0.647151 -vt 0.631684 0.657946 -vt 0.623439 0.649331 -vt 0.626897 0.638050 -vt 0.632430 0.620716 -vt 0.654461 0.633558 -vt 0.608178 0.636398 -vt 0.611742 0.652012 -vt 0.598761 0.654885 -vt 0.591159 0.639841 -vt 0.582839 0.622975 -vt 0.606438 0.618022 -vt 0.562508 0.679641 -vt 0.564139 0.670436 -vt 0.580513 0.674997 -vt 0.578272 0.682279 -vt 0.574023 0.688327 -vt 0.562720 0.689357 -vt 0.543715 0.691246 -vt 0.543521 0.677921 -vt 0.545839 0.665331 -vt 0.632958 0.689463 -vt 0.621170 0.697594 -vt 0.611209 0.683508 -vt 0.626936 0.676508 -vt 0.618938 0.664563 -vt 0.605926 0.668260 -vt 0.608125 0.703790 -vt 0.598830 0.693892 -vt 0.595429 0.710876 -vt 0.585761 0.701675 -vt 0.584245 0.722442 -vt 0.573173 0.737276 -vt 0.555553 0.720757 -vt 0.571437 0.710635 -vt 0.357016 0.573112 -vt 0.367848 0.573112 -vt 0.705347 0.883202 -vt 0.705331 0.895891 -vt 0.680398 0.895857 -vt 0.680414 0.883171 -vt 0.680426 0.869264 -vt 0.705364 0.869291 -vt 0.730300 0.869322 -vt 0.730283 0.883232 -vt 0.730268 0.895922 -vt 0.535917 0.677517 -vt 0.538560 0.663300 -vt 0.891709 0.394961 -vt 0.890018 0.409936 -vt 0.882774 0.408743 -vt 0.883726 0.395400 -vt 0.881770 0.381182 -vt 0.889633 0.378736 -vt 0.066158 0.459928 -vt 0.062788 0.433701 -vt 0.073621 0.433696 -vt 0.076991 0.459924 -vt 0.077001 0.488426 -vt 0.066169 0.488430 -vt 0.066181 0.521106 -vt 0.077013 0.521102 -vt 0.077024 0.556246 -vt 0.066192 0.556249 -vt 0.066199 0.591391 -vt 0.077031 0.591389 -vt 0.077034 0.624063 -vt 0.066203 0.624064 -vt 0.066203 0.652561 -vt 0.077034 0.652561 -vt 0.073674 0.677196 -vt 0.062843 0.677196 -vt 0.607256 0.609703 -vt 0.636906 0.609007 -vt 0.773382 0.319912 -vt 0.791301 0.325960 -vt 0.767803 0.338415 -vt 0.749890 0.334901 -vt 0.580362 0.615296 -vt 0.682759 0.651664 -vt 0.666025 0.629966 -vt 0.690678 0.678294 -vt 0.688997 0.706673 -vt 0.367847 0.616996 -vt 0.357015 0.616996 -vt 0.536102 0.692593 -vt 0.629841 0.763575 -vt 0.593258 0.765836 -vt 0.656421 0.753010 -vt 0.850461 0.331832 -vt 0.871646 0.347060 -vt 0.866456 0.352884 -vt 0.847877 0.339388 -vt 0.824469 0.331241 -vt 0.825224 0.319243 -vt 0.543660 0.649769 -vt 0.550374 0.653361 -vt 0.562839 0.625005 -vt 0.567387 0.631524 -vt 0.551625 0.636971 -vt 0.557438 0.642065 -vt 0.732971 0.578845 -vt 0.736230 0.578845 -vt 0.736229 0.601209 -vt 0.732971 0.601209 -vt 0.367848 0.635895 -vt 0.357016 0.635895 -vt 0.354420 0.432574 -vt 0.364496 0.456713 -vt 0.353664 0.456712 -vt 0.343587 0.432574 -vt 0.706899 0.578844 -vt 0.706899 0.601209 -vt 0.071260 0.814372 -vt 0.069698 0.822564 -vt 0.066668 0.821364 -vt 0.072957 0.822564 -vt 0.739489 0.578845 -vt 0.739489 0.601209 -vt 0.064363 0.819060 -vt 0.063069 0.816069 -vt 0.735661 0.855189 -vt 0.735860 0.851078 -vt 0.768314 0.851275 -vt 0.767094 0.855383 -vt 0.736162 0.838161 -vt 0.769297 0.838353 -vt 0.769737 0.842696 -vt 0.736304 0.842502 -vt 0.735777 0.826066 -vt 0.765126 0.826122 -vt 0.063069 0.812810 -vt 0.064269 0.809780 -vt 0.735478 0.808230 -vt 0.735591 0.804702 -vt 0.762921 0.804706 -vt 0.762406 0.808236 -vt 0.735711 0.801121 -vt 0.763731 0.801124 -vt 0.066573 0.807475 -vt 0.069564 0.806181 -vt 0.072823 0.806181 -vt 0.075853 0.807381 -vt 0.078158 0.809685 -vt 0.079452 0.812676 -vt 0.973202 0.899362 -vt 0.969867 0.894455 -vt 0.972172 0.892151 -vt 0.977147 0.895418 -vt 0.765814 0.859349 -vt 0.735483 0.859158 -vt 0.951161 0.884883 -vt 0.956989 0.885995 -vt 0.956989 0.889254 -vt 0.951160 0.890461 -vt 0.079452 0.815935 -vt 0.078252 0.818965 -vt 0.962506 0.901577 -vt 0.963617 0.895749 -vt 0.966876 0.895749 -vt 0.968083 0.901578 -vt 0.075948 0.821270 -vt 0.979200 0.890232 -vt 0.973372 0.889120 -vt 0.973372 0.885861 -vt 0.979200 0.884654 -vt 0.960493 0.913679 -vt 0.958188 0.915983 -vt 0.953214 0.912715 -vt 0.957158 0.908772 -vt 0.962277 0.906556 -vt 0.963484 0.912384 -vt 0.345490 0.787838 -vt 0.367854 0.787838 -vt 0.367854 0.791097 -vt 0.345490 0.791097 -vt 0.967854 0.873538 -vt 0.966743 0.879366 -vt 0.963484 0.879366 -vt 0.962277 0.873538 -vt 0.765409 0.764585 -vt 0.765409 0.770163 -vt 0.735368 0.770162 -vt 0.735368 0.764585 -vt 0.735368 0.759007 -vt 0.765409 0.759007 -vt 0.963617 0.928767 -vt 0.966876 0.928767 -vt 0.968083 0.934596 -vt 0.962506 0.934595 -vt 0.957320 0.932542 -vt 0.960587 0.927568 -vt 0.345490 0.781320 -vt 0.345490 0.778061 -vt 0.367853 0.778061 -vt 0.367854 0.781320 -vt 0.765409 0.753429 -vt 0.735368 0.753429 -vt 0.735368 0.747852 -vt 0.765409 0.747852 -vt 0.972077 0.915888 -vt 0.969773 0.913584 -vt 0.973040 0.908609 -vt 0.976984 0.912553 -vt 0.979200 0.917672 -vt 0.973372 0.918879 -vt 0.345490 0.768284 -vt 0.345489 0.765025 -vt 0.367854 0.765025 -vt 0.367854 0.768284 -vt 0.345489 0.755248 -vt 0.345489 0.751989 -vt 0.367854 0.751989 -vt 0.367854 0.755248 -vt 0.765409 0.742274 -vt 0.735368 0.742274 -vt 0.735368 0.736696 -vt 0.765409 0.736696 -vt 0.969867 0.927473 -vt 0.972172 0.925168 -vt 0.977147 0.928436 -vt 0.973202 0.932380 -vt 0.345490 0.800874 -vt 0.345490 0.797615 -vt 0.367854 0.797615 -vt 0.367854 0.800874 -vt 0.765409 0.731119 -vt 0.735368 0.731119 -vt 0.735367 0.725541 -vt 0.765409 0.725541 -vt 0.958283 0.925263 -vt 0.953376 0.928598 -vt 0.951160 0.923479 -vt 0.956989 0.922272 -vt 0.367854 0.804133 -vt 0.345490 0.804133 -vt 0.345489 0.761766 -vt 0.367854 0.761766 -vt 0.765409 0.719963 -vt 0.735367 0.719963 -vt 0.735367 0.714385 -vt 0.765409 0.714385 -vt 0.956989 0.919013 -vt 0.951161 0.917901 -vt 0.345489 0.784579 -vt 0.367854 0.784579 -vt 0.765409 0.708808 -vt 0.735367 0.708808 -vt 0.735367 0.703230 -vt 0.765409 0.703230 -vt 0.966743 0.912384 -vt 0.967854 0.906556 -vt 0.345490 0.794356 -vt 0.367854 0.794356 -vt 0.765409 0.786896 -vt 0.765409 0.792474 -vt 0.735367 0.792473 -vt 0.735367 0.786896 -vt 0.735367 0.781318 -vt 0.765409 0.781318 -vt 0.973372 0.922138 -vt 0.979200 0.923250 -vt 0.345489 0.758507 -vt 0.367854 0.758507 -vt 0.765409 0.775740 -vt 0.735367 0.775740 -vt 0.367853 0.771543 -vt 0.345490 0.771543 -vt 0.953376 0.895580 -vt 0.958283 0.892245 -vt 0.345490 0.774802 -vt 0.367853 0.774802 -vt 0.957319 0.899524 -vt 0.960587 0.894549 -vt 0.957158 0.875753 -vt 0.960493 0.880661 -vt 0.973040 0.875591 -vt 0.969773 0.880566 -vt 0.976984 0.879535 -vt 0.972077 0.882870 -vt 0.953214 0.879697 -vt 0.958188 0.882965 -vt 0.071260 0.793011 -vt 0.072823 0.784819 -vt 0.075853 0.786019 -vt 0.069564 0.784819 -vt 0.078158 0.788323 -vt 0.079452 0.791314 -vt 0.079452 0.794573 -vt 0.078252 0.797603 -vt 0.075948 0.799908 -vt 0.072957 0.801202 -vt 0.069698 0.801202 -vt 0.066668 0.800003 -vt 0.064363 0.797698 -vt 0.063069 0.794707 -vt 0.063069 0.791448 -vt 0.064269 0.788418 -vt 0.066573 0.786114 -vt 0.585279 0.902962 -vt 0.584938 0.896332 -vt 0.592905 0.896926 -vt 0.593579 0.900067 -vt 0.610342 0.909625 -vt 0.601797 0.909938 -vt 0.601560 0.905137 -vt 0.604949 0.904484 -vt 0.595414 0.902747 -vt 0.587738 0.907666 -vt 0.585275 0.888497 -vt 0.593573 0.893785 -vt 0.619928 0.888540 -vt 0.620277 0.896329 -vt 0.610569 0.896919 -vt 0.609840 0.893792 -vt 0.593779 0.879391 -vt 0.601795 0.879090 -vt 0.601554 0.888688 -vt 0.598217 0.889333 -vt 0.607879 0.902722 -vt 0.617197 0.907628 -vt 0.607887 0.891108 -vt 0.617215 0.882017 -vt 0.593790 0.909646 -vt 0.598229 0.904501 -vt 0.655460 0.906047 -vt 0.655422 0.915070 -vt 0.632530 0.914928 -vt 0.633499 0.905216 -vt 0.633626 0.895919 -vt 0.655492 0.895816 -vt 0.680381 0.906102 -vt 0.680364 0.915127 -vt 0.705318 0.906138 -vt 0.705306 0.915164 -vt 0.730256 0.906169 -vt 0.730245 0.915195 -vt 0.755194 0.906197 -vt 0.755184 0.915223 -vt 0.755206 0.895951 -vt 0.780142 0.895979 -vt 0.780130 0.906226 -vt 0.780120 0.915251 -vt 0.398621 0.906188 -vt 0.398631 0.915224 -vt 0.373665 0.915251 -vt 0.373655 0.906215 -vt 0.373644 0.895957 -vt 0.398609 0.895930 -vt 0.423574 0.895902 -vt 0.423586 0.906160 -vt 0.423596 0.915196 -vt 0.448551 0.906132 -vt 0.448562 0.915167 -vt 0.448538 0.895874 -vt 0.473497 0.895844 -vt 0.473512 0.906099 -vt 0.473529 0.915133 -vt 0.498458 0.906047 -vt 0.498495 0.915078 -vt 0.498427 0.895807 -vt 0.520312 0.895913 -vt 0.520439 0.905218 -vt 0.521408 0.914937 -vt 0.568684 0.902962 -vt 0.560382 0.900066 -vt 0.561056 0.896925 -vt 0.569025 0.896331 -vt 0.576982 0.896034 -vt 0.576981 0.904419 -vt 0.576982 0.914870 -vt 0.566225 0.907667 -vt 0.558546 0.902748 -vt 0.560172 0.909649 -vt 0.564675 0.914838 -vt 0.551921 0.914799 -vt 0.552162 0.909942 -vt 0.552399 0.905138 -vt 0.555731 0.904503 -vt 0.543612 0.909630 -vt 0.538127 0.914811 -vt 0.536753 0.907632 -vt 0.546076 0.902723 -vt 0.549008 0.904486 -vt 0.869899 0.445442 -vt 0.854935 0.455073 -vt 0.852084 0.448279 -vt 0.865421 0.439833 -vt 0.874218 0.429621 -vt 0.879560 0.434003 -vt 0.830939 0.463150 -vt 0.805889 0.456306 -vt 0.830706 0.455304 -vt 0.534036 0.902909 -vt 0.533672 0.896325 -vt 0.543385 0.896917 -vt 0.544121 0.900047 -vt 0.619912 0.902908 -vt 0.609833 0.900047 -vt 0.595401 0.891098 -vt 0.587732 0.881987 -vt 0.610354 0.879405 -vt 0.604950 0.889341 -vt 0.565026 0.699616 -vt 0.579711 0.693619 -vt 0.546766 0.705423 -vt 0.345811 0.880317 -vt 0.349146 0.885224 -vt 0.346842 0.887529 -vt 0.341867 0.884261 -vt 0.339814 0.889447 -vt 0.345642 0.890559 -vt 0.345642 0.893818 -vt 0.339814 0.895025 -vt 0.736076 0.846836 -vt 0.769246 0.847033 -vt 0.342029 0.900144 -vt 0.346937 0.896809 -vt 0.349241 0.899113 -vt 0.345973 0.904088 -vt 0.735842 0.797452 -vt 0.764767 0.797452 -vt 0.351159 0.906141 -vt 0.352271 0.900313 -vt 0.355530 0.900313 -vt 0.356737 0.906141 -vt 0.735666 0.822371 -vt 0.763846 0.822394 -vt 0.361856 0.903926 -vt 0.358521 0.899019 -vt 0.969725 0.471750 -vt 0.968878 0.475425 -vt 0.940809 0.475298 -vt 0.940948 0.471622 -vt 0.941100 0.467854 -vt 0.970807 0.467984 -vt 0.958283 0.859227 -vt 0.953375 0.862562 -vt 0.951160 0.857443 -vt 0.956989 0.856236 -vt 0.972052 0.464098 -vt 0.941267 0.463966 -vt 0.941453 0.459940 -vt 0.973240 0.460072 -vt 0.969867 0.861437 -vt 0.972172 0.859132 -vt 0.977147 0.862400 -vt 0.973202 0.866344 -vt 0.974144 0.455915 -vt 0.941657 0.455785 -vt 0.941873 0.451539 -vt 0.974617 0.451666 -vt 0.973372 0.856102 -vt 0.979200 0.857214 -vt 0.974179 0.447413 -vt 0.941725 0.447288 -vt 0.941584 0.443161 -vt 0.973082 0.443253 -vt 0.972077 0.849852 -vt 0.976984 0.846517 -vt 0.979200 0.851636 -vt 0.973372 0.852843 -vt 0.971594 0.439255 -vt 0.941450 0.439210 -vt 0.941325 0.435442 -vt 0.970070 0.435443 -vt 0.969773 0.847548 -vt 0.973040 0.842573 -vt 0.969748 0.493597 -vt 0.971047 0.497431 -vt 0.940904 0.497241 -vt 0.940806 0.493446 -vt 0.940716 0.489763 -vt 0.968792 0.489891 -vt 0.960493 0.847643 -vt 0.957158 0.842735 -vt 0.962277 0.840520 -vt 0.963484 0.846348 -vt 0.968244 0.486262 -vt 0.940630 0.486141 -vt 0.940547 0.482529 -vt 0.968077 0.482657 -vt 0.966743 0.846348 -vt 0.967854 0.840520 -vt 0.968333 0.479049 -vt 0.940677 0.478922 -vt 0.958188 0.849947 -vt 0.953214 0.846679 -vt 0.589515 0.686867 -vt 0.594604 0.678913 -vt 0.567505 0.661715 -vt 0.582355 0.667605 -vt 0.572710 0.653515 -vt 0.581844 0.660237 -vt 0.956989 0.852977 -vt 0.951161 0.851865 -vt 0.589289 0.914836 -vt 0.960587 0.861531 -vt 0.957319 0.866506 -vt 0.602039 0.914793 -vt 0.615825 0.914802 -vt 0.676943 0.732802 -vt 0.367848 0.559222 -vt 0.357016 0.559222 -vt 0.367854 0.484464 -vt 0.357021 0.484463 -vt 0.963617 0.862731 -vt 0.962505 0.868559 -vt 0.579987 0.645937 -vt 0.589439 0.658650 -vt 0.655500 0.883148 -vt 0.633539 0.884507 -vt 0.632591 0.869304 -vt 0.655488 0.869251 -vt 0.755220 0.883262 -vt 0.755237 0.869352 -vt 0.780173 0.869381 -vt 0.780157 0.883291 -vt 0.398595 0.883226 -vt 0.373630 0.883253 -vt 0.373615 0.869327 -vt 0.398580 0.869300 -vt 0.423545 0.869273 -vt 0.423560 0.883199 -vt 0.448524 0.883171 -vt 0.448510 0.869246 -vt 0.473475 0.869223 -vt 0.473483 0.883145 -vt 0.498422 0.883127 -vt 0.498437 0.869217 -vt 0.521355 0.869277 -vt 0.520402 0.884492 -vt 0.568689 0.888496 -vt 0.576983 0.885842 -vt 0.560389 0.893783 -vt 0.558560 0.891094 -vt 0.566234 0.881983 -vt 0.576986 0.869343 -vt 0.560186 0.879385 -vt 0.552168 0.879081 -vt 0.551928 0.869376 -vt 0.564692 0.869362 -vt 0.555744 0.889329 -vt 0.552406 0.888683 -vt 0.543604 0.879393 -vt 0.536738 0.882005 -vt 0.538114 0.869365 -vt 0.549008 0.889335 -vt 0.546069 0.891103 -vt 0.534022 0.888531 -vt 0.544115 0.893788 -vt 0.966876 0.862731 -vt 0.968083 0.868559 -vt 0.589279 0.869368 -vt 0.602039 0.869390 -vt 0.615845 0.869385 -vt 0.721681 0.388858 -vt 0.740538 0.384649 -vt 0.569530 0.744814 -vt 0.549444 0.726039 -vt 0.367850 0.529226 -vt 0.357018 0.529225 -vt 0.357019 0.510324 -vt 0.367852 0.510325 -vt 0.800104 0.333791 -vt 0.778590 0.344478 -vt 0.357017 0.544809 -vt 0.367849 0.544810 -vt 0.750202 0.358870 -vt 0.762726 0.362247 -vt 0.754190 0.384536 -vt 0.731772 0.358945 -vt 0.886039 0.422574 -vt 0.879863 0.419736 -vt 0.755075 0.408537 -vt 0.764810 0.430719 -vt 0.539494 0.708642 -vt 0.354416 0.721240 -vt 0.343586 0.721241 -vt 0.353661 0.691397 -vt 0.364492 0.691396 -vt 0.782761 0.447360 -vt 0.883602 0.362476 -vt 0.876649 0.366634 -vt 0.748977 0.313514 -vt 0.774873 0.305766 -vt 0.800420 0.309491 -vt 0.725725 0.331591 -vt 0.707420 0.360164 -vt 0.697122 0.395216 -vt 0.697122 0.431673 -vt 0.706437 0.464042 -vt 0.723930 0.487555 -vt 0.747523 0.497431 -vt 0.367849 0.661753 -vt 0.357018 0.661754 -vt 0.333510 0.409213 -vt 0.344343 0.409214 -vt 0.344341 0.747010 -vt 0.333510 0.747010 -vt 0.594343 0.669479 -vt 0.488054 0.064568 -vt 0.519531 0.070623 -vt 0.514182 0.114600 -vt 0.482266 0.111528 -vt 0.453203 0.109265 -vt 0.458011 0.059500 -vt 0.465187 0.002489 -vt 0.499742 0.016083 -vt 0.530938 0.027700 -vt 0.479651 0.157721 -vt 0.510751 0.158900 -vt 0.510836 0.203362 -vt 0.478966 0.203362 -vt 0.450650 0.203362 -vt 0.451510 0.156808 -vt 0.424670 0.250499 -vt 0.451510 0.249915 -vt 0.453203 0.297459 -vt 0.425445 0.298793 -vt 0.398344 0.299146 -vt 0.398344 0.250729 -vt 0.398344 0.203362 -vt 0.424076 0.203362 -vt 0.479651 0.249002 -vt 0.510751 0.247823 -vt 0.514182 0.292123 -vt 0.482266 0.295196 -vt 0.428123 0.350235 -vt 0.458011 0.347223 -vt 0.465187 0.404234 -vt 0.429598 0.399126 -vt 0.398343 0.400611 -vt 0.398343 0.351542 -vt 0.488054 0.342156 -vt 0.519531 0.336100 -vt 0.530938 0.379023 -vt 0.499742 0.390640 -vt 0.033699 0.803371 -vt 0.018929 0.777837 -vt 0.030877 0.771803 -vt 0.046296 0.799200 -vt 0.057809 0.839861 -vt 0.044926 0.840969 -vt 0.219016 0.079282 -vt 0.249873 0.085020 -vt 0.244872 0.128130 -vt 0.213443 0.125365 -vt 0.188373 0.123840 -vt 0.192895 0.076990 -vt 0.194808 0.022649 -vt 0.230136 0.031711 -vt 0.260769 0.042882 -vt 0.915309 0.269219 -vt 0.926535 0.231621 -vt 0.939419 0.232729 -vt 0.927906 0.273391 -vt 0.912488 0.300788 -vt 0.900539 0.294754 -vt 0.211441 0.170762 -vt 0.242073 0.171714 -vt 0.242380 0.215952 -vt 0.210799 0.215926 -vt 0.185977 0.215919 -vt 0.186691 0.169965 -vt 0.912794 0.018771 -vt 0.899853 0.017526 -vt 0.899853 0.004061 -vt 0.914015 0.005362 -vt 0.929335 0.007740 -vt 0.927011 0.020923 -vt 0.211376 0.261049 -vt 0.241979 0.260176 -vt 0.244639 0.303737 -vt 0.213241 0.306393 -vt 0.188211 0.307839 -vt 0.186672 0.261791 -vt 0.921467 0.185661 -vt 0.900539 0.141347 -vt 0.910615 0.133832 -vt 0.933587 0.182476 -vt 0.218644 0.352409 -vt 0.249455 0.346809 -vt 0.260131 0.388880 -vt 0.229526 0.399880 -vt 0.194257 0.408731 -vt 0.192591 0.354601 -vt 0.344521 0.943738 -vt 0.375806 0.943737 -vt 0.375807 0.951113 -vt 0.344522 0.951115 -vt 0.313234 0.951116 -vt 0.313234 0.943739 -vt 0.730102 0.246574 -vt 0.752232 0.268704 -vt 0.740702 0.286256 -vt 0.712788 0.258342 -vt 0.717672 0.186558 -vt 0.717673 0.217853 -vt 0.697108 0.222112 -vt 0.697108 0.182635 -vt 0.156732 0.943748 -vt 0.188044 0.943744 -vt 0.188045 0.951126 -vt 0.156733 0.951131 -vt 0.125419 0.951137 -vt 0.125418 0.943754 -vt 0.281944 0.943740 -vt 0.281944 0.951118 -vt 0.250649 0.951119 -vt 0.250649 0.943740 -vt 0.841347 0.267794 -vt 0.853114 0.285108 -vt 0.816885 0.300788 -vt 0.812626 0.280223 -vt 0.751322 0.135330 -vt 0.729192 0.157459 -vt 0.711640 0.145930 -vt 0.739554 0.118015 -vt 0.781330 0.280223 -vt 0.777408 0.300788 -vt 0.532232 0.943762 -vt 0.563519 0.943772 -vt 0.563517 0.951149 -vt 0.532230 0.951139 -vt 0.500943 0.951129 -vt 0.500946 0.943752 -vt 0.407090 0.943736 -vt 0.438373 0.943737 -vt 0.438372 0.951113 -vt 0.407090 0.951111 -vt 0.304891 0.635723 -vt 0.317875 0.635674 -vt 0.318052 0.682137 -vt 0.304937 0.682303 -vt 0.279417 0.635723 -vt 0.266432 0.635675 -vt 0.266309 0.586460 -vt 0.279405 0.586460 -vt 0.219349 0.943741 -vt 0.219350 0.951121 -vt 0.094103 0.943760 -vt 0.094104 0.951143 -vt 0.062789 0.951149 -vt 0.062788 0.943765 -vt 0.874996 0.216566 -vt 0.895560 0.220488 -vt 0.881029 0.257194 -vt 0.863476 0.245664 -vt 0.304902 0.586460 -vt 0.317998 0.586460 -vt 0.469659 0.943743 -vt 0.469657 0.951120 -vt 0.862566 0.156549 -vt 0.840437 0.134420 -vt 0.851966 0.116867 -vt 0.879881 0.144781 -vt 0.305218 0.450420 -vt 0.292155 0.450208 -vt 0.292156 0.409213 -vt 0.305565 0.409791 -vt 0.279092 0.450419 -vt 0.265748 0.450832 -vt 0.268691 0.420643 -vt 0.278747 0.409790 -vt 0.304891 0.537195 -vt 0.304937 0.490613 -vt 0.318054 0.490778 -vt 0.317876 0.537244 -vt 0.279416 0.537195 -vt 0.266431 0.537243 -vt 0.266254 0.490777 -vt 0.279371 0.490613 -vt 0.895560 0.181011 -vt 0.874996 0.185270 -vt 0.811338 0.122900 -vt 0.780043 0.122900 -vt 0.775784 0.102336 -vt 0.815261 0.102336 -vt 0.279372 0.682303 -vt 0.266256 0.682138 -vt 0.279093 0.722494 -vt 0.278748 0.763118 -vt 0.268694 0.752266 -vt 0.265751 0.722081 -vt 0.305217 0.722493 -vt 0.318560 0.722080 -vt 0.315618 0.752265 -vt 0.305564 0.763118 -vt 0.318561 0.450833 -vt 0.153911 0.401369 -vt 0.131754 0.402360 -vt 0.131601 0.386988 -vt 0.145721 0.386193 -vt 0.156184 0.374777 -vt 0.170751 0.387374 -vt 0.163361 0.426198 -vt 0.131982 0.428717 -vt 0.154231 0.029932 -vt 0.171144 0.044037 -vt 0.156507 0.056657 -vt 0.146015 0.045139 -vt 0.131919 0.044315 -vt 0.131974 0.028970 -vt 0.132115 0.002489 -vt 0.163739 0.004974 -vt 0.173847 0.080623 -vt 0.170806 0.124044 -vt 0.156521 0.125022 -vt 0.158389 0.086767 -vt 0.169655 0.169579 -vt 0.169073 0.215927 -vt 0.155362 0.215945 -vt 0.155783 0.169362 -vt 0.169687 0.262141 -vt 0.170670 0.307585 -vt 0.156404 0.306573 -vt 0.155875 0.262327 -vt 0.173622 0.350922 -vt 0.158249 0.344742 -vt 0.292154 0.490512 -vt 0.292154 0.586460 -vt 0.292154 0.537171 -vt 0.292154 0.682404 -vt 0.292154 0.635747 -vt 0.292155 0.722705 -vt 0.039857 0.886928 -vt 0.051977 0.890114 -vt 0.029004 0.938757 -vt 0.018929 0.931242 -vt 0.314429 0.913051 -vt 0.328647 0.910899 -vt 0.330970 0.924081 -vt 0.315650 0.926460 -vt 0.301488 0.927760 -vt 0.301488 0.914296 -vt 0.292156 0.763696 -vt 0.428123 0.056489 -vt 0.429598 0.007597 -vt 0.425445 0.107930 -vt 0.398344 0.107578 -vt 0.398343 0.055181 -vt 0.398343 0.006112 -vt 0.424670 0.156225 -vt 0.398344 0.155994 -vt 0.315620 0.420645 -vt 0.308632 0.064569 -vt 0.314422 0.111529 -vt 0.282506 0.114602 -vt 0.277156 0.070626 -vt 0.265748 0.027703 -vt 0.296944 0.016085 -vt 0.331498 0.002491 -vt 0.338675 0.059501 -vt 0.343485 0.109265 -vt 0.317037 0.157722 -vt 0.317723 0.203362 -vt 0.285854 0.203363 -vt 0.285938 0.158902 -vt 0.345178 0.156809 -vt 0.346039 0.203362 -vt 0.372019 0.250499 -vt 0.371243 0.298793 -vt 0.343485 0.297458 -vt 0.345179 0.249915 -vt 0.372613 0.203362 -vt 0.317038 0.249002 -vt 0.314423 0.295194 -vt 0.282508 0.292122 -vt 0.285939 0.247823 -vt 0.368564 0.350234 -vt 0.367088 0.399125 -vt 0.331499 0.404232 -vt 0.338676 0.347222 -vt 0.308633 0.342154 -vt 0.296945 0.390638 -vt 0.265749 0.379020 -vt 0.277158 0.336098 -vt 0.920798 0.362045 -vt 0.908201 0.357873 -vt 0.923620 0.330476 -vt 0.935568 0.336510 -vt 0.909572 0.399643 -vt 0.896688 0.398535 -vt 0.044192 0.078642 -vt 0.049472 0.125022 -vt 0.017869 0.127614 -vt 0.013117 0.084187 -vt 0.002491 0.041692 -vt 0.033417 0.030703 -vt 0.069067 0.021924 -vt 0.070453 0.076540 -vt 0.074631 0.123670 -vt 0.110581 0.866783 -vt 0.097984 0.870955 -vt 0.086470 0.830294 -vt 0.099354 0.829186 -vt 0.125352 0.892317 -vt 0.113404 0.898352 -vt 0.051251 0.170552 -vt 0.051817 0.215802 -vt 0.020118 0.215799 -vt 0.020518 0.171411 -vt 0.076036 0.169842 -vt 0.076704 0.215794 -vt 0.886911 0.018771 -vt 0.872694 0.020922 -vt 0.870370 0.007740 -vt 0.885690 0.005362 -vt 0.051247 0.261080 -vt 0.049423 0.306624 -vt 0.017815 0.304021 -vt 0.020497 0.260203 -vt 0.076060 0.261808 -vt 0.074570 0.307992 -vt 0.104423 0.783226 -vt 0.092303 0.780041 -vt 0.115276 0.731397 -vt 0.125352 0.738912 -vt 0.044143 0.352996 -vt 0.033426 0.400921 -vt 0.002489 0.389968 -vt 0.013073 0.347468 -vt 0.070379 0.355087 -vt 0.069082 0.409638 -vt 0.109564 0.401778 -vt 0.117499 0.386544 -vt 0.100450 0.426802 -vt 0.092512 0.387968 -vt 0.106991 0.375290 -vt 0.109675 0.029703 -vt 0.117722 0.045054 -vt 0.107123 0.056318 -vt 0.092598 0.043598 -vt 0.100435 0.004594 -vt 0.089561 0.080341 -vt 0.105077 0.086662 -vt 0.106539 0.125157 -vt 0.092240 0.124027 -vt 0.093057 0.169522 -vt 0.106883 0.169363 -vt 0.107356 0.215759 -vt 0.093634 0.215780 -vt 0.093116 0.262147 -vt 0.106989 0.262331 -vt 0.106438 0.306551 -vt 0.092162 0.307656 -vt 0.089462 0.351288 -vt 0.104965 0.344973 -vt 0.914640 0.445602 -vt 0.902520 0.448788 -vt 0.935568 0.489916 -vt 0.925493 0.497431 -vt 0.288546 0.913051 -vt 0.287325 0.926460 -vt 0.272005 0.924081 -vt 0.274329 0.910899 -vt 0.368564 0.056489 -vt 0.367087 0.007598 -vt 0.371243 0.107931 -vt 0.372018 0.156225 -vt 0.779651 0.929377 -vt 0.780061 0.938567 -vt 0.709852 0.938555 -vt 0.709329 0.929366 -vt 0.762576 0.592877 -vt 0.754244 0.596328 -vt 0.754244 0.589426 -vt 0.759125 0.584545 -vt 0.883134 0.853409 -vt 0.872374 0.850278 -vt 0.875634 0.840513 -vt 0.886108 0.845723 -vt 0.974474 0.028393 -vt 0.979078 0.032998 -vt 0.965202 0.042270 -vt 0.881298 0.861279 -vt 0.870845 0.859516 -vt 0.861452 0.858933 -vt 0.861455 0.848325 -vt 0.870080 0.868098 -vt 0.861446 0.867660 -vt 0.880130 0.869104 -vt 0.869604 0.876107 -vt 0.861434 0.875789 -vt 0.879298 0.876752 -vt 0.869281 0.883750 -vt 0.861407 0.883518 -vt 0.878655 0.884191 -vt 0.869081 0.891137 -vt 0.861493 0.890965 -vt 0.878140 0.891418 -vt 0.868977 0.898320 -vt 0.861458 0.898201 -vt 0.877736 0.898423 -vt 0.968458 0.025901 -vt 0.961946 0.025901 -vt 0.955930 0.028393 -vt 0.951325 0.032998 -vt 0.948833 0.039014 -vt 0.951325 0.051542 -vt 0.948833 0.045526 -vt 0.868870 0.905441 -vt 0.861440 0.905431 -vt 0.877989 0.905445 -vt 0.869805 0.846820 -vt 0.710050 0.920229 -vt 0.780173 0.920229 -vt 0.779299 0.984490 -vt 0.708717 0.984444 -vt 0.709445 0.975274 -vt 0.779827 0.975309 -vt 0.766028 0.584545 -vt 0.770908 0.589426 -vt 0.839784 0.853400 -vt 0.836814 0.845717 -vt 0.847283 0.840513 -vt 0.850539 0.850274 -vt 0.832240 0.039171 -vt 0.848609 0.035915 -vt 0.834732 0.045187 -vt 0.841617 0.861266 -vt 0.852064 0.859510 -vt 0.852822 0.868086 -vt 0.842782 0.869087 -vt 0.853291 0.876087 -vt 0.843612 0.876727 -vt 0.853608 0.883713 -vt 0.844256 0.884152 -vt 0.853830 0.891070 -vt 0.844771 0.891357 -vt 0.853920 0.898286 -vt 0.845156 0.898364 -vt 0.832240 0.032659 -vt 0.834732 0.026643 -vt 0.839336 0.022039 -vt 0.845353 0.019547 -vt 0.851864 0.019547 -vt 0.862485 0.026643 -vt 0.857881 0.022039 -vt 0.854005 0.905414 -vt 0.844883 0.905390 -vt 0.853108 0.846819 -vt 0.779706 0.993714 -vt 0.709237 0.993668 -vt 0.779537 0.947726 -vt 0.709128 0.947703 -vt 0.759125 0.601209 -vt 0.766028 0.601209 -vt 0.883164 0.957683 -vt 0.886147 0.965420 -vt 0.875601 0.970648 -vt 0.872335 0.960819 -vt 0.981570 0.039014 -vt 0.881327 0.949763 -vt 0.870810 0.951523 -vt 0.861345 0.962767 -vt 0.861362 0.952093 -vt 0.870054 0.942893 -vt 0.861377 0.943317 -vt 0.880159 0.941890 -vt 0.869588 0.934845 -vt 0.861390 0.935150 -vt 0.879323 0.934199 -vt 0.869270 0.927172 -vt 0.861402 0.927404 -vt 0.878670 0.926727 -vt 0.869056 0.919772 -vt 0.861414 0.919946 -vt 0.878141 0.919484 -vt 0.868963 0.912569 -vt 0.861427 0.912670 -vt 0.877734 0.912470 -vt 0.981570 0.045526 -vt 0.979078 0.051542 -vt 0.974474 0.056146 -vt 0.968458 0.058638 -vt 0.961946 0.058638 -vt 0.955930 0.056146 -vt 0.869745 0.964294 -vt 0.779946 0.956926 -vt 0.709650 0.956904 -vt 0.779420 0.966097 -vt 0.708924 0.966063 -vt 0.770908 0.596328 -vt 0.839543 0.957612 -vt 0.850362 0.960783 -vt 0.847063 0.970602 -vt 0.836535 0.965340 -vt 0.839336 0.049792 -vt 0.841406 0.949698 -vt 0.851916 0.951492 -vt 0.852700 0.942865 -vt 0.842599 0.941830 -vt 0.853192 0.934819 -vt 0.843460 0.934142 -vt 0.853535 0.927147 -vt 0.844137 0.926672 -vt 0.853772 0.919747 -vt 0.844688 0.919430 -vt 0.853889 0.912543 -vt 0.845117 0.912417 -vt 0.845353 0.052284 -vt 0.851864 0.052284 -vt 0.857881 0.049792 -vt 0.862485 0.045187 -vt 0.864977 0.039171 -vt 0.864977 0.032659 -vt 0.852941 0.964266 -vt 0.703217 0.929377 -vt 0.703626 0.938567 -vt 0.633417 0.938555 -vt 0.632895 0.929366 -vt 0.071120 0.749866 -vt 0.079452 0.746414 -vt 0.079452 0.753317 -vt 0.074571 0.758198 -vt 0.143420 0.866156 -vt 0.140288 0.876925 -vt 0.130516 0.873665 -vt 0.135727 0.863181 -vt 0.088429 0.684667 -vt 0.093033 0.689271 -vt 0.079156 0.698543 -vt 0.151296 0.867993 -vt 0.149528 0.878456 -vt 0.148937 0.887852 -vt 0.138337 0.887847 -vt 0.158114 0.879231 -vt 0.157659 0.887872 -vt 0.159132 0.869163 -vt 0.166135 0.879723 -vt 0.165788 0.887909 -vt 0.166798 0.870002 -vt 0.173804 0.880070 -vt 0.173525 0.887957 -vt 0.174265 0.870654 -vt 0.181235 0.880307 -vt 0.181021 0.887993 -vt 0.181533 0.871178 -vt 0.188499 0.880414 -vt 0.188385 0.888022 -vt 0.188596 0.871579 -vt 0.082412 0.682175 -vt 0.075901 0.682175 -vt 0.069885 0.684667 -vt 0.065280 0.689271 -vt 0.062788 0.695287 -vt 0.065280 0.707815 -vt 0.062788 0.701799 -vt 0.195697 0.880505 -vt 0.195717 0.888013 -vt 0.195682 0.871316 -vt 0.136830 0.879496 -vt 0.633616 0.920229 -vt 0.703738 0.920229 -vt 0.702865 0.984490 -vt 0.632283 0.984445 -vt 0.633011 0.975275 -vt 0.703393 0.975309 -vt 0.067669 0.758198 -vt 0.062788 0.753317 -vt 0.143375 0.909449 -vt 0.135773 0.912291 -vt 0.130613 0.902038 -vt 0.140306 0.898725 -vt 0.968458 0.064620 -vt 0.965202 0.080989 -vt 0.961946 0.064620 -vt 0.151229 0.907636 -vt 0.149504 0.897222 -vt 0.158060 0.896495 -vt 0.159025 0.906485 -vt 0.166048 0.896083 -vt 0.166625 0.905672 -vt 0.173680 0.895880 -vt 0.173978 0.905066 -vt 0.181141 0.895685 -vt 0.181308 0.905163 -vt 0.188478 0.895667 -vt 0.188578 0.904730 -vt 0.974474 0.067112 -vt 0.979078 0.071716 -vt 0.981570 0.077732 -vt 0.981571 0.084244 -vt 0.979079 0.090260 -vt 0.968458 0.097357 -vt 0.974474 0.094865 -vt 0.195760 0.895543 -vt 0.195822 0.904978 -vt 0.136855 0.896184 -vt 0.703272 0.993714 -vt 0.632803 0.993668 -vt 0.703103 0.947726 -vt 0.632694 0.947703 -vt 0.074571 0.741534 -vt 0.067669 0.741534 -vt 0.247825 0.866061 -vt 0.255440 0.863193 -vt 0.260639 0.873459 -vt 0.250935 0.876808 -vt 0.095525 0.695287 -vt 0.239955 0.867903 -vt 0.241729 0.878349 -vt 0.252936 0.887691 -vt 0.242341 0.887726 -vt 0.233162 0.879134 -vt 0.233627 0.887758 -vt 0.232130 0.869086 -vt 0.225159 0.879636 -vt 0.225512 0.887797 -vt 0.224480 0.869940 -vt 0.217514 0.879994 -vt 0.217803 0.887847 -vt 0.217035 0.870610 -vt 0.210119 0.880251 -vt 0.210357 0.887909 -vt 0.209797 0.871151 -vt 0.202885 0.880383 -vt 0.203045 0.887963 -vt 0.202762 0.871566 -vt 0.095525 0.701799 -vt 0.093033 0.707815 -vt 0.088429 0.712420 -vt 0.082413 0.714912 -vt 0.075901 0.714912 -vt 0.069884 0.712420 -vt 0.254398 0.879343 -vt 0.703511 0.956926 -vt 0.633216 0.956904 -vt 0.702985 0.966097 -vt 0.632490 0.966063 -vt 0.062788 0.746414 -vt 0.247919 0.909341 -vt 0.251015 0.898599 -vt 0.260769 0.901827 -vt 0.255596 0.912291 -vt 0.955930 0.067112 -vt 0.240063 0.907529 -vt 0.241791 0.897101 -vt 0.233229 0.896373 -vt 0.232258 0.906381 -vt 0.225243 0.895944 -vt 0.224643 0.905567 -vt 0.217628 0.895690 -vt 0.217260 0.904944 -vt 0.210274 0.895599 -vt 0.210134 0.904466 -vt 0.203020 0.895544 -vt 0.203072 0.904661 -vt 0.951325 0.071716 -vt 0.948833 0.077732 -vt 0.948833 0.084244 -vt 0.951325 0.090260 -vt 0.955930 0.094865 -vt 0.961946 0.097357 -vt 0.254460 0.896025 -vt 0.879518 0.026423 -vt 0.888708 0.026013 -vt 0.888696 0.096222 -vt 0.879507 0.096745 -vt 0.071120 0.728223 -vt 0.062788 0.731674 -vt 0.062788 0.724771 -vt 0.067669 0.719891 -vt 0.943193 0.853469 -vt 0.932395 0.850323 -vt 0.935670 0.840522 -vt 0.946182 0.845755 -vt 0.977135 0.281163 -vt 0.977135 0.287675 -vt 0.960766 0.284419 -vt 0.941347 0.861368 -vt 0.930859 0.859595 -vt 0.921434 0.859010 -vt 0.921435 0.848361 -vt 0.930090 0.868203 -vt 0.921433 0.867766 -vt 0.940169 0.869220 -vt 0.929611 0.876232 -vt 0.921432 0.875914 -vt 0.939323 0.876891 -vt 0.929282 0.883887 -vt 0.921432 0.883643 -vt 0.938659 0.884345 -vt 0.929057 0.891271 -vt 0.921431 0.891085 -vt 0.938121 0.891571 -vt 0.928953 0.898461 -vt 0.921430 0.898348 -vt 0.937707 0.898569 -vt 0.974643 0.275147 -vt 0.970038 0.270542 -vt 0.964022 0.268051 -vt 0.957510 0.268051 -vt 0.951494 0.270542 -vt 0.944398 0.281163 -vt 0.946890 0.275147 -vt 0.928852 0.905578 -vt 0.921430 0.905577 -vt 0.937956 0.905578 -vt 0.929817 0.846852 -vt 0.870370 0.096024 -vt 0.870370 0.025901 -vt 0.934631 0.026775 -vt 0.934585 0.097357 -vt 0.925415 0.096629 -vt 0.925450 0.026247 -vt 0.074571 0.719891 -vt 0.079452 0.724771 -vt 0.899675 0.853466 -vt 0.896688 0.845751 -vt 0.907200 0.840520 -vt 0.910474 0.850321 -vt 0.944398 0.191173 -vt 0.960766 0.187917 -vt 0.946889 0.197189 -vt 0.901520 0.861364 -vt 0.912008 0.859593 -vt 0.912776 0.868201 -vt 0.902696 0.869217 -vt 0.913253 0.876230 -vt 0.903541 0.876888 -vt 0.913581 0.883886 -vt 0.904203 0.884341 -vt 0.913804 0.891270 -vt 0.904740 0.891568 -vt 0.913907 0.898460 -vt 0.905152 0.898566 -vt 0.944398 0.184661 -vt 0.946890 0.178645 -vt 0.951494 0.174040 -vt 0.957510 0.171548 -vt 0.964022 0.171548 -vt 0.974643 0.178645 -vt 0.970038 0.174040 -vt 0.914008 0.905577 -vt 0.904903 0.905577 -vt 0.913052 0.846851 -vt 0.943855 0.026368 -vt 0.943809 0.096837 -vt 0.897867 0.026537 -vt 0.897844 0.096946 -vt 0.067669 0.736555 -vt 0.074571 0.736555 -vt 0.943189 0.957682 -vt 0.946176 0.965395 -vt 0.935666 0.970627 -vt 0.932391 0.960827 -vt 0.974643 0.293691 -vt 0.941342 0.949785 -vt 0.930855 0.951557 -vt 0.921432 0.962790 -vt 0.921431 0.952142 -vt 0.930087 0.942950 -vt 0.921431 0.943387 -vt 0.940165 0.941933 -vt 0.929609 0.934922 -vt 0.921430 0.935239 -vt 0.939319 0.934263 -vt 0.929280 0.927268 -vt 0.921430 0.927511 -vt 0.938656 0.926811 -vt 0.929056 0.919884 -vt 0.921430 0.920069 -vt 0.938119 0.919585 -vt 0.928952 0.912695 -vt 0.921430 0.912807 -vt 0.937706 0.912588 -vt 0.970038 0.298296 -vt 0.964022 0.300788 -vt 0.957510 0.300788 -vt 0.951494 0.298296 -vt 0.946889 0.293691 -vt 0.944398 0.287675 -vt 0.929814 0.964298 -vt 0.907067 0.026129 -vt 0.907044 0.096424 -vt 0.916238 0.026654 -vt 0.916203 0.097150 -vt 0.079452 0.731674 -vt 0.899675 0.957685 -vt 0.910472 0.960829 -vt 0.907199 0.970630 -vt 0.896688 0.965399 -vt 0.951494 0.201793 -vt 0.901519 0.949787 -vt 0.912007 0.951559 -vt 0.912774 0.942951 -vt 0.902696 0.941936 -vt 0.913252 0.934923 -vt 0.903541 0.934265 -vt 0.913580 0.927268 -vt 0.904203 0.926812 -vt 0.913803 0.919884 -vt 0.904739 0.919585 -vt 0.913907 0.912694 -vt 0.905152 0.912588 -vt 0.957510 0.204285 -vt 0.964022 0.204285 -vt 0.970038 0.201793 -vt 0.974643 0.197189 -vt 0.977135 0.191173 -vt 0.977135 0.184661 -vt 0.913051 0.964300 -vt 0.706270 0.502931 -vt 0.715459 0.502522 -vt 0.715448 0.572731 -vt 0.706258 0.573253 -vt 0.071120 0.771509 -vt 0.062788 0.768057 -vt 0.067669 0.763177 -vt 0.074571 0.763177 -vt 0.710132 0.005494 -vt 0.706969 0.016359 -vt 0.697108 0.013066 -vt 0.702371 0.002489 -vt 0.974643 0.237431 -vt 0.977135 0.243447 -vt 0.960766 0.246703 -vt 0.718079 0.007350 -vt 0.716298 0.017903 -vt 0.715711 0.027386 -vt 0.704997 0.027386 -vt 0.724960 0.018675 -vt 0.724521 0.027386 -vt 0.725980 0.008533 -vt 0.733040 0.019154 -vt 0.732722 0.027386 -vt 0.733699 0.009381 -vt 0.740746 0.019484 -vt 0.740505 0.027385 -vt 0.741200 0.010043 -vt 0.748181 0.019708 -vt 0.748004 0.027380 -vt 0.748475 0.010575 -vt 0.755417 0.019812 -vt 0.755343 0.027365 -vt 0.755524 0.010980 -vt 0.970038 0.232826 -vt 0.964022 0.230335 -vt 0.957510 0.230335 -vt 0.951494 0.232827 -vt 0.946889 0.237431 -vt 0.944398 0.249959 -vt 0.944398 0.243447 -vt 0.762593 0.019939 -vt 0.762634 0.027465 -vt 0.762609 0.010718 -vt 0.703478 0.018953 -vt 0.697122 0.572532 -vt 0.697122 0.502410 -vt 0.761383 0.503283 -vt 0.761337 0.573865 -vt 0.752167 0.573137 -vt 0.752201 0.502755 -vt 0.079452 0.768057 -vt 0.079452 0.774960 -vt 0.710133 0.049279 -vt 0.702371 0.052284 -vt 0.697108 0.041707 -vt 0.706969 0.038414 -vt 0.964022 0.133832 -vt 0.960766 0.150201 -vt 0.957510 0.133832 -vt 0.718079 0.047423 -vt 0.716298 0.036870 -vt 0.724960 0.036099 -vt 0.725980 0.046240 -vt 0.733040 0.035619 -vt 0.733698 0.045392 -vt 0.740748 0.035292 -vt 0.741198 0.044732 -vt 0.748186 0.035071 -vt 0.748472 0.044203 -vt 0.755431 0.034980 -vt 0.755520 0.043805 -vt 0.970038 0.136324 -vt 0.974643 0.140929 -vt 0.977135 0.146945 -vt 0.977135 0.153457 -vt 0.974643 0.159473 -vt 0.964022 0.166569 -vt 0.970038 0.164078 -vt 0.762606 0.034910 -vt 0.762590 0.044078 -vt 0.703477 0.035820 -vt 0.770606 0.502877 -vt 0.770561 0.573345 -vt 0.724618 0.503046 -vt 0.724595 0.573454 -vt 0.062788 0.774960 -vt 0.067669 0.779841 -vt 0.814590 0.006376 -vt 0.822145 0.003470 -vt 0.827242 0.013765 -vt 0.817635 0.016947 -vt 0.977135 0.249959 -vt 0.806858 0.008157 -vt 0.808537 0.018414 -vt 0.819536 0.027705 -vt 0.809069 0.027676 -vt 0.800082 0.019090 -vt 0.800439 0.027630 -vt 0.799186 0.009269 -vt 0.792178 0.019417 -vt 0.792375 0.027560 -vt 0.791720 0.010025 -vt 0.784548 0.019690 -vt 0.784654 0.027482 -vt 0.784255 0.010023 -vt 0.777109 0.019797 -vt 0.777176 0.027524 -vt 0.776851 0.010547 -vt 0.769811 0.019854 -vt 0.769894 0.027470 -vt 0.769718 0.010965 -vt 0.974643 0.255975 -vt 0.970038 0.260580 -vt 0.964022 0.263072 -vt 0.957510 0.263072 -vt 0.951494 0.260580 -vt 0.946889 0.255975 -vt 0.821033 0.019481 -vt 0.733819 0.502637 -vt 0.733796 0.572932 -vt 0.742989 0.503163 -vt 0.742955 0.573658 -vt 0.074571 0.779841 -vt 0.814501 0.049145 -vt 0.817602 0.038497 -vt 0.827261 0.041725 -vt 0.822106 0.052088 -vt 0.951494 0.136324 -vt 0.806713 0.047328 -vt 0.808466 0.036974 -vt 0.799967 0.036195 -vt 0.798958 0.046172 -vt 0.792011 0.035698 -vt 0.791359 0.045352 -vt 0.784384 0.035355 -vt 0.783940 0.044724 -vt 0.776982 0.035138 -vt 0.776699 0.044223 -vt 0.769765 0.035026 -vt 0.769660 0.043824 -vt 0.946889 0.140929 -vt 0.944398 0.146945 -vt 0.944398 0.153457 -vt 0.946889 0.159473 -vt 0.951494 0.164077 -vt 0.957510 0.166569 -vt 0.821021 0.035957 -vt 0.452276 0.785576 -vt 0.530938 0.800580 -vt 0.519418 0.829679 -vt 0.530938 0.769285 -vt 0.467281 0.706915 -vt 0.496379 0.718434 -vt 0.435985 0.706915 -vt 0.518508 0.740564 -vt 0.386045 0.830589 -vt 0.373615 0.801867 -vt 0.408174 0.852718 -vt 0.497289 0.851808 -vt 0.468568 0.864238 -vt 0.437272 0.864238 -vt 0.407264 0.719344 -vt 0.385135 0.741474 -vt 0.373615 0.770572 -vt 0.195525 0.795751 -vt 0.180612 0.858203 -vt 0.164588 0.853541 -vt 0.153198 0.845820 -vt 0.227324 0.851141 -vt 0.203447 0.858093 -vt 0.258444 0.813479 -vt 0.246476 0.835278 -vt 0.137559 0.826486 -vt 0.132826 0.815171 -vt 0.130331 0.802691 -vt 0.253818 0.764843 -vt 0.260769 0.788720 -vt 0.130331 0.788931 -vt 0.135464 0.773052 -vt 0.216156 0.733723 -vt 0.237955 0.745691 -vt 0.148368 0.754212 -vt 0.167519 0.738349 -vt 0.191396 0.731397 -vt 0.144269 0.836752 -vt 0.735368 0.614585 -vt 0.735368 0.609007 -vt 0.765410 0.609007 -vt 0.765410 0.614585 -vt 0.735369 0.692674 -vt 0.765409 0.692672 -vt 0.765410 0.698250 -vt 0.735369 0.698251 -vt 0.735367 0.659208 -vt 0.735367 0.653630 -vt 0.765409 0.653629 -vt 0.765409 0.659207 -vt 0.735368 0.625740 -vt 0.735368 0.620163 -vt 0.765409 0.620163 -vt 0.765409 0.625741 -vt 0.735368 0.681518 -vt 0.765409 0.681517 -vt 0.765409 0.687095 -vt 0.735368 0.687096 -vt 0.765409 0.664785 -vt 0.735368 0.664785 -vt 0.735367 0.648052 -vt 0.735368 0.642474 -vt 0.765409 0.642474 -vt 0.765409 0.648052 -vt 0.735368 0.670363 -vt 0.765409 0.670362 -vt 0.735368 0.675941 -vt 0.765409 0.675940 -vt 0.735368 0.636896 -vt 0.735368 0.631318 -vt 0.765409 0.631319 -vt 0.765409 0.636896 -vt 0.627663 0.018536 -vt 0.640495 0.035701 -vt 0.118542 0.540948 -vt 0.129153 0.512449 -vt 0.182984 0.433696 -vt 0.665147 0.081893 -vt 0.675823 0.111525 -vt 0.614038 0.002489 -vt 0.538145 0.183061 -vt 0.543728 0.145268 -vt 0.552235 0.111517 -vt 0.562915 0.081886 -vt 0.246132 0.541712 -vt 0.254073 0.574629 -vt 0.653194 0.056591 -vt 0.102670 0.644547 -vt 0.104804 0.610557 -vt 0.259034 0.611464 -vt 0.260769 0.645460 -vt 0.587574 0.035697 -vt 0.600410 0.018534 -vt 0.684324 0.145276 -vt 0.689903 0.183067 -vt 0.539748 0.300788 -vt 0.538236 0.281328 -vt 0.260427 0.669393 -vt 0.259412 0.688471 -vt 0.535922 0.242380 -vt 0.535917 0.217894 -vt 0.102739 0.668499 -vt 0.235865 0.513089 -vt 0.536897 0.261860 -vt 0.212523 0.468569 -vt 0.224768 0.488974 -vt 0.689809 0.281329 -vt 0.688297 0.300788 -vt 0.103539 0.687606 -vt 0.692129 0.217898 -vt 0.110205 0.573773 -vt 0.692123 0.242382 -vt 0.574873 0.056585 -vt 0.198443 0.450720 -vt 0.140540 0.488468 -vt 0.153029 0.468211 -vt 0.691148 0.261861 -vt 0.167323 0.450533 -vt 0.792071 0.916492 -vt 0.801734 0.917833 -vt 0.800482 0.928867 -vt 0.790569 0.928447 -vt 0.819559 0.917593 -vt 0.828934 0.915975 -vt 0.830887 0.927620 -vt 0.821198 0.928431 -vt 0.810748 0.918151 -vt 0.810905 0.929153 -vt 0.810585 0.909797 -vt 0.818858 0.909566 -vt 0.802207 0.909591 -vt 0.792537 0.909087 -vt 0.828227 0.908819 -vt 0.810504 0.901865 -vt 0.818541 0.901813 -vt 0.802426 0.901718 -vt 0.792526 0.901481 -vt 0.828032 0.901496 -vt 0.810458 0.894122 -vt 0.818385 0.894157 -vt 0.802440 0.894004 -vt 0.792945 0.893902 -vt 0.828099 0.893988 -vt 0.810466 0.886501 -vt 0.818442 0.886564 -vt 0.802576 0.886344 -vt 0.792650 0.886274 -vt 0.827654 0.886528 -vt 0.810605 0.878861 -vt 0.818516 0.879006 -vt 0.802622 0.878699 -vt 0.792975 0.878624 -vt 0.827899 0.879219 -vt 0.810627 0.871174 -vt 0.818728 0.871360 -vt 0.802634 0.871045 -vt 0.793164 0.871158 -vt 0.828287 0.871815 -vt 0.810761 0.863286 -vt 0.819099 0.863519 -vt 0.802505 0.863298 -vt 0.793105 0.863821 -vt 0.828872 0.864342 -vt 0.810831 0.854897 -vt 0.819719 0.855317 -vt 0.802012 0.855256 -vt 0.792571 0.856598 -vt 0.829806 0.856813 -vt 0.810812 0.840513 -vt 0.821257 0.840988 -vt 0.800456 0.841199 -vt 0.790569 0.842257 -vt 0.831557 0.841861 -vt 0.198153 0.674384 -vt 0.190503 0.669690 -vt 0.181579 0.667935 -vt 0.172657 0.669498 -vt 0.164990 0.674149 -vt 0.172482 0.709831 -vt 0.165645 0.725148 -vt 0.164534 0.705393 -vt 0.181494 0.711289 -vt 0.181366 0.726419 -vt 0.190352 0.710029 -vt 0.197029 0.725317 -vt 0.198296 0.705626 -vt 0.198304 0.682086 -vt 0.198380 0.689831 -vt 0.198393 0.697682 -vt 0.111004 0.912641 -vt 0.115581 0.905791 -vt 0.125352 0.914425 -vt 0.120674 0.920403 -vt 0.115997 0.926380 -vt 0.106426 0.919491 -vt 0.111320 0.932358 -vt 0.101850 0.926341 -vt 0.106643 0.938335 -vt 0.097273 0.933191 -vt 0.103212 0.903331 -vt 0.109641 0.903331 -vt 0.092727 0.928645 -vt 0.090266 0.922705 -vt 0.097273 0.905791 -vt 0.090266 0.916276 -vt 0.092727 0.910337 -vt 0.028835 0.966192 -vt 0.022226 0.962460 -vt 0.027949 0.950743 -vt 0.034799 0.955320 -vt 0.041649 0.959896 -vt 0.035444 0.969924 -vt 0.048499 0.964473 -vt 0.042053 0.973656 -vt 0.048661 0.977389 -vt 0.055349 0.969050 -vt 0.057809 0.956681 -vt 0.057809 0.963111 -vt 0.032494 0.946196 -vt 0.038434 0.943736 -vt 0.044863 0.943736 -vt 0.055349 0.950742 -vt 0.050803 0.946196 -vt 0.164798 0.681881 -vt 0.164632 0.689635 -vt 0.164472 0.697463 -vt 0.632934 0.545044 -vt 0.652052 0.545141 -vt 0.651863 0.563819 -vt 0.632878 0.563545 -vt 0.632810 0.522319 -vt 0.651894 0.522072 -vt 0.614051 0.544992 -vt 0.614050 0.522383 -vt 0.614052 0.563464 -vt 0.623810 0.369295 -vt 0.633568 0.367324 -vt 0.639225 0.392887 -vt 0.626601 0.394923 -vt 0.621003 0.348235 -vt 0.627678 0.345810 -vt 0.614030 0.369953 -vt 0.614025 0.348001 -vt 0.614035 0.395617 -vt 0.629039 0.423653 -vt 0.644192 0.421805 -vt 0.648130 0.453878 -vt 0.630967 0.455302 -vt 0.614040 0.424291 -vt 0.614045 0.455805 -vt 0.632283 0.490213 -vt 0.650805 0.489389 -vt 0.614048 0.490505 -vt 0.671657 0.545379 -vt 0.671632 0.521677 -vt 0.671171 0.564390 -vt 0.643195 0.364006 -vt 0.634619 0.343782 -vt 0.651946 0.389422 -vt 0.659650 0.418657 -vt 0.665778 0.451472 -vt 0.669892 0.488003 -vt 0.609392 0.332898 -vt 0.607048 0.348238 -vt 0.600372 0.345815 -vt 0.605897 0.328451 -vt 0.614021 0.329898 -vt 0.632709 0.582516 -vt 0.651454 0.582884 -vt 0.650961 0.602258 -vt 0.632515 0.601907 -vt 0.614052 0.582411 -vt 0.614052 0.601845 -vt 0.670391 0.583627 -vt 0.669465 0.603025 -vt 0.595169 0.545046 -vt 0.595227 0.563546 -vt 0.576242 0.563821 -vt 0.576052 0.545144 -vt 0.595291 0.522321 -vt 0.576208 0.522076 -vt 0.604250 0.369299 -vt 0.601470 0.394928 -vt 0.588846 0.392897 -vt 0.594492 0.367332 -vt 0.599042 0.423658 -vt 0.597122 0.455306 -vt 0.579960 0.453886 -vt 0.583888 0.421814 -vt 0.595814 0.490216 -vt 0.577292 0.489395 -vt 0.556449 0.545383 -vt 0.556935 0.564393 -vt 0.556471 0.521683 -vt 0.584864 0.364018 -vt 0.576124 0.389437 -vt 0.593430 0.343791 -vt 0.568431 0.418672 -vt 0.562313 0.451485 -vt 0.558206 0.488013 -vt 0.618652 0.332896 -vt 0.622145 0.328447 -vt 0.595396 0.582517 -vt 0.595590 0.601906 -vt 0.577145 0.602257 -vt 0.576652 0.582885 -vt 0.557716 0.583628 -vt 0.558641 0.603025 -vt 0.600556 0.329700 -vt 0.627487 0.329694 -vt 0.587576 0.338950 -vt 0.600404 0.321797 -vt 0.552250 0.414757 -vt 0.562926 0.385129 -vt 0.614015 0.305766 -vt 0.684345 0.448489 -vt 0.689934 0.486285 -vt 0.665144 0.385108 -vt 0.675832 0.414737 -vt 0.574879 0.359831 -vt 0.627634 0.321791 -vt 0.640471 0.338937 -vt 0.538167 0.486298 -vt 0.543747 0.448506 -vt 0.689850 0.584566 -vt 0.688338 0.604028 -vt 0.692166 0.521122 -vt 0.692162 0.545612 -vt 0.691188 0.565094 -vt 0.539770 0.604028 -vt 0.538258 0.584567 -vt 0.535940 0.521131 -vt 0.535945 0.545617 -vt 0.653178 0.359814 -vt 0.536920 0.565098 -vt 0.632912 0.241809 -vt 0.652028 0.241907 -vt 0.651838 0.260583 -vt 0.632855 0.260309 -vt 0.632788 0.219087 -vt 0.651871 0.218840 -vt 0.614031 0.241757 -vt 0.614031 0.219149 -vt 0.614031 0.260227 -vt 0.623805 0.066059 -vt 0.633566 0.064090 -vt 0.639217 0.089658 -vt 0.626592 0.091693 -vt 0.621002 0.044992 -vt 0.627680 0.042567 -vt 0.614022 0.066716 -vt 0.614021 0.044757 -vt 0.614024 0.092385 -vt 0.629025 0.120425 -vt 0.644180 0.118578 -vt 0.648113 0.150651 -vt 0.630950 0.152074 -vt 0.614026 0.121061 -vt 0.614028 0.152576 -vt 0.632263 0.186983 -vt 0.650785 0.186160 -vt 0.614030 0.187274 -vt 0.671630 0.242146 -vt 0.671607 0.218447 -vt 0.671144 0.261155 -vt 0.643196 0.060774 -vt 0.634624 0.040541 -vt 0.651940 0.086196 -vt 0.659638 0.115434 -vt 0.665760 0.148248 -vt 0.669870 0.184777 -vt 0.609386 0.029646 -vt 0.607040 0.044994 -vt 0.600361 0.042569 -vt 0.605889 0.025195 -vt 0.614019 0.026643 -vt 0.632686 0.279277 -vt 0.651428 0.279645 -vt 0.650935 0.299016 -vt 0.632492 0.298665 -vt 0.614031 0.279172 -vt 0.614031 0.298603 -vt 0.670362 0.280388 -vt 0.669437 0.299784 -vt 0.595150 0.241810 -vt 0.595208 0.260309 -vt 0.576225 0.260584 -vt 0.576034 0.241908 -vt 0.595273 0.219088 -vt 0.576191 0.218842 -vt 0.604240 0.066061 -vt 0.601457 0.091695 -vt 0.588831 0.089662 -vt 0.594479 0.064093 -vt 0.599027 0.120427 -vt 0.597106 0.152076 -vt 0.579944 0.150655 -vt 0.583873 0.118582 -vt 0.595796 0.186984 -vt 0.577275 0.186163 -vt 0.556433 0.242148 -vt 0.556920 0.261156 -vt 0.556455 0.218450 -vt 0.584849 0.060778 -vt 0.576108 0.086202 -vt 0.593416 0.040545 -vt 0.568414 0.115440 -vt 0.562296 0.148253 -vt 0.558190 0.184781 -vt 0.618652 0.029645 -vt 0.622150 0.025194 -vt 0.595377 0.279278 -vt 0.595571 0.298665 -vt 0.577128 0.299016 -vt 0.576635 0.279645 -vt 0.557701 0.280389 -vt 0.558627 0.299784 -vt 0.600544 0.026445 -vt 0.627494 0.026443 -vt 0.587560 0.035701 -vt 0.600392 0.018536 -vt 0.552232 0.111525 -vt 0.562908 0.081893 -vt 0.614017 0.002489 -vt 0.684327 0.145268 -vt 0.689910 0.183061 -vt 0.665140 0.081886 -vt 0.675820 0.111517 -vt 0.574861 0.056591 -vt 0.627645 0.018534 -vt 0.640481 0.035697 -vt 0.538152 0.183067 -vt 0.543731 0.145276 -vt 0.689819 0.281328 -vt 0.688307 0.300788 -vt 0.692138 0.217894 -vt 0.692133 0.242380 -vt 0.691158 0.261860 -vt 0.539758 0.300788 -vt 0.538245 0.281329 -vt 0.535925 0.217898 -vt 0.535931 0.242382 -vt 0.653182 0.056585 -vt 0.536907 0.261861 -usemtl Bot -s 1 -f 1/1 150/2 229/3 91/4 -f 1/1 91/4 216/5 95/6 -f 1/1 95/6 233/7 87/8 -f 1/1 87/8 256/9 150/2 -f 2/10 98/11 218/12 94/13 -f 2/10 94/13 219/14 97/15 -f 2/10 97/15 236/16 90/17 -f 2/10 90/17 235/18 98/11 -f 3/19 99/20 217/21 93/22 -f 3/19 93/22 218/12 98/11 -f 3/19 98/11 235/18 89/23 -f 3/19 89/23 234/24 99/20 -f 4/25 95/6 216/5 92/26 -f 4/25 92/26 217/21 99/20 -f 4/25 99/20 234/24 88/27 -f 4/25 88/27 233/7 95/6 -f 5/28 100/29 216/5 91/4 -f 5/28 91/4 229/3 151/30 -f 6/31 102/32 219/14 94/13 -f 6/31 94/13 218/12 103/33 -f 7/34 103/33 218/12 93/22 -f 7/34 93/22 217/21 104/35 -f 8/36 104/35 217/21 92/26 -f 8/36 92/26 216/5 100/29 -f 9/37 211/38 241/39 162/40 -f 9/37 162/40 236/16 105/41 -f 10/42 113/43 223/44 109/45 -f 10/42 109/45 224/46 112/47 -f 11/48 152/49 230/50 106/51 -f 11/48 106/51 221/52 114/53 -f 12/54 112/47 224/46 110/55 -f 12/54 110/55 242/56 111/57 -f 13/58 114/53 221/52 107/59 -f 13/58 107/59 222/60 116/61 -f 14/62 116/61 222/60 108/63 -f 14/62 108/63 223/44 113/43 -f 15/64 126/65 250/66 119/67 -f 15/64 119/67 251/68 125/69 -f 15/64 125/69 228/70 123/71 -f 15/64 123/71 227/72 126/65 -f 16/73 127/74 249/75 118/76 -f 16/73 118/76 250/66 126/65 -f 16/73 126/65 227/72 122/77 -f 16/73 122/77 226/78 127/74 -f 17/79 124/80 248/81 117/82 -f 17/79 117/82 249/75 127/74 -f 17/79 127/74 226/78 121/83 -f 17/79 121/83 225/84 124/80 -f 18/85 153/86 231/87 120/88 -f 18/85 120/88 225/84 128/89 -f 19/90 130/91 227/72 123/71 -f 19/90 123/71 228/70 129/92 -f 20/93 131/94 226/78 122/77 -f 20/93 122/77 227/72 130/91 -f 21/95 128/89 225/84 121/83 -f 21/95 121/83 226/78 131/94 -f 22/96 132/97 251/68 185/98 -f 22/96 185/98 255/99 213/100 -f 28/101 140/102 3493/56 3492/55 -f 28/101 3492/55 3491/46 145/103 -f 29/104 145/103 3491/46 3490/45 -f 29/104 3490/45 3489/44 144/105 -f 30/106 155/107 3483/50 148/108 -f 30/106 148/108 3496/109 141/110 -f 31/111 144/105 3489/44 3488/63 -f 31/111 3488/63 3487/60 143/112 -f 32/113 139/114 215/115 96/116 -f 32/113 96/116 232/117 138/118 -f 33/119 143/112 3487/60 3486/59 -f 33/119 3486/59 3485/52 142/120 -f 34/121 3413/122 220/123 115/124 -f 35/125 101/126 215/115 139/114 -f 36/127 3480/128 3481/129 147/130 -f 36/127 147/130 229/3 150/2 -f 36/127 150/2 256/9 146/131 -f 36/127 146/131 3479/132 3480/128 -f 67/133 195/134 199/135 3462/136 -f 40/137 154/138 3415/107 3412/106 -f 37/139 151/30 229/3 147/130 -f 37/139 147/130 3481/129 3482/140 -f 38/141 3427/142 3497/109 3503/108 -f 38/141 3503/108 230/50 152/49 -f 39/143 149/144 231/87 153/86 -f 80/145 74/146 197/147 3458/148 -f 26/149 3422/119 3423/120 136/150 -f 41/151 142/120 3485/52 3484/51 -f 41/151 3484/51 3483/50 155/107 -f 42/152 156/153 257/154 205/155 -f 42/152 205/155 256/9 87/8 -f 42/152 87/8 233/7 160/156 -f 42/152 160/156 238/157 156/153 -f 43/158 159/159 240/160 163/161 -f 43/158 163/161 235/18 90/17 -f 43/158 90/17 236/16 162/40 -f 43/158 162/40 241/39 159/159 -f 44/162 158/163 239/164 164/165 -f 44/162 164/165 234/24 89/23 -f 44/162 89/23 235/18 163/161 -f 44/162 163/161 240/160 158/163 -f 45/166 157/167 238/157 160/156 -f 45/166 160/156 233/7 88/27 -f 45/166 88/27 234/24 164/165 -f 45/166 164/165 239/164 157/167 -f 46/168 206/169 257/154 156/153 -f 46/168 156/153 238/157 165/170 -f 79/171 75/172 3470/173 3477/174 -f 47/175 168/176 240/160 159/159 -f 47/175 159/159 241/39 167/177 -f 27/178 3416/111 3417/112 137/179 -f 48/180 169/181 239/164 158/163 -f 48/180 158/163 240/160 168/176 -f 25/182 3405/101 3406/103 134/183 -f 49/184 165/170 238/157 157/167 -f 49/184 157/167 239/164 169/181 -f 50/185 173/186 246/187 176/188 -f 65/189 192/190 201/191 68/192 -f 50/185 175/193 247/194 173/186 -f 51/195 170/196 258/197 207/198 -f 51/195 177/199 244/200 170/196 -f 52/201 174/202 247/194 175/193 -f 52/201 3388/203 3494/204 174/202 -f 53/205 171/206 244/200 177/199 -f 39/143 3430/207 3420/208 149/144 -f 53/205 179/209 245/210 171/206 -f 54/211 172/212 245/210 179/209 -f 66/213 194/214 198/215 73/216 -f 23/217 134/183 3406/103 3410/104 -f 54/211 176/188 246/187 172/212 -f 55/218 119/67 250/66 186/219 -f 55/218 186/219 254/220 183/221 -f 55/218 183/221 255/99 185/98 -f 55/218 185/98 251/68 119/67 -f 56/222 118/76 249/75 187/223 -f 56/222 187/223 253/224 182/225 -f 56/222 182/225 254/220 186/219 -f 56/222 186/219 250/66 118/76 -f 57/226 117/82 248/81 184/227 -f 57/226 184/227 252/228 181/229 -f 57/226 181/229 253/224 187/223 -f 57/226 187/223 249/75 117/82 -f 58/230 180/231 259/232 208/233 -f 58/230 188/234 252/228 180/231 -f 59/235 183/221 254/220 190/236 -f 66/213 73/216 199/135 195/134 -f 27/178 135/237 3411/105 3416/111 -f 59/235 189/238 255/99 183/221 -f 60/239 182/225 253/224 191/240 -f 60/239 190/236 254/220 182/225 -f 61/241 181/229 252/228 188/234 -f 61/241 191/240 253/224 181/229 -f 62/242 105/41 236/16 97/15 -f 62/242 97/15 219/14 212/243 -f 79/171 204/244 3465/245 75/172 -f 24/246 136/150 3423/120 3433/151 -f 26/149 137/179 3417/112 3422/119 -f 65/189 68/192 3407/247 3400/248 -f 39/143 3432/249 3424/250 3430/207 -f 64/251 81/252 198/215 194/214 -f 3454/192 3517/202 3495/204 3409/247 -f 3454/192 3455/191 3516/194 3517/202 -f 69/253 3515/186 3516/194 3455/191 -f 69/253 200/254 3514/187 3515/186 -f 70/148 203/255 3508/197 3459/256 -f 70/148 3460/147 3518/257 203/255 -f 71/136 3513/212 3514/187 200/254 -f 71/136 3463/135 3512/210 3513/212 -f 72/258 161/259 237/260 196/261 -f 72/258 138/118 232/117 161/259 -f 3467/216 3511/206 3512/210 3463/135 -f 3467/216 3468/215 3510/200 3511/206 -f 3469/262 178/263 243/264 3461/265 -f 63/266 193/267 3457/254 3456/253 -f 3475/268 196/261 237/260 166/269 -f 76/270 202/271 3506/272 3505/273 -f 76/270 3505/273 3479/132 146/131 -f 76/270 146/131 256/9 205/155 -f 76/270 205/155 257/154 202/271 -f 77/274 3507/275 3506/272 202/271 -f 77/274 202/271 257/154 206/169 -f 78/276 3524/255 3519/257 3472/277 -f 23/217 3410/104 3411/105 135/237 -f 80/145 3458/148 210/256 209/278 -f 78/276 207/198 258/197 3524/255 -f 79/171 208/233 259/232 204/244 -f 40/137 3412/106 3414/110 3426/279 -f 3478/252 3509/196 3510/200 3468/215 -f 3478/252 3459/256 3508/197 3509/196 -f 82/280 125/69 251/68 132/97 -f 67/133 3462/136 3457/254 193/267 -f 82/280 214/281 228/70 125/69 -f 83/282 167/177 241/39 211/38 -f 25/182 133/283 3408/102 3405/101 -f 64/251 209/278 210/256 81/252 -f 84/284 212/243 219/14 102/32 -f 85/285 213/100 255/99 189/238 -f 24/246 3433/151 3415/107 154/138 -f 63/266 3456/253 201/191 192/190 -f 86/286 129/92 228/70 214/281 -f 83/282 3440/287 3436/288 167/177 -f 60/239 3453/289 3445/290 190/236 -f 22/96 213/100 3401/291 132/97 -f 48/180 168/176 3435/292 3443/293 -f 62/242 212/243 3389/294 105/41 -f 8/36 3390/295 3391/296 104/35 -f 7/34 3392/297 3383/298 103/33 -f 20/93 3404/299 3403/300 131/94 -f 47/175 3434/301 3435/292 168/176 -f 61/241 188/234 3449/302 3451/303 -f 83/282 211/38 3389/294 3440/287 -f 21/95 131/94 3403/300 3402/304 -f 47/175 167/177 3436/288 3434/301 -f 21/95 3402/304 3397/305 128/89 -f 84/284 102/32 3382/306 3387/307 -f 49/184 169/181 3442/308 3441/309 -f 48/180 3443/293 3442/308 169/181 -f 37/139 3482/140 3428/310 3431/311 -f 18/85 3396/312 3398/313 153/86 -f 5/28 3384/314 3385/315 100/29 -f 7/34 104/35 3391/296 3392/297 -f 58/230 3447/316 3449/302 188/234 -f 20/93 130/91 3395/317 3404/299 -f 37/139 3431/311 3386/318 151/30 -f 19/90 129/92 3394/319 3393/320 -f 77/274 3476/321 3473/322 3507/275 -f 58/230 208/233 3448/323 3447/316 -f 9/37 105/41 3389/294 211/38 -f 49/184 3441/309 3439/324 165/170 -f 35/125 3425/121 3429/124 101/126 -f 60/239 191/240 3452/325 3453/289 -f 46/168 165/170 3439/324 3437/326 -f 84/284 3387/307 3389/294 212/243 -f 82/280 132/97 3401/291 214/281 -f 6/31 103/33 3383/298 3381/327 -f 86/286 3399/328 3394/319 129/92 -f 5/28 151/30 3386/318 3384/314 -f 59/235 3444/329 3446/330 189/238 -f 79/171 3477/174 3448/323 208/233 -f 46/168 3437/326 3438/331 206/169 -f 86/286 214/281 3401/291 3399/328 -f 39/143 153/86 3398/313 3432/249 -f 59/235 190/236 3445/290 3444/329 -f 6/31 3381/327 3382/306 102/32 -f 19/90 3393/320 3395/317 130/91 -f 3475/268 166/269 3474/263 3471/262 -f 61/241 3451/303 3452/325 191/240 -f 18/85 128/89 3397/305 3396/312 -f 8/36 100/29 3385/315 3390/295 -f 77/274 206/169 3438/331 3476/321 -f 85/285 3450/332 3401/291 213/100 -f 85/285 189/238 3446/330 3450/332 -f 265/333 266/334 261/335 260/336 -f 268/337 269/338 264/339 263/340 -f 267/341 268/337 263/340 262/342 -f 266/334 267/341 262/342 261/335 -f 272/343 273/344 268/337 267/341 -f 271/345 272/343 267/341 266/334 -f 270/346 271/345 266/334 265/333 -f 273/344 274/347 269/338 268/337 -f 277/348 278/349 273/344 272/343 -f 276/350 277/348 272/343 271/345 -f 275/351 276/350 271/345 270/346 -f 278/349 279/352 274/347 273/344 -f 282/353 283/354 278/349 277/348 -f 281/355 282/353 277/348 276/350 -f 280/356 281/355 276/350 275/351 -f 283/354 284/357 279/352 278/349 -f 287/358 288/359 283/354 282/353 -f 286/360 287/358 282/353 281/355 -f 285/361 286/360 281/355 280/356 -f 288/359 289/362 284/357 283/354 -f 292/363 293/364 288/359 287/358 -f 291/365 292/363 287/358 286/360 -f 290/366 291/365 286/360 285/361 -f 293/364 294/367 289/362 288/359 -f 297/368 298/369 293/364 292/363 -f 296/370 297/368 292/363 291/365 -f 295/371 296/370 291/365 290/366 -f 298/369 299/372 294/367 293/364 -f 302/373 303/374 298/369 297/368 -f 301/375 302/373 297/368 296/370 -f 300/376 301/375 296/370 295/371 -f 303/374 304/377 299/372 298/369 -f 307/378 308/379 303/374 302/373 -f 306/380 307/378 302/373 301/375 -f 305/381 306/380 301/375 300/376 -f 308/379 309/382 304/377 303/374 -f 312/383 313/384 308/379 307/378 -f 311/385 312/383 307/378 306/380 -f 310/386 311/385 306/380 305/381 -f 313/384 314/387 309/382 308/379 -f 3500/84 3556/388 3555/389 3501/80 -f 3501/80 3555/389 3554/390 3502/81 -f 3553/391 3523/227 3502/81 3554/390 -f 3552/392 3522/228 3523/227 3553/391 -f 3528/393 3464/394 3466/245 3526/395 -f 3464/394 3528/393 3529/396 3419/397 -f 3530/398 3418/399 3419/397 3529/396 -f 3418/399 3530/398 3531/400 3421/208 -f 3499/88 317/401 3556/388 3500/84 -f 3498/87 316/402 317/401 3499/88 -f 316/402 3498/87 3504/144 315/403 -f 315/403 3504/144 3421/208 3531/400 -f 320/404 3550/405 3557/406 3559/407 -f 320/404 3559/407 3561/408 319/409 -f 319/409 3561/408 3560/410 318/411 -f 3560/410 3532/412 3533/413 318/411 -f 320/404 3546/414 3548/415 3550/405 -f 318/411 3533/413 3536/416 3538/417 -f 319/409 3544/418 3546/414 320/404 -f 318/411 3538/417 3540/419 319/409 -f 319/409 3540/419 3542/420 3544/418 -f 323/421 3551/422 3549/423 326/424 -f 323/421 326/424 325/425 322/426 -f 322/426 325/425 324/427 321/428 -f 3527/429 321/428 324/427 3534/430 -f 3537/431 3535/432 3534/430 324/427 -f 3549/423 3547/433 3545/434 326/424 -f 326/424 3545/434 3543/435 325/425 -f 325/425 3539/436 3537/431 324/427 -f 3543/435 3541/437 3539/436 325/425 -f 3558/438 3521/231 3522/228 3552/392 -f 3563/439 3520/232 3521/231 3558/438 -f 3520/232 3563/439 3562/440 3525/244 -f 3525/244 3562/440 3526/395 3466/245 -f 358/441 412/442 395/443 3609/444 -f 328/445 382/446 3614/447 391/448 -f 328/445 391/448 439/449 368/450 -f 3579/451 3634/452 443/453 379/454 -f 329/455 371/456 432/457 369/458 -f 329/455 369/458 433/459 372/460 -f 355/461 3602/462 392/463 409/464 -f 330/465 368/450 439/449 389/466 -f 330/465 389/466 438/467 3571/468 -f 3570/469 370/470 446/471 3642/472 -f 331/473 372/460 433/459 374/474 -f 331/473 374/474 434/475 375/476 -f 356/477 3605/478 395/443 412/442 -f 332/479 373/480 437/481 383/482 -f 332/479 383/482 436/483 376/484 -f 333/485 375/476 434/475 377/486 -f 333/485 377/486 435/487 378/488 -f 334/489 3581/490 3617/491 3618/492 -f 334/489 3618/492 3615/493 385/494 -f 3587/495 3636/496 444/497 3575/498 -f 335/499 378/488 435/487 380/500 -f 335/499 380/500 3619/501 381/502 -f 354/503 413/504 397/505 3599/506 -f 336/507 3571/468 438/467 386/508 -f 336/507 386/508 437/481 373/480 -f 337/509 381/510 3619/511 3622/512 -f 337/509 3622/512 3621/513 384/514 -f 352/515 3611/516 405/517 408/518 -f 338/519 376/484 436/483 3620/520 -f 338/519 3620/520 3617/491 3581/490 -f 3579/451 3580/521 442/522 3634/452 -f 3584/523 3576/524 445/525 3640/526 -f 339/527 384/514 3621/513 3624/528 -f 339/527 3624/528 3623/529 387/530 -f 355/461 408/518 405/517 3602/462 -f 340/531 388/532 3612/533 3613/534 -f 340/531 3613/534 3614/447 382/446 -f 3587/495 379/454 443/453 3636/496 -f 353/535 415/536 401/537 3596/538 -f 341/539 387/530 3623/529 3626/540 -f 341/539 3626/540 3625/541 390/542 -f 357/543 3607/544 403/545 411/546 -f 342/547 385/494 3615/493 3616/548 -f 342/547 3616/548 3612/533 388/532 -f 3590/549 3629/550 441/551 3591/552 -f 343/553 390/542 3625/541 3627/554 -f 343/553 3627/554 432/457 371/456 -f 3584/523 3640/526 446/471 370/470 -f 3594/555 3632/556 442/522 3580/521 -f 3590/549 3566/557 440/558 3629/550 -f 353/535 3596/538 394/559 410/560 -f 3574/561 3638/562 445/525 3576/524 -f 3564/563 3643/564 440/558 3566/557 -f 359/565 3610/566 401/537 415/536 -f 357/543 410/560 394/559 3607/544 -f 3594/555 3591/552 441/551 3632/556 -f 356/477 409/464 392/463 3605/478 -f 3574/561 3575/567 444/568 3638/562 -f 358/441 3609/444 397/505 413/504 -f 3570/469 3642/472 447/569 3565/570 -f 354/503 3599/506 399/571 414/572 -f 3564/563 3565/570 447/569 3643/564 -f 352/515 411/546 403/545 3611/516 -f 359/565 414/572 399/571 3610/566 -f 344/573 3598/574 3637/575 402/576 -f 344/573 402/576 3635/577 3597/578 -f 345/579 3601/580 3641/581 406/582 -f 345/579 406/582 3639/583 3600/584 -f 346/585 3604/586 3631/587 396/588 -f 346/585 396/588 3628/589 3603/590 -f 347/591 3603/590 3628/589 393/592 -f 347/591 393/592 3630/593 3606/594 -f 348/595 3597/578 3635/577 400/596 -f 348/595 400/596 3633/597 3608/598 -f 349/599 3606/594 3630/593 407/600 -f 349/599 407/600 3641/581 3601/580 -f 350/601 3600/584 3639/583 404/602 -f 350/601 404/602 3637/575 3598/574 -f 351/603 3608/598 3633/597 398/604 -f 351/603 398/604 3631/587 3604/586 -f 327/605 3589/606 3592/607 -f 327/605 3582/608 3583/609 -f 327/605 3572/610 3573/611 -f 352/515 408/518 451/612 422/613 -f 352/515 422/613 452/614 411/546 -f 327/605 3588/615 3589/606 -f 327/605 3578/616 3582/608 -f 353/535 410/560 453/617 426/618 -f 353/535 426/618 454/619 415/536 -f 327/605 3569/620 3572/610 -f 327/605 3595/621 3568/622 -f 354/503 414/572 455/623 430/624 -f 354/503 430/624 456/625 413/504 -f 327/605 3586/626 3588/615 -f 327/605 3577/627 3578/616 -f 355/461 409/464 450/628 420/629 -f 355/461 420/629 451/612 408/518 -f 327/605 3593/630 3595/621 -f 327/605 3567/631 3569/620 -f 356/477 412/442 449/632 417/633 -f 356/477 417/633 450/628 409/464 -f 327/605 3585/634 3586/626 -f 327/605 3573/611 3577/627 -f 357/543 411/546 452/614 424/635 -f 357/543 424/635 453/617 410/560 -f 327/605 3568/622 3567/631 -f 327/605 3583/609 3585/634 -f 358/441 413/504 456/625 431/636 -f 358/441 431/636 449/632 412/442 -f 327/605 3592/607 3593/630 -f 359/565 415/536 454/619 428/637 -f 359/565 428/637 455/623 414/572 -f 360/638 418/639 448/640 416/641 -f 360/638 416/641 450/628 417/633 -f 360/638 417/633 449/632 418/639 -f 361/642 416/641 448/640 419/643 -f 361/642 419/643 451/612 420/629 -f 361/642 420/629 450/628 416/641 -f 362/644 419/643 448/640 421/645 -f 362/644 421/645 452/614 422/613 -f 362/644 422/613 451/612 419/643 -f 363/646 421/645 448/640 423/647 -f 363/646 423/647 453/617 424/635 -f 363/646 424/635 452/614 421/645 -f 364/648 423/647 448/640 425/649 -f 364/648 425/649 454/619 426/618 -f 364/648 426/618 453/617 423/647 -f 365/650 425/649 448/640 427/651 -f 365/650 427/651 455/623 428/637 -f 365/650 428/637 454/619 425/649 -f 366/652 427/651 448/640 429/653 -f 366/652 429/653 456/625 430/624 -f 366/652 430/624 455/623 427/651 -f 367/654 429/653 448/640 418/639 -f 367/654 418/639 449/632 431/636 -f 367/654 431/636 456/625 429/653 -f 457/655 606/656 685/657 547/658 -f 457/655 547/658 672/659 551/660 -f 457/655 551/660 689/661 543/662 -f 457/655 543/662 712/663 606/656 -f 458/664 554/665 674/666 550/667 -f 458/664 550/667 675/668 553/669 -f 458/664 553/669 692/670 546/671 -f 458/664 546/671 691/672 554/665 -f 459/673 555/674 673/675 549/676 -f 459/673 549/676 674/666 554/665 -f 459/673 554/665 691/672 545/677 -f 459/673 545/677 690/678 555/674 -f 460/679 551/660 672/659 548/680 -f 460/679 548/680 673/675 555/674 -f 460/679 555/674 690/678 544/681 -f 460/679 544/681 689/661 551/660 -f 461/682 556/683 672/659 547/658 -f 461/682 547/658 685/657 607/684 -f 462/685 558/686 675/668 550/667 -f 462/685 550/667 674/666 559/687 -f 463/688 559/687 674/666 549/676 -f 463/688 549/676 673/675 560/689 -f 464/690 560/689 673/675 548/680 -f 464/690 548/680 672/659 556/683 -f 465/691 667/692 697/693 618/694 -f 465/691 618/694 692/670 561/695 -f 466/696 569/697 679/698 565/699 -f 466/696 565/699 680/700 568/701 -f 467/702 608/703 686/704 562/705 -f 467/702 562/705 677/706 570/707 -f 468/708 568/701 680/700 566/709 -f 468/708 566/709 698/710 567/711 -f 469/712 570/707 677/706 563/713 -f 469/712 563/713 678/714 572/715 -f 470/716 572/715 678/714 564/717 -f 470/716 564/717 679/698 569/697 -f 471/718 582/719 706/720 575/721 -f 471/718 575/721 707/722 581/723 -f 471/718 581/723 684/724 579/725 -f 471/718 579/725 683/726 582/719 -f 472/727 583/728 705/729 574/730 -f 472/727 574/730 706/720 582/719 -f 472/727 582/719 683/726 578/731 -f 472/727 578/731 682/732 583/728 -f 473/733 580/734 704/735 573/736 -f 473/733 573/736 705/729 583/728 -f 473/733 583/728 682/732 577/737 -f 473/733 577/737 681/738 580/734 -f 474/739 609/740 687/741 576/742 -f 474/739 576/742 681/738 584/743 -f 475/744 586/745 683/726 579/725 -f 475/744 579/725 684/724 585/746 -f 476/747 587/748 682/732 578/731 -f 476/747 578/731 683/726 586/745 -f 477/749 584/743 681/738 577/737 -f 477/749 577/737 682/732 587/748 -f 478/750 588/751 707/722 641/752 -f 478/750 641/752 711/753 669/754 -f 484/755 596/756 3756/710 3755/709 -f 484/755 3755/709 3754/700 601/757 -f 485/758 601/757 3754/700 3753/699 -f 485/758 3753/699 3752/698 600/759 -f 486/760 611/761 3746/704 604/762 -f 486/760 604/762 3759/763 597/764 -f 487/765 600/759 3752/698 3751/717 -f 487/765 3751/717 3750/714 599/766 -f 488/767 595/768 671/769 552/770 -f 488/767 552/770 688/771 594/772 -f 489/773 599/766 3750/714 3749/713 -f 489/773 3749/713 3748/706 598/774 -f 490/775 3676/776 676/777 571/778 -f 491/779 557/780 671/769 595/768 -f 492/781 3743/782 3744/783 603/784 -f 492/781 603/784 685/657 606/656 -f 492/781 606/656 712/663 602/785 -f 492/781 602/785 3742/786 3743/782 -f 523/787 651/788 655/789 3725/790 -f 496/791 610/792 3678/761 3675/760 -f 493/793 607/684 685/657 603/784 -f 493/793 603/784 3744/783 3745/794 -f 494/795 3690/796 3760/763 3766/762 -f 494/795 3766/762 686/704 608/703 -f 495/797 605/798 687/741 609/740 -f 536/799 530/800 653/801 3721/802 -f 482/803 3685/773 3686/774 592/804 -f 497/805 598/774 3748/706 3747/705 -f 497/805 3747/705 3746/704 611/761 -f 498/806 612/807 713/808 661/809 -f 498/806 661/809 712/663 543/662 -f 498/806 543/662 689/661 616/810 -f 498/806 616/810 694/811 612/807 -f 499/812 615/813 696/814 619/815 -f 499/812 619/815 691/672 546/671 -f 499/812 546/671 692/670 618/694 -f 499/812 618/694 697/693 615/813 -f 500/816 614/817 695/818 620/819 -f 500/816 620/819 690/678 545/677 -f 500/816 545/677 691/672 619/815 -f 500/816 619/815 696/814 614/817 -f 501/820 613/821 694/811 616/810 -f 501/820 616/810 689/661 544/681 -f 501/820 544/681 690/678 620/819 -f 501/820 620/819 695/818 613/821 -f 502/822 662/823 713/808 612/807 -f 502/822 612/807 694/811 621/824 -f 535/825 531/826 3733/827 3740/828 -f 503/829 624/830 696/814 615/813 -f 503/829 615/813 697/693 623/831 -f 483/832 3679/765 3680/766 593/833 -f 504/834 625/835 695/818 614/817 -f 504/834 614/817 696/814 624/830 -f 481/836 3668/755 3669/757 590/837 -f 505/838 621/824 694/811 613/821 -f 505/838 613/821 695/818 625/835 -f 506/839 629/840 702/841 632/842 -f 521/843 648/844 657/845 524/846 -f 506/839 631/847 703/848 629/840 -f 507/849 626/850 714/851 663/852 -f 507/849 633/853 700/854 626/850 -f 508/855 630/856 703/848 631/847 -f 508/855 3651/857 3757/858 630/856 -f 509/859 627/860 700/854 633/853 -f 495/797 3693/861 3683/862 605/798 -f 509/859 635/863 701/864 627/860 -f 510/865 628/866 701/864 635/863 -f 522/867 650/868 654/869 529/870 -f 479/871 590/837 3669/757 3673/758 -f 510/865 632/842 702/841 628/866 -f 511/872 575/721 706/720 642/873 -f 511/872 642/873 710/874 639/875 -f 511/872 639/875 711/753 641/752 -f 511/872 641/752 707/722 575/721 -f 512/876 574/730 705/729 643/877 -f 512/876 643/877 709/878 638/879 -f 512/876 638/879 710/874 642/873 -f 512/876 642/873 706/720 574/730 -f 513/880 573/736 704/735 640/881 -f 513/880 640/881 708/882 637/883 -f 513/880 637/883 709/878 643/877 -f 513/880 643/877 705/729 573/736 -f 514/884 636/885 715/886 664/887 -f 514/884 644/888 708/882 636/885 -f 515/889 639/875 710/874 646/890 -f 522/867 529/870 655/789 651/788 -f 483/832 591/891 3674/759 3679/765 -f 515/889 645/892 711/753 639/875 -f 516/893 638/879 709/878 647/894 -f 516/893 646/890 710/874 638/879 -f 517/895 637/883 708/882 644/888 -f 517/895 647/894 709/878 637/883 -f 518/896 561/695 692/670 553/669 -f 518/896 553/669 675/668 668/897 -f 535/825 660/898 3728/899 531/826 -f 480/900 592/804 3686/774 3696/805 -f 482/803 593/833 3680/766 3685/773 -f 521/843 524/846 3670/901 3663/902 -f 495/797 3695/903 3687/904 3693/861 -f 520/905 537/906 654/869 650/868 -f 3717/846 3780/856 3758/858 3672/901 -f 3717/846 3718/845 3779/848 3780/856 -f 525/907 3778/840 3779/848 3718/845 -f 525/907 656/908 3777/841 3778/840 -f 526/802 659/909 3771/851 3722/910 -f 526/802 3723/801 3781/911 659/909 -f 527/790 3776/866 3777/841 656/908 -f 527/790 3726/789 3775/864 3776/866 -f 528/912 617/913 693/914 652/915 -f 528/912 594/772 688/771 617/913 -f 3730/870 3774/860 3775/864 3726/789 -f 3730/870 3731/869 3773/854 3774/860 -f 3732/916 634/917 699/918 3724/919 -f 519/920 649/921 3720/908 3719/907 -f 3738/922 652/915 693/914 622/923 -f 532/924 658/925 3769/926 3768/927 -f 532/924 3768/927 3742/786 602/785 -f 532/924 602/785 712/663 661/809 -f 532/924 661/809 713/808 658/925 -f 533/928 3770/929 3769/926 658/925 -f 533/928 658/925 713/808 662/823 -f 534/930 3787/909 3782/911 3735/931 -f 479/871 3673/758 3674/759 591/891 -f 536/799 3721/802 666/910 665/932 -f 534/930 663/852 714/851 3787/909 -f 535/825 664/887 715/886 660/898 -f 496/791 3675/760 3677/764 3689/933 -f 3741/906 3772/850 3773/854 3731/869 -f 3741/906 3722/910 3771/851 3772/850 -f 538/934 581/723 707/722 588/751 -f 523/787 3725/790 3720/908 649/921 -f 538/934 670/935 684/724 581/723 -f 539/936 623/831 697/693 667/692 -f 481/836 589/937 3671/756 3668/755 -f 520/905 665/932 666/910 537/906 -f 540/938 668/897 675/668 558/686 -f 541/939 669/754 711/753 645/892 -f 480/900 3696/805 3678/761 610/792 -f 519/920 3719/907 657/845 648/844 -f 542/940 585/746 684/724 670/935 -f 716/941 1015/942 1164/943 1009/944 -f 716/941 1009/944 1163/945 1016/946 -f 778/947 963/948 4044/949 4045/950 -f 717/951 1014/952 1165/953 1010/954 -f 717/951 1010/954 1164/943 1015/942 -f 778/947 4045/950 4042/955 962/956 -f 718/957 1013/958 1166/959 1011/960 -f 718/957 1011/960 1165/953 1014/952 -f 776/961 4041/962 4039/963 960/964 -f 845/965 742/966 912/967 1075/968 -f 845/965 1076/969 911/970 742/966 -f 847/971 848/972 909/973 740/974 -f 844/975 3820/976 913/977 849/978 -f 3808/979 1062/980 900/981 836/982 -f 846/983 1077/984 910/985 741/986 -f 720/987 858/988 1154/989 855/990 -f 720/987 855/990 1153/991 857/992 -f 842/993 837/994 1069/995 1073/996 -f 721/997 860/998 1159/999 1003/1000 -f 721/997 1003/1000 1158/1001 859/1002 -f 722/1003 862/1004 1157/1005 852/1006 -f 722/1003 852/1006 1156/1007 861/1008 -f 723/1009 863/1010 1155/1011 854/1012 -f 723/1009 854/1012 1154/1013 858/1014 -f 843/1015 838/1016 902/1017 1074/1018 -f 724/1019 859/1002 1158/1001 1002/1020 -f 724/1019 1002/1020 1157/1005 862/1004 -f 725/1021 870/1022 1080/1023 868/1024 -f 725/1021 868/1024 1081/1025 869/1026 -f 725/1021 869/1026 1079/1027 867/1028 -f 725/1021 867/1028 1078/1029 870/1022 -f 726/1030 872/1031 1082/1032 871/1033 -f 726/1030 871/1033 1083/1034 887/1035 -f 726/1030 887/1035 1081/1025 868/1024 -f 726/1030 868/1024 1080/1023 872/1031 -f 727/1036 875/1037 1085/1038 874/1039 -f 727/1036 874/1039 1086/1040 888/1041 -f 727/1036 888/1041 1083/1034 871/1033 -f 727/1036 871/1033 1082/1032 875/1037 -f 728/1042 877/1043 1087/1044 876/1045 -f 728/1042 876/1045 1088/1046 889/1047 -f 728/1042 889/1047 1086/1040 874/1039 -f 728/1042 874/1039 1085/1038 877/1043 -f 729/1048 879/1049 1089/1050 878/1051 -f 729/1048 878/1051 1090/1052 890/1053 -f 729/1048 890/1053 1088/1046 876/1045 -f 729/1048 876/1045 1087/1044 879/1049 -f 847/971 740/974 910/985 1077/984 -f 731/1054 880/1055 1091/1056 891/1057 -f 731/1054 891/1057 1151/1058 1001/1059 -f 731/1054 1001/1059 4024/1060 991/1061 -f 731/1054 991/1061 1092/1062 880/1055 -f 732/1063 875/1037 1082/1032 872/1031 -f 732/1063 872/1031 1080/1023 882/1064 -f 732/1063 882/1064 1084/1065 873/1066 -f 732/1063 873/1066 1085/1038 875/1037 -f 733/1067 879/1049 1087/1044 877/1043 -f 733/1067 877/1043 1085/1038 873/1066 -f 733/1067 873/1066 1084/1065 883/1068 -f 733/1067 883/1068 1089/1050 879/1049 -f 734/1069 885/1070 1084/1065 882/1064 -f 734/1069 882/1064 1080/1023 870/1022 -f 734/1069 870/1022 1078/1029 886/1071 -f 734/1069 886/1071 1093/1072 885/1070 -f 735/1073 886/1071 1078/1029 867/1028 -f 735/1073 867/1028 1079/1027 892/1074 -f 735/1073 892/1074 1094/1075 881/1076 -f 735/1073 881/1076 1093/1072 886/1071 -f 3808/979 836/982 3811/1077 898/1078 -f 737/1079 977/1080 1134/1081 893/1082 -f 737/1079 893/1082 1096/1083 897/1084 -f 737/1079 897/1084 1097/1085 894/1086 -f 737/1079 894/1086 1135/1087 977/1080 -f 738/1088 3809/1089 4030/1062 4031/1061 -f 739/1090 1066/1091 4034/1092 1041/1093 -f 739/1090 1041/1093 4072/1094 1065/1095 -f 3813/1096 3814/1097 1107/1098 914/1099 -f 3813/1096 914/1099 1108/1100 3815/1101 -f 3816/1102 3815/1101 1108/1100 915/1103 -f 3816/1102 915/1103 1109/1104 3817/1105 -f 3818/1106 3817/1105 1109/1104 916/1107 -f 3818/1106 916/1107 1110/1108 3819/1109 -f 743/1110 3819/1109 1110/1108 917/1111 -f 743/1110 917/1111 1111/1112 3821/1113 -f 745/1114 1061/1115 3954/1046 3955/1053 -f 840/1116 833/1117 1067/1118 1071/1119 -f 745/1114 3955/1053 3956/1052 1060/1120 -f 847/971 1077/984 1064/1121 834/1122 -f 746/1123 920/1124 3950/1034 3951/1041 -f 746/1123 3951/1041 3952/1040 1064/1121 -f 831/1125 3901/1126 900/981 1062/980 -f 738/1088 4031/1061 1142/1060 3850/1127 -f 747/1128 1025/1129 3948/1027 3947/1026 -f 747/1128 3947/1026 3946/1025 919/1130 -f 748/1131 1063/1132 1100/1133 903/1134 -f 748/1131 903/1134 1101/1135 3828/1136 -f 749/1137 1040/1138 4030/1062 3809/1089 -f 832/1139 1060/1120 3956/1052 4069/1140 -f 749/1137 899/1141 1169/1142 1040/1138 -f 750/1143 864/1144 1152/1145 4051/1146 -f 750/1143 4051/1146 1159/999 860/998 -f 831/1125 3823/1147 918/1148 3901/1126 -f 3933/1149 3826/1150 896/1151 1070/1152 -f 751/1153 861/1008 1156/1007 853/1154 -f 751/1153 853/1154 1155/1011 863/1010 -f 775/1155 958/1156 1127/1157 -f 775/1155 1120/1158 958/1156 -f 752/1159 857/992 1153/991 856/1160 -f 752/1159 856/1160 1152/1145 864/1144 -f 775/1155 957/1161 1126/1162 -f 781/1163 966/1164 1145/1165 4033/1166 -f 783/1167 4038/1168 4036/1169 967/1170 -f 775/1155 1127/1157 957/1161 -f 776/961 961/1171 4040/1172 4041/962 -f 775/1155 956/1173 1125/1174 -f 775/1155 1126/1162 956/1173 -f 779/1175 964/1176 1147/1177 4046/1178 -f 780/1179 4026/1180 1147/1177 964/1176 -f 779/1175 4046/1178 4044/949 963/948 -f 775/1155 955/1181 1124/1182 -f 775/1155 1125/1174 955/1181 -f 775/1155 954/1183 1123/1184 -f 775/1155 1124/1182 954/1183 -f 775/1155 953/1185 1122/1186 -f 754/1187 3805/1188 3797/1189 866/1190 -f 781/1163 4033/1166 4025/1191 965/1192 -f 736/1193 3807/1194 3803/1195 923/1196 -f 775/1155 1123/1184 953/1185 -f 775/1155 4008/1197 1121/1198 -f 775/1155 1122/1186 4008/1197 -f 757/1199 3835/1200 3806/1201 922/1202 -f 775/1155 951/1203 1120/1158 -f 758/1204 3796/1205 3798/1206 925/1207 -f 775/1155 1121/1198 951/1203 -f 759/1208 935/1209 1118/1210 945/1211 -f 759/1208 945/1211 1117/1212 938/1213 -f 3872/1214 4019/1215 4006/1216 3859/1217 -f 753/1218 3833/1219 3800/1220 865/1221 -f 760/1222 930/1223 1112/1224 928/1225 -f 760/1222 928/1225 3984/1226 931/1227 -f 761/1228 927/1229 1113/1230 3985/1231 -f 761/1228 3985/1231 3986/1232 929/1233 -f 3876/1234 3854/1235 4015/1236 4018/1237 -f 762/1238 931/1227 3984/1226 933/1239 -f 762/1238 933/1239 1114/1240 934/1241 -f 763/1242 941/1243 1116/1244 939/1245 -f 763/1242 939/1245 3989/1246 944/1247 -f 3879/1248 3865/1249 4011/1250 4014/1251 -f 3882/1252 3869/1253 4007/1254 4010/1255 -f 764/1256 934/1241 1114/1240 936/1257 -f 764/1256 936/1257 1115/1258 937/1259 -f 765/1260 947/1261 3987/1262 3988/1263 -f 765/1260 3988/1263 1113/1230 927/1229 -f 3868/1264 3860/1265 4004/1266 952/1267 -f 766/1268 937/1259 1115/1258 3992/1269 -f 766/1268 3992/1269 3991/1270 940/1271 -f 767/1272 929/1233 3986/1232 950/1273 -f 767/1272 950/1273 1119/1274 932/1275 -f 3868/1264 952/1267 4007/1276 3869/1277 -f 3863/1278 4012/1279 4011/1250 3865/1249 -f 754/1187 922/1202 3806/1201 3805/1188 -f 768/1280 940/1271 3991/1270 942/1281 -f 768/1280 942/1281 3993/1282 943/1283 -f 769/1284 932/1275 1119/1274 948/1285 -f 769/1284 948/1285 1118/1210 935/1209 -f 3872/1214 3873/1286 4017/1287 4019/1215 -f 770/1288 943/1283 3993/1282 3999/1289 -f 770/1288 3999/1289 3998/1290 946/1291 -f 771/1292 938/1213 1117/1212 3994/1293 -f 771/1292 3994/1293 1116/1244 941/1243 -f 3858/1294 3859/1217 4006/1216 4005/1295 -f 772/1296 946/1297 3998/1298 4002/1299 -f 772/1296 4002/1299 4001/1300 949/1301 -f 773/1302 944/1247 3989/1246 3990/1303 -f 773/1302 3990/1303 3987/1262 947/1261 -f 3863/1278 3864/1304 4009/1305 4012/1279 -f 774/1306 949/1301 4001/1300 4003/1307 -f 774/1306 4003/1307 1112/1224 930/1223 -f 3879/1248 4014/1251 4013/1308 3853/1309 -f 756/1310 923/1196 3803/1195 3802/1311 -f 3852/1312 4016/1313 4015/1236 3854/1235 -f 757/1199 924/1314 3804/1315 3835/1200 -f 3882/1252 4010/1255 4009/1305 3864/1304 -f 3852/1312 3853/1309 4013/1308 4016/1313 -f 758/1204 866/1190 3797/1189 3796/1205 -f 756/1310 3802/1311 3804/1315 924/1314 -f 3858/1294 4005/1295 4004/1266 3860/1265 -f 3876/1234 4018/1237 4017/1287 3873/1286 -f 755/1316 865/1221 3800/1220 3799/1317 -f 753/1218 926/1318 3834/1319 3833/1219 -f 730/1320 925/1207 3798/1206 3836/1321 -f 736/1193 921/1322 3801/1323 3807/1194 -f 844/975 1075/968 912/967 3820/976 -f 846/983 741/986 911/970 1076/969 -f 719/1324 3944/1325 3943/1326 -f 719/1324 3945/1327 3944/1325 -f 719/1324 3942/1328 3941/1329 -f 719/1324 3943/1326 3942/1328 -f 719/1324 3940/1330 3939/1331 -f 719/1324 3941/1329 3940/1330 -f 719/1324 3938/1332 3937/1333 -f 719/1324 3939/1331 3938/1332 -f 719/1324 3936/1334 3935/1335 -f 719/1324 3937/1333 3936/1334 -f 719/1324 4048/1336 4047/1337 -f 719/1324 3935/1335 4048/1336 -f 719/1324 4050/1338 4049/1339 -f 719/1324 4047/1337 4050/1338 -f 719/1324 1004/1340 3945/1327 -f 719/1324 4049/1339 1004/1340 -f 812/1341 1035/1342 1022/1343 3929/1344 -f 814/1345 1023/1346 1030/1347 3917/1348 -f 812/1341 3929/1344 1029/1349 1036/1350 -f 827/1351 3927/1352 1022/1343 1035/1342 -f 730/1320 3836/1321 3834/1319 926/1318 -f 830/1353 1034/1354 1024/1355 3921/1356 -f 828/1357 1021/1358 1027/1359 3925/1360 -f 814/1345 3917/1348 1031/1361 1037/1362 -f 830/1353 3921/1356 1026/1363 1056/1364 -f 755/1316 3799/1317 3801/1323 921/1322 -f 813/1365 1036/1350 1029/1349 3914/1366 -f 784/1367 3963/1368 3962/1369 969/1370 -f 784/1367 969/1370 1133/1371 976/1372 -f 784/1367 976/1372 1134/1081 970/1373 -f 784/1367 970/1373 3964/1374 3963/1368 -f 785/1375 904/1376 3964/1374 970/1373 -f 785/1375 970/1373 1134/1081 977/1080 -f 785/1375 977/1080 1135/1087 971/1377 -f 785/1375 971/1377 1102/1378 904/1376 -f 786/1379 905/1380 1102/1378 971/1377 -f 786/1379 971/1377 1135/1087 978/1381 -f 786/1379 978/1381 1136/1382 972/1383 -f 786/1379 972/1383 1103/1384 905/1380 -f 787/1385 906/1386 1103/1387 972/1388 -f 787/1385 972/1388 1136/1389 979/1390 -f 787/1385 979/1390 1137/1391 973/1392 -f 787/1385 973/1392 1104/1393 906/1386 -f 788/1394 907/1395 1104/1393 973/1392 -f 788/1394 973/1392 1137/1391 980/1396 -f 788/1394 980/1396 1138/1397 974/1398 -f 788/1394 974/1398 3972/1399 907/1395 -f 789/1400 908/1401 3972/1399 974/1398 -f 789/1400 974/1398 1138/1397 981/1402 -f 789/1400 981/1402 1139/1403 975/1404 -f 789/1400 975/1404 1105/1405 908/1401 -f 790/1406 998/1407 1140/1408 984/1409 -f 790/1406 984/1409 1132/1410 968/1411 -f 790/1406 968/1411 1099/1412 985/1413 -f 790/1406 985/1413 1148/1414 998/1407 -f 791/1415 985/1413 1099/1412 993/1416 -f 791/1415 993/1416 4029/1417 986/1418 -f 791/1415 986/1418 1149/1419 997/1420 -f 791/1415 997/1420 1148/1414 985/1413 -f 792/1421 986/1418 4029/1417 990/1422 -f 792/1421 990/1422 1105/1405 987/1423 -f 792/1421 987/1423 1150/1424 996/1425 -f 792/1421 996/1425 1149/1419 986/1418 -f 793/1426 3903/1427 3974/1428 4028/1429 -f 793/1426 4028/1429 1141/1430 3902/1431 -f 794/1432 902/1017 1106/1433 3973/1434 -f 794/1432 3973/1434 3974/1428 3903/1427 -f 795/1435 975/1404 1139/1403 983/1436 -f 795/1435 983/1436 1143/1437 995/1438 -f 795/1435 995/1438 1150/1424 987/1423 -f 795/1435 987/1423 1105/1405 975/1404 -f 816/1439 1037/1362 1031/1361 3919/1440 -f 828/1357 3925/1360 1028/1441 1057/1442 -f 816/1439 3919/1440 1024/1355 1034/1354 -f 813/1365 3914/1366 1030/1347 1023/1346 -f 829/1443 1056/1364 1026/1363 3923/1444 -f 829/1443 3923/1444 1027/1359 1021/1358 -f 827/1351 1057/1442 1028/1441 3927/1352 -f 796/1445 1000/1446 1093/1072 881/1076 -f 796/1445 881/1076 1094/1075 988/1447 -f 796/1445 988/1447 4024/1060 1001/1059 -f 796/1445 1001/1059 1151/1058 1000/1446 -f 797/1448 1016/946 1163/945 1008/1449 -f 797/1448 1008/1449 1162/1450 1017/1451 -f 783/1167 960/964 4039/963 4038/1168 -f 798/1452 1017/1451 1162/1450 1007/1453 -f 798/1452 1007/1453 1161/1454 1018/1455 -f 782/1456 4037/1457 1145/1165 966/1164 -f 799/1458 1018/1455 1161/1454 1006/1459 -f 799/1458 1006/1459 1160/1460 1019/1461 -f 780/1179 965/1462 4025/1463 4026/1180 -f 800/1464 1019/1461 1160/1460 1005/1465 -f 800/1464 1005/1465 1167/1466 1020/1467 -f 777/1468 4043/1469 4040/1172 961/1171 -f 801/1470 1020/1467 1167/1466 1012/1471 -f 801/1470 1012/1471 1166/959 1013/958 -f 777/1468 962/956 4042/955 4043/1469 -f 782/1456 967/1170 4036/1169 4037/1457 -f 802/1472 3916/1473 4062/1474 4063/1475 -f 802/1472 4063/1475 4064/1476 3915/1477 -f 3892/1478 3874/1479 3875/1480 3893/1481 -f 803/1482 3915/1477 4064/1476 4065/1483 -f 803/1482 4065/1483 4066/1484 3918/1485 -f 3888/1486 3887/1487 3862/1488 3866/1489 -f 804/1490 3918/1485 4066/1484 4067/1491 -f 804/1490 4067/1491 4052/1492 3920/1493 -f 3885/1494 3861/1495 3862/1488 3887/1487 -f 805/1496 3920/1493 4052/1492 4053/1497 -f 805/1496 4053/1497 4054/1498 3922/1499 -f 3900/1500 3855/1501 3857/1502 3886/1503 -f 806/1504 3922/1499 4054/1498 4055/1505 -f 806/1504 4055/1505 4056/1506 3924/1507 -f 3900/1500 3899/1508 3856/1509 3855/1501 -f 3885/1494 3886/1503 3857/1502 3861/1495 -f 807/1510 3924/1511 4056/1512 4057/1513 -f 807/1510 4057/1513 4058/1514 3926/1515 -f 3896/1516 3880/1517 3881/1518 3897/1519 -f 808/1520 3926/1515 4058/1514 4059/1521 -f 808/1520 4059/1521 4060/1522 3928/1523 -f 3898/1524 3883/1525 3856/1509 3899/1508 -f 809/1526 3928/1523 4060/1522 4061/1527 -f 809/1526 4061/1527 4062/1474 3916/1473 -f 3896/1516 3895/1528 3878/1529 3880/1517 -f 810/1530 891/1057 1091/1056 884/1531 -f 810/1530 884/1531 1084/1065 885/1070 -f 810/1530 885/1070 1093/1072 1000/1446 -f 810/1530 1000/1446 1151/1058 891/1057 -f 811/1532 1033/1533 1091/1056 880/1055 -f 811/1532 880/1055 1092/1062 4073/1138 -f 811/1532 4073/1138 4070/1142 1032/1534 -f 811/1532 1032/1534 1171/1535 1033/1533 -f 3894/1536 3877/1537 3878/1529 3895/1528 -f 812/1341 1036/1350 1099/1412 968/1411 -f 812/1341 968/1411 1132/1410 1035/1342 -f 813/1365 4074/1538 1099/1412 1036/1350 -f 3892/1478 3891/1539 3871/1540 3874/1479 -f 813/1365 1023/1346 1168/1541 4074/1538 -f 814/1345 1039/1542 1168/1541 1023/1346 -f 3894/1536 3893/1481 3875/1480 3877/1537 -f 814/1345 1037/1362 3962/1369 1039/1542 -f 815/1543 919/1130 3946/1025 3949/1035 -f 815/1543 3949/1035 3950/1034 920/1124 -f 3831/1544 898/1078 3811/1077 3810/1545 -f 3824/1546 3829/1547 896/1151 3826/1150 -f 834/1122 3953/1047 3954/1046 1061/1115 -f 816/1439 1034/1354 1133/1371 969/1370 -f 816/1439 969/1370 3962/1369 1037/1362 -f 3890/1548 3870/1549 3871/1540 3891/1539 -f 817/1550 878/1051 1089/1050 1042/1551 -f 817/1550 1042/1551 1171/1535 1032/1534 -f 817/1550 1032/1534 4070/1142 1038/1140 -f 817/1550 1038/1140 1090/1052 878/1051 -f 818/1552 976/1372 1133/1371 1044/1553 -f 818/1552 1044/1553 1130/1554 1047/1555 -f 818/1552 1047/1555 1096/1083 893/1082 -f 818/1552 893/1082 1134/1081 976/1372 -f 819/1556 978/1381 1135/1087 894/1086 -f 819/1556 894/1086 1097/1085 1048/1557 -f 819/1556 1048/1557 1131/1558 1045/1559 -f 819/1556 1045/1559 1136/1382 978/1381 -f 820/1560 979/1390 1136/1389 1045/1561 -f 820/1560 1045/1561 1131/1562 1049/1563 -f 820/1560 1049/1563 1098/1564 895/1565 -f 820/1560 895/1565 1137/1391 979/1390 -f 821/1566 980/1396 1137/1391 895/1565 -f 821/1566 895/1565 1098/1564 1050/1567 -f 821/1566 1050/1567 1128/1568 1046/1569 -f 821/1566 1046/1569 1138/1397 980/1396 -f 822/1570 981/1402 1138/1397 1046/1569 -f 822/1570 1046/1569 1128/1568 959/1571 -f 822/1570 959/1571 1095/1572 1051/1573 -f 822/1570 1051/1573 1139/1403 981/1402 -f 823/1574 1043/1575 1132/1410 984/1409 -f 823/1574 984/1409 1140/1408 999/1576 -f 823/1574 999/1576 4027/1577 1053/1578 -f 823/1574 1053/1578 1129/1579 1043/1575 -f 824/1580 982/1581 1144/1582 1054/1583 -f 824/1580 1054/1583 1129/1579 1053/1578 -f 824/1580 1053/1578 4027/1577 989/1584 -f 824/1580 989/1584 1146/1585 982/1581 -f 825/1586 1052/1587 1095/1572 1055/1588 -f 825/1586 1055/1588 1144/1582 982/1581 -f 825/1586 982/1581 1146/1585 992/1589 -f 825/1586 992/1589 4032/1590 1052/1587 -f 826/1591 994/1592 1143/1437 983/1436 -f 826/1591 983/1436 1139/1403 1051/1573 -f 826/1591 1051/1573 1095/1572 1052/1587 -f 826/1591 1052/1587 4032/1590 994/1592 -f 827/1351 1035/1342 1132/1410 1043/1575 -f 827/1351 1043/1575 1129/1579 1057/1442 -f 3890/1548 3889/1593 3867/1594 3870/1549 -f 828/1357 1058/1595 1170/1596 1021/1358 -f 828/1357 1057/1442 1129/1579 1058/1595 -f 829/1443 1059/1597 1130/1554 1056/1364 -f 829/1443 1021/1358 1170/1596 1059/1597 -f 3898/1524 3897/1519 3881/1518 3883/1525 -f 3888/1486 3866/1489 3867/1594 3889/1593 -f 830/1353 1056/1364 1130/1554 1044/1553 -f 830/1353 1044/1553 1133/1371 1034/1354 -f 842/993 1072/1598 1068/1599 837/994 -f 846/983 746/1123 1064/1121 1077/984 -f 744/1600 901/1601 3957/1075 3958/1074 -f 847/971 834/1122 1061/1115 848/972 -f 3884/1602 839/1603 3830/1604 3825/1605 -f 833/1117 3828/1136 1101/1135 3965/1606 -f 833/1117 3965/1606 3966/1607 1067/1118 -f 834/1122 1064/1121 3952/1040 3953/1047 -f 3831/1544 3810/1545 3812/1608 3832/1609 -f 832/1139 4069/1140 1169/1142 899/1141 -f 835/1610 1067/1118 3966/1607 3967/1611 -f 835/1610 3967/1611 3968/1612 1068/1599 -f 841/1613 835/1610 1068/1599 1072/1598 -f 3824/1546 3825/1605 3830/1604 3829/1547 -f 3931/1614 3902/1431 1141/1430 4035/1615 -f 3931/1614 4035/1615 4034/1092 1066/1091 -f 837/994 1068/1599 3968/1612 3969/1616 -f 837/994 3969/1616 3970/1617 1069/995 -f 3930/1618 3850/1127 1142/1060 4023/1447 -f 3884/1602 3832/1609 3812/1608 839/1603 -f 3934/1619 3847/1620 3848/1621 3851/1622 -f 844/975 747/1128 919/1130 1075/968 -f 845/965 815/1543 920/1124 1076/969 -f 838/1016 1069/995 3970/1617 3971/1623 -f 838/1016 3971/1623 1106/1433 902/1017 -f 3932/1624 4071/1625 1100/1133 1063/1132 -f 3932/1624 1065/1095 4072/1094 4071/1625 -f 840/1116 3976/1626 3975/1627 3827/1628 -f 840/1116 1071/1119 3977/1629 3976/1626 -f 841/1613 3978/1630 3977/1629 1071/1119 -f 841/1613 1072/1598 3979/1631 3978/1630 -f 842/993 3980/1632 3979/1631 1072/1598 -f 842/993 1073/996 3981/1633 3980/1632 -f 843/1015 3982/1634 3981/1633 1073/996 -f 843/1015 1074/1018 3983/1635 3982/1634 -f 840/1116 3827/1628 3828/1136 833/1117 -f 3930/1618 4023/1447 3957/1075 901/1601 -f 744/1600 3958/1074 3948/1027 1025/1129 -f 843/1015 1073/996 1069/995 838/1016 -f 846/983 1076/969 920/1124 746/1123 -f 3822/1636 3851/1622 3848/1621 3904/1637 -f 841/1613 1071/1119 1067/1118 835/1610 -f 844/975 849/978 1025/1129 747/1128 -f 3933/1149 1070/1152 1107/1638 3814/1639 -f 3934/1619 3821/1640 1111/1641 3847/1620 -f 3822/1636 3904/1637 918/1148 3823/1147 -f 845/965 1075/968 919/1130 815/1543 -f 850/1642 884/1531 1091/1056 1033/1533 -f 850/1642 1033/1533 1171/1535 1042/1551 -f 850/1642 1042/1551 1089/1050 883/1068 -f 850/1642 883/1068 1084/1065 884/1531 -f 1172/1643 1271/1644 1369/1645 1239/1646 -f 1172/1643 1239/1646 1362/1647 1240/1648 -f 1172/1643 1240/1648 1361/1649 1237/1650 -f 1172/1643 1237/1650 1370/1651 1271/1644 -f 1173/1652 1244/1653 1371/1654 1241/1655 -f 1173/1652 1241/1655 1363/1656 1243/1657 -f 1173/1652 1243/1657 1362/1647 1239/1646 -f 1173/1652 1239/1646 1369/1645 1244/1653 -f 1174/1658 1248/1659 1364/1660 1246/1661 -f 1174/1658 1246/1661 1413/1662 1247/1663 -f 1174/1658 1247/1663 1412/1664 1242/1665 -f 1174/1658 1242/1665 1363/1656 1248/1659 -f 1175/1666 1249/1667 1372/1668 1245/1669 -f 1175/1666 1245/1669 1364/1660 1248/1659 -f 1175/1666 1248/1659 1363/1656 1241/1655 -f 1175/1666 1241/1655 1371/1654 1249/1667 -f 1176/1670 1253/1671 1365/1672 1251/1673 -f 1176/1670 1251/1673 1414/1674 1252/1675 -f 1176/1670 1252/1675 1413/1662 1246/1661 -f 1176/1670 1246/1661 1364/1660 1253/1671 -f 1177/1676 1254/1677 1373/1678 1250/1679 -f 1177/1676 1250/1679 1365/1672 1253/1671 -f 1177/1676 1253/1671 1364/1660 1245/1669 -f 1177/1676 1245/1669 1372/1668 1254/1677 -f 1178/1680 1256/1681 1386/1682 1290/1683 -f 1178/1680 1290/1683 1387/1684 1309/1685 -f 1179/1686 1258/1687 1374/1688 1255/1689 -f 1179/1686 1255/1689 1366/1690 1257/1691 -f 1179/1686 1257/1691 1365/1692 1250/1693 -f 1179/1686 1250/1693 1373/1694 1258/1687 -f 1180/1695 1262/1696 1389/1697 1293/1698 -f 1180/1695 1293/1698 4160/1699 1308/1700 -f 1181/1701 1264/1702 1375/1703 1259/1704 -f 1181/1701 1259/1704 1367/1705 1263/1706 -f 1181/1701 1263/1706 1366/1690 1255/1689 -f 1181/1701 1255/1689 1374/1688 1264/1702 -f 1182/1707 1260/1708 1416/1709 1289/1710 -f 1182/1707 1289/1710 1386/1711 1256/1712 -f 1183/1713 1268/1714 1376/1715 1265/1716 -f 1183/1713 1265/1716 1368/1717 1267/1718 -f 1183/1713 1267/1718 1367/1705 1259/1704 -f 1183/1713 1259/1704 1375/1703 1268/1714 -f 1184/1719 1261/1720 1388/1721 1292/1722 -f 1184/1719 1292/1722 1389/1697 1262/1696 -f 1185/1723 1270/1724 1370/1725 1237/1726 -f 1185/1723 1237/1726 1361/1727 1269/1728 -f 1185/1723 1269/1728 1368/1717 1265/1716 -f 1185/1723 1265/1716 1376/1715 1270/1724 -f 1186/1729 1272/1730 1380/1731 1285/1732 -f 1186/1729 1285/1732 1379/1733 1278/1734 -f 4111/1735 1275/1736 4142/1737 4141/1738 -f 4102/1739 1274/1740 4140/1741 4139/1742 -f 1187/1743 1273/1744 1377/1745 1282/1746 -f 1187/1743 1282/1746 1384/1747 4103/1748 -f 1193/1749 1284/1750 1378/1751 1279/1752 -f 4112/1753 4129/1754 4128/1755 4107/1756 -f 4110/1757 4104/1758 4138/1759 4137/1760 -f 1188/1761 4143/1762 4142/1737 1275/1736 -f 4105/1763 4106/1764 1382/1765 1280/1766 -f 4105/1763 1280/1766 1383/1767 1276/1768 -f 1189/1769 1277/1770 1381/1771 1286/1772 -f 1189/1769 1286/1772 1380/1731 1272/1730 -f 1203/1773 4097/1774 4094/1775 1305/1776 -f 1231/1777 1221/1778 1334/1779 1356/1780 -f 1190/1781 1283/1782 1377/1745 1273/1744 -f 4111/1735 4141/1738 4140/1741 1274/1740 -f 1191/1783 4103/1748 1384/1747 1281/1784 -f 1191/1783 1281/1784 1382/1785 4106/1786 -f 4108/1787 4131/1788 4130/1789 4109/1790 -f 1203/1773 1303/1791 4098/1792 4097/1774 -f 1192/1793 1276/1768 1383/1767 1287/1794 -f 1192/1793 1287/1794 1381/1771 1277/1770 -f 4099/1795 4100/1796 4134/1797 4133/1798 -f 1201/1799 1302/1800 4096/1801 4095/1802 -f 1193/1749 1278/1734 1379/1733 1284/1750 -f 1229/1803 1215/1804 1330/1805 1219/1806 -f 1229/1803 1219/1806 4096/1801 1302/1800 -f 1190/1781 1279/1752 1378/1751 1283/1782 -f 1202/1807 1301/1808 4090/1809 4114/1810 -f 1230/1811 1233/1812 1359/1813 1355/1814 -f 4099/1795 4133/1798 4132/1815 4101/1816 -f 4113/1817 4392/1818 4136/1819 4135/1820 -f 1231/1777 1357/1821 1335/1822 1221/1778 -f 4113/1817 4135/1820 4134/1797 4100/1796 -f 1232/1823 1234/1824 1358/1825 1217/1826 -f 1204/1827 4092/1828 4093/1829 4115/1830 -f 4108/1787 4101/1816 4132/1815 4131/1788 -f 1229/1803 1355/1814 1359/1813 1215/1804 -f 4110/1757 4137/1760 4136/1819 4392/1818 -f 4112/1753 4109/1790 4130/1789 4129/1754 -f 4102/1739 4139/1742 4138/1759 4104/1758 -f 1188/1761 4107/1756 4128/1755 4143/1762 -f 1201/1799 4089/1831 4090/1809 1301/1808 -f 1204/1827 1305/1776 4094/1775 4092/1828 -f 1202/1807 4114/1810 4098/1792 1303/1791 -f 1195/1832 1295/1833 4162/1834 1288/1835 -f 1195/1832 1288/1835 1385/1836 1294/1837 -f 1195/1832 1294/1837 1361/1727 1238/1838 -f 1195/1832 1238/1838 1411/1839 1295/1833 -f 1196/1840 1297/1841 4163/1842 4164/1843 -f 1196/1840 4164/1843 4165/1844 1296/1845 -f 1196/1840 1296/1845 1414/1846 1251/1847 -f 1196/1840 1251/1847 1365/1692 1297/1841 -f 1197/1848 1298/1849 4167/1850 4166/1851 -f 1197/1848 4166/1851 4163/1842 1297/1841 -f 1197/1848 1297/1841 1365/1692 1257/1691 -f 1197/1848 1257/1691 1366/1690 1298/1849 -f 1198/1852 1299/1853 4169/1854 1291/1855 -f 1198/1852 1291/1855 4167/1850 1298/1849 -f 1198/1852 1298/1849 1366/1690 1263/1706 -f 1198/1852 1263/1706 1367/1705 1299/1853 -f 1199/1856 1300/1857 4171/1858 4170/1859 -f 1199/1856 4170/1859 4169/1854 1299/1853 -f 1199/1856 1299/1853 1367/1705 1267/1718 -f 1199/1856 1267/1718 1368/1717 1300/1857 -f 1200/1860 1294/1837 1385/1836 4172/1861 -f 1200/1860 4172/1861 4171/1858 1300/1857 -f 1200/1860 1300/1857 1368/1717 1269/1728 -f 1200/1860 1269/1728 1361/1727 1294/1837 -f 1201/1799 1301/1808 1417/1862 1302/1800 -f 1202/1807 1303/1791 1418/1863 1304/1864 -f 1202/1807 1304/1864 1417/1862 1301/1808 -f 1203/1773 1305/1776 1419/1865 1306/1866 -f 1203/1773 1306/1866 1418/1863 1303/1791 -f 1204/1827 1307/1867 1419/1865 1305/1776 -f 1205/1868 1309/1685 1387/1684 4168/1869 -f 1205/1868 4168/1869 1388/1870 1261/1871 -f 1206/1872 1308/1873 4160/1874 4161/1875 -f 1206/1872 4161/1875 1415/1876 1266/1877 -f 1232/1823 1307/1867 4116/1878 1234/1824 -f 1207/1879 1238/1880 1361/1649 1240/1648 -f 1207/1879 1240/1648 1362/1647 1312/1881 -f 1207/1879 1312/1881 1420/1882 1310/1883 -f 1207/1879 1310/1883 1411/1884 1238/1880 -f 1208/1885 1312/1881 1362/1647 1243/1657 -f 1208/1885 1243/1657 1363/1656 1242/1665 -f 1208/1885 1242/1665 1412/1664 1311/1886 -f 1208/1885 1311/1886 1420/1882 1312/1881 -f 1204/1827 4115/1830 4116/1878 1307/1867 -f 1232/1823 1217/1826 1335/1822 1357/1821 -f 1201/1799 4095/1802 4091/1887 4089/1831 -f 1209/1888 1315/1889 1398/1890 1343/1891 -f 1209/1888 1343/1891 1399/1892 1313/1893 -f 1209/1888 1313/1893 1390/1894 1316/1895 -f 1209/1888 1316/1895 1391/1896 1315/1889 -f 1210/1897 1317/1898 1400/1899 1320/1900 -f 1210/1897 1320/1900 1398/1890 1315/1889 -f 1210/1897 1315/1889 1391/1896 1319/1901 -f 1210/1897 1319/1901 1392/1902 1317/1898 -f 1211/1903 1322/1904 1393/1905 1323/1906 -f 1211/1903 1323/1906 1392/1902 1318/1907 -f 1211/1903 1318/1907 1412/1664 1247/1663 -f 1211/1903 1247/1663 1413/1662 1322/1904 -f 1212/1908 1321/1909 1401/1910 1324/1911 -f 1212/1908 1324/1911 1400/1899 1317/1898 -f 1212/1908 1317/1898 1392/1902 1323/1906 -f 1212/1908 1323/1906 1393/1905 1321/1909 -f 1213/1912 1326/1913 1394/1914 1327/1915 -f 1213/1912 1327/1915 1393/1905 1322/1904 -f 1213/1912 1322/1904 1413/1662 1252/1675 -f 1213/1912 1252/1675 1414/1674 1326/1913 -f 1214/1916 1325/1917 1402/1918 1328/1919 -f 1214/1916 1328/1919 1401/1910 1321/1909 -f 1214/1916 1321/1909 1393/1905 1327/1915 -f 1214/1916 1327/1915 1394/1914 1325/1917 -f 4117/1920 1346/1921 1407/1922 4118/1923 -f 4117/1920 4119/1924 1408/1925 1346/1921 -f 1216/1926 1329/1927 1403/1928 1332/1929 -f 1216/1926 1332/1929 1402/1930 1325/1931 -f 1216/1926 1325/1931 1394/1932 1331/1933 -f 1216/1926 1331/1933 1395/1934 1329/1927 -f 4120/1935 1349/1936 1410/1937 4121/1938 -f 4120/1935 4122/1939 4189/1940 1349/1936 -f 1218/1941 1333/1942 1404/1943 1337/1944 -f 1218/1941 1337/1944 1403/1928 1329/1927 -f 1218/1941 1329/1927 1395/1934 1336/1945 -f 1218/1941 1336/1945 1396/1946 1333/1942 -f 4123/1947 4118/1948 1407/1949 1345/1950 -f 4123/1947 1345/1950 1416/1709 1260/1708 -f 1220/1951 1338/1952 1405/1953 1340/1954 -f 1220/1951 1340/1954 1404/1943 1333/1942 -f 1220/1951 1333/1942 1396/1946 1339/1955 -f 1220/1951 1339/1955 1397/1956 1338/1952 -f 4124/1957 1348/1958 1409/1959 4125/1960 -f 4124/1957 4121/1938 1410/1937 1348/1958 -f 1222/1961 1313/1962 1399/1963 1342/1964 -f 1222/1961 1342/1964 1405/1953 1338/1952 -f 1222/1961 1338/1952 1397/1956 1341/1965 -f 1222/1961 1341/1965 1390/1966 1313/1962 -f 1223/1967 1344/1968 4162/1834 1295/1833 -f 1223/1967 1295/1833 1411/1839 1314/1969 -f 1223/1967 1314/1969 1390/1966 1350/1970 -f 1223/1967 1350/1970 1406/1971 1344/1968 -f 1224/1972 4192/1973 4191/1974 1351/1975 -f 1224/1972 1351/1975 1394/1932 1326/1976 -f 1224/1972 1326/1976 1414/1846 1296/1845 -f 1224/1972 1296/1845 4165/1844 4192/1973 -f 1225/1977 4193/1978 4194/1979 1352/1980 -f 1225/1977 1352/1980 1395/1934 1331/1933 -f 1225/1977 1331/1933 1394/1932 1351/1975 -f 1225/1977 1351/1975 4191/1974 4193/1978 -f 1226/1981 1347/1982 4196/1983 1353/1984 -f 1226/1981 1353/1984 1396/1946 1336/1945 -f 1226/1981 1336/1945 1395/1934 1352/1980 -f 1226/1981 1352/1980 4194/1979 1347/1982 -f 1227/1985 4197/1986 4198/1987 1354/1988 -f 1227/1985 1354/1988 1397/1956 1339/1955 -f 1227/1985 1339/1955 1396/1946 1353/1984 -f 1227/1985 1353/1984 4196/1983 4197/1986 -f 1228/1989 4199/1990 1406/1971 1350/1970 -f 1228/1989 1350/1970 1390/1966 1341/1965 -f 1228/1989 1341/1965 1397/1956 1354/1988 -f 1228/1989 1354/1988 4198/1987 4199/1990 -f 1229/1803 1302/1800 1417/1862 1355/1814 -f 1230/1811 1355/1814 1417/1862 1304/1864 -f 1230/1811 1304/1864 1418/1863 1356/1780 -f 1231/1777 1356/1780 1418/1863 1306/1866 -f 1231/1777 1306/1866 1419/1865 1357/1821 -f 1232/1823 1357/1821 1419/1865 1307/1867 -f 4126/1991 4195/1992 1408/1925 4119/1924 -f 4126/1991 4125/1993 1409/1994 4195/1992 -f 4127/1995 4190/1996 4189/1997 4122/1998 -f 4127/1995 1266/1877 1415/1876 4190/1996 -f 1235/1999 1316/1895 1390/1894 1314/2000 -f 1235/1999 1314/2000 1411/1884 1310/1883 -f 1235/1999 1310/1883 1420/1882 1360/2001 -f 1235/1999 1360/2001 1391/1896 1316/1895 -f 1236/2002 1319/1901 1391/1896 1360/2001 -f 1236/2002 1360/2001 1420/1882 1311/1886 -f 1236/2002 1311/1886 1412/1664 1318/1907 -f 1236/2002 1318/1907 1392/1902 1319/1901 -f 1421/2003 4200/2004 4212/2005 4213/2006 -f 1483/2007 1461/2008 4201/2009 -f 1483/2007 4201/2009 1438/2010 -f 1422/2011 1423/2012 1467/2013 1466/2014 -f 4204/2015 4211/2016 1465/2017 -f 1424/2018 1425/2019 1423/2012 1422/2011 -f 1423/2012 1425/2019 1444/2020 4214/2021 -f 1427/2022 1447/2023 1444/2020 1425/2019 -f 1426/2024 1427/2022 1425/2019 1424/2018 -f 1429/2025 1450/2026 1447/2023 1427/2022 -f 1428/2027 1429/2025 1427/2022 1426/2024 -f 1431/2028 1453/2029 1450/2026 1429/2025 -f 1430/2030 1431/2028 1429/2025 1428/2027 -f 1433/2031 1456/2032 1453/2029 1431/2028 -f 1432/2033 1433/2031 1431/2028 1430/2030 -f 1435/2034 1459/2035 1456/2032 1433/2031 -f 1434/2036 1435/2034 1433/2031 1432/2033 -f 4203/2037 4204/2015 1465/2017 -f 4205/2038 4203/2037 1465/2017 -f 4206/2039 4205/2038 1465/2017 -f 4207/2040 4206/2039 1465/2017 -f 4208/2041 4207/2040 1465/2017 -f 4210/2042 4209/2043 1465/2017 -f 4209/2043 4208/2041 1465/2017 -f 1464/2044 1489/2045 1459/2035 1435/2034 -f 1463/2046 1464/2044 1435/2034 1434/2036 -f 4214/2021 1436/2047 1423/2012 -f 1423/2012 1436/2047 1467/2013 -f 1421/2003 4213/2006 1441/2048 4202/2049 -f 1437/2050 4227/2051 4226/2052 4215/2053 -f 1483/2007 4216/2054 1484/2055 -f 1483/2007 1438/2010 4216/2054 -f 1439/2056 1491/2057 1492/2058 1440/2059 -f 4218/2060 1490/2061 4225/2062 -f 1442/2063 1439/2056 1440/2059 1443/2064 -f 1440/2059 4214/2021 1444/2020 1443/2064 -f 1446/2065 1443/2064 1444/2020 1447/2023 -f 1445/2066 1442/2063 1443/2064 1446/2065 -f 1449/2067 1446/2065 1447/2023 1450/2026 -f 1448/2068 1445/2066 1446/2065 1449/2067 -f 1452/2069 1449/2067 1450/2026 1453/2029 -f 1451/2070 1448/2068 1449/2067 1452/2069 -f 1455/2071 1452/2069 1453/2029 1456/2032 -f 1454/2072 1451/2070 1452/2069 1455/2071 -f 1458/2073 1455/2071 1456/2032 1459/2035 -f 1457/2074 1454/2072 1455/2071 1458/2073 -f 4217/2075 1490/2061 4218/2060 -f 4219/2076 1490/2061 4217/2075 -f 4220/2077 1490/2061 4219/2076 -f 4221/2078 1490/2061 4220/2077 -f 4222/2079 1490/2061 4221/2078 -f 4224/2080 1490/2061 4223/2081 -f 4223/2081 1490/2061 4222/2079 -f 1488/2082 1458/2073 1459/2035 1489/2045 -f 1487/2083 1457/2074 1458/2073 1488/2082 -f 4214/2021 1440/2059 1460/2084 -f 1440/2059 1492/2058 1460/2084 -f 1437/2050 4202/2085 1441/2086 4227/2051 -f 1462/2087 4237/2088 4212/2005 4200/2004 -f 1483/2007 4228/2089 1461/2008 -f 1483/2007 1486/2090 4228/2089 -f 1468/2091 1466/2092 1467/2093 1469/2094 -f 4231/2095 1465/2017 4211/2016 -f 1470/2096 1468/2091 1469/2094 1471/2097 -f 1469/2094 4238/2098 1498/2099 1471/2097 -f 1473/2100 1471/2097 1498/2099 1501/2101 -f 1472/2102 1470/2096 1471/2097 1473/2100 -f 1475/2103 1473/2100 1501/2101 1504/2104 -f 1474/2105 1472/2102 1473/2100 1475/2103 -f 1477/2106 1475/2103 1504/2104 1507/2107 -f 1476/2108 1474/2105 1475/2103 1477/2106 -f 1479/2109 1477/2106 1507/2107 1510/2110 -f 1478/2111 1476/2108 1477/2106 1479/2109 -f 1481/2112 1479/2109 1510/2110 1513/2113 -f 1480/2114 1478/2111 1479/2109 1481/2112 -f 4230/2115 1465/2017 4231/2095 -f 4232/2116 1465/2017 4230/2115 -f 4233/2117 1465/2017 4232/2116 -f 4234/2118 1465/2017 4233/2117 -f 4235/2119 1465/2017 4234/2118 -f 4210/2042 1465/2017 4236/2120 -f 4236/2120 1465/2017 4235/2119 -f 1464/2044 1481/2112 1513/2113 1489/2045 -f 1463/2046 1480/2114 1481/2112 1464/2044 -f 4238/2098 1469/2094 1482/2121 -f 1469/2094 1467/2093 1482/2121 -f 1462/2087 4229/2122 1495/2123 4237/2088 -f 1485/2124 4215/2053 4226/2052 4247/2125 -f 1483/2007 1484/2055 4239/2126 -f 1483/2007 4239/2126 1486/2090 -f 1493/2127 1494/2128 1492/2129 1491/2130 -f 4241/2131 4225/2062 1490/2061 -f 1496/2132 1497/2133 1494/2128 1493/2127 -f 1494/2128 1497/2133 1498/2099 4238/2098 -f 1500/2134 1501/2101 1498/2099 1497/2133 -f 1499/2135 1500/2134 1497/2133 1496/2132 -f 1503/2136 1504/2104 1501/2101 1500/2134 -f 1502/2137 1503/2136 1500/2134 1499/2135 -f 1506/2138 1507/2107 1504/2104 1503/2136 -f 1505/2139 1506/2138 1503/2136 1502/2137 -f 1509/2140 1510/2110 1507/2107 1506/2138 -f 1508/2141 1509/2140 1506/2138 1505/2139 -f 1512/2142 1513/2113 1510/2110 1509/2140 -f 1511/2143 1512/2142 1509/2140 1508/2141 -f 4240/2144 4241/2131 1490/2061 -f 4242/2145 4240/2144 1490/2061 -f 4243/2146 4242/2145 1490/2061 -f 4244/2147 4243/2146 1490/2061 -f 4245/2148 4244/2147 1490/2061 -f 4224/2080 4246/2149 1490/2061 -f 4246/2149 4245/2148 1490/2061 -f 1488/2082 1489/2045 1513/2113 1512/2142 -f 1487/2083 1488/2082 1512/2142 1511/2143 -f 4238/2098 1514/2150 1494/2128 -f 1494/2128 1514/2150 1492/2129 -f 1485/2124 4247/2125 1495/2123 4229/2122 -f 1515/2151 4248/2152 4260/2153 4261/2154 -f 1577/2155 1555/2156 4249/2157 -f 1577/2155 4249/2157 1532/2158 -f 1516/2159 1517/2160 1561/2161 1560/2162 -f 4252/2163 4259/2164 1559/2165 -f 1518/2166 1519/2167 1517/2160 1516/2159 -f 1517/2160 1519/2167 1538/2168 4262/2169 -f 1521/2170 1541/2171 1538/2168 1519/2167 -f 1520/2172 1521/2170 1519/2167 1518/2166 -f 1523/2173 1544/2174 1541/2171 1521/2170 -f 1522/2175 1523/2173 1521/2170 1520/2172 -f 1525/2176 1547/2177 1544/2174 1523/2173 -f 1524/2178 1525/2176 1523/2173 1522/2175 -f 1527/2179 1550/2180 1547/2177 1525/2176 -f 1526/2181 1527/2179 1525/2176 1524/2178 -f 1529/2182 1553/2183 1550/2180 1527/2179 -f 1528/2184 1529/2182 1527/2179 1526/2181 -f 4251/2185 4252/2163 1559/2165 -f 4253/2186 4251/2185 1559/2165 -f 4254/2187 4253/2186 1559/2165 -f 4255/2188 4254/2187 1559/2165 -f 4256/2189 4255/2188 1559/2165 -f 4258/2190 4257/2191 1559/2165 -f 4257/2191 4256/2189 1559/2165 -f 1558/2192 1583/2193 1553/2183 1529/2182 -f 1557/2194 1558/2192 1529/2182 1528/2184 -f 4262/2169 1530/2195 1517/2160 -f 1517/2160 1530/2195 1561/2161 -f 1515/2151 4261/2154 1535/2196 4250/2197 -f 1531/2198 4275/2199 4274/2200 4263/2201 -f 1577/2155 4264/2202 1578/2203 -f 1577/2155 1532/2158 4264/2202 -f 1533/2204 1585/2205 1586/2206 1534/2207 -f 4266/2208 1584/2209 4273/2210 -f 1536/2211 1533/2204 1534/2207 1537/2212 -f 1534/2207 4262/2169 1538/2168 1537/2212 -f 1540/2213 1537/2212 1538/2168 1541/2171 -f 1539/2214 1536/2211 1537/2212 1540/2213 -f 1543/2215 1540/2213 1541/2171 1544/2174 -f 1542/2216 1539/2214 1540/2213 1543/2215 -f 1546/2217 1543/2215 1544/2174 1547/2177 -f 1545/2218 1542/2216 1543/2215 1546/2217 -f 1549/2219 1546/2217 1547/2177 1550/2180 -f 1548/2220 1545/2218 1546/2217 1549/2219 -f 1552/2221 1549/2219 1550/2180 1553/2183 -f 1551/2222 1548/2220 1549/2219 1552/2221 -f 4265/2223 1584/2209 4266/2208 -f 4267/2224 1584/2209 4265/2223 -f 4268/2225 1584/2209 4267/2224 -f 4269/2226 1584/2209 4268/2225 -f 4270/2227 1584/2209 4269/2226 -f 4272/2228 1584/2209 4271/2229 -f 4271/2229 1584/2209 4270/2227 -f 1582/2230 1552/2221 1553/2183 1583/2193 -f 1581/2231 1551/2222 1552/2221 1582/2230 -f 4262/2169 1534/2207 1554/2232 -f 1534/2207 1586/2206 1554/2232 -f 1531/2198 4250/2233 1535/2234 4275/2199 -f 1556/2235 4285/2236 4260/2153 4248/2152 -f 1577/2155 4276/2237 1555/2156 -f 1577/2155 1580/2238 4276/2237 -f 1562/2239 1560/2240 1561/2241 1563/2242 -f 4279/2243 1559/2165 4259/2164 -f 1564/2244 1562/2239 1563/2242 1565/2245 -f 1563/2242 4286/2246 1592/2247 1565/2245 -f 1567/2248 1565/2245 1592/2247 1595/2249 -f 1566/2250 1564/2244 1565/2245 1567/2248 -f 1569/2251 1567/2248 1595/2249 1598/2252 -f 1568/2253 1566/2250 1567/2248 1569/2251 -f 1571/2254 1569/2251 1598/2252 1601/2255 -f 1570/2256 1568/2253 1569/2251 1571/2254 -f 1573/2257 1571/2254 1601/2255 1604/2258 -f 1572/2259 1570/2256 1571/2254 1573/2257 -f 1575/2260 1573/2257 1604/2258 1607/2261 -f 1574/2262 1572/2259 1573/2257 1575/2260 -f 4278/2263 1559/2165 4279/2243 -f 4280/2264 1559/2165 4278/2263 -f 4281/2265 1559/2165 4280/2264 -f 4282/2266 1559/2165 4281/2265 -f 4283/2267 1559/2165 4282/2266 -f 4258/2190 1559/2165 4284/2268 -f 4284/2268 1559/2165 4283/2267 -f 1558/2192 1575/2260 1607/2261 1583/2193 -f 1557/2194 1574/2262 1575/2260 1558/2192 -f 4286/2246 1563/2242 1576/2269 -f 1563/2242 1561/2241 1576/2269 -f 1556/2235 4277/2270 1589/2271 4285/2236 -f 1579/2272 4263/2201 4274/2200 4295/2273 -f 1577/2155 1578/2203 4287/2274 -f 1577/2155 4287/2274 1580/2238 -f 1587/2275 1588/2276 1586/2277 1585/2278 -f 4289/2279 4273/2210 1584/2209 -f 1590/2280 1591/2281 1588/2276 1587/2275 -f 1588/2276 1591/2281 1592/2247 4286/2246 -f 1594/2282 1595/2249 1592/2247 1591/2281 -f 1593/2283 1594/2282 1591/2281 1590/2280 -f 1597/2284 1598/2252 1595/2249 1594/2282 -f 1596/2285 1597/2284 1594/2282 1593/2283 -f 1600/2286 1601/2255 1598/2252 1597/2284 -f 1599/2287 1600/2286 1597/2284 1596/2285 -f 1603/2288 1604/2258 1601/2255 1600/2286 -f 1602/2289 1603/2288 1600/2286 1599/2287 -f 1606/2290 1607/2261 1604/2258 1603/2288 -f 1605/2291 1606/2290 1603/2288 1602/2289 -f 4288/2292 4289/2279 1584/2209 -f 4290/2293 4288/2292 1584/2209 -f 4291/2294 4290/2293 1584/2209 -f 4292/2295 4291/2294 1584/2209 -f 4293/2296 4292/2295 1584/2209 -f 4272/2228 4294/2297 1584/2209 -f 4294/2297 4293/2296 1584/2209 -f 1582/2230 1583/2193 1607/2261 1606/2290 -f 1581/2231 1582/2230 1606/2290 1605/2291 -f 4286/2246 1608/2298 1588/2276 -f 1588/2276 1608/2298 1586/2277 -f 1579/2272 4295/2273 1589/2271 4277/2270 -f 1609/2299 4296/2300 4308/2301 4309/2302 -f 1671/2303 1649/2304 4297/2305 -f 1671/2303 4297/2305 1626/2306 -f 1610/2307 1611/2308 1655/2309 1654/2310 -f 4300/2311 4307/2312 1653/2313 -f 1612/2314 1613/2315 1611/2308 1610/2307 -f 1611/2308 1613/2315 1632/2316 4310/2317 -f 1615/2318 1635/2319 1632/2316 1613/2315 -f 1614/2320 1615/2318 1613/2315 1612/2314 -f 1617/2321 1638/2322 1635/2319 1615/2318 -f 1616/2323 1617/2321 1615/2318 1614/2320 -f 1619/2324 1641/2325 1638/2322 1617/2321 -f 1618/2326 1619/2324 1617/2321 1616/2323 -f 1621/2327 1644/2328 1641/2325 1619/2324 -f 1620/2329 1621/2327 1619/2324 1618/2326 -f 1623/2330 1647/2331 1644/2328 1621/2327 -f 1622/2332 1623/2330 1621/2327 1620/2329 -f 4299/2333 4300/2311 1653/2313 -f 4301/2334 4299/2333 1653/2313 -f 4302/2335 4301/2334 1653/2313 -f 4303/2336 4302/2335 1653/2313 -f 4304/2337 4303/2336 1653/2313 -f 4306/2338 4305/2339 1653/2313 -f 4305/2339 4304/2337 1653/2313 -f 1652/2340 1677/2341 1647/2331 1623/2330 -f 1651/2342 1652/2340 1623/2330 1622/2332 -f 4310/2317 1624/2343 1611/2308 -f 1611/2308 1624/2343 1655/2309 -f 1609/2299 4309/2302 1629/2344 4298/2345 -f 1625/2346 4323/2347 4322/2348 4311/2349 -f 1671/2303 4312/2350 1672/2351 -f 1671/2303 1626/2306 4312/2350 -f 1627/2352 1679/2353 1680/2354 1628/2355 -f 4314/2356 1678/2357 4321/2358 -f 1630/2359 1627/2352 1628/2355 1631/2360 -f 1628/2355 4310/2317 1632/2316 1631/2360 -f 1634/2361 1631/2360 1632/2316 1635/2319 -f 1633/2362 1630/2359 1631/2360 1634/2361 -f 1637/2363 1634/2361 1635/2319 1638/2322 -f 1636/2364 1633/2362 1634/2361 1637/2363 -f 1640/2365 1637/2363 1638/2322 1641/2325 -f 1639/2366 1636/2364 1637/2363 1640/2365 -f 1643/2367 1640/2365 1641/2325 1644/2328 -f 1642/2368 1639/2366 1640/2365 1643/2367 -f 1646/2369 1643/2367 1644/2328 1647/2331 -f 1645/2370 1642/2368 1643/2367 1646/2369 -f 4313/2371 1678/2357 4314/2356 -f 4315/2372 1678/2357 4313/2371 -f 4316/2373 1678/2357 4315/2372 -f 4317/2374 1678/2357 4316/2373 -f 4318/2375 1678/2357 4317/2374 -f 4320/2376 1678/2357 4319/2377 -f 4319/2377 1678/2357 4318/2375 -f 1676/2378 1646/2369 1647/2331 1677/2341 -f 1675/2379 1645/2370 1646/2369 1676/2378 -f 4310/2317 1628/2355 1648/2380 -f 1628/2355 1680/2354 1648/2380 -f 1625/2346 4298/2381 1629/2382 4323/2347 -f 1650/2383 4333/2384 4308/2301 4296/2300 -f 1671/2303 4324/2385 1649/2304 -f 1671/2303 1674/2386 4324/2385 -f 1656/2387 1654/2388 1655/2389 1657/2390 -f 4327/2391 1653/2313 4307/2312 -f 1658/2392 1656/2387 1657/2390 1659/2393 -f 1657/2390 4334/2394 1686/2395 1659/2393 -f 1661/2396 1659/2393 1686/2395 1689/2397 -f 1660/2398 1658/2392 1659/2393 1661/2396 -f 1663/2399 1661/2396 1689/2397 1692/2400 -f 1662/2401 1660/2398 1661/2396 1663/2399 -f 1665/2402 1663/2399 1692/2400 1695/2403 -f 1664/2404 1662/2401 1663/2399 1665/2402 -f 1667/2405 1665/2402 1695/2403 1698/2406 -f 1666/2407 1664/2404 1665/2402 1667/2405 -f 1669/2408 1667/2405 1698/2406 1701/2409 -f 1668/2410 1666/2407 1667/2405 1669/2408 -f 4326/2411 1653/2313 4327/2391 -f 4328/2412 1653/2313 4326/2411 -f 4329/2413 1653/2313 4328/2412 -f 4330/2414 1653/2313 4329/2413 -f 4331/2415 1653/2313 4330/2414 -f 4306/2338 1653/2313 4332/2416 -f 4332/2416 1653/2313 4331/2415 -f 1652/2340 1669/2408 1701/2409 1677/2341 -f 1651/2342 1668/2410 1669/2408 1652/2340 -f 4334/2394 1657/2390 1670/2417 -f 1657/2390 1655/2389 1670/2417 -f 1650/2383 4325/2418 1683/2419 4333/2384 -f 1673/2420 4311/2349 4322/2348 4343/2421 -f 1671/2303 1672/2351 4335/2422 -f 1671/2303 4335/2422 1674/2386 -f 1681/2423 1682/2424 1680/2425 1679/2426 -f 4337/2427 4321/2358 1678/2357 -f 1684/2428 1685/2429 1682/2424 1681/2423 -f 1682/2424 1685/2429 1686/2395 4334/2394 -f 1688/2430 1689/2397 1686/2395 1685/2429 -f 1687/2431 1688/2430 1685/2429 1684/2428 -f 1691/2432 1692/2400 1689/2397 1688/2430 -f 1690/2433 1691/2432 1688/2430 1687/2431 -f 1694/2434 1695/2403 1692/2400 1691/2432 -f 1693/2435 1694/2434 1691/2432 1690/2433 -f 1697/2436 1698/2406 1695/2403 1694/2434 -f 1696/2437 1697/2436 1694/2434 1693/2435 -f 1700/2438 1701/2409 1698/2406 1697/2436 -f 1699/2439 1700/2438 1697/2436 1696/2437 -f 4336/2440 4337/2427 1678/2357 -f 4338/2441 4336/2440 1678/2357 -f 4339/2442 4338/2441 1678/2357 -f 4340/2443 4339/2442 1678/2357 -f 4341/2444 4340/2443 1678/2357 -f 4320/2376 4342/2445 1678/2357 -f 4342/2445 4341/2444 1678/2357 -f 1676/2378 1677/2341 1701/2409 1700/2438 -f 1675/2379 1676/2378 1700/2438 1699/2439 -f 4334/2394 1702/2446 1682/2424 -f 1682/2424 1702/2446 1680/2425 -f 1673/2420 4343/2421 1683/2419 4325/2418 -f 1703/2447 4344/2448 4356/2449 4357/2450 -f 1765/2451 1743/2452 4345/2453 -f 1765/2451 4345/2453 1720/2454 -f 1704/2455 1705/2456 1749/2457 1748/2458 -f 4348/2459 4355/2460 1747/2461 -f 1706/2462 1707/2463 1705/2456 1704/2455 -f 1705/2456 1707/2463 1726/2464 4358/2465 -f 1709/2466 1729/2467 1726/2464 1707/2463 -f 1708/2468 1709/2466 1707/2463 1706/2462 -f 1711/2469 1732/2470 1729/2467 1709/2466 -f 1710/2471 1711/2469 1709/2466 1708/2468 -f 1713/2472 1735/2473 1732/2470 1711/2469 -f 1712/2474 1713/2472 1711/2469 1710/2471 -f 1715/2475 1738/2476 1735/2473 1713/2472 -f 1714/2477 1715/2475 1713/2472 1712/2474 -f 1717/2478 1741/2479 1738/2476 1715/2475 -f 1716/2480 1717/2478 1715/2475 1714/2477 -f 4347/2481 4348/2459 1747/2461 -f 4349/2482 4347/2481 1747/2461 -f 4350/2483 4349/2482 1747/2461 -f 4351/2484 4350/2483 1747/2461 -f 4352/2485 4351/2484 1747/2461 -f 4354/2486 4353/2487 1747/2461 -f 4353/2487 4352/2485 1747/2461 -f 1746/2488 1771/2489 1741/2479 1717/2478 -f 1745/2490 1746/2488 1717/2478 1716/2480 -f 4358/2465 1718/2491 1705/2456 -f 1705/2456 1718/2491 1749/2457 -f 1703/2447 4357/2450 1723/2492 4346/2493 -f 1719/2494 4371/2495 4370/2496 4359/2497 -f 1765/2451 4360/2498 1766/2499 -f 1765/2451 1720/2454 4360/2498 -f 1721/2500 1773/2501 1774/2502 1722/2503 -f 4362/2504 1772/2505 4369/2506 -f 1724/2507 1721/2500 1722/2503 1725/2508 -f 1722/2503 4358/2465 1726/2464 1725/2508 -f 1728/2509 1725/2508 1726/2464 1729/2467 -f 1727/2510 1724/2507 1725/2508 1728/2509 -f 1731/2511 1728/2509 1729/2467 1732/2470 -f 1730/2512 1727/2510 1728/2509 1731/2511 -f 1734/2513 1731/2511 1732/2470 1735/2473 -f 1733/2514 1730/2512 1731/2511 1734/2513 -f 1737/2515 1734/2513 1735/2473 1738/2476 -f 1736/2516 1733/2514 1734/2513 1737/2515 -f 1740/2517 1737/2515 1738/2476 1741/2479 -f 1739/2518 1736/2516 1737/2515 1740/2517 -f 4361/2519 1772/2505 4362/2504 -f 4363/2520 1772/2505 4361/2519 -f 4364/2521 1772/2505 4363/2520 -f 4365/2522 1772/2505 4364/2521 -f 4366/2523 1772/2505 4365/2522 -f 4368/2524 1772/2505 4367/2525 -f 4367/2525 1772/2505 4366/2523 -f 1770/2526 1740/2517 1741/2479 1771/2489 -f 1769/2527 1739/2518 1740/2517 1770/2526 -f 4358/2465 1722/2503 1742/2528 -f 1722/2503 1774/2502 1742/2528 -f 1719/2494 4346/2529 1723/2530 4371/2495 -f 1744/2531 4381/2532 4356/2449 4344/2448 -f 1765/2451 4372/2533 1743/2452 -f 1765/2451 1768/2534 4372/2533 -f 1750/2535 1748/2536 1749/2537 1751/2538 -f 4375/2539 1747/2461 4355/2460 -f 1752/2540 1750/2535 1751/2538 1753/2541 -f 1751/2538 4382/2542 1780/2543 1753/2541 -f 1755/2544 1753/2541 1780/2543 1783/2545 -f 1754/2546 1752/2540 1753/2541 1755/2544 -f 1757/2547 1755/2544 1783/2545 1786/2548 -f 1756/2549 1754/2546 1755/2544 1757/2547 -f 1759/2550 1757/2547 1786/2548 1789/2551 -f 1758/2552 1756/2549 1757/2547 1759/2550 -f 1761/2553 1759/2550 1789/2551 1792/2554 -f 1760/2555 1758/2552 1759/2550 1761/2553 -f 1763/2556 1761/2553 1792/2554 1795/2557 -f 1762/2558 1760/2555 1761/2553 1763/2556 -f 4374/2559 1747/2461 4375/2539 -f 4376/2560 1747/2461 4374/2559 -f 4377/2561 1747/2461 4376/2560 -f 4378/2562 1747/2461 4377/2561 -f 4379/2563 1747/2461 4378/2562 -f 4354/2486 1747/2461 4380/2564 -f 4380/2564 1747/2461 4379/2563 -f 1746/2488 1763/2556 1795/2557 1771/2489 -f 1745/2490 1762/2558 1763/2556 1746/2488 -f 4382/2542 1751/2538 1764/2565 -f 1751/2538 1749/2537 1764/2565 -f 1744/2531 4373/2566 1777/2567 4381/2532 -f 1767/2568 4359/2497 4370/2496 4391/2569 -f 1765/2451 1766/2499 4383/2570 -f 1765/2451 4383/2570 1768/2534 -f 1775/2571 1776/2572 1774/2573 1773/2574 -f 4385/2575 4369/2506 1772/2505 -f 1778/2576 1779/2577 1776/2572 1775/2571 -f 1776/2572 1779/2577 1780/2543 4382/2542 -f 1782/2578 1783/2545 1780/2543 1779/2577 -f 1781/2579 1782/2578 1779/2577 1778/2576 -f 1785/2580 1786/2548 1783/2545 1782/2578 -f 1784/2581 1785/2580 1782/2578 1781/2579 -f 1788/2582 1789/2551 1786/2548 1785/2580 -f 1787/2583 1788/2582 1785/2580 1784/2581 -f 1791/2584 1792/2554 1789/2551 1788/2582 -f 1790/2585 1791/2584 1788/2582 1787/2583 -f 1794/2586 1795/2557 1792/2554 1791/2584 -f 1793/2587 1794/2586 1791/2584 1790/2585 -f 4384/2588 4385/2575 1772/2505 -f 4386/2589 4384/2588 1772/2505 -f 4387/2590 4386/2589 1772/2505 -f 4388/2591 4387/2590 1772/2505 -f 4389/2592 4388/2591 1772/2505 -f 4368/2524 4390/2593 1772/2505 -f 4390/2593 4389/2592 1772/2505 -f 1770/2526 1771/2489 1795/2557 1794/2586 -f 1769/2527 1770/2526 1794/2586 1793/2587 -f 4382/2542 1796/2594 1776/2572 -f 1776/2572 1796/2594 1774/2573 -f 1767/2568 4391/2569 1777/2567 4373/2566 -f 1194/2595 4158/2596 4157/2597 -f 1194/2595 4155/2598 4158/2596 -f 1194/2595 4154/2599 4153/2600 -f 1194/2595 4151/2601 4154/2599 -f 1194/2595 4156/2602 4155/2598 -f 1194/2595 4153/2600 4156/2602 -f 1194/2595 4148/2603 4147/2604 -f 1194/2595 4146/2605 4148/2603 -f 1194/2595 4159/2606 4144/2607 -f 1194/2595 4157/2597 4159/2606 -f 1194/2595 4144/2607 4145/2608 -f 1194/2595 4145/2608 4146/2605 -f 1194/2595 4152/2609 4151/2601 -f 1194/2595 4149/2610 4152/2609 -f 1194/2595 4150/2611 4149/2610 -f 1194/2595 4147/2604 4150/2611 -f 1230/1811 1356/1780 1334/1779 1233/1812 -f 851/2612 4076/2613 4088/2614 -f 851/2612 4088/2614 4086/2615 -f 851/2612 3961/2616 4075/2617 -f 851/2612 4075/2617 4076/2613 -f 851/2612 3959/2618 3960/2619 -f 851/2612 3960/2619 3961/2616 -f 851/2612 4084/2620 4083/2621 -f 851/2612 4083/2621 4082/2622 -f 851/2612 4077/2623 4078/2624 -f 851/2612 4078/2624 3959/2618 -f 851/2612 4082/2622 4085/2625 -f 851/2612 4085/2625 4020/2626 -f 851/2612 4079/2627 4080/2628 -f 851/2612 4080/2628 4077/2623 -f 851/2612 4020/2626 4021/2629 -f 851/2612 4021/2629 4022/2630 -f 851/2612 4022/2630 4081/2631 -f 851/2612 4081/2631 4079/2627 -f 851/2612 4086/2615 4087/2632 -f 851/2612 4087/2632 4084/2620 -f 3843/2633 3844/2634 3908/2635 3909/2636 -f 3997/2637 3907/2638 3908/2639 3844/2640 -f 3840/2641 3842/2642 3793/2643 3792/2644 -f 3837/2645 3839/2646 3910/2647 3911/2648 -f 3845/2649 3905/2650 3906/2651 4000/2652 -f 3843/2633 3909/2636 3910/2647 3839/2646 -f 3840/2641 3792/2644 3791/2653 3841/2654 -f 3849/2655 3996/2656 3795/2657 3794/2658 -f 4068/2659 3841/2654 3791/2653 3789/2660 -f 3845/2649 3846/2661 3790/2662 3905/2650 -f 4068/2659 3789/2660 3790/2662 3846/2661 -f 3849/2655 3794/2658 3793/2643 3842/2642 -f 3997/2637 4000/2652 3906/2651 3907/2638 -f 3995/2663 3838/2664 3912/2665 3913/2666 -f 3995/2663 3913/2666 3795/2657 3996/2656 -f 3837/2645 3911/2648 3912/2665 3838/2664 -f 539/936 3703/2667 3699/2668 623/831 -f 516/893 3716/2669 3708/2670 646/890 -f 478/750 669/754 3664/2671 588/751 -f 504/834 624/830 3698/2672 3706/2673 -f 518/896 668/897 3652/2674 561/695 -f 464/690 3653/2675 3654/2676 560/689 -f 463/688 3655/2677 3646/2678 559/687 -f 476/747 3667/2679 3666/2680 587/748 -f 503/829 3697/2681 3698/2672 624/830 -f 517/895 644/888 3712/2682 3714/2683 -f 539/936 667/692 3652/2674 3703/2667 -f 477/749 587/748 3666/2680 3665/2684 -f 503/829 623/831 3699/2668 3697/2681 -f 477/749 3665/2684 3660/2685 584/743 -f 540/938 558/686 3645/2686 3650/2687 -f 505/838 625/835 3705/2688 3704/2689 -f 504/834 3706/2673 3705/2688 625/835 -f 493/793 3745/794 3691/2690 3694/2691 -f 474/739 3659/2692 3661/2693 609/740 -f 461/682 3647/2694 3648/2695 556/683 -f 463/688 560/689 3654/2676 3655/2677 -f 514/884 3710/2696 3712/2682 644/888 -f 476/747 586/745 3658/2697 3667/2679 -f 493/793 3694/2691 3649/2698 607/684 -f 475/744 585/746 3657/2699 3656/2700 -f 533/928 3739/2701 3736/2702 3770/929 -f 514/884 664/887 3711/2703 3710/2696 -f 465/691 561/695 3652/2674 667/692 -f 505/838 3704/2689 3702/2704 621/824 -f 491/779 3688/775 3692/778 557/780 -f 516/893 647/894 3715/2705 3716/2669 -f 502/822 621/824 3702/2704 3700/2706 -f 540/938 3650/2687 3652/2674 668/897 -f 538/934 588/751 3664/2671 670/935 -f 462/685 559/687 3646/2678 3644/2707 -f 542/940 3662/2708 3657/2699 585/746 -f 461/682 607/684 3649/2698 3647/2694 -f 515/889 3707/2709 3709/2710 645/892 -f 535/825 3740/828 3711/2703 664/887 -f 502/822 3700/2706 3701/2711 662/823 -f 542/940 670/935 3664/2671 3662/2708 -f 495/797 609/740 3661/2693 3695/903 -f 515/889 646/890 3708/2670 3707/2709 -f 462/685 3644/2707 3645/2686 558/686 -f 475/744 3656/2700 3658/2697 586/745 -f 3738/922 622/923 3737/917 3734/916 -f 517/895 3714/2683 3715/2705 647/894 -f 474/739 584/743 3660/2685 3659/2692 -f 464/690 556/683 3648/2695 3653/2675 -f 533/928 662/823 3701/2711 3739/2701 -f 541/939 3713/2712 3664/2671 669/754 -f 541/939 645/892 3709/2710 3713/2712 -f 1802/2713 1803/2714 1798/2715 1797/2716 -f 1805/2717 1806/2718 1801/2719 1800/2720 -f 1804/2721 1805/2717 1800/2720 1799/2722 -f 1803/2714 1804/2721 1799/2722 1798/2715 -f 1809/2723 1810/2724 1805/2717 1804/2721 -f 1808/2725 1809/2723 1804/2721 1803/2714 -f 1807/2726 1808/2725 1803/2714 1802/2713 -f 1810/2724 1811/2727 1806/2718 1805/2717 -f 1814/2728 1815/2729 1810/2724 1809/2723 -f 1813/2730 1814/2728 1809/2723 1808/2725 -f 1812/2731 1813/2730 1808/2725 1807/2726 -f 1815/2729 1816/2732 1811/2727 1810/2724 -f 1819/2733 1820/2734 1815/2729 1814/2728 -f 1818/2735 1819/2733 1814/2728 1813/2730 -f 1817/2736 1818/2735 1813/2730 1812/2731 -f 1820/2734 1821/2737 1816/2732 1815/2729 -f 1824/2738 1825/2739 1820/2734 1819/2733 -f 1823/2740 1824/2738 1819/2733 1818/2735 -f 1822/2741 1823/2740 1818/2735 1817/2736 -f 1825/2739 1826/2742 1821/2737 1820/2734 -f 1829/2743 1830/2744 1825/2739 1824/2738 -f 1828/2745 1829/2743 1824/2738 1823/2740 -f 1827/2746 1828/2745 1823/2740 1822/2741 -f 1830/2744 1831/2747 1826/2742 1825/2739 -f 1834/2748 1835/2749 1830/2744 1829/2743 -f 1833/2750 1834/2748 1829/2743 1828/2745 -f 1832/2751 1833/2750 1828/2745 1827/2746 -f 1835/2749 1836/2752 1831/2747 1830/2744 -f 1839/2753 1840/2754 1835/2749 1834/2748 -f 1838/2755 1839/2753 1834/2748 1833/2750 -f 1837/2756 1838/2755 1833/2750 1832/2751 -f 1840/2754 1841/2757 1836/2752 1835/2749 -f 1844/2758 1845/2759 1840/2754 1839/2753 -f 1843/2760 1844/2758 1839/2753 1838/2755 -f 1842/2761 1843/2760 1838/2755 1837/2756 -f 1845/2759 1846/2762 1841/2757 1840/2754 -f 1849/2763 1850/2764 1845/2759 1844/2758 -f 1848/2765 1849/2763 1844/2758 1843/2760 -f 1847/2766 1848/2765 1843/2760 1842/2761 -f 1850/2764 1851/2767 1846/2762 1845/2759 -f 3763/738 4423/2768 4422/2769 3764/734 -f 3764/734 4422/2769 4421/2770 3765/735 -f 4420/2771 3786/881 3765/735 4421/2770 -f 4419/2772 3785/882 3786/881 4420/2771 -f 4395/2773 3727/2774 3729/899 4393/2775 -f 3727/2774 4395/2773 4396/2776 3682/2777 -f 4397/2778 3681/2779 3682/2777 4396/2776 -f 3681/2779 4397/2778 4398/2780 3684/862 -f 3762/742 1854/2781 4423/2768 3763/738 -f 3761/741 1853/2782 1854/2781 3762/742 -f 1853/2782 3761/741 3767/798 1852/2783 -f 1852/2783 3767/798 3684/862 4398/2780 -f 1857/2784 4417/2785 4424/2786 4426/2787 -f 1857/2784 4426/2787 4428/2788 1856/2789 -f 1856/2789 4428/2788 4427/2790 1855/2791 -f 4427/2790 4399/2792 4400/2793 1855/2791 -f 1857/2784 4413/2794 4415/2795 4417/2785 -f 1855/2791 4400/2793 4403/2796 4405/2797 -f 1856/2789 4411/2798 4413/2794 1857/2784 -f 1855/2791 4405/2797 4407/2799 1856/2789 -f 1856/2789 4407/2799 4409/2800 4411/2798 -f 1860/2801 4418/2802 4416/2803 1863/2804 -f 1860/2801 1863/2804 1862/2805 1859/2806 -f 1859/2806 1862/2805 1861/2807 1858/2808 -f 4394/2809 1858/2808 1861/2807 4401/2810 -f 4404/2811 4402/2812 4401/2810 1861/2807 -f 4416/2803 4414/2813 4412/2814 1863/2804 -f 1863/2804 4412/2814 4410/2815 1862/2805 -f 1862/2805 4406/2816 4404/2811 1861/2807 -f 4410/2815 4408/2817 4406/2816 1862/2805 -f 4425/2818 3784/885 3785/882 4419/2772 -f 4430/2819 3783/886 3784/885 4425/2818 -f 3783/886 4430/2819 4429/2820 3788/898 -f 3788/898 4429/2820 4393/2775 3729/899 -f 1864/2821 1954/2822 2092/2823 2013/2824 -f 1864/2821 1958/2825 2079/2826 1954/2822 -f 1864/2821 1950/2827 2096/2828 1958/2825 -f 1864/2821 2013/2824 2119/2829 1950/2827 -f 1865/2830 1957/2831 2081/2832 1961/2833 -f 1865/2830 1960/2834 2082/2835 1957/2831 -f 1865/2830 1953/2836 2099/2837 1960/2834 -f 1865/2830 1961/2833 2098/2838 1953/2836 -f 1866/2839 1956/2840 2080/2841 1962/2842 -f 1866/2839 1961/2833 2081/2832 1956/2840 -f 1866/2839 1952/2843 2098/2838 1961/2833 -f 1866/2839 1962/2842 2097/2844 1952/2843 -f 1867/2845 1955/2846 2079/2826 1958/2825 -f 1867/2845 1962/2842 2080/2841 1955/2846 -f 1867/2845 1951/2847 2097/2844 1962/2842 -f 1867/2845 1958/2825 2096/2828 1951/2847 -f 1868/2848 1954/2822 2079/2826 1963/2849 -f 1868/2848 2014/2850 2092/2823 1954/2822 -f 1869/2851 1957/2831 2082/2835 1965/2852 -f 1869/2851 1966/2853 2081/2832 1957/2831 -f 1870/2854 1956/2840 2081/2832 1966/2853 -f 1870/2854 1967/2855 2080/2841 1956/2840 -f 1871/2856 1955/2846 2080/2841 1967/2855 -f 1871/2856 1963/2849 2079/2826 1955/2846 -f 1872/2857 2025/2858 2104/2859 2074/2860 -f 1872/2857 1968/2861 2099/2837 2025/2858 -f 1873/42 1972/45 2086/44 1976/43 -f 1873/42 1975/47 2087/46 1972/45 -f 1874/48 1969/51 2093/50 2015/49 -f 1874/48 1977/53 2084/52 1969/51 -f 1875/54 1973/55 2087/46 1975/47 -f 1875/54 1974/57 2105/56 1973/55 -f 1876/58 1970/59 2084/52 1977/53 -f 1876/58 1979/61 2085/60 1970/59 -f 1877/62 1971/63 2085/60 1979/61 -f 1877/62 1976/43 2086/44 1971/63 -f 1878/64 1982/67 2113/66 1989/65 -f 1878/64 1988/69 2114/68 1982/67 -f 1878/64 1986/71 2091/70 1988/69 -f 1878/64 1989/65 2090/72 1986/71 -f 1879/73 1981/76 2112/75 1990/74 -f 1879/73 1989/65 2113/66 1981/76 -f 1879/73 1985/77 2090/72 1989/65 -f 1879/73 1990/74 2089/78 1985/77 -f 1880/79 1980/82 2111/81 1987/80 -f 1880/79 1990/74 2112/75 1980/82 -f 1880/79 1984/83 2089/78 1990/74 -f 1880/79 1987/80 2088/84 1984/83 -f 1881/85 1983/88 2094/87 2016/86 -f 1881/85 1991/89 2088/84 1983/88 -f 1882/90 1986/71 2090/72 1993/91 -f 1882/90 1992/92 2091/70 1986/71 -f 1883/93 1985/77 2089/78 1994/94 -f 1883/93 1993/91 2090/72 1985/77 -f 1884/95 1984/83 2088/84 1991/89 -f 1884/95 1994/94 2089/78 1984/83 -f 1885/96 2048/98 2114/68 1995/97 -f 1885/96 2076/100 2118/99 2048/98 -f 1891/101 4542/55 4543/56 2003/102 -f 1891/101 2008/103 4541/46 4542/55 -f 1892/104 4540/45 4541/46 2008/103 -f 1892/104 2007/105 4539/44 4540/45 -f 1893/106 2011/108 4533/50 2018/107 -f 1893/106 2004/110 4546/109 2011/108 -f 1894/111 4538/63 4539/44 2007/105 -f 1894/111 2006/112 4537/60 4538/63 -f 1895/113 1959/116 2078/115 2002/114 -f 1895/113 2001/118 2095/117 1959/116 -f 1896/119 4536/59 4537/60 2006/112 -f 1896/119 2005/120 4535/52 4536/59 -f 1897/121 1978/124 2083/123 4463/122 -f 1898/125 2002/114 2078/115 1964/126 -f 1899/2862 2010/2863 4531/2864 4530/2865 -f 1899/2862 2013/2824 2092/2823 2010/2863 -f 1899/2862 2009/2866 2119/2829 2013/2824 -f 1899/2862 4530/2865 4529/2867 2009/2866 -f 1930/133 4512/136 2062/135 2058/134 -f 1903/137 4462/106 4465/107 2017/138 -f 1900/2868 2010/2863 2092/2823 2014/2850 -f 1900/2868 4532/2869 4531/2864 2010/2863 -f 1901/141 4553/108 4547/109 4477/142 -f 1901/141 2015/49 2093/50 4553/108 -f 1902/143 2016/86 2094/87 2012/144 -f 1943/145 4508/148 2060/147 1937/146 -f 1889/149 1999/150 4473/120 4472/119 -f 1904/151 4534/51 4535/52 2005/120 -f 1904/151 2018/107 4533/50 4534/51 -f 1905/2870 2068/2871 2120/2872 2019/2873 -f 1905/2870 1950/2827 2119/2829 2068/2871 -f 1905/2870 2023/2874 2096/2828 1950/2827 -f 1905/2870 2019/2873 2101/2875 2023/2874 -f 1906/2876 2026/2877 2103/2878 2022/2879 -f 1906/2876 1953/2836 2098/2838 2026/2877 -f 1906/2876 2025/2858 2099/2837 1953/2836 -f 1906/2876 2022/2879 2104/2859 2025/2858 -f 1907/2880 2027/2881 2102/2882 2021/2883 -f 1907/2880 1952/2843 2097/2844 2027/2881 -f 1907/2880 2026/2877 2098/2838 1952/2843 -f 1907/2880 2021/2883 2103/2878 2026/2877 -f 1908/2884 2023/2874 2101/2875 2020/2885 -f 1908/2884 1951/2847 2096/2828 2023/2874 -f 1908/2884 2027/2881 2097/2844 1951/2847 -f 1908/2884 2020/2885 2102/2882 2027/2881 -f 1909/2886 2019/2873 2120/2872 2069/2887 -f 1909/2886 2028/2888 2101/2875 2019/2873 -f 1942/171 4527/174 4520/173 1938/172 -f 1910/2889 2022/2879 2103/2878 2031/2890 -f 1910/2889 2030/2891 2104/2859 2022/2879 -f 1890/178 2000/179 4467/112 4466/111 -f 1911/2892 2021/2883 2102/2882 2032/2893 -f 1911/2892 2031/2890 2103/2878 2021/2883 -f 1888/182 1997/183 4456/103 4455/101 -f 1912/2894 2020/2885 2101/2875 2028/2888 -f 1912/2894 2032/2893 2102/2882 2020/2885 -f 1913/185 2039/188 2109/187 2036/186 -f 1928/189 1931/192 2064/191 2055/190 -f 1913/185 2036/186 2110/194 2038/193 -f 1914/195 2070/198 2121/197 2033/196 -f 1914/195 2033/196 2107/200 2040/199 -f 1915/201 2038/193 2110/194 2037/202 -f 1915/201 2037/202 4544/204 4438/203 -f 1916/205 2040/199 2107/200 2034/206 -f 1902/143 2012/144 4470/208 4480/207 -f 1916/205 2034/206 2108/210 2042/209 -f 1917/211 2042/209 2108/210 2035/212 -f 1929/213 1936/216 2061/215 2057/214 -f 1886/217 4460/104 4456/103 1997/183 -f 1917/211 2035/212 2109/187 2039/188 -f 1918/218 2049/219 2113/66 1982/67 -f 1918/218 2046/221 2117/220 2049/219 -f 1918/218 2048/98 2118/99 2046/221 -f 1918/218 1982/67 2114/68 2048/98 -f 1919/222 2050/223 2112/75 1981/76 -f 1919/222 2045/225 2116/224 2050/223 -f 1919/222 2049/219 2117/220 2045/225 -f 1919/222 1981/76 2113/66 2049/219 -f 1920/226 2047/227 2111/81 1980/82 -f 1920/226 2044/229 2115/228 2047/227 -f 1920/226 2050/223 2116/224 2044/229 -f 1920/226 1980/82 2112/75 2050/223 -f 1921/230 2071/233 2122/232 2043/231 -f 1921/230 2043/231 2115/228 2051/234 -f 1922/235 2053/236 2117/220 2046/221 -f 1929/213 2058/134 2062/135 1936/216 -f 1890/178 4466/111 4461/105 1998/237 -f 1922/235 2046/221 2118/99 2052/238 -f 1923/239 2054/240 2116/224 2045/225 -f 1923/239 2045/225 2117/220 2053/236 -f 1924/241 2051/234 2115/228 2044/229 -f 1924/241 2044/229 2116/224 2054/240 -f 1925/2895 1960/2834 2099/2837 1968/2861 -f 1925/2895 2075/2896 2082/2835 1960/2834 -f 1942/171 1938/172 4515/245 2067/244 -f 1887/246 4483/151 4473/120 1999/150 -f 1889/149 4472/119 4467/112 2000/179 -f 1928/189 4450/248 4457/247 1931/192 -f 1902/143 4480/207 4474/250 4482/249 -f 1927/251 2057/214 2061/215 1944/252 -f 4504/192 4459/247 4545/204 4567/202 -f 4504/192 4567/202 4566/194 4505/191 -f 1932/253 4505/191 4566/194 4565/186 -f 1932/253 4565/186 4564/187 2063/254 -f 1933/148 4509/256 4558/197 2066/255 -f 1933/148 2066/255 4568/257 4510/147 -f 1934/136 2063/254 4564/187 4563/212 -f 1934/136 4563/212 4562/210 4513/135 -f 1935/258 2059/261 2100/260 2024/259 -f 1935/258 2024/259 2095/117 2001/118 -f 4517/216 4513/135 4562/210 4561/206 -f 4517/216 4561/206 4560/200 4518/215 -f 4519/262 4511/265 2106/264 2041/263 -f 1926/266 4506/253 4507/254 2056/267 -f 4525/268 2029/269 2100/260 2059/261 -f 1939/2897 4555/2898 4556/2899 2065/2900 -f 1939/2897 2009/2866 4529/2867 4555/2898 -f 1939/2897 2068/2871 2119/2829 2009/2866 -f 1939/2897 2065/2900 2120/2872 2068/2871 -f 1940/2901 2065/2900 4556/2899 4557/2902 -f 1940/2901 2069/2887 2120/2872 2065/2900 -f 1941/276 4522/277 4569/257 4574/255 -f 1886/217 1998/237 4461/105 4460/104 -f 1943/145 2072/278 2073/256 4508/148 -f 1941/276 4574/255 2121/197 2070/198 -f 1942/171 2067/244 2122/232 2071/233 -f 1903/137 4476/279 4464/110 4462/106 -f 4528/252 4518/215 4560/200 4559/196 -f 4528/252 4559/196 4558/197 4509/256 -f 1945/280 1995/97 2114/68 1988/69 -f 1930/133 2056/267 4507/254 4512/136 -f 1945/280 1988/69 2091/70 2077/281 -f 1946/2903 2074/2860 2104/2859 2030/2891 -f 1888/182 4455/101 4458/102 1996/283 -f 1927/251 1944/252 2073/256 2072/278 -f 1947/2904 1965/2852 2082/2835 2075/2896 -f 1948/285 2052/238 2118/99 2076/100 -f 1887/246 2017/138 4465/107 4483/151 -f 1926/266 2055/190 2064/191 4506/253 -f 1949/286 2077/281 2091/70 1992/92 -f 1946/2903 2030/2891 4486/2905 4490/2906 -f 1923/239 2053/236 4495/290 4503/289 -f 1885/96 1995/97 4451/291 2076/100 -f 1911/2892 4493/2907 4485/2908 2031/2890 -f 1925/2895 1968/2861 4439/2909 2075/2896 -f 1871/2856 1967/2855 4441/2910 4440/2911 -f 1870/2854 1966/2853 4433/2912 4442/2913 -f 1883/93 1994/94 4453/300 4454/299 -f 1910/2889 2031/2890 4485/2908 4484/2914 -f 1924/241 4501/303 4499/302 2051/234 -f 1946/2903 4490/2906 4439/2909 2074/2860 -f 1884/95 4452/304 4453/300 1994/94 -f 1910/2889 4484/2914 4486/2905 2030/2891 -f 1884/95 1991/89 4447/305 4452/304 -f 1947/2904 4437/2915 4432/2916 1965/2852 -f 1912/2894 4491/2917 4492/2918 2032/2893 -f 1911/2892 2032/2893 4492/2918 4493/2907 -f 1900/2868 4481/2919 4478/2920 4532/2869 -f 1881/85 2016/86 4448/313 4446/312 -f 1868/2848 1963/2849 4435/2921 4434/2922 -f 1870/2854 4442/2913 4441/2910 1967/2855 -f 1921/230 2051/234 4499/302 4497/316 -f 1883/93 4454/299 4445/317 1993/91 -f 1900/2868 2014/2850 4436/2923 4481/2919 -f 1882/90 4443/320 4444/319 1992/92 -f 1940/2901 4557/2902 4523/2924 4526/2925 -f 1921/230 4497/316 4498/323 2071/233 -f 1872/2857 2074/2860 4439/2909 1968/2861 -f 1912/2894 2028/2888 4489/2926 4491/2917 -f 1898/125 1964/126 4479/124 4475/121 -f 1923/239 4503/289 4502/325 2054/240 -f 1909/2886 4487/2927 4489/2926 2028/2888 -f 1947/2904 2075/2896 4439/2909 4437/2915 -f 1945/280 2077/281 4451/291 1995/97 -f 1869/2851 4431/2928 4433/2912 1966/2853 -f 1949/286 1992/92 4444/319 4449/328 -f 1868/2848 4434/2922 4436/2923 2014/2850 -f 1922/235 2052/238 4496/330 4494/329 -f 1942/171 2071/233 4498/323 4527/174 -f 1909/2886 2069/2887 4488/2929 4487/2927 -f 1949/286 4449/328 4451/291 2077/281 -f 1902/143 4482/249 4448/313 2016/86 -f 1922/235 4494/329 4495/290 2053/236 -f 1869/2851 1965/2852 4432/2916 4431/2928 -f 1882/90 1993/91 4445/317 4443/320 -f 4525/268 4521/262 4524/263 2029/269 -f 1924/241 2054/240 4502/325 4501/303 -f 1881/85 4446/312 4447/305 1991/89 -f 1871/2856 4440/2911 4435/2921 1963/2849 -f 1940/2901 4526/2925 4488/2929 2069/2887 -f 1948/285 2076/100 4451/291 4500/332 -f 1948/285 4500/332 4496/330 2052/238 -f 2128/333 2123/336 2124/335 2129/334 -f 2131/337 2126/340 2127/339 2132/338 -f 2130/341 2125/342 2126/340 2131/337 -f 2129/334 2124/335 2125/342 2130/341 -f 2135/343 2130/341 2131/337 2136/344 -f 2134/345 2129/334 2130/341 2135/343 -f 2133/346 2128/333 2129/334 2134/345 -f 2136/344 2131/337 2132/338 2137/347 -f 2140/348 2135/343 2136/344 2141/349 -f 2139/350 2134/345 2135/343 2140/348 -f 2138/351 2133/346 2134/345 2139/350 -f 2141/349 2136/344 2137/347 2142/352 -f 2145/353 2140/348 2141/349 2146/354 -f 2144/355 2139/350 2140/348 2145/353 -f 2143/356 2138/351 2139/350 2144/355 -f 2146/354 2141/349 2142/352 2147/357 -f 2150/358 2145/353 2146/354 2151/359 -f 2149/360 2144/355 2145/353 2150/358 -f 2148/361 2143/356 2144/355 2149/360 -f 2151/359 2146/354 2147/357 2152/362 -f 2155/363 2150/358 2151/359 2156/364 -f 2154/365 2149/360 2150/358 2155/363 -f 2153/366 2148/361 2149/360 2154/365 -f 2156/364 2151/359 2152/362 2157/367 -f 2160/368 2155/363 2156/364 2161/369 -f 2159/370 2154/365 2155/363 2160/368 -f 2158/371 2153/366 2154/365 2159/370 -f 2161/369 2156/364 2157/367 2162/372 -f 2165/373 2160/368 2161/369 2166/374 -f 2164/375 2159/370 2160/368 2165/373 -f 2163/376 2158/371 2159/370 2164/375 -f 2166/374 2161/369 2162/372 2167/377 -f 2170/378 2165/373 2166/374 2171/379 -f 2169/380 2164/375 2165/373 2170/378 -f 2168/381 2163/376 2164/375 2169/380 -f 2171/379 2166/374 2167/377 2172/382 -f 2175/383 2170/378 2171/379 2176/384 -f 2174/385 2169/380 2170/378 2175/383 -f 2173/386 2168/381 2169/380 2174/385 -f 2176/384 2171/379 2172/382 2177/387 -f 4550/84 4551/80 4605/389 4606/388 -f 4551/80 4552/81 4604/390 4605/389 -f 4603/391 4604/390 4552/81 4573/227 -f 4602/392 4603/391 4573/227 4572/228 -f 4578/393 4576/395 4516/245 4514/394 -f 4514/394 4469/397 4579/396 4578/393 -f 4580/398 4579/396 4469/397 4468/399 -f 4468/399 4471/208 4581/400 4580/398 -f 4549/88 4550/84 4606/388 2180/401 -f 4548/87 4549/88 2180/401 2179/402 -f 2179/402 2178/403 4554/144 4548/87 -f 2178/403 4581/400 4471/208 4554/144 -f 2183/404 4609/407 4607/406 4600/405 -f 2183/404 2182/409 4611/408 4609/407 -f 2182/409 2181/411 4610/410 4611/408 -f 4610/410 2181/411 4583/413 4582/412 -f 2183/404 4600/405 4598/415 4596/414 -f 2181/411 4588/417 4586/416 4583/413 -f 2182/409 2183/404 4596/414 4594/418 -f 2181/411 2182/409 4590/419 4588/417 -f 2182/409 4594/418 4592/420 4590/419 -f 2186/421 2189/424 4599/423 4601/422 -f 2186/421 2185/426 2188/425 2189/424 -f 2185/426 2184/428 2187/427 2188/425 -f 4577/429 4584/430 2187/427 2184/428 -f 4587/431 2187/427 4584/430 4585/432 -f 4599/423 2189/424 4595/434 4597/433 -f 2189/424 2188/425 4593/435 4595/434 -f 2188/425 2187/427 4587/431 4589/436 -f 4593/435 2188/425 4589/436 4591/437 -f 4608/438 4602/392 4572/228 4571/231 -f 4613/439 4608/438 4571/231 4570/232 -f 4570/232 4575/244 4612/440 4613/439 -f 4575/244 4516/245 4576/395 4612/440 -f 2190/2930 2280/2931 2418/2932 2339/2933 -f 2190/2930 2284/2934 2405/2935 2280/2931 -f 2190/2930 2276/2936 2422/2937 2284/2934 -f 2190/2930 2339/2933 2445/2938 2276/2936 -f 2191/2939 2283/2940 2407/2941 2287/2942 -f 2191/2939 2286/2943 2408/2944 2283/2940 -f 2191/2939 2279/2945 2425/2946 2286/2943 -f 2191/2939 2287/2942 2424/2947 2279/2945 -f 2192/2948 2282/2949 2406/2950 2288/2951 -f 2192/2948 2287/2942 2407/2941 2282/2949 -f 2192/2948 2278/2952 2424/2947 2287/2942 -f 2192/2948 2288/2951 2423/2953 2278/2952 -f 2193/2954 2281/2955 2405/2935 2284/2934 -f 2193/2954 2288/2951 2406/2950 2281/2955 -f 2193/2954 2277/2956 2423/2953 2288/2951 -f 2193/2954 2284/2934 2422/2937 2277/2956 -f 2194/2957 2280/2931 2405/2935 2289/2958 -f 2194/2957 2340/2959 2418/2932 2280/2931 -f 2195/2960 2283/2940 2408/2944 2291/2961 -f 2195/2960 2292/2962 2407/2941 2283/2940 -f 2196/2963 2282/2949 2407/2941 2292/2962 -f 2196/2963 2293/2964 2406/2950 2282/2949 -f 2197/2965 2281/2955 2406/2950 2293/2964 -f 2197/2965 2289/2958 2405/2935 2281/2955 -f 2198/2966 2351/2967 2430/2968 2400/2969 -f 2198/2966 2294/2970 2425/2946 2351/2967 -f 2199/696 2298/699 2412/698 2302/697 -f 2199/696 2301/701 2413/700 2298/699 -f 2200/702 2295/705 2419/704 2341/703 -f 2200/702 2303/707 2410/706 2295/705 -f 2201/708 2299/709 2413/700 2301/701 -f 2201/708 2300/711 2431/710 2299/709 -f 2202/712 2296/713 2410/706 2303/707 -f 2202/712 2305/715 2411/714 2296/713 -f 2203/716 2297/717 2411/714 2305/715 -f 2203/716 2302/697 2412/698 2297/717 -f 2204/718 2308/721 2439/720 2315/719 -f 2204/718 2314/723 2440/722 2308/721 -f 2204/718 2312/725 2417/724 2314/723 -f 2204/718 2315/719 2416/726 2312/725 -f 2205/727 2307/730 2438/729 2316/728 -f 2205/727 2315/719 2439/720 2307/730 -f 2205/727 2311/731 2416/726 2315/719 -f 2205/727 2316/728 2415/732 2311/731 -f 2206/733 2306/736 2437/735 2313/734 -f 2206/733 2316/728 2438/729 2306/736 -f 2206/733 2310/737 2415/732 2316/728 -f 2206/733 2313/734 2414/738 2310/737 -f 2207/739 2309/742 2420/741 2342/740 -f 2207/739 2317/743 2414/738 2309/742 -f 2208/744 2312/725 2416/726 2319/745 -f 2208/744 2318/746 2417/724 2312/725 -f 2209/747 2311/731 2415/732 2320/748 -f 2209/747 2319/745 2416/726 2311/731 -f 2210/749 2310/737 2414/738 2317/743 -f 2210/749 2320/748 2415/732 2310/737 -f 2211/750 2374/752 2440/722 2321/751 -f 2211/750 2402/754 2444/753 2374/752 -f 2217/755 4725/709 4726/710 2329/756 -f 2217/755 2334/757 4724/700 4725/709 -f 2218/758 4723/699 4724/700 2334/757 -f 2218/758 2333/759 4722/698 4723/699 -f 2219/760 2337/762 4716/704 2344/761 -f 2219/760 2330/764 4729/763 2337/762 -f 2220/765 4721/717 4722/698 2333/759 -f 2220/765 2332/766 4720/714 4721/717 -f 2221/767 2285/770 2404/769 2328/768 -f 2221/767 2327/772 2421/771 2285/770 -f 2222/773 4719/713 4720/714 2332/766 -f 2222/773 2331/774 4718/706 4719/713 -f 2223/775 2304/778 2409/777 4646/776 -f 2224/779 2328/768 2404/769 2290/780 -f 2225/2971 2336/2972 4714/2973 4713/2974 -f 2225/2971 2339/2933 2418/2932 2336/2972 -f 2225/2971 2335/2975 2445/2938 2339/2933 -f 2225/2971 4713/2974 4712/2976 2335/2975 -f 2256/787 4695/790 2388/789 2384/788 -f 2229/791 4645/760 4648/761 2343/792 -f 2226/2977 2336/2972 2418/2932 2340/2959 -f 2226/2977 4715/2978 4714/2973 2336/2972 -f 2227/795 4736/762 4730/763 4660/796 -f 2227/795 2341/703 2419/704 4736/762 -f 2228/797 2342/740 2420/741 2338/798 -f 2269/799 4691/802 2386/801 2263/800 -f 2215/803 2325/804 4656/774 4655/773 -f 2230/805 4717/705 4718/706 2331/774 -f 2230/805 2344/761 4716/704 4717/705 -f 2231/2979 2394/2980 2446/2981 2345/2982 -f 2231/2979 2276/2936 2445/2938 2394/2980 -f 2231/2979 2349/2983 2422/2937 2276/2936 -f 2231/2979 2345/2982 2427/2984 2349/2983 -f 2232/2985 2352/2986 2429/2987 2348/2988 -f 2232/2985 2279/2945 2424/2947 2352/2986 -f 2232/2985 2351/2967 2425/2946 2279/2945 -f 2232/2985 2348/2988 2430/2968 2351/2967 -f 2233/2989 2353/2990 2428/2991 2347/2992 -f 2233/2989 2278/2952 2423/2953 2353/2990 -f 2233/2989 2352/2986 2424/2947 2278/2952 -f 2233/2989 2347/2992 2429/2987 2352/2986 -f 2234/2993 2349/2983 2427/2984 2346/2994 -f 2234/2993 2277/2956 2422/2937 2349/2983 -f 2234/2993 2353/2990 2423/2953 2277/2956 -f 2234/2993 2346/2994 2428/2991 2353/2990 -f 2235/2995 2345/2982 2446/2981 2395/2996 -f 2235/2995 2354/2997 2427/2984 2345/2982 -f 2268/825 4710/828 4703/827 2264/826 -f 2236/2998 2348/2988 2429/2987 2357/2999 -f 2236/2998 2356/3000 2430/2968 2348/2988 -f 2216/832 2326/833 4650/766 4649/765 -f 2237/3001 2347/2992 2428/2991 2358/3002 -f 2237/3001 2357/2999 2429/2987 2347/2992 -f 2214/836 2323/837 4639/757 4638/755 -f 2238/3003 2346/2994 2427/2984 2354/2997 -f 2238/3003 2358/3002 2428/2991 2346/2994 -f 2239/839 2365/842 2435/841 2362/840 -f 2254/843 2257/846 2390/845 2381/844 -f 2239/839 2362/840 2436/848 2364/847 -f 2240/849 2396/852 2447/851 2359/850 -f 2240/849 2359/850 2433/854 2366/853 -f 2241/855 2364/847 2436/848 2363/856 -f 2241/855 2363/856 4727/858 4621/857 -f 2242/859 2366/853 2433/854 2360/860 -f 2228/797 2338/798 4653/862 4663/861 -f 2242/859 2360/860 2434/864 2368/863 -f 2243/865 2368/863 2434/864 2361/866 -f 2255/867 2262/870 2387/869 2383/868 -f 2212/871 4643/758 4639/757 2323/837 -f 2243/865 2361/866 2435/841 2365/842 -f 2244/872 2375/873 2439/720 2308/721 -f 2244/872 2372/875 2443/874 2375/873 -f 2244/872 2374/752 2444/753 2372/875 -f 2244/872 2308/721 2440/722 2374/752 -f 2245/876 2376/877 2438/729 2307/730 -f 2245/876 2371/879 2442/878 2376/877 -f 2245/876 2375/873 2443/874 2371/879 -f 2245/876 2307/730 2439/720 2375/873 -f 2246/880 2373/881 2437/735 2306/736 -f 2246/880 2370/883 2441/882 2373/881 -f 2246/880 2376/877 2442/878 2370/883 -f 2246/880 2306/736 2438/729 2376/877 -f 2247/884 2397/887 2448/886 2369/885 -f 2247/884 2369/885 2441/882 2377/888 -f 2248/889 2379/890 2443/874 2372/875 -f 2255/867 2384/788 2388/789 2262/870 -f 2216/832 4649/765 4644/759 2324/891 -f 2248/889 2372/875 2444/753 2378/892 -f 2249/893 2380/894 2442/878 2371/879 -f 2249/893 2371/879 2443/874 2379/890 -f 2250/895 2377/888 2441/882 2370/883 -f 2250/895 2370/883 2442/878 2380/894 -f 2251/3004 2286/2943 2425/2946 2294/2970 -f 2251/3004 2401/3005 2408/2944 2286/2943 -f 2268/825 2264/826 4698/899 2393/898 -f 2213/900 4666/805 4656/774 2325/804 -f 2215/803 4655/773 4650/766 2326/833 -f 2254/843 4633/902 4640/901 2257/846 -f 2228/797 4663/861 4657/904 4665/903 -f 2253/905 2383/868 2387/869 2270/906 -f 4687/846 4642/901 4728/858 4750/856 -f 4687/846 4750/856 4749/848 4688/845 -f 2258/907 4688/845 4749/848 4748/840 -f 2258/907 4748/840 4747/841 2389/908 -f 2259/802 4692/910 4741/851 2392/909 -f 2259/802 2392/909 4751/911 4693/801 -f 2260/790 2389/908 4747/841 4746/866 -f 2260/790 4746/866 4745/864 4696/789 -f 2261/912 2385/915 2426/914 2350/913 -f 2261/912 2350/913 2421/771 2327/772 -f 4700/870 4696/789 4745/864 4744/860 -f 4700/870 4744/860 4743/854 4701/869 -f 4702/916 4694/919 2432/918 2367/917 -f 2252/920 4689/907 4690/908 2382/921 -f 4708/922 2355/923 2426/914 2385/915 -f 2265/3006 4738/3007 4739/3008 2391/3009 -f 2265/3006 2335/2975 4712/2976 4738/3007 -f 2265/3006 2394/2980 2445/2938 2335/2975 -f 2265/3006 2391/3009 2446/2981 2394/2980 -f 2266/3010 2391/3009 4739/3008 4740/3011 -f 2266/3010 2395/2996 2446/2981 2391/3009 -f 2267/930 4705/931 4752/911 4757/909 -f 2212/871 2324/891 4644/759 4643/758 -f 2269/799 2398/932 2399/910 4691/802 -f 2267/930 4757/909 2447/851 2396/852 -f 2268/825 2393/898 2448/886 2397/887 -f 2229/791 4659/933 4647/764 4645/760 -f 4711/906 4701/869 4743/854 4742/850 -f 4711/906 4742/850 4741/851 4692/910 -f 2271/934 2321/751 2440/722 2314/723 -f 2256/787 2382/921 4690/908 4695/790 -f 2271/934 2314/723 2417/724 2403/935 -f 2272/3012 2400/2969 2430/2968 2356/3000 -f 2214/836 4638/755 4641/756 2322/937 -f 2253/905 2270/906 2399/910 2398/932 -f 2273/3013 2291/2961 2408/2944 2401/3005 -f 2274/939 2378/892 2444/753 2402/754 -f 2213/900 2343/792 4648/761 4666/805 -f 2252/920 2381/844 2390/845 4689/907 -f 2275/940 2403/935 2417/724 2318/746 -f 2449/941 2742/944 2897/943 2748/942 -f 2449/941 2749/946 2896/945 2742/944 -f 2511/947 5015/950 5014/949 2696/948 -f 2450/951 2743/954 2898/953 2747/952 -f 2450/951 2748/942 2897/943 2743/954 -f 2511/947 2695/956 5012/955 5015/950 -f 2451/957 2744/960 2899/959 2746/958 -f 2451/957 2747/952 2898/953 2744/960 -f 2509/961 2693/964 5009/963 5011/962 -f 2578/965 2808/968 2645/967 2475/966 -f 2578/965 2475/966 2644/970 2809/969 -f 2580/971 2473/974 2642/973 2581/972 -f 2577/975 2582/978 2646/977 4790/976 -f 4778/979 2569/982 2633/981 2795/980 -f 2579/983 2474/986 2643/985 2810/984 -f 2453/987 2588/990 2887/989 2591/988 -f 2453/987 2590/992 2886/991 2588/990 -f 2575/993 2806/996 2802/995 2570/994 -f 2454/997 2736/1000 2892/999 2593/998 -f 2454/997 2592/1002 2891/1001 2736/1000 -f 2455/1003 2585/1006 2890/1005 2595/1004 -f 2455/1003 2594/1008 2889/1007 2585/1006 -f 2456/1009 2587/1012 2888/1011 2596/1010 -f 2456/1009 2591/1014 2887/1013 2587/1012 -f 2576/1015 2807/1018 2635/1017 2571/1016 -f 2457/1019 2735/1020 2891/1001 2592/1002 -f 2457/1019 2595/1004 2890/1005 2735/1020 -f 2458/1021 2601/1024 2813/1023 2603/1022 -f 2458/1021 2602/1026 2814/1025 2601/1024 -f 2458/1021 2600/1028 2812/1027 2602/1026 -f 2458/1021 2603/1022 2811/1029 2600/1028 -f 2459/1030 2604/1033 2815/1032 2605/1031 -f 2459/1030 2620/1035 2816/1034 2604/1033 -f 2459/1030 2601/1024 2814/1025 2620/1035 -f 2459/1030 2605/1031 2813/1023 2601/1024 -f 2460/1036 2607/1039 2818/1038 2608/1037 -f 2460/1036 2621/1041 2819/1040 2607/1039 -f 2460/1036 2604/1033 2816/1034 2621/1041 -f 2460/1036 2608/1037 2815/1032 2604/1033 -f 2461/1042 2609/1045 2820/1044 2610/1043 -f 2461/1042 2622/1047 2821/1046 2609/1045 -f 2461/1042 2607/1039 2819/1040 2622/1047 -f 2461/1042 2610/1043 2818/1038 2607/1039 -f 2462/1048 2611/1051 2822/1050 2612/1049 -f 2462/1048 2623/1053 2823/1052 2611/1051 -f 2462/1048 2609/1045 2821/1046 2623/1053 -f 2462/1048 2612/1049 2820/1044 2609/1045 -f 2580/971 2810/984 2643/985 2473/974 -f 2464/1054 2624/1057 2824/1056 2613/1055 -f 2464/1054 2734/1059 2884/1058 2624/1057 -f 2464/1054 2724/1061 4994/1060 2734/1059 -f 2464/1054 2613/1055 2825/1062 2724/1061 -f 2465/1063 2605/1031 2815/1032 2608/1037 -f 2465/1063 2615/1064 2813/1023 2605/1031 -f 2465/1063 2606/1066 2817/1065 2615/1064 -f 2465/1063 2608/1037 2818/1038 2606/1066 -f 2466/1067 2610/1043 2820/1044 2612/1049 -f 2466/1067 2606/1066 2818/1038 2610/1043 -f 2466/1067 2616/1068 2817/1065 2606/1066 -f 2466/1067 2612/1049 2822/1050 2616/1068 -f 2467/1069 2615/1064 2817/1065 2618/1070 -f 2467/1069 2603/1022 2813/1023 2615/1064 -f 2467/1069 2619/1071 2811/1029 2603/1022 -f 2467/1069 2618/1070 2826/1072 2619/1071 -f 2468/1073 2600/1028 2811/1029 2619/1071 -f 2468/1073 2625/1074 2812/1027 2600/1028 -f 2468/1073 2614/1076 2827/1075 2625/1074 -f 2468/1073 2619/1071 2826/1072 2614/1076 -f 4778/979 2631/1078 4781/1077 2569/982 -f 2470/1079 2626/1082 2867/1081 2710/1080 -f 2470/1079 2630/1084 2829/1083 2626/1082 -f 2470/1079 2627/1086 2830/1085 2630/1084 -f 2470/1079 2710/1080 2868/1087 2627/1086 -f 2471/1088 5001/1061 5000/1062 4779/1089 -f 2472/1090 2774/1093 5004/1092 2799/1091 -f 2472/1090 2798/1095 5042/1094 2774/1093 -f 4783/1096 2647/1099 2840/1098 4784/1097 -f 4783/1096 4785/1101 2841/1100 2647/1099 -f 4786/1102 2648/1103 2841/1100 4785/1101 -f 4786/1102 4787/1105 2842/1104 2648/1103 -f 4788/1106 2649/1107 2842/1104 4787/1105 -f 4788/1106 4789/1109 2843/1108 2649/1107 -f 2476/1110 2650/1111 2843/1108 4789/1109 -f 2476/1110 4791/1113 2844/1112 2650/1111 -f 2478/1114 4925/1053 4924/1046 2794/1115 -f 2573/1116 2804/1119 2800/1118 2566/1117 -f 2478/1114 2793/1120 4926/1052 4925/1053 -f 2580/971 2567/1122 2797/1121 2810/984 -f 2479/1123 4921/1041 4920/1034 2653/1124 -f 2479/1123 2797/1121 4922/1040 4921/1041 -f 2564/1125 2795/980 2633/981 4871/1126 -f 2471/1088 4820/1127 2875/1060 5001/1061 -f 2480/1128 4917/1026 4918/1027 2758/1129 -f 2480/1128 2652/1130 4916/1025 4917/1026 -f 2481/1131 2636/1134 2833/1133 2796/1132 -f 2481/1131 4798/1136 2834/1135 2636/1134 -f 2482/1137 4779/1089 5000/1062 2773/1138 -f 2565/1139 5039/1140 4926/1052 2793/1120 -f 2482/1137 2773/1138 2902/1142 2632/1141 -f 2483/1143 5021/1146 2885/1145 2597/1144 -f 2483/1143 2593/998 2892/999 5021/1146 -f 2564/1125 4871/1126 2651/1148 4793/1147 -f 4903/1149 2803/1152 2629/1151 4796/1150 -f 2484/1153 2586/1154 2889/1007 2594/1008 -f 2484/1153 2596/1010 2888/1011 2586/1154 -f 2508/1155 2860/1157 2691/1156 -f 2508/1155 2691/1156 2853/1158 -f 2485/1159 2589/1160 2886/991 2590/992 -f 2485/1159 2597/1144 2885/1145 2589/1160 -f 2508/1155 2859/1162 2690/1161 -f 2514/1163 5003/1166 2878/1165 2699/1164 -f 2516/1167 2700/1170 5006/1169 5008/1168 -f 2508/1155 2690/1161 2860/1157 -f 2509/961 5011/962 5010/1172 2694/1171 -f 2508/1155 2858/1174 2689/1173 -f 2508/1155 2689/1173 2859/1162 -f 2512/1175 5016/1178 2880/1177 2697/1176 -f 2513/1179 2697/1176 2880/1177 4996/1180 -f 2512/1175 2696/948 5014/949 5016/1178 -f 2508/1155 2857/1182 2688/1181 -f 2508/1155 2688/1181 2858/1174 -f 2508/1155 2856/1184 2687/1183 -f 2508/1155 2687/1183 2857/1182 -f 2508/1155 2855/1186 2686/1185 -f 2487/1187 2599/1190 4767/1189 4775/1188 -f 2514/1163 2698/1192 4995/1191 5003/1166 -f 2469/1193 2656/1196 4773/1195 4777/1194 -f 2508/1155 2686/1185 2856/1184 -f 2508/1155 2854/1198 4978/1197 -f 2508/1155 4978/1197 2855/1186 -f 2490/1199 2655/1202 4776/1201 4805/1200 -f 2508/1155 2853/1158 2684/1203 -f 2491/1204 2658/1207 4768/1206 4766/1205 -f 2508/1155 2684/1203 2854/1198 -f 2492/1208 2678/1211 2851/1210 2668/1209 -f 2492/1208 2671/1213 2850/1212 2678/1211 -f 4842/1214 4829/1217 4976/1216 4989/1215 -f 2486/1218 2598/1221 4770/1220 4803/1219 -f 2493/1222 2661/1225 2845/1224 2663/1223 -f 2493/1222 2664/1227 4954/1226 2661/1225 -f 2494/1228 4955/1231 2846/1230 2660/1229 -f 2494/1228 2662/1233 4956/1232 4955/1231 -f 4846/1234 4988/1237 4985/1236 4824/1235 -f 2495/1238 2666/1239 4954/1226 2664/1227 -f 2495/1238 2667/1241 2847/1240 2666/1239 -f 2496/1242 2672/1245 2849/1244 2674/1243 -f 2496/1242 2677/1247 4959/1246 2672/1245 -f 4849/1248 4984/1251 4981/1250 4835/1249 -f 4852/1252 4980/1255 4977/1254 4839/1253 -f 2497/1256 2669/1257 2847/1240 2667/1241 -f 2497/1256 2670/1259 2848/1258 2669/1257 -f 2498/1260 4958/1263 4957/1262 2680/1261 -f 2498/1260 2660/1229 2846/1230 4958/1263 -f 4838/1264 2685/1267 4974/1266 4830/1265 -f 2499/1268 4962/1269 2848/1258 2670/1259 -f 2499/1268 2673/1271 4961/1270 4962/1269 -f 2500/1272 2683/1273 4956/1232 2662/1233 -f 2500/1272 2665/1275 2852/1274 2683/1273 -f 4838/1264 4839/1277 4977/1276 2685/1267 -f 4833/1278 4835/1249 4981/1250 4982/1279 -f 2487/1187 4775/1188 4776/1201 2655/1202 -f 2501/1280 2675/1281 4961/1270 2673/1271 -f 2501/1280 2676/1283 4963/1282 2675/1281 -f 2502/1284 2681/1285 2852/1274 2665/1275 -f 2502/1284 2668/1209 2851/1210 2681/1285 -f 4842/1214 4989/1215 4987/1287 4843/1286 -f 2503/1288 4969/1289 4963/1282 2676/1283 -f 2503/1288 2679/1291 4968/1290 4969/1289 -f 2504/1292 4964/1293 2850/1212 2671/1213 -f 2504/1292 2674/1243 2849/1244 4964/1293 -f 4828/1294 4975/1295 4976/1216 4829/1217 -f 2505/1296 4972/1299 4968/1298 2679/1297 -f 2505/1296 2682/1301 4971/1300 4972/1299 -f 2506/1302 4960/1303 4959/1246 2677/1247 -f 2506/1302 2680/1261 4957/1262 4960/1303 -f 4833/1278 4982/1279 4979/1305 4834/1304 -f 2507/1306 4973/1307 4971/1300 2682/1301 -f 2507/1306 2663/1223 2845/1224 4973/1307 -f 4849/1248 4823/1309 4983/1308 4984/1251 -f 2489/1310 4772/1311 4773/1195 2656/1196 -f 4822/1312 4824/1235 4985/1236 4986/1313 -f 2490/1199 4805/1200 4774/1315 2657/1314 -f 4852/1252 4834/1304 4979/1305 4980/1255 -f 4822/1312 4986/1313 4983/1308 4823/1309 -f 2491/1204 4766/1205 4767/1189 2599/1190 -f 2489/1310 2657/1314 4774/1315 4772/1311 -f 4828/1294 4830/1265 4974/1266 4975/1295 -f 4846/1234 4843/1286 4987/1287 4988/1237 -f 2488/1316 4769/1317 4770/1220 2598/1221 -f 2486/1218 4803/1219 4804/1319 2659/1318 -f 2463/1320 4806/1321 4768/1206 2658/1207 -f 2469/1193 4777/1194 4771/1323 2654/1322 -f 2577/975 4790/976 2645/967 2808/968 -f 2579/983 2809/969 2644/970 2474/986 -f 2452/1324 4913/1326 4914/1325 -f 2452/1324 4914/1325 4915/1327 -f 2452/1324 4911/1329 4912/1328 -f 2452/1324 4912/1328 4913/1326 -f 2452/1324 4909/1331 4910/1330 -f 2452/1324 4910/1330 4911/1329 -f 2452/1324 4907/1333 4908/1332 -f 2452/1324 4908/1332 4909/1331 -f 2452/1324 4905/1335 4906/1334 -f 2452/1324 4906/1334 4907/1333 -f 2452/1324 5017/1337 5018/1336 -f 2452/1324 5018/1336 4905/1335 -f 2452/1324 5019/1339 5020/1338 -f 2452/1324 5020/1338 5017/1337 -f 2452/1324 4915/1327 2737/1340 -f 2452/1324 2737/1340 5019/1339 -f 2545/1341 4899/1344 2755/1343 2768/1342 -f 2547/1345 4887/1348 2763/1347 2756/1346 -f 2545/1341 2769/1350 2762/1349 4899/1344 -f 2560/1351 2768/1342 2755/1343 4897/1352 -f 2463/1320 2659/1318 4804/1319 4806/1321 -f 2563/1353 4891/1356 2757/1355 2767/1354 -f 2561/1357 4895/1360 2760/1359 2754/1358 -f 2547/1345 2770/1362 2764/1361 4887/1348 -f 2563/1353 2789/1364 2759/1363 4891/1356 -f 2488/1316 2654/1322 4771/1323 4769/1317 -f 2546/1365 4884/1366 2762/1349 2769/1350 -f 2517/1367 2702/1370 4932/1369 4933/1368 -f 2517/1367 2709/1372 2866/1371 2702/1370 -f 2517/1367 2703/1373 2867/1081 2709/1372 -f 2517/1367 4933/1368 4934/1374 2703/1373 -f 2518/1375 2703/1373 4934/1374 2637/1376 -f 2518/1375 2710/1080 2867/1081 2703/1373 -f 2518/1375 2704/1377 2868/1087 2710/1080 -f 2518/1375 2637/1376 2835/1378 2704/1377 -f 2519/1379 2704/1377 2835/1378 2638/1380 -f 2519/1379 2711/1381 2868/1087 2704/1377 -f 2519/1379 2705/1383 2869/1382 2711/1381 -f 2519/1379 2638/1380 2836/1384 2705/1383 -f 2520/1385 2705/1388 2836/1387 2639/1386 -f 2520/1385 2712/1390 2869/1389 2705/1388 -f 2520/1385 2706/1392 2870/1391 2712/1390 -f 2520/1385 2639/1386 2837/1393 2706/1392 -f 2521/1394 2706/1392 2837/1393 2640/1395 -f 2521/1394 2713/1396 2870/1391 2706/1392 -f 2521/1394 2707/1398 2871/1397 2713/1396 -f 2521/1394 2640/1395 4942/1399 2707/1398 -f 2522/1400 2707/1398 4942/1399 2641/1401 -f 2522/1400 2714/1402 2871/1397 2707/1398 -f 2522/1400 2708/1404 2872/1403 2714/1402 -f 2522/1400 2641/1401 2838/1405 2708/1404 -f 2523/1406 2717/1409 2873/1408 2731/1407 -f 2523/1406 2701/1411 2865/1410 2717/1409 -f 2523/1406 2718/1413 2832/1412 2701/1411 -f 2523/1406 2731/1407 2881/1414 2718/1413 -f 2524/1415 2726/1416 2832/1412 2718/1413 -f 2524/1415 2719/1418 4999/1417 2726/1416 -f 2524/1415 2730/1420 2882/1419 2719/1418 -f 2524/1415 2718/1413 2881/1414 2730/1420 -f 2525/1421 2723/1422 4999/1417 2719/1418 -f 2525/1421 2720/1423 2838/1405 2723/1422 -f 2525/1421 2729/1425 2883/1424 2720/1423 -f 2525/1421 2719/1418 2882/1419 2729/1425 -f 2526/1426 4998/1429 4944/1428 4873/1427 -f 2526/1426 4872/1431 2874/1430 4998/1429 -f 2527/1432 4943/1434 2839/1433 2635/1017 -f 2527/1432 4873/1427 4944/1428 4943/1434 -f 2528/1435 2716/1436 2872/1403 2708/1404 -f 2528/1435 2728/1438 2876/1437 2716/1436 -f 2528/1435 2720/1423 2883/1424 2728/1438 -f 2528/1435 2708/1404 2838/1405 2720/1423 -f 2549/1439 4889/1440 2764/1361 2770/1362 -f 2561/1357 2790/1442 2761/1441 4895/1360 -f 2549/1439 2767/1354 2757/1355 4889/1440 -f 2546/1365 2756/1346 2763/1347 4884/1366 -f 2562/1443 4893/1444 2759/1363 2789/1364 -f 2562/1443 2754/1358 2760/1359 4893/1444 -f 2560/1351 4897/1352 2761/1441 2790/1442 -f 2529/1445 2614/1076 2826/1072 2733/1446 -f 2529/1445 2721/1447 2827/1075 2614/1076 -f 2529/1445 2734/1059 4994/1060 2721/1447 -f 2529/1445 2733/1446 2884/1058 2734/1059 -f 2530/1448 2741/1449 2896/945 2749/946 -f 2530/1448 2750/1451 2895/1450 2741/1449 -f 2516/1167 5008/1168 5009/963 2693/964 -f 2531/1452 2740/1453 2895/1450 2750/1451 -f 2531/1452 2751/1455 2894/1454 2740/1453 -f 2515/1456 2699/1164 2878/1165 5007/1457 -f 2532/1458 2739/1459 2894/1454 2751/1455 -f 2532/1458 2752/1461 2893/1460 2739/1459 -f 2513/1179 4996/1180 4995/1463 2698/1462 -f 2533/1464 2738/1465 2893/1460 2752/1461 -f 2533/1464 2753/1467 2900/1466 2738/1465 -f 2510/1468 2694/1171 5010/1172 5013/1469 -f 2534/1470 2745/1471 2900/1466 2753/1467 -f 2534/1470 2746/958 2899/959 2745/1471 -f 2510/1468 5013/1469 5012/955 2695/956 -f 2515/1456 5007/1457 5006/1169 2700/1170 -f 2535/1472 5033/1475 5032/1474 4886/1473 -f 2535/1472 4885/1477 5034/1476 5033/1475 -f 4862/1478 4863/1481 4845/1480 4844/1479 -f 2536/1482 5035/1483 5034/1476 4885/1477 -f 2536/1482 4888/1485 5036/1484 5035/1483 -f 4858/1486 4836/1489 4832/1488 4857/1487 -f 2537/1490 5037/1491 5036/1484 4888/1485 -f 2537/1490 4890/1493 5022/1492 5037/1491 -f 4855/1494 4857/1487 4832/1488 4831/1495 -f 2538/1496 5023/1497 5022/1492 4890/1493 -f 2538/1496 4892/1499 5024/1498 5023/1497 -f 4870/1500 4856/1503 4827/1502 4825/1501 -f 2539/1504 5025/1505 5024/1498 4892/1499 -f 2539/1504 4894/1507 5026/1506 5025/1505 -f 4870/1500 4825/1501 4826/1509 4869/1508 -f 4855/1494 4831/1495 4827/1502 4856/1503 -f 2540/1510 5027/1513 5026/1512 4894/1511 -f 2540/1510 4896/1515 5028/1514 5027/1513 -f 4866/1516 4867/1519 4851/1518 4850/1517 -f 2541/1520 5029/1521 5028/1514 4896/1515 -f 2541/1520 4898/1523 5030/1522 5029/1521 -f 4868/1524 4869/1508 4826/1509 4853/1525 -f 2542/1526 5031/1527 5030/1522 4898/1523 -f 2542/1526 4886/1473 5032/1474 5031/1527 -f 4866/1516 4850/1517 4848/1529 4865/1528 -f 2543/1530 2617/1531 2824/1056 2624/1057 -f 2543/1530 2618/1070 2817/1065 2617/1531 -f 2543/1530 2733/1446 2826/1072 2618/1070 -f 2543/1530 2624/1057 2884/1058 2733/1446 -f 2544/1532 2613/1055 2824/1056 2766/1533 -f 2544/1532 5043/1138 2825/1062 2613/1055 -f 2544/1532 2765/1534 5040/1142 5043/1138 -f 2544/1532 2766/1533 2904/1535 2765/1534 -f 4864/1536 4865/1528 4848/1529 4847/1537 -f 2545/1341 2701/1411 2832/1412 2769/1350 -f 2545/1341 2768/1342 2865/1410 2701/1411 -f 2546/1365 2769/1350 2832/1412 5044/1538 -f 4862/1478 4844/1479 4841/1540 4861/1539 -f 2546/1365 5044/1538 2901/1541 2756/1346 -f 2547/1345 2756/1346 2901/1541 2772/1542 -f 4864/1536 4847/1537 4845/1480 4863/1481 -f 2547/1345 2772/1542 4932/1369 2770/1362 -f 2548/1543 4919/1035 4916/1025 2652/1130 -f 2548/1543 2653/1124 4920/1034 4919/1035 -f 4801/1544 4780/1545 4781/1077 2631/1078 -f 4794/1546 4796/1150 2629/1151 4799/1547 -f 2567/1122 2794/1115 4924/1046 4923/1047 -f 2549/1439 2702/1370 2866/1371 2767/1354 -f 2549/1439 2770/1362 4932/1369 2702/1370 -f 4860/1548 4861/1539 4841/1540 4840/1549 -f 2550/1550 2775/1551 2822/1050 2611/1051 -f 2550/1550 2765/1534 2904/1535 2775/1551 -f 2550/1550 2771/1140 5040/1142 2765/1534 -f 2550/1550 2611/1051 2823/1052 2771/1140 -f 2551/1552 2777/1553 2866/1371 2709/1372 -f 2551/1552 2780/1555 2863/1554 2777/1553 -f 2551/1552 2626/1082 2829/1083 2780/1555 -f 2551/1552 2709/1372 2867/1081 2626/1082 -f 2552/1556 2627/1086 2868/1087 2711/1381 -f 2552/1556 2781/1557 2830/1085 2627/1086 -f 2552/1556 2778/1559 2864/1558 2781/1557 -f 2552/1556 2711/1381 2869/1382 2778/1559 -f 2553/1560 2778/1561 2869/1389 2712/1390 -f 2553/1560 2782/1563 2864/1562 2778/1561 -f 2553/1560 2628/1565 2831/1564 2782/1563 -f 2553/1560 2712/1390 2870/1391 2628/1565 -f 2554/1566 2628/1565 2870/1391 2713/1396 -f 2554/1566 2783/1567 2831/1564 2628/1565 -f 2554/1566 2779/1569 2861/1568 2783/1567 -f 2554/1566 2713/1396 2871/1397 2779/1569 -f 2555/1570 2779/1569 2871/1397 2714/1402 -f 2555/1570 2692/1571 2861/1568 2779/1569 -f 2555/1570 2784/1573 2828/1572 2692/1571 -f 2555/1570 2714/1402 2872/1403 2784/1573 -f 2556/1574 2717/1409 2865/1410 2776/1575 -f 2556/1574 2732/1576 2873/1408 2717/1409 -f 2556/1574 2786/1578 4997/1577 2732/1576 -f 2556/1574 2776/1575 2862/1579 2786/1578 -f 2557/1580 2787/1583 2877/1582 2715/1581 -f 2557/1580 2786/1578 2862/1579 2787/1583 -f 2557/1580 2722/1584 4997/1577 2786/1578 -f 2557/1580 2715/1581 2879/1585 2722/1584 -f 2558/1586 2788/1588 2828/1572 2785/1587 -f 2558/1586 2715/1581 2877/1582 2788/1588 -f 2558/1586 2725/1589 2879/1585 2715/1581 -f 2558/1586 2785/1587 5002/1590 2725/1589 -f 2559/1591 2716/1436 2876/1437 2727/1592 -f 2559/1591 2784/1573 2872/1403 2716/1436 -f 2559/1591 2785/1587 2828/1572 2784/1573 -f 2559/1591 2727/1592 5002/1590 2785/1587 -f 2560/1351 2776/1575 2865/1410 2768/1342 -f 2560/1351 2790/1442 2862/1579 2776/1575 -f 4860/1548 4840/1549 4837/1594 4859/1593 -f 2561/1357 2754/1358 2903/1596 2791/1595 -f 2561/1357 2791/1595 2862/1579 2790/1442 -f 2562/1443 2789/1364 2863/1554 2792/1597 -f 2562/1443 2792/1597 2903/1596 2754/1358 -f 4868/1524 4853/1525 4851/1518 4867/1519 -f 4858/1486 4859/1593 4837/1594 4836/1489 -f 2563/1353 2777/1553 2863/1554 2789/1364 -f 2563/1353 2767/1354 2866/1371 2777/1553 -f 2575/993 2570/994 2801/1599 2805/1598 -f 2579/983 2810/984 2797/1121 2479/1123 -f 2477/1600 4928/1074 4927/1075 2634/1601 -f 2580/971 2581/972 2794/1115 2567/1122 -f 4854/1602 4795/1605 4800/1604 2572/1603 -f 2566/1117 4935/1606 2834/1135 4798/1136 -f 2566/1117 2800/1118 4936/1607 4935/1606 -f 2567/1122 4923/1047 4922/1040 2797/1121 -f 4801/1544 4802/1609 4782/1608 4780/1545 -f 2565/1139 2632/1141 2902/1142 5039/1140 -f 2568/1610 4937/1611 4936/1607 2800/1118 -f 2568/1610 2801/1599 4938/1612 4937/1611 -f 2574/1613 2805/1598 2801/1599 2568/1610 -f 4794/1546 4799/1547 4800/1604 4795/1605 -f 4901/1614 5005/1615 2874/1430 4872/1431 -f 4901/1614 2799/1091 5004/1092 5005/1615 -f 2570/994 4939/1616 4938/1612 2801/1599 -f 2570/994 2802/995 4940/1617 4939/1616 -f 4900/1618 4993/1447 2875/1060 4820/1127 -f 4854/1602 2572/1603 4782/1608 4802/1609 -f 4904/1619 4821/1622 4818/1621 4817/1620 -f 2577/975 2808/968 2652/1130 2480/1128 -f 2578/965 2809/969 2653/1124 2548/1543 -f 2571/1016 4941/1623 4940/1617 2802/995 -f 2571/1016 2635/1017 2839/1433 4941/1623 -f 4902/1624 2796/1132 2833/1133 5041/1625 -f 4902/1624 5041/1625 5042/1094 2798/1095 -f 2573/1116 4797/1628 4945/1627 4946/1626 -f 2573/1116 4946/1626 4947/1629 2804/1119 -f 2574/1613 2804/1119 4947/1629 4948/1630 -f 2574/1613 4948/1630 4949/1631 2805/1598 -f 2575/993 2805/1598 4949/1631 4950/1632 -f 2575/993 4950/1632 4951/1633 2806/996 -f 2576/1015 2806/996 4951/1633 4952/1634 -f 2576/1015 4952/1634 4953/1635 2807/1018 -f 2573/1116 2566/1117 4798/1136 4797/1628 -f 4900/1618 2634/1601 4927/1075 4993/1447 -f 2477/1600 2758/1129 4918/1027 4928/1074 -f 2576/1015 2571/1016 2802/995 2806/996 -f 2579/983 2479/1123 2653/1124 2809/969 -f 4792/1636 4874/1637 4818/1621 4821/1622 -f 2574/1613 2568/1610 2800/1118 2804/1119 -f 2577/975 2480/1128 2758/1129 2582/978 -f 4903/1149 4784/1639 2840/1638 2803/1152 -f 4904/1619 4817/1620 2844/1641 4791/1640 -f 4792/1636 4793/1147 2651/1148 4874/1637 -f 2578/965 2548/1543 2652/1130 2808/968 -f 2583/1642 2766/1533 2824/1056 2617/1531 -f 2583/1642 2775/1551 2904/1535 2766/1533 -f 2583/1642 2616/1068 2822/1050 2775/1551 -f 2583/1642 2617/1531 2817/1065 2616/1068 -f 2905/1729 2927/1732 2933/1731 2914/1730 -f 2905/1729 2920/1734 2932/1733 2927/1732 -f 2906/1743 2924/1746 2930/1745 2915/1744 -f 2906/1743 2916/1748 2937/1747 2924/1746 -f 2912/1749 2921/1752 2931/1751 2926/1750 -f 2907/1763 2922/1766 2935/1765 2917/1764 -f 2907/1763 2918/1768 2936/1767 2922/1766 -f 2908/1769 2928/1772 2934/1771 2919/1770 -f 2908/1769 2914/1730 2933/1731 2928/1772 -f 2909/1781 2915/1744 2930/1745 2925/1782 -f 2910/1783 2923/1784 2937/1747 2916/1748 -f 2910/1783 2917/1786 2935/1785 2923/1784 -f 2911/1793 2929/1794 2936/1767 2918/1768 -f 2911/1793 2919/1770 2934/1771 2929/1794 -f 2912/1749 2926/1750 2932/1733 2920/1734 -f 2909/1781 2925/1782 2931/1751 2921/1752 -f 2938/2003 5103/2006 5102/2005 5090/2004 -f 3000/2007 5091/2009 2978/2008 -f 3000/2007 2955/2010 5091/2009 -f 2939/2011 2983/2014 2984/2013 2940/2012 -f 5094/2015 2982/2017 5101/2016 -f 2941/2018 2939/2011 2940/2012 2942/2019 -f 2940/2012 5104/2021 2961/2020 2942/2019 -f 2944/2022 2942/2019 2961/2020 2964/2023 -f 2943/2024 2941/2018 2942/2019 2944/2022 -f 2946/2025 2944/2022 2964/2023 2967/2026 -f 2945/2027 2943/2024 2944/2022 2946/2025 -f 2948/2028 2946/2025 2967/2026 2970/2029 -f 2947/2030 2945/2027 2946/2025 2948/2028 -f 2950/2031 2948/2028 2970/2029 2973/2032 -f 2949/2033 2947/2030 2948/2028 2950/2031 -f 2952/2034 2950/2031 2973/2032 2976/2035 -f 2951/2036 2949/2033 2950/2031 2952/2034 -f 5093/2037 2982/2017 5094/2015 -f 5095/2038 2982/2017 5093/2037 -f 5096/2039 2982/2017 5095/2038 -f 5097/2040 2982/2017 5096/2039 -f 5098/2041 2982/2017 5097/2040 -f 5100/2042 2982/2017 5099/2043 -f 5099/2043 2982/2017 5098/2041 -f 2981/2044 2952/2034 2976/2035 3006/2045 -f 2980/2046 2951/2036 2952/2034 2981/2044 -f 5104/2021 2940/2012 2953/2047 -f 2940/2012 2984/2013 2953/2047 -f 2938/2003 5092/2049 2958/2048 5103/2006 -f 2954/2050 5105/2053 5116/2052 5117/2051 -f 3000/2007 3001/2055 5106/2054 -f 3000/2007 5106/2054 2955/2010 -f 2956/2056 2957/2059 3009/2058 3008/2057 -f 5108/2060 5115/2062 3007/2061 -f 2959/2063 2960/2064 2957/2059 2956/2056 -f 2957/2059 2960/2064 2961/2020 5104/2021 -f 2963/2065 2964/2023 2961/2020 2960/2064 -f 2962/2066 2963/2065 2960/2064 2959/2063 -f 2966/2067 2967/2026 2964/2023 2963/2065 -f 2965/2068 2966/2067 2963/2065 2962/2066 -f 2969/2069 2970/2029 2967/2026 2966/2067 -f 2968/2070 2969/2069 2966/2067 2965/2068 -f 2972/2071 2973/2032 2970/2029 2969/2069 -f 2971/2072 2972/2071 2969/2069 2968/2070 -f 2975/2073 2976/2035 2973/2032 2972/2071 -f 2974/2074 2975/2073 2972/2071 2971/2072 -f 5107/2075 5108/2060 3007/2061 -f 5109/2076 5107/2075 3007/2061 -f 5110/2077 5109/2076 3007/2061 -f 5111/2078 5110/2077 3007/2061 -f 5112/2079 5111/2078 3007/2061 -f 5114/2080 5113/2081 3007/2061 -f 5113/2081 5112/2079 3007/2061 -f 3005/2082 3006/2045 2976/2035 2975/2073 -f 3004/2083 3005/2082 2975/2073 2974/2074 -f 5104/2021 2977/2084 2957/2059 -f 2957/2059 2977/2084 3009/2058 -f 2954/2050 5117/2051 2958/2086 5092/2085 -f 2979/2087 5090/2004 5102/2005 5127/2088 -f 3000/2007 2978/2008 5118/2089 -f 3000/2007 5118/2089 3003/2090 -f 2985/2091 2986/2094 2984/2093 2983/2092 -f 5121/2095 5101/2016 2982/2017 -f 2987/2096 2988/2097 2986/2094 2985/2091 -f 2986/2094 2988/2097 3015/2099 5128/2098 -f 2990/2100 3018/2101 3015/2099 2988/2097 -f 2989/2102 2990/2100 2988/2097 2987/2096 -f 2992/2103 3021/2104 3018/2101 2990/2100 -f 2991/2105 2992/2103 2990/2100 2989/2102 -f 2994/2106 3024/2107 3021/2104 2992/2103 -f 2993/2108 2994/2106 2992/2103 2991/2105 -f 2996/2109 3027/2110 3024/2107 2994/2106 -f 2995/2111 2996/2109 2994/2106 2993/2108 -f 2998/2112 3030/2113 3027/2110 2996/2109 -f 2997/2114 2998/2112 2996/2109 2995/2111 -f 5120/2115 5121/2095 2982/2017 -f 5122/2116 5120/2115 2982/2017 -f 5123/2117 5122/2116 2982/2017 -f 5124/2118 5123/2117 2982/2017 -f 5125/2119 5124/2118 2982/2017 -f 5100/2042 5126/2120 2982/2017 -f 5126/2120 5125/2119 2982/2017 -f 2981/2044 3006/2045 3030/2113 2998/2112 -f 2980/2046 2981/2044 2998/2112 2997/2114 -f 5128/2098 2999/2121 2986/2094 -f 2986/2094 2999/2121 2984/2093 -f 2979/2087 5127/2088 3012/2123 5119/2122 -f 3002/2124 5137/2125 5116/2052 5105/2053 -f 3000/2007 5129/2126 3001/2055 -f 3000/2007 3003/2090 5129/2126 -f 3010/2127 3008/2130 3009/2129 3011/2128 -f 5131/2131 3007/2061 5115/2062 -f 3013/2132 3010/2127 3011/2128 3014/2133 -f 3011/2128 5128/2098 3015/2099 3014/2133 -f 3017/2134 3014/2133 3015/2099 3018/2101 -f 3016/2135 3013/2132 3014/2133 3017/2134 -f 3020/2136 3017/2134 3018/2101 3021/2104 -f 3019/2137 3016/2135 3017/2134 3020/2136 -f 3023/2138 3020/2136 3021/2104 3024/2107 -f 3022/2139 3019/2137 3020/2136 3023/2138 -f 3026/2140 3023/2138 3024/2107 3027/2110 -f 3025/2141 3022/2139 3023/2138 3026/2140 -f 3029/2142 3026/2140 3027/2110 3030/2113 -f 3028/2143 3025/2141 3026/2140 3029/2142 -f 5130/2144 3007/2061 5131/2131 -f 5132/2145 3007/2061 5130/2144 -f 5133/2146 3007/2061 5132/2145 -f 5134/2147 3007/2061 5133/2146 -f 5135/2148 3007/2061 5134/2147 -f 5114/2080 3007/2061 5136/2149 -f 5136/2149 3007/2061 5135/2148 -f 3005/2082 3029/2142 3030/2113 3006/2045 -f 3004/2083 3028/2143 3029/2142 3005/2082 -f 5128/2098 3011/2128 3031/2150 -f 3011/2128 3009/2129 3031/2150 -f 3002/2124 5119/2122 3012/2123 5137/2125 -f 3032/2151 5151/2154 5150/2153 5138/2152 -f 3094/2155 5139/2157 3072/2156 -f 3094/2155 3049/2158 5139/2157 -f 3033/2159 3077/2162 3078/2161 3034/2160 -f 5142/2163 3076/2165 5149/2164 -f 3035/2166 3033/2159 3034/2160 3036/2167 -f 3034/2160 5152/2169 3055/2168 3036/2167 -f 3038/2170 3036/2167 3055/2168 3058/2171 -f 3037/2172 3035/2166 3036/2167 3038/2170 -f 3040/2173 3038/2170 3058/2171 3061/2174 -f 3039/2175 3037/2172 3038/2170 3040/2173 -f 3042/2176 3040/2173 3061/2174 3064/2177 -f 3041/2178 3039/2175 3040/2173 3042/2176 -f 3044/2179 3042/2176 3064/2177 3067/2180 -f 3043/2181 3041/2178 3042/2176 3044/2179 -f 3046/2182 3044/2179 3067/2180 3070/2183 -f 3045/2184 3043/2181 3044/2179 3046/2182 -f 5141/2185 3076/2165 5142/2163 -f 5143/2186 3076/2165 5141/2185 -f 5144/2187 3076/2165 5143/2186 -f 5145/2188 3076/2165 5144/2187 -f 5146/2189 3076/2165 5145/2188 -f 5148/2190 3076/2165 5147/2191 -f 5147/2191 3076/2165 5146/2189 -f 3075/2192 3046/2182 3070/2183 3100/2193 -f 3074/2194 3045/2184 3046/2182 3075/2192 -f 5152/2169 3034/2160 3047/2195 -f 3034/2160 3078/2161 3047/2195 -f 3032/2151 5140/2197 3052/2196 5151/2154 -f 3048/2198 5153/2201 5164/2200 5165/2199 -f 3094/2155 3095/2203 5154/2202 -f 3094/2155 5154/2202 3049/2158 -f 3050/2204 3051/2207 3103/2206 3102/2205 -f 5156/2208 5163/2210 3101/2209 -f 3053/2211 3054/2212 3051/2207 3050/2204 -f 3051/2207 3054/2212 3055/2168 5152/2169 -f 3057/2213 3058/2171 3055/2168 3054/2212 -f 3056/2214 3057/2213 3054/2212 3053/2211 -f 3060/2215 3061/2174 3058/2171 3057/2213 -f 3059/2216 3060/2215 3057/2213 3056/2214 -f 3063/2217 3064/2177 3061/2174 3060/2215 -f 3062/2218 3063/2217 3060/2215 3059/2216 -f 3066/2219 3067/2180 3064/2177 3063/2217 -f 3065/2220 3066/2219 3063/2217 3062/2218 -f 3069/2221 3070/2183 3067/2180 3066/2219 -f 3068/2222 3069/2221 3066/2219 3065/2220 -f 5155/2223 5156/2208 3101/2209 -f 5157/2224 5155/2223 3101/2209 -f 5158/2225 5157/2224 3101/2209 -f 5159/2226 5158/2225 3101/2209 -f 5160/2227 5159/2226 3101/2209 -f 5162/2228 5161/2229 3101/2209 -f 5161/2229 5160/2227 3101/2209 -f 3099/2230 3100/2193 3070/2183 3069/2221 -f 3098/2231 3099/2230 3069/2221 3068/2222 -f 5152/2169 3071/2232 3051/2207 -f 3051/2207 3071/2232 3103/2206 -f 3048/2198 5165/2199 3052/2234 5140/2233 -f 3073/2235 5138/2152 5150/2153 5175/2236 -f 3094/2155 3072/2156 5166/2237 -f 3094/2155 5166/2237 3097/2238 -f 3079/2239 3080/2242 3078/2241 3077/2240 -f 5169/2243 5149/2164 3076/2165 -f 3081/2244 3082/2245 3080/2242 3079/2239 -f 3080/2242 3082/2245 3109/2247 5176/2246 -f 3084/2248 3112/2249 3109/2247 3082/2245 -f 3083/2250 3084/2248 3082/2245 3081/2244 -f 3086/2251 3115/2252 3112/2249 3084/2248 -f 3085/2253 3086/2251 3084/2248 3083/2250 -f 3088/2254 3118/2255 3115/2252 3086/2251 -f 3087/2256 3088/2254 3086/2251 3085/2253 -f 3090/2257 3121/2258 3118/2255 3088/2254 -f 3089/2259 3090/2257 3088/2254 3087/2256 -f 3092/2260 3124/2261 3121/2258 3090/2257 -f 3091/2262 3092/2260 3090/2257 3089/2259 -f 5168/2263 5169/2243 3076/2165 -f 5170/2264 5168/2263 3076/2165 -f 5171/2265 5170/2264 3076/2165 -f 5172/2266 5171/2265 3076/2165 -f 5173/2267 5172/2266 3076/2165 -f 5148/2190 5174/2268 3076/2165 -f 5174/2268 5173/2267 3076/2165 -f 3075/2192 3100/2193 3124/2261 3092/2260 -f 3074/2194 3075/2192 3092/2260 3091/2262 -f 5176/2246 3093/2269 3080/2242 -f 3080/2242 3093/2269 3078/2241 -f 3073/2235 5175/2236 3106/2271 5167/2270 -f 3096/2272 5185/2273 5164/2200 5153/2201 -f 3094/2155 5177/2274 3095/2203 -f 3094/2155 3097/2238 5177/2274 -f 3104/2275 3102/2278 3103/2277 3105/2276 -f 5179/2279 3101/2209 5163/2210 -f 3107/2280 3104/2275 3105/2276 3108/2281 -f 3105/2276 5176/2246 3109/2247 3108/2281 -f 3111/2282 3108/2281 3109/2247 3112/2249 -f 3110/2283 3107/2280 3108/2281 3111/2282 -f 3114/2284 3111/2282 3112/2249 3115/2252 -f 3113/2285 3110/2283 3111/2282 3114/2284 -f 3117/2286 3114/2284 3115/2252 3118/2255 -f 3116/2287 3113/2285 3114/2284 3117/2286 -f 3120/2288 3117/2286 3118/2255 3121/2258 -f 3119/2289 3116/2287 3117/2286 3120/2288 -f 3123/2290 3120/2288 3121/2258 3124/2261 -f 3122/2291 3119/2289 3120/2288 3123/2290 -f 5178/2292 3101/2209 5179/2279 -f 5180/2293 3101/2209 5178/2292 -f 5181/2294 3101/2209 5180/2293 -f 5182/2295 3101/2209 5181/2294 -f 5183/2296 3101/2209 5182/2295 -f 5162/2228 3101/2209 5184/2297 -f 5184/2297 3101/2209 5183/2296 -f 3099/2230 3123/2290 3124/2261 3100/2193 -f 3098/2231 3122/2291 3123/2290 3099/2230 -f 5176/2246 3105/2276 3125/2298 -f 3105/2276 3103/2277 3125/2298 -f 3096/2272 5167/2270 3106/2271 5185/2273 -f 3126/2299 5199/2302 5198/2301 5186/2300 -f 3188/2303 5187/2305 3166/2304 -f 3188/2303 3143/2306 5187/2305 -f 3127/2307 3171/2310 3172/2309 3128/2308 -f 5190/2311 3170/2313 5197/2312 -f 3129/2314 3127/2307 3128/2308 3130/2315 -f 3128/2308 5200/2317 3149/2316 3130/2315 -f 3132/2318 3130/2315 3149/2316 3152/2319 -f 3131/2320 3129/2314 3130/2315 3132/2318 -f 3134/2321 3132/2318 3152/2319 3155/2322 -f 3133/2323 3131/2320 3132/2318 3134/2321 -f 3136/2324 3134/2321 3155/2322 3158/2325 -f 3135/2326 3133/2323 3134/2321 3136/2324 -f 3138/2327 3136/2324 3158/2325 3161/2328 -f 3137/2329 3135/2326 3136/2324 3138/2327 -f 3140/2330 3138/2327 3161/2328 3164/2331 -f 3139/2332 3137/2329 3138/2327 3140/2330 -f 5189/2333 3170/2313 5190/2311 -f 5191/2334 3170/2313 5189/2333 -f 5192/2335 3170/2313 5191/2334 -f 5193/2336 3170/2313 5192/2335 -f 5194/2337 3170/2313 5193/2336 -f 5196/2338 3170/2313 5195/2339 -f 5195/2339 3170/2313 5194/2337 -f 3169/2340 3140/2330 3164/2331 3194/2341 -f 3168/2342 3139/2332 3140/2330 3169/2340 -f 5200/2317 3128/2308 3141/2343 -f 3128/2308 3172/2309 3141/2343 -f 3126/2299 5188/2345 3146/2344 5199/2302 -f 3142/2346 5201/2349 5212/2348 5213/2347 -f 3188/2303 3189/2351 5202/2350 -f 3188/2303 5202/2350 3143/2306 -f 3144/2352 3145/2355 3197/2354 3196/2353 -f 5204/2356 5211/2358 3195/2357 -f 3147/2359 3148/2360 3145/2355 3144/2352 -f 3145/2355 3148/2360 3149/2316 5200/2317 -f 3151/2361 3152/2319 3149/2316 3148/2360 -f 3150/2362 3151/2361 3148/2360 3147/2359 -f 3154/2363 3155/2322 3152/2319 3151/2361 -f 3153/2364 3154/2363 3151/2361 3150/2362 -f 3157/2365 3158/2325 3155/2322 3154/2363 -f 3156/2366 3157/2365 3154/2363 3153/2364 -f 3160/2367 3161/2328 3158/2325 3157/2365 -f 3159/2368 3160/2367 3157/2365 3156/2366 -f 3163/2369 3164/2331 3161/2328 3160/2367 -f 3162/2370 3163/2369 3160/2367 3159/2368 -f 5203/2371 5204/2356 3195/2357 -f 5205/2372 5203/2371 3195/2357 -f 5206/2373 5205/2372 3195/2357 -f 5207/2374 5206/2373 3195/2357 -f 5208/2375 5207/2374 3195/2357 -f 5210/2376 5209/2377 3195/2357 -f 5209/2377 5208/2375 3195/2357 -f 3193/2378 3194/2341 3164/2331 3163/2369 -f 3192/2379 3193/2378 3163/2369 3162/2370 -f 5200/2317 3165/2380 3145/2355 -f 3145/2355 3165/2380 3197/2354 -f 3142/2346 5213/2347 3146/2382 5188/2381 -f 3167/2383 5186/2300 5198/2301 5223/2384 -f 3188/2303 3166/2304 5214/2385 -f 3188/2303 5214/2385 3191/2386 -f 3173/2387 3174/2390 3172/2389 3171/2388 -f 5217/2391 5197/2312 3170/2313 -f 3175/2392 3176/2393 3174/2390 3173/2387 -f 3174/2390 3176/2393 3203/2395 5224/2394 -f 3178/2396 3206/2397 3203/2395 3176/2393 -f 3177/2398 3178/2396 3176/2393 3175/2392 -f 3180/2399 3209/2400 3206/2397 3178/2396 -f 3179/2401 3180/2399 3178/2396 3177/2398 -f 3182/2402 3212/2403 3209/2400 3180/2399 -f 3181/2404 3182/2402 3180/2399 3179/2401 -f 3184/2405 3215/2406 3212/2403 3182/2402 -f 3183/2407 3184/2405 3182/2402 3181/2404 -f 3186/2408 3218/2409 3215/2406 3184/2405 -f 3185/2410 3186/2408 3184/2405 3183/2407 -f 5216/2411 5217/2391 3170/2313 -f 5218/2412 5216/2411 3170/2313 -f 5219/2413 5218/2412 3170/2313 -f 5220/2414 5219/2413 3170/2313 -f 5221/2415 5220/2414 3170/2313 -f 5196/2338 5222/2416 3170/2313 -f 5222/2416 5221/2415 3170/2313 -f 3169/2340 3194/2341 3218/2409 3186/2408 -f 3168/2342 3169/2340 3186/2408 3185/2410 -f 5224/2394 3187/2417 3174/2390 -f 3174/2390 3187/2417 3172/2389 -f 3167/2383 5223/2384 3200/2419 5215/2418 -f 3190/2420 5233/2421 5212/2348 5201/2349 -f 3188/2303 5225/2422 3189/2351 -f 3188/2303 3191/2386 5225/2422 -f 3198/2423 3196/2426 3197/2425 3199/2424 -f 5227/2427 3195/2357 5211/2358 -f 3201/2428 3198/2423 3199/2424 3202/2429 -f 3199/2424 5224/2394 3203/2395 3202/2429 -f 3205/2430 3202/2429 3203/2395 3206/2397 -f 3204/2431 3201/2428 3202/2429 3205/2430 -f 3208/2432 3205/2430 3206/2397 3209/2400 -f 3207/2433 3204/2431 3205/2430 3208/2432 -f 3211/2434 3208/2432 3209/2400 3212/2403 -f 3210/2435 3207/2433 3208/2432 3211/2434 -f 3214/2436 3211/2434 3212/2403 3215/2406 -f 3213/2437 3210/2435 3211/2434 3214/2436 -f 3217/2438 3214/2436 3215/2406 3218/2409 -f 3216/2439 3213/2437 3214/2436 3217/2438 -f 5226/2440 3195/2357 5227/2427 -f 5228/2441 3195/2357 5226/2440 -f 5229/2442 3195/2357 5228/2441 -f 5230/2443 3195/2357 5229/2442 -f 5231/2444 3195/2357 5230/2443 -f 5210/2376 3195/2357 5232/2445 -f 5232/2445 3195/2357 5231/2444 -f 3193/2378 3217/2438 3218/2409 3194/2341 -f 3192/2379 3216/2439 3217/2438 3193/2378 -f 5224/2394 3199/2424 3219/2446 -f 3199/2424 3197/2425 3219/2446 -f 3190/2420 5215/2418 3200/2419 5233/2421 -f 3220/2447 5247/2450 5246/2449 5234/2448 -f 3282/2451 5235/2453 3260/2452 -f 3282/2451 3237/2454 5235/2453 -f 3221/2455 3265/2458 3266/2457 3222/2456 -f 5238/2459 3264/2461 5245/2460 -f 3223/2462 3221/2455 3222/2456 3224/2463 -f 3222/2456 5248/2465 3243/2464 3224/2463 -f 3226/2466 3224/2463 3243/2464 3246/2467 -f 3225/2468 3223/2462 3224/2463 3226/2466 -f 3228/2469 3226/2466 3246/2467 3249/2470 -f 3227/2471 3225/2468 3226/2466 3228/2469 -f 3230/2472 3228/2469 3249/2470 3252/2473 -f 3229/2474 3227/2471 3228/2469 3230/2472 -f 3232/2475 3230/2472 3252/2473 3255/2476 -f 3231/2477 3229/2474 3230/2472 3232/2475 -f 3234/2478 3232/2475 3255/2476 3258/2479 -f 3233/2480 3231/2477 3232/2475 3234/2478 -f 5237/2481 3264/2461 5238/2459 -f 5239/2482 3264/2461 5237/2481 -f 5240/2483 3264/2461 5239/2482 -f 5241/2484 3264/2461 5240/2483 -f 5242/2485 3264/2461 5241/2484 -f 5244/2486 3264/2461 5243/2487 -f 5243/2487 3264/2461 5242/2485 -f 3263/2488 3234/2478 3258/2479 3288/2489 -f 3262/2490 3233/2480 3234/2478 3263/2488 -f 5248/2465 3222/2456 3235/2491 -f 3222/2456 3266/2457 3235/2491 -f 3220/2447 5236/2493 3240/2492 5247/2450 -f 3236/2494 5249/2497 5260/2496 5261/2495 -f 3282/2451 3283/2499 5250/2498 -f 3282/2451 5250/2498 3237/2454 -f 3238/2500 3239/2503 3291/2502 3290/2501 -f 5252/2504 5259/2506 3289/2505 -f 3241/2507 3242/2508 3239/2503 3238/2500 -f 3239/2503 3242/2508 3243/2464 5248/2465 -f 3245/2509 3246/2467 3243/2464 3242/2508 -f 3244/2510 3245/2509 3242/2508 3241/2507 -f 3248/2511 3249/2470 3246/2467 3245/2509 -f 3247/2512 3248/2511 3245/2509 3244/2510 -f 3251/2513 3252/2473 3249/2470 3248/2511 -f 3250/2514 3251/2513 3248/2511 3247/2512 -f 3254/2515 3255/2476 3252/2473 3251/2513 -f 3253/2516 3254/2515 3251/2513 3250/2514 -f 3257/2517 3258/2479 3255/2476 3254/2515 -f 3256/2518 3257/2517 3254/2515 3253/2516 -f 5251/2519 5252/2504 3289/2505 -f 5253/2520 5251/2519 3289/2505 -f 5254/2521 5253/2520 3289/2505 -f 5255/2522 5254/2521 3289/2505 -f 5256/2523 5255/2522 3289/2505 -f 5258/2524 5257/2525 3289/2505 -f 5257/2525 5256/2523 3289/2505 -f 3287/2526 3288/2489 3258/2479 3257/2517 -f 3286/2527 3287/2526 3257/2517 3256/2518 -f 5248/2465 3259/2528 3239/2503 -f 3239/2503 3259/2528 3291/2502 -f 3236/2494 5261/2495 3240/2530 5236/2529 -f 3261/2531 5234/2448 5246/2449 5271/2532 -f 3282/2451 3260/2452 5262/2533 -f 3282/2451 5262/2533 3285/2534 -f 3267/2535 3268/2538 3266/2537 3265/2536 -f 5265/2539 5245/2460 3264/2461 -f 3269/2540 3270/2541 3268/2538 3267/2535 -f 3268/2538 3270/2541 3297/2543 5272/2542 -f 3272/2544 3300/2545 3297/2543 3270/2541 -f 3271/2546 3272/2544 3270/2541 3269/2540 -f 3274/2547 3303/2548 3300/2545 3272/2544 -f 3273/2549 3274/2547 3272/2544 3271/2546 -f 3276/2550 3306/2551 3303/2548 3274/2547 -f 3275/2552 3276/2550 3274/2547 3273/2549 -f 3278/2553 3309/2554 3306/2551 3276/2550 -f 3277/2555 3278/2553 3276/2550 3275/2552 -f 3280/2556 3312/2557 3309/2554 3278/2553 -f 3279/2558 3280/2556 3278/2553 3277/2555 -f 5264/2559 5265/2539 3264/2461 -f 5266/2560 5264/2559 3264/2461 -f 5267/2561 5266/2560 3264/2461 -f 5268/2562 5267/2561 3264/2461 -f 5269/2563 5268/2562 3264/2461 -f 5244/2486 5270/2564 3264/2461 -f 5270/2564 5269/2563 3264/2461 -f 3263/2488 3288/2489 3312/2557 3280/2556 -f 3262/2490 3263/2488 3280/2556 3279/2558 -f 5272/2542 3281/2565 3268/2538 -f 3268/2538 3281/2565 3266/2537 -f 3261/2531 5271/2532 3294/2567 5263/2566 -f 3284/2568 5281/2569 5260/2496 5249/2497 -f 3282/2451 5273/2570 3283/2499 -f 3282/2451 3285/2534 5273/2570 -f 3292/2571 3290/2574 3291/2573 3293/2572 -f 5275/2575 3289/2505 5259/2506 -f 3295/2576 3292/2571 3293/2572 3296/2577 -f 3293/2572 5272/2542 3297/2543 3296/2577 -f 3299/2578 3296/2577 3297/2543 3300/2545 -f 3298/2579 3295/2576 3296/2577 3299/2578 -f 3302/2580 3299/2578 3300/2545 3303/2548 -f 3301/2581 3298/2579 3299/2578 3302/2580 -f 3305/2582 3302/2580 3303/2548 3306/2551 -f 3304/2583 3301/2581 3302/2580 3305/2582 -f 3308/2584 3305/2582 3306/2551 3309/2554 -f 3307/2585 3304/2583 3305/2582 3308/2584 -f 3311/2586 3308/2584 3309/2554 3312/2557 -f 3310/2587 3307/2585 3308/2584 3311/2586 -f 5274/2588 3289/2505 5275/2575 -f 5276/2589 3289/2505 5274/2588 -f 5277/2590 3289/2505 5276/2589 -f 5278/2591 3289/2505 5277/2590 -f 5279/2592 3289/2505 5278/2591 -f 5258/2524 3289/2505 5280/2593 -f 5280/2593 3289/2505 5279/2592 -f 3287/2526 3311/2586 3312/2557 3288/2489 -f 3286/2527 3310/2587 3311/2586 3287/2526 -f 5272/2542 3293/2572 3313/2594 -f 3293/2572 3291/2573 3313/2594 -f 3284/2568 5263/2566 3294/2567 5281/2569 -f 2913/2595 5087/2597 5088/2596 -f 2913/2595 5088/2596 5085/2598 -f 2913/2595 5083/2600 5084/2599 -f 2913/2595 5084/2599 5081/2601 -f 2913/2595 5085/2598 5086/2602 -f 2913/2595 5086/2602 5083/2600 -f 2913/2595 5077/2604 5078/2603 -f 2913/2595 5078/2603 5076/2605 -f 2913/2595 5074/2607 5089/2606 -f 2913/2595 5089/2606 5087/2597 -f 2913/2595 5075/2608 5074/2607 -f 2913/2595 5076/2605 5075/2608 -f 2913/2595 5081/2601 5082/2609 -f 2913/2595 5082/2609 5079/2610 -f 2913/2595 5079/2610 5080/2611 -f 2913/2595 5080/2611 5077/2604 -f 2584/2612 5058/2614 5046/2613 -f 2584/2612 5056/2615 5058/2614 -f 2584/2612 5045/2617 4931/2616 -f 2584/2612 5046/2613 5045/2617 -f 2584/2612 4930/2619 4929/2618 -f 2584/2612 4931/2616 4930/2619 -f 2584/2612 5053/2621 5054/2620 -f 2584/2612 5052/2622 5053/2621 -f 2584/2612 5048/2624 5047/2623 -f 2584/2612 4929/2618 5048/2624 -f 2584/2612 5055/2625 5052/2622 -f 2584/2612 4990/2626 5055/2625 -f 2584/2612 5050/2628 5049/2627 -f 2584/2612 5047/2623 5050/2628 -f 2584/2612 4991/2629 4990/2626 -f 2584/2612 4992/2630 4991/2629 -f 2584/2612 5051/2631 4992/2630 -f 2584/2612 5049/2627 5051/2631 -f 2584/2612 5057/2632 5056/2615 -f 2584/2612 5054/2620 5057/2632 -f 4813/2633 4879/2636 4878/2635 4814/2634 -f 4967/2637 4814/2640 4878/2639 4877/2638 -f 4810/2641 4762/2644 4763/2643 4812/2642 -f 4807/2645 4881/2648 4880/2647 4809/2646 -f 4815/2649 4970/2652 4876/2651 4875/2650 -f 4813/2633 4809/2646 4880/2647 4879/2636 -f 4810/2641 4811/2654 4761/2653 4762/2644 -f 4819/2655 4764/2658 4765/2657 4966/2656 -f 5038/2659 4759/2660 4761/2653 4811/2654 -f 4815/2649 4875/2650 4760/2662 4816/2661 -f 5038/2659 4816/2661 4760/2662 4759/2660 -f 4819/2655 4812/2642 4763/2643 4764/2658 -f 4967/2637 4877/2638 4876/2651 4970/2652 -f 4965/2663 4883/2666 4882/2665 4808/2664 -f 4965/2663 4966/2656 4765/2657 4883/2666 -f 4807/2645 4808/2664 4882/2665 4881/2648 -f 2272/3012 2356/3000 4669/3014 4673/3015 -f 2249/893 2379/890 4678/2670 4686/2669 -f 2211/750 2321/751 4634/2671 2402/754 -f 2237/3001 4676/3016 4668/3017 2357/2999 -f 2251/3004 2294/2970 4622/3018 2401/3005 -f 2197/2965 2293/2964 4624/3019 4623/3020 -f 2196/2963 2292/2962 4616/3021 4625/3022 -f 2209/747 2320/748 4636/2680 4637/2679 -f 2236/2998 2357/2999 4668/3017 4667/3023 -f 2250/895 4684/2683 4682/2682 2377/888 -f 2272/3012 4673/3015 4622/3018 2400/2969 -f 2210/749 4635/2684 4636/2680 2320/748 -f 2236/2998 4667/3023 4669/3014 2356/3000 -f 2210/749 2317/743 4630/2685 4635/2684 -f 2273/3013 4620/3024 4615/3025 2291/2961 -f 2238/3003 4674/3026 4675/3027 2358/3002 -f 2237/3001 2358/3002 4675/3027 4676/3016 -f 2226/2977 4664/3028 4661/3029 4715/2978 -f 2207/739 2342/740 4631/2693 4629/2692 -f 2194/2957 2289/2958 4618/3030 4617/3031 -f 2196/2963 4625/3022 4624/3019 2293/2964 -f 2247/884 2377/888 4682/2682 4680/2696 -f 2209/747 4637/2679 4628/2697 2319/745 -f 2226/2977 2340/2959 4619/3032 4664/3028 -f 2208/744 4626/2700 4627/2699 2318/746 -f 2266/3010 4740/3011 4706/3033 4709/3034 -f 2247/884 4680/2696 4681/2703 2397/887 -f 2198/2966 2400/2969 4622/3018 2294/2970 -f 2238/3003 2354/2997 4672/3035 4674/3026 -f 2224/779 2290/780 4662/778 4658/775 -f 2249/893 4686/2669 4685/2705 2380/894 -f 2235/2995 4670/3036 4672/3035 2354/2997 -f 2273/3013 2401/3005 4622/3018 4620/3024 -f 2271/934 2403/935 4634/2671 2321/751 -f 2195/2960 4614/3037 4616/3021 2292/2962 -f 2275/940 2318/746 4627/2699 4632/2708 -f 2194/2957 4617/3031 4619/3032 2340/2959 -f 2248/889 2378/892 4679/2710 4677/2709 -f 2268/825 2397/887 4681/2703 4710/828 -f 2235/2995 2395/2996 4671/3038 4670/3036 -f 2275/940 4632/2708 4634/2671 2403/935 -f 2228/797 4665/903 4631/2693 2342/740 -f 2248/889 4677/2709 4678/2670 2379/890 -f 2195/2960 2291/2961 4615/3025 4614/3037 -f 2208/744 2319/745 4628/2697 4626/2700 -f 4708/922 4704/916 4707/917 2355/923 -f 2250/895 2380/894 4685/2705 4684/2683 -f 2207/739 4629/2692 4630/2685 2317/743 -f 2197/2965 4623/3020 4618/3030 2289/2958 -f 2266/3010 4709/3034 4671/3038 2395/2996 -f 2274/939 2402/754 4634/2671 4683/2712 -f 2274/939 4683/2712 4679/2710 2378/892 -f 3319/2713 3314/2716 3315/2715 3320/2714 -f 3322/2717 3317/2720 3318/2719 3323/2718 -f 3321/2721 3316/2722 3317/2720 3322/2717 -f 3320/2714 3315/2715 3316/2722 3321/2721 -f 3326/2723 3321/2721 3322/2717 3327/2724 -f 3325/2725 3320/2714 3321/2721 3326/2723 -f 3324/2726 3319/2713 3320/2714 3325/2725 -f 3327/2724 3322/2717 3323/2718 3328/2727 -f 3331/2728 3326/2723 3327/2724 3332/2729 -f 3330/2730 3325/2725 3326/2723 3331/2728 -f 3329/2731 3324/2726 3325/2725 3330/2730 -f 3332/2729 3327/2724 3328/2727 3333/2732 -f 3336/2733 3331/2728 3332/2729 3337/2734 -f 3335/2735 3330/2730 3331/2728 3336/2733 -f 3334/2736 3329/2731 3330/2730 3335/2735 -f 3337/2734 3332/2729 3333/2732 3338/2737 -f 3341/2738 3336/2733 3337/2734 3342/2739 -f 3340/2740 3335/2735 3336/2733 3341/2738 -f 3339/2741 3334/2736 3335/2735 3340/2740 -f 3342/2739 3337/2734 3338/2737 3343/2742 -f 3346/2743 3341/2738 3342/2739 3347/2744 -f 3345/2745 3340/2740 3341/2738 3346/2743 -f 3344/2746 3339/2741 3340/2740 3345/2745 -f 3347/2744 3342/2739 3343/2742 3348/2747 -f 3351/2748 3346/2743 3347/2744 3352/2749 -f 3350/2750 3345/2745 3346/2743 3351/2748 -f 3349/2751 3344/2746 3345/2745 3350/2750 -f 3352/2749 3347/2744 3348/2747 3353/2752 -f 3356/2753 3351/2748 3352/2749 3357/2754 -f 3355/2755 3350/2750 3351/2748 3356/2753 -f 3354/2756 3349/2751 3350/2750 3355/2755 -f 3357/2754 3352/2749 3353/2752 3358/2757 -f 3361/2758 3356/2753 3357/2754 3362/2759 -f 3360/2760 3355/2755 3356/2753 3361/2758 -f 3359/2761 3354/2756 3355/2755 3360/2760 -f 3362/2759 3357/2754 3358/2757 3363/2762 -f 3366/2763 3361/2758 3362/2759 3367/2764 -f 3365/2765 3360/2760 3361/2758 3366/2763 -f 3364/2766 3359/2761 3360/2760 3365/2765 -f 3367/2764 3362/2759 3363/2762 3368/2767 -f 4733/738 4734/734 5312/2769 5313/2768 -f 4734/734 4735/735 5311/2770 5312/2769 -f 5310/2771 5311/2770 4735/735 4756/881 -f 5309/2772 5310/2771 4756/881 4755/882 -f 5285/2773 5283/2775 4699/899 4697/2774 -f 4697/2774 4652/2777 5286/2776 5285/2773 -f 5287/2778 5286/2776 4652/2777 4651/2779 -f 4651/2779 4654/862 5288/2780 5287/2778 -f 4732/742 4733/738 5313/2768 3371/2781 -f 4731/741 4732/742 3371/2781 3370/2782 -f 3370/2782 3369/2783 4737/798 4731/741 -f 3369/2783 5288/2780 4654/862 4737/798 -f 3374/2784 5316/2787 5314/2786 5307/2785 -f 3374/2784 3373/2789 5318/2788 5316/2787 -f 3373/2789 3372/2791 5317/2790 5318/2788 -f 5317/2790 3372/2791 5290/2793 5289/2792 -f 3374/2784 5307/2785 5305/2795 5303/2794 -f 3372/2791 5295/2797 5293/2796 5290/2793 -f 3373/2789 3374/2784 5303/2794 5301/2798 -f 3372/2791 3373/2789 5297/2799 5295/2797 -f 3373/2789 5301/2798 5299/2800 5297/2799 -f 3377/2801 3380/2804 5306/2803 5308/2802 -f 3377/2801 3376/2806 3379/2805 3380/2804 -f 3376/2806 3375/2808 3378/2807 3379/2805 -f 5284/2809 5291/2810 3378/2807 3375/2808 -f 5294/2811 3378/2807 5291/2810 5292/2812 -f 5306/2803 3380/2804 5302/2814 5304/2813 -f 3380/2804 3379/2805 5300/2815 5302/2814 -f 3379/2805 3378/2807 5294/2811 5296/2816 -f 5300/2815 3379/2805 5296/2816 5298/2817 -f 5315/2818 5309/2772 4755/882 4754/885 -f 5320/2819 5315/2818 4754/885 4753/886 -f 4753/886 4758/898 5319/2820 5320/2819 -f 4758/898 4699/899 5283/2775 5319/2820 -f 5071/1735 4186/1738 4187/1737 5066/1736 -f 5062/1739 4184/1742 4185/1741 5063/1740 -f 5072/1753 5067/1756 4173/1755 4174/1754 -f 5070/1757 4182/1760 4183/1759 5064/1758 -f 5065/1761 5066/1736 4187/1737 4188/1762 -f 5071/1735 5063/1740 4185/1741 4186/1738 -f 5068/1787 5069/1790 4175/1789 4176/1788 -f 5059/1795 4178/1798 4179/1797 5060/1796 -f 5059/1795 5061/1816 4177/1815 4178/1798 -f 5073/1817 4180/1820 4181/1819 5282/1818 -f 5073/1817 5060/1796 4179/1797 4180/1820 -f 5068/1787 4176/1788 4177/1815 5061/1816 -f 5070/1757 5282/1818 4181/1819 4182/1760 -f 5072/1753 4174/1754 4175/1789 5069/1790 -f 5062/1739 5064/1758 4183/1759 4184/1742 -f 5065/1761 4188/1762 4173/1755 5067/1756 -o WID.Arrow -v 0.061591 0.000000 -0.029204 -v 0.062184 0.000000 -0.056582 -v 0.062910 0.000000 -0.080311 -v 0.052586 0.000000 -0.167307 -v 0.028299 0.000000 -0.194326 -v 0.008428 0.000000 -0.216432 -v 0.063966 0.000000 -0.109514 -v 0.064672 0.000000 -0.115011 -v 0.066262 0.000000 -0.116901 -v 0.087912 0.000000 -0.128007 -v 0.094027 0.000000 -0.120616 -v 0.094711 0.000000 -0.118096 -v 0.074390 0.000000 -0.117242 -v 0.080487 0.000000 -0.117498 -v 0.086583 0.000000 -0.117755 -v 0.000000 -0.086583 -0.117755 -v 0.000000 -0.080487 -0.117498 -v 0.000000 -0.074390 -0.117242 -v 0.000000 -0.094711 -0.118096 -v 0.000000 -0.094027 -0.120616 -v 0.000000 -0.087912 -0.128007 -v 0.000000 -0.066262 -0.116901 -v 0.000000 -0.064672 -0.115011 -v 0.000000 -0.063966 -0.109514 -v 0.000000 -0.008428 -0.216432 -v 0.000000 -0.028299 -0.194326 -v 0.000000 -0.052586 -0.167307 -v 0.000000 -0.062910 -0.080311 -v 0.000000 -0.062184 -0.056582 -v 0.000000 -0.061591 -0.029204 -v -0.061591 0.000000 -0.029204 -v -0.062184 0.000000 -0.056582 -v -0.062910 0.000000 -0.080311 -v -0.052586 0.000000 -0.167307 -v -0.028299 0.000000 -0.194326 -v -0.008428 0.000000 -0.216432 -v -0.063966 0.000000 -0.109514 -v -0.064672 0.000000 -0.115011 -v -0.066262 0.000000 -0.116901 -v -0.087912 0.000000 -0.128007 -v -0.094027 0.000000 -0.120616 -v -0.094711 0.000000 -0.118096 -v -0.074390 0.000000 -0.117242 -v -0.080487 0.000000 -0.117498 -v -0.086583 0.000000 -0.117755 -v 0.061591 0.000000 0.029204 -v 0.062184 0.000000 0.056582 -v 0.062910 0.000000 0.080311 -v 0.052586 0.000000 0.167307 -v 0.028299 0.000000 0.194326 -v 0.008428 0.000000 0.216432 -v 0.063966 0.000000 0.109514 -v 0.064672 0.000000 0.115011 -v 0.066262 0.000000 0.116901 -v 0.087912 0.000000 0.128007 -v 0.094027 0.000000 0.120616 -v 0.094711 0.000000 0.118096 -v 0.074390 0.000000 0.117242 -v 0.080487 0.000000 0.117498 -v 0.086583 0.000000 0.117755 -v 0.000000 -0.086583 0.117755 -v 0.000000 -0.080487 0.117498 -v 0.000000 -0.074390 0.117242 -v 0.000000 -0.094711 0.118096 -v 0.000000 -0.094027 0.120616 -v 0.000000 -0.087912 0.128007 -v 0.000000 -0.066262 0.116901 -v 0.000000 -0.064672 0.115011 -v 0.000000 -0.063966 0.109514 -v 0.000000 -0.008428 0.216432 -v 0.000000 -0.028299 0.194326 -v 0.000000 -0.052586 0.167307 -v 0.000000 -0.062910 0.080311 -v 0.000000 -0.062184 0.056582 -v 0.000000 -0.061591 0.029204 -v -0.061591 0.000000 0.029204 -v -0.062184 0.000000 0.056582 -v -0.062910 0.000000 0.080311 -v -0.052586 0.000000 0.167307 -v -0.028299 0.000000 0.194326 -v -0.008428 0.000000 0.216432 -v -0.063966 0.000000 0.109514 -v -0.064672 0.000000 0.115011 -v -0.066262 0.000000 0.116901 -v -0.087912 0.000000 0.128007 -v -0.094027 0.000000 0.120616 -v -0.094711 0.000000 0.118096 -v -0.074390 0.000000 0.117242 -v -0.080487 0.000000 0.117498 -v -0.086583 0.000000 0.117755 -v 0.000000 0.086583 -0.117755 -v 0.000000 0.080487 -0.117498 -v 0.000000 0.074390 -0.117242 -v 0.000000 0.094711 -0.118096 -v 0.000000 0.094027 -0.120616 -v 0.000000 0.087912 -0.128007 -v 0.000000 0.066262 -0.116901 -v 0.000000 0.064672 -0.115011 -v 0.000000 0.063966 -0.109514 -v 0.000000 0.008428 -0.216432 -v 0.000000 0.028299 -0.194326 -v 0.000000 0.052586 -0.167307 -v 0.000000 0.062910 -0.080311 -v 0.000000 0.062184 -0.056582 -v 0.000000 0.061591 -0.029204 -v 0.000000 0.086583 0.117755 -v 0.000000 0.080487 0.117498 -v 0.000000 0.074390 0.117242 -v 0.000000 0.094711 0.118096 -v 0.000000 0.094027 0.120616 -v 0.000000 0.087912 0.128007 -v 0.000000 0.066262 0.116901 -v 0.000000 0.064672 0.115011 -v 0.000000 0.063966 0.109514 -v 0.000000 0.008428 0.216432 -v 0.000000 0.028299 0.194326 -v 0.000000 0.052586 0.167307 -v 0.000000 0.062910 0.080311 -v 0.000000 0.062184 0.056582 -v 0.000000 0.061591 0.029204 -v 0.000000 -0.091663 -0.117968 -v 0.000000 -0.069310 -0.117029 -v 0.000000 0.000403 -0.226257 -v 0.000000 -0.074665 -0.142744 -v 0.000000 -0.063570 -0.098563 -v 0.000000 -0.091663 0.117968 -v 0.000000 -0.069310 0.117029 -v 0.000000 0.000403 0.226257 -v 0.000000 -0.074665 0.142744 -v 0.000000 -0.063570 0.098563 -v 0.000000 -0.061327 0.000000 -v 0.063570 0.000000 -0.098563 -v 0.074665 0.000000 -0.142744 -v -0.000403 0.000000 -0.226257 -v 0.069310 0.000000 -0.117029 -v 0.091663 0.000000 -0.117968 -v -0.063570 0.000000 -0.098563 -v -0.074665 0.000000 -0.142744 -v 0.000403 0.000000 -0.226257 -v -0.069310 0.000000 -0.117029 -v -0.091663 0.000000 -0.117968 -v 0.000000 0.091663 -0.117968 -v 0.000000 0.069310 -0.117029 -v 0.000000 -0.000403 -0.226257 -v 0.000000 0.074665 -0.142744 -v 0.000000 0.063570 -0.098563 -v 0.061327 0.000000 0.000000 -v 0.063570 0.000000 0.098563 -v 0.074665 0.000000 0.142744 -v -0.000403 0.000000 0.226257 -v 0.069310 0.000000 0.117029 -v 0.091663 0.000000 0.117968 -v -0.061327 0.000000 0.000000 -v -0.063570 0.000000 0.098563 -v -0.074665 0.000000 0.142744 -v 0.000403 0.000000 0.226257 -v -0.069310 0.000000 0.117029 -v -0.091663 0.000000 0.117968 -v 0.000000 0.091663 0.117968 -v 0.000000 0.069310 0.117029 -v 0.000000 -0.000403 0.226257 -v 0.000000 0.074665 0.142744 -v 0.000000 0.063570 0.098563 -v 0.000000 0.061327 0.000000 -l 5467 5321 -l 5321 5322 -l 5322 5323 -l 5323 5452 -l 5453 5324 -l 5324 5325 -l 5325 5326 -l 5326 5454 -l 5452 5327 -l 5327 5328 -l 5328 5329 -l 5329 5455 -l 5453 5330 -l 5330 5331 -l 5331 5332 -l 5332 5456 -l 5455 5333 -l 5333 5334 -l 5334 5335 -l 5335 5456 -l 5441 5336 -l 5336 5337 -l 5337 5338 -l 5338 5442 -l 5441 5339 -l 5339 5340 -l 5340 5341 -l 5341 5444 -l 5442 5342 -l 5342 5343 -l 5343 5344 -l 5344 5445 -l 5443 5345 -l 5345 5346 -l 5346 5347 -l 5347 5444 -l 5445 5348 -l 5348 5349 -l 5349 5350 -l 5350 5451 -l 5473 5351 -l 5351 5352 -l 5352 5353 -l 5353 5457 -l 5458 5354 -l 5354 5355 -l 5355 5356 -l 5356 5459 -l 5457 5357 -l 5357 5358 -l 5358 5359 -l 5359 5460 -l 5458 5360 -l 5360 5361 -l 5361 5362 -l 5362 5461 -l 5460 5363 -l 5363 5364 -l 5364 5365 -l 5365 5461 -l 5467 5366 -l 5366 5367 -l 5367 5368 -l 5368 5468 -l 5469 5369 -l 5369 5370 -l 5370 5371 -l 5371 5470 -l 5468 5372 -l 5372 5373 -l 5373 5374 -l 5374 5471 -l 5469 5375 -l 5375 5376 -l 5376 5377 -l 5377 5472 -l 5471 5378 -l 5378 5379 -l 5379 5380 -l 5380 5472 -l 5446 5381 -l 5381 5382 -l 5382 5383 -l 5383 5447 -l 5446 5384 -l 5384 5385 -l 5385 5386 -l 5386 5449 -l 5447 5387 -l 5387 5388 -l 5388 5389 -l 5389 5450 -l 5448 5390 -l 5390 5391 -l 5391 5392 -l 5392 5449 -l 5450 5393 -l 5393 5394 -l 5394 5395 -l 5395 5451 -l 5473 5396 -l 5396 5397 -l 5397 5398 -l 5398 5474 -l 5475 5399 -l 5399 5400 -l 5400 5401 -l 5401 5476 -l 5474 5402 -l 5402 5403 -l 5403 5404 -l 5404 5477 -l 5475 5405 -l 5405 5406 -l 5406 5407 -l 5407 5478 -l 5477 5408 -l 5408 5409 -l 5409 5410 -l 5410 5478 -l 5462 5411 -l 5411 5412 -l 5412 5413 -l 5413 5463 -l 5462 5414 -l 5414 5415 -l 5415 5416 -l 5416 5465 -l 5463 5417 -l 5417 5418 -l 5418 5419 -l 5419 5466 -l 5464 5420 -l 5420 5421 -l 5421 5422 -l 5422 5465 -l 5466 5423 -l 5423 5424 -l 5424 5425 -l 5425 5484 -l 5479 5426 -l 5426 5427 -l 5427 5428 -l 5428 5480 -l 5479 5429 -l 5429 5430 -l 5430 5431 -l 5431 5482 -l 5480 5432 -l 5432 5433 -l 5433 5434 -l 5434 5483 -l 5481 5435 -l 5435 5436 -l 5436 5437 -l 5437 5482 -l 5483 5438 -l 5438 5439 -l 5439 5440 -l 5440 5484 diff --git a/contrib/model_viewer/assets/models/Tree_01.mtl b/contrib/model_viewer/assets/models/Tree_01.mtl deleted file mode 100644 index 9301eba731..0000000000 --- a/contrib/model_viewer/assets/models/Tree_01.mtl +++ /dev/null @@ -1,13 +0,0 @@ -# -## Alias OBJ Material File -# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited - -newmtl Leafs -Ka 0.000000 0.000000 0.000000 -Kd 0.270588 0.407843 0.400000 -Ks 0.330000 0.330000 0.330000 - -newmtl Wood -Ka 0.000000 0.000000 0.000000 -Kd 0.666667 0.545098 0.356863 -Ks 0.330000 0.330000 0.330000 diff --git a/contrib/model_viewer/assets/models/Tree_01.obj b/contrib/model_viewer/assets/models/Tree_01.obj deleted file mode 100644 index 396c008163..0000000000 --- a/contrib/model_viewer/assets/models/Tree_01.obj +++ /dev/null @@ -1,228 +0,0 @@ -# Alias OBJ Model File -# Exported from SketchUp, (c) 2000-2012 Trimble Navigation Limited -# File units = meters - -mtllib Tree_01.mtl - -g Mesh1 Tree Model - -usemtl Leafs -v 0 0 -1.2957 -vt -3.67031e-018 -0.258226 -vn -5.60096e-018 0.438447 -0.898757 -v 0.177 0.6 -1.003 -vt -0.0804545 0.0452234 -v 1.003 0.6 -1.003 -vt -0.455909 0.0452234 -v 1.18 0 -1.2957 -vt -0.536364 -0.258226 -f 1/1/1 2/2/1 3/3/1 4/4/1 - -v 0.177 0.6 -0.177 -vt -0.0804545 0.284347 -vn -0.959136 0.282945 7.971e-018 -vt -0.455909 0.284347 -vt -0.588956 1.3849e-018 -v 0 0 -0 -vt 0 0 -f 5/5/2 2/6/2 1/7/2 6/8/2 - -vt -0.0804545 0.0804545 -vn 0 -1 -0 -v -0.0969352 0.6 -0.0826 -vt 0.0440615 0.0375455 -vt -0.0804545 0.455909 -f 5/9/3 7/10/3 2/11/3 - -v 1.0974 0.6 -0.0826 -vt -0.498818 0.0375455 -f 7/10/3 5/9/3 8/12/3 - -v 1.003 0.6 -0.177 -vt -0.455909 0.0804545 -f 8/12/3 5/9/3 9/13/3 - -v 1.18 0 -0 -vt 0.536364 -1.26083e-018 -vn 7.96848e-018 0.282945 0.959136 -vt 0.455909 0.284347 -vt 0.0804545 0.284347 -f 10/14/4 9/15/4 5/16/4 6/8/4 - -vt 8.91502e-019 -0.151761 -vn 0.959136 0.282945 1.5942e-018 -vt 0.588956 -0.151761 -vt 0.455909 0.132585 -vt 0.0804545 0.132585 -f 10/17/5 4/18/5 3/19/5 9/20/5 - -vt -0.536364 0 -v 0.786697 0 -0.393303 -vt -0.35759 0.178774 -vt -0.536364 0.588956 -f 10/21/3 11/22/3 4/23/3 - -v 0.393303 0 -0.393303 -vt -0.178774 0.178774 -f 10/21/3 12/24/3 11/22/3 - -f 6/8/3 12/24/3 10/21/3 - -v 0.393303 0 -0.786697 -vt -0.178774 0.35759 -f 12/24/3 6/8/3 13/25/3 - -vt 0 0.588956 -f 1/26/3 13/25/3 6/8/3 - -f 13/25/3 1/26/3 4/23/3 - -v 0.786697 0 -0.786697 -vt -0.35759 0.35759 -f 13/25/3 4/23/3 14/27/3 - -f 14/27/3 4/23/3 11/22/3 - -usemtl Wood -v 0.837838 -0.495868 -0.342162 -vt 0.155528 -0.263275 -vn 0.994724 0.102591 6.0893e-019 -v 0.837838 -0.495868 -0.837838 -vt 0.380836 -0.263275 -vt 0.35759 -0.0366853 -vt 0.178774 -0.0366853 -f 15/28/6 16/29/6 14/30/6 11/31/6 - -v 0.342162 -0.495868 -0.342162 -vt -0.155528 0.155528 -v 0.342162 -0.495868 -0.837838 -vt -0.155528 0.380836 -vt -0.380836 0.380836 -vt -0.380836 0.155528 -f 17/32/3 18/33/3 16/34/3 15/35/3 - -vt -0.178774 0.0183405 -vn -0.994724 0.102591 -5.80807e-018 -vt -0.35759 0.0183405 -vt -0.380836 -0.208249 -vt -0.155528 -0.208249 -f 12/36/7 13/37/7 18/38/7 17/39/7 - -usemtl Leafs -f 12/24/3 13/25/3 14/27/3 11/22/3 - -usemtl Wood -vt -0.155528 -0.263275 -vn 9.37084e-019 0.102591 -0.994724 -vt -0.178774 -0.0366853 -vt -0.35759 -0.0366853 -vt -0.380836 -0.263275 -f 18/40/8 13/41/8 14/42/8 16/43/8 - -vt 0.380836 -0.208249 -vn 7.35408e-018 0.102591 0.994724 -vt 0.35759 0.0183405 -vt 0.178774 0.0183405 -vt 0.155528 -0.208249 -f 15/44/9 11/45/9 12/46/9 17/47/9 - -usemtl Leafs -vt -0.455909 0.455909 -v 1.0974 0.6 -1.0974 -vt -0.498818 0.498818 -f 3/48/3 19/49/3 9/13/3 - -f 2/11/3 19/49/3 3/48/3 - -v -0.0969352 0.6 -1.0974 -vt 0.0440615 0.498818 -f 2/11/3 20/50/3 19/49/3 - -f 20/50/3 2/11/3 7/10/3 - -v 0.23482 1.34304 -0.23482 -vt -0.106736 0.60095 -vn -0.913119 0.407693 2.16966e-017 -v 0.23482 1.34304 -0.94518 -vt -0.429627 0.60095 -vt -0.498818 0.231069 -vt -0.0375455 0.231069 -f 21/51/10 22/52/10 20/53/10 7/54/10 - -vt -0.106736 0.106736 -v 0.153636 1.34304 -0.153636 -vt -0.0698345 0.0698345 -vt -0.106736 0.429627 -f 21/55/3 23/56/3 22/57/3 - -v 1.14207 1.34304 -0.153636 -vt -0.519121 0.0698345 -f 23/56/3 21/55/3 24/58/3 - -v 0.94518 1.34304 -0.23482 -vt -0.429627 0.106736 -f 24/58/3 21/55/3 25/59/3 - -vt 0.498818 0.274714 -vn 5.19277e-018 0.200693 0.979654 -vt 0.429627 0.619473 -vt 0.106736 0.619473 -vt -0.0440615 0.274714 -f 8/60/11 25/61/11 21/62/11 7/63/11 - -vt 0.0375455 0.167069 -vn 0.979654 0.200693 -1.44372e-018 -vt 0.498818 0.167069 -v 0.94518 1.34304 -0.94518 -vt 0.429627 0.511829 -vt 0.106736 0.511829 -f 8/64/12 19/65/12 26/66/12 25/67/12 - -f 8/12/3 9/13/3 19/49/3 - -vt 0.0440615 0.167069 -vn -2.59638e-018 0.200693 -0.979654 -vt -0.106736 0.511829 -vt -0.429627 0.511829 -vt -0.498818 0.167069 -f 20/68/13 22/69/13 26/70/13 19/71/13 - -v 1.14207 1.34304 -1.02636 -vt -0.519121 0.466529 -vt -0.429627 0.429627 -f 22/57/3 27/72/3 26/73/3 - -v 0.153636 1.34304 -1.02636 -vt -0.0698345 0.466529 -f 22/57/3 28/74/3 27/72/3 - -f 28/74/3 22/57/3 23/56/3 - -v 0.383388 3.21676 -0.59 -vt -0.268182 1.4725 -vn -0.992566 0.121707 7.00107e-018 -vt -0.466529 0.614434 -vt -0.0698345 0.614434 -f 29/75/14 28/76/14 23/77/14 - -vt -0.174267 1.36323 -vn 1.92555e-017 0.226817 -0.973937 -vt -0.519121 0.488746 -vt -0.0698345 0.488746 -f 29/78/15 27/79/15 28/80/15 - -vt 0.466529 0.371018 -vn 0.926901 0.375307 -4.48545e-017 -vt 0.268182 1.28988 -vt 0.0698345 0.371018 -f 27/81/16 29/82/16 24/83/16 - -vt 0.519121 0.610402 -vn -3.8511e-017 0.226817 0.973937 -vt 0.174267 1.48488 -vt 0.0698345 0.610402 -f 24/84/17 29/85/17 23/86/17 - -f 24/58/3 25/59/3 27/72/3 - -f 26/73/3 27/72/3 25/59/3 diff --git a/contrib/model_viewer/assets/models/textures/Turret-Bump.jpg b/contrib/model_viewer/assets/models/textures/Turret-Bump.jpg deleted file mode 100644 index bdfbd336d2..0000000000 Binary files a/contrib/model_viewer/assets/models/textures/Turret-Bump.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/models/textures/Turret-Diffuse.jpg b/contrib/model_viewer/assets/models/textures/Turret-Diffuse.jpg deleted file mode 100644 index a2af03e81c..0000000000 Binary files a/contrib/model_viewer/assets/models/textures/Turret-Diffuse.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/models/textures/Turret-Emission.jpg b/contrib/model_viewer/assets/models/textures/Turret-Emission.jpg deleted file mode 100644 index 01342963fd..0000000000 Binary files a/contrib/model_viewer/assets/models/textures/Turret-Emission.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/models/textures/Turret-Normal.jpg b/contrib/model_viewer/assets/models/textures/Turret-Normal.jpg deleted file mode 100644 index 629b6622d2..0000000000 Binary files a/contrib/model_viewer/assets/models/textures/Turret-Normal.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/models/textures/Turret-Specular.jpg b/contrib/model_viewer/assets/models/textures/Turret-Specular.jpg deleted file mode 100644 index 2a1f21ac14..0000000000 Binary files a/contrib/model_viewer/assets/models/textures/Turret-Specular.jpg and /dev/null differ diff --git a/contrib/model_viewer/assets/splash.png b/contrib/model_viewer/assets/splash.png deleted file mode 100644 index 88387a5ab3..0000000000 Binary files a/contrib/model_viewer/assets/splash.png and /dev/null differ diff --git a/contrib/model_viewer/assets/ui/next.png b/contrib/model_viewer/assets/ui/next.png deleted file mode 100644 index 32380f4cff..0000000000 Binary files a/contrib/model_viewer/assets/ui/next.png and /dev/null differ diff --git a/contrib/model_viewer/assets/ui/prev.png b/contrib/model_viewer/assets/ui/prev.png deleted file mode 100644 index 9d35ace76b..0000000000 Binary files a/contrib/model_viewer/assets/ui/prev.png and /dev/null differ diff --git a/contrib/model_viewer/bin/.gitignore b/contrib/model_viewer/bin/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/model_viewer/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/model_viewer/libs/.gitignore b/contrib/model_viewer/libs/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/model_viewer/libs/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/model_viewer/org.nitlanguage.model_viewer.txt b/contrib/model_viewer/org.nitlanguage.model_viewer.txt deleted file mode 100644 index 2061bba860..0000000000 --- a/contrib/model_viewer/org.nitlanguage.model_viewer.txt +++ /dev/null @@ -1,10 +0,0 @@ -Categories:Nit -License:Apache2 -Web Site:http://nitlanguage.org -Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/model_viewer/ -Issue Tracker:https://github.com/nitlang/nit/issues - -Summary:Display 3D models with the gamnit depth framework. -Description: -Sample portable application implemented with the gamnit depth API. -. diff --git a/contrib/model_viewer/package.ini b/contrib/model_viewer/package.ini deleted file mode 100644 index 397fc2a41f..0000000000 --- a/contrib/model_viewer/package.ini +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name=model_viewer -tags=example -maintainer=Alexis Laferrière -license=Apache-2.0 -desc=Sample portable 3D app implemented with the gamnit depth framework -[upstream] -browse=https://github.com/nitlang/nit/tree/master/contrib/model_viewer/ -git=https://github.com/nitlang/nit.git -git.directory=contrib/model_viewer/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues -apk=http://nitlanguage.org/fdroid/apk/model_viewer.apk diff --git a/contrib/model_viewer/res/.gitignore b/contrib/model_viewer/res/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/model_viewer/res/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/model_viewer/src/globe.nit b/contrib/model_viewer/src/globe.nit deleted file mode 100644 index be54bcedf5..0000000000 --- a/contrib/model_viewer/src/globe.nit +++ /dev/null @@ -1,349 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Intro a custom model, material and graphics program to draw a globe -module globe - -intrude import gamnit::depth # To access `Mesh::indices_c` - -# Number of vertices to create parallels, meridians are double of this -# -# The minimum should be 3 for an octahedron planet. -fun n_parallels: Int do return 25 - -redef class App - - # Program for the graphic card - private var globe_program = new GlobeProgram - - # Texture of the reflexive surface of the earth (with the seas in white) - private var texture_seas = new Texture("globe/seas.jpg") - - # Texture of the surface of the earth - private var texture_earth = new Texture("globe/earth.jpg") - - # Texture of the lights at night on earth - private var texture_night = new Texture("globe/lights.jpg") - - # Elevation map of earth - private var texture_elevation = new Texture("globe/elevation.jpg") - - # Texture of the clouds above the earth - private var texture_clouds = new Texture("globe/clouds.png") - - redef fun on_create - do - super - - # Compile globe_program - var program = app.globe_program - program.compile_and_link - - # Catch any errors - var gamnit_error = program.error - assert gamnit_error == null else print_error gamnit_error - end -end - -# Full model of a globe, with a surface, clouds layer and atmosphere -class GlobeModel - super CompositeModel - - redef fun load - do - leaves.add new LeafModel( - new UVSphere(1.0, 2*n_parallels, n_parallels), - new GlobeMaterial.surface) - leaves.add new LeafModel( - new UVSphere(1.1, 2*n_parallels, n_parallels), - new GlobeMaterial.clouds) - leaves.add new LeafModel( - new UVSphere(1.2, 2*n_parallels, n_parallels), - new GlobeMaterial.atmo) - end -end - -# Parameterizable material to draw the 3 layers of the globe -class GlobeMaterial - super Material - - # Id of the texture for diffuse colors, if any - var texture_id: nullable Int - - # Draw as a surface, using the elevation map and the night lights - var is_surface: Bool - - # Ambient color - var color: Array[Float] - - # Create and configure a material for the earth surface - init surface do init(0, true, [1.0, 1.0, 1.0, 1.0]) - - # Create and configure a material for the cloud layer - init clouds do init(4, false, [1.0*clouds_a, 1.0*clouds_a, 1.0*clouds_a, clouds_a]) - private var clouds_a = 0.5 - - # Create and configure a material for the visible atmosphere - init atmo do init(null, false, [0.0, 0.8*atmo_a, 1.0*atmo_a, atmo_a]) - private var atmo_a = 0.05 - - redef fun draw(actor, model, camera) - do - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print gl_error - - var mesh = model.mesh - - var program = app.globe_program - program.use - - # Bind textures - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, app.texture_earth.gl_texture) - - glActiveTexture gl_TEXTURE1 - glBindTexture(gl_TEXTURE_2D, app.texture_seas.gl_texture) - - glActiveTexture gl_TEXTURE2 - glBindTexture(gl_TEXTURE_2D, app.texture_night.gl_texture) - - glActiveTexture gl_TEXTURE3 - glBindTexture(gl_TEXTURE_2D, app.texture_elevation.gl_texture) - - glActiveTexture gl_TEXTURE4 - glBindTexture(gl_TEXTURE_2D, app.texture_clouds.gl_texture) - - # Set samplers - program.tex_specular.uniform 1 - program.tex_night.uniform 2 - program.tex_displace.uniform 3 - - # Update camera view and light - var p = app.world_camera.position - program.camera.uniform(p.x, p.y, p.z) - program.mvp.uniform camera.mvp_matrix - program.light_center.uniform(app.light.position.x, app.light.position.y, app.light.position.z) - - # Set attributes - program.coord.array_enabled = true - program.coord.array(mesh.vertices, 3) - - program.tex_coord.array_enabled = true - program.tex_coord.array(mesh.texture_coords, 2) - - program.normal.array_enabled = true - program.normal.array(mesh.normals, 3) - - # Set uniforms - program.scale.uniform 1.0 - program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll) - program.translation.uniform(actor.center.x, -actor.center.y, actor.center.z, 0.0) - program.color.uniform(color[0], color[1], color[2], color[3]) - program.is_surface.uniform is_surface - - # Set the color texture? - var tex = texture_id - if tex == null then - program.use_texture.uniform false - else - program.use_texture.uniform true - program.tex.uniform tex - end - - # Execute draw, support only meshes with `indices` - glDrawElements(gl_TRIANGLES, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array) - - # Catch any errors - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print gl_error - end -end - -# Graphical program to draw a planet with Phong lighting -class GlobeProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec4 coord; - - // Vertex color tint - uniform vec4 color; - - // Vertex translation - uniform vec4 translation; - - // Vertex scaling - uniform float scale; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Vertex normal - attribute vec3 normal; - - // Model view projection matrix - uniform mat4 mvp; - - // Model rotation - uniform mat4 rotation; - - // Lights config - uniform vec3 light_center; - - // Texture of surface elevation to displace vertices - uniform sampler2D tex_displace; - - // Draw this as a planet surface? - uniform bool is_surface; - - // Output for the fragment shader - varying vec4 v_color; - varying vec2 v_tex_coord; - varying vec3 v_normal; - varying vec4 v_light_center; - - void main() - { - v_color = color; - v_tex_coord = tex_coord; - v_normal = normalize(vec4(normal, 0.0) * rotation * mvp).xyz; - v_light_center = vec4(light_center, 0.0) * mvp; - - // Apply displacement map - float s = scale; - if (is_surface) - s += 0.05 * texture2D(tex_displace, tex_coord).r; - - gl_Position = (vec4(coord.xyz * s, 1.0) * rotation + translation) * mvp; - } - """ @ glsl_vertex_shader - - redef var fragment_shader_source = """ - precision mediump float; - - // Input from the vertex shader - varying vec4 v_color; - varying vec2 v_tex_coord; - varying vec3 v_normal; - varying vec4 v_light_center; - - // Coordinates of the camera - uniform vec3 camera; - - // Does this object use a texture? - uniform bool use_texture; - - // Texture to apply on this object - uniform sampler2D tex; - - // Reflection map to apply to the Phong logic - uniform sampler2D tex_specular; - - // Texture for the dark side of the earth - uniform sampler2D tex_night; - - // Draw this as a planet surface? - uniform bool is_surface; - - // Colors config - vec4 ambient_color = vec4(0.2, 0.2, 0.2, 1.0); - vec4 diffuse_color = vec4(1.0, 1.0, 1.0, 1.0); - vec4 specular_color = vec4(1.0, 1.0, 1.0, 1.0); - - void main() - { - // Lambert diffusion - vec3 to_light = normalize(v_light_center.xyz); - float lambert = max(dot(to_light, v_normal), 0.0); - - // Phong specular - float specular = 0.0; - if (lambert > 0.0) { - vec3 to_camera = normalize(camera); - vec3 normal = normalize(v_normal); - vec3 light_reflect = reflect(to_light, normal); - float spec_angle = max(dot(light_reflect, to_camera), 0.0); - specular = pow(spec_angle, 16.0); - - if (is_surface) - specular *= texture2D(tex_specular, v_tex_coord).x; - else specular *= 0.2; - } - - if(use_texture) { - gl_FragColor = v_color * texture2D(tex, v_tex_coord); - } else { - gl_FragColor = v_color; - } - - gl_FragColor *= ambient_color + lambert * diffuse_color; - gl_FragColor += specular * specular_color; - - if (is_surface && lambert < 0.2) { - // Show city lights at night - float p_night = (0.2 - lambert) * 5.0; - gl_FragColor += p_night*texture2D(tex_night, v_tex_coord); - } - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec4) is lazy - - # Color tint per vertex - var color = uniforms["color"].as(UniformVec4) is lazy - - # Scaling per vertex - var scale = uniforms["scale"].as(UniformFloat) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Normal per vertex - var normal = attributes["normal"].as(AttributeVec3) is lazy - - # Model view projection matrix - var mvp = uniforms["mvp"].as(UniformMat4) is lazy - - # Should this program use the texture `tex`? - var use_texture = uniforms["use_texture"].as(UniformBool) is lazy - - # Main visible texture unit - var tex = uniforms["tex"].as(UniformSampler2D) is lazy - - # Texture unit for reflection effect - var tex_specular = uniforms["tex_specular"].as(UniformSampler2D) is lazy - - # Texture of the earth at night - var tex_night = uniforms["tex_night"].as(UniformSampler2D) is lazy - - # Texture with elevation data - var tex_displace = uniforms["tex_displace"].as(UniformSampler2D) is lazy - - # Position of the camera - var camera = uniforms["camera"].as(UniformVec3) is lazy - - # Execute this program to draw a planet surface? - var is_surface = uniforms["is_surface"].as(UniformBool) is lazy - - # Translation applied to each vertex - var translation = uniforms["translation"].as(UniformVec4) is lazy - - # Rotation matrix - var rotation = uniforms["rotation"].as(UniformMat4) is lazy - - # Center position of the light - var light_center = uniforms["light_center"].as(UniformVec3) is lazy -end diff --git a/contrib/model_viewer/src/model_viewer.nit b/contrib/model_viewer/src/model_viewer.nit deleted file mode 100644 index a38de3259e..0000000000 --- a/contrib/model_viewer/src/model_viewer.nit +++ /dev/null @@ -1,158 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Portable game to destroy asteroids -module model_viewer is - app_name "Model Viewer" - app_namespace "org.nitlanguage.model_viewer" - app_version(1, 0, git_revision) -end - -import gamnit::depth -import gamnit::landscape - -import globe - -redef class App - - # All available models - var models: Array[Model] = [ - new LeafModel(new Cube, new Material), - new LeafModel(new UVSphere(4.0, 32, 16), new Material), - new LeafModel(new UVSphere(4.0, 32, 16), new NormalsMaterial), - new Model("models/Tree_01.obj"), - new Model("models/Oak_Fall_01.obj"), - new Model("models/Quandtum_BA-2_v1_1.obj"), - new GlobeModel] - - # Index of the current model in `models` - var model_index = 0 - - # Texture "Previous model" - var ui_prev = new Texture("ui/prev.png") - - # Texture "Next model" - var ui_next = new Texture("ui/next.png") - - redef fun on_create - do - super - - # Show splash screen - var logo = new Texture("splash.png") - show_splash_screen logo - - # Load all models passed as command line argument - for arg in args.to_a.reversed do - # Force an absolute path, this only works on desktop, but so does command args - arg = getcwd / arg - - var model = new Model(arg) - models.unshift model - end - - world_camera.near = 0.1 - world_camera.far = 100.0 - - for model in models do - model.load - if model.errors.not_empty then print_error model.errors.join("\n") - end - - # Display the first model - model = models[model_index] - - # Setup UI - # Use 800 px in height as screen reference - ui_camera.reset_height 800.0 - - var prev_sprite = new Sprite(ui_prev, - ui_camera.bottom_left.offset(200, 40, 0)) - prev_sprite.scale = 0.5 - ui_sprites.add prev_sprite - - var next_sprite = new Sprite(ui_next, - ui_camera.bottom_right.offset(-165, 40, 0)) - next_sprite.scale = 0.5 - ui_sprites.add next_sprite - end - - # Set the currently displayed model - fun model=(model: Model) - do - if model isa ModelAsset then print "Model: {model.path}" - - var actor = new Actor(model, new Point3d[Float](0.0, 0.0, 0.0)) - - # Align on Y only - actor.center.y -= model.center.y - - # Fit in viewport - var height = model.dimensions.x - height = height.max(model.dimensions.y) - height = height.max(model.dimensions.z) - world_camera.reset_height(height * 1.5) - - actors.clear - actors.add actor - end - - # Cycle to the next or previous model, changing the index by `d` - fun cycle_model(d: Int) - do - model_index = (model_index + d + models.length) % models.length - model = models[model_index] - end - - redef fun accept_event(event) - do - var display = display - if display == null then return super - - if event isa QuitEvent then - exit 0 - else if event isa KeyEvent and event.is_down then - if event.is_arrow_right then - cycle_model 1 - else if event.is_arrow_left then - cycle_model -1 - end - else if event isa PointerEvent and not event.is_move and event.depressed then - if event.x.to_i > display.width / 2 then - cycle_model 1 - else cycle_model -1 - end - - return super - end - - private var clock = new Clock - - redef fun update(dt) - do - super - - var t = clock.total.to_f - - # Rotate the model - actors.first.yaw = t - - # Move the light source - var dist_to_light = 20.0 - t *= 1.33 - light.position.x = dist_to_light * t.cos - light.position.y = 4.0 - light.position.z = dist_to_light * t.sin - end -end diff --git a/contrib/tinks/.gitignore b/contrib/tinks/.gitignore deleted file mode 100644 index 337d1e3a48..0000000000 --- a/contrib/tinks/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -src/*/*_serialize.nit -config.json diff --git a/contrib/tinks/Makefile b/contrib/tinks/Makefile deleted file mode 100644 index ab9f82f255..0000000000 --- a/contrib/tinks/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -all: bin/server bin/tinks3d - -pre-build: src/server/server_serialize.nit - -# Client -bin/tinks3d: $(shell nitls -M src/client/client3d.nit -m linux) - nitserial -o src/client/client_serialize.nit src/client/client3d.nit - nitc -o bin/tinks3d src/client/client3d.nit \ - -m src/client/client_serialize.nit -m linux - -# Server -bin/server: src/server/server_serialize.nit $(shell nitls -M src/server/dedicated.nit) - nitc -o bin/server src/server/dedicated.nit -m src/server/server_serialize.nit - -src/server/server_serialize.nit: $(shell nitls -M src/server/dedicated.nit) - nitserial -o src/server/server_serialize.nit src/server/dedicated.nit - -# Android -android/res/: art/icon.svg - ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/ diff --git a/contrib/tinks/README.md b/contrib/tinks/README.md deleted file mode 100644 index 99e2ac17ef..0000000000 --- a/contrib/tinks/README.md +++ /dev/null @@ -1,68 +0,0 @@ -Tinks! a multiplayer crossplatform action game with destructible procedurally generated worlds - -# Project description - -Each player controls a tank, opens fire from the turret and navigates between the terrain features. -Explosions from turret fire and tank destruction have different forces and destroy the terrain. -Each tank needs 4 hits to be destroyed. -Destroyed tanks drop health powerups which can repair other tanks. - -The game is optimized for the multiplayer mode but one can play alone to practice. -Upon launch, a client searches for server by broadcasting a UDP socket. -A server may respond with its TCP connection port. -If there is no answer, the client starts its own server which will accept other clients. - -The game logic is mostly event based. -Only the events are passed to the clients at each frame, by serializing them to binary. -So both the clients and the server keep the game knowledge. - -The world is different in each game, it is procedurally generated with an "unlimited" size. -Each world feature is discovered only as needed by either the server or the clients. -The server discovers the features affected by possible collisions and by explosions. -The clients discover the features visible on screen. -The clients and servers share the seed for the noise generator, so they discover the same features. -Only the destroyed features and new powerups are passed to the clients by the server as events. - -# Modifications - -This game was developed quickly while aiming to keep it simple. -It should be easy to add features as refinements on both the client and the server. - -# Clients and server - -Tinks! has a client and a dedicated server. -The whole project is modular, these software share mostly the same code. - -* The 3D client at `bin/tinks3d` uses `gamnit` and OpenGL ES 2.0 for an immersive world. - - Despite the different graphics, both client are fully compatible for multiplayer. - - ![Screenshot of the 3D client](doc/tinks3d.png) - -* The dedicated server at `bin/server` acts as a headless server for clients on the same local network. - -# Usage - -Compile with: `make` - -Launch with: `bin/tinks` or `bin/tinks3d` - -Compile for Android with: `make bin/tinks.apk` - -Launch a server with: `bin/server [server_port]` - -Connect to a precise server with: `bin/tinks server_address [server_port]` - -# Configuration on desktop for the 2D client - -You can configure the client by modifying the file `./config.json` created when you first launch the game. -The fields `res_x` and `res_y` specify the resolution of the window. -The field `play_sounds` should be clear enough. - -# Artwork - -* Trees and rocks models created by Kenney.nl, shared under CC0 -* Ground texture created by Duion, shared under CC0 -* Health model created by Alexis Laferrière, shared under CC0 -* Tank original model created by Sapen, shared under CC-BY-SA 3.0 - * Derivatives from this model were created by Alexis Laferrière, shared under CC-BY-SA 3.0 diff --git a/contrib/tinks/android/.gitignore b/contrib/tinks/android/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/tinks/android/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/tinks/art/drawing.svg b/contrib/tinks/art/drawing.svg deleted file mode 100644 index 47d648a01b..0000000000 --- a/contrib/tinks/art/drawing.svg +++ /dev/null @@ -1,1727 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - TINKS! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Nit - - - - Xy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/tinks/art/icon.svg b/contrib/tinks/art/icon.svg deleted file mode 100644 index 32229e4543..0000000000 --- a/contrib/tinks/art/icon.svg +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - TINKS! - TINKS! - - - diff --git a/contrib/tinks/art/tank.blend b/contrib/tinks/art/tank.blend deleted file mode 100644 index 02b5be3647..0000000000 Binary files a/contrib/tinks/art/tank.blend and /dev/null differ diff --git a/contrib/tinks/assets/images/.gitignore b/contrib/tinks/assets/images/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/tinks/assets/images/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/tinks/assets/models/Large_Oak_Dark_01.mtl b/contrib/tinks/assets/models/Large_Oak_Dark_01.mtl deleted file mode 100644 index 661d7fc528..0000000000 --- a/contrib/tinks/assets/models/Large_Oak_Dark_01.mtl +++ /dev/null @@ -1,20 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 2 - -newmtl Leafs -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.216470 0.326274 0.320000 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl Wood -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.533334 0.436078 0.285490 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Large_Oak_Dark_01.obj b/contrib/tinks/assets/models/Large_Oak_Dark_01.obj deleted file mode 100644 index 8e6ab92908..0000000000 --- a/contrib/tinks/assets/models/Large_Oak_Dark_01.obj +++ /dev/null @@ -1,205 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Large_Oak_Dark_01.mtl -o Mesh1_Large_Oak_Dark_Model -v -0.254685 0.000000 0.256772 -v -0.154205 0.971550 0.156282 -v -0.154205 0.971550 -0.193338 -v -0.254685 0.000000 -0.293818 -v 0.295895 0.000000 0.256772 -v 0.195415 0.971550 0.156282 -v 0.295895 0.000000 -0.293818 -v 0.195415 0.971550 -0.193338 -v 0.609505 0.971550 -1.038527 -v -0.568295 0.971550 -1.038527 -v -0.568295 0.971550 1.001478 -v -1.157195 0.971550 -0.018528 -v -0.734395 1.591550 1.289173 -v -1.489395 1.591550 -0.018528 -v 0.609505 0.971550 1.001478 -v 0.775605 1.591550 1.289173 -v 1.198405 0.971550 -0.018528 -v 0.775605 1.591550 -1.326228 -v 1.530605 1.591550 -0.018528 -v 0.601955 3.771550 -1.025457 -v 1.183305 3.771550 -0.018528 -v -0.734395 1.591550 -1.326228 -v -0.560745 3.771550 -1.025457 -v -1.142095 3.771550 -0.018528 -v 0.020605 4.601550 -0.018527 -v -0.560745 3.771550 0.988402 -v 0.601955 3.771550 0.988402 -vt -0.606904 0.673868 -vt -0.954045 1.058050 -vt -0.765823 0.673868 -vt -0.418682 1.058050 -vt -0.418682 0.130770 -vt -0.151000 0.594408 -vt -0.439273 0.220447 -vt 0.096091 0.220447 -vt 0.171591 0.531128 -vt 0.418682 0.345545 -vt 0.954045 0.345545 -vt 1.029550 0.656225 -vt -0.606904 0.514949 -vt -0.954045 0.130770 -vt -0.765823 0.514949 -vt -1.221730 0.594408 -vt 0.514773 1.281710 -vt -0.171591 1.281710 -vt -0.096091 0.971033 -vt 0.514773 0.513544 -vt 0.435841 1.513840 -vt -0.092659 1.513840 -vt -0.422114 1.554460 -vt -0.950614 1.554460 -vt -1.029550 0.554164 -vt -1.122200 1.676320 -vt -1.201140 0.676023 -vt -0.514773 0.676023 -vt -0.593705 0.966577 -vt -0.857955 1.559720 -vt -1.122200 0.966577 -vt 0.092659 1.425250 -vt -0.171591 2.018390 -vt -0.435841 1.425250 -vt 0.950614 1.195910 -vt 0.686364 1.789060 -vt 0.422114 1.195910 -vt 1.122200 0.507906 -vt 0.857955 1.101050 -vt 0.593705 0.507906 -vt 0.435841 0.049236 -vt 0.171591 0.642379 -vt -0.092659 0.049236 -vt -0.686364 0.871714 -vt -0.950614 0.278571 -vt -0.422114 0.278571 -vt 0.514773 0.594783 -vt 1.201140 0.594783 -vt 1.122200 1.595080 -vt 0.514773 1.031520 -vt 0.590273 0.720838 -vt 1.125640 0.720838 -vt 0.950614 1.716940 -vt 0.422114 1.716940 -vt 0.343182 0.716643 -vt -0.435841 1.757560 -vt -0.514773 0.757263 -vt 0.171591 0.757263 -vt -0.590273 0.470642 -vt -0.514773 0.781323 -vt -1.201140 0.781323 -vt -0.954045 0.845935 -vt -0.418682 0.845935 -vt -0.343182 1.156620 -vt -0.514773 0.531128 -vt 0.343182 0.656225 -vt 0.439273 0.971033 -vt -0.171591 0.513544 -vt -0.343182 0.554164 -vt -0.593705 1.676320 -vt 0.593705 1.595080 -vt 1.201140 1.031520 -vt 1.029550 0.716643 -vt 0.092659 1.757560 -vt -1.125640 0.470642 -vt -1.029550 1.156620 -vt -0.469275 0.057737 -vt -0.514949 0.501706 -vt -0.673868 0.501706 -vt 0.561230 0.048277 -vt 0.811497 0.048277 -vt 0.765823 0.492246 -vt 0.469275 -0.083484 -vt 0.719542 -0.083484 -vt 0.673868 0.360486 -vt -0.561230 0.719542 -vt -0.811497 0.719542 -vt -0.811497 0.469275 -vt -0.606904 0.369946 -vt -0.765823 0.369946 -vt -0.811497 -0.074024 -vt -0.719542 0.057737 -vt 0.606904 0.492246 -vt 0.514949 0.360486 -vt -0.561230 0.469275 -vt -0.561230 -0.074024 -vn 0.000000 -1.000000 -0.000000 -vn -0.785600 -0.420900 0.453500 -vn 0.000000 -0.420900 0.907100 -vn 0.785600 -0.420900 -0.453500 -vn 0.857900 0.136700 -0.495300 -vn 0.000000 0.136700 -0.990600 -vn -0.857900 0.136700 -0.495300 -vn -0.550800 0.771600 -0.318000 -vn -0.550800 0.771600 0.318000 -vn 0.000000 0.771600 0.636100 -vn 0.550800 0.771600 0.318000 -vn 0.550800 0.771600 -0.318000 -vn 0.000000 0.771600 -0.636100 -vn 0.857900 0.136700 0.495300 -vn 0.785600 -0.420900 0.453500 -vn 0.000000 0.136700 0.990600 -vn -0.857900 0.136700 0.495300 -vn -0.785600 -0.420900 -0.453500 -vn 0.000000 -0.420900 -0.907100 -vn 0.785600 -0.420900 -0.453600 -vn -0.785600 -0.420900 -0.453600 -vn -0.994700 0.102900 0.000000 -vn 0.000000 0.102900 0.994700 -vn 0.994700 0.102900 0.000000 -vn 0.000000 0.102900 -0.994700 -usemtl Leafs -s off -f 3/1/1 9/2/1 8/3/1 -f 3/1/1 10/4/1 9/2/1 -f 11/5/1 10/4/1 3/1/1 -f 10/4/1 11/5/1 12/6/1 -f 12/7/2 11/8/2 13/9/2 -f 11/10/3 15/11/3 16/12/3 -f 11/5/1 2/13/1 15/14/1 -f 2/13/1 11/5/1 3/1/1 -f 15/14/1 2/13/1 6/15/1 -f 15/14/1 6/15/1 9/2/1 -f 8/3/1 9/2/1 6/15/1 -f 15/14/1 9/2/1 17/16/1 -f 18/17/4 19/18/4 17/19/4 -f 18/20/5 20/21/5 21/22/5 -f 23/23/6 20/24/6 18/25/6 -f 23/26/7 22/27/7 14/28/7 -f 24/29/8 25/30/8 23/31/8 -f 26/32/9 25/33/9 24/34/9 -f 27/35/10 25/36/10 26/37/10 -f 21/38/11 25/39/11 27/40/11 -f 20/41/12 25/42/12 21/43/12 -f 25/44/13 20/45/13 23/46/13 -f 16/47/14 19/48/14 21/49/14 -f 16/50/15 15/51/15 17/52/15 -f 27/53/16 26/54/16 13/55/16 -f 24/56/17 14/57/17 13/58/17 -f 12/59/18 14/60/18 22/61/18 -f 9/62/19 10/63/19 22/64/19 -f 14/65/2 12/7/2 13/9/2 -f 13/66/3 11/10/3 16/12/3 -f 9/67/20 18/17/20 17/19/20 -f 19/68/5 18/20/5 21/22/5 -f 22/69/6 23/23/6 18/25/6 -f 24/70/7 23/26/7 14/28/7 -f 27/71/14 16/47/14 21/49/14 -f 19/72/15 16/50/15 17/52/15 -f 16/73/16 27/53/16 13/55/16 -f 26/74/17 24/56/17 13/58/17 -f 10/75/21 12/59/21 22/61/21 -f 18/76/19 9/62/19 22/64/19 -usemtl Wood -f 1/77/22 2/78/22 3/79/22 -f 1/80/23 5/81/23 6/82/23 -f 5/83/24 7/84/24 8/85/24 -f 4/86/1 7/87/1 5/88/1 -f 3/89/25 8/90/25 7/91/25 -f 4/92/22 1/77/22 3/79/22 -f 2/93/23 1/80/23 6/82/23 -f 6/94/24 5/83/24 8/85/24 -f 1/95/1 4/86/1 5/88/1 -f 4/96/25 3/89/25 7/91/25 diff --git a/contrib/tinks/assets/models/Large_Oak_Green_01.mtl b/contrib/tinks/assets/models/Large_Oak_Green_01.mtl deleted file mode 100644 index 3f4b549782..0000000000 --- a/contrib/tinks/assets/models/Large_Oak_Green_01.mtl +++ /dev/null @@ -1,20 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 2 - -newmtl Green_leafs -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.238431 0.423530 0.341961 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl Wood.001 -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.533334 0.436078 0.285490 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Large_Oak_Green_01.obj b/contrib/tinks/assets/models/Large_Oak_Green_01.obj deleted file mode 100644 index a7ec38c94b..0000000000 --- a/contrib/tinks/assets/models/Large_Oak_Green_01.obj +++ /dev/null @@ -1,205 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Large_Oak_Green_01.mtl -o Mesh1_Large_Oak_Green_Model -v -0.291125 0.000000 0.266832 -v -0.190645 0.971550 0.166342 -v -0.190645 0.971550 -0.183278 -v -0.291125 0.000000 -0.283758 -v 0.259455 0.000000 0.266832 -v 0.158975 0.971550 0.166342 -v 0.259455 0.000000 -0.283758 -v 0.158975 0.971550 -0.183278 -v 0.573065 0.971550 -1.028468 -v -0.604735 0.971550 -1.028468 -v -0.604735 0.971550 1.011538 -v -1.193635 0.971550 -0.008468 -v -0.770835 1.591550 1.299232 -v -1.525835 1.591550 -0.008468 -v 0.573065 0.971550 1.011538 -v 0.739165 1.591550 1.299232 -v 1.161965 0.971550 -0.008468 -v 0.739165 1.591550 -1.316168 -v 1.494165 1.591550 -0.008468 -v 0.565515 3.771550 -1.015398 -v 1.146865 3.771550 -0.008468 -v -0.770835 1.591550 -1.316168 -v -0.597185 3.771550 -1.015398 -v -1.178535 3.771550 -0.008468 -v -0.015835 4.601550 -0.008468 -v -0.597185 3.771550 0.998461 -v 0.565515 3.771550 0.998461 -vt -0.469275 0.057737 -vt -0.514949 0.501706 -vt -0.673868 0.501706 -vt 0.561230 0.048277 -vt 0.811497 0.048277 -vt 0.765823 0.492246 -vt 0.469275 -0.083484 -vt 0.719542 -0.083484 -vt 0.673868 0.360486 -vt -0.561230 0.719542 -vt -0.811497 0.719542 -vt -0.811497 0.469275 -vt -0.606904 0.369946 -vt -0.765823 0.369946 -vt -0.811497 -0.074024 -vt -0.719542 0.057737 -vt 0.606904 0.492246 -vt 0.514949 0.360486 -vt -0.561230 0.469275 -vt -0.561230 -0.074024 -vt -0.606904 0.673868 -vt -0.954045 1.058050 -vt -0.765823 0.673868 -vt -0.418682 1.058050 -vt -0.418682 0.130770 -vt -0.151000 0.594408 -vt -0.439273 0.220447 -vt 0.096091 0.220447 -vt 0.171591 0.531128 -vt 0.418682 0.345545 -vt 0.954045 0.345545 -vt 1.029550 0.656225 -vt -0.606904 0.514949 -vt -0.954045 0.130770 -vt -0.765823 0.514949 -vt -1.221730 0.594408 -vt 0.514773 1.281710 -vt -0.171591 1.281710 -vt -0.096091 0.971033 -vt 0.514773 0.513544 -vt 0.435841 1.513840 -vt -0.092659 1.513840 -vt -0.422114 1.554460 -vt -0.950614 1.554460 -vt -1.029550 0.554164 -vt -1.122200 1.676320 -vt -1.201140 0.676023 -vt -0.514773 0.676023 -vt -0.593705 0.966577 -vt -0.857955 1.559720 -vt -1.122200 0.966577 -vt 0.092659 1.425250 -vt -0.171591 2.018390 -vt -0.435841 1.425250 -vt 0.950614 1.195910 -vt 0.686364 1.789060 -vt 0.422114 1.195910 -vt 1.122200 0.507906 -vt 0.857955 1.101050 -vt 0.593705 0.507906 -vt 0.435841 0.049236 -vt 0.171591 0.642379 -vt -0.092659 0.049236 -vt -0.686364 0.871714 -vt -0.950614 0.278571 -vt -0.422114 0.278571 -vt 0.514773 0.594783 -vt 1.201140 0.594783 -vt 1.122200 1.595080 -vt 0.514773 1.031520 -vt 0.590273 0.720838 -vt 1.125640 0.720838 -vt 0.950614 1.716940 -vt 0.422114 1.716940 -vt 0.343182 0.716643 -vt -0.435841 1.757560 -vt -0.514773 0.757263 -vt 0.171591 0.757263 -vt -0.590273 0.470642 -vt -0.514773 0.781323 -vt -1.201140 0.781323 -vt -0.954045 0.845935 -vt -0.418682 0.845935 -vt -0.343182 1.156620 -vt -0.514773 0.531128 -vt 0.343182 0.656225 -vt 0.439273 0.971033 -vt -0.171591 0.513544 -vt -0.343182 0.554164 -vt -0.593705 1.676320 -vt 0.593705 1.595080 -vt 1.201140 1.031520 -vt 1.029550 0.716643 -vt 0.092659 1.757560 -vt -1.125640 0.470642 -vt -1.029550 1.156620 -vn -0.994700 0.102900 0.000000 -vn 0.000000 0.102900 0.994700 -vn 0.994700 0.102900 0.000000 -vn 0.000000 -1.000000 -0.000000 -vn 0.000000 0.102900 -0.994700 -vn -0.785600 -0.420900 0.453500 -vn 0.000000 -0.420900 0.907100 -vn 0.785600 -0.420900 -0.453500 -vn 0.857900 0.136700 -0.495300 -vn 0.000000 0.136700 -0.990600 -vn -0.857900 0.136700 -0.495300 -vn -0.550800 0.771600 -0.318000 -vn -0.550800 0.771600 0.318000 -vn 0.000000 0.771600 0.636100 -vn 0.550800 0.771600 0.318000 -vn 0.550800 0.771600 -0.318000 -vn 0.000000 0.771600 -0.636100 -vn 0.857900 0.136700 0.495300 -vn 0.785600 -0.420900 0.453500 -vn 0.000000 0.136700 0.990600 -vn -0.857900 0.136700 0.495300 -vn -0.785600 -0.420900 -0.453500 -vn 0.000000 -0.420900 -0.907100 -vn 0.785600 -0.420900 -0.453600 -vn -0.785600 -0.420900 -0.453600 -usemtl Wood.001 -s off -f 1/1/1 2/2/1 3/3/1 -f 1/4/2 5/5/2 6/6/2 -f 5/7/3 7/8/3 8/9/3 -f 4/10/4 7/11/4 5/12/4 -f 3/13/5 8/14/5 7/15/5 -f 4/16/1 1/1/1 3/3/1 -f 2/17/2 1/4/2 6/6/2 -f 6/18/3 5/7/3 8/9/3 -f 1/19/4 4/10/4 5/12/4 -f 4/20/5 3/13/5 7/15/5 -usemtl Green_leafs -f 3/21/4 9/22/4 8/23/4 -f 3/21/4 10/24/4 9/22/4 -f 11/25/4 10/24/4 3/21/4 -f 10/24/4 11/25/4 12/26/4 -f 12/27/6 11/28/6 13/29/6 -f 11/30/7 15/31/7 16/32/7 -f 11/25/4 2/33/4 15/34/4 -f 2/33/4 11/25/4 3/21/4 -f 15/34/4 2/33/4 6/35/4 -f 15/34/4 6/35/4 9/22/4 -f 8/23/4 9/22/4 6/35/4 -f 15/34/4 9/22/4 17/36/4 -f 18/37/8 19/38/8 17/39/8 -f 18/40/9 20/41/9 21/42/9 -f 23/43/10 20/44/10 18/45/10 -f 23/46/11 22/47/11 14/48/11 -f 24/49/12 25/50/12 23/51/12 -f 26/52/13 25/53/13 24/54/13 -f 27/55/14 25/56/14 26/57/14 -f 21/58/15 25/59/15 27/60/15 -f 20/61/16 25/62/16 21/63/16 -f 25/64/17 20/65/17 23/66/17 -f 16/67/18 19/68/18 21/69/18 -f 16/70/19 15/71/19 17/72/19 -f 27/73/20 26/74/20 13/75/20 -f 24/76/21 14/77/21 13/78/21 -f 12/79/22 14/80/22 22/81/22 -f 9/82/23 10/83/23 22/84/23 -f 14/85/6 12/27/6 13/29/6 -f 13/86/7 11/30/7 16/32/7 -f 9/87/24 18/37/24 17/39/24 -f 19/88/9 18/40/9 21/42/9 -f 22/89/10 23/43/10 18/45/10 -f 24/90/11 23/46/11 14/48/11 -f 27/91/18 16/67/18 21/69/18 -f 19/92/19 16/70/19 17/72/19 -f 16/93/20 27/73/20 13/75/20 -f 26/94/21 24/76/21 13/78/21 -f 10/95/25 12/79/25 22/81/25 -f 18/96/23 9/82/23 22/84/23 diff --git a/contrib/tinks/assets/models/Oak_Dark_01.mtl b/contrib/tinks/assets/models/Oak_Dark_01.mtl deleted file mode 100644 index 51e9d7cfa0..0000000000 --- a/contrib/tinks/assets/models/Oak_Dark_01.mtl +++ /dev/null @@ -1,20 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 2 - -newmtl Leafs.001 -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.216470 0.326274 0.320000 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl Wood.002 -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.533334 0.436078 0.285490 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Oak_Dark_01.obj b/contrib/tinks/assets/models/Oak_Dark_01.obj deleted file mode 100644 index 4af44dd79a..0000000000 --- a/contrib/tinks/assets/models/Oak_Dark_01.obj +++ /dev/null @@ -1,247 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Oak_Dark_01.mtl -o Mesh1_Oak_Dark_Model -v 0.788482 1.533500 -0.461880 -v 0.000395 1.533500 -0.916880 -v 0.000395 2.817000 -0.916880 -v 0.788482 2.817000 -0.461880 -v 0.000395 1.270000 -0.516480 -v 0.441722 1.270000 -0.261680 -v -0.440931 1.270000 -0.261680 -v -0.787688 1.533500 -0.461880 -v -0.787688 1.533500 0.448120 -v -0.440931 1.270000 0.247920 -v -0.787688 2.817000 0.448120 -v -0.787688 2.817000 -0.461880 -v 0.000395 1.533500 0.903120 -v 0.000395 2.817000 0.903120 -v 0.000395 1.270000 0.502720 -v 0.441722 1.270000 0.247920 -v 0.788482 1.533500 0.448120 -v 0.114651 1.270000 0.107376 -v -0.113861 1.270000 0.107376 -v -0.113861 1.270000 -0.121140 -v 0.114651 1.270000 -0.121140 -v 0.180326 0.000000 0.173050 -v 0.180326 0.000000 -0.186810 -v -0.179535 0.000000 0.173050 -v -0.179535 0.000000 -0.186810 -v 0.788482 2.817000 0.448120 -v 0.457482 4.508500 -0.270780 -v 0.457482 4.508500 0.257020 -v 0.000395 4.508500 -0.534680 -v -0.456693 4.508500 -0.270780 -v -0.456693 4.508500 0.257020 -v 0.000395 4.933500 -0.006880 -v 0.000395 4.508500 0.520920 -vt 0.103409 0.697045 -vt 0.103409 1.280450 -vt -0.310227 1.280450 -vt -0.310227 1.134770 -vt -0.219227 0.936811 -vt 0.012409 0.936811 -vt -0.310227 0.849557 -vt -0.723864 0.849557 -vt -0.632864 0.651596 -vt -0.620455 0.421735 -vt -0.529455 0.223774 -vt -0.297818 0.223774 -vt -0.206818 0.697045 -vt -0.206818 1.280450 -vt -0.620455 1.280450 -vt 0.310227 0.697045 -vt 0.310227 1.280450 -vt -0.103409 1.280450 -vt 0.219227 0.081167 -vt 0.310227 0.279128 -vt -0.103409 0.279128 -vt 0.723864 0.564342 -vt 0.310227 0.564342 -vt 0.401227 0.366382 -vt 0.206818 0.992165 -vt 0.297818 0.794204 -vt 0.529455 0.794204 -vt -0.558823 0.297818 -vt -0.410154 0.361702 -vt -0.558823 0.529455 -vt -0.358220 0.182000 -vt -0.306285 0.361702 -vt -0.157617 0.297818 -vt -0.306285 0.465571 -vt -0.358220 0.645273 -vt -0.157617 0.529455 -vt -0.410154 0.465571 -vt 0.620455 0.697045 -vt 0.620455 1.280450 -vt 0.206818 1.280450 -vt 0.620455 1.119040 -vt 0.533591 1.902480 -vt 0.293682 1.902480 -vt 0.016546 1.868090 -vt -0.223364 1.868090 -vt -0.310227 1.084640 -vt -0.397091 1.936880 -vt -0.637000 1.936880 -vt -0.723864 1.153430 -vt -0.533591 2.040070 -vt -0.620455 1.256620 -vt -0.206818 1.256620 -vt -0.293682 1.505630 -vt -0.413636 1.789330 -vt -0.533591 1.505630 -vt 0.223364 1.636800 -vt 0.103409 1.920500 -vt -0.016546 1.636800 -vt 0.517045 1.658160 -vt 0.397091 1.374460 -vt 0.637000 1.374460 -vt 0.723864 1.222230 -vt 0.637000 2.005670 -vt 0.397091 2.005670 -vt 0.223364 2.074460 -vt -0.016546 2.074460 -vt -0.103409 1.291020 -vt 0.723864 0.697045 -vt 0.723864 1.280450 -vt 0.533591 0.980952 -vt 0.413636 1.264650 -vt 0.293682 0.980952 -vt 0.016546 0.849782 -vt -0.103409 1.133480 -vt -0.223364 0.849782 -vt -0.397091 1.112120 -vt -0.517045 1.395820 -vt -0.637000 1.112120 -vt -0.310227 0.697045 -vt -0.723864 1.280450 -vt 0.103409 1.134770 -vt -0.401227 0.651596 -vt -0.206818 0.421735 -vt -0.620455 0.697045 -vt -0.103409 0.697045 -vt -0.012409 0.081167 -vt 0.632864 0.366382 -vt 0.620455 0.992165 -vt 0.206818 0.697045 -vt 0.206818 1.119040 -vt 0.103409 1.084640 -vt -0.310227 1.153430 -vt -0.293682 2.040070 -vt 0.310227 1.222230 -vt 0.310227 1.291020 -vt -0.723864 0.697045 -vt 0.331850 -0.022723 -vt 0.495423 -0.022723 -vt 0.465571 0.555321 -vt -0.276433 0.495423 -vt -0.440006 0.495423 -vt -0.440006 0.331850 -vt -0.331850 0.014276 -vt -0.361702 0.592320 -vt -0.465571 0.592320 -vt 0.410154 0.595182 -vt 0.306285 0.595182 -vt 0.276433 0.017138 -vt -0.306285 0.552459 -vt -0.410154 0.552459 -vt -0.440006 -0.025585 -vt 0.361702 0.555321 -vt -0.276433 0.331850 -vt -0.495423 0.014276 -vt 0.440006 0.017138 -vt -0.276433 -0.025585 -vn 0.500000 0.000000 -0.866000 -vn 0.302500 -0.796200 -0.524000 -vn -0.302500 -0.796200 -0.524000 -vn -0.605000 -0.796200 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.500000 -0.000000 0.866000 -vn -0.302500 -0.796200 0.524000 -vn 0.302500 -0.796200 0.524000 -vn 0.605000 -0.796200 0.000000 -vn 0.000000 -1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.981400 0.192000 0.000000 -vn 0.490700 0.192000 -0.849900 -vn -0.490700 0.192000 -0.849900 -vn -0.981400 0.192000 0.000000 -vn -0.680900 0.732300 0.000000 -vn -0.340500 0.732300 0.589700 -vn 0.340500 0.732300 0.589700 -vn 0.490700 0.192000 0.849900 -vn -0.490700 0.192000 0.849900 -vn 0.500000 -0.000000 0.866000 -vn 0.680900 0.732300 0.000000 -vn 0.340500 0.732300 -0.589700 -vn -0.340500 0.732300 -0.589700 -vn -0.500000 0.000000 -0.866000 -vn 0.998700 0.051600 0.000000 -vn -0.998700 0.051600 0.000000 -vn 0.000000 0.051600 0.998700 -vn 0.000000 0.051600 -0.998700 -usemtl Leafs.001 -s off -f 2/1/1 3/2/1 4/3/1 -f 1/4/2 6/5/2 5/6/2 -f 8/7/3 2/8/3 5/9/3 -f 8/10/4 7/11/4 10/12/4 -f 9/13/5 11/14/5 12/15/5 -f 13/16/6 14/17/6 11/18/6 -f 15/19/7 13/20/7 9/21/7 -f 17/22/8 13/23/8 15/24/8 -f 17/25/9 16/26/9 6/27/9 -f 16/28/10 18/29/10 6/30/10 -f 15/31/10 18/29/10 16/28/10 -f 15/31/10 19/32/10 18/29/10 -f 10/33/10 19/32/10 15/31/10 -f 19/32/10 10/33/10 20/34/10 -f 10/33/10 5/35/10 20/34/10 -f 5/35/10 10/33/10 7/36/10 -f 20/34/10 5/35/10 21/37/10 -f 21/37/10 5/35/10 6/30/10 -f 21/37/10 6/30/10 18/29/10 -f 1/38/11 4/39/11 26/40/11 -f 4/41/12 27/42/12 28/43/12 -f 29/44/13 27/45/13 4/46/13 -f 30/47/14 29/48/14 3/49/14 -f 30/50/15 12/51/15 11/52/15 -f 31/53/16 32/54/16 30/55/16 -f 33/56/17 32/57/17 31/58/17 -f 32/59/18 33/60/18 28/61/18 -f 26/62/19 28/63/19 33/64/19 -f 33/65/20 31/66/20 11/67/20 -f 17/68/21 26/69/21 14/17/21 -f 27/70/22 32/71/22 28/72/22 -f 29/73/23 32/74/23 27/75/23 -f 30/76/24 32/77/24 29/78/24 -f 8/79/25 12/3/25 3/80/25 -f 1/79/1 2/1/1 4/3/1 -f 2/81/2 1/4/2 5/6/2 -f 7/82/3 8/7/3 5/9/3 -f 9/83/4 8/10/4 10/12/4 -f 8/84/5 9/13/5 12/15/5 -f 9/85/6 13/16/6 11/18/6 -f 10/86/7 15/19/7 9/21/7 -f 16/87/8 17/22/8 15/24/8 -f 1/88/9 17/25/9 6/27/9 -f 17/89/11 1/38/11 26/40/11 -f 26/90/12 4/41/12 28/43/12 -f 3/91/13 29/44/13 4/46/13 -f 12/92/14 30/47/14 3/49/14 -f 31/93/15 30/50/15 11/52/15 -f 14/94/19 26/62/19 33/64/19 -f 14/95/20 33/65/20 11/67/20 -f 13/16/21 17/68/21 14/17/21 -f 2/96/25 8/79/25 3/80/25 -usemtl Wood.002 -f 22/97/26 23/98/26 21/99/26 -f 25/100/10 23/101/10 22/102/10 -f 24/103/27 19/104/27 20/105/27 -f 18/106/28 19/107/28 24/108/28 -f 20/109/29 21/110/29 23/111/29 -f 18/112/26 22/97/26 21/99/26 -f 24/113/10 25/100/10 22/102/10 -f 25/114/27 24/103/27 20/105/27 -f 22/115/28 18/106/28 24/108/28 -f 25/116/29 20/109/29 23/111/29 diff --git a/contrib/tinks/assets/models/Oak_Green_01.mtl b/contrib/tinks/assets/models/Oak_Green_01.mtl deleted file mode 100644 index a45a3d6f68..0000000000 --- a/contrib/tinks/assets/models/Oak_Green_01.mtl +++ /dev/null @@ -1,20 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 2 - -newmtl Green_leafs.002 -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.238431 0.423530 0.341961 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 - -newmtl Wood.004 -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.533334 0.436078 0.285490 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Oak_Green_01.obj b/contrib/tinks/assets/models/Oak_Green_01.obj deleted file mode 100644 index 40cc0c24d8..0000000000 --- a/contrib/tinks/assets/models/Oak_Green_01.obj +++ /dev/null @@ -1,247 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Oak_Green_01.mtl -o Mesh1_Oak_Green_Model.001 -v 0.805160 1.533500 -0.471659 -v 0.017074 1.533500 -0.926659 -v 0.017074 2.817000 -0.926659 -v 0.805160 2.817000 -0.471659 -v 0.017074 1.270000 -0.526259 -v 0.458401 1.270000 -0.271459 -v -0.424253 1.270000 -0.271459 -v -0.771010 1.533500 -0.471659 -v -0.771010 1.533500 0.438341 -v -0.424253 1.270000 0.238141 -v -0.771010 2.817000 0.438341 -v -0.771010 2.817000 -0.471659 -v 0.017074 1.533500 0.893341 -v 0.017074 2.817000 0.893341 -v 0.017074 1.270000 0.492941 -v 0.458401 1.270000 0.238141 -v 0.805160 1.533500 0.438341 -v 0.131329 1.270000 0.097597 -v -0.097183 1.270000 0.097597 -v -0.097183 1.270000 -0.130919 -v 0.131329 1.270000 -0.130919 -v 0.197004 0.000000 0.163271 -v 0.197004 0.000000 -0.196589 -v -0.162857 0.000000 0.163271 -v -0.162857 0.000000 -0.196589 -v 0.805160 2.817000 0.438341 -v 0.474160 4.508500 -0.280559 -v 0.474160 4.508500 0.247241 -v 0.017074 4.508500 -0.544459 -v -0.440015 4.508500 -0.280559 -v -0.440015 4.508500 0.247241 -v 0.017074 4.933500 -0.016659 -v 0.017074 4.508500 0.511141 -vt 0.331850 -0.022723 -vt 0.495423 -0.022723 -vt 0.465571 0.555321 -vt -0.276433 0.495423 -vt -0.440006 0.495423 -vt -0.440006 0.331850 -vt -0.331850 0.014276 -vt -0.361702 0.592320 -vt -0.465571 0.592320 -vt 0.440006 0.017138 -vt 0.410154 0.595182 -vt 0.306285 0.595182 -vt -0.306285 0.552459 -vt -0.410154 0.552459 -vt -0.440006 -0.025585 -vt 0.361702 0.555321 -vt -0.276433 0.331850 -vt -0.495423 0.014276 -vt 0.276433 0.017138 -vt -0.276433 -0.025585 -vt 0.103409 0.697045 -vt 0.103409 1.280450 -vt -0.310227 1.280450 -vt -0.310227 1.134770 -vt -0.219227 0.936811 -vt 0.012409 0.936811 -vt -0.310227 0.849557 -vt -0.723864 0.849557 -vt -0.632864 0.651596 -vt -0.206818 0.421735 -vt -0.620455 0.421735 -vt -0.529455 0.223774 -vt -0.206818 0.697045 -vt -0.206818 1.280450 -vt -0.620455 1.280450 -vt 0.310227 0.697045 -vt 0.310227 1.280450 -vt -0.103409 1.280450 -vt 0.310227 0.279128 -vt -0.103409 0.279128 -vt -0.012409 0.081167 -vt 0.723864 0.564342 -vt 0.310227 0.564342 -vt 0.401227 0.366382 -vt 0.206818 0.992165 -vt 0.297818 0.794204 -vt 0.529455 0.794204 -vt -0.558823 0.297818 -vt -0.410154 0.361702 -vt -0.558823 0.529455 -vt -0.358220 0.182000 -vt -0.306285 0.361702 -vt -0.157617 0.297818 -vt -0.306285 0.465571 -vt -0.358220 0.645273 -vt -0.157617 0.529455 -vt -0.410154 0.465571 -vt 0.620455 0.697045 -vt 0.620455 1.280450 -vt 0.206818 1.280450 -vt 0.620455 1.119040 -vt 0.533591 1.902480 -vt 0.293682 1.902480 -vt 0.016546 1.868090 -vt -0.223364 1.868090 -vt -0.310227 1.084640 -vt -0.397091 1.936880 -vt -0.637000 1.936880 -vt -0.723864 1.153430 -vt -0.533591 2.040070 -vt -0.620455 1.256620 -vt -0.206818 1.256620 -vt -0.293682 1.505630 -vt -0.413636 1.789330 -vt -0.533591 1.505630 -vt 0.223364 1.636800 -vt 0.103409 1.920500 -vt -0.016546 1.636800 -vt 0.517045 1.658160 -vt 0.397091 1.374460 -vt 0.637000 1.374460 -vt 0.723864 1.222230 -vt 0.637000 2.005670 -vt 0.397091 2.005670 -vt 0.223364 2.074460 -vt -0.016546 2.074460 -vt -0.103409 1.291020 -vt 0.723864 0.697045 -vt 0.723864 1.280450 -vt 0.533591 0.980952 -vt 0.413636 1.264650 -vt 0.293682 0.980952 -vt 0.016546 0.849782 -vt -0.103409 1.133480 -vt -0.223364 0.849782 -vt -0.397091 1.112120 -vt -0.517045 1.395820 -vt -0.637000 1.112120 -vt -0.310227 0.697045 -vt -0.723864 1.280450 -vt 0.103409 1.134770 -vt -0.401227 0.651596 -vt -0.297818 0.223774 -vt -0.620455 0.697045 -vt -0.103409 0.697045 -vt 0.219227 0.081167 -vt 0.632864 0.366382 -vt 0.620455 0.992165 -vt 0.206818 0.697045 -vt 0.206818 1.119040 -vt 0.103409 1.084640 -vt -0.310227 1.153430 -vt -0.293682 2.040070 -vt 0.310227 1.222230 -vt 0.310227 1.291020 -vt -0.723864 0.697045 -vn 0.998700 0.051600 0.000000 -vn 0.000000 -1.000000 -0.000000 -vn -0.998700 0.051600 0.000000 -vn 0.000000 0.051600 0.998700 -vn 0.000000 0.051600 -0.998700 -vn 0.500000 0.000000 -0.866000 -vn 0.302500 -0.796200 -0.524000 -vn -0.302500 -0.796200 -0.524000 -vn -0.605000 -0.796200 -0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.500000 -0.000000 0.866000 -vn -0.302500 -0.796200 0.524000 -vn 0.302500 -0.796200 0.524000 -vn 0.605000 -0.796200 0.000000 -vn 1.000000 0.000000 0.000000 -vn 0.981400 0.192000 0.000000 -vn 0.490700 0.192000 -0.849900 -vn -0.490700 0.192000 -0.849900 -vn -0.981400 0.192000 0.000000 -vn -0.680900 0.732300 0.000000 -vn -0.340500 0.732300 0.589700 -vn 0.340500 0.732300 0.589700 -vn 0.490700 0.192000 0.849900 -vn -0.490700 0.192000 0.849900 -vn 0.500000 -0.000000 0.866000 -vn 0.680900 0.732300 0.000000 -vn 0.340500 0.732300 -0.589700 -vn -0.340500 0.732300 -0.589700 -vn -0.500000 0.000000 -0.866000 -usemtl Wood.004 -s off -f 22/1/1 23/2/1 21/3/1 -f 25/4/2 23/5/2 22/6/2 -f 24/7/3 19/8/3 20/9/3 -f 22/10/4 18/11/4 19/12/4 -f 20/13/5 21/14/5 23/15/5 -f 18/16/1 22/1/1 21/3/1 -f 24/17/2 25/4/2 22/6/2 -f 25/18/3 24/7/3 20/9/3 -f 24/19/4 22/10/4 19/12/4 -f 25/20/5 20/13/5 23/15/5 -usemtl Green_leafs.002 -f 2/21/6 3/22/6 4/23/6 -f 1/24/7 6/25/7 5/26/7 -f 8/27/8 2/28/8 5/29/8 -f 9/30/9 8/31/9 7/32/9 -f 9/33/10 11/34/10 12/35/10 -f 13/36/11 14/37/11 11/38/11 -f 13/39/12 9/40/12 10/41/12 -f 17/42/13 13/43/13 15/44/13 -f 17/45/14 16/46/14 6/47/14 -f 16/48/2 18/49/2 6/50/2 -f 15/51/2 18/49/2 16/48/2 -f 15/51/2 19/52/2 18/49/2 -f 10/53/2 19/52/2 15/51/2 -f 19/52/2 10/53/2 20/54/2 -f 10/53/2 5/55/2 20/54/2 -f 5/55/2 10/53/2 7/56/2 -f 20/54/2 5/55/2 21/57/2 -f 21/57/2 5/55/2 6/50/2 -f 21/57/2 6/50/2 18/49/2 -f 1/58/15 4/59/15 26/60/15 -f 4/61/16 27/62/16 28/63/16 -f 29/64/17 27/65/17 4/66/17 -f 30/67/18 29/68/18 3/69/18 -f 30/70/19 12/71/19 11/72/19 -f 31/73/20 32/74/20 30/75/20 -f 33/76/21 32/77/21 31/78/21 -f 32/79/22 33/80/22 28/81/22 -f 26/82/23 28/83/23 33/84/23 -f 33/85/24 31/86/24 11/87/24 -f 17/88/25 26/89/25 14/37/25 -f 27/90/26 32/91/26 28/92/26 -f 29/93/27 32/94/27 27/95/27 -f 30/96/28 32/97/28 29/98/28 -f 8/99/29 12/23/29 3/100/29 -f 1/99/6 2/21/6 4/23/6 -f 2/101/7 1/24/7 5/26/7 -f 7/102/8 8/27/8 5/29/8 -f 10/103/9 9/30/9 7/32/9 -f 8/104/10 9/33/10 12/35/10 -f 9/105/11 13/36/11 11/38/11 -f 15/106/12 13/39/12 10/41/12 -f 16/107/13 17/42/13 15/44/13 -f 1/108/14 17/45/14 6/47/14 -f 17/109/15 1/58/15 26/60/15 -f 26/110/16 4/61/16 28/63/16 -f 3/111/17 29/64/17 4/66/17 -f 12/112/18 30/67/18 3/69/18 -f 31/113/19 30/70/19 11/72/19 -f 14/114/23 26/82/23 33/84/23 -f 14/115/24 33/85/24 11/87/24 -f 13/36/25 17/88/25 14/37/25 -f 2/116/29 8/99/29 3/100/29 diff --git a/contrib/tinks/assets/models/Tall_Rock_1_01.mtl b/contrib/tinks/assets/models/Tall_Rock_1_01.mtl deleted file mode 100644 index de6306b47e..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_1_01.mtl +++ /dev/null @@ -1,11 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Stone -Ns 96.078431 -Ka 0.000000 0.000000 0.000000 -Kd 0.580392 0.602353 0.630588 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Tall_Rock_1_01.obj b/contrib/tinks/assets/models/Tall_Rock_1_01.obj deleted file mode 100644 index 3e88707d18..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_1_01.obj +++ /dev/null @@ -1,146 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Tall_Rock_1_01.mtl -o Mesh1_Tall_Rock_1_Model -v 0.342046 1.590000 0.209427 -v 0.448116 0.740000 0.230549 -v 0.448116 0.740000 -0.035701 -v 0.601836 0.000000 0.319299 -v -0.013046 0.740000 0.496799 -v -0.013046 1.590000 0.414440 -v -0.368138 1.590000 0.209427 -v -0.474204 0.740000 0.230549 -v -0.368138 1.590000 0.004415 -v -0.474204 0.740000 -0.035701 -v -0.089681 1.590000 -0.137009 -v -0.112571 0.740000 -0.219368 -v -0.474204 0.740000 -0.301951 -v -0.013046 0.740000 -0.568201 -v -0.013046 0.000000 -0.745701 -v 0.448116 0.740000 -0.301951 -v 0.601836 0.000000 -0.390701 -v -0.627924 0.000000 0.319299 -v -0.627924 0.000000 -0.390701 -v 0.342046 1.590000 0.004415 -v -0.013046 0.000000 0.674299 -vt 18.302000 57.388100 -vt 17.470501 23.664000 -vt 27.952801 23.664000 -vt 48.917301 -2.461780 -vt 45.423199 27.294001 -vt 24.458700 27.294001 -vt 45.423199 28.525801 -vt 42.222599 62.108002 -vt 26.079901 62.108002 -vt 15.849200 64.132202 -vt -0.293488 64.132202 -vt -3.494090 30.549999 -vt -18.302000 63.383099 -vt -26.373400 63.383099 -vt -27.952801 29.659000 -vt -18.053699 26.816999 -vt -21.061701 60.443802 -vt -33.357399 60.443802 -vt -31.556999 25.716900 -vt -8.328640 25.716900 -vt -10.194500 59.298500 -vt -24.458700 22.370501 -vt -45.423199 22.370501 -vt -48.917301 -7.385330 -vt 3.494090 17.446899 -vt -17.470501 17.446899 -vt -20.964600 -12.308900 -vt 17.470501 32.217602 -vt -3.494090 32.217602 -vt -6.988190 2.461780 -vt 21.190701 31.941200 -vt 10.227800 26.373400 -vt 10.227800 18.302000 -vt 20.289499 35.183701 -vt 42.363602 27.952801 -vt 42.363602 38.435001 -vt 0.558980 0.161364 -vt 0.558980 0.484091 -vt 0.279490 0.645455 -vt -27.952801 29.755800 -vt -38.435001 29.755800 -vt -41.929100 -0.000000 -vt 27.952801 19.908701 -vt 17.470501 19.908701 -vt 13.976400 -9.847110 -vt 26.373400 57.388100 -vt 20.964600 -2.461780 -vt 24.458700 28.525801 -vt 17.470501 30.549999 -vt -17.470501 29.659000 -vt -34.022202 26.816999 -vt -28.080299 59.298500 -vt -20.964600 -7.385330 -vt 6.988190 -12.308900 -vt 20.964600 2.461780 -vt 24.207800 10.230700 -vt 38.187801 18.302000 -vt 38.187801 26.373400 -vt 6.051950 38.435001 -vt 6.051950 27.952801 -vt 24.207800 48.917301 -vt 0.000000 0.484091 -vt 0.000000 0.161364 -vt -17.470501 29.755800 -vt -13.976400 -0.000000 -vt 0.279490 0.000000 -vt 38.435001 19.908701 -vt 41.929100 -9.847110 -vn 0.992300 0.123800 0.000000 -vn 0.489500 0.203400 0.847900 -vn 0.498200 0.083600 0.863000 -vn -0.498200 0.083600 0.863000 -vn -0.992300 0.123800 0.000000 -vn -0.450600 0.098100 -0.887300 -vn 0.310200 0.083400 -0.947000 -vn -0.489500 0.203400 -0.847900 -vn 0.489500 0.203400 -0.847900 -vn -0.489500 0.203400 0.847900 -vn 0.000000 1.000000 0.000000 -vn -0.979100 0.203400 0.000000 -vn 0.979100 0.203400 0.000000 -usemtl Stone -s off -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 2/5/2 5/6/2 -f 2/7/3 1/8/3 6/9/3 -f 6/10/4 7/11/4 8/12/4 -f 7/13/5 9/14/5 10/15/5 -f 10/16/6 9/17/6 11/18/6 -f 3/19/7 12/20/7 11/21/7 -f 13/22/8 14/23/8 15/24/8 -f 14/25/9 16/26/9 17/27/9 -f 5/28/10 8/29/10 18/30/10 -f 11/31/11 9/32/11 7/33/11 -f 12/34/11 3/35/11 16/36/11 -f 4/37/11 17/38/11 15/39/11 -f 10/40/12 13/41/12 19/42/12 -f 3/43/13 2/44/13 4/45/13 -f 20/46/1 1/1/1 3/3/1 -f 21/47/2 4/4/2 5/6/2 -f 5/48/3 2/7/3 6/9/3 -f 5/49/4 6/10/4 8/12/4 -f 8/50/5 7/13/5 10/15/5 -f 12/51/6 10/16/6 11/18/6 -f 20/52/7 3/19/7 11/21/7 -f 19/53/8 13/22/8 15/24/8 -f 15/54/9 14/25/9 17/27/9 -f 21/55/10 5/28/10 18/30/10 -f 6/56/11 1/57/11 11/31/11 -f 11/31/11 1/57/11 20/58/11 -f 6/56/11 11/31/11 7/33/11 -f 13/59/11 10/60/11 12/34/11 -f 13/59/11 12/34/11 14/61/11 -f 15/39/11 19/62/11 18/63/11 -f 8/64/12 10/40/12 18/65/12 -f 12/34/11 16/36/11 14/61/11 -f 4/37/11 15/39/11 21/66/11 -f 16/67/13 3/43/13 17/68/13 -f 15/39/11 18/63/11 21/66/11 -f 10/40/12 19/42/12 18/65/12 -f 3/43/13 4/45/13 17/68/13 diff --git a/contrib/tinks/assets/models/Tall_Rock_2_01.mtl b/contrib/tinks/assets/models/Tall_Rock_2_01.mtl deleted file mode 100644 index cbb536a3ef..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_2_01.mtl +++ /dev/null @@ -1,11 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Stone.001 -Ns 92.156863 -Ka 0.000000 0.000000 0.000000 -Kd 0.464314 0.481882 0.504470 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Tall_Rock_2_01.obj b/contrib/tinks/assets/models/Tall_Rock_2_01.obj deleted file mode 100644 index a5626ee2d4..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_2_01.obj +++ /dev/null @@ -1,194 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Tall_Rock_2_01.mtl -o Mesh1_Tall_Rock_2_Model -v 0.524807 1.060000 0.293341 -v 0.018354 1.060000 0.585741 -v 0.018354 0.000000 0.680941 -v 0.018354 0.000000 -0.679060 -v 0.018354 1.060000 -0.583859 -v 0.524807 1.060000 -0.291459 -v -0.488097 1.060000 -0.291459 -v -0.488097 1.060000 0.000941 -v -0.417194 1.480000 0.030156 -v -0.023658 1.480000 -0.113848 -v -0.417194 1.480000 0.281620 -v -0.177532 1.480000 0.419989 -v 0.453907 1.480000 0.281620 -v 0.018354 1.480000 0.533084 -v 0.524807 1.060000 0.000941 -v 0.453907 1.480000 0.030156 -v 0.003855 2.170000 -0.058858 -v 0.400231 2.170000 0.060664 -v 0.038726 2.170000 0.478095 -v -0.123860 2.170000 0.384226 -v 0.400231 2.170000 0.269380 -v -0.488097 1.060000 0.293341 -v -0.570543 0.000000 0.340941 -v -0.570543 0.000000 -0.339059 -v -0.030498 1.060000 -0.166505 -v 0.607247 0.000000 0.340941 -v 0.607247 0.000000 -0.339059 -vt 0.519273 0.472895 -vt 0.253455 0.472895 -vt 0.231818 -0.010379 -vt 0.077273 -0.051893 -vt 0.055636 0.431380 -vt -0.210182 0.431380 -vt -0.253455 0.452138 -vt -0.519273 0.452138 -vt -0.540909 -0.031136 -vt -0.141409 0.444240 -vt -0.167111 0.636596 -vt -0.357591 0.636596 -vt -0.181510 0.674944 -vt -0.295811 0.674944 -vt -0.309091 0.481334 -vt 0.069704 0.181510 -vt 0.178641 0.118615 -vt 0.248584 0.361268 -vt 0.519273 0.468601 -vt 0.494026 0.660632 -vt 0.265422 0.660632 -vt 0.309091 0.392217 -vt 0.295811 0.585827 -vt 0.181510 0.585827 -vt -0.133701 0.620445 -vt -0.360429 0.620445 -vt -0.387451 0.428270 -vt -0.152891 0.958611 -vt -0.341075 0.958611 -vt -0.360429 0.644317 -vt -0.395430 0.994078 -vt -0.415984 0.679871 -vt -0.163452 0.679871 -vt 0.193736 1.001150 -vt 0.108400 1.001150 -vt 0.095400 0.686412 -vt 0.475680 0.981739 -vt 0.285939 0.981739 -vt 0.265422 0.667642 -vt 0.295811 0.634589 -vt 0.281944 0.949173 -vt 0.187073 0.949173 -vt 0.210182 0.493652 -vt -0.055636 0.493652 -vt -0.077273 0.010379 -vt -0.309091 0.483273 -vt -0.442000 0.483273 -vt -0.463636 0.000000 -vt 0.095400 0.689526 -vt -0.030389 0.689526 -vt -0.055636 0.497495 -vt 0.245475 0.385203 -vt 0.497886 0.309091 -vt 0.497886 0.442000 -vt 0.441261 0.187073 -vt 0.441261 0.281944 -vt 0.261090 0.336272 -vt 0.309091 0.441759 -vt 0.176182 0.441759 -vt 0.154545 -0.041514 -vt -0.267681 0.618182 -vt -0.535361 0.463636 -vt -0.000000 0.463636 -vt 0.540909 -0.010379 -vt -0.231818 -0.051893 -vt -0.231818 -0.031136 -vt -0.362897 0.444240 -vt -0.176182 0.481334 -vt 0.069704 0.295811 -vt 0.253455 0.468601 -vt 0.176182 0.392217 -vt -0.123815 0.428270 -vt -0.133701 0.644317 -vt -0.185829 0.994078 -vt 0.198214 0.686412 -vt 0.494026 0.667642 -vt 0.181510 0.634589 -vt 0.231818 0.010379 -vt -0.154545 -0.000000 -vt -0.176182 0.483273 -vt 0.037475 0.442000 -vt 0.037475 0.309091 -vt 0.198214 0.689526 -vt 0.210182 0.497495 -vt 0.203038 0.134871 -vt 0.276940 0.092203 -vt 0.267681 0.574909 -vt 0.463636 -0.041514 -vt 0.442000 0.441759 -vt -0.535361 0.154545 -vt 0.000000 0.154545 -vt -0.267681 0.000000 -vn 0.498500 0.077500 0.863400 -vn 0.498500 0.077500 -0.863400 -vn -0.498500 0.077500 -0.863400 -vn -0.341100 0.122400 -0.932000 -vn -0.986000 0.166500 0.000000 -vn 0.000000 1.000000 0.000000 -vn 0.497100 0.107900 0.861000 -vn 0.986000 0.166500 0.000000 -vn 0.286800 0.114600 -0.951100 -vn 0.288100 0.064700 -0.955400 -vn -0.959100 0.060300 -0.276500 -vn -0.498300 0.083500 0.863000 -vn 0.499300 0.054200 0.864800 -vn 0.997000 0.077600 0.000000 -vn -0.498500 0.077500 0.863400 -vn -0.997000 0.077500 0.000000 -vn -0.497100 0.107900 0.861000 -vn 0.997000 0.077500 0.000000 -vn 0.000000 -1.000000 -0.000000 -usemtl Stone.001 -s off -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 5/5/2 6/6/2 -f 7/7/3 5/8/3 4/9/3 -f 8/10/4 9/11/4 10/12/4 -f 11/13/5 9/14/5 8/15/5 -f 11/16/6 12/17/6 10/18/6 -f 1/19/7 13/20/7 14/21/7 -f 15/22/8 16/23/8 13/24/8 -f 10/25/9 16/26/9 15/27/9 -f 17/28/10 18/29/10 16/30/10 -f 17/31/11 10/32/11 12/33/11 -f 19/34/12 20/35/12 12/36/12 -f 21/37/13 19/38/13 14/39/13 -f 16/40/14 18/41/14 21/42/14 -f 2/43/15 22/44/15 23/45/15 -f 8/46/16 7/47/16 24/48/16 -f 12/49/17 11/50/17 22/51/17 -f 25/52/6 15/53/6 6/54/6 -f 21/55/6 18/56/6 17/57/6 -f 15/58/18 1/59/18 26/60/18 -f 4/61/19 27/62/19 24/63/19 -f 26/64/1 1/1/1 3/3/1 -f 27/65/2 4/4/2 6/6/2 -f 24/66/3 7/7/3 4/9/3 -f 25/67/4 8/10/4 10/12/4 -f 22/68/5 11/13/5 8/15/5 -f 9/69/6 11/16/6 10/18/6 -f 2/70/7 1/19/7 14/21/7 -f 1/71/8 15/22/8 13/24/8 -f 25/72/9 10/25/9 15/27/9 -f 10/73/10 17/28/10 16/30/10 -f 20/74/11 17/31/11 12/33/11 -f 14/75/12 19/34/12 12/36/12 -f 13/76/13 21/37/13 14/39/13 -f 13/77/14 16/40/14 21/42/14 -f 3/78/15 2/43/15 23/45/15 -f 23/79/16 22/80/16 8/46/16 -f 23/79/16 8/46/16 24/48/16 -f 7/81/6 8/82/6 25/52/6 -f 14/83/17 12/49/17 2/84/17 -f 17/57/6 20/85/6 19/86/6 -f 12/49/17 22/51/17 2/84/17 -f 7/81/6 25/52/6 5/87/6 -f 27/88/18 6/89/18 15/58/18 -f 25/52/6 6/54/6 5/87/6 -f 19/86/6 21/55/6 17/57/6 -f 27/88/18 15/58/18 26/60/18 -f 26/90/19 23/91/19 27/62/19 -f 26/90/19 3/92/19 23/91/19 -f 27/62/19 23/91/19 24/63/19 diff --git a/contrib/tinks/assets/models/Tall_Rock_3_01.mtl b/contrib/tinks/assets/models/Tall_Rock_3_01.mtl deleted file mode 100644 index 29575ee893..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_3_01.mtl +++ /dev/null @@ -1,11 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Stone.002 -Ns 92.156863 -Ka 0.000000 0.000000 0.000000 -Kd 0.464314 0.481882 0.504470 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Tall_Rock_3_01.obj b/contrib/tinks/assets/models/Tall_Rock_3_01.obj deleted file mode 100644 index 88f7251dde..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_3_01.obj +++ /dev/null @@ -1,247 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Tall_Rock_3_01.mtl -o Mesh1_Tall_Rock_3_Model -v 0.807424 0.000000 0.405420 -v 0.648074 0.560000 0.313420 -v 0.010677 0.560000 0.681420 -v 0.807424 0.000000 -0.514580 -v 0.648074 0.560000 -0.422580 -v -0.786066 0.000000 -0.514580 -v -0.626717 0.560000 -0.422580 -v 0.010677 0.560000 -0.790580 -v -0.626717 0.560000 0.103486 -v -0.524734 0.920000 0.092916 -v -0.030574 0.920000 0.092916 -v -0.626717 0.560000 0.313420 -v -0.364111 1.970000 0.113083 -v -0.524734 0.920000 0.269260 -v 0.546084 0.920000 -0.030996 -v 0.385464 1.970000 0.026345 -v 0.385464 1.970000 0.236524 -v 0.278384 0.920000 -0.503540 -v 0.546084 0.920000 -0.348980 -v -0.104782 0.920000 -0.311940 -v 0.329374 0.560000 -0.606580 -v -0.044171 1.970000 -0.028616 -v 0.180995 1.970000 -0.132629 -v 0.253984 0.920000 -0.258100 -v -0.018198 1.970000 0.113083 -v -0.067678 0.920000 -0.109512 -v 0.546084 0.920000 0.269260 -v 0.010677 0.920000 0.578380 -v 0.010677 1.970000 0.452908 -v -0.364111 1.970000 0.236524 -v -0.786066 0.000000 0.405420 -v -0.126775 0.560000 -0.378480 -v 0.010677 0.000000 0.865420 -v 0.010677 0.000000 -0.974580 -v -0.038431 0.560000 0.103486 -vt 0.731818 -0.049559 -vt 0.690000 0.215091 -vt 0.355455 0.215091 -vt 0.627273 -0.198235 -vt 0.585455 0.066416 -vt 0.250909 0.066416 -vt -0.313636 -0.148676 -vt -0.355455 0.115974 -vt -0.690000 0.115974 -vt -0.072431 0.264601 -vt -0.118787 0.428308 -vt -0.343406 0.428308 -vt -0.351138 0.434726 -vt -0.346333 0.264650 -vt -0.250909 0.264650 -vt -0.341971 0.914160 -vt -0.351138 0.431336 -vt -0.270982 0.431336 -vt 0.407462 0.321808 -vt 0.381398 0.804633 -vt 0.285862 0.804633 -vt -0.107891 0.161345 -vt -0.248400 0.161345 -vt -0.271818 -0.010401 -vt -0.516326 0.346283 -vt -0.711054 0.346283 -vt -0.752732 0.179638 -vt -0.476559 0.874659 -vt -0.589299 0.874659 -vt -0.643336 0.395887 -vt -0.273440 0.898717 -vt -0.338921 0.898717 -vt -0.377016 0.421429 -vt -0.118787 0.411362 -vt -0.191798 0.888722 -vt -0.349031 0.888722 -vt -0.068572 0.801928 -vt -0.186299 0.801928 -vt -0.227940 0.320196 -vt 0.690000 0.220929 -vt 0.659891 0.389517 -vt 0.378873 0.389517 -vt 0.659891 0.408952 -vt 0.604102 0.888773 -vt 0.407389 0.888773 -vt 0.219884 0.926053 -vt 0.023171 0.926053 -vt -0.032618 0.446231 -vt 0.248400 0.476650 -vt -0.032618 0.476650 -vt -0.062727 0.308061 -vt 0.271818 0.314209 -vt -0.062727 0.314209 -vt -0.104545 0.049559 -vt 0.299678 0.565411 -vt 0.507019 0.669091 -vt 0.362156 0.752727 -vt -0.377016 0.428762 -vt -0.470561 0.428762 -vt -0.502115 0.265067 -vt 0.000000 0.627273 -vt 0.000000 0.209091 -vt 0.362156 0.000000 -vt 0.309674 0.535163 -vt 0.326540 0.443151 -vt 0.472752 0.510692 -vt -0.585455 0.264650 -vt -0.627273 0.000000 -vt 0.349031 0.341971 -vt 0.191798 0.341971 -vt 0.191798 0.285862 -vt 0.407462 0.237306 -vt 0.270982 0.237306 -vt 0.250909 0.067231 -vt -0.104545 0.016857 -vt -0.271818 0.016857 -vt -0.313636 -0.247793 -vt 0.313636 -0.049559 -vt 0.209091 -0.198235 -vt -0.731818 -0.148676 -vt -0.339834 0.264601 -vt -0.270982 0.434726 -vt -0.285862 0.914160 -vt 0.270982 0.321808 -vt -0.104545 -0.010401 -vt -0.520914 0.179638 -vt -0.482279 0.395887 -vt -0.283470 0.421429 -vt -0.343406 0.411362 -vt -0.059758 0.320196 -vt 0.355455 0.220929 -vt 0.378873 0.408952 -vt 0.248400 0.446231 -vt 0.271818 0.308061 -vt 0.313636 0.049559 -vt 0.072431 0.346333 -vt 0.339834 0.346333 -vt 0.072431 0.585455 -vt -0.283470 0.428762 -vt -0.279388 0.265067 -vt 0.362156 0.836364 -vt 0.724312 0.209091 -vt 0.724312 0.627273 -vt 0.605525 0.407462 -vt 0.605525 0.552000 -vt -0.209091 0.000000 -vt 0.483841 0.622255 -vt 0.439573 0.453659 -vt 0.532514 0.381398 -vt 0.337225 0.406380 -vt 0.532514 0.285862 -vt 0.362156 0.187506 -vt 0.552000 0.237306 -vt 0.585455 0.067231 -vt 0.062727 0.016857 -vt 0.104545 -0.247793 -vn 0.480900 0.273700 0.833000 -vn 0.961800 0.273700 0.000000 -vn -0.480900 0.273700 -0.833000 -vn 0.000000 -0.029300 -0.999600 -vn -0.962100 0.272600 0.000000 -vn -0.988500 0.151200 0.000000 -vn 0.988500 0.151200 0.000000 -vn 0.476400 0.303700 -0.825100 -vn -0.439200 0.189200 -0.878300 -vn -0.418000 0.079100 -0.905000 -vn -0.983600 0.008100 0.180300 -vn 0.000000 0.019200 -0.999800 -vn 0.608100 0.135700 -0.782200 -vn 0.485300 0.240600 0.840600 -vn 0.497300 0.102900 0.861400 -vn -0.497300 0.102900 0.861400 -vn -0.485300 0.240600 0.840600 -vn -0.480900 0.273700 0.833000 -vn 0.000000 1.000000 0.000000 -vn -0.983300 0.026800 0.180200 -vn -0.961800 0.273700 0.000000 -vn 0.962100 0.272600 0.000000 -vn 0.480900 0.273700 -0.833000 -vn 0.476400 0.303600 -0.825100 -usemtl Stone.002 -s off -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 5/5/2 2/6/2 -f 6/7/3 7/8/3 8/9/3 -f 9/10/4 10/11/4 11/12/4 -f 10/13/5 9/14/5 12/15/5 -f 13/16/6 10/17/6 14/18/6 -f 15/19/7 16/20/7 17/21/7 -f 18/22/8 19/23/8 5/24/8 -f 20/25/9 18/26/9 21/27/9 -f 22/28/10 23/29/10 24/30/10 -f 25/31/11 22/32/11 26/33/11 -f 10/34/12 13/35/12 25/36/12 -f 23/37/13 16/38/13 15/39/13 -f 2/40/14 27/41/14 28/42/14 -f 27/43/15 17/44/15 29/45/15 -f 29/46/16 30/47/16 14/48/16 -f 28/49/17 14/50/17 12/51/17 -f 3/52/18 12/53/18 31/54/18 -f 32/55/19 21/56/19 8/57/19 -f 26/58/20 20/59/20 32/60/20 -f 6/61/19 31/62/19 33/63/19 -f 20/64/19 26/65/19 24/66/19 -f 9/14/21 7/67/21 6/68/21 -f 25/69/19 13/70/19 30/71/19 -f 15/72/22 27/73/22 2/74/22 -f 21/75/23 5/76/23 4/77/23 -f 33/78/1 1/1/1 3/3/1 -f 1/79/2 4/4/2 2/6/2 -f 34/80/3 6/7/3 8/9/3 -f 35/81/4 9/10/4 11/12/4 -f 14/82/5 10/13/5 12/15/5 -f 30/83/6 13/16/6 14/18/6 -f 27/84/7 15/19/7 17/21/7 -f 21/85/24 18/22/24 5/24/24 -f 32/86/9 20/25/9 21/27/9 -f 26/87/10 22/28/10 24/30/10 -f 11/88/11 25/31/11 26/33/11 -f 11/89/12 10/34/12 25/36/12 -f 24/90/13 23/37/13 15/39/13 -f 3/91/14 2/40/14 28/42/14 -f 28/92/15 27/43/15 29/45/15 -f 28/93/16 29/46/16 14/48/16 -f 3/94/17 28/49/17 12/51/17 -f 33/95/18 3/52/18 31/54/18 -f 9/96/19 35/97/19 32/55/19 -f 9/96/19 32/55/19 7/98/19 -f 11/99/20 26/58/20 35/100/20 -f 6/61/19 33/63/19 34/101/19 -f 32/55/19 8/57/19 7/98/19 -f 33/63/19 1/102/19 4/103/19 -f 26/58/20 32/60/20 35/100/20 -f 24/66/19 15/104/19 19/105/19 -f 31/106/21 12/15/21 9/14/21 -f 33/63/19 4/103/19 34/101/19 -f 20/64/19 24/66/19 18/107/19 -f 31/106/21 9/14/21 6/68/21 -f 24/66/19 19/105/19 18/107/19 -f 23/108/19 25/69/19 16/109/19 -f 23/108/19 22/110/19 25/69/19 -f 17/111/19 25/69/19 29/112/19 -f 19/113/22 15/72/22 5/114/22 -f 8/115/23 21/75/23 34/116/23 -f 25/69/19 17/111/19 16/109/19 -f 25/69/19 30/71/19 29/112/19 -f 15/72/22 2/74/22 5/114/22 -f 21/75/23 4/77/23 34/116/23 diff --git a/contrib/tinks/assets/models/Tall_Rock_4_01.mtl b/contrib/tinks/assets/models/Tall_Rock_4_01.mtl deleted file mode 100644 index 3b0df0900e..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_4_01.mtl +++ /dev/null @@ -1,11 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Stone.003 -Ns 92.156863 -Ka 0.000000 0.000000 0.000000 -Kd 0.464314 0.481882 0.504470 -Ks 0.165000 0.165000 0.165000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/Tall_Rock_4_01.obj b/contrib/tinks/assets/models/Tall_Rock_4_01.obj deleted file mode 100644 index 4596d8a1b4..0000000000 --- a/contrib/tinks/assets/models/Tall_Rock_4_01.obj +++ /dev/null @@ -1,146 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib Tall_Rock_4_01.mtl -o Mesh1_Tall_Rock_1_Model.001 -v 0.364834 1.590000 0.175706 -v 0.470904 0.740000 0.196828 -v 0.470904 0.740000 -0.069422 -v 0.624624 0.000000 0.285578 -v 0.009742 0.740000 0.463078 -v 0.009742 1.590000 0.380719 -v -0.345350 1.590000 0.175706 -v -0.451416 0.740000 0.196828 -v -0.345350 1.590000 -0.029306 -v -0.451416 0.740000 -0.069422 -v -0.066893 1.590000 -0.170730 -v -0.089783 0.740000 -0.253089 -v -0.451416 0.740000 -0.335672 -v 0.009742 0.740000 -0.601922 -v 0.009742 0.000000 -0.779422 -v 0.470904 0.740000 -0.335672 -v 0.624624 0.000000 -0.424422 -v -0.605136 0.000000 0.285578 -v -0.605136 0.000000 -0.424422 -v 0.364834 1.590000 -0.029306 -v 0.009742 0.000000 0.640578 -vt 18.302000 57.388100 -vt 17.470501 23.664000 -vt 27.952801 23.664000 -vt 48.917301 -2.461780 -vt 45.423199 27.294001 -vt 24.458700 27.294001 -vt 45.423199 28.525801 -vt 42.222599 62.108002 -vt 26.079901 62.108002 -vt 15.849200 64.132202 -vt -0.293488 64.132202 -vt -3.494090 30.549999 -vt -18.302000 63.383099 -vt -26.373400 63.383099 -vt -27.952801 29.659000 -vt -18.053699 26.816999 -vt -21.061701 60.443802 -vt -33.357399 60.443802 -vt -31.556999 25.716900 -vt -8.328640 25.716900 -vt -10.194500 59.298500 -vt -24.458700 22.370501 -vt -45.423199 22.370501 -vt -48.917301 -7.385330 -vt 3.494090 17.446899 -vt -17.470501 17.446899 -vt -20.964600 -12.308900 -vt 17.470501 32.217602 -vt -3.494090 32.217602 -vt -6.988190 2.461780 -vt 21.190701 31.941200 -vt 10.227800 26.373400 -vt 10.227800 18.302000 -vt 20.289499 35.183701 -vt 42.363602 27.952801 -vt 42.363602 38.435001 -vt 0.558980 0.161364 -vt 0.558980 0.484091 -vt 0.279490 0.645455 -vt -27.952801 29.755800 -vt -38.435001 29.755800 -vt -41.929100 -0.000000 -vt 27.952801 19.908701 -vt 17.470501 19.908701 -vt 13.976400 -9.847110 -vt 26.373400 57.388100 -vt 20.964600 -2.461780 -vt 24.458700 28.525801 -vt 17.470501 30.549999 -vt -17.470501 29.659000 -vt -34.022202 26.816999 -vt -28.080299 59.298500 -vt -20.964600 -7.385330 -vt 6.988190 -12.308900 -vt 20.964600 2.461780 -vt 24.207800 10.230700 -vt 38.187801 18.302000 -vt 38.187801 26.373400 -vt 6.051950 38.435001 -vt 6.051950 27.952801 -vt 24.207800 48.917301 -vt 0.000000 0.484091 -vt 0.000000 0.161364 -vt -17.470501 29.755800 -vt -13.976400 -0.000000 -vt 0.279490 0.000000 -vt 38.435001 19.908701 -vt 41.929100 -9.847110 -vn 0.992300 0.123800 0.000000 -vn 0.489500 0.203400 0.847900 -vn 0.498200 0.083600 0.863000 -vn -0.498200 0.083600 0.863000 -vn -0.992300 0.123800 0.000000 -vn -0.450600 0.098100 -0.887300 -vn 0.310200 0.083400 -0.947000 -vn -0.489500 0.203400 -0.847900 -vn 0.489500 0.203400 -0.847900 -vn -0.489500 0.203400 0.847900 -vn 0.000000 1.000000 0.000000 -vn -0.979100 0.203400 0.000000 -vn 0.979100 0.203400 0.000000 -usemtl Stone.003 -s off -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 2/5/2 5/6/2 -f 2/7/3 1/8/3 6/9/3 -f 6/10/4 7/11/4 8/12/4 -f 7/13/5 9/14/5 10/15/5 -f 10/16/6 9/17/6 11/18/6 -f 3/19/7 12/20/7 11/21/7 -f 13/22/8 14/23/8 15/24/8 -f 14/25/9 16/26/9 17/27/9 -f 5/28/10 8/29/10 18/30/10 -f 11/31/11 9/32/11 7/33/11 -f 12/34/11 3/35/11 16/36/11 -f 4/37/11 17/38/11 15/39/11 -f 10/40/12 13/41/12 19/42/12 -f 3/43/13 2/44/13 4/45/13 -f 20/46/1 1/1/1 3/3/1 -f 21/47/2 4/4/2 5/6/2 -f 5/48/3 2/7/3 6/9/3 -f 5/49/4 6/10/4 8/12/4 -f 8/50/5 7/13/5 10/15/5 -f 12/51/6 10/16/6 11/18/6 -f 20/52/7 3/19/7 11/21/7 -f 19/53/8 13/22/8 15/24/8 -f 15/54/9 14/25/9 17/27/9 -f 21/55/10 5/28/10 18/30/10 -f 6/56/11 1/57/11 11/31/11 -f 11/31/11 1/57/11 20/58/11 -f 6/56/11 11/31/11 7/33/11 -f 13/59/11 10/60/11 12/34/11 -f 13/59/11 12/34/11 14/61/11 -f 15/39/11 19/62/11 18/63/11 -f 8/64/12 10/40/12 18/65/12 -f 12/34/11 16/36/11 14/61/11 -f 4/37/11 15/39/11 21/66/11 -f 16/67/13 3/43/13 17/68/13 -f 15/39/11 18/63/11 21/66/11 -f 10/40/12 19/42/12 18/65/12 -f 3/43/13 4/45/13 17/68/13 diff --git a/contrib/tinks/assets/models/debris0.mtl b/contrib/tinks/assets/models/debris0.mtl deleted file mode 100644 index bb6581a557..0000000000 --- a/contrib/tinks/assets/models/debris0.mtl +++ /dev/null @@ -1,12 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Tank -Ns 178.431373 -Ka 0.000000 0.000000 0.000000 -Kd 0.400000 0.400000 0.400000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/tank.jpg diff --git a/contrib/tinks/assets/models/debris0.obj b/contrib/tinks/assets/models/debris0.obj deleted file mode 100644 index f3359b5edc..0000000000 --- a/contrib/tinks/assets/models/debris0.obj +++ /dev/null @@ -1,972 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib debris0.mtl -o TurretGood -v 0.470893 0.073518 -0.073744 -v 0.692344 0.207572 0.384128 -v 0.287519 -0.077312 0.729652 -v 0.054565 -0.269350 0.246712 -v -0.201806 -0.395096 -0.246076 -v 0.239754 -0.086354 -0.518349 -v -0.516324 1.346860 0.006630 -v -0.275497 1.529460 0.498690 -v 0.143914 1.483716 0.258498 -v -0.083027 1.345970 -0.210377 -v -0.319727 1.182612 -0.666017 -v -0.772206 1.206882 -0.491762 -v 0.323040 1.217346 0.319448 -v -0.035342 1.123394 0.723478 -v -0.187906 0.885521 -0.699393 -v -0.689399 0.698628 -0.580730 -v -0.351617 0.880568 0.075896 -v 0.095348 0.999402 -0.186959 -v 0.117652 0.747751 0.813809 -v -0.233825 0.547092 0.125432 -v -0.569440 0.301531 -0.556274 -v 0.473114 0.832446 0.392414 -v 0.352216 0.892719 0.488213 -v 0.130842 0.815826 0.760577 -v -0.216113 0.523627 -0.645052 -v -0.054729 0.489648 -0.660120 -v -0.538190 0.381336 -0.573491 -v 0.258644 1.156873 0.449805 -v -0.310200 0.787447 -0.684488 -v 0.034042 1.096085 0.722679 -v -0.638561 0.659275 -0.618512 -v 0.097972 1.117002 0.704905 -v 0.297393 1.161294 0.491456 -v -0.590219 0.670068 -0.667370 -v -0.317645 0.761869 -0.734949 -v 0.187576 0.866312 0.743936 -v -0.502329 0.418265 -0.631757 -v 0.388277 0.907335 0.522970 -v -0.222610 0.510606 -0.695156 -v 0.528056 0.855317 0.357871 -v 0.362008 1.228773 0.296643 -v -0.000126 0.512299 -0.695339 -v -0.149277 0.896728 -0.722874 -v 0.209858 0.685784 -0.142243 -v 0.125551 1.008434 -0.205047 -v 0.256035 0.706259 -0.172069 -v 0.497021 0.081466 -0.089435 -v 0.727238 0.217916 0.363720 -v 0.274309 -0.076231 -0.539435 -v 0.582729 0.520009 0.388271 -v 0.211389 0.340937 0.789285 -v -0.394427 -0.052500 -0.418730 -v 0.092513 0.201647 -0.589235 -v -0.089630 0.138871 0.186072 -v 0.627646 0.536616 0.360795 -v 0.137091 0.218034 -0.617386 -v 0.340376 0.379651 -0.107994 -v 0.376527 0.393862 -0.130752 -v -0.245052 1.324655 -0.122180 -v -0.240018 1.329151 -0.103890 -v -0.115058 1.367233 -0.121745 -v -0.133021 1.351193 -0.187007 -v -0.173789 1.329091 -0.238857 -v -0.256478 1.318461 -0.136712 -v -0.252740 1.427072 -0.231174 -v -0.278605 1.345921 -0.134559 -v -0.262145 1.356611 -0.101737 -v -0.194009 1.465213 -0.114063 -v -0.307779 1.484245 -0.063206 -v -0.294030 1.361945 -0.087483 -v -0.366510 1.446104 -0.180317 -v -0.310490 1.351255 -0.120305 -v -0.448457 1.375037 -0.116076 -v -0.333457 1.331338 -0.102301 -v -0.389726 1.413178 0.001036 -v -0.316997 1.342028 -0.069479 -v -0.391844 1.293644 0.041029 -v -0.317590 1.308527 -0.058270 -v -0.432612 1.271541 -0.010821 -v -0.329016 1.302332 -0.072802 -v -0.450575 1.255502 -0.076083 -v -0.334051 1.297837 -0.091092 -v -0.328373 1.338594 -0.084934 -v -0.303515 1.360151 -0.104422 -v -0.269002 1.354379 -0.119850 -v -0.330018 1.278747 -0.193924 -v -0.385950 1.264410 -0.157437 -v -0.385073 1.313923 -0.174002 -v -0.430583 1.254064 -0.120953 -v -0.428962 1.345552 -0.151562 -v -0.349561 1.314547 0.044164 -v -0.347940 1.406035 0.013554 -v -0.295611 1.330944 0.026257 -v -0.294734 1.380456 0.009692 -v -0.236407 1.347405 -0.003707 -v -0.260790 1.409893 -0.016918 -v -0.285221 1.460427 -0.035614 -v -0.366243 1.399944 -0.200730 -v -0.351129 1.343360 -0.200612 -v -0.304004 1.335477 -0.221678 -v -0.279167 1.385378 -0.239655 -v -0.198145 1.445861 -0.074539 -v -0.213665 1.402010 -0.037984 -v -0.180963 1.361425 -0.041166 -v -0.137718 1.370869 -0.080419 -v -0.218740 1.310387 -0.245535 -v -0.271302 1.294892 -0.224860 -vt 0.433371 0.806080 -vt 0.424622 0.869117 -vt 0.509902 0.922464 -vt 0.545851 0.806258 -vt 0.509959 0.690350 -vt 0.424693 0.743434 -vt 0.113790 0.805764 -vt 0.154589 0.936713 -vt 0.226463 0.884956 -vt 0.215608 0.805892 -vt 0.226652 0.726961 -vt 0.154952 0.674936 -vt 0.273567 0.889914 -vt 0.262430 0.987916 -vt 0.273698 0.722205 -vt 0.263070 0.624063 -vt 0.964354 0.742104 -vt 0.933621 0.646860 -vt 0.823034 0.646233 -vt 0.818713 0.741766 -vt 0.712842 0.636874 -vt 0.673636 0.728953 -vt 0.272324 0.805929 -vt 0.968115 0.821594 -vt 0.815622 0.810087 -vt 0.662714 0.807780 -vt 0.345541 1.000219 -vt 0.340573 0.902891 -vt 0.327537 0.923885 -vt 0.333952 0.988220 -vt 0.327957 0.688454 -vt 0.340944 0.709543 -vt 0.346258 0.612151 -vt 0.334621 0.624095 -vt 0.279125 0.915836 -vt 0.279401 0.696278 -vt 0.273806 0.979377 -vt 0.274408 0.632658 -vt 0.280636 0.967275 -vt 0.287673 0.924288 -vt 0.281180 0.644799 -vt 0.288004 0.687853 -vt 0.325261 0.975086 -vt 0.325876 0.637191 -vt 0.319422 0.931799 -vt 0.319860 0.680484 -vt 0.339491 0.893399 -vt 0.283073 0.882461 -vt 0.339823 0.719042 -vt 0.283161 0.729714 -vt 0.604639 0.655553 -vt 0.605846 0.593879 -vt 0.597852 0.593549 -vt 0.594009 0.654003 -vt 0.286541 0.806871 -vt 0.286457 0.804691 -vt 0.422362 0.806774 -vt 0.418935 0.865660 -vt 0.422413 0.805169 -vt 0.419038 0.746861 -vt 0.331541 0.809010 -vt 0.331303 0.803334 -vt 0.387115 0.891807 -vt 0.435622 0.977650 -vt 0.436094 0.635206 -vt 0.387479 0.720839 -vt 0.917112 0.975485 -vt 0.946527 0.898717 -vt 0.811839 0.893722 -vt 0.808056 0.977357 -vt 0.677251 0.886536 -vt 0.699615 0.965647 -vt 0.383817 0.884107 -vt 0.384186 0.728515 -vt 0.597093 0.777829 -vt 0.599721 0.716621 -vt 0.591524 0.715735 -vt 0.589038 0.777465 -vt 0.377020 0.809715 -vt 0.376913 0.803939 -vt 0.167670 0.807799 -vt 0.167670 0.807436 -vt 0.168033 0.807436 -vt 0.168033 0.807799 -usemtl Tank -s off -f 1/1 2/2 3/3 4/4 -f 1/1 4/4 5/5 6/6 -f 7/7 8/8 9/9 10/10 -f 11/11 12/12 7/7 10/10 -f 13/13 9/9 8/8 14/14 -f 12/12 11/11 15/15 16/16 -f 14/17 8/18 7/19 17/20 -f 7/19 12/21 16/22 17/20 -f 9/9 13/13 18/23 10/10 -f 18/23 15/15 11/11 10/10 -f 19/24 14/17 17/20 20/25 -f 17/20 16/22 21/26 20/25 -f 19/27 22/28 23/29 24/30 -f 25/31 26/32 21/33 27/34 -f 22/28 13/13 28/35 23/29 -f 29/36 15/15 26/32 25/31 -f 14/14 19/27 24/30 30/37 -f 27/34 21/33 16/16 31/38 -f 13/13 14/14 30/37 28/35 -f 31/38 16/16 15/15 29/36 -f 28/35 30/37 32/39 33/40 -f 34/41 31/38 29/36 35/42 -f 30/37 24/30 36/43 32/39 -f 37/44 27/34 31/38 34/41 -f 23/29 28/35 33/40 38/45 -f 35/42 29/36 25/31 39/46 -f 24/30 23/29 38/45 36/43 -f 39/46 25/31 27/34 37/44 -f 38/45 33/40 32/39 36/43 -f 34/41 35/42 39/46 37/44 -f 13/13 22/28 40/47 41/48 -f 42/49 26/32 15/15 43/50 -f 44/51 18/52 45/53 46/54 -f 18/23 13/13 41/48 45/55 -f 43/50 15/15 18/23 45/56 -f 2/2 1/1 47/57 48/58 -f 47/59 1/1 6/6 49/60 -f 41/48 40/47 46/61 45/55 -f 46/62 42/49 43/50 45/56 -f 2/2 50/63 51/64 3/3 -f 52/65 53/66 6/6 5/5 -f 50/63 22/28 19/27 51/64 -f 21/33 26/32 53/66 52/65 -f 3/67 51/68 54/69 4/70 -f 54/69 52/71 5/72 4/70 -f 51/68 19/24 20/25 54/69 -f 20/25 21/26 52/71 54/69 -f 22/28 50/63 55/73 40/47 -f 56/74 53/66 26/32 42/49 -f 50/63 2/2 48/58 55/73 -f 49/60 6/6 53/66 56/74 -f 1/75 57/76 58/77 47/78 -f 57/76 44/51 46/54 58/77 -f 47/57 58/79 55/73 48/58 -f 56/74 58/80 47/59 49/60 -f 58/79 46/61 40/47 55/73 -f 42/49 46/62 58/80 56/74 -f 59/81 60/82 61/83 62/84 -f 62/81 63/82 64/83 59/84 -f 63/81 65/82 66/83 64/84 -f 60/81 67/82 68/83 61/84 -f 69/81 68/82 67/83 70/84 -f 65/81 71/82 72/83 66/84 -f 71/81 73/82 74/83 72/84 -f 75/81 69/82 70/83 76/84 -f 77/81 75/82 76/83 78/84 -f 79/81 77/82 78/83 80/84 -f 81/81 79/82 80/83 82/84 -f 73/81 81/82 82/83 74/84 -s 1 -f 74/81 82/82 80/83 83/84 -f 83/81 80/82 78/83 76/84 -f 84/81 83/82 76/83 70/84 -f 72/81 74/82 83/83 84/84 -f 66/81 72/82 84/83 85/84 -f 85/81 84/82 70/83 67/84 -f 67/81 60/82 59/83 85/84 -f 64/81 66/82 85/83 59/84 -f 86/81 87/82 88/83 -f 88/81 87/82 89/83 90/84 -f 90/81 89/82 81/83 73/84 -f 75/81 77/82 91/83 92/84 -f 92/81 91/82 93/83 94/84 -f 94/81 93/82 95/83 -f 96/81 94/82 95/83 -f 97/81 92/82 94/83 96/84 -f 69/81 75/82 92/83 97/84 -f 98/81 90/82 73/83 71/84 -f 99/81 88/82 90/83 98/84 -f 86/81 88/82 99/83 -f 86/81 99/82 100/83 -f 100/81 99/82 98/83 101/84 -f 101/81 98/82 71/83 65/84 -f 68/81 69/82 97/83 102/84 -f 102/81 97/82 96/83 103/84 -f 103/81 96/82 95/83 -f 104/81 103/82 95/83 -f 105/81 102/82 103/83 104/84 -f 61/81 68/82 102/83 105/84 -f 106/81 101/82 65/83 63/84 -f 107/81 100/82 101/83 106/84 -f 86/81 100/82 107/83 -o GunGood -v -0.445734 1.648296 -0.153553 -v -0.464936 1.639994 -0.163779 -v -0.473456 1.641217 -0.135737 -v -0.463693 1.645438 -0.130538 -v -0.432087 1.655694 -0.136198 -v -0.456754 1.649200 -0.121713 -v -0.426075 1.661063 -0.114353 -v -0.453696 1.651930 -0.110606 -v -0.428611 1.663585 -0.091345 -v -0.454986 1.653212 -0.098906 -v -0.439310 1.662876 -0.070675 -v -0.460426 1.652852 -0.088396 -v -0.456542 1.659044 -0.055493 -v -0.469188 1.650903 -0.080676 -v -0.477686 1.652673 -0.048107 -v -0.479939 1.647664 -0.076921 -v -0.499521 1.644732 -0.049643 -v -0.491042 1.643626 -0.077702 -v -0.518724 1.636430 -0.059867 -v -0.500806 1.639405 -0.082901 -v -0.532370 1.629032 -0.077223 -v -0.507744 1.635643 -0.091726 -v -0.538383 1.623663 -0.099068 -v -0.510802 1.632913 -0.102834 -v -0.535846 1.621141 -0.122077 -v -0.509512 1.631631 -0.114533 -v -0.525147 1.621850 -0.142746 -v -0.504072 1.631991 -0.125042 -v -0.507914 1.625682 -0.157929 -v -0.495309 1.633940 -0.132763 -v -0.486771 1.632053 -0.165315 -v -0.484559 1.637179 -0.136518 -v -0.775558 2.533129 -0.261935 -v -0.784374 2.529318 -0.266628 -v -0.782928 2.529119 -0.271404 -v -0.772505 2.533625 -0.265854 -v -0.769293 2.536526 -0.253967 -v -0.765098 2.537641 -0.256434 -v -0.766533 2.538990 -0.243938 -v -0.761835 2.540555 -0.244577 -v -0.767698 2.540148 -0.233374 -v -0.763211 2.541924 -0.232089 -v -0.772609 2.539823 -0.223885 -v -0.769018 2.541539 -0.220870 -v -0.780521 2.538064 -0.216914 -v -0.778372 2.539459 -0.212629 -v -0.790228 2.535139 -0.213524 -v -0.789848 2.536001 -0.208620 -v -0.800253 2.531493 -0.214229 -v -0.801700 2.531691 -0.209454 -v -0.809068 2.527681 -0.218923 -v -0.812122 2.527185 -0.215004 -v -0.815333 2.524285 -0.226891 -v -0.819529 2.523170 -0.224424 -v -0.818094 2.521820 -0.236920 -v -0.822792 2.520256 -0.236281 -v -0.816930 2.520662 -0.247483 -v -0.821416 2.518887 -0.248769 -v -0.812018 2.520988 -0.256973 -v -0.815609 2.519271 -0.259988 -v -0.804106 2.522747 -0.263943 -v -0.806255 2.521351 -0.268229 -v -0.794399 2.525672 -0.267334 -v -0.794779 2.524809 -0.272238 -v -0.798790 2.608039 -0.276908 -v -0.809213 2.603533 -0.282458 -v -0.807929 2.603357 -0.286696 -v -0.796080 2.608479 -0.280387 -v -0.791383 2.612055 -0.267488 -v -0.787660 2.613045 -0.269677 -v -0.788119 2.614969 -0.255631 -v -0.783949 2.616357 -0.256198 -v -0.789496 2.616338 -0.243143 -v -0.785514 2.617914 -0.242001 -v -0.795303 2.615953 -0.231924 -v -0.792116 2.617476 -0.229248 -v -0.804657 2.613873 -0.223683 -v -0.802749 2.615112 -0.219879 -v -0.816133 2.610415 -0.219674 -v -0.815796 2.611181 -0.215322 -v -0.827985 2.606105 -0.220508 -v -0.829269 2.606281 -0.216270 -v -0.838407 2.601599 -0.226058 -v -0.841117 2.601158 -0.222579 -v -0.845814 2.597583 -0.235478 -v -0.849538 2.596593 -0.233288 -v -0.849077 2.594669 -0.247335 -v -0.853248 2.593280 -0.246767 -v -0.847701 2.593300 -0.259823 -v -0.851683 2.591724 -0.260964 -v -0.841894 2.593685 -0.271042 -v -0.845081 2.592162 -0.273718 -v -0.832540 2.595765 -0.279283 -v -0.834447 2.594526 -0.283086 -v -0.821064 2.599223 -0.283291 -v -0.821401 2.598457 -0.287644 -v -0.804181 2.631415 -0.283794 -v -0.816030 2.626293 -0.290103 -v -0.818007 2.626564 -0.283577 -v -0.808354 2.630737 -0.278437 -v -0.795761 2.635980 -0.273084 -v -0.801495 2.634456 -0.269713 -v -0.792050 2.639293 -0.259605 -v -0.798472 2.637155 -0.258731 -v -0.793616 2.640849 -0.245408 -v -0.799747 2.638422 -0.247166 -v -0.800217 2.640412 -0.232655 -v -0.805125 2.638066 -0.236775 -v -0.810851 2.638047 -0.223286 -v -0.813788 2.636140 -0.229143 -v -0.823897 2.634116 -0.218729 -v -0.824416 2.632937 -0.225430 -v -0.837370 2.629216 -0.219677 -v -0.835393 2.628945 -0.226203 -v -0.849218 2.624094 -0.225986 -v -0.845045 2.624773 -0.231342 -v -0.857639 2.619529 -0.236695 -v -0.851905 2.621053 -0.240067 -v -0.861349 2.616216 -0.250174 -v -0.854928 2.618354 -0.251048 -v -0.859784 2.614660 -0.264371 -v -0.853653 2.617086 -0.262614 -v -0.853182 2.615097 -0.277125 -v -0.848275 2.617443 -0.273004 -v -0.842549 2.617462 -0.286493 -v -0.839612 2.619369 -0.280636 -v -0.829503 2.621393 -0.291051 -v -0.828983 2.622572 -0.284349 -v -0.862394 2.718464 -0.295205 -v -0.852648 2.722008 -0.294519 -v -0.851673 2.721875 -0.297735 -v -0.862650 2.717883 -0.298507 -v -0.844078 2.725713 -0.289955 -v -0.842021 2.726048 -0.292596 -v -0.837987 2.729015 -0.282209 -v -0.835161 2.729767 -0.283871 -v -0.835303 2.731411 -0.272459 -v -0.832138 2.732466 -0.272889 -v -0.836435 2.732538 -0.262189 -v -0.833413 2.733733 -0.261324 -v -0.841211 2.732221 -0.252964 -v -0.838791 2.733377 -0.250933 -v -0.848902 2.730511 -0.246187 -v -0.847454 2.731451 -0.243301 -v -0.858339 2.727667 -0.242891 -v -0.858083 2.728248 -0.239588 -v -0.868084 2.724123 -0.243577 -v -0.869059 2.724256 -0.240361 -v -0.876655 2.720417 -0.248141 -v -0.878712 2.720083 -0.245500 -v -0.882746 2.717115 -0.255887 -v -0.885572 2.716364 -0.254225 -v -0.885430 2.714719 -0.265637 -v -0.888594 2.713665 -0.265206 -v -0.884297 2.713593 -0.275906 -v -0.887319 2.712398 -0.276772 -v -0.879522 2.713910 -0.285132 -v -0.881941 2.712754 -0.287162 -v -0.871831 2.715620 -0.291908 -v -0.873278 2.714680 -0.294794 -v -0.421987 1.533305 -0.166296 -v -0.324868 1.258357 -0.125454 -v -0.353687 1.247876 -0.127482 -v -0.450806 1.522824 -0.168324 -v -0.381593 1.239467 -0.117733 -v -0.478712 1.514415 -0.158576 -v -0.404338 1.234409 -0.097694 -v -0.501457 1.509358 -0.138536 -v -0.418460 1.233474 -0.070414 -v -0.515579 1.508422 -0.111256 -v -0.421807 1.236803 -0.040045 -v -0.518926 1.511751 -0.080888 -v -0.413871 1.243889 -0.011213 -v -0.510990 1.518837 -0.052056 -v -0.395859 1.253654 0.011694 -v -0.492979 1.528602 -0.029149 -v -0.370515 1.264611 0.025189 -v -0.467634 1.539559 -0.015654 -v -0.341696 1.275091 0.027217 -v -0.438816 1.550039 -0.013626 -v -0.313790 1.283500 0.017468 -v -0.410909 1.558449 -0.023374 -v -0.291045 1.288558 -0.002571 -v -0.388164 1.563506 -0.043414 -v -0.276924 1.289493 -0.029852 -v -0.374043 1.564442 -0.070694 -v -0.273577 1.286165 -0.060220 -v -0.370696 1.561113 -0.101062 -v -0.281512 1.279079 -0.089052 -v -0.378631 1.554027 -0.129894 -v -0.299524 1.269314 -0.111959 -v -0.396643 1.544262 -0.152802 -v -0.436550 1.559633 -0.151841 -v -0.417348 1.567934 -0.141616 -v -0.403701 1.575333 -0.124261 -v -0.397689 1.580701 -0.102416 -v -0.400225 1.583223 -0.079407 -v -0.410924 1.582515 -0.058738 -v -0.428157 1.578683 -0.043555 -v -0.449300 1.572312 -0.036169 -v -0.471135 1.564371 -0.037706 -v -0.490338 1.556069 -0.047930 -v -0.503984 1.548671 -0.065286 -v -0.509997 1.543302 -0.087131 -v -0.507461 1.540780 -0.110140 -v -0.496762 1.541489 -0.130809 -v -0.479528 1.545321 -0.145992 -v -0.458385 1.551692 -0.153377 -v -0.814235 2.641227 -0.277405 -v -0.822805 2.637522 -0.281969 -v -0.808144 2.644529 -0.269659 -v -0.805460 2.646925 -0.259909 -v -0.806592 2.648051 -0.249639 -v -0.811368 2.647735 -0.240414 -v -0.819059 2.646025 -0.233637 -v -0.828496 2.643181 -0.230341 -v -0.838242 2.639637 -0.231027 -v -0.846813 2.635931 -0.235590 -v -0.852903 2.632629 -0.243337 -v -0.855587 2.630233 -0.253087 -v -0.854455 2.629107 -0.263356 -v -0.849680 2.629424 -0.272582 -v -0.841988 2.631134 -0.279358 -v -0.832551 2.633977 -0.282655 -vt 0.260991 0.501928 -vt 0.261641 0.508683 -vt 0.248339 0.510313 -vt 0.247924 0.503841 -vt 0.260086 0.495305 -vt 0.247449 0.497411 -vt 0.258992 0.488571 -vt 0.246040 0.491186 -vt 0.257446 0.481940 -vt 0.245548 0.485012 -vt 0.255462 0.475074 -vt 0.243979 0.479425 -vt 0.252332 0.467412 -vt 0.242318 0.474202 -vt 0.256867 0.569755 -vt 0.253996 0.576889 -vt 0.244661 0.570621 -vt 0.246005 0.565471 -vt 0.258847 0.562975 -vt 0.246864 0.559852 -vt 0.260156 0.556261 -vt 0.248200 0.554214 -vt 0.261175 0.549636 -vt 0.248423 0.548280 -vt 0.261754 0.542881 -vt 0.249068 0.542271 -vt 0.262200 0.536133 -vt 0.248505 0.536009 -vt 0.262332 0.529213 -vt 0.248753 0.529659 -vt 0.262290 0.522347 -vt 0.248785 0.523246 -vt 0.262066 0.515500 -vt 0.248637 0.516790 -vt 0.198081 0.505854 -vt 0.198124 0.511772 -vt 0.195630 0.511881 -vt 0.195417 0.505930 -vt 0.197665 0.500143 -vt 0.195394 0.500156 -vt 0.197993 0.494478 -vt 0.195373 0.494420 -vt 0.198001 0.488733 -vt 0.195583 0.488605 -vt 0.198166 0.483243 -vt 0.195930 0.483014 -vt 0.198935 0.478051 -vt 0.196639 0.477263 -vt 0.199776 0.565102 -vt 0.200514 0.570670 -vt 0.198077 0.571455 -vt 0.197428 0.565317 -vt 0.199662 0.559415 -vt 0.197147 0.559517 -vt 0.199748 0.553435 -vt 0.196995 0.553480 -vt 0.199419 0.547398 -vt 0.196995 0.547457 -vt 0.199466 0.541325 -vt 0.196683 0.541429 -vt 0.199041 0.535228 -vt 0.196484 0.535303 -vt 0.198653 0.529370 -vt 0.196320 0.529448 -vt 0.198693 0.523426 -vt 0.196005 0.523527 -vt 0.198195 0.517537 -vt 0.195889 0.517634 -vt 0.157570 0.505507 -vt 0.157789 0.511787 -vt 0.155594 0.511808 -vt 0.155544 0.505519 -vt 0.157405 0.499394 -vt 0.155514 0.499400 -vt 0.157610 0.493097 -vt 0.155393 0.493101 -vt 0.157517 0.486644 -vt 0.155409 0.486608 -vt 0.157600 0.480235 -vt 0.155535 0.480100 -vt 0.158289 0.473889 -vt 0.156257 0.473199 -vt 0.158575 0.568589 -vt 0.159268 0.575017 -vt 0.157229 0.575675 -vt 0.156459 0.568757 -vt 0.158485 0.561982 -vt 0.156188 0.562038 -vt 0.158202 0.555452 -vt 0.156113 0.555476 -vt 0.157971 0.549209 -vt 0.156081 0.549233 -vt 0.158024 0.543023 -vt 0.155976 0.543052 -vt 0.158113 0.536664 -vt 0.155897 0.536693 -vt 0.157878 0.530325 -vt 0.155843 0.530347 -vt 0.157655 0.524198 -vt 0.155796 0.524222 -vt 0.157705 0.518082 -vt 0.155679 0.518111 -vt 0.145192 0.505446 -vt 0.145357 0.511543 -vt 0.142141 0.511627 -vt 0.142197 0.505521 -vt 0.145097 0.499325 -vt 0.141809 0.499397 -vt 0.144950 0.492940 -vt 0.141386 0.493056 -vt 0.144617 0.486520 -vt 0.141445 0.486662 -vt 0.144326 0.480001 -vt 0.140842 0.480334 -vt 0.143508 0.472889 -vt 0.139891 0.474051 -vt 0.145084 0.568307 -vt 0.144180 0.575729 -vt 0.140490 0.574388 -vt 0.141473 0.568013 -vt 0.145365 0.561590 -vt 0.141965 0.561499 -vt 0.145450 0.555227 -vt 0.142335 0.555182 -vt 0.145626 0.548913 -vt 0.142142 0.548878 -vt 0.145563 0.542683 -vt 0.142519 0.542646 -vt 0.145602 0.536546 -vt 0.142373 0.536518 -vt 0.145545 0.530327 -vt 0.142235 0.530329 -vt 0.145510 0.524035 -vt 0.141965 0.524072 -vt 0.145421 0.517748 -vt 0.142115 0.517808 -vt 0.095760 0.518488 -vt 0.095539 0.512813 -vt 0.097353 0.512758 -vt 0.097472 0.518475 -vt 0.095515 0.507243 -vt 0.097070 0.507181 -vt 0.095158 0.501794 -vt 0.096842 0.501711 -vt 0.094679 0.496149 -vt 0.096508 0.496015 -vt 0.094323 0.490502 -vt 0.096009 0.490323 -vt 0.093766 0.485061 -vt 0.095371 0.484799 -vt 0.092760 0.479764 -vt 0.094246 0.479143 -vt 0.093081 0.568129 -vt 0.094102 0.562743 -vt 0.095831 0.562978 -vt 0.094766 0.568796 -vt 0.094704 0.557200 -vt 0.096372 0.557325 -vt 0.095162 0.551764 -vt 0.096713 0.551854 -vt 0.095299 0.546204 -vt 0.097083 0.546288 -vt 0.095688 0.540660 -vt 0.097238 0.540718 -vt 0.095770 0.535206 -vt 0.097429 0.535259 -vt 0.095835 0.529653 -vt 0.097517 0.529687 -vt 0.095839 0.524080 -vt 0.097529 0.524093 -vt 0.298357 0.506207 -vt 0.362847 0.505457 -vt 0.362976 0.514476 -vt 0.298749 0.514185 -vt 0.362977 0.523483 -vt 0.298954 0.522206 -vt 0.362849 0.532485 -vt 0.298773 0.530149 -vt 0.362594 0.541481 -vt 0.298587 0.538062 -vt 0.362211 0.550478 -vt 0.298180 0.546075 -vt 0.361700 0.559480 -vt 0.297572 0.554211 -vt 0.361068 0.568492 -vt 0.296555 0.562421 -vt 0.360332 0.577513 -vt 0.295291 0.570683 -vt 0.359512 0.586553 -vt 0.293662 0.579098 -vt 0.358668 0.595378 -vt 0.291567 0.587987 -vt 0.291327 0.455872 -vt 0.359726 0.450783 -vt 0.360491 0.459984 -vt 0.293375 0.465052 -vt 0.361172 0.469148 -vt 0.294857 0.473659 -vt 0.361755 0.478272 -vt 0.296208 0.482030 -vt 0.362230 0.487363 -vt 0.297097 0.490270 -vt 0.362595 0.496423 -vt 0.297746 0.498276 -vt 0.288460 0.506886 -vt 0.288033 0.499142 -vt 0.286990 0.491396 -vt 0.285743 0.483561 -vt 0.284654 0.475565 -vt 0.282800 0.467652 -vt 0.280563 0.459851 -vt 0.281450 0.583881 -vt 0.283667 0.576504 -vt 0.285196 0.568706 -vt 0.286380 0.560907 -vt 0.287198 0.553126 -vt 0.288084 0.545397 -vt 0.288668 0.537698 -vt 0.289054 0.530014 -vt 0.288781 0.522317 -vt 0.288738 0.514604 -vt 0.053888 0.509039 -vt 0.053675 0.503966 -vt 0.053404 0.498893 -vt 0.053081 0.493831 -vt 0.052707 0.488783 -vt 0.052282 0.483746 -vt 0.052726 0.559753 -vt 0.053117 0.554687 -vt 0.053452 0.549623 -vt 0.053724 0.544557 -vt 0.053934 0.539492 -vt 0.054080 0.534425 -vt 0.054163 0.529353 -vt 0.054183 0.524276 -vt 0.054142 0.519196 -vt 0.054043 0.514115 -usemtl Tank -s off -f 108/85 109/86 110/87 111/88 -f 112/89 108/85 111/88 113/90 -f 114/91 112/89 113/90 115/92 -f 116/93 114/91 115/92 117/94 -f 118/95 116/93 117/94 119/96 -f 120/97 118/95 119/96 121/98 -f 122/99 120/100 121/101 123/102 -f 124/103 122/99 123/102 125/104 -f 126/105 124/103 125/104 127/106 -f 128/107 126/105 127/106 129/108 -f 130/109 128/107 129/108 131/110 -f 132/111 130/109 131/110 133/112 -f 134/113 132/111 133/112 135/114 -f 136/115 134/113 135/114 137/116 -f 138/117 136/115 137/116 139/118 -f 109/86 138/117 139/118 110/87 -f 140/119 141/120 142/121 143/122 -f 144/123 140/119 143/122 145/124 -f 146/125 144/123 145/124 147/126 -f 148/127 146/125 147/126 149/128 -f 150/129 148/127 149/128 151/130 -f 152/131 150/129 151/130 153/132 -f 154/133 152/134 153/135 155/136 -f 156/137 154/133 155/136 157/138 -f 158/139 156/137 157/138 159/140 -f 160/141 158/139 159/140 161/142 -f 162/143 160/141 161/142 163/144 -f 164/145 162/143 163/144 165/146 -f 166/147 164/145 165/146 167/148 -f 168/149 166/147 167/148 169/150 -f 170/151 168/149 169/150 171/152 -f 141/120 170/151 171/152 142/121 -f 172/153 173/154 174/155 175/156 -f 176/157 172/153 175/156 177/158 -f 178/159 176/157 177/158 179/160 -f 180/161 178/159 179/160 181/162 -f 182/163 180/161 181/162 183/164 -f 184/165 182/163 183/164 185/166 -f 186/167 184/168 185/169 187/170 -f 188/171 186/167 187/170 189/172 -f 190/173 188/171 189/172 191/174 -f 192/175 190/173 191/174 193/176 -f 194/177 192/175 193/176 195/178 -f 196/179 194/177 195/178 197/180 -f 198/181 196/179 197/180 199/182 -f 200/183 198/181 199/182 201/184 -f 202/185 200/183 201/184 203/186 -f 173/154 202/185 203/186 174/155 -f 204/187 205/188 206/189 207/190 -f 208/191 204/187 207/190 209/192 -f 210/193 208/191 209/192 211/194 -f 212/195 210/193 211/194 213/196 -f 214/197 212/195 213/196 215/198 -f 216/199 214/197 215/198 217/200 -f 218/201 216/202 217/203 219/204 -f 220/205 218/201 219/204 221/206 -f 222/207 220/205 221/206 223/208 -f 224/209 222/207 223/208 225/210 -f 226/211 224/209 225/210 227/212 -f 228/213 226/211 227/212 229/214 -f 230/215 228/213 229/214 231/216 -f 232/217 230/215 231/216 233/218 -f 234/219 232/217 233/218 235/220 -f 205/188 234/219 235/220 206/189 -f 236/221 237/222 238/223 239/224 -f 237/222 240/225 241/226 238/223 -f 240/225 242/227 243/228 241/226 -f 242/227 244/229 245/230 243/228 -f 244/229 246/231 247/232 245/230 -f 246/231 248/233 249/234 247/232 -f 248/233 250/235 251/236 249/234 -f 250/237 252/238 253/239 251/240 -f 252/238 254/241 255/242 253/239 -f 254/241 256/243 257/244 255/242 -f 256/243 258/245 259/246 257/244 -f 258/245 260/247 261/248 259/246 -f 260/247 262/249 263/250 261/248 -f 262/249 264/251 265/252 263/250 -f 264/251 266/253 267/254 265/252 -f 266/253 236/221 239/224 267/254 -s 1 -f 268/255 269/256 270/257 271/258 -f 271/258 270/257 272/259 273/260 -f 273/260 272/259 274/261 275/262 -f 275/262 274/261 276/263 277/264 -f 277/264 276/263 278/265 279/266 -f 279/266 278/265 280/267 281/268 -f 281/268 280/267 282/269 283/270 -f 283/270 282/269 284/271 285/272 -f 285/272 284/271 286/273 287/274 -f 287/274 286/273 288/275 289/276 -f 289/277 288/278 290/279 291/280 -f 291/280 290/279 292/281 293/282 -f 293/282 292/281 294/283 295/284 -f 295/284 294/283 296/285 297/286 -f 297/286 296/285 298/287 299/288 -f 269/256 268/255 299/288 298/287 -f 299/288 268/255 300/289 301/290 -f 297/286 299/288 301/290 302/291 -f 295/284 297/286 302/291 303/292 -f 293/282 295/284 303/292 304/293 -f 291/280 293/282 304/293 305/294 -f 289/277 291/280 305/294 306/295 -f 287/274 289/276 306/296 307/297 -f 285/272 287/274 307/297 308/298 -f 283/270 285/272 308/298 309/299 -f 281/268 283/270 309/299 310/300 -f 279/266 281/268 310/300 311/301 -f 277/264 279/266 311/301 312/302 -f 275/262 277/264 312/302 313/303 -f 273/260 275/262 313/303 314/304 -f 271/258 273/260 314/304 315/305 -f 268/255 271/258 315/305 300/289 -f 300/289 315/305 138/117 109/86 -f 315/305 314/304 136/115 138/117 -f 314/304 313/303 134/113 136/115 -f 313/303 312/302 132/111 134/113 -f 312/302 311/301 130/109 132/111 -f 311/301 310/300 128/107 130/109 -f 310/300 309/299 126/105 128/107 -f 309/299 308/298 124/103 126/105 -f 308/298 307/297 122/99 124/103 -f 307/297 306/296 120/100 122/99 -f 306/295 305/294 118/95 120/97 -f 305/294 304/293 116/93 118/95 -f 304/293 303/292 114/91 116/93 -f 303/292 302/291 112/89 114/91 -f 108/85 112/89 302/291 301/290 -f 109/86 108/85 301/290 300/289 -f 110/87 139/118 170/151 141/120 -f 139/118 137/116 168/149 170/151 -f 137/116 135/114 166/147 168/149 -f 135/114 133/112 164/145 166/147 -f 133/112 131/110 162/143 164/145 -f 131/110 129/108 160/141 162/143 -f 129/108 127/106 158/139 160/141 -f 127/106 125/104 156/137 158/139 -f 125/104 123/102 154/133 156/137 -f 123/102 121/101 152/134 154/133 -f 121/98 119/96 150/129 152/131 -f 119/96 117/94 148/127 150/129 -f 117/94 115/92 146/125 148/127 -f 115/92 113/90 144/123 146/125 -f 113/90 111/88 140/119 144/123 -f 111/88 110/87 141/120 140/119 -f 142/121 171/152 202/185 173/154 -f 171/152 169/150 200/183 202/185 -f 169/150 167/148 198/181 200/183 -f 167/148 165/146 196/179 198/181 -f 165/146 163/144 194/177 196/179 -f 163/144 161/142 192/175 194/177 -f 161/142 159/140 190/173 192/175 -f 159/140 157/138 188/171 190/173 -f 157/138 155/136 186/167 188/171 -f 155/136 153/135 184/168 186/167 -f 153/132 151/130 182/163 184/165 -f 151/130 149/128 180/161 182/163 -f 149/128 147/126 178/159 180/161 -f 147/126 145/124 176/157 178/159 -f 145/124 143/122 172/153 176/157 -f 143/122 142/121 173/154 172/153 -f 174/155 203/186 234/219 205/188 -f 203/186 201/184 232/217 234/219 -f 201/184 199/182 230/215 232/217 -f 199/182 197/180 228/213 230/215 -f 197/180 195/178 226/211 228/213 -f 195/178 193/176 224/209 226/211 -f 193/176 191/174 222/207 224/209 -f 191/174 189/172 220/205 222/207 -f 189/172 187/170 218/201 220/205 -f 187/170 185/169 216/202 218/201 -f 185/166 183/164 214/197 216/199 -f 183/164 181/162 212/195 214/197 -f 181/162 179/160 210/193 212/195 -f 179/160 177/158 208/191 210/193 -f 177/158 175/156 204/187 208/191 -f 175/156 174/155 205/188 204/187 -f 206/189 235/220 239/224 238/223 -f 235/220 233/218 267/254 239/224 -f 233/218 231/216 265/252 267/254 -f 231/216 229/214 263/250 265/252 -f 229/214 227/212 261/248 263/250 -f 227/212 225/210 259/246 261/248 -f 225/210 223/208 257/244 259/246 -f 223/208 221/206 255/242 257/244 -f 221/206 219/204 253/239 255/242 -f 219/204 217/203 251/240 253/239 -f 217/200 215/198 249/234 251/236 -f 215/198 213/196 247/232 249/234 -f 213/196 211/194 245/230 247/232 -f 211/194 209/192 243/228 245/230 -f 209/192 207/190 241/226 243/228 -f 207/190 206/189 238/223 241/226 -f 316/222 317/222 237/225 240/306 -f 318/225 316/225 240/227 242/307 -f 319/227 318/227 242/229 244/308 -f 320/229 319/229 244/231 246/309 -f 321/231 320/231 246/233 248/310 -f 322/233 321/233 248/235 250/311 -f 323/237 322/237 250/238 252/312 -f 324/238 323/238 252/241 254/313 -f 325/241 324/241 254/243 256/314 -f 326/243 325/243 256/245 258/315 -f 327/245 326/245 258/247 260/316 -f 328/247 327/247 260/249 262/317 -f 329/249 328/249 262/251 264/318 -f 330/251 329/251 264/253 266/319 -f 331/253 330/253 266/221 236/320 -f 317/221 331/221 236/222 237/321 diff --git a/contrib/tinks/assets/models/debris1.mtl b/contrib/tinks/assets/models/debris1.mtl deleted file mode 100644 index d8e32fcd76..0000000000 --- a/contrib/tinks/assets/models/debris1.mtl +++ /dev/null @@ -1,22 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 2 - -newmtl Tank_TTread.jpg -Ns 178.431373 -Ka 0.000000 0.000000 0.000000 -Kd 0.400000 0.400000 0.400000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/TTread.jpg - -newmtl Treads -Ns 178.431373 -Ka 0.000000 0.000000 0.000000 -Kd 0.400000 0.400000 0.400000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/tread.jpg diff --git a/contrib/tinks/assets/models/debris1.obj b/contrib/tinks/assets/models/debris1.obj deleted file mode 100644 index 8517da77b2..0000000000 --- a/contrib/tinks/assets/models/debris1.obj +++ /dev/null @@ -1,2196 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib debris1.mtl -o BodyGood -v 0.676137 2.086460 0.689834 -v -0.034145 0.742831 0.012787 -v 0.072319 0.627859 -0.331849 -v -0.023766 0.475356 -0.254939 -v 0.062015 0.703793 0.055516 -v 0.072395 0.436319 -0.212210 -v 0.168480 0.588821 -0.289120 -v -0.122632 0.394524 -0.106292 -v -0.026472 0.355486 -0.063563 -v -0.197789 0.407020 0.074263 -v -0.101628 0.367982 0.116991 -v -0.229097 0.509496 0.238345 -v -0.132936 0.470458 0.281074 -v -0.208168 0.674494 0.341989 -v -0.112007 0.635456 0.384718 -v -0.140610 0.857803 0.357424 -v -0.044450 0.818765 0.400153 -v -0.044525 1.010305 0.280514 -v 0.051636 0.971267 0.323242 -v 0.054342 1.091138 0.131866 -v 0.150502 1.052101 0.174596 -v 0.129498 1.078642 -0.048688 -v 0.225658 1.039605 -0.005959 -v 0.160806 0.976166 -0.212770 -v 0.256967 0.937129 -0.170041 -v 0.139877 0.811168 -0.316414 -v 0.236038 0.772131 -0.273685 -v 0.615628 1.784828 0.325890 -v 0.564548 1.646229 0.314220 -v 0.304527 1.751787 0.198680 -v 0.631452 1.909582 0.404255 -v 0.355607 1.890386 0.210350 -v 0.607780 1.987063 0.528316 -v 0.371431 2.015141 0.288715 -v 0.561689 2.034749 0.675609 -v 0.347759 2.092622 0.412776 -v 0.476203 1.935394 0.777224 -v 0.301669 2.140307 0.560069 -v 0.403553 1.820088 0.835375 -v 0.216182 2.040953 0.661684 -v 0.352473 1.681489 0.823705 -v 0.143533 1.925647 0.719835 -v 0.336649 1.556735 0.745340 -v 0.092452 1.787048 0.708165 -v 0.360321 1.479254 0.621278 -v 0.076628 1.662294 0.629800 -v 0.417146 1.469806 0.484762 -v 0.100300 1.584813 0.505739 -v 0.491898 1.530923 0.372371 -v 0.157125 1.575365 0.369223 -v 0.231878 1.636482 0.256832 -v 0.470412 1.656553 0.535504 -v 0.210391 1.762111 0.419964 -v 0.155251 0.684692 0.042107 -v 0.117415 0.690983 0.133004 -v 0.131776 0.675473 0.086514 -v 0.072898 0.189032 -0.225400 -v 0.049423 0.179814 -0.180992 -v 0.096373 0.198251 -0.269807 -v 0.026042 -0.311692 -0.577419 -v -0.020908 -0.330129 -0.488603 -v 0.002567 -0.320911 -0.533011 -v -0.053160 -0.804775 -0.849662 -v 0.370891 1.700973 0.485300 -v 0.347416 1.691755 0.529707 -v 0.394366 1.710192 0.440892 -v 0.208093 -1.453383 -1.499687 -v 0.269356 -1.270694 -1.470652 -v 0.227836 -1.271009 -1.377500 -v 0.181102 -1.407143 -1.396700 -v 0.076463 -1.558229 -1.299246 -v 0.075012 -1.631474 -1.362898 -v -0.020968 -1.585857 -1.105220 -v -0.257009 -1.496686 -1.510431 -v -0.383512 -1.536799 -1.262383 -v -0.352988 -1.451069 -1.252753 -v -0.123929 -1.318595 -1.647220 -v -0.255558 -1.423442 -1.446778 -v -0.150919 -1.272355 -1.544233 -v -0.104185 -1.136221 -1.525033 -v -0.435973 -0.967530 -0.624231 -v -0.395917 -0.899295 -0.652034 -v -0.051491 -1.671587 -1.114851 -v -0.063897 -1.034083 -0.504501 -v -0.062665 -1.135906 -1.618185 -v -0.035158 -0.596004 -1.186830 -v 0.316223 -0.762431 -1.111771 -v 0.296864 -0.730792 -1.039297 -v 0.475035 0.485849 -0.328733 -v 0.447761 0.454390 -0.296093 -v -0.103952 -1.102318 -0.476698 -v 0.073521 0.176721 0.292447 -v -0.284147 0.295552 0.188054 -v -0.258500 0.311509 0.144914 -v -0.015799 -0.627643 -1.259304 -v 0.115739 0.589178 -0.443626 -v -0.171511 1.100976 0.670413 -v -0.147240 1.099008 0.613994 -v 0.160510 0.966188 0.817946 -v 0.047874 0.160764 0.335587 -v 0.233662 1.443184 0.071220 -v 0.143014 0.620637 -0.476266 -v 0.565684 1.308397 0.218753 -v 0.520158 1.221492 0.241814 -v 0.732656 1.892652 0.376768 -v 0.685553 1.825469 0.421394 -v 0.673264 2.087626 0.688558 -v 0.645769 2.034775 0.702151 -v 0.307339 1.451926 0.931287 -v 0.184781 0.964220 0.761527 -v 0.510051 1.956681 0.936236 -v 0.326011 1.441948 0.880151 -v 0.400635 2.027440 0.229235 -v 0.188135 1.356280 0.094281 -v 0.341244 2.222414 0.541025 -v 0.353532 1.960257 0.273861 -v -0.024683 1.586714 0.783754 -v -0.006011 1.576736 0.732617 -v 0.178030 2.091470 0.788703 -v 0.185653 2.048647 0.732425 -v 0.517674 1.913859 0.879958 -v 0.313749 2.169564 0.554618 -v 0.362547 2.149753 0.576301 -v 0.234451 2.028837 0.754108 -v 0.468876 1.933669 0.858275 -v 0.596971 2.054586 0.680467 -v 0.042787 1.556926 0.754300 -v -0.098442 1.079198 0.635677 -v 0.402330 1.940447 0.295544 -v 0.236934 1.336469 0.115964 -v 0.277213 1.461759 0.858467 -v 0.135983 0.984031 0.739843 -v 0.636755 1.845279 0.399711 -v 0.471360 1.241302 0.220131 -v 0.398963 0.474200 -0.317777 -v 0.164537 0.569368 -0.421943 -v 0.024723 0.196531 0.270764 -v -0.209702 0.291699 0.166598 -v 0.013640 -0.615814 -1.165147 -v -0.347120 -0.919105 -0.630351 -v -0.112695 -1.014273 -0.526185 -v 0.248066 -0.710981 -1.060981 -v -0.055387 -1.156031 -1.503350 -v -0.069766 -1.566047 -1.126904 -v -0.304190 -1.470879 -1.231070 -v -0.102121 -1.292166 -1.522550 -v -0.206760 -1.443252 -1.425095 -v 0.027665 -1.538419 -1.320929 -v 0.132304 -1.387333 -1.418383 -v 0.179038 -1.251199 -1.399183 -v 0.347377 0.202781 -0.514537 -v 0.279819 0.019472 -0.529972 -v 0.094439 0.094729 -0.612345 -v 0.368306 0.367779 -0.410893 -v 0.161997 0.278038 -0.596910 -v 0.336998 0.470255 -0.246811 -v 0.182926 0.443036 -0.493266 -v 0.261842 0.482751 -0.066256 -v 0.151618 0.545513 -0.329184 -v 0.162975 0.401918 0.082391 -v 0.076462 0.558008 -0.148630 -v 0.066890 0.249416 0.159301 -v -0.022404 0.477176 0.000017 -v -0.000668 0.066107 0.143866 -v -0.118490 0.324673 0.076928 -v -0.021597 -0.098891 0.040222 -v -0.186048 0.141364 0.061493 -v 0.009712 -0.201368 -0.123860 -v -0.206977 -0.023634 -0.042151 -v 0.084868 -0.213863 -0.304414 -v -0.175669 -0.126110 -0.206233 -v 0.183734 -0.133030 -0.453062 -v -0.100512 -0.138606 -0.386787 -v -0.001646 -0.057773 -0.535435 -v 0.173355 0.134444 -0.185335 -v -0.012025 0.209701 -0.267709 -v -0.161200 -0.259609 -0.603055 -v -0.054735 -0.374581 -0.947691 -v -0.150821 -0.527083 -0.870781 -v -0.063767 -0.299163 -0.559761 -v -0.053388 -0.566637 -0.827487 -v 0.042697 -0.414135 -0.904397 -v -0.249687 -0.607916 -0.722134 -v -0.152254 -0.647470 -0.678840 -v -0.324843 -0.595420 -0.541579 -v -0.227410 -0.634974 -0.498286 -v -0.356151 -0.492944 -0.377497 -v -0.258718 -0.532498 -0.334203 -v -0.335222 -0.327945 -0.273853 -v -0.237790 -0.367500 -0.230559 -v -0.267664 -0.144637 -0.258418 -v -0.170231 -0.184191 -0.215124 -v -0.171579 0.007866 -0.335329 -v -0.074147 -0.031689 -0.292034 -v -0.072713 0.088698 -0.483976 -v 0.024720 0.049144 -0.440681 -v 0.002443 0.076202 -0.664530 -v 0.099876 0.036648 -0.621236 -v 0.033752 -0.026274 -0.828613 -v 0.131185 -0.065827 -0.785318 -v 0.012823 -0.191272 -0.932256 -v 0.110256 -0.230825 -0.888962 -v 0.173393 -0.765723 -1.130233 -v 0.109574 -0.938886 -1.144813 -v -0.065546 -0.867795 -1.222628 -v 0.193163 -0.609857 -1.032325 -v -0.001727 -0.694631 -1.208047 -v 0.163588 -0.513053 -0.877324 -v 0.018043 -0.538766 -1.110140 -v 0.092591 -0.501249 -0.706763 -v -0.011532 -0.441962 -0.955139 -v -0.000803 -0.577608 -0.566343 -v -0.082528 -0.430157 -0.784578 -v -0.091570 -0.721670 -0.493690 -v -0.175923 -0.506516 -0.644158 -v -0.155389 -0.894833 -0.508271 -v -0.266690 -0.650578 -0.571504 -v -0.175159 -1.050699 -0.606179 -v -0.330509 -0.823741 -0.586084 -v -0.145584 -1.147503 -0.761179 -v -0.350279 -0.979606 -0.683992 -v -0.074587 -1.159307 -0.931740 -v -0.320704 -1.076411 -0.838993 -v 0.018807 -1.082948 -1.072160 -v -0.249707 -1.088215 -1.009554 -v -0.156313 -1.011857 -1.149974 -v 0.009002 -0.830278 -0.819252 -v -0.166118 -0.759186 -0.897066 -v -0.216008 -1.209550 -1.335380 -v -0.135511 -1.296479 -1.595958 -v -0.208160 -1.411785 -1.537806 -v 0.044013 -1.315108 -1.219841 -v 0.051860 -1.517344 -1.422267 -v 0.124509 -1.402038 -1.480418 -v -0.282912 -1.472902 -1.425414 -v -0.022892 -1.578461 -1.309876 -v -0.339738 -1.463454 -1.288898 -v -0.079717 -1.569013 -1.173360 -v -0.363409 -1.385973 -1.164837 -v -0.103389 -1.491532 -1.049298 -v -0.347585 -1.261219 -1.086473 -v -0.087565 -1.366778 -0.970933 -v -0.296505 -1.122620 -1.074802 -v -0.036485 -1.228179 -0.959263 -v -0.223855 -1.007314 -1.132954 -v 0.036164 -1.112873 -1.017414 -v -0.149103 -0.946197 -1.245345 -v 0.110917 -1.051756 -1.129805 -v -0.092278 -0.955645 -1.381861 -v 0.167742 -1.061204 -1.266321 -v -0.068606 -1.033127 -1.505923 -v 0.191414 -1.138685 -1.390383 -v -0.084430 -1.157881 -1.584288 -v 0.175590 -1.263438 -1.468748 -v 0.093575 1.166000 0.368328 -v 0.200039 1.051027 0.023692 -v 0.103954 0.898525 0.100602 -v 0.278955 1.090742 0.450701 -v 0.289334 0.823268 0.182975 -v 0.385419 0.975771 0.106065 -v 0.005088 0.817693 0.249249 -v 0.190468 0.742435 0.331623 -v -0.070069 0.830188 0.429804 -v 0.115312 0.754931 0.512177 -v -0.101377 0.932665 0.593886 -v 0.084003 0.857407 0.676259 -v -0.080448 1.097663 0.697530 -v 0.104932 1.022405 0.779903 -v -0.012890 1.280972 0.712965 -v 0.172490 1.205714 0.795338 -v 0.083195 1.433474 0.636055 -v 0.268575 1.358217 0.718428 -v 0.182062 1.514307 0.487407 -v 0.367442 1.439049 0.569781 -v 0.257218 1.501811 0.306853 -v 0.442598 1.426554 0.389226 -v 0.288526 1.399335 0.142770 -v 0.473906 1.324077 0.225144 -v 0.267597 1.234336 0.039126 -v 0.452977 1.159080 0.121500 -v 0.236038 0.772131 -0.273685 -v 0.168480 0.588821 -0.289120 -v 0.072319 0.627859 -0.331849 -v 0.256967 0.937129 -0.170041 -v 0.139877 0.811168 -0.316414 -v 0.225658 1.039605 -0.005959 -v 0.160806 0.976166 -0.212770 -v 0.150502 1.052101 0.174596 -v 0.129498 1.078642 -0.048688 -v 0.051636 0.971267 0.323242 -v 0.054342 1.091138 0.131866 -v -0.044450 0.818765 0.400153 -v -0.044525 1.010305 0.280514 -v -0.112007 0.635456 0.384718 -v -0.140610 0.857803 0.357424 -v -0.132936 0.470458 0.281074 -v -0.208168 0.674494 0.341989 -v -0.101628 0.367982 0.116991 -v -0.229097 0.509496 0.238345 -v -0.026472 0.355486 -0.063563 -v -0.197789 0.407020 0.074263 -v 0.072395 0.436319 -0.212210 -v -0.122632 0.394524 -0.106292 -v -0.023766 0.475356 -0.254939 -v 0.062015 0.703793 0.055516 -v -0.034145 0.742831 0.012787 -v 0.146871 -1.217748 -1.350849 -v 0.105512 -1.346815 -1.375688 -v 0.015621 -1.484054 -1.298774 -v -0.066082 -1.500242 -1.129692 -v -0.264875 -1.419540 -1.218026 -v -0.183172 -1.403351 -1.387107 -v -0.093282 -1.266112 -1.464021 -v -0.051923 -1.137045 -1.439182 -v -0.290922 -0.869984 -0.657326 -v -0.092129 -0.950687 -0.568992 -v 0.015150 -0.611632 -1.110105 -v 0.213943 -0.692335 -1.021773 -v 0.360643 0.460429 -0.298739 -v 0.043786 0.228903 0.202819 -v -0.155007 0.309606 0.114486 -v 0.161850 0.541131 -0.387072 -v -0.048367 1.074314 0.573139 -v 0.434528 1.209423 0.219275 -v 0.583056 1.786814 0.412525 -v 0.553587 1.997952 0.671742 -v 0.150427 0.993612 0.661473 -v 0.276583 1.449126 0.793725 -v 0.235735 1.290126 0.130942 -v 0.384263 1.867516 0.324192 -v 0.077789 1.529829 0.705391 -v 0.245883 1.973865 0.732775 -v 0.444676 1.893163 0.821108 -v 0.354795 2.078654 0.583409 -v 0.188251 -1.234547 -1.332461 -v 0.222867 -1.238959 -1.414393 -v 0.168576 -1.412328 -1.450603 -v 0.146893 -1.363614 -1.357301 -v 0.054500 -1.572990 -1.340661 -v -0.051658 -1.598196 -1.124783 -v -0.024701 -1.517042 -1.111305 -v -0.306256 -1.402741 -1.236413 -v -0.333213 -1.483896 -1.249891 -v -0.227055 -1.458689 -1.465769 -v -0.112980 -1.298027 -1.575712 -v -0.134663 -1.249313 -1.482409 -v -0.058689 -1.124658 -1.539502 -v -0.093304 -1.120246 -1.457570 -v -0.332303 -0.853185 -0.675713 -v -0.366897 -0.915986 -0.655237 -v -0.085341 -1.030286 -0.530129 -v -0.050748 -0.967486 -0.550605 -v -0.010652 -0.628268 -1.194099 -v -0.026231 -0.594833 -1.128493 -v 0.255324 -0.709134 -1.003385 -v 0.270903 -0.742568 -1.068991 -v 0.402024 0.443630 -0.280351 -v 0.425314 0.471582 -0.307229 -v 0.063507 0.199271 0.258227 -v 0.085166 0.212104 0.221207 -v -0.196388 0.326405 0.096098 -v -0.218049 0.313571 0.133119 -v 0.143759 0.585882 -0.432337 -v 0.120469 0.557930 -0.405459 -v -0.109944 1.095816 0.604502 -v 0.171611 0.981516 0.729610 -v 0.233837 1.387532 0.097341 -v 0.515393 1.273232 0.222449 -v 0.664887 1.830975 0.395575 -v 0.475909 1.192624 0.237663 -v 0.618820 2.030195 0.681258 -v 0.624437 1.770015 0.430913 -v 0.191808 0.976813 0.679860 -v 0.302576 1.444301 0.857683 -v 0.317964 1.432327 0.812113 -v 0.480459 1.919502 0.891507 -v 0.194354 1.306925 0.112554 -v 0.383332 1.945276 0.270467 -v 0.342882 1.884315 0.305804 -v 0.337265 2.144496 0.556149 -v 0.021020 1.558601 0.732575 -v -0.089747 1.091113 0.554752 -v 0.198904 2.033803 0.766399 -v 0.036409 1.546628 0.687004 -v 0.486057 1.876364 0.839496 -v 0.204502 1.990664 0.714387 -v 0.313414 2.095454 0.565021 -v 0.594968 1.981153 0.690130 -v -0.224553 -1.386552 -1.405495 -v 0.057002 -1.500853 -1.280386 -vt 0.327482 0.011534 -vt 0.336355 0.031992 -vt 0.325701 0.036705 -vt 0.318810 0.021584 -vt 0.297606 0.010852 -vt 0.299986 0.000000 -vt 0.273615 0.017865 -vt 0.187817 0.490875 -vt 0.156825 0.482407 -vt 0.161445 0.473010 -vt 0.215312 0.479341 -vt 0.185437 0.480023 -vt 0.206641 0.469291 -vt 0.213531 0.454170 -vt 0.121957 0.390759 -vt 0.129683 0.385086 -vt 0.268995 0.008468 -vt 0.241852 0.105789 -vt 0.224186 0.458883 -vt 0.210965 0.380820 -vt 0.329296 0.103077 -vt 0.323134 0.110055 -vt 0.323188 0.272647 -vt 0.317364 0.271042 -vt 0.234126 0.100116 -vt 0.231657 0.272174 -vt 0.113498 0.218161 -vt 0.119487 0.218701 -vt 0.217127 0.387798 -vt 0.205195 0.219833 -vt 0.112169 0.109915 -vt 0.118478 0.112993 -vt 0.224338 0.380960 -vt 0.225668 0.272714 -vt 0.203398 0.104885 -vt 0.211019 0.218228 -vt 0.315567 0.385990 -vt 0.307137 0.378136 -vt 0.336507 0.454737 -vt 0.326931 0.450031 -vt 0.313923 0.490875 -vt 0.308846 0.486077 -vt 0.243806 0.437197 -vt 0.230647 0.377882 -vt 0.276915 0.489888 -vt 0.248977 0.433555 -vt 0.224338 0.036138 -vt 0.194968 0.112739 -vt 0.201754 0.000000 -vt 0.214762 0.040844 -vt 0.131637 0.053678 -vt 0.136808 0.057320 -vt 0.164746 0.000987 -vt 0.168313 0.008303 -vt 0.280482 0.482572 -vt 0.196677 0.004798 -vt 0.974331 0.078176 -vt 0.980835 0.078196 -vt 0.980748 0.106756 -vt 0.707328 0.984406 -vt 0.700824 0.984386 -vt 0.700911 0.955827 -vt 0.917999 0.479660 -vt 0.924503 0.479680 -vt 0.924355 0.527969 -vt 0.917851 0.527949 -vt 0.924186 0.583212 -vt 0.909670 0.907502 -vt 0.916174 0.907508 -vt 0.916139 0.944207 -vt 0.909737 0.836400 -vt 0.916241 0.836406 -vt 0.886560 0.527969 -vt 0.880056 0.527949 -vt 0.880204 0.479660 -vt 0.886391 0.583212 -vt 0.879887 0.583192 -vt 0.870454 0.907508 -vt 0.870420 0.944207 -vt 0.863916 0.944201 -vt 0.863950 0.907502 -vt 0.864017 0.836400 -vt 0.870521 0.836406 -vt 0.864119 0.728997 -vt 0.909839 0.728997 -vt 0.916343 0.729003 -vt 0.886068 0.688915 -vt 0.879564 0.688895 -vt 0.917682 0.583192 -vt 0.923863 0.688915 -vt 0.909991 0.567907 -vt 0.916495 0.567913 -vt 0.917359 0.688895 -vt 0.923353 0.855488 -vt 0.885558 0.855488 -vt 0.879054 0.855469 -vt 0.870623 0.729003 -vt 0.864271 0.567907 -vt 0.870844 0.494518 -vt 0.870775 0.567913 -vt 0.910060 0.494512 -vt 0.916564 0.494518 -vt 0.885287 0.944110 -vt 0.878783 0.944090 -vt 0.916849 0.855468 -vt 0.923082 0.944110 -vt 0.910074 0.479660 -vt 0.916578 0.479666 -vt 0.044119 0.992083 -vt 0.044052 0.970171 -vt 0.050556 0.970151 -vt 0.043980 0.946620 -vt 0.050484 0.946600 -vt 0.025831 0.970097 -vt 0.019327 0.970117 -vt 0.019255 0.946567 -vt 0.025898 0.992009 -vt 0.019394 0.992029 -vt 0.864341 0.494512 -vt 0.864354 0.479660 -vt 0.217778 0.847236 -vt 0.217718 0.866824 -vt 0.193010 0.866748 -vt 0.217846 0.824802 -vt 0.193070 0.847160 -vt 0.217905 0.805533 -vt 0.193138 0.824726 -vt 0.193139 0.885932 -vt 0.193197 0.866824 -vt 0.217905 0.866900 -vt 0.193070 0.908359 -vt 0.217847 0.886008 -vt 0.193010 0.928096 -vt 0.217778 0.908435 -vt 0.960634 0.205294 -vt 0.960616 0.224718 -vt 0.935908 0.224694 -vt 0.960655 0.182858 -vt 0.935926 0.205271 -vt 0.960674 0.163421 -vt 0.935947 0.182835 -vt 0.161049 0.784121 -vt 0.160990 0.803505 -vt 0.136282 0.803429 -vt 0.161118 0.761685 -vt 0.136341 0.784045 -vt 0.161177 0.742208 -vt 0.136410 0.761609 -vt 0.182570 0.700256 -vt 0.193714 0.658380 -vt 0.213105 0.669579 -vt 0.182570 0.532751 -vt 0.213105 0.563429 -vt 0.193714 0.574628 -vt 0.224314 0.688998 -vt 0.224314 0.544010 -vt 0.224338 0.711433 -vt 0.224338 0.521574 -vt 0.213171 0.730874 -vt 0.213171 0.502134 -vt 0.193804 0.742111 -vt 0.193804 0.490897 -vt 0.171427 0.742132 -vt 0.171427 0.490875 -vt 0.152036 0.730933 -vt 0.152036 0.502074 -vt 0.140826 0.711515 -vt 0.140827 0.521493 -vt 0.140802 0.689079 -vt 0.140802 0.543928 -vt 0.151970 0.669638 -vt 0.151970 0.563369 -vt 0.171337 0.658402 -vt 0.171337 0.574606 -vt 0.182570 0.616504 -vt 0.631248 0.684639 -vt 0.620015 0.642784 -vt 0.642392 0.642762 -vt 0.151970 0.647121 -vt 0.600648 0.654021 -vt 0.140802 0.627681 -vt 0.589480 0.673461 -vt 0.140827 0.605245 -vt 0.589505 0.695897 -vt 0.152036 0.585826 -vt 0.600714 0.715316 -vt 0.171427 0.574628 -vt 0.620105 0.726515 -vt 0.193804 0.574649 -vt 0.642482 0.726493 -vt 0.213171 0.585886 -vt 0.661849 0.715256 -vt 0.224338 0.605327 -vt 0.673016 0.695816 -vt 0.224314 0.627762 -vt 0.672992 0.673380 -vt 0.213105 0.647181 -vt 0.661783 0.653961 -vt 0.301980 0.742172 -vt 0.301920 0.761649 -vt 0.288934 0.761609 -vt 0.301851 0.784085 -vt 0.288865 0.784045 -vt 0.301792 0.803469 -vt 0.288806 0.803429 -vt 0.260845 0.910760 -vt 0.260827 0.930198 -vt 0.247841 0.930185 -vt 0.260806 0.952634 -vt 0.247819 0.952622 -vt 0.260787 0.972057 -vt 0.247801 0.972045 -vt 0.019255 0.946507 -vt 0.019316 0.926769 -vt 0.032302 0.926809 -vt 0.019384 0.904342 -vt 0.032370 0.904382 -vt 0.019443 0.885234 -vt 0.032429 0.885274 -vt 0.281944 0.805497 -vt 0.281885 0.824766 -vt 0.268899 0.824726 -vt 0.281817 0.847200 -vt 0.268831 0.847160 -vt 0.281757 0.866788 -vt 0.268771 0.866748 -vt 0.734002 0.945881 -vt 0.733946 0.964385 -vt 0.710605 0.964313 -vt 0.734067 0.924689 -vt 0.710662 0.945810 -vt 0.734123 0.906486 -vt 0.710727 0.924617 -vt 0.819884 0.928156 -vt 0.819939 0.910106 -vt 0.843280 0.910178 -vt 0.819819 0.949343 -vt 0.843225 0.928228 -vt 0.819762 0.967987 -vt 0.843160 0.949414 -vt 0.406881 0.953659 -vt 0.406864 0.972007 -vt 0.383523 0.971985 -vt 0.406901 0.932464 -vt 0.383540 0.953637 -vt 0.406918 0.914103 -vt 0.383560 0.932442 -vt 0.768800 0.946079 -vt 0.768744 0.964390 -vt 0.745403 0.964318 -vt 0.768865 0.924885 -vt 0.745459 0.946008 -vt 0.768921 0.906486 -vt 0.745524 0.924813 -vt 0.404597 0.781691 -vt 0.415123 0.742132 -vt 0.433441 0.752711 -vt 0.712473 0.766073 -vt 0.741317 0.795053 -vt 0.722999 0.805632 -vt 0.444030 0.771055 -vt 0.751906 0.776708 -vt 0.444053 0.792249 -vt 0.751929 0.755515 -vt 0.433504 0.810614 -vt 0.741380 0.737150 -vt 0.415209 0.821229 -vt 0.723085 0.726535 -vt 0.394070 0.821249 -vt 0.701946 0.726515 -vt 0.375752 0.810670 -vt 0.683628 0.737094 -vt 0.365163 0.792326 -vt 0.673039 0.755438 -vt 0.365141 0.771132 -vt 0.673016 0.776632 -vt 0.375690 0.752768 -vt 0.683566 0.794996 -vt 0.393985 0.742153 -vt 0.701861 0.805611 -vt 0.255919 0.773795 -vt 0.264344 0.805457 -vt 0.247425 0.805440 -vt 0.819809 0.590672 -vt 0.811315 0.559026 -vt 0.828234 0.559010 -vt 0.232782 0.796944 -vt 0.796672 0.567522 -vt 0.224338 0.782246 -vt 0.788228 0.582221 -vt 0.224357 0.765282 -vt 0.788246 0.599185 -vt 0.232832 0.750600 -vt 0.796722 0.613867 -vt 0.247494 0.742132 -vt 0.811383 0.622335 -vt 0.264413 0.742149 -vt 0.828302 0.622318 -vt 0.279056 0.750645 -vt 0.842945 0.613822 -vt 0.287499 0.765344 -vt 0.851389 0.599123 -vt 0.287481 0.782307 -vt 0.851371 0.582160 -vt 0.279006 0.796990 -vt 0.842896 0.567477 -vt 0.483714 0.844061 -vt 0.483669 0.858788 -vt 0.449012 0.858681 -vt 0.483617 0.875752 -vt 0.448960 0.875645 -vt 0.483572 0.890407 -vt 0.448916 0.890301 -vt 0.710605 0.871761 -vt 0.710591 0.886458 -vt 0.675935 0.886425 -vt 0.710575 0.903422 -vt 0.675919 0.903389 -vt 0.710561 0.918108 -vt 0.675905 0.918075 -vt 0.224338 0.910641 -vt 0.224384 0.895718 -vt 0.259040 0.895825 -vt 0.224436 0.878761 -vt 0.259092 0.878867 -vt 0.224480 0.864313 -vt 0.259136 0.864420 -vt 0.780201 0.860073 -vt 0.780157 0.874642 -vt 0.745500 0.874536 -vt 0.780105 0.891604 -vt 0.745449 0.891498 -vt 0.780060 0.906414 -vt 0.745403 0.906308 -vt 0.266106 0.532751 -vt 0.277250 0.574628 -vt 0.254873 0.574649 -vt 0.714785 0.517134 -vt 0.703551 0.475279 -vt 0.725928 0.475257 -vt 0.235506 0.563369 -vt 0.684184 0.486516 -vt 0.224338 0.543928 -vt 0.673016 0.505957 -vt 0.224363 0.521493 -vt 0.673041 0.528392 -vt 0.235572 0.502074 -vt 0.684250 0.547811 -vt 0.254963 0.490875 -vt 0.703641 0.559010 -vt 0.277340 0.490897 -vt 0.726018 0.559032 -vt 0.296707 0.502134 -vt 0.745385 0.547751 -vt 0.307874 0.521574 -vt 0.756553 0.528311 -vt 0.307850 0.544010 -vt 0.756528 0.505875 -vt 0.296641 0.563429 -vt 0.745319 0.486456 -vt 0.137065 0.490951 -vt 0.137005 0.510428 -vt 0.112297 0.510352 -vt 0.136936 0.532864 -vt 0.112228 0.532788 -vt 0.136877 0.552247 -vt 0.112169 0.552171 -vt 0.960674 0.000023 -vt 0.960655 0.019461 -vt 0.935947 0.019437 -vt 0.960634 0.041897 -vt 0.935926 0.041874 -vt 0.960616 0.061344 -vt 0.935908 0.061297 -vt 0.136282 0.926144 -vt 0.136342 0.906407 -vt 0.161050 0.906483 -vt 0.136411 0.883979 -vt 0.161119 0.884055 -vt 0.136469 0.864871 -vt 0.161177 0.864947 -vt 0.161177 0.803581 -vt 0.161118 0.822850 -vt 0.136410 0.822774 -vt 0.161050 0.845284 -vt 0.136342 0.845208 -vt 0.160990 0.864871 -vt 0.136282 0.864795 -vt 0.987120 0.148498 -vt 0.987060 0.168086 -vt 0.974244 0.168046 -vt 0.987189 0.126064 -vt 0.974304 0.148459 -vt 0.987248 0.106795 -vt 0.974372 0.126025 -vt 0.977011 0.327820 -vt 0.977069 0.308711 -vt 0.989886 0.308751 -vt 0.976942 0.350247 -vt 0.989827 0.327859 -vt 0.976882 0.369984 -vt 0.989759 0.350286 -vt 0.991730 0.908371 -vt 0.991740 0.927806 -vt 0.978896 0.927782 -vt 0.991752 0.885934 -vt 0.978914 0.908358 -vt 0.991770 0.866497 -vt 0.978935 0.885922 -vt 0.984176 0.684994 -vt 0.984117 0.704377 -vt 0.971300 0.704338 -vt 0.984245 0.662558 -vt 0.971359 0.684955 -vt 0.984304 0.643081 -vt 0.971428 0.662519 -vt 0.714784 0.684639 -vt 0.725928 0.642762 -vt 0.745319 0.653961 -vt 0.406909 0.698535 -vt 0.430287 0.722022 -vt 0.415440 0.730597 -vt 0.756528 0.673380 -vt 0.438869 0.707155 -vt 0.756552 0.695816 -vt 0.438887 0.689977 -vt 0.745385 0.715256 -vt 0.430337 0.675093 -vt 0.726018 0.726493 -vt 0.415509 0.666490 -vt 0.703641 0.726515 -vt 0.398377 0.666473 -vt 0.684250 0.715316 -vt 0.383531 0.675048 -vt 0.673041 0.695897 -vt 0.374948 0.689915 -vt 0.673016 0.673461 -vt 0.374930 0.707092 -vt 0.684184 0.654021 -vt 0.383480 0.721977 -vt 0.703551 0.642784 -vt 0.398308 0.730580 -vt 0.634026 0.010797 -vt 0.640870 0.025939 -vt 0.636218 0.031514 -vt 0.612855 0.000000 -vt 0.630488 0.016822 -vt 0.612584 0.006428 -vt 0.592182 0.013296 -vt 0.708952 0.475258 -vt 0.684939 0.468318 -vt 0.688279 0.461962 -vt 0.708681 0.468830 -vt 0.726585 0.458435 -vt 0.730123 0.464460 -vt 0.732315 0.443743 -vt 0.652908 0.380493 -vt 0.660675 0.376391 -vt 0.588842 0.006939 -vt 0.564578 0.098866 -vt 0.736967 0.449318 -vt 0.729584 0.372404 -vt 0.638079 0.099282 -vt 0.633487 0.102854 -vt 0.631816 0.260249 -vt 0.627378 0.259427 -vt 0.556811 0.094765 -vt 0.554674 0.260699 -vt 0.642203 0.214139 -vt 0.650771 0.214559 -vt 0.734176 0.375976 -vt 0.723474 0.215831 -vt 0.640870 0.108435 -vt 0.649117 0.111755 -vt 0.544773 0.366822 -vt 0.546106 0.261119 -vt 0.717359 0.107946 -vt 0.727913 0.215008 -vt 0.621262 0.367312 -vt 0.617895 0.363598 -vt 0.640836 0.439267 -vt 0.634141 0.433477 -vt 0.622641 0.475257 -vt 0.618529 0.468569 -vt 0.562933 0.422552 -vt 0.553020 0.363503 -vt 0.594288 0.471666 -vt 0.568146 0.417610 -vt 0.736933 0.035990 -vt 0.713992 0.111660 -vt 0.718737 0.000000 -vt 0.730238 0.041780 -vt 0.659030 0.052705 -vt 0.664243 0.057648 -vt 0.690384 0.003592 -vt 0.690595 0.010041 -vt 0.594498 0.465217 -vt 0.714626 0.006689 -vt 0.126961 0.552247 -vt 0.137065 0.553394 -vt 0.137063 0.574602 -vt 0.800249 0.624809 -vt 0.812269 0.622335 -vt 0.812242 0.648165 -vt 0.835228 0.650024 -vt 0.835159 0.622335 -vt 0.845002 0.623255 -vt 0.458759 0.978525 -vt 0.448916 0.979446 -vt 0.448984 0.951756 -vt 0.800221 0.622335 -vt 0.800249 0.648165 -vt 0.788228 0.645690 -vt 0.122537 0.552247 -vt 0.122539 0.573455 -vt 0.112434 0.574602 -vt 0.986797 0.300698 -vt 0.978913 0.297473 -vt 0.980320 0.203265 -vt 0.783777 0.997045 -vt 0.782369 0.902837 -vt 0.790253 0.899612 -vt 0.341678 0.910748 -vt 0.341520 0.980201 -vt 0.336887 0.987458 -vt 0.740612 0.906414 -vt 0.745246 0.913671 -vt 0.745403 0.983124 -vt 0.851991 0.623671 -vt 0.856981 0.622335 -vt 0.856372 0.787383 -vt 0.960674 0.168086 -vt 0.960936 0.000000 -vt 0.965985 0.000802 -vt 0.023274 0.658159 -vt 0.018225 0.658961 -vt 0.017962 0.490875 -vt 0.976283 0.464564 -vt 0.976892 0.629612 -vt 0.971902 0.628276 -vt 0.987248 0.168086 -vt 0.987259 0.062794 -vt 0.992332 0.062164 -vt 0.994951 0.674198 -vt 0.989877 0.673568 -vt 0.989866 0.568276 -vt 0.325208 0.864313 -vt 0.330230 0.865527 -vt 0.330343 0.976013 -vt 0.633595 0.856193 -vt 0.633482 0.966680 -vt 0.628461 0.967893 -vt 0.996566 0.464564 -vt 0.996457 0.533580 -vt 0.991481 0.542731 -vt 0.630616 0.805632 -vt 0.630712 0.845852 -vt 0.621435 0.845936 -vt 0.863006 0.989982 -vt 0.857018 0.988559 -vt 0.857634 0.931580 -vt 0.110818 0.931785 -vt 0.105249 0.930773 -vt 0.105246 0.872554 -vt 0.991501 0.325069 -vt 0.996477 0.334220 -vt 0.996586 0.403235 -vt 0.138896 0.926220 -vt 0.148173 0.926304 -vt 0.148077 0.966524 -vt 0.987864 0.062164 -vt 0.987248 0.005185 -vt 0.993236 0.003761 -vt 0.903540 0.990352 -vt 0.903544 0.932133 -vt 0.909113 0.931121 -vt 0.977074 0.196778 -vt 0.969845 0.199558 -vt 0.970309 0.168086 -vt 0.618609 0.983543 -vt 0.618144 0.952071 -vt 0.625374 0.954852 -vt 0.845076 0.646619 -vt 0.845002 0.622352 -vt 0.850517 0.622335 -vt 0.856904 0.794907 -vt 0.856979 0.819174 -vt 0.851463 0.819191 -vt 0.903694 0.931116 -vt 0.903737 0.884618 -vt 0.909253 0.884623 -vt 0.903788 0.831170 -vt 0.909303 0.831175 -vt 0.851389 0.519525 -vt 0.851498 0.484043 -vt 0.857013 0.484060 -vt 0.263043 0.933750 -vt 0.263255 0.864313 -vt 0.268771 0.864330 -vt 0.473753 0.951761 -vt 0.473709 0.998259 -vt 0.468194 0.998254 -vt 0.032429 0.946552 -vt 0.032378 1.000000 -vt 0.026863 0.999995 -vt 0.863916 0.479677 -vt 0.863807 0.515159 -vt 0.858292 0.515142 -vt 0.863595 0.584596 -vt 0.858079 0.584579 -vt 0.863275 0.688977 -vt 0.857760 0.688960 -vt 0.670070 0.976109 -vt 0.670390 0.871728 -vt 0.675905 0.871745 -vt 0.857002 0.519548 -vt 0.856905 0.622335 -vt 0.851389 0.622329 -vt 0.903885 0.728383 -vt 0.909400 0.728388 -vt 0.063701 0.977927 -vt 0.064180 0.821249 -vt 0.069696 0.821266 -vt 0.904038 0.566281 -vt 0.909553 0.566286 -vt 0.976969 0.704417 -vt 0.976815 0.866485 -vt 0.971300 0.866479 -vt 0.862796 0.845654 -vt 0.857281 0.845637 -vt 0.862578 0.917041 -vt 0.364761 0.727363 -vt 0.359246 0.727346 -vt 0.359464 0.655960 -vt 0.998164 0.062169 -vt 0.998082 0.148790 -vt 0.992566 0.148784 -vt 0.904120 0.479660 -vt 0.909635 0.479665 -vt 0.359246 0.741902 -vt 0.359290 0.727363 -vt 0.700767 0.974236 -vt 0.695252 0.974219 -vt 0.695308 0.955827 -vt 0.688012 0.955827 -vt 0.688073 0.975961 -vt 0.682558 0.975978 -vt 0.818472 0.475274 -vt 0.818411 0.495409 -vt 0.812895 0.495392 -vt 0.688130 0.955827 -vt 0.693645 0.955844 -vt 0.693589 0.974236 -vt 0.862533 0.931580 -vt 0.857018 0.931563 -vt 0.974244 0.106736 -vt 0.707415 0.955847 -vt 0.909635 0.944201 -vt 0.886708 0.479680 -vt 0.916578 0.944090 -vt 0.050623 0.992063 -vt 0.025759 0.946546 -vt 0.870858 0.479666 -vt 0.193197 0.805457 -vt 0.217718 0.928172 -vt 0.935965 0.163397 -vt 0.136469 0.742132 -vt 0.288993 0.742132 -vt 0.247859 0.910748 -vt 0.032241 0.946546 -vt 0.268958 0.805457 -vt 0.710782 0.906414 -vt 0.843103 0.968059 -vt 0.383578 0.914081 -vt 0.745580 0.906414 -vt 0.449057 0.843955 -vt 0.258995 0.910748 -vt 0.745545 0.859966 -vt 0.112357 0.490875 -vt 0.935965 0.000000 -vt 0.160990 0.926220 -vt 0.136469 0.803505 -vt 0.974431 0.106756 -vt 0.989698 0.370024 -vt 0.978954 0.866485 -vt 0.971488 0.643042 -vt 0.126695 0.568020 -vt 0.801840 0.645490 -vt 0.844633 0.644828 -vt 0.458389 0.956952 -vt 0.789819 0.625009 -vt 0.112169 0.558829 -vt 0.986785 0.210764 -vt 0.790241 0.989546 -vt 0.333066 0.916168 -vt 0.736791 0.977704 -vt 0.851389 0.780362 -vt 0.967461 0.162932 -vt 0.024750 0.496029 -vt 0.971300 0.471584 -vt 0.992566 0.164981 -vt 0.995184 0.571381 -vt 0.322755 0.968889 -vt 0.626007 0.863318 -vt 0.989866 0.470997 -vt 0.624636 0.807646 -vt 0.862847 0.933790 -vt 0.111341 0.877341 -vt 0.989886 0.396803 -vt 0.142097 0.964510 -vt 0.993077 0.059953 -vt 0.909635 0.985565 -vt 0.974765 0.172563 -vt 0.623065 0.979066 -vt 0.850592 0.646602 -vt 0.851389 0.794924 -vt 0.909209 0.931121 -vt 0.856904 0.519542 -vt 0.268558 0.933767 -vt 0.468238 0.951756 -vt 0.026913 0.946546 -vt 0.858400 0.479660 -vt 0.675586 0.976126 -vt 0.851486 0.519542 -vt 0.069216 0.977944 -vt 0.971453 0.704377 -vt 0.857062 0.917024 -vt 0.364980 0.655977 -vt 0.992648 0.062164 -vt 0.364761 0.741919 -vt 0.700824 0.955844 -vt 0.682496 0.955844 -vt 0.812957 0.475257 -vt 0.688073 0.974219 -vt 0.407060 0.865729 -vt 0.406918 0.821356 -vt 0.443917 0.821249 -vt 0.544822 0.904631 -vt 0.589075 0.904673 -vt 0.589026 0.956085 -vt 0.544874 0.849165 -vt 0.589127 0.849207 -vt 0.879929 0.104895 -vt 0.880138 0.036641 -vt 0.924391 0.036777 -vt 0.880250 0.000000 -vt 0.924503 0.000136 -vt 0.924182 0.105031 -vt 0.923835 0.218517 -vt 0.879582 0.218381 -vt 0.544976 0.740944 -vt 0.545140 0.568150 -vt 0.589392 0.568192 -vt 0.923316 0.388182 -vt 0.879063 0.388046 -vt 0.923098 0.459408 -vt 0.545228 0.475257 -vt 0.589480 0.475299 -vt 0.224338 0.864177 -vt 0.224432 0.833476 -vt 0.268685 0.833612 -vt 0.923036 0.479660 -vt 0.878783 0.479524 -vt 0.224518 0.805457 -vt 0.268771 0.805593 -vt 0.676020 0.918108 -vt 0.707415 0.918204 -vt 0.707300 0.955827 -vt 0.630712 0.856078 -vt 0.630867 0.805632 -vt 0.668393 0.805747 -vt 0.710605 0.859851 -vt 0.710771 0.805632 -vt 0.748298 0.805747 -vt 0.710543 0.871728 -vt 0.673016 0.871693 -vt 0.673079 0.805632 -vt 0.589480 0.914381 -vt 0.625374 0.914448 -vt 0.625338 0.952071 -vt 0.486717 0.643442 -vt 0.486613 0.753891 -vt 0.449086 0.753855 -vt 0.019418 0.838666 -vt 0.019740 0.733378 -vt 0.057266 0.733493 -vt 0.449191 0.475257 -vt 0.486717 0.475373 -vt 0.486203 0.643406 -vt 0.327458 0.655924 -vt 0.327614 0.490875 -vt 0.320708 0.805493 -vt 0.320643 0.874845 -vt 0.283116 0.874810 -vt 0.449191 0.753891 -vt 0.486717 0.754006 -vt 0.486442 0.843955 -vt 0.193125 0.965874 -vt 0.193010 0.928251 -vt 0.218740 0.928172 -vt 0.870858 0.981830 -vt 0.870894 0.944207 -vt 0.890407 0.944226 -vt 0.935908 0.125774 -vt 0.959847 0.125701 -vt 0.959962 0.163324 -vt 0.444053 0.865615 -vt 0.544773 0.956042 -vt 0.589229 0.740987 -vt 0.878845 0.459272 -vt 0.268591 0.864313 -vt 0.675905 0.955730 -vt 0.668239 0.856193 -vt 0.748132 0.859966 -vt 0.710605 0.805667 -vt 0.589480 0.952037 -vt 0.449191 0.643406 -vt 0.056944 0.838782 -vt 0.448677 0.643291 -vt 0.365141 0.490911 -vt 0.283182 0.805457 -vt 0.448916 0.843839 -vt 0.218855 0.965795 -vt 0.890371 0.981849 -vt 0.099034 0.616504 -vt 0.110178 0.658380 -vt 0.087801 0.658358 -vt 0.266106 0.700256 -vt 0.254873 0.658402 -vt 0.277250 0.658380 -vt 0.068434 0.647121 -vt 0.235506 0.669638 -vt 0.057266 0.627681 -vt 0.224338 0.689079 -vt 0.057290 0.605245 -vt 0.224363 0.711515 -vt 0.068500 0.585826 -vt 0.235572 0.730933 -vt 0.087891 0.574628 -vt 0.254963 0.742132 -vt 0.110268 0.574649 -vt 0.277340 0.742111 -vt 0.129635 0.585886 -vt 0.296707 0.730874 -vt 0.140802 0.605327 -vt 0.307874 0.711433 -vt 0.140778 0.627762 -vt 0.307850 0.688998 -vt 0.129569 0.647181 -vt 0.296641 0.669579 -vt 0.161177 0.926259 -vt 0.161118 0.945736 -vt 0.148301 0.945697 -vt 0.161049 0.968173 -vt 0.148232 0.968133 -vt 0.160990 0.987556 -vt 0.148173 0.987516 -vt 0.989843 0.805188 -vt 0.989825 0.824625 -vt 0.977008 0.824613 -vt 0.989803 0.847061 -vt 0.976987 0.847049 -vt 0.989785 0.866485 -vt 0.976969 0.866473 -vt 0.976882 0.464508 -vt 0.976942 0.444771 -vt 0.989759 0.444810 -vt 0.977011 0.422343 -vt 0.989827 0.422383 -vt 0.977069 0.403235 -vt 0.989886 0.403275 -vt 0.987248 0.009420 -vt 0.987189 0.028689 -vt 0.974372 0.028650 -vt 0.987120 0.051123 -vt 0.974304 0.051084 -vt 0.987060 0.070710 -vt 0.974244 0.070671 -vt 0.745307 0.891604 -vt 0.745261 0.906414 -vt 0.710605 0.906308 -vt 0.745359 0.874642 -vt 0.710651 0.891498 -vt 0.745403 0.860073 -vt 0.710702 0.874536 -vt 0.407021 0.878562 -vt 0.441716 0.865836 -vt 0.406964 0.897134 -vt 0.441677 0.878669 -vt 0.406918 0.912057 -vt 0.441620 0.897240 -vt 0.624151 0.899728 -vt 0.624137 0.914414 -vt 0.624167 0.882764 -vt 0.589494 0.899695 -vt 0.624181 0.868068 -vt 0.589510 0.882731 -vt 0.406821 0.853046 -vt 0.406777 0.867701 -vt 0.372120 0.867595 -vt 0.406873 0.836082 -vt 0.372165 0.852939 -vt 0.372217 0.835976 -vt 0.777691 0.813404 -vt 0.791935 0.789839 -vt 0.806596 0.798307 -vt 0.777691 0.766274 -vt 0.806596 0.781372 -vt 0.815072 0.812989 -vt 0.815072 0.766689 -vt 0.815090 0.829953 -vt 0.815090 0.749726 -vt 0.810165 0.847774 -vt 0.810165 0.731905 -vt 0.792003 0.853147 -vt 0.792003 0.726531 -vt 0.775084 0.853164 -vt 0.775084 0.726515 -vt 0.760423 0.844696 -vt 0.760423 0.734982 -vt 0.751947 0.830014 -vt 0.751947 0.749665 -vt 0.751929 0.813051 -vt 0.751929 0.766628 -vt 0.760373 0.798352 -vt 0.760373 0.781327 -vt 0.775016 0.789856 -vt 0.775016 0.789823 -vt 0.148361 0.926220 -vt 0.977027 0.805175 -vt 0.989698 0.464548 -vt 0.974431 0.009380 -vt 0.710747 0.859966 -vt 0.441575 0.912164 -vt 0.589524 0.868035 -vt 0.372262 0.821249 -vn 0.856800 -0.347800 0.380700 -vn -0.856800 0.347800 -0.380700 -vn -0.063200 -0.803500 -0.591900 -vn 0.352600 -0.143600 -0.924700 -vn 0.435700 0.093500 -0.895200 -vn -0.503200 -0.725500 0.469600 -vn -0.448800 -0.139500 0.882700 -vn -0.448800 -0.139500 0.882600 -vn -0.509900 -0.461100 0.726200 -vn 0.501400 0.389400 -0.772600 -vn -0.504400 -0.411700 0.759000 -vn 0.507000 0.433000 -0.745300 -vn -0.504300 -0.411000 0.759400 -vn 0.513000 0.650100 -0.560500 -vn -0.402900 0.009200 0.915200 -vn -0.113600 0.592900 0.797200 -vn 0.260300 0.929000 0.263000 -vn 0.383500 -0.063800 -0.921300 -vn 0.504500 0.412500 -0.758500 -vn 0.490300 0.778200 -0.392500 -vn 0.344700 0.935400 0.078800 -vn 0.106800 0.842000 0.528900 -vn -0.159800 0.522900 0.837300 -vn -0.383500 0.063800 0.921300 -vn -0.504500 -0.412500 0.758500 -vn -0.490300 -0.778200 0.392500 -vn -0.344700 -0.935400 -0.078800 -vn -0.106800 -0.842000 -0.528900 -vn 0.159800 -0.522900 -0.837300 -vn 0.668700 -0.324000 0.669200 -vn 0.774500 -0.138300 0.617300 -vn 0.899400 0.021300 0.436600 -vn -0.727900 0.627600 -0.276200 -vn -0.845000 0.533500 -0.035700 -vn -0.952800 0.303600 0.008700 -vn -0.690700 0.507300 -0.515300 -vn 0.994000 -0.051500 0.096700 -vn -0.993200 0.114400 0.019800 -vn 0.521600 -0.499600 0.691600 -vn 0.522700 -0.499700 0.690700 -vn 0.965800 -0.210400 0.151500 -vn -0.688500 0.451600 -0.567400 -vn -0.993200 0.114800 0.018500 -vn -0.682300 0.443600 -0.581000 -vn 0.959900 -0.230600 0.159400 -vn -0.995500 0.094200 -0.000400 -vn 0.448900 -0.537800 0.713600 -vn 0.591700 -0.388600 0.706300 -vn 0.630700 -0.565100 0.532000 -vn 0.940500 -0.311600 0.135200 -vn 0.924600 -0.375500 0.064300 -vn -0.919100 0.142500 0.367300 -vn -0.959700 0.142600 -0.242300 -vn -0.644600 0.372400 -0.667700 -vn -0.473100 0.231500 -0.850100 -vn 0.781400 -0.605500 0.151100 -vn -0.818100 0.031800 -0.574200 -vn 0.056800 0.797400 0.600800 -vn 0.056700 0.797400 0.600800 -vn -0.375500 0.085200 0.922900 -vn -0.447100 -0.133000 0.884600 -vn 0.508100 0.695200 -0.508500 -vn 0.458000 0.174000 -0.871800 -vn 0.509300 0.455000 -0.730500 -vn -0.501800 -0.392400 0.770900 -vn 0.504400 0.411800 -0.758900 -vn -0.506700 -0.430400 0.747000 -vn 0.504300 0.411200 -0.759300 -vn -0.514600 -0.624200 0.587900 -vn 0.419300 0.040200 -0.906900 -vn 0.140700 -0.552600 -0.821500 -vn -0.279300 -0.933600 -0.224400 -vn 0.419300 0.040200 -0.907000 -vn 0.621300 -0.335400 0.708200 -vn 0.736900 -0.108700 0.667300 -vn 0.895000 -0.031200 0.445000 -vn -0.693200 0.667800 -0.271000 -vn -0.847700 0.520300 -0.103600 -vn -0.942700 0.330200 -0.046800 -vn -0.559100 0.579000 -0.593400 -vn 0.961900 -0.163600 0.219000 -vn -0.993200 0.115300 0.018500 -vn 0.520300 -0.500000 0.692300 -vn 0.521300 -0.500100 0.691500 -vn 0.961700 -0.218300 0.165800 -vn -0.676400 0.456300 -0.578200 -vn -0.993100 0.115700 0.017100 -vn -0.690800 0.439500 -0.574100 -vn 0.962900 -0.224300 0.150000 -vn -0.996200 0.048900 0.071400 -vn 0.522500 -0.522000 0.674100 -vn 0.275600 -0.342500 0.898200 -vn 0.692300 -0.528100 0.491800 -vn 0.959300 -0.278800 0.045100 -vn 0.914000 -0.331600 -0.233700 -vn -0.969400 0.245100 0.012700 -vn -0.979100 0.088400 -0.183300 -vn -0.714300 0.360200 -0.600100 -vn -0.698600 0.283500 -0.657000 -vn 0.776500 -0.615600 0.134400 -vn -0.825300 0.046800 -0.562800 -vn -0.447000 -0.133000 0.884600 -vn -0.138600 0.555800 0.819700 -vn 0.346800 0.935000 0.073800 -vn -0.396500 0.027600 0.917600 -vn -0.473700 -0.239100 0.847600 -vn 0.482600 0.280800 -0.829600 -vn 0.512300 0.490400 -0.705000 -vn 0.506000 0.425000 -0.750600 -vn -0.503800 -0.407300 0.761700 -vn -0.515300 -0.548900 0.658100 -vn 0.507500 0.438300 -0.741800 -vn 0.474800 0.244000 -0.845600 -vn -0.428700 -0.890700 0.151100 -vn -0.092500 -0.830000 -0.550100 -vn 0.262000 -0.342200 -0.902300 -vn 0.153600 -0.532600 -0.832300 -vn -0.357900 -0.932600 -0.046700 -vn 0.413500 0.022200 -0.910200 -vn 0.478400 0.260400 -0.838700 -vn -0.511800 -0.483500 0.710100 -vn -0.485800 -0.297000 0.822100 -vn -0.505800 -0.423400 0.751600 -vn 0.503900 0.408000 -0.761300 -vn 0.514800 0.533200 -0.671400 -vn -0.507200 -0.435000 0.744000 -vn -0.479000 -0.263400 0.837300 -vn 0.440000 0.878100 -0.187800 -vn 0.090900 0.828600 0.552400 -vn -0.283600 0.298800 0.911200 -vn 0.429500 0.889900 -0.153700 -vn -0.015000 0.721200 0.692600 -vn -0.106800 -0.841900 -0.528900 -usemtl Treads -s off -f 67/1/1 68/2/1 69/3/1 -f 67/1/1 70/4/1 71/5/1 -f 72/6/1 71/5/1 73/7/1 -f 74/8/2 75/9/2 76/10/2 -f 77/11/2 74/8/2 78/12/2 -f 77/11/2 79/13/2 80/14/2 -f 75/9/2 81/15/2 82/16/2 -f 83/17/1 73/7/1 84/18/1 -f 85/19/2 80/14/2 86/20/2 -f 68/2/1 87/21/1 88/22/1 -f 87/21/1 89/23/1 90/24/1 -f 91/25/1 84/18/1 92/26/1 -f 81/15/2 93/27/2 94/28/2 -f 95/29/2 86/20/2 96/30/2 -f 97/31/2 98/32/2 94/28/2 -f 99/33/1 100/34/1 92/26/1 -f 101/35/2 102/36/2 96/30/2 -f 103/37/1 104/38/1 90/24/1 -f 105/39/1 106/40/1 104/38/1 -f 107/41/1 108/42/1 106/40/1 -f 109/43/1 99/33/1 110/44/1 -f 111/45/1 109/43/1 112/46/1 -f 113/47/2 101/35/2 114/48/2 -f 115/49/2 113/47/2 116/50/2 -f 117/51/2 118/52/2 98/32/2 -f 119/53/2 120/54/2 118/52/2 -f 107/41/1 111/45/1 121/55/1 -f 115/49/2 122/56/2 120/54/2 -f 122/57/3 123/58/3 124/59/3 -f 121/60/3 125/61/3 126/62/3 -f 120/63/4 124/64/4 127/65/4 -f 118/66/5 127/65/5 128/67/5 -f 116/68/6 129/69/6 123/70/6 -f 114/71/7 130/72/7 129/69/7 -f 112/73/4 131/74/4 125/75/4 -f 110/76/5 132/77/5 131/74/5 -f 106/78/6 108/79/6 126/80/6 -f 106/78/8 133/81/8 134/82/8 -f 104/83/9 134/82/9 135/84/9 -f 96/85/9 136/86/9 130/72/9 -f 92/87/10 137/88/10 132/77/10 -f 98/89/10 128/67/10 138/90/10 -f 86/91/11 139/92/11 136/86/11 -f 94/93/12 138/90/12 140/94/12 -f 84/95/12 141/96/12 137/88/12 -f 90/97/11 135/84/11 142/98/11 -f 69/99/13 88/100/13 142/98/13 -f 80/101/13 143/102/13 139/92/13 -f 73/103/14 144/104/14 141/96/14 -f 82/105/14 140/94/14 145/106/14 -f 79/107/15 146/108/15 143/102/15 -f 79/109/16 78/110/16 147/111/16 -f 76/112/17 145/113/17 147/111/17 -f 71/114/17 148/115/17 144/116/17 -f 71/114/16 70/117/16 149/118/16 -f 69/99/15 150/119/15 149/120/15 -f 151/121/18 152/122/18 153/123/18 -f 154/124/19 151/121/19 155/125/19 -f 156/126/20 154/124/20 157/127/20 -f 158/128/21 156/129/21 159/130/21 -f 160/131/22 158/128/22 161/132/22 -f 162/133/23 160/131/23 163/134/23 -f 164/135/24 162/136/24 165/137/24 -f 166/138/25 164/135/25 167/139/25 -f 168/140/26 166/138/26 169/141/26 -f 170/142/27 168/143/27 171/144/27 -f 172/145/28 170/142/28 173/146/28 -f 152/147/29 172/145/29 174/148/29 -f 175/149/1 152/150/1 151/151/1 -f 176/152/2 155/153/2 153/154/2 -f 175/149/1 151/151/1 154/155/1 -f 176/152/2 157/156/2 155/153/2 -f 175/149/1 154/155/1 156/157/1 -f 176/152/2 159/158/2 157/156/2 -f 175/149/1 156/157/1 158/159/1 -f 176/152/2 161/160/2 159/158/2 -f 175/149/1 158/159/1 160/161/1 -f 176/152/2 163/162/2 161/160/2 -f 175/149/1 160/161/1 162/163/1 -f 176/152/2 165/164/2 163/162/2 -f 175/149/1 162/163/1 164/165/1 -f 176/152/2 167/166/2 165/164/2 -f 175/149/1 164/165/1 166/167/1 -f 176/152/2 169/168/2 167/166/2 -f 175/149/1 166/167/1 168/169/1 -f 176/152/2 171/170/2 169/168/2 -f 175/149/1 168/169/1 170/171/1 -f 176/152/2 173/172/2 171/170/2 -f 175/149/1 170/171/1 172/173/1 -f 176/152/2 174/174/2 173/172/2 -f 175/149/1 172/173/1 152/150/1 -f 176/152/2 153/154/2 174/174/2 -f 177/175/2 178/150/2 179/173/2 -f 180/176/1 181/177/1 182/178/1 -f 177/175/2 179/173/2 183/179/2 -f 180/176/1 184/180/1 181/177/1 -f 177/175/2 183/179/2 185/181/2 -f 180/176/1 186/182/1 184/180/1 -f 177/175/2 185/181/2 187/183/2 -f 180/176/1 188/184/1 186/182/1 -f 177/175/2 187/183/2 189/185/2 -f 180/176/1 190/186/1 188/184/1 -f 177/175/2 189/185/2 191/187/2 -f 180/176/1 192/188/1 190/186/1 -f 177/175/2 191/187/2 193/189/2 -f 180/176/1 194/190/1 192/188/1 -f 177/175/2 193/189/2 195/191/2 -f 180/176/1 196/192/1 194/190/1 -f 177/175/2 195/191/2 197/193/2 -f 180/176/1 198/194/1 196/192/1 -f 177/175/2 197/193/2 199/195/2 -f 180/176/1 200/196/1 198/194/1 -f 177/175/2 199/195/2 201/197/2 -f 180/176/1 202/198/1 200/196/1 -f 177/175/2 201/197/2 178/150/2 -f 180/176/1 182/178/1 202/198/1 -f 182/199/29 181/200/29 179/201/29 -f 181/200/28 184/202/28 183/203/28 -f 184/202/27 186/204/27 185/205/27 -f 186/206/26 188/207/26 187/208/26 -f 188/207/25 190/209/25 189/210/25 -f 190/209/24 192/211/24 191/212/24 -f 192/213/23 194/214/23 193/215/23 -f 194/214/22 196/216/22 195/217/22 -f 196/216/21 198/218/21 197/219/21 -f 198/220/20 200/221/20 199/222/20 -f 200/221/19 202/223/19 201/224/19 -f 202/223/18 182/225/18 178/226/18 -f 203/227/18 204/228/18 205/229/18 -f 206/230/19 203/227/19 207/231/19 -f 208/232/20 206/230/20 209/233/20 -f 210/234/21 208/235/21 211/236/21 -f 212/237/22 210/234/22 213/238/22 -f 214/239/23 212/237/23 215/240/23 -f 216/241/24 214/242/24 217/243/24 -f 218/244/25 216/241/25 219/245/25 -f 220/246/26 218/244/26 221/247/26 -f 222/248/27 220/249/27 223/250/27 -f 224/251/28 222/248/28 225/252/28 -f 204/253/29 224/251/29 226/254/29 -f 227/255/1 204/256/1 203/257/1 -f 228/258/2 207/259/2 205/260/2 -f 227/255/1 203/257/1 206/261/1 -f 228/258/2 209/262/2 207/259/2 -f 227/255/1 206/261/1 208/263/1 -f 228/258/2 211/264/2 209/262/2 -f 227/255/1 208/263/1 210/265/1 -f 228/258/2 213/266/2 211/264/2 -f 227/255/1 210/265/1 212/267/1 -f 228/258/2 215/268/2 213/266/2 -f 227/255/1 212/267/1 214/269/1 -f 228/258/2 217/270/2 215/268/2 -f 227/255/1 214/269/1 216/271/1 -f 228/258/2 219/272/2 217/270/2 -f 227/255/1 216/271/1 218/273/1 -f 228/258/2 221/274/2 219/272/2 -f 227/255/1 218/273/1 220/275/1 -f 228/258/2 223/276/2 221/274/2 -f 227/255/1 220/275/1 222/277/1 -f 228/258/2 225/278/2 223/276/2 -f 227/255/1 222/277/1 224/279/1 -f 228/258/2 226/280/2 225/278/2 -f 227/255/1 224/279/1 204/256/1 -f 228/258/2 205/260/2 226/280/2 -f 229/281/2 230/282/2 231/283/2 -f 232/284/1 233/285/1 234/286/1 -f 229/281/2 231/283/2 235/287/2 -f 232/284/1 236/288/1 233/285/1 -f 229/281/2 235/287/2 237/289/2 -f 232/284/1 238/290/1 236/288/1 -f 229/281/2 237/289/2 239/291/2 -f 232/284/1 240/292/1 238/290/1 -f 229/281/2 239/291/2 241/293/2 -f 232/284/1 242/294/1 240/292/1 -f 229/281/2 241/293/2 243/295/2 -f 232/284/1 244/296/1 242/294/1 -f 229/281/2 243/295/2 245/297/2 -f 232/284/1 246/298/1 244/296/1 -f 229/281/2 245/297/2 247/299/2 -f 232/284/1 248/300/1 246/298/1 -f 229/281/2 247/299/2 249/301/2 -f 232/284/1 250/302/1 248/300/1 -f 229/281/2 249/301/2 251/303/2 -f 232/284/1 252/304/1 250/302/1 -f 229/281/2 251/303/2 253/305/2 -f 232/284/1 254/306/1 252/304/1 -f 229/281/2 253/305/2 230/282/2 -f 232/284/1 234/286/1 254/306/1 -f 234/307/29 233/308/29 231/309/29 -f 233/308/28 236/310/28 235/311/28 -f 236/310/27 238/312/27 237/313/27 -f 238/314/26 240/315/26 239/316/26 -f 240/315/25 242/317/25 241/318/25 -f 242/317/24 244/319/24 243/320/24 -f 244/321/23 246/322/23 245/323/23 -f 246/322/22 248/324/22 247/325/22 -f 248/324/21 250/326/21 249/327/21 -f 250/328/20 252/329/20 251/330/20 -f 252/329/19 254/331/19 253/332/19 -f 254/331/18 234/333/18 230/334/18 -f 255/335/2 256/336/2 257/337/2 -f 258/338/1 259/339/1 260/340/1 -f 255/335/2 257/337/2 261/341/2 -f 258/338/1 262/342/1 259/339/1 -f 255/335/2 261/341/2 263/343/2 -f 258/338/1 264/344/1 262/342/1 -f 255/335/2 263/343/2 265/345/2 -f 258/338/1 266/346/1 264/344/1 -f 255/335/2 265/345/2 267/347/2 -f 258/338/1 268/348/1 266/346/1 -f 255/335/2 267/347/2 269/349/2 -f 258/338/1 270/350/1 268/348/1 -f 255/335/2 269/349/2 271/351/2 -f 258/338/1 272/352/1 270/350/1 -f 255/335/2 271/351/2 273/353/2 -f 258/338/1 274/354/1 272/352/1 -f 255/335/2 273/353/2 275/355/2 -f 258/338/1 276/356/1 274/354/1 -f 255/335/2 275/355/2 277/357/2 -f 258/338/1 278/358/1 276/356/1 -f 255/335/2 277/357/2 279/359/2 -f 258/338/1 280/360/1 278/358/1 -f 255/335/2 279/359/2 256/336/2 -f 258/338/1 260/340/1 280/360/1 -f 260/361/29 259/362/29 257/363/29 -f 259/362/28 262/364/28 261/365/28 -f 262/364/27 264/366/27 263/367/27 -f 264/368/26 266/369/26 265/370/26 -f 266/369/25 268/371/25 267/372/25 -f 268/371/24 270/373/24 269/374/24 -f 270/375/23 272/376/23 271/377/23 -f 272/376/22 274/378/22 273/379/22 -f 274/378/21 276/380/21 275/381/21 -f 276/382/20 278/383/20 277/384/20 -f 278/383/19 280/385/19 279/386/19 -f 280/385/18 260/387/18 256/388/18 -f 281/389/18 282/390/18 283/391/18 -f 284/392/19 281/389/19 285/393/19 -f 286/394/20 284/392/20 287/395/20 -f 288/396/21 286/397/21 289/398/21 -f 290/399/22 288/396/22 291/400/22 -f 292/401/23 290/399/23 293/402/23 -f 294/403/24 292/404/24 295/405/24 -f 296/406/25 294/403/25 297/407/25 -f 298/408/26 296/406/26 299/409/26 -f 300/410/27 298/411/27 301/412/27 -f 302/413/28 300/410/28 303/414/28 -f 282/415/29 302/413/29 304/416/29 -f 305/417/1 282/418/1 281/419/1 -f 306/420/2 285/421/2 283/422/2 -f 305/417/1 281/419/1 284/423/1 -f 306/420/2 287/424/2 285/421/2 -f 305/417/1 284/423/1 286/425/1 -f 306/420/2 289/426/2 287/424/2 -f 305/417/1 286/425/1 288/427/1 -f 306/420/2 291/428/2 289/426/2 -f 305/417/1 288/427/1 290/429/1 -f 306/420/2 293/430/2 291/428/2 -f 305/417/1 290/429/1 292/431/1 -f 306/420/2 295/432/2 293/430/2 -f 305/417/1 292/431/1 294/433/1 -f 306/420/2 297/434/2 295/432/2 -f 305/417/1 294/433/1 296/435/1 -f 306/420/2 299/436/2 297/434/2 -f 305/417/1 296/435/1 298/437/1 -f 306/420/2 301/438/2 299/436/2 -f 305/417/1 298/437/1 300/439/1 -f 306/420/2 303/440/2 301/438/2 -f 305/417/1 300/439/1 302/441/1 -f 306/420/2 304/442/2 303/440/2 -f 305/417/1 302/441/1 282/418/1 -f 306/420/2 283/422/2 304/442/2 -f 149/443/30 150/444/30 307/445/30 -f 148/446/31 149/443/31 308/447/31 -f 148/446/32 309/448/32 310/449/32 -f 147/450/33 145/451/33 311/452/33 -f 147/450/34 312/453/34 313/454/34 -f 146/455/35 313/454/35 314/456/35 -f 145/451/36 140/457/36 315/458/36 -f 144/459/37 310/449/37 316/460/37 -f 143/461/38 314/456/38 317/462/38 -f 150/444/39 142/463/39 318/464/39 -f 142/463/40 135/465/40 319/466/40 -f 141/467/41 316/460/41 320/468/41 -f 140/457/42 138/469/42 321/470/42 -f 139/471/43 317/462/43 322/472/43 -f 128/473/44 323/474/44 321/470/44 -f 132/475/45 137/476/45 320/468/45 -f 130/477/46 136/478/46 322/472/46 -f 134/479/47 324/480/47 319/466/47 -f 133/481/48 325/482/48 324/480/48 -f 126/483/49 326/484/49 325/482/49 -f 131/485/50 132/475/50 327/486/50 -f 125/487/51 131/485/51 328/488/51 -f 129/489/52 130/477/52 329/490/52 -f 123/491/53 129/489/53 330/492/53 -f 127/493/54 331/494/54 323/474/54 -f 124/495/55 332/496/55 331/494/55 -f 126/483/56 125/487/56 333/497/56 -f 123/491/57 334/498/57 332/496/57 -f 335/499/2 336/500/2 337/501/2 -f 338/502/2 337/503/2 339/504/2 -f 339/505/2 340/506/2 341/507/2 -f 342/508/1 343/509/1 344/510/1 -f 344/511/1 345/512/1 346/513/1 -f 345/514/1 347/515/1 348/516/1 -f 349/517/1 350/518/1 343/519/1 -f 340/520/2 351/521/2 352/522/2 -f 347/523/1 353/524/1 354/525/1 -f 355/526/2 356/527/2 336/528/2 -f 357/529/2 358/530/2 356/531/2 -f 351/532/2 359/533/2 360/534/2 -f 361/535/1 362/536/1 350/537/1 -f 353/538/1 363/539/1 364/540/1 -f 365/541/1 362/542/1 361/543/1 -f 360/544/2 359/545/2 366/546/2 -f 364/547/1 363/548/1 367/549/1 -f 368/550/2 358/551/2 357/552/2 -f 369/553/2 368/554/2 370/555/2 -f 371/556/2 369/557/2 372/558/2 -f 373/559/2 366/560/2 374/561/2 -f 375/562/2 374/563/2 376/564/2 -f 377/565/1 367/566/1 378/567/1 -f 379/568/1 378/569/1 380/570/1 -f 381/571/1 365/572/1 382/573/1 -f 383/574/1 381/575/1 384/576/1 -f 385/577/2 376/578/2 371/579/2 -f 380/580/1 383/581/1 386/582/1 -f 387/583/58 386/584/58 332/585/58 -f 385/586/59 388/587/59 326/588/59 -f 386/589/60 384/590/60 331/591/60 -f 384/590/61 382/592/61 323/593/61 -f 379/594/62 387/595/62 334/596/62 -f 377/597/63 379/598/63 330/599/63 -f 375/600/60 385/601/60 333/602/60 -f 373/603/61 375/604/61 328/605/61 -f 388/606/62 372/607/62 325/608/62 -f 372/607/63 370/609/63 324/610/63 -f 370/609/64 357/611/64 319/612/64 -f 364/613/64 377/614/64 329/615/64 -f 360/616/65 373/617/65 327/618/65 -f 382/592/65 361/619/65 321/620/65 -f 354/621/66 364/622/66 322/623/66 -f 361/619/67 349/624/67 315/625/67 -f 352/626/67 360/627/67 320/628/67 -f 357/611/66 355/629/66 318/630/66 -f 318/630/68 355/629/68 335/631/68 -f 314/632/68 348/633/68 354/634/68 -f 341/635/69 352/636/69 316/637/69 -f 349/624/69 342/638/69 311/639/69 -f 346/640/70 348/641/70 314/632/70 -f 312/642/71 389/643/71 346/644/71 -f 342/645/72 389/646/72 312/647/72 -f 390/648/72 341/649/72 310/650/72 -f 308/651/71 338/652/71 390/653/71 -f 335/631/73 338/654/73 308/655/73 -f 70/4/1 67/1/1 69/3/1 -f 72/6/1 67/1/1 71/5/1 -f 83/17/1 72/6/1 73/7/1 -f 78/12/2 74/8/2 76/10/2 -f 79/13/2 77/11/2 78/12/2 -f 85/19/2 77/11/2 80/14/2 -f 76/10/2 75/9/2 82/16/2 -f 91/25/1 83/17/1 84/18/1 -f 95/29/2 85/19/2 86/20/2 -f 69/3/1 68/2/1 88/22/1 -f 88/22/1 87/21/1 90/24/1 -f 100/34/1 91/25/1 92/26/1 -f 82/16/2 81/15/2 94/28/2 -f 102/36/2 95/29/2 96/30/2 -f 93/27/2 97/31/2 94/28/2 -f 110/44/1 99/33/1 92/26/1 -f 114/48/2 101/35/2 96/30/2 -f 89/23/1 103/37/1 90/24/1 -f 103/37/1 105/39/1 104/38/1 -f 105/39/1 107/41/1 106/40/1 -f 112/46/1 109/43/1 110/44/1 -f 121/55/1 111/45/1 112/46/1 -f 116/50/2 113/47/2 114/48/2 -f 122/56/2 115/49/2 116/50/2 -f 97/31/2 117/51/2 98/32/2 -f 117/51/2 119/53/2 118/52/2 -f 108/42/1 107/41/1 121/55/1 -f 119/53/2 115/49/2 120/54/2 -f 120/656/3 122/57/3 124/59/3 -f 108/657/3 121/60/3 126/62/3 -f 118/66/4 120/63/4 127/65/4 -f 98/89/5 118/66/5 128/67/5 -f 122/658/6 116/68/6 123/70/6 -f 116/68/8 114/71/8 129/69/8 -f 121/659/4 112/73/4 125/75/4 -f 112/73/5 110/76/5 131/74/5 -f 133/81/6 106/78/6 126/80/6 -f 104/83/7 106/78/7 134/82/7 -f 90/97/9 104/83/9 135/84/9 -f 114/71/9 96/85/9 130/72/9 -f 110/76/10 92/87/10 132/77/10 -f 94/93/10 98/89/10 138/90/10 -f 96/85/11 86/91/11 136/86/11 -f 82/105/12 94/93/12 140/94/12 -f 92/87/12 84/95/12 137/88/12 -f 88/100/11 90/97/11 142/98/11 -f 150/119/13 69/99/13 142/98/13 -f 86/91/13 80/101/13 139/92/13 -f 84/95/14 73/103/14 141/96/14 -f 76/660/14 82/105/14 145/106/14 -f 80/101/15 79/107/15 143/102/15 -f 146/661/16 79/109/16 147/111/16 -f 78/110/17 76/112/17 147/111/17 -f 73/662/17 71/114/17 144/116/17 -f 148/115/16 71/114/16 149/118/16 -f 70/663/15 69/99/15 149/120/15 -f 155/125/18 151/121/18 153/123/18 -f 157/127/19 154/124/19 155/125/19 -f 159/664/20 156/126/20 157/127/20 -f 161/132/21 158/128/21 159/130/21 -f 163/134/22 160/131/22 161/132/22 -f 165/665/23 162/133/23 163/134/23 -f 167/139/24 164/135/24 165/137/24 -f 169/141/25 166/138/25 167/139/25 -f 171/666/26 168/140/26 169/141/26 -f 173/146/27 170/142/27 171/144/27 -f 174/148/28 172/145/28 173/146/28 -f 153/667/29 152/147/29 174/148/29 -f 178/668/29 182/199/29 179/201/29 -f 179/201/28 181/200/28 183/203/28 -f 183/203/27 184/202/27 185/205/27 -f 185/669/26 186/206/26 187/208/26 -f 187/208/25 188/207/25 189/210/25 -f 189/210/24 190/209/24 191/212/24 -f 191/670/23 192/213/23 193/215/23 -f 193/215/22 194/214/22 195/217/22 -f 195/217/21 196/216/21 197/219/21 -f 197/671/20 198/220/20 199/222/20 -f 199/222/19 200/221/19 201/224/19 -f 201/224/18 202/223/18 178/226/18 -f 207/231/18 203/227/18 205/229/18 -f 209/233/19 206/230/19 207/231/19 -f 211/672/20 208/232/20 209/233/20 -f 213/238/21 210/234/21 211/236/21 -f 215/240/22 212/237/22 213/238/22 -f 217/673/23 214/239/23 215/240/23 -f 219/245/24 216/241/24 217/243/24 -f 221/247/25 218/244/25 219/245/25 -f 223/674/26 220/246/26 221/247/26 -f 225/252/27 222/248/27 223/250/27 -f 226/254/28 224/251/28 225/252/28 -f 205/675/29 204/253/29 226/254/29 -f 230/676/29 234/307/29 231/309/29 -f 231/309/28 233/308/28 235/311/28 -f 235/311/27 236/310/27 237/313/27 -f 237/615/26 238/314/26 239/316/26 -f 239/316/25 240/315/25 241/318/25 -f 241/318/24 242/317/24 243/320/24 -f 243/677/23 244/321/23 245/323/23 -f 245/323/22 246/322/22 247/325/22 -f 247/325/21 248/324/21 249/327/21 -f 249/678/20 250/328/20 251/330/20 -f 251/330/19 252/329/19 253/332/19 -f 253/332/18 254/331/18 230/334/18 -f 256/679/29 260/361/29 257/363/29 -f 257/363/28 259/362/28 261/365/28 -f 261/365/27 262/364/27 263/367/27 -f 263/680/26 264/368/26 265/370/26 -f 265/370/25 266/369/25 267/372/25 -f 267/372/24 268/371/24 269/374/24 -f 269/681/23 270/375/23 271/377/23 -f 271/377/22 272/376/22 273/379/22 -f 273/379/21 274/378/21 275/381/21 -f 275/682/20 276/382/20 277/384/20 -f 277/384/19 278/383/19 279/386/19 -f 279/386/18 280/385/18 256/388/18 -f 285/393/18 281/389/18 283/391/18 -f 287/395/19 284/392/19 285/393/19 -f 289/683/20 286/394/20 287/395/20 -f 291/400/21 288/396/21 289/398/21 -f 293/402/22 290/399/22 291/400/22 -f 295/684/23 292/401/23 293/402/23 -f 297/407/24 294/403/24 295/405/24 -f 299/409/25 296/406/25 297/407/25 -f 301/685/26 298/408/26 299/409/26 -f 303/414/27 300/410/27 301/412/27 -f 304/416/28 302/413/28 303/414/28 -f 283/686/29 282/415/29 304/416/29 -f 308/447/74 149/443/74 307/445/74 -f 309/448/75 148/446/75 308/447/75 -f 144/459/76 148/446/76 310/449/76 -f 312/453/77 147/450/77 311/452/77 -f 146/455/78 147/450/78 313/454/78 -f 143/461/79 146/455/79 314/456/79 -f 311/452/80 145/451/80 315/458/80 -f 141/467/81 144/459/81 316/460/81 -f 139/471/82 143/461/82 317/462/82 -f 307/445/83 150/444/83 318/464/83 -f 318/464/84 142/463/84 319/466/84 -f 137/476/85 141/467/85 320/468/85 -f 315/458/86 140/457/86 321/470/86 -f 136/478/87 139/471/87 322/472/87 -f 138/469/88 128/473/88 321/470/88 -f 327/486/89 132/475/89 320/468/89 -f 329/490/90 130/477/90 322/472/90 -f 135/465/91 134/479/91 319/466/91 -f 134/479/92 133/481/92 324/480/92 -f 133/481/93 126/483/93 325/482/93 -f 328/488/94 131/485/94 327/486/94 -f 333/497/95 125/487/95 328/488/95 -f 330/492/96 129/489/96 329/490/96 -f 334/498/97 123/491/97 330/492/97 -f 128/473/98 127/493/98 323/474/98 -f 127/493/99 124/495/99 331/494/99 -f 326/484/100 126/483/100 333/497/100 -f 124/495/101 123/491/101 332/496/101 -f 338/687/2 335/499/2 337/501/2 -f 390/688/2 338/502/2 339/504/2 -f 390/689/2 339/505/2 341/507/2 -f 389/690/1 342/508/1 344/510/1 -f 389/691/1 344/511/1 346/513/1 -f 346/692/1 345/514/1 348/516/1 -f 342/693/1 349/517/1 343/519/1 -f 341/694/2 340/520/2 352/522/2 -f 348/695/1 347/523/1 354/525/1 -f 335/696/2 355/526/2 336/528/2 -f 355/697/2 357/529/2 356/531/2 -f 352/698/2 351/532/2 360/534/2 -f 349/699/1 361/535/1 350/537/1 -f 354/700/1 353/538/1 364/540/1 -f 382/701/1 365/541/1 361/543/1 -f 373/702/2 360/544/2 366/546/2 -f 377/703/1 364/547/1 367/549/1 -f 370/704/2 368/550/2 357/552/2 -f 372/705/2 369/553/2 370/555/2 -f 388/706/2 371/556/2 372/558/2 -f 375/707/2 373/559/2 374/561/2 -f 385/708/2 375/562/2 376/564/2 -f 379/709/1 377/565/1 378/567/1 -f 387/710/1 379/568/1 380/570/1 -f 384/711/1 381/571/1 382/573/1 -f 386/712/1 383/574/1 384/576/1 -f 388/713/2 385/577/2 371/579/2 -f 387/714/1 380/580/1 386/582/1 -f 334/715/59 387/583/59 332/585/59 -f 333/716/59 385/586/59 326/588/59 -f 332/717/60 386/589/60 331/591/60 -f 331/591/61 384/590/61 323/593/61 -f 330/718/62 379/594/62 334/596/62 -f 329/719/63 377/597/63 330/599/63 -f 328/720/60 375/600/60 333/602/60 -f 327/721/102 373/603/102 328/605/102 -f 326/722/62 388/606/62 325/608/62 -f 325/608/63 372/607/63 324/610/63 -f 324/610/64 370/609/64 319/612/64 -f 322/723/64 364/613/64 329/615/64 -f 320/724/65 360/616/65 327/618/65 -f 323/593/65 382/592/65 321/620/65 -f 317/725/66 354/621/66 322/623/66 -f 321/620/67 361/619/67 315/625/67 -f 316/726/67 352/626/67 320/628/67 -f 319/612/66 357/611/66 318/630/66 -f 307/727/68 318/630/68 335/631/68 -f 317/728/68 314/632/68 354/634/68 -f 310/729/69 341/635/69 316/637/69 -f 315/625/69 349/624/69 311/639/69 -f 313/730/73 346/640/73 314/632/73 -f 313/731/71 312/642/71 346/644/71 -f 311/732/72 342/645/72 312/647/72 -f 309/733/72 390/648/72 310/650/72 -f 309/734/71 308/651/71 390/653/71 -f 307/727/73 335/631/73 308/655/73 -s 1 -f 119/735/103 111/736/103 107/737/104 -f 117/738/105 109/739/105 111/740/103 -f 97/741/106 99/742/106 109/739/105 -f 101/743/107 113/744/108 105/745/108 -f 115/746/104 107/747/104 105/745/108 -f 103/748/107 89/749/109 102/750/109 -f 99/742/106 97/741/106 93/751/110 -f 93/751/110 81/752/111 91/753/111 -f 89/749/109 87/754/112 95/755/112 -f 95/755/112 87/754/112 68/756/113 -f 81/752/111 75/757/114 83/758/114 -f 75/759/114 74/760/115 72/761/115 -f 68/756/113 67/762/116 77/763/116 -f 77/764/116 67/765/116 72/761/115 -f 383/766/117 380/767/118 371/768/118 -f 381/769/119 383/770/117 376/771/117 -f 365/772/120 381/773/119 374/774/119 -f 369/775/121 378/776/121 367/777/122 -f 380/778/118 378/779/121 369/780/121 -f 358/781/123 368/782/122 367/783/122 -f 362/784/124 365/785/120 366/786/120 -f 362/787/124 359/788/124 351/789/125 -f 358/728/123 363/790/123 353/791/126 -f 336/792/127 356/793/126 353/794/126 -f 350/795/125 351/796/125 340/797/128 -f 343/798/128 340/799/128 339/800/129 -f 336/801/127 347/802/127 345/803/130 -f 339/804/129 337/805/130 345/806/130 -f 115/807/104 119/735/103 107/737/104 -f 119/808/103 117/738/105 111/740/103 -f 117/738/105 97/741/106 109/739/105 -f 103/748/107 101/743/107 105/745/108 -f 113/744/108 115/746/104 105/745/108 -f 101/743/107 103/748/107 102/750/109 -f 100/809/110 99/742/106 93/751/110 -f 100/809/110 93/751/110 91/753/111 -f 102/750/109 89/749/109 95/755/112 -f 85/810/113 95/755/112 68/756/113 -f 91/753/111 81/752/111 83/758/114 -f 83/811/114 75/759/114 72/761/115 -f 85/810/113 68/756/113 77/763/116 -f 74/760/115 77/764/116 72/761/115 -f 376/812/117 383/766/117 371/768/118 -f 374/813/119 381/769/119 376/771/117 -f 366/814/120 365/772/120 374/774/119 -f 368/815/122 369/775/121 367/777/122 -f 371/816/118 380/778/118 369/780/121 -f 363/817/123 358/781/123 367/783/122 -f 359/818/124 362/784/124 366/786/120 -f 350/819/125 362/787/124 351/789/125 -f 356/820/126 358/728/123 353/791/126 -f 347/821/127 336/792/127 353/794/126 -f 343/822/128 350/795/125 340/797/128 -f 344/823/129 343/798/128 339/800/129 -f 337/824/130 336/801/127 345/803/130 -f 344/666/129 339/804/129 345/806/130 -usemtl Tank_TTread.jpg -s off -f 2/825/2 3/826/2 4/827/2 -f 5/828/1 6/829/1 7/830/1 -f 2/825/2 4/827/2 8/831/2 -f 5/828/1 9/832/1 6/829/1 -f 2/825/2 8/831/2 10/833/2 -f 5/828/1 11/834/1 9/832/1 -f 2/825/2 10/833/2 12/835/2 -f 5/828/1 13/836/1 11/834/1 -f 2/825/2 12/835/2 14/837/2 -f 5/828/1 15/838/1 13/836/1 -f 2/825/2 14/837/2 16/839/2 -f 5/828/1 17/840/1 15/838/1 -f 2/825/2 16/839/2 18/841/2 -f 5/828/1 19/842/1 17/840/1 -f 2/825/2 18/841/2 20/843/2 -f 5/828/1 21/844/1 19/842/1 -f 2/825/2 20/843/2 22/845/2 -f 5/828/1 23/846/1 21/844/1 -f 2/825/2 22/845/2 24/847/2 -f 5/828/1 25/848/1 23/846/1 -f 2/825/2 24/847/2 26/849/2 -f 5/828/1 27/850/1 25/848/1 -f 2/825/2 26/849/2 3/826/2 -f 5/828/1 7/830/1 27/850/1 -f 7/851/29 6/852/29 4/853/29 -f 6/852/28 9/854/28 8/855/28 -f 9/854/27 11/856/27 10/857/27 -f 11/858/26 13/859/26 12/860/26 -f 13/859/25 15/861/25 14/862/25 -f 15/861/24 17/863/24 16/864/24 -f 17/865/23 19/866/23 18/867/23 -f 19/866/22 21/868/22 20/869/22 -f 21/868/21 23/870/21 22/871/21 -f 23/872/20 25/873/20 24/874/20 -f 25/873/19 27/875/19 26/876/19 -f 27/875/18 7/877/18 3/878/18 -f 28/879/18 29/880/18 30/881/18 -f 31/882/19 28/879/19 32/883/19 -f 33/884/20 31/882/20 34/885/20 -f 35/886/131 33/735/131 36/887/131 -f 37/888/132 35/886/132 38/889/132 -f 39/890/23 37/888/23 40/891/23 -f 41/892/24 39/893/24 42/778/24 -f 43/894/25 41/892/25 44/895/25 -f 45/896/26 43/894/26 46/897/26 -f 47/898/27 45/899/27 48/900/27 -f 49/901/133 47/898/133 50/902/133 -f 29/736/29 49/901/29 51/903/29 -f 52/904/1 29/905/1 28/906/1 -f 53/907/2 32/908/2 30/905/2 -f 52/904/1 28/906/1 31/909/1 -f 53/907/2 34/910/2 32/908/2 -f 52/904/1 31/909/1 33/911/1 -f 53/907/2 36/912/2 34/910/2 -f 52/904/1 33/911/1 35/913/1 -f 53/907/2 38/914/2 36/912/2 -f 52/904/1 35/913/1 37/915/1 -f 53/907/2 40/916/2 38/914/2 -f 52/904/1 37/915/1 39/917/1 -f 53/907/2 42/918/2 40/916/2 -f 52/904/1 39/917/1 41/919/1 -f 53/907/2 44/920/2 42/918/2 -f 52/904/1 41/919/1 43/921/1 -f 53/907/2 46/922/2 44/920/2 -f 52/904/1 43/921/1 45/923/1 -f 53/907/2 48/924/2 46/922/2 -f 52/904/1 45/923/1 47/925/1 -f 53/907/2 50/926/2 48/924/2 -f 52/904/1 47/925/1 49/927/1 -f 53/907/2 51/928/2 50/926/2 -f 52/904/1 49/927/1 29/905/1 -f 53/907/2 30/905/2 51/928/2 -f 3/929/29 7/851/29 4/853/29 -f 4/853/28 6/852/28 8/855/28 -f 8/855/27 9/854/27 10/857/27 -f 10/930/26 11/858/26 12/860/26 -f 12/860/25 13/859/25 14/862/25 -f 14/862/24 15/861/24 16/864/24 -f 16/931/23 17/865/23 18/867/23 -f 18/867/22 19/866/22 20/869/22 -f 20/869/21 21/868/21 22/871/21 -f 22/932/20 23/872/20 24/874/20 -f 24/874/19 25/873/19 26/876/19 -f 26/876/18 27/875/18 3/878/18 -f 32/883/18 28/879/18 30/881/18 -f 34/885/19 31/882/19 32/883/19 -f 36/933/20 33/884/20 34/885/20 -f 38/889/131 35/886/131 36/887/131 -f 40/891/132 37/888/132 38/889/132 -f 42/934/23 39/890/23 40/891/23 -f 44/895/24 41/892/24 42/778/24 -f 46/897/25 43/894/25 44/895/25 -f 48/935/26 45/896/26 46/897/26 -f 50/902/27 47/898/27 48/900/27 -f 51/903/28 49/901/28 50/902/28 -f 30/936/29 29/736/29 51/903/29 -l 64 66 -l 61 62 -l 57 59 -l 57 58 -l 60 62 -l 55 56 -l 54 56 -l 64 65 diff --git a/contrib/tinks/assets/models/health.mtl b/contrib/tinks/assets/models/health.mtl deleted file mode 100644 index 31d0923167..0000000000 --- a/contrib/tinks/assets/models/health.mtl +++ /dev/null @@ -1,11 +0,0 @@ -# Blender MTL File: 'None' -# Material Count: 1 - -newmtl Material.001 -Ns 92.156863 -Ka 0.000000 0.000000 0.000000 -Kd 0.512000 0.004921 0.008399 -Ks 0.500000 0.500000 0.500000 -Ni 1.000000 -d 1.000000 -illum 2 diff --git a/contrib/tinks/assets/models/health.obj b/contrib/tinks/assets/models/health.obj deleted file mode 100644 index af58c6eb6f..0000000000 --- a/contrib/tinks/assets/models/health.obj +++ /dev/null @@ -1,105 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: '' -# www.blender.org -mtllib health.mtl -o Cube.001 -v -0.000000 0.735494 -0.445086 -v -0.000000 0.735494 -0.445086 -v -0.445086 0.735494 0.000000 -v -0.445086 1.364940 0.000000 -v -0.445086 1.364940 0.000000 -v -0.000000 1.364940 -0.445086 -v -0.000000 1.364940 0.445086 -v 0.445085 1.364940 0.890172 -v 0.890172 1.364940 0.445086 -v -0.000000 0.735494 0.445086 -v -0.000000 1.364940 -0.445086 -v -0.445086 1.364940 -0.890172 -v -0.890172 1.364940 -0.445086 -v 0.445086 0.735494 0.000000 -v 0.890172 0.735494 0.445086 -v 0.445086 0.735494 0.890172 -v 0.445086 1.364940 0.000000 -v -0.445086 0.735494 -0.890172 -v -0.890172 0.735494 -0.445086 -v -0.445086 0.735494 0.000000 -v -0.445086 1.994387 0.000000 -v -0.000000 1.994387 -0.445086 -v -0.000000 1.364940 0.445086 -v 0.445086 1.364940 0.000000 -v -0.000000 1.994387 0.445086 -v 0.445086 1.994387 0.000000 -v -0.000000 0.106047 -0.445086 -v -0.445086 0.106047 0.000000 -v -0.000000 0.735494 0.445086 -v 0.445086 0.735494 0.000000 -v 0.000000 0.106047 0.445086 -v 0.445086 0.106047 -0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 1.000000 0.000000 -vn -0.707100 -0.000000 0.707100 -vn 0.707100 0.000000 -0.707100 -vn 0.707100 0.000000 0.707100 -vn 0.000000 -1.000000 0.000000 -vn -0.707100 0.000000 -0.707100 -usemtl Material.001 -s off -f 1//1 2//1 3//1 -f 4//1 5//1 6//1 -f 7//2 8//2 9//2 -f 10//3 7//3 4//3 -f 11//2 12//2 13//2 -f 14//4 1//4 11//4 -f 15//5 9//5 8//5 -f 7//3 10//3 16//3 -f 14//4 17//4 9//4 -f 14//6 15//6 16//6 -f 13//7 12//7 18//7 -f 1//4 18//4 12//4 -f 4//3 13//3 19//3 -f 20//6 19//6 18//6 -f 5//7 21//7 22//7 -f 7//1 23//1 5//1 -f 11//1 6//1 24//1 -f 17//1 24//1 23//1 -f 22//2 21//2 25//2 -f 23//3 25//3 21//3 -f 6//4 22//4 26//4 -f 24//5 26//5 25//5 -f 2//7 27//7 28//7 -f 20//1 3//1 29//1 -f 14//1 30//1 2//1 -f 10//1 29//1 30//1 -f 31//6 28//6 27//6 -f 3//3 28//3 31//3 -f 30//4 32//4 27//4 -f 29//5 31//5 32//5 -f 20//1 1//1 3//1 -f 11//1 4//1 6//1 -f 17//2 7//2 9//2 -f 20//3 10//3 4//3 -f 4//2 11//2 13//2 -f 17//4 14//4 11//4 -f 16//5 15//5 8//5 -f 8//3 7//3 16//3 -f 15//4 14//4 9//4 -f 10//6 14//6 16//6 -f 19//7 13//7 18//7 -f 11//4 1//4 12//4 -f 20//3 4//3 19//3 -f 1//6 20//6 18//6 -f 6//7 5//7 22//7 -f 4//1 7//1 5//1 -f 17//1 11//1 24//1 -f 7//1 17//1 23//1 -f 26//2 22//2 25//2 -f 5//3 23//3 21//3 -f 24//4 6//4 26//4 -f 23//5 24//5 25//5 -f 3//7 2//7 28//7 -f 10//1 20//1 29//1 -f 1//1 14//1 2//1 -f 14//1 10//1 30//1 -f 32//6 31//6 27//6 -f 29//3 3//3 31//3 -f 2//4 30//4 27//4 -f 30//5 29//5 32//5 diff --git a/contrib/tinks/assets/models/tank-turret.mtl b/contrib/tinks/assets/models/tank-turret.mtl deleted file mode 100644 index fd0978a1a6..0000000000 --- a/contrib/tinks/assets/models/tank-turret.mtl +++ /dev/null @@ -1,12 +0,0 @@ -# Blender MTL File: 'tank.blend' -# Material Count: 1 - -newmtl Tank -Ns 182.352941 -Ka 0.000000 0.000000 0.000000 -Kd 0.500000 0.500000 0.500000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/tank.jpg diff --git a/contrib/tinks/assets/models/tank-turret.obj b/contrib/tinks/assets/models/tank-turret.obj deleted file mode 100644 index 7caa92e4d2..0000000000 --- a/contrib/tinks/assets/models/tank-turret.obj +++ /dev/null @@ -1,1524 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: 'tank.blend' -# www.blender.org -mtllib tank-turret.mtl -o TurretGood -v 0.419920 1.533520 0.039987 -v 0.578663 1.125141 0.039987 -v -0.630130 1.125141 0.039987 -v -0.550758 1.454148 0.039987 -v 0.427865 1.526375 0.407178 -v 0.427865 1.526375 -0.327203 -v 0.553872 1.125141 0.436982 -v 0.553872 1.125141 -0.357007 -v -0.646069 1.125141 0.442972 -v -0.646069 1.125141 -0.362997 -v -0.542889 1.447003 0.416144 -v -0.542889 1.447003 -0.336170 -v -0.281382 1.125141 0.039987 -v -0.281382 1.496669 0.039987 -v -0.304151 1.125141 0.570630 -v -0.304151 1.125141 -0.490655 -v -0.322006 1.489524 0.454523 -v -0.322006 1.489524 -0.374548 -v -0.031969 1.125141 0.039987 -v -0.046142 1.499503 0.039987 -v -0.015177 1.125141 0.597432 -v -0.015177 1.125141 -0.517458 -v -0.029350 1.492358 0.468231 -v -0.029350 1.492358 -0.388257 -v -0.087228 1.397759 0.501078 -v -0.087228 1.397759 -0.421104 -v -0.061692 1.161871 0.582779 -v -0.061692 1.161871 -0.502804 -v -0.284774 1.397317 0.501497 -v -0.284774 1.397317 -0.421522 -v -0.270435 1.161871 0.585677 -v -0.270435 1.161871 -0.505702 -v -0.271071 1.208782 0.598324 -v -0.271071 1.208782 -0.518349 -v -0.274696 1.406372 0.538974 -v -0.274696 1.406372 -0.458999 -v -0.083160 1.208782 0.599715 -v -0.083160 1.208782 -0.519740 -v -0.085086 1.409206 0.535606 -v -0.085086 1.409206 -0.455631 -v -0.034956 1.540087 0.468506 -v -0.034956 1.540087 -0.388532 -v -0.051748 1.540087 0.039987 -v -0.322691 1.522043 0.454798 -v -0.322691 1.522043 -0.374823 -v -0.282067 1.522043 0.039987 -v 0.427180 1.555506 0.407453 -v 0.427180 1.555506 -0.327479 -v 0.419235 1.555506 0.039987 -v 0.273347 1.125141 0.039987 -v 0.186889 1.516512 0.039987 -v 0.269348 1.125141 0.531492 -v 0.269348 1.125141 -0.451517 -v 0.199257 1.509367 0.437705 -v 0.199257 1.509367 -0.357730 -v 0.196112 1.547797 0.437980 -v 0.196112 1.547797 -0.358005 -v 0.183743 1.547797 0.039987 -v -0.565638 1.322654 0.053342 -v -0.565638 1.325310 0.039987 -v -0.565638 1.322654 0.026633 -v -0.588435 1.313211 0.026633 -v -0.590313 1.315089 0.039987 -v -0.588435 1.313211 0.053342 -v -0.597877 1.290414 0.053342 -v -0.600534 1.290414 0.039987 -v -0.597877 1.290414 0.026633 -v -0.588435 1.267617 0.026633 -v -0.590313 1.265739 0.039987 -v -0.588435 1.267617 0.053342 -v -0.565638 1.258174 0.053342 -v -0.565638 1.255518 0.039987 -v -0.565638 1.258174 0.026633 -v -0.562221 1.245399 -0.035261 -v -0.562221 1.205004 -0.028828 -v -0.563417 1.178013 -0.007662 -v -0.563417 1.168535 0.039987 -v -0.563417 1.178013 0.087636 -v -0.567005 1.205004 0.106306 -v -0.567005 1.245399 0.114991 -v -0.600698 1.259355 0.114991 -v -0.629262 1.230792 0.106306 -v -0.644759 1.211706 0.087636 -v -0.644759 1.211706 -0.007662 -v -0.624477 1.230792 -0.028828 -v -0.595914 1.259355 -0.035261 -v -0.562221 1.293048 -0.037519 -v -0.609870 1.293048 -0.035261 -v -0.650265 1.293048 -0.028828 -v -0.678452 1.293048 -0.007662 -v -0.678452 1.293048 0.087636 -v -0.655049 1.293048 0.106306 -v -0.614654 1.293048 0.114991 -v -0.600698 1.326741 0.114991 -v -0.629262 1.355305 0.106306 -v -0.644759 1.374390 0.087636 -v -0.644759 1.374390 -0.007662 -v -0.624477 1.355305 -0.028828 -v -0.595914 1.326741 -0.035261 -v -0.562221 1.340697 -0.035261 -v -0.562221 1.381092 -0.028828 -v -0.563417 1.408083 -0.007662 -v -0.563417 1.417562 0.039987 -v -0.563417 1.408083 0.087636 -v -0.567005 1.381092 0.106306 -v -0.567005 1.340697 0.114991 -v -0.567005 1.293048 0.118041 -vt 0.433371 0.806080 -vt 0.424622 0.869117 -vt 0.509902 0.922464 -vt 0.545851 0.806258 -vt 0.509959 0.690350 -vt 0.154589 0.936713 -vt 0.226463 0.884956 -vt 0.215608 0.805892 -vt 0.154952 0.674936 -vt 0.113790 0.805764 -vt 0.273567 0.889914 -vt 0.226652 0.726961 -vt 0.273698 0.722205 -vt 0.964354 0.742104 -vt 0.933621 0.646860 -vt 0.823034 0.646233 -vt 0.712842 0.636874 -vt 0.673636 0.728953 -vt 0.272324 0.805929 -vt 0.968115 0.821594 -vt 0.818713 0.741766 -vt 0.662714 0.807780 -vt 0.340573 0.902891 -vt 0.327537 0.923885 -vt 0.333952 0.988220 -vt 0.340944 0.709543 -vt 0.346258 0.612151 -vt 0.334621 0.624095 -vt 0.279125 0.915836 -vt 0.279401 0.696278 -vt 0.345541 1.000219 -vt 0.273806 0.979377 -vt 0.263070 0.624063 -vt 0.274408 0.632658 -vt 0.262430 0.987916 -vt 0.280636 0.967275 -vt 0.287673 0.924288 -vt 0.288004 0.687853 -vt 0.325261 0.975086 -vt 0.281180 0.644799 -vt 0.319422 0.931799 -vt 0.327957 0.688454 -vt 0.319860 0.680484 -vt 0.325876 0.637191 -vt 0.339491 0.893399 -vt 0.283073 0.882461 -vt 0.283161 0.729714 -vt 0.604639 0.655553 -vt 0.605846 0.593879 -vt 0.597852 0.593549 -vt 0.286541 0.806871 -vt 0.286457 0.804691 -vt 0.422362 0.806774 -vt 0.422413 0.805169 -vt 0.424693 0.743434 -vt 0.331541 0.809010 -vt 0.331303 0.803334 -vt 0.339823 0.719042 -vt 0.387115 0.891807 -vt 0.435622 0.977650 -vt 0.387479 0.720839 -vt 0.436094 0.635206 -vt 0.946527 0.898717 -vt 0.811839 0.893722 -vt 0.808056 0.977357 -vt 0.677251 0.886536 -vt 0.699615 0.965647 -vt 0.815622 0.810087 -vt 0.383817 0.884107 -vt 0.418935 0.865660 -vt 0.419038 0.746861 -vt 0.597093 0.777829 -vt 0.599721 0.716621 -vt 0.591524 0.715735 -vt 0.594009 0.654003 -vt 0.377020 0.809715 -vt 0.384186 0.728515 -vt 0.376913 0.803939 -vt 0.167670 0.807436 -vt 0.168033 0.807436 -vt 0.168033 0.807799 -vt 0.167670 0.807799 -vt 0.917112 0.975485 -vt 0.589038 0.777465 -vn 0.954300 0.298600 -0.014800 -vn 0.930500 0.361700 -0.058100 -vn -0.951300 0.307100 0.025700 -vn -0.971400 0.234300 0.038400 -vn -0.196200 0.143700 0.970000 -vn -0.196200 0.143700 -0.970000 -vn -0.000000 -1.000000 -0.000000 -vn -0.155900 0.987800 0.001700 -vn -0.192800 0.981000 -0.022700 -vn 0.001100 0.327400 0.944900 -vn -0.036200 0.330400 -0.943100 -vn -0.046300 0.438500 0.897500 -vn -0.046300 0.438500 -0.897500 -vn 0.012800 0.384500 0.923000 -vn -0.087900 -0.307500 -0.947500 -vn -0.587000 0.219500 0.779300 -vn -0.587000 0.219500 -0.779300 -vn -0.999800 -0.015800 0.008400 -vn -0.967100 0.031400 -0.252500 -vn -0.007000 -0.342400 0.939500 -vn 0.013400 -0.260100 -0.965500 -vn -0.018600 0.973000 -0.230100 -vn -0.002800 0.949200 0.314500 -vn 0.993200 0.077300 -0.087200 -vn 0.993200 0.077300 0.087200 -vn -0.007100 0.287500 0.957700 -vn 0.012400 0.304700 -0.952400 -vn -0.046900 -0.011300 0.998800 -vn -0.046700 -0.009400 -0.998900 -vn 0.000000 0.000000 -1.000000 -vn -0.995000 -0.020100 -0.097400 -vn -0.994800 -0.026800 0.098000 -vn 0.999300 0.031100 -0.021000 -vn 0.999300 0.031100 0.021000 -vn -0.062700 0.998000 0.002500 -vn -0.062700 0.998000 -0.002500 -vn 0.302800 0.277800 0.911700 -vn 0.123300 0.112000 -0.986000 -vn 0.213000 0.331600 0.919100 -vn 0.109400 0.254500 -0.960900 -vn 0.130900 0.003600 0.991400 -vn 0.131600 0.009700 -0.991200 -vn 0.132800 -0.006200 0.991100 -vn 0.132800 -0.006200 -0.991100 -vn -0.032700 0.999500 0.001000 -vn -0.032700 0.999500 -0.001000 -vn -0.032700 0.999500 0.001300 -vn -0.032700 0.999500 -0.001300 -vn -0.999700 0.024100 0.004800 -vn -0.999700 0.024100 -0.004800 -vn -0.153900 0.371500 0.915600 -vn -0.153900 0.371500 -0.915600 -vn -0.382300 0.158400 -0.910400 -vn -0.382300 0.158400 0.910400 -vn -0.390900 -0.161900 0.906100 -vn -0.390900 -0.161900 -0.906100 -vn -0.162300 -0.391900 -0.905600 -vn -0.999700 -0.025500 0.005100 -vn -0.999700 -0.025500 -0.005100 -vn -0.162300 -0.391900 0.905600 -vn 0.930500 0.361700 0.058100 -vn 0.954300 0.298600 0.014800 -vn -0.971400 0.234300 -0.038400 -vn -0.951300 0.307100 -0.025700 -vn -0.336700 0.270900 0.901800 -vn -0.336700 0.270900 -0.901800 -vn -0.192800 0.981000 0.022700 -vn -0.155900 0.987800 -0.001700 -vn -0.036200 0.330400 0.943100 -vn 0.001100 0.327400 -0.944900 -vn 0.001300 0.327300 0.944900 -vn 0.001300 0.327300 -0.944900 -vn -0.087900 -0.307500 0.947500 -vn 0.012800 0.384500 -0.923000 -vn -0.387700 0.289300 0.875200 -vn -0.387700 0.289300 -0.875200 -vn -0.967100 0.031400 0.252500 -vn -0.999800 -0.015800 -0.008400 -vn 0.013400 -0.260100 0.965500 -vn -0.007000 -0.342400 -0.939500 -vn -0.002800 0.949200 -0.314500 -vn -0.018600 0.973000 0.230100 -vn 0.821600 0.180800 0.540600 -vn 0.821600 0.180800 -0.540600 -vn 0.012400 0.304700 0.952400 -vn -0.007100 0.287500 -0.957700 -vn -0.046700 -0.009400 0.998900 -vn -0.046900 -0.011300 -0.998800 -vn -0.994800 -0.026800 -0.098000 -vn -0.995000 -0.020100 0.097400 -vn 0.999500 0.023700 -0.021600 -vn 0.999500 0.023700 0.021600 -vn -0.078100 0.996900 -0.007700 -vn -0.078100 0.996900 0.007700 -vn 0.123300 0.112000 0.986000 -vn 0.302800 0.277800 -0.911700 -vn 0.109400 0.254500 0.960900 -vn 0.213000 0.331600 -0.919100 -vn 0.131600 0.009700 0.991200 -vn 0.130900 0.003600 -0.991400 -vn -0.033300 0.999400 0.000700 -vn -0.033300 0.999400 -0.000700 -vn -0.033200 0.999400 0.001000 -vn -0.033200 0.999400 -0.001000 -vn -0.376400 -0.908700 -0.180700 -vn -0.382700 -0.923900 0.000000 -vn -0.707100 -0.707100 0.000000 -vn -0.376400 -0.908700 0.180700 -vn -0.693500 -0.693500 0.195100 -vn -0.980800 0.000000 0.195100 -vn -0.693500 -0.693500 -0.195100 -vn -1.000000 0.000000 0.000000 -vn -0.980800 0.000000 -0.195100 -vn -0.707100 0.707100 0.000000 -vn -0.693500 0.693500 0.195100 -vn -0.376400 0.908700 0.180700 -vn -0.382700 0.923900 0.000000 -vn -0.693500 0.693500 -0.195100 -vn -0.033500 -0.000000 -0.999400 -vn -0.048000 -0.115900 -0.992100 -vn -0.082100 -0.082100 -0.993200 -vn -0.180500 -0.435800 -0.881800 -vn -0.245000 -0.591500 -0.768100 -vn -0.429900 -0.426000 -0.796100 -vn -0.237700 -0.573700 0.783800 -vn -0.185600 -0.448000 0.874500 -vn -0.334200 -0.319200 0.886700 -vn -0.064200 -0.155100 0.985800 -vn -0.109900 -0.109900 0.987800 -vn -0.045200 0.000000 0.999000 -vn -0.155400 0.000000 0.987800 -vn -0.421900 -0.435300 0.795300 -vn -0.472500 0.000000 0.881300 -vn -0.310300 -0.314700 -0.897000 -vn -0.600500 -0.000000 -0.799600 -vn -0.116100 0.000000 -0.993200 -vn -0.082100 0.082100 -0.993200 -vn -0.438700 0.000000 -0.898600 -vn -0.310300 0.314700 -0.897000 -vn -0.421900 0.435300 0.795300 -vn -0.623600 -0.000000 0.781700 -vn -0.334200 0.319200 0.886700 -vn -0.109900 0.109900 0.987800 -vn -0.064200 0.155100 0.985800 -vn -0.185600 0.448100 0.874500 -vn -0.237700 0.573800 0.783800 -vn -0.180500 0.435800 -0.881800 -vn -0.429900 0.426000 -0.796100 -vn -0.048000 0.115900 -0.992100 -vn -0.376400 0.908700 -0.180700 -vn -0.245000 0.591500 -0.768200 -usemtl Tank -s off -f 1/1/1 5/2/1 7/3/1 -f 1/1/2 2/4/2 8/5/2 -f 9/6/3 11/7/3 4/8/3 -f 10/9/4 3/10/4 4/8/4 -f 17/11/5 11/7/5 9/6/5 -f 10/9/6 12/12/6 18/13/6 -f 15/14/7 9/15/7 3/16/7 -f 3/16/7 10/17/7 16/18/7 -f 17/11/8 14/19/8 4/8/8 -f 18/13/9 12/12/9 4/8/9 -f 21/20/7 15/14/7 13/21/7 -f 13/21/7 16/18/7 22/22/7 -f 23/23/10 25/24/10 27/25/10 -f 24/26/11 22/27/11 28/28/11 -f 23/23/12 17/11/12 29/29/12 -f 30/30/13 18/13/13 24/26/13 -f 21/31/14 27/25/14 31/32/14 -f 22/27/15 16/33/15 32/34/15 -f 17/11/16 15/35/16 31/32/16 -f 32/34/17 16/33/17 18/13/17 -f 31/32/18 33/36/18 35/37/18 -f 32/34/19 30/30/19 36/38/19 -f 27/25/20 37/39/20 33/36/20 -f 28/28/21 32/34/21 34/40/21 -f 29/29/22 35/37/22 39/41/22 -f 30/30/23 26/42/23 40/43/23 -f 27/25/24 25/24/24 39/41/24 -f 40/43/25 26/42/25 28/28/25 -f 35/37/26 33/36/26 37/39/26 -f 36/38/27 40/43/27 38/44/27 -f 23/23/28 41/45/28 44/46/28 -f 24/26/29 18/13/29 45/47/29 -f 20/48/30 14/49/30 46/50/30 -f 17/11/31 44/46/31 46/51/31 -f 18/13/32 14/19/32 46/52/32 -f 5/2/33 1/1/33 49/53/33 -f 49/54/34 1/1/34 6/55/34 -f 44/46/35 41/45/35 43/56/35 -f 43/57/36 42/58/36 45/47/36 -f 54/59/37 52/60/37 7/3/37 -f 55/61/38 6/55/38 8/5/38 -f 23/23/39 21/31/39 52/60/39 -f 24/26/40 55/61/40 53/62/40 -f 52/63/7 50/64/7 2/65/7 -f 53/66/7 8/67/7 2/65/7 -f 21/20/7 19/68/7 50/64/7 -f 22/22/7 53/66/7 50/64/7 -f 54/59/41 56/69/41 41/45/41 -f 55/61/42 24/26/42 42/58/42 -f 54/59/43 5/2/43 47/70/43 -f 48/71/44 6/55/44 55/61/44 -f 1/72/30 51/73/30 58/74/30 -f 51/73/30 20/48/30 43/75/30 -f 49/53/45 58/76/45 56/69/45 -f 57/77/46 58/78/46 49/54/46 -f 58/76/47 43/56/47 41/45/47 -f 42/58/48 43/57/48 58/78/48 -f 59/79/49 104/80/49 103/81/49 -f 103/82/50 102/79/50 61/80/50 -f 102/82/51 97/79/51 62/80/51 -f 64/79/52 96/80/52 104/81/52 -f 96/79/53 64/80/53 65/81/53 -f 97/82/54 90/79/54 67/80/54 -f 90/82/55 84/79/55 68/80/55 -f 91/79/56 65/80/56 70/81/56 -f 78/82/57 83/79/57 70/80/57 -f 78/79/58 71/80/58 72/81/58 -f 76/82/59 77/79/59 72/80/59 -f 76/79/60 73/80/60 68/81/60 -f 2/4/61 1/1/61 7/3/61 -f 6/55/62 1/1/62 8/5/62 -f 3/10/63 9/6/63 4/8/63 -f 12/12/64 10/9/64 4/8/64 -f 15/35/65 17/11/65 9/6/65 -f 16/33/66 10/9/66 18/13/66 -f 13/21/7 15/14/7 3/16/7 -f 13/21/7 3/16/7 16/18/7 -f 11/7/67 17/11/67 4/8/67 -f 14/19/68 18/13/68 4/8/68 -f 19/68/7 21/20/7 13/21/7 -f 19/68/7 13/21/7 22/22/7 -f 21/31/69 23/23/69 27/25/69 -f 26/42/70 24/26/70 28/28/70 -f 25/24/71 23/23/71 29/29/71 -f 26/42/72 30/30/72 24/26/72 -f 15/35/73 21/31/73 31/32/73 -f 28/28/74 22/27/74 32/34/74 -f 29/29/75 17/11/75 31/32/75 -f 30/30/76 32/34/76 18/13/76 -f 29/29/77 31/32/77 35/37/77 -f 34/40/78 32/34/78 36/38/78 -f 31/32/79 27/25/79 33/36/79 -f 38/44/80 28/28/80 34/40/80 -f 25/24/81 29/29/81 39/41/81 -f 36/38/82 30/30/82 40/43/82 -f 37/39/83 27/25/83 39/41/83 -f 38/44/84 40/43/84 28/28/84 -f 39/41/85 35/37/85 37/39/85 -f 34/40/86 36/38/86 38/44/86 -f 17/11/87 23/23/87 44/46/87 -f 42/58/88 24/26/88 45/47/88 -f 43/75/30 20/48/30 46/50/30 -f 14/19/89 17/11/89 46/51/89 -f 45/47/90 18/13/90 46/52/90 -f 47/70/91 5/2/91 49/53/91 -f 48/71/92 49/54/92 6/55/92 -f 46/51/93 44/46/93 43/56/93 -f 46/52/94 43/57/94 45/47/94 -f 5/2/95 54/59/95 7/3/95 -f 53/62/96 55/61/96 8/5/96 -f 54/59/97 23/23/97 52/60/97 -f 22/27/98 24/26/98 53/62/98 -f 7/83/7 52/63/7 2/65/7 -f 50/64/7 53/66/7 2/65/7 -f 52/63/7 21/20/7 50/64/7 -f 19/68/7 22/22/7 50/64/7 -f 23/23/99 54/59/99 41/45/99 -f 57/77/100 55/61/100 42/58/100 -f 56/69/41 54/59/41 47/70/41 -f 57/77/100 48/71/100 55/61/100 -f 49/84/30 1/72/30 58/74/30 -f 58/74/30 51/73/30 43/75/30 -f 47/70/101 49/53/101 56/69/101 -f 48/71/102 57/77/102 49/54/102 -f 56/69/103 58/76/103 41/45/103 -f 57/77/104 42/58/104 58/78/104 -f 60/82/49 59/79/49 103/81/49 -f 60/81/50 103/82/50 61/80/50 -f 61/81/51 102/82/51 62/80/51 -f 59/82/52 64/79/52 104/81/52 -f 91/82/53 96/79/53 65/81/53 -f 62/81/54 97/82/54 67/80/54 -f 67/81/55 90/82/55 68/80/55 -f 83/82/56 91/79/56 70/81/56 -f 71/81/57 78/82/57 70/80/57 -f 77/82/58 78/79/58 72/81/58 -f 73/81/59 76/82/59 72/80/59 -f 84/82/60 76/79/60 68/81/60 -s 1 -f 73/79/105 72/80/106 69/81/107 -f 72/79/106 71/80/108 70/81/109 -f 69/79/107 70/80/109 65/81/110 -f 68/79/111 69/80/107 66/81/112 -f 67/79/113 66/80/112 63/81/114 -f 63/82/114 66/79/112 65/80/110 -f 64/82/115 59/79/116 60/80/117 -f 62/79/118 63/80/114 60/81/117 -f 87/82/119 74/79/120 86/80/121 -f 86/82/121 74/79/120 75/80/122 -f 75/79/122 76/80/123 84/81/124 -f 78/79/125 79/80/126 82/81/127 -f 79/79/126 80/80/128 81/81/129 -f 81/82/129 80/79/128 107/80/130 -f 93/82/131 81/79/129 107/80/130 -f 82/79/127 81/80/129 93/81/131 -f 83/79/132 82/80/127 92/81/133 -f 85/79/134 84/80/124 90/81/135 -f 88/82/136 86/79/121 85/80/134 -f 87/82/119 86/79/121 88/80/136 -f 87/82/119 88/79/136 99/80/137 -f 99/82/137 88/79/136 89/80/138 -f 98/82/139 89/79/138 90/80/135 -f 96/82/140 91/79/141 92/80/133 -f 95/82/142 92/79/133 93/80/131 -f 94/82/143 93/79/131 107/80/130 -f 106/82/144 94/79/143 107/80/130 -f 105/82/145 95/79/142 94/80/143 -f 104/82/146 96/79/140 95/80/142 -f 101/82/147 98/79/139 97/80/148 -f 99/79/137 98/80/139 101/81/147 -f 87/82/119 99/79/137 100/80/149 -f 68/82/111 73/79/105 69/81/107 -f 69/82/107 72/79/106 70/81/109 -f 66/82/112 69/79/107 65/81/110 -f 67/82/113 68/79/111 66/81/112 -f 62/82/118 67/79/113 63/81/114 -f 64/81/115 63/82/114 65/80/110 -f 63/81/114 64/82/115 60/80/117 -f 61/82/150 62/79/118 60/81/117 -f 85/81/134 86/82/121 75/80/122 -f 85/82/134 75/79/122 84/81/124 -f 83/82/132 78/79/125 82/81/127 -f 82/82/127 79/79/126 81/81/129 -f 92/82/133 82/79/127 93/81/131 -f 91/82/141 83/79/132 92/81/133 -f 89/82/138 85/79/134 90/81/135 -f 89/81/138 88/82/136 85/80/134 -f 98/81/139 99/82/137 89/80/138 -f 97/81/148 98/82/139 90/80/135 -f 95/81/142 96/82/140 92/80/133 -f 94/81/143 95/82/142 93/80/131 -f 106/81/144 105/82/145 94/80/143 -f 105/81/145 104/82/146 95/80/142 -f 102/81/151 101/82/147 97/80/148 -f 100/82/149 99/79/137 101/81/147 -o GunGood -v -0.746743 1.269260 0.001090 -v -0.746743 1.251414 -0.010835 -v -0.746743 1.230363 -0.015022 -v -0.746743 1.209312 -0.010835 -v -0.746743 1.191465 0.001090 -v -0.746743 1.179541 0.018936 -v -0.746743 1.175353 0.039987 -v -0.746743 1.179541 0.061039 -v -0.746743 1.191465 0.078885 -v -0.746743 1.209312 0.090810 -v -0.746743 1.230363 0.094997 -v -0.746743 1.251414 0.090810 -v -0.746743 1.269260 0.078885 -v -0.746743 1.281185 0.061039 -v -0.746743 1.285372 0.039987 -v -0.746743 1.281185 0.018936 -v -0.541104 1.269260 0.001090 -v -0.541104 1.251414 -0.010835 -v -0.541104 1.230363 -0.015022 -v -0.541104 1.209311 -0.010835 -v -0.541104 1.191465 0.001090 -v -0.541104 1.179541 0.018936 -v -0.541104 1.175353 0.039987 -v -0.541104 1.179541 0.061039 -v -0.541104 1.191465 0.078885 -v -0.541104 1.209312 0.090810 -v -0.541104 1.230363 0.094997 -v -0.541104 1.251414 0.090810 -v -0.541104 1.269260 0.078885 -v -0.541104 1.281185 0.061038 -v -0.541104 1.285372 0.039987 -v -0.541104 1.281185 0.018936 -v -0.765867 1.268869 0.024038 -v -0.765867 1.272041 0.039987 -v -0.765867 1.268869 0.055937 -v -0.765867 1.259834 0.069458 -v -0.765867 1.246312 0.078493 -v -0.765867 1.230363 0.081666 -v -0.765867 1.214413 0.078493 -v -0.765867 1.200892 0.069458 -v -0.765867 1.191857 0.055937 -v -0.765867 1.188684 0.039987 -v -0.765867 1.191857 0.024038 -v -0.765867 1.200892 0.010516 -v -0.765867 1.214413 0.001481 -v -0.765867 1.230363 -0.001691 -v -0.765867 1.246312 0.001481 -v -0.765867 1.259834 0.010516 -v -0.825971 1.259834 0.010516 -v -0.825971 1.246312 0.001481 -v -0.825971 1.230363 -0.001691 -v -0.825971 1.214413 0.001481 -v -0.825971 1.200892 0.010516 -v -0.825971 1.191857 0.024038 -v -0.825971 1.188684 0.039987 -v -0.825971 1.191857 0.055937 -v -0.825971 1.200892 0.069458 -v -0.825971 1.214413 0.078493 -v -0.825971 1.230363 0.081666 -v -0.825971 1.246312 0.078493 -v -0.825971 1.259834 0.069458 -v -0.825971 1.268869 0.055937 -v -0.825971 1.272041 0.039987 -v -0.825971 1.268869 0.024038 -v -0.826014 1.249942 0.031877 -v -0.826014 1.251555 0.039987 -v -0.826014 1.249942 0.048097 -v -0.826014 1.245348 0.054973 -v -0.826014 1.238473 0.059566 -v -0.826014 1.230363 0.061180 -v -0.826014 1.222253 0.059566 -v -0.826014 1.215378 0.054973 -v -0.826014 1.210784 0.048097 -v -0.826014 1.209171 0.039987 -v -0.826014 1.210784 0.031877 -v -0.826014 1.215378 0.025002 -v -0.826014 1.222253 0.020408 -v -0.826014 1.230363 0.018795 -v -0.826014 1.238473 0.020408 -v -0.826014 1.245348 0.025002 -v -1.489500 1.246625 0.026457 -v -1.489500 1.240417 0.022309 -v -1.489500 1.233095 0.020853 -v -1.489500 1.225772 0.022309 -v -1.489500 1.219564 0.026457 -v -1.489500 1.215417 0.032665 -v -1.489500 1.213960 0.039987 -v -1.489500 1.215417 0.047310 -v -1.489500 1.219564 0.053518 -v -1.489500 1.225772 0.057665 -v -1.489500 1.233095 0.059122 -v -1.489500 1.240417 0.057665 -v -1.489500 1.246625 0.053518 -v -1.489500 1.250773 0.047310 -v -1.489500 1.252229 0.039987 -v -1.489500 1.250773 0.032665 -v -1.489500 1.253995 0.031330 -v -1.489500 1.255717 0.039987 -v -1.489500 1.253995 0.048644 -v -1.489500 1.249091 0.055983 -v -1.489500 1.241752 0.060887 -v -1.489500 1.233095 0.062609 -v -1.489500 1.224438 0.060887 -v -1.489500 1.217098 0.055983 -v -1.489500 1.212195 0.048644 -v -1.489500 1.210473 0.039987 -v -1.489500 1.212195 0.031330 -v -1.489500 1.217098 0.023991 -v -1.489500 1.224438 0.019087 -v -1.489500 1.233095 0.017365 -v -1.489500 1.241752 0.019087 -v -1.489500 1.249091 0.023991 -v -1.545155 1.249091 0.023991 -v -1.545155 1.241752 0.019087 -v -1.545155 1.233095 0.017365 -v -1.545155 1.224438 0.019087 -v -1.545155 1.217098 0.023991 -v -1.545155 1.212195 0.031330 -v -1.545155 1.210473 0.039987 -v -1.545155 1.212195 0.048644 -v -1.545155 1.217098 0.055983 -v -1.545155 1.224438 0.060887 -v -1.545155 1.233095 0.062609 -v -1.545155 1.241752 0.060887 -v -1.545155 1.249091 0.055983 -v -1.545155 1.253995 0.048644 -v -1.545155 1.255717 0.039987 -v -1.545155 1.253995 0.031330 -v -1.545155 1.256854 0.030146 -v -1.545155 1.258812 0.039987 -v -1.545155 1.256854 0.049829 -v -1.545155 1.251279 0.058172 -v -1.545155 1.242936 0.063747 -v -1.545155 1.233095 0.065704 -v -1.545155 1.223253 0.063747 -v -1.545155 1.214910 0.058172 -v -1.545155 1.209335 0.049829 -v -1.545155 1.207378 0.039987 -v -1.545155 1.209335 0.030146 -v -1.545155 1.214910 0.021803 -v -1.545155 1.223253 0.016228 -v -1.545155 1.233095 0.014270 -v -1.545155 1.242936 0.016228 -v -1.545155 1.251279 0.021803 -v -1.562309 1.251279 0.021803 -v -1.562309 1.242936 0.016228 -v -1.562309 1.233095 0.014270 -v -1.562309 1.223253 0.016228 -v -1.562309 1.214910 0.021803 -v -1.562309 1.209335 0.030146 -v -1.562309 1.207378 0.039987 -v -1.562309 1.209335 0.049829 -v -1.562309 1.214910 0.058172 -v -1.562309 1.223253 0.063747 -v -1.562309 1.233095 0.065704 -v -1.562309 1.242936 0.063747 -v -1.562309 1.251279 0.058172 -v -1.562309 1.256854 0.049829 -v -1.562309 1.258812 0.039987 -v -1.562309 1.256854 0.030146 -v -1.562309 1.252451 0.031970 -v -1.562309 1.254046 0.039987 -v -1.562309 1.252451 0.048005 -v -1.562309 1.247909 0.054802 -v -1.562309 1.241112 0.059344 -v -1.562309 1.233095 0.060938 -v -1.562309 1.225077 0.059344 -v -1.562309 1.218280 0.054802 -v -1.562309 1.213738 0.048005 -v -1.562309 1.212144 0.039987 -v -1.562309 1.213738 0.031970 -v -1.562309 1.218280 0.025173 -v -1.562309 1.225077 0.020631 -v -1.562309 1.233095 0.019036 -v -1.562309 1.241112 0.020631 -v -1.562309 1.247909 0.025173 -v -1.633594 1.247909 0.025173 -v -1.633594 1.241112 0.020631 -v -1.633594 1.233095 0.019036 -v -1.633594 1.225077 0.020631 -v -1.633594 1.218280 0.025173 -v -1.633594 1.213738 0.031970 -v -1.633594 1.212144 0.039987 -v -1.633594 1.213738 0.048005 -v -1.633594 1.218280 0.054802 -v -1.633594 1.225077 0.059344 -v -1.633594 1.233095 0.060938 -v -1.633594 1.241112 0.059344 -v -1.633594 1.247909 0.054802 -v -1.633594 1.252451 0.048005 -v -1.633594 1.254046 0.039987 -v -1.633594 1.252451 0.031970 -v -1.633594 1.250281 0.032868 -v -1.633594 1.251697 0.039987 -v -1.633594 1.250281 0.047106 -v -1.633594 1.246249 0.053141 -v -1.633594 1.240214 0.057174 -v -1.633594 1.233095 0.058590 -v -1.633594 1.225976 0.057174 -v -1.633594 1.219941 0.053141 -v -1.633594 1.215908 0.047106 -v -1.633594 1.214492 0.039987 -v -1.633594 1.215908 0.032869 -v -1.633594 1.219941 0.026833 -v -1.633594 1.225976 0.022801 -v -1.633594 1.233095 0.021385 -v -1.633594 1.240214 0.022801 -v -1.633594 1.246249 0.026833 -v -1.570405 1.246249 0.026833 -v -1.570405 1.240214 0.022801 -v -1.570405 1.233095 0.021385 -v -1.570405 1.225976 0.022801 -v -1.570405 1.219941 0.026833 -v -1.570405 1.215908 0.032869 -v -1.570405 1.214492 0.039987 -v -1.570405 1.215908 0.047106 -v -1.570405 1.219941 0.053141 -v -1.570405 1.225976 0.057174 -v -1.570405 1.233095 0.058590 -v -1.570405 1.240214 0.057174 -v -1.570405 1.246249 0.053141 -v -1.570405 1.250281 0.047106 -v -1.570405 1.251697 0.039987 -v -1.570405 1.250281 0.032868 -vt 0.261641 0.508683 -vt 0.248339 0.510313 -vt 0.247924 0.503841 -vt 0.260991 0.501928 -vt 0.247449 0.497411 -vt 0.258992 0.488571 -vt 0.260086 0.495305 -vt 0.246040 0.491186 -vt 0.245548 0.485012 -vt 0.255462 0.475074 -vt 0.257446 0.481940 -vt 0.252332 0.467412 -vt 0.243979 0.479425 -vt 0.256867 0.569755 -vt 0.253996 0.576889 -vt 0.244661 0.570621 -vt 0.258847 0.562975 -vt 0.246005 0.565471 -vt 0.246864 0.559852 -vt 0.248200 0.554214 -vt 0.261175 0.549636 -vt 0.260156 0.556261 -vt 0.248423 0.548280 -vt 0.249068 0.542271 -vt 0.262200 0.536133 -vt 0.261754 0.542881 -vt 0.248505 0.536009 -vt 0.248753 0.529659 -vt 0.262332 0.529213 -vt 0.248785 0.523246 -vt 0.262290 0.522347 -vt 0.248637 0.516790 -vt 0.262066 0.515500 -vt 0.198124 0.511772 -vt 0.195630 0.511881 -vt 0.195417 0.505930 -vt 0.197665 0.500143 -vt 0.198081 0.505854 -vt 0.195394 0.500156 -vt 0.195373 0.494420 -vt 0.198001 0.488733 -vt 0.197993 0.494478 -vt 0.198166 0.483243 -vt 0.195583 0.488605 -vt 0.198935 0.478051 -vt 0.195930 0.483014 -vt 0.200514 0.570670 -vt 0.198077 0.571455 -vt 0.197428 0.565317 -vt 0.199776 0.565102 -vt 0.197147 0.559517 -vt 0.199662 0.559415 -vt 0.196995 0.553480 -vt 0.199419 0.547398 -vt 0.199748 0.553435 -vt 0.196995 0.547457 -vt 0.196683 0.541429 -vt 0.199041 0.535228 -vt 0.199466 0.541325 -vt 0.198653 0.529370 -vt 0.196484 0.535303 -vt 0.198693 0.523426 -vt 0.196320 0.529448 -vt 0.196005 0.523527 -vt 0.195889 0.517634 -vt 0.198195 0.517537 -vt 0.157570 0.505507 -vt 0.157789 0.511787 -vt 0.155594 0.511808 -vt 0.157405 0.499394 -vt 0.155544 0.505519 -vt 0.155514 0.499400 -vt 0.155393 0.493101 -vt 0.157517 0.486644 -vt 0.157610 0.493097 -vt 0.155409 0.486608 -vt 0.155535 0.480100 -vt 0.157600 0.480235 -vt 0.156257 0.473199 -vt 0.158575 0.568589 -vt 0.159268 0.575017 -vt 0.157229 0.575675 -vt 0.158485 0.561982 -vt 0.156459 0.568757 -vt 0.158202 0.555452 -vt 0.156188 0.562038 -vt 0.157971 0.549209 -vt 0.156113 0.555476 -vt 0.156081 0.549233 -vt 0.155976 0.543052 -vt 0.158024 0.543023 -vt 0.155897 0.536693 -vt 0.158113 0.536664 -vt 0.155843 0.530347 -vt 0.157878 0.530325 -vt 0.155796 0.524222 -vt 0.157705 0.518082 -vt 0.157655 0.524198 -vt 0.155679 0.518111 -vt 0.145357 0.511543 -vt 0.142141 0.511627 -vt 0.142197 0.505521 -vt 0.145097 0.499325 -vt 0.145192 0.505446 -vt 0.144950 0.492940 -vt 0.141809 0.499397 -vt 0.141386 0.493056 -vt 0.141445 0.486662 -vt 0.144326 0.480001 -vt 0.144617 0.486520 -vt 0.140842 0.480334 -vt 0.139891 0.474051 -vt 0.145084 0.568307 -vt 0.144180 0.575729 -vt 0.140490 0.574388 -vt 0.141473 0.568013 -vt 0.141965 0.561499 -vt 0.145365 0.561590 -vt 0.142335 0.555182 -vt 0.145626 0.548913 -vt 0.145450 0.555227 -vt 0.142142 0.548878 -vt 0.142519 0.542646 -vt 0.145602 0.536546 -vt 0.145563 0.542683 -vt 0.145545 0.530327 -vt 0.142373 0.536518 -vt 0.142235 0.530329 -vt 0.141965 0.524072 -vt 0.145421 0.517748 -vt 0.145510 0.524035 -vt 0.142115 0.517808 -vt 0.095539 0.512813 -vt 0.097353 0.512758 -vt 0.097472 0.518475 -vt 0.095515 0.507243 -vt 0.097070 0.507181 -vt 0.095158 0.501794 -vt 0.096842 0.501711 -vt 0.094679 0.496149 -vt 0.096508 0.496015 -vt 0.094323 0.490502 -vt 0.096009 0.490323 -vt 0.093766 0.485061 -vt 0.095371 0.484799 -vt 0.092760 0.479764 -vt 0.094246 0.479143 -vt 0.094102 0.562743 -vt 0.095831 0.562978 -vt 0.094766 0.568796 -vt 0.094704 0.557200 -vt 0.096372 0.557325 -vt 0.095162 0.551764 -vt 0.096713 0.551854 -vt 0.095299 0.546204 -vt 0.097083 0.546288 -vt 0.095688 0.540660 -vt 0.097238 0.540718 -vt 0.095770 0.535206 -vt 0.097429 0.535259 -vt 0.095835 0.529653 -vt 0.097517 0.529687 -vt 0.095839 0.524080 -vt 0.097529 0.524093 -vt 0.095760 0.518488 -vt 0.242318 0.474202 -vt 0.196639 0.477263 -vt 0.158289 0.473889 -vt 0.143508 0.472889 -vt 0.093081 0.568129 -vt 0.362847 0.505457 -vt 0.362976 0.514476 -vt 0.298749 0.514185 -vt 0.362977 0.523483 -vt 0.298954 0.522206 -vt 0.362849 0.532485 -vt 0.298773 0.530149 -vt 0.362594 0.541481 -vt 0.298587 0.538062 -vt 0.362211 0.550478 -vt 0.298180 0.546075 -vt 0.361700 0.559480 -vt 0.297572 0.554211 -vt 0.361068 0.568492 -vt 0.360332 0.577513 -vt 0.295291 0.570683 -vt 0.359512 0.586553 -vt 0.293662 0.579098 -vt 0.358668 0.595378 -vt 0.359726 0.450783 -vt 0.360491 0.459984 -vt 0.293375 0.465052 -vt 0.361172 0.469148 -vt 0.294857 0.473659 -vt 0.361755 0.478272 -vt 0.296208 0.482030 -vt 0.362230 0.487363 -vt 0.297097 0.490270 -vt 0.362595 0.496423 -vt 0.297746 0.498276 -vt 0.298357 0.506207 -vt 0.288460 0.506886 -vt 0.288033 0.499142 -vt 0.286990 0.491396 -vt 0.285743 0.483561 -vt 0.284654 0.475565 -vt 0.282800 0.467652 -vt 0.280563 0.459851 -vt 0.291567 0.587987 -vt 0.281450 0.583881 -vt 0.283667 0.576504 -vt 0.296555 0.562421 -vt 0.285196 0.568706 -vt 0.286380 0.560907 -vt 0.287198 0.553126 -vt 0.288084 0.545397 -vt 0.288668 0.537698 -vt 0.289054 0.530014 -vt 0.288781 0.522317 -vt 0.288738 0.514604 -vt 0.053888 0.509039 -vt 0.053675 0.503966 -vt 0.053404 0.498893 -vt 0.053081 0.493831 -vt 0.052707 0.488783 -vt 0.052282 0.483746 -vt 0.052726 0.559753 -vt 0.053117 0.554687 -vt 0.053452 0.549623 -vt 0.053724 0.544557 -vt 0.053934 0.539492 -vt 0.054080 0.534425 -vt 0.054163 0.529353 -vt 0.054183 0.524276 -vt 0.054142 0.519196 -vt 0.054043 0.514115 -vt 0.291327 0.455872 -vn -1.000000 0.001800 -0.001200 -vn -1.000000 0.002100 -0.000400 -vn -1.000000 0.002100 0.000400 -vn -1.000000 0.001800 0.001200 -vn -1.000000 0.001200 0.001800 -vn -1.000000 0.000400 0.002100 -vn -1.000000 -0.000400 0.002100 -vn -1.000000 -0.001200 0.001800 -vn -1.000000 -0.001800 0.001200 -vn -1.000000 -0.002100 0.000400 -vn -1.000000 -0.002100 -0.000400 -vn -1.000000 -0.001800 -0.001200 -vn -1.000000 -0.001200 -0.001800 -vn -1.000000 -0.000400 -0.002100 -vn -1.000000 0.000400 -0.002100 -vn -1.000000 0.001200 -0.001800 -vn 1.000000 0.000000 0.000000 -vn 1.000000 0.000100 0.000000 -vn 1.000000 -0.000100 0.000000 -vn -1.000000 -0.000000 0.000000 -vn -1.000000 -0.000100 0.000000 -vn -1.000000 0.000100 0.000000 -vn 0.000000 0.707100 -0.707100 -vn 0.000000 0.382700 -0.923900 -vn -0.289600 0.366300 -0.884300 -vn 0.000000 -0.000000 -1.000000 -vn -0.289600 0.000000 -0.957200 -vn 0.000000 -0.382700 -0.923900 -vn -0.289600 -0.366300 -0.884300 -vn 0.000000 -0.707100 -0.707100 -vn -0.289600 -0.676800 -0.676800 -vn 0.000000 -0.923900 -0.382700 -vn -0.289600 -0.884300 -0.366300 -vn 0.000000 -1.000000 0.000000 -vn -0.289600 -0.957200 0.000000 -vn 0.000000 -0.923900 0.382700 -vn 0.000000 -0.707100 0.707100 -vn -0.289600 -0.676800 0.676800 -vn -0.000000 -0.382700 0.923900 -vn -0.289600 -0.366300 0.884300 -vn -0.000000 0.000000 1.000000 -vn 0.000000 0.382700 0.923900 -vn -0.289600 0.366300 0.884300 -vn 0.000000 0.707100 0.707100 -vn -0.289600 0.676800 0.676800 -vn 0.000000 0.923900 0.382700 -vn -0.289600 0.884300 0.366300 -vn 0.000000 1.000000 -0.000000 -vn -0.289600 0.957200 0.000000 -vn 0.000000 0.923900 -0.382700 -vn -0.289600 0.884300 -0.366300 -vn -0.289600 0.676800 -0.676800 -vn -0.310900 0.672000 -0.672000 -vn -0.310900 0.878100 -0.363700 -vn -0.310900 0.950400 0.000000 -vn -0.310900 0.878100 0.363700 -vn -0.310900 0.672000 0.672000 -vn -0.310900 0.363700 0.878100 -vn -0.310900 0.000000 0.950400 -vn -0.289600 0.000000 0.957200 -vn -0.310900 -0.363700 0.878100 -vn -0.289600 -0.884300 0.366300 -vn -0.310900 -0.672000 0.672000 -vn -0.310900 -0.878100 0.363700 -vn -0.310900 -0.950400 0.000000 -vn -0.310900 -0.878100 -0.363700 -vn -0.310900 -0.672000 -0.672000 -vn -0.310900 -0.363700 -0.878100 -vn -0.310900 0.000000 -0.950400 -vn -0.310900 0.363700 -0.878100 -vn -0.001500 0.382200 -0.924100 -vn -0.001500 0.383100 -0.923700 -vn -0.000200 0.707400 -0.706900 -vn -0.003100 -0.000500 -1.000000 -vn -0.003100 0.000500 -1.000000 -vn -0.004700 -0.383100 -0.923700 -vn -0.004700 -0.382300 -0.924000 -vn -0.006000 -0.707300 -0.706900 -vn -0.006000 -0.706900 -0.707300 -vn -0.006900 -0.923900 -0.382500 -vn -0.006900 -0.923800 -0.382900 -vn -0.007200 -1.000000 -0.000000 -vn -0.006900 -0.923900 0.382500 -vn -0.006900 -0.923800 0.382900 -vn -0.006000 -0.707300 0.706900 -vn -0.006000 -0.706900 0.707300 -vn -0.004700 -0.383100 0.923700 -vn -0.004700 -0.382300 0.924000 -vn -0.003100 -0.000500 1.000000 -vn -0.003100 0.000500 1.000000 -vn -0.001500 0.382200 0.924100 -vn -0.001500 0.383100 0.923700 -vn -0.000200 0.706800 0.707400 -vn -0.000200 0.707400 0.706900 -vn 0.000700 0.923800 0.382900 -vn 0.000700 0.924000 0.382500 -vn 0.001000 1.000000 0.000000 -vn 0.000700 0.923800 -0.382900 -vn 0.000700 0.924000 -0.382500 -vn -0.000200 0.706900 -0.707400 -usemtl Tank -s off -f 156/85/152 187/86/152 172/87/152 -f 171/88/153 172/87/153 173/89/153 -f 169/90/154 170/91/154 173/89/154 -f 169/90/155 174/92/155 175/93/155 -f 167/94/156 168/95/156 175/93/156 -f 166/96/157 167/94/157 176/97/157 -f 165/98/158 166/99/158 177/100/158 -f 164/101/159 165/98/159 178/102/159 -f 164/101/160 179/103/160 180/104/160 -f 162/105/161 163/106/161 180/104/161 -f 162/105/162 181/107/162 182/108/162 -f 160/109/163 161/110/163 182/108/163 -f 160/109/164 183/111/164 184/112/164 -f 159/113/165 184/112/165 185/114/165 -f 158/115/166 185/114/166 186/116/166 -f 156/85/167 157/117/167 186/116/167 -f 188/118/168 219/119/168 204/120/168 -f 202/121/169 203/122/169 204/120/169 -f 202/121/168 205/123/168 206/124/168 -f 200/125/168 201/126/168 206/124/168 -f 199/127/168 200/125/168 207/128/168 -f 198/129/168 199/127/168 208/130/168 -f 198/131/168 209/132/168 210/133/168 -f 197/134/168 210/133/168 211/135/168 -f 196/136/168 211/135/168 212/137/168 -f 194/138/170 195/139/170 212/137/170 -f 194/138/168 213/140/168 214/141/168 -f 192/142/168 193/143/168 214/141/168 -f 191/144/168 192/142/168 215/145/168 -f 190/146/168 191/144/168 216/147/168 -f 190/146/168 217/148/168 218/149/168 -f 189/150/168 218/149/168 219/119/168 -f 235/151/168 220/152/168 251/153/168 -f 234/154/168 235/151/168 236/155/168 -f 234/154/168 237/156/168 238/157/168 -f 232/158/168 233/159/168 238/157/168 -f 232/158/170 239/160/170 240/161/170 -f 231/162/168 240/161/168 241/163/168 -f 229/164/168 230/165/168 241/166/168 -f 228/167/168 229/164/168 242/168/168 -f 227/169/168 228/167/168 243/170/168 -f 226/171/168 227/169/168 244/172/168 -f 226/171/170 245/173/170 246/174/170 -f 225/175/169 246/174/169 247/176/169 -f 224/177/169 247/176/169 248/178/169 -f 223/179/168 248/178/168 249/180/168 -f 221/181/168 222/182/168 249/180/168 -f 220/152/168 221/181/168 250/183/168 -f 252/184/171 283/185/171 268/186/171 -f 266/187/171 267/188/171 268/186/171 -f 265/189/171 266/187/171 269/190/171 -f 265/189/171 270/191/171 271/192/171 -f 263/193/171 264/194/171 271/192/171 -f 263/193/171 272/195/171 273/196/171 -f 261/197/171 262/198/171 273/199/171 -f 261/197/171 274/200/171 275/201/171 -f 260/202/171 275/201/171 276/203/171 -f 258/204/171 259/205/171 276/203/171 -f 258/204/171 277/206/171 278/207/171 -f 256/208/171 257/209/171 278/207/171 -f 255/210/171 256/208/171 279/211/171 -f 255/210/171 280/212/171 281/213/171 -f 253/214/171 254/215/171 281/213/171 -f 253/214/171 282/216/171 283/185/171 -f 315/217/171 284/218/171 285/219/171 -f 300/220/172 299/221/172 284/218/172 -f 301/222/171 298/223/171 299/221/171 -f 301/222/171 302/224/171 297/225/171 -f 302/224/173 303/226/173 296/227/173 -f 303/226/171 304/228/171 295/229/171 -f 304/228/171 305/230/171 294/231/171 -f 306/232/171 293/233/171 294/234/171 -f 307/235/171 292/236/171 293/233/171 -f 308/237/171 291/238/171 292/236/171 -f 309/239/171 290/240/171 291/238/171 -f 309/239/171 310/241/171 289/242/171 -f 310/241/173 311/243/173 288/244/173 -f 311/243/171 312/245/171 287/246/171 -f 312/245/171 313/247/171 286/248/171 -f 314/249/171 285/219/171 286/248/171 -f 171/88/152 156/85/152 172/87/152 -f 170/91/153 171/88/153 173/89/153 -f 174/92/154 169/90/154 173/89/154 -f 168/95/155 169/90/155 175/93/155 -f 176/97/156 167/94/156 175/93/156 -f 177/250/157 166/96/157 176/97/157 -f 178/102/158 165/98/158 177/100/158 -f 179/103/159 164/101/159 178/102/159 -f 163/106/160 164/101/160 180/104/160 -f 181/107/161 162/105/161 180/104/161 -f 161/110/162 162/105/162 182/108/162 -f 183/111/163 160/109/163 182/108/163 -f 159/113/164 160/109/164 184/112/164 -f 158/115/165 159/113/165 185/114/165 -f 157/117/166 158/115/166 186/116/166 -f 187/86/167 156/85/167 186/116/167 -f 203/122/170 188/118/170 204/120/170 -f 205/123/168 202/121/168 204/120/168 -f 201/126/168 202/121/168 206/124/168 -f 207/128/168 200/125/168 206/124/168 -f 208/130/168 199/127/168 207/128/168 -f 209/251/168 198/129/168 208/130/168 -f 197/134/168 198/131/168 210/133/168 -f 196/136/168 197/134/168 211/135/168 -f 195/139/168 196/136/168 212/137/168 -f 213/140/168 194/138/168 212/137/168 -f 193/143/170 194/138/170 214/141/170 -f 215/145/168 192/142/168 214/141/168 -f 216/147/168 191/144/168 215/145/168 -f 217/148/168 190/146/168 216/147/168 -f 189/150/168 190/146/168 218/149/168 -f 188/118/168 189/150/168 219/119/168 -f 236/155/169 235/151/169 251/153/169 -f 237/156/168 234/154/168 236/155/168 -f 233/159/169 234/154/169 238/157/169 -f 239/160/168 232/158/168 238/157/168 -f 231/162/169 232/158/169 240/161/169 -f 230/252/168 231/162/168 241/163/168 -f 242/168/168 229/164/168 241/166/168 -f 243/170/169 228/167/169 242/168/169 -f 244/172/168 227/169/168 243/170/168 -f 245/173/168 226/171/168 244/172/168 -f 225/175/168 226/171/168 246/174/168 -f 224/177/168 225/175/168 247/176/168 -f 223/179/168 224/177/168 248/178/168 -f 222/182/168 223/179/168 249/180/168 -f 250/183/168 221/181/168 249/180/168 -f 251/153/168 220/152/168 250/183/168 -f 267/188/171 252/184/171 268/186/171 -f 269/190/171 266/187/171 268/186/171 -f 270/191/171 265/189/171 269/190/171 -f 264/194/171 265/189/171 271/192/171 -f 272/195/171 263/193/171 271/192/171 -f 262/253/171 263/193/171 273/196/171 -f 274/200/171 261/197/171 273/199/171 -f 260/202/171 261/197/171 275/201/171 -f 259/205/171 260/202/171 276/203/171 -f 277/206/171 258/204/171 276/203/171 -f 257/209/171 258/204/171 278/207/171 -f 279/211/171 256/208/171 278/207/171 -f 280/212/171 255/210/171 279/211/171 -f 254/215/171 255/210/171 281/213/171 -f 282/216/171 253/214/171 281/213/171 -f 252/184/171 253/214/171 283/185/171 -f 314/249/171 315/217/171 285/219/171 -f 315/217/173 300/220/173 284/218/173 -f 300/220/171 301/222/171 299/221/171 -f 298/223/171 301/222/171 297/225/171 -f 297/225/172 302/224/172 296/227/172 -f 296/227/173 303/226/173 295/229/173 -f 295/229/171 304/228/171 294/231/171 -f 305/254/171 306/232/171 294/234/171 -f 306/232/171 307/235/171 293/233/171 -f 307/235/171 308/237/171 292/236/171 -f 308/237/171 309/239/171 291/238/171 -f 290/240/171 309/239/171 289/242/171 -f 289/242/171 310/241/171 288/244/171 -f 288/244/171 311/243/171 287/246/171 -f 287/246/171 312/245/171 286/248/171 -f 313/247/171 314/249/171 286/248/171 -s 1 -f 124/255/174 125/256/175 109/257/176 -f 125/256/175 126/258/177 110/259/178 -f 126/258/177 127/260/179 111/261/180 -f 127/260/179 128/262/181 112/263/182 -f 112/263/182 128/262/181 129/264/183 -f 113/265/184 129/264/183 130/266/185 -f 114/267/186 130/266/185 131/268/187 -f 131/268/187 132/269/188 116/270/189 -f 132/269/188 133/271/190 117/272/191 -f 117/272/191 133/271/190 134/273/192 -f 134/274/192 135/275/193 119/276/194 -f 135/275/193 136/277/195 120/278/196 -f 136/277/195 137/279/197 121/280/198 -f 137/279/197 138/281/199 122/282/200 -f 138/281/199 139/283/201 123/284/202 -f 108/285/203 123/284/202 139/283/201 -f 108/285/203 155/286/204 140/287/205 -f 122/282/200 123/284/202 140/287/205 -f 121/280/198 122/282/200 141/288/206 -f 121/280/198 142/289/207 143/290/208 -f 119/276/194 120/278/196 143/290/208 -f 119/276/194 144/291/209 145/292/210 -f 118/293/211 145/294/210 146/295/212 -f 116/270/189 117/272/191 146/295/212 -f 115/296/213 116/270/189 147/297/214 -f 114/267/186 115/296/213 148/298/215 -f 114/267/186 149/299/216 150/300/217 -f 113/265/184 150/300/217 151/301/218 -f 112/263/182 151/301/218 152/302/219 -f 110/259/178 111/261/180 152/302/219 -f 110/259/178 153/303/220 154/304/221 -f 109/257/176 154/304/221 155/286/204 -f 154/304/221 157/117/175 156/85/174 -f 153/303/220 158/115/177 157/117/175 -f 152/302/219 159/113/179 158/115/177 -f 151/301/218 160/109/181 159/113/179 -f 150/300/217 161/110/183 160/109/181 -f 149/299/216 162/105/185 161/110/183 -f 148/298/215 163/106/187 162/105/185 -f 147/297/214 164/101/188 163/106/187 -f 146/295/212 165/98/190 164/101/188 -f 145/294/210 166/99/192 165/98/190 -f 144/291/209 167/94/193 166/96/192 -f 143/290/208 168/95/195 167/94/193 -f 142/289/207 169/90/197 168/95/195 -f 141/288/206 170/91/199 169/90/197 -f 140/287/205 171/88/201 170/91/199 -f 155/286/204 156/85/174 171/88/201 -f 186/116/222 189/150/223 188/118/224 -f 185/114/225 190/146/226 189/150/223 -f 184/112/227 191/144/228 190/146/226 -f 183/111/229 192/142/230 191/144/228 -f 182/108/231 193/143/232 192/142/230 -f 181/107/233 194/138/233 193/143/232 -f 181/107/233 180/104/234 195/139/235 -f 180/104/234 179/103/236 196/136/237 -f 179/103/236 178/102/238 197/134/239 -f 178/102/238 177/100/240 198/131/241 -f 177/250/240 176/97/242 199/127/243 -f 176/97/242 175/93/244 200/125/245 -f 175/93/244 174/92/246 201/126/247 -f 174/92/246 173/89/248 202/121/248 -f 172/87/249 203/122/250 202/121/248 -f 187/86/251 188/118/224 203/122/250 -f 218/149/175 221/181/175 220/152/174 -f 217/148/177 222/182/177 221/181/175 -f 216/147/179 223/179/179 222/182/177 -f 215/145/181 224/177/181 223/179/179 -f 214/141/183 225/175/183 224/177/181 -f 213/140/185 226/171/185 225/175/183 -f 212/137/187 227/169/187 226/171/185 -f 211/135/188 228/167/188 227/169/187 -f 210/133/190 229/164/190 228/167/188 -f 209/132/192 230/165/192 229/164/190 -f 208/130/193 231/162/193 230/252/192 -f 207/128/195 232/158/195 231/162/193 -f 206/124/197 233/159/197 232/158/195 -f 205/123/199 234/154/199 233/159/197 -f 204/120/201 235/151/201 234/154/199 -f 219/119/174 220/152/174 235/151/201 -f 250/183/175 253/214/175 252/184/174 -f 249/180/177 254/215/177 253/214/175 -f 248/178/179 255/210/179 254/215/177 -f 247/176/181 256/208/181 255/210/179 -f 246/174/183 257/209/183 256/208/181 -f 245/173/185 258/204/185 257/209/183 -f 244/172/187 259/205/187 258/204/185 -f 243/170/188 260/202/188 259/205/187 -f 242/168/190 261/197/190 260/202/188 -f 241/166/192 262/198/192 261/197/190 -f 240/161/193 263/193/193 262/253/192 -f 239/160/195 264/194/195 263/193/193 -f 238/157/197 265/189/197 264/194/195 -f 237/156/199 266/187/199 265/189/197 -f 236/155/201 267/188/201 266/187/199 -f 251/153/174 252/184/174 267/188/201 -f 282/216/175 285/219/175 284/218/174 -f 281/213/177 286/248/177 285/219/175 -f 280/212/179 287/246/179 286/248/177 -f 279/211/181 288/244/181 287/246/179 -f 278/207/183 289/242/183 288/244/181 -f 277/206/185 290/240/185 289/242/183 -f 276/203/187 291/238/187 290/240/185 -f 275/201/188 292/236/188 291/238/187 -f 274/200/190 293/233/190 292/236/188 -f 273/199/192 294/234/192 293/233/190 -f 272/195/193 295/229/193 294/231/192 -f 271/192/195 296/227/195 295/229/193 -f 270/191/197 297/225/197 296/227/195 -f 269/190/199 298/223/199 297/225/197 -f 268/186/201 299/221/201 298/223/199 -f 283/185/174 284/218/174 299/221/201 -f 316/217/174 315/220/174 300/305/201 -f 331/220/201 300/222/201 301/306/199 -f 330/222/199 301/224/199 302/307/197 -f 329/224/197 302/226/197 303/308/195 -f 328/226/195 303/228/195 304/309/193 -f 327/228/193 304/230/193 305/310/192 -f 326/254/192 305/232/192 306/311/190 -f 325/232/190 306/235/190 307/312/188 -f 324/235/188 307/237/188 308/313/187 -f 323/237/187 308/239/187 309/314/185 -f 322/239/185 309/241/185 310/315/183 -f 321/241/183 310/243/183 311/316/181 -f 320/243/181 311/245/181 312/317/179 -f 319/245/179 312/247/179 313/318/177 -f 318/247/177 313/249/177 314/319/175 -f 317/249/175 314/217/175 315/320/174 -f 108/285/203 124/255/174 109/257/176 -f 109/257/176 125/256/175 110/259/178 -f 110/259/178 126/258/177 111/261/180 -f 111/261/180 127/260/179 112/263/182 -f 113/265/184 112/263/182 129/264/183 -f 114/267/186 113/265/184 130/266/185 -f 115/296/213 114/267/186 131/268/187 -f 115/296/213 131/268/187 116/270/189 -f 116/270/189 132/269/188 117/272/191 -f 118/293/211 117/272/191 134/273/192 -f 118/321/211 134/274/192 119/276/194 -f 119/276/194 135/275/193 120/278/196 -f 120/278/196 136/277/195 121/280/198 -f 121/280/198 137/279/197 122/282/200 -f 122/282/200 138/281/199 123/284/202 -f 124/255/174 108/285/203 139/283/201 -f 123/284/202 108/285/203 140/287/205 -f 141/288/206 122/282/200 140/287/205 -f 142/289/207 121/280/198 141/288/206 -f 120/278/196 121/280/198 143/290/208 -f 144/291/209 119/276/194 143/290/208 -f 118/321/211 119/276/194 145/292/210 -f 117/272/191 118/293/211 146/295/212 -f 147/297/214 116/270/189 146/295/212 -f 148/298/215 115/296/213 147/297/214 -f 149/299/216 114/267/186 148/298/215 -f 113/265/184 114/267/186 150/300/217 -f 112/263/182 113/265/184 151/301/218 -f 111/261/180 112/263/182 152/302/219 -f 153/303/220 110/259/178 152/302/219 -f 109/257/176 110/259/178 154/304/221 -f 108/285/203 109/257/176 155/286/204 -f 155/286/204 154/304/221 156/85/174 -f 154/304/221 153/303/220 157/117/175 -f 153/303/220 152/302/219 158/115/177 -f 152/302/219 151/301/218 159/113/179 -f 151/301/218 150/300/217 160/109/181 -f 150/300/217 149/299/216 161/110/183 -f 149/299/216 148/298/215 162/105/185 -f 148/298/215 147/297/214 163/106/187 -f 147/297/214 146/295/212 164/101/188 -f 146/295/212 145/294/210 165/98/190 -f 145/292/210 144/291/209 166/96/192 -f 144/291/209 143/290/208 167/94/193 -f 143/290/208 142/289/207 168/95/195 -f 142/289/207 141/288/206 169/90/197 -f 141/288/206 140/287/205 170/91/199 -f 140/287/205 155/286/204 171/88/201 -f 187/86/251 186/116/222 188/118/224 -f 186/116/222 185/114/225 189/150/223 -f 185/114/225 184/112/227 190/146/226 -f 184/112/227 183/111/229 191/144/228 -f 183/111/229 182/108/231 192/142/230 -f 182/108/231 181/107/233 193/143/232 -f 194/138/233 181/107/233 195/139/235 -f 195/139/235 180/104/234 196/136/237 -f 196/136/237 179/103/236 197/134/239 -f 197/134/239 178/102/238 198/131/241 -f 198/129/241 177/250/240 199/127/243 -f 199/127/243 176/97/242 200/125/245 -f 200/125/245 175/93/244 201/126/247 -f 201/126/247 174/92/246 202/121/248 -f 173/89/248 172/87/249 202/121/248 -f 172/87/249 187/86/251 203/122/250 -f 219/119/174 218/149/175 220/152/174 -f 218/149/175 217/148/177 221/181/175 -f 217/148/177 216/147/179 222/182/177 -f 216/147/179 215/145/181 223/179/179 -f 215/145/181 214/141/183 224/177/181 -f 214/141/183 213/140/185 225/175/183 -f 213/140/185 212/137/187 226/171/185 -f 212/137/187 211/135/188 227/169/187 -f 211/135/188 210/133/190 228/167/188 -f 210/133/190 209/132/192 229/164/190 -f 209/251/192 208/130/193 230/252/192 -f 208/130/193 207/128/195 231/162/193 -f 207/128/195 206/124/197 232/158/195 -f 206/124/197 205/123/199 233/159/197 -f 205/123/199 204/120/201 234/154/199 -f 204/120/201 219/119/174 235/151/201 -f 251/153/174 250/183/175 252/184/174 -f 250/183/175 249/180/177 253/214/175 -f 249/180/177 248/178/179 254/215/177 -f 248/178/179 247/176/181 255/210/179 -f 247/176/181 246/174/183 256/208/181 -f 246/174/183 245/173/185 257/209/183 -f 245/173/185 244/172/187 258/204/185 -f 244/172/187 243/170/188 259/205/187 -f 243/170/188 242/168/190 260/202/188 -f 242/168/190 241/166/192 261/197/190 -f 241/163/192 240/161/193 262/253/192 -f 240/161/193 239/160/195 263/193/193 -f 239/160/195 238/157/197 264/194/195 -f 238/157/197 237/156/199 265/189/197 -f 237/156/199 236/155/201 266/187/199 -f 236/155/201 251/153/174 267/188/201 -f 283/185/174 282/216/175 284/218/174 -f 282/216/175 281/213/177 285/219/175 -f 281/213/177 280/212/179 286/248/177 -f 280/212/179 279/211/181 287/246/179 -f 279/211/181 278/207/183 288/244/181 -f 278/207/183 277/206/185 289/242/183 -f 277/206/185 276/203/187 290/240/185 -f 276/203/187 275/201/188 291/238/187 -f 275/201/188 274/200/190 292/236/188 -f 274/200/190 273/199/192 293/233/190 -f 273/196/192 272/195/193 294/231/192 -f 272/195/193 271/192/195 295/229/193 -f 271/192/195 270/191/197 296/227/195 -f 270/191/197 269/190/199 297/225/197 -f 269/190/199 268/186/201 298/223/199 -f 268/186/201 283/185/174 299/221/201 -f 331/217/201 316/217/174 300/305/201 -f 330/220/199 331/220/201 301/306/199 -f 329/222/197 330/222/199 302/307/197 -f 328/224/195 329/224/197 303/308/195 -f 327/226/193 328/226/195 304/309/193 -f 326/228/192 327/228/193 305/310/192 -f 325/254/190 326/254/192 306/311/190 -f 324/232/188 325/232/190 307/312/188 -f 323/235/187 324/235/188 308/313/187 -f 322/237/185 323/237/187 309/314/185 -f 321/239/183 322/239/185 310/315/183 -f 320/241/181 321/241/183 311/316/181 -f 319/243/179 320/243/181 312/317/179 -f 318/245/177 319/245/179 313/318/177 -f 317/247/175 318/247/177 314/319/175 -f 316/249/174 317/249/175 315/320/174 diff --git a/contrib/tinks/assets/models/tank.mtl b/contrib/tinks/assets/models/tank.mtl deleted file mode 100644 index ff383dc308..0000000000 --- a/contrib/tinks/assets/models/tank.mtl +++ /dev/null @@ -1,32 +0,0 @@ -# Blender MTL File: 'tank.blend' -# Material Count: 3 - -newmtl Tank -Ns 182.352941 -Ka 0.000000 0.000000 0.000000 -Kd 0.500000 0.500000 0.500000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/tank.jpg - -newmtl Tank_TTread.jpg -Ns 182.352941 -Ka 0.000000 0.000000 0.000000 -Kd 0.500000 0.500000 0.500000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/TTread.jpg - -newmtl Treads -Ns 182.352941 -Ka 0.000000 0.000000 0.000000 -Kd 0.500000 0.500000 0.500000 -Ks 0.287480 0.287480 0.287480 -Ni 1.000000 -d 1.000000 -illum 2 -map_Kd textures/TTread.jpg diff --git a/contrib/tinks/assets/models/tank.obj b/contrib/tinks/assets/models/tank.obj deleted file mode 100644 index 96e5b42db8..0000000000 --- a/contrib/tinks/assets/models/tank.obj +++ /dev/null @@ -1,7121 +0,0 @@ -# Blender v2.72 (sub 0) OBJ File: 'tank.blend' -# www.blender.org -mtllib tank.mtl -o BodyGood -v -1.577361 0.565007 -0.814644 -v -1.577361 0.565007 0.894619 -v -1.579693 0.336666 -0.814644 -v -1.579693 0.336666 0.894619 -v -1.579693 0.336666 -0.541722 -v -1.579693 0.336666 0.621697 -v -1.577361 0.565007 -0.541723 -v -1.577361 0.565007 0.621697 -v -0.932220 0.551394 -0.814644 -v -0.932220 0.551394 0.894619 -v -0.922010 -0.012070 -0.814644 -v -0.922010 -0.012070 0.894619 -v -0.922010 -0.012069 -0.541722 -v -0.922010 -0.012069 0.621697 -v -0.932220 0.551394 -0.541722 -v -0.932220 0.551394 0.621697 -v -1.263298 0.120656 -0.814644 -v -1.263298 0.120656 0.894619 -v -1.350081 0.696031 -0.814644 -v -1.350081 0.696031 0.894619 -v -1.263299 0.120656 -0.541722 -v -1.263299 0.120656 0.621697 -v -1.350081 0.696031 -0.541723 -v -1.350081 0.696031 0.621697 -v -0.233732 0.572711 -0.541722 -v -0.233732 0.572711 0.621697 -v -0.256280 -0.028382 -0.541722 -v -0.256280 -0.028382 0.621697 -v -0.256280 -0.028382 -0.814644 -v -0.256280 -0.028382 0.894619 -v -0.233732 0.572711 -0.814644 -v -0.233732 0.572711 0.894619 -v 0.810067 0.571969 -0.814644 -v 0.810067 0.571969 0.894619 -v 0.806664 -0.015318 -0.814644 -v 0.806664 -0.015318 0.894618 -v 0.806664 -0.015317 -0.541722 -v 0.806664 -0.015317 0.621697 -v 0.810067 0.571969 -0.541722 -v 0.810067 0.571969 0.621697 -v 1.248650 0.599386 -0.541722 -v 1.248650 0.599386 0.621697 -v 1.377973 0.178858 -0.541722 -v 1.377973 0.178858 0.621697 -v 1.377973 0.178857 -0.814644 -v 1.377973 0.178857 0.894618 -v 1.248650 0.599386 -0.814644 -v 1.248650 0.599386 0.894619 -v 1.372402 0.540059 -0.814644 -v 1.372402 0.540059 0.894619 -v 1.437064 0.367966 -0.814644 -v 1.437064 0.367966 0.894618 -v 1.437064 0.367967 -0.541722 -v 1.437064 0.367967 0.621697 -v 1.372402 0.540059 -0.541722 -v 1.372402 0.540059 0.621697 -v 1.217263 0.534780 -0.541722 -v 1.217263 0.534780 0.621697 -v 1.308653 0.488885 -0.541722 -v 1.308653 0.488885 0.621697 -v 1.369814 0.355756 -0.541722 -v 1.369814 0.355756 0.621697 -v 1.321254 0.209463 -0.541722 -v 1.321254 0.209463 0.621697 -v 1.321254 0.209462 -0.814644 -v 1.321254 0.209462 0.894618 -v 1.369814 0.355755 -0.814644 -v 1.369814 0.355755 0.894618 -v 1.308653 0.488885 -0.814644 -v 1.308653 0.488885 0.894619 -v 1.217263 0.534780 -0.814644 -v 1.217263 0.534780 0.894619 -v 0.773546 0.033589 -0.814644 -v 0.773546 0.033589 0.894618 -v 0.773546 0.033589 -0.541722 -v 0.773546 0.033589 0.621697 -v 0.765767 0.535565 -0.814644 -v 0.765767 0.535565 0.894619 -v 0.765767 0.535566 -0.541722 -v 0.765767 0.535566 0.621697 -v -0.225184 0.536445 -0.541722 -v -0.225184 0.536445 0.621697 -v -0.251603 0.008411 -0.541722 -v -0.251603 0.008411 0.621697 -v -0.251603 0.008411 -0.814644 -v -0.251603 0.008411 0.894619 -v -0.225184 0.536445 -0.814644 -v -0.225184 0.536445 0.894619 -v -0.901654 0.026122 -0.814644 -v -0.901654 0.026122 0.894619 -v -0.901654 0.026122 -0.541722 -v -0.901654 0.026122 0.621697 -v -0.885853 0.497654 -0.814644 -v -0.885853 0.497654 0.894619 -v -0.885854 0.497654 -0.541722 -v -0.885854 0.497654 0.621697 -v -1.323323 0.635939 -0.541723 -v -1.323323 0.635939 0.621697 -v -1.549017 0.532624 -0.541723 -v -1.549017 0.532624 0.621697 -v -1.239739 0.151710 -0.541722 -v -1.239739 0.151710 0.621697 -v -1.533912 0.357000 -0.541722 -v -1.533912 0.357000 0.621697 -v -1.323323 0.635939 -0.814644 -v -1.323323 0.635939 0.894619 -v -1.549017 0.532624 -0.814644 -v -1.549017 0.532624 0.894619 -v -1.239739 0.151709 -0.814644 -v -1.239739 0.151709 0.894619 -v -1.533912 0.357000 -0.814644 -v -1.533912 0.357000 0.894619 -v -1.549017 0.532624 -0.774532 -v -1.549017 0.532624 0.854507 -v -1.533912 0.357000 -0.774532 -v -1.533912 0.357000 0.854507 -v -1.549017 0.532624 -0.581834 -v -1.549017 0.532624 0.661809 -v -1.533912 0.357000 -0.581834 -v -1.533912 0.357000 0.661809 -v -1.239739 0.151709 -0.774532 -v -1.239739 0.151709 0.854506 -v -0.901654 0.026122 -0.774532 -v -0.901654 0.026122 0.854506 -v -1.323323 0.635939 -0.774532 -v -1.323323 0.635939 0.854507 -v -0.885853 0.497654 -0.774532 -v -0.885853 0.497654 0.854507 -v -1.239739 0.151710 -0.581834 -v -1.239739 0.151710 0.661809 -v -0.901654 0.026122 -0.581834 -v -0.901654 0.026122 0.661809 -v -1.323323 0.635939 -0.581834 -v -1.323323 0.635939 0.661809 -v -0.885854 0.497654 -0.581834 -v -0.885854 0.497654 0.661809 -v -0.225184 0.536445 -0.581834 -v -0.225184 0.536445 0.661809 -v -0.225184 0.536445 -0.774532 -v -0.225184 0.536445 0.854507 -v -0.251603 0.008411 -0.581834 -v -0.251603 0.008411 0.661809 -v -0.251603 0.008411 -0.774532 -v -0.251603 0.008411 0.854506 -v 0.765767 0.535565 -0.774532 -v 0.765767 0.535565 0.854507 -v 0.773546 0.033589 -0.774532 -v 0.773546 0.033589 0.854506 -v 0.773546 0.033589 -0.581834 -v 0.773546 0.033589 0.661809 -v 0.765767 0.535566 -0.581834 -v 0.765767 0.535566 0.661809 -v 1.217263 0.534780 -0.581834 -v 1.217263 0.534780 0.661809 -v 1.217263 0.534780 -0.774532 -v 1.217263 0.534780 0.854507 -v 1.321254 0.209463 -0.581834 -v 1.321254 0.209463 0.661809 -v 1.321254 0.209462 -0.774532 -v 1.321254 0.209462 0.854506 -v 1.308653 0.488885 -0.774532 -v 1.308653 0.488885 0.854507 -v 1.369814 0.355755 -0.774532 -v 1.369814 0.355755 0.854506 -v 1.369814 0.355756 -0.581834 -v 1.369814 0.355756 0.661809 -v 1.308653 0.488885 -0.581834 -v 1.308653 0.488885 0.661809 -v -0.286488 0.472542 -0.820350 -v -0.286488 0.472542 0.884787 -v -0.217479 0.353015 -0.820350 -v -0.217479 0.353015 0.884787 -v -0.217479 0.214997 -0.820350 -v -0.217479 0.214997 0.884787 -v -0.286488 0.095470 -0.820350 -v -0.286488 0.095470 0.884787 -v -0.406015 0.026461 -0.820350 -v -0.406015 0.026461 0.884787 -v -0.544033 0.026461 -0.820350 -v -0.544033 0.026461 0.884787 -v -0.663560 0.095470 -0.820350 -v -0.663560 0.095470 0.884787 -v -0.732569 0.214997 -0.820350 -v -0.732569 0.214997 0.884787 -v -0.732569 0.353015 -0.820350 -v -0.732569 0.353015 0.884787 -v -0.663560 0.472542 -0.820350 -v -0.663560 0.472542 0.884787 -v -0.544033 0.541551 -0.820350 -v -0.544033 0.541551 0.884787 -v -0.406015 0.541551 -0.820350 -v -0.406015 0.541551 0.884787 -v -0.286488 0.472542 -0.741306 -v -0.286488 0.472542 0.805929 -v -0.217479 0.353015 -0.741306 -v -0.217479 0.353015 0.805929 -v -0.217479 0.214997 -0.741306 -v -0.217479 0.214997 0.805929 -v -0.286488 0.095470 -0.741306 -v -0.286488 0.095470 0.805929 -v -0.406015 0.026461 -0.741306 -v -0.406015 0.026461 0.805929 -v -0.544033 0.026461 -0.741306 -v -0.544033 0.026461 0.805929 -v -0.663560 0.095470 -0.741306 -v -0.663560 0.095470 0.805929 -v -0.732569 0.214997 -0.741306 -v -0.732569 0.214997 0.805929 -v -0.732569 0.353014 -0.741306 -v -0.732569 0.353014 0.805929 -v -0.663560 0.472541 -0.741306 -v -0.663560 0.472541 0.805929 -v -0.544034 0.541551 -0.741306 -v -0.544034 0.541551 0.805929 -v -0.406016 0.541551 -0.741306 -v -0.406016 0.541551 0.805929 -v -0.475024 0.284006 -0.820350 -v -0.475024 0.284006 0.884787 -v -0.475024 0.284006 -0.741306 -v -0.475024 0.284006 0.805929 -v -0.056081 0.286837 -0.599231 -v -0.056081 0.286837 0.664187 -v -0.056081 0.286837 -0.751613 -v -0.056081 0.286837 0.816212 -v 0.012928 0.544381 -0.599231 -v 0.012928 0.544381 0.664187 -v -0.125090 0.544381 -0.599231 -v -0.125090 0.544381 0.664187 -v -0.244617 0.475372 -0.599231 -v -0.244617 0.475372 0.664187 -v -0.313625 0.355845 -0.599231 -v -0.313625 0.355845 0.664187 -v -0.313625 0.217827 -0.599231 -v -0.313625 0.217827 0.664187 -v -0.244616 0.098300 -0.599231 -v -0.244616 0.098300 0.664187 -v -0.125089 0.029292 -0.599231 -v -0.125089 0.029292 0.664187 -v 0.012929 0.029292 -0.599231 -v 0.012929 0.029292 0.664187 -v 0.132455 0.098301 -0.599231 -v 0.132455 0.098301 0.664187 -v 0.201464 0.217828 -0.599231 -v 0.201464 0.217828 0.664187 -v 0.201464 0.355846 -0.599231 -v 0.201464 0.355846 0.664187 -v 0.132455 0.475373 -0.599231 -v 0.132455 0.475373 0.664187 -v 0.012928 0.544381 -0.751613 -v 0.012928 0.544381 0.816212 -v -0.125090 0.544381 -0.751613 -v -0.125090 0.544381 0.816212 -v -0.244616 0.475372 -0.751613 -v -0.244616 0.475372 0.816212 -v -0.313625 0.355845 -0.751613 -v -0.313625 0.355845 0.816212 -v -0.313625 0.217828 -0.751613 -v -0.313625 0.217828 0.816212 -v -0.244616 0.098301 -0.751613 -v -0.244616 0.098301 0.816212 -v -0.125089 0.029292 -0.751613 -v -0.125089 0.029292 0.816212 -v 0.012928 0.029292 -0.751613 -v 0.012928 0.029292 0.816212 -v 0.132455 0.098301 -0.751613 -v 0.132455 0.098301 0.816212 -v 0.201464 0.217828 -0.751613 -v 0.201464 0.217828 0.816212 -v 0.201464 0.355846 -0.751613 -v 0.201464 0.355846 0.816212 -v 0.132455 0.475372 -0.751613 -v 0.132455 0.475372 0.816212 -v 0.546870 0.465182 -0.816579 -v 0.546870 0.465182 0.881025 -v 0.615879 0.345655 -0.816579 -v 0.615879 0.345655 0.881025 -v 0.615879 0.207637 -0.816579 -v 0.615879 0.207637 0.881025 -v 0.546870 0.088110 -0.816579 -v 0.546870 0.088110 0.881025 -v 0.427343 0.019101 -0.816579 -v 0.427343 0.019101 0.881025 -v 0.289325 0.019101 -0.816579 -v 0.289325 0.019101 0.881025 -v 0.169798 0.088110 -0.816579 -v 0.169798 0.088110 0.881025 -v 0.100789 0.207637 -0.816579 -v 0.100789 0.207637 0.881025 -v 0.100789 0.345655 -0.816579 -v 0.100789 0.345655 0.881025 -v 0.169798 0.465182 -0.816579 -v 0.169798 0.465182 0.881025 -v 0.289325 0.534191 -0.816579 -v 0.289325 0.534191 0.881025 -v 0.427343 0.534191 -0.816579 -v 0.427343 0.534191 0.881025 -v 0.546870 0.465182 -0.736489 -v 0.546870 0.465182 0.801123 -v 0.615879 0.345655 -0.736489 -v 0.615879 0.345655 0.801123 -v 0.615879 0.207637 -0.736489 -v 0.615879 0.207637 0.801123 -v 0.546870 0.088110 -0.736489 -v 0.546870 0.088110 0.801123 -v 0.427343 0.019101 -0.736489 -v 0.427343 0.019101 0.801123 -v 0.289325 0.019101 -0.736489 -v 0.289325 0.019101 0.801123 -v 0.169798 0.088110 -0.736489 -v 0.169798 0.088110 0.801123 -v 0.100789 0.207637 -0.736489 -v 0.100789 0.207637 0.801123 -v 0.100789 0.345655 -0.736489 -v 0.100789 0.345655 0.801123 -v 0.169798 0.465182 -0.736489 -v 0.169798 0.465182 0.801123 -v 0.289324 0.534191 -0.736489 -v 0.289324 0.534191 0.801123 -v 0.427342 0.534191 -0.736489 -v 0.427342 0.534191 0.801123 -v 0.358334 0.276646 -0.816579 -v 0.358334 0.276646 0.881025 -v 0.358334 0.276646 -0.736489 -v 0.358334 0.276646 0.801123 -v 0.764450 0.286837 -0.632052 -v 0.764450 0.286837 0.696931 -v 0.764450 0.286837 -0.776000 -v 0.764450 0.286837 0.840542 -v 0.829638 0.530127 -0.632052 -v 0.829638 0.530127 0.696931 -v 0.699260 0.530127 -0.632052 -v 0.699260 0.530127 0.696931 -v 0.586348 0.464937 -0.632052 -v 0.586348 0.464937 0.696931 -v 0.521159 0.352026 -0.632052 -v 0.521159 0.352026 0.696931 -v 0.521159 0.221647 -0.632052 -v 0.521159 0.221647 0.696931 -v 0.586349 0.108736 -0.632052 -v 0.586349 0.108736 0.696931 -v 0.699260 0.043546 -0.632052 -v 0.699260 0.043546 0.696931 -v 0.829639 0.043547 -0.632052 -v 0.829639 0.043547 0.696931 -v 0.942551 0.108736 -0.632052 -v 0.942551 0.108736 0.696931 -v 1.007740 0.221648 -0.632052 -v 1.007740 0.221648 0.696931 -v 1.007740 0.352026 -0.632052 -v 1.007740 0.352026 0.696931 -v 0.942550 0.464938 -0.632052 -v 0.942550 0.464938 0.696931 -v 0.829639 0.530127 -0.776000 -v 0.829639 0.530127 0.840542 -v 0.699260 0.530127 -0.776000 -v 0.699260 0.530127 0.840542 -v 0.586349 0.464937 -0.776000 -v 0.586349 0.464937 0.840542 -v 0.521159 0.352026 -0.776000 -v 0.521159 0.352026 0.840542 -v 0.521159 0.221647 -0.776000 -v 0.521159 0.221647 0.840542 -v 0.586349 0.108736 -0.776000 -v 0.586349 0.108736 0.840542 -v 0.699260 0.043546 -0.776000 -v 0.699260 0.043546 0.840542 -v 0.829639 0.043546 -0.776000 -v 0.829639 0.043546 0.840542 -v 0.942550 0.108736 -0.776000 -v 0.942550 0.108736 0.840542 -v 1.007740 0.221647 -0.776000 -v 1.007740 0.221647 0.840542 -v 1.007740 0.352026 -0.776000 -v 1.007740 0.352026 0.840542 -v 0.942550 0.464937 -0.776000 -v 0.942550 0.464937 0.840542 -v 1.341066 0.514983 -0.813306 -v 1.341066 0.514983 0.893280 -v 1.393243 0.424610 -0.813306 -v 1.393243 0.424610 0.893280 -v 1.393243 0.320255 -0.813306 -v 1.393243 0.320255 0.893280 -v 1.341066 0.229882 -0.813306 -v 1.341066 0.229882 0.893280 -v 1.250692 0.177705 -0.813306 -v 1.250692 0.177705 0.893280 -v 1.146338 0.177705 -0.813306 -v 1.146338 0.177705 0.893280 -v 1.055964 0.229882 -0.813306 -v 1.055964 0.229882 0.893280 -v 1.003787 0.320255 -0.813306 -v 1.003787 0.320255 0.893280 -v 1.003787 0.424610 -0.813306 -v 1.003787 0.424610 0.893280 -v 1.055964 0.514983 -0.813306 -v 1.055964 0.514983 0.893280 -v 1.146337 0.567160 -0.813306 -v 1.146337 0.567160 0.893280 -v 1.250692 0.567160 -0.813306 -v 1.250692 0.567160 0.893280 -v 1.341065 0.514983 -0.599568 -v 1.341065 0.514983 0.679543 -v 1.393243 0.424610 -0.599568 -v 1.393243 0.424610 0.679543 -v 1.393243 0.320256 -0.599568 -v 1.393243 0.320256 0.679543 -v 1.341066 0.229882 -0.599568 -v 1.341066 0.229882 0.679543 -v 1.250692 0.177705 -0.599568 -v 1.250692 0.177705 0.679543 -v 1.146338 0.177705 -0.599568 -v 1.146338 0.177705 0.679543 -v 1.055964 0.229882 -0.599568 -v 1.055964 0.229882 0.679543 -v 1.003787 0.320255 -0.599568 -v 1.003787 0.320255 0.679543 -v 1.003787 0.424609 -0.599568 -v 1.003787 0.424609 0.679543 -v 1.055964 0.514983 -0.599568 -v 1.055964 0.514983 0.679543 -v 1.146337 0.567160 -0.599568 -v 1.146337 0.567160 0.679543 -v 1.250692 0.567161 -0.599568 -v 1.250692 0.567161 0.679543 -v 1.198515 0.372433 -0.813306 -v 1.198515 0.372433 0.893280 -v 1.198515 0.372433 -0.599568 -v 1.198515 0.372433 0.679543 -v -0.679451 0.450917 -0.751613 -v -0.679451 0.450917 0.816212 -v -0.610442 0.331390 -0.751613 -v -0.610442 0.331390 0.816212 -v -0.610442 0.193373 -0.751613 -v -0.610442 0.193373 0.816212 -v -0.679451 0.073846 -0.751613 -v -0.679451 0.073846 0.816212 -v -0.798978 0.004837 -0.751613 -v -0.798978 0.004837 0.816212 -v -0.936995 0.004837 -0.751613 -v -0.936995 0.004837 0.816212 -v -1.056522 0.073846 -0.751613 -v -1.056522 0.073846 0.816212 -v -1.125531 0.193373 -0.751613 -v -1.125531 0.193373 0.816212 -v -1.125531 0.331390 -0.751613 -v -1.125531 0.331390 0.816212 -v -1.056522 0.450917 -0.751613 -v -1.056522 0.450917 0.816212 -v -0.936996 0.519926 -0.751613 -v -0.936996 0.519926 0.816212 -v -0.798978 0.519926 -0.751613 -v -0.798978 0.519926 0.816212 -v -0.679451 0.450918 -0.599230 -v -0.679451 0.450918 0.664187 -v -0.610442 0.331391 -0.599230 -v -0.610442 0.331391 0.664187 -v -0.610442 0.193373 -0.599230 -v -0.610442 0.193373 0.664187 -v -0.679451 0.073846 -0.599230 -v -0.679451 0.073846 0.664187 -v -0.798977 0.004837 -0.599230 -v -0.798977 0.004837 0.664187 -v -0.936995 0.004837 -0.599230 -v -0.936995 0.004837 0.664187 -v -1.056522 0.073845 -0.599230 -v -1.056522 0.073845 0.664187 -v -1.125531 0.193372 -0.599230 -v -1.125531 0.193372 0.664187 -v -1.125531 0.331390 -0.599230 -v -1.125531 0.331390 0.664187 -v -1.056523 0.450917 -0.599230 -v -1.056523 0.450917 0.664187 -v -0.936996 0.519926 -0.599230 -v -0.936996 0.519926 0.664187 -v -0.798978 0.519926 -0.599230 -v -0.798978 0.519926 0.664187 -v -0.867987 0.262382 -0.751613 -v -0.867987 0.262382 0.816212 -v -0.867987 0.262382 -0.599230 -v -0.867987 0.262382 0.664187 -v -1.249482 0.449471 -0.599568 -v -1.249482 0.449471 0.679542 -v -1.249482 0.449471 -0.813305 -v -1.249482 0.449471 0.893280 -v -1.258392 0.650308 -0.599568 -v -1.258392 0.650308 0.679542 -v -1.362746 0.650307 -0.599568 -v -1.362746 0.650307 0.679542 -v -1.453119 0.598130 -0.599568 -v -1.453119 0.598130 0.679542 -v -1.532791 0.516921 -0.599568 -v -1.532791 0.516921 0.679542 -v -1.505296 0.403402 -0.599568 -v -1.505296 0.403402 0.679542 -v -1.453119 0.313028 -0.599568 -v -1.453119 0.313028 0.679542 -v -1.362745 0.260851 -0.599568 -v -1.362745 0.260851 0.679542 -v -1.258391 0.260852 -0.599568 -v -1.258391 0.260852 0.679542 -v -1.168018 0.313029 -0.599568 -v -1.168018 0.313029 0.679542 -v -1.115840 0.403403 -0.599568 -v -1.115840 0.403403 0.679542 -v -1.115841 0.507757 -0.599568 -v -1.115841 0.507757 0.679542 -v -1.168018 0.598130 -0.599568 -v -1.168018 0.598130 0.679542 -v -1.258391 0.650307 -0.813305 -v -1.258391 0.650307 0.893280 -v -1.362746 0.650307 -0.813305 -v -1.362746 0.650307 0.893280 -v -1.453119 0.598130 -0.813305 -v -1.453119 0.598130 0.893280 -v -1.532791 0.516921 -0.813305 -v -1.532791 0.516921 0.893280 -v -1.505296 0.403402 -0.813305 -v -1.505296 0.403402 0.893280 -v -1.453119 0.313029 -0.813305 -v -1.453119 0.313029 0.893280 -v -1.362746 0.260852 -0.813305 -v -1.362746 0.260852 0.893280 -v -1.258391 0.260852 -0.813305 -v -1.258391 0.260852 0.893280 -v -1.168018 0.313029 -0.813305 -v -1.168018 0.313029 0.893280 -v -1.115841 0.403402 -0.813305 -v -1.115841 0.403402 0.893280 -v -1.115841 0.507757 -0.813305 -v -1.115841 0.507757 0.893280 -v -1.168018 0.598130 -0.813305 -v -1.168018 0.598130 0.893280 -v -0.475024 0.284006 -0.741306 -v -0.475024 0.284006 -0.820350 -v -0.406016 0.541551 -0.741306 -v -0.544034 0.541551 -0.741306 -v -0.663560 0.472541 -0.741306 -v -0.732569 0.353014 -0.741306 -v -0.732569 0.214997 -0.741306 -v -0.663560 0.095470 -0.741306 -v -0.544033 0.026461 -0.741306 -v -0.406015 0.026461 -0.741306 -v -0.286488 0.095470 -0.741306 -v -0.217479 0.214997 -0.741306 -v -0.217479 0.353015 -0.741306 -v -0.286488 0.472542 -0.741306 -v -0.406015 0.541551 -0.820350 -v -0.544033 0.541551 -0.820350 -v -0.663560 0.472542 -0.820350 -v -0.732569 0.353015 -0.820350 -v -0.732569 0.214997 -0.820350 -v -0.663560 0.095470 -0.820350 -v -0.544033 0.026461 -0.820350 -v -0.406015 0.026461 -0.820350 -v -0.286488 0.095470 -0.820350 -v -0.217479 0.214997 -0.820350 -v -0.217479 0.353015 -0.820350 -v -0.286488 0.472542 -0.820350 -v -0.475024 0.284006 -0.683962 -v -0.475024 0.284006 0.791210 -v -0.465715 0.318747 -0.683962 -v -0.484333 0.318747 -0.683962 -v -0.500457 0.309438 -0.683962 -v -0.509766 0.293315 -0.683962 -v -0.509766 0.274697 -0.683962 -v -0.500457 0.258573 -0.683962 -v -0.484333 0.249264 -0.683962 -v -0.465715 0.249264 -0.683962 -v -0.449592 0.258573 -0.683962 -v -0.440283 0.274697 -0.683962 -v -0.440283 0.293315 -0.683962 -v -0.449592 0.309438 -0.683962 -v -0.465715 0.318747 0.791210 -v -0.484333 0.318747 0.791210 -v -0.500457 0.309438 0.791210 -v -0.509766 0.293315 0.791210 -v -0.509766 0.274697 0.791210 -v -0.500457 0.258573 0.791210 -v -0.484333 0.249264 0.791210 -v -0.465715 0.249264 0.791210 -v -0.449592 0.258573 0.791210 -v -0.440283 0.274697 0.791210 -v -0.440283 0.293315 0.791210 -v -0.449592 0.309438 0.791210 -v -0.040539 0.313837 0.791210 -v -0.031230 0.297713 0.791210 -v -0.031230 0.279095 0.791210 -v -0.040539 0.262972 0.791210 -v -0.056662 0.253663 0.791210 -v -0.075280 0.253663 0.791210 -v -0.091404 0.262972 0.791210 -v -0.100713 0.279095 0.791210 -v -0.100713 0.297713 0.791210 -v -0.091404 0.313837 0.791210 -v -0.075280 0.323146 0.791210 -v -0.056662 0.323146 0.791210 -v -0.040539 0.313837 -0.683962 -v -0.031230 0.297713 -0.683962 -v -0.031230 0.279095 -0.683962 -v -0.040539 0.262972 -0.683962 -v -0.056662 0.253663 -0.683962 -v -0.075280 0.253663 -0.683962 -v -0.091404 0.262972 -0.683962 -v -0.100713 0.279095 -0.683962 -v -0.100713 0.297713 -0.683962 -v -0.091404 0.313837 -0.683962 -v -0.075280 0.323146 -0.683962 -v -0.056662 0.323146 -0.683962 -v -0.065971 0.288404 0.791210 -v -0.065971 0.288404 -0.683962 -v 0.356277 0.279607 -0.683962 -v 0.356277 0.279607 0.791210 -v 0.365586 0.314349 -0.683962 -v 0.346968 0.314349 -0.683962 -v 0.330844 0.305040 -0.683962 -v 0.321535 0.288916 -0.683962 -v 0.321535 0.270298 -0.683962 -v 0.330844 0.254175 -0.683962 -v 0.346968 0.244866 -0.683962 -v 0.365586 0.244866 -0.683962 -v 0.381709 0.254175 -0.683962 -v 0.391018 0.270299 -0.683962 -v 0.391018 0.288916 -0.683962 -v 0.381709 0.305040 -0.683962 -v 0.365586 0.314349 0.791210 -v 0.346968 0.314349 0.791210 -v 0.330844 0.305040 0.791210 -v 0.321535 0.288916 0.791210 -v 0.321535 0.270299 0.791210 -v 0.330844 0.254175 0.791210 -v 0.346968 0.244866 0.791210 -v 0.365586 0.244866 0.791210 -v 0.381709 0.254175 0.791210 -v 0.391018 0.270299 0.791210 -v 0.391018 0.288916 0.791210 -v 0.381709 0.305040 0.791210 -v 0.790762 0.313837 0.791210 -v 0.800071 0.297713 0.791210 -v 0.800071 0.279095 0.791210 -v 0.790762 0.262972 0.791210 -v 0.774639 0.253663 0.791210 -v 0.756021 0.253663 0.791210 -v 0.739897 0.262972 0.791210 -v 0.730588 0.279095 0.791210 -v 0.730588 0.297713 0.791210 -v 0.739897 0.313837 0.791210 -v 0.756021 0.323146 0.791210 -v 0.774639 0.323146 0.791210 -v 0.790762 0.313837 -0.683962 -v 0.800071 0.297713 -0.683962 -v 0.800071 0.279095 -0.683962 -v 0.790762 0.262972 -0.683962 -v 0.774639 0.253663 -0.683962 -v 0.756021 0.253663 -0.683962 -v 0.739897 0.262972 -0.683962 -v 0.730588 0.279095 -0.683962 -v 0.730588 0.297713 -0.683962 -v 0.739897 0.313837 -0.683962 -v 0.756021 0.323146 -0.683962 -v 0.774639 0.323146 -0.683962 -v 0.765330 0.288404 0.791210 -v 0.765330 0.288404 -0.683962 -v -1.224204 0.479266 0.791210 -v -1.214895 0.463143 0.791210 -v -1.214895 0.444525 0.791210 -v -1.224204 0.428401 0.791210 -v -1.240328 0.419092 0.791210 -v -1.258946 0.419092 0.791210 -v -1.275069 0.428401 0.791210 -v -1.284378 0.444525 0.791210 -v -1.284378 0.463143 0.791210 -v -1.275069 0.479266 0.791210 -v -1.258946 0.488575 0.791210 -v -1.240328 0.488575 0.791210 -v -1.224204 0.479266 -0.683962 -v -1.214895 0.463143 -0.683962 -v -1.214895 0.444525 -0.683962 -v -1.224204 0.428401 -0.683962 -v -1.240328 0.419093 -0.683962 -v -1.258945 0.419092 -0.683962 -v -1.275069 0.428401 -0.683962 -v -1.284378 0.444525 -0.683962 -v -1.284378 0.463143 -0.683962 -v -1.275069 0.479266 -0.683962 -v -1.258946 0.488575 -0.683962 -v -1.240328 0.488575 -0.683962 -v -1.249637 0.453834 0.791210 -v -1.249637 0.453834 -0.683962 -v 1.270739 0.468328 -0.596479 -v 1.330230 0.355434 -0.596479 -v 1.330230 0.355434 -0.759887 -v 1.270739 0.468328 -0.759887 -v 1.282996 0.231377 -0.759887 -v 1.282996 0.231377 -0.596479 -v 1.181844 0.507247 -0.759887 -v 1.181844 0.507247 -0.596479 -v 0.742673 0.507913 -0.596479 -v 0.750239 0.082236 -0.596479 -v 0.750239 0.082235 -0.759887 -v 0.742673 0.507913 -0.759887 -v -0.246925 0.060885 -0.759887 -v -0.246925 0.060885 -0.596479 -v -0.221227 0.508659 -0.759887 -v -0.221227 0.508659 -0.596479 -v -0.863862 0.475764 -0.596479 -v -1.289389 0.593030 -0.596479 -v -0.879231 0.075904 -0.596479 -v -1.208087 0.182402 -0.596479 -v -0.863862 0.475764 -0.759887 -v -1.289389 0.593030 -0.759887 -v -0.879231 0.075903 -0.759887 -v -1.208086 0.182402 -0.759887 -v -1.494229 0.356489 -0.596479 -v -1.508922 0.505419 -0.596479 -v -1.494229 0.356489 -0.759887 -v -1.508922 0.505419 -0.759887 -v -1.494229 0.356489 -0.793902 -v -1.208086 0.182402 -0.793902 -v -1.508922 0.505419 -0.793902 -v -1.289389 0.593030 -0.793902 -v -1.494229 0.356489 -0.562464 -v -1.208087 0.182402 -0.562464 -v -1.508922 0.505419 -0.562464 -v -1.289389 0.593030 -0.562464 -v -0.863862 0.475764 -0.562464 -v -0.863862 0.475764 -0.793903 -v -0.879231 0.075904 -0.562464 -v -0.879231 0.075903 -0.793902 -v -0.221227 0.508659 -0.793903 -v -0.246925 0.060885 -0.793902 -v -0.246925 0.060885 -0.562464 -v -0.221227 0.508659 -0.562464 -v 0.742673 0.507913 -0.562464 -v 0.742673 0.507913 -0.793903 -v 0.750239 0.082236 -0.562464 -v 0.750239 0.082235 -0.793902 -v 1.181844 0.507247 -0.793902 -v 1.270739 0.468328 -0.793902 -v 1.330230 0.355434 -0.793902 -v 1.282996 0.231377 -0.793902 -v 1.282996 0.231377 -0.562464 -v 1.330230 0.355434 -0.562464 -v 1.270739 0.468328 -0.562464 -v 1.181844 0.507247 -0.562464 -v 1.332748 0.511724 -0.562464 -v 1.395644 0.365789 -0.562464 -v 1.395644 0.365788 -0.793902 -v 1.332748 0.511724 -0.793902 -v 1.212374 0.562033 -0.793902 -v 1.338166 0.205424 -0.793902 -v 1.338166 0.205424 -0.562464 -v 1.212374 0.562033 -0.562464 -v 0.785763 0.538783 -0.562464 -v 0.782453 0.040763 -0.562464 -v 0.782453 0.040763 -0.793902 -v 0.785763 0.538783 -0.793903 -v -0.229542 0.539412 -0.793903 -v -0.251475 0.029684 -0.793902 -v -0.251475 0.029684 -0.562464 -v -0.229542 0.539412 -0.562464 -v -1.315416 0.643989 -0.562464 -v -1.231003 0.156069 -0.562464 -v -1.315416 0.643988 -0.793902 -v -1.231003 0.156069 -0.793902 -v -0.908962 0.521336 -0.562464 -v -0.899031 0.043517 -0.562464 -v -0.899031 0.043517 -0.793902 -v -0.908962 0.521336 -0.793903 -v -1.536492 0.532880 -0.562464 -v -1.538761 0.339246 -0.562464 -v -1.538761 0.339246 -0.793902 -v -1.536492 0.532880 -0.793902 -v 1.195337 0.468308 0.689513 -v 1.251507 0.355434 0.689513 -v 1.251507 0.355433 0.826802 -v 1.195337 0.468308 0.826802 -v 1.206910 0.231398 0.826802 -v 1.206910 0.231398 0.689513 -v 1.111403 0.507221 0.826802 -v 1.111403 0.507221 0.689513 -v 0.696743 0.507887 0.689513 -v 0.703887 0.082282 0.689513 -v 0.703887 0.082282 0.826802 -v 0.696743 0.507887 0.826802 -v -0.237621 0.060934 0.826802 -v -0.237621 0.060935 0.689513 -v -0.213357 0.508633 0.826803 -v -0.213357 0.508633 0.689513 -v -0.820125 0.475743 0.689513 -v -1.221901 0.592989 0.689513 -v -0.834636 0.075951 0.689513 -v -1.145137 0.182431 0.689513 -v -0.820125 0.475743 0.826802 -v -1.221901 0.592989 0.826802 -v -0.834636 0.075951 0.826802 -v -1.145137 0.182431 0.826802 -v -1.415309 0.356488 0.689513 -v -1.429182 0.505393 0.689513 -v -1.415309 0.356488 0.826802 -v -1.429182 0.505393 0.826802 -v -1.415309 0.356488 0.855381 -v -1.145137 0.182431 0.855380 -v -1.429182 0.505393 0.855381 -v -1.221901 0.592989 0.855381 -v -1.415309 0.356488 0.660935 -v -1.145137 0.182431 0.660935 -v -1.429182 0.505393 0.660935 -v -1.221901 0.592989 0.660935 -v -0.820125 0.475743 0.660935 -v -0.820125 0.475743 0.855381 -v -0.834636 0.075951 0.660935 -v -0.834636 0.075951 0.855380 -v -0.213357 0.508633 0.855381 -v -0.237621 0.060934 0.855381 -v -0.237621 0.060935 0.660935 -v -0.213357 0.508633 0.660935 -v 0.696743 0.507887 0.660935 -v 0.696743 0.507887 0.855381 -v 0.703887 0.082282 0.660935 -v 0.703887 0.082282 0.855380 -v 1.111403 0.507221 0.855381 -v 1.195337 0.468308 0.855381 -v 1.251507 0.355433 0.855380 -v 1.206910 0.231398 0.855380 -v 1.206910 0.231398 0.660935 -v 1.251507 0.355434 0.660935 -v 1.195337 0.468308 0.660935 -v 1.111403 0.507221 0.660935 -v 1.253884 0.511697 0.660935 -v 1.313270 0.365787 0.660935 -v 1.313270 0.365786 0.855380 -v 1.253884 0.511697 0.855381 -v 1.140229 0.561997 0.855381 -v 1.259001 0.205449 0.855380 -v 1.259001 0.205449 0.660935 -v 1.140229 0.561998 0.660935 -v 0.737429 0.538752 0.660935 -v 0.734303 0.040816 0.660935 -v 0.734303 0.040816 0.855380 -v 0.737429 0.538752 0.855381 -v -0.221208 0.539381 0.855381 -v -0.241917 0.029739 0.855381 -v -0.241917 0.029739 0.660935 -v -0.221208 0.539381 0.660935 -v -1.246477 0.643939 0.660935 -v -1.166775 0.156103 0.660935 -v -1.246477 0.643939 0.855381 -v -1.166774 0.156102 0.855380 -v -0.862708 0.521307 0.660935 -v -0.853331 0.043570 0.660935 -v -0.853331 0.043570 0.855380 -v -0.862708 0.521307 0.855381 -v -1.455213 0.532849 0.660935 -v -1.457355 0.339248 0.660935 -v -1.457355 0.339248 0.855381 -v -1.455213 0.532849 0.855381 -v -1.577361 0.565007 -0.851689 -v -1.577361 0.565007 0.931663 -v -1.446731 0.565007 0.039987 -v -0.939309 0.603378 -0.851689 -v -0.939309 0.603378 0.931664 -v -1.422660 0.666720 -0.851689 -v -1.422660 0.666720 0.931664 -v -1.422660 0.507895 0.039988 -v -0.233732 0.589251 -0.851689 -v -0.233732 0.589251 0.931664 -v 0.853378 0.596235 -0.851689 -v 0.853378 0.596235 0.931664 -v 1.096157 0.606791 0.039987 -v 1.248650 0.620652 0.039987 -v 1.248650 0.620652 -0.851689 -v 1.248650 0.620652 0.931663 -v 1.341684 0.563688 -0.851689 -v 1.341684 0.563688 0.931663 -v 1.341684 0.563688 0.039987 -v 1.381463 0.735060 -0.851689 -v 1.381463 0.735060 0.931664 -v 1.255348 0.825105 -0.851689 -v 1.255348 0.825105 0.931664 -v 0.612542 0.830768 -0.851689 -v 0.612542 0.830768 0.931664 -v -0.280308 0.840962 -0.851689 -v -0.280308 0.840962 0.931664 -v -0.973246 0.833350 -0.851689 -v -0.973246 0.833350 0.931664 -v -1.510920 0.665493 0.039987 -v -1.499334 0.765799 -0.851689 -v -1.499334 0.765799 0.931664 -v -1.641550 0.665492 -0.851689 -v -1.641550 0.665492 0.931664 -v -1.176594 0.715866 -0.851689 -v -1.176594 0.715866 0.931664 -v -1.267956 0.831710 -0.851689 -v -1.267956 0.831710 0.931664 -v 1.526225 0.620530 -0.851689 -v 1.526225 0.620530 0.931664 -v 1.436825 0.465698 0.039987 -v 1.436825 0.465698 -0.851689 -v 1.436825 0.465698 0.931663 -v 1.654922 0.477510 -0.851689 -v 1.654922 0.477510 0.931663 -v 1.654922 0.477510 0.039987 -v 1.551287 0.589238 -0.851689 -v 1.551287 0.589238 0.931664 -v -1.267956 0.874239 -0.851689 -v -1.267956 0.874239 0.931664 -v -1.267957 0.874240 0.039987 -v -1.641550 0.708022 -0.851689 -v -1.641550 0.708022 0.931664 -v -1.499334 0.808328 -0.851689 -v -1.499334 0.808328 0.931664 -v -1.510920 0.708022 0.039987 -v -1.368704 0.808329 0.039987 -v -0.973246 0.875880 0.039987 -v -0.973246 0.875880 -0.851689 -v -0.973246 0.875880 0.931664 -v -0.280308 0.883491 -0.851689 -v -0.280308 0.883491 0.931664 -v 0.612542 0.873298 -0.851689 -v 0.612542 0.873298 0.931664 -v 1.255348 0.867634 -0.851689 -v 1.255348 0.867634 0.931664 -v 1.255348 0.867634 -0.876186 -v 1.255348 0.867634 0.956160 -v 0.612542 0.873298 -0.876186 -v 0.612542 0.873298 0.956161 -v -0.280308 0.883491 -0.876186 -v -0.280308 0.883491 0.956161 -v -0.973246 0.875880 -0.876186 -v -0.973246 0.875880 0.956161 -v -1.499334 0.808328 -0.876186 -v -1.499334 0.808328 0.956160 -v -1.641550 0.708022 -0.876186 -v -1.641550 0.708022 0.956160 -v -1.267956 0.874239 -0.876186 -v -1.267956 0.874239 0.956161 -v -1.267956 0.831710 -0.876186 -v -1.267956 0.831710 0.956161 -v -1.641550 0.665492 -0.876186 -v -1.641550 0.665492 0.956160 -v -1.499334 0.765799 -0.876186 -v -1.499334 0.765799 0.956160 -v -0.973246 0.833350 -0.876186 -v -0.973246 0.833350 0.956161 -v -0.280308 0.840962 -0.876186 -v -0.280308 0.840962 0.956161 -v 0.612542 0.830768 -0.876186 -v 0.612542 0.830768 0.956161 -v 1.255348 0.825105 -0.876186 -v 1.255348 0.825105 0.956160 -v -1.446731 0.565007 -0.538841 -v -1.446731 0.565007 0.618816 -v -0.939309 0.603378 -0.461279 -v -0.939309 0.603378 0.541254 -v -1.422660 0.666720 -0.538841 -v -1.422660 0.666720 0.618816 -v -0.233732 0.589251 -0.461280 -v -0.233732 0.589251 0.541254 -v 1.096157 0.606790 -0.461279 -v 1.096157 0.606790 0.541254 -v 1.248650 0.620652 -0.461279 -v 1.248650 0.620652 0.541254 -v 1.341684 0.563688 -0.461279 -v 1.341684 0.563688 0.541254 -v -1.510920 0.665492 -0.538841 -v -1.510920 0.665492 0.618816 -v -1.176594 0.715866 -0.461279 -v -1.176594 0.715866 0.541254 -v 1.436825 0.465698 -0.461279 -v 1.436825 0.465698 0.541254 -v 1.654922 0.477510 -0.461279 -v 1.654922 0.477510 0.541254 -v -1.510920 0.708022 -0.538841 -v -1.510920 0.708022 0.618816 -v -0.973246 0.875880 -0.461280 -v -0.973246 0.875880 0.541255 -v -1.368704 0.808328 -0.538841 -v -1.368704 0.808328 0.618816 -v -1.267956 0.874240 -0.534759 -v -1.267956 0.874240 0.614734 -v -1.047296 0.235032 -0.496468 -v -1.047296 0.235032 0.594037 -v -0.852542 0.235032 -0.496468 -v -0.852542 0.235032 0.594037 -v -0.786714 0.235032 -0.496468 -v -0.786714 0.235032 0.594037 -v -0.232998 0.235032 -0.496468 -v -0.232998 0.235032 0.594037 -v 1.045946 0.504302 -0.461279 -v 1.045946 0.504302 0.541254 -v 1.045946 0.504302 0.039987 -v -1.047296 0.235032 0.039987 -v -0.852542 0.235032 0.039987 -v -0.786714 0.235032 0.039987 -v -0.232998 0.235032 0.039987 -v -1.577361 0.565007 -0.539361 -v -1.577361 0.565007 0.619336 -v -0.939309 0.603378 -0.539361 -v -0.939309 0.603378 0.619336 -v -1.422660 0.666720 -0.539361 -v -1.422660 0.666720 0.619336 -v -0.233732 0.589251 -0.539361 -v -0.233732 0.589251 0.619336 -v 0.853378 0.596235 -0.539361 -v 0.853378 0.596235 0.619336 -v 1.248650 0.620652 -0.539361 -v 1.248650 0.620652 0.619336 -v 1.341684 0.563688 -0.539361 -v 1.341684 0.563688 0.619336 -v -1.641550 0.665492 -0.539361 -v -1.641550 0.665492 0.619336 -v -1.176594 0.715866 -0.539361 -v -1.176594 0.715866 0.619336 -v 1.436825 0.465698 -0.539361 -v 1.436825 0.465698 0.619336 -v 1.654922 0.477510 -0.539361 -v 1.654922 0.477510 0.619336 -v -1.641550 0.708022 -0.539361 -v -1.641550 0.708022 0.619336 -v 1.255348 0.867634 -0.539361 -v 1.255348 0.867634 0.619336 -v 0.612542 0.873298 -0.539361 -v 0.612542 0.873298 0.619336 -v -0.280308 0.883492 -0.539362 -v -0.280308 0.883492 0.619336 -v -0.973246 0.875880 -0.539362 -v -0.973246 0.875880 0.619336 -v -1.499334 0.808328 -0.539361 -v -1.499334 0.808328 0.619336 -v -1.267956 0.874240 -0.539361 -v -1.267956 0.874240 0.619336 -v -0.278885 1.075182 -0.539362 -v -0.278885 1.075182 0.619336 -v -0.926462 1.070405 -0.539362 -v -0.926462 1.070405 0.619336 -v 0.613965 1.092280 -0.539361 -v 0.613965 1.092280 0.619336 -v 1.113885 1.067490 -0.539361 -v 1.113885 1.067490 0.619336 -v -0.926462 1.070405 -0.461280 -v -0.926462 1.070405 0.541255 -v -0.926462 1.070406 0.039987 -v -0.278939 1.105192 -0.434355 -v -0.278939 1.105192 0.514330 -v -0.278939 1.105192 0.039987 -v -0.926516 1.100415 0.039987 -v -0.926516 1.100415 -0.434355 -v -0.926516 1.100415 0.514330 -v -0.926516 1.100415 -0.497533 -v -0.926516 1.100415 0.577508 -v -0.278939 1.105192 -0.497533 -v -0.278939 1.105192 0.577508 -v 0.761021 0.596035 -0.851689 -v 0.761021 0.596035 0.931664 -v 0.518070 0.832464 -0.851689 -v 0.518070 0.832464 0.931664 -v 0.518070 0.874994 -0.851689 -v 0.518070 0.874994 0.931664 -v 0.518070 0.874994 -0.876186 -v 0.518070 0.874994 0.956161 -v 0.518070 0.832464 -0.876186 -v 0.518070 0.832464 0.956161 -v 0.761021 0.596035 -0.461280 -v 0.761021 0.596035 0.541254 -v 0.826258 0.251956 -0.496468 -v 0.826258 0.251956 0.594037 -v 0.826258 0.251956 0.039987 -v 0.761021 0.596035 -0.539361 -v 0.761021 0.596035 0.619336 -v 0.518070 0.874994 -0.539362 -v 0.518070 0.874994 0.619336 -v 0.519493 1.066684 -0.539362 -v 0.519493 1.066684 0.619336 -v 0.519439 1.096694 0.039987 -v 0.519439 1.096694 -0.497533 -v 0.519439 1.096694 0.577508 -v 0.519439 1.096694 -0.434355 -v 0.519439 1.096694 0.514330 -v 0.519439 1.140773 -0.434355 -v 0.519439 1.140773 0.514330 -v 0.519439 1.140773 -0.497533 -v 0.519439 1.140773 0.577508 -v 0.519439 1.140773 0.039987 -v 0.519493 1.110763 -0.539362 -v 0.519493 1.110763 0.619336 -v 0.613912 1.139077 -0.497533 -v 0.613912 1.139077 0.577508 -v 1.113831 1.141578 -0.497533 -v 1.113831 1.141578 0.577508 -v 1.113831 1.141578 -0.434355 -v 1.113831 1.141578 0.514330 -v 1.113831 1.141578 0.039987 -v 0.613912 1.139077 0.039987 -v 0.613912 1.139077 -0.434355 -v 0.613912 1.139077 0.514330 -v 1.113885 1.111568 -0.539361 -v 1.113885 1.111568 0.619336 -v 0.613965 1.109067 -0.539361 -v 0.613965 1.109067 0.619336 -v 1.223491 1.081898 -0.525092 -v 1.223491 1.081898 0.605067 -v 1.223491 1.081898 -0.447010 -v 1.223491 1.081898 0.526985 -v 1.223491 1.081898 0.039987 -v 1.171478 1.111908 0.039987 -v 1.171478 1.111908 -0.420085 -v 1.171478 1.111908 0.500060 -v 1.171478 1.111908 -0.483264 -v 1.171478 1.111908 0.563239 -v 1.379368 1.042543 0.039987 -v 1.379368 1.042543 -0.447010 -v 1.379368 1.042543 0.526985 -v 1.379368 1.042543 -0.483936 -v 1.379368 1.042543 0.563911 -v 1.388576 0.882838 -0.525092 -v 1.388576 0.882838 0.605067 -v 1.472182 0.889622 -0.525092 -v 1.472182 0.889622 0.605067 -v 1.667123 0.884977 -0.525092 -v 1.667123 0.884977 0.605067 -v 1.678602 0.765374 -0.525092 -v 1.678602 0.765374 0.605067 -v 1.678105 0.524436 -0.525092 -v 1.678105 0.524436 0.605066 -v 1.388576 0.882838 -0.447010 -v 1.388576 0.882838 0.526985 -v 1.472182 0.889622 -0.447010 -v 1.472182 0.889622 0.526985 -v 1.667123 0.884977 -0.447010 -v 1.667123 0.884977 0.526985 -v 1.678602 0.765374 -0.447010 -v 1.678602 0.765374 0.526985 -v 1.678105 0.524436 -0.447010 -v 1.678105 0.524436 0.526985 -v 1.472182 0.847092 -0.861916 -v 1.472182 0.847092 0.941891 -v 1.386214 0.837946 -0.861916 -v 1.386214 0.837946 0.941891 -v 1.586242 0.841199 -0.861916 -v 1.586242 0.841199 0.941891 -v 1.678602 0.765374 -0.861916 -v 1.678602 0.765374 0.941891 -v 1.667123 0.884976 -0.861916 -v 1.667123 0.884976 0.941891 -v 1.586242 0.883729 -0.861916 -v 1.586242 0.883729 0.941891 -v 1.388576 0.882838 -0.861916 -v 1.388576 0.882838 0.941891 -v 1.472182 0.889622 -0.861916 -v 1.472182 0.889622 0.941891 -v 1.472182 0.889622 -0.837419 -v 1.472182 0.889622 0.917394 -v 1.388576 0.882838 -0.837419 -v 1.388576 0.882838 0.917394 -v 1.667123 0.884976 -0.837419 -v 1.667123 0.884976 0.917394 -v 1.667123 0.884977 0.039987 -v 1.678602 0.765374 0.039987 -v 1.678602 0.765374 -0.837419 -v 1.678602 0.765374 0.917394 -v 1.678105 0.524436 0.039987 -v 1.678105 0.524436 -0.837419 -v 1.678105 0.524436 0.917394 -v 1.586242 0.841199 -0.837419 -v 1.586242 0.841199 0.917394 -v 1.386214 0.837946 -0.837419 -v 1.386214 0.837946 0.917394 -v 1.472182 0.847092 -0.837419 -v 1.472182 0.847092 0.917394 -v 1.723043 0.997585 0.039987 -v 1.589019 1.037178 0.039987 -v 1.474959 1.043071 0.039987 -v 1.723043 0.997585 -0.447010 -v 1.723043 0.997585 0.526985 -v 1.474959 1.043071 -0.447010 -v 1.474959 1.043071 0.526985 -v 1.589019 1.037178 -0.447010 -v 1.589019 1.037178 0.526985 -v 1.723043 0.997585 -0.483936 -v 1.723043 0.997585 0.563911 -v 1.474959 1.043071 -0.483936 -v 1.474959 1.043071 0.563911 -v 1.589019 1.037178 -0.483936 -v 1.589019 1.037178 0.563911 -v 1.361573 0.649374 -0.851689 -v 1.361573 0.649374 0.931664 -v 1.251999 0.722878 -0.851689 -v 1.251999 0.722878 0.931664 -v 0.606831 0.709639 -0.851689 -v 0.606831 0.709639 0.931664 -v -0.278244 0.715106 -0.851689 -v -0.278244 0.715106 0.931664 -v -0.956277 0.718364 -0.851689 -v -0.956277 0.718364 0.931664 -v -1.478825 0.615250 0.039987 -v -1.435341 0.748637 -0.851689 -v -1.435341 0.748637 0.931664 -v -1.609456 0.615250 -0.851689 -v -1.609456 0.615250 0.931664 -v -1.222275 0.773788 -0.851689 -v -1.222275 0.773788 0.931664 -v 1.481525 0.543114 -0.851689 -v 1.481525 0.543114 0.931664 -v 1.575227 0.539113 -0.851689 -v 1.575227 0.539113 0.931664 -v -1.478825 0.615250 -0.538841 -v -1.478825 0.615250 0.618816 -v -1.609456 0.615250 -0.539361 -v -1.609456 0.615250 0.619336 -v 0.510586 0.708971 -0.851689 -v 0.510586 0.708971 0.931664 -v 1.607020 0.598169 -0.837419 -v 1.607020 0.598169 0.917394 -v 1.607020 0.598170 0.039987 -v 1.607020 0.598170 -0.447010 -v 1.607020 0.598170 0.526985 -v 1.607020 0.598170 -0.525092 -v 1.607020 0.598170 0.605066 -v 1.569652 0.887299 -0.837419 -v 1.569652 0.887299 0.917394 -v 1.569652 0.887299 -0.525092 -v 1.569652 0.887299 0.605067 -v 1.198902 0.617679 0.039987 -v 1.198902 0.617679 -0.851689 -v 1.198902 0.617679 0.931663 -v 1.070532 0.825586 -0.851689 -v 1.070532 0.825586 0.931664 -v 1.070532 0.868116 -0.851689 -v 1.070532 0.868116 0.931664 -v 1.070532 0.868116 -0.876186 -v 1.070532 0.868116 0.956160 -v 1.070532 0.825586 -0.876186 -v 1.070532 0.825586 0.956160 -v 1.198902 0.617679 -0.461279 -v 1.198902 0.617679 0.541254 -v 1.198902 0.617679 -0.539361 -v 1.198902 0.617679 0.619336 -v 1.070532 0.868116 -0.539361 -v 1.070532 0.868116 0.619336 -v 1.071392 1.094569 -0.539361 -v 1.071392 1.094569 0.619336 -v 1.071392 1.111356 -0.539361 -v 1.071392 1.111356 0.619336 -v 1.071338 1.141366 0.039987 -v 1.071338 1.141366 -0.497533 -v 1.071338 1.141366 0.577508 -v 1.071338 1.141366 -0.434355 -v 1.071338 1.141366 0.514330 -v 1.083962 0.724583 -0.851689 -v 1.083962 0.724583 0.931664 -v 0.168644 0.587365 -0.851689 -v 0.168644 0.587365 0.931664 -v 0.118881 0.836713 -0.851689 -v 0.118881 0.836713 0.931664 -v 0.118881 0.879243 -0.851689 -v 0.118881 0.879243 0.931664 -v 0.118881 0.879243 -0.876186 -v 0.118881 0.879243 0.956161 -v 0.118881 0.836713 -0.876186 -v 0.118881 0.836713 0.956161 -v 0.168644 0.587365 -0.461280 -v 0.168644 0.587365 0.541254 -v 0.080240 0.232939 -0.496468 -v 0.080240 0.232939 0.594037 -v 0.080240 0.232939 0.039987 -v 0.168644 0.587365 -0.539361 -v 0.168644 0.587365 0.619336 -v 0.118881 0.879243 -0.539362 -v 0.118881 0.879243 0.619336 -v 0.120304 1.070933 -0.539362 -v 0.120304 1.070933 0.619336 -v 0.120250 1.100943 0.039987 -v 0.120250 1.100943 -0.497533 -v 0.120250 1.100943 0.577508 -v 0.120250 1.100943 -0.434355 -v 0.120250 1.100943 0.514330 -v 0.116171 0.712039 -0.851689 -v 0.116171 0.712039 0.931664 -v 0.087090 1.055393 -0.564162 -v 0.087090 1.055393 0.644137 -v 0.085903 0.895488 -0.564162 -v 0.085903 0.895488 0.644137 -v -0.245907 1.058937 -0.564162 -v -0.245907 1.058937 0.644137 -v -0.247094 0.899032 -0.564162 -v -0.247094 0.899032 0.644137 -v 0.162268 1.050261 -0.564162 -v 0.162268 1.050261 0.644137 -v 0.161145 0.899018 -0.564162 -v 0.161145 0.899018 0.644137 -v 0.477228 1.046909 -0.564162 -v 0.477228 1.046909 0.644137 -v 0.476105 0.895665 -0.564162 -v 0.476105 0.895665 0.644137 -v 1.015405 1.070430 -0.561682 -v 1.015405 1.070430 0.641656 -v 1.014755 0.892608 -0.561682 -v 1.014755 0.892608 0.641656 -v 0.669674 1.068700 -0.561682 -v 0.669674 1.068700 0.641656 -v 0.668598 0.896525 -0.561682 -v 0.668598 0.896525 0.641656 -v 1.028887 1.165599 -0.390334 -v 1.028887 1.165599 0.470309 -v 1.028887 1.165599 0.039987 -v 0.656362 1.163735 -0.390334 -v 0.656362 1.163735 0.470309 -v 0.656362 1.163735 0.039987 -v 0.505304 0.904293 -0.567322 -v 0.505304 0.904293 0.647297 -v 0.119306 0.908149 -0.567322 -v 0.119306 0.908149 0.647297 -v -0.266694 0.912005 -0.567322 -v -0.266694 0.912005 0.647297 -v 0.505304 0.904293 -0.823728 -v 0.505304 0.904293 0.903703 -v 0.119306 0.908149 -0.823728 -v 0.119306 0.908149 0.903703 -v -0.266694 0.912004 -0.823728 -v -0.266694 0.912004 0.903703 -v 0.596656 0.902754 -0.567322 -v 0.596656 0.902754 0.647297 -v 1.039513 0.898052 -0.567322 -v 1.039513 0.898052 0.647297 -v 1.218222 0.897615 -0.567322 -v 1.218222 0.897615 0.647297 -v 1.218222 0.897615 -0.823728 -v 1.218222 0.897615 0.903703 -v 1.039513 0.898052 -0.823728 -v 1.039513 0.898052 0.903703 -v 0.596656 0.902754 -0.823728 -v 0.596656 0.902754 0.903703 -v -0.936735 0.905098 -0.567322 -v -0.936735 0.905098 0.647297 -v -1.221708 0.903609 -0.567322 -v -1.221708 0.903609 0.647297 -v -1.221708 0.903609 -0.823728 -v -1.221708 0.903609 0.903703 -v -0.936735 0.905097 -0.823728 -v -0.936735 0.905097 0.903703 -vt 0.308549 0.123557 -vt 0.253325 0.122848 -vt 0.253067 0.117193 -vt 0.253349 0.139958 -vt 0.308577 0.139267 -vt 0.308568 0.145989 -vt 0.183023 0.122001 -vt 0.158248 0.121433 -vt 0.158348 0.117990 -vt 0.183042 0.140779 -vt 0.183036 0.144483 -vt 0.158364 0.144781 -vt 0.152314 0.121211 -vt 0.152446 0.117786 -vt 0.158265 0.141338 -vt 0.152461 0.144982 -vt 0.214985 0.122414 -vt 0.253089 0.145613 -vt 0.214919 0.144896 -vt 0.183019 0.118297 -vt 0.215006 0.140378 -vt 0.492649 0.246385 -vt 0.535237 0.234885 -vt 0.535927 0.240738 -vt 0.492124 0.354006 -vt 0.494118 0.349116 -vt 0.535062 0.360533 -vt 0.585555 0.236087 -vt 0.585417 0.243630 -vt 0.534252 0.366342 -vt 0.584363 0.358699 -vt 0.463307 0.264141 -vt 0.494548 0.251340 -vt 0.463307 0.335726 -vt 0.465711 0.331847 -vt 0.664057 0.234651 -vt 0.664930 0.243329 -vt 0.584342 0.366206 -vt 0.663473 0.360679 -vt 0.493000 0.238513 -vt 0.535289 0.227400 -vt 0.534146 0.373790 -vt 0.492308 0.361845 -vt 0.585836 0.227909 -vt 0.584448 0.374350 -vt 0.463933 0.256088 -vt 0.463761 0.343751 -vt 0.663896 0.225768 -vt 0.662073 0.378130 -vt 0.811601 0.436173 -vt 0.802614 0.496154 -vt 0.786727 0.496048 -vt 0.810803 0.556249 -vt 0.788516 0.558034 -vt 0.442277 0.282354 -vt 0.404022 0.282564 -vt 0.404022 0.274267 -vt 0.365766 0.282355 -vt 0.365897 0.273788 -vt 0.442269 0.292954 -vt 0.404022 0.293011 -vt 0.365774 0.292955 -vt 0.442089 0.309920 -vt 0.404022 0.309777 -vt 0.365955 0.309921 -vt 0.763778 0.495896 -vt 0.765045 0.430895 -vt 0.772344 0.431112 -vt 0.770757 0.495942 -vt 0.771483 0.560788 -vt 0.746894 0.495784 -vt 0.743486 0.436453 -vt 0.764181 0.560908 -vt 0.708182 0.495527 -vt 0.709254 0.448900 -vt 0.730512 0.441311 -vt 0.735230 0.495706 -vt 0.729790 0.550034 -vt 0.742698 0.555063 -vt 0.868206 0.461577 -vt 0.854540 0.464626 -vt 0.867741 0.531600 -vt 0.834012 0.558172 -vt 0.872835 0.460970 -vt 0.834833 0.434559 -vt 0.872361 0.532268 -vt 0.854484 0.557240 -vt 0.911661 0.461034 -vt 0.855291 0.435763 -vt 0.911184 0.532720 -vt 0.911645 0.560345 -vt 0.979206 0.497328 -vt 0.974187 0.460625 -vt 0.982738 0.457140 -vt 0.988669 0.497390 -vt 0.982204 0.537559 -vt 0.854928 0.496502 -vt 0.854117 0.528369 -vt 0.869483 0.496598 -vt 0.874108 0.496629 -vt 0.911129 0.496875 -vt 0.136089 0.117088 -vt 0.099754 0.115538 -vt 0.101582 0.072691 -vt 0.099762 0.147211 -vt 0.136102 0.145674 -vt 0.137914 0.188526 -vt 0.783567 0.418524 -vt 0.811226 0.433235 -vt 0.810389 0.559182 -vt 0.782537 0.573524 -vt 0.888966 0.115909 -vt 0.887769 0.072715 -vt 0.985366 0.070010 -vt 0.888880 0.146899 -vt 0.986444 0.149575 -vt 0.985260 0.192753 -vt 0.912868 0.426360 -vt 0.912489 0.433418 -vt 0.911931 0.567407 -vt 0.854425 0.564239 -vt 0.668731 0.122007 -vt 0.667537 0.078818 -vt 0.682622 0.078400 -vt 0.668720 0.140862 -vt 0.683800 0.141275 -vt 0.682616 0.184452 -vt 0.448435 0.282381 -vt 0.442146 0.273788 -vt 0.359609 0.282382 -vt 0.359483 0.273718 -vt 0.036927 0.112856 -vt 0.038755 0.070010 -vt 0.074779 0.071547 -vt 0.036927 0.149868 -vt 0.072956 0.148344 -vt 0.074768 0.191196 -vt 0.855326 0.428764 -vt 0.832589 0.564549 -vt 0.072951 0.114394 -vt 0.101574 0.190063 -vt 0.833496 0.428164 -vt 0.649845 0.122528 -vt 0.648652 0.079341 -vt 0.649840 0.140344 -vt 0.667535 0.184037 -vt 0.448358 0.292985 -vt 0.359686 0.292986 -vt 0.619643 0.123361 -vt 0.618451 0.080176 -vt 0.618462 0.182690 -vt 0.619647 0.139516 -vt 0.448341 0.310024 -vt 0.359703 0.310025 -vt 0.766488 0.413067 -vt 0.771261 0.413067 -vt 0.770160 0.578816 -vt 0.160109 0.075190 -vt 0.160109 0.187585 -vt 0.154273 0.187834 -vt 0.752511 0.426698 -vt 0.765387 0.578753 -vt 0.709015 0.443122 -vt 0.730115 0.439320 -vt 0.708635 0.542163 -vt 0.729366 0.552020 -vt 0.751592 0.564938 -vt 0.044546 0.369599 -vt 0.061335 0.358750 -vt 0.110398 0.366803 -vt 0.113065 0.255042 -vt 0.063663 0.260755 -vt 0.047406 0.249118 -vt 0.058568 0.351216 -vt 0.060541 0.268151 -vt 0.042183 0.257470 -vt 0.053724 0.309546 -vt 0.039727 0.361010 -vt 0.033492 0.309066 -vt 0.058891 0.309669 -vt 0.062064 0.347245 -vt 0.062780 0.354046 -vt 0.063845 0.272283 -vt 0.111043 0.360778 -vt 0.113423 0.261093 -vt 0.064883 0.265523 -vt 0.111715 0.354106 -vt 0.113776 0.267792 -vt 0.115066 0.311009 -vt 0.421111 0.124795 -vt 0.421267 0.129770 -vt 0.404622 0.129029 -vt 0.404656 0.133823 -vt 0.421301 0.133087 -vt 0.421144 0.138062 -vt 0.784172 0.233732 -vt 0.803351 0.234080 -vt 0.803032 0.239943 -vt 0.781916 0.372753 -vt 0.782135 0.367074 -vt 0.800811 0.366973 -vt 0.784185 0.225634 -vt 0.803260 0.225710 -vt 0.781757 0.380810 -vt 0.801004 0.372813 -vt 0.952899 0.465731 -vt 0.952481 0.528571 -vt 0.973699 0.533960 -vt 0.955253 0.497168 -vt 0.777672 0.118993 -vt 0.764899 0.119346 -vt 0.763703 0.076154 -vt 0.777624 0.143848 -vt 0.776440 0.187026 -vt 0.763671 0.186676 -vt 0.979772 0.446402 -vt 0.986906 0.451197 -vt 0.979095 0.548256 -vt 0.975639 0.542385 -vt 0.190218 0.393625 -vt 0.192509 0.368876 -vt 0.203758 0.369579 -vt 0.206513 0.256735 -vt 0.195231 0.256898 -vt 0.194125 0.232039 -vt 0.196839 0.312991 -vt 0.195642 0.355777 -vt 0.190747 0.356114 -vt 0.197732 0.270146 -vt 0.191184 0.312852 -vt 0.195776 0.361357 -vt 0.191845 0.362926 -vt 0.192854 0.269572 -vt 0.194281 0.262814 -vt 0.195253 0.365284 -vt 0.198135 0.264573 -vt 0.204003 0.367319 -vt 0.206650 0.259008 -vt 0.197801 0.260622 -vt 0.204267 0.361986 -vt 0.204415 0.356313 -vt 0.206657 0.264354 -vt 0.206531 0.270035 -vt 0.205354 0.313202 -vt 0.247523 0.364077 -vt 0.253931 0.364117 -vt 0.259147 0.369482 -vt 0.261898 0.259503 -vt 0.256424 0.264607 -vt 0.250021 0.264335 -vt 0.254939 0.357821 -vt 0.257122 0.270946 -vt 0.250751 0.270289 -vt 0.257856 0.314410 -vt 0.248541 0.358166 -vt 0.251725 0.314254 -vt 0.247525 0.369108 -vt 0.277173 0.369443 -vt 0.279910 0.260428 -vt 0.250266 0.259306 -vt 0.247984 0.373977 -vt 0.281975 0.388514 -vt 0.285653 0.241594 -vt 0.250963 0.254462 -vt 0.447181 0.314254 -vt 0.440903 0.314362 -vt 0.367141 0.314363 -vt 0.360864 0.314255 -vt 0.612351 0.121587 -vt 0.611160 0.078403 -vt 0.611172 0.184463 -vt 0.612358 0.141290 -vt 0.404022 0.314616 -vt 0.925926 0.225223 -vt 0.925070 0.233201 -vt 0.901245 0.234190 -vt 0.922763 0.384224 -vt 0.898275 0.382484 -vt 0.898401 0.374780 -vt 0.925500 0.237404 -vt 0.922598 0.372098 -vt 0.922081 0.376270 -vt 0.517877 0.124167 -vt 0.517969 0.127545 -vt 0.498762 0.130174 -vt 0.517906 0.138709 -vt 0.498681 0.136358 -vt 0.498794 0.132699 -vt 0.959320 0.238908 -vt 0.976952 0.249716 -vt 0.954531 0.282475 -vt 0.956273 0.371321 -vt 0.947742 0.333418 -vt 0.952437 0.327880 -vt 0.923893 0.255725 -vt 0.940238 0.236590 -vt 0.937241 0.373221 -vt 0.921389 0.353838 -vt 0.901698 0.238624 -vt 0.898945 0.370379 -vt 0.529552 0.127238 -vt 0.529580 0.135640 -vt 0.529490 0.139024 -vt 0.573138 0.126055 -vt 0.556524 0.126521 -vt 0.556426 0.123133 -vt 0.573155 0.136825 -vt 0.573060 0.140212 -vt 0.556448 0.139746 -vt 0.960737 0.234693 -vt 0.979385 0.245640 -vt 0.957593 0.375544 -vt 0.974043 0.360945 -vt 0.940328 0.232462 -vt 0.937244 0.377329 -vt 0.960677 0.227072 -vt 0.974495 0.225685 -vt 0.957371 0.383123 -vt 0.976377 0.365051 -vt 0.940755 0.224963 -vt 0.937508 0.384798 -vt 0.441065 0.336268 -vt 0.441048 0.345439 -vt 0.404023 0.345367 -vt 0.366998 0.345440 -vt 0.366980 0.336269 -vt 0.404022 0.336226 -vt 0.573043 0.122667 -vt 0.555249 0.079944 -vt 0.555271 0.182927 -vt 0.447013 0.345463 -vt 0.361032 0.345465 -vt 0.360994 0.336285 -vt 0.328085 0.255810 -vt 0.328085 0.247423 -vt 0.335893 0.247423 -vt 0.360192 0.397721 -vt 0.352385 0.397721 -vt 0.352385 0.389334 -vt 0.328085 0.231427 -vt 0.360192 0.373338 -vt 0.360192 0.389334 -vt 0.260704 0.361471 -vt 0.263674 0.314557 -vt 0.279694 0.314961 -vt 0.263060 0.267584 -vt 0.280574 0.264608 -vt 0.278042 0.365303 -vt 0.335893 0.255810 -vt 0.331777 0.271156 -vt 0.328085 0.271156 -vt 0.360192 0.413067 -vt 0.316643 0.375857 -vt 0.311161 0.364689 -vt 0.311746 0.361795 -vt 0.314055 0.269801 -vt 0.313616 0.266882 -vt 0.319651 0.256004 -vt 0.315019 0.315849 -vt 0.328085 0.316177 -vt 0.325508 0.264879 -vt 0.300901 0.315494 -vt 0.299850 0.363096 -vt 0.288108 0.365613 -vt 0.289402 0.315205 -vt 0.290641 0.264804 -vt 0.302241 0.267906 -vt 0.300603 0.366807 -vt 0.288971 0.369685 -vt 0.291708 0.260780 -vt 0.303179 0.264237 -vt 0.287988 0.369501 -vt 0.287093 0.386216 -vt 0.278264 0.386589 -vt 0.290717 0.260915 -vt 0.280650 0.260719 -vt 0.281863 0.243362 -vt 0.277923 0.369192 -vt 0.915946 0.286552 -vt 0.899396 0.275421 -vt 0.900632 0.257272 -vt 0.898281 0.351804 -vt 0.897438 0.333722 -vt 0.914140 0.323002 -vt 0.919997 0.271046 -vt 0.917839 0.338513 -vt 0.672606 0.275972 -vt 0.588687 0.273894 -vt 0.586402 0.258828 -vt 0.585664 0.343597 -vt 0.588255 0.328655 -vt 0.671802 0.328360 -vt 0.666427 0.259506 -vt 0.665306 0.344614 -vt 0.477483 0.288626 -vt 0.471661 0.278733 -vt 0.505964 0.254985 -vt 0.477923 0.311665 -vt 0.517354 0.342752 -vt 0.505551 0.345730 -vt 0.465640 0.268089 -vt 0.471924 0.321385 -vt 0.551823 0.260300 -vt 0.517759 0.258227 -vt 0.551289 0.341405 -vt 0.543894 0.250890 -vt 0.543202 0.350600 -vt 0.949934 0.276809 -vt 0.941674 0.290843 -vt 0.939825 0.319281 -vt 0.933278 0.305010 -vt 0.931774 0.305010 -vt 0.958909 0.291686 -vt 0.956988 0.318809 -vt 0.973497 0.303148 -vt 0.971743 0.307718 -vt 0.778780 0.495996 -vt 0.781048 0.432915 -vt 0.780210 0.559101 -vt 0.789340 0.434092 -vt 0.776964 0.416235 -vt 0.775904 0.575725 -vt 0.137917 0.074242 -vt 0.146096 0.074590 -vt 0.144268 0.117437 -vt 0.144281 0.145328 -vt 0.154275 0.074939 -vt 0.146093 0.188180 -vt 0.808266 0.278621 -vt 0.794123 0.278709 -vt 0.784376 0.259530 -vt 0.782666 0.347089 -vt 0.792771 0.328213 -vt 0.806840 0.328602 -vt 0.784271 0.239441 -vt 0.798428 0.347367 -vt 0.965010 0.280642 -vt 0.978050 0.294266 -vt 0.962822 0.329926 -vt 0.441031 0.322297 -vt 0.367014 0.322298 -vt 0.404022 0.322380 -vt 0.598190 0.121976 -vt 0.598201 0.140902 -vt 0.571855 0.079488 -vt 0.597015 0.184073 -vt 0.447114 0.322301 -vt 0.360930 0.322302 -vt 0.447051 0.336284 -vt 0.306667 0.381829 -vt 0.309988 0.249540 -vt 0.296421 0.386343 -vt 0.299982 0.244519 -vt 0.545341 0.126849 -vt 0.542943 0.123498 -vt 0.542967 0.139381 -vt 0.545366 0.136030 -vt 0.556545 0.136359 -vt 0.529463 0.123853 -vt 0.470014 0.131434 -vt 0.470075 0.127060 -vt 0.470108 0.135807 -vt 0.866709 0.235909 -vt 0.866932 0.241465 -vt 0.864419 0.366815 -vt 0.864079 0.372337 -vt 0.866531 0.227748 -vt 0.800737 0.381138 -vt 0.901283 0.226447 -vt 0.863729 0.380452 -vt 0.442849 0.226945 -vt 0.442163 0.269349 -vt 0.404022 0.269280 -vt 0.365194 0.226945 -vt 0.404022 0.227094 -vt 0.365880 0.269350 -vt 0.690709 0.121400 -vt 0.689513 0.078209 -vt 0.764856 0.143498 -vt 0.689506 0.184641 -vt 0.683816 0.121590 -vt 0.690690 0.141464 -vt 0.449036 0.227009 -vt 0.448601 0.269522 -vt 0.359007 0.227009 -vt 0.448560 0.273718 -vt 0.359442 0.269522 -vt 0.242735 0.371325 -vt 0.266771 0.393672 -vt 0.245586 0.256859 -vt 0.248722 0.231427 -vt 0.270704 0.235686 -vt 0.242866 0.368993 -vt 0.245605 0.259195 -vt 0.243272 0.363723 -vt 0.245757 0.264482 -vt 0.243878 0.357745 -vt 0.246075 0.270483 -vt 0.246062 0.314110 -vt 0.890605 0.275530 -vt 0.870518 0.257570 -vt 0.868329 0.350868 -vt 0.800218 0.259588 -vt 0.888694 0.333427 -vt 0.404882 0.124097 -vt 0.357402 0.126234 -vt 0.404915 0.138755 -vt 0.357582 0.142867 -vt 0.308542 0.116836 -vt 0.357433 0.136606 -vt 0.725106 0.232732 -vt 0.725407 0.240474 -vt 0.662421 0.369294 -vt 0.723588 0.364799 -vt 0.723125 0.372497 -vt 0.724923 0.224963 -vt 0.722778 0.380223 -vt 0.976238 0.452226 -vt 0.933849 0.462621 -vt 0.933392 0.531429 -vt 0.945974 0.438164 -vt 0.945190 0.556044 -vt 0.932749 0.497019 -vt 0.833319 0.117451 -vt 0.832122 0.074258 -vt 0.887696 0.190077 -vt 0.832068 0.188552 -vt 0.776475 0.075800 -vt 0.833252 0.145373 -vt 0.947884 0.431723 -vt 0.947015 0.562511 -vt 0.150046 0.362954 -vt 0.149858 0.367898 -vt 0.152550 0.255830 -vt 0.152501 0.260781 -vt 0.150278 0.356638 -vt 0.152430 0.267103 -vt 0.152416 0.311907 -vt 0.732391 0.277898 -vt 0.724813 0.259091 -vt 0.723391 0.346263 -vt 0.731330 0.327710 -vt 0.148671 0.392258 -vt 0.144048 0.388057 -vt 0.144345 0.371987 -vt 0.147235 0.251481 -vt 0.147705 0.235405 -vt 0.152525 0.231427 -vt 0.114945 0.370407 -vt 0.114819 0.385447 -vt 0.118370 0.236623 -vt 0.113461 0.232692 -vt 0.117780 0.251657 -vt 0.155493 0.371821 -vt 0.155171 0.387929 -vt 0.158815 0.236063 -vt 0.158369 0.252179 -vt 0.185669 0.373228 -vt 0.188601 0.252219 -vt 0.184943 0.389429 -vt 0.188650 0.235984 -vt 0.237035 0.392158 -vt 0.236343 0.374847 -vt 0.240889 0.235752 -vt 0.209911 0.373900 -vt 0.212876 0.252708 -vt 0.239363 0.253030 -vt 0.207944 0.390513 -vt 0.244640 0.396847 -vt 0.211706 0.235999 -vt 0.204675 0.231588 -vt 0.200720 0.394576 -vt 0.239397 0.352789 -vt 0.240349 0.314371 -vt 0.240377 0.313533 -vt 0.241358 0.275223 -vt 0.209169 0.351896 -vt 0.211068 0.274681 -vt 0.405147 0.365394 -vt 0.404325 0.398279 -vt 0.398504 0.407486 -vt 0.210967 0.313768 -vt 0.210995 0.312940 -vt 0.406595 0.077908 -vt 0.404650 0.083799 -vt 0.358724 0.084093 -vt 0.358743 0.178749 -vt 0.404673 0.179054 -vt 0.406616 0.184947 -vt 0.312618 0.085037 -vt 0.310206 0.078664 -vt 0.358676 0.184789 -vt 0.310220 0.184164 -vt 0.357961 0.113951 -vt 0.403579 0.117744 -vt 0.357989 0.148889 -vt 0.311190 0.110520 -vt 0.311214 0.152306 -vt 0.472848 0.080940 -vt 0.467860 0.086723 -vt 0.417640 0.084104 -vt 0.417663 0.178752 -vt 0.467886 0.176144 -vt 0.472873 0.181927 -vt 0.498215 0.083456 -vt 0.492137 0.088188 -vt 0.492163 0.174682 -vt 0.498241 0.179414 -vt 0.465851 0.120918 -vt 0.491730 0.120873 -vt 0.498650 0.126514 -vt 0.465883 0.141948 -vt 0.418100 0.118287 -vt 0.418131 0.144569 -vt 0.420362 0.078175 -vt 0.420384 0.184682 -vt 0.403610 0.145108 -vt 0.258434 0.085124 -vt 0.222379 0.083460 -vt 0.215614 0.078414 -vt 0.258446 0.177686 -vt 0.253209 0.183630 -vt 0.215619 0.184382 -vt 0.253200 0.079179 -vt 0.312635 0.177791 -vt 0.221613 0.112854 -vt 0.222387 0.179338 -vt 0.491761 0.141997 -vt 0.258032 0.111351 -vt 0.258052 0.151457 -vt 0.214900 0.117896 -vt 0.221631 0.149941 -vt 0.152330 0.141558 -vt 0.808976 0.496196 -vt 0.986563 0.113203 -vt 0.038739 0.192720 -vt 0.648655 0.183519 -vt 0.708319 0.547937 -vt 0.109730 0.389138 -vt 0.986292 0.543556 -vt 0.517998 0.135331 -vt 0.971087 0.384798 -vt 0.571874 0.183382 -vt 0.331777 0.231427 -vt 0.356500 0.373338 -vt 0.356500 0.413067 -vt 0.322939 0.367286 -vt 0.290661 0.244178 -vt 0.976084 0.316650 -vt 0.597000 0.078795 -vt 0.357552 0.119973 -vt 0.400446 0.361788 -vt 0.358659 0.078053 -vt 0.184153 0.076477 -vt 0.184154 0.186307 -vt 0.516704 0.080988 -vt 0.516729 0.181884 -vt 0.528300 0.080675 -vt 0.528324 0.182197 -vt 0.541775 0.080311 -vt 0.541798 0.182561 -vt 0.099034 0.616504 -vt 0.110178 0.658380 -vt 0.087801 0.658358 -vt 0.266106 0.700256 -vt 0.254873 0.658402 -vt 0.277250 0.658380 -vt 0.068434 0.647121 -vt 0.235506 0.669638 -vt 0.057266 0.627681 -vt 0.224338 0.689079 -vt 0.057290 0.605245 -vt 0.224363 0.711515 -vt 0.068500 0.585826 -vt 0.235572 0.730933 -vt 0.087891 0.574628 -vt 0.254963 0.742132 -vt 0.110268 0.574649 -vt 0.277340 0.742111 -vt 0.129635 0.585886 -vt 0.296707 0.730874 -vt 0.140802 0.605327 -vt 0.307874 0.711433 -vt 0.140778 0.627762 -vt 0.307850 0.688998 -vt 0.129569 0.647181 -vt 0.296641 0.669579 -vt 0.161177 0.926259 -vt 0.161118 0.945736 -vt 0.148301 0.945697 -vt 0.161049 0.968173 -vt 0.148232 0.968133 -vt 0.160990 0.987556 -vt 0.148173 0.987516 -vt 0.989843 0.805188 -vt 0.989825 0.824625 -vt 0.977008 0.824613 -vt 0.989803 0.847061 -vt 0.976987 0.847049 -vt 0.989785 0.866485 -vt 0.976969 0.866473 -vt 0.976882 0.464508 -vt 0.976942 0.444771 -vt 0.989759 0.444810 -vt 0.977011 0.422343 -vt 0.989827 0.422383 -vt 0.977069 0.403235 -vt 0.989886 0.403275 -vt 0.987248 0.009420 -vt 0.987189 0.028689 -vt 0.974372 0.028650 -vt 0.987120 0.051123 -vt 0.974304 0.051084 -vt 0.987060 0.070710 -vt 0.974244 0.070671 -vt 0.341734 0.950143 -vt 0.365020 0.950215 -vt 0.364964 0.968718 -vt 0.341799 0.928951 -vt 0.365085 0.929022 -vt 0.341855 0.910748 -vt 0.365141 0.910820 -vt 0.407040 0.952066 -vt 0.430326 0.951995 -vt 0.430381 0.970045 -vt 0.406975 0.930880 -vt 0.430261 0.930809 -vt 0.406918 0.912235 -vt 0.430204 0.912164 -vt 0.081073 0.953637 -vt 0.104358 0.953659 -vt 0.104341 0.972007 -vt 0.081093 0.932442 -vt 0.104379 0.932465 -vt 0.081110 0.914081 -vt 0.104396 0.914103 -vt 0.247680 0.929058 -vt 0.224394 0.929130 -vt 0.224338 0.910819 -vt 0.247745 0.950253 -vt 0.224459 0.950324 -vt 0.247801 0.968652 -vt 0.224516 0.968723 -vt 0.125567 0.810670 -vt 0.107249 0.821249 -vt 0.096722 0.781691 -vt 0.639463 0.726515 -vt 0.657781 0.737094 -vt 0.628937 0.766073 -vt 0.136156 0.792326 -vt 0.668370 0.755438 -vt 0.136179 0.771132 -vt 0.668393 0.776632 -vt 0.125629 0.752768 -vt 0.657844 0.794996 -vt 0.107334 0.742153 -vt 0.639549 0.805611 -vt 0.086196 0.742132 -vt 0.618410 0.805632 -vt 0.067878 0.752711 -vt 0.600092 0.795053 -vt 0.057289 0.771055 -vt 0.589503 0.776709 -vt 0.057266 0.792249 -vt 0.589480 0.755515 -vt 0.067816 0.810614 -vt 0.600030 0.737150 -vt 0.086111 0.821229 -vt 0.618325 0.726535 -vt 0.745307 0.891604 -vt 0.745261 0.906414 -vt 0.710605 0.906308 -vt 0.745359 0.874642 -vt 0.710651 0.891498 -vt 0.745403 0.860073 -vt 0.710702 0.874536 -vt 0.407021 0.878562 -vt 0.407060 0.865729 -vt 0.441716 0.865836 -vt 0.406964 0.897134 -vt 0.441677 0.878669 -vt 0.406918 0.912057 -vt 0.441620 0.897240 -vt 0.624151 0.899728 -vt 0.624137 0.914414 -vt 0.589480 0.914381 -vt 0.624167 0.882764 -vt 0.589494 0.899695 -vt 0.624181 0.868068 -vt 0.589510 0.882731 -vt 0.406821 0.853046 -vt 0.406777 0.867701 -vt 0.372120 0.867595 -vt 0.406873 0.836082 -vt 0.372165 0.852939 -vt 0.406918 0.821356 -vt 0.372217 0.835976 -vt 0.777691 0.813404 -vt 0.791935 0.789839 -vt 0.806596 0.798307 -vt 0.777691 0.766274 -vt 0.806596 0.781372 -vt 0.815072 0.812989 -vt 0.815072 0.766689 -vt 0.815090 0.829953 -vt 0.815090 0.749726 -vt 0.810165 0.847774 -vt 0.810165 0.731905 -vt 0.792003 0.853147 -vt 0.792003 0.726531 -vt 0.775084 0.853164 -vt 0.775084 0.726515 -vt 0.760423 0.844696 -vt 0.760423 0.734982 -vt 0.751947 0.830014 -vt 0.751947 0.749665 -vt 0.751929 0.813051 -vt 0.751929 0.766628 -vt 0.760373 0.798352 -vt 0.760373 0.781327 -vt 0.775016 0.789856 -vt 0.775016 0.789823 -vt 0.939257 0.704385 -vt 0.938523 0.944190 -vt 0.935888 0.944182 -vt 0.942275 0.704395 -vt 0.941541 0.944199 -vt 0.944868 0.704403 -vt 0.944134 0.944207 -vt 0.960273 0.464530 -vt 0.959539 0.224726 -vt 0.962110 0.224718 -vt 0.957255 0.464539 -vt 0.956521 0.224735 -vt 0.954600 0.464548 -vt 0.953866 0.224743 -vt 0.011821 0.730707 -vt 0.011595 0.970513 -vt 0.008981 0.970510 -vt 0.014840 0.730710 -vt 0.014613 0.970516 -vt 0.017455 0.730713 -vt 0.017229 0.970518 -vt 0.310482 0.490892 -vt 0.311216 0.730697 -vt 0.308608 0.730705 -vt 0.313501 0.490883 -vt 0.314235 0.730688 -vt 0.316122 0.490875 -vt 0.316856 0.730680 -vt 0.788843 0.725004 -vt 0.786227 0.726515 -vt 0.784724 0.720866 -vt 0.763690 0.475257 -vt 0.766306 0.476768 -vt 0.762187 0.480906 -vt 0.790355 0.722385 -vt 0.767818 0.479388 -vt 0.790358 0.719358 -vt 0.767821 0.482414 -vt 0.788852 0.716736 -vt 0.766315 0.485037 -vt 0.786239 0.715220 -vt 0.763702 0.486552 -vt 0.783221 0.715217 -vt 0.760684 0.486555 -vt 0.780605 0.716728 -vt 0.758068 0.485045 -vt 0.779093 0.719347 -vt 0.756556 0.482425 -vt 0.779090 0.722374 -vt 0.756553 0.479399 -vt 0.780596 0.724996 -vt 0.758059 0.476776 -vt 0.783209 0.726512 -vt 0.760671 0.475260 -vt 0.771940 0.715220 -vt 0.774958 0.715217 -vt 0.773455 0.720866 -vt 0.786227 0.486555 -vt 0.783209 0.486552 -vt 0.784724 0.480906 -vt 0.769327 0.716736 -vt 0.780596 0.485037 -vt 0.767821 0.719358 -vt 0.779090 0.482414 -vt 0.767824 0.722385 -vt 0.779093 0.479388 -vt 0.769336 0.725004 -vt 0.780605 0.476768 -vt 0.771952 0.726515 -vt 0.783221 0.475257 -vt 0.774971 0.726512 -vt 0.786239 0.475260 -vt 0.777583 0.724996 -vt 0.788852 0.476776 -vt 0.790358 0.479399 -vt 0.790355 0.482425 -vt 0.777574 0.716728 -vt 0.788843 0.485045 -vt 0.900895 0.479660 -vt 0.901628 0.719464 -vt 0.899008 0.719472 -vt 0.898274 0.479668 -vt 0.895989 0.719482 -vt 0.895255 0.479677 -vt 0.893381 0.719490 -vt 0.971300 0.704385 -vt 0.971074 0.944191 -vt 0.968458 0.944188 -vt 0.968685 0.704383 -vt 0.965439 0.944185 -vt 0.965666 0.704380 -vt 0.962826 0.944183 -vt 0.954582 0.704377 -vt 0.953848 0.464573 -vt 0.956504 0.464565 -vt 0.957237 0.704369 -vt 0.959521 0.464555 -vt 0.962826 0.704352 -vt 0.960255 0.704360 -vt 0.953848 0.704403 -vt 0.953114 0.944207 -vt 0.950522 0.944199 -vt 0.951255 0.704395 -vt 0.947503 0.944190 -vt 0.945601 0.704377 -vt 0.948237 0.704385 -vt 0.939277 0.224726 -vt 0.938543 0.464530 -vt 0.935908 0.464522 -vt 0.942295 0.224735 -vt 0.941561 0.464540 -vt 0.944888 0.224743 -vt 0.944154 0.464548 -vt 0.960255 0.944190 -vt 0.959521 0.704385 -vt 0.962092 0.704377 -vt 0.957237 0.944199 -vt 0.956504 0.704395 -vt 0.954582 0.944207 -vt 0.965684 0.224737 -vt 0.965457 0.464542 -vt 0.962844 0.464540 -vt 0.968703 0.224740 -vt 0.968476 0.464545 -vt 0.971318 0.224742 -vt 0.971091 0.464548 -vt 0.002608 0.490892 -vt 0.003342 0.730697 -vt 0.000734 0.730705 -vt 0.005627 0.490883 -vt 0.006361 0.730688 -vt 0.008247 0.490875 -vt 0.008981 0.730680 -vt 0.800111 0.725004 -vt 0.797496 0.726515 -vt 0.795992 0.720866 -vt 0.763690 0.715217 -vt 0.766306 0.716728 -vt 0.762187 0.720866 -vt 0.801624 0.722385 -vt 0.767818 0.719347 -vt 0.801627 0.719358 -vt 0.800120 0.716736 -vt 0.766315 0.724996 -vt 0.797508 0.715220 -vt 0.763702 0.726512 -vt 0.794489 0.715217 -vt 0.760684 0.726515 -vt 0.791874 0.716728 -vt 0.758068 0.725004 -vt 0.790361 0.719347 -vt 0.756556 0.722385 -vt 0.756552 0.719358 -vt 0.791865 0.724996 -vt 0.758059 0.716736 -vt 0.794477 0.726512 -vt 0.760671 0.715220 -vt 0.771940 0.475260 -vt 0.774959 0.475257 -vt 0.773455 0.480906 -vt 0.797496 0.486555 -vt 0.794477 0.486552 -vt 0.795993 0.480906 -vt 0.769328 0.476776 -vt 0.791865 0.485037 -vt 0.769336 0.485045 -vt 0.791874 0.476768 -vt 0.771952 0.486555 -vt 0.794489 0.475257 -vt 0.774971 0.486552 -vt 0.797508 0.475260 -vt 0.777583 0.485037 -vt 0.800120 0.476776 -vt 0.801627 0.479399 -vt 0.801624 0.482425 -vt 0.777574 0.476768 -vt 0.800112 0.485045 -vt 0.326724 0.490875 -vt 0.327458 0.730680 -vt 0.324837 0.730688 -vt 0.324104 0.490883 -vt 0.321819 0.730697 -vt 0.321085 0.490892 -vt 0.319211 0.730705 -vt 0.008755 0.970518 -vt 0.006139 0.970516 -vt 0.003121 0.970513 -vt 0.000507 0.970510 -vt 0.945622 0.464548 -vt 0.947543 0.224735 -vt 0.948277 0.464539 -vt 0.950561 0.224726 -vt 0.951295 0.464530 -vt 0.953132 0.224718 -vt 0.953114 0.704377 -vt 0.950522 0.704369 -vt 0.951255 0.464565 -vt 0.947503 0.704360 -vt 0.948237 0.464556 -vt 0.311993 0.730708 -vt 0.315012 0.730705 -vt 0.313509 0.736354 -vt 0.808764 0.486555 -vt 0.805746 0.486552 -vt 0.807261 0.480906 -vt 0.309381 0.732224 -vt 0.803133 0.485036 -vt 0.307874 0.734846 -vt 0.307878 0.737872 -vt 0.309390 0.740492 -vt 0.803142 0.476768 -vt 0.312006 0.742003 -vt 0.805758 0.475257 -vt 0.315024 0.742000 -vt 0.808776 0.475260 -vt 0.317637 0.740484 -vt 0.811389 0.476776 -vt 0.319143 0.737862 -vt 0.812895 0.479399 -vt 0.319140 0.734835 -vt 0.812892 0.482425 -vt 0.317628 0.732216 -vt 0.811380 0.485045 -vt 0.017229 0.490875 -vt 0.017962 0.730680 -vt 0.015342 0.730688 -vt 0.014608 0.490883 -vt 0.012323 0.730697 -vt 0.011589 0.490892 -vt 0.009715 0.730705 -vt 0.971300 0.464572 -vt 0.971074 0.704377 -vt 0.968458 0.704375 -vt 0.968685 0.464569 -vt 0.965439 0.704372 -vt 0.965666 0.464566 -vt 0.893384 0.959320 -vt 0.892650 0.719515 -vt 0.895306 0.719507 -vt 0.896040 0.959311 -vt 0.898324 0.719498 -vt 0.899057 0.959302 -vt 0.900895 0.719490 -vt 0.944868 0.464573 -vt 0.944134 0.704377 -vt 0.941541 0.704369 -vt 0.942275 0.464565 -vt 0.938523 0.704360 -vt 0.939257 0.464556 -vt 0.935888 0.704352 -vt 0.148361 0.926220 -vt 0.977027 0.805175 -vt 0.989698 0.464548 -vt 0.974431 0.009380 -vt 0.341678 0.968646 -vt 0.407096 0.970117 -vt 0.081056 0.971985 -vt 0.247624 0.910748 -vt 0.710747 0.859966 -vt 0.441575 0.912164 -vt 0.589524 0.868035 -vt 0.372262 0.821249 -vt 0.936621 0.704377 -vt 0.009208 0.730705 -vt 0.307874 0.490900 -vt 0.892647 0.479685 -vt 0.963053 0.704377 -vt 0.962092 0.464548 -vt 0.944868 0.944182 -vt 0.936641 0.224718 -vt 0.963070 0.224734 -vt 0.000000 0.490900 -vt 0.318477 0.490900 -vt 0.953866 0.464522 -vt 0.008981 0.490900 -vt 0.963053 0.464564 -vt 0.901628 0.959294 -vt 0.936621 0.464548 -vt 0.327482 0.011534 -vt 0.336355 0.031992 -vt 0.325701 0.036705 -vt 0.437870 0.454170 -vt 0.448524 0.458883 -vt 0.439651 0.479341 -vt 0.318810 0.021584 -vt 0.297606 0.010852 -vt 0.412155 0.490875 -vt 0.409775 0.480023 -vt 0.299986 0.000000 -vt 0.273615 0.017865 -vt 0.381164 0.482407 -vt 0.385784 0.473010 -vt 0.187817 0.490875 -vt 0.156825 0.482407 -vt 0.161445 0.473010 -vt 0.049276 0.017865 -vt 0.044656 0.008468 -vt 0.075647 0.000000 -vt 0.215312 0.479341 -vt 0.185437 0.480023 -vt 0.073268 0.010852 -vt 0.103143 0.011534 -vt 0.206641 0.469291 -vt 0.213531 0.454170 -vt 0.112017 0.031992 -vt 0.101362 0.036705 -vt 0.121957 0.390759 -vt 0.129683 0.385086 -vt 0.017514 0.105789 -vt 0.009788 0.100116 -vt 0.268995 0.008468 -vt 0.241852 0.105789 -vt 0.346296 0.390759 -vt 0.354022 0.385086 -vt 0.224186 0.458883 -vt 0.210965 0.380820 -vt 0.104958 0.103077 -vt 0.098796 0.110055 -vt 0.329296 0.103077 -vt 0.323134 0.110055 -vt 0.435303 0.380820 -vt 0.441465 0.387798 -vt 0.323188 0.272647 -vt 0.317364 0.271042 -vt 0.429533 0.219833 -vt 0.435358 0.218228 -vt 0.234126 0.100116 -vt 0.231657 0.272174 -vt 0.337837 0.218161 -vt 0.343826 0.218701 -vt 0.113498 0.218161 -vt 0.119487 0.218701 -vt 0.007318 0.272174 -vt 0.001329 0.272714 -vt 0.217127 0.387798 -vt 0.205195 0.219833 -vt 0.098850 0.272647 -vt 0.093026 0.271042 -vt 0.112169 0.109915 -vt 0.118478 0.112993 -vt 0.000000 0.380960 -vt 0.224338 0.380960 -vt 0.225668 0.272714 -vt 0.336507 0.109915 -vt 0.203398 0.104885 -vt 0.211019 0.218228 -vt 0.091229 0.385990 -vt 0.315567 0.385990 -vt 0.307137 0.378136 -vt 0.427736 0.104885 -vt 0.336507 0.454737 -vt 0.326931 0.450031 -vt 0.448677 0.036138 -vt 0.419306 0.112739 -vt 0.313923 0.490875 -vt 0.308846 0.486077 -vt 0.426093 0.000000 -vt 0.439100 0.040844 -vt 0.243806 0.437197 -vt 0.230647 0.377882 -vt 0.342817 0.112993 -vt 0.355975 0.053678 -vt 0.276915 0.489888 -vt 0.248977 0.433555 -vt 0.361147 0.057320 -vt 0.389084 0.000987 -vt 0.224338 0.036138 -vt 0.194968 0.112739 -vt 0.082799 0.378136 -vt 0.112169 0.454737 -vt 0.201754 0.000000 -vt 0.214762 0.040844 -vt 0.102593 0.450031 -vt 0.089585 0.490875 -vt 0.131637 0.053678 -vt 0.136808 0.057320 -vt 0.019467 0.437197 -vt 0.006309 0.377882 -vt 0.164746 0.000987 -vt 0.168313 0.008303 -vt 0.052577 0.489888 -vt 0.024639 0.433555 -vt 0.280482 0.482572 -vt 0.392651 0.008303 -vt 0.196677 0.004798 -vt 0.056144 0.482572 -vt 0.974331 0.078176 -vt 0.980835 0.078196 -vt 0.980748 0.106756 -vt 0.176070 0.981298 -vt 0.175982 0.952739 -vt 0.182486 0.952718 -vt 0.707328 0.984406 -vt 0.700824 0.984386 -vt 0.700911 0.955827 -vt 0.682409 0.955827 -vt 0.682496 0.984386 -vt 0.675992 0.984406 -vt 0.917999 0.479660 -vt 0.924503 0.479680 -vt 0.924355 0.527969 -vt 0.878783 0.479680 -vt 0.878636 0.527969 -vt 0.872132 0.527949 -vt 0.917682 0.583192 -vt 0.917851 0.527949 -vt 0.878467 0.583212 -vt 0.871963 0.583192 -vt 0.909670 0.907502 -vt 0.916174 0.907508 -vt 0.916139 0.944207 -vt 0.935483 0.892395 -vt 0.935449 0.929095 -vt 0.928945 0.929089 -vt 0.909737 0.836400 -vt 0.916241 0.836406 -vt 0.935551 0.821294 -vt 0.928980 0.892389 -vt 0.886560 0.527969 -vt 0.880056 0.527949 -vt 0.880204 0.479660 -vt 0.493415 0.523547 -vt 0.493563 0.475257 -vt 0.500067 0.475277 -vt 0.886391 0.583212 -vt 0.879887 0.583192 -vt 0.493246 0.578789 -vt 0.499919 0.523566 -vt 0.870420 0.944207 -vt 0.863916 0.944201 -vt 0.863950 0.907502 -vt 0.924503 0.464541 -vt 0.924538 0.427842 -vt 0.931042 0.427848 -vt 0.870454 0.907508 -vt 0.864017 0.836400 -vt 0.924605 0.356740 -vt 0.931109 0.356747 -vt 0.870521 0.836406 -vt 0.864119 0.728997 -vt 0.924706 0.249337 -vt 0.931210 0.249343 -vt 0.909839 0.728997 -vt 0.916343 0.729003 -vt 0.929148 0.713885 -vt 0.935652 0.713891 -vt 0.886068 0.688915 -vt 0.879564 0.688895 -vt 0.499426 0.684512 -vt 0.492922 0.684492 -vt 0.924186 0.583212 -vt 0.923863 0.688915 -vt 0.878143 0.688915 -vt 0.871639 0.688895 -vt 0.909991 0.567907 -vt 0.916495 0.567913 -vt 0.929300 0.552795 -vt 0.935804 0.552801 -vt 0.917359 0.688895 -vt 0.923353 0.855488 -vt 0.877634 0.855488 -vt 0.871130 0.855468 -vt 0.885558 0.855488 -vt 0.879054 0.855469 -vt 0.492413 0.851066 -vt 0.870775 0.567913 -vt 0.870623 0.729003 -vt 0.924858 0.088247 -vt 0.931362 0.088254 -vt 0.864271 0.567907 -vt 0.864341 0.494512 -vt 0.924928 0.014852 -vt 0.931432 0.014858 -vt 0.910060 0.494512 -vt 0.916564 0.494518 -vt 0.935874 0.479406 -vt 0.885287 0.944110 -vt 0.878783 0.944090 -vt 0.492142 0.939688 -vt 0.498917 0.851086 -vt 0.916849 0.855468 -vt 0.923082 0.944110 -vt 0.877362 0.944110 -vt 0.870858 0.944090 -vt 0.910074 0.479660 -vt 0.916578 0.479666 -vt 0.935888 0.464554 -vt 0.929370 0.479399 -vt 0.044119 0.992083 -vt 0.044052 0.970171 -vt 0.050556 0.970151 -vt 0.039005 0.968532 -vt 0.032501 0.968512 -vt 0.032568 0.946600 -vt 0.043980 0.946620 -vt 0.050484 0.946600 -vt 0.032429 0.992063 -vt 0.025831 0.970097 -vt 0.019327 0.970117 -vt 0.019255 0.946567 -vt 0.057199 0.968532 -vt 0.057127 0.992083 -vt 0.050623 0.992063 -vt 0.025898 0.992009 -vt 0.019394 0.992029 -vt 0.050762 0.946600 -vt 0.057266 0.946620 -vt 0.870844 0.494518 -vt 0.864354 0.479660 -vt 0.924942 0.000000 -vt 0.931446 0.000006 -vt 0.254873 0.574649 -vt 0.277250 0.574628 -vt 0.266106 0.616504 -vt 0.725928 0.642762 -vt 0.703551 0.642740 -vt 0.714785 0.600886 -vt 0.235506 0.585886 -vt 0.684184 0.631504 -vt 0.224338 0.605327 -vt 0.673016 0.612063 -vt 0.224363 0.627762 -vt 0.673041 0.589628 -vt 0.235572 0.647181 -vt 0.684250 0.570209 -vt 0.254963 0.658380 -vt 0.703641 0.559010 -vt 0.277340 0.658358 -vt 0.726018 0.559032 -vt 0.296707 0.647121 -vt 0.745385 0.570268 -vt 0.307874 0.627681 -vt 0.756553 0.589709 -vt 0.307850 0.605245 -vt 0.756528 0.612145 -vt 0.296641 0.585826 -vt 0.745319 0.631563 -vt 0.989866 0.629573 -vt 0.977080 0.629612 -vt 0.977020 0.610135 -vt 0.989806 0.610096 -vt 0.976951 0.587699 -vt 0.989738 0.587660 -vt 0.976892 0.568316 -vt 0.978954 0.927794 -vt 0.991740 0.927806 -vt 0.991722 0.947244 -vt 0.978935 0.947231 -vt 0.991700 0.969680 -vt 0.978914 0.969668 -vt 0.991682 0.989103 -vt 0.976969 0.704417 -vt 0.989755 0.704377 -vt 0.989815 0.724115 -vt 0.977029 0.724154 -vt 0.989884 0.746542 -vt 0.977098 0.746581 -vt 0.989943 0.765650 -vt 0.977079 0.464564 -vt 0.989866 0.464603 -vt 0.989807 0.483873 -vt 0.977020 0.483833 -vt 0.989738 0.506307 -vt 0.976952 0.506267 -vt 0.989678 0.525894 -vt 0.217778 0.847236 -vt 0.217718 0.866824 -vt 0.193010 0.866748 -vt 0.032489 0.926937 -vt 0.057139 0.927013 -vt 0.057079 0.946600 -vt 0.217846 0.824802 -vt 0.193070 0.847160 -vt 0.032557 0.904503 -vt 0.057207 0.904579 -vt 0.217905 0.805533 -vt 0.193138 0.824726 -vt 0.032616 0.885234 -vt 0.057266 0.885310 -vt 0.193139 0.885932 -vt 0.193197 0.866824 -vt 0.217905 0.866900 -vt 0.790382 0.941853 -vt 0.815032 0.941777 -vt 0.815090 0.960885 -vt 0.193070 0.908359 -vt 0.217847 0.886008 -vt 0.790313 0.919425 -vt 0.814963 0.919349 -vt 0.193010 0.928096 -vt 0.217778 0.908435 -vt 0.790253 0.899688 -vt 0.814903 0.899612 -vt 0.960634 0.205294 -vt 0.960616 0.224718 -vt 0.935908 0.224694 -vt 0.643703 0.944515 -vt 0.668353 0.944539 -vt 0.668335 0.963962 -vt 0.960655 0.182858 -vt 0.935926 0.205271 -vt 0.643724 0.922079 -vt 0.668374 0.922102 -vt 0.960674 0.163421 -vt 0.935947 0.182835 -vt 0.643743 0.902641 -vt 0.668393 0.902665 -vt 0.161049 0.784121 -vt 0.160990 0.803505 -vt 0.136282 0.803429 -vt 0.320580 0.894228 -vt 0.295930 0.894304 -vt 0.295871 0.874921 -vt 0.161118 0.761685 -vt 0.136341 0.784045 -vt 0.320649 0.916664 -vt 0.295999 0.916740 -vt 0.161177 0.742208 -vt 0.136410 0.761609 -vt 0.320708 0.936142 -vt 0.296058 0.936217 -vt 0.182570 0.700256 -vt 0.193714 0.658380 -vt 0.213105 0.669579 -vt 0.437443 0.730933 -vt 0.418052 0.742132 -vt 0.406909 0.700256 -vt 0.182570 0.532751 -vt 0.213105 0.563429 -vt 0.193714 0.574628 -vt 0.642392 0.475257 -vt 0.661783 0.486456 -vt 0.631248 0.517134 -vt 0.224314 0.688998 -vt 0.448653 0.711515 -vt 0.224314 0.544010 -vt 0.672992 0.505875 -vt 0.224338 0.711433 -vt 0.448677 0.689079 -vt 0.224338 0.521574 -vt 0.673016 0.528311 -vt 0.213171 0.730874 -vt 0.437509 0.669638 -vt 0.213171 0.502134 -vt 0.661849 0.547751 -vt 0.193804 0.742111 -vt 0.418142 0.658402 -vt 0.193804 0.490897 -vt 0.642482 0.558988 -vt 0.171427 0.742132 -vt 0.395765 0.658380 -vt 0.171427 0.490875 -vt 0.620105 0.559010 -vt 0.152036 0.730933 -vt 0.376374 0.669579 -vt 0.152036 0.502074 -vt 0.600714 0.547811 -vt 0.140826 0.711515 -vt 0.365165 0.688998 -vt 0.140827 0.521493 -vt 0.589505 0.528392 -vt 0.140802 0.689079 -vt 0.365141 0.711433 -vt 0.140802 0.543928 -vt 0.589480 0.505957 -vt 0.151970 0.669638 -vt 0.376308 0.730874 -vt 0.151970 0.563369 -vt 0.600648 0.486516 -vt 0.171337 0.658402 -vt 0.395675 0.742111 -vt 0.171337 0.574606 -vt 0.620015 0.475279 -vt 0.182570 0.616504 -vt 0.059168 0.490897 -vt 0.081544 0.490875 -vt 0.070401 0.532751 -vt 0.631248 0.684639 -vt 0.620015 0.642784 -vt 0.642392 0.642762 -vt 0.110178 0.742132 -vt 0.087801 0.742111 -vt 0.099034 0.700256 -vt 0.151970 0.647121 -vt 0.039801 0.502134 -vt 0.600648 0.654021 -vt 0.068434 0.730874 -vt 0.140802 0.627681 -vt 0.028633 0.521574 -vt 0.589480 0.673461 -vt 0.057266 0.711433 -vt 0.140827 0.605245 -vt 0.028657 0.544010 -vt 0.589505 0.695897 -vt 0.057290 0.688998 -vt 0.152036 0.585826 -vt 0.039867 0.563429 -vt 0.600714 0.715316 -vt 0.068500 0.669579 -vt 0.171427 0.574628 -vt 0.059258 0.574628 -vt 0.620105 0.726515 -vt 0.087891 0.658380 -vt 0.193804 0.574649 -vt 0.081635 0.574606 -vt 0.642482 0.726493 -vt 0.110268 0.658402 -vt 0.213171 0.585886 -vt 0.101002 0.563369 -vt 0.661849 0.715256 -vt 0.129635 0.669638 -vt 0.112169 0.543928 -vt 0.673016 0.695816 -vt 0.224314 0.627762 -vt 0.112145 0.521493 -vt 0.672992 0.673380 -vt 0.213105 0.647181 -vt 0.100936 0.502074 -vt 0.661783 0.653961 -vt 0.129569 0.730933 -vt 0.301980 0.742172 -vt 0.301920 0.761649 -vt 0.288934 0.761609 -vt 0.491753 0.962816 -vt 0.478798 0.962856 -vt 0.478738 0.943379 -vt 0.301851 0.784085 -vt 0.288865 0.784045 -vt 0.491694 0.943339 -vt 0.478670 0.920943 -vt 0.301792 0.803469 -vt 0.288806 0.803429 -vt 0.491625 0.920903 -vt 0.478610 0.901559 -vt 0.260845 0.910760 -vt 0.260827 0.930198 -vt 0.247841 0.930185 -vt 0.430439 0.912164 -vt 0.443395 0.912176 -vt 0.443376 0.931613 -vt 0.260806 0.952634 -vt 0.247819 0.952622 -vt 0.430421 0.931601 -vt 0.443355 0.954050 -vt 0.260787 0.972057 -vt 0.247801 0.972045 -vt 0.430399 0.954037 -vt 0.443337 0.973473 -vt 0.019255 0.946507 -vt 0.019316 0.926769 -vt 0.032302 0.926809 -vt 0.843280 0.910146 -vt 0.856235 0.910106 -vt 0.856296 0.929843 -vt 0.019384 0.904342 -vt 0.032370 0.904382 -vt 0.843340 0.929883 -vt 0.856364 0.952271 -vt 0.019443 0.885234 -vt 0.032429 0.885274 -vt 0.843409 0.952311 -vt 0.856423 0.971379 -vt 0.281944 0.805497 -vt 0.281885 0.824766 -vt 0.268899 0.824726 -vt 0.769108 0.906414 -vt 0.782064 0.906454 -vt 0.782005 0.925724 -vt 0.281817 0.847200 -vt 0.268831 0.847160 -vt 0.769049 0.925684 -vt 0.781936 0.948158 -vt 0.281757 0.866788 -vt 0.268771 0.866748 -vt 0.768981 0.948118 -vt 0.781877 0.967745 -vt 0.734002 0.945881 -vt 0.733946 0.964385 -vt 0.710605 0.964313 -vt 0.734067 0.924689 -vt 0.710662 0.945810 -vt 0.734123 0.906486 -vt 0.710727 0.924617 -vt 0.819884 0.928156 -vt 0.819939 0.910106 -vt 0.843280 0.910178 -vt 0.819819 0.949343 -vt 0.843225 0.928228 -vt 0.819762 0.967987 -vt 0.843160 0.949414 -vt 0.406881 0.953659 -vt 0.406864 0.972007 -vt 0.383523 0.971985 -vt 0.406901 0.932464 -vt 0.383540 0.953637 -vt 0.406918 0.914103 -vt 0.383560 0.932442 -vt 0.768800 0.946079 -vt 0.768744 0.964390 -vt 0.745403 0.964318 -vt 0.768865 0.924885 -vt 0.745459 0.946008 -vt 0.768921 0.906486 -vt 0.745524 0.924813 -vt 0.404597 0.781691 -vt 0.415123 0.742132 -vt 0.433441 0.752711 -vt 0.712473 0.766073 -vt 0.741317 0.795053 -vt 0.722999 0.805632 -vt 0.444030 0.771055 -vt 0.751906 0.776708 -vt 0.444053 0.792249 -vt 0.751929 0.755515 -vt 0.433504 0.810614 -vt 0.741380 0.737150 -vt 0.415209 0.821229 -vt 0.723085 0.726535 -vt 0.394070 0.821249 -vt 0.701946 0.726515 -vt 0.375752 0.810670 -vt 0.683628 0.737094 -vt 0.365163 0.792326 -vt 0.673039 0.755438 -vt 0.365141 0.771132 -vt 0.673016 0.776632 -vt 0.375690 0.752768 -vt 0.683566 0.794996 -vt 0.393985 0.742153 -vt 0.701861 0.805611 -vt 0.255919 0.773795 -vt 0.264344 0.805457 -vt 0.247425 0.805440 -vt 0.325066 0.742149 -vt 0.341985 0.742132 -vt 0.333560 0.773795 -vt 0.819809 0.590672 -vt 0.811315 0.559026 -vt 0.828234 0.559010 -vt 0.796558 0.559010 -vt 0.779639 0.558993 -vt 0.788133 0.527348 -vt 0.232782 0.796944 -vt 0.310423 0.750645 -vt 0.796672 0.567522 -vt 0.764996 0.550498 -vt 0.224338 0.782246 -vt 0.301980 0.765344 -vt 0.788228 0.582221 -vt 0.756553 0.535799 -vt 0.224357 0.765282 -vt 0.301998 0.782307 -vt 0.788246 0.599185 -vt 0.756571 0.518835 -vt 0.232832 0.750600 -vt 0.310473 0.796990 -vt 0.796722 0.613867 -vt 0.765046 0.504153 -vt 0.247494 0.742132 -vt 0.325135 0.805457 -vt 0.811383 0.622335 -vt 0.779708 0.495685 -vt 0.264413 0.742149 -vt 0.342054 0.805440 -vt 0.828302 0.622318 -vt 0.796627 0.495702 -vt 0.279056 0.750645 -vt 0.356697 0.796944 -vt 0.842945 0.613822 -vt 0.811270 0.504198 -vt 0.287499 0.765344 -vt 0.365141 0.782246 -vt 0.851389 0.599123 -vt 0.819714 0.518897 -vt 0.287481 0.782307 -vt 0.365122 0.765282 -vt 0.851371 0.582160 -vt 0.819695 0.535860 -vt 0.279006 0.796990 -vt 0.356647 0.750600 -vt 0.842896 0.567477 -vt 0.811220 0.550543 -vt 0.483714 0.844061 -vt 0.483669 0.858788 -vt 0.449012 0.858681 -vt 0.057266 0.885127 -vt 0.022610 0.885234 -vt 0.022565 0.870507 -vt 0.483617 0.875752 -vt 0.448960 0.875645 -vt 0.057221 0.870401 -vt 0.022513 0.853544 -vt 0.483572 0.890407 -vt 0.448916 0.890301 -vt 0.057169 0.853437 -vt 0.022468 0.838888 -vt 0.710605 0.871761 -vt 0.710591 0.886458 -vt 0.675935 0.886425 -vt 0.069740 0.867701 -vt 0.104396 0.867734 -vt 0.104382 0.882431 -vt 0.710575 0.903422 -vt 0.675919 0.903389 -vt 0.069726 0.882398 -vt 0.104366 0.899395 -vt 0.710561 0.918108 -vt 0.675905 0.918075 -vt 0.069710 0.899362 -vt 0.224338 0.910641 -vt 0.224384 0.895718 -vt 0.259040 0.895825 -vt 0.819762 0.863778 -vt 0.854418 0.863671 -vt 0.854464 0.878595 -vt 0.224436 0.878761 -vt 0.259092 0.878867 -vt 0.819808 0.878701 -vt 0.854516 0.895552 -vt 0.224480 0.864313 -vt 0.259136 0.864420 -vt 0.819860 0.895658 -vt 0.854560 0.909999 -vt 0.780201 0.860073 -vt 0.780157 0.874642 -vt 0.745500 0.874536 -vt 0.780434 0.853164 -vt 0.815090 0.853271 -vt 0.815045 0.867840 -vt 0.780105 0.891604 -vt 0.745449 0.891498 -vt 0.780389 0.867733 -vt 0.814994 0.884802 -vt 0.780060 0.906414 -vt 0.745403 0.906308 -vt 0.780337 0.884696 -vt 0.266106 0.532751 -vt 0.395675 0.490897 -vt 0.418052 0.490875 -vt 0.406909 0.532751 -vt 0.714785 0.517134 -vt 0.703551 0.475279 -vt 0.725928 0.475257 -vt 0.620015 0.642740 -vt 0.631248 0.600886 -vt 0.235506 0.563369 -vt 0.376308 0.502134 -vt 0.684184 0.486516 -vt 0.600648 0.631504 -vt 0.224338 0.543928 -vt 0.365141 0.521574 -vt 0.673016 0.505957 -vt 0.589480 0.612063 -vt 0.224363 0.521493 -vt 0.365165 0.544010 -vt 0.673041 0.528392 -vt 0.589505 0.589628 -vt 0.235572 0.502074 -vt 0.376374 0.563429 -vt 0.684250 0.547811 -vt 0.600714 0.570209 -vt 0.254963 0.490875 -vt 0.395765 0.574628 -vt 0.277340 0.490897 -vt 0.418142 0.574606 -vt 0.296707 0.502134 -vt 0.437509 0.563369 -vt 0.745385 0.547751 -vt 0.661849 0.570268 -vt 0.307874 0.521574 -vt 0.448677 0.543928 -vt 0.756553 0.528311 -vt 0.673016 0.589709 -vt 0.307850 0.544010 -vt 0.448652 0.521493 -vt 0.756528 0.505875 -vt 0.296641 0.563429 -vt 0.437443 0.502074 -vt 0.745319 0.486456 -vt 0.661783 0.631563 -vt 0.137065 0.490951 -vt 0.137005 0.510428 -vt 0.112297 0.510352 -vt 0.136179 0.933850 -vt 0.111529 0.933926 -vt 0.111469 0.914449 -vt 0.136936 0.532864 -vt 0.112228 0.532788 -vt 0.136119 0.914373 -vt 0.111400 0.892013 -vt 0.136877 0.552247 -vt 0.112169 0.552171 -vt 0.136050 0.891937 -vt 0.111341 0.872629 -vt 0.960674 0.000023 -vt 0.960655 0.019461 -vt 0.935947 0.019437 -vt 0.935965 0.061321 -vt 0.960616 0.061344 -vt 0.960597 0.080781 -vt 0.960634 0.041897 -vt 0.935926 0.041874 -vt 0.935947 0.080758 -vt 0.960576 0.103218 -vt 0.935908 0.061297 -vt 0.935926 0.103194 -vt 0.960558 0.122641 -vt 0.136282 0.926144 -vt 0.136342 0.906407 -vt 0.161050 0.906483 -vt 0.448916 0.890483 -vt 0.473565 0.890407 -vt 0.473626 0.910145 -vt 0.136411 0.883979 -vt 0.161119 0.884055 -vt 0.448976 0.910220 -vt 0.473695 0.932572 -vt 0.136469 0.864871 -vt 0.161177 0.864947 -vt 0.449045 0.932648 -vt 0.473753 0.951680 -vt 0.161177 0.803581 -vt 0.161118 0.822850 -vt 0.136410 0.822774 -vt 0.271221 0.874845 -vt 0.295812 0.894190 -vt 0.161050 0.845284 -vt 0.136342 0.845208 -vt 0.271162 0.894115 -vt 0.295743 0.916624 -vt 0.160990 0.864871 -vt 0.136282 0.864795 -vt 0.271093 0.916549 -vt 0.295683 0.936212 -vt 0.633640 0.887725 -vt 0.668297 0.887831 -vt 0.668251 0.902641 -vt 0.633692 0.870763 -vt 0.668348 0.870869 -vt 0.633737 0.856193 -vt 0.668393 0.856300 -vt 0.330445 0.897915 -vt 0.365101 0.897808 -vt 0.365141 0.910641 -vt 0.330388 0.879343 -vt 0.365045 0.879237 -vt 0.330343 0.864420 -vt 0.364999 0.864313 -vt 0.372232 0.899362 -vt 0.406888 0.899395 -vt 0.372248 0.882398 -vt 0.406904 0.882431 -vt 0.372262 0.867701 -vt 0.406918 0.867734 -vt 0.104397 0.835905 -vt 0.069741 0.836011 -vt 0.069696 0.821356 -vt 0.104449 0.852868 -vt 0.069793 0.852975 -vt 0.104494 0.867595 -vt 0.069838 0.867702 -vt 0.842896 0.706409 -vt 0.828234 0.714877 -vt 0.813990 0.691312 -vt 0.201183 0.742132 -vt 0.215845 0.750600 -vt 0.186939 0.765697 -vt 0.851371 0.691727 -vt 0.224320 0.765282 -vt 0.851389 0.674764 -vt 0.846465 0.656942 -vt 0.219414 0.800067 -vt 0.828302 0.651569 -vt 0.201251 0.805440 -vt 0.811383 0.651552 -vt 0.184332 0.805457 -vt 0.796722 0.660020 -vt 0.169671 0.796990 -vt 0.788246 0.674702 -vt 0.161196 0.782307 -vt 0.788228 0.691665 -vt 0.161177 0.765344 -vt 0.796672 0.706364 -vt 0.169621 0.750645 -vt 0.811315 0.714860 -vt 0.184264 0.742149 -vt 0.987120 0.148498 -vt 0.987060 0.168086 -vt 0.974244 0.168046 -vt 0.987189 0.126064 -vt 0.974304 0.148459 -vt 0.987248 0.106795 -vt 0.974372 0.126025 -vt 0.977011 0.327820 -vt 0.977069 0.308711 -vt 0.989886 0.308751 -vt 0.976942 0.350247 -vt 0.989827 0.327859 -vt 0.976882 0.369984 -vt 0.989759 0.350286 -vt 0.991730 0.908371 -vt 0.978896 0.927782 -vt 0.991752 0.885934 -vt 0.978914 0.908358 -vt 0.991770 0.866497 -vt 0.978935 0.885922 -vt 0.984176 0.684994 -vt 0.984117 0.704377 -vt 0.971300 0.704338 -vt 0.984245 0.662558 -vt 0.971359 0.684955 -vt 0.984304 0.643081 -vt 0.971428 0.662519 -vt 0.714784 0.684639 -vt 0.745319 0.653961 -vt 0.406909 0.698535 -vt 0.430287 0.722022 -vt 0.415440 0.730597 -vt 0.756528 0.673380 -vt 0.438869 0.707155 -vt 0.756552 0.695816 -vt 0.438887 0.689977 -vt 0.745385 0.715256 -vt 0.430337 0.675093 -vt 0.726018 0.726493 -vt 0.415509 0.666490 -vt 0.703641 0.726515 -vt 0.398377 0.666473 -vt 0.684250 0.715316 -vt 0.383531 0.675048 -vt 0.673041 0.695897 -vt 0.374948 0.689915 -vt 0.673016 0.673461 -vt 0.374930 0.707092 -vt 0.684184 0.654021 -vt 0.383480 0.721977 -vt 0.703551 0.642784 -vt 0.398308 0.730580 -vt 0.634026 0.010797 -vt 0.640870 0.025939 -vt 0.636218 0.031514 -vt 0.612855 0.000000 -vt 0.630488 0.016822 -vt 0.612584 0.006428 -vt 0.592182 0.013296 -vt 0.708952 0.475258 -vt 0.684939 0.468318 -vt 0.688279 0.461962 -vt 0.708681 0.468830 -vt 0.726585 0.458435 -vt 0.730123 0.464460 -vt 0.732315 0.443743 -vt 0.652908 0.380493 -vt 0.660675 0.376391 -vt 0.588842 0.006939 -vt 0.564578 0.098866 -vt 0.736967 0.449318 -vt 0.729584 0.372404 -vt 0.638079 0.099282 -vt 0.633487 0.102854 -vt 0.631816 0.260249 -vt 0.627378 0.259427 -vt 0.556811 0.094765 -vt 0.554674 0.260699 -vt 0.642203 0.214139 -vt 0.650771 0.214559 -vt 0.734176 0.375976 -vt 0.723474 0.215831 -vt 0.640870 0.108435 -vt 0.649117 0.111755 -vt 0.544773 0.366822 -vt 0.546106 0.261119 -vt 0.717359 0.107946 -vt 0.727913 0.215008 -vt 0.621262 0.367312 -vt 0.617895 0.363598 -vt 0.640836 0.439267 -vt 0.634141 0.433477 -vt 0.622641 0.475257 -vt 0.618529 0.468569 -vt 0.562933 0.422552 -vt 0.553020 0.363503 -vt 0.594288 0.471666 -vt 0.568146 0.417610 -vt 0.736933 0.035990 -vt 0.713992 0.111660 -vt 0.718737 0.000000 -vt 0.730238 0.041780 -vt 0.659030 0.052705 -vt 0.664243 0.057648 -vt 0.690384 0.003592 -vt 0.690595 0.010041 -vt 0.594498 0.465217 -vt 0.714626 0.006689 -vt 0.126961 0.552247 -vt 0.137065 0.553394 -vt 0.137063 0.574602 -vt 0.800249 0.624809 -vt 0.812269 0.622335 -vt 0.812242 0.648165 -vt 0.835228 0.650024 -vt 0.835159 0.622335 -vt 0.845002 0.623255 -vt 0.458759 0.978525 -vt 0.448916 0.979446 -vt 0.448984 0.951756 -vt 0.800221 0.622335 -vt 0.800249 0.648165 -vt 0.788228 0.645690 -vt 0.122537 0.552247 -vt 0.122539 0.573455 -vt 0.112434 0.574602 -vt 0.986797 0.300698 -vt 0.978913 0.297473 -vt 0.980320 0.203265 -vt 0.783777 0.997045 -vt 0.782369 0.902837 -vt 0.790253 0.899612 -vt 0.341678 0.910748 -vt 0.341520 0.980201 -vt 0.336887 0.987458 -vt 0.740612 0.906414 -vt 0.745246 0.913671 -vt 0.745403 0.983124 -vt 0.851991 0.623671 -vt 0.856981 0.622335 -vt 0.856372 0.787383 -vt 0.960674 0.168086 -vt 0.960936 0.000000 -vt 0.965985 0.000802 -vt 0.023274 0.658159 -vt 0.018225 0.658961 -vt 0.017962 0.490875 -vt 0.976283 0.464564 -vt 0.976892 0.629612 -vt 0.971902 0.628276 -vt 0.987248 0.168086 -vt 0.987259 0.062794 -vt 0.992332 0.062164 -vt 0.994951 0.674198 -vt 0.989877 0.673568 -vt 0.989866 0.568276 -vt 0.325208 0.864313 -vt 0.330230 0.865527 -vt 0.330343 0.976013 -vt 0.633595 0.856193 -vt 0.633482 0.966680 -vt 0.628461 0.967893 -vt 0.996566 0.464564 -vt 0.996457 0.533580 -vt 0.991481 0.542731 -vt 0.630616 0.805632 -vt 0.630712 0.845852 -vt 0.621435 0.845936 -vt 0.863006 0.989982 -vt 0.857018 0.988559 -vt 0.857634 0.931580 -vt 0.110818 0.931785 -vt 0.105249 0.930773 -vt 0.105246 0.872554 -vt 0.991501 0.325069 -vt 0.996477 0.334220 -vt 0.996586 0.403235 -vt 0.138896 0.926220 -vt 0.148173 0.926304 -vt 0.148077 0.966524 -vt 0.987864 0.062164 -vt 0.987248 0.005185 -vt 0.993236 0.003761 -vt 0.903540 0.990352 -vt 0.903544 0.932133 -vt 0.909113 0.931121 -vt 0.977074 0.196778 -vt 0.969845 0.199558 -vt 0.970309 0.168086 -vt 0.618609 0.983543 -vt 0.618144 0.952071 -vt 0.625374 0.954852 -vt 0.845076 0.646619 -vt 0.845002 0.622352 -vt 0.850517 0.622335 -vt 0.856904 0.794907 -vt 0.856979 0.819174 -vt 0.851463 0.819191 -vt 0.903694 0.931116 -vt 0.903737 0.884618 -vt 0.909253 0.884623 -vt 0.903788 0.831170 -vt 0.909303 0.831175 -vt 0.851389 0.519525 -vt 0.851498 0.484043 -vt 0.857013 0.484060 -vt 0.263043 0.933750 -vt 0.263255 0.864313 -vt 0.268771 0.864330 -vt 0.473753 0.951761 -vt 0.473709 0.998259 -vt 0.468194 0.998254 -vt 0.032429 0.946552 -vt 0.032378 1.000000 -vt 0.026863 0.999995 -vt 0.863916 0.479677 -vt 0.863807 0.515159 -vt 0.858292 0.515142 -vt 0.863595 0.584596 -vt 0.858079 0.584579 -vt 0.863275 0.688977 -vt 0.857760 0.688960 -vt 0.670070 0.976109 -vt 0.670390 0.871728 -vt 0.675905 0.871745 -vt 0.857002 0.519548 -vt 0.856905 0.622335 -vt 0.851389 0.622329 -vt 0.903885 0.728383 -vt 0.909400 0.728388 -vt 0.063701 0.977927 -vt 0.064180 0.821249 -vt 0.069696 0.821266 -vt 0.904038 0.566281 -vt 0.909553 0.566286 -vt 0.976815 0.866485 -vt 0.971300 0.866479 -vt 0.862796 0.845654 -vt 0.857281 0.845637 -vt 0.862578 0.917041 -vt 0.857062 0.917024 -vt 0.359246 0.727346 -vt 0.359464 0.655960 -vt 0.364980 0.655977 -vt 0.998164 0.062169 -vt 0.998082 0.148790 -vt 0.992566 0.148784 -vt 0.904120 0.479660 -vt 0.909635 0.479665 -vt 0.359246 0.741902 -vt 0.359290 0.727363 -vt 0.364806 0.727380 -vt 0.700767 0.974236 -vt 0.695252 0.974219 -vt 0.695308 0.955827 -vt 0.688012 0.955827 -vt 0.688073 0.975961 -vt 0.682558 0.975978 -vt 0.818472 0.475274 -vt 0.818411 0.495409 -vt 0.812895 0.495392 -vt 0.688130 0.955827 -vt 0.693645 0.955844 -vt 0.693589 0.974236 -vt 0.862533 0.931580 -vt 0.857018 0.931563 -vt 0.826219 0.464460 -vt 0.822224 0.446187 -vt 0.827985 0.432302 -vt 0.805048 0.475258 -vt 0.804301 0.456043 -vt 0.781036 0.468318 -vt 0.783920 0.449603 -vt 0.516758 0.000000 -vt 0.516011 0.019215 -vt 0.495630 0.025655 -vt 0.537929 0.010797 -vt 0.533933 0.029070 -vt 0.544773 0.025939 -vt 0.539695 0.042956 -vt 0.492745 0.006939 -vt 0.468222 0.106395 -vt 0.749004 0.380493 -vt 0.756512 0.368862 -vt 0.924797 0.564014 -vt 0.935907 0.032074 -vt 0.935844 0.099481 -vt 0.935704 0.247428 -vt 0.738300 0.214139 -vt 0.746968 0.216069 -vt 0.460714 0.094765 -vt 0.458678 0.259188 -vt 0.924658 0.711961 -vt 0.448677 0.366822 -vt 0.450009 0.261119 -vt 0.736967 0.108435 -vt 0.745542 0.118998 -vt 0.929047 0.821288 -vt 0.924564 0.810601 -vt 0.935611 0.346068 -vt 0.814834 0.000000 -vt 0.833030 0.035990 -vt 0.826797 0.052743 -vt 0.755126 0.052705 -vt 0.760785 0.067873 -vt 0.786481 0.003592 -vt 0.787235 0.022860 -vt 0.924503 0.875902 -vt 0.526544 0.475257 -vt 0.522977 0.455616 -vt 0.538507 0.422515 -vt 0.466836 0.422552 -vt 0.457252 0.356260 -vt 0.498191 0.471666 -vt 0.472494 0.407385 -vt 0.811267 0.019641 -vt 0.498945 0.452398 -vt 0.192851 0.952718 -vt 0.192839 0.972923 -vt 0.182826 0.973599 -vt 0.823714 0.622335 -vt 0.823714 0.647941 -vt 0.812269 0.644997 -vt 0.589532 0.952071 -vt 0.598470 0.956901 -vt 0.598832 0.978323 -vt 0.458893 0.979270 -vt 0.458842 0.951756 -vt 0.468194 0.953018 -vt 0.835159 0.647941 -vt 0.825251 0.645714 -vt 0.823714 0.625278 -vt 0.171455 0.973599 -vt 0.161177 0.967755 -vt 0.161430 0.952718 -vt 0.637229 0.994848 -vt 0.635837 0.905465 -vt 0.988188 0.203265 -vt 0.994624 0.210184 -vt 0.994644 0.295472 -vt 0.081056 0.986550 -vt 0.072446 0.981380 -vt 0.076266 0.914081 -vt 0.380827 0.914081 -vt 0.380670 0.979669 -vt 0.376038 0.986550 -vt 0.976301 0.308711 -vt 0.971893 0.463287 -vt 0.365338 0.821249 -vt 0.372120 0.826110 -vt 0.370534 0.979194 -vt 0.967461 0.168086 -vt 0.967609 0.009380 -vt 0.972658 0.010141 -vt 0.063121 0.977085 -vt 0.058137 0.970456 -vt 0.058712 0.822510 -vt 0.443509 0.895191 -vt 0.448832 0.898100 -vt 0.448773 0.995183 -vt 0.990034 0.767067 -vt 0.995107 0.766494 -vt 0.978913 0.203265 -vt 0.978651 0.307589 -vt 0.973629 0.308711 -vt 0.978896 0.971931 -vt 0.971300 0.965239 -vt 0.973611 0.866485 -vt 0.996614 0.765689 -vt 0.989943 0.759380 -vt 0.991495 0.691361 -vt 0.968387 0.206496 -vt 0.962541 0.204632 -vt 0.910355 0.999502 -vt 0.909635 0.945369 -vt 0.915586 0.944207 -vt 0.492142 0.996225 -vt 0.492263 0.940390 -vt 0.497746 0.939708 -vt 0.024634 0.658961 -vt 0.024472 0.724454 -vt 0.019515 0.733290 -vt 0.967617 0.944207 -vt 0.969075 0.982617 -vt 0.959903 0.982603 -vt 0.865627 0.944207 -vt 0.870805 0.946141 -vt 0.870858 0.999502 -vt 0.989886 0.403235 -vt 0.995894 0.407511 -vt 0.995490 0.459752 -vt 0.611762 0.983538 -vt 0.611318 0.952071 -vt 0.618144 0.954852 -vt 0.599276 0.952071 -vt 0.603483 0.956547 -vt 0.605658 0.980757 -vt 0.605732 0.952071 -vt 0.610366 0.952085 -vt 0.610292 0.976345 -vt 0.224264 0.977678 -vt 0.219630 0.977664 -vt 0.219705 0.953404 -vt 0.491351 0.901520 -vt 0.486717 0.901515 -vt 0.486758 0.857614 -vt 0.491392 0.857618 -vt 0.486806 0.807149 -vt 0.891342 0.939864 -vt 0.886708 0.939850 -vt 0.886810 0.906359 -vt 0.999799 0.832084 -vt 0.995166 0.832070 -vt 0.995366 0.766494 -vt 0.017834 0.838782 -vt 0.022468 0.838786 -vt 0.022427 0.882688 -vt 0.039119 0.946600 -vt 0.043753 0.946605 -vt 0.043706 0.997069 -vt 0.888013 0.479660 -vt 0.892545 0.513165 -vt 0.887710 0.578727 -vt 0.887911 0.513150 -vt 0.892344 0.578741 -vt 0.892043 0.677292 -vt 0.996705 0.866499 -vt 0.996404 0.965050 -vt 0.991770 0.965035 -vt 0.473845 0.890407 -vt 0.478478 0.890412 -vt 0.478387 0.987461 -vt 0.491440 0.807154 -vt 0.486898 0.710099 -vt 0.223886 0.953404 -vt 0.219252 0.953390 -vt 0.219705 0.805457 -vt 0.491531 0.710104 -vt 0.487042 0.557045 -vt 0.444198 0.742132 -vt 0.448832 0.742137 -vt 0.448687 0.895191 -vt 0.887409 0.677278 -vt 0.891590 0.825225 -vt 0.886750 0.892613 -vt 0.886956 0.825211 -vt 0.988938 0.704377 -vt 0.984304 0.704363 -vt 0.984510 0.636961 -vt 0.994722 0.203265 -vt 0.999356 0.203270 -vt 0.999278 0.285057 -vt 0.491676 0.557049 -vt 0.487120 0.475257 -vt 0.823106 0.489004 -vt 0.818472 0.488990 -vt 0.540140 0.974486 -vt 0.540083 0.956099 -vt 0.544717 0.956085 -vt 0.500067 0.956099 -vt 0.504700 0.956085 -vt 0.504762 0.976217 -vt 0.625763 0.868021 -vt 0.621129 0.868035 -vt 0.621068 0.847902 -vt 0.509396 0.956085 -vt 0.509452 0.974472 -vt 0.504818 0.974486 -vt 0.891384 0.892627 -vt 0.891342 0.906359 -vt 0.430979 0.469291 -vt 0.094472 0.021584 -vt 0.421015 0.004798 -vt 0.084508 0.486077 -vt 0.974244 0.106736 -vt 0.182573 0.981278 -vt 0.707415 0.955847 -vt 0.675905 0.955847 -vt 0.872279 0.479660 -vt 0.909635 0.944201 -vt 0.886708 0.479680 -vt 0.499750 0.578809 -vt 0.931007 0.464548 -vt 0.498646 0.939708 -vt 0.916578 0.944090 -vt 0.929384 0.464548 -vt 0.038933 0.992083 -vt 0.025759 0.946546 -vt 0.050695 0.968512 -vt 0.870858 0.479666 -vt 0.989678 0.568276 -vt 0.978896 0.989091 -vt 0.977156 0.765689 -vt 0.976892 0.525855 -vt 0.032429 0.946525 -vt 0.193197 0.805457 -vt 0.790440 0.960961 -vt 0.217718 0.928172 -vt 0.643685 0.963938 -vt 0.935965 0.163397 -vt 0.320521 0.874845 -vt 0.136469 0.742132 -vt 0.288993 0.742132 -vt 0.491566 0.901520 -vt 0.247859 0.910748 -vt 0.430381 0.973461 -vt 0.032241 0.946546 -vt 0.843467 0.971419 -vt 0.268958 0.805457 -vt 0.768921 0.967705 -vt 0.710782 0.906414 -vt 0.843103 0.968059 -vt 0.383578 0.914081 -vt 0.745580 0.906414 -vt 0.449057 0.843955 -vt 0.057124 0.838782 -vt 0.069696 0.914048 -vt 0.258995 0.910748 -vt 0.745545 0.859966 -vt 0.780292 0.899505 -vt 0.112357 0.490875 -vt 0.135991 0.872554 -vt 0.935965 0.000000 -vt 0.935908 0.122618 -vt 0.160990 0.926220 -vt 0.449103 0.951756 -vt 0.136469 0.803505 -vt 0.271033 0.936136 -vt 0.633595 0.902535 -vt 0.330484 0.910748 -vt 0.372218 0.914048 -vt 0.104352 0.821249 -vt 0.974431 0.106756 -vt 0.989698 0.370024 -vt 0.978954 0.866485 -vt 0.971488 0.643042 -vt 0.126695 0.568020 -vt 0.801840 0.645490 -vt 0.844633 0.644828 -vt 0.458389 0.956952 -vt 0.789819 0.625009 -vt 0.112169 0.558829 -vt 0.986785 0.210764 -vt 0.790241 0.989546 -vt 0.333066 0.916168 -vt 0.736791 0.977704 -vt 0.851389 0.780362 -vt 0.967461 0.162932 -vt 0.024750 0.496029 -vt 0.971300 0.471584 -vt 0.992566 0.164981 -vt 0.995184 0.571381 -vt 0.322755 0.968889 -vt 0.626007 0.863318 -vt 0.989866 0.470997 -vt 0.624636 0.807646 -vt 0.862847 0.933790 -vt 0.111341 0.877341 -vt 0.989886 0.396803 -vt 0.142097 0.964510 -vt 0.993077 0.059953 -vt 0.909635 0.985565 -vt 0.974765 0.172563 -vt 0.623065 0.979066 -vt 0.850592 0.646602 -vt 0.851389 0.794924 -vt 0.909209 0.931121 -vt 0.856904 0.519542 -vt 0.268558 0.933767 -vt 0.468238 0.951756 -vt 0.026913 0.946546 -vt 0.858400 0.479660 -vt 0.675586 0.976126 -vt 0.851486 0.519542 -vt 0.069216 0.977944 -vt 0.971453 0.704377 -vt 0.992648 0.062164 -vt 0.364761 0.741919 -vt 0.700824 0.955844 -vt 0.682496 0.955844 -vt 0.812957 0.475257 -vt 0.688073 0.974219 -vt 0.833064 0.449318 -vt 0.924861 0.496607 -vt 0.935549 0.411369 -vt 0.544739 0.439267 -vt 0.182573 0.958562 -vt 0.813806 0.624561 -vt 0.589480 0.979585 -vt 0.467832 0.974440 -vt 0.171443 0.953394 -vt 0.643664 0.987929 -vt 0.986797 0.292649 -vt 0.080898 0.920962 -vt 0.372218 0.919251 -vt 0.971318 0.315341 -vt 0.365486 0.979955 -vt 0.974244 0.163224 -vt 0.063701 0.821249 -vt 0.443699 0.994609 -vt 0.995166 0.863576 -vt 0.971318 0.209957 -vt 0.978633 0.867607 -vt 0.996452 0.700197 -vt 0.969845 0.168086 -vt 0.915532 0.997568 -vt 0.498150 0.991949 -vt 0.017962 0.665270 -vt 0.961771 0.946071 -vt 0.864908 0.998340 -vt 0.990006 0.459070 -vt 0.615969 0.979062 -vt 0.598832 0.983538 -vt 0.605658 0.976331 -vt 0.224338 0.953418 -vt 0.891444 0.906374 -vt 1.000000 0.766508 -vt 0.017793 0.882683 -vt 0.039072 0.997065 -vt 0.992072 0.866485 -vt 0.473753 0.987457 -vt 0.224338 0.805471 -vt 0.444053 0.895187 -vt 0.989144 0.636975 -vt 0.994644 0.285052 -vt 0.491753 0.475262 -vt 0.823148 0.475272 -vt 0.544773 0.974472 -vt 0.500128 0.976232 -vt 0.625701 0.847888 -vt 0.504762 0.956099 -vt 0.886708 0.906345 -vt 0.443917 0.821249 -vt 0.819898 0.819191 -vt 0.856897 0.819305 -vt 0.856761 0.863671 -vt 0.544822 0.904631 -vt 0.589075 0.904673 -vt 0.589026 0.956085 -vt 0.544368 0.904673 -vt 0.544319 0.956085 -vt 0.500067 0.956043 -vt 0.544874 0.849165 -vt 0.589127 0.849207 -vt 0.544420 0.849207 -vt 0.500115 0.904631 -vt 0.879929 0.104895 -vt 0.880138 0.036641 -vt 0.924391 0.036777 -vt 0.834419 0.036641 -vt 0.878671 0.036777 -vt 0.878462 0.105031 -vt 0.880250 0.000000 -vt 0.924503 0.000136 -vt 0.878783 0.000136 -vt 0.924182 0.105031 -vt 0.923835 0.218517 -vt 0.879582 0.218381 -vt 0.834210 0.104895 -vt 0.878115 0.218517 -vt 0.544976 0.740944 -vt 0.544522 0.740987 -vt 0.500167 0.849165 -vt 0.589229 0.740987 -vt 0.545140 0.568150 -vt 0.544685 0.568192 -vt 0.500269 0.740944 -vt 0.923316 0.388182 -vt 0.879063 0.388046 -vt 0.833863 0.218381 -vt 0.877596 0.388182 -vt 0.923098 0.459408 -vt 0.833126 0.459272 -vt 0.833344 0.388046 -vt 0.545228 0.475257 -vt 0.589480 0.475299 -vt 0.500433 0.568150 -vt 0.500521 0.475257 -vt 0.224338 0.864177 -vt 0.224432 0.833476 -vt 0.268685 0.833612 -vt 0.320708 0.805593 -vt 0.364961 0.805457 -vt 0.365055 0.836158 -vt 0.923036 0.479660 -vt 0.878783 0.479524 -vt 0.877378 0.459408 -vt 0.877316 0.479660 -vt 0.224518 0.805457 -vt 0.268771 0.805593 -vt 0.365141 0.864177 -vt 0.320888 0.864313 -vt 0.676020 0.918108 -vt 0.707415 0.918204 -vt 0.707300 0.955827 -vt 0.630712 0.856078 -vt 0.630867 0.805632 -vt 0.668393 0.805747 -vt 0.710605 0.859851 -vt 0.710771 0.805632 -vt 0.748298 0.805747 -vt 0.710543 0.871728 -vt 0.673016 0.871693 -vt 0.673079 0.805632 -vt 0.625374 0.914448 -vt 0.625338 0.952071 -vt 0.486613 0.753891 -vt 0.449086 0.753855 -vt 0.449191 0.643406 -vt 0.019740 0.733378 -vt 0.057266 0.733493 -vt 0.056944 0.838782 -vt 0.448677 0.643291 -vt 0.449191 0.475257 -vt 0.486717 0.475373 -vt 0.327458 0.655924 -vt 0.327614 0.490875 -vt 0.320708 0.805493 -vt 0.320643 0.874845 -vt 0.283116 0.874810 -vt 0.449191 0.753891 -vt 0.486717 0.754006 -vt 0.486442 0.843955 -vt 0.193125 0.965874 -vt 0.193010 0.928251 -vt 0.218740 0.928172 -vt 0.870858 0.981830 -vt 0.870894 0.944207 -vt 0.890407 0.944226 -vt 0.935908 0.125774 -vt 0.959847 0.125701 -vt 0.959962 0.163324 -vt 0.264481 0.967918 -vt 0.264385 0.936308 -vt 0.295774 0.936212 -vt 0.192705 0.952718 -vt 0.161177 0.952622 -vt 0.161323 0.904967 -vt 0.104494 0.872457 -vt 0.104651 0.821249 -vt 0.621068 0.805662 -vt 0.621009 0.868035 -vt 0.136147 0.967900 -vt 0.104618 0.967870 -vt 0.104650 0.933926 -vt 0.819762 0.819162 -vt 0.819861 0.714877 -vt 0.851389 0.714907 -vt 0.161481 0.805457 -vt 0.193010 0.805554 -vt 0.192705 0.904967 -vt 0.057266 0.574724 -vt 0.056781 0.733378 -vt 0.025253 0.733281 -vt 0.788081 0.714877 -vt 0.756553 0.714847 -vt 0.756700 0.559010 -vt 0.819714 0.558980 -vt 0.819775 0.493498 -vt 0.851304 0.493528 -vt 0.359246 0.656057 -vt 0.358986 0.740964 -vt 0.327458 0.740867 -vt 0.295967 0.936217 -vt 0.321708 0.936297 -vt 0.321611 0.967906 -vt 0.935032 0.944127 -vt 0.935002 0.975737 -vt 0.959904 0.944281 -vt 0.959807 0.975890 -vt 0.935888 0.975816 -vt 0.444053 0.865615 -vt 0.819762 0.863558 -vt 0.544773 0.956042 -vt 0.834531 0.000000 -vt 0.589392 0.568192 -vt 0.878845 0.459272 -vt 0.544773 0.475300 -vt 0.268591 0.864313 -vt 0.320802 0.836294 -vt 0.833064 0.479524 -vt 0.675905 0.955730 -vt 0.668239 0.856193 -vt 0.748132 0.859966 -vt 0.710605 0.805667 -vt 0.589480 0.952037 -vt 0.486717 0.643442 -vt 0.019418 0.838666 -vt 0.486203 0.643406 -vt 0.365141 0.490911 -vt 0.283182 0.805457 -vt 0.448916 0.843839 -vt 0.218855 0.965795 -vt 0.890371 0.981849 -vt 0.295871 0.967821 -vt 0.192851 0.905064 -vt 0.136179 0.821346 -vt 0.589539 0.805632 -vt 0.136179 0.933956 -vt 0.851291 0.819191 -vt 0.161177 0.904871 -vt 0.025738 0.574628 -vt 0.788228 0.559040 -vt 0.851242 0.559010 -vt 0.327718 0.655960 -vt 0.916578 0.975719 -vt 0.935984 0.944207 -vn -0.011000 0.999900 0.000000 -vn -0.576400 0.817200 0.000000 -vn -1.000000 0.000000 0.000000 -vn -0.005600 1.000000 0.000000 -vn -0.274000 0.961700 0.000000 -vn 0.274000 -0.961700 0.000000 -vn 0.005600 -1.000000 0.000000 -vn 0.576400 -0.817200 0.000000 -vn 0.011000 -0.999900 0.000000 -vn -0.000000 0.000000 -1.000000 -vn 0.000000 0.000000 1.000000 -vn -0.916300 -0.386200 -0.106000 -vn 0.973100 -0.230300 -0.000000 -vn -0.522200 -0.852800 0.000000 -vn -0.717500 -0.696600 0.000000 -vn 0.054100 -0.998500 0.000000 -vn -0.547500 0.836800 -0.000000 -vn 0.000000 -0.097700 -0.995200 -vn 0.241300 0.265100 0.933500 -vn -0.000000 0.073000 -0.997300 -vn 0.082900 0.174900 0.981100 -vn -0.000000 0.095100 -0.995500 -vn 0.003000 0.147400 0.989100 -vn 0.898000 -0.440000 0.000000 -vn -0.754600 -0.656200 0.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.549400 -0.835600 0.000000 -vn 0.549300 -0.835600 0.000000 -vn 0.549500 -0.835500 0.000000 -vn -0.020000 -0.999800 0.000000 -vn -0.428400 -0.903600 0.000000 -vn 0.195900 -0.980600 0.000000 -vn -0.004000 0.000000 1.000000 -vn -0.004000 0.000000 -1.000000 -vn -0.004000 0.005600 1.000000 -vn -0.004000 0.005600 -1.000000 -vn -0.004000 -0.055800 -0.998400 -vn -0.972300 0.233800 0.000000 -vn -1.000000 -0.001800 0.000000 -vn -0.006000 0.812500 -0.582900 -vn -0.006000 0.812500 0.582900 -vn -0.007400 1.000000 0.000000 -vn 0.017900 0.999800 0.000000 -vn -0.017900 -0.999800 0.000000 -vn 0.339200 -0.166200 -0.925900 -vn 0.468700 -0.229600 0.853000 -vn 0.754200 -0.656600 0.000000 -vn 0.002200 -1.000000 0.000000 -vn 0.002100 -0.991800 0.127400 -vn 0.032100 -0.999500 0.000000 -vn -1.000000 0.000000 -0.001300 -vn -1.000000 0.000000 0.001300 -vn 0.014600 0.812400 -0.582900 -vn 0.014600 0.812400 0.582900 -vn 0.467200 0.882600 -0.052300 -vn 0.467200 0.882600 0.052300 -vn 0.457600 0.889100 0.000000 -vn -0.274800 -0.952700 0.129800 -vn -0.274800 -0.952700 -0.129800 -vn 0.220500 0.255300 -0.941400 -vn 0.220500 0.255300 0.941400 -vn 0.896500 -0.442900 0.000000 -vn 0.896600 -0.442900 0.000000 -vn 0.109000 -0.005700 -0.994000 -vn 0.106500 0.000000 0.994300 -vn 0.097700 -0.995200 0.000000 -vn -0.113400 0.993600 0.000000 -vn 0.041700 0.050700 -0.997800 -vn 0.060100 0.048100 0.997000 -vn 0.006300 0.121400 -0.992600 -vn 0.006300 0.121400 0.992600 -vn -0.105500 0.991600 0.075100 -vn -0.105500 0.991600 -0.075100 -vn -0.080900 0.996700 0.000000 -vn 0.995400 0.095500 0.000000 -vn -0.634500 -0.772900 0.000000 -vn -0.051600 -0.998700 0.000000 -vn 0.105800 -0.994400 0.000000 -vn 0.080900 -0.996700 0.000000 -vn -0.998300 -0.057600 0.000000 -vn 0.244800 0.969600 0.000000 -vn 0.499800 0.866200 -0.000000 -vn 0.999800 -0.018100 0.000000 -vn 0.895600 -0.444800 0.000000 -vn 0.051600 0.998700 -0.000000 -vn 0.283300 0.959000 0.000000 -vn -0.021000 0.259300 -0.965600 -vn -0.001400 0.249500 0.968400 -vn -0.005500 1.000000 0.000000 -vn -0.842700 -0.538300 0.000000 -vn -0.004000 -0.002500 1.000000 -vn -0.004000 -0.002500 -1.000000 -vn 0.847700 -0.362900 -0.386800 -vn 0.067300 0.032100 0.997200 -vn 0.200300 0.193100 -0.960500 -vn 0.128900 0.166800 0.977500 -vn 0.719900 0.694100 0.000000 -vn 0.919300 -0.393600 0.000000 -vn 0.075300 0.255000 -0.964000 -vn 0.008100 0.339700 0.940500 -vn 0.013400 0.258800 -0.965800 -vn 0.013400 0.258800 0.965800 -vn -0.015200 0.987900 -0.154300 -vn -0.015200 0.987900 0.154300 -vn 0.023600 0.991400 -0.128500 -vn 0.002600 1.000000 0.000000 -vn 0.011300 0.999900 0.000000 -vn -0.011300 -0.999900 0.000000 -vn -0.002600 -1.000000 0.000000 -vn 0.105400 -0.994400 0.000000 -vn 0.059600 -0.998200 0.000000 -vn 0.061900 -0.998100 0.000000 -vn 0.103500 -0.976400 0.189700 -vn -0.004100 0.812500 -0.582900 -vn -0.004100 0.812500 0.582900 -vn -0.005000 1.000000 0.000000 -vn 0.010600 0.999900 0.000000 -vn -0.010600 -0.999900 0.000000 -vn -0.002600 0.101300 -0.994900 -vn -0.003800 0.150900 0.988500 -vn 0.000700 0.098600 -0.995100 -vn 0.001000 0.147100 0.989100 -vn -0.006700 -1.000000 0.000000 -vn 0.025500 -0.999700 0.000000 -vn -0.004700 -1.000000 0.000000 -vn 0.014600 -0.999900 0.000000 -vn 0.008600 0.812500 -0.582900 -vn 0.008600 0.812500 0.582900 -vn 0.599600 -0.004500 -0.800300 -vn 0.599600 -0.004500 0.800300 -vn 0.009000 0.841900 -0.539600 -vn 0.009000 0.841900 0.539600 -vn -0.009000 -0.841900 -0.539600 -vn -0.009000 -0.841900 0.539600 -vn -0.599600 0.004500 -0.800300 -vn -0.599600 0.004500 0.800300 -vn -0.507400 0.003800 -0.861700 -vn -0.507400 0.003800 0.861700 -vn 0.008200 0.774900 -0.632000 -vn 0.008200 0.774900 0.632000 -vn -0.008200 -0.774900 -0.632000 -vn -0.008200 -0.774900 0.632000 -vn 0.507400 -0.003800 -0.861700 -vn 0.507400 -0.003800 0.861700 -vn 0.370800 -0.001400 -0.928700 -vn 0.371000 -0.001400 0.928600 -vn -0.003400 0.683200 -0.730300 -vn -0.003400 0.683200 0.730300 -vn -0.007700 -0.683100 -0.730300 -vn -0.007700 -0.683100 0.730300 -vn -0.370800 0.002300 -0.928700 -vn -0.371000 0.002400 0.928600 -vn 0.495800 0.868500 0.000000 -vn -0.004400 0.874200 -0.485500 -vn -0.004400 0.874200 0.485500 -vn -0.502300 0.864700 0.000000 -vn 0.006900 0.691900 0.721900 -vn 0.006900 0.691900 -0.721900 -vn 0.007000 0.698400 0.715600 -vn 0.007400 0.695200 -0.718800 -vn 0.007400 0.695200 0.718800 -vn 0.007000 0.698400 -0.715600 -vn 0.007300 0.686600 0.727000 -vn 0.007300 0.686600 -0.727000 -vn 0.001700 0.683100 0.730300 -vn 0.001700 0.683100 -0.730300 -vn 0.001800 0.683600 0.729900 -vn 0.007800 0.690600 0.723200 -vn 0.011700 0.691700 0.722100 -vn 0.011600 0.691700 -0.722100 -vn 0.011700 0.691700 -0.722100 -vn 0.012400 0.693200 0.720700 -vn -0.003600 0.692500 0.721400 -vn -0.003900 0.693900 -0.720100 -vn -0.007200 0.696000 0.718000 -vn -0.007700 0.702000 -0.712100 -vn -0.536100 0.844200 0.000000 -vn 0.628300 0.778000 -0.000000 -vn -0.007200 0.696000 -0.718000 -vn -0.003600 0.692500 -0.721400 -vn 0.010000 1.000000 -0.000000 -vn 0.002400 1.000000 0.000000 -vn 0.016800 0.999900 -0.000000 -vn -0.005200 1.000000 -0.000000 -vn -0.010300 0.999900 -0.000000 -vn -0.916300 -0.386200 0.106000 -vn 0.248800 0.236400 -0.939200 -vn 0.000000 -0.057300 0.998400 -vn 0.055900 0.117900 -0.991500 -vn -0.000000 0.109100 0.994000 -vn 0.002000 0.098900 -0.995100 -vn 0.000000 0.141800 0.989900 -vn -0.574000 -0.789700 -0.216700 -vn -0.574000 -0.789700 0.216700 -vn 0.004000 -0.000900 -1.000000 -vn 0.004000 -0.000900 1.000000 -vn 0.195800 -0.980600 0.000000 -vn -0.004000 -0.055800 0.998400 -vn -0.003200 0.101100 -0.994900 -vn -0.004800 0.150700 0.988600 -vn 0.002100 -0.991800 -0.127400 -vn 0.283700 0.779300 -0.558800 -vn 0.283700 0.779300 0.558800 -vn 0.204400 0.000000 -0.978900 -vn 0.204400 0.000000 0.978900 -vn 0.098400 0.069600 -0.992700 -vn 0.098400 0.069600 0.992700 -vn 0.106500 0.000000 -0.994300 -vn 0.109000 -0.005700 0.994000 -vn 0.060100 0.048100 -0.997000 -vn 0.041700 0.050700 0.997800 -vn 0.042000 0.053100 -0.997700 -vn 0.042000 0.053100 0.997700 -vn 0.057300 0.080300 -0.995100 -vn 0.057300 0.080300 0.995100 -vn -0.001400 0.249500 -0.968400 -vn -0.021000 0.259300 0.965600 -vn 0.067300 0.032100 -0.997200 -vn 0.847700 -0.362900 0.386800 -vn 0.128900 0.166800 -0.977500 -vn 0.200300 0.193100 0.960500 -vn 0.008100 0.339700 -0.940500 -vn 0.075300 0.255000 0.964000 -vn 0.006300 0.264000 -0.964500 -vn 0.006300 0.264000 0.964500 -vn 0.023800 0.999700 0.000000 -vn 0.023600 0.991400 0.128500 -vn 0.103500 -0.976400 -0.189700 -vn -0.001500 0.099200 -0.995100 -vn -0.002200 0.147800 0.989000 -vn 0.000500 0.098900 -0.995100 -vn 0.000700 0.147400 0.989100 -vn 0.371000 -0.001400 -0.928600 -vn 0.370800 -0.001400 0.928700 -vn -0.371000 0.002400 -0.928600 -vn -0.370800 0.002300 0.928700 -vn 0.007800 0.690600 -0.723200 -vn 0.001800 0.683600 -0.729900 -vn 0.012400 0.693200 -0.720700 -vn 0.011600 0.691700 0.722100 -vn -0.003900 0.693900 0.720100 -vn -0.007700 0.702000 0.712100 -vn -0.431300 0.902200 -0.000000 -vn -0.096600 0.995300 -0.000000 -vn -0.097700 0.995200 -0.000000 -vn -0.028600 0.999600 -0.000000 -vn 0.866000 0.500000 -0.000000 -vn 1.000000 0.000000 -0.000000 -vn 0.866000 -0.500000 -0.000000 -vn 0.500000 -0.866000 -0.000000 -vn -0.500000 -0.866000 -0.000000 -vn -0.866000 -0.500000 -0.000000 -vn -0.866000 0.500000 -0.000000 -vn -0.500000 0.866000 -0.000000 -vn -0.000000 1.000000 0.000000 -vn 0.500000 0.866000 -0.000000 -vn -0.713800 0.700300 -0.000000 -vn -0.971900 -0.235400 -0.000000 -vn 0.996300 0.085700 0.000000 -vn 0.572300 0.820100 0.000000 -vn 0.348200 0.937400 0.000000 -vn 0.416200 -0.909300 0.000000 -vn -0.301400 -0.953500 0.000000 -vn 0.058600 -0.998300 0.000000 -vn 0.027200 0.999600 0.000000 -vn -0.000900 -1.000000 0.000000 -vn -0.024600 0.999700 0.000000 -vn -0.001700 -1.000000 0.000000 -vn -0.305700 0.952100 0.000000 -vn -0.448800 -0.893600 0.000000 -vn -0.908700 -0.417500 0.000000 -vn -0.949100 0.315000 0.000000 -vn -0.152600 -0.303900 0.940400 -vn -0.292700 -0.134500 0.946700 -vn -0.344900 0.131300 0.929400 -vn -0.304600 0.101100 -0.947100 -vn -0.340100 -0.179200 -0.923200 -vn -0.158500 -0.362100 -0.918600 -vn -0.080800 0.251600 -0.964400 -vn -0.113900 0.406900 0.906400 -vn -0.000700 -0.468900 -0.883300 -vn -0.000800 -0.467500 0.884000 -vn -0.000400 -0.466300 0.884600 -vn -0.006100 0.285600 0.958300 -vn -0.006600 0.269400 -0.963000 -vn -0.000400 -0.467800 -0.883800 -vn 0.006600 0.279500 -0.960100 -vn 0.007300 0.268200 0.963300 -vn 0.027200 -0.463100 -0.885900 -vn 0.027500 -0.536600 0.843400 -vn -0.109600 -0.397600 0.911000 -vn 0.127100 -0.318400 0.939400 -vn 0.090400 0.243400 0.965700 -vn 0.183400 0.262800 0.947200 -vn -0.216100 -0.683500 -0.697200 -vn 0.110600 -0.241600 -0.964100 -vn 0.108400 0.334800 -0.936000 -vn 0.305200 0.501600 -0.809500 -vn 0.346400 0.029800 0.937600 -vn 0.364300 0.035900 -0.930600 -vn -0.995200 -0.098200 0.000000 -vn -0.519800 -0.854300 0.000000 -vn -0.308100 -0.951400 0.000000 -vn -0.370700 0.928800 0.000000 -vn 0.265700 0.964100 0.000000 -vn -0.051100 0.998700 0.000000 -vn -0.023700 -0.999700 -0.000000 -vn 0.000800 1.000000 0.000000 -vn 0.021400 -0.999800 0.000000 -vn 0.001500 1.000000 0.000000 -vn 0.269600 -0.963000 0.000000 -vn 0.401100 0.916100 0.000000 -vn 0.884700 0.466200 0.000000 -vn 0.934600 -0.355800 0.000000 -vn -0.162100 -0.349700 -0.922700 -vn -0.226300 -0.112600 -0.967500 -vn -0.221500 0.073500 -0.972400 -vn -0.227500 0.081800 0.970300 -vn -0.219000 -0.100600 0.970500 -vn -0.160900 -0.320400 0.933500 -vn -0.130600 0.440700 0.888100 -vn -0.115900 0.360800 -0.925400 -vn -0.001200 -0.705900 0.708300 -vn -0.001100 -0.706800 -0.707400 -vn -0.000600 -0.706700 -0.707500 -vn -0.011500 0.468900 -0.883200 -vn -0.010900 0.482600 0.875800 -vn -0.000600 -0.705900 0.708300 -vn 0.012600 0.463900 0.885800 -vn 0.011900 0.473600 -0.880700 -vn 0.039900 -0.735500 0.676300 -vn 0.040900 -0.696400 -0.716500 -vn -0.301200 -0.952800 -0.039000 -vn 0.134300 -0.293400 -0.946500 -vn 0.136500 0.397900 -0.907200 -vn 0.215700 0.334800 -0.917300 -vn -0.254200 -0.871200 0.419900 -vn 0.140200 -0.331900 0.932800 -vn 0.128100 0.344800 0.929900 -vn 0.188700 0.270400 0.944100 -vn 0.229800 0.021400 -0.973000 -vn 0.227500 0.019600 0.973600 -vn -0.995700 -0.092800 0.000000 -vn -0.541600 -0.840600 0.000000 -vn -0.324400 -0.945900 0.000000 -vn -0.389300 0.921100 0.000000 -vn 0.280100 0.960000 0.000000 -vn -0.054100 0.998500 0.000000 -vn -0.025100 -0.999700 0.000000 -vn 0.022700 -0.999700 -0.000000 -vn 0.001600 1.000000 0.000000 -vn 0.284200 -0.958800 0.000000 -vn 0.420600 0.907200 0.000000 -vn 0.895300 0.445500 0.000000 -vn 0.941000 -0.338300 -0.000000 -vn -0.158500 -0.362100 0.918600 -vn -0.340100 -0.179200 0.923200 -vn -0.304600 0.101100 0.947100 -vn -0.344900 0.131300 -0.929400 -vn -0.292700 -0.134500 -0.946700 -vn -0.152600 -0.303900 -0.940400 -vn -0.113900 0.406900 -0.906400 -vn -0.080800 0.251600 0.964400 -vn -0.000800 -0.467500 -0.884000 -vn -0.000700 -0.468900 0.883300 -vn -0.000400 -0.467800 0.883800 -vn -0.006600 0.269400 0.963000 -vn -0.006100 0.285600 -0.958300 -vn -0.000400 -0.466300 -0.884600 -vn 0.007300 0.268200 -0.963300 -vn 0.006600 0.279500 0.960100 -vn 0.027500 -0.536600 -0.843400 -vn 0.027200 -0.463100 0.885900 -vn -0.216100 -0.683500 0.697200 -vn 0.110600 -0.241600 0.964100 -vn 0.108400 0.334800 0.936000 -vn 0.305200 0.501600 0.809500 -vn -0.109600 -0.397600 -0.911000 -vn 0.127100 -0.318400 -0.939400 -vn 0.090400 0.243400 -0.965700 -vn 0.183400 0.262800 -0.947200 -vn 0.364300 0.035900 0.930600 -vn 0.346400 0.029800 -0.937600 -vn -0.160900 -0.320400 -0.933500 -vn -0.219000 -0.100600 -0.970500 -vn -0.227500 0.081800 -0.970300 -vn -0.221500 0.073500 0.972400 -vn -0.226300 -0.112600 0.967500 -vn -0.162100 -0.349700 0.922700 -vn -0.115900 0.360800 0.925400 -vn -0.130600 0.440700 -0.888100 -vn -0.001100 -0.706800 0.707400 -vn -0.001200 -0.705900 -0.708300 -vn -0.000600 -0.705900 -0.708400 -vn -0.010900 0.482600 -0.875800 -vn -0.011500 0.468900 0.883200 -vn -0.000600 -0.706700 0.707500 -vn 0.011900 0.473600 0.880700 -vn 0.012600 0.463900 -0.885800 -vn 0.040900 -0.696400 0.716500 -vn 0.039900 -0.735500 -0.676300 -vn -0.254200 -0.871200 -0.419900 -vn 0.140200 -0.331900 -0.932800 -vn 0.128100 0.344800 -0.929900 -vn 0.188700 0.270400 -0.944100 -vn -0.301200 -0.952800 0.039000 -vn 0.134300 -0.293400 0.946500 -vn 0.136500 0.397900 0.907200 -vn 0.215700 0.334800 0.917300 -vn 0.227500 0.019600 -0.973600 -vn 0.229800 0.021400 0.973000 -vn -0.886600 -0.462500 -0.000000 -vn -0.863300 0.504700 -0.000000 -vn -0.466200 -0.884700 0.000000 -vn -0.196400 -0.980500 0.000000 -vn 0.150800 0.988600 -0.000000 -vn -0.094700 0.995500 -0.000000 -vn -0.014900 0.999900 -0.000000 -vn -0.006100 -1.000000 0.000000 -vn 0.169100 -0.985600 0.000000 -vn -0.030900 0.999500 -0.000000 -vn 0.191100 0.981600 -0.000000 -vn 0.715800 -0.698300 0.000000 -vn 0.999600 0.028300 -0.000000 -vn 0.737400 0.675500 -0.000000 -vn 0.872200 0.489100 0.000000 -vn 0.848100 -0.529800 0.000000 -vn 0.418600 0.908200 -0.000000 -vn 0.173200 0.984900 -0.000000 -vn 0.086200 -0.996300 0.000000 -vn -0.132800 -0.991100 0.000000 -vn 0.013000 -0.999900 0.000000 -vn 0.005300 1.000000 -0.000000 -vn -0.148800 0.988900 -0.000000 -vn 0.026900 -0.999600 0.000000 -vn -0.169900 -0.985500 0.000000 -vn -0.687000 0.726700 -0.000000 -vn -0.999500 -0.031400 -0.000000 -vn -0.703200 -0.711000 0.000000 -vn 0.878200 0.478300 -0.000000 -vn 0.854400 -0.519600 -0.000000 -vn 0.438100 0.898900 0.000000 -vn 0.182600 0.983200 0.000000 -vn -0.140100 -0.990100 -0.000000 -vn 0.089800 -0.996000 -0.000000 -vn 0.013800 -0.999900 -0.000000 -vn 0.005600 1.000000 0.000000 -vn -0.157000 0.987600 0.000000 -vn 0.028500 -0.999600 -0.000000 -vn -0.178500 -0.983900 -0.000000 -vn -0.699200 0.715000 0.000000 -vn -0.999500 -0.030100 -0.000000 -vn -0.717700 -0.696400 -0.000000 -usemtl Tank -s off -f 927/1/1 929/2/1 915/3/1 -f 930/4/1 928/5/1 918/6/1 -f 931/7/2 933/8/2 908/9/2 -f 932/10/2 911/11/2 909/12/2 -f 933/8/3 939/13/3 889/14/3 -f 934/15/3 909/12/3 890/16/3 -f 915/3/4 929/2/4 935/17/4 -f 930/4/4 916/18/4 906/19/4 -f 935/17/5 931/7/5 910/20/5 -f 936/21/5 906/19/5 911/11/5 -f 941/22/6 937/23/6 893/24/6 -f 942/25/6 888/26/6 894/27/6 -f 937/23/7 943/28/7 884/29/7 -f 938/30/7 894/27/7 885/31/7 -f 939/32/8 941/22/8 887/33/8 -f 940/34/8 890/35/8 888/26/8 -f 943/28/9 945/36/9 882/37/9 -f 944/38/9 885/31/9 883/39/9 -f 941/22/10 931/40/10 935/41/10 -f 936/42/11 932/43/11 942/25/11 -f 937/23/10 935/41/10 929/44/10 -f 930/45/11 936/42/11 938/30/11 -f 939/32/10 933/46/10 931/40/10 -f 932/43/11 934/47/11 940/34/11 -f 943/28/10 929/44/10 927/48/10 -f 928/49/11 930/45/11 944/38/11 -f 955/50/12 864/51/12 859/52/12 -f 956/53/13 952/54/13 859/52/13 -f 963/55/14 875/56/14 870/57/14 -f 964/58/14 962/59/14 870/57/14 -f 969/60/15 897/61/15 875/56/15 -f 970/62/15 964/58/15 875/56/15 -f 971/63/16 902/64/16 897/61/16 -f 972/65/16 970/62/16 897/61/16 -f 912/66/3 973/67/3 965/68/3 -f 912/66/3 886/69/3 966/70/3 -f 913/71/2 977/72/2 973/67/2 -f 913/71/2 912/66/2 974/73/2 -f 914/74/4 975/75/4 979/76/4 -f 914/74/4 907/77/4 980/78/4 -f 907/77/17 979/76/17 977/72/17 -f 907/77/17 913/71/17 978/79/17 -f 983/80/18 981/81/18 955/50/18 -f 984/82/19 968/83/19 956/53/19 -f 985/84/20 983/80/20 967/85/20 -f 986/86/21 954/87/21 968/83/21 -f 987/88/22 985/84/22 953/89/22 -f 988/90/23 958/91/23 954/87/23 -f 991/92/24 989/93/24 959/94/24 -f 991/92/24 869/95/24 960/96/24 -f 955/50/25 981/81/25 992/97/25 -f 992/97/25 982/98/25 956/53/25 -f 983/80/26 993/99/26 992/97/26 -f 984/82/26 982/98/26 992/97/26 -f 985/84/26 994/100/26 993/99/26 -f 986/86/26 984/82/26 993/99/26 -f 987/88/26 995/101/26 994/100/26 -f 988/90/26 986/86/26 994/100/26 -f 857/102/27 862/103/27 1000/104/27 -f 863/105/27 858/106/27 997/107/27 -f 996/108/28 1000/109/28 955/50/28 -f 956/53/29 1001/110/29 997/111/29 -f 865/112/30 1002/113/30 998/114/30 -f 866/115/30 861/116/30 999/117/30 -f 1002/118/30 957/119/30 953/89/30 -f 1003/120/30 999/121/30 954/87/30 -f 873/122/14 1008/123/14 1006/124/14 -f 874/125/14 872/126/14 1007/127/14 -f 1008/128/14 963/55/14 961/129/14 -f 1009/130/14 1007/131/14 962/59/14 -f 860/132/31 998/133/31 1012/134/31 -f 861/135/31 892/136/31 1013/137/31 -f 998/138/31 953/89/31 967/85/31 -f 999/121/31 1013/139/31 968/83/31 -f 891/140/32 1012/134/32 1000/104/32 -f 892/136/32 863/105/32 1001/141/32 -f 1000/109/32 1012/142/32 967/85/32 -f 968/83/32 1013/139/32 1001/110/32 -f 898/143/15 1014/144/15 1008/123/15 -f 899/145/15 874/125/15 1009/146/15 -f 1014/147/15 969/60/15 963/55/15 -f 1015/148/15 1009/130/15 964/58/15 -f 898/143/16 900/149/16 1016/150/16 -f 1017/151/16 901/152/16 899/145/16 -f 1016/153/16 971/63/16 969/60/16 -f 972/65/16 1017/154/16 1015/148/16 -f 973/67/33 1018/155/33 1010/156/33 -f 974/73/34 966/70/34 1011/157/34 -f 1018/158/3 908/9/3 889/14/3 -f 1019/159/3 1011/160/3 890/16/3 -f 977/72/35 1028/161/35 1018/155/35 -f 978/79/36 974/73/36 1019/162/36 -f 975/75/4 1026/163/4 1030/164/4 -f 976/165/4 980/78/4 1031/166/4 -f 979/76/5 1030/164/5 1028/161/5 -f 980/78/37 978/79/37 1029/167/37 -f 1026/168/10 1034/169/10 1032/170/10 -f 1033/171/11 1035/172/11 1027/173/11 -f 1040/174/38 1034/169/38 1026/168/38 -f 1041/175/38 976/176/38 1027/173/38 -f 1042/177/38 1040/174/38 975/178/38 -f 1042/177/38 914/179/38 976/176/38 -f 1046/180/39 1047/181/39 1040/174/39 -f 1046/180/39 1042/177/39 1041/175/39 -f 1047/181/39 1049/182/39 1034/169/39 -f 1048/183/39 1041/175/39 1035/172/39 -f 1034/169/40 1049/182/40 1051/184/40 -f 1052/185/41 1050/186/41 1035/172/41 -f 1049/182/42 1047/181/42 1043/187/42 -f 1050/186/42 1052/185/42 1044/188/42 -f 1047/181/42 1046/180/42 1045/189/42 -f 1048/183/42 1044/188/42 1045/189/42 -f 919/190/43 925/191/43 1059/192/43 -f 1060/193/43 926/194/43 920/195/43 -f 1061/196/44 947/197/44 880/198/44 -f 1062/199/44 1056/200/44 881/201/44 -f 1059/202/10 925/203/10 947/197/10 -f 1060/204/11 1062/199/11 948/205/11 -f 959/94/45 989/93/45 1065/206/45 -f 1066/207/46 990/208/46 960/96/46 -f 1065/206/47 989/93/47 991/92/47 -f 1066/207/47 1067/209/47 991/92/47 -f 1053/210/48 867/211/48 1004/212/48 -f 1054/213/48 1069/214/48 1005/215/48 -f 1068/216/49 1004/217/49 959/94/49 -f 1069/218/50 1064/219/50 960/96/50 -f 1070/220/10 1072/221/10 1036/222/10 -f 1037/223/11 1073/224/11 1071/225/11 -f 1083/226/3 1079/227/3 1077/228/3 -f 1080/229/3 1083/226/3 1074/230/3 -f 1079/227/3 1081/231/3 1075/232/3 -f 1080/229/3 1078/233/3 1076/234/3 -f 1081/231/51 1084/235/51 1072/221/51 -f 1082/236/52 1076/234/52 1073/224/52 -f 1072/221/10 1084/235/10 1098/237/10 -f 1099/238/11 1085/239/11 1073/224/11 -f 1081/231/53 1086/240/53 1098/237/53 -f 1082/236/54 1085/239/54 1099/238/54 -f 1094/241/43 1086/240/43 1081/231/43 -f 1082/236/43 1087/242/43 1095/243/43 -f 1093/244/43 1094/241/43 1079/227/43 -f 1080/229/43 1095/243/43 1093/244/43 -f 1088/245/55 1108/246/55 1100/247/55 -f 1101/248/56 1109/249/56 1089/250/56 -f 1106/251/57 1108/246/57 1088/245/57 -f 1107/252/57 1091/253/57 1089/250/57 -f 1105/254/57 1106/251/57 1090/255/57 -f 1105/254/57 1092/256/57 1091/253/57 -f 1096/257/58 1100/247/58 1113/258/58 -f 1114/259/59 1101/248/59 1097/260/59 -f 1038/261/60 1113/258/60 1115/262/60 -f 1116/263/61 1114/259/61 1039/264/61 -f 1016/153/62 1123/265/62 1133/266/62 -f 1134/267/62 1124/268/62 1017/154/62 -f 900/149/63 1162/269/63 1123/270/63 -f 1124/271/62 1163/272/62 901/152/62 -f 971/63/62 1133/266/62 1161/273/62 -f 1161/273/63 1134/267/63 972/65/63 -f 1147/274/64 1137/275/64 949/276/64 -f 1148/277/65 924/278/65 950/279/65 -f 949/276/66 1137/275/66 1166/280/66 -f 1167/281/66 1138/282/66 950/279/66 -f 1153/283/67 1147/284/67 923/285/67 -f 1154/286/67 922/287/67 924/288/67 -f 1164/289/68 1159/290/68 903/291/68 -f 1165/292/69 896/293/69 904/294/69 -f 876/295/70 1168/296/70 1164/289/70 -f 1165/292/71 1169/297/71 877/298/71 -f 878/299/72 1166/280/72 1168/296/72 -f 1169/297/73 1167/281/73 879/300/73 -f 1149/301/74 1147/284/74 1153/283/74 -f 1150/302/74 1152/303/74 1154/286/74 -f 1141/304/75 1143/305/75 1155/306/75 -f 1142/307/75 1160/308/75 1156/309/75 -f 1139/310/76 1141/311/76 1159/290/76 -f 1140/312/76 1165/292/76 1160/313/76 -f 1135/314/77 1139/310/77 1164/289/77 -f 1136/315/77 1169/297/77 1165/292/77 -f 1137/275/78 1135/314/78 1168/296/78 -f 1138/282/78 1167/281/78 1169/297/78 -f 1145/316/10 1143/317/10 1141/311/10 -f 1146/318/11 1140/312/11 1142/319/11 -f 1149/320/10 1145/316/10 1139/310/10 -f 1150/321/11 1136/315/11 1140/312/11 -f 1137/275/10 1147/274/10 1149/320/10 -f 1150/321/11 1148/277/11 1138/282/11 -f 1131/322/75 1129/323/75 1157/324/75 -f 1130/325/75 1132/326/75 1158/327/75 -f 1159/328/75 1155/306/75 1119/329/75 -f 1120/330/75 1156/309/75 1160/308/75 -f 1119/331/75 1129/323/75 1131/322/75 -f 1120/332/75 1122/333/75 1132/326/75 -f 1127/334/79 1125/335/79 1115/336/79 -f 1128/337/79 1118/338/79 1116/339/79 -f 1115/336/80 1125/335/80 1111/340/80 -f 1112/341/80 1126/342/80 1116/339/80 -f 1102/343/81 1104/344/81 1110/345/81 -f 1103/346/81 1112/347/81 1110/345/81 -f 1100/247/81 1102/343/81 1111/348/81 -f 1101/248/81 1114/259/81 1112/347/81 -f 1102/343/82 1106/251/82 1105/254/82 -f 1105/254/82 1107/252/82 1103/346/82 -f 1100/247/82 1108/246/82 1106/251/82 -f 1107/252/82 1109/249/82 1101/248/82 -f 1117/349/83 1181/350/83 1175/351/83 -f 1118/338/83 1128/337/83 1176/352/83 -f 1119/353/84 1179/354/84 1173/355/84 -f 1174/356/84 1180/357/84 1120/358/84 -f 1173/355/84 1170/359/84 1157/360/84 -f 1170/359/84 1174/356/84 1130/361/84 -f 1171/362/85 1177/363/85 1175/364/85 -f 1171/362/85 1172/365/85 1176/366/85 -f 1170/359/86 1173/355/86 1177/363/86 -f 1170/359/86 1171/362/86 1178/367/86 -f 1177/363/85 1183/368/85 1181/369/85 -f 1178/367/85 1176/366/85 1182/370/85 -f 1173/355/86 1179/354/86 1183/368/86 -f 1174/356/86 1178/367/86 1184/371/86 -f 1181/372/87 1117/373/87 1115/374/87 -f 1182/375/88 1114/376/88 1116/377/88 -f 1175/364/89 1181/372/89 1113/378/89 -f 1176/366/89 1112/347/89 1114/376/89 -f 1172/365/89 1175/364/89 1111/348/89 -f 1172/365/89 1110/345/89 1112/347/89 -f 873/379/10 871/380/10 1187/381/10 -f 1188/382/11 872/383/11 874/384/11 -f 1185/385/10 1187/381/10 878/299/10 -f 879/300/11 1188/382/11 1186/386/11 -f 865/387/10 860/388/10 1193/389/10 -f 1194/390/11 861/391/11 866/392/11 -f 1191/393/10 1193/389/10 884/29/10 -f 885/31/11 1194/390/11 1192/394/11 -f 857/395/10 1198/396/10 1196/397/10 -f 858/398/11 863/399/11 1197/400/11 -f 1196/397/10 1198/396/10 889/401/10 -f 890/35/11 1199/402/11 1197/400/11 -f 891/403/10 862/404/10 1196/397/10 -f 1197/400/11 863/399/11 892/405/11 -f 1200/406/10 1196/397/10 887/33/10 -f 888/26/11 1197/400/11 1201/407/11 -f 860/388/10 891/403/10 1200/406/10 -f 1201/407/11 892/405/11 861/391/11 -f 1193/389/10 1200/406/10 893/24/10 -f 894/27/11 1201/407/11 1194/390/11 -f 876/295/10 895/408/10 1202/409/10 -f 1203/410/11 896/293/11 877/298/11 -f 1185/385/10 1202/409/10 898/411/10 -f 899/412/11 1203/410/11 1186/386/11 -f 895/408/10 903/291/10 1204/413/10 -f 1205/414/11 904/294/11 896/293/11 -f 1202/409/10 1204/413/10 900/415/10 -f 901/416/11 1205/414/11 1203/410/11 -f 859/52/90 1195/417/90 1206/418/90 -f 859/52/90 952/54/90 1207/419/90 -f 1206/418/90 1195/417/90 886/69/90 -f 1195/417/90 1207/419/90 966/70/90 -f 951/420/91 1206/418/91 1208/421/91 -f 952/54/92 997/111/92 1209/422/92 -f 1206/418/91 965/68/91 1010/156/91 -f 1207/419/92 1209/422/92 1011/157/92 -f 996/423/90 1208/424/90 1198/425/90 -f 997/107/90 858/106/90 1199/426/90 -f 1208/424/90 1010/427/90 889/14/90 -f 1209/428/90 1199/426/90 890/16/90 -f 867/429/10 1053/430/10 1210/431/10 -f 1211/432/11 1054/433/11 868/434/11 -f 1210/431/10 1055/435/10 880/198/10 -f 1211/432/11 1190/436/11 881/201/11 -f 1159/290/93 1212/437/93 1204/413/93 -f 1160/313/94 904/294/94 1205/414/94 -f 1212/437/95 1162/438/95 900/415/95 -f 1213/439/96 1205/414/96 901/416/96 -f 1161/273/97 1133/266/97 1215/440/97 -f 1216/441/97 1134/267/97 1161/273/97 -f 1215/440/98 1131/322/98 1158/327/98 -f 1216/441/98 1214/442/98 1158/327/98 -f 1123/270/97 1162/269/97 1212/443/97 -f 1213/444/97 1163/272/97 1124/271/97 -f 1212/443/98 1159/328/98 1121/445/98 -f 1160/308/98 1213/444/98 1218/446/98 -f 1133/266/97 1123/265/97 1217/447/97 -f 1218/448/97 1124/268/97 1134/267/97 -f 1217/447/98 1121/449/98 1131/322/98 -f 1218/448/98 1216/441/98 1132/326/98 -f 1221/450/99 1183/368/99 1179/354/99 -f 1222/451/100 1120/358/100 1180/357/100 -f 1117/452/101 1181/369/101 1183/368/101 -f 1184/371/102 1182/370/102 1118/453/102 -f 1143/305/103 1145/454/103 1219/455/103 -f 1220/456/104 1146/457/104 1144/458/104 -f 1151/459/105 1219/455/105 1145/454/105 -f 1152/303/85 1150/302/85 1146/457/85 -f 923/285/106 1230/460/106 1228/461/106 -f 924/288/106 922/287/106 1229/462/106 -f 1230/460/107 925/191/107 919/190/107 -f 1231/460/107 1229/462/107 920/195/107 -f 947/197/108 1232/463/108 1226/464/108 -f 948/205/108 881/201/108 1227/465/108 -f 1232/463/109 949/276/109 878/299/109 -f 1233/466/109 1227/465/109 879/300/109 -f 925/203/10 1230/467/10 1232/463/10 -f 926/468/11 948/205/11 1233/466/11 -f 1230/467/10 923/469/10 949/276/10 -f 1231/470/11 1233/466/11 950/279/11 -f 959/471/110 1234/472/110 1223/473/110 -f 960/474/110 869/475/110 1223/473/110 -f 1223/473/111 1234/472/111 961/129/111 -f 1235/476/111 1223/473/111 870/57/111 -f 867/211/112 1224/477/112 1236/478/112 -f 868/479/112 1005/215/112 1237/480/112 -f 1224/477/111 871/481/111 1006/124/111 -f 1225/482/111 1237/480/111 1007/127/111 -f 1004/483/112 1236/484/112 1234/472/112 -f 1005/485/113 960/474/113 1235/476/113 -f 1236/484/111 1006/486/111 961/129/111 -f 1237/487/111 1235/476/111 962/59/111 -f 1240/488/10 1038/261/10 1020/489/10 -f 1241/490/11 1239/491/11 1021/492/11 -f 1036/222/10 1098/237/10 1242/493/10 -f 1243/494/11 1099/238/11 1037/223/11 -f 1242/493/10 1096/257/10 1038/261/10 -f 1243/494/11 1241/490/11 1039/264/11 -f 1098/237/114 1086/240/114 1245/495/114 -f 1246/496/115 1087/242/115 1099/238/115 -f 1242/493/114 1245/495/114 1088/245/114 -f 1089/250/115 1246/496/115 1243/494/115 -f 1088/245/116 1245/495/116 1247/497/116 -f 1089/250/116 1091/253/116 1248/498/116 -f 1245/495/116 1086/240/116 1094/241/116 -f 1246/496/116 1248/498/116 1095/243/116 -f 1090/255/116 1247/497/116 1244/499/116 -f 1091/253/116 1092/256/116 1244/499/116 -f 871/380/10 1224/500/10 1249/501/10 -f 872/383/11 1188/382/11 1250/502/11 -f 1224/500/10 867/429/10 1189/503/10 -f 1225/504/11 1250/502/11 1190/436/11 -f 1187/381/10 1249/501/10 1226/464/10 -f 1188/382/11 879/300/11 1227/465/11 -f 1249/501/10 1189/503/10 880/198/10 -f 1250/502/11 1227/465/11 881/201/11 -f 1057/505/117 1059/192/117 1257/506/117 -f 1060/193/117 1058/507/117 1256/508/117 -f 1257/506/117 927/1/117 917/509/117 -f 1258/510/117 1256/508/117 918/6/117 -f 945/36/118 1259/511/118 1253/512/118 -f 946/513/118 883/39/118 1254/514/118 -f 1259/511/118 1061/196/118 1055/435/118 -f 1260/515/118 1254/514/118 1056/200/118 -f 927/48/10 1257/516/10 1259/511/10 -f 928/49/11 946/513/11 1260/515/11 -f 1257/516/10 1059/202/10 1061/196/10 -f 1258/517/11 1260/515/11 1062/199/11 -f 1063/518/119 1065/206/119 1263/519/119 -f 1264/520/120 1066/207/120 1064/219/120 -f 1261/521/121 1263/519/121 987/88/121 -f 988/90/122 1264/520/122 1262/522/122 -f 987/88/123 1263/519/123 1265/523/123 -f 988/90/123 995/101/123 1265/523/123 -f 1263/519/124 1065/206/124 1067/209/124 -f 1264/520/124 1265/523/124 1067/209/124 -f 865/112/125 1251/524/125 1266/525/125 -f 866/115/125 1003/526/125 1267/527/125 -f 1251/524/126 1053/210/126 1068/528/126 -f 1252/529/126 1267/527/126 1069/214/126 -f 1002/118/125 1266/530/125 1261/521/125 -f 1003/120/125 958/91/125 1262/522/125 -f 1266/530/126 1068/216/126 1063/518/126 -f 1267/531/126 1262/522/126 1064/219/126 -f 1051/184/127 1273/532/127 1270/533/127 -f 1052/185/128 1033/171/128 1271/534/128 -f 1273/532/127 1075/232/127 1072/221/127 -f 1274/535/128 1271/534/128 1073/224/128 -f 1075/232/117 1273/532/117 1275/536/117 -f 1076/234/117 1078/233/117 1276/537/117 -f 1273/532/117 1051/184/117 1043/187/117 -f 1274/535/117 1276/537/117 1044/188/117 -f 1077/228/117 1275/536/117 1272/538/117 -f 1078/233/117 1074/230/117 1272/538/117 -f 1275/536/117 1043/187/117 1045/189/117 -f 1276/537/117 1272/538/117 1045/189/117 -f 1053/430/10 1251/539/10 1277/540/10 -f 1054/433/11 1211/432/11 1278/541/11 -f 1251/539/10 865/387/10 1191/393/10 -f 1252/542/11 1278/541/11 1192/394/11 -f 1055/435/10 1210/431/10 1277/540/10 -f 1278/541/11 1211/432/11 1056/200/11 -f 1277/540/10 1191/393/10 882/37/10 -f 1278/541/11 1254/514/11 883/39/11 -f 1268/543/129 1281/544/129 1279/545/129 -f 1280/546/130 1282/547/130 1269/548/130 -f 1279/545/131 1283/549/131 1032/170/131 -f 1280/546/132 1271/534/132 1033/171/132 -f 1285/550/133 1281/544/133 1268/543/133 -f 1286/551/134 1025/552/134 1269/548/134 -f 1032/170/135 1283/549/135 1285/550/135 -f 1286/551/136 1284/553/136 1033/171/136 -f 1283/549/10 1279/545/10 1281/544/10 -f 1284/553/11 1286/551/11 1282/547/11 -f 1270/533/137 1287/554/137 1289/555/137 -f 1290/556/138 1288/557/138 1271/534/138 -f 1291/558/139 1287/554/139 1270/533/139 -f 1292/559/140 1073/224/140 1271/534/140 -f 1289/555/141 1293/560/141 1070/220/141 -f 1290/556/142 1269/548/142 1071/225/142 -f 1070/220/143 1293/560/143 1291/558/143 -f 1292/559/144 1294/561/144 1071/225/144 -f 1287/554/10 1291/558/10 1293/560/10 -f 1288/557/11 1290/556/11 1294/561/11 -f 1297/562/145 1295/563/145 1240/488/145 -f 1298/564/146 1239/491/146 1241/490/146 -f 1240/488/147 1295/563/147 1299/565/147 -f 1300/566/148 1296/567/148 1241/490/148 -f 1301/568/149 1297/562/149 1238/569/149 -f 1302/570/150 1023/571/150 1239/491/150 -f 1299/565/151 1301/568/151 1022/572/151 -f 1300/566/152 1037/223/152 1023/571/152 -f 1301/568/10 1299/565/10 1295/563/10 -f 1296/567/11 1300/566/11 1302/570/11 -f 1247/497/153 1303/573/153 1305/574/153 -f 1305/575/153 1304/576/153 1248/498/153 -f 1094/241/154 1306/577/154 1303/573/154 -f 1304/576/155 1307/578/155 1095/243/155 -f 1305/579/11 1308/580/11 1093/581/11 -f 1308/582/156 1306/577/156 1094/241/156 -f 1308/583/156 1093/244/156 1095/243/156 -f 1305/574/116 1303/573/116 1306/577/116 -f 1307/578/116 1304/576/116 1305/575/116 -f 1070/584/157 1309/585/157 1311/586/157 -f 1312/587/158 1310/588/158 1071/589/158 -f 1311/586/159 1313/590/159 1024/591/159 -f 1312/587/160 1269/592/160 1025/593/160 -f 1317/594/158 1315/595/158 1057/505/158 -f 1318/596/161 1256/508/161 1058/507/161 -f 917/509/162 1319/597/162 1317/594/162 -f 1318/596/159 1320/598/159 918/6/159 -f 1238/599/163 1323/600/163 1321/601/163 -f 1322/602/164 1324/603/164 1239/604/164 -f 1020/605/165 1325/606/165 1323/600/165 -f 1324/603/166 1326/607/166 1021/608/166 -f 1329/609/166 1327/610/166 921/611/166 -f 1330/612/167 1229/462/167 922/287/167 -f 1331/613/164 1329/609/164 1228/461/164 -f 1332/614/168 920/195/168 1229/462/168 -f 1022/615/169 1321/601/169 1309/585/169 -f 1310/588/170 1322/602/170 1023/616/170 -f 1315/595/171 1331/613/171 919/190/171 -f 1316/617/172 1058/507/172 920/195/172 -f 1333/618/173 1335/619/173 1030/620/173 -f 1334/621/174 1027/622/174 1031/623/174 -f 1313/590/175 1333/618/175 1026/624/175 -f 1314/625/176 1025/593/176 1027/622/176 -f 1030/620/177 1335/619/177 1337/626/177 -f 1336/627/177 1031/623/177 906/19/177 -f 1327/610/178 1325/606/178 1020/605/178 -f 1328/628/178 922/287/178 1021/608/178 -f 915/3/179 1339/629/179 1319/597/179 -f 1320/598/175 1340/630/175 916/18/175 -f 905/631/180 1337/626/180 1339/629/180 -f 1340/630/173 1338/632/173 906/19/173 -f 1317/594/181 1319/597/181 1313/590/181 -f 1318/596/181 1312/587/181 1314/625/181 -f 1315/595/181 1317/594/181 1311/586/181 -f 1316/617/181 1310/588/181 1312/587/181 -f 1323/600/117 1329/609/117 1331/613/117 -f 1332/614/117 1330/612/117 1324/603/117 -f 1327/610/182 1329/609/182 1323/600/182 -f 1328/628/182 1326/607/182 1324/603/182 -f 1321/601/183 1331/613/183 1315/595/183 -f 1316/617/183 1332/614/183 1322/602/183 -f 1335/619/184 1333/618/184 1339/629/184 -f 1340/630/184 1334/621/184 1336/627/184 -f 1319/597/185 1339/629/185 1333/618/185 -f 1334/621/185 1340/630/185 1320/598/185 -f 917/509/1 927/1/1 915/3/1 -f 916/18/1 930/4/1 918/6/1 -f 910/20/2 931/7/2 908/9/2 -f 934/15/2 932/10/2 909/12/2 -f 908/9/3 933/8/3 889/14/3 -f 940/633/3 934/15/3 890/16/3 -f 905/631/4 915/3/4 935/17/4 -f 936/21/4 930/4/4 906/19/4 -f 905/631/5 935/17/5 910/20/5 -f 932/10/5 936/21/5 911/11/5 -f 887/33/6 941/22/6 893/24/6 -f 938/30/6 942/25/6 894/27/6 -f 893/24/7 937/23/7 884/29/7 -f 944/38/7 938/30/7 885/31/7 -f 889/401/8 939/32/8 887/33/8 -f 942/25/8 940/34/8 888/26/8 -f 884/29/9 943/28/9 882/37/9 -f 946/513/9 944/38/9 883/39/9 -f 937/23/10 941/22/10 935/41/10 -f 938/30/11 936/42/11 942/25/11 -f 943/28/10 937/23/10 929/44/10 -f 944/38/11 930/45/11 938/30/11 -f 941/22/10 939/32/10 931/40/10 -f 942/25/11 932/43/11 940/34/11 -f 945/36/10 943/28/10 927/48/10 -f 946/513/11 928/49/11 944/38/11 -f 951/420/13 955/50/13 859/52/13 -f 864/51/186 956/53/186 859/52/186 -f 961/129/14 963/55/14 870/57/14 -f 875/56/14 964/58/14 870/57/14 -f 963/55/15 969/60/15 875/56/15 -f 897/61/15 970/62/15 875/56/15 -f 969/60/16 971/63/16 897/61/16 -f 902/64/16 972/65/16 897/61/16 -f 886/69/3 912/66/3 965/68/3 -f 974/73/3 912/66/3 966/70/3 -f 912/66/2 913/71/2 973/67/2 -f 978/79/2 913/71/2 974/73/2 -f 907/77/4 914/74/4 979/76/4 -f 976/165/4 914/74/4 980/78/4 -f 913/71/17 907/77/17 977/72/17 -f 980/78/17 907/77/17 978/79/17 -f 967/85/187 983/80/187 955/50/187 -f 982/98/188 984/82/188 956/53/188 -f 953/89/189 985/84/189 967/85/189 -f 984/82/190 986/86/190 968/83/190 -f 957/119/191 987/88/191 953/89/191 -f 986/86/192 988/90/192 954/87/192 -f 869/95/24 991/92/24 959/94/24 -f 990/208/24 991/92/24 960/96/24 -f 864/634/193 955/50/193 992/97/193 -f 864/634/194 992/97/194 956/53/194 -f 981/81/26 983/80/26 992/97/26 -f 993/99/26 984/82/26 992/97/26 -f 983/80/26 985/84/26 993/99/26 -f 994/100/26 986/86/26 993/99/26 -f 985/84/26 987/88/26 994/100/26 -f 995/101/26 988/90/26 994/100/26 -f 996/423/27 857/102/27 1000/104/27 -f 1001/141/27 863/105/27 997/107/27 -f 951/420/195 996/108/195 955/50/195 -f 952/54/196 956/53/196 997/111/196 -f 860/635/30 865/112/30 998/114/30 -f 1003/526/30 866/115/30 999/117/30 -f 998/138/30 1002/118/30 953/89/30 -f 958/91/30 1003/120/30 954/87/30 -f 871/481/14 873/122/14 1006/124/14 -f 1009/146/14 874/125/14 1007/127/14 -f 1006/486/14 1008/128/14 961/129/14 -f 964/58/14 1009/130/14 962/59/14 -f 891/140/31 860/132/31 1012/134/31 -f 999/636/31 861/135/31 1013/137/31 -f 1012/142/31 998/138/31 967/85/31 -f 954/87/31 999/121/31 968/83/31 -f 862/103/32 891/140/32 1000/104/32 -f 1013/137/32 892/136/32 1001/141/32 -f 955/50/32 1000/109/32 967/85/32 -f 956/53/197 968/83/197 1001/110/197 -f 873/122/15 898/143/15 1008/123/15 -f 1015/637/15 899/145/15 1009/146/15 -f 1008/128/15 1014/147/15 963/55/15 -f 970/62/15 1015/148/15 964/58/15 -f 1014/144/16 898/143/16 1016/150/16 -f 1015/637/16 1017/151/16 899/145/16 -f 1014/147/16 1016/153/16 969/60/16 -f 970/62/16 972/65/16 1015/148/16 -f 965/68/33 973/67/33 1010/156/33 -f 1019/162/34 974/73/34 1011/157/34 -f 1010/427/3 1018/158/3 889/14/3 -f 909/12/3 1019/159/3 890/16/3 -f 973/67/35 977/72/35 1018/155/35 -f 1029/167/36 978/79/36 1019/162/36 -f 979/76/4 975/75/4 1030/164/4 -f 1027/638/4 976/165/4 1031/166/4 -f 977/72/198 979/76/198 1028/161/198 -f 1031/166/5 980/78/5 1029/167/5 -f 1024/639/10 1026/168/10 1032/170/10 -f 1025/552/11 1033/171/11 1027/173/11 -f 975/178/38 1040/174/38 1026/168/38 -f 1035/172/38 1041/175/38 1027/173/38 -f 914/179/38 1042/177/38 975/178/38 -f 1041/175/38 1042/177/38 976/176/38 -f 1042/177/39 1046/180/39 1040/174/39 -f 1048/183/39 1046/180/39 1041/175/39 -f 1040/174/39 1047/181/39 1034/169/39 -f 1050/186/39 1048/183/39 1035/172/39 -f 1032/170/40 1034/169/40 1051/184/40 -f 1033/171/41 1052/185/41 1035/172/41 -f 1051/184/42 1049/182/42 1043/187/42 -f 1048/183/42 1050/186/42 1044/188/42 -f 1043/187/42 1047/181/42 1045/189/42 -f 1046/180/42 1048/183/42 1045/189/42 -f 1057/505/43 919/190/43 1059/192/43 -f 1058/507/43 1060/193/43 920/195/43 -f 1055/435/44 1061/196/44 880/198/44 -f 948/205/44 1062/199/44 881/201/44 -f 1061/196/10 1059/202/10 947/197/10 -f 926/468/11 1060/204/11 948/205/11 -f 1063/518/199 959/94/199 1065/206/199 -f 1064/219/200 1066/207/200 960/96/200 -f 1067/209/47 1065/206/47 991/92/47 -f 990/208/47 1066/207/47 991/92/47 -f 1068/528/48 1053/210/48 1004/212/48 -f 868/479/48 1054/213/48 1005/215/48 -f 1063/518/50 1068/216/50 959/94/50 -f 1005/640/201 1069/218/201 960/96/201 -f 1022/572/10 1070/220/10 1036/222/10 -f 1023/571/11 1037/223/11 1071/225/11 -f 1074/230/3 1083/226/3 1077/228/3 -f 1078/233/3 1080/229/3 1074/230/3 -f 1077/228/3 1079/227/3 1075/232/3 -f 1082/236/3 1080/229/3 1076/234/3 -f 1075/232/51 1081/231/51 1072/221/51 -f 1085/239/52 1082/236/52 1073/224/52 -f 1036/222/10 1072/221/10 1098/237/10 -f 1037/223/11 1099/238/11 1073/224/11 -f 1084/235/53 1081/231/53 1098/237/53 -f 1087/242/54 1082/236/54 1099/238/54 -f 1079/227/43 1094/241/43 1081/231/43 -f 1080/229/43 1082/236/43 1095/243/43 -f 1083/226/43 1093/244/43 1079/227/43 -f 1083/226/43 1080/229/43 1093/244/43 -f 1096/257/202 1088/245/202 1100/247/202 -f 1097/260/203 1101/248/203 1089/250/203 -f 1090/255/57 1106/251/57 1088/245/57 -f 1109/249/57 1107/252/57 1089/250/57 -f 1092/256/57 1105/254/57 1090/255/57 -f 1107/252/57 1105/254/57 1091/253/57 -f 1038/261/204 1096/257/204 1113/258/204 -f 1039/264/205 1114/259/205 1097/260/205 -f 1020/489/206 1038/261/206 1115/262/206 -f 1021/492/207 1116/263/207 1039/264/207 -f 971/63/63 1016/153/63 1133/266/63 -f 972/65/63 1134/267/63 1017/154/63 -f 1016/150/63 900/149/63 1123/270/63 -f 1017/151/63 1124/271/63 901/152/63 -f 902/64/63 971/63/63 1161/273/63 -f 902/64/62 1161/273/62 972/65/62 -f 923/469/208 1147/274/208 949/276/208 -f 1138/282/209 1148/277/209 950/279/209 -f 878/299/66 949/276/66 1166/280/66 -f 879/300/66 1167/281/66 950/279/66 -f 921/611/67 1153/283/67 923/285/67 -f 1148/641/67 1154/286/67 924/288/67 -f 895/408/210 1164/289/210 903/291/210 -f 1160/313/211 1165/292/211 904/294/211 -f 895/408/212 876/295/212 1164/289/212 -f 896/293/213 1165/292/213 877/298/213 -f 876/295/214 878/299/214 1168/296/214 -f 877/298/215 1169/297/215 879/300/215 -f 1151/459/74 1149/301/74 1153/283/74 -f 1148/641/74 1150/302/74 1154/286/74 -f 1159/328/75 1141/304/75 1155/306/75 -f 1144/458/75 1142/307/75 1156/309/75 -f 1164/289/76 1139/310/76 1159/290/76 -f 1142/319/76 1140/312/76 1160/313/76 -f 1168/296/77 1135/314/77 1164/289/77 -f 1140/312/77 1136/315/77 1165/292/77 -f 1166/280/78 1137/275/78 1168/296/78 -f 1136/315/78 1138/282/78 1169/297/78 -f 1139/310/10 1145/316/10 1141/311/10 -f 1144/642/11 1146/318/11 1142/319/11 -f 1135/314/10 1149/320/10 1139/310/10 -f 1146/318/11 1150/321/11 1140/312/11 -f 1135/314/10 1137/275/10 1149/320/10 -f 1136/315/11 1150/321/11 1138/282/11 -f 1158/327/75 1131/322/75 1157/324/75 -f 1157/324/75 1130/325/75 1158/327/75 -f 1121/445/75 1159/328/75 1119/329/75 -f 1122/643/75 1120/330/75 1160/308/75 -f 1121/449/75 1119/331/75 1131/322/75 -f 1130/325/75 1120/332/75 1132/326/75 -f 1117/349/79 1127/334/79 1115/336/79 -f 1126/342/79 1128/337/79 1116/339/79 -f 1113/644/80 1115/336/80 1111/340/80 -f 1114/645/80 1112/341/80 1116/339/80 -f 1111/348/81 1102/343/81 1110/345/81 -f 1104/344/81 1103/346/81 1110/345/81 -f 1113/258/81 1100/247/81 1111/348/81 -f 1103/346/81 1101/248/81 1112/347/81 -f 1104/344/82 1102/343/82 1105/254/82 -f 1104/344/82 1105/254/82 1103/346/82 -f 1102/343/82 1100/247/82 1106/251/82 -f 1103/346/82 1107/252/82 1101/248/82 -f 1127/334/83 1117/349/83 1175/351/83 -f 1182/646/83 1118/338/83 1176/352/83 -f 1129/647/84 1119/353/84 1173/355/84 -f 1130/361/84 1174/356/84 1120/358/84 -f 1129/647/84 1173/355/84 1157/360/84 -f 1157/360/84 1170/359/84 1130/361/84 -f 1172/365/85 1171/362/85 1175/364/85 -f 1178/367/85 1171/362/85 1176/366/85 -f 1171/362/86 1170/359/86 1177/363/86 -f 1174/356/86 1170/359/86 1178/367/86 -f 1175/364/85 1177/363/85 1181/369/85 -f 1184/371/85 1178/367/85 1182/370/85 -f 1177/363/86 1173/355/86 1183/368/86 -f 1180/357/86 1174/356/86 1184/371/86 -f 1113/378/216 1181/372/216 1115/374/216 -f 1118/648/217 1182/375/217 1116/377/217 -f 1111/348/89 1175/364/89 1113/378/89 -f 1182/375/89 1176/366/89 1114/376/89 -f 1110/345/89 1172/365/89 1111/348/89 -f 1176/366/89 1172/365/89 1112/347/89 -f 1185/385/10 873/379/10 1187/381/10 -f 1186/386/11 1188/382/11 874/384/11 -f 876/295/10 1185/385/10 878/299/10 -f 877/298/11 879/300/11 1186/386/11 -f 1191/393/10 865/387/10 1193/389/10 -f 1192/394/11 1194/390/11 866/392/11 -f 882/37/10 1191/393/10 884/29/10 -f 883/39/11 885/31/11 1192/394/11 -f 862/404/10 857/395/10 1196/397/10 -f 1199/402/11 858/398/11 1197/400/11 -f 887/33/10 1196/397/10 889/401/10 -f 888/26/11 890/35/11 1197/400/11 -f 1200/406/10 891/403/10 1196/397/10 -f 1201/407/11 1197/400/11 892/405/11 -f 893/24/10 1200/406/10 887/33/10 -f 894/27/11 888/26/11 1201/407/11 -f 1193/389/10 860/388/10 1200/406/10 -f 1194/390/11 1201/407/11 861/391/11 -f 884/29/10 1193/389/10 893/24/10 -f 885/31/11 894/27/11 1194/390/11 -f 1185/385/10 876/295/10 1202/409/10 -f 1186/386/11 1203/410/11 877/298/11 -f 873/379/10 1185/385/10 898/411/10 -f 874/384/11 899/412/11 1186/386/11 -f 1202/409/10 895/408/10 1204/413/10 -f 1203/410/11 1205/414/11 896/293/11 -f 898/411/10 1202/409/10 900/415/10 -f 899/412/11 901/416/11 1203/410/11 -f 951/420/90 859/52/90 1206/418/90 -f 1195/417/90 859/52/90 1207/419/90 -f 965/68/90 1206/418/90 886/69/90 -f 886/69/90 1195/417/90 966/70/90 -f 996/108/91 951/420/91 1208/421/91 -f 1207/419/92 952/54/92 1209/422/92 -f 1208/421/91 1206/418/91 1010/156/91 -f 966/70/92 1207/419/92 1011/157/92 -f 857/102/90 996/423/90 1198/425/90 -f 1209/428/90 997/107/90 1199/426/90 -f 1198/425/90 1208/424/90 889/14/90 -f 1011/160/90 1209/428/90 890/16/90 -f 1189/503/10 867/429/10 1210/431/10 -f 1190/436/11 1211/432/11 868/434/11 -f 1189/503/10 1210/431/10 880/198/10 -f 1056/200/11 1211/432/11 881/201/11 -f 903/291/218 1159/290/218 1204/413/218 -f 1213/439/219 1160/313/219 1205/414/219 -f 1204/413/220 1212/437/220 900/415/220 -f 1163/649/221 1213/439/221 901/416/221 -f 1214/442/97 1161/273/97 1215/440/97 -f 1214/442/97 1216/441/97 1161/273/97 -f 1214/442/98 1215/440/98 1158/327/98 -f 1132/326/98 1216/441/98 1158/327/98 -f 1217/650/97 1123/270/97 1212/443/97 -f 1218/446/97 1213/444/97 1124/271/97 -f 1217/650/98 1212/443/98 1121/445/98 -f 1122/643/98 1160/308/98 1218/446/98 -f 1215/440/97 1133/266/97 1217/447/97 -f 1216/441/97 1218/448/97 1134/267/97 -f 1215/440/98 1217/447/98 1131/322/98 -f 1122/333/98 1218/448/98 1132/326/98 -f 1119/353/222 1221/450/222 1179/354/222 -f 1184/371/223 1222/451/223 1180/357/223 -f 1221/450/224 1117/452/224 1183/368/224 -f 1222/451/225 1184/371/225 1118/453/225 -f 1155/306/226 1143/305/226 1219/455/226 -f 1156/309/226 1220/456/226 1144/458/226 -f 1149/301/85 1151/459/85 1145/454/85 -f 1220/456/227 1152/303/227 1146/457/227 -f 921/611/106 923/285/106 1228/461/106 -f 1231/460/106 924/288/106 1229/462/106 -f 1228/461/107 1230/460/107 919/190/107 -f 926/194/107 1231/460/107 920/195/107 -f 880/198/108 947/197/108 1226/464/108 -f 1233/466/108 948/205/108 1227/465/108 -f 1226/464/109 1232/463/109 878/299/109 -f 950/279/109 1233/466/109 879/300/109 -f 947/197/10 925/203/10 1232/463/10 -f 1231/470/11 926/468/11 1233/466/11 -f 1232/463/10 1230/467/10 949/276/10 -f 924/278/11 1231/470/11 950/279/11 -f 869/475/110 959/471/110 1223/473/110 -f 1235/476/110 960/474/110 1223/473/110 -f 870/57/111 1223/473/111 961/129/111 -f 962/59/111 1235/476/111 870/57/111 -f 1004/212/112 867/211/112 1236/478/112 -f 1225/482/112 868/479/112 1237/480/112 -f 1236/478/111 1224/477/111 1006/124/111 -f 872/126/111 1225/482/111 1007/127/111 -f 959/471/228 1004/483/228 1234/472/228 -f 1237/487/112 1005/485/112 1235/476/112 -f 1234/472/111 1236/484/111 961/129/111 -f 1007/131/111 1237/487/111 962/59/111 -f 1238/569/10 1240/488/10 1020/489/10 -f 1039/264/11 1241/490/11 1021/492/11 -f 1240/488/10 1036/222/10 1242/493/10 -f 1241/490/11 1243/494/11 1037/223/11 -f 1240/488/10 1242/493/10 1038/261/10 -f 1097/260/11 1243/494/11 1039/264/11 -f 1242/493/114 1098/237/114 1245/495/114 -f 1243/494/115 1246/496/115 1099/238/115 -f 1096/257/114 1242/493/114 1088/245/114 -f 1097/260/115 1089/250/115 1243/494/115 -f 1090/255/116 1088/245/116 1247/497/116 -f 1246/496/116 1089/250/116 1248/498/116 -f 1247/497/116 1245/495/116 1094/241/116 -f 1087/242/116 1246/496/116 1095/243/116 -f 1092/256/116 1090/255/116 1244/499/116 -f 1248/498/116 1091/253/116 1244/499/116 -f 1187/381/10 871/380/10 1249/501/10 -f 1225/504/11 872/383/11 1250/502/11 -f 1249/501/10 1224/500/10 1189/503/10 -f 868/434/11 1225/504/11 1190/436/11 -f 878/299/10 1187/381/10 1226/464/10 -f 1250/502/11 1188/382/11 1227/465/11 -f 1226/464/10 1249/501/10 880/198/10 -f 1190/436/11 1250/502/11 881/201/11 -f 1255/651/117 1057/505/117 1257/506/117 -f 1258/510/117 1060/193/117 1256/508/117 -f 1255/651/117 1257/506/117 917/509/117 -f 928/5/117 1258/510/117 918/6/117 -f 882/37/118 945/36/118 1253/512/118 -f 1260/515/118 946/513/118 1254/514/118 -f 1253/512/118 1259/511/118 1055/435/118 -f 1062/199/118 1260/515/118 1056/200/118 -f 945/36/10 927/48/10 1259/511/10 -f 1258/517/11 928/49/11 1260/515/11 -f 1259/511/10 1257/516/10 1061/196/10 -f 1060/204/11 1258/517/11 1062/199/11 -f 1261/521/229 1063/518/229 1263/519/229 -f 1262/522/230 1264/520/230 1064/219/230 -f 957/119/231 1261/521/231 987/88/231 -f 958/91/232 988/90/232 1262/522/232 -f 995/101/123 987/88/123 1265/523/123 -f 1264/520/123 988/90/123 1265/523/123 -f 1265/523/124 1263/519/124 1067/209/124 -f 1066/207/124 1264/520/124 1067/209/124 -f 1002/113/125 865/112/125 1266/525/125 -f 1252/529/125 866/115/125 1267/527/125 -f 1266/525/126 1251/524/126 1068/528/126 -f 1054/213/126 1252/529/126 1069/214/126 -f 957/119/125 1002/118/125 1261/521/125 -f 1267/531/125 1003/120/125 1262/522/125 -f 1261/521/126 1266/530/126 1063/518/126 -f 1069/218/126 1267/531/126 1064/219/126 -f 1032/170/127 1051/184/127 1270/533/127 -f 1274/535/128 1052/185/128 1271/534/128 -f 1270/533/127 1273/532/127 1072/221/127 -f 1076/234/128 1274/535/128 1073/224/128 -f 1077/228/117 1075/232/117 1275/536/117 -f 1274/535/117 1076/234/117 1276/537/117 -f 1275/536/117 1273/532/117 1043/187/117 -f 1052/185/117 1274/535/117 1044/188/117 -f 1074/230/117 1077/228/117 1272/538/117 -f 1276/537/117 1078/233/117 1272/538/117 -f 1272/538/117 1275/536/117 1045/189/117 -f 1044/188/117 1276/537/117 1045/189/117 -f 1210/431/10 1053/430/10 1277/540/10 -f 1252/542/11 1054/433/11 1278/541/11 -f 1277/540/10 1251/539/10 1191/393/10 -f 866/392/11 1252/542/11 1192/394/11 -f 1253/512/10 1055/435/10 1277/540/10 -f 1254/514/11 1278/541/11 1056/200/11 -f 1253/512/10 1277/540/10 882/37/10 -f 1192/394/11 1278/541/11 883/39/11 -f 1270/533/129 1268/543/129 1279/545/129 -f 1271/534/130 1280/546/130 1269/548/130 -f 1270/533/131 1279/545/131 1032/170/131 -f 1284/553/132 1280/546/132 1033/171/132 -f 1024/639/133 1285/550/133 1268/543/133 -f 1282/547/134 1286/551/134 1269/548/134 -f 1024/639/135 1032/170/135 1285/550/135 -f 1025/552/136 1286/551/136 1033/171/136 -f 1285/550/10 1283/549/10 1281/544/10 -f 1280/546/11 1284/553/11 1282/547/11 -f 1268/543/137 1270/533/137 1289/555/137 -f 1269/548/138 1290/556/138 1271/534/138 -f 1072/221/139 1291/558/139 1270/533/139 -f 1288/557/140 1292/559/140 1271/534/140 -f 1268/543/141 1289/555/141 1070/220/141 -f 1294/561/142 1290/556/142 1071/225/142 -f 1072/221/143 1070/220/143 1291/558/143 -f 1073/224/144 1292/559/144 1071/225/144 -f 1289/555/10 1287/554/10 1293/560/10 -f 1292/559/11 1288/557/11 1294/561/11 -f 1238/569/233 1297/562/233 1240/488/233 -f 1296/567/234 1298/564/234 1241/490/234 -f 1036/222/147 1240/488/147 1299/565/147 -f 1037/223/148 1300/566/148 1241/490/148 -f 1022/572/149 1301/568/149 1238/569/149 -f 1298/564/150 1302/570/150 1239/491/150 -f 1036/222/235 1299/565/235 1022/572/235 -f 1302/570/236 1300/566/236 1023/571/236 -f 1297/562/10 1301/568/10 1295/563/10 -f 1298/564/11 1296/567/11 1302/570/11 -f 1244/499/153 1247/497/153 1305/574/153 -f 1244/499/153 1305/575/153 1248/498/153 -f 1247/497/154 1094/241/154 1303/573/154 -f 1248/498/155 1304/576/155 1095/243/155 -f 1244/652/11 1305/579/11 1093/581/11 -f 1093/244/156 1308/582/156 1094/241/156 -f 1307/578/156 1308/583/156 1095/243/156 -f 1308/582/116 1305/574/116 1306/577/116 -f 1308/583/116 1307/578/116 1305/575/116 -f 1268/653/161 1070/584/161 1311/586/161 -f 1269/592/160 1312/587/160 1071/589/160 -f 1268/653/161 1311/586/161 1024/591/161 -f 1314/625/162 1312/587/162 1025/593/162 -f 1255/651/160 1317/594/160 1057/505/160 -f 1316/617/157 1318/596/157 1058/507/157 -f 1255/651/160 917/509/160 1317/594/160 -f 1256/508/161 1318/596/161 918/6/161 -f 1022/615/168 1238/599/168 1321/601/168 -f 1023/616/237 1322/602/237 1239/604/237 -f 1238/599/167 1020/605/167 1323/600/167 -f 1239/604/238 1324/603/238 1021/608/238 -f 1228/461/238 1329/609/238 921/611/238 -f 1328/628/165 1330/612/165 922/287/165 -f 919/190/237 1331/613/237 1228/461/237 -f 1330/612/163 1332/614/163 1229/462/163 -f 1070/584/172 1022/615/172 1309/585/172 -f 1071/589/239 1310/588/239 1023/616/239 -f 1057/505/239 1315/595/239 919/190/239 -f 1332/614/240 1316/617/240 920/195/240 -f 1026/624/241 1333/618/241 1030/620/241 -f 1336/627/180 1334/621/180 1031/623/180 -f 1024/591/242 1313/590/242 1026/624/242 -f 1334/621/179 1314/625/179 1027/622/179 -f 905/631/177 1030/620/177 1337/626/177 -f 1338/632/177 1336/627/177 906/19/177 -f 921/611/178 1327/610/178 1020/605/178 -f 1326/607/178 1328/628/178 1021/608/178 -f 917/509/176 915/3/176 1319/597/176 -f 918/6/242 1320/598/242 916/18/242 -f 915/3/174 905/631/174 1339/629/174 -f 916/18/241 1340/630/241 906/19/241 -f 1311/586/181 1317/594/181 1313/590/181 -f 1320/598/181 1318/596/181 1314/625/181 -f 1309/585/181 1315/595/181 1311/586/181 -f 1318/596/181 1316/617/181 1312/587/181 -f 1321/601/117 1323/600/117 1331/613/117 -f 1322/602/117 1332/614/117 1324/603/117 -f 1325/606/182 1327/610/182 1323/600/182 -f 1330/612/182 1328/628/182 1324/603/182 -f 1309/585/183 1321/601/183 1315/595/183 -f 1310/588/183 1316/617/183 1322/602/183 -f 1337/626/184 1335/619/184 1339/629/184 -f 1338/632/184 1340/630/184 1336/627/184 -f 1313/590/185 1319/597/185 1333/618/185 -f 1314/625/185 1334/621/185 1320/598/185 -s 1 -f 1028/654/243 910/20/243 908/9/2 -f 1029/655/243 1019/159/2 909/12/2 -f 1028/654/243 1030/620/5 905/631/5 -f 906/19/5 1031/623/5 1029/655/243 -f 1115/656/244 1153/283/245 921/611/67 -f 1116/657/244 1021/608/67 922/287/67 -f 1153/283/245 1115/656/244 1117/658/246 -f 1154/286/245 1152/303/246 1118/659/246 -f 1219/455/226 1221/660/226 1119/329/226 -f 1220/456/226 1156/309/226 1120/330/226 -f 1151/459/246 1117/658/246 1221/660/226 -f 1222/661/226 1118/659/246 1152/303/246 -f 1018/158/2 1028/654/243 908/9/2 -f 911/11/243 1029/655/243 909/12/2 -f 910/20/243 1028/654/243 905/631/5 -f 911/11/243 906/19/5 1029/655/243 -f 1020/605/67 1115/656/244 921/611/67 -f 1154/286/245 1116/657/244 922/287/67 -f 1151/459/246 1153/283/245 1117/658/246 -f 1116/657/244 1154/286/245 1118/659/246 -f 1155/306/226 1219/455/226 1119/329/226 -f 1222/661/226 1220/456/226 1120/330/226 -f 1219/455/226 1151/459/246 1221/660/226 -f 1220/456/226 1222/661/226 1152/303/246 -usemtl Tank_TTread.jpg -s off -f 217/662/10 169/663/10 171/664/10 -f 219/665/11 195/666/11 193/667/11 -f 217/662/10 171/664/10 173/668/10 -f 219/665/11 197/669/11 195/666/11 -f 217/662/10 173/668/10 175/670/10 -f 219/665/11 199/671/11 197/669/11 -f 217/662/10 175/670/10 177/672/10 -f 219/665/11 201/673/11 199/671/11 -f 217/662/10 177/672/10 179/674/10 -f 219/665/11 203/675/11 201/673/11 -f 217/662/10 179/674/10 181/676/10 -f 219/665/11 205/677/11 203/675/11 -f 217/662/10 181/676/10 183/678/10 -f 219/665/11 207/679/11 205/677/11 -f 217/662/10 183/678/10 185/680/10 -f 219/665/11 209/681/11 207/679/11 -f 217/662/10 185/680/10 187/682/10 -f 219/665/11 211/683/11 209/681/11 -f 217/662/10 187/682/10 189/684/10 -f 219/665/11 213/685/11 211/683/11 -f 217/662/10 189/684/10 191/686/10 -f 219/665/11 215/687/11 213/685/11 -f 217/662/10 191/686/10 169/663/10 -f 219/665/11 193/667/11 215/687/11 -f 193/688/247 195/689/247 171/690/247 -f 195/689/248 197/691/248 173/692/248 -f 197/691/249 199/693/249 175/694/249 -f 199/695/250 201/696/250 177/697/250 -f 201/696/26 203/698/26 179/699/26 -f 203/698/251 205/700/251 181/701/251 -f 205/702/252 207/703/252 183/704/252 -f 207/703/3 209/705/3 185/706/3 -f 209/705/253 211/707/253 187/708/253 -f 211/709/254 213/710/254 189/711/254 -f 213/710/255 215/712/255 191/713/255 -f 215/712/256 193/714/256 169/715/256 -f 330/716/256 354/717/256 376/718/256 -f 332/719/255 356/720/255 354/717/255 -f 334/721/254 358/722/254 356/720/254 -f 336/723/253 360/724/253 358/725/253 -f 338/726/3 362/727/3 360/724/3 -f 340/728/252 364/729/252 362/727/252 -f 342/730/251 366/731/251 364/732/251 -f 344/733/26 368/734/26 366/731/26 -f 346/735/250 370/736/250 368/734/250 -f 348/737/249 372/738/249 370/739/249 -f 350/740/248 374/741/248 372/738/248 -f 352/742/247 376/743/247 374/741/247 -f 330/744/10 352/745/10 326/746/10 -f 376/747/11 354/748/11 328/749/11 -f 332/750/10 330/744/10 326/746/10 -f 354/748/11 356/751/11 328/749/11 -f 334/752/10 332/750/10 326/746/10 -f 356/751/11 358/753/11 328/749/11 -f 336/754/10 334/752/10 326/746/10 -f 358/753/11 360/755/11 328/749/11 -f 338/756/10 336/754/10 326/746/10 -f 360/755/11 362/757/11 328/749/11 -f 340/758/10 338/756/10 326/746/10 -f 362/757/11 364/759/11 328/749/11 -f 342/760/10 340/758/10 326/746/10 -f 364/759/11 366/761/11 328/749/11 -f 344/762/10 342/760/10 326/746/10 -f 366/761/11 368/763/11 328/749/11 -f 346/764/10 344/762/10 326/746/10 -f 368/763/11 370/765/11 328/749/11 -f 348/766/10 346/764/10 326/746/10 -f 370/765/11 372/767/11 328/749/11 -f 350/768/10 348/766/10 326/746/10 -f 372/767/11 374/769/11 328/749/11 -f 352/745/10 350/768/10 326/746/10 -f 374/769/11 376/747/11 328/749/11 -f 485/770/256 507/771/256 531/772/256 -f 487/773/255 485/770/255 509/774/255 -f 489/775/254 487/773/254 511/776/254 -f 491/777/257 489/778/257 513/779/257 -f 493/780/258 491/777/258 515/781/258 -f 495/782/252 493/780/252 517/783/252 -f 497/784/251 495/785/251 519/786/251 -f 499/787/26 497/784/26 521/788/26 -f 501/789/250 499/787/250 523/790/250 -f 503/791/249 501/792/249 525/793/249 -f 505/794/248 503/791/248 527/795/248 -f 507/796/247 505/794/247 529/797/247 -f 481/798/11 507/799/11 485/800/11 -f 483/801/10 509/802/10 531/799/10 -f 481/798/11 485/800/11 487/803/11 -f 483/801/10 511/804/10 509/802/10 -f 481/798/11 487/803/11 489/805/11 -f 483/801/10 513/806/10 511/804/10 -f 481/798/11 489/805/11 491/807/11 -f 483/801/10 515/808/10 513/806/10 -f 481/798/11 491/807/11 493/809/11 -f 483/801/10 517/810/10 515/808/10 -f 481/798/11 493/809/11 495/811/11 -f 483/801/10 519/812/10 517/810/10 -f 481/798/11 495/811/11 497/813/11 -f 483/801/10 521/814/10 519/812/10 -f 481/798/11 497/813/11 499/815/11 -f 483/801/10 523/816/10 521/814/10 -f 481/798/11 499/815/11 501/817/11 -f 483/801/10 525/818/10 523/816/10 -f 481/798/11 501/817/11 503/819/11 -f 483/801/10 527/820/10 525/818/10 -f 481/798/11 503/819/11 505/821/11 -f 483/801/10 529/822/10 527/820/10 -f 481/798/11 505/821/11 507/799/11 -f 483/801/10 531/799/10 529/822/10 -f 561/823/256 573/824/256 584/825/256 -f 562/826/255 574/827/255 573/824/255 -f 563/828/254 575/829/254 574/827/254 -f 564/830/253 576/831/253 575/832/253 -f 565/833/3 577/834/3 576/831/3 -f 566/835/252 578/836/252 577/834/252 -f 567/837/251 579/838/251 578/839/251 -f 568/840/26 580/841/26 579/838/26 -f 569/842/250 581/843/250 580/841/250 -f 570/844/249 582/845/249 581/846/249 -f 571/847/248 583/848/248 582/845/248 -f 572/849/247 584/850/247 583/848/247 -f 561/851/10 572/852/10 559/853/10 -f 584/854/11 573/855/11 560/856/11 -f 562/857/10 561/851/10 559/853/10 -f 573/855/11 574/858/11 560/856/11 -f 563/859/10 562/857/10 559/853/10 -f 574/858/11 575/860/11 560/856/11 -f 564/861/10 563/859/10 559/853/10 -f 575/860/11 576/862/11 560/856/11 -f 565/863/10 564/861/10 559/853/10 -f 576/862/11 577/864/11 560/856/11 -f 566/865/10 565/863/10 559/853/10 -f 577/864/11 578/866/11 560/856/11 -f 567/867/10 566/865/10 559/853/10 -f 578/866/11 579/868/11 560/856/11 -f 568/869/10 567/867/10 559/853/10 -f 579/868/11 580/870/11 560/856/11 -f 569/871/10 568/869/10 559/853/10 -f 580/870/11 581/872/11 560/856/11 -f 570/873/10 569/871/10 559/853/10 -f 581/872/11 582/874/11 560/856/11 -f 571/875/10 570/873/10 559/853/10 -f 582/874/11 583/876/11 560/856/11 -f 572/852/10 571/875/10 559/853/10 -f 583/876/11 584/854/11 560/856/11 -f 586/877/11 585/878/11 609/879/11 -f 597/880/10 598/881/10 610/882/10 -f 587/883/11 586/877/11 609/879/11 -f 598/881/10 599/884/10 610/882/10 -f 588/885/11 587/883/11 609/879/11 -f 599/884/10 600/886/10 610/882/10 -f 589/887/11 588/885/11 609/879/11 -f 600/886/10 601/888/10 610/882/10 -f 590/889/11 589/887/11 609/879/11 -f 601/888/10 602/890/10 610/882/10 -f 591/891/11 590/889/11 609/879/11 -f 602/890/10 603/892/10 610/882/10 -f 592/893/11 591/891/11 609/879/11 -f 603/892/10 604/894/10 610/882/10 -f 593/895/11 592/893/11 609/879/11 -f 604/894/10 605/896/10 610/882/10 -f 594/871/11 593/895/11 609/879/11 -f 605/896/10 606/897/10 610/882/10 -f 595/869/11 594/871/11 609/879/11 -f 606/897/10 607/898/10 610/882/10 -f 596/899/11 595/869/11 609/879/11 -f 607/898/10 608/900/10 610/882/10 -f 585/878/11 596/899/11 609/879/11 -f 608/900/10 597/880/10 610/882/10 -f 597/901/247 585/902/247 586/903/247 -f 598/904/248 586/903/248 587/905/248 -f 599/906/249 587/905/249 588/907/249 -f 600/908/250 588/909/250 589/910/250 -f 601/911/26 589/910/26 590/912/26 -f 602/913/251 590/912/251 591/914/251 -f 603/915/252 591/916/252 592/917/252 -f 604/918/3 592/917/3 593/919/3 -f 606/920/253 605/921/253 593/919/253 -f 606/922/254 594/923/254 595/924/254 -f 607/925/255 595/924/255 596/926/255 -f 597/927/256 608/928/256 596/926/256 -f 613/929/256 625/930/256 636/931/256 -f 614/932/255 626/933/255 625/930/255 -f 615/934/254 627/935/254 626/933/254 -f 616/936/253 628/937/253 627/938/253 -f 617/939/3 629/940/3 628/937/3 -f 618/941/252 630/922/252 629/940/252 -f 619/942/251 631/943/251 630/944/251 -f 620/945/26 632/946/26 631/943/26 -f 621/947/250 633/948/250 632/946/250 -f 622/949/249 634/950/249 633/951/249 -f 623/952/248 635/953/248 634/950/248 -f 624/954/247 636/955/247 635/953/247 -f 613/956/10 624/957/10 611/958/10 -f 636/959/11 625/960/11 612/961/11 -f 614/962/10 613/956/10 611/958/10 -f 625/960/11 626/963/11 612/961/11 -f 615/964/10 614/962/10 611/958/10 -f 626/963/11 627/887/11 612/961/11 -f 616/965/10 615/964/10 611/958/10 -f 627/887/11 628/966/11 612/961/11 -f 617/967/10 616/965/10 611/958/10 -f 628/966/11 629/968/11 612/961/11 -f 618/969/10 617/967/10 611/958/10 -f 629/968/11 630/970/11 612/961/11 -f 619/971/10 618/969/10 611/958/10 -f 630/970/11 631/972/11 612/961/11 -f 620/973/10 619/971/10 611/958/10 -f 631/972/11 632/974/11 612/961/11 -f 621/857/10 620/973/10 611/958/10 -f 632/974/11 633/975/11 612/961/11 -f 622/976/10 621/857/10 611/958/10 -f 633/975/11 634/977/11 612/961/11 -f 623/978/10 622/976/10 611/958/10 -f 634/977/11 635/979/11 612/961/11 -f 624/957/10 623/978/10 611/958/10 -f 635/979/11 636/959/11 612/961/11 -f 638/980/11 637/981/11 661/982/11 -f 649/983/10 650/984/10 662/985/10 -f 639/986/11 638/980/11 661/982/11 -f 650/984/10 651/987/10 662/985/10 -f 640/858/11 639/986/11 661/982/11 -f 651/987/10 652/898/10 662/985/10 -f 641/860/11 640/858/11 661/982/11 -f 652/898/10 653/897/10 662/985/10 -f 642/988/11 641/860/11 661/982/11 -f 653/897/10 654/989/10 662/985/10 -f 643/990/11 642/988/11 661/982/11 -f 654/989/10 655/991/10 662/985/10 -f 644/992/11 643/990/11 661/982/11 -f 655/991/10 656/993/10 662/985/10 -f 645/994/11 644/992/11 661/982/11 -f 656/993/10 657/995/10 662/985/10 -f 646/886/11 645/994/11 661/982/11 -f 657/995/10 658/996/10 662/985/10 -f 647/888/11 646/886/11 661/982/11 -f 658/996/10 659/997/10 662/985/10 -f 648/998/11 647/888/11 661/982/11 -f 659/997/10 660/999/10 662/985/10 -f 637/981/11 648/998/11 661/982/11 -f 660/999/10 649/983/10 662/985/10 -f 649/1000/247 637/1001/247 638/1002/247 -f 650/1003/248 638/1002/248 639/1004/248 -f 651/1005/249 639/1004/249 640/1006/249 -f 652/955/250 640/1007/250 641/1008/250 -f 653/953/26 641/1008/26 642/1009/26 -f 654/950/251 642/1009/251 643/1010/251 -f 655/1011/252 643/934/252 644/1012/252 -f 656/1013/3 644/1012/3 645/1014/3 -f 657/1015/253 645/1014/253 646/1016/253 -f 658/916/254 646/1017/254 647/1018/254 -f 659/1019/255 647/1018/255 648/1020/255 -f 660/1021/256 648/1020/256 637/828/256 -f 664/1022/11 663/1023/11 687/1024/11 -f 675/1025/10 676/1026/10 688/1027/10 -f 665/1028/11 664/1022/11 687/1024/11 -f 676/1026/10 677/1029/10 688/1027/10 -f 666/1030/11 665/1028/11 687/1024/11 -f 677/1029/10 678/997/10 688/1027/10 -f 667/1031/11 666/1030/11 687/1024/11 -f 678/997/10 679/996/10 688/1027/10 -f 668/1032/11 667/1031/11 687/1024/11 -f 679/996/10 680/1033/10 688/1027/10 -f 669/1034/11 668/1032/11 687/1024/11 -f 680/1033/10 681/1035/10 688/1027/10 -f 670/1036/11 669/1034/11 687/1024/11 -f 681/1035/10 682/1037/10 688/1027/10 -f 671/1038/11 670/1036/11 687/1024/11 -f 682/1037/10 683/1039/10 688/1027/10 -f 672/1040/11 671/1038/11 687/1024/11 -f 683/1039/10 684/1041/10 688/1027/10 -f 673/1042/11 672/1040/11 687/1024/11 -f 684/1041/10 685/1043/10 688/1027/10 -f 674/1044/11 673/1042/11 687/1024/11 -f 685/1043/10 686/1045/10 688/1027/10 -f 663/1023/11 674/1044/11 687/1024/11 -f 686/1045/10 675/1025/10 688/1027/10 -f 675/1046/247 663/1047/247 664/1048/247 -f 676/1049/248 664/1048/248 665/1050/248 -f 677/1051/249 665/1050/249 666/1052/249 -f 678/1053/250 666/1054/250 667/1055/250 -f 679/1056/26 667/1055/26 668/1057/26 -f 680/1058/251 668/1057/251 669/920/251 -f 681/1059/252 669/1060/252 670/1061/252 -f 682/1062/3 670/1061/3 671/1063/3 -f 683/1064/253 671/1063/253 672/1065/253 -f 684/1066/254 672/1067/254 673/1068/254 -f 685/1069/255 673/1068/255 674/1070/255 -f 686/1071/256 674/1070/256 663/1072/256 -f 169/1073/247 193/688/247 171/690/247 -f 171/690/248 195/689/248 173/692/248 -f 173/692/249 197/691/249 175/694/249 -f 175/1074/250 199/695/250 177/697/250 -f 177/697/26 201/696/26 179/699/26 -f 179/699/251 203/698/251 181/701/251 -f 181/1075/252 205/702/252 183/704/252 -f 183/704/3 207/703/3 185/706/3 -f 185/706/253 209/705/253 187/708/253 -f 187/1076/254 211/709/254 189/711/254 -f 189/711/255 213/710/255 191/713/255 -f 191/713/256 215/712/256 169/715/256 -f 352/1077/256 330/716/256 376/718/256 -f 330/716/255 332/719/255 354/717/255 -f 332/719/254 334/721/254 356/720/254 -f 334/1078/253 336/723/253 358/725/253 -f 336/723/3 338/726/3 360/724/3 -f 338/726/252 340/728/252 362/727/252 -f 340/1079/251 342/730/251 364/732/251 -f 342/730/26 344/733/26 366/731/26 -f 344/733/250 346/735/250 368/734/250 -f 346/1080/249 348/737/249 370/739/249 -f 348/737/248 350/740/248 372/738/248 -f 350/740/247 352/742/247 374/741/247 -f 509/774/256 485/770/256 531/772/256 -f 511/776/255 487/773/255 509/774/255 -f 513/1081/254 489/775/254 511/776/254 -f 515/781/257 491/777/257 513/779/257 -f 517/783/258 493/780/258 515/781/258 -f 519/1082/252 495/782/252 517/783/252 -f 521/788/251 497/784/251 519/786/251 -f 523/790/26 499/787/26 521/788/26 -f 525/1083/250 501/789/250 523/790/250 -f 527/795/249 503/791/249 525/793/249 -f 529/797/248 505/794/248 527/795/248 -f 531/1084/247 507/796/247 529/797/247 -f 572/1085/256 561/823/256 584/825/256 -f 561/823/255 562/826/255 573/824/255 -f 562/826/254 563/828/254 574/827/254 -f 563/944/253 564/830/253 575/832/253 -f 564/830/3 565/833/3 576/831/3 -f 565/833/252 566/835/252 577/834/252 -f 566/1086/251 567/837/251 578/839/251 -f 567/837/26 568/840/26 579/838/26 -f 568/840/250 569/842/250 580/841/250 -f 569/1087/249 570/844/249 581/846/249 -f 570/844/248 571/847/248 582/845/248 -f 571/847/247 572/849/247 583/848/247 -f 598/904/247 597/901/247 586/903/247 -f 599/906/248 598/904/248 587/905/248 -f 600/1088/249 599/906/249 588/907/249 -f 601/911/250 600/908/250 589/910/250 -f 602/913/26 601/911/26 590/912/26 -f 603/1089/251 602/913/251 591/914/251 -f 604/918/252 603/915/252 592/917/252 -f 605/921/3 604/918/3 593/919/3 -f 594/1090/253 606/920/253 593/919/253 -f 607/925/254 606/922/254 595/924/254 -f 608/928/255 607/925/255 596/926/255 -f 585/1091/256 597/927/256 596/926/256 -f 624/1092/256 613/929/256 636/931/256 -f 613/929/255 614/932/255 625/930/255 -f 614/932/254 615/934/254 626/933/254 -f 615/914/253 616/936/253 627/938/253 -f 616/936/3 617/939/3 628/937/3 -f 617/939/252 618/941/252 629/940/252 -f 618/1093/251 619/942/251 630/944/251 -f 619/942/26 620/945/26 631/943/26 -f 620/945/250 621/947/250 632/946/250 -f 621/1094/249 622/949/249 633/951/249 -f 622/949/248 623/952/248 634/950/248 -f 623/952/247 624/954/247 635/953/247 -f 650/1003/247 649/1000/247 638/1002/247 -f 651/1005/248 650/1003/248 639/1004/248 -f 652/1095/249 651/1005/249 640/1006/249 -f 653/953/250 652/955/250 641/1008/250 -f 654/950/26 653/953/26 642/1009/26 -f 655/951/251 654/950/251 643/1010/251 -f 656/1013/252 655/1011/252 644/1012/252 -f 657/1015/3 656/1013/3 645/1014/3 -f 658/1096/253 657/1015/253 646/1016/253 -f 659/1019/254 658/916/254 647/1018/254 -f 660/1021/255 659/1019/255 648/1020/255 -f 649/1011/256 660/1021/256 637/828/256 -f 676/1049/247 675/1046/247 664/1048/247 -f 677/1051/248 676/1049/248 665/1050/248 -f 678/1097/249 677/1051/249 666/1052/249 -f 679/1056/250 678/1053/250 667/1055/250 -f 680/1058/26 679/1056/26 668/1057/26 -f 681/1098/251 680/1058/251 669/920/251 -f 682/1062/252 681/1059/252 670/1061/252 -f 683/1064/3 682/1062/3 671/1063/3 -f 684/1099/253 683/1064/253 672/1065/253 -f 685/1069/254 684/1066/254 673/1068/254 -f 686/1071/255 685/1069/255 674/1070/255 -f 675/1100/256 686/1071/256 663/1072/256 -usemtl Treads -f 55/1101/11 41/1102/11 57/1103/11 -f 58/1104/10 42/1105/10 56/1106/10 -f 55/1101/11 59/1107/11 61/1108/11 -f 56/1106/10 54/1109/10 62/1110/10 -f 53/1111/11 61/1108/11 63/1112/11 -f 54/1109/10 44/1113/10 64/1114/10 -f 51/1115/10 45/1116/10 65/1117/10 -f 66/1118/11 46/1119/11 52/1120/11 -f 49/1121/10 51/1115/10 67/1122/10 -f 68/1123/11 52/1120/11 50/1124/11 -f 49/1121/10 69/1125/10 71/1126/10 -f 50/1124/11 48/1127/11 72/1128/11 -f 45/1116/10 35/1129/10 73/1130/10 -f 74/1131/11 36/1132/11 46/1119/11 -f 43/1133/11 63/1112/11 75/1134/11 -f 44/1113/10 38/1135/10 76/1136/10 -f 47/1137/10 71/1126/10 77/1138/10 -f 48/1127/11 34/1139/11 78/1140/11 -f 41/1102/11 39/1141/11 79/1142/11 -f 80/1143/10 40/1144/10 42/1105/10 -f 39/1141/11 25/1145/11 81/1146/11 -f 82/1147/10 26/1148/10 40/1144/10 -f 37/1149/11 75/1134/11 83/1150/11 -f 38/1135/10 28/1151/10 84/1152/10 -f 35/1129/10 29/1153/10 85/1154/10 -f 86/1155/11 30/1156/11 36/1132/11 -f 33/1157/10 77/1138/10 87/1158/10 -f 34/1139/11 32/1159/11 88/1160/11 -f 11/1161/10 89/1162/10 85/1154/10 -f 12/1163/11 30/1156/11 86/1155/11 -f 13/1164/11 27/1165/11 83/1150/11 -f 84/1152/10 28/1151/10 14/1166/10 -f 9/1167/10 31/1168/10 87/1158/10 -f 88/1160/11 32/1159/11 10/1169/11 -f 15/1170/11 95/1171/11 81/1146/11 -f 16/1172/10 26/1148/10 82/1147/10 -f 23/1173/11 97/1174/11 95/1171/11 -f 24/1175/10 16/1172/10 96/1176/10 -f 7/1177/11 99/1178/11 97/1174/11 -f 8/1179/10 24/1175/10 98/1180/10 -f 21/1181/11 13/1164/11 91/1182/11 -f 92/1183/10 14/1166/10 22/1184/10 -f 5/1185/11 21/1181/11 101/1186/11 -f 102/1187/10 22/1184/10 6/1188/10 -f 19/1189/10 9/1167/10 93/1190/10 -f 94/1191/11 10/1169/11 20/1192/11 -f 1/1193/10 19/1189/10 105/1194/10 -f 106/1195/11 20/1192/11 2/1196/11 -f 17/1197/10 109/1198/10 89/1162/10 -f 18/1199/11 12/1163/11 90/1200/11 -f 3/1201/10 111/1202/10 109/1198/10 -f 4/1203/11 18/1199/11 110/1204/11 -f 7/1177/11 5/1185/11 103/1205/11 -f 104/1206/10 6/1188/10 8/1179/10 -f 1/1193/10 107/1207/10 111/1202/10 -f 2/1196/11 4/1203/11 112/1208/11 -f 107/1209/259 113/1210/259 115/1211/259 -f 108/1212/259 112/1213/259 116/1214/259 -f 103/1215/259 119/1216/259 117/1217/259 -f 104/1218/259 100/1219/259 118/1220/259 -f 111/1221/260 115/1222/260 121/1223/260 -f 112/1224/260 110/1225/260 122/1226/260 -f 89/1227/261 109/1228/261 121/1223/261 -f 110/1225/261 90/1229/261 124/1230/261 -f 105/1231/262 125/1232/262 113/1233/262 -f 106/1234/262 108/1235/262 114/1236/262 -f 93/1237/263 127/1238/263 125/1232/263 -f 94/1239/263 106/1234/263 126/1240/263 -f 101/1241/260 129/1242/260 119/1243/260 -f 102/1244/260 104/1245/260 120/1246/260 -f 91/1247/261 131/1248/261 129/1242/261 -f 92/1249/261 102/1244/261 130/1250/261 -f 99/1251/262 117/1252/262 133/1253/262 -f 100/1254/262 98/1255/262 134/1256/262 -f 97/1257/263 133/1253/263 135/1258/263 -f 98/1255/263 96/1259/263 136/1260/263 -f 95/1261/264 135/1258/264 137/1262/264 -f 96/1259/264 82/1263/264 138/1264/264 -f 87/1265/264 139/1266/264 127/1238/264 -f 140/1267/264 88/1268/264 94/1239/264 -f 91/1247/265 83/1269/265 141/1270/265 -f 142/1271/265 84/1272/265 92/1249/265 -f 89/1227/265 123/1273/265 143/1274/265 -f 90/1229/265 86/1275/265 144/1276/265 -f 87/1265/266 77/1277/266 145/1278/266 -f 146/1279/266 78/1280/266 88/1268/266 -f 85/1281/267 143/1274/267 147/1282/267 -f 86/1275/267 74/1283/267 148/1284/267 -f 75/1285/267 149/1286/267 141/1270/267 -f 76/1287/267 84/1272/267 142/1271/267 -f 79/1288/266 81/1289/266 137/1262/266 -f 82/1263/266 80/1290/266 152/1291/266 -f 79/1288/268 151/1292/268 153/1293/268 -f 80/1290/268 58/1294/268 154/1295/268 -f 77/1277/268 71/1296/268 155/1297/268 -f 72/1298/268 78/1280/268 146/1279/268 -f 63/1299/269 157/1300/269 149/1286/269 -f 64/1301/269 76/1287/269 150/1302/269 -f 73/1303/269 147/1282/269 159/1304/269 -f 74/1283/269 66/1305/269 160/1306/269 -f 69/1307/270 161/1308/270 155/1297/270 -f 70/1309/270 72/1298/270 156/1310/270 -f 69/1311/271 67/1312/271 163/1313/271 -f 164/1314/271 68/1315/271 70/1316/271 -f 65/1317/272 159/1318/272 163/1313/272 -f 66/1319/272 68/1315/272 164/1314/272 -f 61/1320/272 165/1321/272 157/1322/272 -f 62/1323/272 64/1324/272 158/1325/272 -f 61/1320/271 59/1326/271 167/1327/271 -f 168/1328/271 60/1329/271 62/1323/271 -f 57/1330/270 153/1293/270 167/1331/270 -f 58/1294/270 60/1332/270 168/1333/270 -f 172/1334/11 170/1335/11 218/1336/11 -f 194/1337/10 196/1338/10 220/1339/10 -f 174/1340/11 172/1334/11 218/1336/11 -f 196/1338/10 198/1341/10 220/1339/10 -f 176/1342/11 174/1340/11 218/1336/11 -f 198/1341/10 200/1343/10 220/1339/10 -f 178/1344/11 176/1342/11 218/1336/11 -f 200/1343/10 202/1345/10 220/1339/10 -f 180/1346/11 178/1344/11 218/1336/11 -f 202/1345/10 204/1347/10 220/1339/10 -f 182/1348/11 180/1346/11 218/1336/11 -f 204/1347/10 206/1349/10 220/1339/10 -f 184/1350/11 182/1348/11 218/1336/11 -f 206/1349/10 208/1351/10 220/1339/10 -f 186/1352/11 184/1350/11 218/1336/11 -f 208/1351/10 210/1353/10 220/1339/10 -f 188/1354/11 186/1352/11 218/1336/11 -f 210/1353/10 212/1355/10 220/1339/10 -f 190/1356/11 188/1354/11 218/1336/11 -f 212/1355/10 214/1357/10 220/1339/10 -f 192/1358/11 190/1356/11 218/1336/11 -f 214/1357/10 216/1359/10 220/1339/10 -f 170/1335/11 192/1358/11 218/1336/11 -f 216/1359/10 194/1337/10 220/1339/10 -f 194/1360/247 170/1361/247 172/1362/247 -f 196/1363/248 172/1362/248 174/1364/248 -f 198/1365/249 174/1364/249 176/1366/249 -f 200/1367/250 176/1368/250 178/1369/250 -f 202/1370/26 178/1369/26 180/1371/26 -f 204/1372/251 180/1371/251 182/1373/251 -f 206/1374/252 182/1375/252 184/1376/252 -f 208/1377/3 184/1376/3 186/1378/3 -f 210/1379/253 186/1378/253 188/1380/253 -f 212/1381/254 188/1382/254 190/1383/254 -f 214/1384/255 190/1383/255 192/1385/255 -f 216/1386/256 192/1385/256 170/1387/256 -f 225/1388/256 247/1389/256 271/1390/256 -f 226/1391/256 250/1392/256 272/1393/256 -f 227/1394/255 225/1388/255 249/1395/255 -f 228/1396/255 252/1397/255 250/1392/255 -f 229/1398/254 227/1394/254 251/1399/254 -f 230/1400/254 254/1401/254 252/1397/254 -f 231/1402/253 229/1403/253 253/1404/253 -f 232/1405/253 256/1406/253 254/1407/253 -f 233/1408/3 231/1402/3 255/1409/3 -f 234/1410/3 258/1411/3 256/1406/3 -f 235/1412/252 233/1408/252 257/1413/252 -f 236/1414/252 260/1415/252 258/1411/252 -f 237/1416/251 235/1417/251 259/1418/251 -f 238/1419/251 262/1420/251 260/1421/251 -f 239/1422/26 237/1416/26 261/1423/26 -f 240/1424/26 264/1425/26 262/1420/26 -f 241/1426/250 239/1422/250 263/1427/250 -f 242/1428/250 266/1429/250 264/1425/250 -f 243/1430/249 241/1431/249 265/1432/249 -f 244/1433/249 268/1434/249 266/1435/249 -f 245/1436/248 243/1430/248 267/1437/248 -f 246/1438/248 270/1439/248 268/1434/248 -f 247/1440/247 245/1436/247 269/1441/247 -f 248/1442/247 272/1443/247 270/1439/247 -f 221/1444/11 247/1445/11 225/1446/11 -f 226/1447/10 248/1448/10 222/1449/10 -f 223/1450/10 249/1451/10 271/1452/10 -f 272/1453/11 250/1454/11 224/1455/11 -f 221/1444/11 225/1446/11 227/1456/11 -f 228/1457/10 226/1447/10 222/1449/10 -f 223/1450/10 251/1458/10 249/1451/10 -f 250/1454/11 252/1459/11 224/1455/11 -f 221/1444/11 227/1456/11 229/1460/11 -f 230/1461/10 228/1457/10 222/1449/10 -f 223/1450/10 253/1462/10 251/1458/10 -f 252/1459/11 254/1463/11 224/1455/11 -f 221/1444/11 229/1460/11 231/1464/11 -f 232/1465/10 230/1461/10 222/1449/10 -f 223/1450/10 255/1466/10 253/1462/10 -f 254/1463/11 256/1467/11 224/1455/11 -f 221/1444/11 231/1464/11 233/1468/11 -f 234/1469/10 232/1465/10 222/1449/10 -f 223/1450/10 257/1470/10 255/1466/10 -f 256/1467/11 258/1471/11 224/1455/11 -f 221/1444/11 233/1468/11 235/1472/11 -f 236/1473/10 234/1469/10 222/1449/10 -f 223/1450/10 259/1474/10 257/1470/10 -f 258/1471/11 260/1475/11 224/1455/11 -f 221/1444/11 235/1472/11 237/1476/11 -f 238/1477/10 236/1473/10 222/1449/10 -f 223/1450/10 261/1478/10 259/1474/10 -f 260/1475/11 262/1479/11 224/1455/11 -f 221/1444/11 237/1476/11 239/1480/11 -f 240/1481/10 238/1477/10 222/1449/10 -f 223/1450/10 263/1482/10 261/1478/10 -f 262/1479/11 264/1483/11 224/1455/11 -f 221/1444/11 239/1480/11 241/1484/11 -f 242/1485/10 240/1481/10 222/1449/10 -f 223/1450/10 265/1486/10 263/1482/10 -f 264/1483/11 266/1487/11 224/1455/11 -f 221/1444/11 241/1484/11 243/1488/11 -f 244/1489/10 242/1485/10 222/1449/10 -f 223/1450/10 267/1490/10 265/1486/10 -f 266/1487/11 268/1491/11 224/1455/11 -f 221/1444/11 243/1488/11 245/1492/11 -f 246/1493/10 244/1489/10 222/1449/10 -f 223/1450/10 269/1494/10 267/1490/10 -f 268/1491/11 270/1495/11 224/1455/11 -f 221/1444/11 245/1492/11 247/1445/11 -f 248/1448/10 246/1493/10 222/1449/10 -f 223/1450/10 271/1452/10 269/1494/10 -f 270/1495/11 272/1453/11 224/1455/11 -f 321/1496/10 273/1445/10 275/1492/10 -f 276/1497/11 274/1498/11 322/1499/11 -f 323/1500/11 299/1501/11 297/1502/11 -f 298/1503/10 300/1504/10 324/1505/10 -f 321/1496/10 275/1492/10 277/1506/10 -f 278/1507/11 276/1497/11 322/1499/11 -f 323/1500/11 301/1508/11 299/1501/11 -f 300/1504/10 302/1509/10 324/1505/10 -f 321/1496/10 277/1506/10 279/1510/10 -f 280/1511/11 278/1507/11 322/1499/11 -f 323/1500/11 303/1512/11 301/1508/11 -f 302/1509/10 304/1513/10 324/1505/10 -f 321/1496/10 279/1510/10 281/1514/10 -f 282/1515/11 280/1511/11 322/1499/11 -f 323/1500/11 305/1516/11 303/1512/11 -f 304/1513/10 306/1517/10 324/1505/10 -f 321/1496/10 281/1514/10 283/1518/10 -f 284/1519/11 282/1515/11 322/1499/11 -f 323/1500/11 307/1520/11 305/1516/11 -f 306/1517/10 308/1521/10 324/1505/10 -f 321/1496/10 283/1518/10 285/1522/10 -f 286/1523/11 284/1519/11 322/1499/11 -f 323/1500/11 309/1524/11 307/1520/11 -f 308/1521/10 310/1525/10 324/1505/10 -f 321/1496/10 285/1522/10 287/1526/10 -f 288/1527/11 286/1523/11 322/1499/11 -f 323/1500/11 311/1528/11 309/1524/11 -f 310/1525/10 312/1529/10 324/1505/10 -f 321/1496/10 287/1526/10 289/1530/10 -f 290/1531/11 288/1527/11 322/1499/11 -f 323/1500/11 313/1532/11 311/1528/11 -f 312/1529/10 314/1533/10 324/1505/10 -f 321/1496/10 289/1530/10 291/1342/10 -f 292/1534/11 290/1531/11 322/1499/11 -f 323/1500/11 315/1535/11 313/1532/11 -f 314/1533/10 316/1484/10 324/1505/10 -f 321/1496/10 291/1342/10 293/1536/10 -f 294/1537/11 292/1534/11 322/1499/11 -f 323/1500/11 317/1538/11 315/1535/11 -f 316/1484/10 318/1480/10 324/1505/10 -f 321/1496/10 293/1536/10 295/1539/10 -f 296/1540/11 294/1537/11 322/1499/11 -f 323/1500/11 319/1541/11 317/1538/11 -f 318/1480/10 320/1542/10 324/1505/10 -f 321/1496/10 295/1539/10 273/1445/10 -f 274/1498/11 296/1540/11 322/1499/11 -f 323/1500/11 297/1502/11 319/1541/11 -f 320/1542/10 298/1503/10 324/1505/10 -f 297/1543/247 299/1544/247 275/1545/247 -f 298/1546/247 274/1547/247 276/1548/247 -f 299/1544/248 301/1549/248 277/1550/248 -f 300/1551/248 276/1548/248 278/1552/248 -f 301/1549/249 303/1553/249 279/1554/249 -f 302/1555/249 278/1552/249 280/1556/249 -f 303/1557/250 305/1558/250 281/1559/250 -f 304/1560/250 280/1561/250 282/1562/250 -f 305/1558/26 307/1563/26 283/1564/26 -f 306/1565/26 282/1562/26 284/1566/26 -f 307/1563/251 309/1567/251 285/1568/251 -f 308/1569/251 284/1566/251 286/1570/251 -f 309/1571/252 311/1572/252 287/1573/252 -f 310/1574/252 286/1575/252 288/1576/252 -f 311/1572/3 313/1577/3 289/1578/3 -f 312/1579/3 288/1576/3 290/1580/3 -f 313/1577/253 315/1581/253 291/1582/253 -f 314/1583/253 290/1580/253 292/1584/253 -f 315/1585/254 317/1586/254 293/1587/254 -f 316/1588/254 292/1589/254 294/1590/254 -f 317/1586/255 319/1591/255 295/1592/255 -f 318/1593/255 294/1590/255 296/1594/255 -f 319/1591/256 297/1595/256 273/1596/256 -f 320/1597/256 296/1594/256 274/1598/256 -f 329/1599/256 351/1600/256 375/1601/256 -f 331/1602/255 329/1599/255 353/1603/255 -f 333/1604/254 331/1602/254 355/1605/254 -f 335/1606/253 333/1607/253 357/1608/253 -f 337/1609/3 335/1606/3 359/1610/3 -f 339/1611/252 337/1609/252 361/1612/252 -f 341/1613/251 339/1614/251 363/1615/251 -f 343/1616/26 341/1613/26 365/1617/26 -f 345/1618/250 343/1616/250 367/1619/250 -f 347/1620/249 345/1621/249 369/1622/249 -f 349/1623/248 347/1620/248 371/1624/248 -f 351/1625/247 349/1623/247 373/1626/247 -f 325/1627/11 351/1628/11 329/1629/11 -f 327/1630/10 353/1631/10 375/1632/10 -f 325/1627/11 329/1629/11 331/1633/11 -f 327/1630/10 355/1634/10 353/1631/10 -f 325/1627/11 331/1633/11 333/1635/11 -f 327/1630/10 357/1636/10 355/1634/10 -f 325/1627/11 333/1635/11 335/1637/11 -f 327/1630/10 359/1638/10 357/1636/10 -f 325/1627/11 335/1637/11 337/1639/11 -f 327/1630/10 361/1640/10 359/1638/10 -f 325/1627/11 337/1639/11 339/1641/11 -f 327/1630/10 363/1642/10 361/1640/10 -f 325/1627/11 339/1641/11 341/1643/11 -f 327/1630/10 365/1644/10 363/1642/10 -f 325/1627/11 341/1643/11 343/1645/11 -f 327/1630/10 367/1646/10 365/1644/10 -f 325/1627/11 343/1645/11 345/1647/11 -f 327/1630/10 369/1648/10 367/1646/10 -f 325/1627/11 345/1647/11 347/1649/11 -f 327/1630/10 371/1650/10 369/1648/10 -f 325/1627/11 347/1649/11 349/1651/11 -f 327/1630/10 373/1652/10 371/1650/10 -f 325/1627/11 349/1651/11 351/1628/11 -f 327/1630/10 375/1632/10 373/1652/10 -f 425/1653/10 377/1654/10 379/1655/10 -f 380/1656/11 378/1657/11 426/1658/11 -f 427/1659/11 403/1660/11 401/1661/11 -f 402/1662/10 404/1663/10 428/1664/10 -f 425/1653/10 379/1655/10 381/1665/10 -f 382/1666/11 380/1656/11 426/1658/11 -f 427/1659/11 405/1667/11 403/1660/11 -f 404/1663/10 406/1668/10 428/1664/10 -f 425/1653/10 381/1665/10 383/1669/10 -f 384/1670/11 382/1666/11 426/1658/11 -f 427/1659/11 407/1671/11 405/1667/11 -f 406/1668/10 408/1672/10 428/1664/10 -f 425/1653/10 383/1669/10 385/1673/10 -f 386/1674/11 384/1670/11 426/1658/11 -f 427/1659/11 409/1675/11 407/1671/11 -f 408/1672/10 410/1676/10 428/1664/10 -f 425/1653/10 385/1673/10 387/1677/10 -f 388/1678/11 386/1674/11 426/1658/11 -f 427/1659/11 411/1679/11 409/1675/11 -f 410/1676/10 412/1680/10 428/1664/10 -f 425/1653/10 387/1677/10 389/1681/10 -f 390/1682/11 388/1678/11 426/1658/11 -f 427/1659/11 413/1683/11 411/1679/11 -f 412/1680/10 414/1684/10 428/1664/10 -f 425/1653/10 389/1681/10 391/1685/10 -f 392/1686/11 390/1682/11 426/1658/11 -f 427/1659/11 415/1687/11 413/1683/11 -f 414/1684/10 416/1688/10 428/1664/10 -f 425/1653/10 391/1685/10 393/1689/10 -f 394/1690/11 392/1686/11 426/1658/11 -f 427/1659/11 417/1691/11 415/1687/11 -f 416/1688/10 418/1692/10 428/1664/10 -f 425/1653/10 393/1689/10 395/1693/10 -f 396/1694/11 394/1690/11 426/1658/11 -f 427/1659/11 419/1695/11 417/1691/11 -f 418/1692/10 420/1696/10 428/1664/10 -f 425/1653/10 395/1693/10 397/1697/10 -f 398/1698/11 396/1694/11 426/1658/11 -f 427/1659/11 421/1699/11 419/1695/11 -f 420/1696/10 422/1700/10 428/1664/10 -f 425/1653/10 397/1697/10 399/1701/10 -f 400/1702/11 398/1698/11 426/1658/11 -f 427/1659/11 423/1703/11 421/1699/11 -f 422/1700/10 424/1704/10 428/1664/10 -f 425/1653/10 399/1701/10 377/1654/10 -f 378/1657/11 400/1702/11 426/1658/11 -f 427/1659/11 401/1661/11 423/1703/11 -f 424/1704/10 402/1662/10 428/1664/10 -f 401/1705/247 403/1706/247 379/1707/247 -f 402/1708/247 378/1709/247 380/1710/247 -f 403/1706/248 405/1711/248 381/1712/248 -f 404/1713/248 380/1710/248 382/1714/248 -f 405/1711/249 407/1715/249 383/1716/249 -f 406/1717/249 382/1714/249 384/1718/249 -f 407/1719/250 409/1720/250 385/1721/250 -f 408/1722/250 384/1723/250 386/1724/250 -f 409/1720/26 411/1725/26 387/1726/26 -f 410/1727/26 386/1724/26 388/1728/26 -f 411/1725/251 413/1729/251 389/1730/251 -f 412/1731/251 388/1728/251 390/736/251 -f 413/1732/252 415/1733/252 391/1734/252 -f 414/1735/252 390/1736/252 392/1737/252 -f 415/1733/3 417/1738/3 393/1739/3 -f 416/1740/3 392/1737/3 394/1741/3 -f 417/1738/253 419/1742/253 395/1743/253 -f 418/1744/253 394/1741/253 396/1745/253 -f 419/1746/254 421/1747/254 397/1748/254 -f 420/1749/254 396/1750/254 398/1751/254 -f 421/1747/255 423/1752/255 399/1753/255 -f 422/1754/255 398/1751/255 400/1755/255 -f 423/1752/256 401/1756/256 377/1757/256 -f 424/1758/256 400/1755/256 378/1415/256 -f 477/1759/10 429/1335/10 431/1334/10 -f 432/1760/11 430/1761/11 478/1762/11 -f 479/1763/11 455/1764/11 453/1765/11 -f 454/1502/10 456/1766/10 480/1767/10 -f 477/1759/10 431/1334/10 433/1768/10 -f 434/1769/11 432/1760/11 478/1762/11 -f 479/1763/11 457/1770/11 455/1764/11 -f 456/1766/10 458/1771/10 480/1767/10 -f 477/1759/10 433/1768/10 435/1772/10 -f 436/1773/11 434/1769/11 478/1762/11 -f 479/1763/11 459/1774/11 457/1770/11 -f 458/1771/10 460/1775/10 480/1767/10 -f 477/1759/10 435/1772/10 437/1776/10 -f 438/1777/11 436/1773/11 478/1762/11 -f 479/1763/11 461/1778/11 459/1774/11 -f 460/1775/10 462/1779/10 480/1767/10 -f 477/1759/10 437/1776/10 439/1780/10 -f 440/1781/11 438/1777/11 478/1762/11 -f 479/1763/11 463/1782/11 461/1778/11 -f 462/1779/10 464/1783/10 480/1767/10 -f 477/1759/10 439/1780/10 441/1784/10 -f 442/1785/11 440/1781/11 478/1762/11 -f 479/1763/11 465/1349/11 463/1782/11 -f 464/1783/10 466/1475/10 480/1767/10 -f 477/1759/10 441/1784/10 443/1786/10 -f 444/1787/11 442/1785/11 478/1762/11 -f 479/1763/11 467/1351/11 465/1349/11 -f 466/1475/10 468/1471/10 480/1767/10 -f 477/1759/10 443/1786/10 445/1788/10 -f 446/1789/11 444/1787/11 478/1762/11 -f 479/1763/11 469/1790/11 467/1351/11 -f 468/1471/10 470/1791/10 480/1767/10 -f 477/1759/10 445/1788/10 447/1792/10 -f 448/1793/11 446/1789/11 478/1762/11 -f 479/1763/11 471/1794/11 469/1790/11 -f 470/1791/10 472/1795/10 480/1767/10 -f 477/1759/10 447/1792/10 449/1796/10 -f 450/1797/11 448/1793/11 478/1762/11 -f 479/1763/11 473/1798/11 471/1794/11 -f 472/1795/10 474/1343/10 480/1767/10 -f 477/1759/10 449/1796/10 451/1799/10 -f 452/1800/11 450/1797/11 478/1762/11 -f 479/1763/11 475/1801/11 473/1798/11 -f 474/1343/10 476/1802/10 480/1767/10 -f 477/1759/10 451/1799/10 429/1335/10 -f 430/1761/11 452/1800/11 478/1762/11 -f 479/1763/11 453/1765/11 475/1801/11 -f 476/1802/10 454/1502/10 480/1767/10 -f 453/1803/247 455/1804/247 431/1805/247 -f 454/1806/247 430/1807/247 432/1808/247 -f 455/1804/248 457/1809/248 433/1810/248 -f 456/1811/248 432/1808/248 434/1812/248 -f 457/1809/249 459/1813/249 435/1814/249 -f 458/1815/249 434/1812/249 436/1816/249 -f 459/1817/250 461/1818/250 437/1819/250 -f 460/1820/250 436/1821/250 438/1822/250 -f 461/1818/26 463/1823/26 439/1824/26 -f 462/1825/26 438/1822/26 440/1826/26 -f 463/1823/251 465/1821/251 441/1827/251 -f 464/1828/251 440/1826/251 442/1829/251 -f 465/1830/252 467/1831/252 443/1832/252 -f 466/1833/252 442/1834/252 444/1835/252 -f 467/1831/3 469/1836/3 445/1837/3 -f 468/1838/3 444/1835/3 446/1839/3 -f 469/1836/253 471/1840/253 447/1841/253 -f 470/1842/253 446/1839/253 448/1843/253 -f 471/1844/254 473/1845/254 449/1846/254 -f 472/1847/254 448/1435/254 450/1848/254 -f 473/1845/255 475/1849/255 451/1850/255 -f 474/1851/255 450/1848/255 452/1852/255 -f 475/1849/256 453/1853/256 429/1854/256 -f 476/1855/256 452/1852/256 430/1856/256 -f 486/1857/256 510/1858/256 532/1859/256 -f 488/1860/255 512/1861/255 510/1858/255 -f 490/1862/254 514/1863/254 512/1861/254 -f 492/1864/257 516/1865/257 514/1866/257 -f 494/1867/258 518/1868/258 516/1865/258 -f 496/1869/252 520/1870/252 518/1868/252 -f 498/1871/251 522/1872/251 520/1618/251 -f 500/1873/26 524/1874/26 522/1872/26 -f 502/1875/250 526/1876/250 524/1874/250 -f 504/1877/249 528/1878/249 526/1879/249 -f 506/1880/248 530/1881/248 528/1878/248 -f 508/1882/247 532/1883/247 530/1881/247 -f 486/1884/10 508/1885/10 482/1886/10 -f 532/1887/11 510/1888/11 484/1889/11 -f 488/1890/10 486/1884/10 482/1886/10 -f 510/1888/11 512/1891/11 484/1889/11 -f 490/1892/10 488/1890/10 482/1886/10 -f 512/1891/11 514/1669/11 484/1889/11 -f 492/1893/10 490/1892/10 482/1886/10 -f 514/1669/11 516/1894/11 484/1889/11 -f 494/1895/10 492/1893/10 482/1886/10 -f 516/1894/11 518/1896/11 484/1889/11 -f 496/1897/10 494/1895/10 482/1886/10 -f 518/1896/11 520/1898/11 484/1889/11 -f 498/1899/10 496/1897/10 482/1886/10 -f 520/1898/11 522/1900/11 484/1889/11 -f 500/1901/10 498/1899/10 482/1886/10 -f 522/1900/11 524/1902/11 484/1889/11 -f 502/1903/10 500/1901/10 482/1886/10 -f 524/1902/11 526/1904/11 484/1889/11 -f 504/1905/10 502/1903/10 482/1886/10 -f 526/1904/11 528/1906/11 484/1889/11 -f 506/1907/10 504/1905/10 482/1886/10 -f 528/1906/11 530/1908/11 484/1889/11 -f 508/1885/10 506/1907/10 482/1886/10 -f 530/1908/11 532/1887/11 484/1889/11 -f 535/1909/256 546/1910/256 558/1911/256 -f 536/1912/255 535/1909/255 547/1913/255 -f 537/1914/254 536/1912/254 548/1915/254 -f 538/1916/253 537/1917/253 549/1918/253 -f 539/1919/3 538/1916/3 550/1920/3 -f 540/1921/252 539/1919/252 551/1922/252 -f 541/1923/251 540/1368/251 552/1924/251 -f 542/1925/26 541/1923/26 553/1926/26 -f 543/1927/250 542/1925/250 554/1928/250 -f 544/1929/249 543/1930/249 555/1931/249 -f 545/1932/248 544/1929/248 556/1933/248 -f 546/1934/247 545/1932/247 557/1935/247 -f 533/1936/11 546/1337/11 535/1937/11 -f 534/1938/10 547/1939/10 558/1940/10 -f 533/1936/11 535/1937/11 536/1941/11 -f 534/1938/10 548/1942/10 547/1939/10 -f 533/1936/11 536/1941/11 537/1943/11 -f 534/1938/10 549/1944/10 548/1942/10 -f 533/1936/11 537/1943/11 538/1945/11 -f 534/1938/10 550/1946/10 549/1944/10 -f 533/1936/11 538/1945/11 539/1947/11 -f 534/1938/10 551/1948/10 550/1946/10 -f 533/1936/11 539/1947/11 540/1949/11 -f 534/1938/10 552/1950/10 551/1948/10 -f 533/1936/11 540/1949/11 541/1951/11 -f 534/1938/10 553/1952/10 552/1950/10 -f 533/1936/11 541/1951/11 542/1953/11 -f 534/1938/10 554/1954/10 553/1952/10 -f 533/1936/11 542/1953/11 543/1955/11 -f 534/1938/10 555/1956/10 554/1954/10 -f 533/1936/11 543/1955/11 544/1957/11 -f 534/1938/10 556/1958/10 555/1956/10 -f 533/1936/11 544/1957/11 545/1959/11 -f 534/1938/10 557/1960/10 556/1958/10 -f 533/1936/11 545/1959/11 546/1337/11 -f 534/1938/10 558/1940/10 557/1960/10 -f 167/1961/273 153/1962/273 696/1963/273 -f 165/1964/274 167/1961/274 689/1965/274 -f 165/1964/275 690/1966/275 694/1967/275 -f 163/1968/276 159/1969/276 693/1970/276 -f 163/1968/277 691/1971/277 692/1972/277 -f 161/1973/278 692/1972/278 695/1974/278 -f 159/1969/279 147/1975/279 699/1976/279 -f 157/1977/280 694/1967/280 698/1978/280 -f 155/1979/281 695/1974/281 700/1980/281 -f 153/1962/282 151/1981/282 697/1982/282 -f 151/1981/283 137/1983/283 704/1984/283 -f 149/1985/284 698/1978/284 702/1986/284 -f 147/1975/285 143/1987/285 701/1988/285 -f 145/1989/286 700/1980/286 703/1990/286 -f 123/1991/287 711/1992/287 701/1988/287 -f 131/1993/288 141/1994/288 702/1986/288 -f 127/1995/289 139/1996/289 703/1990/289 -f 135/1997/290 705/1998/290 704/1984/290 -f 133/1999/291 706/2000/291 705/1998/291 -f 117/2001/292 714/2002/292 706/2000/292 -f 129/2003/293 131/1993/293 707/2004/293 -f 119/2005/294 129/2003/294 708/2006/294 -f 125/2007/295 127/1995/295 709/2008/295 -f 113/2009/296 125/2007/296 710/2010/296 -f 121/2011/297 712/2012/297 711/1992/297 -f 115/2013/298 715/2014/298 712/2012/298 -f 117/2001/299 119/2005/299 713/2015/299 -f 113/2009/300 716/2016/300 715/2014/300 -f 744/2017/10 752/2018/10 745/2019/10 -f 743/2020/10 745/2021/10 746/2022/10 -f 746/2023/10 751/2024/10 741/2025/10 -f 740/2026/11 750/2027/11 747/2028/11 -f 747/2029/11 748/2030/11 738/2031/11 -f 748/2032/11 749/2033/11 737/2034/11 -f 736/2035/11 755/2036/11 750/2037/11 -f 751/2038/10 754/2039/10 735/2040/10 -f 749/2041/11 756/2042/11 734/2043/11 -f 733/2044/10 753/2045/10 752/2046/10 -f 732/2047/10 760/2048/10 753/2049/10 -f 754/2050/10 759/2051/10 731/2052/10 -f 730/2053/11 758/2054/11 755/2055/11 -f 756/2056/11 757/2057/11 729/2058/11 -f 767/2059/11 758/2060/11 730/2061/11 -f 731/2062/10 759/2063/10 766/2064/10 -f 729/2065/11 757/2066/11 768/2067/11 -f 765/2068/10 760/2069/10 732/2070/10 -f 761/2071/10 765/2072/10 725/2073/10 -f 769/2074/10 761/2075/10 724/2076/10 -f 727/2077/10 766/2078/10 762/2079/10 -f 722/2080/10 762/2081/10 770/2082/10 -f 726/2083/11 768/2084/11 763/2085/11 -f 720/2086/11 763/2087/11 772/2088/11 -f 764/2089/11 767/2090/11 728/2091/11 -f 771/2092/11 764/2093/11 718/2094/11 -f 721/2095/10 770/2096/10 769/2097/10 -f 772/2098/11 771/2099/11 717/2100/11 -f 719/2101/301 717/2102/301 715/2103/301 -f 721/2104/301 723/2105/301 714/2106/301 -f 717/2107/302 718/2108/302 712/2109/302 -f 718/2108/303 728/2110/303 711/2111/303 -f 720/2112/304 719/2113/304 716/2114/304 -f 726/2115/305 720/2116/305 710/2117/305 -f 722/2118/302 721/2119/302 713/2120/302 -f 727/2121/303 722/2122/303 708/2123/303 -f 723/2124/304 724/2125/304 706/2126/304 -f 724/2125/305 725/2127/305 705/2128/305 -f 725/2127/306 732/2129/306 704/2130/306 -f 729/2131/306 726/2132/306 709/2133/306 -f 731/2134/307 727/2135/307 707/2136/307 -f 728/2110/307 730/2137/307 701/2138/307 -f 734/2139/308 729/2140/308 703/2141/308 -f 730/2137/309 736/2142/309 699/2143/309 -f 735/1374/309 731/2144/309 702/2145/309 -f 732/2129/308 733/2146/308 697/2147/308 -f 733/2146/310 744/2148/310 696/2149/310 -f 737/2150/310 734/2151/310 700/2152/310 -f 741/2153/311 735/2154/311 698/2155/311 -f 736/2142/311 740/2156/311 693/2157/311 -f 738/2158/312 737/2159/312 695/2160/312 -f 691/2161/313 739/2162/313 738/2163/313 -f 740/2164/314 739/2165/314 691/2166/314 -f 742/2167/314 741/2168/314 694/2169/314 -f 689/2170/313 743/2171/313 742/2172/313 -f 744/2148/312 743/2173/312 689/2174/312 -f 168/2175/315 773/2176/315 780/2177/315 -f 166/2178/316 774/2179/316 773/2176/316 -f 166/2178/317 158/2180/317 778/2181/317 -f 164/2182/318 775/2183/318 777/2184/318 -f 164/2182/319 162/2185/319 776/2186/319 -f 162/2185/320 156/2187/320 779/2188/320 -f 160/2189/321 777/2184/321 783/2190/321 -f 158/2180/322 150/2191/322 782/2192/322 -f 156/1310/323 146/1279/323 784/2193/323 -f 154/1295/324 780/2194/324 781/2195/324 -f 152/1291/325 781/2195/325 788/2196/325 -f 150/2191/326 142/2197/326 786/2198/326 -f 148/2199/327 783/2190/327 785/2200/327 -f 146/1279/328 140/1267/328 787/2201/328 -f 124/2202/329 144/2203/329 785/2200/329 -f 132/2204/330 791/2205/330 786/2198/330 -f 128/2206/331 793/2207/331 787/2201/331 -f 136/1260/332 138/1264/332 788/2196/332 -f 134/1256/333 136/1260/333 789/2208/333 -f 118/2209/334 134/2210/334 790/2211/334 -f 130/2212/335 792/2213/335 791/2205/335 -f 120/2214/336 797/2215/336 792/2213/336 -f 126/1240/337 794/2216/337 793/2207/337 -f 114/2217/338 800/2218/338 794/2219/338 -f 122/2220/339 124/2202/339 795/2221/339 -f 116/2222/340 122/2220/340 796/2223/340 -f 118/2209/341 798/2224/341 797/2215/341 -f 114/2217/342 116/2222/342 799/2225/342 -f 829/2226/11 836/2227/11 828/2228/11 -f 830/2229/11 829/2230/11 827/2231/11 -f 830/2232/11 826/2233/11 825/2234/11 -f 831/2235/10 834/2236/10 824/2237/10 -f 831/2238/10 823/2239/10 822/2240/10 -f 832/2241/10 822/2242/10 821/2243/10 -f 834/2244/10 839/2245/10 820/1428/10 -f 835/2246/11 825/2247/11 819/2248/11 -f 833/2249/10 821/2250/10 818/2251/10 -f 836/2252/11 837/2253/11 817/2254/11 -f 837/2255/11 844/702/11 816/2256/11 -f 838/2257/11 819/2258/11 815/2259/11 -f 839/2260/10 842/2261/10 814/2262/10 -f 840/2263/10 818/2264/10 813/2265/10 -f 851/2266/10 812/2267/10 814/2268/10 -f 850/700/11 843/2269/11 815/2270/11 -f 852/2271/10 841/2272/10 813/2273/10 -f 849/2274/11 809/2275/11 816/2276/11 -f 845/2277/11 808/2278/11 809/2279/11 -f 853/2280/11 807/2281/11 808/2050/11 -f 846/2282/11 850/2283/11 811/2284/11 -f 854/2285/11 846/2286/11 806/2287/11 -f 847/2288/10 852/2289/10 810/2290/10 -f 856/2291/10 847/2292/10 804/2293/10 -f 848/2294/10 802/2295/10 812/2296/10 -f 855/2297/10 801/2298/10 802/2299/10 -f 853/2300/11 854/2301/11 805/2302/11 -f 856/2303/10 803/2304/10 801/2305/10 -f 803/2306/343 800/2307/343 799/2308/343 -f 805/2309/343 797/2310/343 798/2311/343 -f 801/2312/344 799/2313/344 796/2314/344 -f 802/2315/345 796/2314/345 795/2316/345 -f 804/2317/346 794/2318/346 800/2319/346 -f 810/2320/347 793/2321/347 794/2322/347 -f 806/2323/344 792/2324/344 797/2325/344 -f 811/2326/345 791/2327/345 792/2328/345 -f 807/2329/346 798/1088/346 790/2330/346 -f 809/2331/347 808/2332/347 790/2330/347 -f 809/2331/348 789/2333/348 788/2334/348 -f 810/2335/348 813/2336/348 787/2337/348 -f 815/2338/349 786/2339/349 791/2340/349 -f 812/2341/349 795/2316/349 785/2342/349 -f 818/2343/308 784/2344/308 787/2345/308 -f 814/2346/350 785/2342/350 783/2347/350 -f 819/2348/350 782/2349/350 786/2350/350 -f 816/2351/308 788/2334/308 781/2352/308 -f 828/2353/351 817/2354/351 781/2352/351 -f 821/2355/351 779/2356/351 784/2357/351 -f 825/2358/352 778/2359/352 782/2360/352 -f 820/2361/352 783/2347/352 777/2362/352 -f 822/2363/353 776/2364/353 779/2167/353 -f 822/2365/354 823/2366/354 775/2367/354 -f 824/2368/355 777/2369/355 775/2370/355 -f 826/2371/355 774/2372/355 778/2373/355 -f 826/2374/354 827/2375/354 773/2376/354 -f 828/2353/353 780/2377/353 773/2378/353 -f 59/1107/11 55/1101/11 57/1103/11 -f 60/2379/10 58/1104/10 56/1106/10 -f 53/1111/11 55/1101/11 61/1108/11 -f 60/2379/10 56/1106/10 62/1110/10 -f 43/1133/11 53/1111/11 63/1112/11 -f 62/1110/10 54/1109/10 64/1114/10 -f 67/1122/10 51/1115/10 65/1117/10 -f 68/1123/11 66/1118/11 52/1120/11 -f 69/1125/10 49/1121/10 67/1122/10 -f 70/2380/11 68/1123/11 50/1124/11 -f 47/1137/10 49/1121/10 71/1126/10 -f 70/2380/11 50/1124/11 72/1128/11 -f 65/1117/10 45/1116/10 73/1130/10 -f 66/1118/11 74/1131/11 46/1119/11 -f 37/1149/11 43/1133/11 75/1134/11 -f 64/1114/10 44/1113/10 76/1136/10 -f 33/1157/10 47/1137/10 77/1138/10 -f 72/1128/11 48/1127/11 78/1140/11 -f 57/1103/11 41/1102/11 79/1142/11 -f 58/1104/10 80/1143/10 42/1105/10 -f 79/1142/11 39/1141/11 81/1146/11 -f 80/1143/10 82/1147/10 40/1144/10 -f 27/1165/11 37/1149/11 83/1150/11 -f 76/1136/10 38/1135/10 84/1152/10 -f 73/1130/10 35/1129/10 85/1154/10 -f 74/1131/11 86/1155/11 36/1132/11 -f 31/1168/10 33/1157/10 87/1158/10 -f 78/1140/11 34/1139/11 88/1160/11 -f 29/1153/10 11/1161/10 85/1154/10 -f 90/1200/11 12/1163/11 86/1155/11 -f 91/1182/11 13/1164/11 83/1150/11 -f 92/1183/10 84/1152/10 14/1166/10 -f 93/1190/10 9/1167/10 87/1158/10 -f 94/1191/11 88/1160/11 10/1169/11 -f 25/1145/11 15/1170/11 81/1146/11 -f 96/1176/10 16/1172/10 82/1147/10 -f 15/1170/11 23/1173/11 95/1171/11 -f 98/1180/10 24/1175/10 96/1176/10 -f 23/1173/11 7/1177/11 97/1174/11 -f 100/2381/10 8/1179/10 98/1180/10 -f 101/1186/11 21/1181/11 91/1182/11 -f 102/1187/10 92/1183/10 22/1184/10 -f 103/1205/11 5/1185/11 101/1186/11 -f 104/1206/10 102/1187/10 6/1188/10 -f 105/1194/10 19/1189/10 93/1190/10 -f 106/1195/11 94/1191/11 20/1192/11 -f 107/1207/10 1/1193/10 105/1194/10 -f 108/2382/11 106/1195/11 2/1196/11 -f 11/1161/10 17/1197/10 89/1162/10 -f 110/1204/11 18/1199/11 90/1200/11 -f 17/1197/10 3/1201/10 109/1198/10 -f 112/1208/11 4/1203/11 110/1204/11 -f 99/1178/11 7/1177/11 103/1205/11 -f 100/2381/10 104/1206/10 8/1179/10 -f 3/1201/10 1/1193/10 111/1202/10 -f 108/2382/11 2/1196/11 112/1208/11 -f 111/2383/259 107/1209/259 115/1211/259 -f 114/2384/259 108/1212/259 116/1214/259 -f 99/2385/259 103/1215/259 117/1217/259 -f 120/2386/259 104/1218/259 118/1220/259 -f 109/1228/260 111/1221/260 121/1223/260 -f 116/2387/260 112/1224/260 122/1226/260 -f 123/1273/261 89/1227/261 121/1223/261 -f 122/1226/261 110/1225/261 124/1230/261 -f 107/2388/262 105/1231/262 113/1233/262 -f 126/1240/262 106/1234/262 114/1236/262 -f 105/1231/263 93/1237/263 125/1232/263 -f 128/2206/263 94/1239/263 126/1240/263 -f 103/2389/260 101/1241/260 119/1243/260 -f 130/1250/260 102/1244/260 120/1246/260 -f 101/1241/261 91/1247/261 129/1242/261 -f 132/2390/261 92/1249/261 130/1250/261 -f 97/1257/262 99/1251/262 133/1253/262 -f 118/2391/262 100/1254/262 134/1256/262 -f 95/1261/263 97/1257/263 135/1258/263 -f 134/1256/263 98/1255/263 136/1260/263 -f 81/1289/264 95/1261/264 137/1262/264 -f 136/1260/264 96/1259/264 138/1264/264 -f 93/1237/264 87/1265/264 127/1238/264 -f 128/2206/264 140/1267/264 94/1239/264 -f 131/1248/265 91/1247/265 141/1270/265 -f 132/2390/265 142/1271/265 92/1249/265 -f 85/1281/265 89/1227/265 143/1274/265 -f 124/1230/265 90/1229/265 144/1276/265 -f 139/1266/266 87/1265/266 145/1278/266 -f 140/1267/266 146/1279/266 88/1268/266 -f 73/1303/267 85/1281/267 147/1282/267 -f 144/1276/267 86/1275/267 148/1284/267 -f 83/1269/267 75/1285/267 141/1270/267 -f 150/1302/267 76/1287/267 142/1271/267 -f 151/1292/266 79/1288/266 137/1262/266 -f 138/1264/266 82/1263/266 152/1291/266 -f 57/1330/268 79/1288/268 153/1293/268 -f 152/1291/268 80/1290/268 154/1295/268 -f 145/1278/268 77/1277/268 155/1297/268 -f 156/1310/268 72/1298/268 146/1279/268 -f 75/1285/269 63/1299/269 149/1286/269 -f 158/2392/269 64/1301/269 150/1302/269 -f 65/2393/269 73/1303/269 159/1304/269 -f 148/1284/269 74/1283/269 160/1306/269 -f 71/1296/270 69/1307/270 155/1297/270 -f 162/2394/270 70/1309/270 156/1310/270 -f 161/1325/271 69/1311/271 163/1313/271 -f 162/2326/271 164/1314/271 70/1316/271 -f 67/1312/272 65/1317/272 163/1313/272 -f 160/2395/272 66/1319/272 164/1314/272 -f 63/2396/272 61/1320/272 157/1322/272 -f 166/2397/272 62/1323/272 158/1325/272 -f 165/1321/271 61/1320/271 167/1327/271 -f 166/2397/271 168/1328/271 62/1323/271 -f 59/2398/270 57/1330/270 167/1331/270 -f 154/1295/270 58/1294/270 168/1333/270 -f 196/1363/247 194/1360/247 172/1362/247 -f 198/1365/248 196/1363/248 174/1364/248 -f 200/2399/249 198/1365/249 176/1366/249 -f 202/1370/250 200/1367/250 178/1369/250 -f 204/1372/26 202/1370/26 180/1371/26 -f 206/2400/251 204/1372/251 182/1373/251 -f 208/1377/252 206/1374/252 184/1376/252 -f 210/1379/3 208/1377/3 186/1378/3 -f 212/2401/253 210/1379/253 188/1380/253 -f 214/1384/254 212/1381/254 190/1383/254 -f 216/1386/255 214/1384/255 192/1385/255 -f 194/2402/256 216/1386/256 170/1387/256 -f 249/1395/256 225/1388/256 271/1390/256 -f 248/2403/256 226/1391/256 272/1393/256 -f 251/1399/255 227/1394/255 249/1395/255 -f 226/1391/255 228/1396/255 250/1392/255 -f 253/2404/254 229/1398/254 251/1399/254 -f 228/1396/254 230/1400/254 252/1397/254 -f 255/1409/253 231/1402/253 253/1404/253 -f 230/2405/253 232/1405/253 254/1407/253 -f 257/1413/3 233/1408/3 255/1409/3 -f 232/1405/3 234/1410/3 256/1406/3 -f 259/2406/252 235/1412/252 257/1413/252 -f 234/1410/252 236/1414/252 258/1411/252 -f 261/1423/251 237/1416/251 259/1418/251 -f 236/2407/251 238/1419/251 260/1421/251 -f 263/1427/26 239/1422/26 261/1423/26 -f 238/1419/26 240/1424/26 262/1420/26 -f 265/2408/250 241/1426/250 263/1427/250 -f 240/1424/250 242/1428/250 264/1425/250 -f 267/1437/249 243/1430/249 265/1432/249 -f 242/2409/249 244/1433/249 266/1435/249 -f 269/1441/248 245/1436/248 267/1437/248 -f 244/1433/248 246/1438/248 268/1434/248 -f 271/2410/247 247/1440/247 269/1441/247 -f 246/1438/247 248/1442/247 270/1439/247 -f 273/2411/247 297/1543/247 275/1545/247 -f 300/1551/247 298/1546/247 276/1548/247 -f 275/1545/248 299/1544/248 277/1550/248 -f 302/1555/248 300/1551/248 278/1552/248 -f 277/1550/249 301/1549/249 279/1554/249 -f 304/2412/249 302/1555/249 280/1556/249 -f 279/2413/250 303/1557/250 281/1559/250 -f 306/1565/250 304/1560/250 282/1562/250 -f 281/1559/26 305/1558/26 283/1564/26 -f 308/1569/26 306/1565/26 284/1566/26 -f 283/1564/251 307/1563/251 285/1568/251 -f 310/2414/251 308/1569/251 286/1570/251 -f 285/2415/252 309/1571/252 287/1573/252 -f 312/1579/252 310/1574/252 288/1576/252 -f 287/1573/3 311/1572/3 289/1578/3 -f 314/1583/3 312/1579/3 290/1580/3 -f 289/1578/253 313/1577/253 291/1582/253 -f 316/2416/253 314/1583/253 292/1584/253 -f 291/2417/254 315/1585/254 293/1587/254 -f 318/1593/254 316/1588/254 294/1590/254 -f 293/1587/255 317/1586/255 295/1592/255 -f 320/1597/255 318/1593/255 296/1594/255 -f 295/1592/256 319/1591/256 273/1596/256 -f 298/2418/256 320/1597/256 274/1598/256 -f 353/1603/256 329/1599/256 375/1601/256 -f 355/1605/255 331/1602/255 353/1603/255 -f 357/2419/254 333/1604/254 355/1605/254 -f 359/1610/253 335/1606/253 357/1608/253 -f 361/1612/3 337/1609/3 359/1610/3 -f 363/2420/252 339/1611/252 361/1612/252 -f 365/1617/251 341/1613/251 363/1615/251 -f 367/1619/26 343/1616/26 365/1617/26 -f 369/2421/250 345/1618/250 367/1619/250 -f 371/1624/249 347/1620/249 369/1622/249 -f 373/1626/248 349/1623/248 371/1624/248 -f 375/2422/247 351/1625/247 373/1626/247 -f 377/2423/247 401/1705/247 379/1707/247 -f 404/1713/247 402/1708/247 380/1710/247 -f 379/1707/248 403/1706/248 381/1712/248 -f 406/1717/248 404/1713/248 382/1714/248 -f 381/1712/249 405/1711/249 383/1716/249 -f 408/2424/249 406/1717/249 384/1718/249 -f 383/2133/250 407/1719/250 385/1721/250 -f 410/1727/250 408/1722/250 386/1724/250 -f 385/1721/26 409/1720/26 387/1726/26 -f 412/1731/26 410/1727/26 388/1728/26 -f 387/1726/251 411/1725/251 389/1730/251 -f 414/2425/251 412/1731/251 390/736/251 -f 389/2426/252 413/1732/252 391/1734/252 -f 416/1740/252 414/1735/252 392/1737/252 -f 391/1734/3 415/1733/3 393/1739/3 -f 418/1744/3 416/1740/3 394/1741/3 -f 393/1739/253 417/1738/253 395/1743/253 -f 420/1607/253 418/1744/253 396/1745/253 -f 395/2427/254 419/1746/254 397/1748/254 -f 422/1754/254 420/1749/254 398/1751/254 -f 397/1748/255 421/1747/255 399/1753/255 -f 424/1758/255 422/1754/255 400/1755/255 -f 399/1753/256 423/1752/256 377/1757/256 -f 402/2428/256 424/1758/256 378/1415/256 -f 429/2429/247 453/1803/247 431/1805/247 -f 456/1811/247 454/1806/247 432/1808/247 -f 431/1805/248 455/1804/248 433/1810/248 -f 458/1815/248 456/1811/248 434/1812/248 -f 433/1810/249 457/1809/249 435/1814/249 -f 460/2430/249 458/1815/249 436/1816/249 -f 435/2431/250 459/1817/250 437/1819/250 -f 462/1825/250 460/1820/250 438/1822/250 -f 437/1819/26 461/1818/26 439/1824/26 -f 464/1828/26 462/1825/26 440/1826/26 -f 439/1824/251 463/1823/251 441/1827/251 -f 466/2432/251 464/1828/251 442/1829/251 -f 441/2433/252 465/1830/252 443/1832/252 -f 468/1838/252 466/1833/252 444/1835/252 -f 443/1832/3 467/1831/3 445/1837/3 -f 470/1842/3 468/1838/3 446/1839/3 -f 445/1837/253 469/1836/253 447/1841/253 -f 472/2434/253 470/1842/253 448/1843/253 -f 447/2435/254 471/1844/254 449/1846/254 -f 474/1851/254 472/1847/254 450/1848/254 -f 449/1846/255 473/1845/255 451/1850/255 -f 476/1855/255 474/1851/255 452/1852/255 -f 451/1850/256 475/1849/256 429/1854/256 -f 454/2436/256 476/1855/256 430/1856/256 -f 508/2437/256 486/1857/256 532/1859/256 -f 486/1857/255 488/1860/255 510/1858/255 -f 488/1860/254 490/1862/254 512/1861/254 -f 490/2438/257 492/1864/257 514/1866/257 -f 492/1864/258 494/1867/258 516/1865/258 -f 494/1867/252 496/1869/252 518/1868/252 -f 496/2439/251 498/1871/251 520/1618/251 -f 498/1871/26 500/1873/26 522/1872/26 -f 500/1873/250 502/1875/250 524/1874/250 -f 502/2440/249 504/1877/249 526/1879/249 -f 504/1877/248 506/1880/248 528/1878/248 -f 506/1880/247 508/1882/247 530/1881/247 -f 547/1913/256 535/1909/256 558/1911/256 -f 548/1915/255 536/1912/255 547/1913/255 -f 549/2441/254 537/1914/254 548/1915/254 -f 550/1920/253 538/1916/253 549/1918/253 -f 551/1922/3 539/1919/3 550/1920/3 -f 552/2442/252 540/1921/252 551/1922/252 -f 553/1926/251 541/1923/251 552/1924/251 -f 554/1928/26 542/1925/26 553/1926/26 -f 555/2443/250 543/1927/250 554/1928/250 -f 556/1933/249 544/1929/249 555/1931/249 -f 557/1935/248 545/1932/248 556/1933/248 -f 558/2444/247 546/1934/247 557/1935/247 -f 689/1965/356 167/1961/356 696/1963/356 -f 690/1966/357 165/1964/357 689/1965/357 -f 157/1977/358 165/1964/358 694/1967/358 -f 691/1971/359 163/1968/359 693/1970/359 -f 161/1973/360 163/1968/360 692/1972/360 -f 155/1979/361 161/1973/361 695/1974/361 -f 693/1970/362 159/1969/362 699/1976/362 -f 149/1985/363 157/1977/363 698/1978/363 -f 145/1989/364 155/1979/364 700/1980/364 -f 696/1963/365 153/1962/365 697/1982/365 -f 697/1982/366 151/1981/366 704/1984/366 -f 141/1994/367 149/1985/367 702/1986/367 -f 699/1976/368 147/1975/368 701/1988/368 -f 139/1996/369 145/1989/369 703/1990/369 -f 143/1987/370 123/1991/370 701/1988/370 -f 707/2004/371 131/1993/371 702/1986/371 -f 709/2008/372 127/1995/372 703/1990/372 -f 137/1983/373 135/1997/373 704/1984/373 -f 135/1997/374 133/1999/374 705/1998/374 -f 133/1999/375 117/2001/375 706/2000/375 -f 708/2006/376 129/2003/376 707/2004/376 -f 713/2015/377 119/2005/377 708/2006/377 -f 710/2010/378 125/2007/378 709/2008/378 -f 716/2016/379 113/2009/379 710/2010/379 -f 123/1991/380 121/2011/380 711/1992/380 -f 121/2011/381 115/2013/381 712/2012/381 -f 714/2002/382 117/2001/382 713/2015/382 -f 115/2013/383 113/2009/383 715/2014/383 -f 743/2445/10 744/2017/10 745/2019/10 -f 742/2446/10 743/2020/10 746/2022/10 -f 742/2447/10 746/2023/10 741/2025/10 -f 739/2448/11 740/2026/11 747/2028/11 -f 739/2449/11 747/2029/11 738/2031/11 -f 738/2450/11 748/2032/11 737/2034/11 -f 740/2451/11 736/2035/11 750/2037/11 -f 741/2452/10 751/2038/10 735/2040/10 -f 737/2453/11 749/2041/11 734/2043/11 -f 744/2454/10 733/2044/10 752/2046/10 -f 733/2455/10 732/2047/10 753/2049/10 -f 735/2456/10 754/2050/10 731/2052/10 -f 736/2457/11 730/2053/11 755/2055/11 -f 734/2458/11 756/2056/11 729/2058/11 -f 728/2459/11 767/2059/11 730/2061/11 -f 727/2460/10 731/2062/10 766/2064/10 -f 726/2461/11 729/2065/11 768/2067/11 -f 725/2462/10 765/2068/10 732/2070/10 -f 724/2463/10 761/2071/10 725/2073/10 -f 723/2464/10 769/2074/10 724/2076/10 -f 722/2465/10 727/2077/10 762/2079/10 -f 721/2466/10 722/2080/10 770/2082/10 -f 720/2467/11 726/2083/11 763/2085/11 -f 719/2468/11 720/2086/11 772/2088/11 -f 718/2469/11 764/2089/11 728/2091/11 -f 717/2470/11 771/2092/11 718/2094/11 -f 723/2471/10 721/2095/10 769/2097/10 -f 719/2472/11 772/2098/11 717/2100/11 -f 716/2473/301 719/2101/301 715/2103/301 -f 713/2474/301 721/2104/301 714/2106/301 -f 715/2475/302 717/2107/302 712/2109/302 -f 712/2109/303 718/2108/303 711/2111/303 -f 710/2476/304 720/2112/304 716/2114/304 -f 709/2477/305 726/2115/305 710/2117/305 -f 708/2478/302 722/2118/302 713/2120/302 -f 707/2479/303 727/2121/303 708/2123/303 -f 714/2480/304 723/2124/304 706/2126/304 -f 706/2126/305 724/2125/305 705/2128/305 -f 705/2128/306 725/2127/306 704/2130/306 -f 703/2481/306 729/2131/306 709/2133/306 -f 702/2482/307 731/2134/307 707/2136/307 -f 711/2111/307 728/2110/307 701/2138/307 -f 700/2483/308 734/2139/308 703/2141/308 -f 701/2138/309 730/2137/309 699/2143/309 -f 698/2484/309 735/1374/309 702/2145/309 -f 704/2130/308 732/2129/308 697/2147/308 -f 697/2147/310 733/2146/310 696/2149/310 -f 695/2160/310 737/2150/310 700/2152/310 -f 694/2485/311 741/2153/311 698/2155/311 -f 699/2143/311 736/2142/311 693/2157/311 -f 692/2486/312 738/2158/312 695/2160/312 -f 692/2487/313 691/2161/313 738/2163/313 -f 693/2488/314 740/2164/314 691/2166/314 -f 690/2489/314 742/2167/314 694/2169/314 -f 690/2490/313 689/2170/313 742/2172/313 -f 696/2149/312 744/2148/312 689/2174/312 -f 154/2491/384 168/2175/384 780/2177/384 -f 168/2175/385 166/2178/385 773/2176/385 -f 774/2179/386 166/2178/386 778/2181/386 -f 160/2189/387 164/2182/387 777/2184/387 -f 775/2183/388 164/2182/388 776/2186/388 -f 776/2186/389 162/2185/389 779/2188/389 -f 148/2199/390 160/2189/390 783/2190/390 -f 778/2181/391 158/2180/391 782/2192/391 -f 779/2492/392 156/1310/392 784/2193/392 -f 152/1291/393 154/1295/393 781/2195/393 -f 138/1264/394 152/1291/394 788/2196/394 -f 782/2192/395 150/2191/395 786/2198/395 -f 144/2203/396 148/2199/396 785/2200/396 -f 784/2193/397 146/1279/397 787/2201/397 -f 795/2221/398 124/2202/398 785/2200/398 -f 142/2197/399 132/2204/399 786/2198/399 -f 140/1267/400 128/2206/400 787/2201/400 -f 789/2208/401 136/1260/401 788/2196/401 -f 790/2493/402 134/1256/402 789/2208/402 -f 798/2224/403 118/2209/403 790/2211/403 -f 132/2204/404 130/2212/404 791/2205/404 -f 130/2212/405 120/2214/405 792/2213/405 -f 128/2206/406 126/1240/406 793/2207/406 -f 126/2494/407 114/2217/407 794/2219/407 -f 796/2223/408 122/2220/408 795/2221/408 -f 799/2225/409 116/2222/409 796/2223/409 -f 120/2214/410 118/2209/410 797/2215/410 -f 800/2218/411 114/2217/411 799/2225/411 -f 827/2495/11 829/2226/11 828/2228/11 -f 826/2496/11 830/2229/11 827/2231/11 -f 835/2497/11 830/2232/11 825/2234/11 -f 823/2498/10 831/2235/10 824/2237/10 -f 832/2024/10 831/2238/10 822/2240/10 -f 833/2499/10 832/2241/10 821/2243/10 -f 824/2500/10 834/2244/10 820/1428/10 -f 838/2501/11 835/2246/11 819/2248/11 -f 840/2502/10 833/2249/10 818/2251/10 -f 828/2503/11 836/2252/11 817/2254/11 -f 817/2504/11 837/2255/11 816/2256/11 -f 843/2505/11 838/2257/11 815/2259/11 -f 820/2506/10 839/2260/10 814/2262/10 -f 841/2507/10 840/2263/10 813/2265/10 -f 842/2508/10 851/2266/10 814/2268/10 -f 811/2509/11 850/700/11 815/2270/11 -f 810/2510/10 852/2271/10 813/2273/10 -f 844/2511/11 849/2274/11 816/2276/11 -f 849/2512/11 845/2277/11 809/2279/11 -f 845/2513/11 853/2280/11 808/2050/11 -f 806/2514/11 846/2282/11 811/2284/11 -f 805/2515/11 854/2285/11 806/2287/11 -f 804/2516/10 847/2288/10 810/2290/10 -f 803/2517/10 856/2291/10 804/2293/10 -f 851/2518/10 848/2294/10 812/2296/10 -f 848/2519/10 855/2297/10 802/2299/10 -f 807/2520/11 853/2300/11 805/2302/11 -f 855/2521/10 856/2303/10 801/2305/10 -f 801/2522/343 803/2306/343 799/2308/343 -f 807/2523/343 805/2309/343 798/2311/343 -f 802/2315/344 801/2312/344 796/2314/344 -f 812/2341/345 802/2315/345 795/2316/345 -f 803/2524/346 804/2317/346 800/2319/346 -f 804/2525/347 810/2320/347 794/2322/347 -f 805/2526/344 806/2323/344 797/2325/344 -f 806/2527/345 811/2326/345 792/2328/345 -f 808/2332/346 807/2329/346 790/2330/346 -f 789/2333/347 809/2331/347 790/2330/347 -f 816/2351/348 809/2331/348 788/2334/348 -f 793/2528/348 810/2335/348 787/2337/348 -f 811/2529/349 815/2338/349 791/2340/349 -f 814/2346/349 812/2341/349 785/2342/349 -f 813/2530/308 818/2343/308 787/2345/308 -f 820/2361/350 814/2346/350 783/2347/350 -f 815/2531/350 819/2348/350 786/2350/350 -f 817/2354/308 816/2351/308 781/2352/308 -f 780/2377/351 828/2353/351 781/2352/351 -f 818/2532/351 821/2355/351 784/2357/351 -f 819/2533/352 825/2358/352 782/2360/352 -f 824/2534/352 820/2361/352 777/2362/352 -f 821/2535/353 822/2363/353 779/2167/353 -f 776/2536/354 822/2365/354 775/2367/354 -f 823/2537/355 824/2368/355 775/2370/355 -f 825/2538/355 826/2371/355 778/2373/355 -f 774/2539/354 826/2374/354 773/2376/354 -f 827/2540/353 828/2353/353 773/2378/353 -s 1 -f 3/778/412 5/796/412 7/2541/413 -f 4/2542/412 2/2543/413 8/2544/413 -f 17/2545/414 21/2546/414 5/2547/412 -f 18/2548/414 4/2549/412 6/2550/412 -f 11/2551/415 13/2552/415 21/2546/414 -f 12/2553/415 18/2548/414 22/2554/414 -f 9/2555/416 19/2556/417 23/2557/417 -f 24/2558/417 20/2559/417 10/2560/416 -f 1/2561/413 7/2562/413 23/2557/417 -f 2/2563/413 20/2559/417 24/2558/417 -f 15/2564/416 25/2565/418 31/2566/418 -f 16/2567/416 10/2560/416 32/2568/418 -f 13/2552/415 11/2551/415 29/2569/419 -f 30/2570/419 12/2553/415 14/2571/415 -f 27/2572/419 29/2569/419 35/2573/420 -f 36/2574/420 30/2570/419 28/2575/419 -f 25/2565/418 39/2576/421 33/2577/421 -f 26/2578/418 32/2568/418 34/2579/421 -f 33/2577/421 39/2576/421 41/2580/422 -f 42/2581/422 40/2582/421 34/2579/421 -f 35/2573/420 45/2583/423 43/2584/423 -f 36/2574/420 38/2585/420 44/2586/423 -f 45/2587/423 51/2588/424 53/2589/424 -f 46/2590/423 44/2591/423 54/2592/424 -f 41/2580/422 55/2593/425 49/2594/425 -f 42/2581/422 48/2595/422 50/2596/425 -f 49/2597/425 55/2598/425 53/2589/424 -f 54/2592/424 56/2599/425 50/2600/425 -f 771/2601/426 772/2602/427 769/2603/427 -f 764/2604/428 771/2605/426 770/2606/426 -f 767/2607/429 764/2608/428 762/2609/428 -f 761/2610/430 763/2611/430 768/2612/431 -f 772/786/427 763/2613/430 761/2614/430 -f 765/2615/431 768/2616/431 757/2617/432 -f 767/2618/429 766/2619/429 759/2620/433 -f 755/2621/434 758/2622/433 759/2623/433 -f 760/2152/432 757/2624/432 756/2625/435 -f 752/2626/436 753/2627/435 756/2628/435 -f 755/2629/434 754/2630/434 751/2631/437 -f 750/2632/437 751/2633/437 746/2634/438 -f 752/2635/436 749/2636/436 748/2637/439 -f 746/2638/438 745/2639/439 748/2640/439 -f 855/2641/440 854/2642/440 853/2643/441 -f 848/2644/442 846/2645/442 854/2646/440 -f 851/2430/443 850/2647/443 846/2648/442 -f 852/2649/444 847/2650/445 845/1083/445 -f 856/2651/441 853/2652/441 845/2653/445 -f 849/2654/444 844/2655/446 841/2656/446 -f 850/2657/443 851/2658/443 842/2659/447 -f 842/2660/447 839/2661/448 838/2662/448 -f 841/2663/446 844/2664/446 837/2665/449 -f 837/2666/449 836/2667/450 833/2668/450 -f 839/2669/448 834/2670/451 835/2671/451 -f 834/2672/451 831/2673/452 830/2674/452 -f 836/2393/450 829/2675/453 832/2676/453 -f 832/2677/453 829/2678/453 830/2679/452 -f 1/2680/413 3/778/412 7/2541/413 -f 6/2681/412 4/2542/412 8/2544/413 -f 3/2682/412 17/2545/414 5/2547/412 -f 22/2554/414 18/2548/414 6/2550/412 -f 17/2545/414 11/2551/415 21/2546/414 -f 14/2571/415 12/2553/415 22/2554/414 -f 15/2564/416 9/2555/416 23/2557/417 -f 16/2567/416 24/2558/417 10/2560/416 -f 19/2556/417 1/2561/413 23/2557/417 -f 8/2683/413 2/2563/413 24/2558/417 -f 9/2555/416 15/2564/416 31/2566/418 -f 26/2578/418 16/2567/416 32/2568/418 -f 27/2572/419 13/2552/415 29/2569/419 -f 28/2575/419 30/2570/419 14/2571/415 -f 37/2684/420 27/2572/419 35/2573/420 -f 38/2585/420 36/2574/420 28/2575/419 -f 31/2566/418 25/2565/418 33/2577/421 -f 40/2582/421 26/2578/418 34/2579/421 -f 47/2685/422 33/2577/421 41/2580/422 -f 48/2595/422 42/2581/422 34/2579/421 -f 37/2684/420 35/2573/420 43/2584/423 -f 46/2686/423 36/2574/420 44/2586/423 -f 43/2687/423 45/2587/423 53/2589/424 -f 52/2688/424 46/2590/423 54/2592/424 -f 47/2685/422 41/2580/422 49/2594/425 -f 56/2689/425 42/2581/422 50/2596/425 -f 51/2588/424 49/2597/425 53/2589/424 -f 52/2688/424 54/2592/424 50/2600/425 -f 770/2690/426 771/2601/426 769/2603/427 -f 762/2691/428 764/2604/428 770/2606/426 -f 766/2692/429 767/2607/429 762/2609/428 -f 765/2693/431 761/2610/430 768/2612/431 -f 769/2694/427 772/786/427 761/2614/430 -f 760/2695/432 765/2615/431 757/2617/432 -f 758/2696/433 767/2618/429 759/2620/433 -f 754/2697/434 755/2621/434 759/2623/433 -f 753/2698/435 760/2152/432 756/2625/435 -f 749/2699/436 752/2626/436 756/2628/435 -f 750/2700/437 755/2629/434 751/2631/437 -f 747/2701/438 750/2632/437 746/2634/438 -f 745/2702/439 752/2635/436 748/2637/439 -f 747/2408/438 746/2638/438 748/2640/439 -f 856/2703/441 855/2641/440 853/2643/441 -f 855/2704/440 848/2644/442 854/2646/440 -f 848/2705/442 851/2430/443 846/2648/442 -f 849/2706/444 852/2649/444 845/1083/445 -f 847/2707/445 856/2651/441 845/2653/445 -f 852/2708/444 849/2654/444 841/2656/446 -f 843/2709/447 850/2657/443 842/2659/447 -f 843/2710/447 842/2660/447 838/2662/448 -f 840/2711/449 841/2663/446 837/2665/449 -f 840/2712/449 837/2666/449 833/2668/450 -f 838/2713/448 839/2669/448 835/2671/451 -f 835/2703/451 834/2672/451 830/2674/452 -f 833/2714/450 836/2393/450 832/2676/453 -f 831/2715/452 832/2677/453 830/2679/452 diff --git a/contrib/tinks/assets/models/textures/TTread.jpg b/contrib/tinks/assets/models/textures/TTread.jpg deleted file mode 100644 index fb497cdd25..0000000000 Binary files a/contrib/tinks/assets/models/textures/TTread.jpg and /dev/null differ diff --git a/contrib/tinks/assets/models/textures/tank.jpg b/contrib/tinks/assets/models/textures/tank.jpg deleted file mode 100644 index 0d80a163aa..0000000000 Binary files a/contrib/tinks/assets/models/textures/tank.jpg and /dev/null differ diff --git a/contrib/tinks/assets/particles/blackSmoke12.png b/contrib/tinks/assets/particles/blackSmoke12.png deleted file mode 100644 index 576091a2a7..0000000000 Binary files a/contrib/tinks/assets/particles/blackSmoke12.png and /dev/null differ diff --git a/contrib/tinks/assets/particles/explosion00.png b/contrib/tinks/assets/particles/explosion00.png deleted file mode 100644 index d0fc59c8b0..0000000000 Binary files a/contrib/tinks/assets/particles/explosion00.png and /dev/null differ diff --git a/contrib/tinks/assets/sounds/turret_fire.wav b/contrib/tinks/assets/sounds/turret_fire.wav deleted file mode 100644 index dc0b717850..0000000000 Binary files a/contrib/tinks/assets/sounds/turret_fire.wav and /dev/null differ diff --git a/contrib/tinks/assets/sounds/turret_ready.mp3 b/contrib/tinks/assets/sounds/turret_ready.mp3 deleted file mode 100644 index ff21920fed..0000000000 Binary files a/contrib/tinks/assets/sounds/turret_ready.mp3 and /dev/null differ diff --git a/contrib/tinks/assets/textures/blast.png b/contrib/tinks/assets/textures/blast.png deleted file mode 100644 index 64322a2253..0000000000 Binary files a/contrib/tinks/assets/textures/blast.png and /dev/null differ diff --git a/contrib/tinks/assets/textures/fastgras01.png b/contrib/tinks/assets/textures/fastgras01.png deleted file mode 100644 index f64b137af8..0000000000 Binary files a/contrib/tinks/assets/textures/fastgras01.png and /dev/null differ diff --git a/contrib/tinks/assets/textures/splash.png b/contrib/tinks/assets/textures/splash.png deleted file mode 100644 index a1878dd280..0000000000 Binary files a/contrib/tinks/assets/textures/splash.png and /dev/null differ diff --git a/contrib/tinks/bin/.gitignore b/contrib/tinks/bin/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/contrib/tinks/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/contrib/tinks/doc/tinks3d.png b/contrib/tinks/doc/tinks3d.png deleted file mode 100644 index 950a7aaab9..0000000000 Binary files a/contrib/tinks/doc/tinks3d.png and /dev/null differ diff --git a/contrib/tinks/net.xymus.tinks.txt b/contrib/tinks/net.xymus.tinks.txt deleted file mode 100644 index ceed2bce7a..0000000000 --- a/contrib/tinks/net.xymus.tinks.txt +++ /dev/null @@ -1,13 +0,0 @@ -Categories:Nit,Games -License:Apache2 -Web Site:http://nitlanguage.org -Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/tinks -Issue Tracker:https://github.com/nitlang/nit/issues - -Summary:Multiplayer crossplatform action game with destructible procedurally generated worlds -Description: -Each player controls a tank, opens fire from the turret and navigates between the terrain features. -Explosions from turret fire and tank destruction have different forces and destroy the terrain. -Each tank needs 4 hits to be destroyed. -Destroyed tanks drop health power-ups which can repair other tanks. -. diff --git a/contrib/tinks/package.ini b/contrib/tinks/package.ini deleted file mode 100644 index d4daf5f187..0000000000 --- a/contrib/tinks/package.ini +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name=tinks -tags=game -maintainer=Alexis Laferrière -license=Apache-2.0 -desc=Tinks! a multiplayer crossplatform action game with destructible procedurally generated worlds -[upstream] -browse=https://github.com/nitlang/nit/tree/master/contrib/tinks/ -git=https://github.com/nitlang/nit.git -git.directory=contrib/tinks/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues -apk=http://nitlanguage.org/fdroid/apk/tinks.apk diff --git a/contrib/tinks/src/client/base.nit b/contrib/tinks/src/client/base.nit deleted file mode 100644 index 29f40c34c5..0000000000 --- a/contrib/tinks/src/client/base.nit +++ /dev/null @@ -1,80 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Shader client code to manage the game context -module base - -import app - -import context - -redef class App - - # Context of the game, either local or remote - var context: GameContext is lazy do - - # Server info - var address = null - var port = default_listening_port - - if args.not_empty then - # Use first argument as the server address - address = args[0] - if args.length > 1 then port = args[1].to_i - else - print "Looking for a server..." - - var servers = discover_local_servers - if servers.not_empty then - address = servers.first.address - port = servers.first.port - end - end - - if address == null then - print "Launching a local server" - - # No command line - return new LocalServerContext - else - print "Connecting to {address}:{port}" - - # Args are: tinks server_address {port} - if args.length > 1 then port = args[1].to_i - - # Setup connection config - var server_config = new RemoteServerConfig(address, port) - var server = new RemoteServer(server_config) - - # Connect then complete handshake - assert server.connect else print_error "Connection to server failed with {server.socket.last_error or else "none"}" - assert server.handshake else print_error "Handshake with server failed" - - # Download and setup remote game - var context = new RemoteGameContext(server) - context.setup - - return context - end - end - - # `Tank` of the local player, if any - fun local_tank: nullable Tank - do - # FIXME use a ? to one line this - var local_player = context.local_player - if local_player == null then return null - return local_player.tank - end -end diff --git a/contrib/tinks/src/client/client3d.nit b/contrib/tinks/src/client/client3d.nit deleted file mode 100644 index 4f63709c8f..0000000000 --- a/contrib/tinks/src/client/client3d.nit +++ /dev/null @@ -1,547 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# 3D client for Tinks! -module client3d is - app_name "Tinks! 3D" - app_namespace "org.nitlanguage.tinks3d" - app_version(1, 0, git_revision) - - android_api_target 10 - android_manifest """""" -end - -import gamnit::depth - -import base - -redef class App - - # --- - # Config - - # Maximum distance from the camera to hear events and display explosions - private var far_dist2 = 2000.0 - - # Approximate maximum distance from the camera to display features - private var features_radius = 24 - - # --- - # Models - - # Models of rocks - var models_rock = [ - new Model("models/Tall_Rock_1_01.obj"), - new Model("models/Tall_Rock_2_01.obj"), - new Model("models/Tall_Rock_3_01.obj"), - new Model("models/Tall_Rock_4_01.obj")] - - # Models of trees - var models_tree = [ - new Model("models/Oak_Dark_01.obj"), - new Model("models/Oak_Green_01.obj"), - new Model("models/Large_Oak_Dark_01.obj"), - new Model("models/Large_Oak_Green_01.obj")] - - # Models of the debris left by a destroyed tank - var models_debris = [ - new Model("models/debris0.obj"), - new Model("models/debris1.obj")] - - # Model the health pickup - var model_health = new Model("models/health.obj") - - # Model of the tank base (without the turret) - var model_tank_base = new Model("models/tank.obj") - - # Model of the tank turret - var model_tank_turret = new Model("models/tank-turret.obj") - - # Blast effect on the ground after an explosion - private var blast_texture = new Texture("textures/blast.png") - private var blast_material: TexturedMaterial do - var mat = new TexturedMaterial([1.0]*4, [0.0]*4, [0.0]*4) - mat.ambient_texture = blast_texture - return mat - end - private var blast_model = new LeafModel(new Plane, blast_material) - - # --- - # Particle effects - - # Explosion image for particle effect - private var texture_explosion = new Texture("particles/explosion00.png") - - # Explosion particles - var explosion_system = new ParticleSystem(20, explosion_program, texture_explosion) - - # Explosion image for particle effect - private var texture_smoke = new Texture("particles/blackSmoke12.png") - - # Explosion particles - var smoke_system = new ParticleSystem(200, smoke_program, texture_smoke) - - # --- - # Sounds - - # Firing sound - var turret_fire = new Sound("sounds/turret_fire.wav") - - # Turret is ready to fire sound - var turret_ready = new Sound("sounds/turret_ready.mp3") - - # --- - # Scene objects - - # Ground - var ground: Actor is noinit - private var ground_texture = new Texture("textures/fastgras01.png") - - # All `Feature` with an associated model, to be drawn on screen - var features_in_sight = new Set[Feature] - - redef fun on_create - do - super - - # Show splash screen - var logo = new Texture("textures/splash.png") - show_splash_screen logo - - # Load everything - for texture in all_root_textures do - texture.load - var error = texture.error - if error != null then print_error error - end - for model in models do - model.load - if model.errors.not_empty then print_error model.errors.join("\n") - end - - # Modify all textures so they have a higher ambient color - for model in models do - for leaf in model.leaves do - var mat = leaf.material - if mat isa TexturedMaterial then - var mod = 0.25 - mat.ambient_color[0] = mat.diffuse_color[0] * mod - mat.ambient_color[1] = mat.diffuse_color[1] * mod - mat.ambient_color[2] = mat.diffuse_color[2] * mod - - var tex = mat.diffuse_texture - if tex != null then mat.ambient_texture = tex - end - end - end - - # Setup ground - # TODO we may need to move this plane if the player goes far from the center - var ground_mesh = new Plane - ground_mesh.repeat_x = 1000.0 - ground_mesh.repeat_y = 1000.0 - - var ground_material = new TexturedMaterial( - [0.0, 0.1, 0.0, 1.0], [0.4, 0.4, 0.4, 1.0], [0.0]*4) - ground_material.diffuse_texture = ground_texture - - var ground_model = new LeafModel(ground_mesh, ground_material) - var ground = new Actor(ground_model, new Point3d[Float](0.0, 0.0, 0.0)) - ground.scale = 5000.0 - - self.ground = ground - actors.add ground - - # Config the view - world_camera.near = 0.1 - - # Sky color - glClearColor(100.0/256.0, 120.0/256.0, 224.0/256.0, 1.0) - - # Move the sun a bit off right above - light.position.x = 1000.0 - light.position.z = 500.0 - - # Register our two systems - particle_systems.add explosion_system - particle_systems.add smoke_system - - # Connect to server (or launch one) and assign models to rules - var context = context - context.game.story.assign_models - end - - redef fun update(dt) - do - # Game logic - var turn = context.do_turn - for event in turn.events do event.client_react - - # Is the player alive? - var local_player = context.local_player - var local_tank = null - if local_player != null then local_tank = local_player.tank - - if local_tank != null then - # Update camera position above the tank - var pos = local_tank.pos - world_camera.position.x = pos.x - world_camera.position.z = pos.y - world_camera.yaw = 1.5 * pi - local_tank.heading - world_camera.position.y = 1.8 - end - end - - redef fun accept_event(event) - do - # Let `pressed_keys` be populated first - var s = super - - var local_player = context.local_player - var local_tank = null - if local_player != null then local_tank = local_player.tank - - # Quit game? - if event isa QuitEvent or (event isa KeyEvent and event.name == "escape") then - exit 0 - end - - if event isa KeyEvent then - # Move tank? - var direction_change = ["w", "a", "s", "d"].has(event.name) - if direction_change and local_tank != null and local_player != null then - var forward = pressed_keys.has("w") - var backward = pressed_keys.has("s") - var left = pressed_keys.has("a") - var right = pressed_keys.has("d") - - # Cancel contradictory commands - if forward and backward then - forward = false - backward = false - end - - if left and right then - left = false - right = false - end - - # Set movement and direction - var move = 0.0 - if forward then - move = 0.5 - else if backward then move = -0.5 - - var ori = 0.0 - if left then - ori = -local_tank.rule.max_direction/2.0 - else if right then ori = local_tank.rule.max_direction/2.0 - - # Activate to invert the orientation on reverse, (for @R4p4Ss) - #if backward then ori = -ori - - # Bonus when only moving or only turning - if not forward and not backward then ori *= 2.0 - if not left and not right then move *= 2.0 - - # Give order - local_player.orders.add new TankDirectionOrder(local_tank, ori, move) - return true - end - - # Open fire? - if event.name == "space" and local_tank != null and event.is_down then - if local_player == null then return false - - # Open fire - var heading = local_tank.heading - var dist = 200.0 - var target = new Pos(local_tank.pos.x + dist*heading.cos, local_tank.pos.y + dist*heading.sin) - local_player.orders.add new AimAndFireOrder(local_tank, target) - end - end - - # Open fire with a target? - if event isa PointerEvent and event.pressed and not event.is_move then - if local_player == null then return false - - var display = display - if display == null then return false - - if local_tank == null then - local_player.orders.add new SpawnTankOrder(local_player) - return true - end - - # Compute approximate target - var dx = event.x / display.width.to_f - dx = dx * 2.0 - 1.0 # center of the screen - var fovx = display.aspect_ratio * world_camera.field_of_view_y - fovx *= 0.8 - var heading = local_tank.heading + dx * fovx - - var dy = event.y / display.height.to_f - dy = dy - 0.5 - if dy >= 0.0 then - var ty = dy * world_camera.field_of_view_y - var dist = world_camera.position.y / ty.tan / 1.6 - if dist > 200.0 then dist = 200.0 - - # Issue fire order - var target = new Pos(local_tank.pos.x + dist*heading.cos, local_tank.pos.y + dist*heading.sin) - local_player.orders.add new AimAndFireOrder(local_tank, target) - end - end - - return s - end -end - -# --- -# Story and rules (meta game objects) - -redef class FeatureRule - # Models of different alternatives - var models: Array[Model] is noinit -end - -redef class TankRule - # Models of the tank base - var base_model: Model is noinit - - # Models of the turret - var turret_model: Model is noinit -end - -redef class Story - - # Assign models from `app` to the corresponding rules - fun assign_models - do - tree.models = app.models_tree - rock.models = app.models_rock - debris.models = app.models_debris - - for tank in tanks do - tank.base_model = app.model_tank_base - tank.turret_model = app.model_tank_turret - end - - health.models = [app.model_health] - end -end - -# --- -# Game entities - -redef class Feature - # Actor representing this feature, if in sight - var actor: nullable Actor = null - - # Instantiate `actor` and add it to the 3D world - fun add_actor_to_scene - do - app.features_in_sight.add self - - var actor = actor - if actor != null then - # Reuse existing actor - if not app.actors.has(actor) then app.actors.add actor - return - end - - # Apply a random model and rotation to new features - actor = new Actor(rule.models.rand, - new Point3d[Float](pos.x, 0.0, pos.y)) - actor.yaw = 2.0*pi.rand - actor.scale = 0.75 - - self.actor = actor - app.actors.add actor - end - - # Remove `actor` from the `actors` list as it will net be used anymore - fun destroy_actor - do - var actor = actor - if actor != null then - app.actors.remove actor - self.actor = null - end - end -end - -redef class Tank - # Actors representing this tank, both the base and the turret - var actors: Array[Actor] is lazy do - var actors = new Array[Actor] - var actor = new Actor(app.model_tank_base, new Point3d[Float](0.0, 0.0, 0.0)) - app.actors.add actor - actors.add actor - - var tank_turret = new Actor(app.model_tank_turret, new Point3d[Float](0.0, 0.0, 0.0)) - app.actors.add tank_turret - actors.add tank_turret - return actors - end -end - -# --- -# Events - -redef class TEvent - private fun client_react do end -end - -redef class FeatureChangeEvent - redef fun client_react - do - var old_feature = old_feature - if old_feature != null then old_feature.destroy_actor - - var feature = feature - if feature != null then feature.add_actor_to_scene - end -end - -redef class ExplosionEvent - redef fun client_react - do - for feature in destroyed_features do feature.destroy_actor - - # Particles - app.explosion_system.add(new Point3d[Float](pos.x, 1.0, pos.y), 4096.0, 0.3) - for i in 8.times do - app.explosion_system.add( - new Point3d[Float](pos.x & 1.0, 1.0 & 1.0, pos.y & 1.0), - 2048.0 & 1024.0, 0.3 & 0.1) - end - - # Blast mark on the ground - var blast = new Actor(app.blast_model, new Point3d[Float](pos.x, 0.05 & 0.04, pos.y)) - blast.scale = 3.0 - blast.yaw = 2.0*pi.rand - app.actors.add blast - - # Smoke - for s in 32.times do - var dt = 0.2 * s.to_f + 0.1.rand - app.smoke_system.add( - new Point3d[Float](pos.x & 0.2, 0.0, pos.y & 0.2), - 1024.0 & 512.0, 10.0 & 4.0, dt) - end - end -end - -redef class OpenFireEvent - redef fun client_react - do - if tank.pos.dist2_3d(app.world_camera.position) < app.far_dist2 then - # Within earshot - app.turret_fire.play - - # Particle - var d = 1.7 - var a = tank.turret.heading - 0.025 # Correct to center the art - var pos = new Point3d[Float](tank.pos.x + d*a.cos, 1.25, tank.pos.y + d*a.sin) - app.explosion_system.add(pos, 0.75*256.0, 0.15) - end - end -end - -redef class TurretReadyEvent - redef fun client_react - do - if tank.pos.dist2_3d(app.world_camera.position) < app.far_dist2 then - # Within earshot - app.turret_ready.play - end - end -end - -redef class TankMoveEvent - redef fun client_react - do - var pos = tank.pos - for actor in tank.actors do - actor.center.x = pos.x - actor.center.z = pos.y - end - - tank.actors[0].yaw = -tank.heading + pi - tank.actors[1].yaw = -tank.turret.heading + pi - - # Keep going only for the local tank - var local_player = app.context.local_player - if local_player != tank.player then return - - var center = tank.pos - var d = app.features_radius - var l = center.x.to_i - d - var r = center.x.to_i + d - var t = center.y.to_i - d - var b = center.y.to_i + d - - # Remove out of range features - for feature in app.features_in_sight.to_a do - var x = feature.pos.x.to_i - var y = feature.pos.y.to_i - if x < l or x > r or y < t or y > b then - var actor = feature.actor - app.actors.remove actor - app.features_in_sight.remove feature - end - end - - # Add newly in range features - for x in [l..r[ do - for y in [t..b[ do - var feature = app.context.game.world[x, y] - if feature != null then - feature.add_actor_to_scene - end - end - end - end -end - -redef class TankDeathEvent - redef fun client_react - do - for actor in tank.actors do app.actors.remove actor - tank.actors.clear - end -end - -# --- -# Misc services - -redef class Point[N] - # Square of the distance to 3D coordinates `other` - # - # Same as `dist2` but using `other.z` as the Y value - # to adapt from the flat plane on X/Y to X/Z. - private fun dist2_3d(other: Point3d[Numeric]): N - do - var dx = other.x.sub(x) - var dy = other.z.sub(y) - var s = (dx.mul(dx)).add(dy.mul(dy)) - return x.value_of(s) - end -end - -redef class Float - # Fuzzy value in `[self-variation..self+variation]` - fun &(variation: Float): Float do return self - variation + 2.0*variation.rand -end diff --git a/contrib/tinks/src/client/context.nit b/contrib/tinks/src/client/context.nit deleted file mode 100644 index a8323ebc4b..0000000000 --- a/contrib/tinks/src/client/context.nit +++ /dev/null @@ -1,116 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Provides context to abstract the exchanges with a local game or a remote game -module context - -import gamnit::network - -import game -intrude import game::players -import server - -# Interface to a game -abstract class GameContext - - # The current game - var game: TGame - - # The local player on this client, if any - var local_player: nullable Player = null - - # Do a turn - fun do_turn: TTurn is abstract -end - -# Simple local single-player game -class LocalGameContext - super GameContext - - noautoinit - - init - do - # Create basic game - game = new TGame - var setup_turn = game.do_turn - - var local_player = new Player - game.players.add local_player - self.local_player = local_player - setup_turn.spawn_tank local_player - end - - redef fun do_turn do return game.do_turn -end - -# Multiplayer game running on a remote server -class RemoteGameContext - super GameContext - - autoinit remote_server - - # Remote server that controls the `game` - var remote_server: RemoteServer - - # Setup `game` from `remote_server` - fun setup - do - var game = remote_server.reader.deserialize - var errors = remote_server.reader.errors - assert errors.is_empty else print_error errors.join("\n") - assert game isa TGame else print_error "Server sent a {game.class_name}" - self.game = game - - var local_player = remote_server.reader.deserialize - errors = remote_server.reader.errors - assert errors.is_empty else print_error errors.join("\n") - assert local_player isa Player else print_error "Server sent a {local_player.class_name}" - self.local_player = local_player - end - - redef fun do_turn - do - # Get turn from server - var turn = remote_server.reader.deserialize - var errors = remote_server.reader.errors - assert errors.is_empty else print_error errors.join("\n") - assert turn isa TTurn else print_error "Server sent a {turn.class_name}" - - # Apply the turn locally - game.apply_turn turn - - # Send orders to server - var local_player = local_player - if local_player != null and local_player.orders.not_empty then - remote_server.writer.serialize local_player.orders - remote_server.socket.flush - local_player.orders = new Array[TOrder] - end - - return turn - end -end - -# Local game ran by a server accepting other clients -class LocalServerContext - super LocalGameContext - - # The server managing the game and other clients - var server = new Server(default_listening_port) - - init do server.game = game - - redef fun do_turn do return server.do_turn -end diff --git a/contrib/tinks/src/client/tinks_vr.nit b/contrib/tinks/src/client/tinks_vr.nit deleted file mode 100644 index 0e2a300899..0000000000 --- a/contrib/tinks/src/client/tinks_vr.nit +++ /dev/null @@ -1,22 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# VR mode for Android with Google Cardboard -# -# This version is not playable and very laggy as it is not modified -# or optimized in any way for VR. -# This module is made available as a minimal example of a VR game. -module tinks_vr - -import gamnit::vr diff --git a/contrib/tinks/src/common.nit b/contrib/tinks/src/common.nit deleted file mode 100644 index e7a82c9fb5..0000000000 --- a/contrib/tinks/src/common.nit +++ /dev/null @@ -1,30 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services common to the client and server -module common - -import gamnit::network - -redef class Sys - # Name of this app - redef fun handshake_app_name do return "tinks" - - redef fun handshake_app_version do return "0.1" - - # Default listening port of the server - fun default_listening_port: Int do return 18721 - - redef fun discovery_port do return 18722 -end diff --git a/contrib/tinks/src/game/framework.nit b/contrib/tinks/src/game/framework.nit deleted file mode 100644 index df30aac6cd..0000000000 --- a/contrib/tinks/src/game/framework.nit +++ /dev/null @@ -1,138 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Structure of a client/server game, based on turns, events, orders and rules -module framework is serialize - -import geometry -import realtime - -# Main game object containing the world, players and tanks -# -# The game object is shared by both the client and the server. -# So a method using the game object as visitor is to be executed client-side. -class TGame - - # `Story`, or rule book, with all the stats for this game - var story = new Story - - # `Clock` timing the elapsed time between turns - private var clock = new Clock is noserialize - - # Tick count of the last turn (The first turn as a tick of 0) - var tick = -1 - - # Execute the next turn and return it as a `TTurn` - # - # This is to be executed server-side only. - fun do_turn: TTurn - do - var dt = clock.lapse - tick += 1 - - var turn = new TTurn(self, tick, dt, ((dt-dt.floor)*1000.0).to_i) - return turn - end - - # Apply `turn` locally by updating `tick` and applying all events - # - # This is to be executed client-side only. - fun apply_turn(turn: TTurn) - do - tick = turn.tick - for event in turn.events do event.apply self - end -end - -# A single turn of a `TGame` -# -# The turn object is created and populated by the server (using `TGame::do_turn`). -# It is transmitted to the client but it cannot modify it. -# So methods using the turn object as visitor are to be executed server-side. -class TTurn - - # `TGame` of which `self` is part of - var game: TGame - - # Tick of this turn - var tick: Int - - # Elapsed seconds since previous turn (as a `Float`) - var dts: Float - - # Elapsed milliseconds since previous turn (as a `Int`) - var dt: Int - - # `TEvent` that happened during this turn - # - # Events are added using `add`. - # This information is used to apply the turn client-side to update its game object. - # It is also used by effects on the UI and could be used by an AI. - var events: SequenceRead[TEvent] = new Array[TEvent] - - # Add an `event` to `events` and apply it right away server-side - fun add(event: TEvent) - do - event.apply game - events.as(Array[TEvent]).add event - end -end - -# Game event sent from the server to the client -class TEvent - - # Executed client-side to apply this event on the `game` - fun apply(game: TGame) do end -end - -# An order sent from the client to the server -class TOrder - - # Apply order server-side on `turn`, usually spawns `GameEvent` - fun apply(turn: TTurn) do end -end - -# An entity acting on each turn -class TTurnable - - # Act on `turn` - fun do_turn(turn: TTurn) do end -end - -# A collection of `Rule` guiding the game -# -# Changing the story could (in theory) be enough to completely change the context of the game. -# In _Tinks!_ however, we use this class lightly and fill it with static content. -class Story -end - -# Metadata of in game `Ruled` entities, keep their stats and assets in a single place -class Rule - - # `Story` to which `self` belongs - var story: Story -end - -# A game entity with metadata in its `rule` -class Ruled - - # Kind of `Rule` for `rule` - type R: Rule - - # Metadata of this entity - var rule: R -end - -# Should the game show more information for debugging? -fun debug: Bool do return false diff --git a/contrib/tinks/src/game/game.nit b/contrib/tinks/src/game/game.nit deleted file mode 100644 index 06a0a09929..0000000000 --- a/contrib/tinks/src/game/game.nit +++ /dev/null @@ -1,18 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import tanks -import players -import world -import powerups diff --git a/contrib/tinks/src/game/players.nit b/contrib/tinks/src/game/players.nit deleted file mode 100644 index ac5bb7639f..0000000000 --- a/contrib/tinks/src/game/players.nit +++ /dev/null @@ -1,149 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Player related and tank spawning logic -module players is serialize - -import tanks - -redef class TGame - - # All the known players in the game - var players = new Array[Player] - - redef fun do_turn - do - var turn = super - for player in players do - player.do_turn turn - end - return turn - end -end - -redef class TTurn - - # Range around the center of the world (0, 0) where a tank can spawn - var spawn_range = 256.0 - - # Spawn a new tank for `player` - fun spawn_tank(player: Player) - do - var pos = new Pos(spawn_range.rand, spawn_range.rand) - var tank = new Tank(game.story.tanks.rand, pos, 2.0*pi.rand) - - if tank.next_move_collisions(self).not_empty then - # Clear the way - game.world.explode(self, pos, 3) - end - - add new TankSpawnEvent(tank, player) - end -end - -# A player in the game -class Player - super TTurnable - - # Queue of orders to apply at the end of the turn - var orders = new Array[TOrder] - - # The tank controlled by this player, if any - var tank: nullable Tank = null - - # Index of the "unique" player stencil applied on all its tanks - var stencil_index: Int do - var counter = once new Ref[Int](0) - var val = counter.item - counter.item = (counter.item+1) % 4 - return val - end - - redef fun do_turn(turn) - do - # Apply orders if they are legal - for order in orders do - if order.is_legal(turn.game, self) then - order.apply turn - else print "Server Warning: Order {order} is now illegal" - end - - orders.clear - end -end - -redef class Tank - # The player controlling this tank, if any - var player: nullable Player = null -end - -redef class TOrder - - # Is this order (still) legal? - # - # This is executed client-side. - fun is_legal(game: TGame, issed_by: Player): Bool do return true -end - -redef abstract class TankOrder - redef fun is_legal(game, issed_by) do return issed_by == tank.player -end - -# A request to spawn a new tank -class SpawnTankOrder - super TOrder - - # Requester - var player: Player - - redef fun is_legal(turn, issed_by) do return issed_by == player and player.tank == null - - redef fun apply(turn) - do - turn.spawn_tank player - end -end - -# A new tank appeared -class TankSpawnEvent - super TEvent - - # The new tank - var tank: Tank - - # The `tank` owner - var player: nullable Player - - redef fun apply(game) - do - var player = player - if player != null then player.tank = tank - tank.player = player - game.tanks.add tank - end -end - -redef class TankDeathEvent - - redef fun apply(game) - do - super - - # `player` has no tank anymore - var player = tank.player - if player != null then - player.tank = null - end - end -end diff --git a/contrib/tinks/src/game/powerups.nit b/contrib/tinks/src/game/powerups.nit deleted file mode 100644 index 8fc5af7f16..0000000000 --- a/contrib/tinks/src/game/powerups.nit +++ /dev/null @@ -1,91 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Support for pickable powerups (only health for now) -module powerups is serialize - -import tanks - -# A powerup item -class Powerup - super Feature - redef type R: PowerupRule -end - -# Metadata of a powerup item -class PowerupRule - super FeatureRule - - # Restore all health when picked up - var restore_health: Bool -end - -redef class Story - # A powerup that restores all health - var health = new PowerupRule(self, 2, true) - - # All `PowerupRule` in this story - var powerups: Array[PowerupRule] = [health] -end - -redef class Tank - - redef fun destroy(turn) - do - super - - # Put a random powerup at the center of the old tank - var pos = new Pos(pos.x.floor+0.5, pos.y.floor+0.5) - var powerup = new Powerup(turn.game.story.powerups.rand, pos) - turn.add new FeatureChangeEvent(powerup, null, pos) - - # Add some debris around it - var forward = new Pos((pos.x+heading.cos*1.1).floor+0.5, (pos.y+heading.sin*1.1).floor+0.5) - var backward = new Pos((pos.x-heading.cos*1.1).floor+0.5, (pos.y-heading.sin*1.1).floor+0.5) - turn.add new FeatureChangeEvent(new Feature(turn.game.story.debris, forward), null, forward) - turn.add new FeatureChangeEvent(new Feature(turn.game.story.debris, backward), null, backward) - end - - # Intercept collision detection of "absorb" powerups - # - # This is a wee bit hackish. - # The collision detection on tank move can return a max of 4 items (1 per side). - # If there is powerups, they may have hidden other features. - # This could cause the tank to move over a feature and get stuck. - # This is not a big problem as the tank can open fire to liberate itself, - # or even simply go back as the speed is static. - redef fun next_move_collisions(turn) - do - var collisions = super - if collisions.is_empty then return collisions - - for coll in collisions do if not coll isa Powerup then - # An unavoidable collision - return collisions - end - - # Only powerups! absorb them - for powerup in collisions do - if powerup isa Powerup then - turn.add new FeatureChangeEvent(null, powerup, powerup.pos) - - if powerup.rule.restore_health then - turn.add new TankHealthChange(self, rule.max_health) - end - end - end - - return new HashSet[Feature] - end -end diff --git a/contrib/tinks/src/game/tanks.nit b/contrib/tinks/src/game/tanks.nit deleted file mode 100644 index 9970941cbd..0000000000 --- a/contrib/tinks/src/game/tanks.nit +++ /dev/null @@ -1,386 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# See the License for the specific language governing permissions and -# limitations under the License. - -# Tank and tank turret related logic -module tanks is serialize - -import world - -redef class TGame - # All of the tanks in game - var tanks = new TankSet - - redef fun do_turn - do - var turn = super - for tank in tanks do tank.do_turn turn - return turn - end -end - -# Stats of a tank kind, its config should be move to the `Story` if we want more than 1 -class TankRule - super Rule - - # Width of this tank - var width: Float = 64.0/32.0 - - # Height of this tank - var length: Float = 100.0/32.0 - - # Maximum `health` this tank can normally have - var max_health = 4 - - # Maximum speed of this tank (in world coordinate units per seconds) - var max_speed = 2.0 - - # Turret turning speed (in radians per second) - var turret_turn_speed = 1.6 - - # Waiting time between shots can be fired - var turret_cooldown_time = 2.0 - - # Maximum `direction_heading` heading, may be double - var max_direction = 1.0 -end - -redef class Story - # The main (and only) tank configuration in this game - var tanks: Array[TankRule] = [new TankRule(self)] -end - -# A tank! -class Tank - super TTurnable - super Ruled - redef type R: TankRule - - # In world `Pos` of this entity - var pos: Pos - - # Orientation of this entity - var heading: Float - - # The turret mounted on this tank - var turret = new Turret(self) - - # Commanded direction - var direction_heading = 0.0 - - # Commanded speed - var direction_forwards = 0.0 - - # Health of this tank, out of `rule.max_health` - var health: Int = rule.max_health is lazy - - redef fun do_turn(turn) - do - var collisions = next_move_collisions(turn) - - if collisions.is_empty then - var next = normal_next_pos(turn) - self.pos = next.first - self.heading = next.second - end - - turret.do_turn turn - - if health > 0 then - turn.add new TankMoveEvent(self, pos, direction_heading, direction_forwards, heading, turret.relative_heading) - end - end - - # What would be the next position if not blocked by terrain features? - # - # Returns a couple of the new position and heading. - fun normal_next_pos(turn: TTurn): Couple[Pos, Float] - do - var heading = (heading + direction_heading * turn.dts).angle_normalize - - var speed = direction_forwards * rule.max_speed * turn.dts - var pos = pos - if speed != 0.0 then - pos += heading.to_vector(speed) - end - - return new Couple[Pos, Float](pos, heading) - end - - # Damage this tank, server-side - fun hit(turn: TTurn) - do - var damage = 1 - var health = health - damage - - if health <= 0 then - destroy turn - else - turn.add new TankHealthChange(self, health) - end - end - - # Destroy this tank, server-side - fun destroy(turn: TTurn) - do - turn.add new TankDeathEvent(self) - turn.game.world.explode(turn, pos, 3) - end - - # Collisions on the next move - fun next_move_collisions(turn: TTurn): HashSet[Feature] - do - var next = normal_next_pos(turn) - var features = new HashSet[Feature] - - # Use the lines between the corners to detect collisions - var corners = corners_at(next) - var prev_corner = corners.last - for corner in corners do - var feature = turn.game.world.first_collision(prev_corner, corner) - if feature != null then features.add feature - prev_corner = corner - end - - return features - end - - # Get the 4 corners at a `next` position - fun corners_at(next: Couple[Pos, Float]): Array[Pos] - do - var next_pos = next.first - var heading = next.second - - var corners = new Array[Pos] - - var hwy = rule.width/2.0 * (heading+pi/2.0).sin - var hwx = rule.width/2.0 * (heading+pi/2.0).cos - var hly = rule.length/2.0 * heading.sin - var hlx = rule.length/2.0 * heading.cos - corners.add new Pos(next_pos.x + hlx + hwx, next_pos.y + hly + hwy) - corners.add new Pos(next_pos.x + hlx - hwx, next_pos.y + hly - hwy) - corners.add new Pos(next_pos.x - hlx - hwx, next_pos.y - hly - hwy) - corners.add new Pos(next_pos.x - hlx + hwx, next_pos.y - hly + hwy) - - return corners - end -end - -# A tank turret -class Turret - super TTurnable - - # The `Tank` on which is mounted this turret - var tank: Tank - - # Orientation of this turret relative to the tank - var relative_heading = 0.0 - - # Absolute orientation of this turret - fun heading: Float do return (tank.heading+relative_heading).angle_normalize - - # Current target to aim for and fire upon - var target: nullable Pos = null - - # Seconds left before the turret can open fire again - var cooldown = 0.0 - - redef fun do_turn(turn) - do - if cooldown > 0.0 then - cooldown = cooldown - turn.dts - - if cooldown <= 0.0 then - cooldown = 0.0 - - # Notify clients - turn.add new TurretReadyEvent(tank) - end - end - - var target = target - if target != null then - - var angle_to_target = tank.pos.atan2(target) - var d = (heading - angle_to_target).angle_normalize - - var max_angle = tank.rule.turret_turn_speed * turn.dts - if d.abs < max_angle then - self.relative_heading = angle_to_target - tank.heading - - if cooldown == 0.0 then - # On target, fire - fire turn - self.target = null - end - else - # Turn towards target - if d < 0.0 then - self.relative_heading += max_angle - else self.relative_heading -= max_angle - end - end - end - - # Open fire! - fun fire(turn: TTurn) - do - var dst = target - assert dst != null - - # Is there something between the tank and the target? - var hit = turn.game.world.first_collision(tank.pos, dst) - if hit != null then dst = hit.pos - - # Events! - turn.add new OpenFireEvent(tank) - turn.game.world.explode(turn, dst, 2) - - # The turret need time to reload, cooldown! - cooldown = tank.rule.turret_cooldown_time - end -end - -redef class World - redef fun explode(turn, center, force) - do - super - - for tank in game.tanks do - if tank.health == 0 then continue - if center.dist(tank.pos) <= force.to_f + 1.0 then - tank.hit turn - end - end - end -end - -# A collection of `Tank` that could be optimized -class TankSet - super HashSet[Tank] -end - -# A `tank` centric order -abstract class TankOrder - super TOrder - - # The `Tank` at the center of this order - var tank: Tank -end - -# A command to change the behavior of `tank` -class TankDirectionOrder - super TankOrder - - # Desired direction, in [-1.0..1.0] - var direction_heading: Float - - # Desired speed, in [-1.0..1.0] - var direction_forwards: Float - - redef fun apply(game) - do - # TODO use events - var direction_heading = direction_heading - direction_heading = direction_heading.clamp(-1.0, 1.0) - tank.direction_heading = direction_heading*tank.rule.max_direction - - var direction_forwards = direction_forwards - direction_forwards = direction_forwards.clamp(-1.0, 1.0) - tank.direction_forwards = direction_forwards*tank.rule.max_speed - end -end - -# Order to aim and fire at `target` -class AimAndFireOrder - super TankOrder - - # Target for the turret - var target: Pos - - redef fun apply(game) - do - tank.turret.target = target - end -end - -# A `tank` centric event -abstract class TankEvent - super TEvent - - # The `Tank` at the center of this event - var tank: Tank -end - -# `tank` opens fire -class OpenFireEvent - super TankEvent -end - -# The turret of `tank` is ready to open fire -class TurretReadyEvent - super TankEvent -end - -# `tank` has been destroyed -class TankDeathEvent - super TankEvent - - redef fun apply(game) - do - tank.health = 0 - game.tanks.remove tank - end -end - -# The health of `tank` changes to `new_health` -class TankHealthChange - super TankEvent - - # The new health for `tank` - var new_health: Int - - redef fun apply(game) - do - tank.health = new_health - end -end - -# A `tank` moved -# -# TODO this event is too big, divide in 2 or more and move more logic client-side -class TankMoveEvent - super TankEvent - - # The position - var pos: Pos - - # The direction of the "wheels" - var direction_heading: Float - - # The speed - var direction_forwards: Float - - # Orientation of the tank - var tank_heading: Float - - # Orientation of the turret - var turret_heading: Float - - redef fun apply(game) - do - tank.pos = pos - tank.direction_heading = direction_heading - tank.direction_forwards = direction_forwards - tank.heading = tank_heading - tank.turret.relative_heading = turret_heading - end -end diff --git a/contrib/tinks/src/game/world.nit b/contrib/tinks/src/game/world.nit deleted file mode 100644 index 9ba1d8bc21..0000000000 --- a/contrib/tinks/src/game/world.nit +++ /dev/null @@ -1,279 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Physical world logic -module world is serialize - -import noise -import more_collections - -import framework - -redef class TGame - # The physical world in which this game happens - var world = new World(self) -end - -# A terrain features (a rock, a tree, etc.) -class Feature - super Ruled - redef type R: FeatureRule - - # Top-left corner of this feature - var pos: Pos -end - -# Metadata for a `Feature` -class FeatureRule - super Rule - - # Strength to resist on `World::explode` - var strength: Int -end - -# The physical world of the `game` -class World - # Associated `TGame` - var game: TGame - - # Past blast sites - var blast_sites = new Array[Pos] - - private var mountain_map: Noise do - var map = new PerlinNoise - map.period = 10.0 - return map - end - - private var forest_map: Noise do - var map = new PerlinNoise - map.period = 24.0 - return map - end - - # Cache of discovered features, also keeps tracks of changes - private var features_cache = new FeatureMap - - # Get the `Feature` at `x, y`, if any - fun [](x, y: Int): nullable Feature - do - if features_cache.has(x, y) then return features_cache[x, y] - - # Generate a feature from the noise map - var pos = new Pos(x.to_f+0.5, y.to_f+0.5) - - var feature = null - if mountain_map[x.to_f, y.to_f] > 0.55 then - feature = new Feature(game.story.rock, pos) - else if forest_map[x.to_f, y.to_f] > 0.5 then - feature = new Feature(game.story.tree, pos) - end - - # Update cache - features_cache[x, y] = feature - - return feature - end - - # Detect the first collision with a `Feature` from `src` to `dst` - # - # This is the main collision detection method used by tanks shots, and at tank movement. - # The idea is to check all cases between `src` and `dst` and return the first feature found. - # Returns `null` if there is no obstacle features. - # - # Example of the cases that would be checked between `s` and `d`: - # - # ~~~raw - # ................ - # .s###........... - # ....######...... - # .........####d.. - # ................ - # ~~~ - fun first_collision(src, dst: Pos): nullable Feature - do - var going_left = dst.x < src.x - var angle = src.atan2(dst) - var slope = angle.tan - - # Soften slopes approaching infinity - if slope > 100.0 then slope = 100.0 - if slope < -100.0 then slope = -100.0 - - # For each column (over x) from src.x to dst.x - var x0 = src.x.floor.to_i - var x1 = dst.x.floor.to_i - for x in [x0 .. x1].smart_step do - var dx = x.to_f - src.x - var y0 = src.y + dx*slope - var y1 = src.y + (dx+1.0)*slope - - var first = y0.floor.to_i - var last = y1.floor.to_i - if going_left then - # Invert the first and last element of the range - var swap = first - first = last - last = swap - end - - # For each row (over y) - # from where the line enters the column to where it leaves it - for y in [first .. last].smart_step do - if not y.in_between_floats(src.y, dst.y) then continue - - var feature = self[x.to_i, y] - if feature != null then return feature - end - end - - return null - end - - # Apply an explosion at `center` of the given `power` - fun explode(turn: TTurn, center: Pos, power: Int) - do - var x = center.x.floor.to_i - var y = center.y.floor.to_i - var range = [-power .. power] - var features = new Array[Feature] - - for dx in range do - for dy in range do - var f = self[x+dx, y+dy] - var force = (power-dx.abs) + (power-dy.abs) - if f != null and f.rule.strength <= force then features.add f - end - end - - turn.add new ExplosionEvent(center, power, features) - end -end - -# Map of features organized by their coordinates -# -# The naive implementation is using a `HashMap2`. -# This class can be redefed with optimizations as needed. -class FeatureMap - super HashMap2[Int, Int, nullable Feature] -end - -redef class Story - # Forest tree - var tree = new FeatureRule(self, 2) - - # Big rock - var rock = new FeatureRule(self, 3) - - # Metallic debris - var debris = new FeatureRule(self, 4) -end - -# An explosion -class ExplosionEvent - super TEvent - - # Center of the explosion - var pos: Pos - - # Power of the blast - var power: Int - - # All the features this explosion destroys - var destroyed_features: Array[Feature] - - redef fun apply(game) - do - for feature in destroyed_features do - game.world.features_cache[feature.pos.x.floor.to_i, feature.pos.y.floor.to_i] = null - end - - game.world.blast_sites.add pos - if game.world.blast_sites.length > 100 then game.world.blast_sites.shift - end -end - -# The feature at `pos` changes to `feature` -class FeatureChangeEvent - super TEvent - - # New `Feature`, if any - var feature: nullable Feature - - # Previous feature, if any - var old_feature: nullable Feature - - # `Pos` of this change - var pos: Pos - - redef fun apply(game) - do - game.world.features_cache[pos.x.floor.to_i, pos.y.floor.to_i] = feature - end -end - -# --- -# Services - -# Position in the world -class Pos - super Point[Float] - - # Add `self` to `other` and return the new position - fun +(other: Point[Float]): Pos - do - var nx = other.x.add(x) - var ny = other.y.add(y) - return new Pos(x.value_of(nx), y.value_of(ny)) - end -end - -redef universal Int - # Is `self` in between `a` and `b`? - # - # ~~~ - # assert 1.in_between_floats(0.0, 2.0) - # assert 1.in_between_floats(2.0, 0.0) - # assert not 1.in_between_floats(2.0, 4.0) - # ~~~ - fun in_between_floats(a, b: Float): Bool - do - var f = to_f - if a < b then return a.floor - 1.0 < f and f < b.ceil - return a.ceil > f and f > b.floor - 1.0 - end -end - -redef universal Float - # Get the vector with `self` as direction and the given `magnitude` - fun to_vector(magnitude: Float): Pos - do - return new Pos(cos*magnitude, sin*magnitude) - end -end - -redef class Range[E] - # Step appropriately to go from `first` to `last` - # - # ~~~ - # assert [1..3].smart_step.to_a == [1, 2, 3] - # assert [3..1].smart_step.to_a == [3, 2, 1] - # ~~~ - fun smart_step: Iterator[E] - do - var step = 1 - if first > last then step = -1 - return self.step(step) - end -end diff --git a/contrib/tinks/src/server/dedicated.nit b/contrib/tinks/src/server/dedicated.nit deleted file mode 100644 index db7bd9cfae..0000000000 --- a/contrib/tinks/src/server/dedicated.nit +++ /dev/null @@ -1,24 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Dedicated server program -module dedicated - -import server - -var port = sys.default_listening_port -if args.length > 0 then port = args[0].to_i - -var server = new Server(port) -server.run_dedicated diff --git a/contrib/tinks/src/server/server.nit b/contrib/tinks/src/server/server.nit deleted file mode 100644 index 69f2bdbc84..0000000000 --- a/contrib/tinks/src/server/server.nit +++ /dev/null @@ -1,108 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Server to host multiplayer games -module server - -import gamnit::network - -import game -import common - -redef class RemoteClient - # `Player` associated to this client - var player = new Player -end - -redef class Server - - # The current game - var game = new TGame is lazy, writable - - # Is this a dedicated server - var dedicated = false - - # Create and run a new `Game` - fun run_dedicated - do - dedicated = true - - # Setup game - print "Server: Setup game" - game - - # Play - print "Server: Starting play" - loop do_turn - end - - # Run the server logic over a single turn - fun do_turn: TTurn - do - var game = game - - # Do game logic - var turn = game.do_turn - - # Respond to discovery requests sent over UDP - answer_discovery_requests - - # Setup clients - var new_clients = accept_clients - for client in new_clients do - # Register player and spawn first tank - game.players.add client.player - turn.spawn_tank client.player - - client.writer.serialize game - client.writer.serialize client.player - client.socket.flush - end - - if dedicated and clients.is_empty then - # No clients, sleep for a while - nanosleep(0, 10000000) - return turn - end - - # Update clients - broadcast turn - - # Get orders from players - var clients_to_remove = new Array[RemoteClient] - for client in clients do - if not client.socket.poll_in then continue - - var orders = client.reader.deserialize - var errors = client.reader.errors - if errors.not_empty then - print_error "Comm Error: (Dropping client) {errors.join(", ")}" - clients_to_remove.add client - else if not orders isa Array[TOrder] then - if orders == null then - print_error "Comm Error: (Dropping client) Unexpected null" - else print_error "Comm Error: (Dropping client) Unexpected {orders.class_name}" - # TODO remove code duplication when we have ? or an equivalent - - clients_to_remove.add client - else - client.player.orders.add_all orders - end - end - - for client in clients_to_remove do clients.remove client - - return turn - end -end diff --git a/lib/android/gamepad.nit b/lib/android/gamepad.nit deleted file mode 100644 index be0ded05b4..0000000000 --- a/lib/android/gamepad.nit +++ /dev/null @@ -1,78 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Support for gamepad events (over Bluetooth or USB) -module gamepad - -import input_events - -redef class AndroidKeyEvent - - # Was `self` raised by the A button? - fun is_a: Bool do return key_code == 96 - - # Was `self` raised by the B button? - fun is_b: Bool do return key_code == 97 - - # Was `self` raised by the X button? - fun is_x: Bool do return key_code == 99 - - # Was `self` raised by the Y button? - fun is_y: Bool do return key_code == 100 - - # Was `self` raised by the directional pad? - fun is_dpad: Bool - do - return is_dpad_up or is_dpad_down or is_dpad_left or is_dpad_right - end - - # Was `self` raised by the up key on the directional pad? - fun is_dpad_up: Bool do return key_code == 19 - - # Was `self` raised by the down key on the directional pad? - fun is_dpad_down: Bool do return key_code == 20 - - # Was `self` raised by the left key on the directional pad? - fun is_dpad_left: Bool do return key_code == 21 - - # Was `self` raised by the right key on the directional pad? - fun is_dpad_right: Bool do return key_code == 22 - - # Was `self` raised by the start button? - fun is_start: Bool do return key_code == 108 - - # Was `self` raised by the select button? - fun is_select: Bool do return key_code == 109 - - # Was `self` raised by the right bumper button? - fun is_bumper_right: Bool do return key_code == 103 - - # Was `self` raised by the right trigger? - fun is_trigger_right: Bool do return key_code == 105 - - # Was `self` raised by the left bumper? - fun is_bumper_left: Bool do return key_code == 102 - - # Was `self` raised by the left trigger? - fun is_trigger_left: Bool do return key_code == 101 - - # Was `self` raised by the media button 'previous'? - fun is_media_previous: Bool do return key_code == 87 - - # Was `self` raised by the media button 'pause'? - fun is_media_pause: Bool do return key_code == 85 - - # Was `self` raised by the media button 'next'? - fun is_media_next: Bool do return key_code == 88 -end diff --git a/lib/android/input_events.nit b/lib/android/input_events.nit deleted file mode 100644 index 96663c7233..0000000000 --- a/lib/android/input_events.nit +++ /dev/null @@ -1,274 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Copyright 2012-2014 Alexis Laferrière -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Pointer and hardware key events -module input_events - -import mnit::input -import android::game - -in "C header" `{ - #include - #include - - #define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "mnit", __VA_ARGS__)) - #ifdef DEBUG - #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "mnit", __VA_ARGS__)) - #else - #define LOGI(...) (void)0 - #endif -`} - -in "C" `{ - /* Handle inputs from the Android platform and sort them before - sending them in the Nit App */ - static int32_t mnit_handle_input(struct android_app* app, AInputEvent* event) { - App nit_app = app->userData; - LOGI("handle input %i", (int)pthread_self()); - if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY) { - LOGI("key"); - return App_native_input_key(nit_app, event); - } - else if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) { - LOGI("motion"); - return App_native_input_motion(nit_app, event); - } - - return 0; - } -`} - -private extern class NativeAndroidMotionEvent `{AInputEvent *`} - - fun pointers_count: Int `{ - return AMotionEvent_getPointerCount(self); - `} - - fun edge: Int `{ - return AMotionEvent_getEdgeFlags(self); - `} - - # Get the non-primary pointer id that just went down (returns -1 or > 0) - fun index_down_pointer: Int `{ - int a = AMotionEvent_getAction(self); - if ((a & AMOTION_EVENT_ACTION_MASK) == AMOTION_EVENT_ACTION_POINTER_DOWN) - return (a & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - else return -1; - `} - - fun action: AMotionEventAction `{ return AMotionEvent_getAction(self); `} - - fun native_down_time: Int `{ return AMotionEvent_getDownTime(self); `} -end - -private extern class AMotionEventAction `{ int32_t `} - fun action: Int `{ return self & AMOTION_EVENT_ACTION_MASK; `} - - # Pointer index concerned by this action - # - # Require: `is_pointer_down or is_pointer_up` - fun pointer_index: Int `{ - return (self & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; - `} - - fun is_down: Bool do return action == 0 - fun is_up: Bool do return action == 1 - fun is_move: Bool do return action == 2 - fun is_cancel: Bool do return action == 3 - fun is_outside: Bool do return action == 4 - fun is_pointer_down: Bool do return action == 5 - fun is_pointer_up: Bool do return action == 6 -end - -# An input event on Android -interface AndroidInputEvent - super InputEvent -end - -# A motion event concerning a single or more `pointers` -class AndroidMotionEvent - super AndroidInputEvent - super MotionEvent - - private var native: NativeAndroidMotionEvent - - # Pointers (or fingers) composing this motion event - var pointers: Array[AndroidPointerEvent] is lazy do - return [for i in native.pointers_count.times do new AndroidPointerEvent(self, i)] - end - - # The pointer (or finger) causing this event - var acting_pointer: AndroidPointerEvent is lazy do - var action = native.action - var index = 0 - - if action.is_pointer_down or action.is_pointer_up then - index = native.action.pointer_index - end - - return new AndroidPointerEvent(self, index) - end - - redef fun just_went_down do return native.action.is_down or native.action.is_pointer_down - - # Was the top edge of the screen intersected by this event? - fun touch_to_edge: Bool do return native.edge == 1 - - # Was the bottom edge of the screen intersected by this event? - fun touch_bottom_edge: Bool do return native.edge == 2 - - # Was the left edge of the screen intersected by this event? - fun touch_left_edge: Bool do return native.edge == 4 - - # Was the right edge of the screen intersected by this event? - fun touch_right_edge: Bool do return native.edge == 8 - - redef fun down_pointer: nullable AndroidPointerEvent - do - if just_went_down then - # The primary pointer went down - return pointers[0] - end - - var i = native.index_down_pointer - if i > 0 then - # A secondary pointer went down - return pointers[i] - else - return null - end - end - - # Time when the user originally pressed down to start a stream of position events - # - # The return value is in the `java.lang.System.nanoTime()` time base. - fun down_time: Int do return native.native_down_time -end - -# A pointer event -class AndroidPointerEvent - super PointerEvent - super AndroidInputEvent - - private var motion_event: AndroidMotionEvent - - private var pointer_index: Int - - redef fun x do return native_x(motion_event.native, pointer_index) - - private fun native_x(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{ - return AMotionEvent_getX(motion_event, pointer_index); - `} - - redef fun y do return native_y(motion_event.native, pointer_index) - - private fun native_y(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{ - return AMotionEvent_getY(motion_event, pointer_index); - `} - - # Pressure applied by this pointer - fun pressure: Float do return native_pressure(motion_event.native, pointer_index) - - private fun native_pressure(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Float `{ - return AMotionEvent_getPressure(motion_event, pointer_index); - `} - - redef fun pressed - do - var action = motion_event.native.action - return action.is_down or action.is_move or action.is_pointer_down - end - - redef fun is_move do return motion_event.acting_pointer == self and - motion_event.native.action.is_move - - # Does this pointer just began touching the screen? - fun just_went_down: Bool do return motion_event.acting_pointer == self and - motion_event.just_went_down - - # Unique id of this pointer since the beginning of the gesture - redef fun pointer_id do return native_pointer_id(motion_event.native, pointer_index) - - private fun native_pointer_id(motion_event: NativeAndroidMotionEvent, pointer_index: Int): Int `{ - return AMotionEvent_getPointerId(motion_event, pointer_index); - `} -end - -# An hardware key event -extern class AndroidKeyEvent `{AInputEvent *`} - super KeyEvent - super AndroidInputEvent - - private fun action: Int `{ return AKeyEvent_getAction(self); `} - - redef fun is_down do return action == 0 - redef fun is_up do return action == 1 - - # Hardware code of the key raising this event - fun key_code: Int `{ return AKeyEvent_getKeyCode(self); `} - - redef fun to_c - do - var i = native_to_c - if i == 0 then return null - return i.code_point - end - - private fun native_to_c: Int `{ - int code = AKeyEvent_getKeyCode(self); - if (code >= AKEYCODE_0 && code <= AKEYCODE_9) - return '0'+code-AKEYCODE_0; - if (code >= AKEYCODE_A && code <= AKEYCODE_Z) - return 'a'+code-AKEYCODE_A; - return 0; - `} - - redef fun name do return key_code.to_s - - # Was this event raised by the back key? - fun is_back_key: Bool do return key_code == 4 - - # Was this event raised by the menu key? - fun is_menu_key: Bool do return key_code == 82 - - # Was this event raised by the search key? - fun is_search_key: Bool do return key_code == 84 - - # Was this event raised by the volume up key? - fun is_volume_up: Bool do return key_code == 24 - - # Was this event raised by the volume down key? - fun is_volume_down: Bool do return key_code == 25 -end - -redef class App - - redef fun init_window - do - set_as_input_handler native_app_glue - super - end - - private fun set_as_input_handler(app_glue: NativeAppGlue) - import native_input_key, native_input_motion `{ - app_glue->onInputEvent = mnit_handle_input; - `} - - # these are used as a callback from native to type incoming events - private fun native_input_key(event: AndroidKeyEvent): Bool is abstract - - private fun native_input_motion(event: NativeAndroidMotionEvent): Bool is abstract -end diff --git a/lib/android/sensors.nit b/lib/android/sensors.nit deleted file mode 100644 index d57a5d65a2..0000000000 --- a/lib/android/sensors.nit +++ /dev/null @@ -1,372 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Copyright 2014 Romain Chanoir -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Access Android sensors -# -# Sensors are to be enabled when `App` is created. -# The following example enables all sensors. -# The events (`SensorEvent`, `ASensorAccelerometer`, `ASensorMagneticField`...) -# are sent to the `input` callback of `App` -# -# ~~~~nitish -# redef class App -# init -# do -# sensors_support_enabled = true -# accelerometer.enabled = true -# accelerometer.eventrate = 10000 -# magnetic_field.enabled = true -# gyroscope.enabled = true -# light.enabled = true -# proximity.enabled = true -# end -# end -# ~~~~ -module sensors - -import android -import gamnit - -in "C header" `{ - #include - #include -`} - -extern class ASensorType `{int`} - new accelerometer: ASensorType `{return ASENSOR_TYPE_ACCELEROMETER;`} - fun is_accelerometer: Bool `{return self == ASENSOR_TYPE_ACCELEROMETER;`} - new magnetic_field: ASensorType `{return ASENSOR_TYPE_MAGNETIC_FIELD;`} - fun is_magnetic_field: Bool `{return self == ASENSOR_TYPE_MAGNETIC_FIELD;`} - new gyroscope:ASensorType `{return ASENSOR_TYPE_GYROSCOPE;`} - fun is_gyroscope: Bool `{ return self == ASENSOR_TYPE_GYROSCOPE;`} - new light: ASensorType `{return ASENSOR_TYPE_LIGHT;`} - fun is_light: Bool `{return self == ASENSOR_TYPE_LIGHT;`} - new proximity: ASensorType `{return ASENSOR_TYPE_PROXIMITY;`} - fun is_proximity:Bool `{return self == ASENSOR_TYPE_PROXIMITY;`} -end - -# Manages the sensors -extern class ASensorManager `{ASensorManager*`} - - new get_instance: ASensorManager `{return ASensorManager_getInstance();`} - - # Returns the list of available sensors - fun get_sensor_list: Pointer `{ - ASensorList *list; - ASensorManager_getSensorList(self, list); - return list; - `} - - # Create a new sensor event queue and associate it with a looper - fun create_event_queue(app: NativeAppGlue): ASensorEventQueue `{ - return ASensorManager_createEventQueue(self, app->looper, LOOPER_ID_USER, NULL, NULL); - `} - - # Returns the default sensor of the given type - fun get_default_sensor(sensortype: ASensorType): ASensor `{ - return ASensorManager_getDefaultSensor(self, sensortype); - `} - - # Destroys the event queue and free all resources associated to it - fun destroy_event_queue(queue: ASensorEventQueue) `{ - ASensorManager_destroyEventQueue(self, queue); - `} -end - -# Manages the sensors events -extern class ASensorEventQueue `{ASensorEventQueue*`} - - # Enable the selected sensor, returns a negative value on error - fun enable_sensor(sensor: ASensor): Int `{ - return ASensorEventQueue_enableSensor(self, sensor); - `} - - # Disable the selected sensor, returns a negative value on error - fun disable_sensor(sensor: ASensor): Int `{ - return ASensorEventQueue_disableSensor(self, sensor); - `} - - # Set the delivery rate of events in microseconds for the given sensor - fun set_event_rate(sensor: ASensor, usec: Int): Int `{ - return ASensorEventQueue_setEventRate(self, sensor, usec); - `} - # Returns 1 if the queue has events, 0 if it does not have events, - # and a negative value if there is an error - fun has_events: Int `{ - return ASensorEventQueue_hasEvents(self); - `} - - # Returns the next available events from the queue. - # Returns a negative value if no events are available or an error has occured - # otherwise the number of events returned - fun get_events(events: ASensorEvents, count: Int): Int `{ - return ASensorEventQueue_getEvents(self, events, (size_t)count); - `} -end - -# Extern class referencing a ASensor -extern class ASensor `{ASensorRef`} - - new `{return malloc(sizeof(ASensorRef));`} - fun name: CString `{return (char*)ASensor_getName(self);`} - fun vendor: CString `{return (char*)ASensor_getVendor(self);`} - fun sensor_type: ASensorType `{return ASensor_getType(self);`} - fun resolution: Float `{return ASensor_getResolution(self);`} - fun min_delay: Int `{return ASensor_getMinDelay(self);`} -end - -# NIT representation of an Android Sensor used in android_app to initialize sensors -class AndroidSensor - - var asensor = new ASensor is writable - var enabled = false is writable - var event_rate = 100000 is writable - - fun name: String do return asensor.name.to_s - fun vendor: String do return asensor.vendor.to_s - fun sensor_type: ASensorType do return asensor.sensor_type - fun resolution: Float do return asensor.resolution - fun min_delay: Int do return asensor.min_delay -end - -# Extern class referencing a ASensorEvent -extern class ASensorEvent `{ASensorEvent*`} - super SensorEvent - - fun version: Int `{return self->version;`} - fun sensor: ASensor `{return (ASensorRef)self->sensor;`} - fun sensor_type: ASensorType `{return self->type;`} - fun timestamp: Int `{return self->timestamp;`} -end - -extern class FullSensor `{ASensorEvent*`} - super ASensorLight - super ASensorProximity - - fun temperature: Float `{return self->temperature;`} - fun pressure: Float `{return self->pressure;`} - fun data: Pointer `{return self->data;`} - fun vector: ASensorVector `{return &(self->vector);`} - fun acceleration: ASensorVector `{return &(self->acceleration);`} - fun magnetic: ASensorVector `{return &(self->magnetic);`} -end - -# Extern class referencing a ASensorVector, attribute of ASensorRef -extern class ASensorVector `{ASensorVector*`} - - fun v: Pointer `{return self->v;`} - fun x: Float `{ return self->x;`} - fun y: Float `{return self->y;`} - fun z: Float `{return self->z;`} - fun azimuth: Float `{return self->azimuth;`} - fun pitch: Float `{return self->pitch;`} - fun roll: Float `{return self->roll;`} - fun status: Int `{return self->status;`} - fun reserved: Pointer `{return self->reserved;`} -end - -# Sensor event returned by the Accelerometer sensor -extern class ASensorAccelerometer `{ASensorEvent*`} - super ASensorEvent - - fun x: Float `{return self->acceleration.x;`} - fun y: Float `{return self->acceleration.y;`} - fun z: Float `{return self->acceleration.z;`} -end - -# Sensor event returned by the Magnetic Field sensor -extern class ASensorMagneticField `{ASensorEvent*`} - super ASensorEvent - - fun x: Float `{return self->magnetic.x;`} - fun y: Float `{return self->magnetic.y;`} - fun z: Float `{ return self->magnetic.z;`} -end - -# Sensor event returned by the gyroscope sensor -extern class ASensorGyroscope `{ASensorEvent*`} - super ASensorEvent - - fun x: Float `{return self->vector.x;`} - fun y: Float `{return self->vector.y;`} - fun z: Float `{return self->vector.y;`} -end - -# Sensor event returned by the Light sensor -extern class ASensorLight `{ASensorEvent*`} - super ASensorEvent - - fun light: Float `{return self->light;`} -end - -# sensor event returned by the Proximity Sensor -extern class ASensorProximity `{ASensorEvent*`} - super ASensorEvent - - fun distance: Float `{return self->distance;`} -end - -# Array of SensorEvents -extern class ASensorEvents `{ASensorEvent*`} - - new (length: Int) `{return malloc(sizeof(ASensorEvent)*length);`} - - fun [](index: Int): ASensorEvent `{ - return self+index; - `} -end - -redef class App - var accelerometer = new AndroidSensor - var magnetic_field = new AndroidSensor - var gyroscope = new AndroidSensor - var light = new AndroidSensor - var proximity = new AndroidSensor - var sensormanager: ASensorManager - var eventqueue: ASensorEventQueue - var sensors_support_enabled = false is writable - - private fun extern_input_sensor_accelerometer(event: ASensorAccelerometer) do accept_event(event) - private fun extern_input_sensor_magnetic_field(event: ASensorMagneticField) do accept_event(event) - private fun extern_input_sensor_gyroscope(event: ASensorGyroscope) do accept_event(event) - private fun extern_input_sensor_light(event: ASensorLight) do accept_event(event) - private fun extern_input_sensor_proximity(event: ASensorProximity) do accept_event(event) - - # Sensors support - # The user decides which sensors he wants to use by setting them enabled - private fun enable_sensors - do - if sensors_support_enabled then enable_sensors_management else return - if accelerometer.enabled then enable_accelerometer - if magnetic_field.enabled then enable_magnetic_field - if gyroscope.enabled then enable_gyroscope - if light.enabled then enable_light - if proximity.enabled then enable_proximity - end - - private fun enable_sensors_management - do - sensormanager = new ASensorManager.get_instance - #eventqueue = sensormanager.create_event_queue(new NdkAndroidApp) - eventqueue = initialize_event_queue(sensormanager, native_app_glue.looper) - end - - # HACK: need a nit method to get mnit_java_app, then we can use the appropriate sensormanager.create_event_queue method to initialize the event queue - private fun initialize_event_queue(sensormanager: ASensorManager, looper: ALooper): ASensorEventQueue `{ - return ASensorManager_createEventQueue(sensormanager, looper, LOOPER_ID_USER, NULL, NULL); - `} - - private fun enable_accelerometer - do - accelerometer.asensor = sensormanager.get_default_sensor(new ASensorType.accelerometer) - if accelerometer.asensor.address_is_null then - print "Accelerometer sensor unavailable" - else - if eventqueue.enable_sensor(accelerometer.asensor) < 0 then print "Accelerometer enabling failed" - eventqueue.set_event_rate(accelerometer.asensor, accelerometer.event_rate) - end - end - - private fun enable_magnetic_field - do - magnetic_field.asensor = sensormanager.get_default_sensor(new ASensorType.magnetic_field) - if magnetic_field.asensor.address_is_null then - print "Magnetic Field unavailable" - else - if eventqueue.enable_sensor(magnetic_field.asensor) < 0 then print "Magnetic Field enabling failed" - eventqueue.set_event_rate(magnetic_field.asensor, magnetic_field.event_rate) - end - end - - private fun enable_gyroscope - do - gyroscope.asensor = sensormanager.get_default_sensor(new ASensorType.gyroscope) - if gyroscope.asensor.address_is_null then - print "Gyroscope sensor unavailable" - else - if eventqueue.enable_sensor(gyroscope.asensor) < 0 then print "Gyroscope enabling failed" - eventqueue.set_event_rate(gyroscope.asensor, gyroscope.event_rate) - end - end - - private fun enable_light - do - light.asensor = sensormanager.get_default_sensor(new ASensorType.light) - if light.asensor.address_is_null then - print "Light sensor unavailable" - else - if eventqueue.enable_sensor(light.asensor) < 0 then print "Light enabling failed" - eventqueue.set_event_rate(light.asensor, light.event_rate) - end - end - - private fun enable_proximity - do - proximity.asensor = sensormanager.get_default_sensor(new ASensorType.proximity) - if proximity.asensor.address_is_null then - print "Proximity sensor unavailable" - else - if eventqueue.enable_sensor(proximity.asensor) < 0 then print "Proximity enabling failed" - eventqueue.set_event_rate(light.asensor, light.event_rate) - end - end - - redef fun run - do - enable_sensors - - super - end - - redef fun handle_looper_event(ident, event, data) - do - super - handle_sensor_events(ident) - end - - private fun handle_sensor_events(ident: Int) import extern_input_sensor_accelerometer, extern_input_sensor_magnetic_field, extern_input_sensor_gyroscope, extern_input_sensor_light, extern_input_sensor_proximity, eventqueue `{ - //If a sensor has data, process it - if(ident == LOOPER_ID_USER) { - //maybe add a boolean to the app to know if we want to use Sensor API or ASensorEvent directly ... - ASensorEvent* events = malloc(sizeof(ASensorEvent)*10); - int nbevents; - ASensorEventQueue* queue = App_eventqueue(self); - while((nbevents = ASensorEventQueue_getEvents(queue, events, 10)) > 0) { - int i; - for(i = 0; i < nbevents; i++){ - ASensorEvent event = events[i]; - switch (event.type) { - case ASENSOR_TYPE_ACCELEROMETER: - App_extern_input_sensor_accelerometer(self, &event); - break; - case ASENSOR_TYPE_MAGNETIC_FIELD: - App_extern_input_sensor_magnetic_field(self, &event); - break; - case ASENSOR_TYPE_GYROSCOPE: - App_extern_input_sensor_gyroscope(self, &event); - break; - case ASENSOR_TYPE_LIGHT: - App_extern_input_sensor_light(self, &event); - break; - case ASENSOR_TYPE_PROXIMITY: - App_extern_input_sensor_proximity(self, &event); - break; - } - } - } - } - `} -end diff --git a/lib/gamnit/README.md b/lib/gamnit/README.md deleted file mode 100644 index 68370d96bf..0000000000 --- a/lib/gamnit/README.md +++ /dev/null @@ -1,63 +0,0 @@ -Portable game and multimedia framework for Nit - -_gamnit_ is a modular framework to create portable 2D or 3D apps in Nit. -It is based on the portability framework _app.nit_ and the OpenGL ES 2.0 standard. - -# System configuration - -To compile the _gamnit_ apps packaged with the Nit repository on GNU/Linux you need to install the dev version of a few libraries and some tools. -On Debian 8.2, this command should install everything needed: - -~~~ -apt-get install libgles2-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev inkscape -~~~ - -On Windows 64 bits, using msys2, you can install the required packages with: - -~~~ -pacman -S mingw-w64-x86_64-angleproject-git mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer -~~~ - -While macOS isn't supported, it can create iOS apps. -You need to install and setup Xcode, and you may install the GLSL shader validation tool via `brew`: - -~~~ -brew install glslang -~~~ - -# Services by submodules - -_gamnit_ is modular, different services of the framework are available through different submodules: - -* The main entrypoint `gamnit` provides low-level abstractions over some services of OpenGL ES 2.0, like textures, shaders and programs. - It defines the basic methods to implement in order to obtain a working game: - `App::frame_core` to update the screen and `App::accept_event` to receive user inputs. - -* `flat` provides an easy to use API for 2D games based on sprites. - Clients of this API redefine `App::update` to update the game logic and fill lists of sprites with objects to draw. - - `App::sprites` lists the sprites of the game world, they are drawn form the point of view of the `world_camera`. - This camera can be moved around in the world by updating the x and y of its `position`, - and the zoom can easily be set using `reset_depth(desired_world_units_on_y)` or the `z` of its `position` - - `App::ui_sprites` lists the UI sprites drawn from the point of view of `ui_camera`. - By default, this camera is pixel-perfect with the origin in the top left corner of the window. - However to support screens with different DPI, it is recommended to standardize - the display size using `reset_depth(height_of_reference_display)`. - -* `depth` defines an API for 3D games based on instances of `Actor`. - - This framework is build upon `flat`, see the doc of this submodule first (just above). - As such, clients should still implement `update` with the game logic, and fill `ui_sprites` for UI elements. - - At each frame, elements in the list `actors` are drawn to screen. - Each `Actor` is composed of a `Model` and other information specific to this instance: - position in the world, rotation and scaling. - -* `limit_fps` refines existing services of _gamnit_ to limit the framerate to a customizable value. - -* `keys` provides `app.pressed_keys` keeping track of the currently pressed keys. - -* `model_parsers` provides services to read and parse models from the asset folder. - -* `network` provides a simple communication framework for multiplayer client/server games. diff --git a/lib/gamnit/android19.nit b/lib/gamnit/android19.nit deleted file mode 100644 index 49e4894c1f..0000000000 --- a/lib/gamnit/android19.nit +++ /dev/null @@ -1,56 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Variation using features from Android API 19 -# -# Add support for `TextureAsset::premultiply_alpha = false` on Android. -module android19 is - android_api_min 19 - android_api_target 22 -end - -import android -intrude import display_android -intrude import gamnit_android -intrude import android::load_image - -in "Java" `{ - import android.graphics.Bitmap; - import android.graphics.BitmapFactory; -`} - -redef class TextureAsset - - redef fun load_bitmap(asset_manager, path) - do - var stream = asset_manager.native_assets_manager.open(path.to_java_string) - return new NativeBitmap.from_stream_ex(stream, premultiply_alpha) - end -end - -redef class NativeCByteArray - - # The data was not premultiplied, don't unmultiply it - redef fun unmultiply(w, h) do end -end - -redef class NativeBitmap - - # Load from `input_stream` with optional `premultiply_alpha` - new from_stream_ex(input_stream: NativeInputStream, premultiply_alpha: Bool) in "Java" `{ - BitmapFactory.Options opts = new BitmapFactory.Options(); - opts.inPremultiplied = premultiply_alpha; // API 19 - return BitmapFactory.decodeStream(input_stream, null, opts); - `} -end diff --git a/lib/gamnit/bmfont.nit b/lib/gamnit/bmfont.nit deleted file mode 100644 index d05292231c..0000000000 --- a/lib/gamnit/bmfont.nit +++ /dev/null @@ -1,589 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Parse Angel Code BMFont format and draw text -# -# The BMFont format supports packed textures, varying advance per character and -# even kernings. It can be generated with a number of tools, inluding: -# * BMFont, free software Windows app, http://www.angelcode.com/products/bmfont/ -# * Littera, a web app, http://kvazars.com/littera/ -# -# Format reference: http://www.angelcode.com/products/bmfont/doc/file_format.html -module bmfont - -private import dom - -intrude import font - -# BMFont description, parsed with `Text::parse_bmfont` or loaded as a `BMFontAsset` -# -# This class flattens all the `info` and `common` data. -class BMFont - - # --- - # info part - # - # How the font was generated. - - # Name of the source true type font - var face: Text - - # Size of the source true type font - var size: Float - - # Is the font bold? - var bold: Bool - - # Is the font italic? - var italic: Bool - - # Does the font uses the Unicode charset? - var unicode: Bool - - # Padding for each character - # - # In the format `up,right,down,left` - var padding: String - - # Spacing for each character - # - # In the format `horizontal,vertical`. - var spacing: String - - # --- - # common part - # - # Information common to all characters - - # Distance in pixels between each line of text - var line_height: Float - - # Pixels from the top of the line to the base of the characters - var base: Float - - # Width of the texture - var scale_w: Float - - # Height of the texture - var scale_h: Float - - # Textures - var pages = new Map[String, TextureAsset] - - # Characters in the font - var chars = new Map[Char, BMFontChar] - - # Distance between certain characters - var kernings = new HashMap2[Char, Char, Float] - - # Additional distance between `prev_char` and `char` - fun kerning(prev_char: nullable Char, char: Char): Float - do - if prev_char == null then return 0.0 - return kernings[prev_char, char] or else 0.0 - end - - redef fun to_s do return "<{class_name} {face} at {size} pt, "+ - "{pages.length} pages, {chars.length} chars>" - - # TODO - # - # # From info - # charset - # stretchH - # smooth - # aa - # outline - # - # # From common - # packed - # alphaChnl - # redChnl - # greenChnl - # blueChnl -end - -# Description of a character in a `BMFont` -class BMFontChar - - # Subtexture left coordinate - var x: Float - - # Subtexture top coordinate - var y: Float - - # Subtexture width - var width: Float - - # Subtexture height - var height: Float - - # Drawing offset on X - var xoffset: Float - - # Drawing offset on Y - var yoffset: Float - - # Cursor advance after drawing this character - var xadvance: Float - - # Full texture contaning this character and others - var page: RootTexture - - # TODO Channel where the image is found - #var chnl: Int - - # Subtexture with this character image only - var subtexture: Texture = page.subtexture(x, y, width, height) is lazy, writable - - # Scale to apply to this char only - var scale = 1.0 is writable -end - -redef class Text - - # Parse `self` as an XML BMFont description file - # - # Reports only basic XML format errors, other errors may be ignored or - # cause a crash. - # - # ~~~ - # var desc = """ - # - # - # - # - # - # - # - # - # - # - # - # - # - # - # - # """ - # - # var fnt = desc.parse_bmfont("dir_in_assets").value - # assert fnt.to_s == "" - # assert fnt.line_height == 80.0 - # assert fnt.kernings['A', 'C'] == -1.0 - # assert fnt.chars['A'].page.as(TextureAsset).path == "dir_in_assets/arial.png" - # ~~~ - fun parse_bmfont(dir: String): MaybeError[BMFont, Error] - do - # Parse XML - var xml = to_xml - if xml isa XMLError then - var msg = "XML Parse Error: {xml.message}:{xml.location or else 0}" - return new MaybeError[BMFont, Error](maybe_error=new Error(msg)) - end - - # Basic sanity check - var roots = xml["font"] - if roots.is_empty then - var msg = "Error: the XML document doesn't declare the expected `font` root" - return new MaybeError[BMFont, Error](maybe_error=new Error(msg)) - end - - # Expect the rest of the document to be well formatted - var root = roots.first - - var info = root["info"].first - assert info isa XMLAttrTag - var info_map = info.attributes_to_map - - var common = root["common"].first - assert common isa XMLAttrTag - var common_map = common.attributes_to_map - - var fnt = new BMFont( - info_map["face"], - info_map["size"].to_f, - info_map["bold"] == "1", - info_map["italic"] == "1", - info_map["unicode"] == "1", - info_map["padding"], - info_map["spacing"], - common_map["lineHeight"].to_f, - common_map["base"].to_f, - common_map["scaleW"].to_f, - common_map["scaleH"].to_f - ) - - # Pages / pixel data files - var xml_pages = root["pages"].first - for page in xml_pages["page"] do - if not page isa XMLAttrTag then continue - - var attributes = page.attributes_to_map - var file = dir / attributes["file"] - fnt.pages[attributes["id"]] = new TextureAsset(file) - end - - # Char description - for item in root["chars"].first["char"] do - if not item isa XMLAttrTag then continue - - var attributes = item.attributes_to_map - var id = attributes["id"].to_i.code_point - - var c = new BMFontChar( - attributes["x"].to_f, attributes["y"].to_f, - attributes["width"].to_f, attributes["height"].to_f, - attributes["xoffset"].to_f, attributes["yoffset"].to_f, - attributes["xadvance"].to_f, - fnt.pages[attributes["page"]]) - - fnt.chars[id] = c - end - - # Kerning between two characters - var kernings = root["kernings"] - if kernings.not_empty then - for item in kernings.first["kerning"] do - if not item isa XMLAttrTag then continue - - var attributes = item.attributes_to_map - var first = attributes["first"].to_i.code_point - var second = attributes["second"].to_i.code_point - var amount = attributes["amount"].to_f - fnt.kernings[first, second] = amount - end - end - - return new MaybeError[BMFont, Error](fnt) - end -end - -# BMFont from the assets folder -# -# ~~~ -# redef class App -# var font = new BMFontAsset("arial.fnt") -# var pos: Point3d[Float] = ui_camera.top_left.offset(128.0, -128.0, 0.0) -# var ui_text = new TextSprites(font, pos) -# -# redef fun create_scene -# do -# super -# -# font.load -# assert font.error == null -# -# ui_text.text = "Hello world!" -# end -# end -# ~~~ -class BMFontAsset - super Asset - super Font - - # Font description - # - # Require: `error == null` - fun desc: BMFont - do - # Cached results - var cache = desc_cache - if cache != null then return cache - var error = error - assert error == null else print_error error - - # Load on first access - load - error = self.error - assert error == null else print_error error - - return desc_cache.as(not null) - end - - private var desc_cache: nullable BMFont = null - - # Error at loading - var error: nullable Error = null - - # XML description in the assets folder - private var text_asset = new TextAsset(path) is lateinit - - # Load font description and textures from the assets folder - # - # Sets `error` if an error occurred, otherwise - # the font description can be accessed via `desc`. - fun load - do - var text_asset = text_asset - text_asset.load - var error = text_asset.error - if error != null then - self.error = error - return - end - - var desc = text_asset.to_s - var fnt_or_error = desc.parse_bmfont(path.dirname) - if fnt_or_error.is_error then - self.error = fnt_or_error.error - return - end - - var fnt = fnt_or_error.value - self.desc_cache = fnt - - # Load textures too - for page_name, texture in fnt.pages do - texture.load - - # Move up any texture loading error. - # This algo keeps only the latest error, - # but this isn't a problem on single page fonts. - error = texture.error - if error != null then self.error = error - end - end - - redef fun write_into(text_sprites, text) - do - var dx = 0.0 - var dy = 0.0 - var text_width = 0.0 - var line_sprites = new Array[Sprite] - var height = 0.0 - - # Has the current line height been added to `height`? - var line_height_counted = false - - # TextSprite customization - var max_width = text_sprites.max_width - var max_height = text_sprites.max_height - var scale = text_sprites.scale - - # Font customization - var line_height = desc.line_height * scale - var partial_line_skip = line_height * partial_line_mod.to_f - - # Links data - text_sprites.links.clear - var in_link = false - var link_sprites = new Array[Sprite] - var link_name = "" - - # Loop over all characters - var prev_char = null - var i = -1 - while i < text.length - 1 do - i += 1 - var c = text[i] - - # Special characters - var word_break = false - if c == '\n' then - justify(line_sprites, text_sprites.align, dx) - dy -= line_height - if max_height != null and max_height < -dy + line_height then break - dx = 0.0 - if not line_height_counted then - # Force to account for empty lines - height += line_height - end - line_height_counted = false - prev_char = null - continue - else if c == pld then - dy -= partial_line_skip - height += partial_line_skip - word_break = true - continue - else if c == plu then - dy += partial_line_skip - height -= partial_line_skip # We could keep two heights and return the max - word_break = true - continue - else if c.is_whitespace then - var space_advance = if desc.chars.keys.has(' ') then - desc.chars[' '].xadvance - else if desc.chars.keys.has('f') then - desc.chars['f'].xadvance - else 16.0 - dx += space_advance * scale - word_break = true - else if c == '[' then - # Open link? - if i + 1 < text.length and text[i+1] == '[' then - # Escape if duplicated - i += 1 - else - in_link = true - continue - end - else if c == ']' then - # Close link? - if i + 1 < text.length and text[i+1] == ']' then - # Escape if duplicated - i += 1 - else - # If there's a () use it as link_name - var j = i + 1 - if j < text.length and text[j] == '(' then - var new_name - new_name = "" - loop - j += 1 - if j > text.length then - # No closing ), abort - new_name = null - break - end - - var l = text[j] - if l == ')' then break - new_name += l.to_s - end - if new_name != null then - link_name = new_name - i = j - end - end - - # Register the link for the clients - text_sprites.links[link_name] = link_sprites - - # Prepare next link - in_link = false - link_sprites = new Array[Sprite] - link_name = "" - continue - end - end - - if in_link then link_name += c.to_s - - # End of a word? - if word_break then - # If we care about line width, check for overflow - if max_width != null then - # Calculate the length of the next word - var prev_w = null - var word_len = 0.0 - for wi in [i+1..text.length[ do - var w = text[wi] - - if w == '\n' or w == pld or w == plu or w.is_whitespace or (in_link and w == ']') then break - - if not desc.chars.keys.has(w) then - var rc = replacement_char - if rc == null then continue - w = rc - end - - word_len += advance(prev_w, w) * scale - prev_w = w - end - - # Would the line be too long? - if dx + word_len > max_width then - justify(line_sprites, text_sprites.align, dx) - dy -= line_height - if max_height != null and max_height < -dy + line_height then break - dx = 0.0 - line_height_counted = false - - if not text_sprites.wrap then - # Cut short, skip everything until the next new line - while c != '\n' and i < text.length - 1 do - i += 1 - c = text[i] - end - end - end - end - - prev_char = null - continue - end - - # Replace or skip unknown characters - if not desc.chars.keys.has(c) then - var rc = replacement_char - if rc == null then continue - c = rc - end - - var char_info = desc.chars[c] - var advance = char_info.xadvance - var kerning = desc.kerning(prev_char, c) - - var x = dx + (char_info.width/2.0 + char_info.xoffset + kerning) * scale - var y = dy - (char_info.height/2.0 + char_info.yoffset) * scale - var pos = text_sprites.anchor.offset(x, y, 0.0) - var s = new Sprite(char_info.subtexture, pos) - s.scale = scale * char_info.scale - text_sprites.sprites.add s - line_sprites.add s - if in_link then link_sprites.add s - - dx += (advance + kerning) * scale - prev_char = c - - text_width = text_width.max(dx) - - if not line_height_counted then - # Increase `height` only once per line iff there's a caracter - line_height_counted = true - height += line_height - end - end - - justify(line_sprites, text_sprites.align, dx) - - # valign - if text_sprites.valign != 0.0 then - var d = (-dy+line_height) * text_sprites.valign - for s in text_sprites.sprites do s.center.y += d - end - - text_sprites.width = text_width.max(dx) - text_sprites.height = height - end - - # Character replacing other characters missing from the font - private var replacement_char: nullable Char is lazy do - for c in "�?".chars do - if desc.chars.keys.has(c) then return c - end - return null - end - - private fun advance(prev_char: nullable Char, char: Char): Float - do - var char_info = desc.chars[char] - var kerning = desc.kerning(prev_char, char) - return char_info.xadvance + kerning - end - - private fun justify(line_sprites: Array[Sprite], align: Float, line_width: Float) - do - var dx = -line_width*align - for s in line_sprites do s.center.x += dx - line_sprites.clear - end -end diff --git a/lib/gamnit/camera_control.nit b/lib/gamnit/camera_control.nit deleted file mode 100644 index af5bedd60f..0000000000 --- a/lib/gamnit/camera_control.nit +++ /dev/null @@ -1,51 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Simple camera control for user, as the method `accept_scroll_and_zoom` -module camera_control - -import gamnit -import cameras - -import camera_control_linux is conditional(linux) -import camera_control_android is conditional(android) - -redef class EulerCamera - # Zoom and scroll this camera from user input - # - # Scrolling is accomplished by moving the camera on the XY plane and - # zooming by moving it on the Z axis. - # - # This method has distinct implementations per platform. - # On desktop computers, the mouse wheel changes the zoom level, and - # holding down the middle mouse button scrolls the camera. - # On Android, a two finger pinch and slide gesture zoom and scroll. - # - # Returns `true` if the event is used. - # - # Should be called from `App::accept_event` before accepting pointer events: - # - # ~~~nitish - # redef class App - # redef fun accept_event(event) - # do - # if world_camera.accept_scroll_and_zoom(event) then return true - # - # # Handle other events... - # return false - # end - # end - # ~~~ - fun accept_scroll_and_zoom(event: InputEvent): Bool do return false -end diff --git a/lib/gamnit/camera_control_android.nit b/lib/gamnit/camera_control_android.nit deleted file mode 100644 index 6461c29fb1..0000000000 --- a/lib/gamnit/camera_control_android.nit +++ /dev/null @@ -1,92 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Two fingers camera manipulation, pinch to zoom and slide to scroll -module camera_control_android - -import android -import camera_control - -redef class EulerCamera - # Smoothened history of pointers in the current motion event - private var last_motion_pointers = new HashMap[Int, Point[Float]] is lazy - - # Start time of the current motion event - private var last_motion_start: Int = -1 - - redef fun accept_scroll_and_zoom(event) - do - if not event isa AndroidMotionEvent then return false - - if event.pointers.length < 2 then - # Intercept leftovers of the last motion - return event.down_time == last_motion_start - end - - # Collect active pointer and their world position - var new_motion_pointers = new HashMap[Int, Point[Float]] - var ids = new Array[Int] - for pointer in event.pointers do - var id = pointer.pointer_id - ids.add id - new_motion_pointers[id] = camera_to_world(pointer.x, pointer.y) - end - - var last_motion_pointers = last_motion_pointers - if last_motion_start == event.down_time and - last_motion_pointers.keys.has(ids[0]) and last_motion_pointers.keys.has(ids[1]) then - # Continued motion event - - # Get new and old position for 2 fingers - var new_motion_a = new_motion_pointers[ids[0]] - var new_motion_b = new_motion_pointers[ids[1]] - var prev_pos_a = last_motion_pointers[ids[0]] - var prev_pos_b = last_motion_pointers[ids[1]] - - # Move camera - var prev_middle_pos = prev_pos_a.lerp(prev_pos_b, 0.5) - var new_middle_pos = new_motion_a.lerp(new_motion_b, 0.5) - position.x -= new_middle_pos.x - prev_middle_pos.x - position.y -= new_middle_pos.y - prev_middle_pos.y - - # Zoom camera - var prev_dist = prev_pos_a.dist(prev_pos_b) - var new_dist = new_motion_a.dist(new_motion_b) - - position.z = prev_dist * position.z / new_dist - else - # Prepare for a new motion event - last_motion_pointers.clear - last_motion_start = event.down_time - end - - # Keep a smooth history - for i in [0..1] do - if last_motion_pointers.keys.has(ids[i]) then - last_motion_pointers[ids[i]] = last_motion_pointers[ids[i]]*0.5 + - new_motion_pointers[ids[i]]*0.5 - else last_motion_pointers[ids[i]] = new_motion_pointers[ids[i]] - end - - return true - end -end - -redef class Point[N] - private fun *(scalar: Numeric): Point[N] - do return new Point[N](x.mul(scalar), y.mul(scalar)) - - private fun +(other: Point[N]): Point[N] - do return new Point[N](x.add(other.x), y.add(other.y)) -end diff --git a/lib/gamnit/camera_control_linux.nit b/lib/gamnit/camera_control_linux.nit deleted file mode 100644 index 2aa5d484e2..0000000000 --- a/lib/gamnit/camera_control_linux.nit +++ /dev/null @@ -1,64 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Mouse wheel and middle mouse button to control camera -module camera_control_linux - -import linux -import camera_control - -redef class EulerCamera - - # Zoom factor, default at 1.2, higher means more reactive zoom effect - var camera_zoom_mod = 1.2 is writable - - # Scroll trigger button mask from SDL2 (1: left, 2: middle, 4: right) - # - # Set to 0 to deactivate the scrolling feature. - var camera_pan_mask = 2 is writable - - redef fun accept_scroll_and_zoom(event) - do - # Zoom - if event isa GamnitMouseWheelEvent then - var dy = event.y - var mod = camera_zoom_mod - if dy > 0.0 then - # Zoom in when moving the wheel up - mod = 1.0/mod - else dy = -dy - - position.z *= dy * mod - return true - end - - # Scroll - var but_mask = camera_pan_mask - if but_mask != 0 and event isa GamnitPointerEvent then - var native = event.native - if native isa SDLMouseMotionEvent and native.state & but_mask == but_mask then - var dx = native.xrel.to_f - var dy = native.yrel.to_f - - var world_height = field_of_view_y.sin * position.z - var mod = app.display.as(not null).height.to_f / world_height - position.x -= dx / mod - position.y += dy / mod # Y is inverted between the input and output - return true - end - end - - return false - end -end diff --git a/lib/gamnit/cameras.nit b/lib/gamnit/cameras.nit deleted file mode 100644 index 33aac41302..0000000000 --- a/lib/gamnit/cameras.nit +++ /dev/null @@ -1,329 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Camera services producing Model-View-Projection matrices -module cameras - -import geometry -import matrix::projection - -import display - -# A camera with a point of view on the world -abstract class Camera - - # TODO make this a physical object in the world - - # The host `GamnitDisplay` - var display: GamnitDisplay - - # Position of this camera in world space - var position = new Point3d[Float](0.0, 0.0, 0.0) - - # The Model-View-Projection matrix created by this camera - # - # This method should only be called by the display at the moment - # of drawing to the screen. - fun mvp_matrix: Matrix is abstract -end - -# Simple camera with perspective oriented with Euler angles (`pitch, yaw, roll`) -class EulerCamera - super Camera - - # Rotation around the X axis (looking down or up) - var pitch = 0.0 is writable - - # Rotation around the Y axis (looking left or right) - var yaw = 0.0 is writable - - # Rotation around the Z axis - var roll = 0.0 is writable - - # Field of view in radians on the vertical axis of the screen - # - # Default at `0.8` - var field_of_view_y = 0.8 is writable - - # Clipping wall near the camera, in world dimensions - # - # Default at `0.01`. - var near = 0.01 is writable - - # Clipping wall the farthest of the camera, in world dimensions - # - # Default at `10000.0` but this one should be adapted to each context. - var far = 10000.0 is writable - - # Look around sensitivity, used by `turn` - var sensitivity = 0.005 is writable - - # Apply a mouse movement (or similar) to the camera - # - # `dx` and `dy` are relative mouse movements in pixels. - fun turn(dx, dy: Float) - do - # Moving on x, turn around the y axis - yaw -= dx*sensitivity - pitch -= dy*sensitivity - - # Protect rotation around then x axis for not falling on your back - pitch = pitch.min(pi/2.0) - pitch = pitch.max(-pi/2.0) - end - - # Move the camera considering the current orientation - fun move(dx, dy, dz: Float) - do - # +dz move forward - position.x -= yaw.sin*dz - position.z -= yaw.cos*dz - - # +dx strafe to the right - position.x += yaw.cos*dx - position.z -= yaw.sin*dx - - # +dz move towards the sky - position.y += dy - end - - # Aim the camera at `x, y, z` - fun look_at(x, y, z: Float) - do - var dx = position.x - var dy = position.y - var dz = position.z - - yaw = atan2(dx, dz) - pitch = atan2(-dy, dz) - end - - # Rotation matrix produced by the current rotation of the camera - protected fun rotation_matrix: Matrix - do - var view = new Matrix.identity(4) - - # Rotate the camera, first by looking left or right, then up or down - view.rotate(yaw, 0.0, 1.0, 0.0) - view.rotate(pitch, 1.0, 0.0, 0.0) - view.rotate(roll, 0.0, 0.0, 1.0) - - return view - end - - redef fun mvp_matrix - do - var view = new Matrix.identity(4) - - # Translate the world away from the camera - view.translate(-position.x, -position.y, -position.z) - - # Rotate the camera, first by looking left or right, then up or down - view = view * rotation_matrix - - # Use a projection matrix with a depth - var projection = new Matrix.perspective(field_of_view_y, - display.aspect_ratio, near, far) - - return view * projection - end - - # Reset the camera position so that `height` world units are visible on the y axis at z=0 - # - # By default, `height` is set to `display.height`. - # - # After the reset, the camera sits on the Z axis and rotation values are reset to 0. - # The X axis is horizontal on the screen and the Y axis is vertical. - # Higher values on the Z axis are closer to the camera. - fun reset_height(height: nullable Float) - do - if height == null then height = display.height.to_f - - var opp = height / 2.0 - var angle = field_of_view_y / 2.0 - var adj = opp / angle.tan - - position.x = 0.0 - position.y = 0.0 - position.z = adj - - pitch = 0.0 - yaw = 0.0 - roll = 0.0 - end - - # Convert the position `x, y` on screen, to world coordinates on the plane at `target_z` - # - # `target_z` defaults to `0.0` and specifies the Z coordinates of the plane - # on which to project the screen position `x, y`. - # - # This method assumes that the camera is looking along the Z axis towards higher values. - # Using it in a different orientation can be useful, but won't result in valid - # world coordinates. - fun camera_to_world(x, y: Numeric, target_z: nullable Float): Point[Float] - do - # TODO, this method could be tweaked to support projecting the 2D point, - # on the near plane (x,y) onto a given distance no matter to orientation - # of the camera. - - target_z = target_z or else 0.0 - - # Convert from pixel units / window resolution to - # units on the near clipping wall to - # units on the target wall at Z = 0 - var near_height = (field_of_view_y/2.0).tan * near - var cross_screen_to_near = near_height / (display.height.to_f/2.0) - var cross_near_to_target = (position.z - target_z) / near - var mod = cross_screen_to_near * cross_near_to_target - - var wx = position.x + (x.to_f-display.width.to_f/2.0) * mod - var wy = position.y - (y.to_f-display.height.to_f/2.0) * mod - return new Point[Float](wx, wy) - end -end - -# Orthogonal camera to draw UI objects with services to work with screens of different sizes -# -# X axis: left to right of the screen, from `position.x` to `position.x + width` -# Y axis: top to bottom of the screen, from `position.y` to `position.y + height` -# Z axis: far to near the camera (usually when values are higher), from `far` to `near` -class UICamera - super Camera - - # Clipping wall near the camera, defaults to 100.0 - var near = 100.0 is writable - - # Clipping wall the farthest of the camera, defaults to -100.0 - var far: Float = -100.0 is writable - - # Width in world units, calculated from `height` and the screen aspect ratio - fun width: Float do return height * display.aspect_ratio - - # Height in world units, defaults to 1080.0 - # - # Set this value using `reset_height`. - var height = 1080.0 - - # Reset the camera position so that `height` world units are visible on the Y axis - # - # This can be used to set standardized UI units independently from the screen resolution. - fun reset_height(height: nullable Float) - do - if height == null then height = display.height.to_f - self.height = height - end - - # Convert the position `x, y` on screen, to UI coordinates - fun camera_to_ui(x, y: Numeric): Point3d[Float] - do - # FIXME this kind of method should use something like a canvas - # instead of being hard coded on the display. - - var wx = x.to_f * width / display.width.to_f - position.x - var wy = y.to_f * height / display.height.to_f - position.y - return new Point3d[Float](wx, -wy, 0.0) - end - - # Center of the screen, from the point of view of the camera, at z = 0 - var center: IPoint3d[Float] = new CameraAnchor(self, 0.5, -0.5) - - # Center of the top of the screen, at z = 0 - var top: IPoint3d[Float] = new CameraAnchor(self, 0.5, 0.0) - - # Center of the bottom of the screen, at z = 0 - var bottom: IPoint3d[Float] = new CameraAnchor(self, 0.5, -1.0) - - # Center of the left border of the screen, at z = 0 - var left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -0.5) - - # Center of the right border of the screen, at z = 0 - var right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -0.5) - - # Top left corner of the screen, at z = 0 - var top_left: IPoint3d[Float] = new CameraAnchor(self, 0.0, 0.0) - - # Top right corner of the screen, at z = 0 - var top_right: IPoint3d[Float] = new CameraAnchor(self, 1.0, 0.0) - - # Bottom left corner of the screen, at z = 0 - var bottom_left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -1.0) - - # Bottom right corner of the screen, at z = 0 - var bottom_right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -1.0) - - redef fun mvp_matrix - do - var view = new Matrix.identity(4) - - # Translate the world away from the camera - view.translate(-position.x, -position.y, -position.z) - - # Use a projection matrix with a depth - var projection = new Matrix.orthogonal(0.0, width, -height, 0.0, near, far) - - return view * projection - end -end - -# Immutable relative anchors for reference points on `camera` -private class CameraAnchor - super IPoint3d[Float] - - # Reference camera - var camera: UICamera - - # Reference position, the top left of the screen - var ref: Point3d[Float] = camera.position is lazy - - # X position as proportion of the screen width - var relative_x: Float - - # Y position as proportion of the screen height - var relative_y: Float - - redef fun x do return ref.x + relative_x*camera.width - redef fun y do return ref.y + relative_y*camera.height - redef fun z do return ref.z - - redef fun offset(x, y, z) do return new OffsetPoint3d(self, x.to_f, y.to_f, z.to_f) -end - -# Position relative to another point or usually a `CameraAnchor` -private class OffsetPoint3d - super Point3d[Float] - - autoinit ref, offset_x, offset_y, offset_z - - # Reference point to which the offsets are applied - var ref: IPoint3d[Float] - - # Difference on the X axis - var offset_x: Float - - # Difference on the X axis - var offset_y: Float - - # Difference on the X axis - var offset_z: Float - - redef fun x do return ref.x + offset_x - redef fun y do return ref.y + offset_y - redef fun z do return ref.z + offset_z - - redef fun x=(value) do if value != null then offset_x += value - x - redef fun y=(value) do if value != null then offset_y += value - y - redef fun z=(value) do if value != null then offset_z += value - z - - redef fun offset(x, y, z) do return new OffsetPoint3d(self, x.to_f, y.to_f, z.to_f) -end diff --git a/lib/gamnit/cameras_cache.nit b/lib/gamnit/cameras_cache.nit deleted file mode 100644 index 852ac9ba14..0000000000 --- a/lib/gamnit/cameras_cache.nit +++ /dev/null @@ -1,118 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Cache the `Matrix` produced by `Camera::mvp_matrix` -module cameras_cache - -import cameras - -redef class Camera - private var mvp_matrix_cache: nullable Matrix = null - - private var position_cache = new Point3d[Float](0.0, 0.0, 0.0) - - # Has `position` changed from `position_cache`? Update the cache at the same time - private fun check_position_changed: Bool - do - if position.x != position_cache.x or - position.y != position_cache.y or - position.z != position_cache.z then - position_cache.x = position.x - position_cache.y = position.y - position_cache.z = position.z - return true - end - return false - end -end - -redef class EulerCamera - # The returned matrix must not be modified as it is cached. - redef fun mvp_matrix - do - var m = mvp_matrix_cache - if m == null or check_position_changed then - m = super - mvp_matrix_cache = m - end - return m - end - - redef fun pitch=(value) - do - super - mvp_matrix_cache = null - end - - redef fun yaw=(value) - do - super - mvp_matrix_cache = null - end - - redef fun roll=(value) - do - super - mvp_matrix_cache = null - end - - redef fun field_of_view_y=(value) - do - super - mvp_matrix_cache = null - end - - redef fun near=(value) - do - super - mvp_matrix_cache = null - end - - redef fun far=(value) - do - super - mvp_matrix_cache = null - end -end - -redef class UICamera - # The returned matrix must not be modified as it is cached. - redef fun mvp_matrix - do - var m = mvp_matrix_cache - if m == null or check_position_changed then - m = super - mvp_matrix_cache = m - end - return m - end - - redef fun near=(value) - do - super - mvp_matrix_cache = null - end - - redef fun far=(value) - do - super - mvp_matrix_cache = null - end - - redef fun height=(value) - do - super - mvp_matrix_cache = null - end -end diff --git a/lib/gamnit/depth/README.md b/lib/gamnit/depth/README.md deleted file mode 100644 index 6350c2f676..0000000000 --- a/lib/gamnit/depth/README.md +++ /dev/null @@ -1,26 +0,0 @@ -gamnit depth, a framework to create portable 3D games in Nit. - -This framework is based on a list of `Actor`, in `app::actors`, which are drawn to the screen at each frame. Each actor is composed of a `Model` and other information specific to this instance: position in the world, rotation and scaling. Each `Model` is either a composite of models or it is composed of a `Mesh` defining its geometry and a `Material` defining how to draw the model. `Material` can be subclassed to use custom shaders. - -# Assets - -gamnit depth is built upon to portability framework _app.nit_ which provides a simple system to package and use asset files. Every file in the `assets/` folder at the root of a projet is packaged with the program at compilation for mobiles devices. These files can be loaded during execution using the many subclasses of `Asset`. - -~~~ -var my_texture = new Texture("textures/texture.png") -var my_sound = new Sound("sounds/my_sound.mp3") -var my_model = new Model("models/my_model.obj") -var my_text = new TextAsset("simple_text_file.txt") -~~~ - -# In relation to gamnit _flat_ - -gamnit flat is a framework for 2D games based on simple sprites and two drawing contexts: UI and world. - -The UI context works well with _depth_. It should be used to display simple 2D UI elements and to create menus with ease. - -However, the world context is difficultly compatible with _depth_. Only the `world_camera` from the _flat_ framework is used to display the world objects in the _depth_ framework as well. - -# Examples - -Take a look at the `model_viewer` project for a basic usage of the _depth_ framework combined with the _flat_ framework for the UI. Becaus of its simple goal, this projet has no game logic and only manipulates graphical objects. This projet is located in the `contrib` folder of the Nit repository. diff --git a/lib/gamnit/depth/cardboard.nit b/lib/gamnit/depth/cardboard.nit deleted file mode 100644 index 35c0f7629f..0000000000 --- a/lib/gamnit/depth/cardboard.nit +++ /dev/null @@ -1,108 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Update the orientation of `world_camera` at each frame using the head position given by `android::cardboard` -# -# This module is Android specific. -module cardboard - -import ::android::cardboard - -import depth -intrude import cameras - -redef class EulerCamera - # Do not use `yaw` and `pitch`, the value will instead originate from the Cardboard API - redef var rotation_matrix = new Matrix.identity(4) - - # Get the angle value from the `rotation_matrix` - redef fun pitch - do - var a = rotation_matrix[0, 1] - var b = rotation_matrix[1, 1] - return -atan2(a, b) - end - - # Get the angle value from the `rotation_matrix` - redef fun yaw - do - var a = rotation_matrix[2, 0] - var b = rotation_matrix[2, 2] - return -atan2(a, b) - end -end - -redef class App - - # Cardboard's head tacker instance - private var head_tracker: nullable NativeHeadTracker = null - - # Rotation matrix read from `head_tracker`, reusing the same structure as a buffer - private var java_rotation_matrix = new JavaFloatArray(16) is lazy - - # Initialize and set `head_tracker` - fun initialize_head_tracker - do - # Initialize the Cardboard head orientation tracker service - var head_tracker = new NativeHeadTracker(app.native_activity) - head_tracker.neck_model_enabled = true - head_tracker.start_tracking - self.head_tracker = head_tracker - - # Set a wide field of view - world_camera.field_of_view_y = 1.0 - end - - # Read the rotation matrix from Cardboard and update `world_camera` - private fun update_from_head_tracker - do - var head_tracker = head_tracker - if head_tracker == null then return - - head_tracker.last_head_view(java_rotation_matrix, 0) - - # Copy values from the Java array to our matrix - for y in [0..4[ do - for x in [0..4[ do - world_camera.rotation_matrix[y, x] = java_rotation_matrix[y*4+x] - end - end - end - - redef fun create_scene - do - super - initialize_head_tracker - end - - redef fun update(dt) - do - super - update_from_head_tracker - end - - redef fun pause - do - super - var tracker = head_tracker - if tracker != null then tracker.stop_tracking - end - - redef fun resume - do - super - var tracker = head_tracker - if tracker != null then tracker.start_tracking - end -end diff --git a/lib/gamnit/depth/depth.nit b/lib/gamnit/depth/depth.nit deleted file mode 100644 index a7864f9b67..0000000000 --- a/lib/gamnit/depth/depth.nit +++ /dev/null @@ -1,101 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Framework for 3D games in Nit -module depth - -import flat -intrude import more_materials -import more_models -import model_dimensions -import particles -import selection -import shadow - -redef class App - - redef fun create_scene - do - # Move the camera back a bit - world_camera.reset_height(10.0) - world_camera.near = 0.1 - - super - end - - redef fun create_gamnit - do - super - - # Cull the invisible triangles in the back of the geometries - glCullFace gl_BACK - - # Prepare programs - var programs = [blinn_phong_program, normals_program, explosion_program, smoke_program, static_program, selection_program: GamnitProgram] - for program in programs do - program.compile_and_link - var gamnit_error = program.error - assert gamnit_error == null else print_error gamnit_error - end - end - - redef fun frame_core_draw(display) do frame_core_depth display - - # Draw all elements of `actors` and then call `frame_core_flat` - protected fun frame_core_depth(display: GamnitDisplay) - do - frame_core_depth_clock.lapse - - # Compute shadows - if light isa LightCastingShadows then - frame_core_shadow_prep display - perfs["gamnit depth shadows"].add frame_core_depth_clock.lapse - end - - glViewport(0, 0, display.width, display.height) - frame_core_dynamic_resolution_before display - perfs["gamnit depth dynres"].add frame_core_depth_clock.lapse - - for actor in actors do - for leaf in actor.model.leaves do - leaf.material.draw(actor, leaf, app.world_camera) - assert glGetError == gl_NO_ERROR else print_error "Gamnit error on material {leaf.material.class_name}" - end - end - perfs["gamnit depth actors"].add frame_core_depth_clock.lapse - - frame_core_world_sprites display - perfs["gamnit depth sprites"].add frame_core_depth_clock.lapse - - # Toggle writing to the depth buffer for particles effects - glDepthMask false - for system in particle_systems do - system.draw - assert glGetError == gl_NO_ERROR else print_error "OpenGL error in {system}" - end - glDepthMask true - perfs["gamnit depth particles"].add frame_core_depth_clock.lapse - - # Stop using the dynamic resolution before drawing UI sprites - frame_core_dynamic_resolution_after display - - frame_core_ui_sprites display - perfs["gamnit depth ui_sprites"].add frame_core_depth_clock.lapse - - # Debug, show the light point of view - #frame_core_shadow_debug display - end - - private var frame_core_depth_clock = new Clock -end diff --git a/lib/gamnit/depth/depth_core.nit b/lib/gamnit/depth/depth_core.nit deleted file mode 100644 index e7e42deef7..0000000000 --- a/lib/gamnit/depth/depth_core.nit +++ /dev/null @@ -1,241 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Base entities of the depth 3D game framework -module depth_core - -import gamnit::flat_core - -# Visible 3D entity in the game world -# -# Similar to `gamnit::Sprite` which is in 2D. -# -# Each actor associates a `model` to the position `center`. -# The appearance is modified by `rotation`, `scale` and `alpha`, -# as well as the attributes of `model` itself. -# -# ~~~ -# import gamnit::depth -# -# # Load model from the assets folder -# var model = new Model("path/in/assets.obj") -# -# # Create and configure an actor -# var actor = new Actor(model, new Point3d[Float](0.0, 0.0, 0.0)) -# actor.scale = 2.0 -# -# # Add to the visible game world -# app.actors.add actor -# ~~~ -class Actor - - # Model used to draw this actor - var model: Model - - # Position of this sprite in world coordinates - var center: Point3d[Float] is writable - - # Rotation around the X axis (+ looks up, - looks down) - # - # Positive values look up, and negative look down. - # - # All actor rotations follow the right hand rule. - # The default orientation of the model should look towards -Z. - var pitch = 0.0 is writable - - # Rotation around the Y axis (+ turns left, - turns right) - # - # Positive values turn `self` to the left, and negative values to the right. - # - # All actor rotations follow the right hand rule. - # The default orientation of the model should look towards -Z. - var yaw = 0.0 is writable - - # Rotation around the Z axis (looking to -Z: + turns counterclockwise, - clockwise) - # - # From the default camera point of view, looking down on the Z axis, - # positive values turn `self` counterclockwise, and negative values clockwise. - # - # All actor rotations follow the right hand rule. - # The default orientation of the model should look towards -Z. - var roll = 0.0 is writable - - # Scale applied to the model - var scale = 1.0 is writable - - # Transparency applied to the model on draw - # - # This value may be ignored by some materials. - # Non-opaque values may result in artifacts as there is no specialized - # support for transparent models and the depth buffer. - var alpha = 1.0 is writable -end - -# 3D model composed of `Mesh` and `Material`, loaded from the assets folder by default -# -# Instances can be created at any time and must be loaded after or at the end of `create_scene`. -# If loading fails, the model is replaced by `placeholder_model`. -# -# ~~~ -# import gamnit::depth -# -# var model = new Model("path/in/assets.obj") -# model.load -# ~~~ -# -# The most simple model is `LeafModel`, composed of a single `Mesh` and `Material`. -# It can be easily created programmatically to display simple geometries. -# Whereas `CompositeModel` is composed of one or many `LeafModel` and is usually -# loaded from the assets folder as a `ModelAsset`. -# Instances of `ModelAsset` must be in the format OBJ and MAT, -# and their texture in PNG or JPG. -abstract class Model - - # Load this model in memory - fun load do end - - # Errors raised at loading - var errors = new Array[Error] - - # All `LeafModel` composing this model - # - # Usually, there is one `LeafModel` per material. - # At each frame, each material is asked to draw all the live `LeafModel` instaces. - fun leaves: Array[LeafModel] is abstract - - # Sub-models with names, usually declared in the asset file - var named_parts = new Map[Text, Model] -end - -# Model composed of one or many other `LeafModel` -class CompositeModel - super Model - - redef var leaves = new Array[LeafModel] -end - -# Basic model with a single `mesh` and `material` -# -# Only leaves are actually drawn by the `material`. -class LeafModel - super Model - - # Mesh forming this model - var mesh: Mesh - - # Material applied on this model - var material: Material - - redef var leaves = [self] -end - -# Material for models, or how to draw the model -# -# To create a simple basic blueish material, use `new Material`. -# -# Each class of material is associated to a `GLProgram` and its GPU shaders. -# The simple material `SmoothMaterial` allows to set an ambient, diffuse and specular color. -# To which `TextureMaterial` adds three textures, for each kind of light. -# The `NormalsMaterial` may be useful for debugging, it show the orientation of -# the normal vectors as colors. -# -# ~~~ -# import gamnit::depth -# -# var blueish_material = new Material -# var redish_material = new SmoothMaterial([0.3, 0.0, 0.0], -# [0.6, 0.0, 0.0], -# [1.0, 1.0, 1.0]) -# var normals_material = new NormalsMaterial -# ~~~ -abstract class Material - - # Draw a `model` from `actor` - # - # This method should be refined by subclasses as the default implementation is a no-op. - # - # This method is called on many materials for many `actor` and `model` at each frame. - # It is expected to use a `GLProgram` and call an equivalent to `glDrawArrays`. - # However, it should not call `glClear` nor `GamnitDisplay::flip`. - fun draw(actor: Actor, model: LeafModel, camera: Camera) do end -end - -# Mesh with all geometry data -# -# May be created via `Plane`, `Cube` or `UVSphere`, -# or loaded from the assets folder indirectly with a `Model`. -# -# ~~~ -# import gamnit::depth -# -# var plane = new Plane -# var cube = new Cube -# var sphere = new UVSphere(1.0, 32, 16) -# ~~~ -class Mesh - - # Number for vertices - fun n_vertices: Int do return vertices.length / 3 - - # Vertices relative coordinates, 3 floats per vertex - var vertices = new Array[Float] is lazy, writable - - # Indices to draw triangles with `glDrawElements` - # - # If `not_empty`, use `glDrawElements`, otherwise use `glDrawArrays`. - var indices = new Array[Int] is lazy, writable - - private var indices_c = new CUInt16Array.from(indices) is lazy, writable - - # Normals, 3 floats per vertex - var normals = new Array[Float] is lazy, writable - - # Coordinates on the texture, 2 floats per vertex - var texture_coords = new Array[Float] is lazy, writable - - # `GLDrawMode` used to display this mesh, defaults to `gl_TRIANGLES` - fun draw_mode: GLDrawMode do return gl_TRIANGLES -end - -# Source of light -abstract class Light - - # Center of this light source in world coordinates - var position = new Point3d[Float](0.0, 1000.0, 0.0) -end - -# Basic light projected from a single point -class PointLight - super Light -end - -# Source of light casting shadows -abstract class LightCastingShadows - super Light - - # View from the camera, used for shadow mapping, implemented by sub-classes - fun camera: Camera is abstract -end - -redef class App - - # Live actors to be drawn on screen - var actors = new Array[Actor] - - # Single light of the scene - var light: Light = new PointLight is writable - - # TODO move `actors & light` to a scene object - # TODO support more than 1 light -end diff --git a/lib/gamnit/depth/model_dimensions.nit b/lib/gamnit/depth/model_dimensions.nit deleted file mode 100644 index 1e6a8ba30e..0000000000 --- a/lib/gamnit/depth/model_dimensions.nit +++ /dev/null @@ -1,109 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Dimensions related services for `Model` and `Mesh` -module model_dimensions - -import depth_core - -redef class Model - - # Dimensions of the bounding box containing all vertices - var dimensions = new Point3d[Float](max.x-min.x, max.y-min.y, max.z-min.z) is lazy, writable - - # Center coordinates of all the vertices - var center = new Point3d[Float]((min.x+max.x)/2.0, (min.y+max.y)/2.0, (min.z+max.z)/2.0) is lazy, writable - - # Minimum coordinates of all vertices on each axes - # - # This is a corner of the bounding box. - var min: Point3d[Float] is lazy do - var mx = inf - var my = inf - var mz = inf - for leaf in leaves do - var lm = leaf.mesh.min - mx = mx.min(lm.x) - my = my.min(lm.y) - mz = mz.min(lm.z) - end - return new Point3d[Float](mx, my, mz) - end - - # Maximum coordinates of all vertices on each axes - # - # This is a corner of the bounding box. - var max: Point3d[Float] is lazy do - var mx = -inf - var my = -inf - var mz = -inf - for leaf in leaves do - var lm = leaf.mesh.max - mx = mx.max(lm.x) - my = my.max(lm.y) - mz = mz.max(lm.z) - end - return new Point3d[Float](mx, my, mz) - end -end - -redef class LeafModel - - redef fun dimensions do return mesh.dimensions - - redef fun center do return mesh.center -end - -redef class Mesh - - # Dimensions of the bounding box containing all vertices - var dimensions = new Point3d[Float](max.x-min.x, max.y-min.y, max.z-min.z) is lazy, writable - - # Center coordinates of all the vertices - var center = new Point3d[Float]((min.x+max.x)/2.0, (min.y+max.y)/2.0, (min.z+max.z)/2.0) is lazy, writable - - # Minimum coordinates of all vertices on each axes - # - # This is a corner of the bounding box. - var min: Point3d[Float] is lazy do - var mx = inf - var my = inf - var mz = inf - var i = 0 - while i < vertices.length do - mx = mx.min(vertices[i]) - my = my.min(vertices[i+1]) - mz = mz.min(vertices[i+2]) - i += 3 - end - return new Point3d[Float](mx, my, mz) - end - - # Maximum coordinates of all vertices on each axes - # - # This is a corner of the bounding box. - var max: Point3d[Float] is lazy do - var mx = -inf - var my = -inf - var mz = -inf - var i = 0 - while i < vertices.length do - mx = mx.max(vertices[i]) - my = my.max(vertices[i+1]) - mz = mz.max(vertices[i+2]) - i += 3 - end - return new Point3d[Float](mx, my, mz) - end -end diff --git a/lib/gamnit/depth/more_lights.nit b/lib/gamnit/depth/more_lights.nit deleted file mode 100644 index 3512f27690..0000000000 --- a/lib/gamnit/depth/more_lights.nit +++ /dev/null @@ -1,110 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# More implementations of `Light` -module more_lights - -import depth_core -intrude import cameras_cache - -# TODO -#class PointLight -#class Spotlight - -# Sun-like light projecting parallel rays -class ParallelLight - super LightCastingShadows - - # Angle to the light source, around the X axis - var pitch = 0.0 is writable - - # Angle to the light source, around the Y axis - var yaw = 0.0 is writable - - # Depth texture width, in world coordinates - var width = 100.0 is writable - - # Depth texture height, in world coordinates - var height = 100.0 is writable - - # Viewport depth, centered on `app.world_camera` - var depth = 500.0 is writable - - redef var camera = new ParallelLightCamera(app.display.as(not null), self) is lazy -end - -private class ParallelLightCamera - super Camera - - var light: ParallelLight - - # Rotation matrix produced by the current rotation of the camera - fun rotation_matrix: Matrix - do - var view = new Matrix.identity(4) - view.rotate(light.yaw, 0.0, 1.0, 0.0) - view.rotate(light.pitch, 1.0, 0.0, 0.0) - return view - end - - private fun create_mvp_matrix: Matrix - do - var near = -light.depth/2.0 - var far = light.depth/2.0 - - var view = new Matrix.identity(4) - view.translate(-position.x, -position.y, -position.z) - view = view * rotation_matrix - var projection = new Matrix.orthogonal(-light.width/2.0, light.width/2.0, - -light.height/2.0, light.height/2.0, - near, far) - return view * projection - end - - redef fun mvp_matrix - do - var m = mvp_matrix_cache - if m == null or check_position_changed then - m = create_mvp_matrix - mvp_matrix_cache = m - end - return m - end - - private var pitch_cache = 0.0 - private var yaw_cache = 0.0 - private var width_cache = 0.0 - private var height_cache = 0.0 - private var depth_cache = 0.0 - - redef fun check_position_changed - do - if super then return true - - if light.pitch != pitch_cache or - light.yaw != yaw_cache or - light.width != width_cache or - light.height != height_cache or - light.depth != depth_cache then - pitch_cache = light.pitch - yaw_cache = light.yaw - width_cache = light.width - height_cache = light.height - depth_cache = light.depth - return true - end - - return false - end -end diff --git a/lib/gamnit/depth/more_materials.nit b/lib/gamnit/depth/more_materials.nit deleted file mode 100644 index 6674c04961..0000000000 --- a/lib/gamnit/depth/more_materials.nit +++ /dev/null @@ -1,665 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Various material implementations -module more_materials - -intrude import depth_core -intrude import flat -intrude import shadow -import more_lights - -redef class Material - # Get the default blueish material - new do return new SmoothMaterial( - [0.0, 0.0, 0.3, 1.0], - [0.0, 0.0, 0.6, 1.0], - [1.0, 1.0, 1.0, 1.0]) -end - -# Simple material with static colors -class SmoothMaterial - super Material - - # Ambient color, always visible - # - # The RGB values should be premultiplied by the alpha value. - var ambient_color: Array[Float] is writable - - # Diffuse color when covered by a light source - # - # The RGB values should be premultiplied by the alpha value. - var diffuse_color: Array[Float] is writable - - # Specular color affecting reflections - # - # The RGB values should be premultiplied by the alpha value. - var specular_color: Array[Float] is writable - - redef fun draw(actor, model, camera) - do - var program = app.blinn_phong_program - program.use - program.mvp.uniform camera.mvp_matrix - - var mesh = model.mesh - - # Actor specs - glDisableVertexAttribArray program.translation.location - glDisableVertexAttribArray program.scale.location - - program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0) - program.scale.uniform actor.scale - program.alpha.uniform actor.alpha - program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll) - - # From mesh - program.coord.array_enabled = true - program.coord.array(mesh.vertices, 3) - - program.normal.array_enabled = true - program.normal.array(mesh.normals, 3) - - # No textures - program.use_map_ambient.uniform false - program.use_map_diffuse.uniform false - program.use_map_specular.uniform false - program.tex_coord.array_enabled = false - - # Camera - program.camera.uniform(camera.position.x, camera.position.y, camera.position.z) - - # Colors from the material - program.ambient_color.uniform(ambient_color[0], ambient_color[1], - ambient_color[2], ambient_color[3]) - program.diffuse_color.uniform(diffuse_color[0], diffuse_color[1], - diffuse_color[2], diffuse_color[3]) - program.specular_color.uniform(specular_color[0], specular_color[1], - specular_color[2], specular_color[3]) - - setup_lights(camera, program) - - # Execute draw - if mesh.indices.is_empty then - glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3) - else - glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array) - end - - assert glGetError == gl_NO_ERROR - end - - private fun setup_lights(camera: Camera, program: BlinnPhongProgram) - do - # TODO use a list of lights - - # Light, for Lambert and Blinn-Phong - var light = app.light - if light isa ParallelLight then - program.light_kind.uniform 1 - - # Vector parallel to the light source - program.light_center.uniform( - -light.pitch.sin * light.yaw.sin, - light.pitch.cos, - -light.yaw.cos) - else if light isa PointLight then - program.light_kind.uniform 2 - - # Position of the light source - program.light_center.uniform(app.light.position.x, app.light.position.y, app.light.position.z) - else - program.light_kind.uniform 0 - end - - # Draw projected shadows? - if not light isa LightCastingShadows or not app.shadow_depth_texture_available then - program.use_shadows.uniform false - return - else program.use_shadows.uniform true - - # Light point of view - program.light_mvp.uniform light.camera.mvp_matrix - - # Depth texture - glActiveTexture gl_TEXTURE4 - glBindTexture(gl_TEXTURE_2D, app.shadow_context.depth_texture) - program.depth_texture.uniform 4 - program.depth_texture_size.uniform app.shadow_resolution.to_f - program.depth_texture_taps.uniform 2 # TODO make configurable - end -end - -# Material with potential `diffuse_texture` and `specular_texture` -class TexturedMaterial - super SmoothMaterial - - # Texture applied to the ambient_color - var ambient_texture: nullable Texture = null is writable - - # Texture applied to the diffuse color - var diffuse_texture: nullable Texture = null is writable - - # Texture applied to the specular color - var specular_texture: nullable Texture = null is writable - - # Bump map TODO - private var normals_texture: nullable Texture = null is writable - - redef fun draw(actor, model, camera) - do - var mesh = model.mesh - - var program = app.blinn_phong_program - program.use - - # One of the textures used, if any - var sample_used_texture = null - - var texture = ambient_texture - if texture != null then - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - program.use_map_ambient.uniform true - program.map_ambient.uniform 0 - sample_used_texture = texture - else - program.use_map_ambient.uniform false - end - - texture = diffuse_texture - if texture != null then - glActiveTexture gl_TEXTURE1 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - program.use_map_diffuse.uniform true - program.map_diffuse.uniform 1 - sample_used_texture = texture - else - program.use_map_diffuse.uniform false - end - - texture = specular_texture - if texture != null then - glActiveTexture gl_TEXTURE2 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - program.use_map_specular.uniform true - program.map_specular.uniform 2 - sample_used_texture = texture - else - program.use_map_specular.uniform false - end - - texture = normals_texture - if texture != null then - glActiveTexture gl_TEXTURE3 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - program.use_map_bump.uniform true - program.map_bump.uniform 3 - sample_used_texture = texture - else - program.use_map_bump.uniform false - end - - glDisableVertexAttribArray program.translation.location - glDisableVertexAttribArray program.scale.location - - program.mvp.uniform camera.mvp_matrix - program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0) - program.scale.uniform actor.scale - program.alpha.uniform actor.alpha - - # If using a texture, set `texture_coords` - program.tex_coord.array_enabled = sample_used_texture != null - if sample_used_texture != null then - if sample_used_texture isa RootTexture then - # Coordinates are directly valid - program.tex_coord.array(mesh.texture_coords, 2) - else - # Correlate texture coordinates from the substexture and the mesh. - # This is slow, but should be cached on the GPU. - var xa = sample_used_texture.offset_left - var xd = sample_used_texture.offset_right - xa - var ya = sample_used_texture.offset_top - var yd = sample_used_texture.offset_bottom - ya - - var tex_coords = new Array[Float].with_capacity(mesh.texture_coords.length) - for i in [0..mesh.texture_coords.length/2[ do - tex_coords[i*2] = xa + xd * mesh.texture_coords[i*2] - tex_coords[i*2+1] = 1.0 - (ya + yd * mesh.texture_coords[i*2+1]) - end - - program.tex_coord.array(tex_coords, 2) - end - end - - program.coord.array_enabled = true - program.coord.array(mesh.vertices, 3) - - program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll) - - program.ambient_color.uniform(ambient_color[0], ambient_color[1], - ambient_color[2], ambient_color[3]) - program.diffuse_color.uniform(diffuse_color[0], diffuse_color[1], - diffuse_color[2], diffuse_color[3]) - program.specular_color.uniform(specular_color[0], specular_color[1], - specular_color[2], specular_color[3]) - - program.normal.array_enabled = true - program.normal.array(mesh.normals, 3) - - # Light - setup_lights(camera, program) - - # Camera - program.camera.uniform(camera.position.x, camera.position.y, camera.position.z) - - if mesh.indices.is_empty then - glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3) - else - glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array) - end - end -end - -# Simple material using the normals of the surface as color -# -# Each axis composing the normals are translated to color values. -# This material is useful for debugging normals or display models in a colorful way. -class NormalsMaterial - super Material - - redef fun draw(actor, model, camera) - do - var program = app.normals_program - program.use - program.mvp.uniform camera.mvp_matrix - - var mesh = model.mesh - - # TODO apply normal map - - program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0) - program.scale.uniform actor.scale - - program.tex_coord.array_enabled = true - program.tex_coord.array(mesh.texture_coords, 2) - - program.coord.array_enabled = true - program.coord.array(mesh.vertices, 3) - - program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll) - - program.normal.array_enabled = true - program.normal.array(mesh.normals, 3) - - if mesh.indices.is_empty then - glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3) - else - glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array) - end - end -end - -# Graphic program to display 3D models with Blinn-Phong specular lighting -class BlinnPhongProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec4 coord; - - // Vertex translation - attribute vec4 translation; - - // Vertex scaling - attribute float scale; - - attribute float alpha; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Vertex normal - attribute vec3 normal; - - // Camera model view projection matrix - uniform mat4 mvp; - - // Actor rotation - attribute vec4 rotation_row0; - attribute vec4 rotation_row1; - attribute vec4 rotation_row2; - attribute vec4 rotation_row3; - - mat4 rotation() - { - return mat4(rotation_row0, rotation_row1, rotation_row2, rotation_row3); - } - - // Lights config - uniform lowp int light_kind; - uniform vec3 light_center; - uniform mat4 light_mvp; - - // Coordinates of the camera - uniform vec3 camera; - - // Output for the fragment shader - varying vec2 v_tex_coord; - varying vec3 v_normal; - varying vec4 v_to_light; - varying vec4 v_to_camera; - varying vec4 v_depth_pos; - varying float v_alpha; - - void main() - { - mat4 rotation = rotation(); - vec4 pos = (vec4(coord.xyz * scale, 1.0) * rotation + translation); - gl_Position = pos * mvp; - v_depth_pos = (pos * light_mvp) * 0.5 + 0.5; - - // Pass varyings to the fragment shader - v_tex_coord = vec2(tex_coord.x, 1.0 - tex_coord.y); - v_normal = normalize(vec4(normal, 0.0) * rotation).xyz; - v_to_camera = normalize(vec4(camera, 1.0) - pos); - - if (light_kind == 0) { - // No light - } else if (light_kind == 1) { - // Parallel - v_to_light = normalize(vec4(light_center, 1.0)); - } else { - // Point light (and others?) - v_to_light = normalize(vec4(light_center, 1.0) - pos); - } - - v_alpha = alpha; - } - """ @ glsl_vertex_shader - - redef var fragment_shader_source = """ - precision mediump float; - - // Input from the vertex shader - varying vec2 v_tex_coord; - varying vec3 v_normal; - varying vec4 v_to_light; - varying vec4 v_to_camera; - varying vec4 v_depth_pos; - varying float v_alpha; - - // Colors - uniform vec4 ambient_color; - uniform vec4 diffuse_color; - uniform vec4 specular_color; - - // Ambient map - uniform bool use_map_ambient; - uniform sampler2D map_ambient; - - // Diffuse map - uniform bool use_map_diffuse; - uniform sampler2D map_diffuse; - - // Specular map - uniform bool use_map_specular; - uniform sampler2D map_specular; - - // Bump map - uniform bool use_map_bump; - uniform sampler2D map_bump; - - // Normal map - uniform bool use_map_normal; - uniform sampler2D map_normal; - - // Shadow - uniform lowp int light_kind; - uniform bool use_shadows; - uniform sampler2D depth_texture; - uniform float depth_size; - uniform int depth_taps; - - // Shadow effect on the diffuse colors of the fragment at offset `x, y` - float shadow_lookup(vec2 depth_coord, float x, float y) { - float tap_width = 1.0; - float pixel_size = tap_width/depth_size; - - vec2 offset = vec2(x * pixel_size * v_depth_pos.w, - y * pixel_size * v_depth_pos.w); - depth_coord += offset; - - float depth = v_depth_pos.z/v_depth_pos.w; - //vec2 depth_coord = v_depth_pos.xy/v_depth_pos.w; - if (depth_coord.x < 0.0 || depth_coord.x > 1.0 || depth_coord.y < 0.0 || depth_coord.y > 1.0) { - // Out of the shadow map texture - //gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); // debug, red out of the light view - return 1.0; - } - - float shadow_depth = texture2D(depth_texture, depth_coord).r; - float bias = 0.0001; - if (shadow_depth == 1.0) { - // Too far to be in depth texture - return 1.0; - } else if (shadow_depth <= depth - bias) { - // In a shadow - //gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); // debug, blue shadows - return 0.2; // TODO replace with a configurable ambient light - } - - //gl_FragColor = vec4(0.0, 1.0-(shadow_depth-depth), 0.0, 1.0); // debug, green lit surfaces - return 1.0; - } - - // Shadow effect on the diffuse colors of the fragment - float shadow() { - if (!use_shadows) return 1.0; - - vec2 depth_coord = v_depth_pos.xy/v_depth_pos.w; - - float taps = float(depth_taps); - float tap_step = 2.00/taps; - float sum = 0.0; - for (float x = -1.0; x <= 0.99; x += tap_step) - for (float y = -1.0; y <= 0.99; y += tap_step) - sum += shadow_lookup(depth_coord, x, y); - return sum / taps / taps; - } - - void main() - { - // Normal - vec3 normal = v_normal; - if (use_map_bump) { - // TODO - vec3 bump = 2.0 * texture2D(map_bump, v_tex_coord).rgb - 1.0; - } - - // Ambient light - vec4 ambient = ambient_color * v_alpha; - if (use_map_ambient) ambient *= texture2D(map_ambient, v_tex_coord); - - if (light_kind == 0) { - // No light, show diffuse and ambient - - vec4 diffuse = diffuse_color * v_alpha; - if (use_map_diffuse) diffuse *= texture2D(map_diffuse, v_tex_coord); - - gl_FragColor = ambient + diffuse; - } else { - // Parallel light or point light (1 or 2) - - // Diffuse Lambert light - vec3 to_light = v_to_light.xyz; - float lambert = clamp(dot(normal, to_light), 0.0, 1.0); - - vec4 diffuse = lambert * diffuse_color; - if (use_map_diffuse) diffuse *= texture2D(map_diffuse, v_tex_coord); - - // Specular Phong light - float s = 0.0; - if (lambert > 0.0) { - // In light - vec3 l = reflect(-to_light, normal); - s = clamp(dot(l, v_to_camera.xyz), 0.0, 1.0); - s = pow(s, 8.0); // TODO make this `shininess` a material attribute - - // Shadows - diffuse *= shadow(); - } - - vec4 specular = s * specular_color * v_alpha; - if (use_map_specular) specular *= texture2D(map_specular, v_tex_coord).x; - - gl_FragColor = ambient + diffuse + specular; - } - - if (gl_FragColor.a < 0.01) discard; - - //gl_FragColor = vec4(normalize(normal).rgb, 1.0); // Debug normals - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec4) is lazy - - # Should this program use the texture `map_ambient`? - var use_map_ambient = uniforms["use_map_ambient"].as(UniformBool) is lazy - - # Ambient texture unit - var map_ambient = uniforms["map_ambient"].as(UniformSampler2D) is lazy - - # Should this program use the texture `map_diffuse`? - var use_map_diffuse = uniforms["use_map_diffuse"].as(UniformBool) is lazy - - # Diffuse texture unit - var map_diffuse = uniforms["map_diffuse"].as(UniformSampler2D) is lazy - - # Should this program use the texture `map_specular`? - var use_map_specular = uniforms["use_map_specular"].as(UniformBool) is lazy - - # Specularity texture unit - var map_specular = uniforms["map_specular"].as(UniformSampler2D) is lazy - - # Should this program use the texture `map_bump`? - var use_map_bump = uniforms["use_map_bump"].as(UniformBool) is lazy - - # Bump texture unit - var map_bump = uniforms["map_bump"].as(UniformSampler2D) is lazy - - # Normal per vertex - var normal = attributes["normal"].as(AttributeVec3) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Ambient color - var ambient_color = uniforms["ambient_color"].as(UniformVec4) is lazy - - # Diffuse color - var diffuse_color = uniforms["diffuse_color"].as(UniformVec4) is lazy - - # Specular color - var specular_color = uniforms["specular_color"].as(UniformVec4) is lazy - - # Kind of lights: 0 -> no light, 1 -> parallel, 2 -> point - var light_kind = uniforms["light_kind"].as(UniformInt) is lazy - - # Center position of the light *or* vector to parallel light source - var light_center = uniforms["light_center"].as(UniformVec3) is lazy - - # Light model view projection matrix - var light_mvp = uniforms["light_mvp"].as(UniformMat4) is lazy - - # Should shadow be drawn? Would use `depth_texture` and `light_mvp`. - var use_shadows = uniforms["use_shadows"].as(UniformBool) is lazy - - # Diffuse texture unit - var depth_texture = uniforms["depth_texture"].as(UniformSampler2D) is lazy - - # Size, in pixels, of `depth_texture` - var depth_texture_size = uniforms["depth_size"].as(UniformFloat) is lazy - - # Times to tap the `depth_texture`, square root (set to 3 for a total of 9 taps) - var depth_texture_taps = uniforms["depth_taps"].as(UniformInt) is lazy - - # Camera position - var camera = uniforms["camera"].as(UniformVec3) is lazy - - # Translation applied to each vertex - var translation = attributes["translation"].as(AttributeVec4) is lazy # TODO attribute - - # Set `mat` at the uniform rotation matrix - fun rotation=(mat: Matrix) - do - var i = 0 - for r in [rotation_row0, rotation_row1, rotation_row2, rotation_row3] do - if r.is_active then - glDisableVertexAttribArray r.location - r.uniform(mat[0, i], mat[1, i], mat[2, i], mat[3, i]) - end - i += 1 - end - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - end - - # Rotation matrix, row0 - var rotation_row0 = attributes["rotation_row0"].as(AttributeVec4) is lazy - - # Rotation matrix, row 1 - var rotation_row1 = attributes["rotation_row1"].as(AttributeVec4) is lazy - - # Rotation matrix, row 2 - var rotation_row2 = attributes["rotation_row2"].as(AttributeVec4) is lazy - - # Rotation matrix, row 3 - var rotation_row3 = attributes["rotation_row3"].as(AttributeVec4) is lazy - - # Scaling per vertex - var scale = attributes["scale"].as(AttributeFloat) is lazy - - # Scaling per vertex - var alpha = attributes["alpha"].as(AttributeFloat) is lazy - - # Camera model view projection matrix - var mvp = uniforms["mvp"].as(UniformMat4) is lazy -end - -# Program to color objects from their normal vectors -# -# May be used in place of `BlinnPhongProgram` for debugging or effect. -class NormalProgram - super BlinnPhongProgram - - redef var fragment_shader_source = """ - precision mediump float; - - // Input from the vertex shader - varying vec3 v_normal; - - void main() - { - gl_FragColor = vec4(v_normal*0.5 + 0.5, 1.0); - } - """ @ glsl_fragment_shader -end - -redef class App - private var blinn_phong_program = new BlinnPhongProgram is lazy - - private var normals_program = new NormalProgram is lazy -end diff --git a/lib/gamnit/depth/more_meshes.nit b/lib/gamnit/depth/more_meshes.nit deleted file mode 100644 index e316b89485..0000000000 --- a/lib/gamnit/depth/more_meshes.nit +++ /dev/null @@ -1,239 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# More simple geometric meshes -module more_meshes - -import geometry -import depth_core -import model_dimensions - -# Simple flat mesh, sits on the axes X and Z, normal on Y -class Plane - super Mesh - - # TODO allow for complex rotation, either at creation or in Actor - - # Modifier to `texture_coords` to repeat the texture on the X axis - # - # At 1.0, the texture is stretched to cover the whole plane. - # If greater than 1.0, the texture is repeated. - # - # This value must be set before using `texture_coords` or drawing this plane. - var repeat_x = 1.0 is writable - - # Modifier to `texture_coords` to repeat the texture on the Y axis - # - # At 1.0, the texture is stretched to cover the whole plane. - # If greater than 1.0, the texture is repeated. - # - # This value must be set before using `texture_coords` or drawing this plane. - var repeat_y = 1.0 is writable - - redef var vertices is lazy do - var a = [-0.5, 0.0, -0.5] - var b = [ 0.5, 0.0, -0.5] - var c = [-0.5, 0.0, 0.5] - var d = [ 0.5, 0.0, 0.5] - - var vertices = new Array[Float] - for v in [c, d, a, b] do vertices.add_all v - return vertices - end - - redef var normals: Array[Float] is lazy do - var normals = new Array[Float] - for i in 4.times do normals.add_all([0.0, 1.0, 0.0]) - return normals - end - - redef var texture_coords: Array[Float] is lazy do - var offset_left = 0.0 - var offset_top = 0.0 - var offset_right = 1.0*repeat_x - var offset_bottom = 1.0*repeat_y - var a = [offset_left, offset_bottom] - var b = [offset_right, offset_bottom] - var c = [offset_left, offset_top] - var d = [offset_right, offset_top] - - var texture_coords = new Array[Float] - for v in [c, d, a, b] do texture_coords.add_all v - return texture_coords - end - - redef var center = new Point3d[Float](0.0, 0.0, 0.0) is lazy - - init do indices.add_all([0, 1, 2, 2, 1, 3]) - # TODO use gl_TRIANGLE_FAN instead -end - -# Cuboid, or rectangular prism, with 6 faces and right angles -# -# Can be created from a `Boxed3d` using `to_mesh`. -class Cuboid - super Mesh - - # Width, on the X axis - var width: Float - - # Height, on the Y axis - var height: Float - - # Depth, on the Z axis - var depth: Float - - redef var vertices is lazy do - var a = [-0.5*width, -0.5*height, -0.5*depth] - var b = [ 0.5*width, -0.5*height, -0.5*depth] - var c = [-0.5*width, 0.5*height, -0.5*depth] - var d = [ 0.5*width, 0.5*height, -0.5*depth] - - var e = [-0.5*width, -0.5*height, 0.5*depth] - var f = [ 0.5*width, -0.5*height, 0.5*depth] - var g = [-0.5*width, 0.5*height, 0.5*depth] - var h = [ 0.5*width, 0.5*height, 0.5*depth] - - var vertices = new Array[Float] - for v in [a, c, d, a, d, b, # front - f, h, g, f, g, e, # back - b, d, h, b, h, f, # right - e, g, c, e, c, a, # left - e, a, b, e, b, f, # bottom - c, g, h, c, h, d # top - ] do vertices.add_all v - return vertices - end - - redef var normals is lazy do - var normals = new Array[Float] - var faces_normals = [ - [0.0, 0.0, -1.0], - [0.0, 0.0, 1.0], - [ 1.0, 0.0, 0.0], - [-1.0, 0.0, 0.0], - [0.0, -1.0, 0.0], - [0.0, 1.0, 0.0]] - for f in faces_normals do for i in 6.times do normals.add_all f - return normals - end - - redef var texture_coords: Array[Float] is lazy do - var a = [0.0, 1.0] - var b = [1.0, 1.0] - var c = [0.0, 0.0] - var d = [1.0, 0.0] - - var texture_coords = new Array[Float] - var face = [a, c, d, a, d, b] - for i in 6.times do for v in face do texture_coords.add_all v - return texture_coords - end - - redef var center = new Point3d[Float](0.0, 0.0, 0.0) is lazy -end - -# Cube, with 6 faces, edges of equal length and square angles -# -# Occupies `[-0.5..0.5]` on all three axes. -class Cube - super Cuboid - - noautoinit - - init - do - width = 1.0 - height = 1.0 - depth = 1.0 - end -end - -redef class Boxed3d[N] - # Create a `Cuboid` mesh with the dimension of `self` - # - # Does not use the position of `self`, but it can be given to an `Actor`. - fun to_mesh: Cuboid - do - var width = right.to_f-left.to_f - var height = top.to_f-bottom.to_f - var depth = front.to_f-back.to_f - return new Cuboid(width, height, depth) - end -end - -# Sphere with `radius` and a number of faces set by `n_meridians` and `n_parallels` -class UVSphere - super Mesh - - # Distance between the center and the vertices - var radius: Float - - # Number of vertices on a full circle around the Z axis - var n_meridians: Int - - # Number of vertices on an arc between both poles - var n_parallels: Int - - init - do - var w = n_meridians - var h = n_parallels - - var vertices = new Array[Float].with_capacity(w*h*3) - self.vertices = vertices - - var texture_coords = new Array[Float].with_capacity(w*h*2) - self.texture_coords = texture_coords - - var normals = new Array[Float].with_capacity(w*h*3) - self.normals = normals - - # Build vertices - for m in [0..w[ do - for p in [0..h[ do - var u = m.to_f * 2.0 * pi / (w-1).to_f - var v = p.to_f * pi / (h-1).to_f - - vertices.add radius * u.cos * v.sin - vertices.add radius * v.cos - vertices.add radius * u.sin * v.sin - - texture_coords.add (1.0 - m.to_f/(w-1).to_f) - texture_coords.add(p.to_f/(h-1).to_f) - - normals.add u.cos * v.sin - normals.add v.cos - normals.add u.sin * v.sin - end - end - - # Build faces - var indices = new Array[Int].with_capacity((w-1)*(h-1)*6) - self.indices = indices - for m in [0..w-1[ do - for p in [0..h-1[ do - var a = m*h + p - - indices.add a - indices.add a+h - indices.add a+1 - - indices.add a+h - indices.add a+h+1 - indices.add a+1 - end - end - end -end diff --git a/lib/gamnit/depth/more_models.nit b/lib/gamnit/depth/more_models.nit deleted file mode 100644 index f7ae0015bc..0000000000 --- a/lib/gamnit/depth/more_models.nit +++ /dev/null @@ -1,465 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services to load models from the assets folder -module more_models - -intrude import depth_core - -import gamnit::obj -import gamnit::mtl - -import more_materials -import more_meshes - -redef class Model - # Prepare to load a model from the assets folder - new(path: Text) do return new ModelAsset(path.to_s) -end - -# Model loaded from a file in the asset folder -# -# In case of error, `error` is set accordingly. -# If the error is on the mesh, `mesh` is set to a default `new Cube`. -# If the material is missing or it failed to load, `material` is set to the blueish `new Material`. -class ModelAsset - super Model - super Asset - - init do models.add self - - private var loaded = false - - redef fun load - do - if loaded then return - - var ext = path.file_extension - if ext == "obj" then - load_obj_file - else - errors.add new Error("Model at '{path}' failed to load: Extension '{ext or else "null"}' unrecognized") - end - - if leaves_cache.is_empty then - # Nothing was loaded, use a cube with the default material - var leaf = placeholder_model - leaves_cache.add leaf - end - - loaded = true - end - - private fun lazy_load - do - if loaded then return - - # Lazy load - load - - # Print errors when lazy loading only - if errors.length == 1 then - print_error errors.first - else if errors.length > 1 then - print_error "Loading model at '{path}' raised {errors.length} errors:\n* " - print_error errors.join("\n* ") - end - end - - private fun load_obj_file - do - # Read .obj description from assets - var text_asset = new TextAsset(path) - var content = text_asset.to_s - if content.is_empty then - errors.add new Error("Model failed to load: Asset empty at '{self.path}'") - leaves_cache.add new LeafModel(new Cube, new Material) - return - end - - # Parse .obj description - var parser = new ObjFileParser(content) - var obj_def = parser.parse - if obj_def == null then - errors.add new Error("Model failed to load: .obj format error on '{self.path}'") - leaves_cache.add new LeafModel(new Cube, new Material) - return - end - - # Check for errors - if debug_gamnit then assert obj_def.is_coherent - - # Build models - var converter = new BuildModelFromObj(path, obj_def) - converter.fill_leaves self - errors.add_all converter.errors - end - - redef fun leaves - do - lazy_load - return leaves_cache - end - - private var leaves_cache = new Array[LeafModel] - - redef fun named_parts - do - lazy_load - return named_leaves_cache - end - - private var named_leaves_cache = new Map[String, Model] -end - -# Short-lived service to convert an `ObjDef` to `fill_leaves` -# -# Limitations: This service only support faces with 3 or 4 vertices. -# Faces with more vertices should be triangulated by the modeling tool. -private class BuildModelFromObj - - # Path to the .obj file in the assets folder, used to find .mtl files - var path: String - - # Parsed .obj definition - var obj_def: ObjDef - - # Errors raised by calls to `fill_leaves` - var errors = new Array[Error] - - # Fill `leaves` with objects described in `obj_def` - fun fill_leaves(target_model: ModelAsset) - do - var leaves = target_model.leaves_cache - - # Sort faces by material - var obj_mtl_to_faces = new Map[ObjObj, MultiHashMap[String, ObjFace]] - for obj in obj_def.objects do - var mtl_to_faces = new MultiHashMap[String, ObjFace] - obj_mtl_to_faces[obj] = mtl_to_faces - for face in obj.faces do - var mtl_lib_name = face.material_lib - var mtl_name = face.material_name - - var full_name = "" - if mtl_lib_name != null and mtl_name != null then full_name = mtl_lib_name / mtl_name - - mtl_to_faces[full_name].add face - end - end - - # Load material libs - var mtl_libs = sys.mtl_libs - var lib_names = obj_def.material_libs - for name in lib_names do - var asset_path = self.path.dirname / name - var lib_asset = new TextAsset(asset_path) - lib_asset.load - - var error = lib_asset.error - if error != null then - errors.add error - continue - end - - var mtl_parser = new MtlFileParser(lib_asset.to_s) - var mtl_lib = mtl_parser.parse - mtl_libs[asset_path] = mtl_lib - end - - # Create 1 mesh per material per object, and prepare materials - var mesh_to_mtl = new Map[Mesh, nullable MtlDef] - var mesh_to_name = new Map[Mesh, String] - var texture_names = new Set[String] - for obj in obj_def.objects do - var mtl_to_faces = obj_mtl_to_faces[obj] - for mtl_path, faces in mtl_to_faces do - - # Create mesh - var mesh = new Mesh - mesh.vertices = vertices(faces) - mesh.normals = normals(faces) - mesh.texture_coords = texture_coords(faces) - - # Material - var mtl_def = null - - var mtl_lib_name = faces.first.material_lib - var mtl_name = faces.first.material_name - if mtl_lib_name != null and mtl_name != null then - var asset_path = self.path.dirname / mtl_lib_name - var mtl_lib = mtl_libs[asset_path] - var mtl = mtl_lib.get_or_null(mtl_name) - if mtl != null then - mtl_def = mtl - - for e in mtl.maps do - texture_names.add self.path.dirname / e - end - else - errors.add new Error("Error loading model at '{path}': mtl '{mtl_name}' not found in '{asset_path}'") - end - end - - mesh_to_mtl[mesh] = mtl_def - mesh_to_name[mesh] = obj.name - end - end - - # Load textures need for these materials - for name in texture_names do - if not asset_textures_by_name.keys.has(name) then - var tex = new TextureAsset(name) - asset_textures_by_name[name] = tex - - tex.load - var error = tex.error - if error != null then errors.add error - end - end - - # Create final `Materials` from defs and textures - var materials = new Map[MtlDef, Material] - for mtl in mesh_to_mtl.values do - if mtl == null then continue - - var ambient = mtl.ambient.to_a - ambient.add 1.0 - - var diffuse = mtl.diffuse.to_a - diffuse.add 1.0 - - var specular = mtl.specular.to_a - specular.add 1.0 - - var material = new TexturedMaterial(ambient, diffuse, specular) - materials[mtl] = material - - var tex_name = mtl.map_ambient - if tex_name != null then - tex_name = self.path.dirname / tex_name - material.ambient_texture = asset_textures_by_name[tex_name] - end - - tex_name = mtl.map_diffuse - if tex_name != null then - tex_name = self.path.dirname / tex_name - material.diffuse_texture = asset_textures_by_name[tex_name] - end - - tex_name = mtl.map_specular - if tex_name != null then - tex_name = self.path.dirname / tex_name - material.specular_texture = asset_textures_by_name[tex_name] - end - end - - # Create models and store them - var name_to_leaves = new MultiHashMap[String, LeafModel] - for mesh, mtl_def in mesh_to_mtl do - - var material = materials.get_or_null(mtl_def) - if material == null then material = new Material - - var model = new LeafModel(mesh, material) - leaves.add model - - name_to_leaves[mesh_to_name[mesh]].add model - end - - # Collect objects with a name - for name, models in name_to_leaves do - if models.length == 1 then - target_model.named_leaves_cache[name] = models.first - else - var named_model = new CompositeModel - named_model.leaves.add_all models - target_model.named_leaves_cache[name] = named_model - end - end - end - - # Compute the vertices coordinates of `faces` in a flat `Array[Float]` - fun vertices(faces: Array[ObjFace]): Array[Float] do - var obj_def = obj_def - - var vertices = new Array[Float] - for face in faces do - - # 1st triangle - var count = 0 - for e in face.vertices do - var i = e.vertex_point_index - 1 - var v = obj_def.vertex_points[i] - - vertices.add v.x - vertices.add v.y - vertices.add v.z - - if count == 2 then break - count += 1 - end - - # If square, 2nd triangle - # - # This may not support all vertices ordering. - if face.vertices.length > 3 then - for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do - var i = e.vertex_point_index - 1 - var v = obj_def.vertex_points[i] - - vertices.add v.x - vertices.add v.y - vertices.add v.z - end - end - - # TODO use polygon triangulation to support larger polygons - end - return vertices - end - - # Compute the normals of `faces` in a flat `Array[Float]` - fun normals(faces: Array[ObjFace]): Array[Float] do - var obj_def = obj_def - - var normals = new Array[Float] - for face in faces do - # 1st triangle - var count = 0 - for e in face.vertices do - var i = e.normal_index - if i == null then - compute_and_append_normal(normals, face) - else - var v = obj_def.normals[i-1] - normals.add v.x - normals.add v.y - normals.add v.z - end - - if count == 2 then break - count += 1 - end - - # If square, 2nd triangle - # - # This may not support all vertices ordering. - if face.vertices.length > 3 then - for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do - var i = e.normal_index - if i == null then - compute_and_append_normal(normals, face) - else - var v = obj_def.normals[i-1] - normals.add v.x - normals.add v.y - normals.add v.z - end - end - end - end - return normals - end - - # Compute the normal of `face` and append it as 3 floats to `seq` - # - # Resulting normals are not normalized. - fun compute_and_append_normal(seq: Sequence[Float], face: ObjFace) - do - var i1 = face.vertices[0].vertex_point_index - var i2 = face.vertices[1].vertex_point_index - var i3 = face.vertices[2].vertex_point_index - - var v1 = obj_def.vertex_points[i1-1] - var v2 = obj_def.vertex_points[i2-1] - var v3 = obj_def.vertex_points[i3-1] - - var vx = v2.x - v1.x - var vy = v2.y - v1.y - var vz = v2.z - v1.z - var wx = v3.x - v1.x - var wy = v3.y - v1.y - var wz = v3.z - v1.z - - var nx = (vy*wz) - (vz*wy) - var ny = (vz*wx) - (vx*wz) - var nz = (vx*wy) - (vy*wx) - - # Append to `seq` - seq.add nx - seq.add ny - seq.add nz - end - - # Compute the texture coordinates of `faces` in a flat `Array[Float]` - fun texture_coords(faces: Array[ObjFace]): Array[Float] do - var obj_def = obj_def - - var coords = new Array[Float] - for face in faces do - - # 1st triangle - var count = 0 - for e in face.vertices do - var i = e.texture_coord_index - if i == null then - coords.add 0.0 - coords.add 0.0 - else - var tc = obj_def.texture_coords[i-1] - coords.add tc.u - coords.add tc.v - end - - if count == 2 then break - count += 1 - end - - # If square, 2nd triangle - # - # This may not support all vertices ordering. - if face.vertices.length > 3 then - for e in [face.vertices[0], face.vertices[2], face.vertices[3]] do - var i = e.texture_coord_index - if i == null then - coords.add 0.0 - coords.add 0.0 - else - var tc = obj_def.texture_coords[i-1] - coords.add tc.u - coords.add tc.v - end - end - end - end - return coords - end -end - -redef class Sys - # Textures loaded from .mtl files for models - var asset_textures_by_name = new Map[String, TextureAsset] - - # Loaded .mtl material definitions, sorted by path in assets and material name - private var mtl_libs = new Map[String, Map[String, MtlDef]] - - # All instantiated asset models - var models = new Set[ModelAsset] - - # Blue cube of 1 unit on each side, acting as placeholder for models failing to load - # - # This model can be freely used by any `Actor` as placeholder or for debugging. - var placeholder_model = new LeafModel(new Cube, new Material) is lazy -end diff --git a/lib/gamnit/depth/particles.nit b/lib/gamnit/depth/particles.nit deleted file mode 100644 index 557e6940d6..0000000000 --- a/lib/gamnit/depth/particles.nit +++ /dev/null @@ -1,334 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Particle effects -# -# Particles are managed by instances of `ParticleSystem` that -# are configured for a specific kind of particle. -# For instance, a particle system can be created for a max of 100 particles, -# with a smoke effect and a precise texture, as in: -# -# ~~~ -# var smoke = new ParticleSystem(100, app.smoke_program, new Texture("smoke.png")) -# ~~~ -# -# The system must be registered in `app.particle_systems` to be drawn on screen. -# -# Particles are added to a system with their configuration, as in: -# -# ~~~ -# var position = new Point3d[Float](0.0, 0.0, 0.0) -# var scale = 2.0 -# var time_to_live = 1.0 # in seconds -# smoke.add(position, scale, time_to_live) -# ~~~ -module particles - -import depth_core - -redef class App - - # Graphics program to display static non-moving particles - var static_program = new ParticleProgram - - # Graphics program to display blowing up particles - var explosion_program = new ExplosionProgram - - # Graphics program to display particles slowly drifting upwards - var smoke_program = new SmokeProgram - - # Enabled particle emitters - # - # To be populated by the client program. - var particle_systems = new Array[ParticleSystem] -end - -# Particle system using `program` and `texture` to draw each particles -# -# Each instance draws a maximum of `n_particles`. -# If full, new particles replace the oldest particles. -# Expired particle are still sent to the CPU but should be discarded by the vertex shader. -class ParticleSystem - - # Maximum number of particles - var n_particles: Int - - private var total_particles = 0 - - # Program to draw the particles - var program: ParticleProgram - - # Texture to apply on particles, if any - var texture: nullable Texture - - # Clock used to set `ots` and `program::t` - # - # TODO control this value from the game logic to allow pausing and slowing time. - private var clock = new Clock - - # Coordinates of each particle effects - private var centers = new Array[Float] - - # Creation time of each particles - private var ots = new Array[Float] - - # Scale of each particles - private var scales = new Array[Float] - - # Time-to-live of each particle - private var ttls = new Array[Float] - - # Clear all particles - fun clear - do - centers.clear - ots.clear - scales.clear - ttls.clear - total_particles = 0 - end - - # Add a particle at `center` with `scale`, living for `ttl` from `time_offset` - # - # `time_offset` is added to the creation time, it can be used to delay the - # apparition of a particle using a positive value. - # - # See the doc of the precise class of `program`, or the general `ParticleProgram` - # for information on the effect of these parameters. - fun add(center: Point3d[Float], scale: Float, ttl: Float, time_offset: nullable Float) - do - var i = total_particles % n_particles - total_particles += 1 - - centers[i*3 ] = center.x - centers[i*3+1] = center.y - centers[i*3+2] = center.z - - ttls[i] = ttl - scales[i] = scale - - time_offset = time_offset or else 0.0 - ots[i] = clock.total.to_f + time_offset - end - - # Draw all particles of this emitter - fun draw - do - if ots.is_empty then return - - var program = program - program.use - - var texture = texture - if texture != null then - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - program.use_texture.uniform true - program.texture.uniform 0 - else - program.use_texture.uniform false - end - - program.scale.array_enabled = true - program.scale.array(scales, 1) - - program.center.array_enabled = true - program.center.array(centers, 3) - - program.color.array_enabled = false - program.color.uniform(1.0, 1.0, 1.0, 1.0) - - program.ot.array_enabled = true - program.ot.array(ots, 1) - - program.ttl.array_enabled = true - program.ttl.array(ttls, 1) - - program.t.uniform clock.total.to_f - program.mvp.uniform app.world_camera.mvp_matrix - - glDrawArrays(gl_POINTS, 0, ots.length) - end -end - -# Particle drawing program using `gl_POINTS` -# -# This program should be subclassed to create custom particle effects. -# Either `vertex_shader_source` and `vertex_shader_core` can be refined. -class ParticleProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Coordinates of particle effects - attribute vec4 center; - - // Particles color tint - attribute vec4 color; - varying vec4 v_color; - - // Per particle scaling - attribute float scale; - - // Model view projection matrix - uniform mat4 mvp; - - // Time-to-live of each particle - attribute float ttl; - - // Creation time of each particle - attribute float ot; - - // Current time - uniform float t; - - void main() - { - // Pass varyings to the fragment shader - v_color = color; - - float dt = t - ot; - float pt = dt/ttl; - - // Discard expired or not yet created particles - if (dt > ttl || dt < 0.0) { - gl_PointSize = 0.0; - return; - } - - {{{vertex_shader_core}}} - } - """ - - # Core GLSL code for `vertex_shader_source` - # - # Refine this function to easily tweak the position, size and color of particles. - # - # Reminder: Each execution of the vertex shader applies to a single particle. - # - # ## Input variables: - # * `center`: reference coordinates of the particle effect. - # This if often the center of the particle itself, - # but it can also be reference coordinates for a moving particle. - # * `mvp`: model-view-projection matrix. - # * `color`: color tint of the particle. - # - # * `t`: global seconds counter since the creation of this particle emitter. - # * `ot`: creation time of the particle, in seconds, in reference to `t`. - # * `dt`: seconds since creation of the particle. - # * `ttl`: time-to-live of the particle, in seconds. - # * `pt`: advancement of this particle in its lifetime, in `[0.0 .. 1.0]`. - # - # ## Output variables: - # * `gl_Position`: position of the particle in camera coordinates. - # * `gl_PointSize`: size of the particle in camera coordinates. - # Set to `0.0` to discard the particle. - # * `v_color`: tint applied to the particle. - # Assigned by default to the value of `color`. - # - # ## Reference implementation - # - # The default implementation apply the model-view-projection matrix on the position - # and scales according to the distance from the camera. - # Most particle effects should apply the same base logic as the default implementation. - # Here it is for reference: - # - # ~~~glsl - # gl_Position = center * mvp; - # gl_PointSize = scale / gl_Position.z; - # ~~~ - fun vertex_shader_core: String do return """ - gl_Position = center * mvp; - gl_PointSize = scale / gl_Position.z; - """ - - redef var fragment_shader_source = """ - precision mediump float; - - // Input from the vertex shader - varying vec4 v_color; - - // Does this particle use a texture? - uniform bool use_texture; - - // Texture to apply on this particle - uniform sampler2D texture0; - - void main() - { - if (use_texture) { - gl_FragColor = texture2D(texture0, gl_PointCoord) * v_color; - } else { - gl_FragColor = v_color; - } - } - """ @ glsl_fragment_shader - - # Coordinates of particle effects - var center = attributes["center"].as(AttributeVec4) is lazy - - # Should this program use the texture `texture`? - var use_texture = uniforms["use_texture"].as(UniformBool) is lazy - - # Visible texture unit - var texture = uniforms["texture0"].as(UniformSampler2D) is lazy - - # Color tint per vertex - var color = attributes["color"].as(AttributeVec4) is lazy - - # Scaling per vertex - var scale = attributes["scale"].as(AttributeFloat) is lazy - - # Model view projection matrix - var mvp = uniforms["mvp"].as(UniformMat4) is lazy - - # Creation time of each particle - var ot = attributes["ot"].as(AttributeFloat) is lazy - - # Current time - var t = uniforms["t"].as(UniformFloat) is lazy - - # Time-to-live of each particle - var ttl = attributes["ttl"].as(AttributeFloat) is lazy -end - -# Graphics program to display blowing up particles -class ExplosionProgram - super ParticleProgram - - redef fun vertex_shader_core do return """ - gl_Position = center * mvp; - gl_PointSize = scale / gl_Position.z * pt; - - if (pt > 0.8) v_color *= (1.0-pt)/0.2; - """ -end - -# Graphics program to display particles slowly drifting upwards -class SmokeProgram - super ParticleProgram - - redef fun vertex_shader_core do return """ - vec4 c = center; - c.y += dt * 1.0; - c.x += dt * 0.1; - - gl_Position = c * mvp; - gl_PointSize = scale / gl_Position.z * (pt+0.1); - - if (pt < 0.1) - v_color *= pt / 0.1; - else - v_color *= 1.0 - pt*0.9; - """ -end diff --git a/lib/gamnit/depth/selection.nit b/lib/gamnit/depth/selection.nit deleted file mode 100644 index 954b962770..0000000000 --- a/lib/gamnit/depth/selection.nit +++ /dev/null @@ -1,321 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Select `Actor` from a screen coordinate -# -# The two main services are `App::visible_at` and ; App::visible_in_center`. -# -# This is implemented with simple pixel picking. -# This algorithm draws each actor in a unique color to the display buffer, -# using the color as an ID to detect which actor is visible at each pixel. -# -# It is implemented at the level of the material, -# so it can be applied to any _gamnit_ programs. -# However it is not optimal performance wise, -# so client programs should implement a more efficient algorithm. -# -# By default, the actors are drawn as opaque objects. -# This behavior can be refined, as does `TexturedMaterial` to use its -# `diffuse_texture` for partial opacity. -module selection - -# TODO support `sprites` and `ui_sprites` - -import more_materials -intrude import depth_core - -redef class App - - # Which `Actor` is at the center of the screen? - fun visible_in_center: nullable Actor - do - var display = display - assert display != null - return visible_at(display.width/2, display.height/2) - end - - # Which `Actor` is on screen at `x, y`? - fun visible_at(x, y: Numeric): nullable Actor - do - var display = display - assert display != null - - if not selection_calculated then draw_selection_screen - - x = x.to_i - y = y.to_i - y = display.height - y - - # Read selection values - var data = once new NativeCByteArray(4) - glReadPixels(x, y, 1, 1, gl_RGBA, gl_UNSIGNED_BYTE, data) - assert_no_gl_error - - var r = display.red_bits - var g = display.green_bits - var b = display.blue_bits - - # Rebuild ID from pixel color - var rv = data[0].to_i >> (8-r) - var gv = data[1].to_i >> (8-g) << (r) - var bv = data[2].to_i >> (8-b) << (r+g) - if data[0].to_i & (2**(8-r)-1) > (2**(8-r-1)) then rv += 1 - if data[1].to_i & (2**(8-g)-1) > (2**(8-g-1)) then gv += 1 << r - if data[2].to_i & (2**(8-b)-1) > (2**(8-b-1)) then bv += 1 << (r+g) - var id = rv + gv + bv - - # ID 0 is the background - if id == 0 then return null - - # Wrongful selection? This should not happen. - if not selection_map.keys.has(id) then - print_error "Gamnit Warning: Invalid selection {id}" - return null - end - - return selection_map[id] - end - - # Program drawing selection values to the buffer - var selection_program = new SelectionProgram - - # Map IDs to actors - private var selection_map = new Map[Int, Actor] - - # Is there a valid selection draw in the buffer? - private var selection_calculated = false - - # Draw the selection values to the buffer - private fun draw_selection_screen - do - selection_calculated = true - - app.selection_program.use - app.selection_program.mvp.uniform app.world_camera.mvp_matrix - - # Set aside previous buffer clear color - var user_r = glGetFloatv(gl_COLOR_CLEAR_VALUE, 0) - var user_g = glGetFloatv(gl_COLOR_CLEAR_VALUE, 1) - var user_b = glGetFloatv(gl_COLOR_CLEAR_VALUE, 2) - var user_a = glGetFloatv(gl_COLOR_CLEAR_VALUE, 3) - - glClearColor(0.0, 0.0, 0.0, 1.0) - glClear(gl_DEPTH_BUFFER_BIT | gl_COLOR_BUFFER_BIT) - - # TODO restrict the list of actors with a valid ID, maybe with an `active_actors` list? - - var id = 1 - for actor in actors do - selection_map[id] = actor - for leaf in actor.model.leaves do - leaf.material.draw_selection(actor, leaf, id) - end - - id += 1 - #id += 100 # Debug - end - - # Debug, show the selection values for half a second - #display.flip - #0.5.sleep - - glClearColor(user_r, user_g, user_b, user_a) - end - - redef fun frame_core(display) - do - super - - # Invalidate the selection values - selection_calculated = false - end -end - -redef class Material - - # Draw `actor` to selection values - protected fun draw_selection(actor: Actor, model: LeafModel, id: Int) - do - var program = app.selection_program - var mesh = model.mesh - - draw_selection_texture(actor, model) - - program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0) - program.scale.uniform actor.scale - - program.coord.array_enabled = true - program.coord.array(mesh.vertices, 3) - program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll) - - var display = app.display - assert display != null - var r = display.red_bits - var g = display.green_bits - var b = display.blue_bits - - # Build ID as a color - var p1 = id & ((2**r)-1) - var p2 = id >> r & ((2**g)-1) - var p3 = id >> (r+g) & ((2**b)-1) - program.color_id.uniform( - p1.to_f/((2**r)-1).to_f, - p2.to_f/((2**g)-1).to_f, - p3.to_f/((2**b)-1).to_f, 1.0) - - if mesh.indices.is_empty then - glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3) - else - glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array) - end - end - - private fun draw_selection_texture(actor: Actor, model: LeafModel) - do - var program = app.selection_program - program.use_map_diffuse.uniform false - end -end - -redef class TexturedMaterial - redef fun draw_selection_texture(actor, model) - do - var program = app.selection_program - var mesh = model.mesh - - # One of the textures used, if any - var sample_used_texture = null - var texture = diffuse_texture - if texture != null then - glActiveTexture gl_TEXTURE1 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - program.use_map_diffuse.uniform true - program.map_diffuse.uniform 1 - sample_used_texture = texture - else - program.use_map_diffuse.uniform false - end - - # If using a texture, set `texture_coords` - program.tex_coord.array_enabled = sample_used_texture != null - if sample_used_texture != null then - if sample_used_texture isa RootTexture then - # Coordinates are directly valid - program.tex_coord.array(mesh.texture_coords, 2) - else - # Correlate texture coordinates from the subtexture sand the mesh. - # This is slow, but should be cached on the GPU. - var xa = sample_used_texture.offset_left - var xd = sample_used_texture.offset_right - xa - var ya = sample_used_texture.offset_top - var yd = sample_used_texture.offset_bottom - ya - - var tex_coords = new Array[Float].with_capacity(mesh.texture_coords.length) - for i in [0..mesh.texture_coords.length/2[ do - tex_coords[i*2] = xa + xd * mesh.texture_coords[i*2] - tex_coords[i*2+1] = ya + yd * mesh.texture_coords[i*2+1] - end - - program.tex_coord.array(tex_coords, 2) - end - end - end -end - -# Program to draw selection values -class SelectionProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec4 coord; - - // Vertex translation - uniform vec4 translation; - - // Vertex scaling - uniform float scale; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Model view projection matrix - uniform mat4 mvp; - - // Model rotation - uniform mat4 rotation; - - // Output for the fragment shader - varying vec2 v_tex_coord; - - void main() - { - v_tex_coord = vec2(tex_coord.x, 1.0 - tex_coord.y); - - gl_Position = (vec4(coord.xyz * scale, 1.0) * rotation + translation) * mvp; - } - """ @ glsl_vertex_shader - - # - redef var fragment_shader_source = """ - precision highp float; - - varying vec2 v_tex_coord; - - // Map used as reference for opacity - uniform sampler2D map_diffuse; - - // Should `map_diffuse` be used? - uniform bool use_map_diffuse; - - // Color ID - uniform vec4 color; - - void main() - { - gl_FragColor = vec4(color.rgb, 1.0); - - if (use_map_diffuse && texture2D(map_diffuse, v_tex_coord).a < 0.1) { - gl_FragColor.a = 0.0; - } - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec4) is lazy - - # Should this program use the texture `map_diffuse`? - var use_map_diffuse = uniforms["use_map_diffuse"].as(UniformBool) is lazy - - # Diffuse texture unit - var map_diffuse = uniforms["map_diffuse"].as(UniformSampler2D) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Translation applied to each vertex - var translation = uniforms["translation"].as(UniformVec4) is lazy - - # Rotation matrix - var rotation = uniforms["rotation"].as(UniformMat4) is lazy - - # Scaling per vertex - var scale = uniforms["scale"].as(UniformFloat) is lazy - - # Model view projection matrix - var mvp = uniforms["mvp"].as(UniformMat4) is lazy - - # ID as a color - var color_id = uniforms["color"].as(UniformVec4) is lazy -end diff --git a/lib/gamnit/depth/shadow.nit b/lib/gamnit/depth/shadow.nit deleted file mode 100644 index 4dcae8c952..0000000000 --- a/lib/gamnit/depth/shadow.nit +++ /dev/null @@ -1,472 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Shadow mapping using a depth texture -# -# The default light does not cast any shadows. It can be changed to a -# `ParallelLight` in client games to cast sun-like shadows: -# -# ~~~ -# import more_lights -# -# var sun = new ParallelLight -# sun.pitch = 0.25*pi -# sun.yaw = 0.25*pi -# app.light = sun -# ~~~ -module shadow - -intrude import gamnit::depth_core - -redef class App - - # Resolution of the shadow texture, defaults to 4096 pixels - # - # TODO make configurable / ask the hardware for gl_MAX_TEXTURE_SIZE - var shadow_resolution = 4096 - - # Are shadows supported by the current hardware configuration? - # - # The implementation may change in the future, but it currently relies on - # the GL extension `GL_EOS_depth_texture`. - var supports_shadows: Bool is lazy do - return display.as(not null).gl_extensions.has("GL_OES_depth_texture") - end - - # Is `shadow_context.depth_texture` ready to be used? - fun shadow_depth_texture_available: Bool - do return supports_shadows and shadow_context.depth_texture != -1 - - private var shadow_depth_program = new ShadowDepthProgram - - private var perf_clock_shadow = new Clock is lazy - - redef fun create_gamnit - do - super - - var program = shadow_depth_program - program.compile_and_link - var error = program.error - assert error == null else print_error error - end - - private var shadow_context: ShadowContext = create_shadow_context is lazy - - private fun create_shadow_context: ShadowContext - do - var display = display - assert display != null - - var context = new ShadowContext - context.prepare_once(display, shadow_resolution) - return context - end - - # Update the depth texture from the light point of view - # - # This method updates `shadow_context.depth_texture`. - protected fun frame_core_shadow_prep(display: GamnitDisplay) - do - if not supports_shadows then return - - var light = app.light - if not light isa LightCastingShadows then return - - # Make sure there's no errors pending - assert glGetError == gl_NO_ERROR - - # Bind the framebuffer and make sure it is OK - glBindFramebuffer(gl_FRAMEBUFFER, shadow_context.light_view_framebuffer) - assert glGetError == gl_NO_ERROR - assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE - - # Draw to fill the depth texture and only the depth - glViewport(0, 0, shadow_resolution, shadow_resolution) - glColorMask(false, false, false, false) - glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT - assert glGetError == gl_NO_ERROR - - # Update light position - var camera = light.camera - camera.position.x = app.world_camera.position.x - camera.position.y = app.world_camera.position.y - camera.position.z = app.world_camera.position.z - - # Draw all actors - for actor in actors do - for leaf in actor.model.leaves do - leaf.material.draw_depth(actor, leaf, camera) - end - end - - # Take down, bring back default values - bind_screen_framebuffer shadow_context.screen_framebuffer - glColorMask(true, true, true, true) - end - - # --- - # Debug: show light view in the bottom left of the screen - - # Lazy load the debugging program - private var shadow_debug_program: LightPointOfViewProgram is lazy do - var program = new LightPointOfViewProgram - program.compile_and_link - var error = program.error - assert error == null else print_error error - return program - end - - # Draw the light view in the bottom left of the screen, for debugging only - # - # The shadow depth texture is a square that can be deformed by this projection. - protected fun frame_core_shadow_debug(display: GamnitDisplay) - do - if not supports_shadows then - print_error "Error: Shadows are not supported by the current hardware configuration" - return - end - - perf_clock_shadow.lapse - - var program = shadow_debug_program - - glBindBuffer(gl_ARRAY_BUFFER, shadow_context.buffer_array) - glViewport(0, 0, display.width/3, display.height/3) - glClear gl_DEPTH_BUFFER_BIT - program.use - - # Uniforms - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, shadow_context.depth_texture) - program.texture.uniform 0 - - # Attributes - var sizeof_gl_float = 4 - var n_floats = 3 - glEnableVertexAttribArray program.coord.location - glVertexAttribPointeri(program.coord.location, n_floats, gl_FLOAT, false, 0, 0) - var offset = 4 * n_floats * sizeof_gl_float - - n_floats = 2 - glEnableVertexAttribArray program.tex_coord.location - glVertexAttribPointeri(program.tex_coord.location, n_floats, gl_FLOAT, false, 0, offset) - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # Draw - glDrawArrays(gl_TRIANGLE_STRIP, 0, 4) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # Take down - glBindBuffer(gl_ARRAY_BUFFER, 0) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - sys.perfs["gamnit shadow debug"].add app.perf_clock_shadow.lapse - end -end - -# Handles to reused GL buffers and texture -private class ShadowContext - - # Real screen framebuffer - var screen_framebuffer: Int = -1 - - # Framebuffer for the light point of view - var light_view_framebuffer: Int = -1 - - # Depth attached to `light_view_framebuffer` - var depth_texture: Int = -1 - - # Buffer name for vertex data - var buffer_array: Int = -1 - - # Prepare all attributes once per resolution change - fun prepare_once(display: GamnitDisplay, shadow_resolution: Int) - do - assert display.gl_extensions.has("GL_OES_depth_texture") - - # Set aside the real screen framebuffer name - var screen_framebuffer = glGetIntegerv(gl_FRAMEBUFFER_BINDING, 0) - self.screen_framebuffer = screen_framebuffer - - # Framebuffer - var framebuffer = glGenFramebuffers(1).first - glBindFramebuffer(gl_FRAMEBUFFER, framebuffer) - assert glIsFramebuffer(framebuffer) - self.light_view_framebuffer = framebuffer - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # Depth & texture/color - var textures = glGenTextures(1) - self.depth_texture = textures[0] - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - resize(display, shadow_resolution) - - # Array buffer - buffer_array = glGenBuffers(1).first - glBindBuffer(gl_ARRAY_BUFFER, buffer_array) - assert glIsBuffer(buffer_array) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - ## coord - var data = new Array[Float] - data.add_all([-1.0, -1.0, 0.0, - 1.0, -1.0, 0.0, - -1.0, 1.0, 0.0, - 1.0, 1.0, 0.0]) - ## tex_coord - data.add_all([0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 1.0, 1.0]) - var c_data = new GLfloatArray.from(data) - glBufferData(gl_ARRAY_BUFFER, data.length*4, c_data.native_array, gl_STATIC_DRAW) - - glBindBuffer(gl_ARRAY_BUFFER, 0) - - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - end - - # Init size or resize `depth_texture` - fun resize(display: GamnitDisplay, shadow_resolution: Int) - do - glBindFramebuffer(gl_FRAMEBUFFER, light_view_framebuffer) - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # Depth texture - var depth_texture = self.depth_texture - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, depth_texture) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_NEAREST) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # TODO support hardware shadows with GL ES 3.0 or GL_EXT_shadow_samplers - #glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_COMPARE_MODE, ...) - - glTexImage2D(gl_TEXTURE_2D, 0, gl_DEPTH_COMPONENT, - shadow_resolution, shadow_resolution, - 0, gl_DEPTH_COMPONENT, gl_UNSIGNED_SHORT, new Pointer.nul) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - glFramebufferTexture2D(gl_FRAMEBUFFER, gl_DEPTH_ATTACHMENT, gl_TEXTURE_2D, depth_texture, 0) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # Check if the framebuffer is complete and valid - assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE - - # Take down - glBindTexture(gl_TEXTURE_2D, 0) - glBindFramebuffer(gl_FRAMEBUFFER, 0) - gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - end - - var destroyed = false - - fun destroy - do - if destroyed then return - destroyed = true - - # Free the buffer - glDeleteBuffers([buffer_array]) - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - buffer_array = -1 - - # Free the array and framebuffer plus its attachments - glDeleteBuffers([buffer_array]) - glDeleteFramebuffers([light_view_framebuffer]) - glDeleteTextures([depth_texture]) - end -end - -redef class Material - # Optimized draw of `model`, a part of `actor`, from the view of `camera` - # - # This drawing should only produce usable depth data. The default behavior, - # uses `shadow_depth_program`. - protected fun draw_depth(actor: Actor, model: LeafModel, camera: Camera) - do - var program = app.shadow_depth_program - program.use - program.mvp.uniform camera.mvp_matrix - - var mesh = model.mesh - - program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0) - program.scale.uniform actor.scale - program.use_map_diffuse.uniform false - - program.tex_coord.array_enabled = true - program.tex_coord.array(mesh.texture_coords, 2) - - program.coord.array_enabled = true - program.coord.array(mesh.vertices, 3) - - program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll) - - if mesh.indices.is_empty then - glDrawArrays(mesh.draw_mode, 0, mesh.vertices.length/3) - else - glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array) - end - end - -end - -# Efficiently draw actors from the light view -class ShadowDepthProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec4 coord; - - // Vertex translation - uniform vec4 translation; - - // Vertex scaling - uniform float scale; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Vertex normal - attribute vec3 normal; - - // Model view projection matrix - uniform mat4 mvp; - - // Rotation matrix - uniform mat4 rotation; - - // Output for the fragment shader - varying vec2 v_tex_coord; - - void main() - { - vec4 pos = (vec4(coord.xyz * scale, 1.0) * rotation + translation); - gl_Position = pos * mvp; - - // Pass varyings to the fragment shader - v_tex_coord = vec2(tex_coord.x, 1.0 - tex_coord.y); - } - """ @ glsl_vertex_shader - - redef var fragment_shader_source = """ - precision mediump float; - - // Diffuse map - uniform bool use_map_diffuse; - uniform sampler2D map_diffuse; - - varying vec2 v_tex_coord; - - void main() - { - if (use_map_diffuse && texture2D(map_diffuse, v_tex_coord).a <= 0.01) { - discard; - } - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec4) is lazy - - # Should this program use the texture `map_diffuse`? - var use_map_diffuse = uniforms["use_map_diffuse"].as(UniformBool) is lazy - - # Diffuse texture unit - var map_diffuse = uniforms["map_diffuse"].as(UniformSampler2D) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Diffuse color - var diffuse_color = uniforms["diffuse_color"].as(UniformVec4) is lazy - - # Translation applied to each vertex - var translation = uniforms["translation"].as(UniformVec4) is lazy - - # Rotation matrix - var rotation = uniforms["rotation"].as(UniformMat4) is lazy - - # Scaling per vertex - var scale = uniforms["scale"].as(UniformFloat) is lazy - - # Model view projection matrix - var mvp = uniforms["mvp"].as(UniformMat4) is lazy -end - -# Draw the camera point of view on screen -private class LightPointOfViewProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec3 coord; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Output to the fragment shader - varying vec2 v_coord; - - void main() - { - gl_Position = vec4(coord, 1.0); - v_coord = tex_coord; - } - """ @ glsl_vertex_shader - - redef var fragment_shader_source = """ - precision mediump float; - - // Virtual screen texture / color attachment - uniform sampler2D texture0; - - // Input from the vertex shader - varying vec2 v_coord; - - void main() - { - gl_FragColor = texture2D(texture0, v_coord); - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec3) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Visible texture - var texture = uniforms["texture0"].as(UniformSampler2D) is lazy -end diff --git a/lib/gamnit/depth/stereoscopic_view.nit b/lib/gamnit/depth/stereoscopic_view.nit deleted file mode 100644 index 2857e7d14f..0000000000 --- a/lib/gamnit/depth/stereoscopic_view.nit +++ /dev/null @@ -1,88 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Refine `EulerCamera` and `App::frame_core_draw` to get a stereoscopic view -module stereoscopic_view - -import depth -intrude import cameras - -redef class EulerCamera - redef var mvp_matrix = new Matrix.identity(4) - - # Half of the distance between the eyes - var eye_separation: Float = 0.03125 - - # MVP matrix for the left eye - fun mvp_matrix_left: Matrix do return mvp_matrix_eye(eye_separation) - - # MVP matrix for the right eye - fun mvp_matrix_right: Matrix do return mvp_matrix_eye(-eye_separation) - - # Get an MVP matrix for an eye at `diff` world unit from the center - private fun mvp_matrix_eye(diff: Float): Matrix - do - var view = new Matrix.identity(4) - - # Translate the world away from the camera - view.translate(-position.x/2.0, -position.y/2.0, -position.z/2.0) - - # Rotate the camera, first by looking left or right, then up or down - view = view * rotation_matrix - - # Apply eye transformation - var translation = new Matrix.identity(4) - translation.translate(diff, 0.0, 0.0) - view = view * translation - - # Use a projection matrix with a depth - var projection = new Matrix.perspective(pi*field_of_view_y/2.0, - display.aspect_ratio, near, far) - - return view * projection - end -end - -redef class GamnitDisplay - - # With stereoscopic view, the aspect ratio (in each eye) is half of the screen - redef fun aspect_ratio do return super / 2.0 -end - -redef class App - redef fun frame_core_draw(display) do frame_core_stereoscopic display - - # Split the screen in two, and call `frame_core_depth` for each eyes - protected fun frame_core_stereoscopic(display: GamnitDisplay) - do - var half_width = display.width / 2 - - # Left eye - glViewport(0, 0, half_width, display.height) - world_camera.mvp_matrix = world_camera.mvp_matrix_left - frame_core_depth display - - # Right eye - glViewport(half_width, 0, half_width, display.height) - world_camera.mvp_matrix = world_camera.mvp_matrix_right - frame_core_depth display - - # We reset the viewport for selection - glViewport(0, 0, display.width, display.height) - - # Check for errors - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print gl_error - end -end diff --git a/lib/gamnit/depth/vr.nit b/lib/gamnit/depth/vr.nit deleted file mode 100644 index 1c3a845315..0000000000 --- a/lib/gamnit/depth/vr.nit +++ /dev/null @@ -1,19 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# VR support for gamnit depth, for Android only -module vr - -import cardboard -import stereoscopic_view diff --git a/lib/gamnit/display.nit b/lib/gamnit/display.nit deleted file mode 100644 index 0d78907ed5..0000000000 --- a/lib/gamnit/display.nit +++ /dev/null @@ -1,79 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Abstract display services -module display - -import ::glesv2 -import mnit::input - -import display_linux is conditional(linux) -import display_android is conditional(android) -import display_ios is conditional(ios) - -# Should Gamnit be more verbose? -fun debug_gamnit: Bool do return false - -# General display class, is sized and drawable -class GamnitDisplay - - # Width of the display, in pixels - fun width: Int is abstract - - # Height of the display, in pixels - fun height: Int is abstract - - # Aspect ratio of the screen, `width / height` - fun aspect_ratio: Float do return width.to_f / height.to_f - - # Is the cursor locked et the center of the screen? - var lock_cursor = false is writable - - # Is the cursor visible? - # - # Only affects the desktop implementations. - var show_cursor: Bool = true is writable - - # Number of bits used for the red value in the color buffer - fun red_bits: Int do return 8 - - # Number of bits used for the green value in the color buffer - fun green_bits: Int do return 8 - - # Number of bits used for the blue value in the color buffer - fun blue_bits: Int do return 8 - - # Prepare this display - # - # The implementation varies per platform. - fun setup is abstract - - # Close this display and free underlying resources - # - # The implementation varies per platform. - fun close do end - - # Flip the display buffers - # - # The implementation varies per platform. - fun flip do end - - # Loop on available events and feed them back to the app - # - # The implementation varies per platform. - fun feed_events do end - - # Extensions to OpenGL ES 2.0 supported by the current configuration - var gl_extensions: Array[String] is lazy do return glGetString(gl_EXTENSIONS).split(' ') -end diff --git a/lib/gamnit/display_android.nit b/lib/gamnit/display_android.nit deleted file mode 100644 index d198790bc4..0000000000 --- a/lib/gamnit/display_android.nit +++ /dev/null @@ -1,90 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Gamnit display implementation for Android -# -# Gamnit apps on Android require OpenGL ES 3.0 because, even if it uses only -# the OpenGL ES 2.0 API, the default shaders have more than 8 vertex attributes. -# OpenGL ES 3.0 ensures at least 8 vertex attributes, while 2.0 ensures only 4. -# -# This module relies on `android::native_app_glue` and the Android NDK. -module display_android is - android_manifest """""" -end - -import ::android::game -intrude import android::load_image - -private import gamnit::egl -intrude import textures - -redef class GamnitDisplay - - redef fun setup - do - var native_display = egl_default_display - var native_window = app.native_app_glue.window - - setup_egl_display native_display - - # We need 8 bits per color for selection by color - select_egl_config(red_bits, green_bits, blue_bits, 0, 8, 0) - - var format = egl_config.attribs(egl_display).native_visual_id - assert not native_window.address_is_null - native_window.set_buffers_geometry(0, 0, format) - - setup_egl_context native_window - end - - redef fun close do close_egl -end - -redef class TextureAsset - - private fun load_bitmap(asset_manager: AssetManager, path: String): NativeBitmap - do - return asset_manager.bitmap(path) - end - - redef fun load_from_platform - do - jni_env.push_local_frame 4 - - var asset_manager = app.asset_manager - var bmp = load_bitmap(asset_manager, path) - if bmp.is_java_null then - error = new Error("Failed to load texture at '{path}'") - jni_env.pop_local_frame - return - end - - var buf = bmp.copy_pixels(unmultiply=not premultiply_alpha) - loaded = true - width = bmp.width.to_f - height = bmp.height.to_f - var pixels = buf.native_array - - load_from_pixels(pixels, bmp.width, bmp.height, gl_RGBA) - buf.destroy - bmp.recycle - - jni_env.pop_local_frame - end -end - -redef class Pointer - # Disable out premultiply as we use only the one from Android - redef fun premultiply_alpha(width, height) do end -end diff --git a/lib/gamnit/display_ios.nit b/lib/gamnit/display_ios.nit deleted file mode 100644 index 3b8cfdb725..0000000000 --- a/lib/gamnit/display_ios.nit +++ /dev/null @@ -1,111 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Gamnit display implementation for iOS -module display_ios - -import ios -import ios::glkit -intrude import ios::assets -intrude import textures - -in "ObjC" `{ - #import - #import -`} - -redef class GamnitDisplay - - redef var width = 200 - redef var height = 300 - - # Underlying GLKit game controller and view - var glk_view: NitGLKView is noautoinit - - redef fun setup - do - var view = new GamnitGLKView - view.multiple_touch_enabled = true - self.glk_view = view - self.width = view.drawable_width - self.height = view.drawable_height - end -end - -# View controller implemented by gamnit -class GamnitGLKView - super NitGLKView -end - -redef class TextureAsset - redef fun load_from_platform - do - var error = glGetError - assert error == gl_NO_ERROR else print_error error - - # Find file - var ns_path = ("assets"/path).to_nsstring - var path_in_bundle = asset_path(ns_path) - if path_in_bundle.address_is_null then - self.error = new Error("Texture at '{path}' not found") - return - end - - # Load texture - var glk_texture = glkit_load(path_in_bundle, premultiply_alpha) - if glk_texture.address_is_null then - self.error = new Error("Failed to load texture at '{self.path}'") - return - end - - gl_texture = glk_texture.name - width = glk_texture.width.to_f - height = glk_texture.height.to_f - loaded = true - - error = glGetError - assert error == gl_NO_ERROR - end - - # Load image at `path` with GLKit services - private fun glkit_load(path: NSString, premultiply: Bool): GLKTextureInfo - in "ObjC" `{ - - // The premultiplication flag has been inverted between iOS 9 and 10 - NSNumber *premultiply_opt; - NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare: @"10.0.0" options: NSNumericSearch]; - if (order == NSOrderedSame || order == NSOrderedDescending) { - // >= 10 - premultiply_opt = premultiply? @NO: @YES; - } else { - // < 10 - premultiply_opt = premultiply? @YES: @NO; - } - - NSDictionary *options = @{GLKTextureLoaderApplyPremultiplication: premultiply_opt}; - NSError *error; - GLKTextureInfo *spriteTexture = [GLKTextureLoader textureWithContentsOfFile: path options: options error: &error]; - if (error != nil) NSLog(@"Failed to load texture: %@", [error localizedDescription]); // TODO return details to Nit - - return spriteTexture; - `} -end - -private extern class GLKTextureInfo in "ObjC" `{ GLKTextureInfo * `} - super NSObject - - fun name: Int in "ObjC" `{ return self.name; `} - fun width: Int in "ObjC" `{ return self.width; `} - fun height: Int in "ObjC" `{ return self.height; `} -end diff --git a/lib/gamnit/display_linux.nit b/lib/gamnit/display_linux.nit deleted file mode 100644 index f678bbeae1..0000000000 --- a/lib/gamnit/display_linux.nit +++ /dev/null @@ -1,145 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Gamnit display implementation for GNU/Linux using `egl`, `sdl` and `x11` -module display_linux - -import sdl2::image -import sdl2::mixer - -import egl # local to gamnit -intrude import display -intrude import textures - -redef class GamnitDisplay - - # Actual width or desired width of the window, can be set before calling `setup` - fun width=(value: Int) do requested_width = value - private var requested_width = 1920 - - # Actual height or desired height of the window, can be set before calling `setup` - fun height=(value: Int) do requested_height = value - private var requested_height = 1080 - - redef fun show_cursor do return sdl.show_cursor - - redef fun show_cursor=(val) do sdl.show_cursor = val - - redef fun lock_cursor=(val) do sdl.relative_mouse_mode = val - - redef fun lock_cursor do return sdl.relative_mouse_mode - - # Setup SDL, wm, EGL in order - redef fun setup - do - if debug_gamnit then print "Setting up SDL" - self.sdl_window = setup_sdl(requested_width, requested_height) - - if debug_gamnit then print "Setting up window manager" - setup_egl_display sdl_window.wm_info.display_handle - - if debug_gamnit then print "Setting up EGL context" - select_egl_config(red_bits, green_bits, blue_bits, 8, 8, 0) - setup_egl_context sdl_window.wm_info.window_handle - end - - # Close EGL and SDL in reverse order of `setup` (nothing to do for X11) - redef fun close - do - close_egl - close_sdl - end - - # --- - # SDL - - # The SDL display managing the window and events - var sdl_window: SDLWindow is noautoinit - - # Title of the window, must be set before creating the window (or redef) - var window_title = "gamnit game" is lazy, writable - - # Setup the SDL display and lib - fun setup_sdl(window_width, window_height: Int): SDLWindow - do - assert sdl.initialize((new SDLInitFlags).video.audio) else - print_error "Failed to initialize SDL2: {sdl.error}" - end - - var img_flags = (new SDLImgInitFlags).png.jpg - assert sdl.img.initialize(img_flags) == img_flags else - print_error "Failed to initialize SDL2 IMG: {sdl.error}" - end - - var sdl_window = new SDLWindow(window_title.to_cstring, window_width, window_height, sdl_window_flags) - assert not sdl_window.address_is_null else - print_error "Failed to create SDL2 window: {sdl.error}" - end - - # Audio support - var inited = mix.initialize(mix_init_flags) - if inited != mix_init_flags then - print_error "Failed to load SDL2 mixer format supports: {mix.error}" - end - - var open = mix.open_audio(44100, mix.default_format, 2, 1024) - if not open then - print_error "Failed to initialize SDL2 mixer: {mix.error}" - end - - return sdl_window - end - - # SDL2 window initialization flags - # - # The default value supports OpenGL and window resizing. - var sdl_window_flags: SDLWindowFlags = (new SDLWindowFlags).opengl.resizable is lazy, writable - - # SDL2 mixer initialization flags - # - # Defaults to FLAC, MP3 and OGG. - var mix_init_flags: MixInitFlags = mix.flac | mix.mp3 | mix.ogg is lazy, writable - - # Close the SDL display - fun close_sdl - do - sdl_window.destroy - mix.close_audio - mix.quit - sdl.finalize - end -end - -redef class TextureAsset - - redef fun load_from_platform - do - var path = "assets" / path - - var surface = new SDLSurface.load(path.to_cstring) - if surface.address_is_null then - error = new Error("Failed to load texture at '{path}'") - return - end - - self.width = surface.w.to_f - self.height = surface.h.to_f - var format = if surface.format.amask > 0u32 then gl_RGBA else gl_RGB - var pixels = surface.pixels - - load_from_pixels(pixels, surface.w, surface.h, format) - - surface.free - end -end diff --git a/lib/gamnit/dynamic_resolution.nit b/lib/gamnit/dynamic_resolution.nit deleted file mode 100644 index 2c6a4c88b7..0000000000 --- a/lib/gamnit/dynamic_resolution.nit +++ /dev/null @@ -1,354 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Virtual screen with a resolution independent from the real screen -# -# The attribute `dynamic_resolution_ratio` sets the size of the virtual screen -# in relation to the real screen. See its documentation for more information. -# -# Reference implementation: -# https://software.intel.com/en-us/articles/dynamic-resolution-rendering-on-opengl-es-2 -module dynamic_resolution - -import performance_analysis - -import gamnit - -redef class App - # Resolution of the dynamic screen as ratio of the real screen resolution. - # - # - At 1.0, the default, the virtual screen is not used and the visuals are - # drawn directly to the real screen and pixels. - # - When below 1.0, there is less pixels in the dynamic screen than in the - # real screen. This reduces the strain on the GPU, especially of high - # resolution displays. - # - Values above 1.0 are not supported at this point, but they would allow - # super-sampling. - # - # This value must be set either by the user using a video quality slider or - # by an heuristic according to the device capabilities. - # A lower value should use less battery power on mobile devices. - # - # This value is applied to both X and Y, so it has an exponential effect on - # the number of pixels. - var dynamic_resolution_ratio = 1.0 is writable - - # Minimum dynamic screen resolution - var min_dynamic_resolution_ratio = 0.0125 is writable - - # Maximum dynamic screen resolution, must be set before first draw - var max_dynamic_resolution_ratio = 1.0 is writable - - private var dynres_program = new DynamicResolutionProgram - - private var perf_clock_dynamic_resolution = new Clock is lazy - - # Real screen framebuffer - private var screen_framebuffer_cache: Int = -1 - - # Real screen framebuffer name - fun screen_framebuffer: Int - do - var cache = screen_framebuffer_cache - if cache != -1 then return cache - - cache = glGetIntegerv(gl_FRAMEBUFFER_BINDING, 0) - self.screen_framebuffer_cache = cache - return cache - end - - redef fun create_gamnit - do - super - - var program = dynres_program - program.compile_and_link - var error = program.error - assert error == null else print_error error - - dynamic_context_cache = null - end - - redef fun on_resize(display) - do - if dynamic_context_cache != null then dynamic_context.resize(display, max_dynamic_resolution_ratio) - super - end - - # Prepare to draw to the dynamic screen if `dynamic_resolution_ratio != 1.0` - protected fun frame_core_dynamic_resolution_before(display: GamnitDisplay) - do - # TODO autodetect when to lower/increase resolution - - if dynamic_resolution_ratio == 1.0 then - # Draw directly to the screen framebuffer - bind_screen_framebuffer screen_framebuffer - glViewport(0, 0, display.width, display.height) - glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT - - assert glGetError == gl_NO_ERROR - return - end - - # Draw to our dynamic framebuffer - glBindFramebuffer(gl_FRAMEBUFFER, dynamic_context.dynamic_framebuffer) - - var ratio = dynamic_resolution_ratio - ratio = ratio.clamp(min_dynamic_resolution_ratio, max_dynamic_resolution_ratio) - glViewport(0, 0, (display.width.to_f*ratio).to_i, - (display.height.to_f*ratio).to_i) - - glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT - - assert glGetError == gl_NO_ERROR - end - - # Draw the dynamic screen to the real screen if `dynamic_resolution_ratio != 1.0` - protected fun frame_core_dynamic_resolution_after(display: GamnitDisplay) - do - if dynamic_resolution_ratio == 1.0 then return - perf_clock_dynamic_resolution.lapse - - var ratio = dynamic_resolution_ratio - ratio = ratio.clamp(min_dynamic_resolution_ratio, max_dynamic_resolution_ratio) - - bind_screen_framebuffer screen_framebuffer - glBindBuffer(gl_ARRAY_BUFFER, dynamic_context.buffer_array) - glViewport(0, 0, display.width, display.height) - glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT - dynres_program.use - - # Uniforms - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, dynamic_context.texture) - dynres_program.texture.uniform 0 - dynres_program.ratio.uniform ratio - - # Attributes - var sizeof_gl_float = 4 - var n_floats = 3 - glEnableVertexAttribArray dynres_program.coord.location - glVertexAttribPointeri(dynres_program.coord.location, n_floats, gl_FLOAT, false, 0, 0) - var offset = 4 * n_floats * sizeof_gl_float - - n_floats = 2 - glEnableVertexAttribArray dynres_program.tex_coord.location - glVertexAttribPointeri(dynres_program.tex_coord.location, n_floats, gl_FLOAT, false, 0, offset) - assert glGetError == gl_NO_ERROR - - # Draw - glDrawArrays(gl_TRIANGLE_STRIP, 0, 4) - assert glGetError == gl_NO_ERROR - - # Take down - glBindBuffer(gl_ARRAY_BUFFER, 0) - assert glGetError == gl_NO_ERROR - - sys.perfs["gamnit flat dyn res"].add app.perf_clock_dynamic_resolution.lapse - end - - # Framebuffer and texture for dynamic resolution intermediate drawing - private fun dynamic_context: DynamicContext - do - var cache = dynamic_context_cache - if cache != null then return cache - - cache = create_dynamic_context - dynamic_context_cache = cache - return cache - end - - private var dynamic_context_cache: nullable DynamicContext = null - - private fun create_dynamic_context: DynamicContext - do - # TODO option or flag to regen on real resolution change. - - var display = display - assert display != null - - var context = new DynamicContext - context.prepare_once(display, max_dynamic_resolution_ratio) - return context - end -end - -# Handles to reused GL buffers and texture -private class DynamicContext - - # Dynamic screen framebuffer - var dynamic_framebuffer: Int = -1 - - # Depth renderbuffer attached to `dynamic_framebuffer` - var depth_renderbuffer: Int = -1 - - # Texture attached to `dynamic_framebuffer` as color attachment - var texture: Int = -1 - - # Buffer name for vertex data - var buffer_array: Int = -1 - - # Prepare all attributes once per resolution change - fun prepare_once(display: GamnitDisplay, max_dynamic_resolution_ratio: Float) - do - # TODO enable antialiasing. - - # Framebuffer - var framebuffer = glGenFramebuffers(1).first - glBindFramebuffer(gl_FRAMEBUFFER, framebuffer) - assert glIsFramebuffer(framebuffer) - self.dynamic_framebuffer = framebuffer - assert glGetError == gl_NO_ERROR - - # Depth & texture/color - var depthbuffer = glGenRenderbuffers(1).first - self.depth_renderbuffer = depthbuffer - var texture = glGenTextures(1).first - self.texture = texture - assert glGetError == gl_NO_ERROR - - resize(display, max_dynamic_resolution_ratio) - assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE - - # Array buffer - buffer_array = glGenBuffers(1).first - glBindBuffer(gl_ARRAY_BUFFER, buffer_array) - assert glIsBuffer(buffer_array) - assert glGetError == gl_NO_ERROR - - ## coord - var data = new Array[Float] - data.add_all([-1.0, -1.0, 0.0, - 1.0, -1.0, 0.0, - -1.0, 1.0, 0.0, - 1.0, 1.0, 0.0]) - ## tex_coord - data.add_all([0.0, 0.0, - 1.0, 0.0, - 0.0, 1.0, - 1.0, 1.0]) - var c_data = new GLfloatArray.from(data) - glBufferData(gl_ARRAY_BUFFER, data.length*4, c_data.native_array, gl_STATIC_DRAW) - - glBindBuffer(gl_ARRAY_BUFFER, 0) - - assert glGetError == gl_NO_ERROR - end - - # Init size or resize `depth_renderbuffer` and `texture` - fun resize(display: GamnitDisplay, max_dynamic_resolution_ratio: Float) - do - var width = (display.width.to_f * max_dynamic_resolution_ratio).to_i - var height = (display.height.to_f * max_dynamic_resolution_ratio).to_i - - glBindFramebuffer(gl_FRAMEBUFFER, dynamic_framebuffer) - - var depthbuffer = self.depth_renderbuffer - var texture = self.texture - - # Depth - glBindRenderbuffer(gl_RENDERBUFFER, depthbuffer) - assert glIsRenderbuffer(depthbuffer) - glRenderbufferStorage(gl_RENDERBUFFER, gl_DEPTH_COMPONENT16, width, height) - glFramebufferRenderbuffer(gl_FRAMEBUFFER, gl_DEPTH_ATTACHMENT, gl_RENDERBUFFER, depthbuffer) - assert glGetError == gl_NO_ERROR - - # Texture - glBindTexture(gl_TEXTURE_2D, texture) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_S, gl_CLAMP_TO_EDGE) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_WRAP_T, gl_CLAMP_TO_EDGE) - glTexImage2D(gl_TEXTURE_2D, 0, gl_RGB, width, height, - 0, gl_RGB, gl_UNSIGNED_BYTE, new Pointer.nul) - glFramebufferTexture2D(gl_FRAMEBUFFER, gl_COLOR_ATTACHMENT0, gl_TEXTURE_2D, texture, 0) - - assert glGetError == gl_NO_ERROR - - # Take down - glBindRenderbuffer(gl_RENDERBUFFER, 0) - glBindFramebuffer(gl_FRAMEBUFFER, 0) - - assert glGetError == gl_NO_ERROR - end - - var destroyed = false - fun destroy - do - if destroyed then return - destroyed = true - - # Free the buffer - glDeleteBuffers([buffer_array]) - assert glGetError == gl_NO_ERROR - buffer_array = -1 - - # Free the dynamic framebuffer and its attachments - glDeleteBuffers([buffer_array]) - glDeleteFramebuffers([dynamic_framebuffer]) - glDeleteRenderbuffers([depth_renderbuffer]) - glDeleteTextures([texture]) - end -end - -private class DynamicResolutionProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec3 coord; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Output to the fragment shader - varying vec2 v_coord; - - void main() - { - gl_Position = vec4(coord, 1.0); - v_coord = tex_coord; - } - """ @ glsl_vertex_shader - - redef var fragment_shader_source = """ - precision mediump float; - - // Virtual screen texture / color attachment - uniform sampler2D texture0; - - // Input from the vertex shader - varying vec2 v_coord; - - // Ratio of the virtual screen to draw - uniform float ratio; - - void main() - { - gl_FragColor = texture2D(texture0, v_coord*ratio); - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec3) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Virtual screen texture / color attachment - var texture = uniforms["texture0"].as(UniformSampler2D) is lazy - - # Ratio of the virtual screen to draw - var ratio = uniforms["ratio"].as(UniformFloat) is lazy -end diff --git a/lib/gamnit/egl.nit b/lib/gamnit/egl.nit deleted file mode 100644 index f425b5853a..0000000000 --- a/lib/gamnit/egl.nit +++ /dev/null @@ -1,164 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Use of EGL to implement Gamnit on GNU/Linux and Android -module egl - -import ::egl - -import gamnit::display - -redef class GamnitDisplay - - # The EGL display - var egl_display: EGLDisplay is noautoinit - - # The EGL context - var egl_context: EGLContext is noautoinit - - # The EGL surface for the window - var window_surface: EGLSurface is noautoinit - - # The selected EGL configuration - var egl_config: EGLConfig is noautoinit - - # Setup the EGL display for the given `native_display` - protected fun setup_egl_display(native_display: Pointer) - do - var egl_display = new EGLDisplay(native_display) - assert egl_display.is_valid else print "new EGL display is not valid" - - egl_display.initialize - assert egl_display.is_valid else print "EGL initialize error: {egl_display.error}" - - self.egl_display = egl_display - end - - # Select an EGL config - protected fun select_egl_config(red, green, blue, alpha, depth, stencil: Int) - do - var config_chooser = new EGLConfigChooser - config_chooser.renderable_type_egl - config_chooser.surface_type_egl - config_chooser.red_size = red - config_chooser.green_size = green - config_chooser.blue_size = blue - if alpha > 0 then config_chooser.alpha_size = alpha - if depth > 0 then config_chooser.depth_size = depth - if stencil > 0 then config_chooser.stencil_size = stencil - - config_chooser.sample_buffers = 1 - config_chooser.samples = 4 - - config_chooser.close - - var configs = config_chooser.choose(egl_display) - assert configs != null else print "Choosing EGL config failed: {egl_display.error}" - assert not configs.is_empty else print "Found no EGL config" - - if debug_gamnit then - print "EGL available configurations:" - for config in configs do - var attribs = config.attribs(egl_display) - print "* Conformant to: {attribs.conformant}" - print " Caveats: {attribs.caveat}" - print " Size of RGBA: {attribs.red_size} {attribs.green_size} {attribs.blue_size} {attribs.alpha_size}" - print " Buffer, depth, stencil: {attribs.buffer_size} {attribs.depth_size} {attribs.stencil_size}" - print " Sample buffers, samples: {attribs.sample_buffers} {attribs.samples}" - end - end - - # We use the first one, it is recommended - self.egl_config = configs.first - end - - # Setup the EGL context for the given `native_window` - protected fun setup_egl_context(native_window: Pointer) - do - var window_surface = egl_display.create_window_surface(egl_config, native_window, [0]) - assert window_surface.is_ok else print "Creating EGL window surface failed: {egl_display.error}" - self.window_surface = window_surface - - egl_context = egl_display.create_context(egl_config) - assert egl_context.is_ok else print "Creating EGL context failed: {egl_display.error}" - - var make_current_res = egl_display.make_current(window_surface, window_surface, egl_context) - assert make_current_res else print "Creating EGL make current failed: {egl_display.error}" - - # TODO make the API selection configurable per platform - assert egl_bind_opengl_es_api else print "EGL bind API failed: {egl_display.error}" - end - - # Check if the current configuration of `native_window` is still valid - # - # There is two return values: - # * Returns `true` if the Gamnit services should be recreated. - # * Sets `native_window_is_invalid` if the system provided window handle is invalid. - # We should wait until we are provided a valid window handle. - fun check_egl_context(native_window: Pointer): Bool - do - native_window_is_invalid = false - - if not egl_context.is_ok then - # Needs recreating - egl_context = egl_display.create_context(egl_config) - assert egl_context.is_ok else print "Creating EGL context failed: {egl_display.error}" - end - - var success = egl_display.make_current(window_surface, window_surface, egl_context) - if not success then - var error = egl_display.error - print "check_egl_context make_current: {error}" - - - if error.is_bad_native_window then - # native_window is invalid - native_window_is_invalid = true - return true - - else if not error.is_success then - # The context is now invalid, rebuild it - setup_egl_context native_window - return true - end - end - return false - end - - # Return value from `check_egl_context`, the current native window is invalid - # - # We should wait until we are provided a valid window handle. - var native_window_is_invalid = false - - redef fun width do return window_surface.attribs(egl_display).width - - redef fun height do return window_surface.attribs(egl_display).height - - # Close the EGL context - fun close_egl - do - egl_display.make_current(new EGLSurface.none, new EGLSurface.none, new EGLContext.none) - egl_display.destroy_context(egl_context) - egl_display.destroy_surface(window_surface) - end - - redef fun flip - do - assert glGetError == gl_NO_ERROR - - assert egl_display.is_valid - - egl_display.swap_buffers(window_surface) - end -end diff --git a/lib/gamnit/examples/fonts_showcase/Makefile b/lib/gamnit/examples/fonts_showcase/Makefile deleted file mode 100644 index 0c6b3b50f7..0000000000 --- a/lib/gamnit/examples/fonts_showcase/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -bin/fonts_showcase: $(shell nitls -M src/fonts_showcase.nit -m linux) - mkdir -p bin/ - nitc src/fonts_showcase.nit -m linux -o $@ - -android: bin/fonts_showcase.apk -bin/fonts_showcase.apk: $(shell nitls -M src/fonts_showcase.nit -m android) - mkdir -p bin/ - nitc src/fonts_showcase.nit -m android -o $@ - -check: - nitunit . - -clean: - rm -rf bin/ diff --git a/lib/gamnit/examples/fonts_showcase/README.md b/lib/gamnit/examples/fonts_showcase/README.md deleted file mode 100644 index 039d3e072e..0000000000 --- a/lib/gamnit/examples/fonts_showcase/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Simple application to display and test the behavior the different `TextSprites` settings. - -# Artwork - -The font Josefin_Sans is published under SIL Open Font License 1.1 by Santiago Orozco diff --git a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.fnt b/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.fnt deleted file mode 100644 index 397d2f64f7..0000000000 --- a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.fnt +++ /dev/null @@ -1,1177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.png b/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.png deleted file mode 100644 index 3e8bd233d1..0000000000 Binary files a/lib/gamnit/examples/fonts_showcase/assets/Josefin_Sans/font.png and /dev/null differ diff --git a/lib/gamnit/examples/fonts_showcase/assets/anchor.png b/lib/gamnit/examples/fonts_showcase/assets/anchor.png deleted file mode 100644 index 2aef81f0d8..0000000000 Binary files a/lib/gamnit/examples/fonts_showcase/assets/anchor.png and /dev/null differ diff --git a/lib/gamnit/examples/fonts_showcase/assets/corner.png b/lib/gamnit/examples/fonts_showcase/assets/corner.png deleted file mode 100644 index 12f79861db..0000000000 Binary files a/lib/gamnit/examples/fonts_showcase/assets/corner.png and /dev/null differ diff --git a/lib/gamnit/examples/fonts_showcase/package.ini b/lib/gamnit/examples/fonts_showcase/package.ini deleted file mode 100644 index 4503def1fa..0000000000 --- a/lib/gamnit/examples/fonts_showcase/package.ini +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name=fonts_showcase -tags=game,example -maintainer=Alexis Laferrière -license=WTFPL -[upstream] -browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/fonts_showcase/ -git=https://github.com/nitlang/nit.git -git.directory=lib/gamnit/examples/fonts_showcase/ -homepage=http://gamnit.org -issues=https://github.com/nitlang/nit/issues diff --git a/lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit b/lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit deleted file mode 100644 index 91f30738ae..0000000000 --- a/lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit +++ /dev/null @@ -1,197 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the Do What The Fuck You Want To -# Public License, Version 2, as published by Sam Hocevar. See -# http://sam.zoy.org/projects/COPYING.WTFPL for more details. - -# Font support showcase -module fonts_showcase is - example - app_name "gamnit fonts" - app_namespace "org.gamnit.fonts_showcase" - app_version(1, 0, git_revision) - android_api_target 10 - android_manifest_activity """android:screenOrientation="sensorLandscape" """ -end - -import gamnit::flat -import gamnit::bmfont - -redef class App - - # Asset font used to display text - var font = new BMFontAsset("Josefin_Sans/font.fnt") - - # Anchor texture identifying the anchor coordinates of each `TextSprites` - var anchor = new Texture("anchor.png") - - # Bottom right corner - var corner = new Texture("corner.png") - - redef fun create_scene - do - super - - for tex in all_root_textures do - var error = tex.error - if error != null then print_error "Texture '{tex}' failed to load: {error}" - end - - update_text - end - - # Draw or redraw all the `TextSprites` - fun update_text - do - # Remove existing text and sprites - ui_sprites.clear - var texts = new Array[TextSprites] - - # Shared content - var description = "The anchor icon identifies the coordinate of TextSprites::anchor." - var lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et [dolore magna](my_link asdf) aliqua." - var color = [0.0, 0.25, 0.5] - - # --- - # TextSprites (the interesting part) - - # Aligned text (no max_width) - texts.add new TextSprites(font, - ui_camera.top.offset(-400.0, 0.0, 0.0), - "Left, align=0.0:\n"+description) - - texts.add new TextSprites(font, - ui_camera.top.offset(-400.0, -100.0, 0.0), - "Right, align=1.0:\n"+description, align=1.0) - - texts.add new TextSprites(font, - ui_camera.top.offset(-400.0, -200.0, 0.0), - "Center, align=0.5:\n"+description, align=0.5) - - texts.add new TextSprites(font, - ui_camera.top.offset(-400.0, -300.0, 0.0), - "Weird, align=0.2:\n"+description, align=0.2) - - # Aligned with max width - texts.add new TextSprites(font, - ui_camera.top_left.offset(100.0, -400.0, 0.0), - "Left, max_width=400.0:\n"+lorem_ipsum, - align=0.0, max_width=400.0) - - texts.add new TextSprites(font, - ui_camera.top_left.offset(1000.0, -400.0, 0.0), - "Right, max_width=400.0, scale=0.66:\n"+lorem_ipsum, - align=1.0, max_width=400.0, scale=0.66) - - texts.add new TextSprites(font, - ui_camera.top_left.offset(300.0, -700.0, 0.0), - "Center, max_width=400.0:\n"+lorem_ipsum, - align=0.5, max_width=400.0) - - texts.add new TextSprites(font, - ui_camera.top_left.offset(680.0, -700.0, 0.0), - "Weird, max_width=400.0:\n"+lorem_ipsum, - align=0.2, max_width=400.0) - - # Max width & height - texts.add new TextSprites(font, - ui_camera.top_left.offset(1100.0, -400.0, 0.0), - "max_width & max_height:\n"+lorem_ipsum, - max_width=600.0, max_height=150.0) - - # Thin max_width with overflows - texts.add new TextSprites(font, - ui_camera.top_left.offset(1100.0, -600.0, 0.0), - "The 1{plu}st{pld} word of a line can always overflow:\n"+lorem_ipsum, - max_width=100.0, max_height=400.0) - - # No wrap - texts.add new TextSprites(font, - ui_camera.top_left.offset(1300.0, -600.0, 0.0), - "wrap=false:\nLong lines are cut short blah blah blah\n"+lorem_ipsum, - max_width=400.0, wrap=false) - - # Bottom align - texts.add new TextSprites(font, - ui_camera.top_left.offset(1300.0, -1000.0, 0.0), - "valign=1.0:\n"+lorem_ipsum, - max_width=400.0, valign=1.0) - - # Center valign - texts.add new TextSprites(font, - ui_camera.top_left.offset(1500.0, -220.0, 0.0), - "align=0.5, valign=0.5:\n"+lorem_ipsum, - max_width=400.0, align=0.5, valign=0.5) - - # --- - # Links - - for ts in texts do - for link_name, sprites in ts.links do - print "Link: {link_name}" - for s in sprites do s.green = 0.0 - end - end - - # --- - # Anchors and background boxes - - # Gradient background for the max_width texts - var box = new CustomTexture(400.0, 200.0) - for x in 400.times do for y in 150.times do - var p = 1.0-1.0*y.to_f/150.0 - p = p.sqrt - box[x, y] = color + [p] - end - box.load - for i in [4..8[ do - var t = texts[i] - ui_sprites.add new Sprite(box, - t.anchor.offset((-t.align+0.5)*t.max_width.as(not null), - -100.0, -1.0)) - end - - # Plain boxes for max_width and max_height boxes - var large_box = new CustomTexture(600.0, 150.0) - large_box.fill color - large_box.load - ui_sprites.add new Sprite(large_box, texts[8].anchor.offset(300.0, -75.0, -1.0)) - - var thin_box = new CustomTexture(100.0, 400.0) - thin_box.fill color - thin_box.load - ui_sprites.add new Sprite(thin_box, ui_camera.top_left.offset(1150.0, -800.0, -1.0)) - - # Other TextSprites - ui_sprites.add new Sprite(box, texts[10].anchor.offset(200.0, -100.0, -1.0)) - - var s = new Sprite(box, texts[11].anchor.offset(200.0, 100.0, -1.0)) - s.rotation = pi - ui_sprites.add s - - ui_sprites.add new Sprite(box, texts[12].anchor.offset(0.0, 0.0, -1.0)) - - # Add the anchor effects to all TextSprites - for t in texts do ui_sprites.add new Sprite(anchor, t.anchor) - - for t in texts do - # Bottom right - var br = t.anchor.offset(t.width*(1.0-t.align), -t.height*(1.0-t.valign), 1.0) - ui_sprites.add new Sprite(corner, br) - end - end - - redef fun accept_event(event) - do - if event isa QuitEvent or - (event isa KeyEvent and event.name == "escape" and event.is_up) then - # Quit abruptly - exit 0 - else if event isa KeyEvent and event.is_up then - update_text - end - - return false - end -end diff --git a/lib/gamnit/examples/template/Makefile b/lib/gamnit/examples/template/Makefile deleted file mode 100644 index 270312e925..0000000000 --- a/lib/gamnit/examples/template/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -bin/template: $(shell nitls -M src/template.nit -m linux) - mkdir -p bin/ - nitc src/template.nit -m linux -o $@ - -android: bin/template.apk -bin/template.apk: $(shell nitls -M src/template.nit -m android) - mkdir -p bin/ - nitc src/template.nit -m android -o $@ - -check: - nitunit . - -clean: - rm -rf bin/ diff --git a/lib/gamnit/examples/template/README.md b/lib/gamnit/examples/template/README.md deleted file mode 100644 index 3ab2dbe087..0000000000 --- a/lib/gamnit/examples/template/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Template for a 2D _gamnit_ game - -This project can be copied and modified to use as starting point for a new _gamnit_ 2D game -using the `flat` API. - -Both assets are published under CC0. diff --git a/lib/gamnit/examples/template/assets/fighter.png b/lib/gamnit/examples/template/assets/fighter.png deleted file mode 100644 index d5f3ee4b38..0000000000 Binary files a/lib/gamnit/examples/template/assets/fighter.png and /dev/null differ diff --git a/lib/gamnit/examples/template/assets/laser.mp3 b/lib/gamnit/examples/template/assets/laser.mp3 deleted file mode 100644 index d1f2ba2b0e..0000000000 Binary files a/lib/gamnit/examples/template/assets/laser.mp3 and /dev/null differ diff --git a/lib/gamnit/examples/template/package.ini b/lib/gamnit/examples/template/package.ini deleted file mode 100644 index 854e1ce83f..0000000000 --- a/lib/gamnit/examples/template/package.ini +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name=template -tags=game,example -maintainer=Alexis Laferrière -license=WTFPL -[upstream] -browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/template/ -git=https://github.com/nitlang/nit.git -git.directory=lib/gamnit/examples/template/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues diff --git a/lib/gamnit/examples/template/src/template.nit b/lib/gamnit/examples/template/src/template.nit deleted file mode 100644 index 29b9618c46..0000000000 --- a/lib/gamnit/examples/template/src/template.nit +++ /dev/null @@ -1,138 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the Do What The Fuck You Want To -# Public License, Version 2, as published by Sam Hocevar. See -# http://sam.zoy.org/projects/COPYING.WTFPL for more details. - -# Template for a 2D gamnit game -module template is - example - app_name "gamnit template" - app_namespace "org.gamnit.template" - app_version(0, 1, git_revision) - android_api_target 10 -end - -import gamnit::flat # The 2D API, use `gamnit::depth` for 3D - -redef class App - - # Texture, loaded in `create_scene` - var texture = new Texture("fighter.png") - - # Sound effect, lazy loaded at first use - var sound = new Sound("laser.mp3") - - # Sprite, must be loaded in or after `on_create` - var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0)) is lazy - - redef fun create_scene - do - super - - # Report errors on all loaded textures. - # Root textures are associated to pixel data, - # whereas other texture may be subtextures of root textures. - for tex in all_root_textures do - var error = tex.error - if error != null then print_error "Texture '{tex}' failed to load: {error}" - end - - # Draw the texture as pixelated, it looks better for such - # a small texture. - texture.as(TextureAsset).pixelated = true - - # Create the sprite and make it visible. - sprites.add sprite - - # Make the sprite smaller, by default each pixel corresponds to 1 world unit. - # However, it is often preferable to make 1 world unit correspond to - # something meaningful in the game world, such as 1 meter. - # - # Scale the ship so it is approximately 5 world units wide. - sprite.scale = 5.0 / texture.width - - # Move the camera to show 20 world units on the Y axis at Z = 0. - # The `sprite` should take approximately 1/4 of the height of the screen. - world_camera.reset_height 20.0 - - # Move the near clip wall closer to the camera because our world unit - # range is small. Moving the clip wall too close to the camera can - # cause glitches on mobiles devices with small depth buffer. - world_camera.near = 1.0 - - # Make the background sky blue and opaque. - glClearColor(0.5, 0.8, 1.0, 1.0) - - # If the first command line argument is an integer, add extra sprites. - if args.not_empty and args.first.is_int then - # It's a performance test, unlock the framerate. - maximum_fps = -1.0 - - # Add `args.first` sprites. - for i in args.first.to_i.times do - var s = new Sprite(texture, new Point3d[Float](30.0.rand - 15.0, 20.0.rand - 10.0, 0.0 - 30.0.rand)) - s.scale = 0.1 - sprites.add s - end - end - end - - redef fun update(dt) - do - # Update game logic here. - sprite.rotation += 0.1*pi*dt - - # Move `sprite` with the keyboard arrows. - # Set the speed according to the elapsed time since the last frame `dt` - # for a smooth animation. - var unit_per_second = 2.0 - for key in pressed_keys do - if key == "left" then - sprite.center.x -= unit_per_second*dt - else if key == "right" then - sprite.center.x += unit_per_second*dt - else if key == "up" then - sprite.center.y += unit_per_second*dt - else if key == "down" then - sprite.center.y -= unit_per_second*dt - end - end - end - - redef fun accept_event(event) - do - if super then return true - - if event isa QuitEvent or - (event isa KeyEvent and event.name == "escape" and event.is_up) then - # When window close button, escape or back key is pressed - print "Ran at {current_fps} FPS in the last few seconds" - - print "Performance statistics to detect bottlenecks:" - print sys.perfs - - # Quit abruptly - exit 0 - else if event isa KeyEvent and event.is_down then - if event.name == "space" then - # Play a sound when space bar is pressed. - sound.play - return true - else if event.name == "s" then - # Remove a random sprite. - if sprites.not_empty then sprites.remove sprites.rand - else if event.name == "w" then - # Add a random sprite. - var s = new Sprite(texture, new Point3d[Float](30.0.rand - 15.0, 20.0.rand - 10.0, 0.0 - 30.0.rand)) - s.scale = 0.1 - s.tint[1] = 0.0 - s.tint[2] = 0.0 - sprites.add s - end - end - - return false - end -end diff --git a/lib/gamnit/examples/triangle/Makefile b/lib/gamnit/examples/triangle/Makefile deleted file mode 100644 index 22172de6a7..0000000000 --- a/lib/gamnit/examples/triangle/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -NITC=../../../../bin/nitc -NITLS=../../../../bin/nitls - -all: bin/standalone_triangle bin/triangle bin/triangle.apk - -bin/standalone_triangle: $(shell ${NITLS} -M src/standalone_triangle.nit linux) ${NITC} - ${NITC} src/standalone_triangle.nit -m linux -o $@ - -bin/triangle: $(shell ${NITLS} -M src/portable_triangle.nit linux) ${NITC} - ${NITC} src/portable_triangle.nit -m linux -o $@ - -check: bin/standalone_triangle bin/triangle - bin/standalone_triangle - bin/triangle - -android: bin/triangle.apk -bin/triangle.apk: $(shell ${NITLS} -M src/portable_triangle.nit android) ${NITC} res/drawable-hdpi/icon.png - ${NITC} src/portable_triangle.nit -m android -o $@ - -res/drawable-hdpi/icon.png: art/icon.svg - ../../../../contrib/inkscape_tools/bin/svg_to_icons --out res --android art/icon.svg diff --git a/lib/gamnit/examples/triangle/art/icon.svg b/lib/gamnit/examples/triangle/art/icon.svg deleted file mode 100644 index 26f7c04a1f..0000000000 --- a/lib/gamnit/examples/triangle/art/icon.svg +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - diff --git a/lib/gamnit/examples/triangle/bin/.gitignore b/lib/gamnit/examples/triangle/bin/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/lib/gamnit/examples/triangle/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/lib/gamnit/examples/triangle/package.ini b/lib/gamnit/examples/triangle/package.ini deleted file mode 100644 index f673878841..0000000000 --- a/lib/gamnit/examples/triangle/package.ini +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name=triangle -tags=example -maintainer=Alexis Laferrière -license=Apache-2.0 -[upstream] -browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/triangle/ -git=https://github.com/nitlang/nit.git -git.directory=lib/gamnit/examples/triangle/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues diff --git a/lib/gamnit/examples/triangle/res/.gitignore b/lib/gamnit/examples/triangle/res/.gitignore deleted file mode 100644 index 72e8ffc0db..0000000000 --- a/lib/gamnit/examples/triangle/res/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/lib/gamnit/examples/triangle/src/portable_triangle.nit b/lib/gamnit/examples/triangle/src/portable_triangle.nit deleted file mode 100644 index 5c276b396b..0000000000 --- a/lib/gamnit/examples/triangle/src/portable_triangle.nit +++ /dev/null @@ -1,141 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Portable example of using Gamnit with custom calls to OpenGL ES 2.0 -# -# References: -# * The book OpenGL ES 2.0 Programming Guide -# * https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c -module portable_triangle is - example - app_name "gamnit Triangle" - app_namespace "org.nitlanguage.triangle" - app_version(1, 1, git_revision) -end - -import gamnit - -redef class App - - # Our only program for the graphic card - var program: GLProgram is noautoinit - - # The only vertex sharder - var vertex_shader: GLVertexShader is noautoinit - - # The only fragment sharder - var fragment_shader: GLFragmentShader is noautoinit - - # Vertex data for the triangle - var vertex_array: VertexArray is noautoinit - - redef fun create_scene - do - super - - var display = display - assert display != null - - print "Width: {display.width}" - print "Height: {display.height}" - - assert glGetError == gl_NO_ERROR - assert gl.shader_compiler else print "Cannot compile shaders" - - # GL program - program = new GLProgram - if not glIsProgram(program) then - print "Program is not ok: {glGetError.to_s}\nLog:" - print glGetProgramInfoLog(program) - abort - end - assert glGetError == gl_NO_ERROR - - # Vertex shader - vertex_shader = new GLVertexShader - assert glIsShader(vertex_shader) else print "Vertex shader is not ok: {glGetError}" - glShaderSource(vertex_shader, """ - attribute vec4 vPosition; - void main() - { - gl_Position = vPosition; - } - """@glsl_vertex_shader.to_cstring) - glCompileShader(vertex_shader) - assert vertex_shader.is_compiled else print "Vertex shader compilation failed with: {glGetShaderInfoLog(vertex_shader)} {glGetProgramInfoLog(program)}" - assert glGetError == gl_NO_ERROR - - # Fragment shader - fragment_shader = new GLFragmentShader - assert glIsShader(fragment_shader) else print "Fragment shader is not ok: {glGetError}" - glShaderSource(fragment_shader, """ - precision mediump float; - void main() - { - gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); - } - """@glsl_fragment_shader.to_cstring) - glCompileShader(fragment_shader) - assert fragment_shader.is_compiled else print "Fragment shader compilation failed with: {glIsShader(fragment_shader)}" - assert glGetError == gl_NO_ERROR - - # Attach to program - glAttachShader(program, vertex_shader) - glAttachShader(program, fragment_shader) - program.bind_attrib_location(0, "vPosition") - glLinkProgram program - assert program.is_linked else print "Linking failed: {glGetProgramInfoLog(program)}" - assert glGetError == gl_NO_ERROR - - # Draw! - var vertices = [0.0, 0.5, 0.0, -0.5, -0.5, 0.0, 0.5, -0.5, 0.0] - vertex_array = new VertexArray(0, 3, vertices) - vertex_array.attrib_pointer - end - - private var t = 0.0 - - redef fun frame_core(display) - do - glClearColor(t, t, t, 1.0) - - assert glGetError == gl_NO_ERROR - glViewport(0, 0, display.width, display.height) - glClear gl_COLOR_BUFFER_BIT - glUseProgram program - vertex_array.enable - - glDrawArrays(gl_TRIANGLES, 0, 3) - - display.flip - - t += 0.01 - if t > 1.0 then t = 0.0 - end - - redef fun on_stop - do - # Clean up - glDeleteProgram program - glDeleteShader vertex_shader - glDeleteShader fragment_shader - - # Close gamnit - var display = display - if display != null then display.close - end -end - -if "NIT_TESTING".environ == "true" then exit(0) -super diff --git a/lib/gamnit/examples/triangle/src/standalone_triangle.nit b/lib/gamnit/examples/triangle/src/standalone_triangle.nit deleted file mode 100644 index a766fb2437..0000000000 --- a/lib/gamnit/examples/triangle/src/standalone_triangle.nit +++ /dev/null @@ -1,112 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Example of using `GamnitDisplay` to setup a screen for custom calls to OpenGL ES 2.0 -# -# This example does not support the lifecycle of mobile platforms, as such it only works on desktop computers. -# -# References: -# * The book OpenGL ES 2.0 Programming Guide -# * https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c -module standalone_triangle is example - -import app -import gamnit::display - -if "NIT_TESTING".environ == "true" then exit(0) - -# Setup gamnit -var display = new GamnitDisplay -display.setup - -var width = display.width -var height = display.height -print "Width: {width}" -print "Height: {height}" - -# Custom calls to OpenGL ES 2.0 -assert glGetError == gl_NO_ERROR -assert gl.shader_compiler else print "Cannot compile shaders" - -# GL program -print glGetError.to_s -var program = new GLProgram -if not glIsProgram(program) then - print "Program is not ok: {glGetError.to_s}\nLog:" - print glGetProgramInfoLog(program) - abort -end -assert glGetError == gl_NO_ERROR - -# Vertex shader -var vertex_shader = new GLVertexShader -assert glIsShader(vertex_shader) else print "Vertex shader is not ok: {glGetError}" -glShaderSource(vertex_shader, """ -attribute vec4 vPosition; -void main() -{ - gl_Position = vPosition; -} -"""@glsl_vertex_shader.to_cstring) -glCompileShader vertex_shader -assert vertex_shader.is_compiled else print "Vertex shader compilation failed with: {glGetShaderInfoLog(vertex_shader)} {glGetProgramInfoLog(program)}" -assert glGetError == gl_NO_ERROR - -# Fragment shader -var fragment_shader = new GLFragmentShader -assert glIsShader(fragment_shader) else print "Fragment shader is not ok: {glGetError}" -glShaderSource(fragment_shader, """ -precision mediump float; -void main() -{ - gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); -} -"""@glsl_fragment_shader.to_cstring) -glCompileShader fragment_shader -assert fragment_shader.is_compiled else print "Fragment shader compilation failed with: {glGetShaderInfoLog(fragment_shader)}" -assert glGetError == gl_NO_ERROR - -# Attach to program -glAttachShader(program, vertex_shader) -glAttachShader(program, fragment_shader) -program.bind_attrib_location(0, "vPosition") -glLinkProgram program -assert program.is_linked else print "Linking failed: {glGetProgramInfoLog(program)}" -assert glGetError == gl_NO_ERROR - -# Draw! -var vertices = [0.0, 0.5, 0.0, -0.5, -0.5, 0.0, 0.5, -0.5, 0.0] -var vertex_array = new VertexArray(0, 3, vertices) -vertex_array.attrib_pointer -glClearColor(0.5, 0.0, 0.5, 1.0) -for i in [0..1000[ do - printn "." - assert glGetError == gl_NO_ERROR - glViewport(0, 0, width, height) - glClear gl_COLOR_BUFFER_BIT - glUseProgram program - vertex_array.enable - - glDrawArrays(gl_TRIANGLES, 0, 3) - - display.flip -end - -# Clean up -glDeleteProgram program -glDeleteShader vertex_shader -glDeleteShader fragment_shader - -# Close gamnit -display.close diff --git a/lib/gamnit/flat/flat.nit b/lib/gamnit/flat/flat.nit deleted file mode 100644 index 409433300b..0000000000 --- a/lib/gamnit/flat/flat.nit +++ /dev/null @@ -1,44 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Simple API for 2D games, built around `Sprite` and `App::update` -# -# Client programs should implement `App::update` to execute game logic and -# add instances of `Sprite` to `App::sprites` and `App::ui_sprites`. -# At each frame, all sprites are drawn to the screen. -# -# This system relies on two cameras `App::world_camera` and `App::ui_camera`. -# -# * `App::world_camera` applies a perspective effect to draw the game world. -# This camera is designed to be moved around to see the world as well as to -# zoom in and out. It is used to position the sprites in `App::sprites`. -# -# * `App::ui_camera` is a simple orthogonal camera to display UI objects. -# This camera should mostly be still, it can still move for chock effects -# and the like. It can be used to standardize the size of the UI across -# devices. It is used to position the sprites in `App::ui_sprites`. -# -# See the sample game at `contrib/asteronits/` and the basic project template -# at `lib/gamnit/examples/template/`. -module flat - -import gamnit::flat_core - -# Extra optional features -import gamnit::limit_fps -import gamnit::keys -import gamnit::camera_control -import gamnit::tileset -import gamnit::bmfont -import app::audio diff --git a/lib/gamnit/flat/flat_core.nit b/lib/gamnit/flat/flat_core.nit deleted file mode 100644 index 320d471c4a..0000000000 --- a/lib/gamnit/flat/flat_core.nit +++ /dev/null @@ -1,1766 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Core services for the `flat` API for 2D games -module flat_core - -import glesv2 -intrude import geometry::points_and_lines # For _x, _y and _z -intrude import matrix -import matrix::projection -import more_collections -import performance_analysis - -import gamnit -intrude import gamnit::cameras -intrude import gamnit::cameras_cache -import gamnit::dynamic_resolution - -# Visible 2D entity in the game world or UI -# -# Similar to `gamnit::Actor` which is in 3D. -# -# Each sprite associates a `texture` to the position `center`. -# The appearance is modified by `rotation`, `invert_x`, -# `scale`, `red`, `green`, `blue` and `alpha`. -# These values can be changed at any time and will trigger an update -# of the data on the GPU side, having a small performance cost. -# -# For a sprite to be visible, it must be added to either the world `sprites` -# or the `ui_sprites`. -# However, an instance of `Sprite` can only belong to a single `SpriteSet` -# at a time. The final on-screen position depends on the camera associated -# to the `SpriteSet`. -# -# ~~~ -# # Load texture and create sprite -# var texture = new Texture("path/in/assets.png") -# var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0)) -# -# # Add sprite to the visible game world -# app.sprites.add sprite -# -# # Extra configuration of the sprite -# sprite.rotation = pi/2.0 -# sprite.scale = 2.0 -# -# # Show only the blue colors -# sprite.red = 0.0 -# sprite.green = 0.0 -# ~~~ -# -# To add a sprite to the UI it can be anchored to screen borders -# with `ui_camera.top_left` and the likes. -# -# ~~~nitish -# # Place it a bit off the top left of the screen -# var pos = app.ui_camera.top_left.offset(128.0, -128.0, 0) -# -# # Load texture and create sprite -# var texture = new Texture("path/in/assets.png") -# var sprite = new Sprite(texture, pos) -# -# # Add it to the UI (above world sprites) -# app.ui_sprites.add sprite -# ~~~ -class Sprite - - # Texture drawn to screen - var texture: Texture is writable(texture_direct=) - - # Texture drawn to screen - fun texture=(texture: Texture) - do - if isset _texture and texture != self.texture then - needs_update - if texture.root != self.texture.root then needs_remap - end - texture_direct = texture - end - - # Center position of this sprite in world coordinates - var center: Point3d[Float] is writable(center_direct=), noautoinit - - # Center position of this sprite in world coordinates - fun center=(center: Point3d[Float]) is autoinit do - if isset _center and center != self.center then - needs_update - self.center.sprites_remove self - end - - center.sprites_add self - center_direct = center - end - - # Last animation set with `animate` - var animation: nullable Animation = null - - # Animation on the shader, if this changes it `needs_remap` - private var shader_animation: nullable Animation = null - - # Animation start time, relative to `sprite_set.time` - # - # At -1.0 if animation started before being assigned a `sprite_set`. - private var animation_start = 0.0 - - # Number of loops to show `animation` - private var animation_loops = 0.0 - - # Start the `animation` for `n_loops`, replacing the static `texture` - # - # By default, if `n_loops` is not set, the animation plays once. - # If `n_loops == -1.0` then the animation loops infinitely. - # Otherwise, the animation repeats, e.g. it repeats twice and a half - # if `n_loops == 2.5`. - # - # The animation can be stopped using `animate_stop`. - fun animate(animation: Animation, n_loops: nullable Float) - do - if not animation.valid then print_error "{class_name}::animate: invalid animation {animation}" - - var shader_animation = shader_animation - if shader_animation == null or animation.frames.first.root != shader_animation.frames.first.root then - # Resort with the new animation texture - needs_remap - else - needs_update - end - - var sprite_set = sprite_set - animation_start = if sprite_set != null then sprite_set.time else -1.0 - animation_loops = n_loops or else 1.0 - self.shader_animation = animation - self.animation = animation - end - - # Stop any active `animation` to display the static `texture` - fun animate_stop - do - if animation == null then return - needs_update - animation = null - end - - # Rotation on the Z axis, positive values turn counterclockwise - var rotation = 0.0 is writable(rotation_direct=) - - # Rotation on the Z axis, positive values turn counterclockwise - fun rotation=(value: Float) - do - if isset _rotation and value != rotation then needs_update - rotation_direct = value - end - - # Mirror `texture` horizontally, inverting each pixel on the X axis - var invert_x = false is writable(invert_x_direct=) - - # Mirror `texture` horizontally, inverting each pixel on the X axis - fun invert_x=(value: Bool) - do - if isset _invert_x and value != invert_x then needs_update - invert_x_direct = value - end - - # Scale applied to this sprite - # - # The basic size of `self` depends on the size in pixels of `texture`. - var scale = 1.0 is writable(scale_direct=) - - # Scale applied to this sprite - # - # The basic size of `self` depends on the size in pixels of `texture`. - fun scale=(value: Float) - do - if isset _scale and value != scale then needs_update - scale_direct = value - end - - # Red tint applied to `texture` on draw - fun red: Float do return tint[0] - - # Red tint applied to `texture` on draw - fun red=(value: Float) - do - if isset _tint and value != red then needs_update - tint[0] = value - end - - # Green tint applied to `texture` on draw - fun green: Float do return tint[1] - - # Green tint applied to `texture` on draw - fun green=(value: Float) - do - if isset _tint and value != green then needs_update - tint[1] = value - end - - # Blue tint applied to `texture` on draw - fun blue: Float do return tint[2] - - # Blue tint applied to `texture` on draw - fun blue=(value: Float) - do - if isset _tint and value != blue then needs_update - tint[2] = value - end - - # Transparency applied to `texture` on draw - fun alpha: Float do return tint[3] - - # Transparency applied to `texture` on draw - fun alpha=(value: Float) - do - if isset _tint and value != alpha then needs_update - tint[3] = value - end - - # Tint applied to `texture` on draw - # - # Alternative to the accessors `red, green, blue & alpha`. - # Changes inside the array do not automatically set `needs_update`. - # - # Require: `tint.length == 4` - var tint: Array[Float] = [1.0, 1.0, 1.0, 1.0] is writable(tint_direct=) - - # Tint applied to `texture` on draw, see `tint` - fun tint=(value: Array[Float]) - do - if isset _tint and value != tint then needs_update - tint_direct = value - end - - # Draw order, higher values cause this sprite to be drawn latter - # - # Change this value to avoid artifacts when drawing non-opaque sprites. - # In general, sprites with a non-opaque `texture` and sprites closer to - # the camera should have a higher value to be drawn last. - # - # Sprites sharing a `draw_order` are drawn in the same pass. - # The sprite to sprite draw order is undefined and may change when adding - # and removing sprites, or changing their attributes. - # - # ### Warning - # - # Changing this value may have a negative performance impact if there are - # many different `draw_order` values across many sprites. - # Sprites sharing some attributes are drawn as group to reduce - # the communication overhead between the CPU and GPU, - # and changing `draw_order` may break up large groups into smaller groups. - var draw_order = 0 is writable(draw_order_direct=) - - # Set draw order, see `draw_order` - fun draw_order=(value: Int) - do - if isset _draw_order and value != draw_order then needs_remap - draw_order_direct = value - end - - # Is this sprite static and added in bulk? - # - # Set to `true` to give a hint to the framework that this sprite won't - # change often and that it is added in bulk with other static sprites. - # This value can be ignored in the prototyping phase of a game and - # added only when better performance are needed. - var static = false is writable(static_direct=) - - # Is this sprite static and added in bulk? see `static` - fun static=(value: Bool) - do - if isset _static and value != static then needs_remap - static_direct = value - end - - # Request an update on the CPU - # - # This is called automatically on modification of any value of `Sprite`. - # However, it can still be set manually if a modification can't be - # detected or by subclasses. - fun needs_update - do - var c = context - if c == null then return - if c.last_sprite_to_update == self then return - c.sprites_to_update.add self - c.last_sprite_to_update = self - end - - # Request a resorting of this sprite in its sprite list - # - # Resorting is required when `static` or the root of `texture` changes. - # This is called automatically when such changes are detected. - # However, it can still be set manually if a modification can't be - # detected or by subclasses. - fun needs_remap - do - var l = sprite_set - if l != null then l.sprites_to_remap.add self - end - - # Current context to which `self` was sorted - private var context: nullable SpriteContext = null - - # Index in `context` - private var context_index: Int = -1 - - # Current context to which `self` belongs - private var sprite_set: nullable SpriteSet = null -end - -# Animation for sprites, set with `Sprite.animate` -# -# Two main services create animations: -# * The constructors accepts an array of textures and the number of frames per -# seconds: `new Animation(array_of_subtextures, 10.0)` -# * The method `Texture::to_animation` uses the whole texture -# dividing it in frames either on X or Y: -# `new Texture("path/in/assets.png").to_animation(30.0, 0, 12)` -class Animation - - # Frames composing this animation - # - # All frames must share the same `Texture::root`, be on a vertical or - # horizontal line, be spaced equally and share the same dimensions. - var frames: SequenceRead[Texture] - - # Frames per seconds, a higher value makes this animation faster - # - # The animation speed is also affected by `SpriteSet::time_mod`. - var fps: Float - - # Are the `frames` valid for an animation? (see the requirements in `frames`) - var valid: Bool is lazy do - var r: nullable RootTexture = null - for f in frames do - if r == null then - r = f.root - else - if r != f.root then return false - end - end - - # TODO check for line, constant distance, and same aspect ratio. - - return true - end -end - -redef class App - # Default graphic program to draw `sprites` - private var simple_2d_program = new Simple2dProgram is lazy - - # Camera for world `sprites` and `depth::actors` with perspective - # - # By default, the camera is configured to a height of 1080 units - # of world coordinates at `z == 0.0`. - var world_camera: EulerCamera is lazy do - var camera = new EulerCamera(app.display.as(not null)) - - # Aim for full HD pixel resolution at level 0 - camera.reset_height 1080.0 - camera.near = 10.0 - - return camera - end - - # Camera for `ui_sprites` using an orthogonal view - var ui_camera = new UICamera(app.display.as(not null)) is lazy - - # World sprites drawn as seen by `world_camera` - var sprites = new SpriteSet - - # UI sprites drawn as seen by `ui_camera`, over world `sprites` - var ui_sprites = new SpriteSet - - # Main method to refine in clients to update game logic and `sprites` - fun update(dt: Float) do end - - # Display `texture` as a splash screen - # - # Load `texture` if needed and resets `ui_camera` to 1080 units on the Y axis. - fun show_splash_screen(texture: Texture) - do - texture.load - - var splash = new Sprite(texture, ui_camera.center.offset(0.0, 0.0, 0.0)) - ui_sprites.add splash - - var display = display - assert display != null - glClear gl_COLOR_BUFFER_BIT - - ui_camera.reset_height 1080.0 - glViewport(0, 0, display.width, display.height) - frame_core_ui_sprites display - display.flip - - ui_sprites.remove splash - end - - # --- - # Support and implementation - - # Main clock used to count each frame `dt`, lapsed for `update` only - private var clock = new Clock is lazy - - # Performance clock to for `frame_core_draw` operations - private var perf_clock_main = new Clock - - # Second performance clock for smaller operations - private var perf_clock_sprites = new Clock is lazy - - redef fun create_gamnit - do - super - create_flat - end - - # Prepare the flat framework services - fun create_flat - do - var display = display - assert display != null - - assert glGetError == gl_NO_ERROR - - # Prepare program - var program = simple_2d_program - program.compile_and_link - - var gamnit_error = program.error - assert gamnit_error == null else print_error gamnit_error - - # Enable blending - gl.capabilities.blend.enable - glBlendFunc(gl_ONE, gl_ONE_MINUS_SRC_ALPHA) - - # Enable depth test - gl.capabilities.depth_test.enable - glDepthFunc gl_LEQUAL - glDepthMask true - - # Prepare viewport and background color - glViewport(0, 0, display.width, display.height) - glClearColor(0.0, 0.0, 0.0, 1.0) - - assert glGetError == gl_NO_ERROR - - # Prepare to draw - for tex in all_root_textures do - tex.load - gamnit_error = tex.error - if gamnit_error != null then print_error gamnit_error - - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR) - end - - sprites.reset - ui_sprites.reset - end - - redef fun on_stop - do - super - - # Close gamnit - var display = display - if display != null then display.close - end - - redef fun on_resize(display) - do - super - - world_camera.mvp_matrix_cache = null - ui_camera.mvp_matrix_cache = null - - # Update all sprites in the UI - for sprite in ui_sprites do sprite.needs_update - end - - redef fun on_resume - do - clock.lapse - super - end - - redef fun frame_core(display) - do - # Check errors - assert glGetError == gl_NO_ERROR - - # Update game logic and set sprites - perf_clock_main.lapse - var dt = clock.lapse.to_f - update dt - frame_dt = dt - sys.perfs["gamnit flat update client"].add perf_clock_main.lapse - - # Draw and flip screen - frame_core_draw display - display.flip - - # Check errors - assert glGetError == gl_NO_ERROR - end - - private var frame_dt = 0.0 - - # Draw the whole screen, all `glDraw...` calls should be executed here - protected fun frame_core_draw(display: GamnitDisplay) - do - frame_core_dynamic_resolution_before display - - perf_clock_main.lapse - frame_core_world_sprites display - perfs["gamnit flat world_sprites"].add perf_clock_main.lapse - - frame_core_ui_sprites display - perfs["gamnit flat ui_sprites"].add perf_clock_main.lapse - - frame_core_dynamic_resolution_after display - end - - private fun frame_core_sprites(display: GamnitDisplay, sprite_set: SpriteSet, camera: Camera) - do - var simple_2d_program = app.simple_2d_program - simple_2d_program.use - simple_2d_program.mvp.uniform camera.mvp_matrix - - sprite_set.time += frame_dt*sprite_set.time_mod - simple_2d_program.time.uniform sprite_set.time - - # draw - sprite_set.draw - - assert glGetError == gl_NO_ERROR - end - - # Draw world sprites from `sprites` - protected fun frame_core_world_sprites(display: GamnitDisplay) - do - frame_core_sprites(display, sprites, world_camera) - end - - # Draw UI sprites from `ui_sprites` - protected fun frame_core_ui_sprites(display: GamnitDisplay) - do - # Reset only the depth buffer - glClear gl_DEPTH_BUFFER_BIT - - frame_core_sprites(display, ui_sprites, ui_camera) - end -end - -redef class Texture - - # Vertices coordinates of the base geometry - # - # Defines the default width and height of related sprites. - private var vertices: Array[Float] is lazy do - var w = width - var h = height - return [-0.5*w, 0.5*h, 0.0, - 0.5*w, 0.5*h, 0.0, - -0.5*w, -0.5*h, 0.0, - 0.5*w, -0.5*h, 0.0] - end - - # Coordinates of this texture on the `root` texture, in `[0..1.0]` - private var texture_coords: Array[Float] is lazy do - var l = offset_left - var r = offset_right - var b = offset_bottom - var t = offset_top - return [l, t, - r, t, - l, b, - r, b] - end - - # Coordinates of this texture on the `root` texture, inverting the X axis - private var texture_coords_invert_x: Array[Float] is lazy do - var l = offset_left - var r = offset_right - var b = offset_bottom - var t = offset_top - return [r, t, - l, t, - r, b, - l, b] - end - - # Convert to a sprite animation at `fps` speed with `x` or `y` frames - # - # The arguments `x` and `y` set the number of frames in the texture. - # Use `x` for an horizontal arrangement or `y` for vertical. - # One and only one of the arguments must be different than 0, - # as an animation can only be on a line and cannot wrap. - fun to_animation(fps: Float, x, y: Int): Animation - do - assert (x == 0) != (y == 0) - - var n_frames = x.max(y) - var frames = new Array[Texture] - - var dx = (x/n_frames).to_f/n_frames.to_f - var dy = (y/n_frames).to_f/n_frames.to_f - var w = if x == 0 then 1.0 else dx - var h = if y == 0 then 1.0 else dy - var left = 0.0 - var top = 0.0 - for i in n_frames.times do - frames.add new RelativeSubtexture(root, left, top, left+w, top+h) - left += dx - top += dy - end - - return new Animation(frames, fps) - end -end - -# Graphic program to display simple models with a texture, translation, rotation and scale -private class Simple2dProgram - super GamnitProgramFromSource - - redef var vertex_shader_source = """ - // Vertex coordinates - attribute vec4 coord; - - // Vertex color tint - attribute vec4 color; - - // Vertex translation - attribute vec4 translation; - - // Vertex scaling - attribute float scale; - - // Vertex coordinates on textures - attribute vec2 tex_coord; - - // Model view projection matrix - uniform mat4 mvp; - - // Current world time, in seconds - uniform float time; - - // Rotation matrix - attribute vec4 rotation_row0; - attribute vec4 rotation_row1; - attribute vec4 rotation_row2; - attribute vec4 rotation_row3; - - // Animation speed, frames per seconds - attribute float a_fps; - - // Number of frames in the animation - attribute float a_n_frames; - - // World coordinate of the animation (for aspect ratio) - attribute vec2 a_coord; - - // Animation texture coordinates of the first frame - attribute vec2 a_tex_coord; - - // Animation texture coordinates difference between frames - attribute vec2 a_tex_diff; - - // Animation start time, in reference to `time` - attribute float a_start; - - // Number of loops to play of the animation - attribute float a_loops; - - mat4 rotation() - { - return mat4(rotation_row0, rotation_row1, rotation_row2, rotation_row3); - } - - // Output to the fragment shader - varying vec4 v_color; - varying vec2 v_coord; - - // Is there an active animation? - varying float v_animated; - - void main() - { - vec3 c; // coords - - float end = a_start + a_loops/a_fps*a_n_frames; - if (a_fps != 0.0 && (a_loops == -1.0 || time < end)) { - // in animation - float frame = mod(floor((time-a_start)*a_fps), a_n_frames); - v_coord = a_tex_coord + a_tex_diff*frame; - c = vec3(a_coord, coord.z); - v_animated = 1.0; - } else { - // static - v_coord = tex_coord; - c = coord.xyz; - v_animated = 0.0; - } - - gl_Position = (vec4(c * scale, 1.0) * rotation() + translation)* mvp; - v_color = vec4(color.rgb*color.a, color.a); - } - """ @ glsl_vertex_shader - - redef var fragment_shader_source = """ - precision mediump float; - - // Does this object use a texture? - uniform bool use_texture; - - // Texture to apply on this object - uniform sampler2D texture0; - - // Texture to apply on this object - uniform sampler2D animation; - - // Input from the vertex shader - varying vec4 v_color; - varying vec2 v_coord; - varying float v_animated; - - void main() - { - if (v_animated > 0.5) { - gl_FragColor = v_color * texture2D(animation, v_coord); - if (gl_FragColor.a <= 0.01) discard; - } else if (use_texture) { - gl_FragColor = v_color * texture2D(texture0, v_coord); - if (gl_FragColor.a <= 0.01) discard; - } else { - gl_FragColor = v_color; - } - } - """ @ glsl_fragment_shader - - # Vertices coordinates - var coord = attributes["coord"].as(AttributeVec4) is lazy - - # Should this program use the texture `texture`? - var use_texture = uniforms["use_texture"].as(UniformBool) is lazy - - # Visible texture unit - var texture = uniforms["texture0"].as(UniformSampler2D) is lazy - - # Coordinates on the textures, per vertex - var tex_coord = attributes["tex_coord"].as(AttributeVec2) is lazy - - # Color tint per vertex - var color = attributes["color"].as(AttributeVec4) is lazy - - # Translation applied to each vertex - var translation = attributes["translation"].as(AttributeVec4) is lazy - - # Rotation matrix, row 0 - var rotation_row0 = attributes["rotation_row0"].as(AttributeVec4) is lazy - - # Rotation matrix, row 1 - var rotation_row1 = attributes["rotation_row1"].as(AttributeVec4) is lazy - - # Rotation matrix, row 2 - var rotation_row2 = attributes["rotation_row2"].as(AttributeVec4) is lazy - - # Rotation matrix, row 3 - var rotation_row3 = attributes["rotation_row3"].as(AttributeVec4) is lazy - - # Scaling per vertex - var scale = attributes["scale"].as(AttributeFloat) is lazy - - # Model view projection matrix - var mvp = uniforms["mvp"].as(UniformMat4) is lazy - - # World time, in seconds - var time = uniforms["time"].as(UniformFloat) is lazy - - # --- - # Animations - - # Texture of all the frames of the animation - var animation_texture = uniforms["animation"].as(UniformSampler2D) is lazy - - # Frame per second of the animation - var animation_fps = attributes["a_fps"].as(AttributeFloat) is lazy - - # Number of frames in the animation - var animation_n_frames = attributes["a_n_frames"].as(AttributeFloat) is lazy - - # Coordinates of each frame (mush be shared by all frames) - var animation_coord = attributes["a_coord"].as(AttributeVec2) is lazy - - # Texture coordinates of the first frame - var animation_tex_coord = attributes["a_tex_coord"].as(AttributeVec2) is lazy - - # Coordinate difference between each frame - var animation_tex_diff = attributes["a_tex_diff"].as(AttributeVec2) is lazy - - # Animation start time, in seconds and in reference to `dt` - var animation_start = attributes["a_start"].as(AttributeFloat) is lazy - - # Number of loops of the animation, -1 for infinite - var animation_loops = attributes["a_loops"].as(AttributeFloat) is lazy -end - -redef class Point3d[N] - # --- - # Associate each point to its sprites - - private var sprites: nullable Array[Sprite] = null - - private fun sprites_add(sprite: Sprite) - do - var sprites = sprites - if sprites == null then - sprites = new Array[Sprite] - self.sprites = sprites - end - sprites.add sprite - end - - private fun sprites_remove(sprite: Sprite) - do - var sprites = sprites - assert sprites != null - sprites.remove sprite - end - - # --- - # Notify `sprites` on attribute modification - - private fun needs_update - do - var sprites = sprites - if sprites != null then for s in sprites do s.needs_update - end - - redef fun x=(v) - do - if isset _x and v != x then needs_update - super - end - - redef fun y=(v) - do - if isset _y and v != y then needs_update - super - end - - redef fun z=(v) - do - if isset _z and v != z then needs_update - super - end -end - -redef class OffsetPoint3d - redef fun x=(v) - do - if isset _x and v != x then needs_update - super - end - - redef fun y=(v) - do - if isset _y and v != y then needs_update - super - end - - redef fun z=(v) - do - if isset _z and v != z then needs_update - super - end -end - -# Set of sprites sorting them into different `SpriteContext` -class SpriteSet - super HashSet[Sprite] - - # Animation speed multiplier (0.0 to pause, 1.0 for normal speed, etc.) - var time_mod = 1.0 is writable - - # Seconds elapsed since the launch of the program, in world time responding to `time_mod` - var time = 0.0 - - # Map texture then static vs dynamic to a `SpriteContext` - private var contexts_map = new HashMap4[RootTexture, nullable RootTexture, Bool, Int, Array[SpriteContext]] - - # Contexts in `contexts_map`, sorted by draw order - private var contexts_items = new Array[SpriteContext] - - # Sprites needing resorting in `contexts_map` - private var sprites_to_remap = new Array[Sprite] - - # Add a sprite to the appropriate context - private fun map_sprite(sprite: Sprite) - do - assert sprite.context == null else print_error "Sprite {sprite} belongs to another SpriteSet" - - # Sort by texture and animation texture - var texture = sprite.texture.root - var animation = sprite.animation - var animation_texture = if animation != null then - animation.frames.first.root else null - var draw_order = sprite.draw_order - var contexts = contexts_map[texture, animation_texture, sprite.static, draw_order] - - var context = null - if contexts != null then - for c in contexts.reverse_iterator do - var size = c.sprites.length + 1 - if size * 4 <= 0xffff then - context = c - break - end - end - end - - if context == null then - var usage = if sprite.static then gl_STATIC_DRAW else gl_DYNAMIC_DRAW - context = new SpriteContext(texture, animation_texture, usage, draw_order) - - if contexts == null then - contexts = new Array[SpriteContext] - contexts_map[texture, animation_texture, sprite.static, draw_order] = contexts - end - - contexts.add context - - contexts_items.add context - sprite_draw_order_sorter.sort(contexts_items) - end - - context.sprites.add sprite - context.sprites_to_update.add sprite - context.last_sprite_to_update = sprite - - sprite.context = context - sprite.sprite_set = self - - if animation != null and sprite.animation_start == -1.0 then - # Start animation - sprite.animation_start = time - end - end - - # Remove a sprite from its context - private fun unmap_sprite(sprite: Sprite) - do - var context = sprite.context - assert context != null - context.sprites.remove sprite - - sprite.context = null - sprite.sprite_set = null - end - - # Draw all sprites by all contexts - private fun draw - do - # Remap sprites that may need to change context - for sprite in sprites_to_remap do - - # Skip if it was removed from this set after being modified - if sprite.sprite_set != self then continue - - unmap_sprite sprite - map_sprite sprite - end - sprites_to_remap.clear - - # Sort by draw order - for context in contexts_items do context.draw - end - - redef fun add(e) - do - if contexts_items.has(e.context) then return - map_sprite e - super - end - - redef fun remove(e) - do - super - if e isa Sprite then unmap_sprite e - end - - redef fun remove_all(e) - do - if not has(e) then return - remove e - end - - redef fun clear - do - for sprite in self do - sprite.context = null - sprite.sprite_set = null - end - super - for c in contexts_items do c.destroy - contexts_map.clear - contexts_items.clear - sprites_to_remap.clear - end - - private fun reset - do - for sprite in self do - sprite.context = null - end - - for c in contexts_items do c.destroy - contexts_map.clear - contexts_items.clear - sprites_to_remap.clear - - for sprite in self do - map_sprite sprite - end - end -end - -# Context for calls to `glDrawElements` -# -# Each context has only one `texture` and `usage`, but many sprites. -private class SpriteContext - - # --- - # Context config and state - - # Only root texture drawn by this context - var texture: nullable RootTexture - - # Only animation texture drawn by this context - var animation_texture: nullable RootTexture - - # OpenGL ES usage of `buffer_array` and `buffer_element` - var usage: GLBufferUsage - - # Draw order shared by all `sprites` - var draw_order: Int - - # Sprites drawn by this context - var sprites = new GroupedSprites - - # Sprites to update since last `draw` - var sprites_to_update = new Set[Sprite] - - # Cache of the last `Sprite` added to `sprites_to_update` since the last call to `draw` - var last_sprite_to_update: nullable Sprite = null - - # Sprites that have been update and for which `needs_update` can be set to false - var updated_sprites = new Array[Sprite] - - # Buffer size to preallocate at `resize`, multiplied by `sprites.length` - # - # Require: `resize_ratio >= 1.0` - var resize_ratio = 1.2 - - # --- - # OpenGL ES data - - # OpenGL ES buffer name for vertex data - var buffer_array: Int = -1 - - # OpenGL ES buffer name for indices - var buffer_element: Int = -1 - - # Current capacity, in sprites, of `buffer_array` and `buffer_element` - var buffer_capacity = 0 - - # C buffers used to pass the data of a single sprite - var local_data_buffer = new GLfloatArray(float_per_vertex*4) is lazy - var local_indices_buffer = new CUInt16Array(indices_per_sprite) is lazy - - # --- - # Constants - - # Number of GL_FLOAT per vertex of `Simple2dProgram` - var float_per_vertex: Int is lazy do - return 4 + 4 + 4 + # vec4 translation, vec4 color, vec4 coord, - 1 + 2 + 4*4 + # float scale, vec2 tex_coord, vec4 rotation_row*, - 1 + 1 + # float a_fps, float a_n_frames, - 2 + 2 + 2 + # vec2 a_coord, vec2 a_tex_coord, vec2 a_tex_diff, - 1 + 1 # float a_start, float a_loops - end - - # Number of bytes per vertex of `Simple2dProgram` - var bytes_per_vertex: Int is lazy do - var fs = 4 # sizeof(GL_FLOAT) - return fs * float_per_vertex - end - - # Number of bytes per sprite - var bytes_per_sprite: Int is lazy do return bytes_per_vertex * 4 - - # Number of vertex indices per sprite draw call (2 triangles) - var indices_per_sprite = 6 - - # --- - # Main services - - # Allocate `buffer_array` and `buffer_element` - fun prepare - do - var bufs = glGenBuffers(2) - buffer_array = bufs[0] - buffer_element = bufs[1] - - assert glGetError == gl_NO_ERROR - end - - # Destroy `buffer_array` and `buffer_element` - fun destroy - do - glDeleteBuffers([buffer_array, buffer_element]) - assert glGetError == gl_NO_ERROR - - buffer_array = -1 - buffer_element = -1 - end - - # Resize `buffer_array` and `buffer_element` to fit all `sprites` (and more) - fun resize - do - app.perf_clock_sprites.lapse - - # Allocate a bit more space - var capacity = (sprites.capacity.to_f * resize_ratio).to_i - - var array_bytes = capacity * bytes_per_sprite - glBindBuffer(gl_ARRAY_BUFFER, buffer_array) - assert glIsBuffer(buffer_array) - glBufferData(gl_ARRAY_BUFFER, array_bytes, new Pointer.nul, usage) - assert glGetError == gl_NO_ERROR - - # GL_TRIANGLES 6 vertices * sprite - var n_indices = capacity * indices_per_sprite - var ius = 2 # sizeof(GL_UNSIGNED_SHORT) - var element_bytes = n_indices * ius - glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element) - assert glIsBuffer(buffer_element) - glBufferData(gl_ELEMENT_ARRAY_BUFFER, element_bytes, new Pointer.nul, usage) - assert glGetError == gl_NO_ERROR - - buffer_capacity = capacity - - sys.perfs["gamnit flat gpu resize"].add app.perf_clock_sprites.lapse - end - - # Update GPU data of `sprite` - fun update_sprite(sprite: Sprite) - do - var context = sprite.context - if context != self then return - - var sprite_index = sprite.context_index - assert sprite_index != -1 - - # Vertices data - - var data = local_data_buffer - var o = 0 - for v in [0..4[ do - # vec4 translation - data[o+ 0] = sprite.center.x - data[o+ 1] = sprite.center.y - data[o+ 2] = sprite.center.z - data[o+ 3] = 0.0 - - # vec4 color - data[o+ 4] = sprite.tint[0] - data[o+ 5] = sprite.tint[1] - data[o+ 6] = sprite.tint[2] - data[o+ 7] = sprite.tint[3] - - # float scale - data[o+ 8] = sprite.scale - - # vec4 coord - data[o+ 9] = sprite.texture.vertices[v*3+0] - data[o+10] = sprite.texture.vertices[v*3+1] - data[o+11] = sprite.texture.vertices[v*3+2] - data[o+12] = 0.0 - - # vec2 tex_coord - var texture = texture - if texture != null then - var tc = if sprite.invert_x then - sprite.texture.texture_coords_invert_x - else sprite.texture.texture_coords - data[o+13] = tc[v*2+0] - data[o+14] = tc[v*2+1] - end - - # mat4 rotation - var rot - if sprite.rotation == 0.0 then - # Cache the matrix at no rotation - rot = once new Matrix.identity(4) - else - rot = new Matrix.rotation(sprite.rotation, 0.0, 0.0, 1.0) - end - data.fill_from_matrix(rot, o+15) - - var animation = sprite.animation - if animation == null then - for i in [31..40] do data[o+i] = 0.0 - else - # a_fps - data[o+31] = animation.fps - - # a_n_frames - data[o+32] = animation.frames.length.to_f - - # a_coord - data[o+33] = animation.frames.first.vertices[v*3+0] - data[o+34] = animation.frames.first.vertices[v*3+1] - - # a_tex_coord - var tc = if sprite.invert_x then - animation.frames.first.texture_coords_invert_x - else animation.frames.first.texture_coords - data[o+35] = tc[v*2] - data[o+36] = tc[v*2+1] - - # a_tex_diff - var dx = 0.0 - var dy = 0.0 - if animation.frames.length > 1 then - dx = animation.frames[1].texture_coords[0] - animation.frames[0].texture_coords[0] - dy = animation.frames[1].texture_coords[1] - animation.frames[0].texture_coords[1] - end - data[o+37] = dx - data[o+38] = dy - - # a_start - data[o+39] = sprite.animation_start - - # a_loops - data[o+40] = sprite.animation_loops - end - - o += float_per_vertex - end - - glBindBuffer(gl_ARRAY_BUFFER, buffer_array) - glBufferSubData(gl_ARRAY_BUFFER, sprite_index*bytes_per_sprite, bytes_per_sprite, data.native_array) - - var gl_error = glGetError - assert gl_error == gl_NO_ERROR else print_error gl_error - - # Element / indices - # - # 0--1 - # | /| - # |/ | - # 2--3 - - var indices = local_indices_buffer - var io = sprite_index*4 - indices[0] = io+0 - indices[1] = io+2 - indices[2] = io+1 - indices[3] = io+1 - indices[4] = io+2 - indices[5] = io+3 - - glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element) - glBufferSubData(gl_ELEMENT_ARRAY_BUFFER, sprite_index*6*2, 6*2, indices.native_array) - - assert glGetError == gl_NO_ERROR - end - - # Draw all `sprites` - # - # Call `resize` and `update_sprite` as needed before actual draw operation. - # - # Require: `app.simple_2d_program` and `mvp` must be bound on the GPU - fun draw - do - if buffer_array == -1 then prepare - - assert buffer_array > 0 and buffer_element > 0 else - print_error "Internal error: {self} was destroyed" - end - - # Setup - glBindBuffer(gl_ARRAY_BUFFER, buffer_array) - glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, buffer_element) - - # Resize GPU buffers? - var update_everything = false - if sprites.capacity > buffer_capacity then - # Try to defragment first - var moved = sprites.defragment - - if sprites.capacity > buffer_capacity then - # Defragmentation wasn't enough, grow - resize - - # We must update everything - update_everything = true - for s in sprites.items do if s != null then sprites_to_update.add s - else - # Just update the moved sprites - for s in moved do sprites_to_update.add s - end - else if sprites.available.not_empty then - # Defragment a bit anyway - # TODO defrag only when there's time left on a frame - var moved = sprites.defragment(1) - for s in moved do sprites_to_update.add s - end - - # Update GPU sprites data - if sprites_to_update.not_empty or update_everything then - app.perf_clock_sprites.lapse - - if update_everything then - for sprite in sprites.items do if sprite != null then - update_sprite(sprite) - end - else - for sprite in sprites_to_update do update_sprite(sprite) - end - - sprites_to_update.clear - last_sprite_to_update = null - - sys.perfs["gamnit flat gpu update"].add app.perf_clock_sprites.lapse - end - - # Update uniforms specific to this context - var texture = texture - app.simple_2d_program.use_texture.uniform texture != null - if texture != null then - glActiveTexture gl_TEXTURE0 - glBindTexture(gl_TEXTURE_2D, texture.gl_texture) - app.simple_2d_program.texture.uniform 0 - end - assert glGetError == gl_NO_ERROR - - var animation = animation_texture - if animation != null then - glActiveTexture gl_TEXTURE1 - glBindTexture(gl_TEXTURE_2D, animation.gl_texture) - app.simple_2d_program.animation_texture.uniform 1 - end - assert glGetError == gl_NO_ERROR - - # Configure attributes, in order: - # vec4 translation, vec4 color, float scale, vec4 coord, vec2 tex_coord, vec4 rotation_row*, - # a_fps, a_n_frames, a_coord, a_tex_coord, a_tex_diff, a_start, a_loops - - var offset = 0 - var p = app.simple_2d_program - var sizeof_gl_float = 4 # sizeof(GL_FLOAT) - - var size = 4 # Number of floats - glEnableVertexAttribArray p.translation.location - glVertexAttribPointeri(p.translation.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 4 - glEnableVertexAttribArray p.color.location - glVertexAttribPointeri(p.color.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 1 - glEnableVertexAttribArray p.scale.location - glVertexAttribPointeri(p.scale.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 4 - glEnableVertexAttribArray p.coord.location - glVertexAttribPointeri(p.coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 2 - glEnableVertexAttribArray p.tex_coord.location - glVertexAttribPointeri(p.tex_coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 4 - for r in [p.rotation_row0, p.rotation_row1, p.rotation_row2, p.rotation_row3] do - if r.is_active then - glEnableVertexAttribArray r.location - glVertexAttribPointeri(r.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - end - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - end - - size = 1 - glEnableVertexAttribArray p.animation_fps.location - glVertexAttribPointeri(p.animation_fps.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 1 - glEnableVertexAttribArray p.animation_n_frames.location - glVertexAttribPointeri(p.animation_n_frames.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 2 - glEnableVertexAttribArray p.animation_coord.location - glVertexAttribPointeri(p.animation_coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 2 - glEnableVertexAttribArray p.animation_tex_coord.location - glVertexAttribPointeri(p.animation_tex_coord.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 2 - glEnableVertexAttribArray p.animation_tex_diff.location - glVertexAttribPointeri(p.animation_tex_diff.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 1 - glEnableVertexAttribArray p.animation_start.location - glVertexAttribPointeri(p.animation_start.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - size = 1 - glEnableVertexAttribArray p.animation_loops.location - glVertexAttribPointeri(p.animation_loops.location, size, gl_FLOAT, false, bytes_per_vertex, offset) - offset += size * sizeof_gl_float - assert glGetError == gl_NO_ERROR - - # Actual draw - for s in sprites.starts, e in sprites.ends do - var l = e-s - glDrawElementsi(gl_TRIANGLES, l*indices_per_sprite, gl_UNSIGNED_SHORT, 2*s*indices_per_sprite) - assert glGetError == gl_NO_ERROR - end - - # Take down - for attr in [p.translation, p.color, p.scale, p.coord, p.tex_coord, - p.rotation_row0, p.rotation_row1, p.rotation_row2, p.rotation_row3: Attribute] do - if not attr.is_active then continue - glDisableVertexAttribArray(attr.location) - assert glGetError == gl_NO_ERROR - end - - glBindBuffer(gl_ARRAY_BUFFER, 0) - glBindBuffer(gl_ELEMENT_ARRAY_BUFFER, 0) - assert glGetError == gl_NO_ERROR - end -end - -# Representation of sprite data on the GPU -# -# The main purpose of this class is to optimize the use of contiguous -# space in GPU memory. Each contiguous memory block can be drawn in a -# single call. The starts index of each block is kept by `starts, -# and the end + 1 by `ends`. -# -# The data can be compressed by a call to `defragment`. -# -# ~~~ -# intrude import gamnit::flat -# -# var array = new GroupedArray[String] -# assert array.to_s == "" -# -# array.add "a" -# array.add "b" -# array.add "c" -# array.add "d" -# array.add "e" -# array.add "f" -# assert array.to_s == "[a,b,c,d,e,f]" -# assert array.capacity == 6 -# -# array.remove "a" -# assert array.to_s == "[b,c,d,e,f]" -# -# array.remove "b" -# assert array.to_s == "[c,d,e,f]" -# -# array.remove "f" -# assert array.to_s == "[c,d,e]" -# -# array.remove "d" -# assert array.to_s == "[c][e]" -# -# array.add "A" -# assert array.to_s == "[A][c][e]" -# -# array.add "B" -# assert array.to_s == "[A,B,c][e]" -# -# array.remove "e" -# assert array.to_s == "[A,B,c]" -# -# array.add "D" -# assert array.to_s == "[A,B,c,D]" -# -# array.add "E" -# assert array.to_s == "[A,B,c,D,E]" -# assert array.capacity == 6 -# assert array.length == 5 -# -# array.remove "A" -# array.remove "B" -# array.remove "c" -# array.remove "D" -# array.remove "E" -# assert array.to_s == "" -# -# array.add "a" -# assert array.to_s == "[a]" -# ~~~ -private class GroupedArray[E] - - # Memory with actual objects, and null in empty slots - var items = new Array[nullable E] - - # Number of items in the array - var length = 0 - - # Number of item slots in the array - fun capacity: Int do return items.length - - # List of available slots - var available = new MinHeap[Int].default - - # Start index of filled chunks - var starts = new List[Int] - - # Index of the spots after filled chunks - var ends = new List[Int] - - # Add `item` to the first available slot and return its index - fun add(item: E): Int - do - length += 1 - - if available.not_empty then - # starts & ends can't be empty - - var i = available.take - items[i] = item - - if i == starts.first - 1 then - # slot 0 free, 1 taken - starts.first -= 1 - else if i == 0 then - # slot 0 and more free - starts.unshift 0 - ends.unshift 1 - else if starts.length >= 2 and ends.first + 1 == starts[1] then - # merge 2 chunks - ends.remove_at 0 - starts.remove_at 1 - else - # at end of first chunk - ends.first += 1 - end - return i - end - - items.add item - if ends.is_empty then - starts.add 0 - ends.add 1 - else ends.last += 1 - return ends.last - 1 - end - - # Remove the first instance of `item` - fun remove(item: E) - do - var index = items.index_of(item) - remove_at(item, index) - end - - # Remove `item` at `index` - fun remove_at(item: E, index: Int) - do - var i = index - length -= 1 - items[i] = null - - var ii = 0 - for s in starts, e in ends do - if s <= i and i < e then - if s == e-1 then - # single item chunk - starts.remove_at ii - ends.remove_at ii - - if starts.is_empty then - items.clear - available.clear - return - end - else if e-1 == i then - # last item of chunk - ends[ii] -= 1 - - else if s == i then - # first item of chunk - starts[ii] += 1 - else - # break up chunk - ends.insert(ends[ii], ii+1) - ends[ii] = i - starts.insert(i+1, ii+1) - end - - available.add i - return - end - ii += 1 - end - - abort - end - - # Defragment and compress everything into a single chunks beginning at 0 - # - # Returns the elements that moved as a list. - # - # ~~~ - # intrude import gamnit::flat - # - # var array = new GroupedArray[String] - # array.add "a" - # array.add "b" - # array.add "c" - # array.add "d" - # array.remove "c" - # array.remove "a" - # assert array.to_s == "[b][d]" - # - # var moved = array.defragment - # assert moved.to_s == "[d]" - # assert array.to_s == "[d,b]" - # assert array.length == 2 - # assert array.capacity == 2 - # - # array.add "e" - # array.add "f" - # assert array.to_s == "[d,b,e,f]" - # ~~~ - fun defragment(max: nullable Int): Array[E] - do - app.perf_clock_sprites.lapse - max = max or else length - - var moved = new Array[E] - while max > 0 and (starts.length > 1 or starts.first != 0) do - var i = ends.last - 1 - var e = items[i] - assert e != null - remove e - add e - moved.add e - max -= 1 - end - - if starts.length == 1 and starts.first == 0 then - for i in [length..capacity[ do items.pop - available.clear - end - - sys.perfs["gamnit flat gpu defrag"].add app.perf_clock_sprites.lapse - return moved - end - - redef fun to_s - do - var ss = new Array[String] - for s in starts, e in ends do - ss.add "[" - for i in [s..e[ do - var item: nullable Object = items[i] - if item == null then item = "null" - ss.add item.to_s - if i != e-1 then ss.add "," - end - ss.add "]" - end - return ss.join - end -end - -# Optimized `GroupedArray` to use `Sprite::context_index` and avoid using `index_of` -private class GroupedSprites - super GroupedArray[Sprite] - - redef fun add(item) - do - var index = super - item.context_index = index - return index - end - - redef fun remove(item) do remove_at(item, item.context_index) -end - -redef class GLfloatArray - private fun fill_from_matrix(matrix: Matrix, dst_offset: nullable Int) - do - dst_offset = dst_offset or else add_index - var mat_len = matrix.width*matrix.height - assert length >= mat_len + dst_offset - native_array.fill_from_matrix_native(matrix.items, dst_offset, mat_len) - add_index += mat_len - end -end - -redef class NativeGLfloatArray - private fun fill_from_matrix_native(matrix: matrix::NativeDoubleArray, dst_offset, len: Int) `{ - int i; - for (i = 0; i < len; i ++) - self[i+dst_offset] = (GLfloat)matrix[i]; - `} -end - -redef class Sys - private var sprite_draw_order_sorter = new DrawOrderComparator is lazy -end - -# Sort `SpriteContext` by their `draw_order` -private class DrawOrderComparator - super Comparator - - # This class can't set COMPARED because - # `the public property cannot contain the private type...` - #redef type COMPARED: SpriteContext - - # Require: `a isa SpriteContext and b isa SpriteContext` - redef fun compare(a, b) - do return a.as(SpriteContext).draw_order <=> b.as(SpriteContext).draw_order -end diff --git a/lib/gamnit/font.nit b/lib/gamnit/font.nit deleted file mode 100644 index c6f48df880..0000000000 --- a/lib/gamnit/font.nit +++ /dev/null @@ -1,173 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Abstract font drawing services, implemented by `bmfont` and `tileset` -module font - -import gamnit::flat_core - -# Abstract font, drawn by a `TextSprites` -abstract class Font - - # Line spacing modifier for `pld` and `plu` - # - # This value acts as multiplier to the standard line height. - # Defaults to 0.4, so a `pld` moves chars down by about half a line. - var partial_line_mod: Numeric = 0.4 is writable - - # Backend writing service, clients should use `TextSprites.text=` - protected fun write_into(text_sprites: TextSprites, text: Text) is abstract -end - -# Manage a set of sprites to display some text -class TextSprites - - # Font used to draw text - var font: Font - - # Reference coordinates of this block of text - # - # When left aligned, the default at `align == 0.0`, the anchor is the - # left coordinate of the first character of the first line. - # When right aligned, at `align == 1.0`, the anchor is the right - # coordinate of the last character. - # When centered, at `align == 0.5`, the anchor is at the center. - # - # When top aligned, the default at `valign == 0.0`, the anchor is at the - # top of this block of text. - # When bottom aligned, at `valign == 1.0`, the anchor is at the bottom. - var anchor: Point3d[Float] - - # Last set of sprites generated to display `text=` - var sprites = new Array[Sprite] - - # Sprite set where to put created sprites - # - # Defaults to `app::ui_sprites`, but it could also be set to a - # `app::sprites` or a custom collection. - var target_sprite_set: Set[Sprite] = app.ui_sprites is lazy, writable - - private var cached_text: nullable Text = null - - private var init_complete = false - - # Last text drawn - fun text: nullable Text do return cached_text - - # Update the text displayed by inserting new sprites into `app.ui_sprites` - # - # Does not redraw if `text` has not changed. - fun text=(text: nullable Text) - is autoinit do - # Don't redraw if text hasn't changed - if text == cached_text then return - cached_text = text - - if not init_complete then return - - # Clean up last used sprites - for s in sprites do if target_sprite_set.has(s) then target_sprite_set.remove s - sprites.clear - - if text == null then return - - font.write_into(self, text) - - # Register sprites to be drawn by `app.ui_camera` - target_sprite_set.add_all sprites - end - - # Horizontal text alignment - # - # Use 0.0 to align left (the default), 0.5 to align in the center or - # 1.0 to align on the right. - # - # See: `valign` - var align = 0.0 is optional, writable - - # Vertical text alignment - # - # Use 0.0 for top alignment (the default) where the text is under the `anchor`, - # 0.5 to vertically center the text on the `anchor` or - # or 1.0 to bottom align the text above the `anchor`. - # - # See: `align` - var valign = 0.0 is optional, writable - - # Maximum width of each line of text - # - # The first word of each line is exempt and may overflow. - # - # The behavior when a line overflow depends on `wrap`. - var max_width: nullable Float is writable - - # Maximum height of this block of text - # - # The first line is exempt and may overflow. - # Overflowing lines are cut. - var max_height: nullable Float is writable - - # Should overflowing lines wrap to the next line? - # - # If `true`, the default, overflowing lines continue on the next line. - # Otherwise, lines are cut before overflowing. - var wrap = true is optional, writable - - # Scale applied to all sprites and spacing - # - # Defaults to 1.0. - var scale = 1.0 is optional, writable - - # Links in the currently displayed text - # - # Links are declared in a Markdown-like format: - # - # * `[my link]` creates a link with the name `my link`. - # * `[pretty name](internal name)` creates a link with the - # name `internal_name` while showing the text `pretty name`. - # - # This `Map` lists the sprites composing each link. - # These sprites can be modified as desired by the clients, - # by changing their tints or anything else. - var links = new Map[String, Array[Sprite]] is lazy - - # Width of the currently displayed text - var width = 0.0 - - # Height of the currently displayed text - var height = 0.0 - - # Force drawing of the text sprites - # - # This method may be called after changing a setting (`align`, `wrap`, etc.) - # to update the displayed text. - fun force_redraw - do - var t = cached_text - cached_text = null - text = t - end - - init - do - init_complete = true - force_redraw - end -end - -# Partial line forward (U+008B) -fun pld: Char do return '‹' - -# Partial line backward (U+008C) -fun plu: Char do return 'Œ' diff --git a/lib/gamnit/gamnit.nit b/lib/gamnit/gamnit.nit deleted file mode 100644 index c1ecc86b62..0000000000 --- a/lib/gamnit/gamnit.nit +++ /dev/null @@ -1,120 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Game and multimedia framework for Nit -module gamnit - -import app - -import display -import textures -import programs - -import gamnit_android is conditional(android) -import gamnit_linux is conditional(linux) -import gamnit_ios is conditional(ios) -import input_ios is conditional(ios) - -redef class App - - # Main `GamnitDisplay` initialized by `create_gamnit` - var display: nullable GamnitDisplay = null - - # Hook to setup the OpenGL context: compiling shaders, creating VBO, reloading textures, etc. - # - # The gamnit services redefine this method to prepare optimizations and more. - # Clients may also refine this method to prepare custom OpenGL resources. - fun create_gamnit do end - - # Hook to prepare for recreating the OpenGL context - # - # Some gamnit services refine this method to reset caches before the - # next call to `create_gamnit`. - fun recreate_gamnit do end - - # Create and set `self.display` - fun create_display - do - var display = new GamnitDisplay - display.setup - self.display = display - - # Print the current GL configuration, for debugging - print "GL vendor: {glGetString(gl_VENDOR)}" - print "GL renderer: {glGetString(gl_RENDERER)}" - print "GL version: {glGetString(gl_VERSION)}" - print "GLSL version: {glGetString(gl_SHADING_LANGUAGE_VERSION)}" - print "GL extensions: {glGetString(gl_EXTENSIONS)}" - print "GL max texture size: {glGetIntegerv(gl_MAX_TEXTURE_SIZE, 0)}" - end - - # Hook for client programs to setup the scene - # - # Refine this method to build the game world or the main menu, - # creating instances of `Sprite` and `Actor` as needed. - # - # This method is called only once per execution of the program and it should - # be considered as the entry point of most game logic. - fun create_scene do end - - # Core of the frame logic, executed only when the display is visible - # - # This method should be redefined by user modules to customize the behavior of the game. - protected fun frame_core(display: GamnitDisplay) do end - - # Full frame logic, executed even if the display is not visible - # - # This method wraps `frame_core` and other services to be executed in the main app loop. - # - # To customize the behavior on each turn, it is preferable to redefined `frame_core`. - # Still, `frame_full` can be redefined with care for more control. - protected fun frame_full - do - var display = display - if display != null then frame_core(display) - - feed_events - end - - redef fun run - do - # TODO manage exit condition - loop frame_full - end - - # Loop on available events and feed them back to the app - # - # The implementation varies per platform. - private fun feed_events do end - - # Hook to receive and respond to `event` triggered by the user or system - # - # Returns whether or not the event is used or intercepted. - # If `true`, the event will not be processed further by the system. - # Returns `false` to intercepts events like the back key on mobile devices. - # - # The instances passed as `event` may be freed (or overwritten), - # right after this method returns. They should not be preserved. - fun accept_event(event: InputEvent): Bool do return false - - # The window has been resized by the user or system - # - # The framework handles resizing the viewport automatically. - fun on_resize(display: GamnitDisplay) do end -end - -# Portable indirection to `glBindFramebuffer(gl_FRAMEBUFFER, fbo)` -# -# This is implemented differently on iOS. -fun bind_screen_framebuffer(fbo: Int) do glBindFramebuffer(gl_FRAMEBUFFER, fbo) diff --git a/lib/gamnit/gamnit_android.nit b/lib/gamnit/gamnit_android.nit deleted file mode 100644 index 83bb564e31..0000000000 --- a/lib/gamnit/gamnit_android.nit +++ /dev/null @@ -1,307 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Support services for Gamnit on Android -module gamnit_android is - android_api_min 15 - android_api_target 15 - android_manifest_activity """android:theme="@android:style/Theme.NoTitleBar.Fullscreen"""" - android_manifest_activity """android:configChanges="orientation|screenSize|keyboard|keyboardHidden"""" -end - -import android - -intrude import gamnit -intrude import android::input_events -import egl - -private import realtime - -# Print Android lifecycle events to the log? -fun print_lifecycle_events: Bool do return true - -redef class App - - # --- - # User inputs - - redef fun feed_events do app.poll_looper 0 - - redef fun native_input_key(event) do return accept_event(event) - - redef fun native_input_motion(event) - do - if not scene_created then return false - - var ie = new AndroidMotionEvent(event) - var handled = accept_event(ie) - - if not handled then accept_event ie.acting_pointer - - return handled - end - - # --- - # Handle OS lifecycle and set current state flag - - # State between `init_window` and `term_window` - private var window_created = false - - # State between `gained_focus` and `lost_focus` - private var focused = false - - # State between `resume` and `pause` - private var resumed = false - - # Stage after `destroy` - private var destroyed = false - - redef fun init_window - do - if print_lifecycle_events then print "+ init_window" - window_created = true - set_active - super - end - - redef fun term_window - do - if print_lifecycle_events then print "+ term_window" - window_created = false - set_inactive - super - end - - redef fun resume - do - if print_lifecycle_events then print "+ resume" - resumed = true - set_active - super - end - - redef fun pause - do - if print_lifecycle_events then print "+ pause" - resumed = false - set_inactive - super - end - - redef fun gained_focus - do - if print_lifecycle_events then print "+ gained_focus" - focused = true - set_active - super - end - - redef fun lost_focus - do - if print_lifecycle_events then print "+ lost_focus" - focused = false - super - end - - redef fun destroy - do - if print_lifecycle_events then print "+ destroy" - destroyed = true - super - end - - redef fun start - do - if print_lifecycle_events then print "+ start" - super - end - - redef fun stop - do - if print_lifecycle_events then print "+ stop" - set_inactive - super - end - - redef fun config_changed - do - if print_lifecycle_events then print "+ config_changed" - super - end - - redef fun window_resized - do - if print_lifecycle_events then print "+ window_resized" - super - end - - redef fun content_rect_changed - do - if print_lifecycle_events then print "+ content_rect_changed" - super - end - - # --- - # Update gamnit app - - # The app is fully visible and focused - private var active = false - - # The scene was set up - private var scene_created = false - - private fun set_active - do - assert not destroyed - if window_created and resumed and focused and not active then - var display = display - if display == null then - # Initial create - create_display - create_gamnit - display = self.display - else - # Try to reuse the EGL context - var native_window = app.native_app_glue.window - assert not native_window.address_is_null - var needs_recreate = display.check_egl_context(native_window) - if needs_recreate then - - # Skip frame - if display.native_window_is_invalid then - print_error "the native window is invalid, skip frame" - return - end - - # The context was lost, reload everything - create_gamnit - recreate_gamnit - end - end - - # Update screen dimensions - assert display != null - display.update_size - app.on_resize display - - if not scene_created then - # Initial launch - if debug_gamnit then print "set_active: create" - create_scene - scene_created = true - on_restore_state - else - # Next to first launch, reload - if debug_gamnit then print "set_active: recreate" - end - - active = true - end - end - - private fun set_inactive - do - active = false - end - - # --- - # Implement gamnit entry points - - redef fun recreate_gamnit - do - super - - # Reload all textures - if debug_gamnit then print "recreate_gamnit: reloading {all_root_textures.length} textures" - for texture in all_root_textures do - if debug_gamnit then print "recreate_gamnit: loading {texture}" - texture.load true - var gamnit_error = texture.error - if gamnit_error != null then print_error gamnit_error - end - end - - redef fun run - do - if debug_gamnit then print "run: start" - scene_created = false - - while not destroyed do - if not active then - if debug_gamnit then print "run: wait" - app.poll_looper_pause -1 - - else - if debug_gamnit then print "run: frame" - - var native_window = app.native_app_glue.window - assert not native_window.address_is_null - - var display = display - assert display != null - - var needs_recreate = display.check_egl_context(native_window) - if needs_recreate then - if display.native_window_is_invalid then - # This should be rare and may cause more issues, log it - print "The native window is invalid, skip frame" - set_inactive - continue - end - - # The context was lost, reload everything - create_gamnit - recreate_gamnit - end - - assert scene_created - frame_full - end - end - - if debug_gamnit then print "run: exit" - exit 0 - end -end - -redef class GamnitDisplay - - redef var width = 1080 - redef var height = 720 - - # Update `width` and `height` - private fun update_size - do - var context = app.native_activity - self.width = context.window_width - self.height = context.window_height - end -end - -redef class NativeActivity - - private fun window_height: Int in "Java" `{ - android.view.View view = self.getWindow().getDecorView(); - return view.getBottom() - view.getTop(); - `} - - private fun window_width: Int in "Java" `{ - android.view.View view = self.getWindow().getDecorView(); - return view.getRight() - view.getLeft(); - `} - - private fun orientation: Int in "Java" `{ - return self.getResources().getConfiguration().orientation; - `} -end diff --git a/lib/gamnit/gamnit_ios.nit b/lib/gamnit/gamnit_ios.nit deleted file mode 100644 index 4ee0a9827a..0000000000 --- a/lib/gamnit/gamnit_ios.nit +++ /dev/null @@ -1,46 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Support services for gamnit on iOS -module gamnit_ios - -import ios -import gamnit - -import ios::assets - -redef class App - redef fun did_finish_launching_with_options - do - create_gamnit - create_scene - return super - end - - # Disable the game loop to rely on the GLKView callbacks on each frame instead - redef fun run do end - - private fun frame_full_indirect do frame_full -end - -redef class GamnitGLKView - redef fun update do app.frame_full_indirect -end - -redef fun bind_screen_framebuffer(fbo) -do - var display = app.display - assert display != null - display.glk_view.bind_drawable -end diff --git a/lib/gamnit/gamnit_linux.nit b/lib/gamnit/gamnit_linux.nit deleted file mode 100644 index 7dd853a377..0000000000 --- a/lib/gamnit/gamnit_linux.nit +++ /dev/null @@ -1,169 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Support services for Gamnit on GNU/Linux -module gamnit_linux - -import sdl2::events - -intrude import gamnit -intrude import display_linux - -redef class App - private var sdl_event_buffer = new SDLEventBuffer.malloc - - redef fun feed_events - do - var display = display - if display == null then return - - loop - var avail = sdl_event_buffer.poll_event - if not avail then break - - # Convert to an SDL event with data - var sdl_event = sdl_event_buffer.to_event - if sdl_event isa SDLWindowEvent and sdl_event.is_resized then - display.width = sdl_event.data1 - display.height = sdl_event.data2 - display.aspect_ratio = sdl_event.data1.to_f / sdl_event.data2.to_f - on_resize display - end - - # Convert to `mnit::inputs` conforming objects - var gamnit_event = sdl_event.to_gamnit_event(sdl_event_buffer) - accept_event gamnit_event - end - end - - redef fun on_create - do - super - create_display - create_gamnit - create_scene - end -end - -redef class GamnitDisplay - redef var aspect_ratio = super is lazy -end - -# --- -# Redef services from `sdl2::events` - -redef class SDLEvent - private fun to_gamnit_event(buffer: SDLEventBuffer): GamnitInputEvent - do return new GamnitOtherEvent(buffer, self) -end - -redef class SDLQuitEvent - redef fun to_gamnit_event(buffer) do return new GamnitQuitEvent(buffer, self) -end - -redef class SDLMouseEvent - redef fun to_gamnit_event(buffer) do return new GamnitPointerEvent(buffer, self) -end - -redef class SDLMouseWheelEvent - redef fun to_gamnit_event(buffer) do return new GamnitMouseWheelEvent(buffer, self) -end - -redef class SDLKeyboardEvent - redef fun to_gamnit_event(buffer) do return new GamnitKeyEvent(buffer, self) -end - -# --- -# Implement `mnit::inputs` interfaces - -# SDL2 event wrapper implementing the `mnit::input` API -# -# There is two views to the underlying native object: `buffer` and `native`. -class GamnitInputEvent - super InputEvent - - # Native SDL 2 event buffer with the pseudo class hierarchy metadata - var buffer: SDLEventBuffer - - # Native SDL 2 event - var native: NATIVE - - # Type of the `native` underlying SDL 2 event - type NATIVE: SDLEvent -end - -# Event on user requested quit -class GamnitQuitEvent - super GamnitInputEvent - super QuitEvent - - redef type NATIVE: SDLQuitEvent -end - -# Event on keyboard input -class GamnitKeyEvent - super GamnitInputEvent - super KeyEvent - - redef type NATIVE: SDLKeyboardEvent - - redef fun is_down do return buffer.is_keydown - redef fun is_up do return buffer.is_keyup - redef fun is_arrow_up do return native.keysym.is_up - redef fun is_arrow_left do return native.keysym.is_left - redef fun is_arrow_down do return native.keysym.is_down - redef fun is_arrow_right do return native.keysym.is_right - redef fun to_c do return native.to_s.chars.first - redef fun name do return native.to_s.to_lower -end - -# Event on pointer, mouse and finger input -class GamnitPointerEvent - super GamnitInputEvent - super PointerEvent - - redef type NATIVE: SDLMouseEvent - - redef fun x do return native.x.to_f - redef fun y do return native.y.to_f - redef fun is_move do return buffer.is_mouse_motion - - redef fun pressed - do - var native = native - if native isa SDLMouseButtonEvent then - return native.pressed and native.button == 1 - else if native isa SDLMouseMotionEvent then - return native.state & 1 == 1 - else abort - end -end - -# Event on mouse wheel input -class GamnitMouseWheelEvent - super GamnitInputEvent - - redef type NATIVE: SDLMouseWheelEvent - - # Horizontal scroll amount - fun x: Float do return native.x.to_f - - # Vertical scroll amount - fun y: Float do return native.y.to_f -end - -# SDL2 event not handled by gamnit -class GamnitOtherEvent - super GamnitInputEvent -end diff --git a/lib/gamnit/input_ios.nit b/lib/gamnit/input_ios.nit deleted file mode 100644 index cb3d463c32..0000000000 --- a/lib/gamnit/input_ios.nit +++ /dev/null @@ -1,59 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Gamnit event support for iOS -module input_ios - -intrude import ios::glkit -import display_ios -import gamnit_ios - -# Pointer/touch event on iOS -class GamnitIOSPointerEvent - super PointerEvent - - private var native: UIEvent - - private var native_touch: UITouch - - private var content_scale_factor: Float - - redef fun x do return native_touch.x * content_scale_factor - - redef fun y do return native_touch.y * content_scale_factor - - redef var pressed - - redef var is_move - - redef var pointer_id = native_touch.to_i is lazy -end - -redef class NitGLKView - - redef var content_scale_factor = super is lazy - - redef fun touches_began(touches, event) - do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, false)) - - redef fun touches_moved(touches, event) - do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, true)) - - redef fun touches_ended(touches, event) - do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, false, false)) - - # TODO handle cancel - #redef fun touches_cancelled(touches_event) do - #do app.accept_event(new GamnitIOSPointerEvent(event, false, false)) -end diff --git a/lib/gamnit/keys.nit b/lib/gamnit/keys.nit deleted file mode 100644 index 014d3972aa..0000000000 --- a/lib/gamnit/keys.nit +++ /dev/null @@ -1,69 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Simple service keeping track of which keys are currently pressed -# -# This service revolves around `app.pressed_keys`, a `Set` of the names of currently pressed keys. -# As a `Set`, `app.pressed_keys` can be iterated and queried with `has`. -# -# Limitations: The keys names are platform dependent. -# -# ~~~nitish -# redef class App -# redef fun accept_event(event) -# do -# # First, pass the event to `super`, `pressed_keys` must see all -# # events but it doesn't intercept any of them. -# if super then return true -# return false -# end -# -# redef fun update(dt) -# do -# for key in pressed_keys do -# if k == "left" or k == "a" then -# # Act on key pressed down -# print "left or a is pressed down" -# end -# end -# end -# end -# ~~~ -module keys - -import mnit::input -import gamnit - -redef class App - # Currently pressed keys - var pressed_keys = new Set[String] is lazy - - # Register `event` to update `app.pressed_keys` - private fun register_key_event(event: KeyEvent) - do - var key = event.name - if event.is_down then - app.pressed_keys.add key - else if app.pressed_keys.has(key) then - app.pressed_keys.remove key - end - end - - redef fun accept_event(event) - do - if event isa KeyEvent then register_key_event event - - return super - end -end diff --git a/lib/gamnit/landscape.nit b/lib/gamnit/landscape.nit deleted file mode 100644 index d897ac7fe4..0000000000 --- a/lib/gamnit/landscape.nit +++ /dev/null @@ -1,18 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Lock the application in the landscape orientation -module landscape - -import android::landscape is conditional(android) diff --git a/lib/gamnit/limit_fps.nit b/lib/gamnit/limit_fps.nit deleted file mode 100644 index ed73f5f322..0000000000 --- a/lib/gamnit/limit_fps.nit +++ /dev/null @@ -1,78 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Frame-rate control for applications -module limit_fps - -import gamnit -private import realtime - -redef class App - # Limit the frame-rate to a given frequency - # - # This basically limits how much `frame_core` is called per second. - # Zero (or a negative value) means no limit. - # - # Applications can modify this value even during the main-loop. - var maximum_fps = 0.0 is writable - - # Current frame-rate - # - # Updated each 5 seconds, initialized at the value of `maximum_fps`. - var current_fps: Float = maximum_fps is lazy - - redef fun frame_full - do - super - limit_fps - end - - # The clock for limit_fps - private var clock = new Clock - - # Number of frames since the last deadline - # - # Used to compute `current_fps`. - private var frame_count = 0 - - # Deadline used to compute `current_fps` - private var frame_count_deadline = 5.0 - - # Check and sleep to maintain a frame-rate bellow `maximum_fps` - # - # Also periodically update `current_fps` - # Is automatically called at the end of `full_frame`. - fun limit_fps - do - var t = clock.total - if t >= frame_count_deadline then - var cfps = frame_count.to_f / 5.0 - self.current_fps = cfps - frame_count = 0 - frame_count_deadline = t + 5.0 - end - frame_count += 1 - - var mfps = maximum_fps - if mfps <= 0.0 then return - var lapse = clock.lapse - var dt = lapse.to_f - var target_dt = 1.0 / mfps - if dt < target_dt then - var sleep_t = target_dt - dt - sleep_t.sleep - clock.lapse - end - end -end diff --git a/lib/gamnit/model_parsers/model_parser_base.nit b/lib/gamnit/model_parsers/model_parser_base.nit deleted file mode 100644 index de0fa21c70..0000000000 --- a/lib/gamnit/model_parsers/model_parser_base.nit +++ /dev/null @@ -1,181 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services to parse models from a text description -module model_parser_base - -import parser_base - -# Vector of 3 values, either `x, y, z`, `u, v, z` or `r, g, b` -class Vec3 - - # X value - var x = 0.0 is writable - - # Y value - var y = 0.0 is writable - - # Z value - var z = 0.0 is writable - - # U value (redirection as `x`) - fun u: Float do return x - - # Set U value (redirection for `x=`) - fun u=(value: Float) do x = value - - # V value (redirection as `y`) - fun v: Float do return y - - # Set V value (redirection for `y=`) - fun v=(value: Float) do y = value - - # R value - fun r: Float do return x - - # Set R value (redirection for `x=`) - fun r=(value: Float) do x = value - - # G value - fun g: Float do return y - - # Set G value (redirection for `y=`) - fun g=(value: Float) do y = value - - # B value - fun b: Float do return z - - # Set B value (redirection for `z=`) - fun b=(value: Float) do z = value - - # Return all values into a new `Array[Float]` - fun to_a: Array[Float] do return [x, y, z] - - redef fun to_s do return "<{class_name} {x} {y} {z}>" -end - -# Vector of 4 values, either `x, y, z, w`, `u, v, z, w` or `r, g, b, a` -class Vec4 - super Vec3 - - # W value - var w = 1.0 is writable - - # A value (redirection to `z`) - fun a: Float do return z - - # Set A value (redirection for `z=`) - fun a=(value: Float) do z = value - - # Return all values into a new `Array[Float]` - redef fun to_a do return [x, y, z, w] - - redef fun to_s do return "<{class_name} {x} {y} {z} {w}>" -end - -redef class StringProcessor - # Read a single token after skipping preceding whitespaces - # - # Returns an empty string when at `eof` - protected fun read_token: String - do - while not eof and src[pos].is_whitespace and src[pos] != '\n' do - pos += 1 - end - - var start = pos - ignore_until_whitespace_or_comment - var ending = pos - var str = src.substring(start, ending-start) - return str - end - - # Read 3 or 4 numbers and return them as a `Vec4` - # - # If there is no fourth value, `Vec4::w` is set to 1.0. - protected fun read_vec4: Vec4 - do - var vec = new Vec4 - vec.x = read_number - vec.y = read_number - vec.z = read_number - - var wstr = read_token - if wstr.length > 0 then - vec.w = if wstr.is_numeric then wstr.to_f else 0.0 - else - vec.w = 1.0 - end - - return vec - end - - # Read 2 or 3 numbers and return them as a `Vec3` - # - # If there is no third value, `Vec3::z` is set to 0.0. - protected fun read_vec3: Vec3 - do - var vec = new Vec3 - vec.x = read_number - vec.y = read_number # Make optional - - var wstr = read_token - if wstr.length > 0 then - vec.z = if wstr.is_numeric then wstr.to_f else 0.0 - else - vec.z = 0.0 - end - - return vec - end - - # Advance `pos` until a whitespace or `#` is encountered - protected fun ignore_until_whitespace_or_comment: Int - do - while src.length > pos and not src[pos].is_whitespace and src[pos] != '#' do - pos += 1 - end - return pos - end - - # Read a token and parse it as a `Float` - protected fun read_number: Float - do - var str = read_token - return if str.is_numeric then str.to_f else 0.0 - end - - # Advance `pos` until the next end of line or a `#` - protected fun read_until_eol_or_comment: String - do - ignore_whitespaces - var start = pos - while not eof and src[pos] != '#' and src[pos] != '\n' do - pos += 1 - end - var ending = pos - var str = src.substring(start, ending-start) - return str.trim - end - - # Advance `pos` to skip the next end of line - protected fun skip_eol - do - while not eof do - var c = src.chars[pos] - pos += 1 - if c == '\n' then break - end - end -end diff --git a/lib/gamnit/model_parsers/mtl.nit b/lib/gamnit/model_parsers/mtl.nit deleted file mode 100644 index fc34e47fe5..0000000000 --- a/lib/gamnit/model_parsers/mtl.nit +++ /dev/null @@ -1,136 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services to parse .mtl material files -module mtl - -import model_parser_base - -# Parser of `.mtl` files -# -# ~~~ -# var mtl_src = """ -# # Green material with low reflections -# newmtl GreenMaterial -# Ns 96.078431 -# Ka 0.000000 0.000000 0.000000 -# Kd 0.027186 0.180434 0.012088 -# Ks 0.500000 0.500000 0.500000 -# Ni 1.000000 -# d 1.000000 -# illum 2 -# """ -# -# var parser = new MtlFileParser(mtl_src) -# var name_to_mtls = parser.parse -# assert name_to_mtls.keys.join == "GreenMaterial" -# ~~~ -class MtlFileParser - super StringProcessor - - # Read and parse source and return all materials organized by their names - fun parse: Map[String, MtlDef] - do - var mat_lib = new Map[String, MtlDef] - var material: nullable MtlDef = null - - while not eof do - var token = read_token - if token == "newmtl" then - var name = read_until_eol_or_comment - material = new MtlDef(name) - mat_lib[name] = material - else if material != null then - if token == "Ka" then - material.ambient = read_vec3 - else if token == "Kd" then - material.diffuse = read_vec3 - else if token == "Ks" then - material.specular = read_vec3 - else if token == "d" then - material.dissolved = read_number - else if token == "Tr" then - material.dissolved = 1.0 - read_number - else if token == "illum" then - material.illumination_model = read_number.to_i - else if token == "map_Ka" then - material.map_ambient = read_until_eol_or_comment - else if token == "map_Kd" then - material.map_diffuse = read_until_eol_or_comment - else if token == "map_Bump" then - material.map_bump = read_until_eol_or_comment - else if token == "map_Ks" then - material.map_specular = read_until_eol_or_comment - else if token == "map_Ns" then - material.map_exponent = read_until_eol_or_comment - - # TODO other line type headers - else if token == "Ns" then - else if token == "Ni" then - else if token == "sharpness" then - else if token == "bump" then - end - end - skip_eol - end - - return mat_lib - end -end - -# Material defined in a `.mtl` file -class MtlDef - - # Name of this material - var name: String - - # Ambient color - var ambient = new Vec3 is lazy - - # Diffuse color - var diffuse = new Vec3 is lazy - - # Specular color - var specular = new Vec3 is lazy - - # Dissolved level, where 1.0 is fully visible - var dissolved = 1.0 - - # Transparency level, where 1.0 is fully invisible - fun transparency: Float do return 1.0 - dissolved - - # Illumination model - var illumination_model = 0 - - # Ambient map - var map_ambient: nullable String = null - - # Diffuse map - var map_diffuse: nullable String = null - - # Bump map or normals texture - var map_bump: nullable String = null - - # Specular reflectivity map - var map_specular: nullable String = null - - # Specular exponent map - var map_exponent: nullable String = null - - # Collect non-null maps from `map_diffuse, map_bump, map_specular, map_exponent` - fun maps: Array[String] - do - return [for m in [map_ambient, map_diffuse, map_bump, map_specular, map_exponent] do if m != null then m] - end -end diff --git a/lib/gamnit/model_parsers/obj.nit b/lib/gamnit/model_parsers/obj.nit deleted file mode 100644 index 62f1488eeb..0000000000 --- a/lib/gamnit/model_parsers/obj.nit +++ /dev/null @@ -1,252 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services to parse .obj geometry files -module obj - -import model_parser_base - -# Parser of .obj files in ASCII format -# -# Instantiate from a `String` and use `parse` to extract the `ObjDef`. -# -# ~~~ -# var obj_src = """ -# # Model of a cube -# mtllib material_file.mtl -# o Cube -# v 1.000000 0.000000 0.000000 -# v 1.000000 0.000000 1.000000 -# v 0.000000 0.000000 1.000000 -# v 0.000000 0.000000 0.000000 -# v 1.000000 1.000000 0.999999 -# v 0.999999 1.000000 1.000001 -# v 0.000000 1.000000 1.000000 -# v 0.000000 1.000000 0.000000 -# usemtl GreenMaterial -# s off -# f 1 2 3 4 -# f 5 6 7 8 -# f 1 5 8 2 -# f 2 8 7 3 -# f 3 7 6 4 -# f 5 1 4 6 -# """ -# -# var parser = new ObjFileParser(obj_src) -# var parsed_obj = parser.parse -# assert parsed_obj.is_coherent -# assert parsed_obj.objects.first.name == "Cube" -# ~~~ -class ObjFileParser - super StringProcessor - - private var geometry = new ObjDef is lazy - - private var current_material_lib: nullable String = null - - private var current_material_name: nullable String = null - - # Execute parsing of `src` to extract an `ObjDef` - fun parse: nullable ObjDef - do - var obj_obj = null - while not eof do - var token = read_token - if token.is_empty or token == "#" then - # Ignore empty lines and comments - else if token == "v" then # Vertex points - var vec = read_vec4 - geometry.vertex_points.add vec - else if token == "vt" then # Texture coords - var vec = read_vec3 - geometry.texture_coords.add vec - else if token == "vn" then # Normals - var vec = read_vec3 # This one should not accept `w` values - geometry.normals.add vec - else if token == "vp" then # Parameter space vertices - var vec = read_vec3 - geometry.params.add vec - else if token == "f" then # Faces - var face = read_face - if obj_obj == null then - obj_obj = new ObjObj("") - geometry.objects.add obj_obj - end - obj_obj.faces.add face - else if token == "mtllib" then - current_material_lib = read_until_eol_or_comment - else if token == "usemtl" then - current_material_name = read_until_eol_or_comment - - # TODO other line type headers - else if token == "s" then - else if token == "o" then - obj_obj = new ObjObj(read_until_eol_or_comment) - geometry.objects.add obj_obj - else if token == "g" then - end - skip_eol - end - return geometry - end - - private fun read_face: ObjFace - do - var face = new ObjFace(current_material_lib, current_material_name) - - loop - var r = read_face_index_set(face) - if not r then break - end - - return face - end - - private fun read_face_index_set(face: ObjFace): Bool - do - var token = read_token - - var parts = token.split('/') - if parts.is_empty or parts.first.is_empty then return false - - var v = new ObjVertex - for i in parts.length.times, part in parts do - part = part.trim - - var n = null - if not part.is_empty and part.is_numeric then n = part.to_i - - if i == 0 then - n = n or else 0 # Error if n == null - if n < 0 then n = geometry.vertex_points.length + n - v.vertex_point_index = n - else if i == 1 then - if n != null and n < 0 then n = geometry.texture_coords.length + n - v.texture_coord_index = n - else if i == 2 then - if n != null and n < 0 then n = geometry.normals.length + n - v.normal_index = n - else abort - end - face.vertices.add v - - return true - end -end - -# Geometry from a .obj file -class ObjDef - # Vertex coordinates - var vertex_points = new Array[Vec4] - - # Texture coordinates - var texture_coords = new Array[Vec3] - - # Normals - var normals = new Array[Vec3] - - # Surface parameters - var params = new Array[Vec3] - - # Sub-objects - var objects = new Array[ObjObj] - - # Relative paths to referenced material libraries - fun material_libs: Set[String] do - var libs = new Set[String] - for obj in objects do - for face in obj.faces do - var lib = face.material_lib - if lib != null then libs.add lib - end - end - return libs - end - - # Check the coherence of the model - # - # Returns `false` on error and prints details to stderr. - # - # This service can be useful for debugging, however it should not - # be executed at each execution of a game. - fun is_coherent: Bool - do - for obj in objects do - for f in obj.faces do - if f.vertices.length < 3 then return error("Face with less than 3 vertices") - end - - for f in obj.faces do for v in f.vertices do - var i = v.vertex_point_index - if i < 1 then return error("Vertex point index < 1") - if i > vertex_points.length then return error("Vertex point index > than length") - - var j = v.texture_coord_index - if j != null then - if j < 1 then return error("Texture coord index < 1") - if j > texture_coords.length then return error("Texture coord index > than length") - end - - j = v.normal_index - if j != null then - if j < 1 then return error("Normal index < 1") - if j > normals.length then return error("Normal index > than length") - end - end - end - return true - end - - # Service to print errors for `is_coherent` - private fun error(msg: Text): Bool - do - print_error "ObjDef Error: {msg}" - return false - end -end - -# Sub-object within an `ObjDef` -class ObjObj - - # Sub-object name as declared in the source file - var name: String - - # Sub-object faces - var faces = new Array[ObjFace] -end - -# Flat surface of an `ObjDef` -class ObjFace - # Vertex composing this surface, there should be 3 or more - var vertices = new Array[ObjVertex] - - # Relative path to the .mtl material lib - var material_lib: nullable String - - # Name of the material in `material_lib` - var material_name: nullable String -end - -# Vertex composing a `ObjFace` -class ObjVertex - # Vertex coordinates index in `ObjDef::vertex_points`, starting at 1 - var vertex_point_index = 0 - - # Texture coordinates index in `ObjDef::texture_coords`, starting at 1 - var texture_coord_index: nullable Int = null - - # Normal index in `ObjDef::normals`, starting at 1 - var normal_index: nullable Int = null -end diff --git a/lib/gamnit/network/client.nit b/lib/gamnit/network/client.nit deleted file mode 100644 index dc4fc7b297..0000000000 --- a/lib/gamnit/network/client.nit +++ /dev/null @@ -1,184 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Client-side network services for games and such -# -# The following code implements a client to connect to a local server and -# briefly exchange with it. -# -# ~~~ -# redef fun handshake_app_name do return "nitwork_test" -# redef fun handshake_app_version do return "1.0" -# -# # Prepare connection with remote server -# var config = new RemoteServerConfig("localhost", 4444) -# var server = new RemoteServer(config) -# -# # Try to connect -# if not server.connect then return -# -# # Make sure the server is compatible -# if not server.handshake then return -# -# # Connection up! communicate -# server.writer.serialize "hello server" -# print server.reader.deserialize.as(Object) -# -# # Done, close socket -# server.socket.close -# ~~~ -module client - -intrude import common - -# Information of the remove server -class RemoteServerConfig - - # Address of the remote server, either a domain name or an Internet address - var address: Text - - # Listening port of the server - var port: Int -end - -# Connection to a remote server -class RemoteServer - - # `RemoteServerConfig` used to initiate connection to the server - var config: RemoteServerConfig - - # Communication socket with the server - var socket: nullable TCPStream = null - - # Is this connection connected? - fun connected: Bool - do - var socket = socket - return socket != null and socket.connected - end - - # `MsgPackSerializer` used to send data to this client through `socket` - var writer: MsgPackSerializer is noinit - - # `MsgPackDeserializer` used to receive data from this client through `socket` - var reader: MsgPackDeserializer is noinit - - # Attempt connection with the remote server - fun connect: Bool - do - print "Connecting to {config.address}:{config.port}..." - var socket = new TCPStream.connect(config.address.to_s, config.port) - self.socket = socket - - if not socket.connected then - print "Connection failed: {socket.last_error or else "Internal error"}" - return false - end - - # Setup serialization - writer = new MsgPackSerializer(socket) - writer.cache = new AsyncCache(false) - reader = new MsgPackDeserializer(socket) - writer.link reader - - return true - end - - # Attempt handshake with server - # - # Validates compatibility between `handshake_app_name` and `handshake_app_version`. - # - # On error, close `socket`. - fun handshake: Bool - do - # The client goes first so that the server doesn't show its hand - var socket = socket - assert socket != null - - # App name - var app_name = sys.handshake_app_name - socket.serialize_msgpack app_name - - var server_app = socket.deserialize_msgpack("String") - if server_app != app_name then - print_error "Handshake Error: server app name is '{server_app or else ""}'" - socket.close - return false - end - - # App version - socket.serialize_msgpack sys.handshake_app_version - - var server_version = socket.deserialize_msgpack("String") - if server_version != sys.handshake_app_version then - print_error "Handshake Error: server version is different '{server_version or else ""}'" - socket.close - return false - end - - return true - end -end - -# Discover local servers responding on UDP `discovery_port` -# -# Sends a message in the format `gamnit::network? handshake_app_name` and -# looks for the response `gamnit::network! handshake_app_name port_number`. -# Waits for `timeout`, or the default 0.1 seconds, after sending the message. -# -# The server usually responds using the method `answer_discovery_requests`. -# When receiving responses, the client may then choose a server and -# connect via `new RemoteServer`. -# -# ~~~ -# var servers = discover_local_servers -# if servers.not_empty then -# var server = new RemoteServer(servers.first) -# server.connect -# server.writer.serialize "hello server" -# server.socket.close -# end -# ~~~ -fun discover_local_servers(timeout: nullable Float): Array[RemoteServerConfig] -do - timeout = timeout or else 0.1 - - var s = new UDPSocket - s.enable_broadcast = true - s.blocking = false - s.broadcast(discovery_port, "{discovery_request_message} {handshake_app_name}") - timeout.sleep - - var r = new Array[RemoteServerConfig] - loop - var ptr = new Ref[nullable SocketAddress](null) - var resp = s.recv_from(1024, ptr) - var src = ptr.item - - if resp.is_empty then - # No response - break - else - assert src != null - var words = resp.split(" ") - if words.length == 3 and words[0] == discovery_response_message and - words[1] == handshake_app_name and words[2].is_int then - var address = src.address - var port = words[2].to_i - r.add new RemoteServerConfig(address, port) - end - end - end - return r -end diff --git a/lib/gamnit/network/common.nit b/lib/gamnit/network/common.nit deleted file mode 100644 index 339aa9bbf9..0000000000 --- a/lib/gamnit/network/common.nit +++ /dev/null @@ -1,49 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services common to the `client` and `server` modules -module common - -import socket -import msgpack - -# Unique name of the application to use in the handshake -# -# This name must be the same between client/server and -# it should not be used by other programs that may interfere. -# Both client and server refuse connections with a different name. -# -# This value must not contain spaces. -fun handshake_app_name: String do return program_name - -# Version of the communication protocol to use in the handshake -# -# Its value should change with the communication protocol in such a way -# that different versions indicates incompatible protocols. -# -# Both client and server refuse connections with a different version. -# -# This value must not contain spaces. -fun handshake_app_version: String do return "0.0" - -# Server port listening for discovery requests -# -# This name must be the same between client/server. -fun discovery_port: Int do return 18722 - -# First word in discovery requests -private fun discovery_request_message: String do return "gamnit::network?" - -# First word in discovery responses -private fun discovery_response_message: String do return "gamnit::network!" diff --git a/lib/gamnit/network/network.nit b/lib/gamnit/network/network.nit deleted file mode 100644 index 93e14073a0..0000000000 --- a/lib/gamnit/network/network.nit +++ /dev/null @@ -1,70 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Easy client/server logic for games and simple distributed applications -# -# Both `gamnit::client` and `gamnit::server` can be used separately or -# together by importing `gamnit::network`. -# Use both modules to create an program that discover local servers -# or create one if none is found: -# -# ~~~ -# redef fun handshake_app_name do return "network_test" -# -# # Discover local servers -# var servers = discover_local_servers -# if servers.not_empty then -# # Try to connect to the first local server -# var server_info = servers.first -# var server = new RemoteServer(server_info) -# -# if not server.connect then -# print_error "Failed to connect to {server_info.address}:{server_info.port}" -# else if not server.handshake then -# print_error "Failed handshake with {server_info.address}:{server_info.port}" -# else -# # Connected! -# print "Connected to {server_info.address}:{server_info.port}" -# -# # Write something and close connection -# server.writer.serialize "hello server" -# server.socket.as(not null).close -# end -# else -# # Create a local server -# var connect_port = 33729 -# print "Launching server: connect on {connect_port}, discovery on {discovery_port}" -# var server = new Server(connect_port) -# -# # Don't loop if testing -# if "NIT_TESTING".environ == "true" then exit 0 -# -# loop -# # Respond to discovery requests -# server.answer_discovery_requests -# -# # Accept new clients -# var new_clients = server.accept_clients -# for client in new_clients do -# # Read something and close connection -# assert client.reader.deserialize == "hello server" -# client.socket.close -# end -# end -# end -# ~~~ -module network - -import server -import client diff --git a/lib/gamnit/network/server.nit b/lib/gamnit/network/server.nit deleted file mode 100644 index 0a78d43d17..0000000000 --- a/lib/gamnit/network/server.nit +++ /dev/null @@ -1,211 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Server-side network services for games and such -# -# The following code creates a server that continuously listen for new clients, -# and exchange with them briefly before disconnecting. -# -# ~~~nitish -# redef fun handshake_app_name do return "nitwork_test" -# redef fun handshake_app_version do return "1.0" -# -# Open a server on port 4444 -# var server = new Server(4444) -# -# loop -# # Accept new clients -# var new_clients = server.accept_clients -# for client in new_clients do -# # A client is connected, communicate! -# print "" -# print client.reader.deserialize.as(Object) -# client.writer.serialize "Goodbye client" -# -# # Done, close socket -# client.socket.close -# end -# -# # `accept_clients` in non-blocking, -# # sleep before tying again, or do something else. -# 0.5.sleep -# printn "." -# end -# ~~~ -module server - -intrude import common - -# Game server controller -class Server - - # Port for the `listening_socket` - var port: Int - - # All connected `RemoteClient` - var clients = new Array[RemoteClient] - - # TCP socket accepting new connections - # - # Opened on the first call to `accept_clients`. - var listening_socket: TCPServer is lazy do - var socket = new TCPServer(port) - socket.listen 8 - socket.blocking = false - return socket - end - - # Accept currently waiting clients and return them as an array - # - # If `add_to_clients`, the default, the new clients are added to `clients`. - # Otherwise, the return value of `accept_clients` may be added to `clients` - # explicitly by the caller after an extra verification or sorting. - fun accept_clients(add_to_clients: nullable Bool): Array[RemoteClient] - do - add_to_clients = add_to_clients or else true - assert not listening_socket.closed - - var new_clients = new Array[RemoteClient] - loop - var client_socket = listening_socket.accept - if client_socket == null then break - - var rc = new RemoteClient(client_socket) - - var handshake_success = rc.handshake - if handshake_success then - new_clients.add rc - print "Server: Client at {client_socket.address} passed the handshake" - else - print_error "Server Error: Client at {client_socket.address} failed the handshake" - client_socket.close - end - end - - if add_to_clients then clients.add_all new_clients - - return new_clients - end - - # Broadcast a `message` to all `clients`, then flush the connection - # - # The client `except` is skipped and will not receive the `message`. - fun broadcast(message: Serializable, except: nullable RemoteClient) - do - for client in clients do if client != except then - client.writer.serialize(message) - client.socket.flush - end - end - - # Respond to pending discovery requests by sending the TCP listening address and port - # - # Returns the number of valid requests received. - # - # The response messages includes the TCP listening address and port - # for remote clients to connect with TCP using `connect`. - # These connections are accepted by the server with `accept_clients`. - fun answer_discovery_requests: Int - do - var count = 0 - loop - var ptr = new Ref[nullable SocketAddress](null) - var read = discovery_socket.recv_from(1024, ptr) - - # No sender means there is no discovery request - var sender = ptr.item - if sender == null then break - - var words = read.split(" ") - if words.length != 2 or words[0] != discovery_request_message or words[1] != handshake_app_name then - print "Server Warning: Rejected discovery request '{read}' from {sender.address}:{sender.port}" - continue - end - - var msg = "{discovery_response_message} {handshake_app_name} {self.port}" - discovery_socket.send_to(sender.address, sender.port, msg) - count += 1 - end - return count - end - - # UDP socket responding to discovery requests - # - # Usually opened on the first call to `answer_discovery_request`. - var discovery_socket: UDPSocket is lazy do - var s = new UDPSocket - s.blocking = false - s.bind(null, discovery_port) - return s - end -end - -# Reference to a remote client connected to this server -class RemoteClient - - # Communication socket with the client - var socket: TCPStream - - # Is this client connected? - fun connected: Bool do return socket.connected - - # `MsgPackSerializer` used to send data to this client through `socket` - var writer: MsgPackSerializer is noinit - - # `MsgPackDeserializer` used to receive data from this client through `socket` - var reader: MsgPackDeserializer is noinit - - init - do - # Setup serialization - writer = new MsgPackSerializer(socket) - writer.cache = new AsyncCache(true) - reader = new MsgPackDeserializer(socket) - writer.link reader - end - - # Check for compatibility with the client - fun handshake: Bool - do - print "Server: Handshake initiated by {socket.address}" - - # Make sure it is the same app - var server_app = sys.handshake_app_name - var client_app = socket.deserialize_msgpack - if server_app != client_app then - print_error "Server Error: Client app name is '{client_app or else ""}'" - - # Send an empty string so the client read it and give up - socket.serialize_msgpack "" - socket.close - return false - end - - socket.serialize_msgpack server_app - - # App version - var app_version = sys.handshake_app_version - var client_version = socket.deserialize_msgpack - if client_version != app_version then - print_error "Handshake Error: client version is different '{client_version or else ""}'" - socket.serialize_msgpack "" - socket.close - return false - end - - socket.serialize_msgpack app_version - - return true - end -end diff --git a/lib/gamnit/package.ini b/lib/gamnit/package.ini deleted file mode 100644 index 81c6aa7520..0000000000 --- a/lib/gamnit/package.ini +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name=gamnit -tags=game,lib -maintainer=Alexis Laferrière -license=Apache-2.0 -desc=Portable game and multimedia framework for Nit -[upstream] -browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/ -git=https://github.com/nitlang/nit.git -git.directory=lib/gamnit/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues diff --git a/lib/gamnit/portrait.nit b/lib/gamnit/portrait.nit deleted file mode 100644 index ad3cfbd1e6..0000000000 --- a/lib/gamnit/portrait.nit +++ /dev/null @@ -1,18 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Lock the application in the portrait orientation -module portrait - -import android::portrait is conditional(android) diff --git a/lib/gamnit/programs.nit b/lib/gamnit/programs.nit deleted file mode 100644 index 6efc68bac3..0000000000 --- a/lib/gamnit/programs.nit +++ /dev/null @@ -1,602 +0,0 @@ -# This file is part of NIT (http://www.nitlanguage.org). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Services for graphical programs with shaders, attributes and uniforms -module programs - -import display -import matrix - -private import more_collections - -# `Uniform` or `Attribute` of a `GamnitProgram` -class ShaderVariable - - # The `GamnitProgram` to which `self` belongs - var program: GLProgram - - # Name of `self` in the `program` source - var name: String - - # Location of `self` in the compiled `program` - var location: Int - - # Number of elements in this array (1 for scalars and more for vectors) - var size: Int - - # Is `self` an active uniform or attribute in the `program`? - # - # If `false`, the variable may have been optimized out by the compiler. - fun is_active: Bool do return true - - redef fun to_s do return "<{class_name} name:{name} location:{location} size:{size}" -end - -# Inactive shader variable, either optimized out or simple absent from the program -# -# Returned by `GamnitProgram::uniforms` or `GamnitProgram::attributes` when -# the uniform has not been identified as active by the driver. -# Operations on instances of this class have no effects. -# -# Act as a compatibility when a program expect a uniform to exist even in -# a context where the driver's compiler may have optimized it out. -# You must be careful when receiving an `InactiveVariable` as it may also -# silence real program errors, such type in variable name. -abstract class InactiveVariable - super ShaderVariable - - redef fun is_active do return false -end - -# Shader attribute -# -# It will use either the `uniform` value or the data at `array_pointer` if -# and only if `array_enabled`. -class Attribute - super ShaderVariable - - private var array_enabled_cache = false - - # Is the array attribute enabled? - fun array_enabled: Bool do return array_enabled_cache - - # Set whether to use the data at `array_pointer` over `uniform`. - fun array_enabled=(value: Bool) - do - if not is_active then return - - glUseProgram program - - self.array_enabled_cache = value - if value then - glEnableVertexAttribArray location - else glDisableVertexAttribArray location - end - - # Define the `array` of vertex data - fun array(array: Array[Float], data_per_vertex: Int) - do - # TODO move this and native_float_array to a subclass specific to float - - if not is_active then return - - var native = native_float_array - if native == null or array.length > native.length then - if native != null then native.finalize - native = new GLfloatArray.from(array) - self.native_float_array = native - else - native.fill_from(array) - end - - glVertexAttribPointer(location, data_per_vertex, gl_FLOAT, false, 0, native.native_array) - end - - private var native_float_array: nullable GLfloatArray = null -end - -# Shader attribute of GLSL type `float` -class AttributeFloat - super Attribute - - # Set the uniform value to use when the vertex array is disabled - fun uniform(x: Float) do if is_active then glVertexAttrib1f(location, x) -end - -# Shader attribute of GLSL type `vec2` -class AttributeVec2 - super Attribute - - # Set the uniform value to use when the vertex array is disabled - fun uniform(x, y: Float) do if is_active then glVertexAttrib2f(location, x, y) -end - -# Shader attribute of GLSL type `vec3` -class AttributeVec3 - super Attribute - - # Set the uniform value to use when the vertex array is disabled - fun uniform(x, y, z: Float) do if is_active then glVertexAttrib3f(location, x, y, z) -end - -# Shader attribute of GLSL type `vec4` -class AttributeVec4 - super Attribute - - # Set the uniform value to use when the vertex array is disabled - fun uniform(x, y, z, w: Float) do if is_active then glVertexAttrib4f(location, x, y, z, w) -end - -# `Attribute` that does not exist or that has been optimized out -class InactiveAttribute - super InactiveVariable - super AttributeFloat - super AttributeVec2 - super AttributeVec3 - super AttributeVec4 -end - -# Shader uniform -class Uniform - super ShaderVariable - - private fun uniform_1i(index, x: Int) `{ glUniform1i(index, x); `} -end - -# Shader uniform of GLSL type `bool` -class UniformBool - super Uniform - - # Set this uniform value - fun uniform(val: Bool) do uniform_1i(location, if val then 1 else 0) -end - -# Shader uniform of GLSL type `int` -class UniformInt - super Uniform - - # Set this uniform value - fun uniform(val: Int) do uniform_1i(location, val) -end - -# Shader uniform of GLSL type `vec4` -class UniformFloat - super Uniform - - # Set this uniform value - fun uniform(x: Float) do glUniform1f(location, x) -end - -# Shader uniform of GLSL type `vec4` -class UniformVec2 - super Uniform - - # Set this uniform value - fun uniform(x, y: Float) do glUniform2f(location, x, y) -end - -# Shader uniform of GLSL type `vec4` -class UniformVec3 - super Uniform - - # Set this uniform value - fun uniform(x, y, z: Float) do glUniform3f(location, x, y, z) -end - -# Shader uniform of GLSL type `vec4` -class UniformVec4 - super Uniform - - # Set this uniform value - fun uniform(x, y, z, w: Float) do glUniform4f(location, x, y, z, w) -end - -# Shader uniform of GLSL type `sampler2D` -class UniformSampler2D - super Uniform - - # Set this uniform value - fun uniform(val: Int) do uniform_1i(location, val) -end - -# Shader uniform of GLSL type `mat4` -class UniformMat4 - super Uniform - - private var native_matrix_cache: nullable NativeGLfloatArray = null - - # Set this uniform value - fun uniform(matrix: Matrix) - do - var native = native_matrix_cache - if native == null then - native = new NativeGLfloatArray.matrix - self.native_matrix_cache = native - end - - matrix.fill_native(native) - uniform_matrix_4f(location, 1, false, native) - end - - private fun uniform_matrix_4f(index, count: Int, transpose: Bool, data: NativeGLfloatArray) `{ - glUniformMatrix4fv(index, count, transpose, data); - `} -end - -# `Uniform` that does not exist or that has been optimized out -class InactiveUniform - super InactiveVariable - super UniformBool - super UniformInt - super UniformFloat - super UniformSampler2D - super UniformVec2 - super UniformVec3 - super UniformVec4 - super UniformMat4 - - redef fun is_active do return false -end - -# Gamnit shader -abstract class Shader - - # TODO add alternative init to load shaders from binary - - # Index of this shader in OpenGL - private var gl_shader: GLShader is noinit - - # Latest error raised by operations of this shader - var error: nullable Error = null - - # Source code of this shader - var source: Text - - # Low-level type of this shader - private fun gl_shader_type: GLShaderType is abstract - - # Compile this shader and report any errors in the attribute `error` - fun compile - do - # Create - var gl_shader = glCreateShader(gl_shader_type) - if not glIsShader(gl_shader) then - self.error = new Error("Shader creation failed: {glGetError}") - return - end - self.gl_shader = gl_shader - - glShaderSource(gl_shader, source.to_cstring) - - # Compile - glCompileShader gl_shader - if not gl_shader.is_compiled then - self.error = new Error("Shader compilation failed: {glGetShaderInfoLog(gl_shader)}") - return - end - - error = gammit_gl_error - end - - # Has this shader been deleted? - var deleted = false - - # Delete this shader and free its resources - fun delete - do - if deleted then return - - glDeleteShader gl_shader - deleted = true - end -end - -# Gamnit vertex shader -class VertexShader - super Shader - - redef fun gl_shader_type do return gl_VERTEX_SHADER -end - -# Gamnit fragment shader -class FragmentShader - super Shader - - redef fun gl_shader_type do return gl_FRAGMENT_SHADER -end - -# Gamnit graphical program -# -# Subclasses should implement both `vertex_shader` and `fragment_shader`. -abstract class GamnitProgram - - # Vertex shader to attach to this program - fun vertex_shader: VertexShader is abstract - - # Fragment shader to attach to this program - fun fragment_shader: FragmentShader is abstract - - # Index to the OpenGL ES program, set by `compile_and_link` - private var gl_program: nullable GLProgram = null - - # Last error raised by `compile_and_link` - var error: nullable Error = null is protected writable - - # Compile the shaders, and this program, then link and report any errors - fun compile_and_link - do - # Get an index - var gl_program = glCreateProgram - if not glIsProgram(gl_program) then - self.error = new Error("Program creation failed: {glGetError.to_s}") - return - end - self.gl_program = gl_program - - # Vertex shader - var vertex_shader = vertex_shader - vertex_shader.compile - if vertex_shader.error != null then - self.error = vertex_shader.error - return - end - - # Fragment shader - var fragment_shader = fragment_shader - fragment_shader.compile - if fragment_shader.error != null then - self.error = fragment_shader.error - return - end - - # Attach shaders - glAttachShader(gl_program, vertex_shader.gl_shader) - glAttachShader(gl_program, fragment_shader.gl_shader) - - # Catch any errors up to here - var error = gammit_gl_error - if error != null then - self.error = error - return - end - - # Link - glLinkProgram gl_program - if not gl_program.is_linked then - self.error = new Error("Linking failed: {glGetProgramInfoLog(gl_program)}") - return - end - - # Fill the attribute and uniform lists - var n_attribs = glGetProgramiv(gl_program, gl_ACTIVE_ATTRIBUTES) - for a in [0..n_attribs[ do - var name = gl_program.active_attrib_name(a) - var size = gl_program.active_attrib_size(a) - var typ = gl_program.active_attrib_type(a) - var location = gl_program.attrib_location(name) - - # FIXME location may be invalid at this point because - # attrib_location does not work with truncated names, - # as returned by `active_attrib_name`. - - var attribute - if typ == gl_FLOAT then - attribute = new AttributeFloat(gl_program, name, location, size) - else if typ == gl_FLOAT_VEC2 then - attribute = new AttributeVec2(gl_program, name, location, size) - else if typ == gl_FLOAT_VEC3 then - attribute = new AttributeVec3(gl_program, name, location, size) - else if typ == gl_FLOAT_VEC4 then - attribute = new AttributeVec4(gl_program, name, location, size) - else - attribute = new Attribute(gl_program, name, location, size) - end - # TODO missing types - attributes[name] = attribute - end - - var n_uniforms = glGetProgramiv(gl_program, gl_ACTIVE_UNIFORMS) - for a in [0..n_uniforms[ do - - var name = gl_program.active_uniform_name(a) - var size = gl_program.active_uniform_size(a) - var typ = gl_program.active_uniform_type(a) - var location = gl_program.uniform_location(name) - - var uniform - if typ == gl_BOOL then - uniform = new UniformBool(gl_program, name, location, size) - else if typ == gl_INT then - uniform = new UniformInt(gl_program, name, location, size) - else if typ == gl_SAMPLER_2D then - uniform = new UniformSampler2D(gl_program, name, location, size) - else if typ == gl_FLOAT then - uniform = new UniformFloat(gl_program, name, location, size) - else if typ == gl_FLOAT_VEC2 then - uniform = new UniformVec2(gl_program, name, location, size) - else if typ == gl_FLOAT_VEC3 then - uniform = new UniformVec3(gl_program, name, location, size) - else if typ == gl_FLOAT_VEC4 then - uniform = new UniformVec4(gl_program, name, location, size) - else if typ == gl_FLOAT_MAT4 then - uniform = new UniformMat4(gl_program, name, location, size) - else - uniform = new Uniform(gl_program, name, location, size) - end - # TODO missing types - uniforms[name] = uniform - end - end - - # Diagnose possible problems with the shaders of the program - # - # Lists to the console inactive uniforms and attributes. - # These may not be problematic but they can help to debug the program. - fun diagnose - do - if gl_program == null then compile_and_link - - print "# Diagnose {class_name}" - for k,v in uniforms do - if not v.is_active then print "* Uniform {v.name} is inactive" - end - for k,v in attributes do - if not v.is_active then print "* Attribute {v.name} is inactive" - end - end - - # Attributes of this program organized by name - # - # Active attributes are gathered at `compile_and_link`. - # Upon request, inactive attributes are returned as a new `InactiveAttribute`. - var attributes = new AttributeMap(self) - - # Uniforms of this program organized by name - # - # Active uniforms are gathered at `compile_and_link`. - # Upon request, inactive attributes are returned as a new `InactiveUniform`. - var uniforms = new UniformMap(self) - - # Notify the GPU to use this program - fun use - do - var gl_program = gl_program - assert gl_program != null # TODO error not compiled, or compile it - glUseProgram gl_program - end - - # Has this program been deleted? - var deleted = false - - # Delete this program if it has not already been deleted - fun delete - do - if deleted then return - - var gl_program = gl_program - if gl_program != null then glDeleteProgram gl_program - - deleted = true - end -end - -# Gamnit graphical program from the shaders source code -class GamnitProgramFromSource - super GamnitProgram - - # Source code of the vertex shader - fun vertex_shader_source: Text is abstract - - redef var vertex_shader = new VertexShader(vertex_shader_source) is lazy - - # Source code of the fragment shader - fun fragment_shader_source: Text is abstract - - redef var fragment_shader = new FragmentShader(fragment_shader_source) is lazy -end - -# Map to organize `ShaderVariable` instances by their name -abstract class ShaderVariableMap[A: ShaderVariable] - super HashMap[String, A] - - private var program: GamnitProgram - - redef fun [](key) - do - # Alter the user specified name to fit the truncated name - var max_len = max_name_length - 1 - if key isa Text and key.length > max_len then key = key.substring(0, max_len) - return super(key) - end - - private fun max_name_length: Int is abstract -end - -# Map to organize `Attribute` instances by their name -class AttributeMap - super ShaderVariableMap[Attribute] - - redef fun provide_default_value(key) do - return new InactiveAttribute(program.gl_program.as(not null), "", -1, 0) - end - - redef fun max_name_length do return glGetProgramiv(program.gl_program.as(not null), gl_ACTIVE_ATTRIBUTE_MAX_LENGTH) - - redef fun [](key) - do - # Update the location of this attribute from the user specified name - var item = super - if key isa Text then item.location = program.gl_program.attrib_location(key.to_s) - return item - end -end - -# Map to organize `Uniform` instances by their name -class UniformMap - super ShaderVariableMap[Uniform] - - redef fun provide_default_value(key) do - return new InactiveUniform(program.gl_program.as(not null), "", -1, 0) - end - - redef fun max_name_length do return glGetProgramiv(program.gl_program.as(not null), gl_ACTIVE_UNIFORM_MAX_LENGTH) - - redef fun [](key) - do - var item = super - if key isa Text then item.location = program.gl_program.uniform_location(key.to_s) - return item - end -end - -redef extern class NativeGLfloatArray - - # Allocate a new matrix - new matrix `{ return malloc(4*4*sizeof(GLfloat)); `} - - # Overwrite this matrix with the identity matrix - fun set_identity - do - for i in [0..4[ do - for j in [0..4[ do - matrix_set(i, j, if i == j then 1.0 else 0.0) - end - end - end - - # Get the element at `x, y` - fun matrix_get(x, y: Int): Float `{ return self[y*4+x]; `} - - # Set the element at `x, y` - fun matrix_set(x, y: Int, val: Float) `{ self[y*4+x] = val; `} -end - -redef class Matrix - # Copy content of this matrix to a `NativeGLfloatArray` - fun fill_native(native: NativeGLfloatArray) - do - for i in [0..width[ do - for j in [0..height[ do - native.matrix_set(i, j, self[i, j]) - end - end - end -end - -private fun gammit_gl_error: nullable Error -do - var gl_error = glGetError - if gl_error == gl_NO_ERROR then return null - return new Error("GL error: {gl_error}") -end diff --git a/lib/gamnit/texture_atlas_parser.nit b/lib/gamnit/texture_atlas_parser.nit deleted file mode 100644 index a0e4d5ff5e..0000000000 --- a/lib/gamnit/texture_atlas_parser.nit +++ /dev/null @@ -1,117 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Tool to parse XML texture atlas and generated Nit code to access subtextures -module texture_atlas_parser - -import dom -import gen_nit -import opts - -# Command line options -var opts = new OptionContext -var opt_name = new OptionString("Name of the module to generate", "--name", "-n") -var opt_dir = new OptionString("Folder where to write the generated module", "--dir") -opts.add_option(opt_name, opt_dir) -opts.parse -var rest = opts.rest - -if opts.errors.not_empty then - print_error opts.errors - exit 1 -end - -if rest.is_empty then - print_error "Error: Expected the path to the XML file as argument" - exit 2 -end - -# Prepare to read XML file and gather the attributes -var xml_file = rest.first -var attributes = new Array[String] - -# Insert the first attribute, to load the root texture -var png_file = "images" / xml_file.basename("xml") + "png" -attributes.add """ - var root_texture = new TextureAsset("{{{png_file}}}")""" - -# Read XML file -var content = xml_file.to_path.read_all -var xml = content.to_xml -if xml isa XMLError then - print_error "RSS Parse Error: {xml.message}:{xml.location or else "null"}" - exit 3 -end - -var items = xml["TextureAtlas"].first.children -for item in items do if item isa XMLOnelinerTag then - var x = null - var y = null - var width = null - var height = null - var name = null - for attr in item.attributes do if attr isa XMLStringAttr then - if attr.name == "x" then - x = attr.value.to_i - else if attr.name == "y" then - y = attr.value.to_i - else if attr.name == "width" then - width = attr.value.to_i - else if attr.name == "height" then - height = attr.value.to_i - else if attr.name == "name" then - name = attr.value - end - end - - if x != null and y != null and width != null and height != null and name != null then - name = name.strip_extension(".png").to_snake_case - - var coords = "{x}, {y}, {width}, {height}" - attributes.add """ - var {{{name}}}: Texture = root_texture.subtexture({{{coords}}})""" - else - print_error "Error on {item}" - end -end - -var module_name = opt_name.value -if module_name == null then module_name = "spritesheet" -var class_name = module_name.capitalized.to_camel_case - -# Generate Nit code -var nit_module = new NitModule(module_name) -nit_module.header = """ -# This file is generated by texture_atlas_parser -""" - -nit_module.content.add """ -import gamnit::display -import gamnit::textures - -class {{{class_name}}} -""" - -for a in attributes do nit_module.content.add a - -nit_module.content.add """ -end""" - -var dir = opt_dir.value -if dir != null then - var out_path = dir / module_name + ".nit" - nit_module.write_to_file out_path -else - printn nit_module.write_to_string -end diff --git a/lib/gamnit/textures.nit b/lib/gamnit/textures.nit deleted file mode 100644 index 4987be28ce..0000000000 --- a/lib/gamnit/textures.nit +++ /dev/null @@ -1,413 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Load textures, create subtextures and manage their life-cycle -module textures - -import display - -# Texture composed of pixels, loaded from the assets folder by default -# -# Most textures should be created with `App` (as attributes) -# for the method `create_scene` to load them. -# -# ~~~ -# import gamnit::flat -# -# redef class App -# # Create the texture object, it will be loaded automatically -# var texture = new Texture("path/in/assets.png") -# -# redef fun create_scene() -# do -# # Let `create_scene` load the texture -# super -# -# # Use the texture -# var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0)) -# app.sprites.add sprite -# end -# end -# ~~~ -# -# Otherwise, they can be loaded and error checked explicitly after `create_scene`. -# -# ~~~nitish -# var texture = new Texture("path/in/assets.png") -# texture.load -# var error = texture.error -# if error != null then print_error error -# ~~~ -# -# A texture may also be created programmatically, like `CheckerTexture`, -# or derived from another texture, using `subtexture`. -# Textures with actual pixel data (not `Subtexture`) are `RootTexture`. -# Texture loaded from the assets folder may in the PNG or JPG formats. -abstract class Texture - - # Prepare a texture located at `path` within the `assets` folder - new (path: Text) do return new TextureAsset(path.to_s) - - # Root texture from which `self` is derived - fun root: RootTexture is abstract - - # Width in pixels of this texture - var width = 0.0 - - # Height in pixels of this texture - var height = 0.0 - - # Load this texture, force reloading it if `force` - fun load(force: nullable Bool) do end - - # Last error on this texture - var error: nullable Error = null - - # OpenGL handle to this texture - fun gl_texture: Int do return root.gl_texture - - # Prepare a subtexture from this texture, from the given pixel offsets - fun subtexture(left, top, width, height: Numeric): Subtexture - do - return new AbsoluteSubtexture(self, left.to_f, top.to_f, width.to_f, height.to_f) - end - - # Offset of the left border on `root` from 0.0 to 1.0 - fun offset_left: Float do return 0.0 - - # Offset of the top border on `root` from 0.0 to 1.0 - fun offset_top: Float do return 0.0 - - # Offset of the right border on `root` from 0.0 to 1.0 - fun offset_right: Float do return 1.0 - - # Offset of the bottom border on `root` from 0.0 to 1.0 - fun offset_bottom: Float do return 1.0 - - # Should this texture be drawn pixelated when magnified? otherwise it is interpolated - # - # This setting affects all the textures based on the same pixel data, or `root`. - # - # Must be set after a successful call to `load`. - fun pixelated=(pixelated: Bool) - do - if root.gl_texture == -1 then return - - # TODO do not modify `root` by using *sampler objects* in glesv3 - glBindTexture(gl_TEXTURE_2D, root.gl_texture) - - var param = if pixelated then gl_NEAREST else gl_LINEAR - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, param) - end -end - -# Colorful small texture of 32x32 pixels by default -class CheckerTexture - super RootTexture - - # Width and height in pixels, defaults to 32 - var size = 32 is optional - - redef fun load(force) - do - if gl_texture != -1 then return - load_checker size - loaded = true - end -end - -# Custom texture with pixel values filled programmatically -# -# At creation, the texture is composed of `width` by `height` (rounded down) -# transparent pixels. The pixels value can be set using `[]=`. -# -# ~~~ -# # Build a texture with 4 colors -# var tex = new CustomTexture(2.0, 2.0) -# tex[0, 0] = [1.0, 0.0, 0.0] # Red -# tex[0, 1] = [0.0, 1.0, 0.0] # Green -# tex[1, 0] = [0.0, 0.0, 1.0] # Blue -# tex[1, 1] = [1.0, 1.0, 1.0, 0.5] # Transparent white -# tex.load -# ~~~ -class CustomTexture - super RootTexture - - redef var width - redef var height - - private var cpixels = new CByteArray(4*width.to_i*height.to_i) is lazy - - # Set the `color` of the pixel at `x`, `y` (from the top-left corner) - # - # The argument `color` should be an array of up to 4 floats (RGBA). - # If `color` has less than 4 items, the missing items are replaced by 1.0. - # - # Require: `x < width.to_i and y < height.to_i` - fun []=(x, y: Int, color: Array[Float]) - do - assert x < width.to_i and y < height.to_i else print_error "{class_name}::[] out of bounds" - - # Simple conversion from [0.0..1.0] to [0..255] - var bytes = [for c in color do (c*255.0).round.to_i.clamp(0, 255).to_bytes.last] - while bytes.length < 4 do bytes.add 255 - - var offset = 4*(x + y*width.to_i) - for i in [0..4[ do cpixels[offset+i] = bytes[i].to_b - - loaded = false - end - - # Overwrite all pixels with `color`, return `self` - # - # The argument `color` should be an array of up to 4 floats (RGBA). - # If `color` has less than 4 items, the missing items are replaced by 1.0. - fun fill(color: Array[Float]): SELF - do - # Simple conversion from [0.0..1.0] to [0..255] - var bytes = [for c in color do (c*255.0).round.to_i.clamp(0, 255).to_bytes.last] - while bytes.length < 4 do bytes.add 255 - - var i = 0 - for x in [0..width.to_i[ do - for y in [0..height.to_i[ do - for j in [0..4[ do cpixels[i+j] = bytes[j].to_b - i += 4 - end - end - - loaded = false - return self - end - - redef fun load(force) - do - force = force or else false - if loaded and not force then return - - if force and glIsTexture(gl_texture) then - # Was already loaded, free the previous GL name - glDeleteTextures([gl_texture]) - end - gl_texture = -1 - - # Round down the desired dimension - var width = width.to_i - var height = height.to_i - self.width = width.to_f - self.height = height.to_f - - load_from_pixels(cpixels.native_array, width, height, gl_RGBA) - - loaded = true - end -end - -# Texture with its own pixel data -class RootTexture - super Texture - - redef fun root do return self - - # Has this texture been loaded yet? - var loaded = false - - redef var gl_texture = -1 - - init do all_root_textures.add self - - # Should the pixels RGB values be premultiplied by their alpha value at loading? - # - # All gamnit textures must have premultiplied alpha, it provides a better - # alpha blending, avoids artifacts and allows for additive blending. - # - # When at `true`, the default, pixels RGB values are premultiplied - # at loading. Set to `false` if pixels RGB values are already - # premultiplied in the source data. - # - # This value must be set before calling `load`. - var premultiply_alpha = true is writable - - private fun load_from_pixels(pixels: Pointer, width, height: Int, format: GLPixelFormat) - do - var max_texture_size = glGetIntegerv(gl_MAX_TEXTURE_SIZE, 0) - if width > max_texture_size then - error = new Error("Texture width larger than gl_MAX_TEXTURE_SIZE ({max_texture_size}) in {self} at {width}") - return - else if height > max_texture_size then - error = new Error("Texture height larger than gl_MAX_TEXTURE_SIZE ({max_texture_size}) in {self} at {height}") - return - end - - # Premultiply alpha? - if premultiply_alpha and format == gl_RGBA then - pixels.premultiply_alpha(width, height) - end - - glPixelStorei(gl_UNPACK_ALIGNEMENT, 1) - var tex = glGenTextures(1)[0] - gl_texture = tex - - glBindTexture(gl_TEXTURE_2D, tex) - glTexImage2D(gl_TEXTURE_2D, 0, format, width, height, 0, format, gl_UNSIGNED_BYTE, pixels) - - glHint(gl_GENERATE_MIPMAP_HINT, gl_NICEST) - glGenerateMipmap(gl_TEXTURE_2D) - glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR_MIPMAP_LINEAR) - - glBindTexture(gl_TEXTURE_2D, 0) - end - - private fun load_checker(size: Int) - do - var cpixels = new CByteArray(3*size*size) - - var i = 0 - for x in [0..size[ do - var quadrant_x = if x < size/2 then 0 else 1 - for y in [0..size[ do - var quadrant_y = if y < size/2 then 0 else 1 - var color = if quadrant_x == quadrant_y then - [0u8, 0u8, 0u8, 255u8] - else [255u8, 255u8, 255u8, 255u8] - - for j in [0..3[ do cpixels[i+j] = color[j] - i += 3 - end - end - - width = size.to_f - height = size.to_f - load_from_pixels(cpixels.native_array, size, size, gl_RGB) - - cpixels.destroy - end - - # Has this resource been deleted? - var deleted = false - - # Delete this texture and free all its resources - # - # Use caution with this service as the subtextures may rely on the deleted data. - fun delete - do - if deleted or not loaded then return - - deleted = true - end -end - -# Texture loaded from the assets folder -class TextureAsset - super RootTexture - - # Path to this texture within the `assets` folder - var path: String - - redef fun load(force) - do - if loaded and force != true then return - - load_from_platform - - # If no pixel data was loaded, load the pixel default texture - if gl_texture == -1 then load_checker 32 - - loaded = true - end - - # Partially load this texture from platform-specific features - # - # This method should fill `width`, `height` and `pixels`. - private fun load_from_platform is abstract - - redef fun to_s do return "<{class_name} path:{path}>" -end - -# Texture derived from another texture, does not own its pixels -abstract class Subtexture - super Texture - - # Parent texture, from which this texture was created - var parent: Texture - - redef fun root do return parent.root - - redef fun load(force) do root.load(force) -end - -# Subtexture created from pixel coordinates within `parent` -class AbsoluteSubtexture - super Subtexture - - # Left border of this texture relative to `parent` - var left: Float - - # Top border of this texture relative to `parent` - var top: Float - - private fun set_wh(width, height: Float) - is autoinit do - self.width = width - self.height = height - end - - redef var offset_left = parent.offset_left + left / root.width is lazy - redef var offset_top = parent.offset_top + top / root.height is lazy - redef var offset_right = offset_left + width / root.width is lazy - redef var offset_bottom = offset_top + height / root.height is lazy -end - -# Subtexture created from relative coordinates ([0..1]) out of the `root` texture -class RelativeSubtexture - super Subtexture - - redef var offset_left - redef var offset_top - redef var offset_right - redef var offset_bottom - - redef fun width do return root.width * (offset_right - offset_left) - redef fun height do return root.height * (offset_bottom - offset_top) -end - -redef class Sys - # All declared root textures - var all_root_textures = new TextureSet -end - -# Group of `Texture` -class TextureSet - super HashSet[Texture] - - # Load all texture of this set - fun load_all do for t in self do t.load -end - -redef class Pointer - # Multiply RGB values by their alpha value - private fun premultiply_alpha(width, height: Int) `{ - uint8_t *bytes = (uint8_t *)self; - int x, y, i = 0; - for(y = 0; y < height; y ++) { - for(x = 0; x < width; x ++) { - int a = bytes[i+3]; - bytes[i ] = bytes[i ] * a / 255; - bytes[i+1] = bytes[i+1] * a / 255; - bytes[i+2] = bytes[i+2] * a / 255; - i += 4; - } - } - `} -end diff --git a/lib/gamnit/tileset.nit b/lib/gamnit/tileset.nit deleted file mode 100644 index ce610e2290..0000000000 --- a/lib/gamnit/tileset.nit +++ /dev/null @@ -1,155 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Support for `TileSet`, `TileSetFont` and drawing text with `TextSprites` -module tileset - -import font - -# Efficiently retrieve tiles in a big texture -class TileSet - # Texture containing the tileset - var texture: Texture - - # Width of a tile - var width: Numeric - - # Height of a tile - var height: Numeric - - # Number of columns of tiles in the texture - var nb_cols: Int = (texture.width / width.to_f).to_i is lazy - - # Number of rows of tiles in the texture - var nb_rows: Int = (texture.height / height.to_f).to_i is lazy - - # Cache of the subtextures of tiles - var subtextures: Array[Texture] is lazy do - var subtextures = new Array[Texture] - for j in [0..nb_rows[ do - for i in [0..nb_cols[ do - subtextures.add texture.subtexture( - i.to_f*width.to_f, j.to_f*height.to_f, width.to_f, height.to_f) - end - end - return subtextures - end - - # Subtexture for the tile at `x, y` - # - # Require: `x < nb_cols and y < nb_rows` - fun [](x,y: Int): Texture - do - assert x >= 0 and x < nb_cols and y >= 0 and y <= nb_rows else print "{x}x{y} - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/gamnit/virtual_gamepad/assets/images/virtual_gamepad.png b/lib/gamnit/virtual_gamepad/assets/images/virtual_gamepad.png deleted file mode 100644 index 69d885cc20..0000000000 Binary files a/lib/gamnit/virtual_gamepad/assets/images/virtual_gamepad.png and /dev/null differ diff --git a/lib/gamnit/virtual_gamepad/virtual_gamepad.nit b/lib/gamnit/virtual_gamepad/virtual_gamepad.nit deleted file mode 100644 index 4034c0ddb3..0000000000 --- a/lib/gamnit/virtual_gamepad/virtual_gamepad.nit +++ /dev/null @@ -1,425 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Virtual gamepad mapped to keyboard keys for quick and dirty mobile support -# -# For Android, the texture is automatically added to the APK when this -# module is imported. However, due to a limitation of the _app.nit_ -# framework on desktop OS, the texture must be copied manually to the assets -# folder at `assets/images`, the texture is available at, from the repo root, -# `lib/gamnit/virtual_gamepad/assets/images`. -# -# The texture was created by kenney.nl and modified by Alexis Laferrière. -# It is published under CC0 and can be used and modified without attribution. -# -# ~~~ -# redef class App -# redef fun create_scene -# do -# super -# -# # Create the virtual gamepad -# var gamepad = new VirtualGamepad -# -# # Configure it as needed -# gamepad.add_dpad(["w","a","s","d"]) -# gamepad.add_button("x", gamepad_spritesheet.x) -# gamepad.add_button("space", gamepad_spritesheet.star) -# -# # Assign it as the active gamepad -# self.gamepad = gamepad -# end -# -# fun setup_play_ui -# do -# # Show the virtual gamepad -# var gamepad = self.gamepad -# if gamepad != null then gamepad.visible = true -# end -# end -# ~~~ -module virtual_gamepad is app_files - -import flat -private import keys -import virtual_gamepad_spritesheet - -redef class App - - # Current touch gamepad, still may be invisible - var gamepad: nullable VirtualGamepad = null is writable - - # Textures used for `DPad` and available to clients - var gamepad_spritesheet = new VirtualGamepadSpritesheet - - redef fun accept_event(event) - do - # Priority to the gamepad - var gamepad = gamepad - if gamepad != null and gamepad.accept_event(event) then return true - - return super - end -end - -# Gamepad on touch screen bound to keyboard keys -# -# Fires `VirtualGamepadEvent` which implement `KeyEvent` so it behaves like a keyboard. -class VirtualGamepad - - private var sprites = new Array[Sprite] - - # Controls composing this gamepad - # - # Controls can be added directly to this array or using `add_dpad` - # and `add_button`. - var controls = new Array[RoundControl] - - # Add and return a directional pad (`DPad`) to a default location - # - # The 4 buttons fire events with the corresponding name in `names`. - # Items in `names` should be in order of top, left, down and right. - # If `null`, defaults to WASD. - # - # If this method is called, it should be before `add_button` to - # avoid overlapping controls. - # - # A maximum of 2 `DPad` may be added using this method. - # The first `DPad` is placed on the left of the screen. - # The second `DPad` is on the right and replaces some buttons - # added by `add_button`. - # - # Require: `names == null or names.length == 4` - fun add_dpad(names: nullable Array[String]): nullable DPad - do - if names == null then names = ["w","a","s","d"] - assert names.length == 4 - - if n_dpads == 0 then - var dpad = new DPad(app.ui_camera.bottom_left.offset(200.0, 100.0, 0.0), names) - controls.add dpad - return dpad - else if n_dpads == 1 then - var dpad = new DPad(app.ui_camera.bottom_right.offset(-200.0, 100.0, 0.0), names) - controls.add dpad - return dpad - else - print_error "Too many DPad ({n_dpads}) in {self}" - return null - end - end - - # Number of `DPad` in `controls` - private fun n_dpads: Int - do - var n_dpads = 0 - for c in controls do if c isa DPad then n_dpads += 1 - return n_dpads - end - - # Button positions for `add_button`, offsets from the bottom right - private var button_positions = new Array[Point[Float]].with_items( - new Point[Float](-150.0, 150.0), - new Point[Float](-150.0, 350.0), - new Point[Float](-150.0, 550.0), - new Point[Float](-350.0, 150.0), - new Point[Float](-350.0, 350.0), - new Point[Float](-350.0, 550.0)) - - # Add and return a round button to a default location - # - # Fired events use `name`, it should usually correspond to a - # keyboard key like "space" or "a". - # `texture` is displayed at the button position, it also sets the - # touchable surface of the button. - # - # If this method is called, it should be after `add_dpad` to - # avoid overlapping controls. - # - # A maximum of 6 buttons may be added using this method when - # there is less than 2 `DPad`. Otherwise, only 2 buttons can be added. - fun add_button(name: String, texture: Texture): nullable RoundButton - do - if n_dpads == 2 and button_positions.length == 6 then - # Drop the bottom 4 buttons - button_positions.remove_at 4 - button_positions.remove_at 3 - button_positions.remove_at 1 - button_positions.remove_at 0 - end - - assert button_positions.not_empty else print_error "Too many buttons in {self}" - var pos = button_positions.shift - var but = new RoundButton( - app.ui_camera.bottom_right.offset(pos.x, pos.y, 0.0), name, texture) - controls.add but - return but - end - - private fun prepare - do - var display = app.display - assert display != null - - for control in controls do - var sprites = control.sprites - app.ui_sprites.add_all sprites - end - end - - # Is this control visible? - var visible = false is private writable(visible_direct=) - - # Set this control to visible or not - fun visible=(value: Bool) - do - visible_direct = value - if value then show else hide - end - - private fun show - do - if sprites.is_empty then prepare - app.ui_sprites.add_all sprites - end - - private fun hide do for s in sprites do app.ui_sprites.remove_all s - - private var control_under_pointer = new Map[Int, RoundControl] - - private fun accept_event(event: InputEvent): Bool - do - if not visible then return false - - var display = app.display - if display == null then return false - - if event isa PointerEvent then - var ui_pos = app.ui_camera.camera_to_ui(event.x, event.y) - - for control in controls do - if control.accept_event(event, ui_pos) then - var prev_control = control_under_pointer.get_or_null(event.pointer_id) - if prev_control != null and prev_control != control then - prev_control.depressed_down - end - control_under_pointer[event.pointer_id] = control - return true - end - end - - var prev_control = control_under_pointer.get_or_null(event.pointer_id) - if prev_control != null then prev_control.depressed_down - control_under_pointer.keys.remove event.pointer_id - end - - return false - end -end - -# Event fired by a `VirtualGamepad` -class VirtualGamepadEvent - super KeyEvent - - redef var name - - redef var is_down is noautoinit -end - -# Control composing a `VirtualGamepad` -abstract class RoundControl - # Center position on the UI - var center: Point3d[Float] - - # Radius in UI units/pixels of the part of this control - fun radius: Float is abstract - - private fun sprites: Array[Sprite] do return new Array[Sprite] - - private fun accept_event(event: InputEvent, ui_pos: Point[Float]): Bool - do - if event isa PointerEvent and contains(ui_pos) then - return hit(event, ui_pos) - end - - return false - end - - # Does `self` contain a pointer at `ui_pos`? - private fun contains(ui_pos: Point[Float]): Bool - do - var dx = center.x - ui_pos.x - var dy = center.y - ui_pos.y - return dx*dx + dy*dy < radius*radius - end - - private fun hit(event: PointerEvent, ui_pos: Point[Float]): Bool - do return false - - # Keys currently down, to be depressed if the pointer moves away - private var down_names = new Set[String] - - # Depress/release keys kept down, listed by `down_names` - private fun depressed_down - do - for name in down_names do - var e = new VirtualGamepadEvent(name) - e.is_down = false - app.accept_event e - end - down_names.clear - end -end - -# Simple action button -class RoundButton - super RoundControl - - # Event name, should usually correspond to a keyboard key like "a" or "left" - var name: String - - # Texture drawn for this button, may be from `app.gamepad_spritesheet` - var texture: Texture - - redef fun radius do return 0.5*texture.height - - redef fun hit(event, ui_pos) - do - if not event.is_move then - var e = new VirtualGamepadEvent(name.to_s) - e.is_down = event.pressed - app.accept_event e - - if event.pressed then - down_names.add name - else down_names.clear - end - return true - end - - redef var sprites = [new Sprite(texture, center)] is lazy -end - -# Directional pad with up to 4 buttons -# -# Assumes that each pad is manipulated by at max a single pointer. -class DPad - super RoundControl - - # Event names for the keys, in order of top, left, down and right - var names: Array[String] - - # Show the up button - var show_up = true is writable - - # Show the down button - var show_down = true is writable - - # Show the left button - var show_left = true is writable - - # Show the right button - var show_right = true is writable - - redef fun radius do return 200.0 - - redef fun contains(ui_pos) - do - if show_down then return super(new Point[Float](ui_pos.x+0.0, ui_pos.y-100.0)) - return super - end - - redef fun hit(event, ui_pos) - do - var display = app.display - if display == null then return false - - var dx = ui_pos.x - center.x - var dy = ui_pos.y - center.y - if show_down then dy -= 100.0 - - # Angle (with 0.0 on the right) to index in WASD (0 -> W/up) - var indexes = new Set[Int] - var ao = atan2(dy, dx) - ao -= pi/4.0 - - # Look for 2 angles so 2 buttons can be pressed at the same time - for da in once [-pi/8.0, pi/8.0] do - var a = ao+da - while a < 0.0 do a += pi*2.0 - while a > 2.0*pi do a -= pi*2.0 - var index = (a * 2.0 / pi).floor.to_i - if index < 0 then index += 4 - indexes.add index - end - - var shows = [show_up, show_left, show_down, show_right] - var new_down_names = new Set[String] - for index in indexes do - # Don't trigger events for hidden buttons/directions - if not shows[index] then continue - - var name = names[index] - # Simulate event - var e = new VirtualGamepadEvent(name) - e.is_down = event.pressed - app.accept_event e - - if event.pressed then new_down_names.add name - end - - # Depress released directions - for name in down_names do - if not new_down_names.has(name) then - var e = new VirtualGamepadEvent(name) - e.is_down = false - app.accept_event e - end - end - - down_names = new_down_names - - return true - end - - redef fun sprites - do - var dy = 0.0 - if show_down then dy = 100.0 - - var sprites = new Array[Sprite] - - # Interactive buttons - if show_up then sprites.add new Sprite(app.gamepad_spritesheet.dpad_up, - center.offset( 0.0, 100.0+dy, 0.0)) - if show_left then sprites.add new Sprite(app.gamepad_spritesheet.dpad_left, - center.offset(-100.0, 0.0+dy, 0.0)) - if show_right then sprites.add new Sprite(app.gamepad_spritesheet.dpad_right, - center.offset( 100.0, 0.0+dy, 0.0)) - if show_down then sprites.add new Sprite(app.gamepad_spritesheet.dpad_down, - center.offset( 0.0,-100.0+dy, 0.0)) - - # Non-interactive joystick background - var back = new Sprite(app.gamepad_spritesheet.joystick_back, - center.offset(0.0, 0.0+dy, -1.0)) # In the back - back.draw_order = -1 - sprites.add back - - # Non-interactive handle in the bottom - if not show_down then sprites.add new Sprite(app.gamepad_spritesheet.joystick_down, - center.offset(0.0, -100.0+dy, 0.0)) - - return sprites - end -end diff --git a/lib/gamnit/virtual_gamepad/virtual_gamepad_spritesheet.nit b/lib/gamnit/virtual_gamepad/virtual_gamepad_spritesheet.nit deleted file mode 100644 index 64c0048f25..0000000000 --- a/lib/gamnit/virtual_gamepad/virtual_gamepad_spritesheet.nit +++ /dev/null @@ -1,33 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# File generated by svg_to_png_and_nit, do not modify, redef instead - -import gamnit::textures - -class VirtualGamepadSpritesheet - - private var root_texture = new Texture("images/virtual_gamepad.png") - var a: Texture = root_texture.subtexture(856, 816, 162, 162) - var b: Texture = root_texture.subtexture(1036, 816, 162, 162) - var cancel: Texture = root_texture.subtexture(1036, 996, 162, 162) - var down: Texture = root_texture.subtexture(1216, 636, 162, 162) - var dpad_down: Texture = root_texture.subtexture(1136, 446, 124, 152) - var dpad_left: Texture = root_texture.subtexture(1036, 296, 154, 124) - var dpad_right: Texture = root_texture.subtexture(1206, 296, 152, 124) - var dpad_up: Texture = root_texture.subtexture(1136, 116, 124, 154) - var fire: Texture = root_texture.subtexture(1396, 996, 162, 162) - var fist: Texture = root_texture.subtexture(1216, 996, 162, 162) - var flag: Texture = root_texture.subtexture(1576, 816, 162, 162) - var joystick_back: Texture = root_texture.subtexture(0, 0, 194, 194) - var joystick_down: Texture = root_texture.subtexture(784, 30, 124, 152) - var key: Texture = root_texture.subtexture(1576, 636, 162, 162) - var left: Texture = root_texture.subtexture(676, 636, 162, 162) - var ok: Texture = root_texture.subtexture(856, 996, 162, 162) - var pedal: Texture = root_texture.subtexture(1576, 996, 162, 162) - var right: Texture = root_texture.subtexture(856, 636, 162, 162) - var star: Texture = root_texture.subtexture(1396, 636, 162, 162) - var turn_left: Texture = root_texture.subtexture(676, 816, 162, 162) - var turn_right: Texture = root_texture.subtexture(676, 996, 162, 162) - var up: Texture = root_texture.subtexture(1036, 636, 162, 162) - var x: Texture = root_texture.subtexture(1216, 816, 162, 162) - var y: Texture = root_texture.subtexture(1396, 816, 162, 162) -end diff --git a/lib/mnit/input.nit b/lib/mnit/input.nit deleted file mode 100644 index 7987c2724f..0000000000 --- a/lib/mnit/input.nit +++ /dev/null @@ -1,132 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Defines abstract classes for user and general inputs to the application. -# Implemented independantly for each platforms and technologies. -module input - -import android::input_events is conditional(android) - -# Input to the App, propagated through `App::input`. -interface InputEvent -end - -# Mouse and touch input events -interface PointerEvent - super InputEvent - - # X position on screen (in pixels) - fun x: Float is abstract - - # Y position on screen (in pixels) - fun y: Float is abstract - - # Is down? either going down or already down - fun pressed: Bool is abstract - - # Is it not currently pressed down? The opposite of `pressed`. - fun depressed: Bool do return not pressed - - # Is this a movement event? - fun is_move: Bool is abstract - - # Unique identifier of this pointer among other active pointers - # - # This value is useful to differentiate between pointers (or fingers) on - # multi-touch systems. This value does not change for the same pointer - # while it touches the screen. - fun pointer_id: Int do return 0 -end - -# A motion event on screen composed of many `PointerEvent` -# -# Example of a `MotionEvent` a gesture such as pinching using two fingers. -interface MotionEvent - super InputEvent - - # A pointer just went down? - fun just_went_down: Bool is abstract - - # Which pointer is down, if any - fun down_pointer: nullable PointerEvent is abstract -end - -# Specific touch event -interface TouchEvent - super PointerEvent - - # Pressure level of input - fun pressure: Float is abstract -end - -# Keyboard or other keys event -interface KeyEvent - super InputEvent - - # Key is currently down? - fun is_down: Bool is abstract - - # Key is currently up? - fun is_up: Bool do return not is_down - - # Key is the up arrow key? - fun is_arrow_up: Bool is abstract - - # Key is the left arrow key? - fun is_arrow_left: Bool is abstract - - # Key is the down arrow key? - fun is_arrow_down: Bool is abstract - - # Key is the right arrow key? - fun is_arrow_right: Bool is abstract - - # Key code, is plateform specific - fun code: Int is abstract - - # Get Char value of key, if any - fun to_c: nullable Char is abstract - - # Name of the key that raised `self` - # - # Use mainly for debug since it is implementation dependent. - fun name: String is abstract -end - -# Mobile hardware (or pseudo hardware) event -interface MobileKeyEvent - super KeyEvent - - # Key is back button? (mostly for Android) - fun is_back_key: Bool is abstract - - # Key is menu button? (mostly for Android) - fun is_menu_key: Bool is abstract - - # Key is search button? (mostly for Android) - fun is_search_key: Bool is abstract - - # Key is home button? (mostly for Android) - fun is_home_key: Bool is abstract -end - -# Sensor events like accelerometer, gyroscope etc for mobile apps -interface SensorEvent - super InputEvent -end - -# Quit event, used for window close button -interface QuitEvent - super InputEvent -end diff --git a/lib/mnit/package.ini b/lib/mnit/package.ini deleted file mode 100644 index 2239f95f28..0000000000 --- a/lib/mnit/package.ini +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name=mnit -tags=lib -maintainer=Alexis Laferrière -license=Apache-2.0 -[upstream] -browse=https://github.com/nitlang/nit/tree/master/lib/mnit/ -git=https://github.com/nitlang/nit.git -git.directory=lib/mnit/ -homepage=http://nitlanguage.org -issues=https://github.com/nitlang/nit/issues diff --git a/tests/sav/nitcatalog_args1.res b/tests/sav/nitcatalog_args1.res index 7ab7a710eb..ab12424829 100644 --- a/tests/sav/nitcatalog_args1.res +++ b/tests/sav/nitcatalog_args1.res @@ -38,7 +38,7 @@
  • or others modelbuilder.
  • An image:

    -

    Tinks3D

    +

    Tinks3D

    Content

    • test_prog: Test program for model tools. (test_prog)
      • examples (test_prog/examples)