From: Joshua Simmons Date: Wed, 1 May 2024 08:26:59 +0000 (+0200) Subject: shark: Add drivable shark X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=dea86c1d567882989b87a74681dbcf0862d9b09d;p=josh%2Fnarcissus shark: Add drivable shark --- diff --git a/title/shark-shaders/shaders/basic.vert.glsl b/title/shark-shaders/shaders/basic.vert.glsl index 8488ce1..a3168c3 100644 --- a/title/shark-shaders/shaders/basic.vert.glsl +++ b/title/shark-shaders/shaders/basic.vert.glsl @@ -13,7 +13,7 @@ struct TransformData { }; layout(std430, row_major, set = 0, binding = 0) uniform uniformBuffer { - mat4 viewProj; + mat4 clip_from_camera; }; layout(std430, set = 1, binding = 0) readonly buffer vertexBuffer { @@ -24,23 +24,23 @@ layout(std430, set = 1, binding = 1) readonly buffer transformBuffer { TransformData transforms[]; }; -layout(location = 0) out vec2 outTexcoord; -layout(location = 1) out vec3 outNormal; +layout(location = 0) out vec2 out_texcoord; +layout(location = 1) out vec3 out_normal; void main() { TransformData td = transforms[gl_InstanceIndex]; VertexData vd = vertices[gl_VertexIndex]; - mat3 modelRot = mat3( - td.transform[0].x, td.transform[0].w, td.transform[1].z, - td.transform[0].y, td.transform[1].x, td.transform[1].w, - td.transform[0].z, td.transform[1].y, td.transform[2].x + mat4 camera_from_model = mat4( + td.transform[0].x, td.transform[0].w, td.transform[1].z, 0.0, + td.transform[0].y, td.transform[1].x, td.transform[1].w, 0.0, + td.transform[0].z, td.transform[1].y, td.transform[2].x, 0.0, + td.transform[2].y, td.transform[2].z, td.transform[2].w, 1.0 ); - vec3 modelOff = vec3(td.transform[2].y, td.transform[2].z, td.transform[2].w); - vec3 posWorld = modelRot * vd.position.xyz + modelOff; - vec4 posClip = viewProj * vec4(posWorld, 1.0); - gl_Position = posClip; - outNormal = vd.normal.xyz; - outTexcoord = vec2(vd.texcoord.x, 1.0 - vd.texcoord.y); + vec4 position_clip = clip_from_camera * camera_from_model * vec4(vd.position.xyz, 1.0); + gl_Position = position_clip; + + out_normal = vd.normal.xyz; + out_texcoord = vec2(vd.texcoord.x, 1.0 - vd.texcoord.y); } diff --git a/title/shark-shaders/shaders/text.vert.glsl b/title/shark-shaders/shaders/text.vert.glsl index 314f917..9d83d06 100644 --- a/title/shark-shaders/shaders/text.vert.glsl +++ b/title/shark-shaders/shaders/text.vert.glsl @@ -22,35 +22,35 @@ struct GlyphInstance { }; layout(std430, set = 0, binding = 0) uniform uniformBuffer { - uint screenWidth; - uint screenHeight; - uint atlasWidth; - uint atlasHeight; + uint screen_width; + uint screen_height; + uint atlas_width; + uint atlas_height; }; layout(std430, set = 0, binding = 1) readonly buffer primitiveBuffer { - uint primitiveVertices[]; + uint primitive_vertices[]; }; layout(std430, set = 0, binding = 2) readonly buffer glyphBuffer { - CachedGlyph cachedGlyphs[]; + CachedGlyph cached_glyphs[]; }; layout(std430, set = 0, binding = 3) readonly buffer glyphInstanceBuffer { - GlyphInstance glyphInstances[]; + GlyphInstance glyph_instances[]; }; -layout(location = 0) out vec2 outTexcoord; -layout(location = 1) out flat vec4 outColor; +layout(location = 0) out vec2 out_texcoord; +layout(location = 1) out flat vec4 out_color; void main() { - uint primitivePacked = primitiveVertices[gl_VertexIndex]; - uint primitiveKind = bitfieldExtract(primitivePacked, 26, 6); - uint primitiveData = bitfieldExtract(primitivePacked, 24, 2); - uint instanceIndex = bitfieldExtract(primitivePacked, 0, 24); + uint primitive_packed = primitive_vertices[gl_VertexIndex]; + uint primitive_kind = bitfieldExtract(primitive_packed, 26, 6); + uint primitive_data = bitfieldExtract(primitive_packed, 24, 2); + uint instance_index = bitfieldExtract(primitive_packed, 0, 24); - GlyphInstance gi = glyphInstances[instanceIndex]; - CachedGlyph cg = cachedGlyphs[gi.index]; + GlyphInstance gi = glyph_instances[instance_index]; + CachedGlyph cg = cached_glyphs[gi.index]; vec2 positions[4] = { vec2(cg.offset_x0, cg.offset_y0), @@ -59,11 +59,11 @@ void main() { vec2(cg.offset_x1, cg.offset_y1) }; - vec2 position = positions[primitiveData]; - vec2 halfScreenSize = vec2(screenWidth, screenHeight) / 2.0; - vec2 glyphPosition = vec2(gi.x, gi.y); - vec2 vertexPosition = (position + glyphPosition) / halfScreenSize - 1.0; - gl_Position = vec4(vertexPosition, 0.0, 1.0); + vec2 position = positions[primitive_data]; + vec2 half_screen_size = vec2(screen_width, screen_height) / 2.0; + vec2 glyph_position = vec2(gi.x, gi.y); + vec2 vertex_position = (position + glyph_position) / half_screen_size - 1.0; + gl_Position = vec4(vertex_position, 0.0, 1.0); vec2 texcoords[4] = { vec2(cg.x0, cg.y0), @@ -72,9 +72,9 @@ void main() { vec2(cg.x1, cg.y1) }; - vec2 texcoord = texcoords[primitiveData]; - outTexcoord = texcoord / vec2(atlasWidth, atlasHeight); - + vec2 texcoord = texcoords[primitive_data]; vec4 color = unpackUnorm4x8(gi.color).bgra; - outColor = color; + + out_texcoord = texcoord / vec2(atlas_width, atlas_height); + out_color = color; } diff --git "a/title/shark/data/bl\303\245haj.obj" "b/title/shark/data/bl\303\245haj.obj" index 13dc6e8..276a1ee 100644 --- "a/title/shark/data/bl\303\245haj.obj" +++ "b/title/shark/data/bl\303\245haj.obj" @@ -1,1181 +1,1117 @@ -# Blender 3.3.1 +# Blender 4.1.1 # www.blender.org o Blåhaj -v -0.513672 0.477227 -0.487855 -v 0.101348 1.145127 -0.448955 -v 0.321097 0.969551 -0.396203 -v 0.290456 0.070505 -0.304060 -v 0.695866 -0.140460 -0.287407 -v 1.346310 -0.618434 -0.211921 -v 1.397743 -0.585071 -0.202461 -v -1.394655 1.405304 -0.659389 -v 0.500909 1.185633 -0.370190 -v 0.816441 0.335292 -0.358545 -v 0.132425 0.176289 -0.359488 -v 0.759247 0.290431 -0.347384 -v 1.130525 -0.252491 -0.249706 -v 1.165361 -0.016181 -0.245199 -v 1.382198 -0.163773 -0.203984 -v 1.613403 0.161917 -0.165239 -v 1.762753 0.114832 -0.139172 -v -1.022862 1.612946 -0.582463 -v 0.295581 1.205686 -0.400898 -v 0.202856 0.990160 -0.281962 -v 0.473640 0.635851 -0.343627 -v 0.877805 0.121704 -0.211098 -v -0.148832 1.223855 -0.436048 -v -0.721265 1.529708 -0.533413 -v -0.980803 0.792280 -0.576703 -v 0.128809 0.275253 -0.076610 -v 0.680725 -0.109638 -0.220780 -v 0.306368 0.536874 -0.062072 -v -1.353977 1.196646 -0.645581 -v -1.291000 1.582837 -0.645620 -v -0.376604 0.499755 -0.174481 -v -0.804048 1.386206 -0.241745 -v -0.139656 1.040884 -0.120274 -v -0.842712 0.803758 -0.253919 -v -1.107182 1.088119 -0.295826 -v -1.126454 1.315278 -0.298987 -v -0.416076 0.690944 -0.072647 -v -0.798298 1.196549 -0.144272 -v -0.177471 0.898461 -0.034039 -v -0.708015 0.868516 -0.128512 -v -0.896793 0.760708 -0.089954 -v -0.437961 0.459449 -0.005359 -v -0.753841 0.803125 0.029935 -v -0.616831 0.564260 0.139010 -v -0.716222 0.646515 0.148231 -v -0.601215 0.609184 0.160815 -v -0.583240 1.473795 -0.641733 -v -0.964535 0.794871 -0.707813 -v -0.256922 1.290885 -0.585181 -v -0.670076 0.594652 -0.656782 -v -0.098607 1.217722 -0.557744 -v -0.490569 0.476045 -0.625673 -v 0.063689 1.193024 -0.529618 -v -0.304107 0.380354 -0.593358 -v 0.369015 0.841932 -0.476703 -v 0.000000 0.226583 -0.540655 -v 0.490768 0.657438 -0.455603 -v 0.177920 0.171909 -0.509821 -v 0.609316 0.498471 -0.435058 -v 0.307872 0.071943 -0.487300 -v 0.712328 0.358604 -0.417206 -v 0.469293 -0.018792 -0.459325 -v 0.847254 0.212591 -0.393822 -v 0.650478 -0.106666 -0.427925 -v 0.969917 0.092877 -0.372565 -v 0.814752 -0.171993 -0.399455 -v 1.098834 0.021344 -0.350223 -v 0.970459 -0.215738 -0.372471 -v 1.180638 0.019605 -0.336046 -v 1.112221 -0.270739 -0.347903 -v 1.410525 0.101982 -0.296205 -v 1.421314 -0.190659 -0.294336 -v 1.631845 0.205940 -0.257850 -v 1.588972 -0.037597 -0.265280 -v 1.752482 0.226307 -0.236943 -v 1.739030 0.056585 -0.239274 -v 1.837107 0.204510 -0.222277 -v 1.816547 0.114541 -0.225840 -v 1.869906 0.157819 -0.216593 -v 1.192469 -0.467054 -0.333995 -v 1.411708 -0.411759 -0.296000 -v 1.292515 -0.615039 -0.316657 -v 1.427498 -0.572308 -0.293264 -v 1.345521 -0.700101 -0.307471 -v 1.432081 -0.659492 -0.292470 -v 1.376050 -0.729371 -0.302180 -v 1.421653 -0.707190 -0.294277 -v -0.761753 1.555354 -0.672670 -v -1.129588 0.981260 -0.736417 -v -0.915410 1.602294 -0.699299 -v -1.252799 1.103611 -0.757770 -v -1.071297 1.614315 -0.726315 -v -1.345704 1.217310 -0.773871 -v -1.185237 1.600895 -0.746061 -v -1.373569 1.338073 -0.778700 -v -1.273591 1.581941 -0.761374 -v -1.359707 1.454011 -0.776298 -v 0.248914 1.286714 -0.497517 -v 0.378305 0.987426 -0.475093 -v 0.411180 1.295118 -0.469396 -v 0.465986 1.109555 -0.459898 -v 0.527362 1.269528 -0.449261 -v 0.542995 1.174291 -0.446552 -v 0.595585 1.256260 -0.437438 -v 0.609783 1.224493 -0.434977 -v 0.782048 0.367820 -0.405123 -v 0.839494 0.295114 -0.395167 -v 0.825461 0.367566 -0.397599 -v 0.847777 0.332287 -0.393732 -v -0.465949 0.477227 -0.763227 -v 0.134572 1.131882 -0.599543 -v 0.371960 0.903724 -0.556602 -v 0.197223 0.169511 -0.666393 -v 1.164171 -0.252539 -0.436033 -v 1.647258 0.158815 -0.351837 -v 1.378417 -0.618434 -0.397183 -v 1.430033 -0.585071 -0.388784 -v -1.353277 1.405304 -0.898149 -v 0.375879 1.042471 -0.567178 -v 0.325372 1.205686 -0.572799 -v 0.830108 0.335292 -0.437411 -v 0.511330 0.638265 -0.566565 -v 0.781242 0.290013 -0.467346 -v 1.179564 -0.010585 -0.431807 -v 1.414883 -0.163773 -0.392581 -v 1.795054 0.114832 -0.325556 -v -0.977280 1.612946 -0.845480 -v 0.544755 1.194055 -0.520308 -v 0.278076 0.990160 -0.716001 -v 0.941607 0.118043 -0.555198 -v -0.083864 1.214213 -0.676285 -v -0.676766 1.529708 -0.790182 -v -1.310325 1.196646 -0.897463 -v -0.935735 0.792280 -0.836751 -v 0.450893 0.536059 -0.886713 -v 0.760643 -0.138189 -0.585728 -v -1.251033 1.582837 -0.876235 -v -0.231301 0.499683 -1.012397 -v -0.656574 1.386206 -1.092697 -v 0.274293 0.265534 -0.927535 -v 0.009948 1.040884 -0.983515 -v -0.701575 0.807694 -1.094951 -v -0.960229 1.088119 -1.143775 -v -0.979441 1.315278 -1.147283 -v -0.226899 0.685402 -1.121229 -v -0.618360 1.196549 -1.182551 -v 0.005668 0.897699 -1.076725 -v -0.528616 0.868818 -1.167037 -v -0.692833 0.760708 -1.266845 -v -0.232292 0.459449 -1.192109 -v -0.517875 0.803125 -1.331638 -v -0.352151 0.564260 -1.388249 -v -0.442642 0.646515 -1.430377 -v -0.330108 0.609184 -1.403527 -vn -0.4237 -0.9023 -0.0801 -vn 0.8144 -0.0584 0.5773 -vn 0.9122 -0.0427 0.4076 -vn -0.3507 -0.9300 -0.1104 -vn 0.9467 0.0527 0.3176 -vn -0.3869 -0.8910 0.2377 -vn 0.3994 0.9090 0.1190 -vn 0.8467 -0.2037 0.4915 -vn 0.0069 0.6847 0.7288 -vn 0.4080 0.9117 0.0493 -vn -0.3668 0.8849 0.2869 -vn -0.7005 -0.7125 -0.0408 -vn -0.1028 0.7783 0.6194 -vn -0.2840 -0.9571 -0.0581 -vn 0.0799 0.9967 -0.0174 -vn -0.7548 -0.6382 -0.1515 -vn -0.2180 0.8976 0.3833 -vn -0.2033 0.9784 -0.0381 -vn -0.9638 0.1202 -0.2380 -vn 0.4267 0.3986 0.8118 -vn -0.1798 0.0106 0.9837 -vn 0.5139 0.7617 0.3945 -vn -0.2383 -0.0064 0.9712 -vn -0.5983 -0.7587 0.2578 -vn 0.6986 0.4351 0.5680 -vn -0.2621 -0.8972 0.3555 -vn 0.2750 0.7823 0.5588 -vn -0.4531 -0.7983 0.3966 -vn 0.1391 -0.1594 0.9774 -vn -0.4513 -0.8446 0.2881 -vn 0.3569 0.4126 0.8380 -vn -0.5270 -0.3780 0.7612 -vn -0.7210 -0.6092 0.3301 -vn 0.3440 -0.5041 0.7922 -vn -0.1708 -0.0000 0.9853 -vn 0.6382 -0.7570 -0.1398 -vn -0.4179 -0.9016 -0.1117 -vn 0.9961 -0.0427 -0.0769 -vn -0.3591 -0.9311 -0.0647 -vn 0.7851 -0.5223 -0.3329 -vn 0.0824 0.7189 -0.6902 -vn -0.6186 -0.4547 -0.6408 -vn 0.6491 -0.7574 -0.0716 -vn 0.9984 0.0527 0.0195 -vn -0.5358 -0.8380 -0.1031 -vn 0.7167 0.2705 -0.6427 -vn -0.4366 -0.5798 -0.6879 -vn -0.2849 -0.8916 -0.3521 -vn 0.4158 0.9091 0.0248 -vn 0.9627 -0.2037 -0.1779 -vn 0.0723 0.9510 -0.3006 -vn 0.2518 0.6935 -0.6750 -vn -0.4429 -0.8924 -0.0869 -vn 0.4008 0.9117 0.0909 -vn 0.8210 0.4866 -0.2986 -vn 0.6772 -0.6972 -0.2351 -vn 0.9061 -0.1873 -0.3794 -vn -0.6734 -0.7125 -0.1972 -vn -0.3086 0.8291 -0.4663 -vn 0.1116 0.7783 -0.6179 -vn -0.2903 -0.9567 -0.0211 -vn 0.0694 0.9967 0.0433 -vn 0.5073 -0.8490 0.1478 -vn -0.7618 -0.6382 -0.1114 -vn -0.0707 0.8870 -0.4563 -vn -0.6018 -0.7963 -0.0620 -vn -0.7723 -0.3531 -0.5281 -vn -0.2043 0.9784 -0.0325 -vn 0.7669 0.5954 0.2396 -vn -0.9877 0.1202 -0.1002 -vn 0.6750 0.3986 -0.6209 -vn 0.1747 -0.0014 -0.9846 -vn 0.6946 0.7191 -0.0192 -vn 0.2345 0.0391 -0.9713 -vn 0.8489 0.4356 -0.2993 -vn 0.3175 -0.1121 -0.9416 -vn -0.4411 0.6661 0.6015 -vn 0.4279 -0.1971 -0.8820 -vn -0.3890 -0.8215 -0.4169 -vn 0.6208 0.4146 -0.6654 -vn 0.0559 0.4367 -0.8979 -vn -0.2397 -0.3769 -0.8947 -vn -0.4549 0.3624 -0.8135 -vn -0.5687 -0.6097 -0.5521 -vn 0.3118 0.8664 -0.3902 -vn -0.0881 -0.5021 -0.8603 -vn 0.3703 0.6162 -0.6952 -vn -0.3983 0.3446 -0.8501 -vn 0.5905 -0.5041 -0.6302 -vn 0.5540 -0.7570 0.3464 -vn -0.7843 -0.4849 0.3871 -vn 0.4620 0.8847 0.0628 -vn 0.7276 -0.6363 0.2564 -vn 0.9762 0.0368 0.2139 -vn 0.7083 0.6721 0.2159 -vn -0.5483 -0.8332 -0.0715 -vn -0.1547 0.7189 0.6776 -vn -0.2526 -0.9667 0.0400 -vn -0.7982 -0.4547 0.3952 -vn 0.4362 0.8987 0.0448 -vn 0.5446 -0.7322 0.4089 -vn -0.0505 0.6476 0.7603 -vn 0.2157 -0.5595 0.8003 -vn 0.1485 0.9888 0.0115 -vn -0.5393 -0.8380 -0.0832 -vn 0.4248 0.2571 0.8680 -vn -0.6427 -0.5798 0.5008 -vn 0.5078 -0.7663 0.3937 -vn -0.0426 0.9320 0.3600 -vn -0.4463 -0.8924 -0.0672 -vn 0.4817 -0.4231 0.7674 -vn -0.7150 -0.6843 -0.1436 -vn -0.2128 0.6238 0.7521 -vn -0.4215 -0.9068 -0.0045 -vn 0.2430 0.9605 0.1359 -vn 0.6726 0.4866 0.5575 -vn -0.3923 0.8986 0.1964 -vn 0.5586 -0.6972 0.4493 -vn 0.7256 -0.1872 0.6622 -vn 0.9110 0.4016 -0.0943 -vn 0.5274 -0.8490 0.0315 -vn -0.5412 -0.8389 -0.0580 -vn -0.1228 0.9912 0.0489 -vn 0.5278 -0.7825 0.3302 -vn 0.7650 0.6005 0.2328 -vn -0.9788 -0.1950 -0.0631 -vn 0.0783 0.6614 0.7459 -vn -0.8611 0.5064 -0.0464 -vn -0.4609 -0.8872 -0.0205 -vn -0.9055 -0.3535 0.2345 -vn -0.1786 -0.0037 0.9839 -vn 0.8018 0.5960 0.0432 -vn 0.6709 0.4046 0.6214 -vn -0.1815 0.0080 0.9834 -vn -0.1707 0.0040 0.9853 -vn 0.0400 -0.0758 0.9963 -vn -0.1476 0.0037 0.9890 -vn -0.8245 -0.0621 0.5625 -vn 0.7661 0.6322 0.1162 -vn -0.5565 -0.7751 0.2991 -vn -0.4349 -0.8517 0.2924 -vn 0.5790 0.5980 0.5542 -vn 0.3402 0.8179 0.4640 -vn -0.2495 0.4367 0.8643 -vn 0.1475 -0.1544 0.9769 -vn -0.2357 0.7120 0.6615 -vn -0.7021 0.3624 0.6130 -vn 0.3440 0.8002 0.4913 -vn 0.4326 0.4716 0.7684 -vn -0.1764 0.0197 0.9841 -vn 0.1623 0.8664 0.4723 -vn -0.7179 -0.6214 0.3137 -vn -0.0712 -0.1028 0.9922 -vn 0.4012 0.8000 0.4462 -vn -0.4840 0.8723 0.0694 -vn -0.4189 -0.0718 0.9052 -vn 0.0759 0.4576 0.8859 -vn -0.3719 -0.4950 0.7852 -vn -0.4631 -0.8077 -0.3648 -vn 0.1147 0.6162 0.7792 -vn -0.6612 0.3446 0.6664 -vn 0.7584 0.1148 0.6416 -vn -0.6281 -0.7708 0.1066 -vn -0.2173 -0.3641 0.9057 -vn 0.9985 -0.0316 -0.0452 -vn -0.1258 0.6090 -0.7832 -vn -0.5755 -0.4120 -0.7065 -vn 0.4858 0.8738 0.0231 -vn 0.9912 0.0368 0.1270 -vn 0.7410 0.6703 0.0405 -vn -0.5404 -0.8332 -0.1172 -vn -0.2258 -0.9656 -0.1290 -vn 0.4785 0.8769 0.0467 -vn 0.2098 0.6467 -0.7334 -vn 0.4724 -0.5595 -0.6810 -vn 0.6841 -0.7085 -0.1735 -vn 0.4284 0.8493 -0.3083 -vn 0.7226 -0.4136 -0.5539 -vn -0.7288 -0.6683 -0.1494 -vn -0.2790 0.9168 -0.2859 -vn -0.1007 0.6220 -0.7765 -vn -0.4057 -0.8831 -0.2355 -vn 0.2745 0.9605 -0.0462 -vn 0.8321 0.4234 0.3581 -vn -0.0992 0.9912 -0.0874 -vn 0.6012 -0.7866 -0.1406 -vn 0.7751 0.6257 0.0876 -vn -0.9456 -0.2275 -0.2326 -vn 0.3176 0.6614 -0.6794 -vn -0.8265 0.5064 -0.2460 -vn -0.4462 -0.8710 -0.2058 -vn 0.1671 0.0042 -0.9859 -vn 0.8524 0.4570 -0.2542 -vn 0.1655 -0.0078 -0.9862 -vn 0.1358 0.0079 -0.9907 -vn -0.5871 -0.0621 -0.8071 -vn 0.4546 -0.0134 -0.8906 -vn 0.7602 0.6320 0.1504 -vn 0.4451 0.7928 -0.4163 -vn -0.4246 -0.7741 -0.4696 -vn -0.3259 -0.8521 -0.4095 -vn 0.7312 0.5976 -0.3288 -vn 0.4734 0.8212 -0.3187 -vn 0.4660 -0.1733 -0.8677 -vn -0.0377 0.7116 -0.7016 -vn 0.4767 0.8199 -0.3170 -vn 0.6661 0.4709 -0.5784 -vn 0.1653 0.0256 -0.9859 -vn -0.5708 -0.6202 -0.5381 -vn 0.3368 -0.0783 -0.9383 -vn 0.5784 0.7093 -0.4030 -vn -0.3454 0.8636 -0.3672 -vn -0.0899 -0.0717 -0.9934 -vn 0.3716 0.4987 -0.7831 -vn -0.5588 -0.8086 0.1841 -vn 0.9270 0.0920 -0.3637 -vn -0.5288 -0.8394 -0.1255 -vn 0.1002 -0.3641 -0.9260 -vn -0.3650 0.6190 0.6954 -vn -0.7795 -0.4108 0.4729 -vn 0.4652 0.8738 0.1418 -vn 0.7222 -0.5677 0.3951 -vn 0.9415 0.0981 0.3223 -vn 0.6548 0.7146 0.2460 -vn -0.5502 -0.8307 -0.0847 -vn -0.2683 -0.9632 -0.0136 -vn 0.4676 0.8771 0.1102 -vn 0.0234 0.6818 0.7312 -vn 0.1547 -0.5982 0.7863 -vn 0.2953 0.8757 0.3821 -vn 0.5080 0.0618 0.8592 -vn -0.7365 -0.6683 -0.1046 -vn -0.3535 0.6241 0.6968 -vn -0.4621 -0.8820 0.0929 -vn 0.2755 0.9565 0.0960 -vn -0.4477 0.8389 0.3096 -vn 0.8002 0.5543 0.2292 -vn -0.5855 -0.7959 -0.1540 -vn -0.1257 0.9907 0.0517 -vn 0.5189 -0.7866 0.3347 -vn 0.7582 0.6249 0.1862 -vn -0.9687 -0.2275 -0.0991 -vn 0.0404 0.6609 0.7493 -vn -0.8159 0.5640 -0.1271 -vn -0.4824 -0.8744 -0.0527 -vn -0.1777 -0.0030 0.9841 -vn 0.1016 -0.0339 0.9942 -vn -0.8106 -0.1201 0.5732 -vn -0.5731 -0.7728 0.2727 -vn -0.4496 -0.8551 0.2581 -vn -0.2716 0.7116 0.6480 -vn 0.3403 0.8179 0.4640 -vn -0.1753 -0.0009 0.9845 -vn 0.0109 -0.0628 0.9980 -vn 0.4098 0.7094 0.5734 -vn -0.4474 0.8649 0.2275 -vn -0.4335 -0.0242 0.9008 -vn 0.0865 0.4991 0.8622 -vn -0.4654 -0.8080 -0.3614 -vn 0.9391 0.0110 0.3433 -vn -0.5401 -0.8394 -0.0598 -vn 0.9979 -0.0636 -0.0124 -vn -0.1912 0.6346 -0.7488 -vn -0.6083 -0.4849 -0.6284 -vn 0.4504 0.8861 0.1098 -vn 0.9951 0.0981 0.0133 -vn 0.6993 0.7148 -0.0099 -vn -0.5466 -0.8307 -0.1054 -vn -0.2528 -0.9622 -0.1012 -vn 0.4394 0.8943 0.0848 -vn 0.2686 0.6923 -0.6697 -vn 0.4103 -0.5982 -0.6883 -vn 0.6107 -0.7684 -0.1913 -vn 0.1522 0.9883 -0.0103 -vn 0.7745 0.0626 -0.6295 -vn -0.7216 -0.6843 -0.1053 -vn -0.2852 0.9178 -0.2761 -vn 0.0528 0.6234 -0.7802 -vn -0.4008 -0.9062 -0.1349 -vn 0.2918 0.9565 0.0023 -vn 0.8302 0.5545 0.0580 -vn -0.1009 0.9907 -0.0910 -vn 0.6082 -0.7825 -0.1334 -vn 0.7981 0.6009 0.0441 -vn -0.9429 -0.1950 -0.2699 -vn 0.2902 0.6609 -0.6921 -vn -0.8111 0.5641 -0.1549 -vn -0.4553 -0.8693 -0.1923 -vn 0.1685 0.0065 -0.9857 -vn 0.1717 -0.0027 -0.9851 -vn 0.1039 -0.0785 -0.9915 -vn -0.5704 -0.1201 -0.8125 -vn -0.4471 -0.7721 -0.4516 -vn -0.3384 -0.8538 -0.3956 -vn 0.0006 0.7120 -0.7022 -vn 0.4917 0.7990 -0.3462 -vn 0.1667 -0.0010 -0.9860 -vn 0.2797 -0.1063 -0.9542 -vn 0.5292 0.7994 -0.2845 -vn -0.4161 0.8715 -0.2594 -vn -0.1051 -0.0242 -0.9942 -vn 0.3696 0.4576 -0.8087 -vn -0.5611 -0.8053 0.1916 -vn 0.9997 -0.0238 -0.0002 -vn -0.5556 -0.7708 -0.3117 -vt 0.659918 0.508898 -vt 0.374973 0.408696 -vt 0.959580 0.720492 -vt 0.422161 0.895489 -vt 0.372884 0.486082 -vt 0.951697 0.798935 -vt 0.966159 0.581131 -vt 0.672209 0.261514 +v -0.029450 0.007222 -0.135952 +v -0.209894 0.895728 -0.073888 +v -0.493649 0.861561 -0.088550 +v -0.944853 0.083410 -0.181330 +v -1.398392 0.110431 -0.129247 +v -2.205078 0.038332 -0.093271 +v -2.232669 0.093883 -0.094121 +v 1.217976 0.339582 -0.117355 +v -0.537794 1.140377 -0.084912 +v -1.244500 0.573471 -0.040645 +v -0.748820 0.088979 -0.153467 +v -1.220965 0.506853 -0.061049 +v -1.828651 0.238851 -0.093378 +v -1.736833 0.459408 -0.092837 +v -2.002023 0.446773 -0.096710 +v -2.034873 0.846713 -0.097425 +v -2.189044 0.884569 -0.097998 +v 0.999995 0.713131 -0.131799 +v -0.349628 1.050481 -0.089022 +v -0.399744 0.828533 -0.221017 +v -0.802191 0.657703 -0.113709 +v -1.427857 0.433994 -0.175005 +v 0.040084 0.836896 -0.128703 +v 0.695294 0.799428 -0.129460 +v 0.540358 0.031948 -0.127540 +v -0.735734 0.195459 -0.433320 +v -1.379370 0.134673 -0.197576 +v -0.752825 0.511187 -0.418907 +v 1.074004 0.182679 -0.123431 +v 1.220027 0.545587 -0.114237 +v -0.178999 0.122371 -0.422089 +v 0.648890 0.658617 -0.430350 +v -0.107820 0.711089 -0.437852 +v 0.382882 0.138934 -0.422745 +v 0.758935 0.244435 -0.426635 +v 0.892832 0.428971 -0.427544 +v -0.061821 0.274545 -0.529765 +v 0.532081 0.507174 -0.524819 +v -0.161853 0.576999 -0.528688 +v 0.284369 0.273414 -0.524105 +v 0.382569 0.088166 -0.593288 +v -0.172500 0.070679 -0.598943 +v 0.266363 0.207250 -0.687750 +v 0.011660 0.081432 -0.771546 +v 0.136671 0.102073 -0.797539 +v 0.018484 0.129682 -0.790593 +v 0.565617 0.812775 0.000601 +v 0.546967 0.031540 0.004435 +v 0.187545 0.826890 0.000029 +v 0.187669 0.014149 0.004043 +v 0.012156 0.847082 -0.000304 +v -0.029586 0.006503 0.003792 +v -0.141697 0.910880 -0.000823 +v -0.241069 0.022130 0.003433 +v -0.588262 0.769923 -0.000722 +v -0.584798 0.049582 0.002841 +v -0.789285 0.675599 -0.000523 +v -0.767697 0.095877 0.002369 +v -0.974354 0.601466 -0.000403 +v -0.932250 0.078260 0.002237 +v -1.136063 0.535564 -0.000292 +v -1.119403 0.085025 0.001955 +v -1.328691 0.481102 -0.000280 +v -1.322266 0.104586 0.001589 +v -1.497091 0.442751 -0.000313 +v -1.498794 0.134612 0.001205 +v -1.646079 0.448952 -0.000542 +v -1.656742 0.178642 0.000778 +v -1.718103 0.490284 -0.000842 +v -1.808371 0.205729 0.000443 +v -1.875498 0.681194 -0.001995 +v -2.035819 0.436134 -0.000997 +v -2.014312 0.886109 -0.003191 +v -2.102648 0.655026 -0.002167 +v -2.108699 0.966707 -0.003714 +v -2.184543 0.814263 -0.003063 +v -2.193522 0.992331 -0.003954 +v -2.222050 0.904492 -0.003558 +v -2.246123 0.969500 -0.003911 +v -1.979403 0.079552 0.000838 +v -2.141507 0.241687 -0.000178 +v -2.142720 0.005142 0.000989 +v -2.238046 0.112409 0.000332 +v -2.232682 -0.039985 0.001092 +v -2.286999 0.040116 0.000625 +v -2.274323 -0.049080 0.001081 +v -2.302534 -0.006206 0.000832 +v 0.762899 0.789202 0.000980 +v 0.786615 0.104822 0.004391 +v 0.920712 0.748982 0.001388 +v 0.956853 0.145144 0.004418 +v 1.062454 0.677679 0.001929 +v 1.096277 0.193919 0.004363 +v 1.154601 0.606538 0.002403 +v 1.182793 0.282791 0.004039 +v 1.221648 0.544050 0.002801 +v 1.230539 0.389373 0.003577 +v -0.254423 1.088103 -0.001849 +v -0.521296 0.899432 -0.001272 +v -0.391176 1.180244 -0.002485 +v -0.534541 1.049959 -0.002033 +v -0.505394 1.219138 -0.002830 +v -0.568109 1.145730 -0.002550 +v -0.571556 1.243483 -0.003037 +v -0.600286 1.223700 -0.002978 +v -1.191930 0.579955 -0.000586 +v -1.279379 0.547738 -0.000543 +v -1.229808 0.602462 -0.000748 +v -1.267408 0.583920 -0.000706 +v -0.029822 0.008603 0.143521 +v -0.222946 0.888763 0.080181 +v -0.547294 0.817712 0.078326 +v -0.762533 0.090621 0.159973 +v -1.830071 0.240433 0.095951 +v -2.038006 0.845762 0.092217 +v -2.205328 0.039261 0.094750 +v -2.232920 0.094817 0.094977 +v 1.217654 0.340779 0.124960 +v -0.477505 0.937693 0.088917 +v -0.349860 1.051342 0.085439 +v -1.244606 0.573866 0.039395 +v -0.800448 0.660407 0.112382 +v -1.222360 0.507709 0.060903 +v -1.718884 0.455905 0.093499 +v -2.002278 0.447719 0.094695 +v -2.189295 0.885503 0.091162 +v 0.999640 0.714449 0.135135 +v -0.548708 1.157421 0.070392 +v -0.400329 0.830708 0.219486 +v -1.433729 0.434704 0.174929 +v 0.015084 0.841718 0.119045 +v 0.694948 0.800715 0.131133 +v 1.073664 0.183941 0.132202 +v 0.540007 0.033252 0.136381 +v -0.755718 0.515442 0.418288 +v -1.408665 0.120529 0.175695 +v 1.219715 0.546743 0.119813 +v -0.180242 0.126554 0.428321 +v 0.647741 0.662882 0.433275 +v -0.740219 0.190387 0.429980 +v -0.108985 0.715416 0.438245 +v 0.387676 0.144171 0.430027 +v 0.757791 0.248685 0.433943 +v 0.891688 0.433222 0.433385 +v -0.072388 0.278847 0.535699 +v 0.530679 0.512378 0.528923 +v -0.165711 0.582813 0.529936 +v 0.283614 0.278582 0.529788 +v 0.380981 0.094065 0.601130 +v -0.174102 0.076628 0.605481 +v 0.264526 0.214074 0.694101 +v 0.009599 0.089086 0.778458 +v 0.134540 0.109986 0.804579 +v 0.016373 0.137523 0.797046 +vn -0.0960 -0.9953 0.0114 +vn -0.8015 0.4126 -0.4329 +vn -0.8513 0.4617 -0.2493 +vn -0.1676 -0.9844 0.0535 +vn -0.8183 0.5535 -0.1551 +vn -0.1674 -0.9405 -0.2958 +vn 0.1143 0.9920 -0.0538 +vn -0.8913 0.2974 -0.3423 +vn 0.2417 0.6507 -0.7198 +vn 0.1186 0.9928 0.0164 +vn 0.7246 0.5953 -0.3473 +vn 0.2299 -0.9704 -0.0743 +vn 0.3984 0.6660 -0.6307 +vn -0.2454 -0.9693 0.0132 +vn 0.4491 0.8931 0.0270 +vn 0.3301 -0.9436 0.0255 +vn 0.5914 0.6899 -0.4175 +vn 0.6818 0.7315 0.0002 +vn 0.9103 -0.4075 0.0732 +vn -0.2724 0.6262 -0.7305 +vn 0.0146 -0.0006 -0.9999 +vn -0.0982 0.9470 -0.3058 +vn 0.0571 -0.0460 -0.9973 +vn 0.0765 -0.9331 -0.3514 +vn -0.4478 0.7756 -0.4448 +vn -0.2930 -0.8725 -0.3911 +vn 0.0903 0.8567 -0.5078 +vn -0.0867 -0.8816 -0.4639 +vn -0.3414 0.0156 -0.9398 +vn -0.0963 -0.9293 -0.3565 +vn -0.2100 0.6049 -0.7681 +vn 0.1397 -0.5287 -0.8372 +vn 0.2467 -0.8615 -0.4438 +vn -0.6653 -0.1908 -0.7218 +vn 0.0013 -0.0049 -1.0000 +vn -0.9091 -0.3353 0.2472 +vn -0.0960 -0.9944 0.0434 +vn -0.8520 0.4641 0.2424 +vn -0.1677 -0.9858 0.0071 +vn -0.8841 -0.0755 0.4613 +vn 0.4013 0.6004 0.6917 +vn 0.3807 -0.7578 0.5300 +vn -0.9283 -0.3244 0.1817 +vn -0.8187 0.5550 0.1475 +vn 0.0352 -0.9993 0.0151 +vn -0.3725 0.5432 0.7525 +vn 0.1694 -0.7762 0.6073 +vn -0.1683 -0.9381 0.3027 +vn 0.1142 0.9926 0.0418 +vn -0.8922 0.3007 0.3370 +vn 0.4730 0.8265 0.3051 +vn 0.2429 0.6661 0.7052 +vn -0.0737 -0.9972 0.0149 +vn 0.1187 0.9926 -0.0259 +vn -0.3989 0.8100 0.4299 +vn -0.8973 -0.2721 0.3475 +vn -0.8066 0.2692 0.5262 +vn 0.2296 -0.9696 0.0845 +vn 0.7558 0.5144 0.4052 +vn 0.3967 0.6722 0.6251 +vn -0.2452 -0.9692 -0.0243 +vn 0.4492 0.8927 -0.0346 +vn -0.8877 -0.4568 -0.0579 +vn 0.3302 -0.9438 -0.0153 +vn 0.5833 0.6860 0.4349 +vn 0.1064 -0.9936 -0.0366 +vn 0.5465 -0.7396 0.3929 +vn 0.6818 0.7315 -0.0056 +vn -0.3752 0.9204 -0.1101 +vn 0.9105 -0.4082 -0.0668 +vn -0.2743 0.6334 0.7236 +vn -0.0055 0.0057 1.0000 +vn -0.2128 0.9681 0.1324 +vn -0.0370 0.0720 0.9967 +vn -0.4487 0.7804 0.4354 +vn -0.1894 -0.0127 0.9818 +vn 0.6288 0.3961 -0.6691 +vn -0.3351 -0.0244 0.9418 +vn -0.0349 -0.9365 0.3489 +vn -0.2138 0.6158 0.7583 +vn 0.3082 0.3278 0.8930 +vn 0.1377 -0.5193 0.8434 +vn 0.6889 0.0112 0.7247 +vn 0.2457 -0.8578 0.4515 +vn 0.2402 0.8685 0.4337 +vn -0.0598 -0.5466 0.8353 +vn 0.1060 0.6585 0.7451 +vn 0.6373 0.0217 0.7703 +vn -0.6672 -0.1837 0.7218 +vn -0.9085 -0.3377 -0.2462 +vn 0.3560 -0.7824 -0.5110 +vn 0.0571 0.9983 0.0122 +vn -0.9797 -0.1534 -0.1289 +vn -0.8363 0.5462 -0.0479 +vn -0.2827 0.9543 -0.0968 +vn 0.0436 -0.9989 -0.0182 +vn 0.4032 0.5936 -0.6965 +vn -0.2911 -0.9535 -0.0782 +vn 0.3821 -0.7629 -0.5214 +vn 0.0887 0.9957 0.0256 +vn -0.8968 -0.3160 -0.3096 +vn 0.2664 0.5924 -0.7604 +vn -0.5867 -0.3029 -0.7510 +vn 0.3830 0.9237 0.0100 +vn 0.0352 -0.9994 -0.0051 +vn -0.3519 0.5087 -0.7857 +vn 0.1710 -0.7822 -0.5991 +vn -0.8811 -0.3652 -0.3006 +vn 0.4645 0.8067 -0.3653 +vn -0.0737 -0.9973 -0.0052 +vn -0.7362 -0.0535 -0.6746 +vn 0.2716 -0.9621 0.0245 +vn 0.3924 0.4887 -0.7793 +vn -0.1112 -0.9918 -0.0627 +vn 0.2705 0.9578 -0.0968 +vn -0.3978 0.8057 -0.4389 +vn 0.7662 0.5865 -0.2624 +vn -0.8964 -0.2755 -0.3471 +vn -0.8052 0.2640 -0.5309 +vn -0.5484 0.7999 0.2438 +vn -0.8878 -0.4563 0.0601 +vn 0.0327 -0.9990 -0.0303 +vn 0.6079 0.7907 -0.0722 +vn -0.8972 -0.3742 -0.2346 +vn -0.3699 0.9233 -0.1038 +vn 0.7350 -0.6705 -0.1007 +vn 0.1669 0.6686 -0.7247 +vn 0.9950 -0.0084 -0.0999 +vn -0.0655 -0.9964 -0.0536 +vn 0.5482 -0.7443 -0.3813 +vn 0.0062 -0.0122 -0.9999 +vn -0.3758 0.9224 0.0893 +vn -0.4479 0.7399 -0.5020 +vn 0.0148 -0.0037 -0.9999 +vn 0.0033 -0.0015 -1.0000 +vn -0.2173 0.0383 -0.9753 +vn -0.0169 0.0104 -0.9998 +vn 0.5826 -0.4261 -0.6921 +vn -0.3376 0.9412 0.0112 +vn 0.0267 -0.9224 -0.3852 +vn -0.1144 -0.9267 -0.3579 +vn -0.2608 0.8532 -0.4518 +vn 0.0673 0.9125 -0.4035 +vn 0.3106 0.3190 -0.8954 +vn -0.3458 0.0241 -0.9380 +vn 0.4704 0.5450 -0.6941 +vn 0.6909 0.0041 -0.7230 +vn 0.0511 0.9015 -0.4298 +vn -0.2334 0.6881 -0.6870 +vn 0.0164 0.0090 -0.9998 +vn 0.2413 0.8641 -0.4416 +vn 0.2401 -0.8717 -0.4271 +vn -0.1367 -0.0417 -0.9897 +vn 0.0092 0.9267 -0.3757 +vn 0.8485 0.5067 -0.1524 +vn 0.1854 -0.1995 -0.9622 +vn 0.0435 0.5044 -0.8624 +vn -0.0551 -0.5481 -0.8346 +vn 0.0273 -0.9581 0.2852 +vn 0.1079 0.6511 -0.7513 +vn 0.6394 0.0141 -0.7688 +vn -0.6742 0.5378 -0.5063 +vn 0.1173 -0.9712 -0.2073 +vn -0.1356 -0.3471 -0.9280 +vn -0.8528 0.4774 0.2116 +vn 0.5338 0.3925 0.7490 +vn 0.3758 -0.7047 0.6018 +vn 0.0372 0.9978 0.0554 +vn -0.8364 0.5467 0.0403 +vn -0.2858 0.9548 0.0815 +vn 0.0436 -0.9987 0.0282 +vn -0.2887 -0.9529 0.0929 +vn 0.0415 0.9987 0.0308 +vn 0.2628 0.5998 0.7558 +vn -0.5887 -0.2955 0.7524 +vn -0.9179 -0.2732 0.2879 +vn 0.1210 0.9201 0.3726 +vn -0.7431 -0.0326 0.6684 +vn 0.2923 -0.9559 0.0278 +vn 0.7498 0.6196 0.2320 +vn 0.5184 0.4170 0.7465 +vn -0.0788 -0.9827 0.1676 +vn 0.2703 0.9587 0.0880 +vn -0.5361 0.8161 -0.2155 +vn 0.6077 0.7914 0.0660 +vn -0.8930 -0.3795 0.2419 +vn -0.3444 0.9379 0.0410 +vn 0.7148 -0.6956 0.0721 +vn 0.1714 0.6718 0.7206 +vn 0.9947 -0.0074 0.1026 +vn -0.0426 -0.9904 0.1314 +vn 0.0040 0.0066 1.0000 +vn -0.4471 0.8043 0.3914 +vn -0.0008 -0.0045 1.0000 +vn 0.0330 -0.0065 0.9994 +vn 0.5807 -0.4192 0.6979 +vn -0.2616 0.1459 0.9541 +vn -0.3377 0.9410 -0.0235 +vn 0.0935 0.8711 0.4821 +vn 0.0273 -0.9184 0.3948 +vn -0.1050 -0.9300 0.3523 +vn -0.2615 0.8569 0.4443 +vn 0.0701 0.9180 0.3905 +vn -0.3570 0.0166 0.9340 +vn 0.5006 0.5321 0.6829 +vn 0.0663 0.9187 0.3893 +vn -0.2357 0.6944 0.6799 +vn 0.0166 0.0241 0.9996 +vn 0.2401 -0.8667 0.4373 +vn -0.1888 0.0263 0.9817 +vn -0.0641 0.8686 0.4914 +vn 0.7903 0.5335 0.3013 +vn 0.1830 -0.1898 0.9646 +vn 0.0570 0.5512 0.8324 +vn 0.0281 -0.9619 -0.2720 +vn -0.6825 0.5204 0.5132 +vn 0.0317 -0.9988 0.0383 +vn -0.1381 -0.3380 0.9310 +vn 0.5267 0.4023 -0.7488 +vn 0.3777 -0.7094 -0.5951 +vn 0.0373 0.9972 -0.0651 +vn -0.9599 -0.0858 -0.2668 +vn -0.7911 0.5901 -0.1608 +vn -0.2200 0.9660 -0.1356 +vn 0.0484 -0.9988 -0.0055 +vn -0.2683 -0.9629 -0.0280 +vn 0.0416 0.9986 -0.0336 +vn 0.2258 0.6568 -0.7194 +vn -0.5532 -0.3683 -0.7472 +vn 0.1469 0.9323 -0.3305 +vn -0.5216 0.3830 -0.7624 +vn 0.2924 -0.9561 -0.0176 +vn 0.5193 0.4127 -0.7483 +vn -0.0782 -0.9831 -0.1657 +vn 0.2468 0.9677 -0.0520 +vn 0.7658 0.5165 -0.3830 +vn -0.4230 0.9012 -0.0943 +vn 0.1062 -0.9927 0.0568 +vn 0.6096 0.7891 -0.0755 +vn -0.8924 -0.3819 -0.2405 +vn -0.3449 0.9368 -0.0591 +vn 0.7150 -0.6963 -0.0634 +vn 0.1982 0.6491 -0.7344 +vn 0.9983 0.0573 -0.0131 +vn -0.0361 -0.9990 -0.0256 +vn 0.0058 -0.0112 -0.9999 +vn -0.2475 0.1054 -0.9631 +vn 0.5394 -0.4678 -0.7002 +vn 0.0457 -0.9311 -0.3619 +vn -0.0989 -0.9400 -0.3266 +vn 0.5024 0.5253 -0.6868 +vn 0.0048 -0.0081 -1.0000 +vn -0.1863 0.0347 -0.9819 +vn -0.0632 0.8641 -0.4994 +vn 0.7909 0.5321 -0.3022 +vn 0.2229 -0.1665 -0.9605 +vn 0.0593 0.5434 -0.8374 +vn 0.0286 -0.9592 0.2814 +vn -0.8371 0.5161 -0.1816 +vn 0.0318 -0.9991 -0.0284 +vn 0.0013 -0.0050 -1.0000 +vn -0.8736 0.4525 0.1792 +vn 0.5974 0.3840 0.7040 +vn 0.3546 -0.7773 0.5197 +vn 0.0608 0.9975 -0.0362 +vn -0.7915 0.5917 0.1529 +vn -0.2204 0.9675 0.1241 +vn 0.0483 -0.9987 0.0155 +vn -0.2682 -0.9614 0.0609 +vn 0.0779 0.9969 -0.0134 +vn 0.2274 0.6741 0.7027 +vn -0.5552 -0.3609 0.7493 +vn -0.8843 -0.3633 0.2934 +vn 0.3828 0.9233 0.0321 +vn -0.5304 0.3955 0.7498 +vn 0.2716 -0.9623 -0.0143 +vn 0.7543 0.6181 0.2213 +vn 0.3900 0.4960 0.7758 +vn -0.1094 -0.9916 0.0693 +vn 0.2466 0.9682 0.0431 +vn -0.4234 0.9025 0.0796 +vn 0.6094 0.7898 0.0693 +vn -0.8978 -0.3719 0.2359 +vn -0.3704 0.9247 0.0878 +vn 0.7347 -0.6695 0.1092 +vn 0.1962 0.6564 0.7285 +vn 0.9982 0.0575 0.0152 +vn -0.0361 -0.9925 0.1166 +vn 0.0040 0.0093 0.9999 +vn -0.0035 0.0031 1.0000 +vn 0.0155 -0.0969 0.9952 +vn 0.5375 -0.4609 0.7062 +vn 0.0448 -0.9267 0.3732 +vn -0.0973 -0.9366 0.3365 +vn 0.4685 0.5518 0.6899 +vn 0.0472 0.9060 0.4207 +vn 0.0017 0.0020 1.0000 +vn -0.1527 -0.0281 0.9879 +vn 0.0068 0.9305 0.3661 +vn 0.8385 0.5133 0.1831 +vn 0.2204 -0.1570 0.9627 +vn 0.0412 0.5129 0.8575 +vn 0.0306 -0.9596 -0.2798 +vn -0.8564 0.4885 0.1673 +vn 0.1167 -0.9691 0.2172 +vt 0.625330 0.143403 vt 0.658445 0.124408 -vt 0.728672 0.031965 -vt 0.995501 0.432985 -vt 0.400129 0.967568 +vt 0.624013 0.200651 +vt 0.990716 0.589020 +vt 0.966159 0.581131 +vt 0.996827 0.555363 +vt 0.502189 0.954105 +vt 0.505948 0.982298 +vt 0.451646 0.945813 +vt 0.627160 0.093605 +vt 0.418993 0.937994 vt 0.414665 0.966085 -vt 0.742101 0.025332 -vt 0.860913 0.470126 -vt 0.146307 0.004447 -vt 0.971778 0.653302 -vt 0.874136 0.794721 +vt 0.400551 0.934063 +vt 0.631341 0.006301 +vt 0.660360 0.000423 +vt 0.629700 0.049073 +vt 0.350544 0.282011 +vt 0.378198 0.316758 +vt 0.349109 0.330593 +vt 0.388162 0.932934 +vt 0.883200 0.931219 vt 0.898668 0.949748 -vt 0.920492 0.667761 +vt 0.883312 0.949096 +vt 0.353316 0.121756 +vt 0.389800 0.142834 +vt 0.351643 0.176375 +vt 0.882784 0.973289 +vt 0.854365 0.977751 +vt 0.882572 0.920890 +vt 0.622342 0.738821 +vt 0.661532 0.816979 +vt 0.624220 0.786943 +vt 0.469432 0.845635 vt 0.483257 0.858220 +vt 0.468829 0.855653 +vt 0.624083 0.299966 vt 0.659898 0.307249 -vt 0.920572 0.649199 -vt 0.484351 0.838062 -vt 0.383936 0.686491 -vt 0.660360 0.000423 -vt 0.995026 0.540717 -vt 0.788312 0.145203 -vt 0.189367 0.844990 -vt 0.401430 0.827363 -vt 0.854365 0.977751 +vt 0.621388 0.351539 +vt 0.360989 0.041164 +vt 0.396072 0.063440 +vt 0.356102 0.078724 +vt 0.626586 0.826377 +vt 0.435967 0.838245 +vt 0.467713 0.842688 +vt 0.434196 0.862717 +vt 0.826493 0.526367 +vt 0.860094 0.526273 +vt 0.827576 0.543349 +vt 0.826493 0.452269 +vt 0.860913 0.470126 +vt 0.826041 0.482807 +vt 0.435967 0.885722 +vt 0.453973 0.891755 +vt 0.439846 0.900826 vt 0.849666 0.170791 -vt 0.126138 0.817793 -vt 0.505948 0.982298 vt 0.841745 0.084642 -vt 0.467713 0.842688 vt 0.952907 0.078470 -vt 0.853639 0.886864 -vt 0.961933 0.035254 -vt 0.630940 0.965289 -vt 0.453973 0.891755 -vt 0.396072 0.063440 -vt 0.394831 0.062112 -vt 0.071096 0.021684 -vt 0.898403 0.881541 -vt 0.912973 0.747024 +vt 0.374973 0.408696 vt 0.415398 0.443676 -vt 0.393171 0.556814 -vt 0.424020 0.744855 -vt 0.134018 0.753678 -vt 0.430174 0.831325 -vt 0.378198 0.316758 -vt 0.389800 0.142834 -vt 0.657475 0.667397 +vt 0.372884 0.486082 +vt 0.959580 0.720492 +vt 0.951697 0.798935 +vt 0.912973 0.747024 +vt 0.672209 0.261514 vt 0.758163 0.309282 -vt 0.202493 0.537282 +vt 0.489397 0.551720 +vt 0.393171 0.556814 vt 0.689288 0.126948 vt 0.218719 0.718047 -vt 0.489397 0.551720 +vt 0.134018 0.753678 vt 0.104744 0.541273 -vt 0.661532 0.816979 -vt 0.856128 0.426209 -vt 0.190873 0.034994 -vt 0.402646 0.003745 -vt 0.088711 0.002435 -vt 0.860094 0.526273 -vt 0.220442 0.378064 -vt 0.753830 0.466752 -vt 0.896779 0.391742 -vt 0.951524 0.646724 -vt 0.064557 0.150736 -vt 0.490952 0.158111 -vt 0.484938 0.364658 vt 0.042952 0.361542 +vt 0.092956 0.374659 vt 0.215653 0.221039 -vt 0.349109 0.889925 -vt 0.753361 0.625230 -vt 0.897486 0.233218 -vt 0.758611 0.731126 +vt 0.170309 0.250413 vt 0.180460 0.115857 +vt 0.657475 0.667397 +vt 0.753361 0.625230 +vt 0.918403 0.548140 +vt 0.942709 0.557990 +vt 0.951524 0.600165 +vt 0.040634 0.839054 +vt 0.044556 0.837767 +vt 0.041603 0.836825 +vt 0.639862 0.935377 +vt 0.630940 0.965289 +vt 0.658907 0.932934 +vt 0.674371 0.137246 +vt 0.963197 0.597326 +vt 0.991519 0.631614 +vt 0.882784 0.900280 +vt 0.898403 0.881541 +vt 0.885504 0.864373 +vt 0.964629 0.448203 +vt 0.995501 0.432985 +vt 0.964842 0.422654 +vt 0.994213 0.659673 +vt 0.414665 0.966086 +vt 0.618426 0.569585 +vt 0.659918 0.508898 +vt 0.618333 0.508235 +vt 0.885504 0.957616 +vt 0.898384 0.948530 +vt 0.965556 0.410896 +vt 0.660595 -0.000060 +vt 0.378985 0.319260 +vt 0.372640 0.827080 +vt 0.401226 0.826293 +vt 0.375469 0.808152 +vt 0.619455 0.448548 +vt 0.471110 0.866632 +vt 0.565802 0.947126 +vt 0.933128 0.663956 +vt 0.920492 0.667761 +vt 0.934021 0.673637 +vt 0.853639 0.886837 +vt 0.882784 0.864372 +vt 0.668909 0.306138 +vt 0.613281 0.939128 +vt 0.623391 0.253481 +vt 0.965556 0.543349 +vt 0.995374 0.540892 +vt 0.963851 0.494541 +vt 0.369791 0.662381 +vt 0.384261 0.686618 +vt 0.365385 0.614972 +vt 0.860914 0.470126 +vt 0.952941 0.078441 +vt 0.961933 0.035254 +vt 0.867019 0.796088 +vt 0.937325 0.790617 +vt 0.489700 0.552446 +vt 0.393098 0.556884 +vt 0.134329 0.755598 +vt 0.189257 0.845380 +vt 0.220383 0.706825 +vt 0.901949 0.718982 +vt 0.961313 0.697559 +vt 0.105711 0.541948 +vt 0.757081 0.309561 +vt 0.093203 0.375171 +vt 0.064557 0.150736 +vt 0.116942 0.194662 vt 0.124760 0.088981 +vt 0.170289 0.250234 +vt 0.215096 0.219436 +vt 0.088711 0.002435 +vt 0.146307 0.004447 +vt 0.753444 0.626844 +vt 0.490952 0.158111 +vt 0.220442 0.378064 +vt 0.174124 0.350301 +vt 0.202571 0.534959 +vt 0.745671 0.902251 +vt 0.741267 0.952410 +vt 0.768948 0.976605 +vt 0.951800 0.288159 +vt 0.977483 0.324616 +vt 0.988781 0.256596 +vt 0.971778 0.653302 +vt 0.424020 0.744855 +vt 0.373410 0.718110 +vt 0.383936 0.686491 +vt 0.401430 0.827363 +vt 0.400129 0.967568 +vt 0.430174 0.831325 +vt 0.403002 0.873682 +vt 0.406318 0.832406 +vt 0.996827 0.682701 +vt 0.920572 0.649199 +vt 0.484351 0.838062 +vt 0.471110 0.831143 +vt 0.853639 0.886864 +vt 0.354112 0.501435 +vt 0.394831 0.062112 +vt 0.365846 0.017513 +vt 0.402646 0.003745 +vt 0.360430 0.560754 +vt 0.856128 0.426209 +vt 0.995026 0.540717 +vt 0.742101 0.025332 +vt 0.788312 0.145203 +vt 0.728672 0.031965 +vt 0.189367 0.844990 +vt 0.874136 0.794721 +vt 0.190873 0.034994 +vt 0.753830 0.466752 +vt 0.484938 0.364658 +vt 0.202493 0.537282 +vt 0.071096 0.021684 vt 0.173810 0.347627 +vt 0.758611 0.731126 vt 0.823832 0.890239 -vt 0.900260 0.622502 -vt 0.116942 0.194662 -vt 0.092956 0.374659 vt 0.823829 0.978030 -vt 0.170309 0.250413 -vt 0.403002 0.883636 -vt 0.988781 0.256596 vt 0.358223 0.841639 -vt 0.850332 0.233279 -vt 0.951524 0.600165 +vt 0.403002 0.883636 +vt 0.349109 0.889925 +vt 0.897486 0.233218 vt 0.849664 0.389781 -vt 0.951800 0.288159 -vt 0.768948 0.976605 -vt 0.403002 0.831143 -vt 0.942709 0.557990 -vt 0.985658 0.360507 +vt 0.850332 0.233279 +vt 0.900260 0.622502 vt 0.799266 0.336212 -vt 0.741267 0.952410 vt 0.802328 0.288593 -vt 0.977483 0.324616 -vt 0.918403 0.548140 -vt 0.976228 0.350736 -vt 0.745671 0.902251 -vt 0.351643 0.176375 -vt 0.051791 0.954523 -vt 0.086935 0.952930 -vt 0.618829 0.671054 vt 0.050734 0.938690 -vt 0.350544 0.282011 +vt 0.086935 0.952930 vt 0.087317 0.937852 -vt 0.618426 0.569585 -vt 0.349109 0.330593 -vt 0.049630 0.931359 -vt 0.406318 0.832406 -vt 0.618333 0.508235 +vt 0.985658 0.360507 +vt 0.976228 0.350736 vt 0.087419 0.928737 -vt 0.046587 0.924976 -vt 0.961313 0.697559 -vt 0.403002 0.873682 vt 0.086480 0.919888 -vt 0.619455 0.448548 +vt 0.049630 0.931359 vt 0.052434 0.906111 -vt 0.996827 0.555363 -vt 0.354112 0.501435 -vt 0.621388 0.351539 vt 0.084861 0.905509 vt 0.056455 0.897587 -vt 0.360430 0.560754 -vt 0.624083 0.299966 vt 0.082574 0.897890 vt 0.059586 0.889752 -vt 0.365385 0.614972 vt 0.083183 0.890974 -vt 0.623391 0.253481 -vt 0.369791 0.662381 vt 0.062372 0.882905 -vt 0.471110 0.831143 vt 0.082670 0.883136 -vt 0.624013 0.200651 vt 0.064609 0.874775 -vt 0.373410 0.718110 -vt 0.934021 0.646724 -vt 0.625330 0.143403 vt 0.081564 0.874653 vt 0.066147 0.867676 -vt 0.375946 0.766544 vt 0.080015 0.867285 -vt 0.627160 0.093605 -vt 0.065702 0.861437 -vt 0.375469 0.808152 vt 0.077857 0.860710 -vt 0.629700 0.049073 -vt 0.372640 0.827080 -vt 0.882784 0.973289 -vt 0.063762 0.858461 -vt 0.631341 0.006301 -vt 0.965556 0.543349 vt 0.076469 0.854382 -vt 0.054993 0.852062 -vt 0.882572 0.920890 -vt 0.502189 0.954105 +vt 0.065702 0.861437 vt 0.065845 0.845087 -vt 0.435967 0.838245 -vt 0.882784 0.864372 -vt 0.045615 0.846455 -vt 0.565802 0.947126 +vt 0.063762 0.858461 vt 0.055918 0.842513 -vt 0.041882 0.842583 -vt 0.434196 0.862717 +vt 0.054993 0.852062 vt 0.048659 0.839245 -vt 0.613281 0.939128 -vt 0.040634 0.839054 -vt 0.435967 0.885722 -vt 0.044556 0.837767 -vt 0.639862 0.935377 -vt 0.041603 0.836825 -vt 0.439846 0.900826 -vt 0.658907 0.932934 -vt 0.081958 0.847082 -vt 0.963851 0.494541 +vt 0.045615 0.846455 +vt 0.041882 0.842583 vt 0.074479 0.840455 -vt 0.451646 0.945813 +vt 0.081958 0.847082 vt 0.085125 0.840159 -vt 0.964629 0.448203 -vt 0.080191 0.836274 -vt 0.418993 0.937994 -vt 0.964842 0.422654 -vt 0.087056 0.836341 -vt 0.400551 0.934063 vt 0.083390 0.834147 -vt 0.965556 0.410896 -vt 0.087419 0.834586 -vt 0.375156 0.935628 +vt 0.087056 0.836341 vt 0.085458 0.833448 -vt 0.388162 0.932934 -vt 0.053072 0.962768 -vt 0.353316 0.121756 +vt 0.087419 0.834586 vt 0.083903 0.963052 -vt 0.622342 0.738821 +vt 0.051791 0.954523 +vt 0.053072 0.962768 vt 0.055058 0.969341 -vt 0.356102 0.078724 -vt 0.624220 0.786943 -vt 0.082278 0.970230 vt 0.058426 0.975209 -vt 0.360989 0.041164 -vt 0.626586 0.826377 -vt 0.827533 0.426351 -vt 0.080238 0.976124 -vt 0.827576 0.543349 +vt 0.082278 0.970230 vt 0.061730 0.978997 -vt 0.365846 0.017513 -vt 0.076334 0.979843 -vt 0.826493 0.452269 -vt 0.064618 0.981743 -vt 0.826493 0.526367 +vt 0.080238 0.976124 vt 0.071590 0.981955 -vt 0.826041 0.482807 -vt 0.885504 0.864373 -vt 0.038484 0.920435 -vt 0.901949 0.718982 +vt 0.064618 0.981743 vt 0.046679 0.909052 -vt 0.990716 0.589020 -vt 0.034184 0.914798 -vt 0.882784 0.900280 -vt 0.991519 0.631614 +vt 0.046587 0.924976 vt 0.039889 0.908653 -vt 0.032306 0.910051 -vt 0.883200 0.931219 +vt 0.038484 0.920435 vt 0.035541 0.907346 -vt 0.994213 0.659673 -vt 0.883312 0.949096 +vt 0.034184 0.914798 vt 0.031137 0.907303 -vt 0.885504 0.957616 vt 0.031995 0.906078 -vt 0.996827 0.682701 -vt 0.060312 0.880610 -vt 0.469432 0.845635 vt 0.061664 0.876911 -vt 0.933128 0.663956 -vt 0.468829 0.855653 -vt 0.059256 0.879045 -vt 0.471110 0.866632 -vt 0.934021 0.673637 vt 0.060049 0.877450 -vt 0.659918 0.508898 -vt 0.425249 0.899189 -vt 0.374973 0.408696 -vt 0.960971 0.724493 -vt 0.372884 0.486082 +vt 0.060312 0.880610 vt 0.971065 0.567078 -vt 0.964998 0.808390 -vt 0.668909 0.306138 -vt 0.995374 0.540892 -vt 0.660595 -0.000060 -vt 0.189257 0.845380 -vt 0.788478 0.145439 -vt 0.467713 0.842688 -vt 0.952941 0.078441 -vt 0.853639 0.886837 -vt 0.728672 0.031965 -vt 0.995501 0.432985 -vt 0.400129 0.967568 -vt 0.414665 0.966086 -vt 0.742101 0.025332 -vt 0.860914 0.470126 -vt 0.146307 0.004447 -vt 0.963197 0.597326 -vt 0.937325 0.790617 -vt 0.898403 0.881541 -vt 0.912973 0.747024 -vt 0.920492 0.667761 -vt 0.483257 0.858220 -vt 0.393098 0.556884 -vt 0.384261 0.686618 -vt 0.920572 0.649199 -vt 0.484351 0.838062 -vt 0.126138 0.817793 -vt 0.401226 0.826293 -vt 0.854464 0.980908 -vt 0.846410 0.173899 -vt 0.505948 0.982298 -vt 0.841745 0.084642 -vt 0.961933 0.035254 -vt 0.630940 0.965289 -vt 0.453973 0.891755 -vt 0.396072 0.063440 -vt 0.394831 0.062111 -vt 0.071096 0.021684 -vt 0.867019 0.796088 -vt 0.898384 0.948530 -vt 0.975438 0.659444 -vt 0.415398 0.443676 -vt 0.134329 0.755598 +vt 0.960971 0.724493 vt 0.423568 0.746327 +vt 0.375946 0.766544 +vt 0.975438 0.659444 vt 0.432486 0.831221 -vt 0.378985 0.319260 -vt 0.389800 0.142834 -vt 0.661532 0.816979 -vt 0.856128 0.426209 -vt 0.190873 0.034994 -vt 0.657475 0.667397 -vt 0.489700 0.552446 -vt 0.105711 0.541948 -vt 0.220383 0.706825 -vt 0.674371 0.137246 -vt 0.402646 0.003745 -vt 0.860094 0.526273 -vt 0.088711 0.002435 -vt 0.220442 0.378064 +vt 0.425249 0.899189 +vt 0.618829 0.671054 +vt 0.854464 0.980908 +vt 0.394831 0.062111 +vt 0.827533 0.426351 +vt 0.846410 0.173899 +vt 0.788478 0.145439 +vt 0.126138 0.817793 vt 0.753830 0.466720 -vt 0.896778 0.391773 -vt 0.951524 0.646724 -vt 0.490952 0.158111 -vt 0.064557 0.150736 -vt 0.757081 0.309561 -vt 0.202571 0.534959 -vt 0.484938 0.364658 -vt 0.042952 0.361542 -vt 0.215096 0.219436 -vt 0.753444 0.626844 -vt 0.349109 0.889925 -vt 0.897486 0.233218 -vt 0.758611 0.731126 -vt 0.180460 0.115857 -vt 0.124760 0.088981 -vt 0.174124 0.350301 vt 0.823831 0.890276 -vt 0.900260 0.622502 -vt 0.116942 0.194662 -vt 0.093203 0.375171 -vt 0.170289 0.250234 -vt 0.823829 0.978030 -vt 0.403002 0.883636 -vt 0.988781 0.256596 -vt 0.358223 0.841639 -vt 0.850332 0.233279 -vt 0.849664 0.389781 -vt 0.951524 0.600165 -vt 0.951800 0.288159 vt 0.403002 0.831143 -vt 0.768948 0.976605 -vt 0.942709 0.557990 -vt 0.985658 0.360507 -vt 0.799266 0.336212 -vt 0.741267 0.952410 -vt 0.977483 0.324616 -vt 0.802328 0.288593 -vt 0.745671 0.902251 -vt 0.918403 0.548140 -vt 0.976228 0.350736 +vt 0.896778 0.391773 +vt 0.375156 0.935628 +vt 0.422161 0.895489 +vt 0.934021 0.646724 +vt 0.896779 0.391742 +vt 0.951524 0.646724 +vt 0.080191 0.836274 +vt 0.076334 0.979843 +vt 0.032306 0.910051 +vt 0.059256 0.879045 +vt 0.964998 0.808390 s 0 -f 64/146/1 5/9/1 62/142/1 -f 99/225/2 3/7/2 55/126/2 -f 72/164/3 15/34/3 81/185/3 -f 66/151/4 5/9/4 64/146/4 -f 83/189/5 7/13/5 85/192/5 -f 70/159/6 13/26/6 68/155/6 -f 49/112/7 23/52/7 51/115/7 -f 85/192/8 7/13/8 87/198/8 -f 102/231/9 9/19/9 104/234/9 -f 88/200/10 24/53/10 47/107/10 -f 69/157/11 14/31/11 71/163/11 -f 89/202/12 29/61/12 91/205/12 -f 106/240/13 10/21/13 108/243/13 -f 58/132/14 11/22/14 56/128/14 -f 92/208/15 18/42/15 90/204/15 -f 91/205/16 29/61/16 93/209/16 -f 73/166/17 16/36/17 75/172/17 -f 96/218/18 30/66/18 94/212/18 -f 95/216/19 8/15/19 97/220/19 -f 77/176/20 17/41/20 79/180/20 -f 14/32/21 15/35/21 16/37/21 -f 2/2/22 20/47/22 3/5/22 -f 2/3/23 3/6/23 19/46/23 -f 11/22/24 4/8/24 26/55/24 -f 20/47/25 28/59/25 21/48/25 -f 5/9/26 13/26/26 27/57/26 -f 2/2/27 23/52/27 20/47/27 -f 4/8/28 27/57/28 26/55/28 -f 27/58/29 22/50/29 28/60/29 -f 5/9/30 27/57/30 4/8/30 -f 33/74/31 39/86/31 28/60/31 -f 34/75/32 40/88/32 35/80/32 -f 25/54/33 34/77/33 29/61/33 -f 46/104/34 44/98/34 42/93/34 -f 77/175/35 78/177/35 79/179/35 -f 78/178/36 126/287/36 79/181/36 -f 136/308/37 64/146/37 62/142/37 -f 125/284/38 72/164/38 81/185/38 -f 136/308/39 66/151/39 64/146/39 -f 99/225/40 119/270/40 101/228/40 -f 100/227/41 120/272/41 98/221/41 -f 82/187/42 116/264/42 84/190/42 -f 101/228/43 119/270/43 103/233/43 -f 117/266/44 83/189/44 85/192/44 -f 50/114/45 110/248/45 52/118/45 -f 105/236/46 128/293/46 104/234/46 -f 84/190/47 116/264/47 86/194/47 -f 114/257/48 70/159/48 68/155/48 -f 131/299/49 49/112/49 51/115/49 -f 117/266/50 85/192/50 87/198/50 -f 69/156/51 124/281/51 67/153/51 -f 128/293/52 102/231/52 104/234/52 -f 52/118/53 110/248/53 54/124/53 -f 132/300/54 88/200/54 47/107/54 -f 109/245/55 121/275/55 108/243/55 -f 72/164/56 125/284/56 74/169/56 -f 107/242/57 121/274/57 109/246/57 -f 133/301/58 89/202/58 91/205/58 -f 115/262/59 71/163/59 73/167/59 -f 121/275/60 106/240/60 108/243/60 -f 113/255/61 58/132/61 56/128/61 -f 127/289/62 92/208/62 90/204/62 -f 74/169/63 125/284/63 76/174/63 -f 133/301/64 91/205/64 93/209/64 -f 115/260/65 73/166/65 75/172/65 -f 113/255/66 60/137/66 58/132/66 -f 70/160/67 114/256/67 80/183/67 -f 137/310/68 96/218/68 94/212/68 -f 61/138/69 123/277/69 59/135/69 -f 118/268/70 95/216/70 97/220/70 -f 126/288/71 77/176/71 79/180/71 -f 115/261/72 126/286/72 125/285/72 -f 129/295/73 111/250/73 112/252/73 -f 128/292/74 119/271/74 120/273/74 -f 135/305/75 129/295/75 122/276/75 -f 130/296/76 114/258/76 136/307/76 -f 2/3/77 98/223/77 53/121/77 -f 130/296/78 136/307/78 135/306/78 -f 113/255/79 140/318/79 136/308/79 -f 147/333/80 141/321/80 135/306/80 -f 139/317/81 146/332/81 144/328/81 -f 148/334/82 142/322/82 143/327/82 -f 137/311/83 144/328/83 118/269/83 -f 142/323/84 134/304/84 133/301/84 -f 132/300/85 139/316/85 127/289/85 -f 138/312/86 145/329/86 140/319/86 -f 154/351/87 153/348/87 151/344/87 -f 151/342/88 153/349/88 149/337/88 -f 152/345/89 154/352/89 150/341/89 -f 78/178/90 79/181/90 17/40/90 -f 6/11/91 80/183/91 82/187/91 -f 49/112/92 24/53/92 23/52/92 -f 3/7/93 101/228/93 9/17/93 -f 7/13/94 81/185/94 15/34/94 -f 22/49/95 63/144/95 12/25/95 -f 25/54/96 50/114/96 1/1/96 -f 100/227/97 98/221/97 19/45/97 -f 5/9/98 68/155/98 13/26/98 -f 82/187/99 84/190/99 6/11/99 -f 67/153/100 22/49/100 14/30/100 -f 101/228/101 103/233/101 9/17/101 -f 9/19/102 100/227/102 19/45/102 -f 6/12/103 87/198/103 7/13/103 -f 23/51/104 53/122/104 51/117/104 -f 50/114/105 52/118/105 1/1/105 -f 105/236/106 104/234/106 9/19/106 -f 84/190/107 86/194/107 6/11/107 -f 103/233/108 105/238/108 9/17/108 -f 69/156/109 67/153/109 14/30/109 -f 52/118/110 54/124/110 1/1/110 -f 12/23/111 107/242/111 10/20/111 -f 89/202/112 25/54/112 29/61/112 -f 12/24/113 106/240/113 61/140/113 -f 54/124/114 11/22/114 1/1/114 -f 24/53/115 90/204/115 18/42/115 -f 109/245/116 108/243/116 10/21/116 -f 16/38/117 71/163/117 14/31/117 -f 72/164/118 74/169/118 15/34/118 -f 107/242/119 109/246/119 10/20/119 -f 21/48/120 55/127/120 3/5/120 -f 74/169/121 76/174/121 15/34/121 -f 11/22/122 60/137/122 4/8/122 -f 18/43/123 94/214/123 30/64/123 -f 17/40/124 76/174/124 78/178/124 -f 21/48/125 59/135/125 57/131/125 -f 95/216/126 29/62/126 8/15/126 -f 17/41/127 75/172/127 16/36/127 -f 30/66/128 97/220/128 8/15/128 -f 4/8/129 62/142/129 5/9/129 -f 70/160/130 80/183/130 13/27/130 -f 7/14/131 13/28/131 6/10/131 -f 61/138/132 59/135/132 12/25/132 -f 3/5/133 20/47/133 21/48/133 -f 14/32/134 13/28/134 15/35/134 -f 16/37/135 15/35/135 17/39/135 -f 13/29/136 22/50/136 27/58/136 -f 19/46/137 3/6/137 9/18/137 -f 36/81/138 29/63/138 35/80/138 -f 12/25/139 21/48/139 22/49/139 -f 34/77/140 1/1/140 31/68/140 -f 31/68/141 11/22/141 26/55/141 -f 21/48/142 28/59/142 22/49/142 -f 23/52/143 33/73/143 20/47/143 -f 32/71/144 36/81/144 38/85/144 -f 26/56/145 27/58/145 28/60/145 -f 36/81/146 18/44/146 30/65/146 -f 30/65/147 8/16/147 36/81/147 -f 32/72/148 23/52/148 24/53/148 -f 20/47/149 33/73/149 28/59/149 -f 39/86/150 40/88/150 37/82/150 -f 24/53/151 18/42/151 32/72/151 -f 29/61/152 34/77/152 35/79/152 -f 26/56/153 39/86/153 37/82/153 -f 43/96/154 37/83/154 40/87/154 -f 41/91/155 40/89/155 34/76/155 -f 38/85/156 35/80/156 40/88/156 -f 38/85/157 33/74/157 32/71/157 -f 31/67/158 26/56/158 37/82/158 -f 34/78/159 42/94/159 41/92/159 -f 46/106/160 43/96/160 45/101/160 -f 43/95/161 41/90/161 45/103/161 -f 42/93/162 37/84/162 46/104/162 -f 41/92/163 44/100/163 45/102/163 -f 49/111/35 48/109/35 50/113/35 -f 44/99/164 46/105/164 45/103/164 -f 52/119/35 49/111/35 50/113/35 -f 54/123/35 51/116/35 52/119/35 -f 55/125/35 54/123/35 56/129/35 -f 57/130/35 56/129/35 58/133/35 -f 59/134/35 58/133/35 60/136/35 -f 61/139/35 60/136/35 62/141/35 -f 63/143/35 62/141/35 64/147/35 -f 65/148/35 64/147/35 66/150/35 -f 68/154/35 65/148/35 66/150/35 -f 70/161/35 67/152/35 68/154/35 -f 72/165/35 69/158/35 70/161/35 -f 74/170/35 71/162/35 72/165/35 -f 76/173/35 73/168/35 74/170/35 -f 78/177/35 75/171/35 76/173/35 -f 81/184/35 70/161/35 80/182/35 -f 82/186/35 81/184/35 80/182/35 -f 85/193/35 82/186/35 84/191/35 -f 87/197/35 84/191/35 86/195/35 -f 89/201/35 47/108/35 88/199/35 -f 90/203/35 89/201/35 88/199/35 -f 92/207/35 91/206/35 90/203/35 -f 94/213/35 93/211/35 92/207/35 -f 97/219/35 94/213/35 96/217/35 -f 99/224/35 53/120/35 55/125/35 -f 101/229/35 98/222/35 99/224/35 -f 103/232/35 100/226/35 101/229/35 -f 104/235/35 103/232/35 105/237/35 -f 107/241/35 61/139/35 63/143/35 -f 109/247/35 106/239/35 107/241/35 -f 99/225/165 112/253/165 119/270/165 -f 111/251/166 98/223/166 120/273/166 -f 116/264/167 80/183/167 114/256/167 -f 49/112/168 132/300/168 47/107/168 -f 81/185/169 117/266/169 125/284/169 -f 63/144/170 130/297/170 123/277/170 -f 50/114/171 134/304/171 110/248/171 -f 68/155/172 136/308/172 114/257/172 -f 67/153/173 130/297/173 65/149/173 -f 100/227/174 128/293/174 120/272/174 -f 87/198/175 116/265/175 117/266/175 -f 128/294/176 103/233/176 119/270/176 -f 131/298/177 53/122/177 111/249/177 -f 107/242/178 123/278/178 121/274/178 -f 89/202/179 134/304/179 48/110/179 -f 71/163/180 124/282/180 69/157/180 -f 123/279/181 106/240/181 121/275/181 -f 54/124/182 113/255/182 56/128/182 -f 90/204/183 132/300/183 127/289/183 -f 55/127/184 122/276/184 112/252/184 -f 94/214/185 127/290/185 137/309/185 -f 126/287/186 76/174/186 125/284/186 -f 122/276/187 59/135/187 123/277/187 -f 95/216/188 133/302/188 93/210/188 -f 75/172/189 126/288/189 115/260/189 -f 97/220/190 137/310/190 118/268/190 -f 62/142/191 113/255/191 136/308/191 -f 125/285/192 124/283/192 115/261/192 -f 122/276/193 129/295/193 112/252/193 -f 114/259/194 117/267/194 116/263/194 -f 119/271/195 111/251/195 120/273/195 -f 133/303/196 144/328/196 143/327/196 -f 130/296/197 124/280/197 114/258/197 -f 130/297/198 122/276/198 123/277/198 -f 111/250/199 129/295/199 131/299/199 -f 110/248/200 142/323/200 138/313/200 -f 113/255/201 138/313/201 140/318/201 -f 130/297/202 135/305/202 122/276/202 -f 129/295/203 141/320/203 131/299/203 -f 135/306/204 136/307/204 140/319/204 -f 144/328/205 127/291/205 139/317/205 -f 139/316/206 131/299/206 141/320/206 -f 135/305/207 141/320/207 129/295/207 -f 148/334/208 147/333/208 145/329/208 -f 143/326/209 142/323/209 133/301/209 -f 140/319/210 147/333/210 135/306/210 -f 151/344/211 145/330/211 154/351/211 -f 149/338/212 148/336/212 151/343/212 -f 143/327/213 146/332/213 148/334/213 -f 146/332/214 141/321/214 147/333/214 -f 138/314/215 149/339/215 150/340/215 -f 145/331/216 150/341/216 154/352/216 -f 149/339/217 152/347/217 150/340/217 -f 153/349/218 154/353/218 152/346/218 -f 2/3/219 19/46/219 98/223/219 -f 6/11/220 13/27/220 80/183/220 -f 49/112/221 47/107/221 24/53/221 -f 3/7/222 99/225/222 101/228/222 -f 7/13/223 83/189/223 81/185/223 -f 22/49/224 65/149/224 63/144/224 -f 25/54/225 48/110/225 50/114/225 -f 5/9/226 66/151/226 68/155/226 -f 67/153/227 65/149/227 22/49/227 -f 9/19/228 102/231/228 100/227/228 -f 6/12/229 86/196/229 87/198/229 -f 23/51/230 2/4/230 53/122/230 -f 12/23/231 63/145/231 107/242/231 -f 89/202/232 48/110/232 25/54/232 -f 12/24/233 10/21/233 106/240/233 -f 54/124/234 56/128/234 11/22/234 -f 24/53/235 88/200/235 90/204/235 -f 16/38/236 73/167/236 71/163/236 -f 21/48/237 57/131/237 55/127/237 -f 11/22/238 58/132/238 60/137/238 -f 18/43/239 92/208/239 94/214/239 -f 17/40/240 15/34/240 76/174/240 -f 21/48/241 12/25/241 59/135/241 -f 95/216/242 93/210/242 29/62/242 -f 17/41/243 77/176/243 75/172/243 -f 30/66/244 96/218/244 97/220/244 -f 4/8/245 60/137/245 62/142/245 -f 7/14/246 15/35/246 13/28/246 -f 13/29/247 14/33/247 22/50/247 -f 36/81/248 8/16/248 29/63/248 -f 34/77/249 25/54/249 1/1/249 -f 31/68/250 1/1/250 11/22/250 -f 36/81/251 32/71/251 18/44/251 -f 32/72/252 33/73/252 23/52/252 -f 39/86/253 38/85/253 40/88/253 -f 26/56/254 28/60/254 39/86/254 -f 43/96/255 46/106/255 37/83/255 -f 41/91/256 43/97/256 40/89/256 -f 38/85/257 36/81/257 35/80/257 -f 38/85/258 39/86/258 33/74/258 -f 34/78/259 31/69/259 42/94/259 -f 42/93/260 31/70/260 37/84/260 -f 41/92/261 42/94/261 44/100/261 -f 49/111/35 47/108/35 48/109/35 -f 52/119/35 51/116/35 49/111/35 -f 54/123/35 53/120/35 51/116/35 -f 55/125/35 53/120/35 54/123/35 -f 57/130/35 55/125/35 56/129/35 -f 59/134/35 57/130/35 58/133/35 -f 61/139/35 59/134/35 60/136/35 -f 63/143/35 61/139/35 62/141/35 -f 65/148/35 63/143/35 64/147/35 -f 68/154/35 67/152/35 65/148/35 -f 70/161/35 69/158/35 67/152/35 -f 72/165/35 71/162/35 69/158/35 -f 74/170/35 73/168/35 71/162/35 -f 76/173/35 75/171/35 73/168/35 -f 78/177/35 77/175/35 75/171/35 -f 81/184/35 72/165/35 70/161/35 -f 82/186/35 83/188/35 81/184/35 -f 85/193/35 83/188/35 82/186/35 -f 87/197/35 85/193/35 84/191/35 -f 89/201/35 48/109/35 47/108/35 -f 90/203/35 91/206/35 89/201/35 -f 92/207/35 93/211/35 91/206/35 -f 94/213/35 95/215/35 93/211/35 -f 97/219/35 95/215/35 94/213/35 -f 99/224/35 98/222/35 53/120/35 -f 101/229/35 100/226/35 98/222/35 -f 103/232/35 102/230/35 100/226/35 -f 104/235/35 102/230/35 103/232/35 -f 107/241/35 106/239/35 61/139/35 -f 109/247/35 108/244/35 106/239/35 -f 99/225/262 55/126/262 112/253/262 -f 111/251/263 53/121/263 98/223/263 -f 116/264/264 82/187/264 80/183/264 -f 49/112/265 131/299/265 132/300/265 -f 81/185/266 83/189/266 117/266/266 -f 63/144/267 65/149/267 130/297/267 -f 50/114/268 48/110/268 134/304/268 -f 68/155/269 66/151/269 136/308/269 -f 67/153/270 124/281/270 130/297/270 -f 100/227/271 102/231/271 128/293/271 -f 87/198/272 86/196/272 116/265/272 -f 128/294/273 105/238/273 103/233/273 -f 131/298/274 51/117/274 53/122/274 -f 107/242/275 63/145/275 123/278/275 -f 89/202/276 133/301/276 134/304/276 -f 71/163/277 115/262/277 124/282/277 -f 123/279/278 61/140/278 106/240/278 -f 54/124/279 110/248/279 113/255/279 -f 90/204/280 88/200/280 132/300/280 -f 55/127/281 57/131/281 122/276/281 -f 94/214/282 92/208/282 127/290/282 -f 126/287/283 78/178/283 76/174/283 -f 122/276/284 57/131/284 59/135/284 -f 95/216/285 118/268/285 133/302/285 -f 75/172/286 77/176/286 126/288/286 -f 97/220/287 96/218/287 137/310/287 -f 62/142/288 60/137/288 113/255/288 -f 125/285/289 114/259/289 124/283/289 -f 114/259/290 125/285/290 117/267/290 -f 119/271/291 112/254/291 111/251/291 -f 133/303/292 118/269/292 144/328/292 -f 110/248/293 134/304/293 142/323/293 -f 113/255/294 110/248/294 138/313/294 -f 144/328/295 137/311/295 127/291/295 -f 139/316/296 132/300/296 131/299/296 -f 148/334/297 146/332/297 147/333/297 -f 140/319/298 145/329/298 147/333/298 -f 151/344/299 148/335/299 145/330/299 -f 149/338/300 142/324/300 148/336/300 -f 143/327/301 144/328/301 146/332/301 -f 146/332/302 139/317/302 141/321/302 -f 138/314/303 142/325/303 149/339/303 -f 145/331/304 138/315/304 150/341/304 -f 149/339/305 153/350/305 152/347/305 +f 64/1/1 5/2/1 62/3/1 +f 99/4/2 3/5/2 55/6/2 +f 72/7/3 15/8/3 81/9/3 +f 66/10/4 5/2/4 64/1/4 +f 83/11/5 7/12/5 85/13/5 +f 70/14/6 13/15/6 68/16/6 +f 49/17/7 23/18/7 51/19/7 +f 85/13/8 7/12/8 87/20/8 +f 102/21/9 9/22/9 104/23/9 +f 88/24/10 24/25/10 47/26/10 +f 69/27/11 14/28/11 71/29/11 +f 89/30/12 29/31/12 91/32/12 +f 106/33/13 10/34/13 108/35/13 +f 58/36/14 11/37/14 56/38/14 +f 92/39/15 18/40/15 90/41/15 +f 91/32/16 29/31/16 93/42/16 +f 73/43/17 16/44/17 75/45/17 +f 96/46/18 30/47/18 94/48/18 +f 95/49/19 8/50/19 97/51/19 +f 77/52/20 17/53/20 79/54/20 +f 14/55/21 15/56/21 16/57/21 +f 2/58/22 20/59/22 3/60/22 +f 2/61/23 3/62/23 19/63/23 +f 11/37/24 4/64/24 26/65/24 +f 20/59/25 28/66/25 21/67/25 +f 5/2/26 13/15/26 27/68/26 +f 2/58/27 23/18/27 20/59/27 +f 4/64/28 27/68/28 26/65/28 +f 27/69/29 22/70/29 28/71/29 +f 5/2/30 27/68/30 4/64/30 +f 33/72/31 39/73/31 28/71/31 +f 34/74/32 40/75/32 35/76/32 +f 25/77/33 34/78/33 29/31/33 +f 46/79/34 44/80/34 42/81/34 +f 77/82/35 78/83/35 79/84/35 +f 78/85/36 126/86/36 79/87/36 +f 136/88/37 64/1/37 62/3/37 +f 125/8/38 72/7/38 81/9/38 +f 136/88/39 66/10/39 64/1/39 +f 99/4/40 119/89/40 101/90/40 +f 100/91/41 120/92/41 98/93/41 +f 82/94/42 116/95/42 84/96/42 +f 101/90/43 119/89/43 103/97/43 +f 117/98/44 83/11/44 85/13/44 +f 50/99/45 110/100/45 52/101/45 +f 105/102/46 128/103/46 104/23/46 +f 84/96/47 116/95/47 86/104/47 +f 114/105/48 70/14/48 68/16/48 +f 131/106/49 49/17/49 51/19/49 +f 117/98/50 85/13/50 87/20/50 +f 69/107/51 124/108/51 67/109/51 +f 128/103/52 102/21/52 104/23/52 +f 52/101/53 110/100/53 54/110/53 +f 132/25/54 88/24/54 47/26/54 +f 109/111/55 121/34/55 108/35/55 +f 72/7/56 125/8/56 74/112/56 +f 107/113/57 121/114/57 109/115/57 +f 133/31/58 89/30/58 91/32/58 +f 115/116/59 71/29/59 73/117/59 +f 121/34/60 106/33/60 108/35/60 +f 113/118/61 58/36/61 56/38/61 +f 127/40/62 92/39/62 90/41/62 +f 74/112/63 125/8/63 76/119/63 +f 133/31/64 91/32/64 93/42/64 +f 115/44/65 73/43/65 75/45/65 +f 113/118/66 60/120/66 58/36/66 +f 70/121/67 114/122/67 80/123/67 +f 137/47/68 96/46/68 94/48/68 +f 61/124/69 123/125/69 59/126/69 +f 118/127/70 95/49/70 97/51/70 +f 126/53/71 77/52/71 79/54/71 +f 115/128/72 126/129/72 125/56/72 +f 129/59/73 111/58/73 112/60/73 +f 128/130/74 119/131/74 120/63/74 +f 135/132/75 129/59/75 122/133/75 +f 130/134/76 114/135/76 136/136/76 +f 2/61/77 98/137/77 53/138/77 +f 130/134/78 136/136/78 135/139/78 +f 113/118/79 140/140/79 136/88/79 +f 147/141/80 141/72/80 135/139/80 +f 139/142/81 146/143/81 144/144/81 +f 148/145/82 142/146/82 143/76/82 +f 137/147/83 144/144/83 118/148/83 +f 142/149/84 134/77/84 133/31/84 +f 132/25/85 139/150/85 127/40/85 +f 138/151/86 145/152/86 140/153/86 +f 154/154/87 153/155/87 151/156/87 +f 151/157/88 153/158/88 149/159/88 +f 152/80/89 154/79/89 150/81/89 +f 78/85/90 79/87/90 17/86/90 +f 6/95/91 80/123/91 82/94/91 +f 49/17/92 24/25/92 23/18/92 +f 3/5/93 101/90/93 9/160/93 +f 7/12/94 81/9/94 15/8/94 +f 22/161/95 63/162/95 12/163/95 +f 25/77/96 50/99/96 1/100/96 +f 100/91/97 98/93/97 19/92/97 +f 5/2/98 68/16/98 13/15/98 +f 82/94/99 84/96/99 6/95/99 +f 67/109/100 22/161/100 14/164/100 +f 101/90/101 103/97/101 9/160/101 +f 9/22/102 100/91/102 19/92/102 +f 6/165/103 87/20/103 7/12/103 +f 23/166/104 53/167/104 51/168/104 +f 50/99/105 52/101/105 1/100/105 +f 105/102/106 104/23/106 9/22/106 +f 84/96/107 86/104/107 6/95/107 +f 103/97/108 105/169/108 9/160/108 +f 69/107/109 67/109/109 14/164/109 +f 52/101/110 54/110/110 1/100/110 +f 12/170/111 107/113/111 10/114/111 +f 89/30/112 25/77/112 29/31/112 +f 12/171/113 106/33/113 61/172/113 +f 54/110/114 11/37/114 1/100/114 +f 24/25/115 90/41/115 18/40/115 +f 109/111/116 108/35/116 10/34/116 +f 16/173/117 71/29/117 14/28/117 +f 72/7/118 74/112/118 15/8/118 +f 107/113/119 109/115/119 10/114/119 +f 21/67/120 55/174/120 3/60/120 +f 74/112/121 76/119/121 15/8/121 +f 11/37/122 60/120/122 4/64/122 +f 18/175/123 94/176/123 30/177/123 +f 17/86/124 76/119/124 78/85/124 +f 21/67/125 59/126/125 57/178/125 +f 95/49/126 29/179/126 8/50/126 +f 17/53/127 75/45/127 16/44/127 +f 30/47/128 97/51/128 8/50/128 +f 4/64/129 62/3/129 5/2/129 +f 70/121/130 80/123/130 13/180/130 +f 7/181/131 13/182/131 6/183/131 +f 61/124/132 59/126/132 12/163/132 +f 3/60/133 20/59/133 21/67/133 +f 14/55/134 13/182/134 15/56/134 +f 16/57/135 15/56/135 17/129/135 +f 13/184/136 22/70/136 27/69/136 +f 19/63/137 3/62/137 9/185/137 +f 36/144/138 29/186/138 35/76/138 +f 12/163/139 21/67/139 22/161/139 +f 34/78/140 1/100/140 31/187/140 +f 31/187/141 11/37/141 26/65/141 +f 21/67/142 28/66/142 22/161/142 +f 23/18/143 33/188/143 20/59/143 +f 32/142/144 36/144/144 38/143/144 +f 26/189/145 27/69/145 28/71/145 +f 36/144/146 18/190/146 30/147/146 +f 30/147/147 8/148/147 36/144/147 +f 32/150/148 23/18/148 24/25/148 +f 20/59/149 33/188/149 28/66/149 +f 39/73/150 40/75/150 37/191/150 +f 24/25/151 18/40/151 32/150/151 +f 29/31/152 34/78/152 35/192/152 +f 26/189/153 39/73/153 37/191/153 +f 43/156/154 37/193/154 40/194/154 +f 41/195/155 40/196/155 34/197/155 +f 38/143/156 35/76/156 40/75/156 +f 38/143/157 33/72/157 32/142/157 +f 31/151/158 26/189/158 37/191/158 +f 34/198/159 42/199/159 41/200/159 +f 46/154/160 43/156/160 45/155/160 +f 43/157/161 41/159/161 45/158/161 +f 42/81/162 37/201/162 46/79/162 +f 41/200/163 44/202/163 45/203/163 +f 49/204/35 48/205/35 50/206/35 +f 44/207/164 46/208/164 45/158/164 +f 52/209/35 49/204/35 50/206/35 +f 54/210/35 51/211/35 52/209/35 +f 55/212/35 54/210/35 56/213/35 +f 57/214/35 56/213/35 58/215/35 +f 59/216/35 58/215/35 60/217/35 +f 61/218/35 60/217/35 62/219/35 +f 63/220/35 62/219/35 64/221/35 +f 65/222/35 64/221/35 66/223/35 +f 68/224/35 65/222/35 66/223/35 +f 70/225/35 67/226/35 68/224/35 +f 72/227/35 69/228/35 70/225/35 +f 74/229/35 71/230/35 72/227/35 +f 76/231/35 73/232/35 74/229/35 +f 78/83/35 75/233/35 76/231/35 +f 81/234/35 70/225/35 80/235/35 +f 82/236/35 81/234/35 80/235/35 +f 85/237/35 82/236/35 84/238/35 +f 87/239/35 84/238/35 86/240/35 +f 89/241/35 47/242/35 88/243/35 +f 90/244/35 89/241/35 88/243/35 +f 92/245/35 91/246/35 90/244/35 +f 94/247/35 93/248/35 92/245/35 +f 97/249/35 94/247/35 96/250/35 +f 99/251/35 53/252/35 55/212/35 +f 101/253/35 98/254/35 99/251/35 +f 103/255/35 100/256/35 101/253/35 +f 104/257/35 103/255/35 105/258/35 +f 107/259/35 61/218/35 63/220/35 +f 109/260/35 106/261/35 107/259/35 +f 99/4/165 112/262/165 119/89/165 +f 111/263/166 98/137/166 120/63/166 +f 116/95/167 80/123/167 114/122/167 +f 49/17/168 132/25/168 47/26/168 +f 81/9/169 117/98/169 125/8/169 +f 63/162/170 130/264/170 123/125/170 +f 50/99/171 134/77/171 110/100/171 +f 68/16/172 136/88/172 114/105/172 +f 67/109/173 130/264/173 65/265/173 +f 100/91/174 128/103/174 120/92/174 +f 87/20/175 116/165/175 117/98/175 +f 128/266/176 103/97/176 119/89/176 +f 131/267/177 53/167/177 111/268/177 +f 107/113/178 123/170/178 121/114/178 +f 89/30/179 134/77/179 48/269/179 +f 71/29/180 124/270/180 69/27/180 +f 123/171/181 106/33/181 121/34/181 +f 54/110/182 113/118/182 56/38/182 +f 90/41/183 132/25/183 127/40/183 +f 55/174/184 122/133/184 112/60/184 +f 94/176/185 127/271/185 137/177/185 +f 126/86/186 76/119/186 125/8/186 +f 122/133/187 59/126/187 123/125/187 +f 95/49/188 133/179/188 93/272/188 +f 75/45/189 126/53/189 115/44/189 +f 97/51/190 137/47/190 118/127/190 +f 62/3/191 113/118/191 136/88/191 +f 125/56/192 124/273/192 115/128/192 +f 122/133/193 129/59/193 112/60/193 +f 114/274/194 117/181/194 116/183/194 +f 119/131/195 111/263/195 120/63/195 +f 133/186/196 144/144/196 143/76/196 +f 130/134/197 124/275/197 114/135/197 +f 130/264/198 122/133/198 123/125/198 +f 111/58/199 129/59/199 131/106/199 +f 110/100/200 142/149/200 138/276/200 +f 113/118/201 138/276/201 140/140/201 +f 130/264/202 135/132/202 122/133/202 +f 129/59/203 141/188/203 131/106/203 +f 135/139/204 136/136/204 140/153/204 +f 144/144/205 127/190/205 139/142/205 +f 139/150/206 131/106/206 141/188/206 +f 135/132/207 141/188/207 129/59/207 +f 148/145/208 147/141/208 145/152/208 +f 143/192/209 142/149/209 133/31/209 +f 140/153/210 147/141/210 135/139/210 +f 151/156/211 145/277/211 154/154/211 +f 149/195/212 148/196/212 151/278/212 +f 143/76/213 146/143/213 148/145/213 +f 146/143/214 141/72/214 147/141/214 +f 138/279/215 149/200/215 150/199/215 +f 145/201/216 150/81/216 154/79/216 +f 149/200/217 152/202/217 150/199/217 +f 153/158/218 154/208/218 152/207/218 +f 2/61/219 19/63/219 98/137/219 +f 6/95/220 13/180/220 80/123/220 +f 49/17/221 47/26/221 24/25/221 +f 3/5/222 99/4/222 101/90/222 +f 7/12/223 83/11/223 81/9/223 +f 22/161/224 65/265/224 63/162/224 +f 25/77/225 48/269/225 50/99/225 +f 5/2/226 66/10/226 68/16/226 +f 67/109/227 65/265/227 22/161/227 +f 9/22/228 102/21/228 100/91/228 +f 6/165/229 86/280/229 87/20/229 +f 23/166/230 2/281/230 53/167/230 +f 12/170/231 63/282/231 107/113/231 +f 89/30/232 48/269/232 25/77/232 +f 12/171/233 10/34/233 106/33/233 +f 54/110/234 56/38/234 11/37/234 +f 24/25/235 88/24/235 90/41/235 +f 16/173/236 73/117/236 71/29/236 +f 21/67/237 57/178/237 55/174/237 +f 11/37/238 58/36/238 60/120/238 +f 18/175/239 92/39/239 94/176/239 +f 17/86/240 15/8/240 76/119/240 +f 21/67/241 12/163/241 59/126/241 +f 95/49/242 93/272/242 29/179/242 +f 17/53/243 77/52/243 75/45/243 +f 30/47/244 96/46/244 97/51/244 +f 4/64/245 60/120/245 62/3/245 +f 7/181/246 15/56/246 13/182/246 +f 13/184/247 14/275/247 22/70/247 +f 36/144/248 8/148/248 29/186/248 +f 34/78/249 25/77/249 1/100/249 +f 31/187/250 1/100/250 11/37/250 +f 36/144/251 32/142/251 18/190/251 +f 32/150/143 33/188/143 23/18/143 +f 39/73/252 38/143/252 40/75/252 +f 26/189/253 28/71/253 39/73/253 +f 43/156/254 46/154/254 37/193/254 +f 41/195/255 43/278/255 40/196/255 +f 38/143/256 36/144/256 35/76/256 +f 38/143/257 39/73/257 33/72/257 +f 34/198/258 31/283/258 42/199/258 +f 42/81/259 31/284/259 37/201/259 +f 41/200/260 42/199/260 44/202/260 +f 49/204/35 47/242/35 48/205/35 +f 52/209/35 51/211/35 49/204/35 +f 54/210/35 53/252/35 51/211/35 +f 55/212/35 53/252/35 54/210/35 +f 57/214/35 55/212/35 56/213/35 +f 59/216/35 57/214/35 58/215/35 +f 61/218/35 59/216/35 60/217/35 +f 63/220/35 61/218/35 62/219/35 +f 65/222/35 63/220/35 64/221/35 +f 68/224/35 67/226/35 65/222/35 +f 70/225/35 69/228/35 67/226/35 +f 72/227/35 71/230/35 69/228/35 +f 74/229/35 73/232/35 71/230/35 +f 76/231/35 75/233/35 73/232/35 +f 78/83/35 77/82/35 75/233/35 +f 81/234/35 72/227/35 70/225/35 +f 82/236/35 83/285/35 81/234/35 +f 85/237/35 83/285/35 82/236/35 +f 87/239/35 85/237/35 84/238/35 +f 89/241/35 48/205/35 47/242/35 +f 90/244/35 91/246/35 89/241/35 +f 92/245/35 93/248/35 91/246/35 +f 94/247/35 95/286/35 93/248/35 +f 97/249/35 95/286/35 94/247/35 +f 99/251/35 98/254/35 53/252/35 +f 101/253/35 100/256/35 98/254/35 +f 103/255/261 102/287/261 100/256/261 +f 104/257/35 102/287/35 103/255/35 +f 107/259/35 106/261/35 61/218/35 +f 109/260/261 108/288/261 106/261/261 +f 99/4/262 55/6/262 112/262/262 +f 111/263/263 53/138/263 98/137/263 +f 116/95/264 82/94/264 80/123/264 +f 49/17/265 131/106/265 132/25/265 +f 81/9/266 83/11/266 117/98/266 +f 63/162/267 65/265/267 130/264/267 +f 50/99/268 48/269/268 134/77/268 +f 68/16/269 66/10/269 136/88/269 +f 67/109/270 124/108/270 130/264/270 +f 100/91/271 102/21/271 128/103/271 +f 87/20/272 86/280/272 116/165/272 +f 128/266/273 105/169/273 103/97/273 +f 131/267/274 51/168/274 53/167/274 +f 107/113/275 63/282/275 123/170/275 +f 89/30/276 133/31/276 134/77/276 +f 71/29/277 115/116/277 124/270/277 +f 123/171/278 61/172/278 106/33/278 +f 54/110/279 110/100/279 113/118/279 +f 90/41/280 88/24/280 132/25/280 +f 55/174/281 57/178/281 122/133/281 +f 94/176/282 92/39/282 127/271/282 +f 126/86/283 78/85/283 76/119/283 +f 122/133/284 57/178/284 59/126/284 +f 95/49/285 118/127/285 133/179/285 +f 75/45/286 77/52/286 126/53/286 +f 97/51/287 96/46/287 137/47/287 +f 62/3/288 60/120/288 113/118/288 +f 125/56/289 114/274/289 124/273/289 +f 114/274/290 125/56/290 117/181/290 +f 119/131/291 112/289/291 111/263/291 +f 133/186/292 118/148/292 144/144/292 +f 110/100/293 134/77/293 142/149/293 +f 113/118/294 110/100/294 138/276/294 +f 144/144/295 137/147/295 127/190/295 +f 139/150/296 132/25/296 131/106/296 +f 148/145/297 146/143/297 147/141/297 +f 140/153/298 145/152/298 147/141/298 +f 151/156/299 148/194/299 145/277/299 +f 149/195/300 142/197/300 148/196/300 +f 143/76/301 144/144/301 146/143/301 +f 146/143/302 139/142/302 141/72/302 +f 138/279/303 142/198/303 149/200/303 +f 145/201/304 138/284/304 150/81/304 +f 149/200/305 153/203/305 152/202/305 diff --git a/title/shark/src/main.rs b/title/shark/src/main.rs index afad8b2..d261895 100644 --- a/title/shark/src/main.rs +++ b/title/shark/src/main.rs @@ -14,16 +14,198 @@ use narcissus_gpu::{ ImageTiling, ImageUsageFlags, LoadOp, MemoryLocation, Offset2d, Offset3d, RenderingAttachment, RenderingDesc, Scissor, StoreOp, ThreadToken, Viewport, }; -use narcissus_maths::{sin_cos_pi_f32, vec3, Affine3, HalfTurn, Mat3, Mat4, Point3, Vec3}; +use narcissus_maths::{ + sin_cos_pi_f32, tan_pi_f32, vec3, Affine3, Deg, HalfTurn, Mat3, Mat4, Point3, Vec3, +}; use pipelines::{BasicUniforms, PrimitiveInstance, PrimitiveVertex, TextUniforms}; mod fonts; mod helpers; mod pipelines; +const SQRT_2: f32 = 0.70710677; + const NUM_SHARKS: usize = 50; const GLYPH_CACHE_SIZE: usize = 1024; +struct GameVariables { + game_speed: f32, + player_speed: f32, + camera_height: f32, + camera_angle: Deg, +} + +const GAME_VARIABLES: GameVariables = GameVariables { + game_speed: 1.0, + player_speed: 15.0, + camera_height: 35.0, + camera_angle: Deg::new(60.0), +}; + +#[derive(Clone, Copy, Debug)] +pub enum Action { + Left, + Right, + Up, + Down, +} + +pub struct ActionEvent { + action: Action, + value: f32, +} + +pub struct Actions { + old_values: [f32; Self::MAX_ACTIONS], + new_values: [f32; Self::MAX_ACTIONS], +} + +impl Actions { + const MAX_ACTIONS: usize = 256; + + fn new() -> Self { + Self { + old_values: [0.0; Self::MAX_ACTIONS], + new_values: [0.0; Self::MAX_ACTIONS], + } + } + + fn is_active(&self, action: Action) -> bool { + self.new_values[action as usize] != 0.0 + } + + pub fn became_active_this_frame(&self, action: Action) -> bool { + self.new_values[action as usize] != 0.0 && self.old_values[action as usize] == 0.0 + } + + pub fn became_inactive_this_frame(&self, action: Action) -> bool { + self.new_values[action as usize] == 0.0 && self.old_values[action as usize] != 0.0 + } + + pub fn tick(&mut self, action_queue: &[ActionEvent]) { + self.old_values = self.new_values; + + for event in action_queue { + self.new_values[event.action as usize] = event.value; + } + } +} + +struct PlayerState { + position: Point3, + heading: Vec3, +} + +impl PlayerState { + fn new() -> Self { + Self { + position: Point3::ZERO, + heading: Vec3::new(SQRT_2, 0.0, -SQRT_2), + } + } +} + +struct CameraState { + offset: Vec3, + target: Point3, +} + +impl CameraState { + fn new() -> Self { + let offset = GAME_VARIABLES.camera_height + / tan_pi_f32(HalfTurn::from(GAME_VARIABLES.camera_angle).as_f32()); + let offset = offset * (1.0 / 2.0_f32.sqrt()); + Self { + offset: Vec3::new(-offset, GAME_VARIABLES.camera_height, -offset), + target: Point3::ZERO, + } + } + + fn camera_from_model(&self) -> Mat4 { + let eye = self.target + self.offset; + Mat4::look_at(eye, self.target, Vec3::Y) + } +} + +struct GameState { + actions: Actions, + camera: CameraState, + player: PlayerState, +} + +impl GameState { + fn new() -> Self { + Self { + actions: Actions::new(), + camera: CameraState::new(), + player: PlayerState::new(), + } + } + + fn tick(&mut self, dt: f32, action_queue: &[ActionEvent]) { + self.actions.tick(action_queue); + + let dt = dt * GAME_VARIABLES.game_speed; + + let movement_bitmap = self.actions.is_active(Action::Up) as usize + | (self.actions.is_active(Action::Down) as usize) << 1 + | (self.actions.is_active(Action::Left) as usize) << 2 + | (self.actions.is_active(Action::Right) as usize) << 3; + + const UP: Vec3 = Vec3::new(SQRT_2, 0.0, SQRT_2); + const DOWN: Vec3 = Vec3::new(-SQRT_2, 0.0, -SQRT_2); + const LEFT: Vec3 = Vec3::new(SQRT_2, 0.0, -SQRT_2); + const RIGHT: Vec3 = Vec3::new(-SQRT_2, 0.0, SQRT_2); + const UP_LEFT: Vec3 = Vec3::new(1.0, 0.0, 0.0); + const UP_RIGHT: Vec3 = Vec3::new(0.0, 0.0, 1.0); + const DOWN_LEFT: Vec3 = Vec3::new(0.0, 0.0, -1.0); + const DOWN_RIGHT: Vec3 = Vec3::new(-1.0, 0.0, 0.0); + + let movement = [ + // 0 0 0 0 + Vec3::ZERO, + // 0 0 0 1 + UP, + // 0 0 1 0 + DOWN, + // 0 0 1 1 + Vec3::ZERO, + // 0 1 0 0 + LEFT, + // 0 1 0 1 + UP_LEFT, + // 0 1 1 0 + DOWN_LEFT, + // 0 1 1 1 + LEFT, + // 1 0 0 0 + RIGHT, + // 1 0 0 1 + UP_RIGHT, + // 1 0 1 0 + DOWN_RIGHT, + // 1 0 1 1 + RIGHT, + // 1 1 0 0 + Vec3::ZERO, + // 1 1 0 1 + UP, + // 1 1 1 0 + DOWN, + // 1 1 1 1 + Vec3::ZERO, + ][movement_bitmap]; + + if movement != Vec3::ZERO { + self.player.heading = movement; + } + + self.player.position += movement * GAME_VARIABLES.player_speed * dt; + + self.camera.target = self.player.position; + } +} + pub fn main() { #[cfg(debug_assertions)] if std::env::var("RUST_BACKTRACE").is_err() { @@ -158,17 +340,24 @@ pub fn main() { let mut depth_height = 0; let mut depth_image = default(); - let shark_distance = 4.0; - let mut rng = Pcg64::new(); + let shark_distance = 4.0; let mut shark_transforms = Vec::new(); + + // Shark 0 is the ultimate shark of player control! + shark_transforms.push(Affine3 { + matrix: Mat3::IDENTITY, + translate: Vec3::ZERO, + }); + for z in 0..NUM_SHARKS { for x in 0..NUM_SHARKS { let x = x as f32 * shark_distance - NUM_SHARKS as f32 / 2.0 * shark_distance; let z = z as f32 * shark_distance - NUM_SHARKS as f32 / 2.0 * shark_distance; shark_transforms.push(Affine3 { - matrix: Mat3::from_axis_rotation(Vec3::Y, HalfTurn::new(rng.next_f32() * 2.0)), + matrix: Mat3::from_axis_rotation(Vec3::Y, HalfTurn::new(rng.next_f32() * 2.0)) + * Mat3::from_scale(Vec3::new(0.5, 0.5, 0.5)), translate: vec3(x, 0.0, z), }) } @@ -180,33 +369,75 @@ pub fn main() { let mut line_glyph_indices = Vec::new(); let mut line_kern_advances = Vec::new(); - let mut align_v = false; - let mut kerning = true; + let mut action_queue = Vec::new(); + let mut game_state = GameState::new(); let start_time = Instant::now(); + 'main: loop { let frame = device.begin_frame(); - while let Some(event) = app.poll_event() { + let (width, height, swapchain_image) = loop { + let (width, height) = main_window.extent(); + if let Ok(result) = device.acquire_swapchain( + &frame, + main_window.upcast(), + width, + height, + ImageFormat::BGRA8_SRGB, + ) { + break result; + } + }; + + 'poll_events: while let Some(event) = app.poll_event() { use Event::*; match event { KeyPress { window_id: _, key, - repeat: _, + repeat, pressed, modifiers: _, } => { + if repeat { + continue 'poll_events; + } + if key == Key::Escape { break 'main; } - if key == Key::Space && pressed == PressedState::Pressed { - align_v = !align_v; - println!("align: {align_v}"); - } - if key == Key::K && pressed == PressedState::Pressed { - kerning = !kerning; - println!("kerning: {kerning}"); + + { + let value = match pressed { + PressedState::Released => 0.0, + PressedState::Pressed => 1.0, + }; + + if key == Key::Left || key == Key::A { + action_queue.push(ActionEvent { + action: Action::Left, + value, + }) + } + if key == Key::Right || key == Key::D { + action_queue.push(ActionEvent { + action: Action::Right, + value, + }) + } + if key == Key::Up || key == Key::W { + action_queue.push(ActionEvent { + action: Action::Up, + value, + }) + } + if key == Key::Down || key == Key::S { + action_queue.push(ActionEvent { + action: Action::Down, + value, + }) + } } } Quit => { @@ -220,20 +451,10 @@ pub fn main() { } } - let (width, height, swapchain_image) = loop { - let (width, height) = main_window.extent(); - if let Ok(result) = device.acquire_swapchain( - &frame, - main_window.upcast(), - width, - height, - ImageFormat::BGRA8_SRGB, - ) { - break result; - } - }; + game_state.tick(1.0 / 120.0, &action_queue); + action_queue.clear(); - let mut cmd_buffer = device.request_cmd_encoder(&frame, &thread_token); + let mut cmd_encoder = device.request_cmd_encoder(&frame, &thread_token); if width != depth_width || height != depth_height { device.destroy_image(&frame, depth_image); @@ -252,7 +473,7 @@ pub fn main() { }); device.cmd_barrier( - &mut cmd_buffer, + &mut cmd_encoder, None, &[ImageBarrier::layout_optimal( &[Access::None], @@ -269,19 +490,25 @@ pub fn main() { let frame_start = Instant::now() - start_time; let frame_start = frame_start.as_secs_f32() * 0.125; - for (i, transform) in shark_transforms.iter_mut().enumerate() { + let orientation = { + let f = game_state.player.heading.normalized(); + let r = Vec3::cross(f, Vec3::Y).normalized(); + let u = Vec3::cross(r, f); + Mat3::from_rows([[r.x, u.x, -f.x], [r.y, u.y, -f.y], [r.z, u.z, -f.z]]) + }; + + shark_transforms[0].matrix = + orientation * Mat3::from_axis_rotation(Vec3::Y, HalfTurn::new(0.5)); + shark_transforms[0].translate = game_state.player.position.as_vec3(); + + for (i, transform) in shark_transforms.iter_mut().skip(1).enumerate() { let direction = if i & 1 == 0 { 1.0 } else { -1.0 }; let (s, _) = sin_cos_pi_f32(frame_start + (i as f32) * 0.0125); transform.translate.y = s; transform.matrix *= Mat3::from_axis_rotation(Vec3::Y, HalfTurn::new(0.002 * direction)) } - let (s, c) = sin_cos_pi_f32(frame_start * 0.2); - let camera_height = c * 8.0; - let camera_radius = 20.0; - let eye = Point3::new(s * camera_radius, camera_height, c * camera_radius); - let center = Point3::ZERO; - let camera_from_model = Mat4::look_at(eye, center, Vec3::Y); + let camera_from_model = game_state.camera.camera_from_model(); let clip_from_camera = Mat4::perspective_rev_inf_zo( HalfTurn::new(1.0 / 3.0), width as f32 / height as f32, @@ -313,9 +540,6 @@ pub fn main() { x = 0.0; y += (font.ascent() - font.descent() + font.line_gap()) * scale; - if align_v { - y = y.trunc(); - } if y > height as f32 { break; @@ -355,9 +579,7 @@ pub fn main() { left_side_bearing: _, } = font.horizontal_metrics(glyph_index); - if kerning { - x += advance * scale; - } + x += advance * scale; let color = *rng.array_select(&[0xfffac228, 0xfff57d15, 0xffd44842, 0xff9f2a63]); @@ -403,7 +625,7 @@ pub fn main() { ); device.cmd_barrier( - &mut cmd_buffer, + &mut cmd_encoder, None, &[ImageBarrier::layout_optimal( &[Access::ShaderSampledImageRead], @@ -414,7 +636,7 @@ pub fn main() { ); device.cmd_copy_buffer_to_image( - &mut cmd_buffer, + &mut cmd_encoder, buffer.to_arg(), image, ImageLayout::Optimal, @@ -433,7 +655,7 @@ pub fn main() { ); device.cmd_barrier( - &mut cmd_buffer, + &mut cmd_encoder, None, &[ImageBarrier::layout_optimal( &[Access::TransferWrite], @@ -445,7 +667,7 @@ pub fn main() { } device.cmd_begin_rendering( - &mut cmd_buffer, + &mut cmd_encoder, &RenderingDesc { x: 0, y: 0, @@ -469,7 +691,7 @@ pub fn main() { ); device.cmd_set_scissors( - &mut cmd_buffer, + &mut cmd_encoder, &[Scissor { offset: Offset2d { x: 0, y: 0 }, extent: Extent2d { width, height }, @@ -477,7 +699,7 @@ pub fn main() { ); device.cmd_set_viewports( - &mut cmd_buffer, + &mut cmd_encoder, &[Viewport { x: 0.0, y: 0.0, @@ -493,7 +715,7 @@ pub fn main() { device.as_ref(), &frame, &thread_token, - &mut cmd_buffer, + &mut cmd_encoder, &BasicUniforms { clip_from_model }, &blåhaj_vertex_buffer, &blåhaj_index_buffer, @@ -502,7 +724,7 @@ pub fn main() { ); device.cmd_draw_indexed( - &mut cmd_buffer, + &mut cmd_encoder, blåhaj_indices.len() as u32, shark_transforms.len() as u32, 0, @@ -515,7 +737,7 @@ pub fn main() { device.as_ref(), &frame, &thread_token, - &mut cmd_buffer, + &mut cmd_encoder, &TextUniforms { screen_width: width, screen_height: height, @@ -528,11 +750,11 @@ pub fn main() { glyph_atlas, ); - device.cmd_draw(&mut cmd_buffer, primitive_vertices.len() as u32, 1, 0, 0); + device.cmd_draw(&mut cmd_encoder, primitive_vertices.len() as u32, 1, 0, 0); - device.cmd_end_rendering(&mut cmd_buffer); + device.cmd_end_rendering(&mut cmd_encoder); - device.submit(&frame, cmd_buffer); + device.submit(&frame, cmd_encoder); device.end_frame(frame); } diff --git a/title/shark/src/pipelines/basic.rs b/title/shark/src/pipelines/basic.rs index 110a866..636fac9 100644 --- a/title/shark/src/pipelines/basic.rs +++ b/title/shark/src/pipelines/basic.rs @@ -121,7 +121,7 @@ impl BasicPipeline { device: &(dyn Device + 'static), frame: &Frame, thread_token: &ThreadToken, - cmd_buffer: &mut CmdEncoder, + cmd_encoder: &mut CmdEncoder, basic_uniforms: &BasicUniforms, vertex_buffer: &PersistentBuffer, index_buffer: &PersistentBuffer, @@ -142,11 +142,11 @@ impl BasicPipeline { transforms, ); - device.cmd_set_pipeline(cmd_buffer, self.pipeline); + device.cmd_set_pipeline(cmd_encoder, self.pipeline); device.cmd_set_bind_group( frame, - cmd_buffer, + cmd_encoder, self.uniforms_bind_group_layout, 0, &[Bind { @@ -158,7 +158,7 @@ impl BasicPipeline { device.cmd_set_bind_group( frame, - cmd_buffer, + cmd_encoder, self.storage_bind_group_layout, 1, &[ @@ -185,6 +185,6 @@ impl BasicPipeline { ], ); - device.cmd_set_index_buffer(cmd_buffer, index_buffer.to_arg(), 0, IndexType::U16); + device.cmd_set_index_buffer(cmd_encoder, index_buffer.to_arg(), 0, IndexType::U16); } } diff --git a/title/shark/src/pipelines/text.rs b/title/shark/src/pipelines/text.rs index 989b6bb..b996df4 100644 --- a/title/shark/src/pipelines/text.rs +++ b/title/shark/src/pipelines/text.rs @@ -143,7 +143,7 @@ impl TextPipeline { device: &(dyn Device + 'static), frame: &Frame, thread_token: &ThreadToken, - cmd_buffer: &mut CmdEncoder, + cmd_encoder: &mut CmdEncoder, text_uniforms: &TextUniforms, primitive_vertices: &[PrimitiveVertex], touched_glyphs: &[TouchedGlyph], @@ -177,10 +177,10 @@ impl TextPipeline { primitive_instances, ); - device.cmd_set_pipeline(cmd_buffer, self.pipeline); + device.cmd_set_pipeline(cmd_encoder, self.pipeline); device.cmd_set_bind_group( frame, - cmd_buffer, + cmd_encoder, self.bind_group_layout, 0, &[