diff --git a/Build10_obj.obj b/Build10_obj.obj
new file mode 100644
index 00000000..904698b0
--- /dev/null
+++ b/Build10_obj.obj
@@ -0,0 +1,3416 @@
+# WaveFront *.obj file (generated by CINEMA 4D)
+
+g Building10
+usemtl Build10
+v 62.739003 344.999929 121.999979
+v 183.999991 344.999929 121.999979
+v 183.999991 0 121.999979
+v 62.739003 0 121.999979
+v 75.531899 333.474696 121.999979
+v 171.207077 333.474696 121.999979
+v 171.207077 308.035302 121.999979
+v 75.531899 308.035302 121.999979
+v 67.99787 1.898244 121.999979
+v 85.140435 1.898244 121.999979
+v 85.140435 47.999629 121.999979
+v 67.99787 47.999629 121.999979
+v 161.59871 1.898244 121.999979
+v 178.741195 1.898244 121.999979
+v 178.741195 47.999629 121.999979
+v 161.59871 47.999629 121.999979
+v 104.303833 1.898244 121.999979
+v 142.435081 1.898244 121.999979
+v 142.435081 38.886198 121.999979
+v 104.303833 38.886198 121.999979
+v 104.303833 38.886198 121.999979
+v 142.435081 38.886198 121.999979
+v 142.435081 47.999629 121.999979
+v 104.303833 47.999629 121.999979
+v 143.58594 1.898244 121.999979
+v 160.728443 1.898244 121.999979
+v 160.728443 47.999629 121.999979
+v 143.58594 47.999629 121.999979
+v 86.010382 1.898244 121.999979
+v 103.152974 1.898244 121.999979
+v 103.152974 47.999629 121.999979
+v 86.010382 47.999629 121.999979
+v 75.531899 78.561637 121.999979
+v 171.207077 78.561637 121.999979
+v 171.207077 66.710857 121.999979
+v 75.531899 66.710857 121.999979
+v 75.531899 102.693968 121.999979
+v 171.207077 102.693968 121.999979
+v 171.207077 90.843275 121.999979
+v 75.531899 90.843275 121.999979
+v 75.531899 126.826501 121.999979
+v 171.207077 126.826501 121.999979
+v 171.207077 114.975721 121.999979
+v 75.531899 114.975721 121.999979
+v 75.531899 150.959035 121.999979
+v 171.207077 150.959035 121.999979
+v 171.207077 139.108343 121.999979
+v 75.531899 139.108343 121.999979
+v 75.531899 175.091392 121.999979
+v 171.207077 175.091392 121.999979
+v 171.207077 163.240612 121.999979
+v 75.531899 163.240612 121.999979
+v 75.531899 199.223749 121.999979
+v 171.207077 199.223749 121.999979
+v 171.207077 187.372969 121.999979
+v 75.531899 187.372969 121.999979
+v 75.531899 223.356018 121.999979
+v 171.207077 223.356018 121.999979
+v 171.207077 211.505326 121.999979
+v 75.531899 211.505326 121.999979
+v 75.531899 247.488623 121.999979
+v 171.207077 247.488623 121.999979
+v 171.207077 235.637824 121.999979
+v 75.531899 235.637824 121.999979
+v 75.531899 271.621068 121.999979
+v 171.207077 271.621068 121.999979
+v 171.207077 259.770376 121.999979
+v 75.531899 259.770376 121.999979
+v 75.531899 295.753496 121.999979
+v 171.207077 295.753496 121.999979
+v 171.207077 283.902733 121.999979
+v 75.531899 283.902733 121.999979
+v 62.739003 344.999929 119.088805
+v 183.999991 344.999929 119.088805
+v 183.999991 0 119.088805
+v 62.739003 0 119.088805
+v 75.531899 333.474696 119.088805
+v 171.207077 333.474696 119.088805
+v 171.207077 308.035302 119.088805
+v 75.531899 308.035302 119.088805
+v 67.99787 1.898244 119.088805
+v 85.140435 1.898244 119.088805
+v 85.140435 47.999629 119.088805
+v 67.99787 47.999629 119.088805
+v 161.59871 1.898244 119.088805
+v 178.741195 1.898244 119.088805
+v 178.741195 47.999629 119.088805
+v 161.59871 47.999629 119.088805
+v 104.303833 1.898244 119.088805
+v 142.435081 1.898244 119.088805
+v 142.435081 38.886198 119.088805
+v 104.303833 38.886198 119.088805
+v 104.303833 38.886198 119.088805
+v 142.435081 38.886198 119.088805
+v 142.435081 47.999629 119.088805
+v 104.303833 47.999629 119.088805
+v 143.58594 1.898244 119.088805
+v 160.728443 1.898244 119.088805
+v 160.728443 47.999629 119.088805
+v 143.58594 47.999629 119.088805
+v 86.010382 1.898244 119.088805
+v 103.152974 1.898244 119.088805
+v 103.152974 47.999629 119.088805
+v 86.010382 47.999629 119.088805
+v 75.531899 78.561637 119.088805
+v 171.207077 78.561637 119.088805
+v 171.207077 66.710857 119.088805
+v 75.531899 66.710857 119.088805
+v 75.531899 102.693968 119.088805
+v 171.207077 102.693968 119.088805
+v 171.207077 90.843275 119.088805
+v 75.531899 90.843275 119.088805
+v 75.531899 126.826501 119.088805
+v 171.207077 126.826501 119.088805
+v 171.207077 114.975721 119.088805
+v 75.531899 114.975721 119.088805
+v 75.531899 150.959035 119.088805
+v 171.207077 150.959035 119.088805
+v 171.207077 139.108343 119.088805
+v 75.531899 139.108343 119.088805
+v 75.531899 175.091392 119.088805
+v 171.207077 175.091392 119.088805
+v 171.207077 163.240612 119.088805
+v 75.531899 163.240612 119.088805
+v 75.531899 199.223749 119.088805
+v 171.207077 199.223749 119.088805
+v 171.207077 187.372969 119.088805
+v 75.531899 187.372969 119.088805
+v 75.531899 223.356018 119.088805
+v 171.207077 223.356018 119.088805
+v 171.207077 211.505326 119.088805
+v 75.531899 211.505326 119.088805
+v 75.531899 247.488623 119.088805
+v 171.207077 247.488623 119.088805
+v 171.207077 235.637824 119.088805
+v 75.531899 235.637824 119.088805
+v 75.531899 271.621068 119.088805
+v 171.207077 271.621068 119.088805
+v 171.207077 259.770376 119.088805
+v 75.531899 259.770376 119.088805
+v 75.531899 295.753496 119.088805
+v 171.207077 295.753496 119.088805
+v 171.207077 283.902733 119.088805
+v 75.531899 283.902733 119.088805
+v 62.739003 344.999929 121.999979
+v 183.999991 344.999929 121.999979
+v 183.999991 0 121.999979
+v 62.739003 0 121.999979
+v 75.531899 333.474696 121.999979
+v 171.207077 333.474696 121.999979
+v 171.207077 308.035302 121.999979
+v 75.531899 308.035302 121.999979
+v 67.99787 1.898244 121.999979
+v 85.140435 1.898244 121.999979
+v 85.140435 47.999629 121.999979
+v 67.99787 47.999629 121.999979
+v 161.59871 1.898244 121.999979
+v 178.741195 1.898244 121.999979
+v 178.741195 47.999629 121.999979
+v 161.59871 47.999629 121.999979
+v 104.303833 1.898244 121.999979
+v 142.435081 1.898244 121.999979
+v 142.435081 38.886198 121.999979
+v 104.303833 38.886198 121.999979
+v 104.303833 38.886198 121.999979
+v 142.435081 38.886198 121.999979
+v 142.435081 47.999629 121.999979
+v 104.303833 47.999629 121.999979
+v 143.58594 1.898244 121.999979
+v 160.728443 1.898244 121.999979
+v 160.728443 47.999629 121.999979
+v 143.58594 47.999629 121.999979
+v 86.010382 1.898244 121.999979
+v 103.152974 1.898244 121.999979
+v 103.152974 47.999629 121.999979
+v 86.010382 47.999629 121.999979
+v 75.531899 78.561637 121.999979
+v 171.207077 78.561637 121.999979
+v 171.207077 66.710857 121.999979
+v 75.531899 66.710857 121.999979
+v 75.531899 102.693968 121.999979
+v 171.207077 102.693968 121.999979
+v 171.207077 90.843275 121.999979
+v 75.531899 90.843275 121.999979
+v 75.531899 126.826501 121.999979
+v 171.207077 126.826501 121.999979
+v 171.207077 114.975721 121.999979
+v 75.531899 114.975721 121.999979
+v 75.531899 150.959035 121.999979
+v 171.207077 150.959035 121.999979
+v 171.207077 139.108343 121.999979
+v 75.531899 139.108343 121.999979
+v 75.531899 175.091392 121.999979
+v 171.207077 175.091392 121.999979
+v 171.207077 163.240612 121.999979
+v 75.531899 163.240612 121.999979
+v 75.531899 199.223749 121.999979
+v 171.207077 199.223749 121.999979
+v 171.207077 187.372969 121.999979
+v 75.531899 187.372969 121.999979
+v 75.531899 223.356018 121.999979
+v 171.207077 223.356018 121.999979
+v 171.207077 211.505326 121.999979
+v 75.531899 211.505326 121.999979
+v 75.531899 247.488623 121.999979
+v 171.207077 247.488623 121.999979
+v 171.207077 235.637824 121.999979
+v 75.531899 235.637824 121.999979
+v 75.531899 271.621068 121.999979
+v 171.207077 271.621068 121.999979
+v 171.207077 259.770376 121.999979
+v 75.531899 259.770376 121.999979
+v 75.531899 295.753496 121.999979
+v 171.207077 295.753496 121.999979
+v 171.207077 283.902733 121.999979
+v 75.531899 283.902733 121.999979
+v 184 345 121.999983
+v 183.999991 345 -122
+v 183.999991 0 -122
+v 184 0 121.999983
+v 184 78.561655 108.465829
+v 183.999991 78.561655 -108.465811
+v 183.999991 66.710874 -108.465811
+v 184 66.710874 108.465829
+v 184 102.694012 108.465829
+v 183.999991 102.694012 -108.465811
+v 183.999991 90.84332 -108.465811
+v 184 90.84332 108.465829
+v 184 126.826537 108.465829
+v 183.999991 126.826537 -108.465811
+v 183.999991 114.975756 -108.465811
+v 184 114.975756 108.465829
+v 184 150.959053 108.465829
+v 183.999991 150.959053 -108.465811
+v 183.999991 139.108361 -108.465811
+v 184 139.108361 108.465829
+v 184 175.09141 108.465829
+v 183.999991 175.09141 -108.465811
+v 183.999991 163.24063 -108.465811
+v 184 163.24063 108.465829
+v 184 199.223767 108.465829
+v 183.999991 199.223767 -108.465811
+v 183.999991 187.372987 -108.465811
+v 184 187.372987 108.465829
+v 184 223.356036 108.465829
+v 183.999991 223.356036 -108.465811
+v 183.999991 211.505344 -108.465811
+v 184 211.505344 108.465829
+v 184 247.488658 108.465829
+v 183.999991 247.488658 -108.465811
+v 183.999991 235.637877 -108.465811
+v 184 235.637877 108.465829
+v 184 271.621086 108.465829
+v 183.999991 271.621086 -108.465811
+v 183.999991 259.770394 -108.465811
+v 184 259.770394 108.465829
+v 184 295.753514 108.465829
+v 183.999991 295.753514 -108.465811
+v 183.999991 283.902751 -108.465811
+v 184 283.902751 108.465829
+v 184 333.474767 108.465829
+v 183.999991 333.474767 -108.465811
+v 183.999991 308.035338 -108.465811
+v 184 308.035338 108.465829
+v 181.095417 345 121.999984
+v 181.095408 345 -122
+v 181.095408 0 -122
+v 181.095417 0 121.999984
+v 181.095417 78.561655 108.465829
+v 181.095408 78.561655 -108.465811
+v 181.095408 66.710874 -108.465811
+v 181.095417 66.710874 108.465829
+v 181.095417 102.694012 108.465829
+v 181.095408 102.694012 -108.465811
+v 181.095408 90.84332 -108.465811
+v 181.095417 90.84332 108.465829
+v 181.095417 126.826537 108.465829
+v 181.095408 126.826537 -108.465811
+v 181.095408 114.975756 -108.465811
+v 181.095417 114.975756 108.465829
+v 181.095417 150.959053 108.465829
+v 181.095408 150.959053 -108.465811
+v 181.095408 139.108361 -108.465811
+v 181.095417 139.108361 108.465829
+v 181.095417 175.09141 108.465829
+v 181.095408 175.09141 -108.465811
+v 181.095408 163.24063 -108.465811
+v 181.095417 163.24063 108.465829
+v 181.095417 199.223767 108.465829
+v 181.095408 199.223767 -108.465811
+v 181.095408 187.372987 -108.465811
+v 181.095417 187.372987 108.465829
+v 181.095417 223.356036 108.465829
+v 181.095408 223.356036 -108.465811
+v 181.095408 211.505344 -108.465811
+v 181.095417 211.505344 108.465829
+v 181.095417 247.488658 108.465829
+v 181.095408 247.488658 -108.465811
+v 181.095408 235.637877 -108.465811
+v 181.095417 235.637877 108.465829
+v 181.095417 271.621086 108.465829
+v 181.095408 271.621086 -108.465811
+v 181.095408 259.770394 -108.465811
+v 181.095417 259.770394 108.465829
+v 181.095417 295.753514 108.465829
+v 181.095408 295.753514 -108.465811
+v 181.095408 283.902751 -108.465811
+v 181.095417 283.902751 108.465829
+v 181.095417 333.474767 108.465829
+v 181.095408 333.474767 -108.465811
+v 181.095408 308.035338 -108.465811
+v 181.095417 308.035338 108.465829
+v 184 345 121.999983
+v 183.999991 345 -122
+v 183.999991 0 -122
+v 184 0 121.999983
+v 184 78.561655 108.465829
+v 183.999991 78.561655 -108.465811
+v 183.999991 66.710874 -108.465811
+v 184 66.710874 108.465829
+v 184 102.694012 108.465829
+v 183.999991 102.694012 -108.465811
+v 183.999991 90.84332 -108.465811
+v 184 90.84332 108.465829
+v 184 126.826537 108.465829
+v 183.999991 126.826537 -108.465811
+v 183.999991 114.975756 -108.465811
+v 184 114.975756 108.465829
+v 184 150.959053 108.465829
+v 183.999991 150.959053 -108.465811
+v 183.999991 139.108361 -108.465811
+v 184 139.108361 108.465829
+v 184 175.09141 108.465829
+v 183.999991 175.09141 -108.465811
+v 183.999991 163.24063 -108.465811
+v 184 163.24063 108.465829
+v 184 199.223767 108.465829
+v 183.999991 199.223767 -108.465811
+v 183.999991 187.372987 -108.465811
+v 184 187.372987 108.465829
+v 184 223.356036 108.465829
+v 183.999991 223.356036 -108.465811
+v 183.999991 211.505344 -108.465811
+v 184 211.505344 108.465829
+v 184 247.488658 108.465829
+v 183.999991 247.488658 -108.465811
+v 183.999991 235.637877 -108.465811
+v 184 235.637877 108.465829
+v 184 271.621086 108.465829
+v 183.999991 271.621086 -108.465811
+v 183.999991 259.770394 -108.465811
+v 184 259.770394 108.465829
+v 184 295.753514 108.465829
+v 183.999991 295.753514 -108.465811
+v 183.999991 283.902751 -108.465811
+v 184 283.902751 108.465829
+v 184 333.474767 108.465829
+v 183.999991 333.474767 -108.465811
+v 183.999991 308.035338 -108.465811
+v 184 308.035338 108.465829
+v -184 344.999929 0.463896
+v 62.738972 344.999929 0.463896
+v 62.738972 0 0.463896
+v -184 0 0.463896
+v 49.946076 319.401238 0.463896
+v -171.207104 319.401238 0.463896
+v -171.207104 75.543766 0.463896
+v 49.946076 75.543766 0.463896
+v -79.696007 1.898262 0.463896
+v -41.564786 1.898262 0.463896
+v -41.564786 38.886207 0.463896
+v -79.696007 38.886207 0.463896
+v -79.696007 38.886207 0.463896
+v -41.564786 38.886207 0.463896
+v -41.564786 47.999637 0.463896
+v -79.696007 47.999637 0.463896
+v -116.315972 1.898262 0.463896
+v -99.173434 1.898262 0.463896
+v -99.173434 47.999637 0.463896
+v -116.315972 47.999637 0.463896
+v -22.08743 1.898262 0.463896
+v -4.944945 1.898262 0.463896
+v -4.944945 47.999637 0.463896
+v -22.08743 47.999637 0.463896
+v -40.397333 1.898262 0.463896
+v -23.254866 1.898262 0.463896
+v -23.254866 47.999637 0.463896
+v -40.397333 47.999637 0.463896
+v -98.006034 1.898262 0.463896
+v -80.863425 1.898262 0.463896
+v -80.863425 47.999637 0.463896
+v -98.006034 47.999637 0.463896
+v 14.532464 1.898262 0.463896
+v 31.674931 1.898262 0.463896
+v 31.674931 47.999637 0.463896
+v 14.532464 47.999637 0.463896
+v -3.777545 1.898262 0.463896
+v 13.364958 1.898262 0.463896
+v 13.364958 47.999637 0.463896
+v -3.777545 47.999637 0.463896
+v -152.93599 1.898262 0.463896
+v -135.793381 1.898262 0.463896
+v -135.793381 47.999637 0.463896
+v -152.93599 47.999637 0.463896
+v -134.625981 1.898262 0.463896
+v -117.483443 1.898262 0.463896
+v -117.483443 47.999637 0.463896
+v -134.625981 47.999637 0.463896
+v -184 344.999929 -2.447279
+v 62.738972 344.999929 -2.447279
+v 62.738972 0 -2.447279
+v -184 0 -2.447279
+v 49.946076 319.401238 -2.447279
+v -171.207104 319.401238 -2.447279
+v -171.207104 75.543766 -2.447279
+v 49.946076 75.543766 -2.447279
+v -79.696007 1.898262 -2.447279
+v -41.564786 1.898262 -2.447279
+v -41.564786 38.886207 -2.447279
+v -79.696007 38.886207 -2.447279
+v -79.696007 38.886207 -2.447279
+v -41.564786 38.886207 -2.447279
+v -41.564786 47.999637 -2.447279
+v -79.696007 47.999637 -2.447279
+v -116.315972 1.898262 -2.447279
+v -99.173434 1.898262 -2.447279
+v -99.173434 47.999637 -2.447279
+v -116.315972 47.999637 -2.447279
+v -22.08743 1.898262 -2.447279
+v -4.944945 1.898262 -2.447279
+v -4.944945 47.999637 -2.447279
+v -22.08743 47.999637 -2.447279
+v -40.397333 1.898262 -2.447279
+v -23.254866 1.898262 -2.447279
+v -23.254866 47.999637 -2.447279
+v -40.397333 47.999637 -2.447279
+v -98.006034 1.898262 -2.447279
+v -80.863425 1.898262 -2.447279
+v -80.863425 47.999637 -2.447279
+v -98.006034 47.999637 -2.447279
+v 14.532464 1.898262 -2.447279
+v 31.674931 1.898262 -2.447279
+v 31.674931 47.999637 -2.447279
+v 14.532464 47.999637 -2.447279
+v -3.777545 1.898262 -2.447279
+v 13.364958 1.898262 -2.447279
+v 13.364958 47.999637 -2.447279
+v -3.777545 47.999637 -2.447279
+v -152.93599 1.898262 -2.447279
+v -135.793381 1.898262 -2.447279
+v -135.793381 47.999637 -2.447279
+v -152.93599 47.999637 -2.447279
+v -134.625981 1.898262 -2.447279
+v -117.483443 1.898262 -2.447279
+v -117.483443 47.999637 -2.447279
+v -134.625981 47.999637 -2.447279
+v -184 344.999929 0.463896
+v 62.738972 344.999929 0.463896
+v 62.738972 0 0.463896
+v -184 0 0.463896
+v 49.946076 319.401238 0.463896
+v -171.207104 319.401238 0.463896
+v -171.207104 75.543766 0.463896
+v 49.946076 75.543766 0.463896
+v -79.696007 1.898262 0.463896
+v -41.564786 1.898262 0.463896
+v -41.564786 38.886207 0.463896
+v -79.696007 38.886207 0.463896
+v -79.696007 38.886207 0.463896
+v -41.564786 38.886207 0.463896
+v -41.564786 47.999637 0.463896
+v -79.696007 47.999637 0.463896
+v -116.315972 1.898262 0.463896
+v -99.173434 1.898262 0.463896
+v -99.173434 47.999637 0.463896
+v -116.315972 47.999637 0.463896
+v -22.08743 1.898262 0.463896
+v -4.944945 1.898262 0.463896
+v -4.944945 47.999637 0.463896
+v -22.08743 47.999637 0.463896
+v -40.397333 1.898262 0.463896
+v -23.254866 1.898262 0.463896
+v -23.254866 47.999637 0.463896
+v -40.397333 47.999637 0.463896
+v -98.006034 1.898262 0.463896
+v -80.863425 1.898262 0.463896
+v -80.863425 47.999637 0.463896
+v -98.006034 47.999637 0.463896
+v 14.532464 1.898262 0.463896
+v 31.674931 1.898262 0.463896
+v 31.674931 47.999637 0.463896
+v 14.532464 47.999637 0.463896
+v -3.777545 1.898262 0.463896
+v 13.364958 1.898262 0.463896
+v 13.364958 47.999637 0.463896
+v -3.777545 47.999637 0.463896
+v -152.93599 1.898262 0.463896
+v -135.793381 1.898262 0.463896
+v -135.793381 47.999637 0.463896
+v -152.93599 47.999637 0.463896
+v -134.625981 1.898262 0.463896
+v -117.483443 1.898262 0.463896
+v -117.483443 47.999637 0.463896
+v -134.625981 47.999637 0.463896
+v 49.946076 99.790084 0.463896
+v -171.207104 99.790084 0.463896
+v 49.946076 99.790084 -2.447279
+v -171.207104 99.790084 -2.447279
+v 49.946076 102.688713 0.463896
+v -171.207104 102.688713 0.463896
+v 49.946076 102.688713 -2.447279
+v -171.207104 102.688713 -2.447279
+v 49.946076 123.905882 0.463896
+v -171.207104 123.905882 0.463896
+v 49.946076 123.905882 -2.447279
+v -171.207104 123.905882 -2.447279
+v 49.946076 126.804511 0.463896
+v -171.207104 126.804511 0.463896
+v 49.946076 126.804511 -2.447279
+v -171.207104 126.804511 -2.447279
+v 49.946076 148.021786 0.463896
+v -171.207104 148.021786 0.463896
+v 49.946076 148.021786 -2.447279
+v -171.207104 148.021786 -2.447279
+v 49.946076 150.920414 0.463896
+v -171.207104 150.920414 0.463896
+v 49.946076 150.920414 -2.447279
+v -171.207104 150.920414 -2.447279
+v 49.946076 172.137813 0.463896
+v -171.207104 172.137813 0.463896
+v 49.946076 172.137813 -2.447279
+v -171.207104 172.137813 -2.447279
+v 49.946076 175.036442 0.463896
+v -171.207104 175.036442 0.463896
+v 49.946076 175.036442 -2.447279
+v -171.207104 175.036442 -2.447279
+v 49.946076 196.340973 0.463896
+v -171.207104 196.34099 0.463896
+v 49.946076 196.34099 -2.447279
+v -171.207104 196.340973 -2.447279
+v 49.946076 199.239601 0.463896
+v -171.207104 199.239619 0.463896
+v 49.946076 199.239619 -2.447279
+v -171.207104 199.239601 -2.447279
+v 49.946076 220.456788 0.463896
+v -171.207104 220.456805 0.463896
+v 49.946076 220.456805 -2.447279
+v -171.207104 220.456788 -2.447279
+v 49.946076 223.355416 0.463896
+v -171.207104 223.355416 0.463896
+v 49.946076 223.355416 -2.447279
+v -171.207104 223.355416 -2.447279
+v 49.946076 244.573028 0.463896
+v -171.207104 244.57301 0.463896
+v 49.946076 244.57301 -2.447279
+v -171.207104 244.573028 -2.447279
+v 49.946076 247.471638 0.463896
+v -171.207104 247.471638 0.463896
+v 49.946076 247.471638 -2.447279
+v -171.207104 247.471638 -2.447279
+v 49.946076 268.689143 0.463896
+v -171.207104 268.689143 0.463896
+v 49.946076 268.689143 -2.447279
+v -171.207104 268.689143 -2.447279
+v 49.946076 271.587772 0.463896
+v -171.207104 271.587772 0.463896
+v 49.946076 271.587772 -2.447279
+v -171.207104 271.587772 -2.447279
+v 49.946076 292.805312 0.463896
+v -171.207104 292.805312 0.463896
+v 49.946076 292.805312 -2.447279
+v -171.207104 292.805312 -2.447279
+v 49.946076 295.703941 0.463896
+v -171.207104 295.703941 0.463896
+v 49.946076 295.703941 -2.447279
+v -171.207104 295.703941 -2.447279
+v 62.738981 344.999929 0.463851
+v 62.738976 344.999929 122
+v 62.738976 0 122
+v 62.738981 0 0.463851
+v 62.738981 78.561646 13.285794
+v 62.738976 78.561646 109.17804
+v 62.738976 66.710865 109.17804
+v 62.738981 66.710865 13.285794
+v 62.738981 102.694003 13.285794
+v 62.738976 102.694003 109.17804
+v 62.738976 90.843275 109.17804
+v 62.738981 90.843275 13.285794
+v 62.738981 126.826501 13.285794
+v 62.738976 126.826501 109.17804
+v 62.738976 114.975721 109.17804
+v 62.738981 114.975721 13.285794
+v 62.738981 150.959035 13.285794
+v 62.738976 150.959035 109.17804
+v 62.738976 139.108343 109.17804
+v 62.738981 139.108343 13.285794
+v 62.738981 175.091392 13.285794
+v 62.738976 175.091392 109.17804
+v 62.738976 163.240612 109.17804
+v 62.738981 163.240612 13.285794
+v 62.738981 199.223749 13.285794
+v 62.738976 199.223749 109.17804
+v 62.738976 187.372969 109.17804
+v 62.738981 187.372969 13.285794
+v 62.738981 223.356036 13.285794
+v 62.738976 223.356036 109.17804
+v 62.738976 211.505326 109.17804
+v 62.738981 211.505326 13.285794
+v 62.738981 247.488623 13.285794
+v 62.738976 247.488623 109.17804
+v 62.738976 235.637842 109.17804
+v 62.738981 235.637842 13.285794
+v 62.738981 271.621068 13.285794
+v 62.738976 271.621068 109.17804
+v 62.738976 259.770376 109.17804
+v 62.738981 259.770376 13.285794
+v 62.738981 295.753496 13.285794
+v 62.738976 295.753496 109.17804
+v 62.738976 283.902733 109.17804
+v 62.738981 283.902733 13.285794
+v 62.738981 333.474696 13.285794
+v 62.738976 333.474696 109.17804
+v 62.738976 308.035302 109.17804
+v 62.738981 308.035302 13.285794
+v 65.643564 344.999929 0.463851
+v 65.64356 344.999929 122
+v 65.64356 0 122
+v 65.643564 0 0.463851
+v 65.643564 78.561646 13.285794
+v 65.64356 78.561646 109.17804
+v 65.64356 66.710865 109.17804
+v 65.643564 66.710865 13.285794
+v 65.643564 102.694003 13.285794
+v 65.64356 102.694003 109.17804
+v 65.64356 90.843275 109.17804
+v 65.643564 90.843275 13.285794
+v 65.643564 126.826501 13.285794
+v 65.64356 126.826501 109.17804
+v 65.64356 114.975721 109.17804
+v 65.643564 114.975721 13.285794
+v 65.643564 150.959035 13.285794
+v 65.64356 150.959035 109.17804
+v 65.64356 139.108343 109.17804
+v 65.643564 139.108343 13.285794
+v 65.643564 175.091392 13.285794
+v 65.64356 175.091392 109.17804
+v 65.64356 163.240612 109.17804
+v 65.643564 163.240612 13.285794
+v 65.643564 199.223749 13.285794
+v 65.64356 199.223749 109.17804
+v 65.64356 187.372969 109.17804
+v 65.643564 187.372969 13.285794
+v 65.643564 223.356036 13.285794
+v 65.64356 223.356036 109.17804
+v 65.64356 211.505326 109.17804
+v 65.643564 211.505326 13.285794
+v 65.643564 247.488623 13.285794
+v 65.64356 247.488623 109.17804
+v 65.64356 235.637842 109.17804
+v 65.643564 235.637842 13.285794
+v 65.643564 271.621068 13.285794
+v 65.64356 271.621068 109.17804
+v 65.64356 259.770376 109.17804
+v 65.643564 259.770376 13.285794
+v 65.643564 295.753496 13.285794
+v 65.64356 295.753496 109.17804
+v 65.64356 283.902733 109.17804
+v 65.643564 283.902733 13.285794
+v 65.643564 333.474696 13.285794
+v 65.64356 333.474696 109.17804
+v 65.64356 308.035302 109.17804
+v 65.643564 308.035302 13.285794
+v 62.738981 344.999929 0.463851
+v 62.738976 344.999929 122
+v 62.738976 0 122
+v 62.738981 0 0.463851
+v 62.738981 78.561646 13.285794
+v 62.738976 78.561646 109.17804
+v 62.738976 66.710865 109.17804
+v 62.738981 66.710865 13.285794
+v 62.738981 102.694003 13.285794
+v 62.738976 102.694003 109.17804
+v 62.738976 90.843275 109.17804
+v 62.738981 90.843275 13.285794
+v 62.738981 126.826501 13.285794
+v 62.738976 126.826501 109.17804
+v 62.738976 114.975721 109.17804
+v 62.738981 114.975721 13.285794
+v 62.738981 150.959035 13.285794
+v 62.738976 150.959035 109.17804
+v 62.738976 139.108343 109.17804
+v 62.738981 139.108343 13.285794
+v 62.738981 175.091392 13.285794
+v 62.738976 175.091392 109.17804
+v 62.738976 163.240612 109.17804
+v 62.738981 163.240612 13.285794
+v 62.738981 199.223749 13.285794
+v 62.738976 199.223749 109.17804
+v 62.738976 187.372969 109.17804
+v 62.738981 187.372969 13.285794
+v 62.738981 223.356036 13.285794
+v 62.738976 223.356036 109.17804
+v 62.738976 211.505326 109.17804
+v 62.738981 211.505326 13.285794
+v 62.738981 247.488623 13.285794
+v 62.738976 247.488623 109.17804
+v 62.738976 235.637842 109.17804
+v 62.738981 235.637842 13.285794
+v 62.738981 271.621068 13.285794
+v 62.738976 271.621068 109.17804
+v 62.738976 259.770376 109.17804
+v 62.738981 259.770376 13.285794
+v 62.738981 295.753496 13.285794
+v 62.738976 295.753496 109.17804
+v 62.738976 283.902733 109.17804
+v 62.738981 283.902733 13.285794
+v 62.738981 333.474696 13.285794
+v 62.738976 333.474696 109.17804
+v 62.738976 308.035302 109.17804
+v 62.738981 308.035302 13.285794
+v -184 344.999929 -121.072276
+v -184 344.999929 0.463878
+v -184 0 0.463878
+v -184 0 -121.072276
+v -184 78.561646 -108.250316
+v -184 78.561646 -12.358082
+v -184 66.710865 -12.358082
+v -184 66.710865 -108.250316
+v -184 102.694003 -108.250316
+v -184 102.694003 -12.358082
+v -184 90.843275 -12.358082
+v -184 90.843275 -108.250316
+v -184 126.826501 -108.250316
+v -184 126.826501 -12.358082
+v -184 114.975721 -12.358082
+v -184 114.975721 -108.250316
+v -184 150.959035 -108.250316
+v -184 150.959035 -12.358082
+v -184 139.108343 -12.358082
+v -184 139.108343 -108.250316
+v -184 175.091392 -108.250316
+v -184 175.091392 -12.358082
+v -184 163.240612 -12.358082
+v -184 163.240612 -108.250316
+v -184 199.223749 -108.250316
+v -184 199.223749 -12.358082
+v -184 187.372969 -12.358082
+v -184 187.372969 -108.250316
+v -184 223.356036 -108.250316
+v -184 223.356036 -12.358082
+v -184 211.505326 -12.358082
+v -184 211.505326 -108.250316
+v -184 247.488623 -108.250316
+v -184 247.488623 -12.358082
+v -184 235.637842 -12.358082
+v -184 235.637842 -108.250316
+v -184 271.621068 -108.250316
+v -184 271.621068 -12.358082
+v -184 259.770376 -12.358082
+v -184 259.770376 -108.250316
+v -184 295.753496 -108.250316
+v -184 295.753496 -12.358082
+v -184 283.902733 -12.358082
+v -184 283.902733 -108.250316
+v -184 333.474696 -108.250316
+v -184 333.474696 -12.358082
+v -184 308.035302 -12.358082
+v -184 308.035302 -108.250316
+v -181.095417 344.999929 -121.072276
+v -181.095417 344.999929 0.463878
+v -181.095417 0 0.463878
+v -181.095417 0 -121.072276
+v -181.095417 78.561646 -108.250316
+v -181.095417 78.561646 -12.358082
+v -181.095417 66.710865 -12.358082
+v -181.095417 66.710865 -108.250316
+v -181.095417 102.694003 -108.250316
+v -181.095417 102.694003 -12.358082
+v -181.095417 90.843275 -12.358082
+v -181.095417 90.843275 -108.250316
+v -181.095417 126.826501 -108.250316
+v -181.095417 126.826501 -12.358082
+v -181.095417 114.975721 -12.358082
+v -181.095417 114.975721 -108.250316
+v -181.095417 150.959035 -108.250316
+v -181.095417 150.959035 -12.358082
+v -181.095417 139.108343 -12.358082
+v -181.095417 139.108343 -108.250316
+v -181.095417 175.091392 -108.250316
+v -181.095417 175.091392 -12.358082
+v -181.095417 163.240612 -12.358082
+v -181.095417 163.240612 -108.250316
+v -181.095417 199.223749 -108.250316
+v -181.095417 199.223749 -12.358082
+v -181.095417 187.372969 -12.358082
+v -181.095417 187.372969 -108.250316
+v -181.095417 223.356036 -108.250316
+v -181.095417 223.356036 -12.358082
+v -181.095417 211.505326 -12.358082
+v -181.095417 211.505326 -108.250316
+v -181.095417 247.488623 -108.250316
+v -181.095417 247.488623 -12.358082
+v -181.095417 235.637842 -12.358082
+v -181.095417 235.637842 -108.250316
+v -181.095417 271.621068 -108.250316
+v -181.095417 271.621068 -12.358082
+v -181.095417 259.770376 -12.358082
+v -181.095417 259.770376 -108.250316
+v -181.095417 295.753496 -108.250316
+v -181.095417 295.753496 -12.358082
+v -181.095417 283.902733 -12.358082
+v -181.095417 283.902733 -108.250316
+v -181.095417 333.474696 -108.250316
+v -181.095417 333.474696 -12.358082
+v -181.095417 308.035302 -12.358082
+v -181.095417 308.035302 -108.250316
+v -184 344.999929 -121.072276
+v -184 344.999929 0.463878
+v -184 0 0.463878
+v -184 0 -121.072276
+v -184 78.561646 -108.250316
+v -184 78.561646 -12.358082
+v -184 66.710865 -12.358082
+v -184 66.710865 -108.250316
+v -184 102.694003 -108.250316
+v -184 102.694003 -12.358082
+v -184 90.843275 -12.358082
+v -184 90.843275 -108.250316
+v -184 126.826501 -108.250316
+v -184 126.826501 -12.358082
+v -184 114.975721 -12.358082
+v -184 114.975721 -108.250316
+v -184 150.959035 -108.250316
+v -184 150.959035 -12.358082
+v -184 139.108343 -12.358082
+v -184 139.108343 -108.250316
+v -184 175.091392 -108.250316
+v -184 175.091392 -12.358082
+v -184 163.240612 -12.358082
+v -184 163.240612 -108.250316
+v -184 199.223749 -108.250316
+v -184 199.223749 -12.358082
+v -184 187.372969 -12.358082
+v -184 187.372969 -108.250316
+v -184 223.356036 -108.250316
+v -184 223.356036 -12.358082
+v -184 211.505326 -12.358082
+v -184 211.505326 -108.250316
+v -184 247.488623 -108.250316
+v -184 247.488623 -12.358082
+v -184 235.637842 -12.358082
+v -184 235.637842 -108.250316
+v -184 271.621068 -108.250316
+v -184 271.621068 -12.358082
+v -184 259.770376 -12.358082
+v -184 259.770376 -108.250316
+v -184 295.753496 -108.250316
+v -184 295.753496 -12.358082
+v -184 283.902733 -12.358082
+v -184 283.902733 -108.250316
+v -184 333.474696 -108.250316
+v -184 333.474696 -12.358082
+v -184 308.035302 -12.358082
+v -184 308.035302 -108.250316
+v 167.218673 345 -114.970857
+v -177.029 344.999929 -6.522923
+v 59.835953 344.999929 -6.522923
+v -177.029 344.999929 -114.103013
+v 177.029 345 115.013166
+v 177.028991 345 -105.041219
+v 69.709981 344.999929 3.342341
+v 69.709977 344.999929 115.01318
+v 64.774897 344.999929 -1.592237
+v 64.774897 344.999929 -1.592254
+v 172.114188 345 -109.996292
+v 172.114183 345 -109.996292
+v 167.218673 340.637125 -114.970857
+v -177.029 340.637054 -6.522923
+v 59.835953 340.637054 -6.522923
+v -177.029 340.637054 -114.103013
+v 64.774897 340.637054 -1.592237
+v 172.114188 340.637125 -109.996292
+v 177.029 340.637125 115.013166
+v 177.028991 340.637125 -105.041219
+v 69.709981 340.637054 3.342341
+v 69.709977 340.637054 115.01318
+v 64.774897 340.637054 -1.592254
+v 172.114183 340.637125 -109.996292
+
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.019742 0.221605 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.306675 0.221605 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306675 0.145312 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.019742 0.145312 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.874221 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874221 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.834818 0.296761 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.981363 0.296761 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.981363 0.438913 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.834818 0.438913 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.848705 0.25302 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.959829 0.25302 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.959829 0.279579 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.848705 0.279579 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874221 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874221 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135693 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135693 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.017269 0.980629 0
+vt 0.278967 0.980629 0
+vt 0.278967 0.236073 0
+vt 0.017269 0.236073 0
+vt 0.044878 0.955756 0
+vt 0.251358 0.955756 0
+vt 0.251358 0.900854 0
+vt 0.044878 0.900854 0
+vt 0.028619 0.24017 0
+vt 0.065614 0.24017 0
+vt 0.065614 0.339663 0
+vt 0.028619 0.339663 0
+vt 0.230622 0.24017 0
+vt 0.267617 0.24017 0
+vt 0.267617 0.339663 0
+vt 0.230622 0.339663 0
+vt 0.106972 0.24017 0
+vt 0.189264 0.24017 0
+vt 0.189264 0.319995 0
+vt 0.106972 0.319995 0
+vt 0.189264 0.339663 0
+vt 0.106972 0.339663 0
+vt 0.191748 0.24017 0
+vt 0.228743 0.24017 0
+vt 0.228743 0.339663 0
+vt 0.191748 0.339663 0
+vt 0.067492 0.24017 0
+vt 0.104488 0.24017 0
+vt 0.104488 0.339663 0
+vt 0.067492 0.339663 0
+vt 0.044878 0.40562 0
+vt 0.251358 0.40562 0
+vt 0.251358 0.380044 0
+vt 0.044878 0.380044 0
+vt 0.044878 0.457701 0
+vt 0.251358 0.457701 0
+vt 0.251358 0.432125 0
+vt 0.044878 0.432125 0
+vt 0.044878 0.509782 0
+vt 0.251358 0.509782 0
+vt 0.251358 0.484206 0
+vt 0.044878 0.484206 0
+vt 0.044878 0.561863 0
+vt 0.251358 0.561863 0
+vt 0.251358 0.536288 0
+vt 0.044878 0.536288 0
+vt 0.044878 0.613944 0
+vt 0.251358 0.613944 0
+vt 0.251358 0.588368 0
+vt 0.044878 0.588368 0
+vt 0.044878 0.666025 0
+vt 0.251358 0.666025 0
+vt 0.251358 0.640449 0
+vt 0.044878 0.640449 0
+vt 0.044878 0.718105 0
+vt 0.251358 0.718105 0
+vt 0.251358 0.69253 0
+vt 0.044878 0.69253 0
+vt 0.044878 0.770187 0
+vt 0.251358 0.770187 0
+vt 0.251358 0.744611 0
+vt 0.044878 0.744611 0
+vt 0.044878 0.822268 0
+vt 0.251358 0.822268 0
+vt 0.251358 0.796692 0
+vt 0.044878 0.796692 0
+vt 0.044878 0.874349 0
+vt 0.251358 0.874349 0
+vt 0.251358 0.848773 0
+vt 0.044878 0.848773 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.671687 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.671687 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.021103 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.019742 0.221605 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.670326 0.221605 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.670326 0.145312 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.019742 0.145312 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.284877 0.980629 0
+vt 0.811462 0.454045 0
+vt 0.811462 0.980629 0
+vt 0.017269 0.980629 0
+vt 0.811462 0.236073 0
+vt 0.017269 0.236073 0
+vt 0.284877 0.236073 0
+vt 0.314086 0.40562 0
+vt 0.782253 0.40562 0
+vt 0.782253 0.380044 0
+vt 0.314086 0.380044 0
+vt 0.314086 0.457701 0
+vt 0.782253 0.457701 0
+vt 0.782253 0.432125 0
+vt 0.314086 0.432125 0
+vt 0.314086 0.509782 0
+vt 0.782253 0.509782 0
+vt 0.782253 0.484206 0
+vt 0.314086 0.484206 0
+vt 0.314086 0.561863 0
+vt 0.782253 0.561863 0
+vt 0.782253 0.536288 0
+vt 0.314086 0.536288 0
+vt 0.314086 0.613944 0
+vt 0.782253 0.613944 0
+vt 0.782253 0.588368 0
+vt 0.314086 0.588368 0
+vt 0.314086 0.666025 0
+vt 0.782253 0.666025 0
+vt 0.782253 0.640449 0
+vt 0.314086 0.640449 0
+vt 0.314086 0.718105 0
+vt 0.782253 0.718105 0
+vt 0.782253 0.69253 0
+vt 0.314086 0.69253 0
+vt 0.314086 0.770186 0
+vt 0.782253 0.770186 0
+vt 0.782253 0.744611 0
+vt 0.314086 0.744611 0
+vt 0.314086 0.822268 0
+vt 0.782253 0.822268 0
+vt 0.782253 0.796692 0
+vt 0.314086 0.796692 0
+vt 0.314086 0.874348 0
+vt 0.782253 0.874348 0
+vt 0.782253 0.848773 0
+vt 0.314086 0.848773 0
+vt 0.314086 0.955756 0
+vt 0.782253 0.955756 0
+vt 0.782253 0.900854 0
+vt 0.314086 0.900854 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.681732 0.089525 0
+vt 0.654667 0.744509 0
+vt 0.018488 0.089525 0
+vt 0.795421 0.744509 0
+vt 0.018488 0.018456 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018456 0
+vt 0.795421 0.744509 0
+vt 0.834818 0.296761 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.981363 0.296761 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.981363 0.438913 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.834818 0.438913 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.848705 0.25302 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.959829 0.25302 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.959829 0.279579 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.848705 0.279579 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925946 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925946 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925946 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925946 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925945 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925945 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925946 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925946 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.000742 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.925946 0.000742 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.925946 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.874222 0.244348 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.744509 0
+vt 0.278967 0.980629 0
+vt 0.017269 0.716336 0
+vt 0.811462 0.980629 0
+vt 0.549764 0.716336 0
+vt 0.811462 0.236073 0
+vt 0.278967 0.236073 0
+vt 0.783853 0.925383 0
+vt 0.306575 0.925383 0
+vt 0.306575 0.399107 0
+vt 0.783853 0.399107 0
+vt 0.504068 0.24017 0
+vt 0.586361 0.24017 0
+vt 0.586361 0.319995 0
+vt 0.504068 0.319995 0
+vt 0.586361 0.339663 0
+vt 0.504068 0.339663 0
+vt 0.425038 0.24017 0
+vt 0.462033 0.24017 0
+vt 0.462033 0.339663 0
+vt 0.425038 0.339663 0
+vt 0.628395 0.24017 0
+vt 0.665391 0.24017 0
+vt 0.665391 0.339663 0
+vt 0.628395 0.339663 0
+vt 0.58888 0.24017 0
+vt 0.625876 0.24017 0
+vt 0.625876 0.339663 0
+vt 0.58888 0.339663 0
+vt 0.464553 0.24017 0
+vt 0.501549 0.24017 0
+vt 0.501549 0.339663 0
+vt 0.464553 0.339663 0
+vt 0.707426 0.24017 0
+vt 0.744421 0.24017 0
+vt 0.744421 0.339663 0
+vt 0.707426 0.339663 0
+vt 0.66791 0.24017 0
+vt 0.704906 0.24017 0
+vt 0.704906 0.339663 0
+vt 0.66791 0.339663 0
+vt 0.346007 0.24017 0
+vt 0.383003 0.24017 0
+vt 0.383003 0.339663 0
+vt 0.346007 0.339663 0
+vt 0.385522 0.24017 0
+vt 0.422518 0.24017 0
+vt 0.422518 0.339663 0
+vt 0.385522 0.339663 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.451434 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.451434 0
+vt 0.795421 0.603755 0
+vt 0.681732 0.091172 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.091172 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.457689 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.457689 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018457 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018457 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.503479 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.503479 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.082088 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.082088 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.783853 0.509734 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.509734 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018195 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018195 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.555524 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.555524 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.081826 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.081826 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.56178 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.56178 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018195 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018195 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.60757 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.60757 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.081826 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.081826 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.613825 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.613825 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.017933 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.017933 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.659803 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.659803 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.081826 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.081826 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.666059 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.666059 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018196 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018196 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.711848 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.711848 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.081826 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.081826 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.718104 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.718104 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018194 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018194 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.763894 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.763894 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.081826 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.081826 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.77015 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.77015 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018456 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018456 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.81594 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.81594 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.082088 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.082088 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.783853 0.822196 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.306575 0.822196 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018456 0
+vt 0.654667 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.018456 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.783853 0.867986 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.306575 0.867986 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.082088 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.018488 0.082088 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.783853 0.874242 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.603755 0
+vt 0.306575 0.874242 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.681732 0.018456 0
+vt 0.654667 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.018488 0.018456 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135693 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135693 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.549171 0.980629 0
+vt 0.549764 0.716336 0
+vt 0.811462 0.980629 0
+vt 0.549764 0.454045 0
+vt 0.811462 0.236073 0
+vt 0.549171 0.236073 0
+vt 0.576842 0.40562 0
+vt 0.78379 0.40562 0
+vt 0.78379 0.380044 0
+vt 0.576842 0.380044 0
+vt 0.576842 0.457701 0
+vt 0.78379 0.457701 0
+vt 0.78379 0.432125 0
+vt 0.576842 0.432125 0
+vt 0.576842 0.509782 0
+vt 0.78379 0.509782 0
+vt 0.78379 0.484206 0
+vt 0.576842 0.484206 0
+vt 0.576842 0.561863 0
+vt 0.78379 0.561863 0
+vt 0.78379 0.536288 0
+vt 0.576842 0.536288 0
+vt 0.576842 0.613944 0
+vt 0.78379 0.613944 0
+vt 0.78379 0.588368 0
+vt 0.576842 0.588368 0
+vt 0.576842 0.666025 0
+vt 0.78379 0.666025 0
+vt 0.78379 0.640449 0
+vt 0.576842 0.640449 0
+vt 0.576842 0.718105 0
+vt 0.78379 0.718105 0
+vt 0.78379 0.69253 0
+vt 0.576842 0.69253 0
+vt 0.576842 0.770187 0
+vt 0.78379 0.770187 0
+vt 0.78379 0.744611 0
+vt 0.576842 0.744611 0
+vt 0.576842 0.822268 0
+vt 0.78379 0.822268 0
+vt 0.78379 0.796692 0
+vt 0.576842 0.796692 0
+vt 0.576842 0.874349 0
+vt 0.78379 0.874349 0
+vt 0.78379 0.848773 0
+vt 0.576842 0.848773 0
+vt 0.019091 0.221605 0
+vt 0.576842 0.955756 0
+vt 0.306675 0.221605 0
+vt 0.78379 0.955756 0
+vt 0.306675 0.145312 0
+vt 0.78379 0.900854 0
+vt 0.019091 0.145312 0
+vt 0.576842 0.900854 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.654667 0.603755 0
+vt 0.654667 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135693 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135693 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100152 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.135692 0
+vt 0.795421 0.744509 0
+vt 0.795421 0.603755 0
+vt 0.308035 0.135692 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.308035 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.020452 0.100151 0
+vt 0.795421 0.603755 0
+vt 0.795421 0.744509 0
+vt 0.28688 0.980629 0
+vt 0.017269 0.978627 0
+vt 0.811462 0.980629 0
+vt 0.549171 0.980629 0
+vt 0.549171 0.236073 0
+vt 0.28688 0.236073 0
+vt 0.811462 0.236073 0
+vt 0.314551 0.40562 0
+vt 0.521499 0.40562 0
+vt 0.521499 0.380044 0
+vt 0.314551 0.380044 0
+vt 0.314551 0.457701 0
+vt 0.521499 0.457701 0
+vt 0.521499 0.432125 0
+vt 0.314551 0.432125 0
+vt 0.314551 0.509782 0
+vt 0.521499 0.509782 0
+vt 0.521499 0.484206 0
+vt 0.314551 0.484206 0
+vt 0.314551 0.561863 0
+vt 0.521499 0.561863 0
+vt 0.521499 0.536288 0
+vt 0.314551 0.536288 0
+vt 0.314551 0.613944 0
+vt 0.521499 0.613944 0
+vt 0.521499 0.588368 0
+vt 0.314551 0.588368 0
+vt 0.314551 0.666025 0
+vt 0.521499 0.666025 0
+vt 0.521499 0.640449 0
+vt 0.314551 0.640449 0
+vt 0.314551 0.718105 0
+vt 0.521499 0.718105 0
+vt 0.521499 0.69253 0
+vt 0.314551 0.69253 0
+vt 0.314551 0.770187 0
+vt 0.521499 0.770187 0
+vt 0.521499 0.744611 0
+vt 0.314551 0.744611 0
+vt 0.314551 0.822268 0
+vt 0.521499 0.822268 0
+vt 0.521499 0.796692 0
+vt 0.314551 0.796692 0
+vt 0.314551 0.874349 0
+vt 0.521499 0.874349 0
+vt 0.521499 0.848773 0
+vt 0.314551 0.848773 0
+vt 0.314551 0.955756 0
+vt 0.019091 0.221605 0
+vt 0.521499 0.955756 0
+vt 0.306675 0.221605 0
+vt 0.521499 0.900854 0
+vt 0.306675 0.145312 0
+vt 0.314551 0.900854 0
+vt 0.019091 0.145312 0
+vt 0.775245 0.454045 0
+vt 0.775245 0.965459 0
+vt 0.796417 0.980629 0
+vt 0.562247 0.980629 0
+vt 0.032313 0.731414 0
+vt 0.285232 0.980629 0
+vt 0.543499 0.731414 0
+vt 0.794419 0.980629 0
+vt 0.032313 0.454044 0
+vt 0.032313 0.963586 0
+vt 0.796383 0.980629 0
+vt 0.032313 0.980629 0
+vt 0.796418 0.469123 0
+vt 0.796417 0.454045 0
+vt 0.321477 0.980629 0
+vt 0.796417 0.944029 0
+vt 0.540956 0.980629 0
+vt 0.263922 0.980629 0
+vt 0.564809 0.710123 0
+vt 0.299956 0.980629 0
+vt 0.263922 0.980629 0
+vt 0.564809 0.469123 0
+vt 0.274573 0.980629 0
+vt 0.554158 0.720773 0
+vt 0.274573 0.980629 0
+vt 0.554158 0.720773 0
+vt 0.785811 0.454045 0
+vt 0.785811 0.954723 0
+vt 0.785811 0.454045 0
+vt 0.785811 0.954723 0
+vt 0.775245 0.444629 0
+vt 0.903286 0.734029 0
+vt 0.826137 0.974164 0
+vt 0.796417 0.971213 0
+vt 0.562247 0.971213 0
+vt 0.987305 0.462567 0
+vt 0.285232 0.971213 0
+vt 0.941568 0.957584 0
+vt 0.987305 0.81458 0
+vt 0.794419 0.971213 0
+vt 0.032313 0.444629 0
+vt 0.827427 0.462567 0
+vt 0.274573 0.971213 0
+vt 0.931352 0.959376 0
+vt 0.785811 0.444629 0
+vt 0.893086 0.735912 0
+vt 0.796383 0.971213 0
+vt 0.032313 0.971213 0
+vt 0.826137 0.974164 0
+vt 0.796417 0.444629 0
+vt 0.321477 0.971213 0
+vt 0.882879 0.737754 0
+vt 0.826137 0.647135 0
+vt 0.540956 0.971213 0
+vt 0.263922 0.971213 0
+vt 0.921138 0.961177 0
+vt 0.985627 0.808207 0
+vt 0.299956 0.971213 0
+vt 0.263922 0.971213 0
+vt 0.985627 0.974164 0
+vt 0.274573 0.971213 0
+vt 0.931352 0.959376 0
+vt 0.785811 0.444629 0
+vt 0.893086 0.735912 0
+
+f 162/358 169/363 163/359
+f 163/359 169/363 172/366
+f 167/361 163/359 172/366
+f 170/364 157/353 171/365
+f 171/365 157/353 160/356
+f 154/350 173/367 155/351
+f 155/351 173/367 176/370
+f 174/368 161/357 175/369
+f 161/357 165/360 175/369
+f 175/369 165/360 168/362
+f 180/374 156/352 155/351
+f 180/374 155/351 179/373
+f 155/351 176/370 179/373
+f 176/370 175/369 179/373
+f 175/369 168/362 179/373
+f 168/362 167/361 179/373
+f 167/361 172/366 179/373
+f 172/366 171/365 179/373
+f 171/365 160/356 179/373
+f 160/356 159/355 179/373
+f 184/378 177/371 178/372
+f 184/378 178/372 183/377
+f 188/382 181/375 182/376
+f 188/382 182/376 187/381
+f 192/386 185/379 186/380
+f 192/386 186/380 191/385
+f 196/390 189/383 190/384
+f 196/390 190/384 195/389
+f 200/394 193/387 194/388
+f 200/394 194/388 199/393
+f 204/398 197/391 198/392
+f 204/398 198/392 203/397
+f 208/402 201/395 202/396
+f 208/402 202/396 207/401
+f 212/406 205/399 206/400
+f 212/406 206/400 211/405
+f 152/348 213/407 214/408
+f 152/348 214/408 151/347
+f 216/410 209/403 210/404
+f 216/410 210/404 215/409
+f 153/349 148/344 147/343
+f 154/350 153/349 147/343
+f 173/367 154/350 147/343
+f 174/368 173/367 147/343
+f 161/357 174/368 147/343
+f 162/358 161/357 147/343
+f 169/363 162/358 147/343
+f 170/364 169/363 147/343
+f 157/353 170/364 147/343
+f 158/354 157/353 147/343
+f 158/354 147/343 159/355
+f 159/355 147/343 146/342
+f 179/373 159/355 146/342
+f 178/372 179/373 146/342
+f 183/377 178/372 146/342
+f 182/376 183/377 146/342
+f 187/381 182/376 146/342
+f 186/380 187/381 146/342
+f 191/385 186/380 146/342
+f 190/384 191/385 146/342
+f 195/389 190/384 146/342
+f 194/388 195/389 146/342
+f 199/393 194/388 146/342
+f 198/392 199/393 146/342
+f 203/397 198/392 146/342
+f 202/396 203/397 146/342
+f 207/401 202/396 146/342
+f 206/400 207/401 146/342
+f 211/405 206/400 146/342
+f 210/404 211/405 146/342
+f 215/409 210/404 146/342
+f 214/408 215/409 146/342
+f 151/347 214/408 146/342
+f 150/346 151/347 146/342
+f 148/344 153/349 145/341
+f 153/349 156/352 145/341
+f 156/352 180/374 145/341
+f 180/374 177/371 145/341
+f 177/371 184/378 145/341
+f 184/378 181/375 145/341
+f 181/375 188/382 145/341
+f 188/382 185/379 145/341
+f 185/379 192/386 145/341
+f 192/386 189/383 145/341
+f 189/383 196/390 145/341
+f 196/390 193/387 145/341
+f 193/387 200/394 145/341
+f 200/394 197/391 145/341
+f 197/391 204/398 145/341
+f 204/398 201/395 145/341
+f 201/395 208/402 145/341
+f 208/402 205/399 145/341
+f 205/399 212/406 145/341
+f 212/406 209/403 145/341
+f 209/403 216/410 145/341
+f 216/410 213/407 145/341
+f 213/407 152/348 145/341
+f 145/341 152/348 149/345
+f 145/341 149/345 146/342
+f 149/345 150/346 146/342
+f 345/666 352/673 313/631
+f 342/663 347/668 348/669 341/662
+f 326/647 331/652 332/653 325/646
+f 346/667 347/668 314/633
+f 350/671 351/672 314/633
+f 318/639 319/640 315/635
+f 322/643 323/644 315/635
+f 338/659 339/660 314/633
+f 342/663 343/664 314/633
+f 341/662 348/669 313/631
+f 355/676 350/671 314/633
+f 350/671 355/676 356/677 349/670
+f 317/638 324/645 316/637
+f 359/680 354/675 314/633
+f 320/641 316/637 315/635 319/640
+f 326/647 327/648 315/635
+f 330/651 331/652 315/635
+f 332/653 329/650 316/637
+f 328/649 325/646 316/637
+f 336/657 333/654 313/631 316/637
+f 349/670 356/677 313/631
+f 356/677 353/674 313/631
+f 335/656 330/651 315/635
+f 347/668 342/663 314/633
+f 321/642 328/649 316/637
+f 339/660 334/655 314/633
+f 343/664 338/659 314/633
+f 323/644 318/639 315/635
+f 351/672 346/667 314/633
+f 330/651 335/656 336/657 329/650
+f 352/673 349/670 313/631
+f 337/658 344/665 313/631
+f 335/656 315/635 314/633 334/655
+f 325/646 332/653 316/637
+f 331/652 326/647 315/635
+f 358/679 359/680 314/633
+f 324/645 321/642 316/637
+f 344/665 341/662 313/631
+f 360/681 357/678 313/631
+f 340/661 337/658 313/631
+f 346/667 351/672 352/673 345/666
+f 348/669 345/666 313/631
+f 334/655 339/660 340/661 333/654
+f 322/643 327/648 328/649 321/642
+f 338/659 343/664 344/665 337/658
+f 354/675 355/676 314/633
+f 318/639 323/644 324/645 317/638
+f 327/648 322/643 315/635
+f 353/674 354/675 359/680 360/681
+f 329/650 336/657 316/637
+f 320/641 317/638 316/637
+f 333/654 340/661 313/631
+f 353/674 360/681 313/631
+f 357/678 358/679 314/633 313/631
+f 466/909 481/922 467/910
+f 467/910 481/922 484/925
+f 471/912 467/910 484/925
+f 482/923 477/918 483/924
+f 483/924 477/918 480/921
+f 474/915 485/926 475/916
+f 475/916 485/926 488/929
+f 486/927 465/908 487/928
+f 465/908 469/911 487/928
+f 487/928 469/911 472/913
+f 478/919 493/934 479/920
+f 479/920 493/934 496/937
+f 494/935 489/930 495/936
+f 495/936 489/930 492/933
+f 498/939 501/942 499/940
+f 499/940 501/942 504/945
+f 502/943 473/914 503/944
+f 503/944 473/914 476/917
+f 497/938 460/903 459/902
+f 498/939 497/938 459/902
+f 501/942 498/939 459/902
+f 502/943 501/942 459/902
+f 473/914 502/943 459/902
+f 474/915 473/914 459/902
+f 485/926 474/915 459/902
+f 486/927 485/926 459/902
+f 465/908 486/927 459/902
+f 466/909 465/908 459/902
+f 481/922 466/909 459/902
+f 482/923 481/922 459/902
+f 477/918 482/923 459/902
+f 478/919 477/918 459/902
+f 493/934 478/919 459/902
+f 494/935 493/934 459/902
+f 489/930 494/935 459/902
+f 490/931 489/930 459/902
+f 491/932 490/931 459/902
+f 463/906 497/938 500/941
+f 463/906 500/941 464/907
+f 500/941 499/940 464/907
+f 499/940 504/945 464/907
+f 504/945 503/944 464/907
+f 503/944 476/917 464/907
+f 476/917 475/916 464/907
+f 475/916 488/929 464/907
+f 488/929 487/928 464/907
+f 487/928 472/913 464/907
+f 472/913 471/912 464/907
+f 471/912 484/925 464/907
+f 484/925 483/924 464/907
+f 483/924 480/921 464/907
+f 480/921 479/920 464/907
+f 479/920 496/937 464/907
+f 496/937 495/936 464/907
+f 495/936 492/933 464/907
+f 492/933 491/932 464/907
+f 491/932 459/902 464/907
+f 464/907 459/902 458/900
+f 461/904 464/907 458/900
+f 460/903 497/938 463/906
+f 460/903 463/906 457/898
+f 457/898 463/906 462/905
+f 457/898 462/905 458/900
+f 462/905 461/904 458/900
+f 685/1412 686/1413 691/1418
+f 685/1412 691/1418 692/1419
+f 689/1416 690/1417 695/1422
+f 689/1416 695/1422 696/1423
+f 693/1420 694/1421 700/1427
+f 694/1421 699/1426 700/1427
+f 697/1424 698/1425 703/1430
+f 697/1424 703/1430 704/1431
+f 701/1428 702/1429 708/1435
+f 702/1429 707/1434 708/1435
+f 705/1432 706/1433 712/1439
+f 706/1433 711/1438 712/1439
+f 709/1436 710/1437 715/1442
+f 709/1436 715/1442 716/1443
+f 713/1440 714/1441 720/1451
+f 714/1441 719/1449 720/1451
+f 679/1406 680/1407 676/1403
+f 680/1407 677/1404 676/1403
+f 677/1404 684/1411 676/1403
+f 684/1411 681/1408 676/1403
+f 681/1408 688/1415 676/1403
+f 688/1415 685/1412 676/1403
+f 685/1412 692/1419 676/1403
+f 692/1419 689/1416 676/1403
+f 689/1416 696/1423 676/1403
+f 696/1423 693/1420 676/1403
+f 694/1421 695/1422 675/1402
+f 695/1422 690/1417 675/1402
+f 690/1417 691/1418 675/1402
+f 691/1418 686/1413 675/1402
+f 686/1413 687/1414 675/1402
+f 687/1414 682/1409 675/1402
+f 682/1409 683/1410 675/1402
+f 683/1410 678/1405 675/1402
+f 678/1405 679/1406 675/1402
+f 679/1406 676/1403 675/1402
+f 718/1447 719/1449 674/1400
+f 719/1449 714/1441 674/1400
+f 714/1441 715/1442 674/1400
+f 715/1442 710/1437 674/1400
+f 710/1437 711/1438 674/1400
+f 711/1438 706/1433 674/1400
+f 706/1433 707/1434 674/1400
+f 707/1434 702/1429 674/1400
+f 702/1429 703/1430 674/1400
+f 703/1430 698/1425 674/1400
+f 698/1425 699/1426 674/1400
+f 699/1426 694/1421 674/1400
+f 694/1421 675/1402 674/1400
+f 676/1403 693/1420 673/1398
+f 693/1420 700/1427 673/1398
+f 700/1427 697/1424 673/1398
+f 697/1424 704/1431 673/1398
+f 704/1431 701/1428 673/1398
+f 701/1428 708/1435 673/1398
+f 708/1435 705/1432 673/1398
+f 705/1432 712/1439 673/1398
+f 712/1439 709/1436 673/1398
+f 709/1436 716/1443 673/1398
+f 716/1443 713/1440 673/1398
+f 713/1440 720/1451 673/1398
+f 720/1451 717/1445 673/1398
+f 717/1445 718/1447 673/1398
+f 718/1447 674/1400 673/1398
+f 677/1404 678/1405 683/1410
+f 677/1404 683/1410 684/1411
+f 681/1408 682/1409 687/1414
+f 681/1408 687/1414 688/1415
+f 829/1667 830/1668 835/1673
+f 829/1667 835/1673 836/1674
+f 833/1671 834/1672 839/1677
+f 833/1671 839/1677 840/1678
+f 837/1675 838/1676 844/1682
+f 838/1676 843/1681 844/1682
+f 841/1679 842/1680 847/1685
+f 841/1679 847/1685 848/1686
+f 845/1683 846/1684 852/1690
+f 846/1684 851/1689 852/1690
+f 849/1687 850/1688 856/1694
+f 850/1688 855/1693 856/1694
+f 853/1691 854/1692 859/1697
+f 853/1691 859/1697 860/1698
+f 857/1695 858/1696 864/1705
+f 858/1696 863/1703 864/1705
+f 823/1661 824/1662 820/1657
+f 824/1662 821/1659 820/1657
+f 821/1659 828/1666 820/1657
+f 828/1666 825/1663 820/1657
+f 825/1663 832/1670 820/1657
+f 832/1670 829/1667 820/1657
+f 829/1667 836/1674 820/1657
+f 836/1674 833/1671 820/1657
+f 833/1671 840/1678 820/1657
+f 840/1678 837/1675 820/1657
+f 838/1676 839/1677 819/1656
+f 839/1677 834/1672 819/1656
+f 834/1672 835/1673 819/1656
+f 835/1673 830/1668 819/1656
+f 830/1668 831/1669 819/1656
+f 831/1669 826/1664 819/1656
+f 826/1664 827/1665 819/1656
+f 827/1665 822/1660 819/1656
+f 822/1660 823/1661 819/1656
+f 823/1661 820/1657 819/1656
+f 862/1701 863/1703 818/1655
+f 863/1703 858/1696 818/1655
+f 858/1696 859/1697 818/1655
+f 859/1697 854/1692 818/1655
+f 854/1692 855/1693 818/1655
+f 855/1693 850/1688 818/1655
+f 850/1688 851/1689 818/1655
+f 851/1689 846/1684 818/1655
+f 846/1684 847/1685 818/1655
+f 847/1685 842/1680 818/1655
+f 842/1680 843/1681 818/1655
+f 843/1681 838/1676 818/1655
+f 838/1676 819/1656 818/1655
+f 820/1657 837/1675 817/1652
+f 837/1675 844/1682 817/1652
+f 844/1682 841/1679 817/1652
+f 841/1679 848/1686 817/1652
+f 848/1686 845/1683 817/1652
+f 845/1683 852/1690 817/1652
+f 852/1690 849/1687 817/1652
+f 849/1687 856/1694 817/1652
+f 856/1694 853/1691 817/1652
+f 853/1691 860/1698 817/1652
+f 860/1698 857/1695 817/1652
+f 857/1695 864/1705 817/1652
+f 864/1705 861/1699 817/1652
+f 861/1699 862/1701 817/1652
+f 862/1701 818/1655 817/1652
+f 821/1659 822/1660 827/1665
+f 821/1659 827/1665 828/1666
+f 825/1663 826/1664 831/1669
+f 825/1663 831/1669 832/1670
+f 141/331 142/334 70/132 69/130
+f 142/333 143/337 71/134 70/131
+f 143/336 144/340 72/136 71/133
+f 144/339 141/330 69/129 72/135
+f 77/139 78/142 6/4 5/2
+f 78/141 79/145 7/6 6/3
+f 79/144 80/148 8/8 7/5
+f 80/147 77/138 5/1 8/7
+f 10/12 82/154 81/151 9/10
+f 11/14 83/157 82/153 10/11
+f 12/16 84/160 83/156 11/13
+f 9/9 81/150 84/159 12/15
+f 14/20 86/166 85/163 13/18
+f 15/22 87/169 86/165 14/19
+f 16/24 88/172 87/168 15/21
+f 13/17 85/162 88/171 16/23
+f 18/28 90/178 89/175 17/26
+f 19/30 91/181 90/177 18/27
+f 20/32 92/184 91/180 19/29
+f 17/25 89/174 92/183 20/31
+f 22/36 94/190 93/187 21/34
+f 23/38 95/193 94/189 22/35
+f 24/40 96/196 95/192 23/37
+f 21/33 93/186 96/195 24/39
+f 26/44 98/202 97/199 25/42
+f 27/46 99/205 98/201 26/43
+f 28/48 100/208 99/204 27/45
+f 25/41 97/198 100/207 28/47
+f 30/52 102/214 101/211 29/50
+f 31/54 103/217 102/213 30/51
+f 32/56 104/220 103/216 31/53
+f 29/49 101/210 104/219 32/55
+f 105/223 106/226 34/60 33/58
+f 106/225 107/229 35/62 34/59
+f 107/228 108/232 36/64 35/61
+f 108/231 105/222 33/57 36/63
+f 109/235 110/238 38/68 37/66
+f 110/237 111/241 39/70 38/67
+f 111/240 112/244 40/72 39/69
+f 112/243 109/234 37/65 40/71
+f 113/247 114/250 42/76 41/74
+f 114/249 115/253 43/78 42/75
+f 115/252 116/256 44/80 43/77
+f 116/255 113/246 41/73 44/79
+f 117/259 118/262 46/84 45/82
+f 118/261 119/265 47/86 46/83
+f 119/264 120/268 48/88 47/85
+f 120/267 117/258 45/81 48/87
+f 121/271 122/274 50/92 49/90
+f 122/273 123/277 51/94 50/91
+f 123/276 124/280 52/96 51/93
+f 124/279 121/270 49/89 52/95
+f 125/283 126/286 54/100 53/98
+f 126/285 127/289 55/102 54/99
+f 127/288 128/292 56/104 55/101
+f 128/291 125/282 53/97 56/103
+f 129/295 130/298 58/108 57/106
+f 130/297 131/301 59/110 58/107
+f 131/300 132/304 60/112 59/109
+f 132/303 129/294 57/105 60/111
+f 133/307 134/310 62/116 61/114
+f 134/309 135/313 63/118 62/115
+f 135/312 136/316 64/120 63/117
+f 136/315 133/306 61/113 64/119
+f 137/319 138/322 66/124 65/122
+f 138/321 139/325 67/126 66/123
+f 139/324 140/328 68/128 67/125
+f 140/327 137/318 65/121 68/127
+f 309/621 310/624 262/494 261/492
+f 310/623 311/627 263/496 262/493
+f 311/626 312/630 264/498 263/495
+f 312/629 309/620 261/491 264/497
+f 269/501 270/504 222/414 221/412
+f 270/503 271/507 223/416 222/413
+f 271/506 272/510 224/418 223/415
+f 272/509 269/500 221/411 224/417
+f 273/513 274/516 226/422 225/420
+f 274/515 275/519 227/424 226/421
+f 275/518 276/522 228/426 227/423
+f 276/521 273/512 225/419 228/425
+f 277/525 278/528 230/430 229/428
+f 278/527 279/531 231/432 230/429
+f 279/530 280/534 232/434 231/431
+f 280/533 277/524 229/427 232/433
+f 281/537 282/540 234/438 233/436
+f 282/539 283/543 235/440 234/437
+f 283/542 284/546 236/442 235/439
+f 284/545 281/536 233/435 236/441
+f 285/549 286/552 238/446 237/444
+f 286/551 287/555 239/448 238/445
+f 287/554 288/558 240/450 239/447
+f 288/557 285/548 237/443 240/449
+f 289/561 290/564 242/454 241/452
+f 290/563 291/567 243/456 242/453
+f 291/566 292/570 244/458 243/455
+f 292/569 289/560 241/451 244/457
+f 293/573 294/576 246/462 245/460
+f 294/575 295/579 247/464 246/461
+f 295/578 296/582 248/466 247/463
+f 296/581 293/572 245/459 248/465
+f 297/585 298/588 250/470 249/468
+f 298/587 299/591 251/472 250/469
+f 299/590 300/594 252/474 251/471
+f 300/593 297/584 249/467 252/473
+f 301/597 302/600 254/478 253/476
+f 302/599 303/603 255/480 254/477
+f 303/602 304/606 256/482 255/479
+f 304/605 301/596 253/475 256/481
+f 305/609 306/612 258/486 257/484
+f 306/611 307/615 259/488 258/485
+f 307/614 308/618 260/490 259/487
+f 308/617 305/608 257/483 260/489
+f 820/1658 817/1654 314/634 315/636
+f 877/1739 880/1748 878/1742 879/1745
+f 883/1755 884/1759 885/1763 886/1766
+f 873/1730 867/1713 458/901
+f 817/1653 868/1716 865/1708 314/633
+f 458/901 867/1713 866/1711 457/899
+f 314/633 870/1722 869/1719 313/632
+f 874/1732 673/1399 871/1725
+f 674/1401 872/1728 871/1725 673/1399
+f 875/1734 314/633 865/1708
+f 870/1722 314/633 876/1736
+f 863/1704 862/1702 861/1700 864/1706
+f 457/899 866/1711 868/1716 817/1653
+f 313/632 869/1719 872/1728 674/1401
+f 406/765 454/891 453/888 405/763
+f 407/767 455/894 454/890 406/764
+f 408/769 456/897 455/893 407/766
+f 405/762 453/887 456/896 408/768
+f 366/685 414/773 413/771 365/683
+f 506/952 367/687 415/775 508/959
+f 368/689 416/777 415/775 367/686
+f 573/1186 365/682 413/771 575/1194
+f 370/693 418/783 417/780 369/691
+f 371/695 419/786 418/782 370/692
+f 372/697 420/789 419/785 371/694
+f 369/690 417/779 420/788 372/696
+f 374/701 422/795 421/792 373/699
+f 375/703 423/798 422/794 374/700
+f 376/705 424/801 423/797 375/702
+f 373/698 421/791 424/800 376/704
+f 378/709 426/807 425/804 377/707
+f 379/711 427/810 426/806 378/708
+f 380/713 428/813 427/809 379/710
+f 377/706 425/803 428/812 380/712
+f 382/717 430/819 429/816 381/715
+f 383/719 431/822 430/818 382/716
+f 384/721 432/825 431/821 383/718
+f 381/714 429/815 432/824 384/720
+f 386/725 434/831 433/828 385/723
+f 387/727 435/834 434/830 386/724
+f 388/729 436/837 435/833 387/726
+f 385/722 433/827 436/836 388/728
+f 390/733 438/843 437/840 389/731
+f 391/735 439/846 438/842 390/732
+f 392/737 440/849 439/845 391/734
+f 389/730 437/839 440/848 392/736
+f 394/741 442/855 441/852 393/739
+f 395/743 443/858 442/854 394/740
+f 396/745 444/861 443/857 395/742
+f 393/738 441/851 444/860 396/744
+f 398/749 446/867 445/864 397/747
+f 399/751 447/870 446/866 398/748
+f 400/753 448/873 447/869 399/750
+f 397/746 445/863 448/872 400/752
+f 402/757 450/879 449/876 401/755
+f 403/759 451/882 450/878 402/756
+f 404/761 452/885 451/881 403/758
+f 401/754 449/875 452/884 404/760
+f 508/958 512/973 510/966 506/950
+f 507/955 416/777 368/688 505/949
+f 511/970 507/954 505/948 509/962
+f 512/972 516/987 514/980 510/965
+f 515/984 511/969 509/960 513/976
+f 516/986 520/1001 518/994 514/979
+f 519/998 515/983 513/974 517/990
+f 520/1000 524/1015 522/1008 518/993
+f 523/1011 519/997 517/989 521/1005
+f 524/1014 528/1029 526/1022 522/1006
+f 527/1026 523/1010 521/1004 525/1018
+f 528/1028 532/1043 530/1036 526/1021
+f 531/1040 527/1025 525/1016 529/1032
+f 532/1042 536/1057 534/1050 530/1035
+f 535/1053 531/1039 529/1030 533/1047
+f 536/1056 540/1071 538/1064 534/1048
+f 539/1067 535/1052 533/1046 537/1061
+f 540/1070 544/1085 542/1078 538/1062
+f 543/1082 539/1066 537/1060 541/1074
+f 544/1084 548/1099 546/1092 542/1077
+f 547/1096 543/1081 541/1072 545/1088
+f 548/1098 552/1113 550/1106 546/1091
+f 551/1109 547/1095 545/1086 549/1103
+f 552/1112 556/1127 554/1120 550/1104
+f 555/1124 551/1108 549/1102 553/1116
+f 556/1126 560/1141 558/1134 554/1119
+f 559/1137 555/1123 553/1114 557/1131
+f 560/1140 564/1155 562/1148 558/1132
+f 563/1152 559/1136 557/1130 561/1144
+f 564/1154 568/1169 566/1162 562/1147
+f 567/1166 563/1151 561/1142 565/1158
+f 568/1168 572/1183 570/1176 566/1161
+f 571/1179 567/1165 565/1156 569/1173
+f 572/1182 576/1196 574/1190 570/1174
+f 575/1193 571/1178 569/1172 573/1184
+f 576/1197 414/773 366/684 574/1189
+f 508/1 415/1 508/1 415/1
+f 510/964 506/951 505/947 509/961
+f 512/972 510/963 509/960 511/968
+f 520/1000 518/992 517/989 519/996
+f 518/991 514/978 513/975 517/988
+f 526/1020 522/1007 521/1003 525/1017
+f 528/1028 526/1019 525/1016 527/1024
+f 534/1049 530/1034 529/1031 533/1045
+f 533/1044 535/1052 536/1055 534/1048
+f 542/1076 538/1063 537/1059 541/1073
+f 544/1084 542/1075 541/1072 543/1080
+f 550/1105 546/1090 545/1087 549/1101
+f 549/1100 551/1108 552/1111 550/1104
+f 558/1133 554/1118 553/1115 557/1129
+f 557/1128 559/1136 560/1139 558/1132
+f 566/1160 562/1146 561/1143 565/1157
+f 568/1168 566/1159 565/1156 567/1164
+f 574/1188 570/1175 569/1171 573/1185
+f 574/1187 576/1196 575/1192 573/1184
+f 505/946 507/954 508/957 506/950
+f 516/986 514/977 513/974 515/982
+f 521/1002 523/1010 524/1013 522/1006
+f 532/1042 530/1033 529/1030 531/1038
+f 537/1058 539/1066 540/1069 538/1062
+f 548/1098 546/1089 545/1086 547/1094
+f 560/1 556/1 560/1 556/1
+f 556/1126 554/1117 553/1114 555/1122
+f 555/1 553/1 555/1 553/1
+f 564/1154 562/1145 561/1142 563/1150
+f 569/1170 571/1178 572/1181 570/1174
+f 629/1280 630/1283 582/1201 581/1199
+f 630/1282 631/1286 583/1203 582/1200
+f 631/1285 632/1289 584/1205 583/1202
+f 632/1288 629/1279 581/1198 584/1204
+f 633/1292 634/1295 586/1209 585/1207
+f 634/1294 635/1298 587/1211 586/1208
+f 635/1297 636/1301 588/1213 587/1210
+f 636/1300 633/1291 585/1206 588/1212
+f 637/1304 638/1307 590/1217 589/1215
+f 638/1306 639/1310 591/1219 590/1216
+f 639/1309 640/1313 592/1221 591/1218
+f 640/1312 637/1303 589/1214 592/1220
+f 641/1316 642/1319 594/1225 593/1223
+f 642/1318 643/1322 595/1227 594/1224
+f 643/1321 644/1325 596/1229 595/1226
+f 644/1324 641/1315 593/1222 596/1228
+f 645/1328 646/1331 598/1233 597/1231
+f 646/1330 647/1334 599/1235 598/1232
+f 647/1333 648/1337 600/1237 599/1234
+f 648/1336 645/1327 597/1230 600/1236
+f 649/1340 650/1343 602/1241 601/1239
+f 650/1342 651/1346 603/1243 602/1240
+f 651/1345 652/1349 604/1245 603/1242
+f 652/1348 649/1339 601/1238 604/1244
+f 653/1352 654/1355 606/1249 605/1247
+f 654/1354 655/1358 607/1251 606/1248
+f 655/1357 656/1361 608/1253 607/1250
+f 656/1360 653/1351 605/1246 608/1252
+f 657/1364 658/1367 610/1257 609/1255
+f 658/1366 659/1370 611/1259 610/1256
+f 659/1369 660/1373 612/1261 611/1258
+f 660/1372 657/1363 609/1254 612/1260
+f 661/1376 662/1379 614/1265 613/1263
+f 662/1378 663/1382 615/1267 614/1264
+f 663/1381 664/1385 616/1269 615/1266
+f 664/1384 661/1375 613/1262 616/1268
+f 665/1388 666/1391 618/1273 617/1271
+f 666/1390 667/1394 619/1275 618/1272
+f 667/1393 668/1397 620/1277 619/1274
+f 668/1396 665/1387 617/1270 620/1276
+f 719/1448 718/1446 717/1444 720/1450
+f 773/1534 774/1537 726/1455 725/1453
+f 774/1536 775/1540 727/1457 726/1454
+f 775/1539 776/1543 728/1459 727/1456
+f 776/1542 773/1533 725/1452 728/1458
+f 777/1546 778/1549 730/1463 729/1461
+f 778/1548 779/1552 731/1465 730/1462
+f 779/1551 780/1555 732/1467 731/1464
+f 780/1554 777/1545 729/1460 732/1466
+f 781/1558 782/1561 734/1471 733/1469
+f 782/1560 783/1564 735/1473 734/1470
+f 783/1563 784/1567 736/1475 735/1472
+f 784/1566 781/1557 733/1468 736/1474
+f 785/1570 786/1573 738/1479 737/1477
+f 786/1572 787/1576 739/1481 738/1478
+f 787/1575 788/1579 740/1483 739/1480
+f 788/1578 785/1569 737/1476 740/1482
+f 789/1582 790/1585 742/1487 741/1485
+f 790/1584 791/1588 743/1489 742/1486
+f 791/1587 792/1591 744/1491 743/1488
+f 792/1590 789/1581 741/1484 744/1490
+f 793/1594 794/1597 746/1495 745/1493
+f 794/1596 795/1600 747/1497 746/1494
+f 795/1599 796/1603 748/1499 747/1496
+f 796/1602 793/1593 745/1492 748/1498
+f 797/1606 798/1609 750/1503 749/1501
+f 798/1608 799/1612 751/1505 750/1502
+f 799/1611 800/1615 752/1507 751/1504
+f 800/1614 797/1605 749/1500 752/1506
+f 801/1618 802/1621 754/1511 753/1509
+f 802/1620 803/1624 755/1513 754/1510
+f 803/1623 804/1627 756/1515 755/1512
+f 804/1626 801/1617 753/1508 756/1514
+f 805/1630 806/1633 758/1519 757/1517
+f 806/1632 807/1636 759/1521 758/1518
+f 807/1635 808/1639 760/1523 759/1520
+f 808/1638 805/1629 757/1516 760/1522
+f 809/1642 810/1645 762/1527 761/1525
+f 810/1644 811/1648 763/1529 762/1526
+f 811/1647 812/1651 764/1531 763/1528
+f 812/1650 809/1641 761/1524 764/1530
+f 877/1738 879/1744 881/1750 882/1752
+f 888/1770 887/1768 885/1762 884/1758
+f 868/1715 880/1747 877/1737 865/1707
+f 866/1710 878/1741 880/1746 868/1714
+f 867/1712 879/1743 878/1740 866/1709
+f 865/1707 877/1737 882/1751 875/1733
+f 873/1729 881/1749 879/1743 867/1712
+f 871/1724 885/1761 887/1767 874/1731
+f 869/1718 883/1754 886/1765 872/1727
+f 870/1721 884/1757 883/1753 869/1717
+f 872/1726 886/1764 885/1760 871/1723
+f 876/1735 888/1769 884/1756 870/1720
+f 775/1538 774/1535 773/1532 776/1541
+f 779/1550 778/1547 777/1544 780/1553
+f 783/1562 782/1559 781/1556 784/1565
+f 787/1574 786/1571 785/1568 788/1577
+f 791/1586 790/1583 789/1580 792/1589
+f 795/1598 794/1595 793/1592 796/1601
+f 799/1610 798/1607 797/1604 800/1613
+f 803/1622 802/1619 801/1616 804/1625
+f 807/1634 806/1631 805/1628 808/1637
+f 811/1646 810/1643 809/1640 812/1649
+f 416/776 507/953 508/956 415/774
+f 511/967 515/981 516/985 512/971
+f 519/995 523/1009 524/1012 520/999
+f 527/1023 531/1037 532/1041 528/1027
+f 535/1051 539/1065 540/1068 536/1054
+f 543/1079 547/1093 548/1097 544/1083
+f 551/1107 555/1121 556/1125 552/1110
+f 559/1135 563/1149 564/1153 560/1138
+f 567/1163 571/1177 572/1180 568/1167
+f 575/1191 413/770 414/772 576/1195
+f 451/880 452/883 449/874 450/877
+f 455/892 456/895 453/886 454/889
+f 427/808 428/811 425/802 426/805
+f 438/841 439/844 440/847 437/838
+f 418/781 419/784 420/787 417/778
+f 423/796 424/799 421/790 422/793
+f 434/829 435/832 436/835 433/826
+f 430/817 431/820 432/823 429/814
+f 446/865 447/868 448/871 445/862
+f 442/853 443/856 444/859 441/850
+f 631/1284 630/1281 629/1278 632/1287
+f 635/1296 634/1293 633/1290 636/1299
+f 639/1308 638/1305 637/1302 640/1311
+f 643/1320 642/1317 641/1314 644/1323
+f 647/1332 646/1329 645/1326 648/1335
+f 651/1344 650/1341 649/1338 652/1347
+f 655/1356 654/1353 653/1350 656/1359
+f 659/1368 658/1365 657/1362 660/1371
+f 663/1380 662/1377 661/1374 664/1383
+f 667/1392 666/1389 665/1386 668/1395
+f 79/143 78/140 77/137 80/146
+f 143/335 142/332 141/329 144/338
+f 139/323 138/320 137/317 140/326
+f 135/311 134/308 133/305 136/314
+f 131/299 130/296 129/293 132/302
+f 127/287 126/284 125/281 128/290
+f 123/275 122/272 121/269 124/278
+f 119/263 118/260 117/257 120/266
+f 115/251 114/248 113/245 116/254
+f 111/239 110/236 109/233 112/242
+f 107/227 106/224 105/221 108/230
+f 83/155 84/158 81/149 82/152
+f 103/215 104/218 101/209 102/212
+f 90/176 91/179 92/182 89/173
+f 94/188 95/191 96/194 93/185
+f 98/200 99/203 100/206 97/197
+f 86/164 87/167 88/170 85/161
+f 271/505 270/502 269/499 272/508
+f 275/517 274/514 273/511 276/520
+f 279/529 278/526 277/523 280/532
+f 283/541 282/538 281/535 284/544
+f 287/553 286/550 285/547 288/556
+f 291/565 290/562 289/559 292/568
+f 295/577 294/574 293/571 296/580
+f 299/589 298/586 297/583 300/592
+f 303/601 302/598 301/595 304/604
+f 307/613 306/610 305/607 308/616
+f 311/625 310/622 309/619 312/628
+
diff --git a/Build11_obj.obj b/Build11_obj.obj
new file mode 100644
index 00000000..45c32ea0
--- /dev/null
+++ b/Build11_obj.obj
@@ -0,0 +1,2140 @@
+# WaveFront *.obj file (generated by CINEMA 4D)
+
+g Building11
+usemtl Build11
+v -69.491955 193.56554 59.564532
+v 69.491955 193.56554 59.564532
+v 69.491955 0 59.564532
+v -69.491955 0 59.564532
+v -36.512617 1.065038 59.564532
+v -26.856504 1.065038 59.564532
+v -26.856504 26.93066 59.564532
+v -36.512617 26.93066 59.564532
+v 26.856594 1.065038 59.564532
+v 36.512677 1.065038 59.564532
+v 36.512677 26.93066 59.564532
+v 26.856594 26.93066 59.564532
+v 13.969936 1.065038 59.564532
+v 23.62602 1.065038 59.564532
+v 23.62602 26.93066 59.564532
+v 13.969936 26.93066 59.564532
+v -23.62592 1.065038 59.564532
+v -13.969807 1.065038 59.564532
+v -13.969807 26.93066 59.564532
+v -23.62592 26.93066 59.564532
+v 52.629849 1.065038 59.564532
+v 62.285932 1.065038 59.564532
+v 62.285932 26.93066 59.564532
+v 52.629849 26.93066 59.564532
+v 39.743211 1.065038 59.564532
+v 49.399284 1.065038 59.564532
+v 49.399284 26.93066 59.564532
+v 39.743211 26.93066 59.564532
+v -62.285922 1.065038 59.564532
+v -52.629809 1.065038 59.564532
+v -52.629809 26.93066 59.564532
+v -62.285922 26.93066 59.564532
+v -49.399274 1.065038 59.564532
+v -39.743151 1.065038 59.564532
+v -39.743151 26.93066 59.564532
+v -49.399274 26.93066 59.564532
+v -10.739272 1.065038 59.564532
+v 10.739402 1.065038 59.564532
+v 10.739402 21.817482 59.564532
+v -10.739272 21.817482 59.564532
+v -62.285922 132.682597 59.564532
+v -62.285922 186.252018 59.564532
+v -49.780679 186.252018 59.564532
+v -49.780679 132.682597 59.564532
+v -62.285922 74.170569 59.564532
+v -62.285922 127.73998 59.564532
+v -49.780679 127.73998 59.564532
+v -49.780679 74.170569 59.564532
+v -62.285922 35.717771 59.564532
+v -62.285922 69.227953 59.564532
+v -49.780679 69.227953 59.564532
+v -49.780679 35.717771 59.564532
+v -43.83984 35.717771 59.564532
+v -43.83984 69.227953 59.564532
+v -31.334597 69.227953 59.564532
+v -31.334597 35.717771 59.564532
+v -43.83984 74.170569 59.564532
+v -43.83984 186.252018 59.564532
+v -31.334597 186.252018 59.564532
+v -31.334597 74.170569 59.564532
+v -25.793476 35.15198 59.564532
+v -25.793476 186.252018 59.564532
+v -13.288244 186.252018 59.564532
+v -13.288244 35.15198 59.564532
+v -7.259318 132.682597 59.564532
+v -7.259318 186.252018 59.564532
+v 5.245925 186.252018 59.564532
+v 5.245925 132.682597 59.564532
+v -7.259318 74.170569 59.564532
+v -7.259318 127.73998 59.564532
+v 5.245925 127.73998 59.564532
+v 5.245925 74.170569 59.564532
+v -7.259318 35.717771 59.564532
+v -7.259318 69.227953 59.564532
+v 5.245925 69.227953 59.564532
+v 5.245925 35.717771 59.564532
+v 11.186764 186.251978 59.564532
+v 11.186764 152.741787 59.564532
+v 23.692007 152.741787 59.564532
+v 23.692007 186.251978 59.564532
+v 11.186764 147.79919 59.564532
+v 11.186764 35.717722 59.564532
+v 23.692007 35.717722 59.564532
+v 23.692007 147.79919 59.564532
+v 62.285932 89.287152 59.564532
+v 62.285932 35.717722 59.564532
+v 49.780689 35.717722 59.564532
+v 49.780689 89.287152 59.564532
+v 62.285932 147.79919 59.564532
+v 62.285932 94.229749 59.564532
+v 49.780689 94.229749 59.564532
+v 49.780689 147.79919 59.564532
+v 62.285932 186.251978 59.564532
+v 62.285932 152.741787 59.564532
+v 49.780689 152.741787 59.564532
+v 49.780689 186.251978 59.564532
+v 43.83985 35.717771 59.564532
+v 43.83985 69.227953 59.564532
+v 31.334607 69.227953 59.564532
+v 31.334607 35.717771 59.564532
+v 43.83985 74.170569 59.564532
+v 43.83985 186.252018 59.564532
+v 31.334607 186.252018 59.564532
+v 31.334607 74.170569 59.564532
+v -69.491955 193.56554 57.124295
+v 69.491955 193.56554 57.124295
+v 69.491955 0 57.124295
+v 62.129476 201.697058 -47.363351
+v -36.512617 1.065038 57.124295
+v -26.856504 1.065038 57.124295
+v -26.856504 26.93066 57.124295
+v -36.512617 26.93066 57.124295
+v 26.856594 1.065038 57.124295
+v 36.512677 1.065038 57.124295
+v 36.512677 26.93066 57.124295
+v 26.856594 26.93066 57.124295
+v 13.969936 1.065038 57.124295
+v 23.62602 1.065038 57.124295
+v 23.62602 26.93066 57.124295
+v 13.969936 26.93066 57.124295
+v -23.62592 1.065038 57.124295
+v -13.969807 1.065038 57.124295
+v -13.969807 26.93066 57.124295
+v -23.62592 26.93066 57.124295
+v 52.629849 1.065038 57.124295
+v 62.285932 1.065038 57.124295
+v 62.285932 26.93066 57.124295
+v 52.629849 26.93066 57.124295
+v 39.743211 1.065038 57.124295
+v 49.399284 1.065038 57.124295
+v 49.399284 26.93066 57.124295
+v 39.743211 26.93066 57.124295
+v -62.285922 1.065038 57.124295
+v -52.629809 1.065038 57.124295
+v -52.629809 26.93066 57.124295
+v -62.285922 26.93066 57.124295
+v -49.399274 1.065038 57.124295
+v -39.743151 1.065038 57.124295
+v -39.743151 26.93066 57.124295
+v -49.399274 26.93066 57.124295
+v -10.739272 1.065038 57.124295
+v 10.739402 1.065038 57.124295
+v 10.739402 21.817482 57.124295
+v -10.739272 21.817482 57.124295
+v -62.285922 132.682597 57.124295
+v -62.285922 186.252018 57.124295
+v -49.780679 186.252018 57.124295
+v -49.780679 132.682597 57.124295
+v -62.285922 74.170569 57.124295
+v -62.285922 127.73998 57.124295
+v -49.780679 127.73998 57.124295
+v -49.780679 74.170569 57.124295
+v -62.285922 35.717771 57.124295
+v -62.285922 69.227953 57.124295
+v -49.780679 69.227953 57.124295
+v -49.780679 35.717771 57.124295
+v -43.83984 35.717771 57.124295
+v -43.83984 69.227953 57.124295
+v -31.334597 69.227953 57.124295
+v -31.334597 35.717771 57.124295
+v -43.83984 74.170569 57.124295
+v -43.83984 186.252018 57.124295
+v -31.334597 186.252018 57.124295
+v -31.334597 74.170569 57.124295
+v -25.793476 35.15198 57.124295
+v -25.793476 186.252018 57.124295
+v -13.288244 186.252018 57.124295
+v -13.288244 35.15198 57.124295
+v -7.259318 132.682597 57.124295
+v -7.259318 186.252018 57.124295
+v 5.245925 186.252018 57.124295
+v 5.245925 132.682597 57.124295
+v -7.259318 74.170569 57.124295
+v -7.259318 127.73998 57.124295
+v 5.245925 127.73998 57.124295
+v 5.245925 74.170569 57.124295
+v -7.259318 35.717771 57.124295
+v -7.259318 69.227953 57.124295
+v 5.245925 69.227953 57.124295
+v 5.245925 35.717771 57.124295
+v 11.186764 186.251978 57.124295
+v 11.186764 152.741787 57.124295
+v 23.692007 152.741787 57.124295
+v 23.692007 186.251978 57.124295
+v 11.186764 147.79919 57.124295
+v 11.186764 35.717722 57.124295
+v 23.692007 35.717722 57.124295
+v 23.692007 147.79919 57.124295
+v 62.285932 89.287152 57.124295
+v 62.285932 35.717722 57.124295
+v 49.780689 35.717722 57.124295
+v 49.780689 89.287152 57.124295
+v 62.285932 147.79919 57.124295
+v 62.285932 94.229749 57.124295
+v 49.780689 94.229749 57.124295
+v 49.780689 147.79919 57.124295
+v 62.285932 186.251978 57.124295
+v 62.285932 152.741787 57.124295
+v 49.780689 152.741787 57.124295
+v 49.780689 186.251978 57.124295
+v 43.83985 35.717771 57.124295
+v 43.83985 69.227953 57.124295
+v 31.334607 69.227953 57.124295
+v 31.334607 35.717771 57.124295
+v 43.83985 74.170569 57.124295
+v 43.83985 186.252018 57.124295
+v 31.334607 186.252018 57.124295
+v 31.334607 74.170569 57.124295
+v -69.491955 193.56554 59.564532
+v 69.491955 193.56554 59.564532
+v 69.491955 0 59.564532
+v -69.491955 0 59.564532
+v -36.512617 1.065038 59.564532
+v -26.856504 1.065038 59.564532
+v -26.856504 26.93066 59.564532
+v -36.512617 26.93066 59.564532
+v 26.856594 1.065038 59.564532
+v 36.512677 1.065038 59.564532
+v 36.512677 26.93066 59.564532
+v 26.856594 26.93066 59.564532
+v 13.969936 1.065038 59.564532
+v 23.62602 1.065038 59.564532
+v 23.62602 26.93066 59.564532
+v 13.969936 26.93066 59.564532
+v -23.62592 1.065038 59.564532
+v -13.969807 1.065038 59.564532
+v -13.969807 26.93066 59.564532
+v -23.62592 26.93066 59.564532
+v 52.629849 1.065038 59.564532
+v 62.285932 1.065038 59.564532
+v 62.285932 26.93066 59.564532
+v 52.629849 26.93066 59.564532
+v 39.743211 1.065038 59.564532
+v 49.399284 1.065038 59.564532
+v 49.399284 26.93066 59.564532
+v 39.743211 26.93066 59.564532
+v -62.285922 1.065038 59.564532
+v -52.629809 1.065038 59.564532
+v -52.629809 26.93066 59.564532
+v -62.285922 26.93066 59.564532
+v -49.399274 1.065038 59.564532
+v -39.743151 1.065038 59.564532
+v -39.743151 26.93066 59.564532
+v -49.399274 26.93066 59.564532
+v -10.739272 1.065038 59.564532
+v 10.739402 1.065038 59.564532
+v 10.739402 21.817482 59.564532
+v -10.739272 21.817482 59.564532
+v -62.285922 132.682597 59.564532
+v -62.285922 186.252018 59.564532
+v -49.780679 186.252018 59.564532
+v -49.780679 132.682597 59.564532
+v -62.285922 74.170569 59.564532
+v -62.285922 127.73998 59.564532
+v -49.780679 127.73998 59.564532
+v -49.780679 74.170569 59.564532
+v -62.285922 35.717771 59.564532
+v -62.285922 69.227953 59.564532
+v -49.780679 69.227953 59.564532
+v -49.780679 35.717771 59.564532
+v -43.83984 35.717771 59.564532
+v -43.83984 69.227953 59.564532
+v -31.334597 69.227953 59.564532
+v -31.334597 35.717771 59.564532
+v -43.83984 74.170569 59.564532
+v -43.83984 186.252018 59.564532
+v -31.334597 186.252018 59.564532
+v -31.334597 74.170569 59.564532
+v -25.793476 35.15198 59.564532
+v -25.793476 186.252018 59.564532
+v -13.288244 186.252018 59.564532
+v -13.288244 35.15198 59.564532
+v -7.259318 132.682597 59.564532
+v -7.259318 186.252018 59.564532
+v 5.245925 186.252018 59.564532
+v 5.245925 132.682597 59.564532
+v -7.259318 74.170569 59.564532
+v -7.259318 127.73998 59.564532
+v 5.245925 127.73998 59.564532
+v 5.245925 74.170569 59.564532
+v -7.259318 35.717771 59.564532
+v -7.259318 69.227953 59.564532
+v 5.245925 69.227953 59.564532
+v 5.245925 35.717771 59.564532
+v 11.186764 186.251978 59.564532
+v 11.186764 152.741787 59.564532
+v 23.692007 152.741787 59.564532
+v 23.692007 186.251978 59.564532
+v 11.186764 147.79919 59.564532
+v 11.186764 35.717722 59.564532
+v 23.692007 35.717722 59.564532
+v 23.692007 147.79919 59.564532
+v 62.285932 89.287152 59.564532
+v 62.285932 35.717722 59.564532
+v 49.780689 35.717722 59.564532
+v 49.780689 89.287152 59.564532
+v 62.285932 147.79919 59.564532
+v 62.285932 94.229749 59.564532
+v 49.780689 94.229749 59.564532
+v 49.780689 147.79919 59.564532
+v 62.285932 186.251978 59.564532
+v 62.285932 152.741787 59.564532
+v 49.780689 152.741787 59.564532
+v 49.780689 186.251978 59.564532
+v 43.83985 35.717771 59.564532
+v 43.83985 69.227953 59.564532
+v 31.334607 69.227953 59.564532
+v 31.334607 35.717771 59.564532
+v 43.83985 74.170569 59.564532
+v 43.83985 186.252018 59.564532
+v 31.334607 186.252018 59.564532
+v 31.334607 74.170569 59.564532
+v 69.491945 193.56554 59.564532
+v 69.49194 193.56554 -9.533335
+v 62.129491 215.072849 47.363351
+v 69.491945 0 59.564532
+v 69.491945 186.251978 50.420299
+v 69.491945 146.490544 50.420299
+v 69.491945 146.490544 37.985976
+v 69.491945 186.251978 37.985976
+v 69.491945 140.625935 50.420299
+v 69.491945 7.636033 50.420299
+v 69.491945 7.636033 37.985976
+v 69.491945 140.625935 37.985976
+v 69.49194 71.198674 -0.389062
+v 69.49194 7.636033 -0.389062
+v 69.491945 7.636033 12.04526
+v 69.491945 71.198674 12.04526
+v 69.49194 140.625935 -0.389062
+v 69.49194 77.063283 -0.389062
+v 69.491945 77.063283 12.04526
+v 69.491945 140.625935 12.04526
+v 69.49194 186.251978 -0.389062
+v 69.49194 146.490544 -0.389062
+v 69.491945 146.490544 12.04526
+v 69.491945 186.251978 12.04526
+v 69.491945 7.636083 17.952427
+v 69.491945 47.397512 17.952427
+v 69.491945 47.397512 30.386749
+v 69.491945 7.636083 30.386749
+v 69.491945 53.262121 17.952427
+v 69.491945 186.252018 17.952427
+v 69.491945 186.252018 30.386749
+v 69.491945 53.262121 30.386749
+v 67.03779 193.56554 59.564532
+v 67.037785 193.56554 -9.533335
+v 62.129476 215.072849 -47.363351
+v 67.03779 0 59.564532
+v 67.03779 186.251978 50.420299
+v 67.03779 146.490544 50.420299
+v 67.03779 146.490544 37.985976
+v 67.03779 186.251978 37.985976
+v 67.03779 140.625935 50.420299
+v 67.03779 7.636033 50.420299
+v 67.03779 7.636033 37.985976
+v 67.03779 140.625935 37.985976
+v 67.037785 71.198674 -0.389062
+v 67.037785 7.636033 -0.389062
+v 67.03779 7.636033 12.04526
+v 67.03779 71.198674 12.04526
+v 67.037785 140.625935 -0.389062
+v 67.037785 77.063283 -0.389062
+v 67.03779 77.063283 12.04526
+v 67.03779 140.625935 12.04526
+v 67.037785 186.251978 -0.389062
+v 67.037785 146.490544 -0.389062
+v 67.03779 146.490544 12.04526
+v 67.03779 186.251978 12.04526
+v 67.03779 7.636083 17.952427
+v 67.03779 47.397512 17.952427
+v 67.03779 47.397512 30.386749
+v 67.03779 7.636083 30.386749
+v 67.03779 53.262121 17.952427
+v 67.03779 186.252018 17.952427
+v 67.03779 186.252018 30.386749
+v 67.03779 53.262121 30.386749
+v 69.491945 193.56554 59.564532
+v 69.49194 193.56554 -59.564532
+v 69.49194 0 -59.564532
+v 69.491945 0 59.564532
+v 69.491945 186.251978 50.420299
+v 69.491945 146.490544 50.420299
+v 69.491945 146.490544 37.985976
+v 69.491945 186.251978 37.985976
+v 69.491945 140.625935 50.420299
+v 69.491945 7.636033 50.420299
+v 69.491945 7.636033 37.985976
+v 69.491945 140.625935 37.985976
+v 69.49194 71.198674 -0.389062
+v 69.49194 7.636033 -0.389062
+v 69.491945 7.636033 12.04526
+v 69.491945 71.198674 12.04526
+v 69.49194 140.625935 -0.389062
+v 69.49194 77.063283 -0.389062
+v 69.491945 77.063283 12.04526
+v 69.491945 140.625935 12.04526
+v 69.49194 186.251978 -0.389062
+v 69.49194 146.490544 -0.389062
+v 69.491945 146.490544 12.04526
+v 69.491945 186.251978 12.04526
+v 69.491945 7.636083 17.952427
+v 69.491945 47.397512 17.952427
+v 69.491945 47.397512 30.386749
+v 69.491945 7.636083 30.386749
+v 69.491945 53.262121 17.952427
+v 69.491945 186.252018 17.952427
+v 69.491945 186.252018 30.386749
+v 69.491945 53.262121 30.386749
+v -69.491945 186.251978 50.420299
+v -69.491945 146.490544 50.420299
+v -69.491945 146.490544 37.985976
+v -69.491945 186.251978 37.985976
+v -69.491945 140.625935 50.420299
+v -69.491945 7.636033 50.420299
+v -69.491945 7.636033 37.985976
+v -69.491945 140.625935 37.985976
+v -69.49195 71.198674 -0.389067
+v -69.49195 7.636033 -0.389067
+v -69.491945 7.636033 12.045255
+v -69.491945 71.198674 12.045255
+v -69.49195 140.625935 -0.389067
+v -69.49195 77.063283 -0.389067
+v -69.491945 77.063283 12.045255
+v -69.491945 140.625935 12.045255
+v -69.49195 186.251978 -0.389067
+v -69.49195 146.490544 -0.389067
+v -69.491945 146.490544 12.045255
+v -69.491945 186.251978 12.045255
+v -69.491945 7.636083 17.952427
+v -69.491945 47.397512 17.952427
+v -69.491945 47.397512 30.386749
+v -69.491945 7.636083 30.386749
+v -69.491945 53.262121 17.952427
+v -69.491945 186.252018 17.952427
+v -69.491945 186.252018 30.386749
+v -69.491945 53.262121 30.386749
+v -67.03779 186.251978 50.4203
+v -67.03779 146.490544 50.4203
+v -67.03779 146.490544 37.985976
+v -67.03779 186.251978 37.985976
+v -67.03779 140.625935 50.4203
+v -67.03779 7.636033 50.4203
+v -67.03779 7.636033 37.985976
+v -67.03779 140.625935 37.985976
+v -67.037795 71.198674 -0.389067
+v -67.037795 7.636033 -0.389067
+v -67.03779 7.636033 12.045255
+v -67.03779 71.198674 12.045255
+v -67.037795 140.625935 -0.389067
+v -67.037795 77.063283 -0.389067
+v -67.03779 77.063283 12.045255
+v -67.03779 140.625935 12.045255
+v -67.037795 186.251978 -0.389067
+v -67.037795 146.490544 -0.389067
+v -67.03779 146.490544 12.045255
+v -67.03779 186.251978 12.045255
+v -67.03779 7.636083 17.952427
+v -67.03779 47.397512 17.952427
+v -67.03779 47.397512 30.386749
+v -67.03779 7.636083 30.386749
+v -67.03779 53.262121 17.952427
+v -67.03779 186.252018 17.952427
+v -67.03779 186.252018 30.386749
+v -67.03779 53.262121 30.386749
+v -69.491945 193.56554 59.564532
+v -69.49194 193.56554 -59.564523
+v -69.49194 0 -59.564523
+v -69.491945 0 59.564532
+v -69.491945 186.251978 50.420299
+v -69.491945 146.490544 50.420299
+v -69.491945 146.490544 37.985976
+v -69.491945 186.251978 37.985976
+v -69.491945 140.625935 50.420299
+v -69.491945 7.636033 50.420299
+v -69.491945 7.636033 37.985976
+v -69.491945 140.625935 37.985976
+v -69.49195 71.198674 -0.389067
+v -69.49195 7.636033 -0.389067
+v -69.491945 7.636033 12.045255
+v -69.491945 71.198674 12.045255
+v -69.49195 140.625935 -0.389067
+v -69.49195 77.063283 -0.389067
+v -69.491945 77.063283 12.045255
+v -69.491945 140.625935 12.045255
+v -69.49195 186.251978 -0.389067
+v -69.49195 146.490544 -0.389067
+v -69.491945 146.490544 12.045255
+v -69.491945 186.251978 12.045255
+v -69.491945 7.636083 17.952427
+v -69.491945 47.397512 17.952427
+v -69.491945 47.397512 30.386749
+v -69.491945 7.636083 30.386749
+v -69.491945 53.262121 17.952427
+v -69.491945 186.252018 17.952427
+v -69.491945 186.252018 30.386749
+v -69.491945 53.262121 30.386749
+v -65.401697 193.56554 55.497471
+v 65.401697 193.56554 55.497471
+v 65.401682 193.56554 -55.497472
+v -65.401682 193.56554 -55.497462
+v -65.401697 223.204366 55.497471
+v 65.401697 223.204366 55.497471
+v 65.401682 223.204366 -55.497472
+v -65.401682 223.204366 -55.497462
+v -61.965881 223.204366 52.081141
+v 61.965881 223.204366 52.081141
+v 61.965866 223.204366 -52.081141
+v -61.965866 223.204366 -52.081131
+v -61.965881 223.366997 52.081141
+v 61.965881 223.366997 52.081141
+v 61.965866 223.366997 -52.081141
+v -61.965866 223.366997 -52.081131
+v -61.965881 223.366997 52.081141
+v 61.965881 223.366997 52.081141
+v 61.965866 223.366997 -52.081141
+v -61.965866 223.366997 -52.081131
+v -61.965881 217.816918 52.081141
+v 61.965881 217.816918 52.081141
+v 61.965866 217.816918 -52.081141
+v -61.965866 217.816918 -52.081131
+v -62.129491 215.072849 47.363351
+v -62.129476 215.072849 -47.363341
+v -62.129476 201.697058 -47.363341
+v -57.221183 201.697058 52.243823
+v 57.221183 201.697058 52.243823
+v -57.221183 215.072849 52.243823
+v -62.129491 201.697058 47.363351
+v 57.221183 215.072849 52.243823
+v 65.401697 201.697058 47.363351
+v 65.401682 201.697058 -47.363351
+v 65.401697 215.072849 47.363351
+v 65.401682 215.072849 -47.363351
+v -65.401697 201.697058 47.363351
+v -65.401682 201.697058 -47.363341
+v -65.401697 215.072849 47.363351
+v -65.401682 215.072849 -47.363341
+v -57.221183 201.697058 55.497471
+v 57.221183 201.697058 55.497471
+v -57.221183 215.072849 55.497471
+v 57.221183 215.072849 55.497471
+v 62.129491 201.697058 47.363351
+
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.424141 0.048407 0
+vt 0.651613 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724504 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724504 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724505 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724505 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724505 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724505 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724504 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724504 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724504 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724504 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724504 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724504 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651614 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724504 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724504 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.089072 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.724504 0.089072 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.724504 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.651613 0.284323 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.745974 0.09775 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.930094 0.09775 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.930094 0.275645 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.745974 0.275645 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.696375 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.696375 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.409187 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.672116 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.672116 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.409187 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.384928 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.384928 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.220454 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.384928 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.384928 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.220454 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.409187 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.409187 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.962081 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.962081 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.220454 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.696375 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.696375 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.409187 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.672116 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.672116 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.409187 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.384928 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.384928 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.220454 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.79483 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.79483 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.770571 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.220454 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.770571 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.483383 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615746 0.220454 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.483383 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.770571 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615746 0.507642 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.507642 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.770571 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.959304 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615746 0.79483 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.79483 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.220454 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.615746 0.384928 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.384928 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.220454 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615746 0.409187 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.615746 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.409187 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.017523 0.420078 0
+vt 0.017621 0.854172 0
+vt 0.523966 0.420078 0
+vt 0.523966 0.854172 0
+vt 0.523966 0.148976 0
+vt 0.017621 0.148976 0
+vt 0.137771 0.152856 0
+vt 0.17295 0.152856 0
+vt 0.17295 0.247089 0
+vt 0.137771 0.247089 0
+vt 0.368637 0.152856 0
+vt 0.403816 0.152856 0
+vt 0.403816 0.247089 0
+vt 0.368637 0.247089 0
+vt 0.321689 0.152856 0
+vt 0.356868 0.152856 0
+vt 0.356868 0.247089 0
+vt 0.321689 0.247089 0
+vt 0.18472 0.152856 0
+vt 0.219899 0.152856 0
+vt 0.219899 0.247089 0
+vt 0.18472 0.247089 0
+vt 0.462534 0.152856 0
+vt 0.497713 0.152856 0
+vt 0.497713 0.247089 0
+vt 0.462534 0.247089 0
+vt 0.415586 0.152856 0
+vt 0.450765 0.152856 0
+vt 0.450765 0.247089 0
+vt 0.415586 0.247089 0
+vt 0.043874 0.152856 0
+vt 0.079053 0.152856 0
+vt 0.079053 0.247089 0
+vt 0.043874 0.247089 0
+vt 0.090823 0.152856 0
+vt 0.126002 0.152856 0
+vt 0.126002 0.247089 0
+vt 0.090823 0.247089 0
+vt 0.231668 0.152856 0
+vt 0.309919 0.152856 0
+vt 0.309919 0.228461 0
+vt 0.231668 0.228461 0
+vt 0.043874 0.632364 0
+vt 0.043874 0.827527 0
+vt 0.089433 0.827527 0
+vt 0.089433 0.632364 0
+vt 0.043874 0.419193 0
+vt 0.043874 0.614357 0
+vt 0.089433 0.614357 0
+vt 0.089433 0.419193 0
+vt 0.043874 0.279103 0
+vt 0.043874 0.401186 0
+vt 0.089433 0.401186 0
+vt 0.089433 0.279103 0
+vt 0.111077 0.279103 0
+vt 0.111077 0.401186 0
+vt 0.156636 0.401186 0
+vt 0.156636 0.279103 0
+vt 0.111077 0.419193 0
+vt 0.111077 0.827527 0
+vt 0.156636 0.827527 0
+vt 0.156636 0.419193 0
+vt 0.176823 0.277041 0
+vt 0.176823 0.827527 0
+vt 0.222382 0.827527 0
+vt 0.222382 0.277041 0
+vt 0.244346 0.632364 0
+vt 0.244346 0.827527 0
+vt 0.289906 0.827527 0
+vt 0.289906 0.632364 0
+vt 0.244346 0.419193 0
+vt 0.244346 0.614357 0
+vt 0.289906 0.614357 0
+vt 0.289906 0.419193 0
+vt 0.244346 0.279103 0
+vt 0.244346 0.401186 0
+vt 0.289906 0.401186 0
+vt 0.289906 0.279103 0
+vt 0.311549 0.827527 0
+vt 0.311549 0.705443 0
+vt 0.357108 0.705443 0
+vt 0.357108 0.827527 0
+vt 0.311549 0.687436 0
+vt 0.311549 0.279102 0
+vt 0.357108 0.279102 0
+vt 0.357108 0.687436 0
+vt 0.497713 0.474266 0
+vt 0.497713 0.279102 0
+vt 0.452154 0.279102 0
+vt 0.452154 0.474266 0
+vt 0.497713 0.687436 0
+vt 0.497713 0.492273 0
+vt 0.452154 0.492273 0
+vt 0.452154 0.687436 0
+vt 0.497713 0.827527 0
+vt 0.497713 0.705443 0
+vt 0.452154 0.705443 0
+vt 0.452154 0.827527 0
+vt 0.43051 0.279103 0
+vt 0.43051 0.401186 0
+vt 0.384952 0.401186 0
+vt 0.384952 0.279103 0
+vt 0.43051 0.419193 0
+vt 0.43051 0.827527 0
+vt 0.384952 0.827527 0
+vt 0.384952 0.419193 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.026239 0.104592 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.424141 0.104592 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.764148 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.764148 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.735363 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.082624 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.082624 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.735363 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.394601 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615398 0.082624 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.082624 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.394601 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.735363 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615398 0.423386 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.423386 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.735363 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.959304 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615398 0.764148 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.764148 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.082624 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.615398 0.27778 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.27778 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.082624 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.306565 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.615398 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.306565 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.089956 0.854172 0
+vt 0.523966 0.854172 0
+vt 0.017621 0.854172 0
+vt 0.017621 0.148976 0
+vt 0.523966 0.148976 0
+vt 0.089956 0.148976 0
+vt 0.12327 0.827527 0
+vt 0.12327 0.682669 0
+vt 0.168571 0.682669 0
+vt 0.168571 0.827527 0
+vt 0.12327 0.661303 0
+vt 0.12327 0.176795 0
+vt 0.168571 0.176795 0
+vt 0.168571 0.661303 0
+vt 0.308379 0.408366 0
+vt 0.308379 0.176795 0
+vt 0.263078 0.176795 0
+vt 0.263078 0.408366 0
+vt 0.308379 0.661303 0
+vt 0.308379 0.429732 0
+vt 0.263078 0.429732 0
+vt 0.263078 0.661303 0
+vt 0.308379 0.827527 0
+vt 0.308379 0.682669 0
+vt 0.263078 0.682669 0
+vt 0.263078 0.827527 0
+vt 0.241557 0.176796 0
+vt 0.241557 0.321654 0
+vt 0.196256 0.321654 0
+vt 0.196256 0.176796 0
+vt 0.241557 0.34302 0
+vt 0.241557 0.827527 0
+vt 0.196256 0.827527 0
+vt 0.196256 0.34302 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.615398 0.959304 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615398 0.764148 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.764148 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.735363 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.615398 0.082624 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.082624 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.735363 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.394601 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.082624 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.082624 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.394601 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.735363 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.423386 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.423386 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.735363 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.554368 0.764148 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.764148 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.959304 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.082624 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.27778 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.27778 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.082624 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.554368 0.306565 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.554368 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.959304 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.615398 0.306565 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.523966 0.854172 0
+vt 0.017523 0.854172 0
+vt 0.523966 0.854172 0
+vt 0.089956 0.854172 0
+vt 0.523966 0.148976 0
+vt 0.089956 0.148976 0
+vt 0.523966 0.148976 0
+vt 0.490652 0.827527 0
+vt 0.490652 0.682669 0
+vt 0.445351 0.682669 0
+vt 0.445351 0.827527 0
+vt 0.490652 0.661303 0
+vt 0.490652 0.176795 0
+vt 0.445351 0.176795 0
+vt 0.445351 0.661303 0
+vt 0.305544 0.408366 0
+vt 0.305544 0.176795 0
+vt 0.350844 0.176795 0
+vt 0.350844 0.408366 0
+vt 0.305544 0.661303 0
+vt 0.305544 0.429732 0
+vt 0.350844 0.429732 0
+vt 0.350844 0.661303 0
+vt 0.305544 0.827527 0
+vt 0.305544 0.682669 0
+vt 0.350844 0.682669 0
+vt 0.350844 0.827527 0
+vt 0.372365 0.176796 0
+vt 0.372365 0.321654 0
+vt 0.417666 0.321654 0
+vt 0.417666 0.176796 0
+vt 0.372365 0.34302 0
+vt 0.372365 0.827527 0
+vt 0.417666 0.827527 0
+vt 0.417666 0.34302 0
+vt 0.032523 0.854172 0
+vt 0.509149 0.854172 0
+vt 0.032427 0.434898 0
+vt 0.509064 0.854172 0
+vt 0.104773 0.854172 0
+vt 0.509061 0.434898 0
+vt 0.509149 0.854172 0
+vt 0.032523 0.854172 0
+vt 0.509061 0.839352 0
+vt 0.104773 0.854172 0
+vt 0.509064 0.854172 0
+vt 0.032427 0.839352 0
+vt 0.032523 0.962152 0
+vt 0.509149 0.962152 0
+vt 0.032427 0.434898 0
+vt 0.509064 0.962152 0
+vt 0.104773 0.962152 0
+vt 0.509061 0.434898 0
+vt 0.509149 0.962152 0
+vt 0.509061 0.839352 0
+vt 0.032523 0.962152 0
+vt 0.104773 0.962152 0
+vt 0.032427 0.839352 0
+vt 0.509064 0.962152 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.044947 0.447346 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.496542 0.447346 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.496542 0.826903 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.044947 0.826903 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.496547 0.962744 0
+vt 0.11722 0.962744 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.04504 0.962744 0
+vt 0.496703 0.962744 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.496547 0.962744 0
+vt 0.11722 0.962744 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.496703 0.962744 0
+vt 0.04504 0.962744 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.646675 0.322608 0
+vt 0.496547 0.942524 0
+vt 0.11722 0.942524 0
+vt 0.968999 0.322608 0
+vt 0.04504 0.942524 0
+vt 0.496703 0.942524 0
+vt 0.968999 0.593516 0
+vt 0.496547 0.942524 0
+vt 0.11722 0.942524 0
+vt 0.646675 0.593516 0
+vt 0.496703 0.942524 0
+vt 0.04504 0.942524 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.424141 0.104592 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.026239 0.104592 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.026239 0.048407 0
+vt 0.372349 0.271663 0
+vt 0.026239 0.048407 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.506957 0.048407 0
+vt 0.372349 0.271663 0
+vt 0.026239 0.104592 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.424141 0.048407 0
+vt 0.506957 0.104592 0
+vt 0.372349 0.271663 0
+vt 0.491199 0.271663 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.134407 0.883796 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.479515 0.883796 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.134407 0.932527 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.479515 0.932527 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.479515 0.883796 0
+vt 0.491199 0.152814 0
+vt 0.372349 0.152814 0
+vt 0.134407 0.883796 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.479515 0.932527 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.134407 0.932527 0
+vt 0.372349 0.152814 0
+vt 0.062326 0.883796 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.479261 0.883796 0
+vt 0.372349 0.152814 0
+vt 0.062326 0.932527 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.479261 0.932527 0
+vt 0.372349 0.152814 0
+vt 0.491199 0.152814 0
+vt 0.491199 0.271663 0
+vt 0.372349 0.271663 0
+vt 0.026239 0.048407 0
+
+f 217/514 220/517 223/520
+f 217/514 223/520 222/519
+f 228/525 215/512 225/522
+f 215/512 214/511 225/522
+f 229/526 232/529 235/532
+f 229/526 235/532 234/531
+f 236/533 219/516 233/530
+f 219/516 218/515 233/530
+f 213/510 216/513 242/539
+f 216/513 243/540 242/539
+f 244/541 239/536 241/538
+f 239/536 238/535 241/538
+f 227/524 226/523 248/545
+f 221/518 224/521 247/544
+f 221/518 247/544 246/543
+f 248/545 226/523 245/542
+f 252/549 249/546 254/551
+f 252/549 254/551 255/552
+f 240/537 239/536 257/554
+f 256/553 253/550 259/556
+f 253/550 258/555 259/556
+f 257/554 239/536 260/557
+f 239/536 244/541 260/557
+f 259/556 260/557 261/558
+f 260/557 244/541 261/558
+f 244/541 243/540 261/558
+f 243/540 216/513 261/558
+f 259/556 261/558 262/559
+f 261/558 216/513 264/561
+f 216/513 215/512 264/561
+f 252/549 255/552 265/562
+f 255/552 256/553 265/562
+f 256/553 259/556 265/562
+f 259/556 262/559 265/562
+f 262/559 263/560 265/562
+f 251/548 252/549 266/563
+f 252/549 265/562 266/563
+f 265/562 263/560 268/565
+f 268/565 263/560 269/566
+f 263/560 264/561 269/566
+f 264/561 215/512 269/566
+f 215/512 228/525 269/566
+f 267/564 268/565 270/567
+f 268/565 269/566 270/567
+f 269/566 228/525 272/569
+f 228/525 227/524 272/569
+f 271/568 273/570 274/571
+f 273/570 271/568 278/575
+f 271/568 272/569 278/575
+f 272/569 277/574 278/575
+f 276/573 273/570 279/576
+f 273/570 278/575 279/576
+f 272/569 227/524 281/578
+f 227/524 248/545 281/578
+f 277/574 272/569 282/579
+f 272/569 281/578 282/579
+f 280/577 277/574 283/580
+f 277/574 282/579 283/580
+f 281/578 248/545 284/581
+f 248/545 247/544 284/581
+f 247/544 224/521 284/581
+f 275/572 276/573 286/583
+f 275/572 286/583 285/582
+f 287/584 286/583 292/589
+f 224/521 223/520 291/588
+f 223/520 220/517 291/588
+f 280/577 283/580 290/587
+f 283/580 284/581 290/587
+f 284/581 224/521 290/587
+f 224/521 291/588 290/587
+f 286/583 276/573 289/586
+f 276/573 279/576 289/586
+f 279/576 280/577 289/586
+f 280/577 290/587 289/586
+f 292/589 286/583 289/586
+f 232/529 231/528 294/591
+f 235/532 232/529 295/592
+f 232/529 294/591 295/592
+f 296/593 293/590 299/596
+f 293/590 298/595 299/596
+f 300/597 297/594 303/600
+f 297/594 302/599 303/600
+f 291/588 220/517 308/605
+f 220/517 219/516 308/605
+f 291/588 308/605 307/604
+f 295/592 296/593 306/603
+f 308/605 219/516 305/602
+f 219/516 236/533 305/602
+f 236/533 235/532 305/602
+f 235/532 295/592 305/602
+f 295/592 306/603 305/602
+f 292/589 291/588 312/609
+f 291/588 307/604 312/609
+f 288/585 287/584 311/608
+f 287/584 292/589 311/608
+f 292/589 312/609 311/608
+f 300/597 303/600 310/607
+f 303/600 304/601 310/607
+f 312/609 307/604 309/606
+f 307/604 306/603 309/606
+f 306/603 296/593 309/606
+f 296/593 299/596 309/606
+f 299/596 300/597 309/606
+f 300/597 310/607 309/606
+f 245/542 226/523 212/509
+f 226/523 225/522 212/509
+f 225/522 214/511 212/509
+f 214/511 213/510 212/509
+f 213/510 242/539 212/509
+f 242/539 241/538 212/509
+f 241/538 238/535 212/509
+f 238/535 237/534 212/509
+f 237/534 240/537 212/509
+f 240/537 257/554 212/509
+f 257/554 258/555 212/509
+f 258/555 253/550 212/509
+f 298/595 293/590 211/508
+f 293/590 294/591 211/508
+f 294/591 231/528 211/508
+f 231/528 230/527 211/508
+f 230/527 229/526 211/508
+f 229/526 234/531 211/508
+f 234/531 233/530 211/508
+f 233/530 218/515 211/508
+f 218/515 217/514 211/508
+f 217/514 222/519 211/508
+f 222/519 221/518 211/508
+f 221/518 246/543 211/508
+f 246/543 245/542 211/508
+f 245/542 212/509 211/508
+f 275/572 285/582 210/507
+f 285/582 288/585 210/507
+f 288/585 311/608 210/507
+f 311/608 310/607 210/507
+f 310/607 304/601 210/507
+f 304/601 301/598 210/507
+f 301/598 302/599 210/507
+f 302/599 297/594 210/507
+f 297/594 298/595 210/507
+f 298/595 211/508 210/507
+f 212/509 253/550 209/505
+f 253/550 254/551 209/505
+f 254/551 249/546 209/505
+f 249/546 250/547 209/505
+f 250/547 251/548 209/505
+f 251/548 266/563 209/505
+f 266/563 267/564 209/505
+f 267/564 270/567 209/505
+f 270/567 271/568 209/505
+f 271/568 274/571 209/505
+f 274/571 275/572 209/505
+f 275/572 210/507 209/505
+f 383/764 382/763 388/769
+f 388/769 382/763 385/766
+f 392/773 389/770 395/776
+f 389/770 394/775 395/776
+f 396/777 393/774 398/779
+f 396/777 398/779 399/780
+f 387/768 404/785 403/784
+f 391/772 392/773 402/783
+f 391/772 402/783 401/782
+f 388/769 387/768 408/789
+f 387/768 403/784 408/789
+f 403/784 402/783 408/789
+f 384/765 383/764 407/788
+f 383/764 388/769 407/788
+f 388/769 408/789 407/788
+f 396/777 399/780 406/787
+f 399/780 400/781 406/787
+f 408/789 402/783 405/786
+f 402/783 392/773 405/786
+f 392/773 395/776 405/786
+f 395/776 396/777 405/786
+f 396/777 406/787 405/786
+f 404/785 387/768 380/761
+f 387/768 386/767 380/761
+f 386/767 385/766 380/761
+f 394/775 389/770 379/760
+f 389/770 390/771 379/760
+f 390/771 391/772 379/760
+f 391/772 401/782 379/760
+f 401/782 404/785 379/760
+f 404/785 380/761 379/760
+f 407/788 406/787 378/757
+f 406/787 400/781 378/757
+f 400/781 397/778 378/757
+f 397/778 398/779 378/757
+f 398/779 393/774 378/757
+f 393/774 394/775 378/757
+f 394/775 379/760 378/757
+f 380/761 385/766 377/756
+f 385/766 382/763 377/756
+f 382/763 381/762 377/756
+f 381/762 384/765 377/756
+f 384/765 407/788 377/756
+f 407/788 378/757 377/756
+f 470/938 471/939 476/944
+f 470/938 476/944 473/941
+f 477/945 480/948 483/951
+f 482/950 477/945 483/951
+f 481/949 484/952 486/954
+f 486/954 484/952 487/955
+f 492/960 475/943 491/959
+f 480/948 479/947 490/958
+f 490/958 479/947 489/957
+f 475/943 476/944 496/964
+f 491/959 475/943 496/964
+f 490/958 491/959 496/964
+f 471/939 472/940 495/963
+f 476/944 471/939 495/963
+f 496/964 476/944 495/963
+f 487/955 484/952 494/962
+f 488/956 487/955 494/962
+f 490/958 496/964 493/961
+f 480/948 490/958 493/961
+f 483/951 480/948 493/961
+f 484/952 483/951 493/961
+f 494/962 484/952 493/961
+f 475/943 492/960 468/936
+f 474/942 475/943 468/936
+f 473/941 474/942 468/936
+f 477/945 482/950 467/935
+f 478/946 477/945 467/935
+f 479/947 478/946 467/935
+f 489/957 479/947 467/935
+f 492/960 489/957 467/935
+f 468/936 492/960 467/935
+f 494/962 495/963 466/933
+f 488/956 494/962 466/933
+f 485/953 488/956 466/933
+f 486/954 485/953 466/933
+f 481/949 486/954 466/933
+f 482/950 481/949 466/933
+f 467/935 482/950 466/933
+f 473/941 468/936 465/930
+f 470/938 473/941 465/930
+f 469/937 470/938 465/930
+f 472/940 469/937 465/930
+f 495/963 472/940 465/930
+f 466/933 495/963 465/930
+f 102/196 206/497 205/494 101/194
+f 103/198 207/500 206/496 102/195
+f 104/200 208/503 207/499 103/197
+f 101/193 205/493 208/502 104/199
+f 6/4 110/209 109/206 5/2
+f 7/6 111/212 110/208 6/3
+f 8/8 112/215 111/211 7/5
+f 5/1 109/205 112/214 8/7
+f 10/12 114/221 113/218 9/10
+f 11/14 115/224 114/220 10/11
+f 12/16 116/227 115/223 11/13
+f 9/9 113/217 116/226 12/15
+f 14/20 118/233 117/230 13/18
+f 15/22 119/236 118/232 14/19
+f 16/24 120/239 119/235 15/21
+f 13/17 117/229 120/238 16/23
+f 18/28 122/245 121/242 17/26
+f 19/30 123/248 122/244 18/27
+f 20/32 124/251 123/247 19/29
+f 17/25 121/241 124/250 20/31
+f 22/36 126/257 125/254 21/34
+f 23/38 127/260 126/256 22/35
+f 24/40 128/263 127/259 23/37
+f 21/33 125/253 128/262 24/39
+f 26/44 130/269 129/266 25/42
+f 27/46 131/272 130/268 26/43
+f 28/48 132/275 131/271 27/45
+f 25/41 129/265 132/274 28/47
+f 30/52 134/281 133/278 29/50
+f 31/54 135/284 134/280 30/51
+f 32/56 136/287 135/283 31/53
+f 29/49 133/277 136/286 32/55
+f 34/60 138/293 137/290 33/58
+f 35/62 139/296 138/292 34/59
+f 36/64 140/299 139/295 35/61
+f 33/57 137/289 140/298 36/63
+f 38/68 142/305 141/302 37/66
+f 39/70 143/308 142/304 38/67
+f 40/72 144/311 143/307 39/69
+f 37/65 141/301 144/310 40/71
+f 145/314 146/317 42/76 41/74
+f 146/316 147/320 43/78 42/75
+f 147/319 148/323 44/80 43/77
+f 148/322 145/313 41/73 44/79
+f 149/326 150/329 46/84 45/82
+f 150/328 151/332 47/86 46/83
+f 151/331 152/335 48/88 47/85
+f 152/334 149/325 45/81 48/87
+f 153/338 154/341 50/92 49/90
+f 154/340 155/344 51/94 50/91
+f 155/343 156/347 52/96 51/93
+f 156/346 153/337 49/89 52/95
+f 157/350 158/353 54/100 53/98
+f 158/352 159/356 55/102 54/99
+f 159/355 160/359 56/104 55/101
+f 160/358 157/349 53/97 56/103
+f 161/362 162/365 58/108 57/106
+f 162/364 163/368 59/110 58/107
+f 163/367 164/371 60/112 59/109
+f 164/370 161/361 57/105 60/111
+f 165/374 166/377 62/116 61/114
+f 166/376 167/380 63/118 62/115
+f 167/379 168/383 64/120 63/117
+f 168/382 165/373 61/113 64/119
+f 169/386 170/389 66/124 65/122
+f 170/388 171/392 67/126 66/123
+f 171/391 172/395 68/128 67/125
+f 172/394 169/385 65/121 68/127
+f 173/398 174/401 70/132 69/130
+f 174/400 175/404 71/134 70/131
+f 175/403 176/407 72/136 71/133
+f 176/406 173/397 69/129 72/135
+f 177/410 178/413 74/140 73/138
+f 178/412 179/416 75/142 74/139
+f 179/415 180/419 76/144 75/141
+f 180/418 177/409 73/137 76/143
+f 78/148 182/425 181/422 77/146
+f 79/150 183/428 182/424 78/147
+f 80/152 184/431 183/427 79/149
+f 77/145 181/421 184/430 80/151
+f 82/156 186/437 185/434 81/154
+f 83/158 187/440 186/436 82/155
+f 84/160 188/443 187/439 83/157
+f 81/153 185/433 188/442 84/159
+f 189/446 190/449 86/164 85/162
+f 190/448 191/452 87/166 86/163
+f 191/451 192/455 88/168 87/165
+f 192/454 189/445 85/161 88/167
+f 193/458 194/461 90/172 89/170
+f 194/460 195/464 91/174 90/171
+f 195/463 196/467 92/176 91/173
+f 196/466 193/457 89/169 92/175
+f 197/470 198/473 94/180 93/178
+f 198/472 199/476 95/182 94/179
+f 199/475 200/479 96/184 95/181
+f 200/478 197/469 93/177 96/183
+f 98/188 202/485 201/482 97/186
+f 99/190 203/488 202/484 98/187
+f 100/192 204/491 203/487 99/189
+f 97/185 201/481 204/490 100/191
+f 342/664 374/749 373/746 341/662
+f 343/666 375/752 374/748 342/663
+f 344/668 376/755 375/751 343/665
+f 341/661 373/745 376/754 344/667
+f 318/616 350/677 349/674 317/614
+f 319/618 351/680 350/676 318/615
+f 320/620 352/683 351/679 319/617
+f 317/613 349/673 352/682 320/619
+f 322/624 354/689 353/686 321/622
+f 323/626 355/692 354/688 322/623
+f 324/628 356/695 355/691 323/625
+f 321/621 353/685 356/694 324/627
+f 357/698 358/701 326/632 325/630
+f 358/700 359/704 327/634 326/631
+f 359/703 360/707 328/636 327/633
+f 360/706 357/697 325/629 328/635
+f 361/710 362/713 330/640 329/638
+f 362/712 363/716 331/642 330/639
+f 363/715 364/719 332/644 331/641
+f 364/718 361/709 329/637 332/643
+f 365/722 366/725 334/648 333/646
+f 366/724 367/728 335/650 334/647
+f 367/727 368/731 336/652 335/649
+f 368/730 365/721 333/645 336/651
+f 338/656 370/737 369/734 337/654
+f 339/658 371/740 370/736 338/655
+f 340/660 372/743 371/739 339/657
+f 337/653 369/733 372/742 340/659
+f 461/920 462/923 434/841 433/839
+f 462/922 463/926 435/843 434/840
+f 463/925 464/929 436/845 435/842
+f 464/928 461/919 433/838 436/844
+f 437/848 438/851 410/793 409/791
+f 438/850 439/854 411/795 410/792
+f 439/853 440/857 412/797 411/794
+f 440/856 437/847 409/790 412/796
+f 441/860 442/863 414/801 413/799
+f 442/862 443/866 415/803 414/800
+f 443/865 444/869 416/805 415/802
+f 444/868 441/859 413/798 416/804
+f 418/809 446/875 445/872 417/807
+f 419/811 447/878 446/874 418/808
+f 420/813 448/881 447/877 419/810
+f 417/806 445/871 448/880 420/812
+f 422/817 450/887 449/884 421/815
+f 423/819 451/890 450/886 422/816
+f 424/821 452/893 451/889 423/818
+f 421/814 449/883 452/892 424/820
+f 426/825 454/899 453/896 425/823
+f 427/827 455/902 454/898 426/824
+f 428/829 456/905 455/901 427/826
+f 425/822 453/895 456/904 428/828
+f 457/908 458/911 430/833 429/831
+f 458/910 459/914 431/835 430/832
+f 459/913 460/917 432/837 431/834
+f 460/916 457/907 429/830 432/836
+f 467/934 466/932 378/758 379/759
+f 373/744 374/747 375/750 376/753
+f 378/757 499/973 498/970 210/506
+f 466/931 500/976 499/973 378/757
+f 209/504 497/967 500/976 466/931
+f 210/506 498/970 497/967 209/504
+f 540/1104 528/1068 525/1059 538/1098
+f 500/975 504/988 503/985 499/972
+f 539/1101 526/1062 528/1067 540/1103
+f 537/1095 524/1056 526/1061 539/1100
+f 503/984 507/997 506/994 502/982
+f 504/987 508/1000 507/997 503/984
+f 501/979 505/991 508/1000 504/987
+f 502/982 506/994 505/991 501/979
+f 507/996 511/1012 510/1008 506/993
+f 508/999 512/1016 511/1011 507/995
+f 505/990 509/1004 512/1015 508/998
+f 506/992 510/1007 509/1003 505/989
+f 511/1010 515/1028 514/1024 510/1006
+f 512/1014 516/1032 515/1027 511/1009
+f 509/1002 513/1020 516/1031 512/1013
+f 510/1005 514/1023 513/1019 509/1001
+f 515/1026 519/1041 518/1038 514/1022
+f 516/1030 520/1044 519/1040 515/1025
+f 513/1018 517/1035 520/1043 516/1029
+f 514/1021 518/1037 517/1034 513/1017
+f 525/1058 528/1066 526/1060 524/1055
+f 527/1065 521/1047 522/1050 523/1053
+f 108/203 347/671 315/612 541/1107
+f 351/678 352/681 349/672 350/675
+f 369/732 370/735 371/738 372/741
+f 358/699 357/696 360/705 359/702
+f 362/711 361/708 364/717 363/714
+f 366/723 365/720 368/729 367/726
+f 499/971 530/1074 529/1071 498/969
+f 503/983 532/1080 530/1074 499/971
+f 502/981 531/1077 532/1080 503/983
+f 498/969 529/1071 531/1077 502/981
+f 497/966 533/1083 534/1086 500/974
+f 501/978 535/1089 533/1083 497/966
+f 504/986 536/1092 535/1089 501/978
+f 500/974 534/1086 536/1092 504/986
+f 498/968 538/1097 537/1094 497/965
+f 502/980 540/1102 538/1097 498/968
+f 501/977 539/1099 540/1102 502/980
+f 497/965 537/1094 539/1099 501/977
+f 530/1073 108/202 541/1106 529/1070
+f 532/1079 347/670 108/201 530/1072
+f 531/1076 315/611 347/669 532/1078
+f 529/1069 541/1105 315/610 531/1075
+f 533/1082 527/1064 523/1052 534/1085
+f 535/1088 521/1046 527/1063 533/1081
+f 536/1091 522/1049 521/1045 535/1087
+f 534/1084 523/1051 522/1048 536/1090
+f 538/1096 525/1057 524/1054 537/1093
+f 446/873 447/876 448/879 445/870
+f 450/885 451/888 452/891 449/882
+f 454/897 455/900 456/903 453/894
+f 461/918 464/927 463/924 462/921
+f 457/906 460/915 459/912 458/909
+f 443/864 442/861 441/858 444/867
+f 439/852 438/849 437/846 440/855
+f 147/318 146/315 145/312 148/321
+f 151/330 150/327 149/324 152/333
+f 155/342 154/339 153/336 156/345
+f 135/282 136/285 133/276 134/279
+f 139/294 140/297 137/288 138/291
+f 111/210 112/213 109/204 110/207
+f 123/246 124/249 121/240 122/243
+f 142/303 143/306 144/309 141/300
+f 160/357 159/354 158/351 157/348
+f 164/369 163/366 162/363 161/360
+f 167/378 166/375 165/372 168/381
+f 180/417 179/414 178/411 177/408
+f 119/234 120/237 117/228 118/231
+f 115/222 116/225 113/216 114/219
+f 130/267 131/270 132/273 129/264
+f 126/255 127/258 128/261 125/252
+f 356/693 353/684 354/687 355/690
+f 201/480 202/483 203/486 204/489
+f 187/438 188/441 185/432 186/435
+f 176/405 175/402 174/399 173/396
+f 205/492 206/495 207/498 208/501
+f 190/447 189/444 192/453 191/450
+f 194/459 193/456 196/465 195/462
+f 198/471 197/468 200/477 199/474
+f 171/390 170/387 169/384 172/393
+f 183/426 184/429 181/420 182/423
+f 520/1042 517/1033 518/1036 519/1039
+
diff --git a/README.md b/README.md
index fad423fa..e1607922 100644
--- a/README.md
+++ b/README.md
@@ -1,45 +1,29 @@
# Project 4: Shape Grammar
-For this assignment you'll be building directly off of Project 3. To make things easier to keep track of, please fork and clone this repository [https://github.com/CIS700-Procedural-Graphics/Project4-Shape-Grammar](https://github.com/CIS700-Procedural-Graphics/Project4-Shape-Grammar) and copy your Project 3 code to start.
-
-**Goal:** to model an urban environment using a shape grammar.
-
-**Note:** We’re well aware that a nice-looking procedural city is a lot of work for a single week. Focus on designing a nice building grammar. The city layout strategies outlined in class (the extended l-systems) are complex and not expected. We will be satisfied with something reasonably simple, just not a uniform grid!
-
-## Symbol Node (5 points)
-Modify your symbol node class to include attributes necessary for rendering, such as
-- Associated geometry instance
-- Position
-- Scale
-- Anything else you may need
-
-## Grammar design (55 points)
-- Design at least five shape grammar rules for producing procedural buildings. Your buildings should vary in geometry and decorative features (beyond just differently-scaled cubes!). At least some of your rules should create child geometry that is in some way dependent on its parent’s state. (20 points)
- - Eg. A building may be subdivided along the x, y, or z axis into two smaller buildings
- - Some of your rules must be designed to use some property about its location. (10 points)
- - Your grammar should have some element of variation so your buildings are non-deterministic. Eg. your buildings sometimes subdivide along the x axis, and sometimes the y. (10 points)
-- Write a renderer that will interpret the results of your shape grammar parser and adds the appropriate geometry to your scene for each symbol in your set. (10 points)
-
-## Create a city (30 points)
-- Add a ground plane or some other base terrain to your scene (0 points, come on now)
-- Using any strategy you’d like, procedurally generate features that demarcate your city into different areas in an interesting and plausible way (Just a uniform grid is neither interesting nor plausible). (20 points)
- - Suggestions: roads, rivers, lakes, parks, high-population density
- - Note, these features don’t have to be directly visible, like high-population density, but they should somehow be visible in the appearance or arrangement of your buildings. Eg. High population density is more likely to generate taller buildings
-- Generate buildings throughout your city, using information about your city’s features. Color your buildings with a method that uses some aspect of its state. Eg. Color buildings by height, by population density, by number of rules used to generate it. (5 points)
-- Document your grammar rules and general approach in the readme. (5 points)
-- ???
-- Profit.
-
-## Make it interesting (10)
-Experiment! Make your city a work of art.
-
-
-## Warnings:
-You can very easily blow up three.js with this assignment. With a very simple grammar, our medium quality machine was able to handle 100 buildings with 6 generations each, but be careful if you’re doing this all CPU-side.
-
-## Suggestions for the overachievers:
-Go for a very high level of decorative detail!
-Place buildings with a strategy such that buildings have doors and windows that are always accessible.
-Generate buildings with coherent interiors
-If dividing your city into lots, generate odd-shaped lots and create building meshes that match their shape ie. rather than working with cubes, extrude upwards from the building footprints you find to generate a starting mesh to subdivide rather than starting with platonic geometry.
+I wanted to go for a city in the nighttime, so I used outlines that sort of represent how a city is lit at night.
+I tackled this project by first creating my rules against cubes. I then loaded two building OBJs and had to figure out their scale against a unit cube and adjust them so they still worked with the rules I created.
+
+## Grammar Design
+I made six rules:
+Stack: C-> AA, creates two stacks of buildings that further subdivide in the top and bottom
+Base, Bridge, or Normal Building: D->AEEE, D->C, D-> AEA, E is a terminal shape, that either represents the bridges or the base of a building. D nondeterministicly determines which result to produce.
+Subdivide: A->AB, B->A This is the recursive subdividing of the left and half of the shape. It randomly determines which of two building meshes to use as its geometry.
+
+My rules use the location to determine the placement of the subdivided components. The location is also passed to a noise function, which determines the height that is calculated for the rules.
+
+## Building Results
+
+
+
+
+## City Planning
+I used a noise function to simulate population density. I then tested at each vertex of a plane if the 3D noise value is greater than some threshold. If the noise is high enough, the building is created. You can also see in the skyline that the noise also dictates the height of the buildings generated.
+THe buildings are colored some shade of blue based on the length of the grammar of the buildings.
+
+
+## Skyline
+
+
+## Layout
+
\ No newline at end of file
diff --git a/Skyline.png b/Skyline.png
new file mode 100644
index 00000000..0f949ce3
Binary files /dev/null and b/Skyline.png differ
diff --git a/bundle.js b/bundle.js
new file mode 100644
index 00000000..c70494e8
--- /dev/null
+++ b/bundle.js
@@ -0,0 +1,48931 @@
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ var _framework = __webpack_require__(1);
+
+ var _framework2 = _interopRequireDefault(_framework);
+
+ var _shapegrammar = __webpack_require__(9);
+
+ var _shapegrammar2 = _interopRequireDefault(_shapegrammar);
+
+ var _city = __webpack_require__(10);
+
+ var _city2 = _interopRequireDefault(_city);
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ var THREE = __webpack_require__(6); // older modules are imported like this. You shouldn't have to worry about this much
+
+
+ var objLoader = new THREE.OBJLoader();
+
+ var geo1;
+ var geo2;
+
+ var voronoi = !true;
+
+ var points = new THREE.Geometry();
+ var velocities = [];
+
+ // Create particle system
+ for (var i = 0; i < 10000; i++) {
+ var p = new THREE.Vector3();
+ p.x = THREE.Math.randFloatSpread(200);
+ p.y = THREE.Math.randFloatSpread(200);
+ p.z = THREE.Math.randFloatSpread(200);
+ points.vertices.push(p);
+ velocities.push(-Math.random() / 5);
+ points.lights = true;
+ }
+
+ var whiteCol = new THREE.PointsMaterial({ color: 0xffffff, size: 0.5,
+ map: new THREE.TextureLoader().load('src/particle.png'),
+ blending: THREE.AdditiveBlending,
+ transparent: true });
+
+ var starField = new THREE.Points(points, whiteCol);
+
+ // called after the scene loads
+ function onLoad(framework) {
+
+ var scene = framework.scene;
+ scene.add(starField);
+
+ // make night sky background
+ var loader = new THREE.TextureLoader();
+ var background = new THREE.TextureLoader().load('src/darkbluepainting.jpg');
+ scene.background = background;
+
+ var camera = framework.camera;
+ var renderer = framework.renderer;
+ var gui = framework.gui;
+ var stats = framework.stats;
+
+ // Scene set up
+ var directionalLight = new THREE.DirectionalLight(0xffffff, 1);
+ directionalLight.color.setHSL(0.1, 1, 0.95);
+ directionalLight.position.set(1, 3, 2);
+ directionalLight.position.multiplyScalar(10);
+
+ scene.add(directionalLight);
+
+ var backLight = new THREE.DirectionalLight(0xffffff, 1);
+ backLight.color.setHSL(0.1, 1, 0.95);
+ backLight.position.set(1, 3, -2);
+ backLight.position.multiplyScalar(10);
+
+ scene.add(backLight);
+
+ camera.position.set(1, 10, 5);
+ camera.lookAt(new THREE.Vector3(0, 0, 0));
+ camera.updateProjectionMatrix();
+
+ objLoader.load('Build11_obj.obj', function (obj) {
+ // LOOK: This function runs after the obj has finished loading
+ geo1 = obj.children[0].geometry;
+ objLoader.load('Build10_obj.obj', function (obj) {
+ // LOOK: This function runs after the obj has finished loading
+ geo2 = obj.children[0].geometry;
+ var city = new _city2.default.City(scene, geo1, geo2);
+ });
+ });
+
+ // Gui variables
+ gui.add(camera, 'fov', 0, 180).onChange(function (newVal) {
+ camera.updateProjectionMatrix();
+ });
+ }
+
+ // called on frame updates
+ function onUpdate(framework) {
+ for (var i = 0; i < 10000; i++) {
+ points.vertices[i].y += velocities[i];
+ if (points.vertices[i].y <= 0.0) {
+ points.vertices[i].y = 20;
+ }
+ points.lights = true;
+ }
+ starField.geometry.verticesNeedUpdate = true;
+ }
+
+ // when the scene is done initializing, it will call onLoad, then on frame updates, call onUpdate
+ _framework2.default.init(onLoad, onUpdate);
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var _statsJs = __webpack_require__(2);
+
+ var _statsJs2 = _interopRequireDefault(_statsJs);
+
+ var _datGui = __webpack_require__(3);
+
+ var _datGui2 = _interopRequireDefault(_datGui);
+
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+ var THREE = __webpack_require__(6);
+ var OrbitControls = __webpack_require__(7)(THREE);
+ var OBJLoader = __webpack_require__(8)(THREE);
+
+
+ // when the scene is done initializing, the function passed as `callback` will be executed
+ // then, every frame, the function passed as `update` will be executed
+ function init(callback, update) {
+ var stats = new _statsJs2.default();
+ stats.setMode(1);
+ stats.domElement.style.position = 'absolute';
+ stats.domElement.style.left = '0px';
+ stats.domElement.style.top = '0px';
+ document.body.appendChild(stats.domElement);
+
+ var gui = new _datGui2.default.GUI();
+
+ var framework = {
+ gui: gui,
+ stats: stats
+ };
+
+ // run this function after the window loads
+ window.addEventListener('load', function () {
+
+ var scene = new THREE.Scene();
+ var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
+ var renderer = new THREE.WebGLRenderer({ antialias: true });
+ renderer.setPixelRatio(window.devicePixelRatio);
+ renderer.setSize(window.innerWidth, window.innerHeight);
+ renderer.setClearColor(0x0a3a87, 1);
+
+ var controls = new OrbitControls(camera, renderer.domElement);
+ controls.enableDamping = true;
+ controls.enableZoom = true;
+ controls.target.set(0, 0, 0);
+ controls.rotateSpeed = 0.3;
+ controls.zoomSpeed = 1.0;
+ controls.panSpeed = 2.0;
+
+ document.body.appendChild(renderer.domElement);
+
+ // resize the canvas when the window changes
+ window.addEventListener('resize', function () {
+ camera.aspect = window.innerWidth / window.innerHeight;
+ camera.updateProjectionMatrix();
+ renderer.setSize(window.innerWidth, window.innerHeight);
+ }, false);
+
+ // assign THREE.js objects to the object we will return
+ framework.scene = scene;
+ framework.camera = camera;
+ framework.renderer = renderer;
+
+ // begin the animation loop
+ (function tick() {
+ stats.begin();
+ update(framework); // perform any requested updates
+ renderer.render(scene, camera); // render the scene
+ stats.end();
+ requestAnimationFrame(tick); // register to call this again when the browser renders a new frame
+ })();
+
+ // we will pass the scene, gui, renderer, camera, etc... to the callback function
+ return callback(framework);
+ });
+ }
+
+ exports.default = {
+ init: init
+ };
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+ // stats.js - http://github.com/mrdoob/stats.js
+ var Stats=function(){var l=Date.now(),m=l,g=0,n=Infinity,o=0,h=0,p=Infinity,q=0,r=0,s=0,f=document.createElement("div");f.id="stats";f.addEventListener("mousedown",function(b){b.preventDefault();t(++s%2)},!1);f.style.cssText="width:80px;opacity:0.9;cursor:pointer";var a=document.createElement("div");a.id="fps";a.style.cssText="padding:0 0 3px 3px;text-align:left;background-color:#002";f.appendChild(a);var i=document.createElement("div");i.id="fpsText";i.style.cssText="color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px";
+ i.innerHTML="FPS";a.appendChild(i);var c=document.createElement("div");c.id="fpsGraph";c.style.cssText="position:relative;width:74px;height:30px;background-color:#0ff";for(a.appendChild(c);74>c.children.length;){var j=document.createElement("span");j.style.cssText="width:1px;height:30px;float:left;background-color:#113";c.appendChild(j)}var d=document.createElement("div");d.id="ms";d.style.cssText="padding:0 0 3px 3px;text-align:left;background-color:#020;display:none";f.appendChild(d);var k=document.createElement("div");
+ k.id="msText";k.style.cssText="color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px";k.innerHTML="MS";d.appendChild(k);var e=document.createElement("div");e.id="msGraph";e.style.cssText="position:relative;width:74px;height:30px;background-color:#0f0";for(d.appendChild(e);74>e.children.length;)j=document.createElement("span"),j.style.cssText="width:1px;height:30px;float:left;background-color:#131",e.appendChild(j);var t=function(b){s=b;switch(s){case 0:a.style.display=
+ "block";d.style.display="none";break;case 1:a.style.display="none",d.style.display="block"}};return{REVISION:12,domElement:f,setMode:t,begin:function(){l=Date.now()},end:function(){var b=Date.now();g=b-l;n=Math.min(n,g);o=Math.max(o,g);k.textContent=g+" MS ("+n+"-"+o+")";var a=Math.min(30,30-30*(g/200));e.appendChild(e.firstChild).style.height=a+"px";r++;b>m+1E3&&(h=Math.round(1E3*r/(b-m)),p=Math.min(p,h),q=Math.max(q,h),i.textContent=h+" FPS ("+p+"-"+q+")",a=Math.min(30,30-30*(h/100)),c.appendChild(c.firstChild).style.height=
+ a+"px",m=b,r=0);return b},update:function(){l=this.end()}}};"object"===typeof module&&(module.exports=Stats);
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(4)
+ module.exports.color = __webpack_require__(5)
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ /**
+ * dat-gui JavaScript Controller Library
+ * http://code.google.com/p/dat-gui
+ *
+ * Copyright 2011 Data Arts Team, Google Creative Lab
+ *
+ * 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
+ */
+
+ /** @namespace */
+ var dat = module.exports = dat || {};
+
+ /** @namespace */
+ dat.gui = dat.gui || {};
+
+ /** @namespace */
+ dat.utils = dat.utils || {};
+
+ /** @namespace */
+ dat.controllers = dat.controllers || {};
+
+ /** @namespace */
+ dat.dom = dat.dom || {};
+
+ /** @namespace */
+ dat.color = dat.color || {};
+
+ dat.utils.css = (function () {
+ return {
+ load: function (url, doc) {
+ doc = doc || document;
+ var link = doc.createElement('link');
+ link.type = 'text/css';
+ link.rel = 'stylesheet';
+ link.href = url;
+ doc.getElementsByTagName('head')[0].appendChild(link);
+ },
+ inject: function(css, doc) {
+ doc = doc || document;
+ var injected = document.createElement('style');
+ injected.type = 'text/css';
+ injected.innerHTML = css;
+ doc.getElementsByTagName('head')[0].appendChild(injected);
+ }
+ }
+ })();
+
+
+ dat.utils.common = (function () {
+
+ var ARR_EACH = Array.prototype.forEach;
+ var ARR_SLICE = Array.prototype.slice;
+
+ /**
+ * Band-aid methods for things that should be a lot easier in JavaScript.
+ * Implementation and structure inspired by underscore.js
+ * http://documentcloud.github.com/underscore/
+ */
+
+ return {
+
+ BREAK: {},
+
+ extend: function(target) {
+
+ this.each(ARR_SLICE.call(arguments, 1), function(obj) {
+
+ for (var key in obj)
+ if (!this.isUndefined(obj[key]))
+ target[key] = obj[key];
+
+ }, this);
+
+ return target;
+
+ },
+
+ defaults: function(target) {
+
+ this.each(ARR_SLICE.call(arguments, 1), function(obj) {
+
+ for (var key in obj)
+ if (this.isUndefined(target[key]))
+ target[key] = obj[key];
+
+ }, this);
+
+ return target;
+
+ },
+
+ compose: function() {
+ var toCall = ARR_SLICE.call(arguments);
+ return function() {
+ var args = ARR_SLICE.call(arguments);
+ for (var i = toCall.length -1; i >= 0; i--) {
+ args = [toCall[i].apply(this, args)];
+ }
+ return args[0];
+ }
+ },
+
+ each: function(obj, itr, scope) {
+
+
+ if (ARR_EACH && obj.forEach === ARR_EACH) {
+
+ obj.forEach(itr, scope);
+
+ } else if (obj.length === obj.length + 0) { // Is number but not NaN
+
+ for (var key = 0, l = obj.length; key < l; key++)
+ if (key in obj && itr.call(scope, obj[key], key) === this.BREAK)
+ return;
+
+ } else {
+
+ for (var key in obj)
+ if (itr.call(scope, obj[key], key) === this.BREAK)
+ return;
+
+ }
+
+ },
+
+ defer: function(fnc) {
+ setTimeout(fnc, 0);
+ },
+
+ toArray: function(obj) {
+ if (obj.toArray) return obj.toArray();
+ return ARR_SLICE.call(obj);
+ },
+
+ isUndefined: function(obj) {
+ return obj === undefined;
+ },
+
+ isNull: function(obj) {
+ return obj === null;
+ },
+
+ isNaN: function(obj) {
+ return obj !== obj;
+ },
+
+ isArray: Array.isArray || function(obj) {
+ return obj.constructor === Array;
+ },
+
+ isObject: function(obj) {
+ return obj === Object(obj);
+ },
+
+ isNumber: function(obj) {
+ return obj === obj+0;
+ },
+
+ isString: function(obj) {
+ return obj === obj+'';
+ },
+
+ isBoolean: function(obj) {
+ return obj === false || obj === true;
+ },
+
+ isFunction: function(obj) {
+ return Object.prototype.toString.call(obj) === '[object Function]';
+ }
+
+ };
+
+ })();
+
+
+ dat.controllers.Controller = (function (common) {
+
+ /**
+ * @class An "abstract" class that represents a given property of an object.
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ *
+ * @member dat.controllers
+ */
+ var Controller = function(object, property) {
+
+ this.initialValue = object[property];
+
+ /**
+ * Those who extend this class will put their DOM elements in here.
+ * @type {DOMElement}
+ */
+ this.domElement = document.createElement('div');
+
+ /**
+ * The object to manipulate
+ * @type {Object}
+ */
+ this.object = object;
+
+ /**
+ * The name of the property to manipulate
+ * @type {String}
+ */
+ this.property = property;
+
+ /**
+ * The function to be called on change.
+ * @type {Function}
+ * @ignore
+ */
+ this.__onChange = undefined;
+
+ /**
+ * The function to be called on finishing change.
+ * @type {Function}
+ * @ignore
+ */
+ this.__onFinishChange = undefined;
+
+ };
+
+ common.extend(
+
+ Controller.prototype,
+
+ /** @lends dat.controllers.Controller.prototype */
+ {
+
+ /**
+ * Specify that a function fire every time someone changes the value with
+ * this Controller.
+ *
+ * @param {Function} fnc This function will be called whenever the value
+ * is modified via this Controller.
+ * @returns {dat.controllers.Controller} this
+ */
+ onChange: function(fnc) {
+ this.__onChange = fnc;
+ return this;
+ },
+
+ /**
+ * Specify that a function fire every time someone "finishes" changing
+ * the value wih this Controller. Useful for values that change
+ * incrementally like numbers or strings.
+ *
+ * @param {Function} fnc This function will be called whenever
+ * someone "finishes" changing the value via this Controller.
+ * @returns {dat.controllers.Controller} this
+ */
+ onFinishChange: function(fnc) {
+ this.__onFinishChange = fnc;
+ return this;
+ },
+
+ /**
+ * Change the value of object[property]
+ *
+ * @param {Object} newValue The new value of object[property]
+ */
+ setValue: function(newValue) {
+ this.object[this.property] = newValue;
+ if (this.__onChange) {
+ this.__onChange.call(this, newValue);
+ }
+ this.updateDisplay();
+ return this;
+ },
+
+ /**
+ * Gets the value of object[property]
+ *
+ * @returns {Object} The current value of object[property]
+ */
+ getValue: function() {
+ return this.object[this.property];
+ },
+
+ /**
+ * Refreshes the visual display of a Controller in order to keep sync
+ * with the object's current value.
+ * @returns {dat.controllers.Controller} this
+ */
+ updateDisplay: function() {
+ return this;
+ },
+
+ /**
+ * @returns {Boolean} true if the value has deviated from initialValue
+ */
+ isModified: function() {
+ return this.initialValue !== this.getValue()
+ }
+
+ }
+
+ );
+
+ return Controller;
+
+
+ })(dat.utils.common);
+
+
+ dat.dom.dom = (function (common) {
+
+ var EVENT_MAP = {
+ 'HTMLEvents': ['change'],
+ 'MouseEvents': ['click','mousemove','mousedown','mouseup', 'mouseover'],
+ 'KeyboardEvents': ['keydown']
+ };
+
+ var EVENT_MAP_INV = {};
+ common.each(EVENT_MAP, function(v, k) {
+ common.each(v, function(e) {
+ EVENT_MAP_INV[e] = k;
+ });
+ });
+
+ var CSS_VALUE_PIXELS = /(\d+(\.\d+)?)px/;
+
+ function cssValueToPixels(val) {
+
+ if (val === '0' || common.isUndefined(val)) return 0;
+
+ var match = val.match(CSS_VALUE_PIXELS);
+
+ if (!common.isNull(match)) {
+ return parseFloat(match[1]);
+ }
+
+ // TODO ...ems? %?
+
+ return 0;
+
+ }
+
+ /**
+ * @namespace
+ * @member dat.dom
+ */
+ var dom = {
+
+ /**
+ *
+ * @param elem
+ * @param selectable
+ */
+ makeSelectable: function(elem, selectable) {
+
+ if (elem === undefined || elem.style === undefined) return;
+
+ elem.onselectstart = selectable ? function() {
+ return false;
+ } : function() {
+ };
+
+ elem.style.MozUserSelect = selectable ? 'auto' : 'none';
+ elem.style.KhtmlUserSelect = selectable ? 'auto' : 'none';
+ elem.unselectable = selectable ? 'on' : 'off';
+
+ },
+
+ /**
+ *
+ * @param elem
+ * @param horizontal
+ * @param vertical
+ */
+ makeFullscreen: function(elem, horizontal, vertical) {
+
+ if (common.isUndefined(horizontal)) horizontal = true;
+ if (common.isUndefined(vertical)) vertical = true;
+
+ elem.style.position = 'absolute';
+
+ if (horizontal) {
+ elem.style.left = 0;
+ elem.style.right = 0;
+ }
+ if (vertical) {
+ elem.style.top = 0;
+ elem.style.bottom = 0;
+ }
+
+ },
+
+ /**
+ *
+ * @param elem
+ * @param eventType
+ * @param params
+ */
+ fakeEvent: function(elem, eventType, params, aux) {
+ params = params || {};
+ var className = EVENT_MAP_INV[eventType];
+ if (!className) {
+ throw new Error('Event type ' + eventType + ' not supported.');
+ }
+ var evt = document.createEvent(className);
+ switch (className) {
+ case 'MouseEvents':
+ var clientX = params.x || params.clientX || 0;
+ var clientY = params.y || params.clientY || 0;
+ evt.initMouseEvent(eventType, params.bubbles || false,
+ params.cancelable || true, window, params.clickCount || 1,
+ 0, //screen X
+ 0, //screen Y
+ clientX, //client X
+ clientY, //client Y
+ false, false, false, false, 0, null);
+ break;
+ case 'KeyboardEvents':
+ var init = evt.initKeyboardEvent || evt.initKeyEvent; // webkit || moz
+ common.defaults(params, {
+ cancelable: true,
+ ctrlKey: false,
+ altKey: false,
+ shiftKey: false,
+ metaKey: false,
+ keyCode: undefined,
+ charCode: undefined
+ });
+ init(eventType, params.bubbles || false,
+ params.cancelable, window,
+ params.ctrlKey, params.altKey,
+ params.shiftKey, params.metaKey,
+ params.keyCode, params.charCode);
+ break;
+ default:
+ evt.initEvent(eventType, params.bubbles || false,
+ params.cancelable || true);
+ break;
+ }
+ common.defaults(evt, aux);
+ elem.dispatchEvent(evt);
+ },
+
+ /**
+ *
+ * @param elem
+ * @param event
+ * @param func
+ * @param bool
+ */
+ bind: function(elem, event, func, bool) {
+ bool = bool || false;
+ if (elem.addEventListener)
+ elem.addEventListener(event, func, bool);
+ else if (elem.attachEvent)
+ elem.attachEvent('on' + event, func);
+ return dom;
+ },
+
+ /**
+ *
+ * @param elem
+ * @param event
+ * @param func
+ * @param bool
+ */
+ unbind: function(elem, event, func, bool) {
+ bool = bool || false;
+ if (elem.removeEventListener)
+ elem.removeEventListener(event, func, bool);
+ else if (elem.detachEvent)
+ elem.detachEvent('on' + event, func);
+ return dom;
+ },
+
+ /**
+ *
+ * @param elem
+ * @param className
+ */
+ addClass: function(elem, className) {
+ if (elem.className === undefined) {
+ elem.className = className;
+ } else if (elem.className !== className) {
+ var classes = elem.className.split(/ +/);
+ if (classes.indexOf(className) == -1) {
+ classes.push(className);
+ elem.className = classes.join(' ').replace(/^\s+/, '').replace(/\s+$/, '');
+ }
+ }
+ return dom;
+ },
+
+ /**
+ *
+ * @param elem
+ * @param className
+ */
+ removeClass: function(elem, className) {
+ if (className) {
+ if (elem.className === undefined) {
+ // elem.className = className;
+ } else if (elem.className === className) {
+ elem.removeAttribute('class');
+ } else {
+ var classes = elem.className.split(/ +/);
+ var index = classes.indexOf(className);
+ if (index != -1) {
+ classes.splice(index, 1);
+ elem.className = classes.join(' ');
+ }
+ }
+ } else {
+ elem.className = undefined;
+ }
+ return dom;
+ },
+
+ hasClass: function(elem, className) {
+ return new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)').test(elem.className) || false;
+ },
+
+ /**
+ *
+ * @param elem
+ */
+ getWidth: function(elem) {
+
+ var style = getComputedStyle(elem);
+
+ return cssValueToPixels(style['border-left-width']) +
+ cssValueToPixels(style['border-right-width']) +
+ cssValueToPixels(style['padding-left']) +
+ cssValueToPixels(style['padding-right']) +
+ cssValueToPixels(style['width']);
+ },
+
+ /**
+ *
+ * @param elem
+ */
+ getHeight: function(elem) {
+
+ var style = getComputedStyle(elem);
+
+ return cssValueToPixels(style['border-top-width']) +
+ cssValueToPixels(style['border-bottom-width']) +
+ cssValueToPixels(style['padding-top']) +
+ cssValueToPixels(style['padding-bottom']) +
+ cssValueToPixels(style['height']);
+ },
+
+ /**
+ *
+ * @param elem
+ */
+ getOffset: function(elem) {
+ var offset = {left: 0, top:0};
+ if (elem.offsetParent) {
+ do {
+ offset.left += elem.offsetLeft;
+ offset.top += elem.offsetTop;
+ } while (elem = elem.offsetParent);
+ }
+ return offset;
+ },
+
+ // http://stackoverflow.com/posts/2684561/revisions
+ /**
+ *
+ * @param elem
+ */
+ isActive: function(elem) {
+ return elem === document.activeElement && ( elem.type || elem.href );
+ }
+
+ };
+
+ return dom;
+
+ })(dat.utils.common);
+
+
+ dat.controllers.OptionController = (function (Controller, dom, common) {
+
+ /**
+ * @class Provides a select input to alter the property of an object, using a
+ * list of accepted values.
+ *
+ * @extends dat.controllers.Controller
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ * @param {Object|string[]} options A map of labels to acceptable values, or
+ * a list of acceptable string values.
+ *
+ * @member dat.controllers
+ */
+ var OptionController = function(object, property, options) {
+
+ OptionController.superclass.call(this, object, property);
+
+ var _this = this;
+
+ /**
+ * The drop down menu
+ * @ignore
+ */
+ this.__select = document.createElement('select');
+
+ if (common.isArray(options)) {
+ var map = {};
+ common.each(options, function(element) {
+ map[element] = element;
+ });
+ options = map;
+ }
+
+ common.each(options, function(value, key) {
+
+ var opt = document.createElement('option');
+ opt.innerHTML = key;
+ opt.setAttribute('value', value);
+ _this.__select.appendChild(opt);
+
+ });
+
+ // Acknowledge original value
+ this.updateDisplay();
+
+ dom.bind(this.__select, 'change', function() {
+ var desiredValue = this.options[this.selectedIndex].value;
+ _this.setValue(desiredValue);
+ });
+
+ this.domElement.appendChild(this.__select);
+
+ };
+
+ OptionController.superclass = Controller;
+
+ common.extend(
+
+ OptionController.prototype,
+ Controller.prototype,
+
+ {
+
+ setValue: function(v) {
+ var toReturn = OptionController.superclass.prototype.setValue.call(this, v);
+ if (this.__onFinishChange) {
+ this.__onFinishChange.call(this, this.getValue());
+ }
+ return toReturn;
+ },
+
+ updateDisplay: function() {
+ this.__select.value = this.getValue();
+ return OptionController.superclass.prototype.updateDisplay.call(this);
+ }
+
+ }
+
+ );
+
+ return OptionController;
+
+ })(dat.controllers.Controller,
+ dat.dom.dom,
+ dat.utils.common);
+
+
+ dat.controllers.NumberController = (function (Controller, common) {
+
+ /**
+ * @class Represents a given property of an object that is a number.
+ *
+ * @extends dat.controllers.Controller
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ * @param {Object} [params] Optional parameters
+ * @param {Number} [params.min] Minimum allowed value
+ * @param {Number} [params.max] Maximum allowed value
+ * @param {Number} [params.step] Increment by which to change value
+ *
+ * @member dat.controllers
+ */
+ var NumberController = function(object, property, params) {
+
+ NumberController.superclass.call(this, object, property);
+
+ params = params || {};
+
+ this.__min = params.min;
+ this.__max = params.max;
+ this.__step = params.step;
+
+ if (common.isUndefined(this.__step)) {
+
+ if (this.initialValue == 0) {
+ this.__impliedStep = 1; // What are we, psychics?
+ } else {
+ // Hey Doug, check this out.
+ this.__impliedStep = Math.pow(10, Math.floor(Math.log(this.initialValue)/Math.LN10))/10;
+ }
+
+ } else {
+
+ this.__impliedStep = this.__step;
+
+ }
+
+ this.__precision = numDecimals(this.__impliedStep);
+
+
+ };
+
+ NumberController.superclass = Controller;
+
+ common.extend(
+
+ NumberController.prototype,
+ Controller.prototype,
+
+ /** @lends dat.controllers.NumberController.prototype */
+ {
+
+ setValue: function(v) {
+
+ if (this.__min !== undefined && v < this.__min) {
+ v = this.__min;
+ } else if (this.__max !== undefined && v > this.__max) {
+ v = this.__max;
+ }
+
+ if (this.__step !== undefined && v % this.__step != 0) {
+ v = Math.round(v / this.__step) * this.__step;
+ }
+
+ return NumberController.superclass.prototype.setValue.call(this, v);
+
+ },
+
+ /**
+ * Specify a minimum value for object[property].
+ *
+ * @param {Number} minValue The minimum value for
+ * object[property]
+ * @returns {dat.controllers.NumberController} this
+ */
+ min: function(v) {
+ this.__min = v;
+ return this;
+ },
+
+ /**
+ * Specify a maximum value for object[property].
+ *
+ * @param {Number} maxValue The maximum value for
+ * object[property]
+ * @returns {dat.controllers.NumberController} this
+ */
+ max: function(v) {
+ this.__max = v;
+ return this;
+ },
+
+ /**
+ * Specify a step value that dat.controllers.NumberController
+ * increments by.
+ *
+ * @param {Number} stepValue The step value for
+ * dat.controllers.NumberController
+ * @default if minimum and maximum specified increment is 1% of the
+ * difference otherwise stepValue is 1
+ * @returns {dat.controllers.NumberController} this
+ */
+ step: function(v) {
+ this.__step = v;
+ return this;
+ }
+
+ }
+
+ );
+
+ function numDecimals(x) {
+ x = x.toString();
+ if (x.indexOf('.') > -1) {
+ return x.length - x.indexOf('.') - 1;
+ } else {
+ return 0;
+ }
+ }
+
+ return NumberController;
+
+ })(dat.controllers.Controller,
+ dat.utils.common);
+
+
+ dat.controllers.NumberControllerBox = (function (NumberController, dom, common) {
+
+ /**
+ * @class Represents a given property of an object that is a number and
+ * provides an input element with which to manipulate it.
+ *
+ * @extends dat.controllers.Controller
+ * @extends dat.controllers.NumberController
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ * @param {Object} [params] Optional parameters
+ * @param {Number} [params.min] Minimum allowed value
+ * @param {Number} [params.max] Maximum allowed value
+ * @param {Number} [params.step] Increment by which to change value
+ *
+ * @member dat.controllers
+ */
+ var NumberControllerBox = function(object, property, params) {
+
+ this.__truncationSuspended = false;
+
+ NumberControllerBox.superclass.call(this, object, property, params);
+
+ var _this = this;
+
+ /**
+ * {Number} Previous mouse y position
+ * @ignore
+ */
+ var prev_y;
+
+ this.__input = document.createElement('input');
+ this.__input.setAttribute('type', 'text');
+
+ // Makes it so manually specified values are not truncated.
+
+ dom.bind(this.__input, 'change', onChange);
+ dom.bind(this.__input, 'blur', onBlur);
+ dom.bind(this.__input, 'mousedown', onMouseDown);
+ dom.bind(this.__input, 'keydown', function(e) {
+
+ // When pressing entire, you can be as precise as you want.
+ if (e.keyCode === 13) {
+ _this.__truncationSuspended = true;
+ this.blur();
+ _this.__truncationSuspended = false;
+ }
+
+ });
+
+ function onChange() {
+ var attempted = parseFloat(_this.__input.value);
+ if (!common.isNaN(attempted)) _this.setValue(attempted);
+ }
+
+ function onBlur() {
+ onChange();
+ if (_this.__onFinishChange) {
+ _this.__onFinishChange.call(_this, _this.getValue());
+ }
+ }
+
+ function onMouseDown(e) {
+ dom.bind(window, 'mousemove', onMouseDrag);
+ dom.bind(window, 'mouseup', onMouseUp);
+ prev_y = e.clientY;
+ }
+
+ function onMouseDrag(e) {
+
+ var diff = prev_y - e.clientY;
+ _this.setValue(_this.getValue() + diff * _this.__impliedStep);
+
+ prev_y = e.clientY;
+
+ }
+
+ function onMouseUp() {
+ dom.unbind(window, 'mousemove', onMouseDrag);
+ dom.unbind(window, 'mouseup', onMouseUp);
+ }
+
+ this.updateDisplay();
+
+ this.domElement.appendChild(this.__input);
+
+ };
+
+ NumberControllerBox.superclass = NumberController;
+
+ common.extend(
+
+ NumberControllerBox.prototype,
+ NumberController.prototype,
+
+ {
+
+ updateDisplay: function() {
+
+ this.__input.value = this.__truncationSuspended ? this.getValue() : roundToDecimal(this.getValue(), this.__precision);
+ return NumberControllerBox.superclass.prototype.updateDisplay.call(this);
+ }
+
+ }
+
+ );
+
+ function roundToDecimal(value, decimals) {
+ var tenTo = Math.pow(10, decimals);
+ return Math.round(value * tenTo) / tenTo;
+ }
+
+ return NumberControllerBox;
+
+ })(dat.controllers.NumberController,
+ dat.dom.dom,
+ dat.utils.common);
+
+
+ dat.controllers.NumberControllerSlider = (function (NumberController, dom, css, common, styleSheet) {
+
+ /**
+ * @class Represents a given property of an object that is a number, contains
+ * a minimum and maximum, and provides a slider element with which to
+ * manipulate it. It should be noted that the slider element is made up of
+ * <div> tags, not the html5
+ * <slider> element.
+ *
+ * @extends dat.controllers.Controller
+ * @extends dat.controllers.NumberController
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ * @param {Number} minValue Minimum allowed value
+ * @param {Number} maxValue Maximum allowed value
+ * @param {Number} stepValue Increment by which to change value
+ *
+ * @member dat.controllers
+ */
+ var NumberControllerSlider = function(object, property, min, max, step) {
+
+ NumberControllerSlider.superclass.call(this, object, property, { min: min, max: max, step: step });
+
+ var _this = this;
+
+ this.__background = document.createElement('div');
+ this.__foreground = document.createElement('div');
+
+
+
+ dom.bind(this.__background, 'mousedown', onMouseDown);
+
+ dom.addClass(this.__background, 'slider');
+ dom.addClass(this.__foreground, 'slider-fg');
+
+ function onMouseDown(e) {
+
+ dom.bind(window, 'mousemove', onMouseDrag);
+ dom.bind(window, 'mouseup', onMouseUp);
+
+ onMouseDrag(e);
+ }
+
+ function onMouseDrag(e) {
+
+ e.preventDefault();
+
+ var offset = dom.getOffset(_this.__background);
+ var width = dom.getWidth(_this.__background);
+
+ _this.setValue(
+ map(e.clientX, offset.left, offset.left + width, _this.__min, _this.__max)
+ );
+
+ return false;
+
+ }
+
+ function onMouseUp() {
+ dom.unbind(window, 'mousemove', onMouseDrag);
+ dom.unbind(window, 'mouseup', onMouseUp);
+ if (_this.__onFinishChange) {
+ _this.__onFinishChange.call(_this, _this.getValue());
+ }
+ }
+
+ this.updateDisplay();
+
+ this.__background.appendChild(this.__foreground);
+ this.domElement.appendChild(this.__background);
+
+ };
+
+ NumberControllerSlider.superclass = NumberController;
+
+ /**
+ * Injects default stylesheet for slider elements.
+ */
+ NumberControllerSlider.useDefaultStyles = function() {
+ css.inject(styleSheet);
+ };
+
+ common.extend(
+
+ NumberControllerSlider.prototype,
+ NumberController.prototype,
+
+ {
+
+ updateDisplay: function() {
+ var pct = (this.getValue() - this.__min)/(this.__max - this.__min);
+ this.__foreground.style.width = pct*100+'%';
+ return NumberControllerSlider.superclass.prototype.updateDisplay.call(this);
+ }
+
+ }
+
+
+
+ );
+
+ function map(v, i1, i2, o1, o2) {
+ return o1 + (o2 - o1) * ((v - i1) / (i2 - i1));
+ }
+
+ return NumberControllerSlider;
+
+ })(dat.controllers.NumberController,
+ dat.dom.dom,
+ dat.utils.css,
+ dat.utils.common,
+ ".slider {\n box-shadow: inset 0 2px 4px rgba(0,0,0,0.15);\n height: 1em;\n border-radius: 1em;\n background-color: #eee;\n padding: 0 0.5em;\n overflow: hidden;\n}\n\n.slider-fg {\n padding: 1px 0 2px 0;\n background-color: #aaa;\n height: 1em;\n margin-left: -0.5em;\n padding-right: 0.5em;\n border-radius: 1em 0 0 1em;\n}\n\n.slider-fg:after {\n display: inline-block;\n border-radius: 1em;\n background-color: #fff;\n border: 1px solid #aaa;\n content: '';\n float: right;\n margin-right: -1em;\n margin-top: -1px;\n height: 0.9em;\n width: 0.9em;\n}");
+
+
+ dat.controllers.FunctionController = (function (Controller, dom, common) {
+
+ /**
+ * @class Provides a GUI interface to fire a specified method, a property of an object.
+ *
+ * @extends dat.controllers.Controller
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ *
+ * @member dat.controllers
+ */
+ var FunctionController = function(object, property, text) {
+
+ FunctionController.superclass.call(this, object, property);
+
+ var _this = this;
+
+ this.__button = document.createElement('div');
+ this.__button.innerHTML = text === undefined ? 'Fire' : text;
+ dom.bind(this.__button, 'click', function(e) {
+ e.preventDefault();
+ _this.fire();
+ return false;
+ });
+
+ dom.addClass(this.__button, 'button');
+
+ this.domElement.appendChild(this.__button);
+
+
+ };
+
+ FunctionController.superclass = Controller;
+
+ common.extend(
+
+ FunctionController.prototype,
+ Controller.prototype,
+ {
+
+ fire: function() {
+ if (this.__onChange) {
+ this.__onChange.call(this);
+ }
+ if (this.__onFinishChange) {
+ this.__onFinishChange.call(this, this.getValue());
+ }
+ this.getValue().call(this.object);
+ }
+ }
+
+ );
+
+ return FunctionController;
+
+ })(dat.controllers.Controller,
+ dat.dom.dom,
+ dat.utils.common);
+
+
+ dat.controllers.BooleanController = (function (Controller, dom, common) {
+
+ /**
+ * @class Provides a checkbox input to alter the boolean property of an object.
+ * @extends dat.controllers.Controller
+ *
+ * @param {Object} object The object to be manipulated
+ * @param {string} property The name of the property to be manipulated
+ *
+ * @member dat.controllers
+ */
+ var BooleanController = function(object, property) {
+
+ BooleanController.superclass.call(this, object, property);
+
+ var _this = this;
+ this.__prev = this.getValue();
+
+ this.__checkbox = document.createElement('input');
+ this.__checkbox.setAttribute('type', 'checkbox');
+
+
+ dom.bind(this.__checkbox, 'change', onChange, false);
+
+ this.domElement.appendChild(this.__checkbox);
+
+ // Match original value
+ this.updateDisplay();
+
+ function onChange() {
+ _this.setValue(!_this.__prev);
+ }
+
+ };
+
+ BooleanController.superclass = Controller;
+
+ common.extend(
+
+ BooleanController.prototype,
+ Controller.prototype,
+
+ {
+
+ setValue: function(v) {
+ var toReturn = BooleanController.superclass.prototype.setValue.call(this, v);
+ if (this.__onFinishChange) {
+ this.__onFinishChange.call(this, this.getValue());
+ }
+ this.__prev = this.getValue();
+ return toReturn;
+ },
+
+ updateDisplay: function() {
+
+ if (this.getValue() === true) {
+ this.__checkbox.setAttribute('checked', 'checked');
+ this.__checkbox.checked = true;
+ } else {
+ this.__checkbox.checked = false;
+ }
+
+ return BooleanController.superclass.prototype.updateDisplay.call(this);
+
+ }
+
+
+ }
+
+ );
+
+ return BooleanController;
+
+ })(dat.controllers.Controller,
+ dat.dom.dom,
+ dat.utils.common);
+
+
+ dat.color.toString = (function (common) {
+
+ return function(color) {
+
+ if (color.a == 1 || common.isUndefined(color.a)) {
+
+ var s = color.hex.toString(16);
+ while (s.length < 6) {
+ s = '0' + s;
+ }
+
+ return '#' + s;
+
+ } else {
+
+ return 'rgba(' + Math.round(color.r) + ',' + Math.round(color.g) + ',' + Math.round(color.b) + ',' + color.a + ')';
+
+ }
+
+ }
+
+ })(dat.utils.common);
+
+
+ dat.color.interpret = (function (toString, common) {
+
+ var result, toReturn;
+
+ var interpret = function() {
+
+ toReturn = false;
+
+ var original = arguments.length > 1 ? common.toArray(arguments) : arguments[0];
+
+ common.each(INTERPRETATIONS, function(family) {
+
+ if (family.litmus(original)) {
+
+ common.each(family.conversions, function(conversion, conversionName) {
+
+ result = conversion.read(original);
+
+ if (toReturn === false && result !== false) {
+ toReturn = result;
+ result.conversionName = conversionName;
+ result.conversion = conversion;
+ return common.BREAK;
+
+ }
+
+ });
+
+ return common.BREAK;
+
+ }
+
+ });
+
+ return toReturn;
+
+ };
+
+ var INTERPRETATIONS = [
+
+ // Strings
+ {
+
+ litmus: common.isString,
+
+ conversions: {
+
+ THREE_CHAR_HEX: {
+
+ read: function(original) {
+
+ var test = original.match(/^#([A-F0-9])([A-F0-9])([A-F0-9])$/i);
+ if (test === null) return false;
+
+ return {
+ space: 'HEX',
+ hex: parseInt(
+ '0x' +
+ test[1].toString() + test[1].toString() +
+ test[2].toString() + test[2].toString() +
+ test[3].toString() + test[3].toString())
+ };
+
+ },
+
+ write: toString
+
+ },
+
+ SIX_CHAR_HEX: {
+
+ read: function(original) {
+
+ var test = original.match(/^#([A-F0-9]{6})$/i);
+ if (test === null) return false;
+
+ return {
+ space: 'HEX',
+ hex: parseInt('0x' + test[1].toString())
+ };
+
+ },
+
+ write: toString
+
+ },
+
+ CSS_RGB: {
+
+ read: function(original) {
+
+ var test = original.match(/^rgb\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\)/);
+ if (test === null) return false;
+
+ return {
+ space: 'RGB',
+ r: parseFloat(test[1]),
+ g: parseFloat(test[2]),
+ b: parseFloat(test[3])
+ };
+
+ },
+
+ write: toString
+
+ },
+
+ CSS_RGBA: {
+
+ read: function(original) {
+
+ var test = original.match(/^rgba\(\s*(.+)\s*,\s*(.+)\s*,\s*(.+)\s*\,\s*(.+)\s*\)/);
+ if (test === null) return false;
+
+ return {
+ space: 'RGB',
+ r: parseFloat(test[1]),
+ g: parseFloat(test[2]),
+ b: parseFloat(test[3]),
+ a: parseFloat(test[4])
+ };
+
+ },
+
+ write: toString
+
+ }
+
+ }
+
+ },
+
+ // Numbers
+ {
+
+ litmus: common.isNumber,
+
+ conversions: {
+
+ HEX: {
+ read: function(original) {
+ return {
+ space: 'HEX',
+ hex: original,
+ conversionName: 'HEX'
+ }
+ },
+
+ write: function(color) {
+ return color.hex;
+ }
+ }
+
+ }
+
+ },
+
+ // Arrays
+ {
+
+ litmus: common.isArray,
+
+ conversions: {
+
+ RGB_ARRAY: {
+ read: function(original) {
+ if (original.length != 3) return false;
+ return {
+ space: 'RGB',
+ r: original[0],
+ g: original[1],
+ b: original[2]
+ };
+ },
+
+ write: function(color) {
+ return [color.r, color.g, color.b];
+ }
+
+ },
+
+ RGBA_ARRAY: {
+ read: function(original) {
+ if (original.length != 4) return false;
+ return {
+ space: 'RGB',
+ r: original[0],
+ g: original[1],
+ b: original[2],
+ a: original[3]
+ };
+ },
+
+ write: function(color) {
+ return [color.r, color.g, color.b, color.a];
+ }
+
+ }
+
+ }
+
+ },
+
+ // Objects
+ {
+
+ litmus: common.isObject,
+
+ conversions: {
+
+ RGBA_OBJ: {
+ read: function(original) {
+ if (common.isNumber(original.r) &&
+ common.isNumber(original.g) &&
+ common.isNumber(original.b) &&
+ common.isNumber(original.a)) {
+ return {
+ space: 'RGB',
+ r: original.r,
+ g: original.g,
+ b: original.b,
+ a: original.a
+ }
+ }
+ return false;
+ },
+
+ write: function(color) {
+ return {
+ r: color.r,
+ g: color.g,
+ b: color.b,
+ a: color.a
+ }
+ }
+ },
+
+ RGB_OBJ: {
+ read: function(original) {
+ if (common.isNumber(original.r) &&
+ common.isNumber(original.g) &&
+ common.isNumber(original.b)) {
+ return {
+ space: 'RGB',
+ r: original.r,
+ g: original.g,
+ b: original.b
+ }
+ }
+ return false;
+ },
+
+ write: function(color) {
+ return {
+ r: color.r,
+ g: color.g,
+ b: color.b
+ }
+ }
+ },
+
+ HSVA_OBJ: {
+ read: function(original) {
+ if (common.isNumber(original.h) &&
+ common.isNumber(original.s) &&
+ common.isNumber(original.v) &&
+ common.isNumber(original.a)) {
+ return {
+ space: 'HSV',
+ h: original.h,
+ s: original.s,
+ v: original.v,
+ a: original.a
+ }
+ }
+ return false;
+ },
+
+ write: function(color) {
+ return {
+ h: color.h,
+ s: color.s,
+ v: color.v,
+ a: color.a
+ }
+ }
+ },
+
+ HSV_OBJ: {
+ read: function(original) {
+ if (common.isNumber(original.h) &&
+ common.isNumber(original.s) &&
+ common.isNumber(original.v)) {
+ return {
+ space: 'HSV',
+ h: original.h,
+ s: original.s,
+ v: original.v
+ }
+ }
+ return false;
+ },
+
+ write: function(color) {
+ return {
+ h: color.h,
+ s: color.s,
+ v: color.v
+ }
+ }
+
+ }
+
+ }
+
+ }
+
+
+ ];
+
+ return interpret;
+
+
+ })(dat.color.toString,
+ dat.utils.common);
+
+
+ dat.GUI = dat.gui.GUI = (function (css, saveDialogueContents, styleSheet, controllerFactory, Controller, BooleanController, FunctionController, NumberControllerBox, NumberControllerSlider, OptionController, ColorController, requestAnimationFrame, CenteredDiv, dom, common) {
+
+ css.inject(styleSheet);
+
+ /** Outer-most className for GUI's */
+ var CSS_NAMESPACE = 'dg';
+
+ var HIDE_KEY_CODE = 72;
+
+ /** The only value shared between the JS and SCSS. Use caution. */
+ var CLOSE_BUTTON_HEIGHT = 20;
+
+ var DEFAULT_DEFAULT_PRESET_NAME = 'Default';
+
+ var SUPPORTS_LOCAL_STORAGE = (function() {
+ try {
+ return 'localStorage' in window && window['localStorage'] !== null;
+ } catch (e) {
+ return false;
+ }
+ })();
+
+ var SAVE_DIALOGUE;
+
+ /** Have we yet to create an autoPlace GUI? */
+ var auto_place_virgin = true;
+
+ /** Fixed position div that auto place GUI's go inside */
+ var auto_place_container;
+
+ /** Are we hiding the GUI's ? */
+ var hide = false;
+
+ /** GUI's which should be hidden */
+ var hideable_guis = [];
+
+ /**
+ * A lightweight controller library for JavaScript. It allows you to easily
+ * manipulate variables and fire functions on the fly.
+ * @class
+ *
+ * @member dat.gui
+ *
+ * @param {Object} [params]
+ * @param {String} [params.name] The name of this GUI.
+ * @param {Object} [params.load] JSON object representing the saved state of
+ * this GUI.
+ * @param {Boolean} [params.auto=true]
+ * @param {dat.gui.GUI} [params.parent] The GUI I'm nested in.
+ * @param {Boolean} [params.closed] If true, starts closed
+ */
+ var GUI = function(params) {
+
+ var _this = this;
+
+ /**
+ * Outermost DOM Element
+ * @type DOMElement
+ */
+ this.domElement = document.createElement('div');
+ this.__ul = document.createElement('ul');
+ this.domElement.appendChild(this.__ul);
+
+ dom.addClass(this.domElement, CSS_NAMESPACE);
+
+ /**
+ * Nested GUI's by name
+ * @ignore
+ */
+ this.__folders = {};
+
+ this.__controllers = [];
+
+ /**
+ * List of objects I'm remembering for save, only used in top level GUI
+ * @ignore
+ */
+ this.__rememberedObjects = [];
+
+ /**
+ * Maps the index of remembered objects to a map of controllers, only used
+ * in top level GUI.
+ *
+ * @private
+ * @ignore
+ *
+ * @example
+ * [
+ * {
+ * propertyName: Controller,
+ * anotherPropertyName: Controller
+ * },
+ * {
+ * propertyName: Controller
+ * }
+ * ]
+ */
+ this.__rememberedObjectIndecesToControllers = [];
+
+ this.__listening = [];
+
+ params = params || {};
+
+ // Default parameters
+ params = common.defaults(params, {
+ autoPlace: true,
+ width: GUI.DEFAULT_WIDTH
+ });
+
+ params = common.defaults(params, {
+ resizable: params.autoPlace,
+ hideable: params.autoPlace
+ });
+
+
+ if (!common.isUndefined(params.load)) {
+
+ // Explicit preset
+ if (params.preset) params.load.preset = params.preset;
+
+ } else {
+
+ params.load = { preset: DEFAULT_DEFAULT_PRESET_NAME };
+
+ }
+
+ if (common.isUndefined(params.parent) && params.hideable) {
+ hideable_guis.push(this);
+ }
+
+ // Only root level GUI's are resizable.
+ params.resizable = common.isUndefined(params.parent) && params.resizable;
+
+
+ if (params.autoPlace && common.isUndefined(params.scrollable)) {
+ params.scrollable = true;
+ }
+ // params.scrollable = common.isUndefined(params.parent) && params.scrollable === true;
+
+ // Not part of params because I don't want people passing this in via
+ // constructor. Should be a 'remembered' value.
+ var use_local_storage =
+ SUPPORTS_LOCAL_STORAGE &&
+ localStorage.getItem(getLocalStorageHash(this, 'isLocal')) === 'true';
+
+ Object.defineProperties(this,
+
+ /** @lends dat.gui.GUI.prototype */
+ {
+
+ /**
+ * The parent GUI
+ * @type dat.gui.GUI
+ */
+ parent: {
+ get: function() {
+ return params.parent;
+ }
+ },
+
+ scrollable: {
+ get: function() {
+ return params.scrollable;
+ }
+ },
+
+ /**
+ * Handles GUI's element placement for you
+ * @type Boolean
+ */
+ autoPlace: {
+ get: function() {
+ return params.autoPlace;
+ }
+ },
+
+ /**
+ * The identifier for a set of saved values
+ * @type String
+ */
+ preset: {
+
+ get: function() {
+ if (_this.parent) {
+ return _this.getRoot().preset;
+ } else {
+ return params.load.preset;
+ }
+ },
+
+ set: function(v) {
+ if (_this.parent) {
+ _this.getRoot().preset = v;
+ } else {
+ params.load.preset = v;
+ }
+ setPresetSelectIndex(this);
+ _this.revert();
+ }
+
+ },
+
+ /**
+ * The width of GUI element
+ * @type Number
+ */
+ width: {
+ get: function() {
+ return params.width;
+ },
+ set: function(v) {
+ params.width = v;
+ setWidth(_this, v);
+ }
+ },
+
+ /**
+ * The name of GUI. Used for folders. i.e
+ * a folder's name
+ * @type String
+ */
+ name: {
+ get: function() {
+ return params.name;
+ },
+ set: function(v) {
+ // TODO Check for collisions among sibling folders
+ params.name = v;
+ if (title_row_name) {
+ title_row_name.innerHTML = params.name;
+ }
+ }
+ },
+
+ /**
+ * Whether the GUI is collapsed or not
+ * @type Boolean
+ */
+ closed: {
+ get: function() {
+ return params.closed;
+ },
+ set: function(v) {
+ params.closed = v;
+ if (params.closed) {
+ dom.addClass(_this.__ul, GUI.CLASS_CLOSED);
+ } else {
+ dom.removeClass(_this.__ul, GUI.CLASS_CLOSED);
+ }
+ // For browsers that aren't going to respect the CSS transition,
+ // Lets just check our height against the window height right off
+ // the bat.
+ this.onResize();
+
+ if (_this.__closeButton) {
+ _this.__closeButton.innerHTML = v ? GUI.TEXT_OPEN : GUI.TEXT_CLOSED;
+ }
+ }
+ },
+
+ /**
+ * Contains all presets
+ * @type Object
+ */
+ load: {
+ get: function() {
+ return params.load;
+ }
+ },
+
+ /**
+ * Determines whether or not to use localStorage as the means for
+ * remembering
+ * @type Boolean
+ */
+ useLocalStorage: {
+
+ get: function() {
+ return use_local_storage;
+ },
+ set: function(bool) {
+ if (SUPPORTS_LOCAL_STORAGE) {
+ use_local_storage = bool;
+ if (bool) {
+ dom.bind(window, 'unload', saveToLocalStorage);
+ } else {
+ dom.unbind(window, 'unload', saveToLocalStorage);
+ }
+ localStorage.setItem(getLocalStorageHash(_this, 'isLocal'), bool);
+ }
+ }
+
+ }
+
+ });
+
+ // Are we a root level GUI?
+ if (common.isUndefined(params.parent)) {
+
+ params.closed = false;
+
+ dom.addClass(this.domElement, GUI.CLASS_MAIN);
+ dom.makeSelectable(this.domElement, false);
+
+ // Are we supposed to be loading locally?
+ if (SUPPORTS_LOCAL_STORAGE) {
+
+ if (use_local_storage) {
+
+ _this.useLocalStorage = true;
+
+ var saved_gui = localStorage.getItem(getLocalStorageHash(this, 'gui'));
+
+ if (saved_gui) {
+ params.load = JSON.parse(saved_gui);
+ }
+
+ }
+
+ }
+
+ this.__closeButton = document.createElement('div');
+ this.__closeButton.innerHTML = GUI.TEXT_CLOSED;
+ dom.addClass(this.__closeButton, GUI.CLASS_CLOSE_BUTTON);
+ this.domElement.appendChild(this.__closeButton);
+
+ dom.bind(this.__closeButton, 'click', function() {
+
+ _this.closed = !_this.closed;
+
+
+ });
+
+
+ // Oh, you're a nested GUI!
+ } else {
+
+ if (params.closed === undefined) {
+ params.closed = true;
+ }
+
+ var title_row_name = document.createTextNode(params.name);
+ dom.addClass(title_row_name, 'controller-name');
+
+ var title_row = addRow(_this, title_row_name);
+
+ var on_click_title = function(e) {
+ e.preventDefault();
+ _this.closed = !_this.closed;
+ return false;
+ };
+
+ dom.addClass(this.__ul, GUI.CLASS_CLOSED);
+
+ dom.addClass(title_row, 'title');
+ dom.bind(title_row, 'click', on_click_title);
+
+ if (!params.closed) {
+ this.closed = false;
+ }
+
+ }
+
+ if (params.autoPlace) {
+
+ if (common.isUndefined(params.parent)) {
+
+ if (auto_place_virgin) {
+ auto_place_container = document.createElement('div');
+ dom.addClass(auto_place_container, CSS_NAMESPACE);
+ dom.addClass(auto_place_container, GUI.CLASS_AUTO_PLACE_CONTAINER);
+ document.body.appendChild(auto_place_container);
+ auto_place_virgin = false;
+ }
+
+ // Put it in the dom for you.
+ auto_place_container.appendChild(this.domElement);
+
+ // Apply the auto styles
+ dom.addClass(this.domElement, GUI.CLASS_AUTO_PLACE);
+
+ }
+
+
+ // Make it not elastic.
+ if (!this.parent) setWidth(_this, params.width);
+
+ }
+
+ dom.bind(window, 'resize', function() { _this.onResize() });
+ dom.bind(this.__ul, 'webkitTransitionEnd', function() { _this.onResize(); });
+ dom.bind(this.__ul, 'transitionend', function() { _this.onResize() });
+ dom.bind(this.__ul, 'oTransitionEnd', function() { _this.onResize() });
+ this.onResize();
+
+
+ if (params.resizable) {
+ addResizeHandle(this);
+ }
+
+ function saveToLocalStorage() {
+ localStorage.setItem(getLocalStorageHash(_this, 'gui'), JSON.stringify(_this.getSaveObject()));
+ }
+
+ var root = _this.getRoot();
+ function resetWidth() {
+ var root = _this.getRoot();
+ root.width += 1;
+ common.defer(function() {
+ root.width -= 1;
+ });
+ }
+
+ if (!params.parent) {
+ resetWidth();
+ }
+
+ };
+
+ GUI.toggleHide = function() {
+
+ hide = !hide;
+ common.each(hideable_guis, function(gui) {
+ gui.domElement.style.zIndex = hide ? -999 : 999;
+ gui.domElement.style.opacity = hide ? 0 : 1;
+ });
+ };
+
+ GUI.CLASS_AUTO_PLACE = 'a';
+ GUI.CLASS_AUTO_PLACE_CONTAINER = 'ac';
+ GUI.CLASS_MAIN = 'main';
+ GUI.CLASS_CONTROLLER_ROW = 'cr';
+ GUI.CLASS_TOO_TALL = 'taller-than-window';
+ GUI.CLASS_CLOSED = 'closed';
+ GUI.CLASS_CLOSE_BUTTON = 'close-button';
+ GUI.CLASS_DRAG = 'drag';
+
+ GUI.DEFAULT_WIDTH = 245;
+ GUI.TEXT_CLOSED = 'Close Controls';
+ GUI.TEXT_OPEN = 'Open Controls';
+
+ dom.bind(window, 'keydown', function(e) {
+
+ if (document.activeElement.type !== 'text' &&
+ (e.which === HIDE_KEY_CODE || e.keyCode == HIDE_KEY_CODE)) {
+ GUI.toggleHide();
+ }
+
+ }, false);
+
+ common.extend(
+
+ GUI.prototype,
+
+ /** @lends dat.gui.GUI */
+ {
+
+ /**
+ * @param object
+ * @param property
+ * @returns {dat.controllers.Controller} The new controller that was added.
+ * @instance
+ */
+ add: function(object, property) {
+
+ return add(
+ this,
+ object,
+ property,
+ {
+ factoryArgs: Array.prototype.slice.call(arguments, 2)
+ }
+ );
+
+ },
+
+ /**
+ * @param object
+ * @param property
+ * @returns {dat.controllers.ColorController} The new controller that was added.
+ * @instance
+ */
+ addColor: function(object, property) {
+
+ return add(
+ this,
+ object,
+ property,
+ {
+ color: true
+ }
+ );
+
+ },
+
+ /**
+ * @param controller
+ * @instance
+ */
+ remove: function(controller) {
+
+ // TODO listening?
+ this.__ul.removeChild(controller.__li);
+ this.__controllers.slice(this.__controllers.indexOf(controller), 1);
+ var _this = this;
+ common.defer(function() {
+ _this.onResize();
+ });
+
+ },
+
+ destroy: function() {
+
+ if (this.autoPlace) {
+ auto_place_container.removeChild(this.domElement);
+ }
+
+ },
+
+ /**
+ * @param name
+ * @returns {dat.gui.GUI} The new folder.
+ * @throws {Error} if this GUI already has a folder by the specified
+ * name
+ * @instance
+ */
+ addFolder: function(name) {
+
+ // We have to prevent collisions on names in order to have a key
+ // by which to remember saved values
+ if (this.__folders[name] !== undefined) {
+ throw new Error('You already have a folder in this GUI by the' +
+ ' name "' + name + '"');
+ }
+
+ var new_gui_params = { name: name, parent: this };
+
+ // We need to pass down the autoPlace trait so that we can
+ // attach event listeners to open/close folder actions to
+ // ensure that a scrollbar appears if the window is too short.
+ new_gui_params.autoPlace = this.autoPlace;
+
+ // Do we have saved appearance data for this folder?
+
+ if (this.load && // Anything loaded?
+ this.load.folders && // Was my parent a dead-end?
+ this.load.folders[name]) { // Did daddy remember me?
+
+ // Start me closed if I was closed
+ new_gui_params.closed = this.load.folders[name].closed;
+
+ // Pass down the loaded data
+ new_gui_params.load = this.load.folders[name];
+
+ }
+
+ var gui = new GUI(new_gui_params);
+ this.__folders[name] = gui;
+
+ var li = addRow(this, gui.domElement);
+ dom.addClass(li, 'folder');
+ return gui;
+
+ },
+
+ open: function() {
+ this.closed = false;
+ },
+
+ close: function() {
+ this.closed = true;
+ },
+
+ onResize: function() {
+
+ var root = this.getRoot();
+
+ if (root.scrollable) {
+
+ var top = dom.getOffset(root.__ul).top;
+ var h = 0;
+
+ common.each(root.__ul.childNodes, function(node) {
+ if (! (root.autoPlace && node === root.__save_row))
+ h += dom.getHeight(node);
+ });
+
+ if (window.innerHeight - top - CLOSE_BUTTON_HEIGHT < h) {
+ dom.addClass(root.domElement, GUI.CLASS_TOO_TALL);
+ root.__ul.style.height = window.innerHeight - top - CLOSE_BUTTON_HEIGHT + 'px';
+ } else {
+ dom.removeClass(root.domElement, GUI.CLASS_TOO_TALL);
+ root.__ul.style.height = 'auto';
+ }
+
+ }
+
+ if (root.__resize_handle) {
+ common.defer(function() {
+ root.__resize_handle.style.height = root.__ul.offsetHeight + 'px';
+ });
+ }
+
+ if (root.__closeButton) {
+ root.__closeButton.style.width = root.width + 'px';
+ }
+
+ },
+
+ /**
+ * Mark objects for saving. The order of these objects cannot change as
+ * the GUI grows. When remembering new objects, append them to the end
+ * of the list.
+ *
+ * @param {Object...} objects
+ * @throws {Error} if not called on a top level GUI.
+ * @instance
+ */
+ remember: function() {
+
+ if (common.isUndefined(SAVE_DIALOGUE)) {
+ SAVE_DIALOGUE = new CenteredDiv();
+ SAVE_DIALOGUE.domElement.innerHTML = saveDialogueContents;
+ }
+
+ if (this.parent) {
+ throw new Error("You can only call remember on a top level GUI.");
+ }
+
+ var _this = this;
+
+ common.each(Array.prototype.slice.call(arguments), function(object) {
+ if (_this.__rememberedObjects.length == 0) {
+ addSaveMenu(_this);
+ }
+ if (_this.__rememberedObjects.indexOf(object) == -1) {
+ _this.__rememberedObjects.push(object);
+ }
+ });
+
+ if (this.autoPlace) {
+ // Set save row width
+ setWidth(this, this.width);
+ }
+
+ },
+
+ /**
+ * @returns {dat.gui.GUI} the topmost parent GUI of a nested GUI.
+ * @instance
+ */
+ getRoot: function() {
+ var gui = this;
+ while (gui.parent) {
+ gui = gui.parent;
+ }
+ return gui;
+ },
+
+ /**
+ * @returns {Object} a JSON object representing the current state of
+ * this GUI as well as its remembered properties.
+ * @instance
+ */
+ getSaveObject: function() {
+
+ var toReturn = this.load;
+
+ toReturn.closed = this.closed;
+
+ // Am I remembering any values?
+ if (this.__rememberedObjects.length > 0) {
+
+ toReturn.preset = this.preset;
+
+ if (!toReturn.remembered) {
+ toReturn.remembered = {};
+ }
+
+ toReturn.remembered[this.preset] = getCurrentPreset(this);
+
+ }
+
+ toReturn.folders = {};
+ common.each(this.__folders, function(element, key) {
+ toReturn.folders[key] = element.getSaveObject();
+ });
+
+ return toReturn;
+
+ },
+
+ save: function() {
+
+ if (!this.load.remembered) {
+ this.load.remembered = {};
+ }
+
+ this.load.remembered[this.preset] = getCurrentPreset(this);
+ markPresetModified(this, false);
+
+ },
+
+ saveAs: function(presetName) {
+
+ if (!this.load.remembered) {
+
+ // Retain default values upon first save
+ this.load.remembered = {};
+ this.load.remembered[DEFAULT_DEFAULT_PRESET_NAME] = getCurrentPreset(this, true);
+
+ }
+
+ this.load.remembered[presetName] = getCurrentPreset(this);
+ this.preset = presetName;
+ addPresetOption(this, presetName, true);
+
+ },
+
+ revert: function(gui) {
+
+ common.each(this.__controllers, function(controller) {
+ // Make revert work on Default.
+ if (!this.getRoot().load.remembered) {
+ controller.setValue(controller.initialValue);
+ } else {
+ recallSavedValue(gui || this.getRoot(), controller);
+ }
+ }, this);
+
+ common.each(this.__folders, function(folder) {
+ folder.revert(folder);
+ });
+
+ if (!gui) {
+ markPresetModified(this.getRoot(), false);
+ }
+
+
+ },
+
+ listen: function(controller) {
+
+ var init = this.__listening.length == 0;
+ this.__listening.push(controller);
+ if (init) updateDisplays(this.__listening);
+
+ }
+
+ }
+
+ );
+
+ function add(gui, object, property, params) {
+
+ if (object[property] === undefined) {
+ throw new Error("Object " + object + " has no property \"" + property + "\"");
+ }
+
+ var controller;
+
+ if (params.color) {
+
+ controller = new ColorController(object, property);
+
+ } else {
+
+ var factoryArgs = [object,property].concat(params.factoryArgs);
+ controller = controllerFactory.apply(gui, factoryArgs);
+
+ }
+
+ if (params.before instanceof Controller) {
+ params.before = params.before.__li;
+ }
+
+ recallSavedValue(gui, controller);
+
+ dom.addClass(controller.domElement, 'c');
+
+ var name = document.createElement('span');
+ dom.addClass(name, 'property-name');
+ name.innerHTML = controller.property;
+
+ var container = document.createElement('div');
+ container.appendChild(name);
+ container.appendChild(controller.domElement);
+
+ var li = addRow(gui, container, params.before);
+
+ dom.addClass(li, GUI.CLASS_CONTROLLER_ROW);
+ dom.addClass(li, typeof controller.getValue());
+
+ augmentController(gui, li, controller);
+
+ gui.__controllers.push(controller);
+
+ return controller;
+
+ }
+
+ /**
+ * Add a row to the end of the GUI or before another row.
+ *
+ * @param gui
+ * @param [dom] If specified, inserts the dom content in the new row
+ * @param [liBefore] If specified, places the new row before another row
+ */
+ function addRow(gui, dom, liBefore) {
+ var li = document.createElement('li');
+ if (dom) li.appendChild(dom);
+ if (liBefore) {
+ gui.__ul.insertBefore(li, params.before);
+ } else {
+ gui.__ul.appendChild(li);
+ }
+ gui.onResize();
+ return li;
+ }
+
+ function augmentController(gui, li, controller) {
+
+ controller.__li = li;
+ controller.__gui = gui;
+
+ common.extend(controller, {
+
+ options: function(options) {
+
+ if (arguments.length > 1) {
+ controller.remove();
+
+ return add(
+ gui,
+ controller.object,
+ controller.property,
+ {
+ before: controller.__li.nextElementSibling,
+ factoryArgs: [common.toArray(arguments)]
+ }
+ );
+
+ }
+
+ if (common.isArray(options) || common.isObject(options)) {
+ controller.remove();
+
+ return add(
+ gui,
+ controller.object,
+ controller.property,
+ {
+ before: controller.__li.nextElementSibling,
+ factoryArgs: [options]
+ }
+ );
+
+ }
+
+ },
+
+ name: function(v) {
+ controller.__li.firstElementChild.firstElementChild.innerHTML = v;
+ return controller;
+ },
+
+ listen: function() {
+ controller.__gui.listen(controller);
+ return controller;
+ },
+
+ remove: function() {
+ controller.__gui.remove(controller);
+ return controller;
+ }
+
+ });
+
+ // All sliders should be accompanied by a box.
+ if (controller instanceof NumberControllerSlider) {
+
+ var box = new NumberControllerBox(controller.object, controller.property,
+ { min: controller.__min, max: controller.__max, step: controller.__step });
+
+ common.each(['updateDisplay', 'onChange', 'onFinishChange'], function(method) {
+ var pc = controller[method];
+ var pb = box[method];
+ controller[method] = box[method] = function() {
+ var args = Array.prototype.slice.call(arguments);
+ pc.apply(controller, args);
+ return pb.apply(box, args);
+ }
+ });
+
+ dom.addClass(li, 'has-slider');
+ controller.domElement.insertBefore(box.domElement, controller.domElement.firstElementChild);
+
+ }
+ else if (controller instanceof NumberControllerBox) {
+
+ var r = function(returned) {
+
+ // Have we defined both boundaries?
+ if (common.isNumber(controller.__min) && common.isNumber(controller.__max)) {
+
+ // Well, then lets just replace this with a slider.
+ controller.remove();
+ return add(
+ gui,
+ controller.object,
+ controller.property,
+ {
+ before: controller.__li.nextElementSibling,
+ factoryArgs: [controller.__min, controller.__max, controller.__step]
+ });
+
+ }
+
+ return returned;
+
+ };
+
+ controller.min = common.compose(r, controller.min);
+ controller.max = common.compose(r, controller.max);
+
+ }
+ else if (controller instanceof BooleanController) {
+
+ dom.bind(li, 'click', function() {
+ dom.fakeEvent(controller.__checkbox, 'click');
+ });
+
+ dom.bind(controller.__checkbox, 'click', function(e) {
+ e.stopPropagation(); // Prevents double-toggle
+ })
+
+ }
+ else if (controller instanceof FunctionController) {
+
+ dom.bind(li, 'click', function() {
+ dom.fakeEvent(controller.__button, 'click');
+ });
+
+ dom.bind(li, 'mouseover', function() {
+ dom.addClass(controller.__button, 'hover');
+ });
+
+ dom.bind(li, 'mouseout', function() {
+ dom.removeClass(controller.__button, 'hover');
+ });
+
+ }
+ else if (controller instanceof ColorController) {
+
+ dom.addClass(li, 'color');
+ controller.updateDisplay = common.compose(function(r) {
+ li.style.borderLeftColor = controller.__color.toString();
+ return r;
+ }, controller.updateDisplay);
+
+ controller.updateDisplay();
+
+ }
+
+ controller.setValue = common.compose(function(r) {
+ if (gui.getRoot().__preset_select && controller.isModified()) {
+ markPresetModified(gui.getRoot(), true);
+ }
+ return r;
+ }, controller.setValue);
+
+ }
+
+ function recallSavedValue(gui, controller) {
+
+ // Find the topmost GUI, that's where remembered objects live.
+ var root = gui.getRoot();
+
+ // Does the object we're controlling match anything we've been told to
+ // remember?
+ var matched_index = root.__rememberedObjects.indexOf(controller.object);
+
+ // Why yes, it does!
+ if (matched_index != -1) {
+
+ // Let me fetch a map of controllers for thcommon.isObject.
+ var controller_map =
+ root.__rememberedObjectIndecesToControllers[matched_index];
+
+ // Ohp, I believe this is the first controller we've created for this
+ // object. Lets make the map fresh.
+ if (controller_map === undefined) {
+ controller_map = {};
+ root.__rememberedObjectIndecesToControllers[matched_index] =
+ controller_map;
+ }
+
+ // Keep track of this controller
+ controller_map[controller.property] = controller;
+
+ // Okay, now have we saved any values for this controller?
+ if (root.load && root.load.remembered) {
+
+ var preset_map = root.load.remembered;
+
+ // Which preset are we trying to load?
+ var preset;
+
+ if (preset_map[gui.preset]) {
+
+ preset = preset_map[gui.preset];
+
+ } else if (preset_map[DEFAULT_DEFAULT_PRESET_NAME]) {
+
+ // Uhh, you can have the default instead?
+ preset = preset_map[DEFAULT_DEFAULT_PRESET_NAME];
+
+ } else {
+
+ // Nada.
+
+ return;
+
+ }
+
+
+ // Did the loaded object remember thcommon.isObject?
+ if (preset[matched_index] &&
+
+ // Did we remember this particular property?
+ preset[matched_index][controller.property] !== undefined) {
+
+ // We did remember something for this guy ...
+ var value = preset[matched_index][controller.property];
+
+ // And that's what it is.
+ controller.initialValue = value;
+ controller.setValue(value);
+
+ }
+
+ }
+
+ }
+
+ }
+
+ function getLocalStorageHash(gui, key) {
+ // TODO how does this deal with multiple GUI's?
+ return document.location.href + '.' + key;
+
+ }
+
+ function addSaveMenu(gui) {
+
+ var div = gui.__save_row = document.createElement('li');
+
+ dom.addClass(gui.domElement, 'has-save');
+
+ gui.__ul.insertBefore(div, gui.__ul.firstChild);
+
+ dom.addClass(div, 'save-row');
+
+ var gears = document.createElement('span');
+ gears.innerHTML = ' ';
+ dom.addClass(gears, 'button gears');
+
+ // TODO replace with FunctionController
+ var button = document.createElement('span');
+ button.innerHTML = 'Save';
+ dom.addClass(button, 'button');
+ dom.addClass(button, 'save');
+
+ var button2 = document.createElement('span');
+ button2.innerHTML = 'New';
+ dom.addClass(button2, 'button');
+ dom.addClass(button2, 'save-as');
+
+ var button3 = document.createElement('span');
+ button3.innerHTML = 'Revert';
+ dom.addClass(button3, 'button');
+ dom.addClass(button3, 'revert');
+
+ var select = gui.__preset_select = document.createElement('select');
+
+ if (gui.load && gui.load.remembered) {
+
+ common.each(gui.load.remembered, function(value, key) {
+ addPresetOption(gui, key, key == gui.preset);
+ });
+
+ } else {
+ addPresetOption(gui, DEFAULT_DEFAULT_PRESET_NAME, false);
+ }
+
+ dom.bind(select, 'change', function() {
+
+
+ for (var index = 0; index < gui.__preset_select.length; index++) {
+ gui.__preset_select[index].innerHTML = gui.__preset_select[index].value;
+ }
+
+ gui.preset = this.value;
+
+ });
+
+ div.appendChild(select);
+ div.appendChild(gears);
+ div.appendChild(button);
+ div.appendChild(button2);
+ div.appendChild(button3);
+
+ if (SUPPORTS_LOCAL_STORAGE) {
+
+ var saveLocally = document.getElementById('dg-save-locally');
+ var explain = document.getElementById('dg-local-explain');
+
+ saveLocally.style.display = 'block';
+
+ var localStorageCheckBox = document.getElementById('dg-local-storage');
+
+ if (localStorage.getItem(getLocalStorageHash(gui, 'isLocal')) === 'true') {
+ localStorageCheckBox.setAttribute('checked', 'checked');
+ }
+
+ function showHideExplain() {
+ explain.style.display = gui.useLocalStorage ? 'block' : 'none';
+ }
+
+ showHideExplain();
+
+ // TODO: Use a boolean controller, fool!
+ dom.bind(localStorageCheckBox, 'change', function() {
+ gui.useLocalStorage = !gui.useLocalStorage;
+ showHideExplain();
+ });
+
+ }
+
+ var newConstructorTextArea = document.getElementById('dg-new-constructor');
+
+ dom.bind(newConstructorTextArea, 'keydown', function(e) {
+ if (e.metaKey && (e.which === 67 || e.keyCode == 67)) {
+ SAVE_DIALOGUE.hide();
+ }
+ });
+
+ dom.bind(gears, 'click', function() {
+ newConstructorTextArea.innerHTML = JSON.stringify(gui.getSaveObject(), undefined, 2);
+ SAVE_DIALOGUE.show();
+ newConstructorTextArea.focus();
+ newConstructorTextArea.select();
+ });
+
+ dom.bind(button, 'click', function() {
+ gui.save();
+ });
+
+ dom.bind(button2, 'click', function() {
+ var presetName = prompt('Enter a new preset name.');
+ if (presetName) gui.saveAs(presetName);
+ });
+
+ dom.bind(button3, 'click', function() {
+ gui.revert();
+ });
+
+ // div.appendChild(button2);
+
+ }
+
+ function addResizeHandle(gui) {
+
+ gui.__resize_handle = document.createElement('div');
+
+ common.extend(gui.__resize_handle.style, {
+
+ width: '6px',
+ marginLeft: '-3px',
+ height: '200px',
+ cursor: 'ew-resize',
+ position: 'absolute'
+ // border: '1px solid blue'
+
+ });
+
+ var pmouseX;
+
+ dom.bind(gui.__resize_handle, 'mousedown', dragStart);
+ dom.bind(gui.__closeButton, 'mousedown', dragStart);
+
+ gui.domElement.insertBefore(gui.__resize_handle, gui.domElement.firstElementChild);
+
+ function dragStart(e) {
+
+ e.preventDefault();
+
+ pmouseX = e.clientX;
+
+ dom.addClass(gui.__closeButton, GUI.CLASS_DRAG);
+ dom.bind(window, 'mousemove', drag);
+ dom.bind(window, 'mouseup', dragStop);
+
+ return false;
+
+ }
+
+ function drag(e) {
+
+ e.preventDefault();
+
+ gui.width += pmouseX - e.clientX;
+ gui.onResize();
+ pmouseX = e.clientX;
+
+ return false;
+
+ }
+
+ function dragStop() {
+
+ dom.removeClass(gui.__closeButton, GUI.CLASS_DRAG);
+ dom.unbind(window, 'mousemove', drag);
+ dom.unbind(window, 'mouseup', dragStop);
+
+ }
+
+ }
+
+ function setWidth(gui, w) {
+ gui.domElement.style.width = w + 'px';
+ // Auto placed save-rows are position fixed, so we have to
+ // set the width manually if we want it to bleed to the edge
+ if (gui.__save_row && gui.autoPlace) {
+ gui.__save_row.style.width = w + 'px';
+ }if (gui.__closeButton) {
+ gui.__closeButton.style.width = w + 'px';
+ }
+ }
+
+ function getCurrentPreset(gui, useInitialValues) {
+
+ var toReturn = {};
+
+ // For each object I'm remembering
+ common.each(gui.__rememberedObjects, function(val, index) {
+
+ var saved_values = {};
+
+ // The controllers I've made for thcommon.isObject by property
+ var controller_map =
+ gui.__rememberedObjectIndecesToControllers[index];
+
+ // Remember each value for each property
+ common.each(controller_map, function(controller, property) {
+ saved_values[property] = useInitialValues ? controller.initialValue : controller.getValue();
+ });
+
+ // Save the values for thcommon.isObject
+ toReturn[index] = saved_values;
+
+ });
+
+ return toReturn;
+
+ }
+
+ function addPresetOption(gui, name, setSelected) {
+ var opt = document.createElement('option');
+ opt.innerHTML = name;
+ opt.value = name;
+ gui.__preset_select.appendChild(opt);
+ if (setSelected) {
+ gui.__preset_select.selectedIndex = gui.__preset_select.length - 1;
+ }
+ }
+
+ function setPresetSelectIndex(gui) {
+ for (var index = 0; index < gui.__preset_select.length; index++) {
+ if (gui.__preset_select[index].value == gui.preset) {
+ gui.__preset_select.selectedIndex = index;
+ }
+ }
+ }
+
+ function markPresetModified(gui, modified) {
+ var opt = gui.__preset_select[gui.__preset_select.selectedIndex];
+ // console.log('mark', modified, opt);
+ if (modified) {
+ opt.innerHTML = opt.value + "*";
+ } else {
+ opt.innerHTML = opt.value;
+ }
+ }
+
+ function updateDisplays(controllerArray) {
+
+
+ if (controllerArray.length != 0) {
+
+ requestAnimationFrame(function() {
+ updateDisplays(controllerArray);
+ });
+
+ }
+
+ common.each(controllerArray, function(c) {
+ c.updateDisplay();
+ });
+
+ }
+
+ return GUI;
+
+ })(dat.utils.css,
+ "
GUI's constructor:\n\n \n\n localStorage on exit.\n\n localStorage will\n override those passed to dat.GUI's constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n \n