summaryrefslogtreecommitdiffstats
path: root/src/demos
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2005-05-27 19:45:51 +0000
committerKenneth Russel <[email protected]>2005-05-27 19:45:51 +0000
commit9d209d3b6ae12604e666d7b655bd1f19e70ee48b (patch)
tree5eb780835a316cbb62a9718a2757a3d51c31adb5 /src/demos
parent02acfb8e24959f43cada34366598236a51b782bb (diff)
Added Java/JOGL port of NVidia HDR demo.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/trunk@80 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/demos')
-rwxr-xr-xsrc/demos/data/images/stpeters_cross.hdrbin0 -> 4794510 bytes
-rwxr-xr-xsrc/demos/data/models/teapot.obj9071
-rwxr-xr-xsrc/demos/hdr/ARBFPPipeline.java171
-rwxr-xr-xsrc/demos/hdr/CgPipeline.java113
-rwxr-xr-xsrc/demos/hdr/HDR.java1179
-rwxr-xr-xsrc/demos/hdr/HDRTexture.java494
-rwxr-xr-xsrc/demos/hdr/Pipeline.java31
-rwxr-xr-xsrc/demos/hdr/RGBE.java452
-rwxr-xr-xsrc/demos/hdr/readme.txt3
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/object.arbfp141
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/object_hilo.arbfp145
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/object_vp.arbvp142
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/recompile.txt7
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/shrink.arbfp134
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/skybox.arbfp122
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp127
-rwxr-xr-xsrc/demos/hdr/shaders/arbfp1/tonemap.arbfp164
-rwxr-xr-xsrc/demos/hdr/shaders/cg/hdr.cg130
-rwxr-xr-xsrc/demos/hdr/shaders/cg/object.cg30
-rwxr-xr-xsrc/demos/hdr/shaders/cg/object_hilo.cg31
-rwxr-xr-xsrc/demos/hdr/shaders/cg/object_vp.cg43
-rwxr-xr-xsrc/demos/hdr/shaders/cg/shrink.cg17
-rwxr-xr-xsrc/demos/hdr/shaders/cg/skybox.cg8
-rwxr-xr-xsrc/demos/hdr/shaders/cg/skybox_hilo.cg9
-rwxr-xr-xsrc/demos/hdr/shaders/cg/tonemap.cg37
25 files changed, 12101 insertions, 0 deletions
diff --git a/src/demos/data/images/stpeters_cross.hdr b/src/demos/data/images/stpeters_cross.hdr
new file mode 100755
index 0000000..66f47ae
--- /dev/null
+++ b/src/demos/data/images/stpeters_cross.hdr
Binary files differ
diff --git a/src/demos/data/models/teapot.obj b/src/demos/data/models/teapot.obj
new file mode 100755
index 0000000..29cbc90
--- /dev/null
+++ b/src/demos/data/models/teapot.obj
@@ -0,0 +1,9071 @@
+# Sat Dec 17 21:31:04 2000
+#
+#
+
+g
+v 21.334499 14.872898 -0.001426
+v 20.829699 14.873169 5.140986
+v 20.543299 15.649567 5.081406
+v 21.042198 15.649300 -0.001467
+v 20.484598 16.204166 5.069176
+v 20.982399 16.203899 -0.001496
+v 20.612299 16.536867 5.095709
+v 21.112598 16.536598 -0.001514
+v 20.884899 16.647770 5.152373
+v 21.390799 16.647499 -0.001520
+v 21.261000 16.536873 5.230579
+v 21.774599 16.536598 -0.001514
+v 21.699200 16.204180 5.321706
+v 22.221798 16.203899 -0.001496
+v 22.158199 15.649585 5.417156
+v 22.690100 15.649300 -0.001467
+v 22.596399 14.873188 5.508306
+v 23.137199 14.872898 -0.001426
+v 19.378399 14.873419 9.904826
+v 19.108799 15.649815 9.790075
+v 19.053598 16.204412 9.766556
+v 19.173800 16.537115 9.817669
+v 19.430399 16.648022 9.926843
+v 19.784498 16.537128 10.077489
+v 20.196999 16.204439 10.253006
+v 20.629000 15.649849 10.436835
+v 21.041498 14.873456 10.612376
+v 17.075399 14.873645 14.195477
+v 16.832499 15.650038 14.031035
+v 16.782700 16.204636 13.997306
+v 16.890999 16.537338 14.070589
+v 17.122198 16.648247 14.226983
+v 17.441299 16.537357 14.442889
+v 17.812998 16.204672 14.694506
+v 18.202198 15.650086 14.957935
+v 18.573999 14.873698 15.209476
+v 14.015200 14.873840 17.918177
+v 13.807699 15.650231 17.710634
+v 13.765200 16.204828 17.668106
+v 13.857698 16.537533 17.760590
+v 14.055199 16.648443 17.958082
+v 14.327700 16.537558 18.230589
+v 14.645199 16.204876 18.548105
+v 14.977699 15.650293 18.880634
+v 15.295198 14.873908 19.198177
+v 10.292499 14.874002 20.978376
+v 10.128098 15.650391 20.735435
+v 10.094398 16.204988 20.685606
+v 10.167699 16.537693 20.793888
+v 10.324099 16.648605 21.025084
+v 10.539999 16.537722 21.344189
+v 10.791598 16.205042 21.715906
+v 11.054998 15.650462 22.105135
+v 11.306499 14.874081 22.476976
+v 6.001849 14.874123 23.281376
+v 5.887149 15.650510 23.011734
+v 5.863648 16.205107 22.956507
+v 5.914789 16.537811 23.076689
+v 6.023959 16.648727 23.333282
+v 6.174599 16.537844 23.687389
+v 6.350099 16.205168 24.099907
+v 6.533898 15.650590 24.531935
+v 6.709399 14.874210 24.944477
+v 1.238019 14.874199 24.732677
+v 1.178469 15.650585 24.446234
+v 1.166279 16.205183 24.387506
+v 1.192819 16.537888 24.515188
+v 1.249499 16.648804 24.787783
+v 1.327689 16.537922 25.163889
+v 1.418809 16.205246 25.602106
+v 1.514219 15.650671 26.061134
+v 1.605329 14.874292 26.499376
+v -3.904401 14.874226 25.237476
+v -3.904401 15.650612 24.945135
+v -3.904401 16.205208 24.885206
+v -3.904401 16.537914 25.015490
+v -3.904401 16.648830 25.293684
+v -3.904401 16.537949 25.677488
+v -3.904401 16.205275 26.124706
+v -3.904401 15.650699 26.593035
+v -3.904401 14.874321 27.040176
+v -9.512651 14.874199 24.732677
+v -9.299341 15.650585 24.446234
+v -9.171601 16.205183 24.387506
+v -9.115351 16.537888 24.515188
+v -9.116531 16.648804 24.787783
+v -9.161061 16.537922 25.163889
+v -9.234881 16.205246 25.602106
+v -9.323931 15.650671 26.061134
+v -9.414131 14.874292 26.499376
+v -14.495101 14.874123 23.281376
+v -14.154501 15.650510 23.011734
+v -13.961202 16.205107 22.956507
+v -13.890701 16.537811 23.076689
+v -13.918302 16.648727 23.333282
+v -14.019502 16.537844 23.687389
+v -14.169601 16.205168 24.099907
+v -14.344101 15.650590 24.531935
+v -14.518201 14.874210 24.944477
+v -18.814301 14.874002 20.978376
+v -18.414501 15.650391 20.735435
+v -18.204002 16.204988 20.685606
+v -18.150600 16.537693 20.793888
+v -18.222101 16.648605 21.025084
+v -18.386402 16.537722 21.344189
+v -18.611502 16.205042 21.715906
+v -18.865200 15.650462 22.105135
+v -19.115301 14.874081 22.476976
+v -22.432402 14.873840 17.918177
+v -22.024101 15.650231 17.710634
+v -21.830702 16.204828 17.668106
+v -21.815001 16.537533 17.760590
+v -21.940001 16.648443 17.958082
+v -22.168602 16.537558 18.230589
+v -22.463501 16.204876 18.548105
+v -22.787701 15.650293 18.880634
+v -23.104002 14.873908 19.198177
+v -25.312002 14.873645 14.195477
+v -24.927900 15.650038 14.031035
+v -24.772001 16.204636 13.997306
+v -24.804300 16.537338 14.070589
+v -24.984501 16.648247 14.226983
+v -25.272602 16.537357 14.442889
+v -25.628502 16.204672 14.694506
+v -26.011902 15.650086 14.957935
+v -26.382801 14.873698 15.209476
+v -27.415401 14.873419 9.904826
+v -27.070501 15.649815 9.790075
+v -26.958702 16.204412 9.766556
+v -27.038301 16.537115 9.817669
+v -27.267702 16.648022 9.926843
+v -27.605301 16.537128 10.077489
+v -28.009401 16.204439 10.253006
+v -28.438202 15.649849 10.436835
+v -28.850302 14.873456 10.612376
+v -28.705002 14.873169 5.140986
+v -28.396702 15.649567 5.081406
+v -28.321501 16.204166 5.069176
+v -28.437302 16.536867 5.095709
+v -28.702002 16.647770 5.152373
+v -29.073301 16.536873 5.230579
+v -29.509102 16.204180 5.321706
+v -29.967102 15.649585 5.417156
+v -30.405201 14.873188 5.508306
+v -29.143301 14.872898 -0.001426
+v -28.851002 15.649300 -0.001467
+v -28.791201 16.203899 -0.001496
+v -28.921402 16.536598 -0.001514
+v -29.199602 16.647499 -0.001520
+v -29.583401 16.536598 -0.001514
+v -30.030602 16.203899 -0.001496
+v -30.498901 15.649300 -0.001467
+v -30.946001 14.872898 -0.001426
+v -28.638502 14.872627 -5.143844
+v -28.352100 15.649033 -5.084334
+v -28.293402 16.203632 -5.072174
+v -28.421101 16.536329 -5.098731
+v -28.693701 16.647228 -5.155417
+v -29.069801 16.536324 -5.233611
+v -29.508001 16.203619 -5.324704
+v -29.967001 15.649014 -5.420084
+v -30.405201 14.872608 -5.511164
+v -27.187201 14.872377 -9.907674
+v -26.917601 15.648785 -9.793015
+v -26.862402 16.203386 -9.769544
+v -26.982601 16.536081 -9.820702
+v -27.239201 16.646976 -9.929887
+v -27.593302 16.536068 -10.080511
+v -28.005802 16.203360 -10.255994
+v -28.437801 15.648750 -10.439764
+v -28.850302 14.872340 -10.615224
+v -24.884201 14.872151 -14.198323
+v -24.641302 15.648561 -14.033964
+v -24.591501 16.203163 -14.000294
+v -24.699800 16.535858 -14.073611
+v -24.931002 16.646751 -14.230017
+v -25.250101 16.535839 -14.445911
+v -25.621801 16.203127 -14.697494
+v -26.011002 15.648513 -14.960864
+v -26.382801 14.872098 -15.212323
+v -21.824001 14.871956 -17.921024
+v -21.616501 15.648368 -17.713566
+v -21.574001 16.202971 -17.671095
+v -21.666502 16.535664 -17.763611
+v -21.864000 16.646555 -17.961117
+v -22.136501 16.535639 -18.233612
+v -22.454000 16.202923 -18.551094
+v -22.786501 15.648306 -18.883566
+v -23.104002 14.871888 -19.201023
+v -18.101301 14.871795 -20.981224
+v -17.936901 15.648209 -20.738365
+v -17.903202 16.202810 -20.688595
+v -17.976501 16.535503 -20.796911
+v -18.132900 16.646393 -21.028116
+v -18.348801 16.535475 -21.347212
+v -18.600401 16.202757 -21.718893
+v -18.863800 15.648137 -22.108065
+v -19.115301 14.871716 -22.479824
+v -13.810651 14.871674 -23.284224
+v -13.695941 15.648089 -23.014666
+v -13.672451 16.202692 -22.959494
+v -13.723581 16.535385 -23.079712
+v -13.832761 16.646271 -23.336317
+v -13.983401 16.535353 -23.690411
+v -14.158901 16.202631 -24.102894
+v -14.342701 15.648009 -24.534866
+v -14.518201 14.871586 -24.947323
+v -9.046822 14.871597 -24.735523
+v -8.987271 15.648014 -24.449165
+v -8.975081 16.202616 -24.390493
+v -9.001621 16.535309 -24.518211
+v -9.058302 16.646194 -24.790817
+v -9.136492 16.535275 -25.166912
+v -9.227612 16.202553 -25.605095
+v -9.323021 15.647928 -26.064066
+v -9.414131 14.871504 -26.502224
+v -3.904401 14.871571 -25.240324
+v -3.904401 15.647987 -24.948065
+v -3.904401 16.202591 -24.888294
+v -3.904401 16.535282 -25.018511
+v -3.904401 16.646168 -25.296717
+v -3.904401 16.535248 -25.680511
+v -3.904401 16.202524 -26.127693
+v -3.904401 15.647901 -26.595966
+v -3.904401 14.871475 -27.043024
+v 1.238019 14.871597 -24.735523
+v 1.178469 15.648014 -24.449165
+v 1.166279 16.202616 -24.390493
+v 1.192819 16.535309 -24.518211
+v 1.249499 16.646194 -24.790817
+v 1.327689 16.535275 -25.166912
+v 1.418809 16.202553 -25.605095
+v 1.514219 15.647928 -26.064066
+v 1.605329 14.871504 -26.502224
+v 6.001849 14.871674 -23.284224
+v 5.887149 15.648089 -23.014666
+v 5.863648 16.202692 -22.959494
+v 5.914789 16.535385 -23.079712
+v 6.023959 16.646271 -23.336317
+v 6.174599 16.535353 -23.690411
+v 6.350099 16.202631 -24.102894
+v 6.533898 15.648009 -24.534866
+v 6.709399 14.871586 -24.947323
+v 10.292499 14.871795 -20.981224
+v 10.128098 15.648209 -20.738365
+v 10.094398 16.202810 -20.688595
+v 10.167699 16.535503 -20.796911
+v 10.324099 16.646393 -21.028116
+v 10.539999 16.535475 -21.347212
+v 10.791598 16.202757 -21.718893
+v 11.054998 15.648137 -22.108065
+v 11.306499 14.871716 -22.479824
+v 14.015200 14.871956 -17.921024
+v 13.807699 15.648368 -17.713566
+v 13.765200 16.202971 -17.671095
+v 13.857698 16.535664 -17.763611
+v 14.055199 16.646555 -17.961117
+v 14.327700 16.535639 -18.233612
+v 14.645199 16.202923 -18.551094
+v 14.977699 15.648306 -18.883566
+v 15.295198 14.871888 -19.201023
+v 17.075399 14.872151 -14.198323
+v 16.832499 15.648561 -14.033964
+v 16.782700 16.203163 -14.000294
+v 16.890999 16.535858 -14.073611
+v 17.122198 16.646751 -14.230017
+v 17.441299 16.535839 -14.445911
+v 17.812998 16.203127 -14.697494
+v 18.202198 15.648513 -14.960864
+v 18.573999 14.872098 -15.212323
+v 19.378399 14.872377 -9.907674
+v 19.108799 15.648785 -9.793015
+v 19.053598 16.203386 -9.769544
+v 19.173800 16.536081 -9.820702
+v 19.430399 16.646976 -9.929887
+v 19.784498 16.536068 -10.080511
+v 20.196999 16.203360 -10.255994
+v 20.629000 15.648750 -10.439764
+v 21.041498 14.872340 -10.615224
+v 20.829699 14.872627 -5.143844
+v 20.543299 15.649033 -5.084334
+v 20.484598 16.203632 -5.072174
+v 20.612299 16.536329 -5.098731
+v 20.884899 16.647228 -5.155417
+v 21.261000 16.536324 -5.233611
+v 21.699200 16.203619 -5.324704
+v 22.158199 15.649014 -5.420084
+v 22.596399 14.872608 -5.511164
+v 24.244099 11.326610 5.851053
+v 24.818499 11.326302 -0.001240
+v 25.839998 7.795926 6.183049
+v 26.446999 7.795601 -0.001054
+v 27.332399 4.296942 6.493513
+v 27.969898 4.296600 -0.000869
+v 28.669500 0.845457 6.771694
+v 29.334299 0.845100 -0.000688
+v 29.799601 -2.542732 7.006823
+v 30.487398 -2.543100 -0.000509
+v 30.670900 -5.851621 7.188147
+v 31.376497 -5.851999 -0.000335
+v 31.231600 -9.065415 7.304895
+v 31.948599 -9.065800 -0.000166
+v 31.429998 -12.168313 7.346309
+v 32.151100 -12.168699 -0.000002
+v 22.592499 11.326895 11.272463
+v 24.094799 7.796227 11.911848
+v 25.499599 4.297258 12.509732
+v 26.758299 0.845787 13.045514
+v 27.822100 -2.542390 13.498292
+v 28.642199 -5.851271 13.847366
+v 29.170000 -9.065060 14.072135
+v 29.356798 -12.167954 14.151798
+v 19.971498 11.327151 16.155363
+v 21.325199 7.796499 17.071648
+v 22.591099 4.297544 17.928434
+v 23.725199 0.846084 18.696115
+v 24.683798 -2.542083 19.344893
+v 25.422798 -5.850955 19.845165
+v 25.898499 -9.064739 20.167135
+v 26.066698 -12.167632 20.281199
+v 16.488899 11.327374 20.392063
+v 17.645100 7.796734 21.548449
+v 18.726299 4.297791 22.629833
+v 19.695099 0.846342 23.598814
+v 20.513800 -2.541816 24.417692
+v 21.144999 -5.850682 25.049067
+v 21.551298 -9.064461 25.455536
+v 21.695000 -12.167353 25.599400
+v 12.252199 11.327558 23.874664
+v 13.168299 7.796928 25.228548
+v 14.024899 4.297994 26.494633
+v 14.792398 0.846554 27.628914
+v 15.440998 -2.541596 28.587692
+v 15.941099 -5.850457 29.326866
+v 16.262899 -9.064232 29.802635
+v 16.376799 -12.167123 29.971100
+v 7.369399 11.327696 26.495663
+v 8.008499 7.797074 27.998148
+v 8.606298 4.298147 29.403133
+v 9.141799 0.846713 30.662014
+v 9.594398 -2.541431 31.725893
+v 9.943298 -5.850287 32.546268
+v 10.167899 -9.064060 33.074234
+v 10.247398 -12.166949 33.261200
+v 1.947899 11.327783 28.147263
+v 2.279699 7.797165 29.743349
+v 2.589979 4.298244 31.235933
+v 2.867979 0.846814 32.573212
+v 3.102929 -2.541327 33.703491
+v 3.284079 -5.850181 34.574966
+v 3.400659 -9.063951 35.135834
+v 3.441909 -12.166841 35.334400
+v -3.904401 11.327812 28.721664
+v -3.904401 7.797197 30.350349
+v -3.904401 4.298277 31.873434
+v -3.904401 0.846849 33.238014
+v -3.904401 -2.541291 34.391293
+v -3.904401 -5.850143 35.280567
+v -3.904401 -9.063913 35.852837
+v -3.904401 -12.166802 36.055500
+v -9.756701 11.327783 28.147263
+v -10.088501 7.797165 29.743349
+v -10.398781 4.298244 31.235933
+v -10.676781 0.846814 32.573212
+v -10.911732 -2.541327 33.703491
+v -11.092881 -5.850181 34.574966
+v -11.209461 -9.063951 35.135834
+v -11.250711 -12.166841 35.334400
+v -15.178202 11.327696 26.495663
+v -15.817301 7.797074 27.998148
+v -16.415100 4.298147 29.403133
+v -16.950602 0.846713 30.662014
+v -17.403202 -2.541431 31.725893
+v -17.752102 -5.850287 32.546268
+v -17.976700 -9.064060 33.074234
+v -18.056202 -12.166949 33.261200
+v -20.061102 11.327558 23.874664
+v -20.977100 7.796928 25.228548
+v -21.833702 4.297994 26.494633
+v -22.601202 0.846554 27.628914
+v -23.249802 -2.541596 28.587692
+v -23.749901 -5.850457 29.326866
+v -24.071701 -9.064232 29.802635
+v -24.185600 -12.167123 29.971100
+v -24.297701 11.327374 20.392063
+v -25.453901 7.796734 21.548449
+v -26.535101 4.297791 22.629833
+v -27.503901 0.846342 23.598814
+v -28.322601 -2.541816 24.417692
+v -28.953802 -5.850682 25.049067
+v -29.360102 -9.064461 25.455536
+v -29.503801 -12.167353 25.599400
+v -27.780302 11.327151 16.155363
+v -29.134001 7.796499 17.071648
+v -30.399900 4.297544 17.928434
+v -31.534000 0.846084 18.696115
+v -32.492599 -2.542083 19.344893
+v -33.231602 -5.850955 19.845165
+v -33.707302 -9.064739 20.167135
+v -33.875504 -12.167632 20.281199
+v -30.401300 11.326895 11.272463
+v -31.903601 7.796227 11.911848
+v -33.308403 4.297258 12.509732
+v -34.567101 0.845787 13.045514
+v -35.630901 -2.542390 13.498292
+v -36.451004 -5.851271 13.847366
+v -36.978798 -9.065060 14.072135
+v -37.165604 -12.167954 14.151798
+v -32.052902 11.326610 5.851053
+v -33.648804 7.795926 6.183049
+v -35.141201 4.296942 6.493513
+v -36.478302 0.845457 6.771694
+v -37.608398 -2.542732 7.006823
+v -38.479698 -5.851621 7.188147
+v -39.040398 -9.065415 7.304895
+v -39.238800 -12.168313 7.346309
+v -32.627304 11.326302 -0.001240
+v -34.255802 7.795601 -0.001054
+v -35.778702 4.296600 -0.000869
+v -37.143105 0.845100 -0.000688
+v -38.296204 -2.543100 -0.000509
+v -39.185303 -5.851999 -0.000335
+v -39.757500 -9.065800 -0.000166
+v -39.959900 -12.168699 -0.000002
+v -32.052902 11.325994 -5.853537
+v -33.648804 7.795276 -6.185152
+v -35.141201 4.296259 -6.495247
+v -36.478302 0.844744 -6.773066
+v -37.608398 -2.543469 -7.007837
+v -38.479698 -5.852377 -7.188813
+v -39.040398 -9.066184 -7.305224
+v -39.238800 -12.169086 -7.346312
+v -30.401300 11.325708 -11.275038
+v -31.903601 7.794974 -11.913952
+v -33.308403 4.295942 -12.511567
+v -34.567101 0.844414 -13.046886
+v -35.630901 -2.543810 -13.499308
+v -36.451004 -5.852728 -13.848033
+v -36.978798 -9.066540 -14.072465
+v -37.165604 -12.169444 -14.151801
+v -27.780302 11.325452 -16.157936
+v -29.134001 7.794703 -17.073751
+v -30.399900 4.295657 -17.930166
+v -31.534000 0.844117 -18.697485
+v -32.492599 -2.544118 -19.345907
+v -33.231602 -5.853043 -19.845835
+v -33.707302 -9.066860 -20.167465
+v -33.875504 -12.169766 -20.281200
+v -24.297701 11.325229 -20.394537
+v -25.453901 7.794467 -21.550552
+v -26.535101 4.295410 -22.631567
+v -27.503901 0.843859 -23.600185
+v -28.322601 -2.544385 -24.418709
+v -28.953802 -5.853317 -25.049734
+v -29.360102 -9.067139 -25.455864
+v -29.503801 -12.170046 -25.599401
+v -20.061102 11.325046 -23.877136
+v -20.977100 7.794274 -25.230652
+v -21.833702 4.295207 -26.496367
+v -22.601202 0.843647 -27.630285
+v -23.249802 -2.544604 -28.588707
+v -23.749901 -5.853542 -29.327534
+v -24.071701 -9.067368 -29.803064
+v -24.185600 -12.170276 -29.971100
+v -15.178202 11.324907 -26.498137
+v -15.817301 7.794128 -28.000252
+v -16.415100 4.295053 -29.404867
+v -16.950602 0.843487 -30.663385
+v -17.403202 -2.544769 -31.727009
+v -17.752102 -5.853711 -32.546932
+v -17.976700 -9.067539 -33.074566
+v -18.056202 -12.170449 -33.261200
+v -9.756701 11.324821 -28.149736
+v -10.088501 7.794036 -29.745451
+v -10.398781 4.294957 -31.237667
+v -10.676781 0.843387 -32.574589
+v -10.911732 -2.544873 -33.704510
+v -11.092881 -5.853818 -34.575634
+v -11.209461 -9.067648 -35.136166
+v -11.250711 -12.170558 -35.334400
+v -3.904401 11.324791 -28.724136
+v -3.904401 7.794004 -30.352451
+v -3.904401 4.294924 -31.875166
+v -3.904401 0.843352 -33.239388
+v -3.904401 -2.544909 -34.392307
+v -3.904401 -5.853855 -35.281231
+v -3.904401 -9.067686 -35.853165
+v -3.904401 -12.170596 -36.055500
+v 1.947899 11.324821 -28.149736
+v 2.279699 7.794036 -29.745451
+v 2.589979 4.294957 -31.237667
+v 2.867979 0.843387 -32.574589
+v 3.102929 -2.544873 -33.704510
+v 3.284079 -5.853818 -34.575634
+v 3.400659 -9.067648 -35.136166
+v 3.441909 -12.170558 -35.334400
+v 7.369399 11.324907 -26.498137
+v 8.008499 7.794128 -28.000252
+v 8.606298 4.295053 -29.404867
+v 9.141799 0.843487 -30.663385
+v 9.594398 -2.544769 -31.727009
+v 9.943298 -5.853711 -32.546932
+v 10.167899 -9.067539 -33.074566
+v 10.247398 -12.170449 -33.261200
+v 12.252199 11.325046 -23.877136
+v 13.168299 7.794274 -25.230652
+v 14.024899 4.295207 -26.496367
+v 14.792398 0.843647 -27.630285
+v 15.440998 -2.544604 -28.588707
+v 15.941099 -5.853542 -29.327534
+v 16.262899 -9.067368 -29.803064
+v 16.376799 -12.170276 -29.971100
+v 16.488899 11.325229 -20.394537
+v 17.645100 7.794467 -21.550552
+v 18.726299 4.295410 -22.631567
+v 19.695099 0.843859 -23.600185
+v 20.513800 -2.544385 -24.418709
+v 21.144999 -5.853317 -25.049734
+v 21.551298 -9.067139 -25.455864
+v 21.695000 -12.170046 -25.599401
+v 19.971498 11.325452 -16.157936
+v 21.325199 7.794703 -17.073751
+v 22.591099 4.295657 -17.930166
+v 23.725199 0.844117 -18.697485
+v 24.683798 -2.544118 -19.345907
+v 25.422798 -5.853043 -19.845835
+v 25.898499 -9.066860 -20.167465
+v 26.066698 -12.169766 -20.281200
+v 22.592499 11.325708 -11.275038
+v 24.094799 7.794974 -11.913952
+v 25.499599 4.295942 -12.511567
+v 26.758299 0.844414 -13.046886
+v 27.822100 -2.543810 -13.499308
+v 28.642199 -5.852728 -13.848033
+v 29.170000 -9.066540 -14.072465
+v 29.356798 -12.169444 -14.151801
+v 24.244099 11.325994 -5.853537
+v 25.839998 7.795276 -6.185152
+v 27.332399 4.296259 -6.495247
+v 28.669500 0.844744 -6.773066
+v 29.799601 -2.543469 -7.007837
+v 30.670900 -5.852377 -7.188813
+v 31.231600 -9.066184 -7.305224
+v 31.429998 -12.169086 -7.346312
+v 31.050398 -15.023018 7.267539
+v 31.763800 -15.023400 0.000148
+v 30.049799 -17.513329 7.059620
+v 30.742701 -17.513700 0.000279
+v 28.635000 -19.654984 6.765593
+v 29.299097 -19.655340 0.000392
+v 27.013199 -21.463942 6.428508
+v 27.644199 -21.464279 0.000487
+v 25.391399 -22.955999 6.091406
+v 25.989298 -22.956320 0.000566
+v 23.976698 -24.147015 5.797329
+v 24.545698 -24.147320 0.000629
+v 22.975998 -25.052816 5.589326
+v 23.524498 -25.053110 0.000676
+v 22.596399 -25.689251 5.510440
+v 23.137199 -25.689541 0.000710
+v 28.999498 -15.022664 13.999949
+v 28.057499 -17.512985 13.599279
+v 26.725800 -19.654655 13.032792
+v 25.199200 -21.463627 12.383287
+v 23.672499 -22.955702 11.733866
+v 22.340799 -24.146732 11.167229
+v 21.398798 -25.052544 10.766577
+v 21.041498 -25.688982 10.614510
+v 25.744799 -15.022345 20.063549
+v 24.895998 -17.512676 19.489281
+v 23.695999 -19.654358 18.677292
+v 22.320398 -21.463346 17.746588
+v 20.944698 -22.955435 16.815765
+v 19.744699 -24.146479 16.003828
+v 18.895899 -25.052298 15.429477
+v 18.573999 -25.688740 15.211610
+v 21.419998 -15.022068 25.324549
+v 20.695000 -17.512407 24.599680
+v 19.670099 -19.654100 23.574892
+v 18.495098 -21.463100 22.399988
+v 17.320099 -22.955204 21.225065
+v 16.295099 -24.146257 20.200129
+v 15.570198 -25.052086 19.475277
+v 15.295198 -25.688530 19.200310
+v 16.158998 -15.021841 29.649347
+v 15.584599 -17.512186 28.800680
+v 14.772499 -19.653889 27.600792
+v 13.841700 -21.462900 26.225288
+v 12.910799 -22.955013 24.849667
+v 12.098799 -24.146076 23.649729
+v 11.524399 -25.051910 22.800976
+v 11.306499 -25.688358 22.479109
+v 10.095399 -15.021669 32.904049
+v 9.694599 -17.512020 31.962179
+v 9.127998 -19.653728 30.630592
+v 8.478398 -21.462748 29.104088
+v 7.828898 -22.954868 27.577465
+v 7.262198 -24.145939 26.245829
+v 6.861499 -25.051779 25.303877
+v 6.709399 -25.688229 24.946609
+v 3.362989 -15.021562 34.954948
+v 3.154949 -17.511915 33.954380
+v 2.860809 -19.653629 32.539791
+v 2.523619 -21.462652 30.918087
+v 2.186439 -22.954779 29.296366
+v 1.892299 -24.145853 27.881729
+v 1.684249 -25.051697 26.881077
+v 1.605329 -25.688135 26.501509
+v -3.904401 -15.021524 35.668346
+v -3.904401 -17.511877 34.647381
+v -3.904401 -19.653593 33.203892
+v -3.904401 -21.462620 31.549088
+v -3.904401 -22.954748 29.894266
+v -3.904401 -24.145823 28.450729
+v -3.904401 -25.051668 27.429577
+v -3.904401 -25.688107 27.042309
+v -11.171791 -15.021562 34.954948
+v -10.963751 -17.511915 33.954380
+v -10.669611 -19.653629 32.539791
+v -10.332421 -21.462652 30.918087
+v -9.995241 -22.954779 29.296366
+v -9.701101 -24.145853 27.881729
+v -9.493052 -25.051697 26.881077
+v -9.414131 -25.688135 26.501509
+v -17.904202 -15.021669 32.904049
+v -17.503401 -17.512020 31.962179
+v -16.936802 -19.653728 30.630592
+v -16.287201 -21.462748 29.104088
+v -15.637701 -22.954868 27.577465
+v -15.071001 -24.145939 26.245829
+v -14.670301 -25.051779 25.303877
+v -14.518201 -25.688229 24.946609
+v -23.967802 -15.021841 29.649347
+v -23.393402 -17.512186 28.800680
+v -22.581301 -19.653889 27.600792
+v -21.650501 -21.462900 26.225288
+v -20.719601 -22.955013 24.849667
+v -19.907600 -24.146076 23.649729
+v -19.333202 -25.051910 22.800976
+v -19.115301 -25.688358 22.479109
+v -29.228802 -15.022068 25.324549
+v -28.503801 -17.512407 24.599680
+v -27.478901 -19.654100 23.574892
+v -26.303902 -21.463100 22.399988
+v -25.128901 -22.955204 21.225065
+v -24.103901 -24.146257 20.200129
+v -23.379002 -25.052086 19.475277
+v -23.104002 -25.688530 19.200310
+v -33.553600 -15.022345 20.063549
+v -32.704803 -17.512676 19.489281
+v -31.504801 -19.654358 18.677292
+v -30.129202 -21.463346 17.746588
+v -28.753502 -22.955435 16.815765
+v -27.553501 -24.146479 16.003828
+v -26.704700 -25.052298 15.429477
+v -26.382801 -25.688740 15.211610
+v -36.808304 -15.022664 13.999949
+v -35.866302 -17.512985 13.599279
+v -34.534599 -19.654655 13.032792
+v -33.008003 -21.463627 12.383287
+v -31.481300 -22.955702 11.733866
+v -30.149601 -24.146732 11.167229
+v -29.207602 -25.052544 10.766577
+v -28.850302 -25.688982 10.614510
+v -38.859200 -15.023018 7.267539
+v -37.858604 -17.513329 7.059620
+v -36.443802 -19.654984 6.765593
+v -34.821999 -21.463942 6.428508
+v -33.200203 -22.955999 6.091406
+v -31.785501 -24.147015 5.797329
+v -30.784801 -25.052816 5.589326
+v -30.405201 -25.689251 5.510440
+v -39.572601 -15.023400 0.000148
+v -38.551498 -17.513700 0.000279
+v -37.107903 -19.655340 0.000392
+v -35.453003 -21.464279 0.000487
+v -33.798103 -22.956320 0.000566
+v -32.354500 -24.147320 0.000629
+v -31.333302 -25.053110 0.000676
+v -30.946001 -25.689541 0.000710
+v -38.859200 -15.023783 -7.267241
+v -37.858604 -17.514072 -7.059070
+v -36.443802 -19.655706 -6.764818
+v -34.821999 -21.464617 -6.427532
+v -33.200203 -22.956650 -6.090274
+v -31.785501 -24.147625 -5.796071
+v -30.784801 -25.053404 -5.587974
+v -30.405201 -25.689831 -5.509020
+v -36.808304 -15.024137 -13.999651
+v -35.866302 -17.514416 -13.598721
+v -34.534599 -19.656034 -13.032007
+v -33.008003 -21.464931 -12.382312
+v -31.481300 -22.956947 -11.732734
+v -30.149601 -24.147907 -11.165971
+v -29.207602 -25.053677 -10.765224
+v -28.850302 -25.690100 -10.613091
+v -33.553600 -15.024456 -20.063251
+v -32.704803 -17.514725 -19.488720
+v -31.504801 -19.656332 -18.676508
+v -30.129202 -21.465212 -17.745613
+v -28.753502 -22.957214 -16.814634
+v -27.553501 -24.148161 -16.002571
+v -26.704700 -25.053923 -15.428123
+v -26.382801 -25.690342 -15.210190
+v -29.228802 -15.024733 -25.324251
+v -28.503801 -17.514994 -24.599121
+v -27.478901 -19.656590 -23.574108
+v -26.303902 -21.465458 -22.399012
+v -25.128901 -22.957445 -21.223934
+v -24.103901 -24.148382 -20.198872
+v -23.379002 -25.054134 -19.473923
+v -23.104002 -25.690552 -19.198891
+v -23.967802 -15.024960 -29.649052
+v -23.393402 -17.515215 -28.800119
+v -22.581301 -19.656801 -27.600008
+v -21.650501 -21.465658 -26.224312
+v -20.719601 -22.957636 -24.848534
+v -19.907600 -24.148563 -23.648472
+v -19.333202 -25.054310 -22.799623
+v -19.115301 -25.690723 -22.477692
+v -17.904202 -15.025131 -32.903751
+v -17.503401 -17.515381 -31.961620
+v -16.936802 -19.656961 -30.629808
+v -16.287201 -21.465811 -29.103113
+v -15.637701 -22.957781 -27.576334
+v -15.071001 -24.148701 -26.244572
+v -14.670301 -25.054441 -25.302523
+v -14.518201 -25.690853 -24.945190
+v -11.171791 -15.025239 -34.954651
+v -10.963751 -17.515486 -33.953918
+v -10.669611 -19.657061 -32.539009
+v -10.332421 -21.465906 -30.917112
+v -9.995241 -22.957870 -29.295235
+v -9.701101 -24.148787 -27.880470
+v -9.493052 -25.054523 -26.879723
+v -9.414131 -25.690935 -26.500092
+v -3.904401 -15.025276 -35.668053
+v -3.904401 -17.515524 -34.646820
+v -3.904401 -19.657097 -33.203106
+v -3.904401 -21.465939 -31.548113
+v -3.904401 -22.957901 -29.893133
+v -3.904401 -24.148817 -28.449471
+v -3.904401 -25.054552 -27.428223
+v -3.904401 -25.690964 -27.040892
+v 3.362989 -15.025239 -34.954651
+v 3.154949 -17.515486 -33.953918
+v 2.860809 -19.657061 -32.539009
+v 2.523619 -21.465906 -30.917112
+v 2.186439 -22.957870 -29.295235
+v 1.892299 -24.148787 -27.880470
+v 1.684249 -25.054523 -26.879723
+v 1.605329 -25.690935 -26.500092
+v 10.095399 -15.025131 -32.903751
+v 9.694599 -17.515381 -31.961620
+v 9.127998 -19.656961 -30.629808
+v 8.478398 -21.465811 -29.103113
+v 7.828898 -22.957781 -27.576334
+v 7.262198 -24.148701 -26.244572
+v 6.861499 -25.054441 -25.302523
+v 6.709399 -25.690853 -24.945190
+v 16.158998 -15.024960 -29.649052
+v 15.584599 -17.515215 -28.800119
+v 14.772499 -19.656801 -27.600008
+v 13.841700 -21.465658 -26.224312
+v 12.910799 -22.957636 -24.848534
+v 12.098799 -24.148563 -23.648472
+v 11.524399 -25.054310 -22.799623
+v 11.306499 -25.690723 -22.477692
+v 21.419998 -15.024733 -25.324251
+v 20.695000 -17.514994 -24.599121
+v 19.670099 -19.656590 -23.574108
+v 18.495098 -21.465458 -22.399012
+v 17.320099 -22.957445 -21.223934
+v 16.295099 -24.148382 -20.198872
+v 15.570198 -25.054134 -19.473923
+v 15.295198 -25.690552 -19.198891
+v 25.744799 -15.024456 -20.063251
+v 24.895998 -17.514725 -19.488720
+v 23.695999 -19.656332 -18.676508
+v 22.320398 -21.465212 -17.745613
+v 20.944698 -22.957214 -16.814634
+v 19.744699 -24.148161 -16.002571
+v 18.895899 -25.053923 -15.428123
+v 18.573999 -25.690342 -15.210190
+v 28.999498 -15.024137 -13.999651
+v 28.057499 -17.514416 -13.598721
+v 26.725800 -19.656034 -13.032007
+v 25.199200 -21.464931 -12.382312
+v 23.672499 -22.956947 -11.732734
+v 22.340799 -24.147907 -11.165971
+v 21.398798 -25.053677 -10.765224
+v 21.041498 -25.690100 -10.613091
+v 31.050398 -15.023783 -7.267241
+v 30.049799 -17.514072 -7.059070
+v 28.635000 -19.655706 -6.764818
+v 27.013199 -21.464617 -6.427532
+v 25.391399 -22.956650 -6.090274
+v 23.976698 -24.147625 -5.796071
+v 22.975998 -25.053404 -5.587974
+v 22.596399 -25.689831 -5.509020
+v 22.490299 -26.193642 5.488407
+v 23.028999 -26.193930 0.000736
+v 21.995998 -26.682186 5.385663
+v 22.524599 -26.682470 0.000762
+v 20.849499 -27.139059 5.147326
+v 21.354698 -27.139330 0.000786
+v 18.786900 -27.548401 4.718518
+v 19.249998 -27.548649 0.000808
+v 15.544199 -27.894377 4.044346
+v 15.941099 -27.894592 0.000826
+v 10.857399 -28.161150 3.069930
+v 11.158599 -28.161312 0.000840
+v 4.462499 -28.332870 1.740399
+v 4.633259 -28.332962 0.000849
+v -3.904401 -28.393700 0.000852
+v 20.941599 -26.193373 10.572037
+v 20.476299 -26.681925 10.374163
+v 19.397099 -27.138809 9.914987
+v 17.455500 -27.548170 9.088908
+v 14.403099 -27.894180 7.790186
+v 9.991199 -28.161001 5.913080
+v 3.971589 -28.332787 3.351879
+v 18.483999 -26.193132 15.150737
+v 18.064699 -26.681688 14.867063
+v 17.092199 -27.138582 14.208986
+v 15.342699 -27.547964 13.025108
+v 12.592199 -27.894003 11.163926
+v 8.616699 -28.160864 8.473800
+v 3.192529 -28.332710 4.803279
+v 15.218298 -26.192924 19.123436
+v 14.860199 -26.681482 18.765362
+v 14.029598 -27.138386 17.934786
+v 12.535198 -27.547785 16.440409
+v 10.185899 -27.893848 14.091126
+v 6.790399 -28.160748 10.695640
+v 2.157339 -28.332644 6.062589
+v 11.245599 -26.192753 22.389135
+v 10.961899 -26.681314 21.969862
+v 10.303799 -27.138226 20.997385
+v 9.119899 -27.547636 19.247908
+v 7.258698 -27.893723 16.497425
+v 4.568559 -28.160652 12.521939
+v 0.898029 -28.332588 7.097779
+v 6.666899 -26.192623 24.846735
+v 6.468999 -26.681189 24.381462
+v 6.009799 -27.138103 23.302286
+v 5.183699 -27.547525 21.360708
+v 3.884959 -27.893627 18.308325
+v 2.007839 -28.160580 13.896440
+v -0.553371 -28.332548 7.876839
+v 1.583269 -26.192532 26.395435
+v 1.480499 -26.681108 25.901163
+v 1.242139 -27.138027 24.754684
+v 0.813309 -27.547455 22.692108
+v 0.139119 -27.893568 19.449425
+v -0.835311 -28.160534 14.762640
+v -2.164851 -28.332521 8.367749
+v -3.904401 -26.192503 26.934135
+v -3.904401 -26.681080 26.429762
+v -3.904401 -27.138000 25.259886
+v -3.904401 -27.547430 23.155209
+v -3.904401 -27.893547 19.846325
+v -3.904401 -28.160519 15.063840
+v -3.904401 -28.332514 8.538509
+v -9.392071 -26.192532 26.395435
+v -9.289301 -26.681108 25.901163
+v -9.050941 -27.138027 24.754684
+v -8.622111 -27.547455 22.692108
+v -7.947921 -27.893568 19.449425
+v -6.973491 -28.160534 14.762640
+v -5.643951 -28.332521 8.367749
+v -14.475701 -26.192623 24.846735
+v -14.277802 -26.681189 24.381462
+v -13.818602 -27.138103 23.302286
+v -12.992501 -27.547525 21.360708
+v -11.693762 -27.893627 18.308325
+v -9.816641 -28.160580 13.896440
+v -7.255431 -28.332548 7.876839
+v -19.054401 -26.192753 22.389135
+v -18.770702 -26.681314 21.969862
+v -18.112602 -27.138226 20.997385
+v -16.928701 -27.547636 19.247908
+v -15.067501 -27.893723 16.497425
+v -12.377361 -28.160652 12.521939
+v -8.706831 -28.332588 7.097779
+v -23.027102 -26.192924 19.123436
+v -22.669001 -26.681482 18.765362
+v -21.838402 -27.138386 17.934786
+v -20.344002 -27.547785 16.440409
+v -17.994701 -27.893848 14.091126
+v -14.599201 -28.160748 10.695640
+v -9.966141 -28.332644 6.062589
+v -26.292801 -26.193132 15.150737
+v -25.873501 -26.681688 14.867063
+v -24.901001 -27.138582 14.208986
+v -23.151501 -27.547964 13.025108
+v -20.401001 -27.894003 11.163926
+v -16.425501 -28.160864 8.473800
+v -11.001331 -28.332710 4.803279
+v -28.750401 -26.193373 10.572037
+v -28.285101 -26.681925 10.374163
+v -27.205902 -27.138809 9.914987
+v -25.264301 -27.548170 9.088908
+v -22.211901 -27.894180 7.790186
+v -17.800001 -28.161001 5.913080
+v -11.780392 -28.332787 3.351879
+v -30.299101 -26.193642 5.488407
+v -29.804802 -26.682186 5.385663
+v -28.658300 -27.139059 5.147326
+v -26.595701 -27.548401 4.718518
+v -23.353001 -27.894377 4.044346
+v -18.666203 -28.161150 3.069930
+v -12.271301 -28.332870 1.740399
+v -30.837801 -26.193930 0.000736
+v -30.333401 -26.682470 0.000762
+v -29.163502 -27.139330 0.000786
+v -27.058802 -27.548649 0.000808
+v -23.749901 -27.894592 0.000826
+v -18.967402 -28.161312 0.000840
+v -12.442061 -28.332962 0.000849
+v -30.299101 -26.194218 -5.486933
+v -29.804802 -26.682755 -5.384138
+v -28.658300 -27.139601 -5.145754
+v -26.595701 -27.548897 -4.716902
+v -23.353001 -27.894806 -4.042694
+v -18.666203 -28.161474 -3.068250
+v -12.271301 -28.333054 -1.738701
+v -28.750401 -26.194487 -10.570563
+v -28.285101 -26.683016 -10.372638
+v -27.205902 -27.139851 -9.913414
+v -25.264301 -27.549129 -9.087292
+v -22.211901 -27.895002 -7.788534
+v -17.800001 -28.161623 -5.911400
+v -11.780392 -28.333138 -3.350181
+v -26.292801 -26.194727 -15.149263
+v -25.873501 -26.683252 -14.865538
+v -24.901001 -27.140078 -14.207414
+v -23.151501 -27.549335 -13.023492
+v -20.401001 -27.895180 -11.162273
+v -16.425501 -28.161758 -8.472120
+v -11.001331 -28.333214 -4.801581
+v -23.027102 -26.194935 -19.121964
+v -22.669001 -26.683458 -18.763838
+v -21.838402 -27.140274 -17.933214
+v -20.344002 -27.549515 -16.438791
+v -17.994701 -27.895334 -14.089474
+v -14.599201 -28.161875 -10.693960
+v -9.966141 -28.333281 -6.060891
+v -19.054401 -26.195107 -22.387665
+v -18.770702 -26.683626 -21.968338
+v -18.112602 -27.140434 -20.995815
+v -16.928701 -27.549664 -19.246292
+v -15.067501 -27.895460 -16.495775
+v -12.377361 -28.161970 -12.520261
+v -8.706831 -28.333336 -7.096081
+v -14.475701 -26.195236 -24.845264
+v -14.277802 -26.683752 -24.379938
+v -13.818602 -27.140556 -23.300714
+v -12.992501 -27.549774 -21.359093
+v -11.693762 -27.895555 -18.306675
+v -9.816641 -28.162043 -13.894760
+v -7.255431 -28.333376 -7.875141
+v -9.392071 -26.195318 -26.393965
+v -9.289301 -26.683832 -25.899637
+v -9.050941 -27.140633 -24.753115
+v -8.622111 -27.549845 -22.690493
+v -7.947921 -27.895615 -19.447775
+v -6.973491 -28.162088 -14.760961
+v -5.643951 -28.333403 -8.366051
+v -3.904401 -26.195347 -26.932665
+v -3.904401 -26.683861 -26.428238
+v -3.904401 -27.140659 -25.258314
+v -3.904401 -27.549870 -23.153591
+v -3.904401 -27.895636 -19.844675
+v -3.904401 -28.162104 -15.062160
+v -3.904401 -28.333410 -8.536811
+v 1.583269 -26.195318 -26.393965
+v 1.480499 -26.683832 -25.899637
+v 1.242139 -27.140633 -24.753115
+v 0.813309 -27.549845 -22.690493
+v 0.139119 -27.895615 -19.447775
+v -0.835311 -28.162088 -14.760961
+v -2.164851 -28.333403 -8.366051
+v 6.666899 -26.195236 -24.845264
+v 6.468999 -26.683752 -24.379938
+v 6.009799 -27.140556 -23.300714
+v 5.183699 -27.549774 -21.359093
+v 3.884959 -27.895555 -18.306675
+v 2.007839 -28.162043 -13.894760
+v -0.553371 -28.333376 -7.875141
+v 11.245599 -26.195107 -22.387665
+v 10.961899 -26.683626 -21.968338
+v 10.303799 -27.140434 -20.995815
+v 9.119899 -27.549664 -19.246292
+v 7.258698 -27.895460 -16.495775
+v 4.568559 -28.161970 -12.520261
+v 0.898029 -28.333336 -7.096081
+v 15.218298 -26.194935 -19.121964
+v 14.860199 -26.683458 -18.763838
+v 14.029598 -27.140274 -17.933214
+v 12.535198 -27.549515 -16.438791
+v 10.185899 -27.895334 -14.089474
+v 6.790399 -28.161875 -10.693960
+v 2.157339 -28.333281 -6.060891
+v 18.483999 -26.194727 -15.149263
+v 18.064699 -26.683252 -14.865538
+v 17.092199 -27.140078 -14.207414
+v 15.342699 -27.549335 -13.023492
+v 12.592199 -27.895180 -11.162273
+v 8.616699 -28.161758 -8.472120
+v 3.192529 -28.333214 -4.801581
+v 20.941599 -26.194487 -10.570563
+v 20.476299 -26.683016 -10.372638
+v 19.397099 -27.139851 -9.913414
+v 17.455500 -27.549129 -9.087292
+v 14.403099 -27.895002 -7.788534
+v 9.991199 -28.161623 -5.911400
+v 3.971589 -28.333138 -3.350181
+v 22.490299 -26.194218 -5.486933
+v 21.995998 -26.682755 -5.384138
+v 20.849499 -27.139601 -5.145754
+v 18.786900 -27.548897 -4.716902
+v 15.544199 -27.894806 -4.042694
+v 10.857399 -28.161474 -3.068250
+v 4.462499 -28.333054 -1.738701
+v -32.748802 8.112499 -0.001070
+v -32.671303 8.286894 1.773523
+v -37.226601 8.278593 1.773523
+v -37.224098 8.104599 -0.001070
+v -41.240105 8.220793 1.773526
+v -41.171204 8.049099 -0.001067
+v -44.691704 8.063795 1.773534
+v -44.569000 7.898602 -0.001059
+v -47.561005 7.758093 1.773551
+v -47.396400 7.605499 -0.001044
+v -49.827904 7.253992 1.773587
+v -49.632202 7.122200 -0.001018
+v -51.472099 6.502092 1.773627
+v -51.255402 6.401299 -0.000980
+v -52.473404 5.452795 1.773682
+v -52.244804 5.395100 -0.000927
+v -52.811699 4.056395 1.773755
+v -52.579300 4.056301 -0.000857
+v -32.467102 8.746460 3.041078
+v -37.233398 8.737259 3.041079
+v -41.422005 8.673161 3.041082
+v -45.015099 8.499161 3.041091
+v -47.994904 8.160160 3.041109
+v -50.343605 7.601460 3.041139
+v -52.043304 6.767860 3.041183
+v -53.076103 5.604462 3.041244
+v -53.424400 4.056461 3.041325
+v -32.178402 9.396101 3.801594
+v -37.243004 9.385698 3.801595
+v -41.679199 9.312700 3.801599
+v -45.472504 9.114500 3.801609
+v -48.608498 8.728701 3.801629
+v -51.072701 8.092501 3.801663
+v -52.850800 7.143400 3.801713
+v -53.928200 5.818998 3.801782
+v -54.290604 4.056501 3.801875
+v -31.847401 10.140812 4.055065
+v -37.253998 10.128914 4.055066
+v -41.973999 10.045815 4.055070
+v -45.996704 9.820015 4.055082
+v -49.311798 9.380314 4.055105
+v -51.908600 8.655415 4.055143
+v -53.776505 7.574012 4.055200
+v -54.904999 6.064811 4.055280
+v -55.283501 4.056514 4.055386
+v -31.516401 10.885500 3.801516
+v -37.264999 10.872202 3.801517
+v -42.268700 10.778799 3.801522
+v -46.521004 10.525400 3.801535
+v -50.015099 10.031900 3.801561
+v -52.744400 9.218302 3.801604
+v -54.702202 8.004499 3.801667
+v -55.881798 6.310598 3.801757
+v -56.276398 4.056501 3.801875
+v -31.227701 11.535160 3.040932
+v -37.274605 11.520561 3.040932
+v -42.525902 11.418259 3.040938
+v -46.978302 11.140759 3.040952
+v -50.628700 10.600262 3.040981
+v -53.473602 9.709259 3.041028
+v -55.509705 8.380058 3.041098
+v -56.733803 6.524960 3.041195
+v -57.142601 4.056461 3.041325
+v -31.023500 11.994593 1.773328
+v -37.281303 11.979094 1.773328
+v -42.707802 11.870493 1.773334
+v -47.301804 11.575891 1.773350
+v -51.062599 11.002295 1.773380
+v -53.989304 10.056494 1.773430
+v -56.080902 8.645594 1.773504
+v -57.336502 6.676592 1.773617
+v -57.755302 4.056395 1.773755
+v -30.946001 12.168701 -0.001284
+v -37.283905 12.152901 -0.001283
+v -42.776703 12.042000 -0.001277
+v -47.424500 11.740898 -0.001261
+v -51.227303 11.154701 -0.001231
+v -54.184898 10.188198 -0.001180
+v -56.297600 8.746300 -0.001104
+v -57.565102 6.734001 -0.000998
+v -57.987701 4.056301 -0.000857
+v -31.023500 11.994406 -1.775882
+v -37.281303 11.978907 -1.775882
+v -42.707802 11.870306 -1.775876
+v -47.301804 11.575705 -1.775860
+v -51.062599 11.002108 -1.775830
+v -53.989304 10.056307 -1.775780
+v -56.080902 8.645407 -1.775706
+v -57.336502 6.676405 -1.775603
+v -57.755302 4.056208 -1.775465
+v -31.227701 11.534840 -3.043438
+v -37.274605 11.520241 -3.043437
+v -42.525902 11.417938 -3.043432
+v -46.978302 11.140438 -3.043417
+v -50.628700 10.599941 -3.043389
+v -53.473602 9.708939 -3.043342
+v -55.509705 8.379738 -3.043272
+v -56.733803 6.524639 -3.043175
+v -57.142601 4.056141 -3.043045
+v -31.516401 10.885099 -3.803944
+v -37.264999 10.871801 -3.803943
+v -42.268700 10.778399 -3.803938
+v -46.521004 10.525000 -3.803925
+v -50.015099 10.031500 -3.803899
+v -52.744400 9.217901 -3.803856
+v -54.702202 8.004099 -3.803792
+v -55.881798 6.310198 -3.803703
+v -56.276398 4.056101 -3.803585
+v -31.847401 10.140385 -4.057425
+v -37.253998 10.128487 -4.057424
+v -41.973999 10.045387 -4.057420
+v -45.996704 9.819588 -4.057408
+v -49.311798 9.379887 -4.057385
+v -51.908600 8.654987 -4.057347
+v -53.776505 7.573586 -4.057290
+v -54.904999 6.064385 -4.057210
+v -55.283501 4.056088 -4.057105
+v -32.178402 9.395700 -3.803866
+v -37.243004 9.385298 -3.803865
+v -41.679199 9.312300 -3.803861
+v -45.472504 9.114100 -3.803851
+v -48.608498 8.728300 -3.803831
+v -51.072701 8.092100 -3.803797
+v -52.850800 7.143000 -3.803747
+v -53.928200 5.818598 -3.803678
+v -54.290604 4.056101 -3.803585
+v -32.467102 8.746140 -3.043292
+v -37.233398 8.736938 -3.043291
+v -41.422005 8.672840 -3.043288
+v -45.015099 8.498840 -3.043278
+v -47.994904 8.159840 -3.043261
+v -50.343605 7.601139 -3.043231
+v -52.043304 6.767540 -3.043187
+v -53.076103 5.604141 -3.043126
+v -53.424400 4.056141 -3.043045
+v -32.671303 8.286707 -1.775687
+v -37.226601 8.278406 -1.775687
+v -41.240105 8.220606 -1.775684
+v -44.691704 8.063608 -1.775676
+v -47.561005 7.757906 -1.775659
+v -49.827904 7.253805 -1.775633
+v -51.472099 6.501905 -1.775593
+v -52.473404 5.452608 -1.775538
+v -52.811699 4.056208 -1.775465
+v -52.633804 2.304493 1.773847
+v -52.406799 2.360899 -0.000767
+v -52.086304 0.282793 1.773954
+v -51.875099 0.380301 -0.000663
+v -51.148598 -1.917507 1.774069
+v -50.963203 -1.790400 -0.000549
+v -49.799904 -4.205008 1.774190
+v -49.649803 -4.056200 -0.000429
+v -48.019600 -6.488407 1.774310
+v -47.914001 -6.322001 -0.000310
+v -45.787102 -8.676506 1.774425
+v -45.734398 -8.492701 -0.000196
+v -43.081604 -10.677807 1.774530
+v -43.090103 -10.473301 -0.000092
+v -39.882401 -12.401007 1.774621
+v -53.232300 2.155760 3.041425
+v -52.643204 0.025560 3.041537
+v -51.637398 -2.252640 3.041657
+v -50.195602 -4.597441 3.041780
+v -48.298203 -6.927340 3.041903
+v -45.925903 -9.161039 3.042020
+v -43.058998 -11.216940 3.042129
+v -39.678200 -13.013640 3.042223
+v -54.078499 1.945400 3.801986
+v -53.430405 -0.338101 3.802106
+v -52.328499 -2.726500 3.802232
+v -50.755005 -5.152300 3.802360
+v -48.692101 -7.548000 3.802485
+v -46.122101 -9.846199 3.802606
+v -43.027199 -11.979200 3.802719
+v -39.389503 -13.879700 3.802819
+v -55.048500 1.704214 4.055509
+v -54.332802 -0.755087 4.055638
+v -53.120705 -3.269686 4.055771
+v -51.396301 -5.788388 4.055903
+v -49.143700 -8.259487 4.056033
+v -46.347099 -10.631586 4.056158
+v -42.990700 -12.853086 4.056275
+v -39.058502 -14.872686 4.056381
+v -56.018501 1.462999 3.802011
+v -55.235298 -1.171999 3.802150
+v -53.912903 -3.813000 3.802289
+v -52.037498 -6.424500 3.802427
+v -49.595200 -8.971001 3.802560
+v -46.572098 -11.417000 3.802689
+v -42.954102 -13.727100 3.802811
+v -38.727501 -15.865600 3.802923
+v -56.864601 1.252559 3.041473
+v -56.022499 -1.535740 3.041619
+v -54.604004 -4.286940 3.041764
+v -52.596901 -6.979441 3.041906
+v -49.989098 -9.591740 3.042043
+v -46.768303 -12.102240 3.042175
+v -42.922302 -14.489440 3.042301
+v -38.438805 -16.731840 3.042419
+v -57.463104 1.103594 1.773911
+v -56.579300 -1.793106 1.774063
+v -55.092804 -4.622208 1.774212
+v -52.992599 -7.372007 1.774356
+v -50.267700 -10.030807 1.774496
+v -46.907104 -12.586906 1.774631
+v -42.899704 -15.028707 1.774759
+v -38.234604 -17.344606 1.774881
+v -57.690102 1.047100 -0.000698
+v -56.790504 -1.890800 -0.000544
+v -55.278198 -4.749401 -0.000393
+v -53.142700 -7.520901 -0.000247
+v -50.373398 -10.197401 -0.000106
+v -46.959801 -12.770801 0.000029
+v -42.891205 -15.233400 0.000159
+v -38.157104 -17.577000 0.000283
+v -57.463104 1.103407 -1.775309
+v -56.579300 -1.793293 -1.775157
+v -55.092804 -4.622395 -1.775008
+v -52.992599 -7.372194 -1.774864
+v -50.267700 -10.030994 -1.774724
+v -46.907104 -12.587093 -1.774589
+v -42.899704 -15.028893 -1.774461
+v -38.234604 -17.344793 -1.774339
+v -56.864601 1.252239 -3.042897
+v -56.022499 -1.536060 -3.042751
+v -54.604004 -4.287260 -3.042606
+v -52.596901 -6.979761 -3.042454
+v -49.989098 -9.592060 -3.042317
+v -46.768303 -12.102560 -3.042185
+v -42.922302 -14.489760 -3.042059
+v -38.438805 -16.732161 -3.041941
+v -56.018501 1.462599 -3.803448
+v -55.235298 -1.172399 -3.803310
+v -53.912903 -3.813400 -3.803171
+v -52.037498 -6.424900 -3.803033
+v -49.595200 -8.971401 -3.802900
+v -46.572098 -11.417400 -3.802771
+v -42.954102 -13.727501 -3.802649
+v -38.727501 -15.866000 -3.802537
+v -55.048500 1.703787 -4.056981
+v -54.332802 -0.755514 -4.056852
+v -53.120705 -3.270113 -4.056719
+v -51.396301 -5.788814 -4.056587
+v -49.143700 -8.259914 -4.056457
+v -46.347099 -10.632013 -4.056332
+v -42.990700 -12.853514 -4.056215
+v -39.058502 -14.873114 -4.056109
+v -54.078499 1.945000 -3.803474
+v -53.430405 -0.338501 -3.803354
+v -52.328499 -2.726900 -3.803228
+v -50.755005 -5.152700 -3.803100
+v -48.692101 -7.548401 -3.802974
+v -46.122101 -9.846600 -3.802854
+v -43.027199 -11.979601 -3.802741
+v -39.389503 -13.880200 -3.802641
+v -53.232300 2.155440 -3.042945
+v -52.643204 0.025240 -3.042833
+v -51.637398 -2.252960 -3.042713
+v -50.195602 -4.597761 -3.042580
+v -48.298203 -6.927660 -3.042457
+v -45.925903 -9.161360 -3.042340
+v -43.058998 -11.217260 -3.042231
+v -39.678200 -13.013961 -3.042137
+v -52.633804 2.304306 -1.775373
+v -52.086304 0.282606 -1.775266
+v -51.148598 -1.917694 -1.775151
+v -49.799904 -4.205194 -1.775030
+v -48.019600 -6.488594 -1.774910
+v -45.787102 -8.676693 -1.774795
+v -43.081604 -10.677994 -1.774690
+v -39.882401 -12.401194 -1.774599
+v 26.742798 -2.704201 -0.000501
+v 26.742798 -3.342995 3.903665
+v 31.995298 -2.734499 3.799422
+v 31.879999 -2.170700 -0.000529
+v 35.571999 -1.191915 3.524601
+v 35.390495 -0.718300 -0.000605
+v 37.890800 1.055865 3.136063
+v 37.675598 1.431299 -0.000718
+v 39.369301 3.780442 2.690650
+v 39.136902 4.056301 -0.000857
+v 40.425201 6.753017 2.245223
+v 40.175598 6.934700 -0.001008
+v 41.476402 9.745096 1.856636
+v 41.193199 9.844898 -0.001162
+v 42.940498 12.527984 1.581750
+v 42.590996 12.564899 -0.001305
+v 45.235298 14.872976 1.477416
+v 44.770500 14.872898 -0.001426
+v 26.742798 -5.027648 6.692423
+v 32.299202 -4.221056 6.513731
+v 36.050697 -2.441083 6.042657
+v 38.458000 0.065783 5.376655
+v 39.981895 3.053042 4.613178
+v 41.083298 6.273903 3.849689
+v 42.223099 9.481968 3.183640
+v 43.861900 12.430544 2.712505
+v 46.460602 14.873032 2.533726
+v 26.742798 -7.409560 8.365748
+v 32.728897 -6.322972 8.142382
+v 36.727402 -4.207202 7.553540
+v 39.259895 -1.334047 6.721049
+v 40.848099 2.024504 5.766722
+v 42.013802 5.596353 4.812385
+v 43.278702 9.109810 3.979859
+v 45.164497 12.292678 3.390962
+v 48.193001 14.873065 3.167516
+v 26.742798 -10.140131 8.923632
+v 33.221497 -8.732644 8.685358
+v 37.503098 -6.231777 8.057246
+v 40.179100 -2.938822 7.169243
+v 41.840996 0.845424 6.151284
+v 43.080399 4.819671 5.133315
+v 44.488899 8.683123 4.245282
+v 46.657799 12.134590 3.617120
+v 50.178902 14.873075 3.378776
+v 26.742798 -12.870761 8.366035
+v 33.714096 -11.142272 8.142635
+v 38.278801 -8.256503 7.553753
+v 41.098297 -4.543647 6.721218
+v 42.834000 -0.333696 5.766846
+v 44.147102 4.042951 4.812466
+v 45.698997 8.256508 3.979904
+v 48.151100 11.976577 3.390979
+v 52.164696 14.873065 3.167516
+v 26.742798 -15.252849 6.692961
+v 34.143799 -13.244358 6.514205
+v 38.955498 -10.022782 6.043056
+v 41.900200 -5.943618 5.376971
+v 43.700096 -1.362358 4.613410
+v 45.077499 3.365403 3.849842
+v 46.754601 7.884265 3.183724
+v 49.453697 11.838644 2.712536
+v 53.897102 14.873032 2.533726
+v 26.742798 -16.937794 3.904390
+v 34.447701 -14.731300 3.800053
+v 39.434196 -11.272116 3.525131
+v 42.467400 -6.933936 3.136483
+v 44.312798 -2.090059 2.690958
+v 45.735703 2.886118 2.245427
+v 47.501297 7.620898 1.856748
+v 50.375099 11.741084 1.581791
+v 55.122398 14.872976 1.477416
+v 26.742798 -17.577000 0.000283
+v 34.562996 -15.295401 0.000162
+v 39.615700 -11.746201 -0.000025
+v 42.682602 -7.309700 -0.000258
+v 44.545197 -2.366100 -0.000519
+v 45.985298 2.704201 -0.000786
+v 47.784599 7.521000 -0.001039
+v 50.724602 11.703999 -0.001259
+v 55.587196 14.872898 -0.001426
+v 26.742798 -16.938206 -3.903890
+v 34.447701 -14.731701 -3.799787
+v 39.434196 -11.272486 -3.525229
+v 42.467400 -6.934266 -3.137037
+v 44.312798 -2.090342 -2.692022
+v 45.735703 2.885881 -2.247013
+v 47.501297 7.620702 -1.858832
+v 50.375099 11.740918 -1.584309
+v 55.122398 14.872820 -1.480264
+v 26.742798 -15.253552 -6.692639
+v 34.143799 -13.245043 -6.514105
+v 38.955498 -10.023417 -6.043284
+v 41.900200 -5.944184 -5.377629
+v 43.700096 -1.362843 -4.614550
+v 45.077499 3.364997 -3.851478
+v 46.754601 7.883931 -3.185846
+v 49.453697 11.838358 -2.715064
+v 53.897102 14.872765 -2.536584
+v 26.742798 -12.871640 -8.365974
+v 33.714096 -11.143128 -8.142745
+v 38.278801 -8.257298 -7.554177
+v 41.098297 -4.544354 -6.722023
+v 42.834000 -0.334303 -5.768104
+v 44.147102 4.042445 -4.814184
+v 45.698997 8.256088 -3.982056
+v 48.151100 11.976220 -3.393521
+v 52.164696 14.872731 -3.170364
+v 26.742798 -10.141069 -8.923848
+v 33.221497 -8.733558 -8.685721
+v 37.503098 -6.232625 -8.057874
+v 40.179100 -2.939577 -7.170217
+v 41.840996 0.844777 -6.152656
+v 43.080399 4.819131 -5.135115
+v 44.488899 8.682676 -4.247478
+v 46.657799 12.134209 -3.619690
+v 50.178902 14.872721 -3.381634
+v 26.742798 -7.410440 -8.366261
+v 32.728897 -6.323829 -8.142999
+v 36.727402 -4.207997 -7.554390
+v 39.259895 -1.334754 -6.722191
+v 40.848099 2.023897 -5.768228
+v 42.013802 5.595847 -4.814266
+v 43.278702 9.109390 -3.982101
+v 45.164497 12.292321 -3.393538
+v 48.193001 14.872731 -3.170364
+v 26.742798 -5.028352 -6.693187
+v 32.299202 -4.221742 -6.514579
+v 36.050697 -2.441718 -6.043683
+v 38.458000 0.065217 -5.377945
+v 39.981895 3.052557 -4.614782
+v 41.083298 6.273498 -3.851631
+v 42.223099 9.481632 -3.185930
+v 43.861900 12.430258 -2.715095
+v 46.460602 14.872765 -2.536584
+v 26.742798 -3.343406 -3.904605
+v 31.995298 -2.734899 -3.800428
+v 35.571999 -1.192286 -3.525759
+v 37.890800 1.055535 -3.137457
+v 39.369301 3.780159 -2.692330
+v 40.425201 6.752781 -2.247217
+v 41.476402 9.744902 -1.858944
+v 42.940498 12.527818 -1.584350
+v 45.235298 14.872820 -1.480264
+v 45.930199 15.321976 1.451973
+v 45.439499 15.316601 -0.001450
+v 46.563995 15.643772 1.384946
+v 46.066299 15.633499 -0.001466
+v 47.097496 15.837668 1.290195
+v 46.608498 15.823601 -0.001476
+v 47.491196 15.903363 1.181592
+v 47.024002 15.887001 -0.001480
+v 47.705902 15.840255 1.072995
+v 47.270500 15.823601 -0.001476
+v 47.702400 15.647852 0.978263
+v 47.305702 15.633499 -0.001466
+v 47.441200 15.325548 0.911270
+v 47.087402 15.316601 -0.001450
+v 46.883202 14.872945 0.885877
+v 46.573296 14.872898 -0.001426
+v 47.223900 15.336232 2.490132
+v 47.876297 15.670726 2.375234
+v 48.386497 15.874815 2.212814
+v 48.722900 15.946507 2.026640
+v 48.853996 15.883997 1.840463
+v 48.748199 15.685487 1.678074
+v 48.374100 15.349180 1.563211
+v 47.699997 14.872978 1.519666
+v 49.052795 15.356163 3.113021
+v 49.731598 15.708855 2.969412
+v 50.209000 15.927144 2.766391
+v 50.464302 16.007435 2.533666
+v 50.477097 15.945922 2.300950
+v 50.226799 15.738811 2.097951
+v 49.692902 15.382504 1.954379
+v 48.854996 14.872998 1.899936
+v 51.149399 15.379176 3.320650
+v 51.858398 15.752467 3.167470
+v 52.298096 15.987155 2.950908
+v 52.460495 16.077242 2.702673
+v 52.337700 16.016830 2.454446
+v 51.921799 15.799919 2.237907
+v 51.204796 15.420611 2.084768
+v 50.178902 14.873005 2.026696
+v 53.245895 15.402065 3.113019
+v 53.985199 15.796055 2.969408
+v 54.387199 16.047146 2.766384
+v 54.456696 16.147034 2.533659
+v 54.198296 16.087721 2.300942
+v 53.616798 15.861012 2.097944
+v 52.716698 15.458801 1.954376
+v 51.502800 14.872998 1.899936
+v 55.074898 15.421929 2.490127
+v 55.840500 15.834125 2.375226
+v 56.209702 16.099417 2.212802
+v 56.198097 16.207905 2.026626
+v 55.821396 16.149595 1.840449
+v 55.095299 15.914289 1.678061
+v 54.035500 15.492083 1.563204
+v 52.657700 14.872978 1.519666
+v 56.368500 15.436077 1.451967
+v 57.152802 15.860973 1.384934
+v 57.498695 16.136368 1.290180
+v 57.429802 16.250963 1.181574
+v 56.969498 16.193256 1.072977
+v 56.141197 15.951952 0.978247
+v 54.968399 15.515646 0.911260
+v 53.474602 14.872945 0.885877
+v 56.859200 15.441299 -0.001456
+v 57.650497 15.871101 -0.001479
+v 57.987701 16.150398 -0.001494
+v 57.896996 16.267200 -0.001500
+v 57.404900 16.209801 -0.001497
+v 56.537895 15.966198 -0.001484
+v 55.322197 15.524498 -0.001461
+v 53.784401 14.872898 -0.001426
+v 56.368500 15.435925 -1.454873
+v 57.152802 15.860828 -1.387886
+v 57.498695 16.136230 -1.293170
+v 57.429802 16.250837 -1.184566
+v 56.969498 16.193142 -1.075963
+v 56.141197 15.951849 -0.981215
+v 54.968399 15.515551 -0.914182
+v 53.474602 14.872851 -0.888730
+v 55.074898 15.421668 -2.493033
+v 55.840500 15.833875 -2.378185
+v 56.209702 16.099184 -2.215788
+v 56.198097 16.207691 -2.029614
+v 55.821396 16.149401 -1.843441
+v 55.095299 15.914111 -1.681018
+v 54.035500 15.491919 -1.566126
+v 52.657700 14.872818 -1.522514
+v 53.245895 15.401737 -3.115932
+v 53.985199 15.795742 -2.972362
+v 54.387199 16.046856 -2.769356
+v 54.456696 16.146767 -2.536651
+v 54.198296 16.087481 -2.303928
+v 53.616798 15.860790 -2.100906
+v 52.716698 15.458595 -1.957285
+v 51.502800 14.872798 -1.902794
+v 51.149399 15.378827 -3.323560
+v 51.858398 15.752133 -3.170410
+v 52.298096 15.986844 -2.953882
+v 52.460495 16.076956 -2.705657
+v 52.337700 16.016571 -2.457414
+v 51.921799 15.799683 -2.240863
+v 51.204796 15.420392 -2.087672
+v 50.178902 14.872791 -2.029554
+v 49.052795 15.355835 -3.115929
+v 49.731598 15.708542 -2.972358
+v 50.209000 15.926852 -2.769349
+v 50.464302 16.007168 -2.536644
+v 50.477097 15.945680 -2.303920
+v 50.226799 15.738590 -2.100899
+v 49.692902 15.382298 -1.957281
+v 48.854996 14.872798 -1.902794
+v 47.223900 15.335971 -2.493028
+v 47.876297 15.670476 -2.378176
+v 48.386497 15.874582 -2.215776
+v 48.722900 15.946293 -2.029600
+v 48.853996 15.883802 -1.843427
+v 48.748199 15.685309 -1.681006
+v 48.374100 15.349016 -1.566119
+v 47.699997 14.872818 -1.522514
+v 45.930199 15.321823 -1.454867
+v 46.563995 15.643627 -1.387874
+v 47.097496 15.837533 -1.293155
+v 47.491196 15.903239 -1.184548
+v 47.705902 15.840142 -1.075945
+v 47.702400 15.647749 -0.981199
+v 47.441200 15.325453 -0.914172
+v 46.883202 14.872851 -0.888730
+v -3.904401 28.393700 -0.002138
+v 0.160859 28.156145 0.845958
+v 0.243389 28.156101 -0.002126
+v 2.114109 27.506468 1.253442
+v 2.236299 27.506401 -0.002092
+v 2.493709 26.539968 1.332592
+v 2.623619 26.539898 -0.002041
+v 1.837989 25.351564 1.195675
+v 1.954619 25.351501 -0.001978
+v 0.685319 24.036449 0.954980
+v 0.778589 24.036400 -0.001909
+v -0.425961 22.689636 0.722770
+v -0.355191 22.689598 -0.001838
+v -0.957511 21.406233 0.611325
+v -0.897431 21.406200 -0.001770
+v -0.370961 20.281239 0.732920
+v -0.298851 20.281200 -0.001711
+v -0.076611 28.156187 1.630247
+v 1.762539 27.506529 2.414552
+v 2.119929 26.540033 2.566892
+v 1.502449 25.351624 2.303395
+v 0.416999 24.036497 1.840174
+v -0.629541 22.689671 1.393365
+v -1.130261 21.406263 1.179093
+v -0.578281 20.281275 1.413472
+v -0.453821 28.156223 2.335557
+v 1.204069 27.506582 3.458742
+v 1.526189 26.540091 3.676932
+v 0.969479 25.351675 3.299665
+v -0.009161 24.036539 2.636454
+v -0.952781 22.689703 1.996825
+v -1.404461 21.406290 1.690302
+v -0.907291 20.281307 2.026412
+v -0.955591 28.156256 2.946687
+v 0.461199 27.506630 4.363512
+v 0.736439 26.540142 4.638793
+v 0.260579 25.351721 4.162995
+v -0.575911 24.036575 3.326584
+v -1.382561 22.689732 2.520005
+v -1.768891 21.406313 2.133733
+v -1.344461 20.281336 2.558232
+v -1.566721 28.156282 3.448457
+v -0.443571 27.506670 5.106382
+v -0.225431 26.540184 5.428553
+v -0.602761 25.351757 4.871895
+v -1.266041 24.036604 3.893334
+v -1.905741 22.689753 2.949785
+v -2.212331 21.406332 2.498163
+v -1.876281 20.281359 2.995402
+v -2.272021 28.156303 3.825668
+v -1.487761 27.506699 5.664852
+v -1.335471 26.540215 6.022283
+v -1.599031 25.351786 5.404865
+v -2.062321 24.036627 4.319484
+v -2.509191 22.689770 3.273025
+v -2.723541 21.406347 2.772372
+v -2.489221 20.281376 3.324412
+v -3.056316 28.156315 4.063138
+v -2.648861 27.506718 6.016422
+v -2.569771 26.540234 6.396072
+v -2.706741 25.351803 5.740415
+v -2.947512 24.036642 4.587814
+v -3.179793 22.689781 3.476595
+v -3.291306 21.406355 2.945122
+v -3.169770 20.281385 3.531732
+v -3.904401 28.156319 4.145668
+v -3.904401 27.506723 6.138612
+v -3.904401 26.540241 6.525982
+v -3.904401 25.351810 5.857045
+v -3.904401 24.036646 4.681084
+v -3.904401 22.689785 3.547375
+v -3.904401 21.406359 3.005203
+v -3.904401 20.281389 3.603842
+v -4.752486 28.156315 4.063138
+v -5.159941 27.506718 6.016422
+v -5.239031 26.540234 6.396072
+v -5.102061 25.351803 5.740415
+v -4.861290 24.036642 4.587814
+v -4.629009 22.689781 3.476595
+v -4.517496 21.406355 2.945122
+v -4.639032 20.281385 3.531732
+v -5.536781 28.156303 3.825668
+v -6.321041 27.506699 5.664852
+v -6.473331 26.540215 6.022283
+v -6.209771 25.351786 5.404865
+v -5.746481 24.036627 4.319484
+v -5.299611 22.689770 3.273025
+v -5.085261 21.406347 2.772372
+v -5.319581 20.281376 3.324412
+v -6.242081 28.156282 3.448457
+v -7.365232 27.506670 5.106382
+v -7.583371 26.540184 5.428553
+v -7.206041 25.351757 4.871895
+v -6.542761 24.036604 3.893334
+v -5.903061 22.689753 2.949785
+v -5.596471 21.406332 2.498163
+v -5.932521 20.281359 2.995402
+v -6.853211 28.156256 2.946687
+v -8.270001 27.506630 4.363512
+v -8.545241 26.540142 4.638793
+v -8.069382 25.351721 4.162995
+v -7.232891 24.036575 3.326584
+v -6.426241 22.689732 2.520005
+v -6.039911 21.406313 2.133733
+v -6.464341 20.281336 2.558232
+v -7.354981 28.156223 2.335557
+v -9.012871 27.506582 3.458742
+v -9.334991 26.540091 3.676932
+v -8.778281 25.351675 3.299665
+v -7.799641 24.036539 2.636454
+v -6.856021 22.689703 1.996825
+v -6.404341 21.406290 1.690302
+v -6.901511 20.281307 2.026412
+v -7.732191 28.156187 1.630247
+v -9.571341 27.506529 2.414552
+v -9.928732 26.540033 2.566892
+v -9.311251 25.351624 2.303395
+v -8.225801 24.036497 1.840174
+v -7.179261 22.689671 1.393365
+v -6.678541 21.406263 1.179093
+v -7.230521 20.281275 1.413472
+v -7.969661 28.156145 0.845958
+v -9.922911 27.506468 1.253442
+v -10.302511 26.539968 1.332592
+v -9.646791 25.351564 1.195675
+v -8.494122 24.036449 0.954980
+v -7.382841 22.689636 0.722770
+v -6.851291 21.406233 0.611325
+v -7.437841 20.281239 0.732920
+v -8.052191 28.156101 -0.002126
+v -10.045101 27.506401 -0.002092
+v -10.432421 26.539898 -0.002041
+v -9.763421 25.351501 -0.001978
+v -8.587391 24.036400 -0.001909
+v -7.453611 22.689598 -0.001838
+v -6.911371 21.406200 -0.001770
+v -7.509951 20.281200 -0.001711
+v -7.969661 28.156057 -0.850211
+v -9.922911 27.506334 -1.257628
+v -10.302511 26.539827 -1.336677
+v -9.646791 25.351439 -1.199635
+v -8.494122 24.036350 -0.958798
+v -7.382841 22.689560 -0.726446
+v -6.851291 21.406168 -0.614865
+v -7.437841 20.281162 -0.736342
+v -7.732191 28.156015 -1.634503
+v -9.571341 27.506273 -2.418738
+v -9.928732 26.539762 -2.570978
+v -9.311251 25.351379 -2.307345
+v -8.225801 24.036303 -1.843996
+v -7.179261 22.689526 -1.397045
+v -6.678541 21.406137 -1.182627
+v -7.230521 20.281126 -1.416888
+v -7.354981 28.155979 -2.339813
+v -9.012871 27.506220 -3.462918
+v -9.334991 26.539705 -3.681018
+v -8.778281 25.351328 -3.303615
+v -7.799641 24.036261 -2.640266
+v -6.856021 22.689493 -2.000495
+v -6.404341 21.406111 -1.693847
+v -6.901511 20.281094 -2.029838
+v -6.853211 28.155947 -2.950943
+v -8.270001 27.506172 -4.367698
+v -8.545241 26.539654 -4.642878
+v -8.069382 25.351282 -4.166955
+v -7.232891 24.036224 -3.330396
+v -6.426241 22.689465 -2.523685
+v -6.039911 21.406088 -2.137277
+v -6.464341 20.281065 -2.561648
+v -6.242081 28.155920 -3.452713
+v -7.365232 27.506132 -5.110558
+v -7.583371 26.539612 -5.432638
+v -7.206041 25.351246 -4.875855
+v -6.542761 24.036196 -3.897156
+v -5.903061 22.689444 -2.953455
+v -5.596471 21.406069 -2.501708
+v -5.932521 20.281042 -2.998828
+v -5.536781 28.155899 -3.829922
+v -6.321041 27.506104 -5.669028
+v -6.473331 26.539581 -6.026368
+v -6.209771 25.351217 -5.408825
+v -5.746481 24.036173 -4.323306
+v -5.299611 22.689426 -3.276705
+v -5.085261 21.406054 -2.775908
+v -5.319581 20.281025 -3.327828
+v -4.752486 28.155888 -4.067382
+v -5.159941 27.506084 -6.020608
+v -5.239031 26.539562 -6.400147
+v -5.102061 25.351200 -5.744375
+v -4.861290 24.036158 -4.591626
+v -4.629009 22.689415 -3.480275
+v -4.517496 21.406046 -2.948668
+v -4.639032 20.281015 -3.535148
+v -3.904401 28.155884 -4.149922
+v -3.904401 27.506079 -6.142798
+v -3.904401 26.539555 -6.530057
+v -3.904401 25.351192 -5.860995
+v -3.904401 24.036154 -4.684896
+v -3.904401 22.689411 -3.551055
+v -3.904401 21.406042 -3.008748
+v -3.904401 20.281012 -3.607258
+v -3.056316 28.155888 -4.067382
+v -2.648861 27.506084 -6.020608
+v -2.569771 26.539562 -6.400147
+v -2.706741 25.351200 -5.744375
+v -2.947512 24.036158 -4.591626
+v -3.179793 22.689415 -3.480275
+v -3.291306 21.406046 -2.948668
+v -3.169770 20.281015 -3.535148
+v -2.272021 28.155899 -3.829922
+v -1.487761 27.506104 -5.669028
+v -1.335471 26.539581 -6.026368
+v -1.599031 25.351217 -5.408825
+v -2.062321 24.036173 -4.323306
+v -2.509191 22.689426 -3.276705
+v -2.723541 21.406054 -2.775908
+v -2.489221 20.281025 -3.327828
+v -1.566721 28.155920 -3.452713
+v -0.443571 27.506132 -5.110558
+v -0.225431 26.539612 -5.432638
+v -0.602761 25.351246 -4.875855
+v -1.266041 24.036196 -3.897156
+v -1.905741 22.689444 -2.953455
+v -2.212331 21.406069 -2.501708
+v -1.876281 20.281042 -2.998828
+v -0.955591 28.155947 -2.950943
+v 0.461199 27.506172 -4.367698
+v 0.736439 26.539654 -4.642878
+v 0.260579 25.351282 -4.166955
+v -0.575911 24.036224 -3.330396
+v -1.382561 22.689465 -2.523685
+v -1.768891 21.406088 -2.137277
+v -1.344461 20.281065 -2.561648
+v -0.453821 28.155979 -2.339813
+v 1.204069 27.506220 -3.462918
+v 1.526189 26.539705 -3.681018
+v 0.969479 25.351328 -3.303615
+v -0.009161 24.036261 -2.640266
+v -0.952781 22.689493 -2.000495
+v -1.404461 21.406111 -1.693847
+v -0.907291 20.281094 -2.029838
+v -0.076611 28.156015 -1.634503
+v 1.762539 27.506273 -2.418738
+v 2.119929 26.539762 -2.570978
+v 1.502449 25.351379 -2.307345
+v 0.416999 24.036303 -1.843996
+v -0.629541 22.689526 -1.397045
+v -1.130261 21.406137 -1.182627
+v -0.578281 20.281126 -1.416888
+v 0.160859 28.156057 -0.850211
+v 2.114109 27.506334 -1.257628
+v 2.493709 26.539827 -1.336677
+v 1.837989 25.351439 -1.199635
+v 0.685319 24.036350 -0.958798
+v -0.425961 22.689560 -0.726446
+v -0.957511 21.406168 -0.614865
+v -0.370961 20.281162 -0.736342
+v 1.478579 19.383459 1.117499
+v 1.588429 19.383400 -0.001664
+v 4.156259 18.675686 1.674246
+v 4.320759 18.675598 -0.001627
+v 7.330799 18.094822 2.334297
+v 7.560099 18.094700 -0.001596
+v 10.670999 17.577259 3.028784
+v 10.968499 17.577099 -0.001569
+v 13.845598 17.059696 3.688831
+v 14.207899 17.059502 -0.001542
+v 16.523298 16.478724 4.245572
+v 16.940199 16.478500 -0.001511
+v 18.372799 15.771045 4.630149
+v 18.827499 15.770802 -0.001474
+v 19.062998 14.873149 4.773676
+v 19.531698 14.872898 -0.001426
+v 1.162739 19.383512 2.154269
+v 3.683309 18.675768 3.226746
+v 6.671598 18.094936 4.498227
+v 9.815799 17.577406 5.836044
+v 12.804199 17.059875 7.107521
+v 15.324699 16.478931 8.179992
+v 17.065800 15.771271 8.920789
+v 17.715399 14.873382 9.197237
+v 0.661519 19.383562 3.088049
+v 2.932769 18.675842 4.625026
+v 5.625489 18.095039 6.447197
+v 8.458699 17.577539 8.364433
+v 11.151399 17.060038 10.186562
+v 13.422699 16.479116 11.723592
+v 14.991499 15.771474 12.785229
+v 15.576799 14.873591 13.181376
+v -0.004491 19.383606 3.898249
+v 1.935469 18.675905 5.838236
+v 4.235409 18.095127 8.138217
+v 6.655398 17.577654 10.558233
+v 8.955298 17.060179 12.858161
+v 10.895299 16.479279 14.798192
+v 12.235199 15.771650 16.138128
+v 12.735199 14.873774 16.638176
+v -0.814681 19.383640 4.564249
+v 0.722249 18.675959 6.835536
+v 2.544399 18.095201 9.528287
+v 4.461609 17.577749 12.361533
+v 6.283699 17.060293 15.054261
+v 7.820699 16.479412 17.325592
+v 8.882298 15.771795 18.894428
+v 9.278399 14.873923 19.479776
+v -1.748461 19.383667 5.065469
+v -0.676021 18.675997 7.586086
+v 0.595429 18.095257 10.574407
+v 1.933209 17.577820 13.718634
+v 3.204659 17.060381 16.707062
+v 4.277099 16.479511 19.227592
+v 5.017859 15.771905 20.968630
+v 5.294259 14.874036 21.618376
+v -2.785241 19.383682 5.381309
+v -2.228521 18.676022 8.059036
+v -1.568501 18.095291 11.233606
+v -0.874051 17.577866 14.573833
+v -0.214031 17.060436 17.748463
+v 0.342689 16.479574 20.426193
+v 0.727219 15.771974 22.275728
+v 0.870699 14.874106 22.965977
+v -3.904401 19.383688 5.491169
+v -3.904401 18.676031 8.223536
+v -3.904401 18.095303 11.462907
+v -3.904401 17.577881 14.871333
+v -3.904401 17.060455 18.110762
+v -3.904401 16.479597 20.843092
+v -3.904401 15.771997 22.730429
+v -3.904401 14.874131 23.434677
+v -5.023561 19.383682 5.381309
+v -5.580281 18.676022 8.059036
+v -6.240301 18.095291 11.233606
+v -6.934752 17.577866 14.573833
+v -7.594771 17.060436 17.748463
+v -8.151491 16.479574 20.426193
+v -8.536021 15.771974 22.275728
+v -8.679501 14.874106 22.965977
+v -6.060341 19.383667 5.065469
+v -7.132781 18.675997 7.586086
+v -8.404231 18.095257 10.574407
+v -9.742011 17.577820 13.718634
+v -11.013461 17.060381 16.707062
+v -12.085901 16.479511 19.227592
+v -12.826661 15.771905 20.968630
+v -13.103062 14.874036 21.618376
+v -6.994122 19.383640 4.564249
+v -8.531052 18.675959 6.835536
+v -10.353201 18.095201 9.528287
+v -12.270411 17.577749 12.361533
+v -14.092502 17.060293 15.054261
+v -15.629501 16.479412 17.325592
+v -16.691101 15.771795 18.894428
+v -17.087200 14.873923 19.479776
+v -7.804311 19.383606 3.898249
+v -9.744271 18.675905 5.838236
+v -12.044211 18.095127 8.138217
+v -14.464201 17.577654 10.558233
+v -16.764101 17.060179 12.858161
+v -18.704102 16.479279 14.798192
+v -20.044001 15.771650 16.138128
+v -20.544001 14.873774 16.638176
+v -8.470322 19.383562 3.088049
+v -10.741571 18.675842 4.625026
+v -13.434291 18.095039 6.447197
+v -16.267502 17.577539 8.364433
+v -18.960201 17.060038 10.186562
+v -21.231501 16.479116 11.723592
+v -22.800301 15.771474 12.785229
+v -23.385601 14.873591 13.181376
+v -8.971541 19.383512 2.154269
+v -11.492111 18.675768 3.226746
+v -14.480401 18.094936 4.498227
+v -17.624601 17.577406 5.836044
+v -20.613001 17.059875 7.107521
+v -23.133501 16.478931 8.179992
+v -24.874601 15.771271 8.920789
+v -25.524200 14.873382 9.197237
+v -9.287381 19.383459 1.117499
+v -11.965061 18.675686 1.674246
+v -15.139601 18.094822 2.334297
+v -18.479801 17.577259 3.028784
+v -21.654402 17.059696 3.688831
+v -24.332102 16.478724 4.245572
+v -26.181601 15.771045 4.630149
+v -26.871801 14.873149 4.773676
+v -9.397231 19.383400 -0.001664
+v -12.129561 18.675598 -0.001627
+v -15.368901 18.094700 -0.001596
+v -18.777302 17.577099 -0.001569
+v -22.016701 17.059502 -0.001542
+v -24.749001 16.478500 -0.001511
+v -26.636301 15.770802 -0.001474
+v -27.340502 14.872898 -0.001426
+v -9.287381 19.383341 -1.120831
+v -11.965061 18.675510 -1.677504
+v -15.139601 18.094578 -2.337493
+v -18.479801 17.576939 -3.031926
+v -21.654402 17.059307 -3.691919
+v -24.332102 16.478277 -4.248598
+v -26.181601 15.770558 -4.633091
+v -26.871801 14.872647 -4.776524
+v -8.971541 19.383287 -2.157601
+v -11.492111 18.675428 -3.230004
+v -14.480401 18.094463 -4.501423
+v -17.624601 17.576792 -5.839176
+v -20.613001 17.059128 -7.110599
+v -23.133501 16.478069 -8.183008
+v -24.874601 15.770332 -8.923731
+v -25.524200 14.872415 -9.200084
+v -8.470322 19.383238 -3.091381
+v -10.741571 18.675354 -4.628284
+v -13.434291 18.094360 -6.450393
+v -16.267502 17.576658 -8.367577
+v -18.960201 17.058966 -10.189639
+v -21.231501 16.477884 -11.726608
+v -22.800301 15.770129 -12.788171
+v -23.385601 14.872205 -13.184223
+v -7.804311 19.383194 -3.901571
+v -9.744271 18.675291 -5.841494
+v -12.044211 18.094273 -8.141413
+v -14.464201 17.576544 -10.561366
+v -16.764101 17.058825 -12.861238
+v -18.704102 16.477722 -14.801208
+v -20.044001 15.769953 -16.141071
+v -20.544001 14.872023 -16.641024
+v -6.994122 19.383160 -4.567581
+v -8.531052 18.675238 -6.838794
+v -10.353201 18.094198 -9.531484
+v -12.270411 17.576448 -12.364667
+v -14.092502 17.058710 -15.057339
+v -15.629501 16.477589 -17.328608
+v -16.691101 15.769808 -18.897371
+v -17.087200 14.871873 -19.482624
+v -6.060341 19.383133 -5.068801
+v -7.132781 18.675200 -7.589344
+v -8.404231 18.094143 -10.577593
+v -9.742011 17.576378 -13.721867
+v -11.013461 17.058622 -16.710138
+v -12.085901 16.477489 -19.230608
+v -12.826661 15.769698 -20.971672
+v -13.103062 14.871760 -21.621223
+v -5.023561 19.383118 -5.384641
+v -5.580281 18.675175 -8.062284
+v -6.240301 18.094109 -11.236794
+v -6.934752 17.576332 -14.576966
+v -7.594771 17.058567 -17.751537
+v -8.151491 16.477427 -20.429207
+v -8.536021 15.769629 -22.278671
+v -8.679501 14.871690 -22.968822
+v -3.904401 19.383112 -5.494491
+v -3.904401 18.675165 -8.226793
+v -3.904401 18.094097 -11.466093
+v -3.904401 17.576317 -14.874467
+v -3.904401 17.058548 -18.113838
+v -3.904401 16.477404 -20.846107
+v -3.904401 15.769606 -22.733372
+v -3.904401 14.871665 -23.437523
+v -2.785241 19.383118 -5.384641
+v -2.228521 18.675175 -8.062284
+v -1.568501 18.094109 -11.236794
+v -0.874051 17.576332 -14.576966
+v -0.214031 17.058567 -17.751537
+v 0.342689 16.477427 -20.429207
+v 0.727219 15.769629 -22.278671
+v 0.870699 14.871690 -22.968822
+v -1.748461 19.383133 -5.068801
+v -0.676021 18.675200 -7.589344
+v 0.595429 18.094143 -10.577593
+v 1.933209 17.576378 -13.721867
+v 3.204659 17.058622 -16.710138
+v 4.277099 16.477489 -19.230608
+v 5.017859 15.769698 -20.971672
+v 5.294259 14.871760 -21.621223
+v -0.814681 19.383160 -4.567581
+v 0.722249 18.675238 -6.838794
+v 2.544399 18.094198 -9.531484
+v 4.461609 17.576448 -12.364667
+v 6.283699 17.058710 -15.057339
+v 7.820699 16.477589 -17.328608
+v 8.882298 15.769808 -18.897371
+v 9.278399 14.871873 -19.482624
+v -0.004491 19.383194 -3.901571
+v 1.935469 18.675291 -5.841494
+v 4.235409 18.094273 -8.141413
+v 6.655398 17.576544 -10.561366
+v 8.955298 17.058825 -12.861238
+v 10.895299 16.477722 -14.801208
+v 12.235199 15.769953 -16.141071
+v 12.735199 14.872023 -16.641024
+v 0.661519 19.383238 -3.091381
+v 2.932769 18.675354 -4.628284
+v 5.625489 18.094360 -6.450393
+v 8.458699 17.576658 -8.367577
+v 11.151399 17.058966 -10.189639
+v 13.422699 16.477884 -11.726608
+v 14.991499 15.770129 -12.788171
+v 15.576799 14.872205 -13.184223
+v 1.162739 19.383287 -2.157601
+v 3.683309 18.675428 -3.230004
+v 6.671598 18.094463 -4.501423
+v 9.815799 17.576792 -5.839176
+v 12.804199 17.059128 -7.110599
+v 15.324699 16.478069 -8.183008
+v 17.065800 15.770332 -8.923731
+v 17.715399 14.872415 -9.200084
+v 1.478579 19.383341 -1.120831
+v 4.156259 18.675510 -1.677504
+v 7.330799 18.094578 -2.337493
+v 10.670999 17.576939 -3.031926
+v 13.845598 17.059307 -3.691919
+v 16.523298 16.478277 -4.248598
+v 18.372799 15.770558 -4.633091
+v 19.062998 14.872647 -4.776524
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn 0.000000 0.000000 0.000000
+vn -0.935440 -0.352160 -0.030587
+vn -0.911208 -0.352493 -0.213189
+vn -0.953787 -0.231875 -0.191113
+vn -0.972794 -0.231669 -0.000943
+vn -0.972233 0.132720 -0.192738
+vn -0.991181 0.132508 0.001046
+vn -0.918700 0.364634 -0.151763
+vn -0.930763 0.364353 0.030438
+vn -0.851604 -0.352981 -0.387524
+vn -0.897718 -0.232198 -0.374416
+vn -0.915537 0.132883 -0.379650
+vn -0.870845 0.365184 -0.329044
+vn -0.759771 -0.353314 -0.545818
+vn -0.807471 -0.232487 -0.542162
+vn -0.823973 0.132953 -0.550811
+vn -0.789755 0.365578 -0.492585
+vn -0.639610 -0.353415 -0.682640
+vn -0.687043 -0.232591 -0.688384
+vn -0.701570 0.132965 -0.700085
+vn -0.679177 0.365729 -0.636365
+vn -0.495091 -0.353231 -0.793796
+vn -0.540580 -0.232530 -0.808519
+vn -0.552571 0.132875 -0.822806
+vn -0.543047 0.365649 -0.755911
+vn -0.330713 -0.352849 -0.875287
+vn -0.372641 -0.232273 -0.898436
+vn -0.381612 0.132740 -0.914742
+vn -0.385570 0.365323 -0.847275
+vn -0.152518 -0.352382 -0.923345
+vn -0.189228 -0.231981 -0.954137
+vn -0.194821 0.132549 -0.971841
+vn -0.212112 0.364836 -0.906589
+vn 0.026159 -0.356917 -0.933770
+vn -0.001514 -0.234830 -0.972035
+vn -0.002471 0.129038 -0.991637
+vn -0.031107 0.364455 -0.930701
+vn 0.200127 -0.393641 -0.897216
+vn 0.182237 -0.268527 -0.945877
+vn 0.189931 0.090060 -0.977658
+vn 0.151366 0.338314 -0.928780
+vn 0.365325 -0.445736 -0.817225
+vn 0.358027 -0.328907 -0.873863
+vn 0.380490 0.016138 -0.924644
+vn 0.338851 0.265113 -0.902715
+vn 0.516345 -0.479717 -0.709408
+vn 0.518720 -0.375917 -0.767864
+vn 0.557766 -0.044391 -0.828810
+vn 0.520444 0.189795 -0.832536
+vn 0.651932 -0.481944 -0.585418
+vn 0.661827 -0.387887 -0.641504
+vn 0.712330 -0.060029 -0.699273
+vn 0.679495 0.155426 -0.717028
+vn 0.770333 -0.453691 -0.448052
+vn 0.786513 -0.362754 -0.499808
+vn 0.838345 -0.027020 -0.544469
+vn 0.804596 0.177773 -0.566588
+vn 0.863585 -0.407618 -0.296762
+vn 0.886050 -0.312548 -0.342387
+vn 0.928274 0.035978 -0.370152
+vn 0.887373 0.241429 -0.392787
+vn 0.920215 -0.367320 -0.135209
+vn 0.949693 -0.261639 -0.172131
+vn 0.977902 0.096960 -0.185218
+vn 0.926608 0.312299 -0.209445
+vn 0.935320 -0.352105 0.034613
+vn 0.971843 -0.235555 0.005941
+vn 0.991816 0.127658 0.002299
+vn 0.934615 0.354547 -0.028136
+vn 0.911207 -0.352473 0.213226
+vn 0.953787 -0.231854 0.191138
+vn 0.972233 0.132742 0.192724
+vn 0.918704 0.364641 0.151725
+vn 0.851605 -0.352939 0.387561
+vn 0.897718 -0.232160 0.374439
+vn 0.915537 0.132926 0.379636
+vn 0.870843 0.365224 0.329005
+vn 0.759772 -0.353256 0.545855
+vn 0.807471 -0.232429 0.542187
+vn 0.823973 0.133010 0.550796
+vn 0.789752 0.365633 0.492548
+vn 0.639610 -0.353342 0.682677
+vn 0.687043 -0.232518 0.688409
+vn 0.701570 0.133038 0.700071
+vn 0.679177 0.365799 0.636325
+vn 0.495092 -0.353150 0.793832
+vn 0.540580 -0.232443 0.808544
+vn 0.552572 0.132959 0.822792
+vn 0.543049 0.365728 0.755871
+vn 0.330714 -0.352757 0.875323
+vn 0.372642 -0.232179 0.898460
+vn 0.381611 0.132835 0.914728
+vn 0.385571 0.365403 0.847240
+vn 0.152518 -0.352282 0.923383
+vn 0.189233 -0.231852 0.954168
+vn 0.194828 0.132607 0.971832
+vn 0.212113 0.364932 0.906550
+vn -0.030606 -0.352104 0.935460
+vn -0.000955 -0.231616 0.972807
+vn 0.001053 0.132553 0.991175
+vn 0.030456 0.364395 0.930746
+vn -0.213208 -0.352432 0.911227
+vn -0.191125 -0.231815 0.953799
+vn -0.192731 0.132781 0.972226
+vn -0.151744 0.364680 0.918685
+vn -0.387543 -0.352913 0.851623
+vn -0.374427 -0.232131 0.897730
+vn -0.379644 0.132953 0.915529
+vn -0.329025 0.365254 0.870823
+vn -0.545837 -0.353245 0.759789
+vn -0.542175 -0.232415 0.807484
+vn -0.550803 0.133023 0.823966
+vn -0.492565 0.365647 0.789735
+vn -0.682658 -0.353345 0.639629
+vn -0.688396 -0.232517 0.687056
+vn -0.700079 0.133038 0.701563
+vn -0.636346 0.365799 0.679157
+vn -0.793815 -0.353163 0.495110
+vn -0.808531 -0.232459 0.540592
+vn -0.822799 0.132949 0.552564
+vn -0.755892 0.365716 0.543027
+vn -0.875306 -0.352783 0.330731
+vn -0.898448 -0.232209 0.372653
+vn -0.914735 0.132808 0.381604
+vn -0.847255 0.365390 0.385550
+vn -0.923363 -0.352325 0.152536
+vn -0.954156 -0.231891 0.189244
+vn -0.971839 0.132565 0.194820
+vn -0.906570 0.364895 0.212093
+vn -0.360406 0.928973 -0.084354
+vn -0.370286 0.928838 -0.012165
+vn -0.365347 0.928911 -0.060374
+vn -0.370288 0.928839 0.012067
+vn -0.336462 0.929161 -0.153147
+vn -0.345945 0.929102 -0.130734
+vn -0.299958 0.929286 -0.215529
+vn -0.313467 0.929247 -0.195544
+vn -0.252443 0.929325 -0.269493
+vn -0.269439 0.929327 -0.252496
+vn -0.195500 0.929240 -0.313518
+vn -0.215480 0.929281 -0.300008
+vn -0.130689 0.929088 -0.346000
+vn -0.153101 0.929149 -0.336516
+vn -0.060326 0.928894 -0.365399
+vn -0.084307 0.928957 -0.360459
+vn 0.011921 0.927971 -0.372462
+vn -0.012251 0.928816 -0.370337
+vn 0.088387 0.921444 -0.378324
+vn 0.061824 0.925443 -0.373808
+vn 0.171528 0.910579 -0.376063
+vn 0.142667 0.915384 -0.376455
+vn 0.252700 0.902184 -0.349581
+vn 0.227238 0.903908 -0.362372
+vn 0.316752 0.901840 -0.293859
+vn 0.301680 0.898263 -0.319552
+vn 0.354398 0.909314 -0.218060
+vn 0.351805 0.901984 -0.250314
+vn 0.368842 0.919351 -0.136932
+vn 0.374157 0.911970 -0.168280
+vn 0.371542 0.926475 -0.060001
+vn 0.377193 0.922034 -0.087054
+vn 0.370286 0.928834 0.012459
+vn 0.373422 0.927586 -0.011876
+vn 0.360408 0.928982 0.084257
+vn 0.365349 0.928917 0.060277
+vn 0.336463 0.929176 0.153051
+vn 0.345947 0.929115 0.130640
+vn 0.299962 0.929307 0.215434
+vn 0.313468 0.929267 0.195450
+vn 0.252450 0.929352 0.269394
+vn 0.269443 0.929353 0.252397
+vn 0.195501 0.929272 0.313423
+vn 0.215485 0.929311 0.299911
+vn 0.130684 0.929127 0.345898
+vn 0.153098 0.929186 0.336413
+vn 0.060325 0.928934 0.365299
+vn 0.084306 0.928998 0.360355
+vn -0.012116 0.928858 0.370237
+vn 0.012115 0.928859 0.370234
+vn -0.084305 0.928997 0.360358
+vn -0.060325 0.928934 0.365297
+vn -0.153099 0.929186 0.336414
+vn -0.130687 0.929127 0.345896
+vn -0.215482 0.929312 0.299911
+vn -0.195499 0.929274 0.313417
+vn -0.269444 0.929352 0.252398
+vn -0.252449 0.929354 0.269390
+vn -0.313469 0.929267 0.195450
+vn -0.299961 0.929308 0.215431
+vn -0.345947 0.929115 0.130638
+vn -0.336463 0.929176 0.153049
+vn -0.365349 0.928917 0.060277
+vn -0.360408 0.928982 0.084257
+vn 0.270142 0.960748 0.063137
+vn 0.277591 0.960657 0.009033
+vn 0.434329 0.896047 0.091972
+vn 0.444255 0.895885 0.005254
+vn 0.670868 0.728906 0.136502
+vn 0.684945 0.728590 0.002701
+vn 0.802176 0.574804 0.161596
+vn 0.818551 0.574432 0.001641
+vn 0.868410 0.464425 0.173703
+vn 0.885794 0.464079 0.000576
+vn 0.252126 0.960876 0.114672
+vn 0.407361 0.896319 0.175127
+vn 0.630586 0.729405 0.265198
+vn 0.754520 0.575408 0.315604
+vn 0.817201 0.465007 0.340517
+vn 0.224748 0.960956 0.161405
+vn 0.365087 0.896522 0.250918
+vn 0.566449 0.729807 0.382776
+vn 0.678279 0.575849 0.456437
+vn 0.734959 0.465464 0.493131
+vn 0.189167 0.960975 0.201849
+vn 0.309442 0.896582 0.316838
+vn 0.481382 0.729962 0.485209
+vn 0.576844 0.576024 0.579178
+vn 0.625362 0.465625 0.626191
+vn 0.146476 0.960940 0.234819
+vn 0.242203 0.896511 0.370953
+vn 0.378264 0.729816 0.569460
+vn 0.453680 0.575864 0.680113
+vn 0.492149 0.465490 0.735601
+vn 0.097943 0.960838 0.259225
+vn 0.165355 0.896307 0.411451
+vn 0.260133 0.729443 0.632648
+vn 0.312525 0.575412 0.755797
+vn 0.339411 0.465064 0.817628
+vn 0.045222 0.960716 0.273825
+vn 0.081524 0.896045 0.436415
+vn 0.131104 0.728927 0.671920
+vn 0.158300 0.574843 0.802805
+vn 0.172529 0.464481 0.868614
+vn -0.009013 0.960453 0.278297
+vn -0.005245 0.895770 0.444487
+vn -0.002714 0.728550 0.684987
+vn -0.001668 0.574462 0.818530
+vn -0.000600 0.464127 0.885768
+vn -0.064578 0.958916 0.276242
+vn -0.092731 0.894238 0.437881
+vn -0.136813 0.727477 0.672354
+vn -0.161679 0.574380 0.802464
+vn -0.173731 0.464413 0.868411
+vn -0.120844 0.956566 0.265288
+vn -0.179177 0.891153 0.416824
+vn -0.266998 0.724966 0.634931
+vn -0.316020 0.573906 0.755488
+vn -0.340574 0.464846 0.817268
+vn -0.173585 0.954901 0.240898
+vn -0.260030 0.888442 0.378228
+vn -0.387000 0.722688 0.572672
+vn -0.457426 0.573362 0.679719
+vn -0.493246 0.465165 0.735072
+vn -0.217282 0.954861 0.202554
+vn -0.329676 0.887612 0.321651
+vn -0.491341 0.721883 0.487307
+vn -0.580643 0.573127 0.578255
+vn -0.626352 0.465256 0.625476
+vn -0.248432 0.956353 0.153851
+vn -0.383658 0.888988 0.250015
+vn -0.575733 0.722831 0.382160
+vn -0.681652 0.573295 0.454625
+vn -0.735778 0.465130 0.492225
+vn -0.267059 0.958482 0.099958
+vn -0.420151 0.891703 0.168340
+vn -0.637175 0.724931 0.261692
+vn -0.756949 0.573690 0.312903
+vn -0.817763 0.464815 0.339427
+vn -0.276039 0.960092 0.045013
+vn -0.439920 0.894304 0.081795
+vn -0.673889 0.727082 0.131244
+vn -0.803360 0.574060 0.158328
+vn -0.868682 0.464362 0.172508
+vn -0.277591 0.960654 -0.009283
+vn -0.444764 0.895631 -0.005468
+vn -0.685258 0.728295 -0.002857
+vn -0.818652 0.574287 -0.001722
+vn -0.885801 0.464066 -0.000626
+vn -0.270140 0.960742 -0.063238
+vn -0.434330 0.896036 -0.092066
+vn -0.670868 0.728891 -0.136579
+vn -0.802176 0.574787 -0.161657
+vn -0.868410 0.464408 -0.173751
+vn -0.252126 0.960864 -0.114771
+vn -0.407361 0.896300 -0.175221
+vn -0.630587 0.729376 -0.265276
+vn -0.754520 0.575374 -0.315664
+vn -0.817198 0.464977 -0.340564
+vn -0.224749 0.960939 -0.161503
+vn -0.365087 0.896496 -0.251009
+vn -0.566449 0.729766 -0.382853
+vn -0.678280 0.575799 -0.456499
+vn -0.734957 0.465416 -0.493180
+vn -0.189169 0.960953 -0.201951
+vn -0.309443 0.896548 -0.316934
+vn -0.481381 0.729911 -0.485286
+vn -0.576844 0.575963 -0.579239
+vn -0.625363 0.465561 -0.626238
+vn -0.146475 0.960915 -0.234920
+vn -0.242204 0.896470 -0.371050
+vn -0.378263 0.729756 -0.569537
+vn -0.453681 0.575794 -0.680173
+vn -0.492146 0.465417 -0.735649
+vn -0.097941 0.960812 -0.259324
+vn -0.165354 0.896263 -0.411546
+vn -0.260132 0.729375 -0.632727
+vn -0.312525 0.575333 -0.755858
+vn -0.339412 0.464976 -0.817678
+vn -0.045221 0.960688 -0.273922
+vn -0.081523 0.895999 -0.436508
+vn -0.131104 0.728856 -0.671997
+vn -0.158300 0.574759 -0.802866
+vn -0.172529 0.464389 -0.868664
+vn 0.009084 0.960642 -0.277639
+vn 0.005301 0.895862 -0.444301
+vn 0.002739 0.728554 -0.684983
+vn 0.001671 0.574389 -0.818581
+vn 0.000600 0.464032 -0.885818
+vn 0.063188 0.960731 -0.270191
+vn 0.092019 0.896019 -0.434377
+vn 0.136540 0.728862 -0.670907
+vn 0.161627 0.574754 -0.802206
+vn 0.173727 0.464371 -0.868434
+vn 0.114720 0.960858 -0.252174
+vn 0.175173 0.896288 -0.407408
+vn 0.265237 0.729358 -0.630624
+vn 0.315634 0.575351 -0.754550
+vn 0.340542 0.464949 -0.817223
+vn 0.161454 0.960936 -0.224797
+vn 0.250962 0.896490 -0.365135
+vn 0.382814 0.729757 -0.566488
+vn 0.456468 0.575787 -0.678311
+vn 0.493156 0.465399 -0.734984
+vn 0.201901 0.960954 -0.189216
+vn 0.316886 0.896549 -0.309489
+vn 0.485247 0.729911 -0.481420
+vn 0.579208 0.575963 -0.576874
+vn 0.626214 0.465561 -0.625388
+vn 0.234868 0.960920 -0.146523
+vn 0.371002 0.896478 -0.242249
+vn 0.569499 0.729767 -0.378302
+vn 0.680143 0.575805 -0.453711
+vn 0.735624 0.465429 -0.492171
+vn 0.259274 0.960820 -0.097992
+vn 0.411498 0.896276 -0.165403
+vn 0.632687 0.729396 -0.260171
+vn 0.755826 0.575357 -0.312555
+vn 0.817653 0.465002 -0.339436
+vn 0.273875 0.960699 -0.045272
+vn 0.436463 0.896017 -0.081571
+vn 0.671960 0.728884 -0.131143
+vn 0.802835 0.574794 -0.158331
+vn 0.868639 0.464426 -0.172553
+vn 0.888208 0.423935 0.177106
+vn 0.905847 0.423605 0.000050
+vn 0.894774 0.409294 0.178490
+vn 0.912544 0.408978 0.000124
+vn 0.905595 0.383714 0.180724
+vn 0.923580 0.383406 0.000193
+vn 0.920334 0.345298 0.183725
+vn 0.938600 0.345008 0.000252
+vn 0.938131 0.291244 0.187317
+vn 0.956723 0.290999 0.000293
+vn 0.957106 0.217778 0.191105
+vn 0.976041 0.217584 0.000293
+vn 0.973517 0.120483 0.194291
+vn 0.992728 0.120379 0.000211
+vn 0.980128 -0.034895 0.195275
+vn 0.999393 -0.034841 -0.000109
+vn 0.835984 0.424492 0.347760
+vn 0.842168 0.409839 0.350407
+vn 0.852369 0.384234 0.354728
+vn 0.866263 0.345790 0.360579
+vn 0.883059 0.291667 0.367609
+vn 0.900976 0.218108 0.375062
+vn 0.916487 0.120681 0.381428
+vn 0.922797 -0.034927 0.383701
+vn 0.752011 0.424902 0.503922
+vn 0.757558 0.410255 0.507736
+vn 0.766743 0.384630 0.513970
+vn 0.779261 0.346150 0.522430
+vn 0.794387 0.291995 0.532623
+vn 0.810544 0.218372 0.543445
+vn 0.824556 0.120831 0.552727
+vn 0.830313 -0.034952 0.556201
+vn 0.640012 0.425053 0.640090
+vn 0.644727 0.410397 0.644904
+vn 0.652525 0.384778 0.652807
+vn 0.663172 0.346291 0.663540
+vn 0.676056 0.292111 0.676476
+vn 0.689814 0.218470 0.690238
+vn 0.701765 0.120907 0.702073
+vn 0.706756 -0.034954 0.706594
+vn 0.503826 0.424916 0.752068
+vn 0.507513 0.410269 0.757700
+vn 0.513641 0.384643 0.766957
+vn 0.521997 0.346169 0.779542
+vn 0.532114 0.292017 0.794720
+vn 0.542948 0.218386 0.810873
+vn 0.552371 0.120872 0.824788
+vn 0.556387 -0.034904 0.830190
+vn 0.347647 0.424513 0.836020
+vn 0.350162 0.409870 0.842255
+vn 0.354350 0.384268 0.852510
+vn 0.360091 0.345814 0.866457
+vn 0.367048 0.291711 0.883278
+vn 0.374506 0.218158 0.901195
+vn 0.381029 0.120741 0.916645
+vn 0.383910 -0.034850 0.922713
+vn 0.176984 0.423974 0.888213
+vn 0.178227 0.409338 0.894806
+vn 0.180324 0.383754 0.905658
+vn 0.183204 0.345344 0.920420
+vn 0.186718 0.291301 0.938232
+vn 0.190511 0.217836 0.957211
+vn 0.193868 0.120556 0.973592
+vn 0.195502 -0.034799 0.980086
+vn -0.000073 0.423652 0.905825
+vn -0.000146 0.409026 0.912523
+vn -0.000213 0.383454 0.923560
+vn -0.000270 0.345057 0.938582
+vn -0.000308 0.291049 0.956708
+vn -0.000304 0.217636 0.976030
+vn -0.000217 0.120431 0.992722
+vn 0.000112 -0.034789 0.999395
+vn -0.177127 0.423971 0.888186
+vn -0.178511 0.409333 0.894752
+vn -0.180743 0.383751 0.905576
+vn -0.183746 0.345332 0.920317
+vn -0.187337 0.291288 0.938113
+vn -0.191117 0.217819 0.957094
+vn -0.194298 0.120524 0.973510
+vn -0.195273 -0.034854 0.980129
+vn -0.347781 0.424516 0.835963
+vn -0.350429 0.409865 0.842146
+vn -0.354749 0.384260 0.852348
+vn -0.360595 0.345806 0.866250
+vn -0.367624 0.291695 0.883044
+vn -0.375078 0.218139 0.900962
+vn -0.381437 0.120714 0.916479
+vn -0.383699 -0.034898 0.922799
+vn -0.503947 0.424917 0.751986
+vn -0.507759 0.410262 0.757539
+vn -0.513992 0.384645 0.766721
+vn -0.522450 0.346162 0.779242
+vn -0.532636 0.292005 0.794375
+vn -0.543454 0.218382 0.810535
+vn -0.552734 0.120845 0.824549
+vn -0.556201 -0.034928 0.830314
+vn -0.640114 0.425055 0.639986
+vn -0.644927 0.410395 0.644705
+vn -0.652828 0.384778 0.652505
+vn -0.663558 0.346291 0.663154
+vn -0.676491 0.292111 0.676040
+vn -0.690247 0.218474 0.689803
+vn -0.702075 0.120899 0.701765
+vn -0.706591 -0.034949 0.706759
+vn -0.752091 0.424904 0.503801
+vn -0.757723 0.410255 0.507491
+vn -0.766977 0.384632 0.513619
+vn -0.779558 0.346159 0.521980
+vn -0.794734 0.291999 0.532103
+vn -0.810884 0.218380 0.542934
+vn -0.824795 0.120858 0.552365
+vn -0.830187 -0.034927 0.556390
+vn -0.836043 0.424488 0.347624
+vn -0.842277 0.409844 0.350140
+vn -0.852531 0.384242 0.354329
+vn -0.866473 0.345798 0.360068
+vn -0.883294 0.291683 0.367032
+vn -0.901208 0.218122 0.374497
+vn -0.916653 0.120717 0.381018
+vn -0.922711 -0.034884 0.383910
+vn -0.888236 0.423936 0.176963
+vn -0.894827 0.409301 0.178206
+vn -0.905678 0.383715 0.180305
+vn -0.920438 0.345307 0.183187
+vn -0.938247 0.291265 0.186699
+vn -0.957222 0.217797 0.190499
+vn -0.973598 0.120510 0.193865
+vn -0.980084 -0.034841 0.195504
+vn -0.905847 0.423605 -0.000095
+vn -0.912544 0.408978 -0.000167
+vn -0.923580 0.383406 -0.000233
+vn -0.938600 0.345007 -0.000288
+vn -0.956724 0.290998 -0.000324
+vn -0.976039 0.217594 -0.000318
+vn -0.992728 0.120379 -0.000223
+vn -0.999393 -0.034851 0.000115
+vn -0.888208 0.423915 -0.177150
+vn -0.894773 0.409276 -0.178533
+vn -0.905596 0.383694 -0.180763
+vn -0.920334 0.345278 -0.183761
+vn -0.938131 0.291223 -0.187348
+vn -0.957106 0.217758 -0.191128
+vn -0.973515 0.120468 -0.194308
+vn -0.980127 -0.034921 -0.195273
+vn -0.835985 0.424454 -0.347804
+vn -0.842168 0.409802 -0.350451
+vn -0.852368 0.384197 -0.354769
+vn -0.866264 0.345750 -0.360615
+vn -0.883059 0.291629 -0.367639
+vn -0.900976 0.218068 -0.375085
+vn -0.916488 0.120641 -0.381440
+vn -0.922797 -0.034967 -0.383697
+vn -0.752008 0.424851 -0.503970
+vn -0.757561 0.410196 -0.507781
+vn -0.766741 0.384578 -0.514012
+vn -0.779260 0.346093 -0.522468
+vn -0.794387 0.291939 -0.532654
+vn -0.810543 0.218315 -0.543468
+vn -0.824556 0.120772 -0.552740
+vn -0.830313 -0.035010 -0.556197
+vn -0.640012 0.424985 -0.640135
+vn -0.644727 0.410327 -0.644949
+vn -0.652525 0.384709 -0.652848
+vn -0.663172 0.346222 -0.663576
+vn -0.676055 0.292041 -0.676507
+vn -0.689814 0.218401 -0.690259
+vn -0.701768 0.120829 -0.702084
+vn -0.706756 -0.035028 -0.706590
+vn -0.503827 0.424837 -0.752112
+vn -0.507516 0.410186 -0.757743
+vn -0.513641 0.384562 -0.766997
+vn -0.521998 0.346091 -0.779576
+vn -0.532119 0.291929 -0.794750
+vn -0.542945 0.218309 -0.810896
+vn -0.552371 0.120784 -0.824801
+vn -0.556388 -0.035000 -0.830185
+vn -0.347645 0.424427 -0.836065
+vn -0.350161 0.409780 -0.842299
+vn -0.354350 0.384178 -0.852551
+vn -0.360088 0.345731 -0.866491
+vn -0.367048 0.291618 -0.883309
+vn -0.374508 0.218055 -0.901219
+vn -0.381025 0.120649 -0.916659
+vn -0.383908 -0.034952 -0.922710
+vn -0.176984 0.423881 -0.888258
+vn -0.178227 0.409244 -0.894849
+vn -0.180324 0.383659 -0.905698
+vn -0.183204 0.345248 -0.920457
+vn -0.186714 0.291206 -0.938263
+vn -0.190509 0.217731 -0.957235
+vn -0.193867 0.120453 -0.973605
+vn -0.195503 -0.034903 -0.980082
+vn 0.000073 0.423557 -0.905869
+vn 0.000146 0.408930 -0.912566
+vn 0.000213 0.383357 -0.923600
+vn 0.000270 0.344959 -0.938618
+vn 0.000309 0.290948 -0.956739
+vn 0.000304 0.217533 -0.976053
+vn 0.000217 0.120327 -0.992734
+vn -0.000111 -0.034893 -0.999391
+vn 0.177127 0.423877 -0.888231
+vn 0.178511 0.409238 -0.894795
+vn 0.180742 0.383656 -0.905616
+vn 0.183743 0.345240 -0.920352
+vn 0.187333 0.291184 -0.938146
+vn 0.191117 0.217718 -0.957117
+vn 0.194297 0.120421 -0.973523
+vn 0.195273 -0.034957 -0.980126
+vn 0.347783 0.424430 -0.836006
+vn 0.350429 0.409776 -0.842189
+vn 0.354748 0.384171 -0.852389
+vn 0.360597 0.345723 -0.866283
+vn 0.367624 0.291601 -0.883075
+vn 0.375074 0.218041 -0.900987
+vn 0.381434 0.120613 -0.916494
+vn 0.383699 -0.034996 -0.922795
+vn 0.503946 0.424838 -0.752031
+vn 0.507760 0.410187 -0.757580
+vn 0.513992 0.384564 -0.766762
+vn 0.522450 0.346080 -0.779279
+vn 0.532639 0.291926 -0.794402
+vn 0.543457 0.218301 -0.810555
+vn 0.552733 0.120758 -0.824562
+vn 0.556199 -0.035025 -0.830311
+vn 0.640110 0.424983 -0.640037
+vn 0.644925 0.410329 -0.644749
+vn 0.652828 0.384709 -0.652545
+vn 0.663558 0.346222 -0.663190
+vn 0.676491 0.292040 -0.676071
+vn 0.690247 0.218401 -0.689826
+vn 0.702078 0.120829 -0.701775
+vn 0.706592 -0.035028 -0.706754
+vn 0.752089 0.424850 -0.503849
+vn 0.757722 0.410199 -0.507537
+vn 0.766977 0.384576 -0.513662
+vn 0.779558 0.346105 -0.522016
+vn 0.794734 0.291943 -0.532134
+vn 0.810884 0.218323 -0.542957
+vn 0.824795 0.120799 -0.552378
+vn 0.830187 -0.034985 -0.556386
+vn 0.836043 0.424453 -0.347667
+vn 0.842277 0.409806 -0.350182
+vn 0.852531 0.384204 -0.354371
+vn 0.866473 0.345757 -0.360106
+vn 0.883294 0.291645 -0.367063
+vn 0.901207 0.218083 -0.374520
+vn 0.916653 0.120677 -0.381031
+vn 0.922711 -0.034925 -0.383906
+vn 0.888236 0.423918 -0.177006
+vn 0.894828 0.409281 -0.178248
+vn 0.905678 0.383697 -0.180344
+vn 0.920439 0.345286 -0.183222
+vn 0.938247 0.291246 -0.186729
+vn 0.957224 0.217772 -0.190520
+vn 0.973599 0.120494 -0.193874
+vn 0.980084 -0.034861 -0.195501
+vn 0.947377 -0.259270 0.187765
+vn 0.965867 -0.259035 -0.001061
+vn 0.864903 -0.471979 0.170816
+vn 0.881787 -0.471644 -0.001543
+vn 0.770508 -0.619024 0.152074
+vn 0.785643 -0.618679 -0.001456
+vn 0.690835 -0.709995 0.136583
+vn 0.704525 -0.709678 -0.001074
+vn 0.640332 -0.757508 0.127106
+vn 0.653161 -0.757219 -0.000502
+vn 0.637133 -0.760138 0.127484
+vn 0.650089 -0.759858 0.000482
+vn 0.751673 -0.641522 0.153093
+vn 0.767373 -0.641193 0.003169
+vn 0.910544 -0.370393 0.183626
+vn 0.928989 -0.370101 0.002055
+vn 0.892069 -0.259638 0.369868
+vn 0.814334 -0.472536 0.337003
+vn 0.725300 -0.619601 0.300057
+vn 0.650127 -0.710540 0.269199
+vn 0.602432 -0.758012 0.249988
+vn 0.599224 -0.760635 0.249729
+vn 0.706638 -0.642065 0.297347
+vn 0.856677 -0.370877 0.358545
+vn 0.802807 -0.259880 0.536622
+vn 0.732840 -0.472950 0.489146
+vn 0.652612 -0.620038 0.435489
+vn 0.584840 -0.710942 0.390543
+vn 0.541781 -0.758389 0.362381
+vn 0.538697 -0.761001 0.361501
+vn 0.634857 -0.642473 0.429168
+vn 0.770257 -0.371218 0.518558
+vn 0.683551 -0.259959 0.682040
+vn 0.624069 -0.473078 0.621880
+vn 0.555729 -0.620183 0.553659
+vn 0.497937 -0.711085 0.496404
+vn 0.461148 -0.758520 0.460424
+vn 0.458300 -0.761125 0.458966
+vn 0.539543 -0.642611 0.544008
+vn 0.655090 -0.371365 0.657985
+vn 0.538403 -0.259836 0.801628
+vn 0.491742 -0.472924 0.731118
+vn 0.437941 -0.620018 0.650988
+vn 0.392351 -0.710933 0.583639
+vn 0.363240 -0.758379 0.541219
+vn 0.360720 -0.760998 0.539224
+vn 0.423916 -0.642466 0.638383
+vn 0.515140 -0.371225 0.772543
+vn 0.371866 -0.259548 0.891263
+vn 0.339901 -0.472486 0.813157
+vn 0.302798 -0.619573 0.724184
+vn 0.271233 -0.710515 0.649308
+vn 0.250954 -0.757996 0.602049
+vn 0.248865 -0.760616 0.599608
+vn 0.291468 -0.642064 0.709084
+vn 0.354731 -0.370899 0.858254
+vn 0.189886 -0.259182 0.946978
+vn 0.173905 -0.471920 0.864320
+vn 0.155003 -0.618977 0.769962
+vn 0.138752 -0.709963 0.690435
+vn 0.128138 -0.757483 0.640156
+vn 0.126562 -0.760115 0.637344
+vn 0.146833 -0.641494 0.752944
+vn 0.179568 -0.370403 0.911349
+vn 0.001072 -0.258989 0.965880
+vn 0.001568 -0.471598 0.881812
+vn 0.001491 -0.618633 0.785678
+vn 0.001112 -0.709640 0.704563
+vn 0.000542 -0.757184 0.653201
+vn -0.000441 -0.759824 0.650129
+vn -0.003136 -0.641157 0.767404
+vn -0.002036 -0.370058 0.929006
+vn -0.187748 -0.259241 0.947388
+vn -0.170791 -0.471943 0.864928
+vn -0.152045 -0.618984 0.770546
+vn -0.136546 -0.709966 0.690872
+vn -0.127067 -0.757480 0.640373
+vn -0.127444 -0.760110 0.637173
+vn -0.153057 -0.641493 0.751705
+vn -0.183605 -0.370363 0.910560
+vn -0.369854 -0.259610 0.892082
+vn -0.336973 -0.472516 0.814357
+vn -0.300024 -0.619575 0.725336
+vn -0.269162 -0.710520 0.650164
+vn -0.249947 -0.757994 0.602471
+vn -0.249689 -0.760616 0.599265
+vn -0.297313 -0.642043 0.706672
+vn -0.358525 -0.370854 0.856695
+vn -0.536609 -0.259866 0.802821
+vn -0.489121 -0.472937 0.732865
+vn -0.435456 -0.620026 0.652645
+vn -0.390505 -0.710931 0.584878
+vn -0.362341 -0.758380 0.541820
+vn -0.361461 -0.760992 0.538737
+vn -0.429134 -0.642463 0.634890
+vn -0.518540 -0.371204 0.770275
+vn -0.682026 -0.259959 0.683565
+vn -0.621855 -0.473078 0.624094
+vn -0.553626 -0.620183 0.555762
+vn -0.496367 -0.711085 0.497974
+vn -0.460385 -0.758519 0.461188
+vn -0.458926 -0.761125 0.458340
+vn -0.543974 -0.642612 0.539576
+vn -0.657966 -0.371366 0.655109
+vn -0.801615 -0.259850 0.538416
+vn -0.731092 -0.472937 0.491766
+vn -0.650955 -0.620029 0.437973
+vn -0.583602 -0.710943 0.392389
+vn -0.541179 -0.758388 0.363280
+vn -0.539184 -0.761007 0.360761
+vn -0.638349 -0.642477 0.423950
+vn -0.772524 -0.371239 0.515159
+vn -0.891250 -0.259571 0.371882
+vn -0.813128 -0.472516 0.339929
+vn -0.724151 -0.619596 0.302831
+vn -0.649271 -0.710535 0.271271
+vn -0.602009 -0.758015 0.250994
+vn -0.599568 -0.760634 0.248906
+vn -0.709051 -0.642085 0.291502
+vn -0.858235 -0.370925 0.354750
+vn -0.946968 -0.259211 0.189898
+vn -0.864296 -0.471955 0.173930
+vn -0.769923 -0.619017 0.155037
+vn -0.690397 -0.709992 0.138789
+vn -0.640116 -0.757510 0.128178
+vn -0.637304 -0.760142 0.126602
+vn -0.752913 -0.641523 0.146867
+vn -0.911331 -0.370437 0.179588
+vn -0.965868 -0.259034 0.001088
+vn -0.881788 -0.471644 0.001593
+vn -0.785643 -0.618679 0.001522
+vn -0.704526 -0.709677 0.001149
+vn -0.653161 -0.757219 0.000582
+vn -0.650089 -0.759858 -0.000401
+vn -0.767373 -0.641193 -0.003102
+vn -0.928989 -0.370102 -0.002016
+vn -0.947378 -0.259288 -0.187738
+vn -0.864904 -0.471997 -0.170766
+vn -0.770507 -0.619042 -0.152009
+vn -0.690835 -0.710009 -0.136508
+vn -0.640332 -0.757522 -0.127027
+vn -0.637132 -0.760153 -0.127403
+vn -0.751673 -0.641538 -0.153025
+vn -0.910542 -0.370417 -0.183586
+vn -0.892068 -0.259677 -0.369840
+vn -0.814334 -0.472571 -0.336953
+vn -0.725300 -0.619633 -0.299992
+vn -0.650127 -0.710568 -0.269125
+vn -0.602431 -0.758039 -0.249907
+vn -0.599223 -0.760663 -0.249649
+vn -0.706638 -0.642096 -0.297280
+vn -0.856676 -0.370917 -0.358506
+vn -0.802807 -0.259936 -0.536595
+vn -0.732840 -0.473001 -0.489097
+vn -0.652613 -0.620083 -0.435423
+vn -0.584841 -0.710982 -0.390469
+vn -0.541780 -0.758428 -0.362301
+vn -0.538696 -0.761041 -0.361420
+vn -0.634857 -0.642518 -0.429101
+vn -0.770256 -0.371270 -0.518521
+vn -0.683551 -0.260031 -0.682013
+vn -0.624069 -0.473142 -0.621831
+vn -0.555729 -0.620242 -0.553593
+vn -0.497937 -0.711137 -0.496329
+vn -0.461148 -0.758568 -0.460344
+vn -0.458299 -0.761175 -0.458885
+vn -0.539543 -0.642667 -0.543941
+vn -0.655090 -0.371433 -0.657947
+vn -0.538403 -0.259920 -0.801601
+vn -0.491742 -0.473000 -0.731068
+vn -0.437941 -0.620087 -0.650923
+vn -0.392351 -0.710994 -0.583565
+vn -0.363240 -0.758436 -0.541139
+vn -0.360720 -0.761056 -0.539142
+vn -0.423916 -0.642533 -0.638316
+vn -0.515139 -0.371306 -0.772505
+vn -0.371869 -0.259636 -0.891237
+vn -0.339905 -0.472575 -0.813104
+vn -0.302798 -0.619649 -0.724119
+vn -0.271234 -0.710583 -0.649233
+vn -0.250954 -0.758060 -0.601969
+vn -0.248865 -0.760681 -0.599526
+vn -0.291469 -0.642138 -0.709017
+vn -0.354731 -0.370988 -0.858215
+vn -0.189885 -0.259271 -0.946954
+vn -0.173905 -0.472009 -0.864271
+vn -0.155004 -0.619066 -0.769890
+vn -0.138752 -0.710036 -0.690360
+vn -0.128138 -0.757551 -0.640076
+vn -0.126562 -0.760183 -0.637262
+vn -0.146833 -0.641569 -0.752881
+vn -0.179569 -0.370495 -0.911311
+vn -0.001074 -0.259085 -0.965854
+vn -0.001568 -0.471690 -0.881763
+vn -0.001489 -0.618720 -0.785610
+vn -0.001112 -0.709715 -0.704489
+vn -0.000542 -0.757253 -0.653121
+vn 0.000441 -0.759894 -0.650047
+vn 0.003136 -0.641233 -0.767340
+vn 0.002036 -0.370150 -0.928970
+vn 0.187751 -0.259329 -0.947364
+vn 0.170791 -0.472033 -0.864879
+vn 0.152042 -0.619073 -0.770475
+vn 0.136546 -0.710038 -0.690797
+vn 0.127066 -0.757549 -0.640292
+vn 0.127444 -0.760179 -0.637091
+vn 0.153059 -0.641569 -0.751639
+vn 0.183606 -0.370453 -0.910524
+vn 0.369854 -0.259704 -0.892055
+vn 0.336978 -0.472595 -0.814309
+vn 0.300024 -0.619655 -0.725268
+vn 0.269162 -0.710588 -0.650090
+vn 0.249947 -0.758057 -0.602391
+vn 0.249688 -0.760681 -0.599183
+vn 0.297313 -0.642117 -0.706604
+vn 0.358527 -0.370941 -0.856657
+vn 0.536608 -0.259950 -0.802793
+vn 0.489122 -0.473013 -0.732815
+vn 0.435456 -0.620095 -0.652580
+vn 0.390506 -0.710993 -0.584803
+vn 0.362341 -0.758437 -0.541741
+vn 0.361460 -0.761050 -0.538656
+vn 0.429134 -0.642529 -0.634824
+vn 0.518540 -0.371284 -0.770237
+vn 0.682026 -0.260031 -0.683538
+vn 0.621855 -0.473142 -0.624045
+vn 0.553626 -0.620241 -0.555697
+vn 0.496366 -0.711138 -0.497899
+vn 0.460384 -0.758568 -0.461108
+vn 0.458925 -0.761175 -0.458259
+vn 0.543974 -0.642667 -0.539510
+vn 0.657966 -0.371434 -0.655071
+vn 0.801615 -0.259906 -0.538389
+vn 0.731093 -0.472988 -0.491717
+vn 0.650955 -0.620075 -0.437908
+vn 0.583602 -0.710984 -0.392314
+vn 0.541179 -0.758427 -0.363200
+vn 0.539183 -0.761047 -0.360680
+vn 0.638349 -0.642522 -0.423883
+vn 0.772524 -0.371293 -0.515120
+vn 0.891251 -0.259608 -0.371855
+vn 0.813128 -0.472551 -0.339880
+vn 0.724151 -0.619627 -0.302766
+vn 0.649271 -0.710563 -0.271196
+vn 0.602009 -0.758042 -0.250914
+vn 0.599566 -0.760662 -0.248825
+vn 0.709051 -0.642115 -0.291435
+vn 0.858235 -0.370961 -0.354712
+vn 0.946968 -0.259231 -0.189871
+vn 0.864296 -0.471973 -0.173880
+vn 0.769923 -0.619034 -0.154971
+vn 0.690397 -0.710007 -0.138714
+vn 0.640116 -0.757524 -0.128098
+vn 0.637303 -0.760156 -0.126522
+vn 0.752913 -0.641538 -0.146800
+vn 0.911332 -0.370454 -0.179550
+vn 0.964663 -0.209837 0.159355
+vn 0.977248 -0.209679 -0.031962
+vn 0.914551 -0.210214 0.345552
+vn 0.829488 -0.210458 0.517355
+vn 0.713372 -0.210604 0.668391
+vn 0.570377 -0.210515 0.793948
+vn 0.404939 -0.210299 0.889831
+vn 0.222750 -0.209963 0.951997
+vn 0.031973 -0.209627 0.977259
+vn -0.159344 -0.209796 0.964674
+vn -0.345540 -0.210189 0.914562
+vn -0.517346 -0.210444 0.829498
+vn -0.668381 -0.210602 0.713382
+vn -0.793937 -0.210530 0.570387
+vn -0.889819 -0.210326 0.404952
+vn -0.951986 -0.209999 0.222762
+vn -0.977248 -0.209676 0.031985
+vn -0.964663 -0.209856 -0.159331
+vn -0.914549 -0.210260 -0.345529
+vn -0.829487 -0.210516 -0.517334
+vn -0.713371 -0.210672 -0.668371
+vn -0.570377 -0.210601 -0.793925
+vn -0.404938 -0.210392 -0.889809
+vn -0.222750 -0.210063 -0.951975
+vn -0.031972 -0.209731 -0.977236
+vn 0.159342 -0.209898 -0.964652
+vn 0.345541 -0.210284 -0.914539
+vn 0.517346 -0.210529 -0.829476
+vn 0.668380 -0.210677 -0.713360
+vn 0.793936 -0.210590 -0.570366
+vn 0.889820 -0.210366 -0.404928
+vn 0.951986 -0.210021 -0.222739
+vn 0.677217 -0.718515 0.158472
+vn 0.695547 -0.718119 0.022797
+vn 0.530580 -0.841704 0.100097
+vn 0.540210 -0.841513 -0.005481
+vn 0.273421 -0.960509 0.051615
+vn 0.278439 -0.960450 -0.002787
+vn 0.144899 -0.989065 0.027461
+vn 0.147582 -0.989049 -0.001371
+vn 0.078407 -0.996811 0.014863
+vn 0.079856 -0.996806 -0.000737
+vn 0.040266 -0.999160 0.007581
+vn 0.040994 -0.999159 -0.000428
+vn 0.018354 -0.999826 0.003179
+vn 0.018624 -0.999826 -0.000464
+vn 0.000000 -1.000000 0.000052
+vn 0.632536 -0.719047 0.287869
+vn 0.500143 -0.842047 0.202022
+vn 0.257629 -0.960620 0.104099
+vn 0.136498 -0.989098 0.055267
+vn 0.073864 -0.996820 0.029909
+vn 0.037947 -0.999162 0.015310
+vn 0.017357 -0.999827 0.006708
+vn 0.564082 -0.719422 0.405270
+vn 0.450801 -0.842317 0.295434
+vn 0.232133 -0.960707 0.152171
+vn 0.122965 -0.989122 0.080731
+vn 0.066543 -0.996827 0.043688
+vn 0.034201 -0.999164 0.022391
+vn 0.015704 -0.999827 0.009956
+vn 0.474820 -0.719500 0.506819
+vn 0.384860 -0.842408 0.377136
+vn 0.198148 -0.960738 0.194218
+vn 0.104939 -0.989131 0.102995
+vn 0.056792 -0.996829 0.055738
+vn 0.029206 -0.999165 0.028585
+vn 0.013477 -0.999827 0.012807
+vn 0.367606 -0.719305 0.589463
+vn 0.304541 -0.842323 0.444687
+vn 0.156804 -0.960709 0.229021
+vn 0.083023 -0.989122 0.121430
+vn 0.044938 -0.996826 0.065714
+vn 0.023130 -0.999164 0.033717
+vn 0.010753 -0.999827 0.015180
+vn 0.245671 -0.718837 0.650323
+vn 0.212224 -0.842056 0.495885
+vn 0.109295 -0.960624 0.255453
+vn 0.057844 -0.989097 0.135432
+vn 0.031317 -0.996819 0.073295
+vn 0.016145 -0.999162 0.037622
+vn 0.007610 -0.999826 0.017003
+vn 0.113359 -0.718294 0.686443
+vn 0.111002 -0.841701 0.528411
+vn 0.057180 -0.960508 0.272313
+vn 0.030224 -0.989063 0.144367
+vn 0.016374 -0.996808 0.078135
+vn 0.008480 -0.999159 0.040121
+vn 0.004147 -0.999826 0.018194
+vn -0.022759 -0.718075 0.695593
+vn 0.005525 -0.841481 0.540259
+vn 0.002838 -0.960435 0.278489
+vn 0.001423 -0.989041 0.147634
+vn 0.000791 -0.996802 0.079908
+vn 0.000481 -0.999157 0.041047
+vn 0.000516 -0.999825 0.018677
+vn -0.158436 -0.718479 0.677263
+vn -0.100053 -0.841678 0.530629
+vn -0.051564 -0.960497 0.273470
+vn -0.027409 -0.989059 0.144950
+vn -0.014810 -0.996807 0.078460
+vn -0.007528 -0.999159 0.040318
+vn -0.003126 -0.999826 0.018407
+vn -0.287830 -0.719028 0.632576
+vn -0.201979 -0.842030 0.500190
+vn -0.104048 -0.960612 0.257679
+vn -0.055214 -0.989093 0.136550
+vn -0.029856 -0.996817 0.073916
+vn -0.015257 -0.999161 0.037999
+vn -0.006656 -0.999826 0.017409
+vn -0.405232 -0.719412 0.564121
+vn -0.295390 -0.842309 0.450845
+vn -0.152120 -0.960703 0.232183
+vn -0.080679 -0.989120 0.123017
+vn -0.043635 -0.996826 0.066596
+vn -0.022337 -0.999163 0.034254
+vn -0.009903 -0.999827 0.015756
+vn -0.506780 -0.719502 0.474859
+vn -0.377091 -0.842408 0.384904
+vn -0.194168 -0.960737 0.198198
+vn -0.102942 -0.989131 0.104991
+vn -0.055685 -0.996829 0.056845
+vn -0.028533 -0.999165 0.029259
+vn -0.012753 -0.999827 0.013531
+vn -0.589426 -0.719315 0.367645
+vn -0.444642 -0.842331 0.304586
+vn -0.228972 -0.960713 0.156855
+vn -0.121378 -0.989124 0.083075
+vn -0.065661 -0.996827 0.044990
+vn -0.033665 -0.999164 0.023183
+vn -0.015128 -0.999827 0.010807
+vn -0.650284 -0.718859 0.245709
+vn -0.495843 -0.842070 0.212269
+vn -0.255403 -0.960632 0.109346
+vn -0.135380 -0.989101 0.057896
+vn -0.073243 -0.996821 0.031369
+vn -0.037569 -0.999163 0.016198
+vn -0.016951 -0.999827 0.007662
+vn -0.686396 -0.718333 0.113395
+vn -0.528364 -0.841724 0.111046
+vn -0.272263 -0.960519 0.057231
+vn -0.144314 -0.989069 0.030276
+vn -0.078083 -0.996812 0.016426
+vn -0.040068 -0.999161 0.008532
+vn -0.018142 -0.999827 0.004200
+vn -0.695546 -0.718122 -0.022722
+vn -0.540209 -0.841512 0.005570
+vn -0.278439 -0.960450 0.002888
+vn -0.147582 -0.989049 0.001475
+vn -0.079856 -0.996806 0.000844
+vn -0.040994 -0.999159 0.000534
+vn -0.018624 -0.999826 0.000569
+vn -0.677219 -0.718529 -0.158399
+vn -0.530581 -0.841714 -0.100008
+vn -0.273421 -0.960514 -0.051514
+vn -0.144899 -0.989068 -0.027357
+vn -0.078407 -0.996812 -0.014758
+vn -0.040265 -0.999161 -0.007476
+vn -0.018354 -0.999827 -0.003073
+vn -0.632535 -0.719079 -0.287794
+vn -0.500143 -0.842069 -0.201934
+vn -0.257629 -0.960631 -0.103998
+vn -0.136498 -0.989103 -0.055162
+vn -0.073864 -0.996823 -0.029803
+vn -0.037947 -0.999164 -0.015205
+vn -0.017356 -0.999828 -0.006604
+vn -0.564083 -0.719464 -0.405194
+vn -0.450800 -0.842348 -0.295345
+vn -0.232134 -0.960723 -0.152070
+vn -0.122965 -0.989130 -0.080627
+vn -0.066543 -0.996831 -0.043583
+vn -0.034201 -0.999167 -0.022284
+vn -0.015704 -0.999828 -0.009849
+vn -0.474821 -0.719554 -0.506742
+vn -0.384860 -0.842448 -0.377047
+vn -0.198148 -0.960758 -0.194117
+vn -0.104939 -0.989142 -0.102891
+vn -0.056793 -0.996835 -0.055633
+vn -0.029206 -0.999168 -0.028481
+vn -0.013477 -0.999829 -0.012701
+vn -0.367606 -0.719367 -0.589387
+vn -0.304542 -0.842370 -0.444598
+vn -0.156804 -0.960733 -0.228922
+vn -0.083023 -0.989135 -0.121326
+vn -0.044938 -0.996833 -0.065609
+vn -0.023130 -0.999167 -0.033612
+vn -0.010753 -0.999829 -0.015076
+vn -0.245670 -0.718908 -0.650244
+vn -0.212224 -0.842107 -0.495799
+vn -0.109295 -0.960651 -0.255352
+vn -0.057844 -0.989111 -0.135328
+vn -0.031316 -0.996826 -0.073190
+vn -0.016146 -0.999166 -0.037516
+vn -0.007610 -0.999828 -0.016898
+vn -0.113358 -0.718377 -0.686356
+vn -0.111002 -0.841759 -0.528319
+vn -0.057181 -0.960537 -0.272213
+vn -0.030224 -0.989078 -0.144262
+vn -0.016373 -0.996817 -0.078030
+vn -0.008479 -0.999163 -0.040015
+vn -0.004147 -0.999828 -0.018089
+vn 0.022759 -0.718156 -0.695510
+vn -0.005525 -0.841541 -0.540165
+vn -0.002838 -0.960464 -0.278389
+vn -0.001423 -0.989057 -0.147530
+vn -0.000791 -0.996810 -0.079803
+vn -0.000481 -0.999161 -0.040942
+vn -0.000516 -0.999827 -0.018571
+vn 0.158435 -0.718557 -0.677181
+vn 0.100053 -0.841737 -0.530536
+vn 0.051565 -0.960526 -0.273371
+vn 0.027409 -0.989074 -0.144847
+vn 0.014810 -0.996816 -0.078354
+vn 0.007529 -0.999163 -0.040213
+vn 0.003125 -0.999828 -0.018301
+vn 0.287830 -0.719097 -0.632498
+vn 0.201978 -0.842085 -0.500098
+vn 0.104049 -0.960639 -0.257578
+vn 0.055214 -0.989107 -0.136446
+vn 0.029856 -0.996825 -0.073811
+vn 0.015257 -0.999165 -0.037894
+vn 0.006656 -0.999828 -0.017304
+vn 0.405233 -0.719472 -0.564044
+vn 0.295389 -0.842356 -0.450757
+vn 0.152121 -0.960727 -0.232083
+vn 0.080679 -0.989133 -0.122913
+vn 0.043635 -0.996832 -0.066491
+vn 0.022337 -0.999167 -0.034149
+vn 0.009903 -0.999828 -0.015652
+vn 0.506781 -0.719552 -0.474782
+vn 0.377092 -0.842448 -0.384816
+vn 0.194167 -0.960758 -0.198098
+vn 0.102943 -0.989142 -0.104886
+vn 0.055685 -0.996835 -0.056740
+vn 0.028532 -0.999168 -0.029153
+vn 0.012754 -0.999829 -0.013425
+vn 0.589425 -0.719355 -0.367569
+vn 0.444642 -0.842362 -0.304498
+vn 0.228972 -0.960729 -0.156753
+vn 0.121378 -0.989132 -0.082971
+vn 0.065661 -0.996832 -0.044885
+vn 0.033665 -0.999167 -0.023077
+vn 0.015128 -0.999828 -0.010700
+vn 0.650281 -0.718887 -0.245632
+vn 0.495841 -0.842093 -0.212180
+vn 0.255403 -0.960643 -0.109244
+vn 0.135381 -0.989107 -0.057792
+vn 0.073243 -0.996824 -0.031264
+vn 0.037568 -0.999164 -0.016093
+vn 0.016951 -0.999828 -0.007557
+vn 0.686396 -0.718344 -0.113321
+vn 0.528363 -0.841737 -0.110957
+vn 0.272262 -0.960526 -0.057130
+vn 0.144315 -0.989072 -0.030172
+vn 0.078083 -0.996813 -0.016321
+vn 0.040068 -0.999161 -0.008427
+vn 0.018142 -0.999827 -0.004095
+vn 0.475316 0.879191 -0.033128
+vn 0.001783 -0.999464 0.032700
+vn 0.001793 -0.965247 0.261331
+vn 0.007988 -0.975411 0.220247
+vn 0.007979 -0.999968 -0.000097
+vn 0.029459 -0.975197 0.219370
+vn 0.029413 -0.999567 -0.000273
+vn 0.074514 -0.972772 0.219460
+vn 0.074382 -0.997230 -0.000474
+vn 0.158885 -0.961744 0.223168
+vn 0.158866 -0.987300 -0.000550
+vn 0.310920 -0.920814 0.235439
+vn 0.312837 -0.949807 -0.000273
+vn 0.560196 -0.786437 0.260185
+vn 0.572881 -0.819638 0.000330
+vn 0.839028 -0.463925 0.284263
+vn 0.874005 -0.485917 -0.000111
+vn 0.955339 -0.069288 0.287273
+vn 0.997511 -0.070515 -0.000425
+vn 0.001639 -0.832459 0.554084
+vn 0.007382 -0.864765 0.502123
+vn 0.027400 -0.864992 0.501037
+vn 0.069469 -0.861921 0.502261
+vn 0.147369 -0.847177 0.510463
+vn 0.282660 -0.797574 0.532896
+vn 0.488270 -0.659198 0.571884
+vn 0.701177 -0.377918 0.604590
+vn 0.792369 -0.057207 0.607354
+vn 0.001563 -0.760649 0.649162
+vn 0.005184 -0.760811 0.648953
+vn 0.021274 -0.760828 0.648605
+vn 0.053522 -0.666235 0.743819
+vn 0.097050 -0.542554 0.834396
+vn 0.180541 -0.496886 0.848828
+vn 0.296369 -0.393968 0.870031
+vn 0.409704 -0.220686 0.885122
+vn 0.462899 -0.036703 0.885651
+vn -0.000728 0.322723 0.946493
+vn -0.004151 0.323486 0.946224
+vn -0.014363 0.323663 0.946064
+vn -0.034884 0.319071 0.947089
+vn -0.019180 0.062109 0.997885
+vn -0.013157 -0.008301 0.999879
+vn -0.014699 -0.016206 0.999761
+vn -0.009317 -0.019765 0.999761
+vn -0.001174 -0.012693 0.999919
+vn -0.001495 0.634894 0.772598
+vn -0.006622 0.562349 0.826874
+vn -0.023803 0.561936 0.826838
+vn -0.059181 0.555055 0.829706
+vn -0.121937 0.530473 0.838886
+vn -0.219565 0.466904 0.856617
+vn -0.339228 0.340428 0.876945
+vn -0.433225 0.163791 0.886278
+vn -0.465115 0.008328 0.885211
+vn -0.002176 0.893206 0.449643
+vn -0.009797 0.864626 0.502320
+vn -0.036126 0.863806 0.502528
+vn -0.091445 0.856734 0.507586
+vn -0.192620 0.830081 0.523319
+vn -0.358060 0.751194 0.554527
+vn -0.571349 0.568006 0.592393
+vn -0.739665 0.283872 0.610174
+vn -0.794404 0.021656 0.607003
+vn -0.002442 0.983715 0.179720
+vn -0.011067 0.975323 0.220505
+vn -0.041197 0.974466 0.220724
+vn -0.105103 0.968945 0.223829
+vn -0.223980 0.946209 0.233498
+vn -0.423836 0.869641 0.253154
+vn -0.688265 0.670031 0.278118
+vn -0.894896 0.339030 0.290205
+vn -0.957401 0.027548 0.287446
+vn -0.002486 0.999462 -0.032702
+vn -0.011308 0.999936 0.000045
+vn -0.042289 0.999105 0.000065
+vn -0.108225 0.994126 -0.000056
+vn -0.231432 0.972851 -0.000427
+vn -0.440178 0.897910 -0.000918
+vn -0.718601 0.695422 -0.000551
+vn -0.935683 0.352841 0.000648
+vn -0.999571 0.029291 0.000301
+vn -0.002371 0.965259 -0.261283
+vn -0.010806 0.975362 -0.220348
+vn -0.040520 0.974543 -0.220508
+vn -0.103739 0.969088 -0.223843
+vn -0.221384 0.946646 -0.234202
+vn -0.419545 0.871227 -0.254843
+vn -0.683957 0.673965 -0.279238
+vn -0.893723 0.343100 -0.289036
+vn -0.957493 0.030296 -0.286861
+vn -0.001984 0.832464 -0.554075
+vn -0.009115 0.864684 -0.502233
+vn -0.034397 0.863990 -0.502332
+vn -0.088001 0.857227 -0.507363
+vn -0.186261 0.831526 -0.523328
+vn -0.347636 0.755733 -0.554993
+vn -0.559950 0.578771 -0.592857
+vn -0.734778 0.296672 -0.609989
+vn -0.794244 0.030432 -0.606837
+vn -0.001760 0.760632 -0.649181
+vn -0.005933 0.760795 -0.648965
+vn -0.024728 0.760272 -0.649134
+vn -0.062264 0.662558 -0.746419
+vn -0.109982 0.533760 -0.838453
+vn -0.201255 0.476764 -0.855683
+vn -0.318890 0.360739 -0.876457
+vn -0.421524 0.188788 -0.886948
+vn -0.463855 0.025739 -0.885537
+vn -0.062440 0.302587 -0.951074
+vn -0.101145 0.272011 -0.956964
+vn -0.069678 0.119363 -0.990403
+vn 0.008037 0.015049 -0.999854
+vn 0.001159 0.011440 -0.999934
+vn 0.378336 -0.117000 -0.918244
+vn 0.464735 -0.012548 -0.885361
+vn 0.753258 0.007710 -0.657680
+vn 0.001785 -0.995229 -0.097548
+vn 0.010046 -0.995211 -0.097234
+vn 0.034537 -0.994713 -0.096717
+vn 0.084466 -0.991739 -0.096540
+vn 0.177469 -0.979233 -0.098021
+vn 0.345981 -0.932498 -0.103655
+vn 0.622731 -0.773804 -0.115904
+vn 0.908278 -0.398300 -0.128014
+vn 0.989269 -0.067557 -0.129549
+vn 0.942224 0.173810 0.286363
+vn 0.980055 0.197027 0.025946
+vn 0.906108 0.314725 0.282694
+vn 0.945646 0.325196 -0.001291
+vn 0.858393 0.434963 0.271972
+vn 0.894434 0.447193 -0.002629
+vn 0.798718 0.545114 0.254755
+vn 0.829712 0.558180 -0.003677
+vn 0.724398 0.648222 0.234640
+vn 0.749587 0.661894 -0.003986
+vn 0.632943 0.742765 0.218364
+vn 0.652416 0.757854 -0.003225
+vn 0.524026 0.824138 0.214926
+vn 0.538166 0.842838 -0.001152
+vn 0.467561 0.866428 0.175180
+vn 0.782329 0.143944 0.606004
+vn 0.752541 0.266675 0.602134
+vn 0.716682 0.374553 0.588283
+vn 0.674459 0.476781 0.563725
+vn 0.621021 0.575125 0.532508
+vn 0.550807 0.664792 0.504641
+vn 0.461090 0.735987 0.495700
+vn 0.422247 0.790753 0.443191
+vn 0.458383 0.081343 0.885024
+vn 0.440500 0.157205 0.883882
+vn 0.421784 0.226122 0.878048
+vn 0.403217 0.294640 0.866374
+vn 0.380703 0.364498 0.849827
+vn 0.347488 0.430528 0.833005
+vn 0.297646 0.480036 0.825210
+vn 0.297140 0.564757 0.769907
+vn 0.001351 -0.007912 0.999968
+vn 0.001057 -0.008236 0.999966
+vn 0.000333 -0.009622 0.999954
+vn 0.000031 -0.011438 0.999935
+vn 0.000745 -0.012543 0.999921
+vn 0.002777 -0.011146 0.999934
+vn 0.005465 -0.005795 0.999968
+vn 0.051627 0.098812 0.993766
+vn -0.455324 -0.096718 0.885057
+vn -0.433218 -0.179280 0.883279
+vn -0.408042 -0.255211 0.876567
+vn -0.382037 -0.326740 0.864459
+vn -0.353427 -0.393479 0.848683
+vn -0.318803 -0.450640 0.833839
+vn -0.275287 -0.489119 0.827635
+vn -0.219333 -0.431936 0.874828
+vn -0.778917 -0.159117 0.606606
+vn -0.736873 -0.303132 0.604259
+vn -0.681088 -0.430077 0.592581
+vn -0.619182 -0.538897 0.571142
+vn -0.554529 -0.629699 0.544037
+vn -0.488168 -0.701658 0.519006
+vn -0.420540 -0.752721 0.506514
+vn -0.372811 -0.742693 0.556254
+vn -0.938973 -0.189484 0.287099
+vn -0.885683 -0.365618 0.286163
+vn -0.809071 -0.517303 0.278930
+vn -0.721686 -0.639393 0.265229
+vn -0.633097 -0.733207 0.248183
+vn -0.548815 -0.802904 0.232695
+vn -0.471281 -0.852985 0.224299
+vn -0.429740 -0.863533 0.263883
+vn -0.980522 -0.196410 0.000078
+vn -0.924435 -0.381337 0.000965
+vn -0.841685 -0.539965 0.002116
+vn -0.746509 -0.665369 0.002926
+vn -0.650812 -0.759233 0.003080
+vn -0.561608 -0.827400 0.002443
+vn -0.481761 -0.876302 0.001023
+vn -0.443739 -0.895522 0.033718
+vn -0.939734 -0.185941 -0.286927
+vn -0.887674 -0.362290 -0.284221
+vn -0.811830 -0.515269 -0.274645
+vn -0.724356 -0.638886 -0.259100
+vn -0.635015 -0.733773 -0.241522
+vn -0.549725 -0.803823 -0.227313
+vn -0.471226 -0.853559 -0.222222
+vn -0.437015 -0.881160 -0.180485
+vn -0.780707 -0.150456 -0.606515
+vn -0.740729 -0.295103 -0.603518
+vn -0.686243 -0.424276 -0.590813
+vn -0.624479 -0.535897 -0.568190
+vn -0.558938 -0.629048 -0.540266
+vn -0.491008 -0.702141 -0.515664
+vn -0.421607 -0.752804 -0.505503
+vn -0.398274 -0.798456 -0.451493
+vn -0.457936 -0.082823 -0.885119
+vn -0.436665 -0.166017 -0.884173
+vn -0.411199 -0.242738 -0.878632
+vn -0.384790 -0.315190 -0.867521
+vn -0.356192 -0.383386 -0.852140
+vn -0.321974 -0.442806 -0.836813
+vn -0.279143 -0.484344 -0.829150
+vn -0.284632 -0.565293 -0.774228
+vn -0.001231 0.007448 -0.999971
+vn -0.000255 0.006517 -0.999979
+vn 0.001651 0.006711 -0.999976
+vn 0.003309 0.007990 -0.999963
+vn 0.003746 0.009559 -0.999947
+vn 0.001986 0.009596 -0.999952
+vn -0.002157 0.005765 -0.999981
+vn -0.049663 -0.098260 -0.993921
+vn 0.456536 0.092470 -0.884887
+vn 0.439144 0.166804 -0.882796
+vn 0.421163 0.236103 -0.875715
+vn 0.402306 0.305679 -0.862966
+vn 0.377936 0.375963 -0.846059
+vn 0.341517 0.440738 -0.830131
+vn 0.288063 0.486651 -0.824737
+vn 0.224817 0.431951 -0.873427
+vn 0.781331 0.148949 -0.606082
+vn 0.750792 0.269839 -0.602909
+vn 0.713793 0.376991 -0.590235
+vn 0.670173 0.478693 -0.567205
+vn 0.615426 0.576636 -0.537347
+vn 0.544335 0.666388 -0.509534
+vn 0.454210 0.738519 -0.498280
+vn 0.390247 0.738176 -0.550276
+vn 0.933835 0.213685 -0.286862
+vn 0.905291 0.314851 -0.285163
+vn 0.856812 0.434786 -0.277190
+vn 0.796474 0.544823 -0.262293
+vn 0.721674 0.648107 -0.243196
+vn 0.629960 0.743141 -0.225593
+vn 0.520820 0.825435 -0.217725
+vn 0.456575 0.851372 -0.258273
+vn 0.000686 -0.322637 0.946522
+vn 0.003897 -0.323446 0.946239
+vn 0.013468 -0.323971 0.945971
+vn 0.029142 -0.318723 0.947400
+vn 0.000710 -0.322492 0.946572
+vn 0.002352 -0.322662 0.946511
+vn 0.009669 -0.322606 0.946484
+vn 0.025421 -0.319236 0.947334
+vn 0.041200 -0.310575 0.949656
+vn -0.000728 0.322628 -0.946526
+vn -0.004163 0.323358 -0.946268
+vn -0.014477 0.323423 -0.946144
+vn -0.030300 0.317993 -0.947609
+vn 0.000232 -0.113012 -0.993594
+vn 0.000810 -0.000457 -1.000000
+vn 0.001947 -0.000722 -0.999998
+vn 0.003672 -0.000770 -0.999993
+vn 0.041773 -0.156892 -0.986732
+vn 0.119648 -0.265223 -0.956735
+vn 0.169138 -0.204139 -0.964220
+vn 0.001272 -0.634878 -0.772612
+vn 0.005610 -0.562429 -0.826827
+vn 0.020241 -0.562919 -0.826264
+vn 0.050528 -0.559192 -0.827497
+vn 0.105392 -0.542162 -0.833638
+vn 0.195678 -0.491703 -0.848492
+vn 0.318512 -0.375044 -0.870570
+vn 0.471537 -0.253988 -0.844478
+vn 0.001690 -0.893187 -0.449682
+vn 0.007527 -0.864690 -0.502250
+vn 0.027725 -0.864817 -0.501320
+vn 0.070087 -0.861739 -0.502487
+vn 0.148764 -0.847046 -0.510277
+vn 0.286748 -0.796752 -0.531942
+vn 0.499111 -0.651697 -0.571120
+vn 0.713084 -0.353733 -0.605297
+vn 0.828304 -0.086086 -0.553626
+vn 0.001713 -0.940241 -0.340506
+vn 0.005690 -0.940302 -0.340295
+vn 0.023554 -0.940221 -0.339750
+vn 0.062588 -0.938096 -0.340674
+vn 0.136375 -0.928168 -0.346275
+vn 0.269118 -0.892195 -0.362717
+vn 0.489302 -0.777067 -0.395918
+vn 0.755282 -0.493134 -0.431704
+vn 0.929279 -0.055888 -0.365125
+vn 0.986522 0.100169 -0.129389
+vn 0.953627 0.096822 -0.284994
+vn -0.106027 0.993098 0.050151
+vn -0.104360 0.913734 0.392682
+vn -0.227054 0.918683 0.323215
+vn -0.247581 0.968862 -0.003204
+vn -0.500604 0.809913 0.305674
+vn -0.543280 0.839548 -0.002443
+vn -0.738172 0.611760 0.284347
+vn -0.788111 0.615532 -0.001267
+vn -0.859181 0.430191 0.277027
+vn -0.908855 0.417106 0.002320
+vn -0.883747 0.357762 0.301659
+vn -0.940512 0.339678 0.007463
+vn -0.842491 0.408072 0.351690
+vn -0.915901 0.401220 0.012129
+vn -0.731153 0.558098 0.392355
+vn -0.811395 0.584396 0.010893
+vn -0.574898 0.723608 0.381947
+vn -0.638425 0.769683 0.001224
+vn -0.082324 0.687969 0.721056
+vn -0.163649 0.735593 0.657360
+vn -0.360639 0.681303 0.636998
+vn -0.556181 0.560610 0.613497
+vn -0.670121 0.434647 0.601680
+vn -0.685800 0.375761 0.623284
+vn -0.627983 0.397527 0.669036
+vn -0.523307 0.478509 0.705109
+vn -0.411083 0.591465 0.693671
+vn -0.028672 0.337043 0.941052
+vn -0.051426 0.416168 0.907832
+vn -0.117010 0.422795 0.898639
+vn -0.209048 0.401899 0.891502
+vn -0.291355 0.361653 0.885618
+vn -0.326255 0.329855 0.885863
+vn -0.310234 0.322816 0.894173
+vn -0.264574 0.332603 0.905194
+vn -0.213353 0.384050 0.898324
+vn 0.052110 -0.068860 0.996265
+vn 0.092630 0.020212 0.995495
+vn 0.175126 0.074285 0.981740
+vn 0.216550 0.138893 0.966341
+vn 0.191893 0.182726 0.964255
+vn 0.121239 0.191087 0.974057
+vn 0.049575 0.169094 0.984352
+vn 0.006512 0.111456 0.993748
+vn -0.002572 0.086468 0.996251
+vn 0.144082 -0.458276 0.877054
+vn 0.237810 -0.369765 0.898176
+vn 0.433051 -0.269028 0.860285
+vn 0.565425 -0.131688 0.814219
+vn 0.590834 -0.029037 0.806271
+vn 0.522195 0.000961 0.852825
+vn 0.400923 -0.045336 0.914989
+vn 0.281151 -0.177609 0.943085
+vn 0.212192 -0.291567 0.932718
+vn 0.223455 -0.760179 0.610079
+vn 0.351958 -0.676563 0.646830
+vn 0.605832 -0.525249 0.597562
+vn 0.773056 -0.327601 0.543196
+vn 0.824535 -0.192327 0.532121
+vn 0.790783 -0.170360 0.587911
+vn 0.685758 -0.266117 0.677435
+vn 0.519900 -0.469168 0.713852
+vn 0.380425 -0.634338 0.672973
+vn 0.269212 -0.923612 0.272884
+vn 0.415593 -0.851257 0.320380
+vn 0.689511 -0.664265 0.288666
+vn 0.864741 -0.432236 0.255727
+vn 0.926471 -0.283749 0.247263
+vn 0.920045 -0.276527 0.277579
+vn 0.845724 -0.416616 0.333441
+vn 0.659954 -0.660252 0.358509
+vn 0.462126 -0.825866 0.323085
+vn 0.278792 -0.959035 -0.050279
+vn 0.433030 -0.901375 0.002953
+vn 0.710353 -0.703842 0.002468
+vn 0.886550 -0.462632 0.000373
+vn 0.950419 -0.310949 -0.003671
+vn 0.951156 -0.308599 -0.008268
+vn 0.886624 -0.462379 -0.010140
+vn 0.696937 -0.717128 -0.002590
+vn 0.480552 -0.876965 0.001046
+vn 0.256459 -0.885700 -0.386995
+vn 0.414091 -0.854042 -0.314865
+vn 0.688784 -0.667174 -0.283647
+vn 0.864206 -0.433703 -0.255050
+vn 0.924626 -0.282661 -0.255284
+vn 0.916143 -0.272117 -0.294336
+vn 0.842019 -0.408733 -0.352054
+vn 0.661527 -0.656293 -0.362853
+vn 0.464054 -0.825436 -0.321418
+vn 0.197123 -0.671514 -0.714291
+vn 0.345150 -0.681380 -0.645440
+vn 0.601301 -0.532795 -0.595455
+vn 0.770781 -0.332598 -0.543392
+vn 0.820901 -0.191908 -0.537859
+vn 0.785884 -0.164262 -0.596158
+vn 0.685500 -0.255045 -0.681940
+vn 0.528863 -0.459863 -0.713323
+vn 0.386386 -0.629440 -0.674175
+vn 0.111200 -0.329456 -0.937600
+vn 0.222783 -0.372654 -0.900831
+vn 0.419978 -0.279867 -0.863303
+vn 0.559279 -0.142294 -0.816676
+vn 0.589839 -0.033718 -0.806817
+vn 0.528255 0.001777 -0.849084
+vn 0.416152 -0.040627 -0.908387
+vn 0.299851 -0.168687 -0.938954
+vn 0.221446 -0.281471 -0.933668
+vn 0.023152 0.074121 -0.996980
+vn 0.070667 0.019492 -0.997310
+vn 0.151681 0.062319 -0.986463
+vn 0.204238 0.122210 -0.971263
+vn 0.199072 0.169826 -0.965158
+vn 0.145220 0.185122 -0.971926
+vn 0.078457 0.168447 -0.982583
+vn 0.029858 0.117085 -0.992673
+vn 0.008247 0.093518 -0.995583
+vn -0.046332 0.467819 -0.882609
+vn -0.075240 0.413273 -0.907493
+vn -0.143789 0.409202 -0.901043
+vn -0.224630 0.382701 -0.896148
+vn -0.285317 0.347583 -0.893186
+vn -0.304125 0.325345 -0.895354
+vn -0.284172 0.324478 -0.902197
+vn -0.243300 0.339103 -0.908743
+vn -0.202720 0.387829 -0.899163
+vn -0.087039 0.780413 -0.619177
+vn -0.182827 0.729410 -0.659193
+vn -0.380315 0.668056 -0.639580
+vn -0.567399 0.545649 -0.616705
+vn -0.673272 0.425800 -0.604483
+vn -0.684306 0.374605 -0.625616
+vn -0.620774 0.403827 -0.671985
+vn -0.510726 0.490920 -0.705802
+vn -0.402008 0.596820 -0.694403
+vn -0.102139 0.954656 -0.279641
+vn -0.236975 0.914113 -0.328999
+vn -0.509738 0.802401 -0.310355
+vn -0.742954 0.604604 -0.287183
+vn -0.862537 0.425883 -0.273227
+vn -0.888452 0.356308 -0.289306
+vn -0.847178 0.412667 -0.334658
+vn -0.728847 0.570715 -0.378242
+vn -0.569092 0.728973 -0.380438
+vn -0.452274 0.830440 0.325297
+vn -0.498456 0.866910 -0.002818
+vn -0.353551 0.899372 0.257159
+vn -0.388726 0.921338 -0.005364
+vn -0.223213 0.963356 0.148732
+vn -0.240650 0.970555 -0.010497
+vn 0.012405 0.997803 -0.065077
+vn 0.046568 0.998561 -0.026598
+vn 0.366008 0.810303 -0.457653
+vn 0.242926 0.969421 0.034780
+vn 0.650351 -0.220370 -0.726967
+vn 0.778003 -0.551208 -0.301466
+vn 0.641926 -0.576842 -0.505157
+vn 0.689368 -0.712137 -0.132788
+vn 0.599836 -0.706575 -0.375430
+vn 0.645561 -0.759552 0.079577
+vn -0.333037 0.718123 0.611052
+vn -0.263595 0.832227 0.487766
+vn -0.173192 0.940262 0.293107
+vn -0.023758 0.998447 -0.050386
+vn 0.225016 0.784304 -0.578130
+vn 0.409742 0.168455 -0.896512
+vn 0.413188 -0.325215 -0.850595
+vn 0.428421 -0.515324 -0.742224
+vn -0.180712 0.533889 0.826018
+vn -0.149796 0.724188 0.673136
+vn -0.108435 0.903721 0.414161
+vn -0.040877 0.999145 -0.006235
+vn 0.061652 0.838435 -0.541504
+vn 0.151549 0.393653 -0.906681
+vn 0.185815 -0.034452 -0.981981
+vn 0.224647 -0.250663 -0.941648
+vn -0.001506 0.245390 0.969423
+vn -0.009296 0.545623 0.837979
+vn -0.026342 0.845595 0.533175
+vn -0.040573 0.997976 0.048968
+vn -0.036246 0.885149 -0.463895
+vn -0.019304 0.579127 -0.815009
+vn -0.005850 0.259459 -0.965737
+vn 0.030735 0.055902 -0.997963
+vn 0.204933 -0.181777 0.961748
+vn 0.192223 0.210277 0.958558
+vn 0.106713 0.733626 0.671123
+vn -0.020480 0.993428 0.112608
+vn -0.103276 0.924387 -0.367209
+vn -0.143075 0.735286 -0.662483
+vn -0.165102 0.541098 -0.824593
+vn -0.147060 0.387389 -0.910112
+vn 0.369412 -0.611146 0.700025
+vn 0.431497 -0.317833 0.844270
+vn 0.365055 0.495932 0.787900
+vn 0.039346 0.982540 0.181841
+vn -0.152327 0.955833 -0.251357
+vn -0.233196 0.857305 -0.458963
+vn -0.282494 0.766303 -0.577042
+vn -0.287557 0.680140 -0.674330
+vn 0.434576 -0.840976 0.322341
+vn 0.549000 -0.721348 0.422204
+vn 0.776588 0.115917 0.619252
+vn 0.186106 0.960126 0.208619
+vn -0.183748 0.975586 -0.120289
+vn -0.288103 0.930774 -0.225070
+vn -0.347557 0.894716 -0.280512
+vn -0.366822 0.859595 -0.355721
+vn 0.445538 -0.895242 -0.006129
+vn 0.565434 -0.824694 -0.012815
+vn 0.995431 -0.094540 -0.013388
+vn 0.356146 0.932652 0.057615
+vn -0.193662 0.981013 0.010379
+vn -0.306158 0.951969 0.004762
+vn -0.366582 0.930383 0.001994
+vn -0.390734 0.919264 -0.047743
+vn 0.436753 -0.833015 -0.339606
+vn 0.554791 -0.695425 -0.456717
+vn 0.783899 0.085536 -0.614968
+vn 0.280964 0.944166 -0.172073
+vn -0.180203 0.973149 0.143208
+vn -0.288541 0.927350 0.238258
+vn -0.348830 0.891875 0.287884
+vn -0.378693 0.892717 0.244230
+vn 0.369262 -0.593131 -0.715430
+vn 0.429743 -0.290680 -0.854884
+vn 0.405974 0.429319 -0.806765
+vn 0.093380 0.975169 -0.200810
+vn -0.145135 0.951230 0.272207
+vn -0.231561 0.848176 0.476422
+vn -0.282157 0.756803 0.589607
+vn -0.320101 0.759237 0.566652
+vn 0.205773 -0.175616 -0.962713
+vn 0.198765 0.198989 -0.959633
+vn 0.134018 0.697715 -0.703728
+vn 0.005283 0.991329 -0.131295
+vn -0.093193 0.919087 0.382877
+vn -0.138004 0.721069 0.678981
+vn -0.161337 0.525070 0.835627
+vn -0.198654 0.497359 0.844494
+vn 0.003687 0.236750 -0.971564
+vn -0.000526 0.531019 -0.847360
+vn -0.012242 0.832553 -0.553811
+vn -0.023879 0.997864 -0.060799
+vn -0.023080 0.879670 0.475025
+vn -0.011567 0.563682 0.825911
+vn -0.001095 0.244598 0.969624
+vn -0.029170 0.161268 0.986479
+vn -0.175140 0.525847 -0.832353
+vn -0.142623 0.716257 -0.683107
+vn -0.097890 0.898701 -0.427498
+vn -0.023852 0.999714 -0.001815
+vn 0.081625 0.831282 0.549825
+vn 0.160364 0.380236 0.910881
+vn 0.187892 -0.041850 0.981298
+vn 0.159851 -0.166488 0.973000
+vn -0.328462 0.713969 -0.618353
+vn -0.257420 0.828091 -0.497996
+vn -0.162932 0.937585 -0.307224
+vn -0.000526 0.999341 0.036308
+vn 0.263710 0.770912 0.579785
+vn 0.415816 0.157856 0.895644
+vn 0.409166 -0.323133 0.853327
+vn 0.356642 -0.447739 0.819962
+vn -0.449693 0.829139 -0.332123
+vn -0.349621 0.897585 -0.268525
+vn -0.215590 0.961836 -0.168503
+vn 0.036827 0.998957 0.026978
+vn 0.272927 0.885257 0.376604
+vn 0.544289 0.163320 0.822846
+vn 0.598082 -0.564119 0.569270
+vn 0.542654 -0.662532 0.516312
+vn 0.912912 0.166796 -0.372520
+vn 0.912809 0.167894 -0.372278
+vn 0.912809 0.167894 -0.372278
+vn 0.912706 0.168992 -0.372035
+vn 0.912553 0.169030 0.372392
+vn 0.912825 0.167842 0.372264
+vn 0.912825 0.167842 0.372264
+vn 0.913095 0.166655 0.372135
+vn 0.783156 -0.539468 0.309258
+vn 0.777478 -0.551941 0.301478
+vn 0.777478 -0.551941 0.301478
+vn 0.771606 -0.564278 0.293624
+vn 0.000000 1.000000 -0.000053
+vn 0.205012 0.977639 0.046817
+vn 0.210494 0.977577 0.006031
+vn 0.305793 0.950780 0.050086
+vn 0.309936 0.950704 -0.010103
+vn 0.191502 0.977727 0.085887
+vn 0.289530 0.950968 0.108777
+vn 0.170787 0.977791 0.121478
+vn 0.262233 0.951130 0.163053
+vn 0.143780 0.977809 0.152367
+vn 0.225239 0.951204 0.210901
+vn 0.111383 0.977779 0.177602
+vn 0.179884 0.951171 0.250830
+vn 0.074602 0.977707 0.196273
+vn 0.127576 0.951040 0.281509
+vn 0.034790 0.977623 0.207470
+vn 0.070107 0.950854 0.301598
+vn -0.006080 0.977587 0.210443
+vn 0.010053 0.950721 0.309885
+vn -0.046868 0.977647 0.204961
+vn -0.050135 0.950793 0.305745
+vn -0.085937 0.977733 0.191450
+vn -0.108827 0.950977 0.289480
+vn -0.121529 0.977793 0.170737
+vn -0.163103 0.951135 0.262183
+vn -0.152420 0.977809 0.143729
+vn -0.210952 0.951204 0.225189
+vn -0.177653 0.977775 0.111333
+vn -0.250880 0.951167 0.179833
+vn -0.196324 0.977701 0.074551
+vn -0.281559 0.951032 0.127526
+vn -0.207521 0.977613 0.034739
+vn -0.301648 0.950842 0.070057
+vn -0.210494 0.977576 -0.006131
+vn -0.309935 0.950705 0.010004
+vn -0.205013 0.977634 -0.046920
+vn -0.305794 0.950774 -0.050185
+vn -0.191502 0.977718 -0.085988
+vn -0.289531 0.950956 -0.108878
+vn -0.170788 0.977778 -0.121579
+vn -0.262234 0.951113 -0.163151
+vn -0.143780 0.977793 -0.152471
+vn -0.225239 0.951181 -0.211002
+vn -0.111382 0.977760 -0.177706
+vn -0.179884 0.951145 -0.250930
+vn -0.074601 0.977686 -0.196377
+vn -0.127576 0.951010 -0.281610
+vn -0.034792 0.977601 -0.207573
+vn -0.070108 0.950822 -0.301698
+vn 0.006080 0.977565 -0.210545
+vn -0.010055 0.950688 -0.309986
+vn 0.046869 0.977626 -0.205064
+vn 0.050137 0.950761 -0.305843
+vn 0.085937 0.977712 -0.191555
+vn 0.108828 0.950946 -0.289582
+vn 0.121528 0.977775 -0.170840
+vn 0.163103 0.951107 -0.262285
+vn 0.152419 0.977794 -0.143833
+vn 0.210951 0.951180 -0.225291
+vn 0.177654 0.977764 -0.111434
+vn 0.250880 0.951148 -0.179936
+vn 0.196325 0.977693 -0.074652
+vn 0.281560 0.951019 -0.127623
+vn 0.207522 0.977610 -0.034843
+vn 0.301649 0.950834 -0.070159
+vn 0.904021 0.372257 0.210166
+vn 0.927820 0.371813 0.030085
+vn 0.915968 0.372064 0.150236
+vn 0.927820 0.371810 -0.030118
+vn 0.845146 0.372873 0.383006
+vn 0.868601 0.372678 0.326562
+vn 0.753916 0.373313 0.540599
+vn 0.787781 0.373197 0.490026
+vn 0.634137 0.373439 0.677062
+vn 0.677083 0.373436 0.634116
+vn 0.490043 0.373212 0.787763
+vn 0.540626 0.373324 0.753892
+vn 0.326575 0.372701 0.868587
+vn 0.383036 0.372893 0.845124
+vn 0.150245 0.372103 0.915951
+vn 0.210193 0.372290 0.904001
+vn -0.030104 0.371859 0.927801
+vn 0.030099 0.371860 0.927801
+vn -0.210189 0.372290 0.904003
+vn -0.150258 0.372103 0.915949
+vn -0.383024 0.372892 0.845130
+vn -0.326582 0.372700 0.868584
+vn -0.540619 0.373324 0.753897
+vn -0.490043 0.373210 0.787764
+vn -0.677083 0.373436 0.634117
+vn -0.634136 0.373439 0.677063
+vn -0.787781 0.373199 0.490024
+vn -0.753910 0.373313 0.540608
+vn -0.868605 0.372680 0.326551
+vn -0.845142 0.372875 0.383014
+vn -0.915970 0.372064 0.150226
+vn -0.904020 0.372259 0.210170
+vn -0.927820 0.371810 -0.030123
+vn -0.927820 0.371813 0.030079
+vn -0.904021 0.372236 -0.210205
+vn -0.915968 0.372048 -0.150275
+vn -0.845145 0.372835 -0.383045
+vn -0.868601 0.372645 -0.326601
+vn -0.753916 0.373260 -0.540636
+vn -0.787779 0.373150 -0.490064
+vn -0.634136 0.373370 -0.677101
+vn -0.677085 0.373372 -0.634153
+vn -0.490039 0.373135 -0.787802
+vn -0.540623 0.373249 -0.753931
+vn -0.326574 0.372613 -0.868625
+vn -0.383032 0.372812 -0.845161
+vn -0.150248 0.371999 -0.915992
+vn -0.210194 0.372194 -0.904041
+vn 0.030104 0.371754 -0.927843
+vn -0.030099 0.371754 -0.927843
+vn 0.210189 0.372194 -0.904042
+vn 0.150256 0.371999 -0.915991
+vn 0.383025 0.372811 -0.845165
+vn 0.326582 0.372612 -0.868622
+vn 0.540615 0.373249 -0.753936
+vn 0.490043 0.373135 -0.787800
+vn 0.677081 0.373371 -0.634157
+vn 0.634134 0.373369 -0.677104
+vn 0.787781 0.373150 -0.490062
+vn 0.753911 0.373259 -0.540644
+vn 0.868605 0.372645 -0.326592
+vn 0.845141 0.372835 -0.383055
+vn 0.915970 0.372048 -0.150263
+vn 0.904020 0.372236 -0.210210
+vn 0.848541 -0.490953 0.197340
+vn 0.871057 -0.490367 0.028300
+vn 0.797722 -0.582509 0.155959
+vn 0.813154 -0.582045 -0.001996
+vn 0.740404 -0.655851 0.147178
+vn 0.755290 -0.655391 0.000387
+vn 0.835447 -0.523059 0.168635
+vn 0.852587 -0.522578 0.002656
+vn 0.908820 -0.389360 0.149817
+vn 0.920722 -0.389067 -0.029952
+vn 0.793052 -0.491780 0.359474
+vn 0.751201 -0.583337 0.308894
+vn 0.696579 -0.656688 0.289030
+vn 0.785720 -0.523959 0.328801
+vn 0.861458 -0.390246 0.324960
+vn 0.707305 -0.492370 0.507240
+vn 0.675966 -0.583985 0.449480
+vn 0.626224 -0.657349 0.419208
+vn 0.706070 -0.524682 0.475578
+vn 0.781125 -0.391063 0.486737
+vn 0.594914 -0.492520 0.635217
+vn 0.575344 -0.584215 0.572427
+vn 0.532496 -0.657586 0.532943
+vn 0.600042 -0.524947 0.603639
+vn 0.671565 -0.391457 0.629096
+vn 0.459801 -0.492184 0.739147
+vn 0.452919 -0.583961 0.673687
+vn 0.418676 -0.657331 0.626599
+vn 0.471325 -0.524674 0.708921
+vn 0.536740 -0.391300 0.747526
+vn 0.306514 -0.491459 0.815180
+vn 0.312723 -0.583292 0.749650
+vn 0.288413 -0.656657 0.696864
+vn 0.323996 -0.523940 0.787727
+vn 0.380866 -0.390627 0.838064
+vn 0.141060 -0.490635 0.859871
+vn 0.159991 -0.582455 0.796962
+vn 0.146479 -0.655814 0.740575
+vn 0.163449 -0.523033 0.836493
+vn 0.209355 -0.389683 0.896838
+vn -0.028274 -0.490322 0.871082
+vn 0.002027 -0.582002 0.813185
+vn -0.000354 -0.655351 0.755324
+vn -0.002629 -0.522533 0.852615
+vn 0.029978 -0.389015 0.920743
+vn -0.197321 -0.490918 0.848566
+vn -0.155931 -0.582476 0.797751
+vn -0.147144 -0.655820 0.740438
+vn -0.168608 -0.523023 0.835475
+vn -0.149802 -0.389317 0.908841
+vn -0.359449 -0.491758 0.793076
+vn -0.308866 -0.583313 0.751231
+vn -0.288997 -0.656665 0.696614
+vn -0.328774 -0.523936 0.785747
+vn -0.324940 -0.390217 0.861478
+vn -0.507210 -0.492361 0.707332
+vn -0.449445 -0.583973 0.675999
+vn -0.419171 -0.657338 0.626261
+vn -0.475548 -0.524671 0.706098
+vn -0.486718 -0.391052 0.781143
+vn -0.635191 -0.492521 0.594941
+vn -0.572394 -0.584215 0.575376
+vn -0.532909 -0.657586 0.532531
+vn -0.603612 -0.524946 0.600071
+vn -0.629071 -0.391456 0.671589
+vn -0.739121 -0.492196 0.459829
+vn -0.673655 -0.583973 0.452951
+vn -0.626561 -0.657344 0.418712
+vn -0.708897 -0.524684 0.471350
+vn -0.747508 -0.391307 0.536760
+vn -0.815154 -0.491487 0.306537
+vn -0.749621 -0.583314 0.312751
+vn -0.696827 -0.656680 0.288449
+vn -0.787696 -0.523966 0.324027
+vn -0.838048 -0.390647 0.380881
+vn -0.859846 -0.490674 0.141084
+vn -0.796932 -0.582489 0.160018
+vn -0.740543 -0.655844 0.146508
+vn -0.836464 -0.523071 0.163476
+vn -0.896815 -0.389722 0.209380
+vn -0.871057 -0.490370 -0.028248
+vn -0.813154 -0.582044 0.002058
+vn -0.755290 -0.655391 -0.000318
+vn -0.852587 -0.522578 -0.002602
+vn -0.920722 -0.389064 0.029996
+vn -0.848541 -0.490974 -0.197290
+vn -0.797722 -0.582526 -0.155896
+vn -0.740404 -0.655867 -0.147109
+vn -0.835447 -0.523077 -0.168581
+vn -0.908820 -0.389376 -0.149777
+vn -0.793050 -0.491820 -0.359423
+vn -0.751200 -0.583370 -0.308833
+vn -0.696578 -0.656718 -0.288963
+vn -0.785720 -0.523994 -0.328747
+vn -0.861458 -0.390281 -0.324918
+vn -0.707305 -0.492425 -0.507186
+vn -0.675967 -0.584035 -0.449414
+vn -0.626225 -0.657393 -0.419138
+vn -0.706071 -0.524731 -0.475522
+vn -0.781126 -0.391112 -0.486696
+vn -0.594914 -0.492587 -0.635166
+vn -0.575345 -0.584276 -0.572364
+vn -0.532496 -0.657643 -0.532873
+vn -0.600042 -0.525009 -0.603586
+vn -0.671566 -0.391521 -0.629055
+vn -0.459801 -0.492263 -0.739094
+vn -0.452918 -0.584032 -0.673626
+vn -0.418678 -0.657398 -0.626527
+vn -0.471325 -0.524748 -0.708867
+vn -0.536735 -0.391375 -0.747490
+vn -0.306512 -0.491542 -0.815130
+vn -0.312722 -0.583371 -0.749589
+vn -0.288412 -0.656730 -0.696795
+vn -0.324002 -0.524026 -0.787667
+vn -0.380870 -0.390716 -0.838021
+vn -0.141056 -0.490722 -0.859823
+vn -0.159988 -0.582538 -0.796902
+vn -0.146476 -0.655891 -0.740508
+vn -0.163449 -0.523121 -0.836438
+vn -0.209359 -0.389779 -0.896795
+vn 0.028272 -0.490412 -0.871032
+vn -0.002027 -0.582087 -0.813124
+vn 0.000355 -0.655430 -0.755256
+vn 0.002629 -0.522621 -0.852561
+vn -0.029978 -0.389111 -0.920703
+vn 0.197319 -0.491003 -0.848517
+vn 0.155928 -0.582559 -0.797691
+vn 0.147141 -0.655899 -0.740369
+vn 0.168610 -0.523111 -0.835420
+vn 0.149806 -0.389413 -0.908799
+vn 0.359446 -0.491841 -0.793026
+vn 0.308865 -0.583391 -0.751170
+vn 0.288997 -0.656740 -0.696544
+vn 0.328775 -0.524019 -0.785692
+vn 0.324939 -0.390311 -0.861436
+vn 0.507210 -0.492437 -0.707279
+vn 0.449445 -0.584045 -0.675937
+vn 0.419171 -0.657404 -0.626191
+vn 0.475548 -0.524744 -0.706043
+vn 0.486718 -0.391132 -0.781103
+vn 0.635192 -0.492585 -0.594888
+vn 0.572394 -0.584277 -0.575313
+vn 0.532911 -0.657642 -0.532460
+vn 0.603612 -0.525008 -0.600015
+vn 0.629068 -0.391525 -0.671551
+vn 0.739120 -0.492247 -0.459776
+vn 0.673655 -0.584021 -0.452889
+vn 0.626561 -0.657389 -0.418643
+vn 0.708899 -0.524732 -0.471294
+vn 0.747511 -0.391361 -0.536716
+vn 0.815153 -0.491520 -0.306485
+vn 0.749620 -0.583347 -0.312690
+vn 0.696827 -0.656710 -0.288381
+vn 0.787695 -0.524001 -0.323975
+vn 0.838048 -0.390687 -0.380840
+vn 0.859845 -0.490689 -0.141032
+vn 0.796932 -0.582506 -0.159957
+vn 0.740543 -0.655859 -0.146439
+vn 0.836464 -0.523088 -0.163422
+vn 0.896815 -0.389745 -0.209338
+vn 0.859586 0.469826 0.200938
+vn 0.882460 0.469501 0.028850
+vn 0.871033 0.469708 0.143792
+vn 0.882459 0.469503 -0.028851
+vn 0.803363 0.470235 0.365359
+vn 0.825674 0.470138 0.311822
+vn 0.716716 0.470507 0.514725
+vn 0.748790 0.470456 0.466889
+vn 0.603292 0.470592 0.643880
+vn 0.643926 0.470586 0.603248
+vn 0.466885 0.470480 0.748777
+vn 0.514820 0.470522 0.716638
+vn 0.311765 0.470171 0.825676
+vn 0.365478 0.470266 0.803290
+vn 0.143717 0.469748 0.871024
+vn 0.201008 0.469868 0.859546
+vn -0.028874 0.469546 0.882436
+vn 0.028826 0.469551 0.882435
+vn -0.200964 0.469861 0.859561
+vn -0.143817 0.469746 0.871008
+vn -0.365389 0.470261 0.803334
+vn -0.311848 0.470166 0.825648
+vn -0.514750 0.470520 0.716689
+vn -0.466917 0.470474 0.748761
+vn -0.643901 0.470589 0.603273
+vn -0.603269 0.470589 0.643904
+vn -0.748804 0.470463 0.466859
+vn -0.716662 0.470508 0.514799
+vn -0.825702 0.470145 0.311735
+vn -0.803319 0.470242 0.365448
+vn -0.871048 0.469710 0.143694
+vn -0.859571 0.469833 0.200982
+vn -0.882460 0.469499 -0.028898
+vn -0.882459 0.469506 0.028802
+vn -0.859585 0.469805 -0.200990
+vn -0.871033 0.469693 -0.143842
+vn -0.803364 0.470196 -0.365406
+vn -0.825674 0.470105 -0.311872
+vn -0.716716 0.470451 -0.514776
+vn -0.748790 0.470407 -0.466937
+vn -0.603296 0.470522 -0.643928
+vn -0.643928 0.470519 -0.603299
+vn -0.466878 0.470402 -0.748830
+vn -0.514820 0.470445 -0.716688
+vn -0.311767 0.470083 -0.825726
+vn -0.365471 0.470182 -0.803343
+vn -0.143723 0.469651 -0.871075
+vn -0.201015 0.469774 -0.859596
+vn 0.028874 0.469448 -0.882488
+vn -0.028826 0.469452 -0.882487
+vn 0.200970 0.469768 -0.859610
+vn 0.143818 0.469649 -0.871060
+vn 0.365386 0.470176 -0.803385
+vn 0.311850 0.470078 -0.825698
+vn 0.514750 0.470443 -0.716739
+vn 0.466912 0.470395 -0.748813
+vn 0.643900 0.470523 -0.603325
+vn 0.603272 0.470519 -0.643952
+vn 0.748805 0.470414 -0.466906
+vn 0.716662 0.470452 -0.514850
+vn 0.825702 0.470112 -0.311785
+vn 0.803319 0.470203 -0.365496
+vn 0.871048 0.469695 -0.143743
+vn 0.859570 0.469813 -0.201035
+vn 0.418067 0.903142 0.097746
+vn 0.429538 0.902940 0.014007
+vn 0.390299 0.903407 0.177547
+vn 0.347953 0.903588 0.249916
+vn 0.292863 0.903636 0.312528
+vn 0.226774 0.903543 0.363569
+vn 0.151602 0.903329 0.401265
+vn 0.069979 0.903068 0.423759
+vn -0.014055 0.902962 0.429491
+vn -0.097794 0.903158 0.418022
+vn -0.177595 0.903417 0.390253
+vn -0.249963 0.903593 0.347906
+vn -0.312575 0.903634 0.292818
+vn -0.363616 0.903536 0.226730
+vn -0.401311 0.903316 0.151558
+vn -0.423806 0.903049 0.069931
+vn -0.429538 0.902939 -0.014102
+vn -0.418067 0.903132 -0.097845
+vn -0.390297 0.903389 -0.177643
+vn -0.347951 0.903562 -0.250011
+vn -0.292864 0.903603 -0.312622
+vn -0.226774 0.903506 -0.363663
+vn -0.151602 0.903287 -0.401359
+vn -0.069979 0.903023 -0.423854
+vn 0.014054 0.902917 -0.429585
+vn 0.097795 0.903115 -0.418114
+vn 0.177594 0.903377 -0.390346
+vn 0.249964 0.903556 -0.347999
+vn 0.312575 0.903604 -0.292910
+vn 0.363615 0.903514 -0.226820
+vn 0.401311 0.903301 -0.151648
+vn 0.423806 0.903042 -0.070025
+vn 0.335437 0.939901 0.063773
+vn 0.341697 0.939805 -0.002985
+vn 0.209735 0.976920 0.040491
+vn 0.213792 0.976878 -0.001266
+vn 0.160135 0.986595 0.031415
+vn 0.163339 0.986570 -0.000482
+vn 0.150831 0.988100 0.030134
+vn 0.153961 0.988077 0.000073
+vn 0.179088 0.983156 0.036483
+vn 0.182944 0.983123 0.000769
+vn 0.274199 0.959982 0.057009
+vn 0.280315 0.959905 0.002296
+vn 0.346391 0.936348 0.057146
+vn 0.351086 0.936272 -0.011537
+vn 0.315972 0.940074 0.128154
+vn 0.197413 0.976992 0.080719
+vn 0.150624 0.986638 0.062114
+vn 0.141766 0.988138 0.059036
+vn 0.168192 0.983210 0.070783
+vn 0.257319 0.960102 0.109506
+vn 0.327966 0.936537 0.123842
+vn 0.284609 0.940205 0.187113
+vn 0.177672 0.977047 0.117527
+vn 0.135457 0.986671 0.090182
+vn 0.127385 0.988167 0.085439
+vn 0.150990 0.983249 0.102091
+vn 0.230797 0.960188 0.157389
+vn 0.297138 0.936689 0.185264
+vn 0.242822 0.940256 0.238653
+vn 0.151439 0.977068 0.149683
+vn 0.115342 0.986683 0.114686
+vn 0.108347 0.988178 0.108471
+vn 0.128276 0.983264 0.129375
+vn 0.195834 0.960218 0.199073
+vn 0.255430 0.936752 0.239273
+vn 0.192009 0.940218 0.281288
+vn 0.119583 0.977052 0.176266
+vn 0.090946 0.986673 0.134924
+vn 0.085285 0.988169 0.127470
+vn 0.100789 0.983250 0.151856
+vn 0.153563 0.960188 0.233360
+vn 0.204264 0.936725 0.284291
+vn 0.133636 0.940097 0.313624
+vn 0.083018 0.977001 0.196408
+vn 0.062963 0.986644 0.150233
+vn 0.058856 0.988142 0.141812
+vn 0.069317 0.983212 0.168787
+vn 0.105220 0.960099 0.259112
+vn 0.145129 0.936606 0.318914
+vn 0.069633 0.939929 0.334192
+vn 0.042947 0.976933 0.209184
+vn 0.032320 0.986603 0.159906
+vn 0.029939 0.988106 0.150831
+vn 0.034909 0.983162 0.179373
+vn 0.052418 0.959983 0.275109
+vn 0.079930 0.936426 0.341641
+vn 0.002935 0.939824 0.341647
+vn 0.001215 0.976890 0.213740
+vn 0.000431 0.986578 0.163287
+vn -0.000125 0.988085 0.153909
+vn -0.000821 0.983133 0.182892
+vn -0.002347 0.959920 0.280265
+vn 0.011488 0.936291 0.351037
+vn -0.063822 0.939916 0.335388
+vn -0.040543 0.976929 0.209682
+vn -0.031466 0.986602 0.160084
+vn -0.030186 0.988107 0.150779
+vn -0.036535 0.983164 0.179037
+vn -0.057061 0.959993 0.274150
+vn -0.057197 0.936363 0.346341
+vn -0.128203 0.940083 0.315924
+vn -0.080771 0.976998 0.197361
+vn -0.062166 0.986642 0.150572
+vn -0.059088 0.988142 0.141714
+vn -0.070834 0.983215 0.168140
+vn -0.109557 0.960108 0.257273
+vn -0.123895 0.936545 0.327924
+vn -0.187162 0.940211 0.284560
+vn -0.117579 0.977050 0.177621
+vn -0.090234 0.986673 0.135404
+vn -0.085491 0.988169 0.127332
+vn -0.102142 0.983252 0.150938
+vn -0.157440 0.960192 0.230747
+vn -0.185313 0.936693 0.297093
+vn -0.238702 0.940257 0.242772
+vn -0.149734 0.977068 0.151388
+vn -0.114738 0.986683 0.115289
+vn -0.108523 0.988178 0.108295
+vn -0.129427 0.983264 0.128224
+vn -0.199123 0.960218 0.195784
+vn -0.239322 0.936752 0.255381
+vn -0.281337 0.940213 0.191959
+vn -0.176318 0.977049 0.119532
+vn -0.134976 0.986671 0.090893
+vn -0.127522 0.988167 0.085233
+vn -0.151908 0.983248 0.100737
+vn -0.233408 0.960185 0.153512
+vn -0.284339 0.936721 0.204216
+vn -0.313673 0.940087 0.133587
+vn -0.196460 0.976996 0.082966
+vn -0.150285 0.986639 0.062911
+vn -0.141864 0.988138 0.058804
+vn -0.168838 0.983207 0.069265
+vn -0.259158 0.960092 0.105166
+vn -0.318954 0.936601 0.145076
+vn -0.334241 0.939915 0.069584
+vn -0.209236 0.976924 0.042896
+vn -0.159958 0.986596 0.032268
+vn -0.150883 0.988100 0.029887
+vn -0.179425 0.983154 0.034857
+vn -0.275159 0.959971 0.052367
+vn -0.341686 0.936413 0.079877
+vn -0.341697 0.939806 0.002886
+vn -0.213792 0.976879 0.001164
+vn -0.163339 0.986570 0.000379
+vn -0.153961 0.988077 -0.000178
+vn -0.182944 0.983123 -0.000873
+vn -0.280315 0.959905 -0.002397
+vn -0.351086 0.936273 0.011439
+vn -0.335438 0.939895 -0.063871
+vn -0.209734 0.976915 -0.040594
+vn -0.160136 0.986592 -0.031518
+vn -0.150831 0.988097 -0.030238
+vn -0.179088 0.983152 -0.036587
+vn -0.274198 0.959976 -0.057110
+vn -0.346391 0.936342 -0.057244
+vn -0.315972 0.940060 -0.128253
+vn -0.197413 0.976983 -0.080823
+vn -0.150624 0.986631 -0.062217
+vn -0.141766 0.988132 -0.059140
+vn -0.168192 0.983202 -0.070886
+vn -0.257319 0.960090 -0.109607
+vn -0.327965 0.936524 -0.123940
+vn -0.284608 0.940186 -0.187211
+vn -0.177672 0.977034 -0.117631
+vn -0.135457 0.986661 -0.090286
+vn -0.127385 0.988158 -0.085543
+vn -0.150989 0.983239 -0.102194
+vn -0.230797 0.960172 -0.157490
+vn -0.297138 0.936670 -0.185363
+vn -0.242821 0.940232 -0.238752
+vn -0.151438 0.977052 -0.149787
+vn -0.115342 0.986671 -0.114790
+vn -0.108347 0.988166 -0.108575
+vn -0.128276 0.983250 -0.129478
+vn -0.195834 0.960197 -0.199174
+vn -0.255431 0.936727 -0.239371
+vn -0.192010 0.940188 -0.281386
+vn -0.119584 0.977033 -0.176369
+vn -0.090945 0.986659 -0.135027
+vn -0.085286 0.988155 -0.127574
+vn -0.100789 0.983234 -0.151960
+vn -0.153563 0.960164 -0.233459
+vn -0.204266 0.936696 -0.284388
+vn -0.133635 0.940064 -0.313722
+vn -0.083018 0.976981 -0.196511
+vn -0.062962 0.986628 -0.150336
+vn -0.058855 0.988127 -0.141916
+vn -0.069318 0.983194 -0.168890
+vn -0.105217 0.960073 -0.259209
+vn -0.145126 0.936576 -0.319004
+vn -0.069633 0.939894 -0.334291
+vn -0.042948 0.976910 -0.209288
+vn -0.032320 0.986586 -0.160010
+vn -0.029937 0.988090 -0.150935
+vn -0.034908 0.983143 -0.179477
+vn -0.052417 0.959954 -0.275210
+vn -0.079926 0.936391 -0.341736
+vn -0.002935 0.939788 -0.341747
+vn -0.001215 0.976867 -0.213843
+vn -0.000431 0.986561 -0.163391
+vn 0.000125 0.988069 -0.154013
+vn 0.000821 0.983114 -0.182995
+vn 0.002347 0.959890 -0.280366
+vn -0.011488 0.936254 -0.351136
+vn 0.063822 0.939881 -0.335486
+vn 0.040542 0.976906 -0.209787
+vn 0.031466 0.986585 -0.160187
+vn 0.030184 0.988090 -0.150885
+vn 0.036534 0.983145 -0.179140
+vn 0.057059 0.959964 -0.274249
+vn 0.057195 0.936327 -0.346441
+vn 0.128204 0.940050 -0.316020
+vn 0.080771 0.976977 -0.197465
+vn 0.062166 0.986627 -0.150675
+vn 0.059087 0.988128 -0.141818
+vn 0.070834 0.983197 -0.168246
+vn 0.109556 0.960083 -0.257369
+vn 0.123891 0.936513 -0.328015
+vn 0.187162 0.940181 -0.284658
+vn 0.117579 0.977031 -0.177723
+vn 0.090234 0.986659 -0.135508
+vn 0.085492 0.988155 -0.127436
+vn 0.102144 0.983236 -0.151042
+vn 0.157440 0.960168 -0.230847
+vn 0.185313 0.936664 -0.297187
+vn 0.238702 0.940231 -0.242872
+vn 0.149734 0.977052 -0.151491
+vn 0.114737 0.986671 -0.115394
+vn 0.108523 0.988166 -0.108399
+vn 0.129427 0.983250 -0.128328
+vn 0.199123 0.960198 -0.195884
+vn 0.239322 0.936726 -0.255480
+vn 0.281336 0.940193 -0.192059
+vn 0.176317 0.977036 -0.119634
+vn 0.134976 0.986661 -0.090998
+vn 0.127522 0.988158 -0.085336
+vn 0.151908 0.983237 -0.100841
+vn 0.233408 0.960169 -0.153613
+vn 0.284339 0.936700 -0.204315
+vn 0.313673 0.940073 -0.133685
+vn 0.196460 0.976987 -0.083070
+vn 0.150285 0.986632 -0.063015
+vn 0.141864 0.988132 -0.058908
+vn 0.168838 0.983200 -0.069369
+vn 0.259158 0.960081 -0.105267
+vn 0.318954 0.936586 -0.145174
+vn 0.334241 0.939908 -0.069682
+vn 0.209236 0.976919 -0.042999
+vn 0.159958 0.986593 -0.032372
+vn 0.150883 0.988097 -0.029991
+vn 0.179424 0.983150 -0.034960
+vn 0.275159 0.959966 -0.052468
+vn 0.341686 0.936405 -0.079975
+vn 0.765973 0.617400 0.179171
+vn 0.786598 0.616930 0.025703
+vn 0.776300 0.617195 0.128179
+vn 0.786597 0.616928 -0.025773
+vn 0.715610 0.617965 0.325611
+vn 0.735613 0.617783 0.277883
+vn 0.638261 0.618382 0.458505
+vn 0.666914 0.618256 0.415916
+vn 0.537271 0.618506 0.573402
+vn 0.573431 0.618504 0.537242
+vn 0.415942 0.618285 0.666870
+vn 0.458540 0.618390 0.638228
+vn 0.277903 0.617840 0.735557
+vn 0.325634 0.618018 0.715553
+vn 0.128211 0.617229 0.776267
+vn 0.179200 0.617450 0.765926
+vn -0.025735 0.616973 0.786564
+vn 0.025740 0.616972 0.786564
+vn -0.179205 0.617450 0.765925
+vn -0.128212 0.617230 0.776266
+vn -0.325634 0.618017 0.715554
+vn -0.277910 0.617840 0.735554
+vn -0.458533 0.618391 0.638232
+vn -0.415938 0.618284 0.666873
+vn -0.573435 0.618504 0.537239
+vn -0.537274 0.618507 0.573399
+vn -0.666912 0.618255 0.415920
+vn -0.638260 0.618381 0.458508
+vn -0.735613 0.617783 0.277880
+vn -0.715608 0.617963 0.325617
+vn -0.776300 0.617195 0.128173
+vn -0.765972 0.617402 0.179166
+vn -0.786597 0.616928 -0.025768
+vn -0.786597 0.616931 0.025708
+vn -0.765972 0.617383 -0.179236
+vn -0.776299 0.617181 -0.128244
+vn -0.715610 0.617929 -0.325676
+vn -0.735612 0.617754 -0.277947
+vn -0.638262 0.618332 -0.458570
+vn -0.666914 0.618211 -0.415981
+vn -0.537272 0.618444 -0.573468
+vn -0.573432 0.618447 -0.537307
+vn -0.415953 0.618199 -0.666944
+vn -0.458540 0.618322 -0.638293
+vn -0.277913 0.617729 -0.735646
+vn -0.325649 0.617909 -0.715640
+vn -0.128205 0.617146 -0.776334
+vn -0.179199 0.617352 -0.766006
+vn 0.025735 0.616888 -0.786630
+vn -0.025740 0.616888 -0.786630
+vn 0.179204 0.617351 -0.766005
+vn 0.128211 0.617147 -0.776332
+vn 0.325643 0.617909 -0.715643
+vn 0.277915 0.617729 -0.735645
+vn 0.458538 0.618323 -0.638295
+vn 0.415949 0.618198 -0.666947
+vn 0.573436 0.618446 -0.537304
+vn 0.537275 0.618445 -0.573464
+vn 0.666911 0.618212 -0.415985
+vn 0.638261 0.618332 -0.458572
+vn 0.735612 0.617755 -0.277945
+vn 0.715607 0.617930 -0.325681
+vn 0.776301 0.617181 -0.128238
+vn 0.765972 0.617384 -0.179231
+# 2081 vertices
+
+# 0 vertex parms
+
+# 0 texture vertices
+
+# 2443 normals
+
+g Teapot01
+s 1
+f 1//65 2//66 3//67
+f 3//67 4//68 1//65
+f 4//68 3//67 5//69
+f 5//69 6//70 4//68
+f 6//70 5//69 7//71
+f 7//71 8//72 6//70
+s 2
+f 8//194 7//193 9//195
+f 9//195 10//196 8//194
+s 3
+f 10//258 9//257 11//259
+f 11//259 12//260 10//258
+f 12//260 11//259 13//261
+f 13//261 14//262 12//260
+f 14//262 13//261 15//263
+f 15//263 16//264 14//262
+f 16//264 15//263 17//265
+f 17//265 18//266 16//264
+s 1
+f 2//66 19//73 20//74
+f 20//74 3//67 2//66
+f 3//67 20//74 21//75
+f 21//75 5//69 3//67
+f 5//69 21//75 22//76
+f 22//76 7//71 5//69
+s 2
+f 7//193 22//197 23//198
+f 23//198 9//195 7//193
+s 3
+f 9//257 23//267 24//268
+f 24//268 11//259 9//257
+f 11//259 24//268 25//269
+f 25//269 13//261 11//259
+f 13//261 25//269 26//270
+f 26//270 15//263 13//261
+f 15//263 26//270 27//271
+f 27//271 17//265 15//263
+s 1
+f 19//73 28//77 29//78
+f 29//78 20//74 19//73
+f 20//74 29//78 30//79
+f 30//79 21//75 20//74
+f 21//75 30//79 31//80
+f 31//80 22//76 21//75
+s 2
+f 22//197 31//199 32//200
+f 32//200 23//198 22//197
+s 3
+f 23//267 32//272 33//273
+f 33//273 24//268 23//267
+f 24//268 33//273 34//274
+f 34//274 25//269 24//268
+f 25//269 34//274 35//275
+f 35//275 26//270 25//269
+f 26//270 35//275 36//276
+f 36//276 27//271 26//270
+s 1
+f 28//77 37//81 38//82
+f 38//82 29//78 28//77
+f 29//78 38//82 39//83
+f 39//83 30//79 29//78
+f 30//79 39//83 40//84
+f 40//84 31//80 30//79
+s 2
+f 31//199 40//201 41//202
+f 41//202 32//200 31//199
+s 3
+f 32//272 41//277 42//278
+f 42//278 33//273 32//272
+f 33//273 42//278 43//279
+f 43//279 34//274 33//273
+f 34//274 43//279 44//280
+f 44//280 35//275 34//274
+f 35//275 44//280 45//281
+f 45//281 36//276 35//275
+s 1
+f 37//81 46//85 47//86
+f 47//86 38//82 37//81
+f 38//82 47//86 48//87
+f 48//87 39//83 38//82
+f 39//83 48//87 49//88
+f 49//88 40//84 39//83
+s 2
+f 40//201 49//203 50//204
+f 50//204 41//202 40//201
+s 3
+f 41//277 50//282 51//283
+f 51//283 42//278 41//277
+f 42//278 51//283 52//284
+f 52//284 43//279 42//278
+f 43//279 52//284 53//285
+f 53//285 44//280 43//279
+f 44//280 53//285 54//286
+f 54//286 45//281 44//280
+s 1
+f 46//85 55//89 56//90
+f 56//90 47//86 46//85
+f 47//86 56//90 57//91
+f 57//91 48//87 47//86
+f 48//87 57//91 58//92
+f 58//92 49//88 48//87
+s 2
+f 49//203 58//205 59//206
+f 59//206 50//204 49//203
+s 3
+f 50//282 59//287 60//288
+f 60//288 51//283 50//282
+f 51//283 60//288 61//289
+f 61//289 52//284 51//283
+f 52//284 61//289 62//290
+f 62//290 53//285 52//284
+f 53//285 62//290 63//291
+f 63//291 54//286 53//285
+s 1
+f 55//89 64//93 65//94
+f 65//94 56//90 55//89
+f 56//90 65//94 66//95
+f 66//95 57//91 56//90
+f 57//91 66//95 67//96
+f 67//96 58//92 57//91
+s 2
+f 58//205 67//207 68//208
+f 68//208 59//206 58//205
+s 3
+f 59//287 68//292 69//293
+f 69//293 60//288 59//287
+f 60//288 69//293 70//294
+f 70//294 61//289 60//288
+f 61//289 70//294 71//295
+f 71//295 62//290 61//289
+f 62//290 71//295 72//296
+f 72//296 63//291 62//290
+s 1
+f 64//93 73//97 74//98
+f 74//98 65//94 64//93
+f 65//94 74//98 75//99
+f 75//99 66//95 65//94
+f 66//95 75//99 76//100
+f 76//100 67//96 66//95
+s 2
+f 67//207 76//209 77//210
+f 77//210 68//208 67//207
+s 3
+f 68//292 77//297 78//298
+f 78//298 69//293 68//292
+f 69//293 78//298 79//299
+f 79//299 70//294 69//293
+f 70//294 79//299 80//300
+f 80//300 71//295 70//294
+f 71//295 80//300 81//301
+f 81//301 72//296 71//295
+s 1
+f 73//97 82//101 83//102
+f 83//102 74//98 73//97
+f 74//98 83//102 84//103
+f 84//103 75//99 74//98
+f 75//99 84//103 85//104
+f 85//104 76//100 75//99
+s 2
+f 76//209 85//211 86//212
+f 86//212 77//210 76//209
+s 3
+f 77//297 86//302 87//303
+f 87//303 78//298 77//297
+f 78//298 87//303 88//304
+f 88//304 79//299 78//298
+f 79//299 88//304 89//305
+f 89//305 80//300 79//299
+f 80//300 89//305 90//306
+f 90//306 81//301 80//300
+s 1
+f 82//101 91//105 92//106
+f 92//106 83//102 82//101
+f 83//102 92//106 93//107
+f 93//107 84//103 83//102
+f 84//103 93//107 94//108
+f 94//108 85//104 84//103
+s 2
+f 85//211 94//213 95//214
+f 95//214 86//212 85//211
+s 3
+f 86//302 95//307 96//308
+f 96//308 87//303 86//302
+f 87//303 96//308 97//309
+f 97//309 88//304 87//303
+f 88//304 97//309 98//310
+f 98//310 89//305 88//304
+f 89//305 98//310 99//311
+f 99//311 90//306 89//305
+s 1
+f 91//105 100//109 101//110
+f 101//110 92//106 91//105
+f 92//106 101//110 102//111
+f 102//111 93//107 92//106
+f 93//107 102//111 103//112
+f 103//112 94//108 93//107
+s 2
+f 94//213 103//215 104//216
+f 104//216 95//214 94//213
+s 3
+f 95//307 104//312 105//313
+f 105//313 96//308 95//307
+f 96//308 105//313 106//314
+f 106//314 97//309 96//308
+f 97//309 106//314 107//315
+f 107//315 98//310 97//309
+f 98//310 107//315 108//316
+f 108//316 99//311 98//310
+s 1
+f 100//109 109//113 110//114
+f 110//114 101//110 100//109
+f 101//110 110//114 111//115
+f 111//115 102//111 101//110
+f 102//111 111//115 112//116
+f 112//116 103//112 102//111
+s 2
+f 103//215 112//217 113//218
+f 113//218 104//216 103//215
+s 3
+f 104//312 113//317 114//318
+f 114//318 105//313 104//312
+f 105//313 114//318 115//319
+f 115//319 106//314 105//313
+f 106//314 115//319 116//320
+f 116//320 107//315 106//314
+f 107//315 116//320 117//321
+f 117//321 108//316 107//315
+s 1
+f 109//113 118//117 119//118
+f 119//118 110//114 109//113
+f 110//114 119//118 120//119
+f 120//119 111//115 110//114
+f 111//115 120//119 121//120
+f 121//120 112//116 111//115
+s 2
+f 112//217 121//219 122//220
+f 122//220 113//218 112//217
+s 3
+f 113//317 122//322 123//323
+f 123//323 114//318 113//317
+f 114//318 123//323 124//324
+f 124//324 115//319 114//318
+f 115//319 124//324 125//325
+f 125//325 116//320 115//319
+f 116//320 125//325 126//326
+f 126//326 117//321 116//320
+s 1
+f 118//117 127//121 128//122
+f 128//122 119//118 118//117
+f 119//118 128//122 129//123
+f 129//123 120//119 119//118
+f 120//119 129//123 130//124
+f 130//124 121//120 120//119
+s 2
+f 121//219 130//221 131//222
+f 131//222 122//220 121//219
+s 3
+f 122//322 131//327 132//328
+f 132//328 123//323 122//322
+f 123//323 132//328 133//329
+f 133//329 124//324 123//323
+f 124//324 133//329 134//330
+f 134//330 125//325 124//324
+f 125//325 134//330 135//331
+f 135//331 126//326 125//325
+s 1
+f 127//121 136//125 137//126
+f 137//126 128//122 127//121
+f 128//122 137//126 138//127
+f 138//127 129//123 128//122
+f 129//123 138//127 139//128
+f 139//128 130//124 129//123
+s 2
+f 130//221 139//223 140//224
+f 140//224 131//222 130//221
+s 3
+f 131//327 140//332 141//333
+f 141//333 132//328 131//327
+f 132//328 141//333 142//334
+f 142//334 133//329 132//328
+f 133//329 142//334 143//335
+f 143//335 134//330 133//329
+f 134//330 143//335 144//336
+f 144//336 135//331 134//330
+s 1
+f 136//125 145//129 146//130
+f 146//130 137//126 136//125
+f 137//126 146//130 147//131
+f 147//131 138//127 137//126
+f 138//127 147//131 148//132
+f 148//132 139//128 138//127
+s 2
+f 139//223 148//225 149//226
+f 149//226 140//224 139//223
+s 3
+f 140//332 149//337 150//338
+f 150//338 141//333 140//332
+f 141//333 150//338 151//339
+f 151//339 142//334 141//333
+f 142//334 151//339 152//340
+f 152//340 143//335 142//334
+f 143//335 152//340 153//341
+f 153//341 144//336 143//335
+s 1
+f 145//129 154//133 155//134
+f 155//134 146//130 145//129
+f 146//130 155//134 156//135
+f 156//135 147//131 146//130
+f 147//131 156//135 157//136
+f 157//136 148//132 147//131
+s 2
+f 148//225 157//227 158//228
+f 158//228 149//226 148//225
+s 3
+f 149//337 158//342 159//343
+f 159//343 150//338 149//337
+f 150//338 159//343 160//344
+f 160//344 151//339 150//338
+f 151//339 160//344 161//345
+f 161//345 152//340 151//339
+f 152//340 161//345 162//346
+f 162//346 153//341 152//340
+s 1
+f 154//133 163//137 164//138
+f 164//138 155//134 154//133
+f 155//134 164//138 165//139
+f 165//139 156//135 155//134
+f 156//135 165//139 166//140
+f 166//140 157//136 156//135
+s 2
+f 157//227 166//229 167//230
+f 167//230 158//228 157//227
+s 3
+f 158//342 167//347 168//348
+f 168//348 159//343 158//342
+f 159//343 168//348 169//349
+f 169//349 160//344 159//343
+f 160//344 169//349 170//350
+f 170//350 161//345 160//344
+f 161//345 170//350 171//351
+f 171//351 162//346 161//345
+s 1
+f 163//137 172//141 173//142
+f 173//142 164//138 163//137
+f 164//138 173//142 174//143
+f 174//143 165//139 164//138
+f 165//139 174//143 175//144
+f 175//144 166//140 165//139
+s 2
+f 166//229 175//231 176//232
+f 176//232 167//230 166//229
+s 3
+f 167//347 176//352 177//353
+f 177//353 168//348 167//347
+f 168//348 177//353 178//354
+f 178//354 169//349 168//348
+f 169//349 178//354 179//355
+f 179//355 170//350 169//349
+f 170//350 179//355 180//356
+f 180//356 171//351 170//350
+s 1
+f 172//141 181//145 182//146
+f 182//146 173//142 172//141
+f 173//142 182//146 183//147
+f 183//147 174//143 173//142
+f 174//143 183//147 184//148
+f 184//148 175//144 174//143
+s 2
+f 175//231 184//233 185//234
+f 185//234 176//232 175//231
+s 3
+f 176//352 185//357 186//358
+f 186//358 177//353 176//352
+f 177//353 186//358 187//359
+f 187//359 178//354 177//353
+f 178//354 187//359 188//360
+f 188//360 179//355 178//354
+f 179//355 188//360 189//361
+f 189//361 180//356 179//355
+s 1
+f 181//145 190//149 191//150
+f 191//150 182//146 181//145
+f 182//146 191//150 192//151
+f 192//151 183//147 182//146
+f 183//147 192//151 193//152
+f 193//152 184//148 183//147
+s 2
+f 184//233 193//235 194//236
+f 194//236 185//234 184//233
+s 3
+f 185//357 194//362 195//363
+f 195//363 186//358 185//357
+f 186//358 195//363 196//364
+f 196//364 187//359 186//358
+f 187//359 196//364 197//365
+f 197//365 188//360 187//359
+f 188//360 197//365 198//366
+f 198//366 189//361 188//360
+s 1
+f 190//149 199//153 200//154
+f 200//154 191//150 190//149
+f 191//150 200//154 201//155
+f 201//155 192//151 191//150
+f 192//151 201//155 202//156
+f 202//156 193//152 192//151
+s 2
+f 193//235 202//237 203//238
+f 203//238 194//236 193//235
+s 3
+f 194//362 203//367 204//368
+f 204//368 195//363 194//362
+f 195//363 204//368 205//369
+f 205//369 196//364 195//363
+f 196//364 205//369 206//370
+f 206//370 197//365 196//364
+f 197//365 206//370 207//371
+f 207//371 198//366 197//365
+s 1
+f 199//153 208//157 209//158
+f 209//158 200//154 199//153
+f 200//154 209//158 210//159
+f 210//159 201//155 200//154
+f 201//155 210//159 211//160
+f 211//160 202//156 201//155
+s 2
+f 202//237 211//239 212//240
+f 212//240 203//238 202//237
+s 3
+f 203//367 212//372 213//373
+f 213//373 204//368 203//367
+f 204//368 213//373 214//374
+f 214//374 205//369 204//368
+f 205//369 214//374 215//375
+f 215//375 206//370 205//369
+f 206//370 215//375 216//376
+f 216//376 207//371 206//370
+s 1
+f 208//157 217//161 218//162
+f 218//162 209//158 208//157
+f 209//158 218//162 219//163
+f 219//163 210//159 209//158
+f 210//159 219//163 220//164
+f 220//164 211//160 210//159
+s 2
+f 211//239 220//241 221//242
+f 221//242 212//240 211//239
+s 3
+f 212//372 221//377 222//378
+f 222//378 213//373 212//372
+f 213//373 222//378 223//379
+f 223//379 214//374 213//373
+f 214//374 223//379 224//380
+f 224//380 215//375 214//374
+f 215//375 224//380 225//381
+f 225//381 216//376 215//375
+s 1
+f 217//161 226//165 227//166
+f 227//166 218//162 217//161
+f 218//162 227//166 228//167
+f 228//167 219//163 218//162
+f 219//163 228//167 229//168
+f 229//168 220//164 219//163
+s 2
+f 220//241 229//243 230//244
+f 230//244 221//242 220//241
+s 3
+f 221//377 230//382 231//383
+f 231//383 222//378 221//377
+f 222//378 231//383 232//384
+f 232//384 223//379 222//378
+f 223//379 232//384 233//385
+f 233//385 224//380 223//379
+f 224//380 233//385 234//386
+f 234//386 225//381 224//380
+s 1
+f 226//165 235//169 236//170
+f 236//170 227//166 226//165
+f 227//166 236//170 237//171
+f 237//171 228//167 227//166
+f 228//167 237//171 238//172
+f 238//172 229//168 228//167
+s 2
+f 229//243 238//245 239//246
+f 239//246 230//244 229//243
+s 3
+f 230//382 239//387 240//388
+f 240//388 231//383 230//382
+f 231//383 240//388 241//389
+f 241//389 232//384 231//383
+f 232//384 241//389 242//390
+f 242//390 233//385 232//384
+f 233//385 242//390 243//391
+f 243//391 234//386 233//385
+s 1
+f 235//169 244//173 245//174
+f 245//174 236//170 235//169
+f 236//170 245//174 246//175
+f 246//175 237//171 236//170
+f 237//171 246//175 247//176
+f 247//176 238//172 237//171
+s 2
+f 238//245 247//247 248//248
+f 248//248 239//246 238//245
+s 3
+f 239//387 248//392 249//393
+f 249//393 240//388 239//387
+f 240//388 249//393 250//394
+f 250//394 241//389 240//388
+f 241//389 250//394 251//395
+f 251//395 242//390 241//389
+f 242//390 251//395 252//396
+f 252//396 243//391 242//390
+s 1
+f 244//173 253//177 254//178
+f 254//178 245//174 244//173
+f 245//174 254//178 255//179
+f 255//179 246//175 245//174
+f 246//175 255//179 256//180
+f 256//180 247//176 246//175
+s 2
+f 247//247 256//249 257//250
+f 257//250 248//248 247//247
+s 3
+f 248//392 257//397 258//398
+f 258//398 249//393 248//392
+f 249//393 258//398 259//399
+f 259//399 250//394 249//393
+f 250//394 259//399 260//400
+f 260//400 251//395 250//394
+f 251//395 260//400 261//401
+f 261//401 252//396 251//395
+s 1
+f 253//177 262//181 263//182
+f 263//182 254//178 253//177
+f 254//178 263//182 264//183
+f 264//183 255//179 254//178
+f 255//179 264//183 265//184
+f 265//184 256//180 255//179
+s 2
+f 256//249 265//251 266//252
+f 266//252 257//250 256//249
+s 3
+f 257//397 266//402 267//403
+f 267//403 258//398 257//397
+f 258//398 267//403 268//404
+f 268//404 259//399 258//398
+f 259//399 268//404 269//405
+f 269//405 260//400 259//399
+f 260//400 269//405 270//406
+f 270//406 261//401 260//400
+s 1
+f 262//181 271//185 272//186
+f 272//186 263//182 262//181
+f 263//182 272//186 273//187
+f 273//187 264//183 263//182
+f 264//183 273//187 274//188
+f 274//188 265//184 264//183
+s 2
+f 265//251 274//253 275//254
+f 275//254 266//252 265//251
+s 3
+f 266//402 275//407 276//408
+f 276//408 267//403 266//402
+f 267//403 276//408 277//409
+f 277//409 268//404 267//403
+f 268//404 277//409 278//410
+f 278//410 269//405 268//404
+f 269//405 278//410 279//411
+f 279//411 270//406 269//405
+s 1
+f 271//185 280//189 281//190
+f 281//190 272//186 271//185
+f 272//186 281//190 282//191
+f 282//191 273//187 272//186
+f 273//187 282//191 283//192
+f 283//192 274//188 273//187
+s 2
+f 274//253 283//255 284//256
+f 284//256 275//254 274//253
+s 3
+f 275//407 284//412 285//413
+f 285//413 276//408 275//407
+f 276//408 285//413 286//414
+f 286//414 277//409 276//408
+f 277//409 286//414 287//415
+f 287//415 278//410 277//409
+f 278//410 287//415 288//416
+f 288//416 279//411 278//410
+s 1
+f 280//189 1//65 4//68
+f 4//68 281//190 280//189
+f 281//190 4//68 6//70
+f 6//70 282//191 281//190
+f 282//191 6//70 8//72
+f 8//72 283//192 282//191
+s 2
+f 283//255 8//194 10//196
+f 10//196 284//256 283//255
+s 3
+f 284//412 10//258 12//260
+f 12//260 285//413 284//412
+f 285//413 12//260 14//262
+f 14//262 286//414 285//413
+f 286//414 14//262 16//264
+f 16//264 287//415 286//414
+f 287//415 16//264 18//266
+f 18//266 288//416 287//415
+f 18//266 17//265 289//417
+f 289//417 290//418 18//266
+f 290//418 289//417 291//419
+f 291//419 292//420 290//418
+f 292//420 291//419 293//421
+f 293//421 294//422 292//420
+f 294//422 293//421 295//423
+f 295//423 296//424 294//422
+f 296//424 295//423 297//425
+f 297//425 298//426 296//424
+f 298//426 297//425 299//427
+f 299//427 300//428 298//426
+f 300//428 299//427 301//429
+f 301//429 302//430 300//428
+f 302//430 301//429 303//431
+f 303//431 304//432 302//430
+f 17//265 27//271 305//433
+f 305//433 289//417 17//265
+f 289//417 305//433 306//434
+f 306//434 291//419 289//417
+f 291//419 306//434 307//435
+f 307//435 293//421 291//419
+f 293//421 307//435 308//436
+f 308//436 295//423 293//421
+f 295//423 308//436 309//437
+f 309//437 297//425 295//423
+f 297//425 309//437 310//438
+f 310//438 299//427 297//425
+f 299//427 310//438 311//439
+f 311//439 301//429 299//427
+f 301//429 311//439 312//440
+f 312//440 303//431 301//429
+f 27//271 36//276 313//441
+f 313//441 305//433 27//271
+f 305//433 313//441 314//442
+f 314//442 306//434 305//433
+f 306//434 314//442 315//443
+f 315//443 307//435 306//434
+f 307//435 315//443 316//444
+f 316//444 308//436 307//435
+f 308//436 316//444 317//445
+f 317//445 309//437 308//436
+f 309//437 317//445 318//446
+f 318//446 310//438 309//437
+f 310//438 318//446 319//447
+f 319//447 311//439 310//438
+f 311//439 319//447 320//448
+f 320//448 312//440 311//439
+f 36//276 45//281 321//449
+f 321//449 313//441 36//276
+f 313//441 321//449 322//450
+f 322//450 314//442 313//441
+f 314//442 322//450 323//451
+f 323//451 315//443 314//442
+f 315//443 323//451 324//452
+f 324//452 316//444 315//443
+f 316//444 324//452 325//453
+f 325//453 317//445 316//444
+f 317//445 325//453 326//454
+f 326//454 318//446 317//445
+f 318//446 326//454 327//455
+f 327//455 319//447 318//446
+f 319//447 327//455 328//456
+f 328//456 320//448 319//447
+f 45//281 54//286 329//457
+f 329//457 321//449 45//281
+f 321//449 329//457 330//458
+f 330//458 322//450 321//449
+f 322//450 330//458 331//459
+f 331//459 323//451 322//450
+f 323//451 331//459 332//460
+f 332//460 324//452 323//451
+f 324//452 332//460 333//461
+f 333//461 325//453 324//452
+f 325//453 333//461 334//462
+f 334//462 326//454 325//453
+f 326//454 334//462 335//463
+f 335//463 327//455 326//454
+f 327//455 335//463 336//464
+f 336//464 328//456 327//455
+f 54//286 63//291 337//465
+f 337//465 329//457 54//286
+f 329//457 337//465 338//466
+f 338//466 330//458 329//457
+f 330//458 338//466 339//467
+f 339//467 331//459 330//458
+f 331//459 339//467 340//468
+f 340//468 332//460 331//459
+f 332//460 340//468 341//469
+f 341//469 333//461 332//460
+f 333//461 341//469 342//470
+f 342//470 334//462 333//461
+f 334//462 342//470 343//471
+f 343//471 335//463 334//462
+f 335//463 343//471 344//472
+f 344//472 336//464 335//463
+f 63//291 72//296 345//473
+f 345//473 337//465 63//291
+f 337//465 345//473 346//474
+f 346//474 338//466 337//465
+f 338//466 346//474 347//475
+f 347//475 339//467 338//466
+f 339//467 347//475 348//476
+f 348//476 340//468 339//467
+f 340//468 348//476 349//477
+f 349//477 341//469 340//468
+f 341//469 349//477 350//478
+f 350//478 342//470 341//469
+f 342//470 350//478 351//479
+f 351//479 343//471 342//470
+f 343//471 351//479 352//480
+f 352//480 344//472 343//471
+f 72//296 81//301 353//481
+f 353//481 345//473 72//296
+f 345//473 353//481 354//482
+f 354//482 346//474 345//473
+f 346//474 354//482 355//483
+f 355//483 347//475 346//474
+f 347//475 355//483 356//484
+f 356//484 348//476 347//475
+f 348//476 356//484 357//485
+f 357//485 349//477 348//476
+f 349//477 357//485 358//486
+f 358//486 350//478 349//477
+f 350//478 358//486 359//487
+f 359//487 351//479 350//478
+f 351//479 359//487 360//488
+f 360//488 352//480 351//479
+f 81//301 90//306 361//489
+f 361//489 353//481 81//301
+f 353//481 361//489 362//490
+f 362//490 354//482 353//481
+f 354//482 362//490 363//491
+f 363//491 355//483 354//482
+f 355//483 363//491 364//492
+f 364//492 356//484 355//483
+f 356//484 364//492 365//493
+f 365//493 357//485 356//484
+f 357//485 365//493 366//494
+f 366//494 358//486 357//485
+f 358//486 366//494 367//495
+f 367//495 359//487 358//486
+f 359//487 367//495 368//496
+f 368//496 360//488 359//487
+f 90//306 99//311 369//497
+f 369//497 361//489 90//306
+f 361//489 369//497 370//498
+f 370//498 362//490 361//489
+f 362//490 370//498 371//499
+f 371//499 363//491 362//490
+f 363//491 371//499 372//500
+f 372//500 364//492 363//491
+f 364//492 372//500 373//501
+f 373//501 365//493 364//492
+f 365//493 373//501 374//502
+f 374//502 366//494 365//493
+f 366//494 374//502 375//503
+f 375//503 367//495 366//494
+f 367//495 375//503 376//504
+f 376//504 368//496 367//495
+f 99//311 108//316 377//505
+f 377//505 369//497 99//311
+f 369//497 377//505 378//506
+f 378//506 370//498 369//497
+f 370//498 378//506 379//507
+f 379//507 371//499 370//498
+f 371//499 379//507 380//508
+f 380//508 372//500 371//499
+f 372//500 380//508 381//509
+f 381//509 373//501 372//500
+f 373//501 381//509 382//510
+f 382//510 374//502 373//501
+f 374//502 382//510 383//511
+f 383//511 375//503 374//502
+f 375//503 383//511 384//512
+f 384//512 376//504 375//503
+f 108//316 117//321 385//513
+f 385//513 377//505 108//316
+f 377//505 385//513 386//514
+f 386//514 378//506 377//505
+f 378//506 386//514 387//515
+f 387//515 379//507 378//506
+f 379//507 387//515 388//516
+f 388//516 380//508 379//507
+f 380//508 388//516 389//517
+f 389//517 381//509 380//508
+f 381//509 389//517 390//518
+f 390//518 382//510 381//509
+f 382//510 390//518 391//519
+f 391//519 383//511 382//510
+f 383//511 391//519 392//520
+f 392//520 384//512 383//511
+f 117//321 126//326 393//521
+f 393//521 385//513 117//321
+f 385//513 393//521 394//522
+f 394//522 386//514 385//513
+f 386//514 394//522 395//523
+f 395//523 387//515 386//514
+f 387//515 395//523 396//524
+f 396//524 388//516 387//515
+f 388//516 396//524 397//525
+f 397//525 389//517 388//516
+f 389//517 397//525 398//526
+f 398//526 390//518 389//517
+f 390//518 398//526 399//527
+f 399//527 391//519 390//518
+f 391//519 399//527 400//528
+f 400//528 392//520 391//519
+f 126//326 135//331 401//529
+f 401//529 393//521 126//326
+f 393//521 401//529 402//530
+f 402//530 394//522 393//521
+f 394//522 402//530 403//531
+f 403//531 395//523 394//522
+f 395//523 403//531 404//532
+f 404//532 396//524 395//523
+f 396//524 404//532 405//533
+f 405//533 397//525 396//524
+f 397//525 405//533 406//534
+f 406//534 398//526 397//525
+f 398//526 406//534 407//535
+f 407//535 399//527 398//526
+f 399//527 407//535 408//536
+f 408//536 400//528 399//527
+f 135//331 144//336 409//537
+f 409//537 401//529 135//331
+f 401//529 409//537 410//538
+f 410//538 402//530 401//529
+f 402//530 410//538 411//539
+f 411//539 403//531 402//530
+f 403//531 411//539 412//540
+f 412//540 404//532 403//531
+f 404//532 412//540 413//541
+f 413//541 405//533 404//532
+f 405//533 413//541 414//542
+f 414//542 406//534 405//533
+f 406//534 414//542 415//543
+f 415//543 407//535 406//534
+f 407//535 415//543 416//544
+f 416//544 408//536 407//535
+f 144//336 153//341 417//545
+f 417//545 409//537 144//336
+f 409//537 417//545 418//546
+f 418//546 410//538 409//537
+f 410//538 418//546 419//547
+f 419//547 411//539 410//538
+f 411//539 419//547 420//548
+f 420//548 412//540 411//539
+f 412//540 420//548 421//549
+f 421//549 413//541 412//540
+f 413//541 421//549 422//550
+f 422//550 414//542 413//541
+f 414//542 422//550 423//551
+f 423//551 415//543 414//542
+f 415//543 423//551 424//552
+f 424//552 416//544 415//543
+f 153//341 162//346 425//553
+f 425//553 417//545 153//341
+f 417//545 425//553 426//554
+f 426//554 418//546 417//545
+f 418//546 426//554 427//555
+f 427//555 419//547 418//546
+f 419//547 427//555 428//556
+f 428//556 420//548 419//547
+f 420//548 428//556 429//557
+f 429//557 421//549 420//548
+f 421//549 429//557 430//558
+f 430//558 422//550 421//549
+f 422//550 430//558 431//559
+f 431//559 423//551 422//550
+f 423//551 431//559 432//560
+f 432//560 424//552 423//551
+f 162//346 171//351 433//561
+f 433//561 425//553 162//346
+f 425//553 433//561 434//562
+f 434//562 426//554 425//553
+f 426//554 434//562 435//563
+f 435//563 427//555 426//554
+f 427//555 435//563 436//564
+f 436//564 428//556 427//555
+f 428//556 436//564 437//565
+f 437//565 429//557 428//556
+f 429//557 437//565 438//566
+f 438//566 430//558 429//557
+f 430//558 438//566 439//567
+f 439//567 431//559 430//558
+f 431//559 439//567 440//568
+f 440//568 432//560 431//559
+f 171//351 180//356 441//569
+f 441//569 433//561 171//351
+f 433//561 441//569 442//570
+f 442//570 434//562 433//561
+f 434//562 442//570 443//571
+f 443//571 435//563 434//562
+f 435//563 443//571 444//572
+f 444//572 436//564 435//563
+f 436//564 444//572 445//573
+f 445//573 437//565 436//564
+f 437//565 445//573 446//574
+f 446//574 438//566 437//565
+f 438//566 446//574 447//575
+f 447//575 439//567 438//566
+f 439//567 447//575 448//576
+f 448//576 440//568 439//567
+f 180//356 189//361 449//577
+f 449//577 441//569 180//356
+f 441//569 449//577 450//578
+f 450//578 442//570 441//569
+f 442//570 450//578 451//579
+f 451//579 443//571 442//570
+f 443//571 451//579 452//580
+f 452//580 444//572 443//571
+f 444//572 452//580 453//581
+f 453//581 445//573 444//572
+f 445//573 453//581 454//582
+f 454//582 446//574 445//573
+f 446//574 454//582 455//583
+f 455//583 447//575 446//574
+f 447//575 455//583 456//584
+f 456//584 448//576 447//575
+f 189//361 198//366 457//585
+f 457//585 449//577 189//361
+f 449//577 457//585 458//586
+f 458//586 450//578 449//577
+f 450//578 458//586 459//587
+f 459//587 451//579 450//578
+f 451//579 459//587 460//588
+f 460//588 452//580 451//579
+f 452//580 460//588 461//589
+f 461//589 453//581 452//580
+f 453//581 461//589 462//590
+f 462//590 454//582 453//581
+f 454//582 462//590 463//591
+f 463//591 455//583 454//582
+f 455//583 463//591 464//592
+f 464//592 456//584 455//583
+f 198//366 207//371 465//593
+f 465//593 457//585 198//366
+f 457//585 465//593 466//594
+f 466//594 458//586 457//585
+f 458//586 466//594 467//595
+f 467//595 459//587 458//586
+f 459//587 467//595 468//596
+f 468//596 460//588 459//587
+f 460//588 468//596 469//597
+f 469//597 461//589 460//588
+f 461//589 469//597 470//598
+f 470//598 462//590 461//589
+f 462//590 470//598 471//599
+f 471//599 463//591 462//590
+f 463//591 471//599 472//600
+f 472//600 464//592 463//591
+f 207//371 216//376 473//601
+f 473//601 465//593 207//371
+f 465//593 473//601 474//602
+f 474//602 466//594 465//593
+f 466//594 474//602 475//603
+f 475//603 467//595 466//594
+f 467//595 475//603 476//604
+f 476//604 468//596 467//595
+f 468//596 476//604 477//605
+f 477//605 469//597 468//596
+f 469//597 477//605 478//606
+f 478//606 470//598 469//597
+f 470//598 478//606 479//607
+f 479//607 471//599 470//598
+f 471//599 479//607 480//608
+f 480//608 472//600 471//599
+f 216//376 225//381 481//609
+f 481//609 473//601 216//376
+f 473//601 481//609 482//610
+f 482//610 474//602 473//601
+f 474//602 482//610 483//611
+f 483//611 475//603 474//602
+f 475//603 483//611 484//612
+f 484//612 476//604 475//603
+f 476//604 484//612 485//613
+f 485//613 477//605 476//604
+f 477//605 485//613 486//614
+f 486//614 478//606 477//605
+f 478//606 486//614 487//615
+f 487//615 479//607 478//606
+f 479//607 487//615 488//616
+f 488//616 480//608 479//607
+f 225//381 234//386 489//617
+f 489//617 481//609 225//381
+f 481//609 489//617 490//618
+f 490//618 482//610 481//609
+f 482//610 490//618 491//619
+f 491//619 483//611 482//610
+f 483//611 491//619 492//620
+f 492//620 484//612 483//611
+f 484//612 492//620 493//621
+f 493//621 485//613 484//612
+f 485//613 493//621 494//622
+f 494//622 486//614 485//613
+f 486//614 494//622 495//623
+f 495//623 487//615 486//614
+f 487//615 495//623 496//624
+f 496//624 488//616 487//615
+f 234//386 243//391 497//625
+f 497//625 489//617 234//386
+f 489//617 497//625 498//626
+f 498//626 490//618 489//617
+f 490//618 498//626 499//627
+f 499//627 491//619 490//618
+f 491//619 499//627 500//628
+f 500//628 492//620 491//619
+f 492//620 500//628 501//629
+f 501//629 493//621 492//620
+f 493//621 501//629 502//630
+f 502//630 494//622 493//621
+f 494//622 502//630 503//631
+f 503//631 495//623 494//622
+f 495//623 503//631 504//632
+f 504//632 496//624 495//623
+f 243//391 252//396 505//633
+f 505//633 497//625 243//391
+f 497//625 505//633 506//634
+f 506//634 498//626 497//625
+f 498//626 506//634 507//635
+f 507//635 499//627 498//626
+f 499//627 507//635 508//636
+f 508//636 500//628 499//627
+f 500//628 508//636 509//637
+f 509//637 501//629 500//628
+f 501//629 509//637 510//638
+f 510//638 502//630 501//629
+f 502//630 510//638 511//639
+f 511//639 503//631 502//630
+f 503//631 511//639 512//640
+f 512//640 504//632 503//631
+f 252//396 261//401 513//641
+f 513//641 505//633 252//396
+f 505//633 513//641 514//642
+f 514//642 506//634 505//633
+f 506//634 514//642 515//643
+f 515//643 507//635 506//634
+f 507//635 515//643 516//644
+f 516//644 508//636 507//635
+f 508//636 516//644 517//645
+f 517//645 509//637 508//636
+f 509//637 517//645 518//646
+f 518//646 510//638 509//637
+f 510//638 518//646 519//647
+f 519//647 511//639 510//638
+f 511//639 519//647 520//648
+f 520//648 512//640 511//639
+f 261//401 270//406 521//649
+f 521//649 513//641 261//401
+f 513//641 521//649 522//650
+f 522//650 514//642 513//641
+f 514//642 522//650 523//651
+f 523//651 515//643 514//642
+f 515//643 523//651 524//652
+f 524//652 516//644 515//643
+f 516//644 524//652 525//653
+f 525//653 517//645 516//644
+f 517//645 525//653 526//654
+f 526//654 518//646 517//645
+f 518//646 526//654 527//655
+f 527//655 519//647 518//646
+f 519//647 527//655 528//656
+f 528//656 520//648 519//647
+f 270//406 279//411 529//657
+f 529//657 521//649 270//406
+f 521//649 529//657 530//658
+f 530//658 522//650 521//649
+f 522//650 530//658 531//659
+f 531//659 523//651 522//650
+f 523//651 531//659 532//660
+f 532//660 524//652 523//651
+f 524//652 532//660 533//661
+f 533//661 525//653 524//652
+f 525//653 533//661 534//662
+f 534//662 526//654 525//653
+f 526//654 534//662 535//663
+f 535//663 527//655 526//654
+f 527//655 535//663 536//664
+f 536//664 528//656 527//655
+f 279//411 288//416 537//665
+f 537//665 529//657 279//411
+f 529//657 537//665 538//666
+f 538//666 530//658 529//657
+f 530//658 538//666 539//667
+f 539//667 531//659 530//658
+f 531//659 539//667 540//668
+f 540//668 532//660 531//659
+f 532//660 540//668 541//669
+f 541//669 533//661 532//660
+f 533//661 541//669 542//670
+f 542//670 534//662 533//661
+f 534//662 542//670 543//671
+f 543//671 535//663 534//662
+f 535//663 543//671 544//672
+f 544//672 536//664 535//663
+f 288//416 18//266 290//418
+f 290//418 537//665 288//416
+f 537//665 290//418 292//420
+f 292//420 538//666 537//665
+f 538//666 292//420 294//422
+f 294//422 539//667 538//666
+f 539//667 294//422 296//424
+f 296//424 540//668 539//667
+f 540//668 296//424 298//426
+f 298//426 541//669 540//668
+f 541//669 298//426 300//428
+f 300//428 542//670 541//669
+f 542//670 300//428 302//430
+f 302//430 543//671 542//670
+f 543//671 302//430 304//432
+f 304//432 544//672 543//671
+f 304//432 303//431 545//673
+f 545//673 546//674 304//432
+f 546//674 545//673 547//675
+f 547//675 548//676 546//674
+f 548//676 547//675 549//677
+f 549//677 550//678 548//676
+f 550//678 549//677 551//679
+f 551//679 552//680 550//678
+f 552//680 551//679 553//681
+f 553//681 554//682 552//680
+f 554//682 553//681 555//683
+f 555//683 556//684 554//682
+f 556//684 555//683 557//685
+f 557//685 558//686 556//684
+f 558//686 557//685 559//687
+f 559//687 560//688 558//686
+f 303//431 312//440 561//689
+f 561//689 545//673 303//431
+f 545//673 561//689 562//690
+f 562//690 547//675 545//673
+f 547//675 562//690 563//691
+f 563//691 549//677 547//675
+f 549//677 563//691 564//692
+f 564//692 551//679 549//677
+f 551//679 564//692 565//693
+f 565//693 553//681 551//679
+f 553//681 565//693 566//694
+f 566//694 555//683 553//681
+f 555//683 566//694 567//695
+f 567//695 557//685 555//683
+f 557//685 567//695 568//696
+f 568//696 559//687 557//685
+f 312//440 320//448 569//697
+f 569//697 561//689 312//440
+f 561//689 569//697 570//698
+f 570//698 562//690 561//689
+f 562//690 570//698 571//699
+f 571//699 563//691 562//690
+f 563//691 571//699 572//700
+f 572//700 564//692 563//691
+f 564//692 572//700 573//701
+f 573//701 565//693 564//692
+f 565//693 573//701 574//702
+f 574//702 566//694 565//693
+f 566//694 574//702 575//703
+f 575//703 567//695 566//694
+f 567//695 575//703 576//704
+f 576//704 568//696 567//695
+f 320//448 328//456 577//705
+f 577//705 569//697 320//448
+f 569//697 577//705 578//706
+f 578//706 570//698 569//697
+f 570//698 578//706 579//707
+f 579//707 571//699 570//698
+f 571//699 579//707 580//708
+f 580//708 572//700 571//699
+f 572//700 580//708 581//709
+f 581//709 573//701 572//700
+f 573//701 581//709 582//710
+f 582//710 574//702 573//701
+f 574//702 582//710 583//711
+f 583//711 575//703 574//702
+f 575//703 583//711 584//712
+f 584//712 576//704 575//703
+f 328//456 336//464 585//713
+f 585//713 577//705 328//456
+f 577//705 585//713 586//714
+f 586//714 578//706 577//705
+f 578//706 586//714 587//715
+f 587//715 579//707 578//706
+f 579//707 587//715 588//716
+f 588//716 580//708 579//707
+f 580//708 588//716 589//717
+f 589//717 581//709 580//708
+f 581//709 589//717 590//718
+f 590//718 582//710 581//709
+f 582//710 590//718 591//719
+f 591//719 583//711 582//710
+f 583//711 591//719 592//720
+f 592//720 584//712 583//711
+f 336//464 344//472 593//721
+f 593//721 585//713 336//464
+f 585//713 593//721 594//722
+f 594//722 586//714 585//713
+f 586//714 594//722 595//723
+f 595//723 587//715 586//714
+f 587//715 595//723 596//724
+f 596//724 588//716 587//715
+f 588//716 596//724 597//725
+f 597//725 589//717 588//716
+f 589//717 597//725 598//726
+f 598//726 590//718 589//717
+f 590//718 598//726 599//727
+f 599//727 591//719 590//718
+f 591//719 599//727 600//728
+f 600//728 592//720 591//719
+f 344//472 352//480 601//729
+f 601//729 593//721 344//472
+f 593//721 601//729 602//730
+f 602//730 594//722 593//721
+f 594//722 602//730 603//731
+f 603//731 595//723 594//722
+f 595//723 603//731 604//732
+f 604//732 596//724 595//723
+f 596//724 604//732 605//733
+f 605//733 597//725 596//724
+f 597//725 605//733 606//734
+f 606//734 598//726 597//725
+f 598//726 606//734 607//735
+f 607//735 599//727 598//726
+f 599//727 607//735 608//736
+f 608//736 600//728 599//727
+f 352//480 360//488 609//737
+f 609//737 601//729 352//480
+f 601//729 609//737 610//738
+f 610//738 602//730 601//729
+f 602//730 610//738 611//739
+f 611//739 603//731 602//730
+f 603//731 611//739 612//740
+f 612//740 604//732 603//731
+f 604//732 612//740 613//741
+f 613//741 605//733 604//732
+f 605//733 613//741 614//742
+f 614//742 606//734 605//733
+f 606//734 614//742 615//743
+f 615//743 607//735 606//734
+f 607//735 615//743 616//744
+f 616//744 608//736 607//735
+f 360//488 368//496 617//745
+f 617//745 609//737 360//488
+f 609//737 617//745 618//746
+f 618//746 610//738 609//737
+f 610//738 618//746 619//747
+f 619//747 611//739 610//738
+f 611//739 619//747 620//748
+f 620//748 612//740 611//739
+f 612//740 620//748 621//749
+f 621//749 613//741 612//740
+f 613//741 621//749 622//750
+f 622//750 614//742 613//741
+f 614//742 622//750 623//751
+f 623//751 615//743 614//742
+f 615//743 623//751 624//752
+f 624//752 616//744 615//743
+f 368//496 376//504 625//753
+f 625//753 617//745 368//496
+f 617//745 625//753 626//754
+f 626//754 618//746 617//745
+f 618//746 626//754 627//755
+f 627//755 619//747 618//746
+f 619//747 627//755 628//756
+f 628//756 620//748 619//747
+f 620//748 628//756 629//757
+f 629//757 621//749 620//748
+f 621//749 629//757 630//758
+f 630//758 622//750 621//749
+f 622//750 630//758 631//759
+f 631//759 623//751 622//750
+f 623//751 631//759 632//760
+f 632//760 624//752 623//751
+f 376//504 384//512 633//761
+f 633//761 625//753 376//504
+f 625//753 633//761 634//762
+f 634//762 626//754 625//753
+f 626//754 634//762 635//763
+f 635//763 627//755 626//754
+f 627//755 635//763 636//764
+f 636//764 628//756 627//755
+f 628//756 636//764 637//765
+f 637//765 629//757 628//756
+f 629//757 637//765 638//766
+f 638//766 630//758 629//757
+f 630//758 638//766 639//767
+f 639//767 631//759 630//758
+f 631//759 639//767 640//768
+f 640//768 632//760 631//759
+f 384//512 392//520 641//769
+f 641//769 633//761 384//512
+f 633//761 641//769 642//770
+f 642//770 634//762 633//761
+f 634//762 642//770 643//771
+f 643//771 635//763 634//762
+f 635//763 643//771 644//772
+f 644//772 636//764 635//763
+f 636//764 644//772 645//773
+f 645//773 637//765 636//764
+f 637//765 645//773 646//774
+f 646//774 638//766 637//765
+f 638//766 646//774 647//775
+f 647//775 639//767 638//766
+f 639//767 647//775 648//776
+f 648//776 640//768 639//767
+f 392//520 400//528 649//777
+f 649//777 641//769 392//520
+f 641//769 649//777 650//778
+f 650//778 642//770 641//769
+f 642//770 650//778 651//779
+f 651//779 643//771 642//770
+f 643//771 651//779 652//780
+f 652//780 644//772 643//771
+f 644//772 652//780 653//781
+f 653//781 645//773 644//772
+f 645//773 653//781 654//782
+f 654//782 646//774 645//773
+f 646//774 654//782 655//783
+f 655//783 647//775 646//774
+f 647//775 655//783 656//784
+f 656//784 648//776 647//775
+f 400//528 408//536 657//785
+f 657//785 649//777 400//528
+f 649//777 657//785 658//786
+f 658//786 650//778 649//777
+f 650//778 658//786 659//787
+f 659//787 651//779 650//778
+f 651//779 659//787 660//788
+f 660//788 652//780 651//779
+f 652//780 660//788 661//789
+f 661//789 653//781 652//780
+f 653//781 661//789 662//790
+f 662//790 654//782 653//781
+f 654//782 662//790 663//791
+f 663//791 655//783 654//782
+f 655//783 663//791 664//792
+f 664//792 656//784 655//783
+f 408//536 416//544 665//793
+f 665//793 657//785 408//536
+f 657//785 665//793 666//794
+f 666//794 658//786 657//785
+f 658//786 666//794 667//795
+f 667//795 659//787 658//786
+f 659//787 667//795 668//796
+f 668//796 660//788 659//787
+f 660//788 668//796 669//797
+f 669//797 661//789 660//788
+f 661//789 669//797 670//798
+f 670//798 662//790 661//789
+f 662//790 670//798 671//799
+f 671//799 663//791 662//790
+f 663//791 671//799 672//800
+f 672//800 664//792 663//791
+f 416//544 424//552 673//801
+f 673//801 665//793 416//544
+f 665//793 673//801 674//802
+f 674//802 666//794 665//793
+f 666//794 674//802 675//803
+f 675//803 667//795 666//794
+f 667//795 675//803 676//804
+f 676//804 668//796 667//795
+f 668//796 676//804 677//805
+f 677//805 669//797 668//796
+f 669//797 677//805 678//806
+f 678//806 670//798 669//797
+f 670//798 678//806 679//807
+f 679//807 671//799 670//798
+f 671//799 679//807 680//808
+f 680//808 672//800 671//799
+f 424//552 432//560 681//809
+f 681//809 673//801 424//552
+f 673//801 681//809 682//810
+f 682//810 674//802 673//801
+f 674//802 682//810 683//811
+f 683//811 675//803 674//802
+f 675//803 683//811 684//812
+f 684//812 676//804 675//803
+f 676//804 684//812 685//813
+f 685//813 677//805 676//804
+f 677//805 685//813 686//814
+f 686//814 678//806 677//805
+f 678//806 686//814 687//815
+f 687//815 679//807 678//806
+f 679//807 687//815 688//816
+f 688//816 680//808 679//807
+f 432//560 440//568 689//817
+f 689//817 681//809 432//560
+f 681//809 689//817 690//818
+f 690//818 682//810 681//809
+f 682//810 690//818 691//819
+f 691//819 683//811 682//810
+f 683//811 691//819 692//820
+f 692//820 684//812 683//811
+f 684//812 692//820 693//821
+f 693//821 685//813 684//812
+f 685//813 693//821 694//822
+f 694//822 686//814 685//813
+f 686//814 694//822 695//823
+f 695//823 687//815 686//814
+f 687//815 695//823 696//824
+f 696//824 688//816 687//815
+f 440//568 448//576 697//825
+f 697//825 689//817 440//568
+f 689//817 697//825 698//826
+f 698//826 690//818 689//817
+f 690//818 698//826 699//827
+f 699//827 691//819 690//818
+f 691//819 699//827 700//828
+f 700//828 692//820 691//819
+f 692//820 700//828 701//829
+f 701//829 693//821 692//820
+f 693//821 701//829 702//830
+f 702//830 694//822 693//821
+f 694//822 702//830 703//831
+f 703//831 695//823 694//822
+f 695//823 703//831 704//832
+f 704//832 696//824 695//823
+f 448//576 456//584 705//833
+f 705//833 697//825 448//576
+f 697//825 705//833 706//834
+f 706//834 698//826 697//825
+f 698//826 706//834 707//835
+f 707//835 699//827 698//826
+f 699//827 707//835 708//836
+f 708//836 700//828 699//827
+f 700//828 708//836 709//837
+f 709//837 701//829 700//828
+f 701//829 709//837 710//838
+f 710//838 702//830 701//829
+f 702//830 710//838 711//839
+f 711//839 703//831 702//830
+f 703//831 711//839 712//840
+f 712//840 704//832 703//831
+f 456//584 464//592 713//841
+f 713//841 705//833 456//584
+f 705//833 713//841 714//842
+f 714//842 706//834 705//833
+f 706//834 714//842 715//843
+f 715//843 707//835 706//834
+f 707//835 715//843 716//844
+f 716//844 708//836 707//835
+f 708//836 716//844 717//845
+f 717//845 709//837 708//836
+f 709//837 717//845 718//846
+f 718//846 710//838 709//837
+f 710//838 718//846 719//847
+f 719//847 711//839 710//838
+f 711//839 719//847 720//848
+f 720//848 712//840 711//839
+f 464//592 472//600 721//849
+f 721//849 713//841 464//592
+f 713//841 721//849 722//850
+f 722//850 714//842 713//841
+f 714//842 722//850 723//851
+f 723//851 715//843 714//842
+f 715//843 723//851 724//852
+f 724//852 716//844 715//843
+f 716//844 724//852 725//853
+f 725//853 717//845 716//844
+f 717//845 725//853 726//854
+f 726//854 718//846 717//845
+f 718//846 726//854 727//855
+f 727//855 719//847 718//846
+f 719//847 727//855 728//856
+f 728//856 720//848 719//847
+f 472//600 480//608 729//857
+f 729//857 721//849 472//600
+f 721//849 729//857 730//858
+f 730//858 722//850 721//849
+f 722//850 730//858 731//859
+f 731//859 723//851 722//850
+f 723//851 731//859 732//860
+f 732//860 724//852 723//851
+f 724//852 732//860 733//861
+f 733//861 725//853 724//852
+f 725//853 733//861 734//862
+f 734//862 726//854 725//853
+f 726//854 734//862 735//863
+f 735//863 727//855 726//854
+f 727//855 735//863 736//864
+f 736//864 728//856 727//855
+f 480//608 488//616 737//865
+f 737//865 729//857 480//608
+f 729//857 737//865 738//866
+f 738//866 730//858 729//857
+f 730//858 738//866 739//867
+f 739//867 731//859 730//858
+f 731//859 739//867 740//868
+f 740//868 732//860 731//859
+f 732//860 740//868 741//869
+f 741//869 733//861 732//860
+f 733//861 741//869 742//870
+f 742//870 734//862 733//861
+f 734//862 742//870 743//871
+f 743//871 735//863 734//862
+f 735//863 743//871 744//872
+f 744//872 736//864 735//863
+f 488//616 496//624 745//873
+f 745//873 737//865 488//616
+f 737//865 745//873 746//874
+f 746//874 738//866 737//865
+f 738//866 746//874 747//875
+f 747//875 739//867 738//866
+f 739//867 747//875 748//876
+f 748//876 740//868 739//867
+f 740//868 748//876 749//877
+f 749//877 741//869 740//868
+f 741//869 749//877 750//878
+f 750//878 742//870 741//869
+f 742//870 750//878 751//879
+f 751//879 743//871 742//870
+f 743//871 751//879 752//880
+f 752//880 744//872 743//871
+f 496//624 504//632 753//881
+f 753//881 745//873 496//624
+f 745//873 753//881 754//882
+f 754//882 746//874 745//873
+f 746//874 754//882 755//883
+f 755//883 747//875 746//874
+f 747//875 755//883 756//884
+f 756//884 748//876 747//875
+f 748//876 756//884 757//885
+f 757//885 749//877 748//876
+f 749//877 757//885 758//886
+f 758//886 750//878 749//877
+f 750//878 758//886 759//887
+f 759//887 751//879 750//878
+f 751//879 759//887 760//888
+f 760//888 752//880 751//879
+f 504//632 512//640 761//889
+f 761//889 753//881 504//632
+f 753//881 761//889 762//890
+f 762//890 754//882 753//881
+f 754//882 762//890 763//891
+f 763//891 755//883 754//882
+f 755//883 763//891 764//892
+f 764//892 756//884 755//883
+f 756//884 764//892 765//893
+f 765//893 757//885 756//884
+f 757//885 765//893 766//894
+f 766//894 758//886 757//885
+f 758//886 766//894 767//895
+f 767//895 759//887 758//886
+f 759//887 767//895 768//896
+f 768//896 760//888 759//887
+f 512//640 520//648 769//897
+f 769//897 761//889 512//640
+f 761//889 769//897 770//898
+f 770//898 762//890 761//889
+f 762//890 770//898 771//899
+f 771//899 763//891 762//890
+f 763//891 771//899 772//900
+f 772//900 764//892 763//891
+f 764//892 772//900 773//901
+f 773//901 765//893 764//892
+f 765//893 773//901 774//902
+f 774//902 766//894 765//893
+f 766//894 774//902 775//903
+f 775//903 767//895 766//894
+f 767//895 775//903 776//904
+f 776//904 768//896 767//895
+f 520//648 528//656 777//905
+f 777//905 769//897 520//648
+f 769//897 777//905 778//906
+f 778//906 770//898 769//897
+f 770//898 778//906 779//907
+f 779//907 771//899 770//898
+f 771//899 779//907 780//908
+f 780//908 772//900 771//899
+f 772//900 780//908 781//909
+f 781//909 773//901 772//900
+f 773//901 781//909 782//910
+f 782//910 774//902 773//901
+f 774//902 782//910 783//911
+f 783//911 775//903 774//902
+f 775//903 783//911 784//912
+f 784//912 776//904 775//903
+f 528//656 536//664 785//913
+f 785//913 777//905 528//656
+f 777//905 785//913 786//914
+f 786//914 778//906 777//905
+f 778//906 786//914 787//915
+f 787//915 779//907 778//906
+f 779//907 787//915 788//916
+f 788//916 780//908 779//907
+f 780//908 788//916 789//917
+f 789//917 781//909 780//908
+f 781//909 789//917 790//918
+f 790//918 782//910 781//909
+f 782//910 790//918 791//919
+f 791//919 783//911 782//910
+f 783//911 791//919 792//920
+f 792//920 784//912 783//911
+f 536//664 544//672 793//921
+f 793//921 785//913 536//664
+f 785//913 793//921 794//922
+f 794//922 786//914 785//913
+f 786//914 794//922 795//923
+f 795//923 787//915 786//914
+f 787//915 795//923 796//924
+f 796//924 788//916 787//915
+f 788//916 796//924 797//925
+f 797//925 789//917 788//916
+f 789//917 797//925 798//926
+f 798//926 790//918 789//917
+f 790//918 798//926 799//927
+f 799//927 791//919 790//918
+f 791//919 799//927 800//928
+f 800//928 792//920 791//919
+f 544//672 304//432 546//674
+f 546//674 793//921 544//672
+f 793//921 546//674 548//676
+f 548//676 794//922 793//921
+f 794//922 548//676 550//678
+f 550//678 795//923 794//922
+f 795//923 550//678 552//680
+f 552//680 796//924 795//923
+f 796//924 552//680 554//682
+f 554//682 797//925 796//924
+f 797//925 554//682 556//684
+f 556//684 798//926 797//925
+f 798//926 556//684 558//686
+f 558//686 799//927 798//926
+f 799//927 558//686 560//688
+f 560//688 800//928 799//927
+f 560//688 559//687 801//929
+f 801//929 802//930 560//688
+s 5
+f 802//962 801//961 803//963
+f 803//963 804//964 802//962
+f 804//964 803//963 805//965
+f 805//965 806//966 804//964
+f 806//966 805//965 807//967
+f 807//967 808//968 806//966
+f 808//968 807//967 809//969
+f 809//969 810//970 808//968
+f 810//970 809//969 811//971
+f 811//971 812//972 810//970
+f 812//972 811//971 813//973
+f 813//973 814//974 812//972
+f 814//974 813//973 815//975
+s off
+f 815//1 815//1 814//1
+s 3
+f 559//687 568//696 816//931
+f 816//931 801//929 559//687
+s 5
+f 801//961 816//976 817//977
+f 817//977 803//963 801//961
+f 803//963 817//977 818//978
+f 818//978 805//965 803//963
+f 805//965 818//978 819//979
+f 819//979 807//967 805//965
+f 807//967 819//979 820//980
+f 820//980 809//969 807//967
+f 809//969 820//980 821//981
+f 821//981 811//971 809//969
+f 811//971 821//981 822//982
+f 822//982 813//973 811//971
+f 813//973 822//982 815//975
+s off
+f 815//2 815//2 813//2
+s 3
+f 568//696 576//704 823//932
+f 823//932 816//931 568//696
+s 5
+f 816//976 823//983 824//984
+f 824//984 817//977 816//976
+f 817//977 824//984 825//985
+f 825//985 818//978 817//977
+f 818//978 825//985 826//986
+f 826//986 819//979 818//978
+f 819//979 826//986 827//987
+f 827//987 820//980 819//979
+f 820//980 827//987 828//988
+f 828//988 821//981 820//980
+f 821//981 828//988 829//989
+f 829//989 822//982 821//981
+f 822//982 829//989 815//975
+s off
+f 815//3 815//3 822//3
+s 3
+f 576//704 584//712 830//933
+f 830//933 823//932 576//704
+s 5
+f 823//983 830//990 831//991
+f 831//991 824//984 823//983
+f 824//984 831//991 832//992
+f 832//992 825//985 824//984
+f 825//985 832//992 833//993
+f 833//993 826//986 825//985
+f 826//986 833//993 834//994
+f 834//994 827//987 826//986
+f 827//987 834//994 835//995
+f 835//995 828//988 827//987
+f 828//988 835//995 836//996
+f 836//996 829//989 828//988
+f 829//989 836//996 815//975
+s off
+f 815//4 815//4 829//4
+s 3
+f 584//712 592//720 837//934
+f 837//934 830//933 584//712
+s 5
+f 830//990 837//997 838//998
+f 838//998 831//991 830//990
+f 831//991 838//998 839//999
+f 839//999 832//992 831//991
+f 832//992 839//999 840//1000
+f 840//1000 833//993 832//992
+f 833//993 840//1000 841//1001
+f 841//1001 834//994 833//993
+f 834//994 841//1001 842//1002
+f 842//1002 835//995 834//994
+f 835//995 842//1002 843//1003
+f 843//1003 836//996 835//995
+f 836//996 843//1003 815//975
+s off
+f 815//5 815//5 836//5
+s 3
+f 592//720 600//728 844//935
+f 844//935 837//934 592//720
+s 5
+f 837//997 844//1004 845//1005
+f 845//1005 838//998 837//997
+f 838//998 845//1005 846//1006
+f 846//1006 839//999 838//998
+f 839//999 846//1006 847//1007
+f 847//1007 840//1000 839//999
+f 840//1000 847//1007 848//1008
+f 848//1008 841//1001 840//1000
+f 841//1001 848//1008 849//1009
+f 849//1009 842//1002 841//1001
+f 842//1002 849//1009 850//1010
+f 850//1010 843//1003 842//1002
+f 843//1003 850//1010 815//975
+s off
+f 815//6 815//6 843//6
+s 3
+f 600//728 608//736 851//936
+f 851//936 844//935 600//728
+s 5
+f 844//1004 851//1011 852//1012
+f 852//1012 845//1005 844//1004
+f 845//1005 852//1012 853//1013
+f 853//1013 846//1006 845//1005
+f 846//1006 853//1013 854//1014
+f 854//1014 847//1007 846//1006
+f 847//1007 854//1014 855//1015
+f 855//1015 848//1008 847//1007
+f 848//1008 855//1015 856//1016
+f 856//1016 849//1009 848//1008
+f 849//1009 856//1016 857//1017
+f 857//1017 850//1010 849//1009
+f 850//1010 857//1017 815//975
+s off
+f 815//7 815//7 850//7
+s 3
+f 608//736 616//744 858//937
+f 858//937 851//936 608//736
+s 5
+f 851//1011 858//1018 859//1019
+f 859//1019 852//1012 851//1011
+f 852//1012 859//1019 860//1020
+f 860//1020 853//1013 852//1012
+f 853//1013 860//1020 861//1021
+f 861//1021 854//1014 853//1013
+f 854//1014 861//1021 862//1022
+f 862//1022 855//1015 854//1014
+f 855//1015 862//1022 863//1023
+f 863//1023 856//1016 855//1015
+f 856//1016 863//1023 864//1024
+f 864//1024 857//1017 856//1016
+f 857//1017 864//1024 815//975
+s off
+f 815//8 815//8 857//8
+s 3
+f 616//744 624//752 865//938
+f 865//938 858//937 616//744
+s 5
+f 858//1018 865//1025 866//1026
+f 866//1026 859//1019 858//1018
+f 859//1019 866//1026 867//1027
+f 867//1027 860//1020 859//1019
+f 860//1020 867//1027 868//1028
+f 868//1028 861//1021 860//1020
+f 861//1021 868//1028 869//1029
+f 869//1029 862//1022 861//1021
+f 862//1022 869//1029 870//1030
+f 870//1030 863//1023 862//1022
+f 863//1023 870//1030 871//1031
+f 871//1031 864//1024 863//1023
+f 864//1024 871//1031 815//975
+s off
+f 815//9 815//9 864//9
+s 3
+f 624//752 632//760 872//939
+f 872//939 865//938 624//752
+s 5
+f 865//1025 872//1032 873//1033
+f 873//1033 866//1026 865//1025
+f 866//1026 873//1033 874//1034
+f 874//1034 867//1027 866//1026
+f 867//1027 874//1034 875//1035
+f 875//1035 868//1028 867//1027
+f 868//1028 875//1035 876//1036
+f 876//1036 869//1029 868//1028
+f 869//1029 876//1036 877//1037
+f 877//1037 870//1030 869//1029
+f 870//1030 877//1037 878//1038
+f 878//1038 871//1031 870//1030
+f 871//1031 878//1038 815//975
+s off
+f 815//10 815//10 871//10
+s 3
+f 632//760 640//768 879//940
+f 879//940 872//939 632//760
+s 5
+f 872//1032 879//1039 880//1040
+f 880//1040 873//1033 872//1032
+f 873//1033 880//1040 881//1041
+f 881//1041 874//1034 873//1033
+f 874//1034 881//1041 882//1042
+f 882//1042 875//1035 874//1034
+f 875//1035 882//1042 883//1043
+f 883//1043 876//1036 875//1035
+f 876//1036 883//1043 884//1044
+f 884//1044 877//1037 876//1036
+f 877//1037 884//1044 885//1045
+f 885//1045 878//1038 877//1037
+f 878//1038 885//1045 815//975
+s off
+f 815//11 815//11 878//11
+s 3
+f 640//768 648//776 886//941
+f 886//941 879//940 640//768
+s 5
+f 879//1039 886//1046 887//1047
+f 887//1047 880//1040 879//1039
+f 880//1040 887//1047 888//1048
+f 888//1048 881//1041 880//1040
+f 881//1041 888//1048 889//1049
+f 889//1049 882//1042 881//1041
+f 882//1042 889//1049 890//1050
+f 890//1050 883//1043 882//1042
+f 883//1043 890//1050 891//1051
+f 891//1051 884//1044 883//1043
+f 884//1044 891//1051 892//1052
+f 892//1052 885//1045 884//1044
+f 885//1045 892//1052 815//975
+s off
+f 815//12 815//12 885//12
+s 3
+f 648//776 656//784 893//942
+f 893//942 886//941 648//776
+s 5
+f 886//1046 893//1053 894//1054
+f 894//1054 887//1047 886//1046
+f 887//1047 894//1054 895//1055
+f 895//1055 888//1048 887//1047
+f 888//1048 895//1055 896//1056
+f 896//1056 889//1049 888//1048
+f 889//1049 896//1056 897//1057
+f 897//1057 890//1050 889//1049
+f 890//1050 897//1057 898//1058
+f 898//1058 891//1051 890//1050
+f 891//1051 898//1058 899//1059
+f 899//1059 892//1052 891//1051
+f 892//1052 899//1059 815//975
+s off
+f 815//13 815//13 892//13
+s 3
+f 656//784 664//792 900//943
+f 900//943 893//942 656//784
+s 5
+f 893//1053 900//1060 901//1061
+f 901//1061 894//1054 893//1053
+f 894//1054 901//1061 902//1062
+f 902//1062 895//1055 894//1054
+f 895//1055 902//1062 903//1063
+f 903//1063 896//1056 895//1055
+f 896//1056 903//1063 904//1064
+f 904//1064 897//1057 896//1056
+f 897//1057 904//1064 905//1065
+f 905//1065 898//1058 897//1057
+f 898//1058 905//1065 906//1066
+f 906//1066 899//1059 898//1058
+f 899//1059 906//1066 815//975
+s off
+f 815//14 815//14 899//14
+s 3
+f 664//792 672//800 907//944
+f 907//944 900//943 664//792
+s 5
+f 900//1060 907//1067 908//1068
+f 908//1068 901//1061 900//1060
+f 901//1061 908//1068 909//1069
+f 909//1069 902//1062 901//1061
+f 902//1062 909//1069 910//1070
+f 910//1070 903//1063 902//1062
+f 903//1063 910//1070 911//1071
+f 911//1071 904//1064 903//1063
+f 904//1064 911//1071 912//1072
+f 912//1072 905//1065 904//1064
+f 905//1065 912//1072 913//1073
+f 913//1073 906//1066 905//1065
+f 906//1066 913//1073 815//975
+s off
+f 815//15 815//15 906//15
+s 3
+f 672//800 680//808 914//945
+f 914//945 907//944 672//800
+s 5
+f 907//1067 914//1074 915//1075
+f 915//1075 908//1068 907//1067
+f 908//1068 915//1075 916//1076
+f 916//1076 909//1069 908//1068
+f 909//1069 916//1076 917//1077
+f 917//1077 910//1070 909//1069
+f 910//1070 917//1077 918//1078
+f 918//1078 911//1071 910//1070
+f 911//1071 918//1078 919//1079
+f 919//1079 912//1072 911//1071
+f 912//1072 919//1079 920//1080
+f 920//1080 913//1073 912//1072
+f 913//1073 920//1080 815//975
+s off
+f 815//16 815//16 913//16
+s 3
+f 680//808 688//816 921//946
+f 921//946 914//945 680//808
+s 5
+f 914//1074 921//1081 922//1082
+f 922//1082 915//1075 914//1074
+f 915//1075 922//1082 923//1083
+f 923//1083 916//1076 915//1075
+f 916//1076 923//1083 924//1084
+f 924//1084 917//1077 916//1076
+f 917//1077 924//1084 925//1085
+f 925//1085 918//1078 917//1077
+f 918//1078 925//1085 926//1086
+f 926//1086 919//1079 918//1078
+f 919//1079 926//1086 927//1087
+f 927//1087 920//1080 919//1079
+f 920//1080 927//1087 815//975
+s off
+f 815//17 815//17 920//17
+s 3
+f 688//816 696//824 928//947
+f 928//947 921//946 688//816
+s 5
+f 921//1081 928//1088 929//1089
+f 929//1089 922//1082 921//1081
+f 922//1082 929//1089 930//1090
+f 930//1090 923//1083 922//1082
+f 923//1083 930//1090 931//1091
+f 931//1091 924//1084 923//1083
+f 924//1084 931//1091 932//1092
+f 932//1092 925//1085 924//1084
+f 925//1085 932//1092 933//1093
+f 933//1093 926//1086 925//1085
+f 926//1086 933//1093 934//1094
+f 934//1094 927//1087 926//1086
+f 927//1087 934//1094 815//975
+s off
+f 815//18 815//18 927//18
+s 3
+f 696//824 704//832 935//948
+f 935//948 928//947 696//824
+s 5
+f 928//1088 935//1095 936//1096
+f 936//1096 929//1089 928//1088
+f 929//1089 936//1096 937//1097
+f 937//1097 930//1090 929//1089
+f 930//1090 937//1097 938//1098
+f 938//1098 931//1091 930//1090
+f 931//1091 938//1098 939//1099
+f 939//1099 932//1092 931//1091
+f 932//1092 939//1099 940//1100
+f 940//1100 933//1093 932//1092
+f 933//1093 940//1100 941//1101
+f 941//1101 934//1094 933//1093
+f 934//1094 941//1101 815//975
+s off
+f 815//19 815//19 934//19
+s 3
+f 704//832 712//840 942//949
+f 942//949 935//948 704//832
+s 5
+f 935//1095 942//1102 943//1103
+f 943//1103 936//1096 935//1095
+f 936//1096 943//1103 944//1104
+f 944//1104 937//1097 936//1096
+f 937//1097 944//1104 945//1105
+f 945//1105 938//1098 937//1097
+f 938//1098 945//1105 946//1106
+f 946//1106 939//1099 938//1098
+f 939//1099 946//1106 947//1107
+f 947//1107 940//1100 939//1099
+f 940//1100 947//1107 948//1108
+f 948//1108 941//1101 940//1100
+f 941//1101 948//1108 815//975
+s off
+f 815//20 815//20 941//20
+s 3
+f 712//840 720//848 949//950
+f 949//950 942//949 712//840
+s 5
+f 942//1102 949//1109 950//1110
+f 950//1110 943//1103 942//1102
+f 943//1103 950//1110 951//1111
+f 951//1111 944//1104 943//1103
+f 944//1104 951//1111 952//1112
+f 952//1112 945//1105 944//1104
+f 945//1105 952//1112 953//1113
+f 953//1113 946//1106 945//1105
+f 946//1106 953//1113 954//1114
+f 954//1114 947//1107 946//1106
+f 947//1107 954//1114 955//1115
+f 955//1115 948//1108 947//1107
+f 948//1108 955//1115 815//975
+s off
+f 815//21 815//21 948//21
+s 3
+f 720//848 728//856 956//951
+f 956//951 949//950 720//848
+s 5
+f 949//1109 956//1116 957//1117
+f 957//1117 950//1110 949//1109
+f 950//1110 957//1117 958//1118
+f 958//1118 951//1111 950//1110
+f 951//1111 958//1118 959//1119
+f 959//1119 952//1112 951//1111
+f 952//1112 959//1119 960//1120
+f 960//1120 953//1113 952//1112
+f 953//1113 960//1120 961//1121
+f 961//1121 954//1114 953//1113
+f 954//1114 961//1121 962//1122
+f 962//1122 955//1115 954//1114
+f 955//1115 962//1122 815//975
+s off
+f 815//22 815//22 955//22
+s 3
+f 728//856 736//864 963//952
+f 963//952 956//951 728//856
+s 5
+f 956//1116 963//1123 964//1124
+f 964//1124 957//1117 956//1116
+f 957//1117 964//1124 965//1125
+f 965//1125 958//1118 957//1117
+f 958//1118 965//1125 966//1126
+f 966//1126 959//1119 958//1118
+f 959//1119 966//1126 967//1127
+f 967//1127 960//1120 959//1119
+f 960//1120 967//1127 968//1128
+f 968//1128 961//1121 960//1120
+f 961//1121 968//1128 969//1129
+f 969//1129 962//1122 961//1121
+f 962//1122 969//1129 815//975
+s off
+f 815//23 815//23 962//23
+s 3
+f 736//864 744//872 970//953
+f 970//953 963//952 736//864
+s 5
+f 963//1123 970//1130 971//1131
+f 971//1131 964//1124 963//1123
+f 964//1124 971//1131 972//1132
+f 972//1132 965//1125 964//1124
+f 965//1125 972//1132 973//1133
+f 973//1133 966//1126 965//1125
+f 966//1126 973//1133 974//1134
+f 974//1134 967//1127 966//1126
+f 967//1127 974//1134 975//1135
+f 975//1135 968//1128 967//1127
+f 968//1128 975//1135 976//1136
+f 976//1136 969//1129 968//1128
+f 969//1129 976//1136 815//975
+s off
+f 815//24 815//24 969//24
+s 3
+f 744//872 752//880 977//954
+f 977//954 970//953 744//872
+s 5
+f 970//1130 977//1137 978//1138
+f 978//1138 971//1131 970//1130
+f 971//1131 978//1138 979//1139
+f 979//1139 972//1132 971//1131
+f 972//1132 979//1139 980//1140
+f 980//1140 973//1133 972//1132
+f 973//1133 980//1140 981//1141
+f 981//1141 974//1134 973//1133
+f 974//1134 981//1141 982//1142
+f 982//1142 975//1135 974//1134
+f 975//1135 982//1142 983//1143
+f 983//1143 976//1136 975//1135
+f 976//1136 983//1143 815//975
+s off
+f 815//25 815//25 976//25
+s 3
+f 752//880 760//888 984//955
+f 984//955 977//954 752//880
+s 5
+f 977//1137 984//1144 985//1145
+f 985//1145 978//1138 977//1137
+f 978//1138 985//1145 986//1146
+f 986//1146 979//1139 978//1138
+f 979//1139 986//1146 987//1147
+f 987//1147 980//1140 979//1139
+f 980//1140 987//1147 988//1148
+f 988//1148 981//1141 980//1140
+f 981//1141 988//1148 989//1149
+f 989//1149 982//1142 981//1141
+f 982//1142 989//1149 990//1150
+f 990//1150 983//1143 982//1142
+f 983//1143 990//1150 815//975
+s off
+f 815//26 815//26 983//26
+s 3
+f 760//888 768//896 991//956
+f 991//956 984//955 760//888
+s 5
+f 984//1144 991//1151 992//1152
+f 992//1152 985//1145 984//1144
+f 985//1145 992//1152 993//1153
+f 993//1153 986//1146 985//1145
+f 986//1146 993//1153 994//1154
+f 994//1154 987//1147 986//1146
+f 987//1147 994//1154 995//1155
+f 995//1155 988//1148 987//1147
+f 988//1148 995//1155 996//1156
+f 996//1156 989//1149 988//1148
+f 989//1149 996//1156 997//1157
+f 997//1157 990//1150 989//1149
+f 990//1150 997//1157 815//975
+s off
+f 815//27 815//27 990//27
+s 3
+f 768//896 776//904 998//957
+f 998//957 991//956 768//896
+s 5
+f 991//1151 998//1158 999//1159
+f 999//1159 992//1152 991//1151
+f 992//1152 999//1159 1000//1160
+f 1000//1160 993//1153 992//1152
+f 993//1153 1000//1160 1001//1161
+f 1001//1161 994//1154 993//1153
+f 994//1154 1001//1161 1002//1162
+f 1002//1162 995//1155 994//1154
+f 995//1155 1002//1162 1003//1163
+f 1003//1163 996//1156 995//1155
+f 996//1156 1003//1163 1004//1164
+f 1004//1164 997//1157 996//1156
+f 997//1157 1004//1164 815//975
+s off
+f 815//28 815//28 997//28
+s 3
+f 776//904 784//912 1005//958
+f 1005//958 998//957 776//904
+s 5
+f 998//1158 1005//1165 1006//1166
+f 1006//1166 999//1159 998//1158
+f 999//1159 1006//1166 1007//1167
+f 1007//1167 1000//1160 999//1159
+f 1000//1160 1007//1167 1008//1168
+f 1008//1168 1001//1161 1000//1160
+f 1001//1161 1008//1168 1009//1169
+f 1009//1169 1002//1162 1001//1161
+f 1002//1162 1009//1169 1010//1170
+f 1010//1170 1003//1163 1002//1162
+f 1003//1163 1010//1170 1011//1171
+f 1011//1171 1004//1164 1003//1163
+f 1004//1164 1011//1171 815//975
+s off
+f 815//29 815//29 1004//29
+s 3
+f 784//912 792//920 1012//959
+f 1012//959 1005//958 784//912
+s 5
+f 1005//1165 1012//1172 1013//1173
+f 1013//1173 1006//1166 1005//1165
+f 1006//1166 1013//1173 1014//1174
+f 1014//1174 1007//1167 1006//1166
+f 1007//1167 1014//1174 1015//1175
+f 1015//1175 1008//1168 1007//1167
+f 1008//1168 1015//1175 1016//1176
+f 1016//1176 1009//1169 1008//1168
+f 1009//1169 1016//1176 1017//1177
+f 1017//1177 1010//1170 1009//1169
+f 1010//1170 1017//1177 1018//1178
+f 1018//1178 1011//1171 1010//1170
+f 1011//1171 1018//1178 815//975
+s off
+f 815//30 815//30 1011//30
+s 3
+f 792//920 800//928 1019//960
+f 1019//960 1012//959 792//920
+s 5
+f 1012//1172 1019//1179 1020//1180
+f 1020//1180 1013//1173 1012//1172
+f 1013//1173 1020//1180 1021//1181
+f 1021//1181 1014//1174 1013//1173
+f 1014//1174 1021//1181 1022//1182
+f 1022//1182 1015//1175 1014//1174
+f 1015//1175 1022//1182 1023//1183
+f 1023//1183 1016//1176 1015//1175
+f 1016//1176 1023//1183 1024//1184
+f 1024//1184 1017//1177 1016//1176
+f 1017//1177 1024//1184 1025//1185
+f 1025//1185 1018//1178 1017//1177
+f 1018//1178 1025//1185 815//975
+s off
+f 815//31 815//31 1018//31
+s 3
+f 800//928 560//688 802//930
+f 802//930 1019//960 800//928
+s 5
+f 1019//1179 802//962 804//964
+f 804//964 1020//1180 1019//1179
+f 1020//1180 804//964 806//966
+f 806//966 1021//1181 1020//1180
+f 1021//1181 806//966 808//968
+f 808//968 1022//1182 1021//1181
+f 1022//1182 808//968 810//970
+f 810//970 1023//1183 1022//1182
+f 1023//1183 810//970 812//972
+f 812//972 1024//1184 1023//1183
+f 1024//1184 812//972 814//974
+f 814//974 1025//1185 1024//1184
+f 1025//1185 814//974 815//975
+s off
+f 815//32 815//32 1025//32
+s 4
+f 1026//1187 1027//1188 1028//1189
+f 1028//1189 1029//1190 1026//1187
+f 1029//1190 1028//1189 1030//1191
+f 1030//1191 1031//1192 1029//1190
+f 1031//1192 1030//1191 1032//1193
+f 1032//1193 1033//1194 1031//1192
+f 1033//1194 1032//1193 1034//1195
+f 1034//1195 1035//1196 1033//1194
+f 1035//1196 1034//1195 1036//1197
+f 1036//1197 1037//1198 1035//1196
+f 1037//1198 1036//1197 1038//1199
+f 1038//1199 1039//1200 1037//1198
+f 1039//1200 1038//1199 1040//1201
+f 1040//1201 1041//1202 1039//1200
+f 1041//1202 1040//1201 1042//1203
+f 1042//1203 1043//1204 1041//1202
+f 1027//1188 1044//1205 1045//1206
+f 1045//1206 1028//1189 1027//1188
+f 1028//1189 1045//1206 1046//1207
+f 1046//1207 1030//1191 1028//1189
+f 1030//1191 1046//1207 1047//1208
+f 1047//1208 1032//1193 1030//1191
+f 1032//1193 1047//1208 1048//1209
+f 1048//1209 1034//1195 1032//1193
+f 1034//1195 1048//1209 1049//1210
+f 1049//1210 1036//1197 1034//1195
+f 1036//1197 1049//1210 1050//1211
+f 1050//1211 1038//1199 1036//1197
+f 1038//1199 1050//1211 1051//1212
+f 1051//1212 1040//1201 1038//1199
+f 1040//1201 1051//1212 1052//1213
+f 1052//1213 1042//1203 1040//1201
+f 1044//1205 1053//1214 1054//1215
+f 1054//1215 1045//1206 1044//1205
+f 1045//1206 1054//1215 1055//1216
+f 1055//1216 1046//1207 1045//1206
+f 1046//1207 1055//1216 1056//1217
+f 1056//1217 1047//1208 1046//1207
+f 1047//1208 1056//1217 1057//1218
+f 1057//1218 1048//1209 1047//1208
+f 1048//1209 1057//1218 1058//1219
+f 1058//1219 1049//1210 1048//1209
+f 1049//1210 1058//1219 1059//1220
+f 1059//1220 1050//1211 1049//1210
+f 1050//1211 1059//1220 1060//1221
+f 1060//1221 1051//1212 1050//1211
+f 1051//1212 1060//1221 1061//1222
+f 1061//1222 1052//1213 1051//1212
+s 6
+f 1053//1439 1062//1443 1063//1444
+f 1063//1444 1054//1440 1053//1439
+f 1054//1440 1063//1444 1064//1445
+f 1064//1445 1055//1441 1054//1440
+f 1055//1441 1064//1445 1065//1446
+f 1065//1446 1056//1442 1055//1441
+f 1056//1442 1065//1446 1066//1447
+s 4
+f 1066//1227 1057//1218 1056//1217
+f 1057//1218 1066//1227 1067//1228
+f 1067//1228 1058//1219 1057//1218
+f 1058//1219 1067//1228 1068//1229
+f 1068//1229 1059//1220 1058//1219
+f 1059//1220 1068//1229 1069//1230
+f 1069//1230 1060//1221 1059//1220
+f 1060//1221 1069//1230 1070//1231
+f 1070//1231 1061//1222 1060//1221
+f 1062//1223 1071//1232 1072//1233
+f 1072//1233 1063//1224 1062//1223
+f 1063//1224 1072//1233 1073//1234
+f 1073//1234 1064//1225 1063//1224
+f 1064//1225 1073//1234 1074//1235
+f 1074//1235 1065//1226 1064//1225
+f 1065//1226 1074//1235 1075//1236
+f 1075//1236 1066//1227 1065//1226
+f 1066//1227 1075//1236 1076//1237
+f 1076//1237 1067//1228 1066//1227
+f 1067//1228 1076//1237 1077//1238
+f 1077//1238 1068//1229 1067//1228
+f 1068//1229 1077//1238 1078//1239
+f 1078//1239 1069//1230 1068//1229
+f 1069//1230 1078//1239 1079//1240
+f 1079//1240 1070//1231 1069//1230
+f 1071//1232 1080//1241 1081//1242
+f 1081//1242 1072//1233 1071//1232
+f 1072//1233 1081//1242 1082//1243
+f 1082//1243 1073//1234 1072//1233
+f 1073//1234 1082//1243 1083//1244
+f 1083//1244 1074//1235 1073//1234
+f 1074//1235 1083//1244 1084//1245
+f 1084//1245 1075//1236 1074//1235
+f 1075//1236 1084//1245 1085//1246
+f 1085//1246 1076//1237 1075//1236
+f 1076//1237 1085//1246 1086//1247
+f 1086//1247 1077//1238 1076//1237
+f 1077//1238 1086//1247 1087//1248
+f 1087//1248 1078//1239 1077//1238
+f 1078//1239 1087//1248 1088//1249
+f 1088//1249 1079//1240 1078//1239
+f 1080//1241 1089//1250 1090//1251
+f 1090//1251 1081//1242 1080//1241
+f 1081//1242 1090//1251 1091//1252
+f 1091//1252 1082//1243 1081//1242
+f 1082//1243 1091//1252 1092//1253
+f 1092//1253 1083//1244 1082//1243
+f 1083//1244 1092//1253 1093//1254
+f 1093//1254 1084//1245 1083//1244
+f 1084//1245 1093//1254 1094//1255
+f 1094//1255 1085//1246 1084//1245
+f 1085//1246 1094//1255 1095//1256
+f 1095//1256 1086//1247 1085//1246
+f 1086//1247 1095//1256 1096//1257
+f 1096//1257 1087//1248 1086//1247
+f 1087//1248 1096//1257 1097//1258
+f 1097//1258 1088//1249 1087//1248
+f 1089//1250 1098//1259 1099//1260
+f 1099//1260 1090//1251 1089//1250
+f 1090//1251 1099//1260 1100//1261
+f 1100//1261 1091//1252 1090//1251
+f 1091//1252 1100//1261 1101//1262
+f 1101//1262 1092//1253 1091//1252
+f 1092//1253 1101//1262 1102//1263
+f 1102//1263 1093//1254 1092//1253
+f 1093//1254 1102//1263 1103//1264
+f 1103//1264 1094//1255 1093//1254
+f 1094//1255 1103//1264 1104//1265
+f 1104//1265 1095//1256 1094//1255
+f 1095//1256 1104//1265 1105//1266
+f 1105//1266 1096//1257 1095//1256
+f 1096//1257 1105//1266 1106//1267
+f 1106//1267 1097//1258 1096//1257
+f 1098//1259 1107//1268 1108//1269
+f 1108//1269 1099//1260 1098//1259
+f 1099//1260 1108//1269 1109//1270
+f 1109//1270 1100//1261 1099//1260
+f 1100//1261 1109//1270 1110//1271
+f 1110//1271 1101//1262 1100//1261
+f 1101//1262 1110//1271 1111//1272
+f 1111//1272 1102//1263 1101//1262
+f 1102//1263 1111//1272 1112//1273
+f 1112//1273 1103//1264 1102//1263
+f 1103//1264 1112//1273 1113//1274
+f 1113//1274 1104//1265 1103//1264
+f 1104//1265 1113//1274 1114//1275
+f 1114//1275 1105//1266 1104//1265
+f 1105//1266 1114//1275 1115//1276
+f 1115//1276 1106//1267 1105//1266
+f 1107//1268 1116//1277 1117//1278
+f 1117//1278 1108//1269 1107//1268
+f 1108//1269 1117//1278 1118//1279
+f 1118//1279 1109//1270 1108//1269
+f 1109//1270 1118//1279 1119//1280
+f 1119//1280 1110//1271 1109//1270
+f 1110//1271 1119//1280 1120//1281
+f 1120//1281 1111//1272 1110//1271
+f 1111//1272 1120//1281 1121//1282
+f 1121//1282 1112//1273 1111//1272
+f 1112//1273 1121//1282 1122//1283
+f 1122//1283 1113//1274 1112//1273
+f 1113//1274 1122//1283 1123//1284
+f 1123//1284 1114//1275 1113//1274
+f 1114//1275 1123//1284 1124//1285
+f 1124//1285 1115//1276 1114//1275
+f 1116//1277 1125//1286 1126//1287
+f 1126//1287 1117//1278 1116//1277
+f 1117//1278 1126//1287 1127//1288
+f 1127//1288 1118//1279 1117//1278
+f 1118//1279 1127//1288 1128//1289
+f 1128//1289 1119//1280 1118//1279
+f 1119//1280 1128//1289 1129//1290
+f 1129//1290 1120//1281 1119//1280
+f 1120//1281 1129//1290 1130//1291
+f 1130//1291 1121//1282 1120//1281
+f 1121//1282 1130//1291 1131//1292
+f 1131//1292 1122//1283 1121//1282
+f 1122//1283 1131//1292 1132//1293
+f 1132//1293 1123//1284 1122//1283
+f 1123//1284 1132//1293 1133//1294
+f 1133//1294 1124//1285 1123//1284
+s 6
+f 1125//1448 1134//1452 1135//1453
+f 1135//1453 1126//1449 1125//1448
+f 1126//1449 1135//1453 1136//1454
+f 1136//1454 1127//1450 1126//1449
+f 1127//1450 1136//1454 1137//1455
+f 1137//1455 1128//1451 1127//1450
+f 1128//1451 1137//1455 1138//1456
+s 4
+f 1138//1295 1129//1290 1128//1289
+f 1129//1290 1138//1295 1139//1296
+f 1139//1296 1130//1291 1129//1290
+f 1130//1291 1139//1296 1140//1297
+f 1140//1297 1131//1292 1130//1291
+f 1131//1292 1140//1297 1141//1298
+f 1141//1298 1132//1293 1131//1292
+f 1132//1293 1141//1298 1142//1299
+f 1142//1299 1133//1294 1132//1293
+s 6
+f 1134//1452 1143//1459 1144//1460
+f 1144//1460 1135//1453 1134//1452
+f 1135//1453 1144//1460 1145//1461
+f 1145//1461 1136//1454 1135//1453
+f 1136//1454 1145//1461 1146//1462
+f 1146//1462 1137//1455 1136//1454
+f 1137//1455 1146//1462 1147//1463
+f 1147//1463 1138//1456 1137//1455
+f 1138//1456 1147//1463 1148//1464
+f 1148//1464 1139//1457 1138//1456
+f 1139//1457 1148//1464 1149//1465
+f 1149//1465 1140//1458 1139//1457
+f 1140//1458 1149//1465 1150//1466
+s 4
+f 1150//1300 1141//1298 1140//1297
+f 1141//1298 1150//1300 1151//1301
+f 1151//1301 1142//1299 1141//1298
+s 6
+f 1143//1459 1152//1467 1153//1468
+f 1153//1468 1144//1460 1143//1459
+f 1144//1460 1153//1468 1154//1469
+f 1154//1469 1145//1461 1144//1460
+f 1145//1461 1154//1469 1155//1470
+f 1155//1470 1146//1462 1145//1461
+f 1146//1462 1155//1470 1156//1471
+f 1156//1471 1147//1463 1146//1462
+f 1147//1463 1156//1471 1157//1472
+f 1157//1472 1148//1464 1147//1463
+f 1148//1464 1157//1472 1158//1473
+f 1158//1473 1149//1465 1148//1464
+f 1149//1465 1158//1473 1159//1474
+f 1159//1474 1150//1466 1149//1465
+f 1150//1466 1159//1474 1160//1475
+s 4
+f 1160//1302 1151//1301 1150//1300
+s 6
+f 1152//1467 1161//1476 1162//1477
+f 1162//1477 1153//1468 1152//1467
+f 1153//1468 1162//1477 1163//1478
+f 1163//1478 1154//1469 1153//1468
+f 1154//1469 1163//1478 1164//1479
+f 1164//1479 1155//1470 1154//1469
+f 1155//1470 1164//1479 1165//1480
+f 1165//1480 1156//1471 1155//1470
+f 1156//1471 1165//1480 1166//1481
+f 1166//1481 1157//1472 1156//1471
+f 1157//1472 1166//1481 1167//1482
+f 1167//1482 1158//1473 1157//1472
+f 1158//1473 1167//1482 1168//1483
+f 1168//1483 1159//1474 1158//1473
+f 1159//1474 1168//1483 1169//1484
+f 1169//1484 1160//1475 1159//1474
+s 4
+f 1161//1303 1026//1187 1029//1190
+f 1029//1190 1162//1304 1161//1303
+f 1162//1304 1029//1190 1031//1192
+f 1031//1192 1163//1305 1162//1304
+f 1163//1305 1031//1192 1033//1194
+f 1033//1194 1164//1306 1163//1305
+f 1164//1306 1033//1194 1035//1196
+f 1035//1196 1165//1307 1164//1306
+f 1165//1307 1035//1196 1037//1198
+f 1037//1198 1166//1308 1165//1307
+f 1166//1308 1037//1198 1039//1200
+f 1039//1200 1167//1309 1166//1308
+f 1167//1309 1039//1200 1041//1202
+f 1041//1202 1168//1310 1167//1309
+f 1168//1310 1041//1202 1043//1204
+f 1043//1204 1169//1311 1168//1310
+f 1043//1204 1042//1203 1170//1312
+f 1170//1312 1171//1313 1043//1204
+f 1171//1313 1170//1312 1172//1314
+f 1172//1314 1173//1315 1171//1313
+f 1173//1315 1172//1314 1174//1316
+f 1174//1316 1175//1317 1173//1315
+f 1175//1317 1174//1316 1176//1318
+f 1176//1318 1177//1319 1175//1317
+f 1177//1319 1176//1318 1178//1320
+f 1178//1320 1179//1321 1177//1319
+f 1179//1321 1178//1320 1180//1322
+f 1180//1322 1181//1323 1179//1321
+f 1181//1323 1180//1322 1182//1324
+f 1182//1324 1183//1325 1181//1323
+f 1183//1325 1182//1324 1184//1326
+f 1184//1326 424//1186 1183//1325
+f 1042//1203 1052//1213 1185//1327
+f 1185//1327 1170//1312 1042//1203
+f 1170//1312 1185//1327 1186//1328
+f 1186//1328 1172//1314 1170//1312
+f 1172//1314 1186//1328 1187//1329
+f 1187//1329 1174//1316 1172//1314
+f 1174//1316 1187//1329 1188//1330
+f 1188//1330 1176//1318 1174//1316
+f 1176//1318 1188//1330 1189//1331
+f 1189//1331 1178//1320 1176//1318
+f 1178//1320 1189//1331 1190//1332
+f 1190//1332 1180//1322 1178//1320
+f 1180//1322 1190//1332 1191//1333
+f 1191//1333 1182//1324 1180//1322
+f 1182//1324 1191//1333 1192//1334
+f 1192//1334 1184//1326 1182//1324
+f 1052//1213 1061//1222 1193//1335
+f 1193//1335 1185//1327 1052//1213
+f 1185//1327 1193//1335 1194//1336
+f 1194//1336 1186//1328 1185//1327
+f 1186//1328 1194//1336 1195//1337
+f 1195//1337 1187//1329 1186//1328
+f 1187//1329 1195//1337 1196//1338
+f 1196//1338 1188//1330 1187//1329
+f 1188//1330 1196//1338 1197//1339
+f 1197//1339 1189//1331 1188//1330
+f 1189//1331 1197//1339 1198//1340
+f 1198//1340 1190//1332 1189//1331
+f 1190//1332 1198//1340 1199//1341
+f 1199//1341 1191//1333 1190//1332
+f 1191//1333 1199//1341 1200//1342
+f 1200//1342 1192//1334 1191//1333
+f 1061//1222 1070//1231 1201//1343
+f 1201//1343 1193//1335 1061//1222
+f 1193//1335 1201//1343 1202//1344
+f 1202//1344 1194//1336 1193//1335
+f 1194//1336 1202//1344 1203//1345
+f 1203//1345 1195//1337 1194//1336
+f 1195//1337 1203//1345 1204//1346
+f 1204//1346 1196//1338 1195//1337
+f 1196//1338 1204//1346 1205//1347
+f 1205//1347 1197//1339 1196//1338
+f 1197//1339 1205//1347 1206//1348
+f 1206//1348 1198//1340 1197//1339
+f 1198//1340 1206//1348 1207//1349
+f 1207//1349 1199//1341 1198//1340
+f 1199//1341 1207//1349 1208//1350
+f 1208//1350 1200//1342 1199//1341
+f 1070//1231 1079//1240 1209//1351
+f 1209//1351 1201//1343 1070//1231
+f 1201//1343 1209//1351 1210//1352
+f 1210//1352 1202//1344 1201//1343
+f 1202//1344 1210//1352 1211//1353
+f 1211//1353 1203//1345 1202//1344
+f 1203//1345 1211//1353 1212//1354
+f 1212//1354 1204//1346 1203//1345
+f 1204//1346 1212//1354 1213//1355
+f 1213//1355 1205//1347 1204//1346
+f 1205//1347 1213//1355 1214//1356
+f 1214//1356 1206//1348 1205//1347
+f 1206//1348 1214//1356 1215//1357
+f 1215//1357 1207//1349 1206//1348
+f 1207//1349 1215//1357 1216//1358
+f 1216//1358 1208//1350 1207//1349
+f 1079//1240 1088//1249 1217//1359
+f 1217//1359 1209//1351 1079//1240
+f 1209//1351 1217//1359 1218//1360
+f 1218//1360 1210//1352 1209//1351
+f 1210//1352 1218//1360 1219//1361
+f 1219//1361 1211//1353 1210//1352
+f 1211//1353 1219//1361 1220//1362
+f 1220//1362 1212//1354 1211//1353
+f 1212//1354 1220//1362 1221//1363
+f 1221//1363 1213//1355 1212//1354
+f 1213//1355 1221//1363 1222//1364
+f 1222//1364 1214//1356 1213//1355
+f 1214//1356 1222//1364 1223//1365
+f 1223//1365 1215//1357 1214//1356
+f 1215//1357 1223//1365 1224//1366
+f 1224//1366 1216//1358 1215//1357
+f 1088//1249 1097//1258 1225//1367
+f 1225//1367 1217//1359 1088//1249
+f 1217//1359 1225//1367 1226//1368
+f 1226//1368 1218//1360 1217//1359
+f 1218//1360 1226//1368 1227//1369
+f 1227//1369 1219//1361 1218//1360
+f 1219//1361 1227//1369 1228//1370
+f 1228//1370 1220//1362 1219//1361
+f 1220//1362 1228//1370 1229//1371
+f 1229//1371 1221//1363 1220//1362
+f 1221//1363 1229//1371 1230//1372
+f 1230//1372 1222//1364 1221//1363
+f 1222//1364 1230//1372 1231//1373
+f 1231//1373 1223//1365 1222//1364
+f 1223//1365 1231//1373 1232//1374
+f 1232//1374 1224//1366 1223//1365
+f 1097//1258 1106//1267 1233//1375
+f 1233//1375 1225//1367 1097//1258
+f 1225//1367 1233//1375 1234//1376
+f 1234//1376 1226//1368 1225//1367
+f 1226//1368 1234//1376 1235//1377
+f 1235//1377 1227//1369 1226//1368
+f 1227//1369 1235//1377 1236//1378
+f 1236//1378 1228//1370 1227//1369
+f 1228//1370 1236//1378 1237//1379
+f 1237//1379 1229//1371 1228//1370
+f 1229//1371 1237//1379 1238//1380
+f 1238//1380 1230//1372 1229//1371
+f 1230//1372 1238//1380 1239//1381
+f 1239//1381 1231//1373 1230//1372
+f 1231//1373 1239//1381 1240//1382
+f 1240//1382 1232//1374 1231//1373
+f 1106//1267 1115//1276 1241//1383
+f 1241//1383 1233//1375 1106//1267
+f 1233//1375 1241//1383 1242//1384
+f 1242//1384 1234//1376 1233//1375
+f 1234//1376 1242//1384 1243//1385
+f 1243//1385 1235//1377 1234//1376
+f 1235//1377 1243//1385 1244//1386
+f 1244//1386 1236//1378 1235//1377
+f 1236//1378 1244//1386 1245//1387
+f 1245//1387 1237//1379 1236//1378
+f 1237//1379 1245//1387 1246//1388
+f 1246//1388 1238//1380 1237//1379
+f 1238//1380 1246//1388 1247//1389
+f 1247//1389 1239//1381 1238//1380
+f 1239//1381 1247//1389 1248//1390
+f 1248//1390 1240//1382 1239//1381
+f 1115//1276 1124//1285 1249//1391
+f 1249//1391 1241//1383 1115//1276
+f 1241//1383 1249//1391 1250//1392
+f 1250//1392 1242//1384 1241//1383
+f 1242//1384 1250//1392 1251//1393
+f 1251//1393 1243//1385 1242//1384
+f 1243//1385 1251//1393 1252//1394
+f 1252//1394 1244//1386 1243//1385
+f 1244//1386 1252//1394 1253//1395
+f 1253//1395 1245//1387 1244//1386
+f 1245//1387 1253//1395 1254//1396
+f 1254//1396 1246//1388 1245//1387
+f 1246//1388 1254//1396 1255//1397
+f 1255//1397 1247//1389 1246//1388
+f 1247//1389 1255//1397 1256//1398
+f 1256//1398 1248//1390 1247//1389
+f 1124//1285 1133//1294 1257//1399
+f 1257//1399 1249//1391 1124//1285
+f 1249//1391 1257//1399 1258//1400
+f 1258//1400 1250//1392 1249//1391
+f 1250//1392 1258//1400 1259//1401
+f 1259//1401 1251//1393 1250//1392
+f 1251//1393 1259//1401 1260//1402
+f 1260//1402 1252//1394 1251//1393
+f 1252//1394 1260//1402 1261//1403
+f 1261//1403 1253//1395 1252//1394
+f 1253//1395 1261//1403 1262//1404
+f 1262//1404 1254//1396 1253//1395
+f 1254//1396 1262//1404 1263//1405
+f 1263//1405 1255//1397 1254//1396
+f 1255//1397 1263//1405 1264//1406
+f 1264//1406 1256//1398 1255//1397
+f 1133//1294 1142//1299 1265//1407
+f 1265//1407 1257//1399 1133//1294
+f 1257//1399 1265//1407 1266//1408
+f 1266//1408 1258//1400 1257//1399
+f 1258//1400 1266//1408 1267//1409
+f 1267//1409 1259//1401 1258//1400
+f 1259//1401 1267//1409 1268//1410
+f 1268//1410 1260//1402 1259//1401
+f 1260//1402 1268//1410 1269//1411
+f 1269//1411 1261//1403 1260//1402
+f 1261//1403 1269//1411 1270//1412
+f 1270//1412 1262//1404 1261//1403
+f 1262//1404 1270//1412 1271//1413
+f 1271//1413 1263//1405 1262//1404
+f 1263//1405 1271//1413 1272//1414
+f 1272//1414 1264//1406 1263//1405
+f 1142//1299 1151//1301 1273//1415
+f 1273//1415 1265//1407 1142//1299
+f 1265//1407 1273//1415 1274//1416
+f 1274//1416 1266//1408 1265//1407
+f 1266//1408 1274//1416 1275//1417
+f 1275//1417 1267//1409 1266//1408
+f 1267//1409 1275//1417 1276//1418
+f 1276//1418 1268//1410 1267//1409
+f 1268//1410 1276//1418 1277//1419
+f 1277//1419 1269//1411 1268//1410
+f 1269//1411 1277//1419 1278//1420
+f 1278//1420 1270//1412 1269//1411
+f 1270//1412 1278//1420 1279//1421
+f 1279//1421 1271//1413 1270//1412
+f 1271//1413 1279//1421 1280//1422
+f 1280//1422 1272//1414 1271//1413
+f 1151//1301 1160//1302 1281//1423
+f 1281//1423 1273//1415 1151//1301
+f 1273//1415 1281//1423 1282//1424
+f 1282//1424 1274//1416 1273//1415
+f 1274//1416 1282//1424 1283//1425
+f 1283//1425 1275//1417 1274//1416
+f 1275//1417 1283//1425 1284//1426
+f 1284//1426 1276//1418 1275//1417
+f 1276//1418 1284//1426 1285//1427
+f 1285//1427 1277//1419 1276//1418
+f 1277//1419 1285//1427 1286//1428
+f 1286//1428 1278//1420 1277//1419
+f 1278//1420 1286//1428 1287//1429
+f 1287//1429 1279//1421 1278//1420
+f 1279//1421 1287//1429 1288//1430
+f 1288//1430 1280//1422 1279//1421
+s 6
+f 1160//1475 1169//1484 1289//1486
+s 4
+f 1289//1431 1281//1423 1160//1302
+f 1281//1423 1289//1431 1290//1432
+f 1290//1432 1282//1424 1281//1423
+f 1282//1424 1290//1432 1291//1433
+f 1291//1433 1283//1425 1282//1424
+f 1283//1425 1291//1433 1292//1434
+f 1292//1434 1284//1426 1283//1425
+f 1284//1426 1292//1434 1293//1435
+f 1293//1435 1285//1427 1284//1426
+f 1285//1427 1293//1435 1294//1436
+f 1294//1436 1286//1428 1285//1427
+f 1286//1428 1294//1436 1295//1437
+f 1295//1437 1287//1429 1286//1428
+f 1287//1429 1295//1437 1296//1438
+f 1296//1438 1288//1430 1287//1429
+f 1169//1311 1043//1204 1171//1313
+s 6
+f 1171//1485 1289//1486 1169//1484
+s 4
+f 1289//1431 1171//1313 1173//1315
+f 1173//1315 1290//1432 1289//1431
+f 1290//1432 1173//1315 1175//1317
+f 1175//1317 1291//1433 1290//1432
+f 1291//1433 1175//1317 1177//1319
+f 1177//1319 1292//1434 1291//1433
+f 1292//1434 1177//1319 1179//1321
+f 1179//1321 1293//1435 1292//1434
+f 1293//1435 1179//1321 1181//1323
+f 1181//1323 1294//1436 1293//1435
+f 1294//1436 1181//1323 1183//1325
+f 1183//1325 1295//1437 1294//1436
+f 1295//1437 1183//1325 424//1186
+f 424//1186 1296//1438 1295//1437
+s 14
+f 1297//1487 1298//1488 1299//1489
+f 1299//1489 1300//1490 1297//1487
+f 1300//1490 1299//1489 1301//1491
+f 1301//1491 1302//1492 1300//1490
+f 1302//1492 1301//1491 1303//1493
+f 1303//1493 1304//1494 1302//1492
+f 1304//1494 1303//1493 1305//1495
+f 1305//1495 1306//1496 1304//1494
+f 1306//1496 1305//1495 1307//1497
+f 1307//1497 1308//1498 1306//1496
+f 1308//1498 1307//1497 1309//1499
+f 1309//1499 1310//1500 1308//1498
+f 1310//1500 1309//1499 1311//1501
+f 1311//1501 1312//1502 1310//1500
+f 1312//1502 1311//1501 1313//1503
+f 1313//1503 1314//1504 1312//1502
+f 1298//1488 1315//1505 1316//1506
+f 1316//1506 1299//1489 1298//1488
+f 1299//1489 1316//1506 1317//1507
+f 1317//1507 1301//1491 1299//1489
+f 1301//1491 1317//1507 1318//1508
+f 1318//1508 1303//1493 1301//1491
+f 1303//1493 1318//1508 1319//1509
+f 1319//1509 1305//1495 1303//1493
+f 1305//1495 1319//1509 1320//1510
+f 1320//1510 1307//1497 1305//1495
+f 1307//1497 1320//1510 1321//1511
+f 1321//1511 1309//1499 1307//1497
+f 1309//1499 1321//1511 1322//1512
+f 1322//1512 1311//1501 1309//1499
+f 1311//1501 1322//1512 1323//1513
+f 1323//1513 1313//1503 1311//1501
+f 1315//1505 1324//1514 1325//1515
+f 1325//1515 1316//1506 1315//1505
+f 1316//1506 1325//1515 1326//1516
+f 1326//1516 1317//1507 1316//1506
+f 1317//1507 1326//1516 1327//1517
+f 1327//1517 1318//1508 1317//1507
+f 1318//1508 1327//1517 1328//1518
+f 1328//1518 1319//1509 1318//1508
+f 1319//1509 1328//1518 1329//1519
+f 1329//1519 1320//1510 1319//1509
+f 1320//1510 1329//1519 1330//1520
+f 1330//1520 1321//1511 1320//1510
+f 1321//1511 1330//1520 1331//1521
+f 1331//1521 1322//1512 1321//1511
+f 1322//1512 1331//1521 1332//1522
+f 1332//1522 1323//1513 1322//1512
+f 1324//1514 1333//1523 1334//1524
+f 1334//1524 1325//1515 1324//1514
+f 1325//1515 1334//1524 1335//1525
+f 1335//1525 1326//1516 1325//1515
+f 1326//1516 1335//1525 1336//1526
+f 1336//1526 1327//1517 1326//1516
+f 1327//1517 1336//1526 1337//1527
+f 1337//1527 1328//1518 1327//1517
+f 1328//1518 1337//1527 1338//1528
+f 1338//1528 1329//1519 1328//1518
+f 1329//1519 1338//1528 1339//1529
+f 1339//1529 1330//1520 1329//1519
+f 1330//1520 1339//1529 1340//1530
+f 1340//1530 1331//1521 1330//1520
+f 1331//1521 1340//1530 1341//1531
+f 1341//1531 1332//1522 1331//1521
+f 1333//1523 1342//1532 1343//1533
+f 1343//1533 1334//1524 1333//1523
+f 1334//1524 1343//1533 1344//1534
+f 1344//1534 1335//1525 1334//1524
+f 1335//1525 1344//1534 1345//1535
+f 1345//1535 1336//1526 1335//1525
+f 1336//1526 1345//1535 1346//1536
+f 1346//1536 1337//1527 1336//1526
+f 1337//1527 1346//1536 1347//1537
+f 1347//1537 1338//1528 1337//1527
+f 1338//1528 1347//1537 1348//1538
+f 1348//1538 1339//1529 1338//1528
+f 1339//1529 1348//1538 1349//1539
+f 1349//1539 1340//1530 1339//1529
+f 1340//1530 1349//1539 1350//1540
+f 1350//1540 1341//1531 1340//1530
+f 1342//1532 1351//1541 1352//1542
+f 1352//1542 1343//1533 1342//1532
+f 1343//1533 1352//1542 1353//1543
+f 1353//1543 1344//1534 1343//1533
+f 1344//1534 1353//1543 1354//1544
+f 1354//1544 1345//1535 1344//1534
+f 1345//1535 1354//1544 1355//1545
+f 1355//1545 1346//1536 1345//1535
+f 1346//1536 1355//1545 1356//1546
+f 1356//1546 1347//1537 1346//1536
+f 1347//1537 1356//1546 1357//1547
+f 1357//1547 1348//1538 1347//1537
+f 1348//1538 1357//1547 1358//1548
+f 1358//1548 1349//1539 1348//1538
+f 1349//1539 1358//1548 1359//1549
+f 1359//1549 1350//1540 1349//1539
+f 1351//1541 1360//1550 1361//1551
+f 1361//1551 1352//1542 1351//1541
+f 1352//1542 1361//1551 1362//1552
+f 1362//1552 1353//1543 1352//1542
+f 1353//1543 1362//1552 1363//1553
+f 1363//1553 1354//1544 1353//1543
+f 1354//1544 1363//1553 1364//1554
+f 1364//1554 1355//1545 1354//1544
+f 1355//1545 1364//1554 1365//1555
+f 1365//1555 1356//1546 1355//1545
+f 1356//1546 1365//1555 1366//1556
+f 1366//1556 1357//1547 1356//1546
+f 1357//1547 1366//1556 1367//1557
+f 1367//1557 1358//1548 1357//1547
+f 1358//1548 1367//1557 1368//1558
+f 1368//1558 1359//1549 1358//1548
+f 1360//1550 1369//1559 1370//1560
+f 1370//1560 1361//1551 1360//1550
+f 1361//1551 1370//1560 1371//1561
+f 1371//1561 1362//1552 1361//1551
+f 1362//1552 1371//1561 1372//1562
+f 1372//1562 1363//1553 1362//1552
+f 1363//1553 1372//1562 1373//1563
+f 1373//1563 1364//1554 1363//1553
+f 1364//1554 1373//1563 1374//1564
+f 1374//1564 1365//1555 1364//1554
+f 1365//1555 1374//1564 1375//1565
+f 1375//1565 1366//1556 1365//1555
+f 1366//1556 1375//1565 1376//1566
+f 1376//1566 1367//1557 1366//1556
+f 1367//1557 1376//1566 1377//1567
+f 1377//1567 1368//1558 1367//1557
+f 1369//1559 1378//1568 1379//1569
+f 1379//1569 1370//1560 1369//1559
+f 1370//1560 1379//1569 1380//1570
+f 1380//1570 1371//1561 1370//1560
+f 1371//1561 1380//1570 1381//1571
+f 1381//1571 1372//1562 1371//1561
+f 1372//1562 1381//1571 1382//1572
+f 1382//1572 1373//1563 1372//1562
+f 1373//1563 1382//1572 1383//1573
+f 1383//1573 1374//1564 1373//1563
+f 1374//1564 1383//1573 1384//1574
+f 1384//1574 1375//1565 1374//1564
+f 1375//1565 1384//1574 1385//1575
+f 1385//1575 1376//1566 1375//1565
+f 1376//1566 1385//1575 1386//1576
+f 1386//1576 1377//1567 1376//1566
+f 1378//1568 1387//1577 1388//1578
+f 1388//1578 1379//1569 1378//1568
+f 1379//1569 1388//1578 1389//1579
+f 1389//1579 1380//1570 1379//1569
+f 1380//1570 1389//1579 1390//1580
+f 1390//1580 1381//1571 1380//1570
+f 1381//1571 1390//1580 1391//1581
+f 1391//1581 1382//1572 1381//1571
+f 1382//1572 1391//1581 1392//1582
+f 1392//1582 1383//1573 1382//1572
+f 1383//1573 1392//1582 1393//1583
+f 1393//1583 1384//1574 1383//1573
+f 1384//1574 1393//1583 1394//1584
+f 1394//1584 1385//1575 1384//1574
+f 1385//1575 1394//1584 1395//1585
+f 1395//1585 1386//1576 1385//1575
+f 1387//1577 1396//1586 1397//1587
+f 1397//1587 1388//1578 1387//1577
+f 1388//1578 1397//1587 1398//1588
+f 1398//1588 1389//1579 1388//1578
+f 1389//1579 1398//1588 1399//1589
+f 1399//1589 1390//1580 1389//1579
+f 1390//1580 1399//1589 1400//1590
+f 1400//1590 1391//1581 1390//1580
+f 1391//1581 1400//1590 1401//1591
+f 1401//1591 1392//1582 1391//1581
+f 1392//1582 1401//1591 1402//1592
+f 1402//1592 1393//1583 1392//1582
+f 1393//1583 1402//1592 1403//1593
+f 1403//1593 1394//1584 1393//1583
+f 1394//1584 1403//1593 1404//1594
+f 1404//1594 1395//1585 1394//1584
+f 1396//1586 1405//1595 1406//1596
+f 1406//1596 1397//1587 1396//1586
+f 1397//1587 1406//1596 1407//1597
+f 1407//1597 1398//1588 1397//1587
+f 1398//1588 1407//1597 1408//1598
+f 1408//1598 1399//1589 1398//1588
+f 1399//1589 1408//1598 1409//1599
+f 1409//1599 1400//1590 1399//1589
+f 1400//1590 1409//1599 1410//1600
+f 1410//1600 1401//1591 1400//1590
+f 1401//1591 1410//1600 1411//1601
+f 1411//1601 1402//1592 1401//1591
+f 1402//1592 1411//1601 1412//1602
+f 1412//1602 1403//1593 1402//1592
+f 1403//1593 1412//1602 1413//1603
+f 1413//1603 1404//1594 1403//1593
+f 1405//1595 1414//1604 1415//1605
+f 1415//1605 1406//1596 1405//1595
+f 1406//1596 1415//1605 1416//1606
+f 1416//1606 1407//1597 1406//1596
+f 1407//1597 1416//1606 1417//1607
+f 1417//1607 1408//1598 1407//1597
+f 1408//1598 1417//1607 1418//1608
+f 1418//1608 1409//1599 1408//1598
+f 1409//1599 1418//1608 1419//1609
+f 1419//1609 1410//1600 1409//1599
+f 1410//1600 1419//1609 1420//1610
+f 1420//1610 1411//1601 1410//1600
+f 1411//1601 1420//1610 1421//1611
+f 1421//1611 1412//1602 1411//1601
+f 1412//1602 1421//1611 1422//1612
+f 1422//1612 1413//1603 1412//1602
+f 1414//1604 1423//1613 1424//1614
+f 1424//1614 1415//1605 1414//1604
+f 1415//1605 1424//1614 1425//1615
+f 1425//1615 1416//1606 1415//1605
+f 1416//1606 1425//1615 1426//1616
+f 1426//1616 1417//1607 1416//1606
+f 1417//1607 1426//1616 1427//1617
+f 1427//1617 1418//1608 1417//1607
+f 1418//1608 1427//1617 1428//1618
+f 1428//1618 1419//1609 1418//1608
+f 1419//1609 1428//1618 1429//1619
+f 1429//1619 1420//1610 1419//1609
+f 1420//1610 1429//1619 1430//1620
+f 1430//1620 1421//1611 1420//1610
+f 1421//1611 1430//1620 1431//1621
+f 1431//1621 1422//1612 1421//1611
+f 1423//1613 1432//1622 1433//1623
+f 1433//1623 1424//1614 1423//1613
+f 1424//1614 1433//1623 1434//1624
+f 1434//1624 1425//1615 1424//1614
+f 1425//1615 1434//1624 1435//1625
+f 1435//1625 1426//1616 1425//1615
+f 1426//1616 1435//1625 1436//1626
+f 1436//1626 1427//1617 1426//1616
+f 1427//1617 1436//1626 1437//1627
+f 1437//1627 1428//1618 1427//1617
+f 1428//1618 1437//1627 1438//1628
+f 1438//1628 1429//1619 1428//1618
+f 1429//1619 1438//1628 1439//1629
+f 1439//1629 1430//1620 1429//1619
+f 1430//1620 1439//1629 1440//1630
+f 1440//1630 1431//1621 1430//1620
+f 1432//1622 1297//1487 1300//1490
+f 1300//1490 1433//1623 1432//1622
+f 1433//1623 1300//1490 1302//1492
+f 1302//1492 1434//1624 1433//1623
+f 1434//1624 1302//1492 1304//1494
+f 1304//1494 1435//1625 1434//1624
+f 1435//1625 1304//1494 1306//1496
+f 1306//1496 1436//1626 1435//1625
+f 1436//1626 1306//1496 1308//1498
+f 1308//1498 1437//1627 1436//1626
+f 1437//1627 1308//1498 1310//1500
+f 1310//1500 1438//1628 1437//1627
+f 1438//1628 1310//1500 1312//1502
+f 1312//1502 1439//1629 1438//1628
+f 1439//1629 1312//1502 1314//1504
+f 1314//1504 1440//1630 1439//1629
+f 1314//1504 1313//1503 1441//1631
+f 1441//1631 1442//1632 1314//1504
+f 1442//1632 1441//1631 1443//1633
+f 1443//1633 1444//1634 1442//1632
+f 1444//1634 1443//1633 1445//1635
+f 1445//1635 1446//1636 1444//1634
+f 1446//1636 1445//1635 1447//1637
+f 1447//1637 1448//1638 1446//1636
+f 1448//1638 1447//1637 1449//1639
+f 1449//1639 1450//1640 1448//1638
+s 16
+f 1450//1760 1449//1759 1451//1761
+f 1451//1761 1452//1762 1450//1760
+s 14
+f 1452//1642 1451//1641 1453//1643
+f 1453//1643 1454//1644 1452//1642
+f 1454//1644 1453//1643 1455//1645
+f 1455//1645 1456//1646 1454//1644
+f 1313//1503 1323//1513 1457//1647
+f 1457//1647 1441//1631 1313//1503
+f 1441//1631 1457//1647 1458//1648
+f 1458//1648 1443//1633 1441//1631
+f 1443//1633 1458//1648 1459//1649
+f 1459//1649 1445//1635 1443//1633
+f 1445//1635 1459//1649 1460//1650
+f 1460//1650 1447//1637 1445//1635
+f 1447//1637 1460//1650 1461//1651
+f 1461//1651 1449//1639 1447//1637
+f 1449//1639 1461//1651 1462//1652
+f 1462//1652 1451//1641 1449//1639
+f 1451//1641 1462//1652 1463//1653
+f 1463//1653 1453//1643 1451//1641
+f 1453//1643 1463//1653 1464//1654
+f 1464//1654 1455//1645 1453//1643
+f 1323//1513 1332//1522 1465//1655
+f 1465//1655 1457//1647 1323//1513
+f 1457//1647 1465//1655 1466//1656
+f 1466//1656 1458//1648 1457//1647
+f 1458//1648 1466//1656 1467//1657
+f 1467//1657 1459//1649 1458//1648
+f 1459//1649 1467//1657 1468//1658
+f 1468//1658 1460//1650 1459//1649
+f 1460//1650 1468//1658 1469//1659
+f 1469//1659 1461//1651 1460//1650
+f 1461//1651 1469//1659 1470//1660
+f 1470//1660 1462//1652 1461//1651
+f 1462//1652 1470//1660 1471//1661
+f 1471//1661 1463//1653 1462//1652
+f 1463//1653 1471//1661 1472//1662
+f 1472//1662 1464//1654 1463//1653
+f 1332//1522 1341//1531 1473//1663
+f 1473//1663 1465//1655 1332//1522
+f 1465//1655 1473//1663 1474//1664
+f 1474//1664 1466//1656 1465//1655
+f 1466//1656 1474//1664 1475//1665
+f 1475//1665 1467//1657 1466//1656
+f 1467//1657 1475//1665 1476//1666
+f 1476//1666 1468//1658 1467//1657
+f 1468//1658 1476//1666 1477//1667
+f 1477//1667 1469//1659 1468//1658
+f 1469//1659 1477//1667 1478//1668
+f 1478//1668 1470//1660 1469//1659
+f 1470//1660 1478//1668 1479//1669
+f 1479//1669 1471//1661 1470//1660
+f 1471//1661 1479//1669 1480//1670
+f 1480//1670 1472//1662 1471//1661
+f 1341//1531 1350//1540 1481//1671
+f 1481//1671 1473//1663 1341//1531
+f 1473//1663 1481//1671 1482//1672
+f 1482//1672 1474//1664 1473//1663
+f 1474//1664 1482//1672 1483//1673
+f 1483//1673 1475//1665 1474//1664
+f 1475//1665 1483//1673 1484//1674
+f 1484//1674 1476//1666 1475//1665
+f 1476//1666 1484//1674 1485//1675
+f 1485//1675 1477//1667 1476//1666
+f 1477//1667 1485//1675 1486//1676
+f 1486//1676 1478//1668 1477//1667
+f 1478//1668 1486//1676 1487//1677
+f 1487//1677 1479//1669 1478//1668
+f 1479//1669 1487//1677 1488//1678
+f 1488//1678 1480//1670 1479//1669
+f 1350//1540 1359//1549 1489//1679
+f 1489//1679 1481//1671 1350//1540
+f 1481//1671 1489//1679 1490//1680
+f 1490//1680 1482//1672 1481//1671
+f 1482//1672 1490//1680 1491//1681
+f 1491//1681 1483//1673 1482//1672
+f 1483//1673 1491//1681 1492//1682
+f 1492//1682 1484//1674 1483//1673
+f 1484//1674 1492//1682 1493//1683
+f 1493//1683 1485//1675 1484//1674
+f 1485//1675 1493//1683 1494//1684
+f 1494//1684 1486//1676 1485//1675
+f 1486//1676 1494//1684 1495//1685
+f 1495//1685 1487//1677 1486//1676
+f 1487//1677 1495//1685 1496//1686
+f 1496//1686 1488//1678 1487//1677
+f 1359//1549 1368//1558 1497//1687
+f 1497//1687 1489//1679 1359//1549
+f 1489//1679 1497//1687 1498//1688
+f 1498//1688 1490//1680 1489//1679
+f 1490//1680 1498//1688 1499//1689
+f 1499//1689 1491//1681 1490//1680
+f 1491//1681 1499//1689 1500//1690
+f 1500//1690 1492//1682 1491//1681
+f 1492//1682 1500//1690 1501//1691
+f 1501//1691 1493//1683 1492//1682
+f 1493//1683 1501//1691 1502//1692
+f 1502//1692 1494//1684 1493//1683
+f 1494//1684 1502//1692 1503//1693
+f 1503//1693 1495//1685 1494//1684
+f 1495//1685 1503//1693 1504//1694
+f 1504//1694 1496//1686 1495//1685
+f 1368//1558 1377//1567 1505//1695
+f 1505//1695 1497//1687 1368//1558
+f 1497//1687 1505//1695 1506//1696
+f 1506//1696 1498//1688 1497//1687
+f 1498//1688 1506//1696 1507//1697
+f 1507//1697 1499//1689 1498//1688
+f 1499//1689 1507//1697 1508//1698
+f 1508//1698 1500//1690 1499//1689
+f 1500//1690 1508//1698 1509//1699
+f 1509//1699 1501//1691 1500//1690
+f 1501//1691 1509//1699 1510//1700
+f 1510//1700 1502//1692 1501//1691
+f 1502//1692 1510//1700 1511//1701
+f 1511//1701 1503//1693 1502//1692
+f 1503//1693 1511//1701 1512//1702
+f 1512//1702 1504//1694 1503//1693
+f 1377//1567 1386//1576 1513//1703
+f 1513//1703 1505//1695 1377//1567
+f 1505//1695 1513//1703 1514//1704
+f 1514//1704 1506//1696 1505//1695
+f 1506//1696 1514//1704 1515//1705
+f 1515//1705 1507//1697 1506//1696
+f 1507//1697 1515//1705 1516//1706
+f 1516//1706 1508//1698 1507//1697
+f 1508//1698 1516//1706 1517//1707
+f 1517//1707 1509//1699 1508//1698
+f 1509//1699 1517//1707 1518//1708
+f 1518//1708 1510//1700 1509//1699
+f 1510//1700 1518//1708 1519//1709
+f 1519//1709 1511//1701 1510//1700
+f 1511//1701 1519//1709 1520//1710
+f 1520//1710 1512//1702 1511//1701
+f 1386//1576 1395//1585 1521//1711
+f 1521//1711 1513//1703 1386//1576
+f 1513//1703 1521//1711 1522//1712
+f 1522//1712 1514//1704 1513//1703
+f 1514//1704 1522//1712 1523//1713
+f 1523//1713 1515//1705 1514//1704
+f 1515//1705 1523//1713 1524//1714
+f 1524//1714 1516//1706 1515//1705
+f 1516//1706 1524//1714 1525//1715
+f 1525//1715 1517//1707 1516//1706
+f 1517//1707 1525//1715 1526//1716
+f 1526//1716 1518//1708 1517//1707
+f 1518//1708 1526//1716 1527//1717
+f 1527//1717 1519//1709 1518//1708
+f 1519//1709 1527//1717 1528//1718
+f 1528//1718 1520//1710 1519//1709
+f 1395//1585 1404//1594 1529//1719
+f 1529//1719 1521//1711 1395//1585
+f 1521//1711 1529//1719 1530//1720
+f 1530//1720 1522//1712 1521//1711
+f 1522//1712 1530//1720 1531//1721
+f 1531//1721 1523//1713 1522//1712
+f 1523//1713 1531//1721 1532//1722
+f 1532//1722 1524//1714 1523//1713
+f 1524//1714 1532//1722 1533//1723
+f 1533//1723 1525//1715 1524//1714
+f 1525//1715 1533//1723 1534//1724
+f 1534//1724 1526//1716 1525//1715
+f 1526//1716 1534//1724 1535//1725
+f 1535//1725 1527//1717 1526//1716
+f 1527//1717 1535//1725 1536//1726
+f 1536//1726 1528//1718 1527//1717
+f 1404//1594 1413//1603 1537//1727
+f 1537//1727 1529//1719 1404//1594
+f 1529//1719 1537//1727 1538//1728
+f 1538//1728 1530//1720 1529//1719
+f 1530//1720 1538//1728 1539//1729
+f 1539//1729 1531//1721 1530//1720
+f 1531//1721 1539//1729 1540//1730
+f 1540//1730 1532//1722 1531//1721
+f 1532//1722 1540//1730 1541//1731
+f 1541//1731 1533//1723 1532//1722
+f 1533//1723 1541//1731 1542//1732
+f 1542//1732 1534//1724 1533//1723
+f 1534//1724 1542//1732 1543//1733
+f 1543//1733 1535//1725 1534//1724
+f 1535//1725 1543//1733 1544//1734
+f 1544//1734 1536//1726 1535//1725
+f 1413//1603 1422//1612 1545//1735
+f 1545//1735 1537//1727 1413//1603
+f 1537//1727 1545//1735 1546//1736
+f 1546//1736 1538//1728 1537//1727
+f 1538//1728 1546//1736 1547//1737
+f 1547//1737 1539//1729 1538//1728
+f 1539//1729 1547//1737 1548//1738
+f 1548//1738 1540//1730 1539//1729
+f 1540//1730 1548//1738 1549//1739
+f 1549//1739 1541//1731 1540//1730
+f 1541//1731 1549//1739 1550//1740
+f 1550//1740 1542//1732 1541//1731
+f 1542//1732 1550//1740 1551//1741
+f 1551//1741 1543//1733 1542//1732
+f 1543//1733 1551//1741 1552//1742
+f 1552//1742 1544//1734 1543//1733
+f 1422//1612 1431//1621 1553//1743
+f 1553//1743 1545//1735 1422//1612
+f 1545//1735 1553//1743 1554//1744
+f 1554//1744 1546//1736 1545//1735
+f 1546//1736 1554//1744 1555//1745
+f 1555//1745 1547//1737 1546//1736
+f 1547//1737 1555//1745 1556//1746
+f 1556//1746 1548//1738 1547//1737
+f 1548//1738 1556//1746 1557//1747
+f 1557//1747 1549//1739 1548//1738
+f 1549//1739 1557//1747 1558//1748
+f 1558//1748 1550//1740 1549//1739
+f 1550//1740 1558//1748 1559//1749
+f 1559//1749 1551//1741 1550//1740
+f 1551//1741 1559//1749 1560//1750
+f 1560//1750 1552//1742 1551//1741
+f 1431//1621 1440//1630 1561//1751
+f 1561//1751 1553//1743 1431//1621
+f 1553//1743 1561//1751 1562//1752
+f 1562//1752 1554//1744 1553//1743
+f 1554//1744 1562//1752 1563//1753
+f 1563//1753 1555//1745 1554//1744
+f 1555//1745 1563//1753 1564//1754
+f 1564//1754 1556//1746 1555//1745
+f 1556//1746 1564//1754 1565//1755
+f 1565//1755 1557//1747 1556//1746
+f 1557//1747 1565//1755 1566//1756
+f 1566//1756 1558//1748 1557//1747
+f 1558//1748 1566//1756 1567//1757
+f 1567//1757 1559//1749 1558//1748
+f 1559//1749 1567//1757 1568//1758
+f 1568//1758 1560//1750 1559//1749
+f 1440//1630 1314//1504 1442//1632
+f 1442//1632 1561//1751 1440//1630
+f 1561//1751 1442//1632 1444//1634
+f 1444//1634 1562//1752 1561//1751
+f 1562//1752 1444//1634 1446//1636
+f 1446//1636 1563//1753 1562//1752
+f 1563//1753 1446//1636 1448//1638
+f 1448//1638 1564//1754 1563//1753
+f 1564//1754 1448//1638 1450//1640
+f 1450//1640 1565//1755 1564//1754
+s 19
+f 1565//1765 1450//1763 1452//1764
+f 1452//1764 1566//1766 1565//1765
+s 17
+f 1566//1769 1452//1767 1454//1768
+f 1454//1768 1567//1770 1566//1769
+s 14
+f 1567//1757 1454//1644 1456//1646
+f 1456//1646 1568//1758 1567//1757
+s off
+f 1569//33 1569//33 1570//33
+s 23
+f 1570//1772 1571//1773 1569//1771
+f 1571//1773 1570//1772 1572//1774
+f 1572//1774 1573//1775 1571//1773
+s 24
+f 1573//1837 1572//1836 1574//1838
+f 1574//1838 1575//1839 1573//1837
+s 25
+f 1575//1901 1574//1900 1576//1902
+f 1576//1902 1577//1903 1575//1901
+f 1577//1903 1576//1902 1578//1904
+f 1578//1904 1579//1905 1577//1903
+f 1579//1905 1578//1904 1580//1906
+f 1580//1906 1581//1907 1579//1905
+f 1581//1907 1580//1906 1582//1908
+f 1582//1908 1583//1909 1581//1907
+s 26
+f 1583//2061 1582//2060 1584//2062
+f 1584//2062 1585//2063 1583//2061
+s off
+f 1569//34 1569//34 1586//34
+s 23
+f 1586//1776 1570//1772 1569//1771
+f 1570//1772 1586//1776 1587//1777
+f 1587//1777 1572//1774 1570//1772
+s 24
+f 1572//1836 1587//1840 1588//1841
+f 1588//1841 1574//1838 1572//1836
+s 25
+f 1574//1900 1588//1910 1589//1911
+f 1589//1911 1576//1902 1574//1900
+f 1576//1902 1589//1911 1590//1912
+f 1590//1912 1578//1904 1576//1902
+f 1578//1904 1590//1912 1591//1913
+f 1591//1913 1580//1906 1578//1904
+f 1580//1906 1591//1913 1592//1914
+f 1592//1914 1582//1908 1580//1906
+s 26
+f 1582//2060 1592//2064 1593//2065
+f 1593//2065 1584//2062 1582//2060
+s off
+f 1569//35 1569//35 1594//35
+s 23
+f 1594//1778 1586//1776 1569//1771
+f 1586//1776 1594//1778 1595//1779
+f 1595//1779 1587//1777 1586//1776
+s 24
+f 1587//1840 1595//1842 1596//1843
+f 1596//1843 1588//1841 1587//1840
+s 25
+f 1588//1910 1596//1915 1597//1916
+f 1597//1916 1589//1911 1588//1910
+f 1589//1911 1597//1916 1598//1917
+f 1598//1917 1590//1912 1589//1911
+f 1590//1912 1598//1917 1599//1918
+f 1599//1918 1591//1913 1590//1912
+f 1591//1913 1599//1918 1600//1919
+f 1600//1919 1592//1914 1591//1913
+s 26
+f 1592//2064 1600//2066 1601//2067
+f 1601//2067 1593//2065 1592//2064
+s off
+f 1569//36 1569//36 1602//36
+s 23
+f 1602//1780 1594//1778 1569//1771
+f 1594//1778 1602//1780 1603//1781
+f 1603//1781 1595//1779 1594//1778
+s 24
+f 1595//1842 1603//1844 1604//1845
+f 1604//1845 1596//1843 1595//1842
+s 25
+f 1596//1915 1604//1920 1605//1921
+f 1605//1921 1597//1916 1596//1915
+f 1597//1916 1605//1921 1606//1922
+f 1606//1922 1598//1917 1597//1916
+f 1598//1917 1606//1922 1607//1923
+f 1607//1923 1599//1918 1598//1917
+f 1599//1918 1607//1923 1608//1924
+f 1608//1924 1600//1919 1599//1918
+s 26
+f 1600//2066 1608//2068 1609//2069
+f 1609//2069 1601//2067 1600//2066
+s off
+f 1569//37 1569//37 1610//37
+s 23
+f 1610//1782 1602//1780 1569//1771
+f 1602//1780 1610//1782 1611//1783
+f 1611//1783 1603//1781 1602//1780
+s 24
+f 1603//1844 1611//1846 1612//1847
+f 1612//1847 1604//1845 1603//1844
+s 25
+f 1604//1920 1612//1925 1613//1926
+f 1613//1926 1605//1921 1604//1920
+f 1605//1921 1613//1926 1614//1927
+f 1614//1927 1606//1922 1605//1921
+f 1606//1922 1614//1927 1615//1928
+f 1615//1928 1607//1923 1606//1922
+f 1607//1923 1615//1928 1616//1929
+f 1616//1929 1608//1924 1607//1923
+s 26
+f 1608//2068 1616//2070 1617//2071
+f 1617//2071 1609//2069 1608//2068
+s off
+f 1569//38 1569//38 1618//38
+s 23
+f 1618//1784 1610//1782 1569//1771
+f 1610//1782 1618//1784 1619//1785
+f 1619//1785 1611//1783 1610//1782
+s 24
+f 1611//1846 1619//1848 1620//1849
+f 1620//1849 1612//1847 1611//1846
+s 25
+f 1612//1925 1620//1930 1621//1931
+f 1621//1931 1613//1926 1612//1925
+f 1613//1926 1621//1931 1622//1932
+f 1622//1932 1614//1927 1613//1926
+f 1614//1927 1622//1932 1623//1933
+f 1623//1933 1615//1928 1614//1927
+f 1615//1928 1623//1933 1624//1934
+f 1624//1934 1616//1929 1615//1928
+s 26
+f 1616//2070 1624//2072 1625//2073
+f 1625//2073 1617//2071 1616//2070
+s off
+f 1569//39 1569//39 1626//39
+s 23
+f 1626//1786 1618//1784 1569//1771
+f 1618//1784 1626//1786 1627//1787
+f 1627//1787 1619//1785 1618//1784
+s 24
+f 1619//1848 1627//1850 1628//1851
+f 1628//1851 1620//1849 1619//1848
+s 25
+f 1620//1930 1628//1935 1629//1936
+f 1629//1936 1621//1931 1620//1930
+f 1621//1931 1629//1936 1630//1937
+f 1630//1937 1622//1932 1621//1931
+f 1622//1932 1630//1937 1631//1938
+f 1631//1938 1623//1933 1622//1932
+f 1623//1933 1631//1938 1632//1939
+f 1632//1939 1624//1934 1623//1933
+s 26
+f 1624//2072 1632//2074 1633//2075
+f 1633//2075 1625//2073 1624//2072
+s off
+f 1569//40 1569//40 1634//40
+s 23
+f 1634//1788 1626//1786 1569//1771
+f 1626//1786 1634//1788 1635//1789
+f 1635//1789 1627//1787 1626//1786
+s 24
+f 1627//1850 1635//1852 1636//1853
+f 1636//1853 1628//1851 1627//1850
+s 25
+f 1628//1935 1636//1940 1637//1941
+f 1637//1941 1629//1936 1628//1935
+f 1629//1936 1637//1941 1638//1942
+f 1638//1942 1630//1937 1629//1936
+f 1630//1937 1638//1942 1639//1943
+f 1639//1943 1631//1938 1630//1937
+f 1631//1938 1639//1943 1640//1944
+f 1640//1944 1632//1939 1631//1938
+s 26
+f 1632//2074 1640//2076 1641//2077
+f 1641//2077 1633//2075 1632//2074
+s off
+f 1569//41 1569//41 1642//41
+s 23
+f 1642//1790 1634//1788 1569//1771
+f 1634//1788 1642//1790 1643//1791
+f 1643//1791 1635//1789 1634//1788
+s 24
+f 1635//1852 1643//1854 1644//1855
+f 1644//1855 1636//1853 1635//1852
+s 25
+f 1636//1940 1644//1945 1645//1946
+f 1645//1946 1637//1941 1636//1940
+f 1637//1941 1645//1946 1646//1947
+f 1646//1947 1638//1942 1637//1941
+f 1638//1942 1646//1947 1647//1948
+f 1647//1948 1639//1943 1638//1942
+f 1639//1943 1647//1948 1648//1949
+f 1648//1949 1640//1944 1639//1943
+s 26
+f 1640//2076 1648//2078 1649//2079
+f 1649//2079 1641//2077 1640//2076
+s off
+f 1569//42 1569//42 1650//42
+s 23
+f 1650//1792 1642//1790 1569//1771
+f 1642//1790 1650//1792 1651//1793
+f 1651//1793 1643//1791 1642//1790
+s 24
+f 1643//1854 1651//1856 1652//1857
+f 1652//1857 1644//1855 1643//1854
+s 25
+f 1644//1945 1652//1950 1653//1951
+f 1653//1951 1645//1946 1644//1945
+f 1645//1946 1653//1951 1654//1952
+f 1654//1952 1646//1947 1645//1946
+f 1646//1947 1654//1952 1655//1953
+f 1655//1953 1647//1948 1646//1947
+f 1647//1948 1655//1953 1656//1954
+f 1656//1954 1648//1949 1647//1948
+s 26
+f 1648//2078 1656//2080 1657//2081
+f 1657//2081 1649//2079 1648//2078
+s off
+f 1569//43 1569//43 1658//43
+s 23
+f 1658//1794 1650//1792 1569//1771
+f 1650//1792 1658//1794 1659//1795
+f 1659//1795 1651//1793 1650//1792
+s 24
+f 1651//1856 1659//1858 1660//1859
+f 1660//1859 1652//1857 1651//1856
+s 25
+f 1652//1950 1660//1955 1661//1956
+f 1661//1956 1653//1951 1652//1950
+f 1653//1951 1661//1956 1662//1957
+f 1662//1957 1654//1952 1653//1951
+f 1654//1952 1662//1957 1663//1958
+f 1663//1958 1655//1953 1654//1952
+f 1655//1953 1663//1958 1664//1959
+f 1664//1959 1656//1954 1655//1953
+s 26
+f 1656//2080 1664//2082 1665//2083
+f 1665//2083 1657//2081 1656//2080
+s off
+f 1569//44 1569//44 1666//44
+s 23
+f 1666//1796 1658//1794 1569//1771
+f 1658//1794 1666//1796 1667//1797
+f 1667//1797 1659//1795 1658//1794
+s 24
+f 1659//1858 1667//1860 1668//1861
+f 1668//1861 1660//1859 1659//1858
+s 25
+f 1660//1955 1668//1960 1669//1961
+f 1669//1961 1661//1956 1660//1955
+f 1661//1956 1669//1961 1670//1962
+f 1670//1962 1662//1957 1661//1956
+f 1662//1957 1670//1962 1671//1963
+f 1671//1963 1663//1958 1662//1957
+f 1663//1958 1671//1963 1672//1964
+f 1672//1964 1664//1959 1663//1958
+s 26
+f 1664//2082 1672//2084 1673//2085
+f 1673//2085 1665//2083 1664//2082
+s off
+f 1569//45 1569//45 1674//45
+s 23
+f 1674//1798 1666//1796 1569//1771
+f 1666//1796 1674//1798 1675//1799
+f 1675//1799 1667//1797 1666//1796
+s 24
+f 1667//1860 1675//1862 1676//1863
+f 1676//1863 1668//1861 1667//1860
+s 25
+f 1668//1960 1676//1965 1677//1966
+f 1677//1966 1669//1961 1668//1960
+f 1669//1961 1677//1966 1678//1967
+f 1678//1967 1670//1962 1669//1961
+f 1670//1962 1678//1967 1679//1968
+f 1679//1968 1671//1963 1670//1962
+f 1671//1963 1679//1968 1680//1969
+f 1680//1969 1672//1964 1671//1963
+s 26
+f 1672//2084 1680//2086 1681//2087
+f 1681//2087 1673//2085 1672//2084
+s off
+f 1569//46 1569//46 1682//46
+s 23
+f 1682//1800 1674//1798 1569//1771
+f 1674//1798 1682//1800 1683//1801
+f 1683//1801 1675//1799 1674//1798
+s 24
+f 1675//1862 1683//1864 1684//1865
+f 1684//1865 1676//1863 1675//1862
+s 25
+f 1676//1965 1684//1970 1685//1971
+f 1685//1971 1677//1966 1676//1965
+f 1677//1966 1685//1971 1686//1972
+f 1686//1972 1678//1967 1677//1966
+f 1678//1967 1686//1972 1687//1973
+f 1687//1973 1679//1968 1678//1967
+f 1679//1968 1687//1973 1688//1974
+f 1688//1974 1680//1969 1679//1968
+s 26
+f 1680//2086 1688//2088 1689//2089
+f 1689//2089 1681//2087 1680//2086
+s off
+f 1569//47 1569//47 1690//47
+s 23
+f 1690//1802 1682//1800 1569//1771
+f 1682//1800 1690//1802 1691//1803
+f 1691//1803 1683//1801 1682//1800
+s 24
+f 1683//1864 1691//1866 1692//1867
+f 1692//1867 1684//1865 1683//1864
+s 25
+f 1684//1970 1692//1975 1693//1976
+f 1693//1976 1685//1971 1684//1970
+f 1685//1971 1693//1976 1694//1977
+f 1694//1977 1686//1972 1685//1971
+f 1686//1972 1694//1977 1695//1978
+f 1695//1978 1687//1973 1686//1972
+f 1687//1973 1695//1978 1696//1979
+f 1696//1979 1688//1974 1687//1973
+s 26
+f 1688//2088 1696//2090 1697//2091
+f 1697//2091 1689//2089 1688//2088
+s off
+f 1569//48 1569//48 1698//48
+s 23
+f 1698//1804 1690//1802 1569//1771
+f 1690//1802 1698//1804 1699//1805
+f 1699//1805 1691//1803 1690//1802
+s 24
+f 1691//1866 1699//1868 1700//1869
+f 1700//1869 1692//1867 1691//1866
+s 25
+f 1692//1975 1700//1980 1701//1981
+f 1701//1981 1693//1976 1692//1975
+f 1693//1976 1701//1981 1702//1982
+f 1702//1982 1694//1977 1693//1976
+f 1694//1977 1702//1982 1703//1983
+f 1703//1983 1695//1978 1694//1977
+f 1695//1978 1703//1983 1704//1984
+f 1704//1984 1696//1979 1695//1978
+s 26
+f 1696//2090 1704//2092 1705//2093
+f 1705//2093 1697//2091 1696//2090
+s off
+f 1569//49 1569//49 1706//49
+s 23
+f 1706//1806 1698//1804 1569//1771
+f 1698//1804 1706//1806 1707//1807
+f 1707//1807 1699//1805 1698//1804
+s 24
+f 1699//1868 1707//1870 1708//1871
+f 1708//1871 1700//1869 1699//1868
+s 25
+f 1700//1980 1708//1985 1709//1986
+f 1709//1986 1701//1981 1700//1980
+f 1701//1981 1709//1986 1710//1987
+f 1710//1987 1702//1982 1701//1981
+f 1702//1982 1710//1987 1711//1988
+f 1711//1988 1703//1983 1702//1982
+f 1703//1983 1711//1988 1712//1989
+f 1712//1989 1704//1984 1703//1983
+s 26
+f 1704//2092 1712//2094 1713//2095
+f 1713//2095 1705//2093 1704//2092
+s off
+f 1569//50 1569//50 1714//50
+s 23
+f 1714//1808 1706//1806 1569//1771
+f 1706//1806 1714//1808 1715//1809
+f 1715//1809 1707//1807 1706//1806
+s 24
+f 1707//1870 1715//1872 1716//1873
+f 1716//1873 1708//1871 1707//1870
+s 25
+f 1708//1985 1716//1990 1717//1991
+f 1717//1991 1709//1986 1708//1985
+f 1709//1986 1717//1991 1718//1992
+f 1718//1992 1710//1987 1709//1986
+f 1710//1987 1718//1992 1719//1993
+f 1719//1993 1711//1988 1710//1987
+f 1711//1988 1719//1993 1720//1994
+f 1720//1994 1712//1989 1711//1988
+s 26
+f 1712//2094 1720//2096 1721//2097
+f 1721//2097 1713//2095 1712//2094
+s off
+f 1569//51 1569//51 1722//51
+s 23
+f 1722//1810 1714//1808 1569//1771
+f 1714//1808 1722//1810 1723//1811
+f 1723//1811 1715//1809 1714//1808
+s 24
+f 1715//1872 1723//1874 1724//1875
+f 1724//1875 1716//1873 1715//1872
+s 25
+f 1716//1990 1724//1995 1725//1996
+f 1725//1996 1717//1991 1716//1990
+f 1717//1991 1725//1996 1726//1997
+f 1726//1997 1718//1992 1717//1991
+f 1718//1992 1726//1997 1727//1998
+f 1727//1998 1719//1993 1718//1992
+f 1719//1993 1727//1998 1728//1999
+f 1728//1999 1720//1994 1719//1993
+s 26
+f 1720//2096 1728//2098 1729//2099
+f 1729//2099 1721//2097 1720//2096
+s off
+f 1569//52 1569//52 1730//52
+s 23
+f 1730//1812 1722//1810 1569//1771
+f 1722//1810 1730//1812 1731//1813
+f 1731//1813 1723//1811 1722//1810
+s 24
+f 1723//1874 1731//1876 1732//1877
+f 1732//1877 1724//1875 1723//1874
+s 25
+f 1724//1995 1732//2000 1733//2001
+f 1733//2001 1725//1996 1724//1995
+f 1725//1996 1733//2001 1734//2002
+f 1734//2002 1726//1997 1725//1996
+f 1726//1997 1734//2002 1735//2003
+f 1735//2003 1727//1998 1726//1997
+f 1727//1998 1735//2003 1736//2004
+f 1736//2004 1728//1999 1727//1998
+s 26
+f 1728//2098 1736//2100 1737//2101
+f 1737//2101 1729//2099 1728//2098
+s off
+f 1569//53 1569//53 1738//53
+s 23
+f 1738//1814 1730//1812 1569//1771
+f 1730//1812 1738//1814 1739//1815
+f 1739//1815 1731//1813 1730//1812
+s 24
+f 1731//1876 1739//1878 1740//1879
+f 1740//1879 1732//1877 1731//1876
+s 25
+f 1732//2000 1740//2005 1741//2006
+f 1741//2006 1733//2001 1732//2000
+f 1733//2001 1741//2006 1742//2007
+f 1742//2007 1734//2002 1733//2001
+f 1734//2002 1742//2007 1743//2008
+f 1743//2008 1735//2003 1734//2002
+f 1735//2003 1743//2008 1744//2009
+f 1744//2009 1736//2004 1735//2003
+s 26
+f 1736//2100 1744//2102 1745//2103
+f 1745//2103 1737//2101 1736//2100
+s off
+f 1569//54 1569//54 1746//54
+s 23
+f 1746//1816 1738//1814 1569//1771
+f 1738//1814 1746//1816 1747//1817
+f 1747//1817 1739//1815 1738//1814
+s 24
+f 1739//1878 1747//1880 1748//1881
+f 1748//1881 1740//1879 1739//1878
+s 25
+f 1740//2005 1748//2010 1749//2011
+f 1749//2011 1741//2006 1740//2005
+f 1741//2006 1749//2011 1750//2012
+f 1750//2012 1742//2007 1741//2006
+f 1742//2007 1750//2012 1751//2013
+f 1751//2013 1743//2008 1742//2007
+f 1743//2008 1751//2013 1752//2014
+f 1752//2014 1744//2009 1743//2008
+s 26
+f 1744//2102 1752//2104 1753//2105
+f 1753//2105 1745//2103 1744//2102
+s off
+f 1569//55 1569//55 1754//55
+s 23
+f 1754//1818 1746//1816 1569//1771
+f 1746//1816 1754//1818 1755//1819
+f 1755//1819 1747//1817 1746//1816
+s 24
+f 1747//1880 1755//1882 1756//1883
+f 1756//1883 1748//1881 1747//1880
+s 25
+f 1748//2010 1756//2015 1757//2016
+f 1757//2016 1749//2011 1748//2010
+f 1749//2011 1757//2016 1758//2017
+f 1758//2017 1750//2012 1749//2011
+f 1750//2012 1758//2017 1759//2018
+f 1759//2018 1751//2013 1750//2012
+f 1751//2013 1759//2018 1760//2019
+f 1760//2019 1752//2014 1751//2013
+s 26
+f 1752//2104 1760//2106 1761//2107
+f 1761//2107 1753//2105 1752//2104
+s off
+f 1569//56 1569//56 1762//56
+s 23
+f 1762//1820 1754//1818 1569//1771
+f 1754//1818 1762//1820 1763//1821
+f 1763//1821 1755//1819 1754//1818
+s 24
+f 1755//1882 1763//1884 1764//1885
+f 1764//1885 1756//1883 1755//1882
+s 25
+f 1756//2015 1764//2020 1765//2021
+f 1765//2021 1757//2016 1756//2015
+f 1757//2016 1765//2021 1766//2022
+f 1766//2022 1758//2017 1757//2016
+f 1758//2017 1766//2022 1767//2023
+f 1767//2023 1759//2018 1758//2017
+f 1759//2018 1767//2023 1768//2024
+f 1768//2024 1760//2019 1759//2018
+s 26
+f 1760//2106 1768//2108 1769//2109
+f 1769//2109 1761//2107 1760//2106
+s off
+f 1569//57 1569//57 1770//57
+s 23
+f 1770//1822 1762//1820 1569//1771
+f 1762//1820 1770//1822 1771//1823
+f 1771//1823 1763//1821 1762//1820
+s 24
+f 1763//1884 1771//1886 1772//1887
+f 1772//1887 1764//1885 1763//1884
+s 25
+f 1764//2020 1772//2025 1773//2026
+f 1773//2026 1765//2021 1764//2020
+f 1765//2021 1773//2026 1774//2027
+f 1774//2027 1766//2022 1765//2021
+f 1766//2022 1774//2027 1775//2028
+f 1775//2028 1767//2023 1766//2022
+f 1767//2023 1775//2028 1776//2029
+f 1776//2029 1768//2024 1767//2023
+s 26
+f 1768//2108 1776//2110 1777//2111
+f 1777//2111 1769//2109 1768//2108
+s off
+f 1569//58 1569//58 1778//58
+s 23
+f 1778//1824 1770//1822 1569//1771
+f 1770//1822 1778//1824 1779//1825
+f 1779//1825 1771//1823 1770//1822
+s 24
+f 1771//1886 1779//1888 1780//1889
+f 1780//1889 1772//1887 1771//1886
+s 25
+f 1772//2025 1780//2030 1781//2031
+f 1781//2031 1773//2026 1772//2025
+f 1773//2026 1781//2031 1782//2032
+f 1782//2032 1774//2027 1773//2026
+f 1774//2027 1782//2032 1783//2033
+f 1783//2033 1775//2028 1774//2027
+f 1775//2028 1783//2033 1784//2034
+f 1784//2034 1776//2029 1775//2028
+s 26
+f 1776//2110 1784//2112 1785//2113
+f 1785//2113 1777//2111 1776//2110
+s off
+f 1569//59 1569//59 1786//59
+s 23
+f 1786//1826 1778//1824 1569//1771
+f 1778//1824 1786//1826 1787//1827
+f 1787//1827 1779//1825 1778//1824
+s 24
+f 1779//1888 1787//1890 1788//1891
+f 1788//1891 1780//1889 1779//1888
+s 25
+f 1780//2030 1788//2035 1789//2036
+f 1789//2036 1781//2031 1780//2030
+f 1781//2031 1789//2036 1790//2037
+f 1790//2037 1782//2032 1781//2031
+f 1782//2032 1790//2037 1791//2038
+f 1791//2038 1783//2033 1782//2032
+f 1783//2033 1791//2038 1792//2039
+f 1792//2039 1784//2034 1783//2033
+s 26
+f 1784//2112 1792//2114 1793//2115
+f 1793//2115 1785//2113 1784//2112
+s off
+f 1569//60 1569//60 1794//60
+s 23
+f 1794//1828 1786//1826 1569//1771
+f 1786//1826 1794//1828 1795//1829
+f 1795//1829 1787//1827 1786//1826
+s 24
+f 1787//1890 1795//1892 1796//1893
+f 1796//1893 1788//1891 1787//1890
+s 25
+f 1788//2035 1796//2040 1797//2041
+f 1797//2041 1789//2036 1788//2035
+f 1789//2036 1797//2041 1798//2042
+f 1798//2042 1790//2037 1789//2036
+f 1790//2037 1798//2042 1799//2043
+f 1799//2043 1791//2038 1790//2037
+f 1791//2038 1799//2043 1800//2044
+f 1800//2044 1792//2039 1791//2038
+s 26
+f 1792//2114 1800//2116 1801//2117
+f 1801//2117 1793//2115 1792//2114
+s off
+f 1569//61 1569//61 1802//61
+s 23
+f 1802//1830 1794//1828 1569//1771
+f 1794//1828 1802//1830 1803//1831
+f 1803//1831 1795//1829 1794//1828
+s 24
+f 1795//1892 1803//1894 1804//1895
+f 1804//1895 1796//1893 1795//1892
+s 25
+f 1796//2040 1804//2045 1805//2046
+f 1805//2046 1797//2041 1796//2040
+f 1797//2041 1805//2046 1806//2047
+f 1806//2047 1798//2042 1797//2041
+f 1798//2042 1806//2047 1807//2048
+f 1807//2048 1799//2043 1798//2042
+f 1799//2043 1807//2048 1808//2049
+f 1808//2049 1800//2044 1799//2043
+s 26
+f 1800//2116 1808//2118 1809//2119
+f 1809//2119 1801//2117 1800//2116
+s off
+f 1569//62 1569//62 1810//62
+s 23
+f 1810//1832 1802//1830 1569//1771
+f 1802//1830 1810//1832 1811//1833
+f 1811//1833 1803//1831 1802//1830
+s 24
+f 1803//1894 1811//1896 1812//1897
+f 1812//1897 1804//1895 1803//1894
+s 25
+f 1804//2045 1812//2050 1813//2051
+f 1813//2051 1805//2046 1804//2045
+f 1805//2046 1813//2051 1814//2052
+f 1814//2052 1806//2047 1805//2046
+f 1806//2047 1814//2052 1815//2053
+f 1815//2053 1807//2048 1806//2047
+f 1807//2048 1815//2053 1816//2054
+f 1816//2054 1808//2049 1807//2048
+s 26
+f 1808//2118 1816//2120 1817//2121
+f 1817//2121 1809//2119 1808//2118
+s off
+f 1569//63 1569//63 1818//63
+s 23
+f 1818//1834 1810//1832 1569//1771
+f 1810//1832 1818//1834 1819//1835
+f 1819//1835 1811//1833 1810//1832
+s 24
+f 1811//1896 1819//1898 1820//1899
+f 1820//1899 1812//1897 1811//1896
+s 25
+f 1812//2050 1820//2055 1821//2056
+f 1821//2056 1813//2051 1812//2050
+f 1813//2051 1821//2056 1822//2057
+f 1822//2057 1814//2052 1813//2051
+f 1814//2052 1822//2057 1823//2058
+f 1823//2058 1815//2053 1814//2052
+f 1815//2053 1823//2058 1824//2059
+f 1824//2059 1816//2054 1815//2053
+s 26
+f 1816//2120 1824//2122 1825//2123
+f 1825//2123 1817//2121 1816//2120
+s off
+f 1569//64 1569//64 1571//64
+s 23
+f 1571//1773 1818//1834 1569//1771
+f 1818//1834 1571//1773 1573//1775
+f 1573//1775 1819//1835 1818//1834
+s 24
+f 1819//1898 1573//1837 1575//1839
+f 1575//1839 1820//1899 1819//1898
+s 25
+f 1820//2055 1575//1901 1577//1903
+f 1577//1903 1821//2056 1820//2055
+f 1821//2056 1577//1903 1579//1905
+f 1579//1905 1822//2057 1821//2056
+f 1822//2057 1579//1905 1581//1907
+f 1581//1907 1823//2058 1822//2057
+f 1823//2058 1581//1907 1583//1909
+f 1583//1909 1824//2059 1823//2058
+s 26
+f 1824//2122 1583//2061 1585//2063
+f 1585//2063 1825//2123 1824//2122
+s 27
+f 1585//2125 1584//2124 1826//2156
+f 1826//2156 1827//2157 1585//2125
+f 1827//2157 1826//2156 1828//2158
+f 1828//2158 1829//2159 1827//2157
+f 1829//2159 1828//2158 1830//2160
+f 1830//2160 1831//2161 1829//2159
+f 1831//2161 1830//2160 1832//2162
+f 1832//2162 1833//2163 1831//2161
+f 1833//2163 1832//2162 1834//2164
+f 1834//2164 1835//2165 1833//2163
+f 1835//2165 1834//2164 1836//2166
+f 1836//2166 1837//2167 1835//2165
+f 1837//2167 1836//2166 1838//2168
+f 1838//2168 1839//2169 1837//2167
+s 28
+f 1839//2381 1838//2380 1840//2382
+f 1840//2382 1841//2383 1839//2381
+s 27
+f 1584//2124 1593//2126 1842//2170
+f 1842//2170 1826//2156 1584//2124
+f 1826//2156 1842//2170 1843//2171
+f 1843//2171 1828//2158 1826//2156
+f 1828//2158 1843//2171 1844//2172
+f 1844//2172 1830//2160 1828//2158
+f 1830//2160 1844//2172 1845//2173
+f 1845//2173 1832//2162 1830//2160
+f 1832//2162 1845//2173 1846//2174
+f 1846//2174 1834//2164 1832//2162
+f 1834//2164 1846//2174 1847//2175
+f 1847//2175 1836//2166 1834//2164
+f 1836//2166 1847//2175 1848//2176
+f 1848//2176 1838//2168 1836//2166
+s 28
+f 1838//2380 1848//2384 1849//2385
+f 1849//2385 1840//2382 1838//2380
+s 27
+f 1593//2126 1601//2127 1850//2177
+f 1850//2177 1842//2170 1593//2126
+f 1842//2170 1850//2177 1851//2178
+f 1851//2178 1843//2171 1842//2170
+f 1843//2171 1851//2178 1852//2179
+f 1852//2179 1844//2172 1843//2171
+f 1844//2172 1852//2179 1853//2180
+f 1853//2180 1845//2173 1844//2172
+f 1845//2173 1853//2180 1854//2181
+f 1854//2181 1846//2174 1845//2173
+f 1846//2174 1854//2181 1855//2182
+f 1855//2182 1847//2175 1846//2174
+f 1847//2175 1855//2182 1856//2183
+f 1856//2183 1848//2176 1847//2175
+s 28
+f 1848//2384 1856//2386 1857//2387
+f 1857//2387 1849//2385 1848//2384
+s 27
+f 1601//2127 1609//2128 1858//2184
+f 1858//2184 1850//2177 1601//2127
+f 1850//2177 1858//2184 1859//2185
+f 1859//2185 1851//2178 1850//2177
+f 1851//2178 1859//2185 1860//2186
+f 1860//2186 1852//2179 1851//2178
+f 1852//2179 1860//2186 1861//2187
+f 1861//2187 1853//2180 1852//2179
+f 1853//2180 1861//2187 1862//2188
+f 1862//2188 1854//2181 1853//2180
+f 1854//2181 1862//2188 1863//2189
+f 1863//2189 1855//2182 1854//2181
+f 1855//2182 1863//2189 1864//2190
+f 1864//2190 1856//2183 1855//2182
+s 28
+f 1856//2386 1864//2388 1865//2389
+f 1865//2389 1857//2387 1856//2386
+s 27
+f 1609//2128 1617//2129 1866//2191
+f 1866//2191 1858//2184 1609//2128
+f 1858//2184 1866//2191 1867//2192
+f 1867//2192 1859//2185 1858//2184
+f 1859//2185 1867//2192 1868//2193
+f 1868//2193 1860//2186 1859//2185
+f 1860//2186 1868//2193 1869//2194
+f 1869//2194 1861//2187 1860//2186
+f 1861//2187 1869//2194 1870//2195
+f 1870//2195 1862//2188 1861//2187
+f 1862//2188 1870//2195 1871//2196
+f 1871//2196 1863//2189 1862//2188
+f 1863//2189 1871//2196 1872//2197
+f 1872//2197 1864//2190 1863//2189
+s 28
+f 1864//2388 1872//2390 1873//2391
+f 1873//2391 1865//2389 1864//2388
+s 27
+f 1617//2129 1625//2130 1874//2198
+f 1874//2198 1866//2191 1617//2129
+f 1866//2191 1874//2198 1875//2199
+f 1875//2199 1867//2192 1866//2191
+f 1867//2192 1875//2199 1876//2200
+f 1876//2200 1868//2193 1867//2192
+f 1868//2193 1876//2200 1877//2201
+f 1877//2201 1869//2194 1868//2193
+f 1869//2194 1877//2201 1878//2202
+f 1878//2202 1870//2195 1869//2194
+f 1870//2195 1878//2202 1879//2203
+f 1879//2203 1871//2196 1870//2195
+f 1871//2196 1879//2203 1880//2204
+f 1880//2204 1872//2197 1871//2196
+s 28
+f 1872//2390 1880//2392 1881//2393
+f 1881//2393 1873//2391 1872//2390
+s 27
+f 1625//2130 1633//2131 1882//2205
+f 1882//2205 1874//2198 1625//2130
+f 1874//2198 1882//2205 1883//2206
+f 1883//2206 1875//2199 1874//2198
+f 1875//2199 1883//2206 1884//2207
+f 1884//2207 1876//2200 1875//2199
+f 1876//2200 1884//2207 1885//2208
+f 1885//2208 1877//2201 1876//2200
+f 1877//2201 1885//2208 1886//2209
+f 1886//2209 1878//2202 1877//2201
+f 1878//2202 1886//2209 1887//2210
+f 1887//2210 1879//2203 1878//2202
+f 1879//2203 1887//2210 1888//2211
+f 1888//2211 1880//2204 1879//2203
+s 28
+f 1880//2392 1888//2394 1889//2395
+f 1889//2395 1881//2393 1880//2392
+s 27
+f 1633//2131 1641//2132 1890//2212
+f 1890//2212 1882//2205 1633//2131
+f 1882//2205 1890//2212 1891//2213
+f 1891//2213 1883//2206 1882//2205
+f 1883//2206 1891//2213 1892//2214
+f 1892//2214 1884//2207 1883//2206
+f 1884//2207 1892//2214 1893//2215
+f 1893//2215 1885//2208 1884//2207
+f 1885//2208 1893//2215 1894//2216
+f 1894//2216 1886//2209 1885//2208
+f 1886//2209 1894//2216 1895//2217
+f 1895//2217 1887//2210 1886//2209
+f 1887//2210 1895//2217 1896//2218
+f 1896//2218 1888//2211 1887//2210
+s 28
+f 1888//2394 1896//2396 1897//2397
+f 1897//2397 1889//2395 1888//2394
+s 27
+f 1641//2132 1649//2133 1898//2219
+f 1898//2219 1890//2212 1641//2132
+f 1890//2212 1898//2219 1899//2220
+f 1899//2220 1891//2213 1890//2212
+f 1891//2213 1899//2220 1900//2221
+f 1900//2221 1892//2214 1891//2213
+f 1892//2214 1900//2221 1901//2222
+f 1901//2222 1893//2215 1892//2214
+f 1893//2215 1901//2222 1902//2223
+f 1902//2223 1894//2216 1893//2215
+f 1894//2216 1902//2223 1903//2224
+f 1903//2224 1895//2217 1894//2216
+f 1895//2217 1903//2224 1904//2225
+f 1904//2225 1896//2218 1895//2217
+s 28
+f 1896//2396 1904//2398 1905//2399
+f 1905//2399 1897//2397 1896//2396
+s 27
+f 1649//2133 1657//2134 1906//2226
+f 1906//2226 1898//2219 1649//2133
+f 1898//2219 1906//2226 1907//2227
+f 1907//2227 1899//2220 1898//2219
+f 1899//2220 1907//2227 1908//2228
+f 1908//2228 1900//2221 1899//2220
+f 1900//2221 1908//2228 1909//2229
+f 1909//2229 1901//2222 1900//2221
+f 1901//2222 1909//2229 1910//2230
+f 1910//2230 1902//2223 1901//2222
+f 1902//2223 1910//2230 1911//2231
+f 1911//2231 1903//2224 1902//2223
+f 1903//2224 1911//2231 1912//2232
+f 1912//2232 1904//2225 1903//2224
+s 28
+f 1904//2398 1912//2400 1913//2401
+f 1913//2401 1905//2399 1904//2398
+s 27
+f 1657//2134 1665//2135 1914//2233
+f 1914//2233 1906//2226 1657//2134
+f 1906//2226 1914//2233 1915//2234
+f 1915//2234 1907//2227 1906//2226
+f 1907//2227 1915//2234 1916//2235
+f 1916//2235 1908//2228 1907//2227
+f 1908//2228 1916//2235 1917//2236
+f 1917//2236 1909//2229 1908//2228
+f 1909//2229 1917//2236 1918//2237
+f 1918//2237 1910//2230 1909//2229
+f 1910//2230 1918//2237 1919//2238
+f 1919//2238 1911//2231 1910//2230
+f 1911//2231 1919//2238 1920//2239
+f 1920//2239 1912//2232 1911//2231
+s 28
+f 1912//2400 1920//2402 1921//2403
+f 1921//2403 1913//2401 1912//2400
+s 27
+f 1665//2135 1673//2136 1922//2240
+f 1922//2240 1914//2233 1665//2135
+f 1914//2233 1922//2240 1923//2241
+f 1923//2241 1915//2234 1914//2233
+f 1915//2234 1923//2241 1924//2242
+f 1924//2242 1916//2235 1915//2234
+f 1916//2235 1924//2242 1925//2243
+f 1925//2243 1917//2236 1916//2235
+f 1917//2236 1925//2243 1926//2244
+f 1926//2244 1918//2237 1917//2236
+f 1918//2237 1926//2244 1927//2245
+f 1927//2245 1919//2238 1918//2237
+f 1919//2238 1927//2245 1928//2246
+f 1928//2246 1920//2239 1919//2238
+s 28
+f 1920//2402 1928//2404 1929//2405
+f 1929//2405 1921//2403 1920//2402
+s 27
+f 1673//2136 1681//2137 1930//2247
+f 1930//2247 1922//2240 1673//2136
+f 1922//2240 1930//2247 1931//2248
+f 1931//2248 1923//2241 1922//2240
+f 1923//2241 1931//2248 1932//2249
+f 1932//2249 1924//2242 1923//2241
+f 1924//2242 1932//2249 1933//2250
+f 1933//2250 1925//2243 1924//2242
+f 1925//2243 1933//2250 1934//2251
+f 1934//2251 1926//2244 1925//2243
+f 1926//2244 1934//2251 1935//2252
+f 1935//2252 1927//2245 1926//2244
+f 1927//2245 1935//2252 1936//2253
+f 1936//2253 1928//2246 1927//2245
+s 28
+f 1928//2404 1936//2406 1937//2407
+f 1937//2407 1929//2405 1928//2404
+s 27
+f 1681//2137 1689//2138 1938//2254
+f 1938//2254 1930//2247 1681//2137
+f 1930//2247 1938//2254 1939//2255
+f 1939//2255 1931//2248 1930//2247
+f 1931//2248 1939//2255 1940//2256
+f 1940//2256 1932//2249 1931//2248
+f 1932//2249 1940//2256 1941//2257
+f 1941//2257 1933//2250 1932//2249
+f 1933//2250 1941//2257 1942//2258
+f 1942//2258 1934//2251 1933//2250
+f 1934//2251 1942//2258 1943//2259
+f 1943//2259 1935//2252 1934//2251
+f 1935//2252 1943//2259 1944//2260
+f 1944//2260 1936//2253 1935//2252
+s 28
+f 1936//2406 1944//2408 1945//2409
+f 1945//2409 1937//2407 1936//2406
+s 27
+f 1689//2138 1697//2139 1946//2261
+f 1946//2261 1938//2254 1689//2138
+f 1938//2254 1946//2261 1947//2262
+f 1947//2262 1939//2255 1938//2254
+f 1939//2255 1947//2262 1948//2263
+f 1948//2263 1940//2256 1939//2255
+f 1940//2256 1948//2263 1949//2264
+f 1949//2264 1941//2257 1940//2256
+f 1941//2257 1949//2264 1950//2265
+f 1950//2265 1942//2258 1941//2257
+f 1942//2258 1950//2265 1951//2266
+f 1951//2266 1943//2259 1942//2258
+f 1943//2259 1951//2266 1952//2267
+f 1952//2267 1944//2260 1943//2259
+s 28
+f 1944//2408 1952//2410 1953//2411
+f 1953//2411 1945//2409 1944//2408
+s 27
+f 1697//2139 1705//2140 1954//2268
+f 1954//2268 1946//2261 1697//2139
+f 1946//2261 1954//2268 1955//2269
+f 1955//2269 1947//2262 1946//2261
+f 1947//2262 1955//2269 1956//2270
+f 1956//2270 1948//2263 1947//2262
+f 1948//2263 1956//2270 1957//2271
+f 1957//2271 1949//2264 1948//2263
+f 1949//2264 1957//2271 1958//2272
+f 1958//2272 1950//2265 1949//2264
+f 1950//2265 1958//2272 1959//2273
+f 1959//2273 1951//2266 1950//2265
+f 1951//2266 1959//2273 1960//2274
+f 1960//2274 1952//2267 1951//2266
+s 28
+f 1952//2410 1960//2412 1961//2413
+f 1961//2413 1953//2411 1952//2410
+s 27
+f 1705//2140 1713//2141 1962//2275
+f 1962//2275 1954//2268 1705//2140
+f 1954//2268 1962//2275 1963//2276
+f 1963//2276 1955//2269 1954//2268
+f 1955//2269 1963//2276 1964//2277
+f 1964//2277 1956//2270 1955//2269
+f 1956//2270 1964//2277 1965//2278
+f 1965//2278 1957//2271 1956//2270
+f 1957//2271 1965//2278 1966//2279
+f 1966//2279 1958//2272 1957//2271
+f 1958//2272 1966//2279 1967//2280
+f 1967//2280 1959//2273 1958//2272
+f 1959//2273 1967//2280 1968//2281
+f 1968//2281 1960//2274 1959//2273
+s 28
+f 1960//2412 1968//2414 1969//2415
+f 1969//2415 1961//2413 1960//2412
+s 27
+f 1713//2141 1721//2142 1970//2282
+f 1970//2282 1962//2275 1713//2141
+f 1962//2275 1970//2282 1971//2283
+f 1971//2283 1963//2276 1962//2275
+f 1963//2276 1971//2283 1972//2284
+f 1972//2284 1964//2277 1963//2276
+f 1964//2277 1972//2284 1973//2285
+f 1973//2285 1965//2278 1964//2277
+f 1965//2278 1973//2285 1974//2286
+f 1974//2286 1966//2279 1965//2278
+f 1966//2279 1974//2286 1975//2287
+f 1975//2287 1967//2280 1966//2279
+f 1967//2280 1975//2287 1976//2288
+f 1976//2288 1968//2281 1967//2280
+s 28
+f 1968//2414 1976//2416 1977//2417
+f 1977//2417 1969//2415 1968//2414
+s 27
+f 1721//2142 1729//2143 1978//2289
+f 1978//2289 1970//2282 1721//2142
+f 1970//2282 1978//2289 1979//2290
+f 1979//2290 1971//2283 1970//2282
+f 1971//2283 1979//2290 1980//2291
+f 1980//2291 1972//2284 1971//2283
+f 1972//2284 1980//2291 1981//2292
+f 1981//2292 1973//2285 1972//2284
+f 1973//2285 1981//2292 1982//2293
+f 1982//2293 1974//2286 1973//2285
+f 1974//2286 1982//2293 1983//2294
+f 1983//2294 1975//2287 1974//2286
+f 1975//2287 1983//2294 1984//2295
+f 1984//2295 1976//2288 1975//2287
+s 28
+f 1976//2416 1984//2418 1985//2419
+f 1985//2419 1977//2417 1976//2416
+s 27
+f 1729//2143 1737//2144 1986//2296
+f 1986//2296 1978//2289 1729//2143
+f 1978//2289 1986//2296 1987//2297
+f 1987//2297 1979//2290 1978//2289
+f 1979//2290 1987//2297 1988//2298
+f 1988//2298 1980//2291 1979//2290
+f 1980//2291 1988//2298 1989//2299
+f 1989//2299 1981//2292 1980//2291
+f 1981//2292 1989//2299 1990//2300
+f 1990//2300 1982//2293 1981//2292
+f 1982//2293 1990//2300 1991//2301
+f 1991//2301 1983//2294 1982//2293
+f 1983//2294 1991//2301 1992//2302
+f 1992//2302 1984//2295 1983//2294
+s 28
+f 1984//2418 1992//2420 1993//2421
+f 1993//2421 1985//2419 1984//2418
+s 27
+f 1737//2144 1745//2145 1994//2303
+f 1994//2303 1986//2296 1737//2144
+f 1986//2296 1994//2303 1995//2304
+f 1995//2304 1987//2297 1986//2296
+f 1987//2297 1995//2304 1996//2305
+f 1996//2305 1988//2298 1987//2297
+f 1988//2298 1996//2305 1997//2306
+f 1997//2306 1989//2299 1988//2298
+f 1989//2299 1997//2306 1998//2307
+f 1998//2307 1990//2300 1989//2299
+f 1990//2300 1998//2307 1999//2308
+f 1999//2308 1991//2301 1990//2300
+f 1991//2301 1999//2308 2000//2309
+f 2000//2309 1992//2302 1991//2301
+s 28
+f 1992//2420 2000//2422 2001//2423
+f 2001//2423 1993//2421 1992//2420
+s 27
+f 1745//2145 1753//2146 2002//2310
+f 2002//2310 1994//2303 1745//2145
+f 1994//2303 2002//2310 2003//2311
+f 2003//2311 1995//2304 1994//2303
+f 1995//2304 2003//2311 2004//2312
+f 2004//2312 1996//2305 1995//2304
+f 1996//2305 2004//2312 2005//2313
+f 2005//2313 1997//2306 1996//2305
+f 1997//2306 2005//2313 2006//2314
+f 2006//2314 1998//2307 1997//2306
+f 1998//2307 2006//2314 2007//2315
+f 2007//2315 1999//2308 1998//2307
+f 1999//2308 2007//2315 2008//2316
+f 2008//2316 2000//2309 1999//2308
+s 28
+f 2000//2422 2008//2424 2009//2425
+f 2009//2425 2001//2423 2000//2422
+s 27
+f 1753//2146 1761//2147 2010//2317
+f 2010//2317 2002//2310 1753//2146
+f 2002//2310 2010//2317 2011//2318
+f 2011//2318 2003//2311 2002//2310
+f 2003//2311 2011//2318 2012//2319
+f 2012//2319 2004//2312 2003//2311
+f 2004//2312 2012//2319 2013//2320
+f 2013//2320 2005//2313 2004//2312
+f 2005//2313 2013//2320 2014//2321
+f 2014//2321 2006//2314 2005//2313
+f 2006//2314 2014//2321 2015//2322
+f 2015//2322 2007//2315 2006//2314
+f 2007//2315 2015//2322 2016//2323
+f 2016//2323 2008//2316 2007//2315
+s 28
+f 2008//2424 2016//2426 2017//2427
+f 2017//2427 2009//2425 2008//2424
+s 27
+f 1761//2147 1769//2148 2018//2324
+f 2018//2324 2010//2317 1761//2147
+f 2010//2317 2018//2324 2019//2325
+f 2019//2325 2011//2318 2010//2317
+f 2011//2318 2019//2325 2020//2326
+f 2020//2326 2012//2319 2011//2318
+f 2012//2319 2020//2326 2021//2327
+f 2021//2327 2013//2320 2012//2319
+f 2013//2320 2021//2327 2022//2328
+f 2022//2328 2014//2321 2013//2320
+f 2014//2321 2022//2328 2023//2329
+f 2023//2329 2015//2322 2014//2321
+f 2015//2322 2023//2329 2024//2330
+f 2024//2330 2016//2323 2015//2322
+s 28
+f 2016//2426 2024//2428 2025//2429
+f 2025//2429 2017//2427 2016//2426
+s 27
+f 1769//2148 1777//2149 2026//2331
+f 2026//2331 2018//2324 1769//2148
+f 2018//2324 2026//2331 2027//2332
+f 2027//2332 2019//2325 2018//2324
+f 2019//2325 2027//2332 2028//2333
+f 2028//2333 2020//2326 2019//2325
+f 2020//2326 2028//2333 2029//2334
+f 2029//2334 2021//2327 2020//2326
+f 2021//2327 2029//2334 2030//2335
+f 2030//2335 2022//2328 2021//2327
+f 2022//2328 2030//2335 2031//2336
+f 2031//2336 2023//2329 2022//2328
+f 2023//2329 2031//2336 2032//2337
+f 2032//2337 2024//2330 2023//2329
+s 28
+f 2024//2428 2032//2430 2033//2431
+f 2033//2431 2025//2429 2024//2428
+s 27
+f 1777//2149 1785//2150 2034//2338
+f 2034//2338 2026//2331 1777//2149
+f 2026//2331 2034//2338 2035//2339
+f 2035//2339 2027//2332 2026//2331
+f 2027//2332 2035//2339 2036//2340
+f 2036//2340 2028//2333 2027//2332
+f 2028//2333 2036//2340 2037//2341
+f 2037//2341 2029//2334 2028//2333
+f 2029//2334 2037//2341 2038//2342
+f 2038//2342 2030//2335 2029//2334
+f 2030//2335 2038//2342 2039//2343
+f 2039//2343 2031//2336 2030//2335
+f 2031//2336 2039//2343 2040//2344
+f 2040//2344 2032//2337 2031//2336
+s 28
+f 2032//2430 2040//2432 2041//2433
+f 2041//2433 2033//2431 2032//2430
+s 27
+f 1785//2150 1793//2151 2042//2345
+f 2042//2345 2034//2338 1785//2150
+f 2034//2338 2042//2345 2043//2346
+f 2043//2346 2035//2339 2034//2338
+f 2035//2339 2043//2346 2044//2347
+f 2044//2347 2036//2340 2035//2339
+f 2036//2340 2044//2347 2045//2348
+f 2045//2348 2037//2341 2036//2340
+f 2037//2341 2045//2348 2046//2349
+f 2046//2349 2038//2342 2037//2341
+f 2038//2342 2046//2349 2047//2350
+f 2047//2350 2039//2343 2038//2342
+f 2039//2343 2047//2350 2048//2351
+f 2048//2351 2040//2344 2039//2343
+s 28
+f 2040//2432 2048//2434 2049//2435
+f 2049//2435 2041//2433 2040//2432
+s 27
+f 1793//2151 1801//2152 2050//2352
+f 2050//2352 2042//2345 1793//2151
+f 2042//2345 2050//2352 2051//2353
+f 2051//2353 2043//2346 2042//2345
+f 2043//2346 2051//2353 2052//2354
+f 2052//2354 2044//2347 2043//2346
+f 2044//2347 2052//2354 2053//2355
+f 2053//2355 2045//2348 2044//2347
+f 2045//2348 2053//2355 2054//2356
+f 2054//2356 2046//2349 2045//2348
+f 2046//2349 2054//2356 2055//2357
+f 2055//2357 2047//2350 2046//2349
+f 2047//2350 2055//2357 2056//2358
+f 2056//2358 2048//2351 2047//2350
+s 28
+f 2048//2434 2056//2436 2057//2437
+f 2057//2437 2049//2435 2048//2434
+s 27
+f 1801//2152 1809//2153 2058//2359
+f 2058//2359 2050//2352 1801//2152
+f 2050//2352 2058//2359 2059//2360
+f 2059//2360 2051//2353 2050//2352
+f 2051//2353 2059//2360 2060//2361
+f 2060//2361 2052//2354 2051//2353
+f 2052//2354 2060//2361 2061//2362
+f 2061//2362 2053//2355 2052//2354
+f 2053//2355 2061//2362 2062//2363
+f 2062//2363 2054//2356 2053//2355
+f 2054//2356 2062//2363 2063//2364
+f 2063//2364 2055//2357 2054//2356
+f 2055//2357 2063//2364 2064//2365
+f 2064//2365 2056//2358 2055//2357
+s 28
+f 2056//2436 2064//2438 2065//2439
+f 2065//2439 2057//2437 2056//2436
+s 27
+f 1809//2153 1817//2154 2066//2366
+f 2066//2366 2058//2359 1809//2153
+f 2058//2359 2066//2366 2067//2367
+f 2067//2367 2059//2360 2058//2359
+f 2059//2360 2067//2367 2068//2368
+f 2068//2368 2060//2361 2059//2360
+f 2060//2361 2068//2368 2069//2369
+f 2069//2369 2061//2362 2060//2361
+f 2061//2362 2069//2369 2070//2370
+f 2070//2370 2062//2363 2061//2362
+f 2062//2363 2070//2370 2071//2371
+f 2071//2371 2063//2364 2062//2363
+f 2063//2364 2071//2371 2072//2372
+f 2072//2372 2064//2365 2063//2364
+s 28
+f 2064//2438 2072//2440 2073//2441
+f 2073//2441 2065//2439 2064//2438
+s 27
+f 1817//2154 1825//2155 2074//2373
+f 2074//2373 2066//2366 1817//2154
+f 2066//2366 2074//2373 2075//2374
+f 2075//2374 2067//2367 2066//2366
+f 2067//2367 2075//2374 2076//2375
+f 2076//2375 2068//2368 2067//2367
+f 2068//2368 2076//2375 2077//2376
+f 2077//2376 2069//2369 2068//2368
+f 2069//2369 2077//2376 2078//2377
+f 2078//2377 2070//2370 2069//2369
+f 2070//2370 2078//2377 2079//2378
+f 2079//2378 2071//2371 2070//2370
+f 2071//2371 2079//2378 2080//2379
+f 2080//2379 2072//2372 2071//2371
+s 28
+f 2072//2440 2080//2442 2081//2443
+f 2081//2443 2073//2441 2072//2440
+s 27
+f 1825//2155 1585//2125 1827//2157
+f 1827//2157 2074//2373 1825//2155
+f 2074//2373 1827//2157 1829//2159
+f 1829//2159 2075//2374 2074//2373
+f 2075//2374 1829//2159 1831//2161
+f 1831//2161 2076//2375 2075//2374
+f 2076//2375 1831//2161 1833//2163
+f 1833//2163 2077//2376 2076//2375
+f 2077//2376 1833//2163 1835//2165
+f 1835//2165 2078//2377 2077//2376
+f 2078//2377 1835//2165 1837//2167
+f 1837//2167 2079//2378 2078//2377
+f 2079//2378 1837//2167 1839//2169
+f 1839//2169 2080//2379 2079//2378
+s 28
+f 2080//2442 1839//2381 1841//2383
+f 1841//2383 2081//2443 2080//2442
+# 4096 elements
diff --git a/src/demos/hdr/ARBFPPipeline.java b/src/demos/hdr/ARBFPPipeline.java
new file mode 100755
index 0000000..e13b9f7
--- /dev/null
+++ b/src/demos/hdr/ARBFPPipeline.java
@@ -0,0 +1,171 @@
+package demos.hdr;
+
+import java.io.*;
+import java.util.*;
+
+import net.java.games.jogl.*;
+import demos.util.*;
+
+public class ARBFPPipeline implements Pipeline {
+ private int textureFormat;
+ public ARBFPPipeline(int textureFormat) {
+ this.textureFormat = textureFormat;
+ }
+
+ public void init() {
+ }
+
+ public void initFloatingPointTexture(GL gl, int textureObject, int w, int h) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, textureFormat, 0, 0, w, h, 0);
+ }
+
+ public void initTexture(GL gl, int textureObject, int w, int h) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_RGBA, 0, 0, w, h, 0);
+ }
+
+ public void copyToTexture(GL gl, int textureObject, int w, int h) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ gl.glCopyTexSubImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, 0, 0, 0, 0, w, h);
+ }
+
+ public void bindTexture(GL gl, int textureObject) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ }
+
+ private List programs = new ArrayList();
+ public int loadVertexProgram(GL gl, String filename) throws IOException {
+ return loadProgram(gl, filename, GL.GL_VERTEX_PROGRAM_ARB);
+ }
+
+ public int loadFragmentProgram(GL gl, String filename) throws IOException {
+ return loadProgram(gl, filename, GL.GL_FRAGMENT_PROGRAM_ARB);
+ }
+
+ private int loadProgram(GL gl, String fileName, int profile) throws IOException {
+ String programBuffer = FileUtils.loadStreamIntoString(getClass().getClassLoader().getResourceAsStream(fileName));
+ int[] tmpInt = new int[1];
+ gl.glGenProgramsARB(1, tmpInt);
+ int res = tmpInt[0];
+ gl.glBindProgramARB(profile, res);
+ gl.glProgramStringARB(profile, GL.GL_PROGRAM_FORMAT_ASCII_ARB, programBuffer.length(), programBuffer);
+ int[] errPos = new int[1];
+ gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos);
+ if (errPos[0] >= 0) {
+ String kind = "Program";
+ if (profile == GL.GL_VERTEX_PROGRAM_ARB) {
+ kind = "Vertex program";
+ } else if (profile == GL.GL_FRAGMENT_PROGRAM_ARB) {
+ kind = "Fragment program";
+ }
+ System.out.println(kind + " failed to load:");
+ String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB);
+ if (errMsg == null) {
+ System.out.println("[No error message available]");
+ } else {
+ System.out.println("Error message: \"" + errMsg + "\"");
+ }
+ System.out.println("Error occurred at position " + errPos[0] + " in program:");
+ int endPos = errPos[0];
+ while (endPos < programBuffer.length() && programBuffer.charAt(endPos) != '\n') {
+ ++endPos;
+ }
+ System.out.println(programBuffer.substring(errPos[0], endPos));
+ throw new GLException("Error loading " + kind);
+ } else {
+ if (profile == GL.GL_FRAGMENT_PROGRAM_ARB) {
+ int[] isNative = new int[1];
+ gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB,
+ GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB,
+ isNative);
+ if (isNative[0] != 1) {
+ System.out.println("WARNING: fragment program is over native resource limits");
+ Thread.dumpStack();
+ }
+ }
+ }
+ return res;
+ }
+
+ public void enableVertexProgram(GL gl, int program) {
+ gl.glBindProgramARB(GL.GL_VERTEX_PROGRAM_ARB, program);
+ gl.glEnable(GL.GL_VERTEX_PROGRAM_ARB);
+ }
+
+ public void enableFragmentProgram(GL gl, int program) {
+ gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, program);
+ gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB);
+ }
+
+ public void disableVertexProgram(GL gl) {
+ gl.glDisable(GL.GL_VERTEX_PROGRAM_ARB);
+ }
+
+ public void disableFragmentProgram(GL gl) {
+ gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB);
+ }
+
+ public int getNamedParameter(int program, String name) {
+ throw new RuntimeException("Not supported");
+ }
+
+ public void setVertexProgramParameter1f(GL gl, int param, float val) {
+ if (param < 0) return;
+ gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, val, 0, 0, 0);
+ }
+
+ public void setVertexProgramParameter3f(GL gl, int param, float x, float y, float z) {
+ if (param < 0) return;
+ gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, x, y, z, 0);
+ }
+
+ public void setVertexProgramParameter4f(GL gl, int param, float x, float y, float z, float w) {
+ if (param < 0) return;
+ gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param, x, y, z, w);
+ }
+
+ public void setFragmentProgramParameter1f(GL gl, int param, float val) {
+ if (param < 0) return;
+ gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, val, 0, 0, 0);
+ }
+
+ public void setFragmentProgramParameter3f(GL gl, int param, float x, float y, float z) {
+ if (param < 0) return;
+ gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, x, y, z, 0);
+ }
+
+ public void setFragmentProgramParameter4f(GL gl, int param, float x, float y, float z, float w) {
+ if (param < 0) return;
+ gl.glProgramLocalParameter4fARB(GL.GL_FRAGMENT_PROGRAM_ARB, param, x, y, z, w);
+ }
+
+ public void trackModelViewProjectionMatrix(GL gl, int param) {
+ float[] modelView = new float[16];
+ float[] projection = new float[16];
+ float[] mvp = new float[16];
+
+ // Get matrices
+ gl.glGetFloatv(GL.GL_PROJECTION_MATRIX, projection);
+ gl.glGetFloatv(GL.GL_MODELVIEW_MATRIX, modelView);
+ // Multiply together
+ for (int i = 0; i < 4; i++) {
+ for (int j = 0; j < 4; j++) {
+ float sum = 0;
+ for (int k = 0; k < 4; k++) {
+ sum += modelView[4 * i + k] * projection[4 * k + j];
+ }
+ mvp[4 * i + j] = sum;
+ }
+ }
+
+ setMatrixParameterfc(gl, param, mvp);
+ }
+
+ public void setMatrixParameterfc(GL gl, int param, float[] matrix) {
+ // Correct for row-major vs. column-major differences
+ for (int i = 0; i < 4; i++) {
+ gl.glProgramLocalParameter4fARB(GL.GL_VERTEX_PROGRAM_ARB, param + i, matrix[i], matrix[4+i], matrix[8+i], matrix[12+i]);
+ }
+ }
+}
diff --git a/src/demos/hdr/CgPipeline.java b/src/demos/hdr/CgPipeline.java
new file mode 100755
index 0000000..2f3a9f5
--- /dev/null
+++ b/src/demos/hdr/CgPipeline.java
@@ -0,0 +1,113 @@
+package demos.hdr;
+
+import java.io.*;
+import java.util.*;
+
+import net.java.games.jogl.*;
+import net.java.games.cg.*;
+import demos.util.*;
+
+public class CgPipeline implements Pipeline {
+ private CGcontext context;
+ public void init() {
+ context = CgGL.cgCreateContext();
+ }
+
+ public void initFloatingPointTexture(GL gl, int textureObject, int w, int h) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_FLOAT_RGBA16_NV, 0, 0, w, h, 0);
+ }
+
+ public void initTexture(GL gl, int textureObject, int w, int h) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ gl.glCopyTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_RGBA, 0, 0, w, h, 0);
+ }
+
+ public void copyToTexture(GL gl, int textureObject, int w, int h) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ gl.glCopyTexSubImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, 0, 0, 0, 0, w, h);
+ }
+
+ public void bindTexture(GL gl, int textureObject) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, textureObject);
+ }
+
+ private List programs = new ArrayList();
+ public int loadVertexProgram(GL gl, String filename) throws IOException {
+ return loadProgram(filename, CgGL.CG_PROFILE_ARBVP1);
+ }
+
+ public int loadFragmentProgram(GL gl, String filename) throws IOException {
+ return loadProgram(filename, CgGL.CG_PROFILE_ARBFP1);
+ }
+
+ private int loadProgram(String fileName, int profile) throws IOException {
+ CGprogram prog = CgGL.cgCreateProgramFromFile(context, CgGL.CG_SOURCE, fileName, profile, null, null);
+ if (prog == null) {
+ throw new RuntimeException("Error loading program");
+ }
+ CgGL.cgGLLoadProgram(prog);
+ int res = programs.size();
+ programs.add(prog);
+ return res;
+ }
+
+ public void enableVertexProgram(GL gl, int program) {
+ CgGL.cgGLBindProgram((CGprogram) programs.get(program));
+ CgGL.cgGLEnableProfile(CgGL.CG_PROFILE_ARBVP1);
+ }
+
+ public void enableFragmentProgram(GL gl, int program) {
+ CgGL.cgGLBindProgram((CGprogram) programs.get(program));
+ CgGL.cgGLEnableProfile(CgGL.CG_PROFILE_ARBFP1);
+ }
+
+ public void disableVertexProgram(GL gl) {
+ CgGL.cgGLDisableProfile(CgGL.CG_PROFILE_ARBVP1);
+ }
+
+ public void disableFragmentProgram(GL gl) {
+ CgGL.cgGLDisableProfile(CgGL.CG_PROFILE_ARBFP1);
+ }
+
+ private List parameters = new ArrayList();
+ public int getNamedParameter(int program, String name) {
+ CGprogram prog = (CGprogram) programs.get(program);
+ CGparameter param = CgGL.cgGetNamedParameter(prog, name);
+ int res = parameters.size();
+ parameters.add(param);
+ return res;
+ }
+
+ public void setVertexProgramParameter1f(GL gl, int param, float val) {
+ CgGL.cgGLSetParameter1f((CGparameter) parameters.get(param), val);
+ }
+
+ public void setVertexProgramParameter3f(GL gl, int param, float x, float y, float z) {
+ CgGL.cgGLSetParameter3f((CGparameter) parameters.get(param), x, y, z);
+ }
+
+ public void setVertexProgramParameter4f(GL gl, int param, float x, float y, float z, float w) {
+ CgGL.cgGLSetParameter4f((CGparameter) parameters.get(param), x, y, z, w);
+ }
+
+ public void setFragmentProgramParameter1f(GL gl, int param, float val) {
+ CgGL.cgGLSetParameter1f((CGparameter) parameters.get(param), val);
+ }
+
+ public void setFragmentProgramParameter3f(GL gl, int param, float x, float y, float z) {
+ CgGL.cgGLSetParameter3f((CGparameter) parameters.get(param), x, y, z);
+ }
+
+ public void setFragmentProgramParameter4f(GL gl, int param, float x, float y, float z, float w) {
+ CgGL.cgGLSetParameter4f((CGparameter) parameters.get(param), x, y, z, w);
+ }
+
+ public void trackModelViewProjectionMatrix(GL gl, int param) {
+ CgGL.cgGLSetStateMatrixParameter((CGparameter) parameters.get(param), CgGL.CG_GL_MODELVIEW_PROJECTION_MATRIX, CgGL.CG_GL_MATRIX_IDENTITY);
+ }
+
+ public void setMatrixParameterfc(GL gl, int param, float[] matrix) {
+ CgGL.cgGLSetMatrixParameterfc((CGparameter) parameters.get(param), matrix);
+ }
+}
diff --git a/src/demos/hdr/HDR.java b/src/demos/hdr/HDR.java
new file mode 100755
index 0000000..312741d
--- /dev/null
+++ b/src/demos/hdr/HDR.java
@@ -0,0 +1,1179 @@
+package demos.hdr;
+
+import java.awt.*;
+import java.awt.event.*;
+import java.io.*;
+import java.nio.*;
+import java.util.*;
+import javax.swing.*;
+
+import net.java.games.jogl.*;
+import net.java.games.cg.*;
+import net.java.games.jogl.util.*;
+import demos.util.*;
+import gleem.*;
+import gleem.linalg.*;
+
+/** HDR demo by NVidia Corporation - Simon Green, [email protected] <P>
+
+ Ported to Java by Kenneth Russell
+*/
+
+public class HDR {
+ private boolean useCg;
+ private GLCanvas canvas;
+ private Frame frame;
+ private Animator animator;
+ private boolean initFailed;
+ private HDRTexture hdr;
+ private String modelFilename;
+ private ObjReader model;
+ private Pipeline pipeline;
+
+ private GLUT glut = new GLUT();
+
+ private boolean[] b = new boolean[256];
+
+ private ExaminerViewer viewer;
+ private boolean doViewAll = true;
+
+ private DurationTimer timer = new DurationTimer();
+ private boolean firstRender = true;
+ private int frameCount;
+
+ private Time time = new SystemTime();
+ private float animRate = (float) Math.toRadians(-12.0f); // Radians / sec
+
+ private String hdrFilename;
+ private int win_w;
+ private int win_h;
+ private float win_scale;
+ private int pbuffer_w;
+ private int pbuffer_h;
+ private int blurWidth;
+ private int blur_scale;
+ private int blur_w;
+ private int blur_h;
+ private float blurAmount = 0.5f;
+
+ private int modelno = 4;
+ private int numModels = 5;
+
+ private boolean hilo = false;
+ private int hdr_tex;
+ private int hdr_tex2;
+ private int gamma_tex;
+ private int vignette_tex;
+
+ private int textureTarget; // Either GL_TEXTURE_RECTANGLE_NV or GL_TEXTURE_RECTANGLE_EXT/ARB
+
+ private GLPbuffer pbuffer;
+ private GLPbuffer blur_pbuffer;
+ private GLPbuffer blur2_pbuffer;
+ private GLPbuffer tonemap_pbuffer;
+ // Texture objects for these pbuffers
+ private int pbuffer_tex;
+ private int blur_pbuffer_tex;
+ private int blur2_pbuffer_tex;
+ private int tonemap_pbuffer_tex;
+
+ // Render passes for blur2_pbuffer
+ private static final int BLUR2_SHRINK_PASS = 0;
+ private static final int BLUR2_VERT_BLUR_PASS = 1;
+ private int blur2Pass;
+
+ private int blurh_fprog, blurv_fprog;
+ private int skybox_fprog, object_fprog, object_vprog;
+ private int tonemap_fprog, shrink_fprog;
+ private int blurAmount_param, windowSize_param, exposure_param;
+ private int modelViewProj_param, model_param, eyePos_param;
+
+
+ private float exposure = 32.0f;
+
+ private float[] identityMatrix = { 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f };
+
+ public static void main(String[] args) {
+ new HDR().run(args);
+ }
+
+ public void run(String[] args) {
+ if (args.length < 6 || args.length > 8) {
+ usage();
+ }
+
+ try {
+ int argNo = 0;
+ if (args[argNo].equals("-cg")) {
+ useCg = true;
+ ++argNo;
+ }
+ hdrFilename = args[argNo++];
+ pbuffer_w = Integer.parseInt(args[argNo++]);
+ pbuffer_h = Integer.parseInt(args[argNo++]);
+ win_scale = Float.parseFloat(args[argNo++]);
+ blurWidth = Integer.parseInt(args[argNo++]);
+ blur_scale = Integer.parseInt(args[argNo++]);
+ if (argNo < args.length) {
+ modelFilename = args[argNo++];
+ }
+
+ blur_w = pbuffer_w / blur_scale;
+ blur_h = pbuffer_h / blur_scale;
+ win_w = (int) (pbuffer_w * win_scale);
+ win_h = (int) (pbuffer_h * win_scale);
+ } catch (NumberFormatException e) {
+ e.printStackTrace();
+ usage();
+ }
+
+ if (modelFilename != null) {
+ try {
+ InputStream in = getClass().getClassLoader().getResourceAsStream(modelFilename);
+ if (in == null) {
+ throw new IOException("Unable to open model file " + modelFilename);
+ }
+ model = new ObjReader(in);
+ if (model.getVerticesPerFace() != 3) {
+ throw new IOException("Sorry, only triangle-based WaveFront OBJ files supported");
+ }
+ model.rescale(1.2f / model.getRadius());
+ ++numModels;
+ modelno = 5;
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ b['f'] = true; // fragment programs
+ b['g'] = true; // glare
+ b['l'] = true;
+ b[' '] = true; // animation
+ b['n'] = true; // upsampling smoothing
+
+ try {
+ InputStream in = getClass().getClassLoader().getResourceAsStream(hdrFilename);
+ if (in == null) {
+ throw new IOException("Unable to open HDR file " + hdrFilename);
+ }
+ hdr = new HDRTexture(in);
+ hdr.analyze();
+ hdr.convert();
+ } catch (IOException e) {
+ e.printStackTrace();
+ System.exit(0);
+ }
+
+ canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
+ canvas.addGLEventListener(new Listener());
+ canvas.setNoAutoRedrawMode(true);
+
+ animator = new Animator(canvas);
+
+ frame = new Frame("HDR test");
+ frame.setLayout(new BorderLayout());
+ frame.setResizable(false);
+ canvas.setSize(win_w, win_h);
+
+ frame.add(canvas, BorderLayout.CENTER);
+ frame.pack();
+ frame.show();
+ canvas.requestFocus();
+
+ frame.addWindowListener(new WindowAdapter() {
+ public void windowClosing(WindowEvent e) {
+ runExit();
+ }
+ });
+
+ animator.start();
+ }
+
+ //----------------------------------------------------------------------
+ // Internals only below this point
+ //
+
+ //----------------------------------------------------------------------
+ // Listeners for main window and pbuffers
+ //
+
+ class Listener implements GLEventListener {
+ private float zNear = 0.1f;
+ private float zFar = 10.0f;
+ private boolean wire = false;
+ private boolean toggleWire = false;
+
+ public void init(GLDrawable drawable) {
+ // printThreadName("init for Listener");
+
+ GL gl = drawable.getGL();
+ GLU glu = drawable.getGLU();
+
+ checkExtension(gl, "GL_ARB_multitexture");
+ checkExtension(gl, "GL_ARB_pbuffer");
+ checkExtension(gl, "GL_ARB_vertex_program");
+ checkExtension(gl, "GL_ARB_fragment_program");
+ if (!gl.isExtensionAvailable("GL_NV_texture_rectangle") &&
+ !gl.isExtensionAvailable("GL_EXT_texture_rectangle") &&
+ !gl.isExtensionAvailable("GL_ARB_texture_rectangle")) {
+ // NOTE: it turns out the constants associated with these extensions are all identical
+ unavailableExtension("Texture rectangle extension not available (need one of GL_NV_texture_rectangle, GL_EXT_texture_rectangle or GL_ARB_texture_rectangle");
+ }
+
+ if (!gl.isExtensionAvailable("GL_NV_float_buffer") &&
+ !gl.isExtensionAvailable("GL_ATI_texture_float") &&
+ !gl.isExtensionAvailable("GL_APPLE_float_pixels")) {
+ unavailableExtension("Floating-point textures not available (need one of GL_NV_float_buffer, GL_ATI_texture_float, or GL_APPLE_float_pixels");
+ }
+
+ setOrthoProjection(gl, win_w, win_h);
+
+ gamma_tex = createGammaTexture(gl, 1024, 1.0f / 2.2f);
+ vignette_tex = createVignetteTexture(gl, pbuffer_w, pbuffer_h, 0.25f*pbuffer_w, 0.7f*pbuffer_w);
+
+ int floatBits = 16;
+ int floatAlphaBits = 0;
+ // int floatDepthBits = 16;
+ // Workaround for apparent bug when not using render-to-texture-rectangle
+ int floatDepthBits = 1;
+
+ GLCapabilities caps = new GLCapabilities();
+ caps.setDoubleBuffered(false);
+ caps.setOffscreenFloatingPointBuffers(true);
+ caps.setRedBits(floatBits);
+ caps.setGreenBits(floatBits);
+ caps.setBlueBits(floatBits);
+ caps.setAlphaBits(floatAlphaBits);
+ caps.setDepthBits(floatDepthBits);
+ int[] tmp = new int[1];
+ pbuffer = drawable.createOffscreenDrawable(caps, pbuffer_w, pbuffer_h);
+ pbuffer.addGLEventListener(new PbufferListener());
+ gl.glGenTextures(1, tmp);
+ pbuffer_tex = tmp[0];
+ blur_pbuffer = drawable.createOffscreenDrawable(caps, blur_w, blur_h);
+ blur_pbuffer.addGLEventListener(new BlurPbufferListener());
+ gl.glGenTextures(1, tmp);
+ blur_pbuffer_tex = tmp[0];
+ blur2_pbuffer = drawable.createOffscreenDrawable(caps, blur_w, blur_h);
+ blur2_pbuffer.addGLEventListener(new Blur2PbufferListener());
+ gl.glGenTextures(1, tmp);
+ blur2_pbuffer_tex = tmp[0];
+ caps.setOffscreenFloatingPointBuffers(false);
+ caps.setRedBits(8);
+ caps.setGreenBits(8);
+ caps.setBlueBits(8);
+ caps.setDepthBits(24);
+ tonemap_pbuffer = drawable.createOffscreenDrawable(caps, pbuffer_w, pbuffer_h);
+ tonemap_pbuffer.addGLEventListener(new TonemapPbufferListener());
+ gl.glGenTextures(1, tmp);
+ tonemap_pbuffer_tex = tmp[0];
+
+ drawable.addKeyListener(new KeyAdapter() {
+ public void keyPressed(KeyEvent e) {
+ dispatchKey(e.getKeyCode(), e.getKeyChar());
+ }
+ });
+
+ // Register the window with the ManipManager
+ ManipManager manager = ManipManager.getManipManager();
+ manager.registerWindow(drawable);
+
+ viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons());
+ viewer.setNoAltKeyMode(true);
+ viewer.attach(drawable, new BSphereProvider() {
+ public BSphere getBoundingSphere() {
+ return new BSphere(new Vec3f(0, 0, 0), 1.0f);
+ }
+ });
+ viewer.setZNear(zNear);
+ viewer.setZFar(zFar);
+ }
+
+ public void display(GLDrawable drawable) {
+ // printThreadName("display for Listener");
+
+ if (initFailed) {
+ return;
+ }
+
+ if (!firstRender) {
+ if (++frameCount == 30) {
+ timer.stop();
+ System.err.println("Frames per second: " + (30.0f / timer.getDurationAsSeconds()));
+ timer.reset();
+ timer.start();
+ frameCount = 0;
+ }
+ } else {
+ firstRender = false;
+ timer.start();
+ }
+
+ time.update();
+
+ GL gl = drawable.getGL();
+ GLU glu = drawable.getGLU();
+
+ // OK, ready to go
+ if (b[' ']) {
+ viewer.rotateAboutFocalPoint(new Rotf(Vec3f.Y_AXIS, (float) (time.deltaT() * animRate)));
+ }
+
+ pbuffer.display();
+
+ // blur pass
+ if (b['g']) {
+ // shrink image
+ blur2Pass = BLUR2_SHRINK_PASS;
+ blur2_pbuffer.display();
+ }
+
+ // horizontal blur
+ blur_pbuffer.display();
+
+ // vertical blur
+ blur2Pass = BLUR2_VERT_BLUR_PASS;
+ blur2_pbuffer.display();
+
+ // tone mapping pass
+ tonemap_pbuffer.display();
+
+ // display in window
+ gl.glEnable(GL.GL_TEXTURE_RECTANGLE_NV);
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, tonemap_pbuffer_tex);
+ if (b['n']) {
+ gl.glTexParameteri( GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ } else {
+ gl.glTexParameteri( GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ }
+ drawQuadRect4(gl, win_w, win_h, pbuffer_w, pbuffer_h);
+ gl.glDisable(GL.GL_TEXTURE_RECTANGLE_NV);
+ }
+
+ public void reshape(GLDrawable drawable, int x, int y, int width, int height) {}
+
+ // Unused routines
+ public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
+
+ //----------------------------------------------------------------------
+ // Internals only below this point
+ //
+ private void checkExtension(GL gl, String glExtensionName) {
+ if (!gl.isExtensionAvailable(glExtensionName)) {
+ unavailableExtension("Unable to initialize " + glExtensionName + " OpenGL extension");
+ }
+ }
+
+ private void unavailableExtension(String message) {
+ JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE);
+ initFailed = true;
+ runExit();
+ throw new GLException(message);
+ }
+
+ private void dispatchKey(int keyCode, char k) {
+ if (k < 256)
+ b[k] = !b[k];
+
+ switch (keyCode) {
+ case KeyEvent.VK_ESCAPE:
+ case KeyEvent.VK_Q:
+ runExit();
+ break;
+
+ case KeyEvent.VK_EQUALS:
+ exposure *= 2;
+ break;
+
+ case KeyEvent.VK_MINUS:
+ exposure *= 0.5f;
+ break;
+
+ case KeyEvent.VK_PLUS:
+ exposure += 1.0f;
+ break;
+
+ case KeyEvent.VK_UNDERSCORE:
+ exposure -= 1.0f;
+ break;
+
+ case KeyEvent.VK_PERIOD:
+ blurAmount += 0.1f;
+ break;
+
+ case KeyEvent.VK_COMMA:
+ blurAmount -= 0.1f;
+ break;
+
+ case KeyEvent.VK_G:
+ if (b['g'])
+ blurAmount = 0.5f;
+ else
+ blurAmount = 0.0f;
+ break;
+
+ case KeyEvent.VK_O:
+ modelno = (modelno + 1) % numModels;
+ break;
+
+ case KeyEvent.VK_V:
+ doViewAll = true;
+ break;
+ }
+ }
+
+ // create gamma lookup table texture
+ private int createGammaTexture(GL gl, int size, float gamma) {
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[0];
+
+ int target = GL.GL_TEXTURE_1D;
+ gl.glBindTexture(target, texid);
+ gl.glTexParameteri(target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+
+ float[] img = new float [size];
+
+ for(int i=0; i<size; i++) {
+ float x = i / (float) size;
+ img[i] = (float) Math.pow(x, gamma);
+ }
+
+ gl.glTexImage1D(target, 0, GL.GL_LUMINANCE, size, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, img);
+
+ return texid;
+ }
+
+ // create vignette texture
+ // based on Debevec's pflare.c
+ int createVignetteTexture(GL gl, int xsiz, int ysiz, float r0, float r1) {
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[0];
+
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, texid);
+ gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+ gl.glTexParameteri(GL.GL_TEXTURE_RECTANGLE_NV, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+
+ float[] img = new float [xsiz*ysiz];
+
+ for (int y = 0; y < ysiz; y++) {
+ for (int x = 0; x < xsiz; x++) {
+ float radius = (float) Math.sqrt((x-xsiz/2)*(x-xsiz/2) + (y-ysiz/2)*(y-ysiz/2));
+ if (radius > r0) {
+ if (radius < r1) {
+ float t = 1.0f - (radius-r0)/(r1-r0);
+ float a = t * 2 - 1;
+ float reduce = (float) ((0.25 * Math.PI + 0.5 * Math.asin(a) + 0.5 * a * Math.sqrt( 1 - a*a ))/(0.5 * Math.PI));
+ img[y*xsiz + x] = reduce;
+ } else {
+ img[y*xsiz + x] = 0.0f;
+ }
+ } else {
+ img[y*xsiz + x] = 1.0f;
+ }
+ }
+ }
+
+ gl.glTexImage2D(GL.GL_TEXTURE_RECTANGLE_NV, 0, GL.GL_LUMINANCE, xsiz, ysiz, 0, GL.GL_LUMINANCE, GL.GL_FLOAT, img);
+
+ return texid;
+ }
+ }
+
+ //----------------------------------------------------------------------
+ // Listeners for pbuffers
+ //
+
+ class PbufferListener implements GLEventListener {
+ public void init(GLDrawable drawable) {
+ // printThreadName("init for PbufferListener");
+
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
+ GL gl = drawable.getGL();
+ GLU glu = drawable.getGLU();
+ gl.glEnable(GL.GL_DEPTH_TEST);
+
+ // FIXME: what about the ExaminerViewer?
+ setPerspectiveProjection(gl, glu, pbuffer_w, pbuffer_h);
+
+ GLPbuffer pbuffer = (GLPbuffer) drawable;
+ int fpmode = pbuffer.getFloatingPointMode();
+ int texmode = 0;
+ switch (fpmode) {
+ case GLPbuffer.NV_FLOAT:
+ System.err.println("Creating HILO cubemap");
+ hdr_tex = hdr.createCubemapHILO(gl, true);
+ hdr_tex2 = hdr.createCubemapHILO(gl, false);
+ texmode = GL.GL_FLOAT_RGBA16_NV;
+ hilo = true;
+ break;
+ case GLPbuffer.APPLE_FLOAT:
+ System.err.println("Creating FLOAT16_APPLE cubemap");
+ hdr_tex = hdr.createCubemap(gl, GL.GL_RGB_FLOAT16_APPLE);
+ texmode = GL.GL_RGBA_FLOAT16_APPLE;
+ break;
+ case GLPbuffer.ATI_FLOAT:
+ System.err.println("Creating FLOAT16_ATI cubemap");
+ hdr_tex = hdr.createCubemap(gl, GL.GL_RGB_FLOAT16_ATI);
+ texmode = GL.GL_RGBA_FLOAT16_ATI;
+ break;
+ default:
+ throw new RuntimeException("Unexpected floating-point mode " + fpmode);
+ }
+
+ if (useCg) {
+ initCg(gl);
+ } else {
+ initARBFP(gl, texmode);
+ }
+ initBlurCode(gl, blurWidth);
+
+ pipeline.initFloatingPointTexture(gl, pbuffer_tex, pbuffer_w, pbuffer_h);
+ }
+
+ public void display(GLDrawable drawable) {
+ // printThreadName("display for PbufferListener");
+
+ GL gl = drawable.getGL();
+ GLU glu = drawable.getGLU();
+
+ renderScene(gl, glu);
+
+ // Copy results back to texture
+ pipeline.copyToTexture(gl, pbuffer_tex, pbuffer_w, pbuffer_h);
+ }
+
+ // Unused routines
+ public void reshape(GLDrawable drawable, int x, int y, int width, int height) {}
+ public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
+
+ //----------------------------------------------------------------------
+ // Internals only below this point
+ //
+
+ // render scene to float pbuffer
+ private void renderScene(GL gl, GLU glu) {
+ gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
+
+ if (doViewAll) {
+ viewer.viewAll(gl);
+ }
+
+ if (b['w'])
+ gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_LINE);
+ else
+ gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL);
+
+ if (b['m']) {
+ gl.glEnable(GL.GL_MULTISAMPLE_ARB);
+ gl.glHint(GL.GL_MULTISAMPLE_FILTER_HINT_NV, GL.GL_NICEST);
+ } else {
+ gl.glDisable(GL.GL_MULTISAMPLE_ARB);
+ }
+
+ if (!b['e']) {
+ // draw background
+ pipeline.enableFragmentProgram(gl, skybox_fprog);
+ gl.glDisable(GL.GL_DEPTH_TEST);
+ drawSkyBox(gl);
+ gl.glEnable(GL.GL_DEPTH_TEST);
+ }
+
+ // draw object
+ pipeline.enableVertexProgram(gl, object_vprog);
+ pipeline.enableFragmentProgram(gl, object_fprog);
+
+ gl.glMatrixMode(GL.GL_TEXTURE);
+ gl.glLoadIdentity();
+ viewer.update();
+ viewer.updateInverseRotation(gl);
+
+ gl.glMatrixMode( GL.GL_MODELVIEW );
+ gl.glLoadIdentity();
+ CameraParameters params = viewer.getCameraParameters();
+ Mat4f view = params.getModelviewMatrix();
+ applyTransform(gl, view);
+
+ pipeline.trackModelViewProjectionMatrix(gl, modelViewProj_param);
+
+ // FIXME: add interation for object separately from camera?
+ // cgGLSetMatrixParameterfc(model_param, object.get_transform().get_value());
+ pipeline.setMatrixParameterfc(gl, model_param, identityMatrix);
+
+ // calculate eye position in cubemap space
+ Vec3f eyePos_eye = new Vec3f();
+ Vec3f eyePos_model = new Vec3f();
+ view.invertRigid();
+ view.xformPt(eyePos_eye, eyePos_model);
+ pipeline.setVertexProgramParameter3f(gl, eyePos_param, eyePos_model.x(), eyePos_model.y(), eyePos_model.z());
+
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex);
+ gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB);
+
+ boolean linear = b['l'];
+ if (linear) {
+ gl.glTexParameteri(GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR);
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ } else {
+ // glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST_MIPMAP_NEAREST);
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ }
+
+ if (hilo) {
+ gl.glActiveTextureARB(GL.GL_TEXTURE1_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex2);
+ gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB);
+
+ if (linear) {
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR);
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ } else {
+ // glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST_MIPMAP_NEAREST);
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri( GL.GL_TEXTURE_CUBE_MAP_ARB, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ }
+ }
+
+ gl.glEnable(GL.GL_CULL_FACE);
+
+ switch(modelno) {
+ case 0:
+ glut.glutSolidTorus(gl, 0.25, 0.5, 40, 40);
+ break;
+ case 1:
+ glut.glutSolidSphere(glu, 0.75f, 40, 40);
+ break;
+ case 2:
+ glut.glutSolidTetrahedron(gl);
+ break;
+ case 3:
+ glut.glutSolidCube(gl, 1.0f);
+ break;
+ case 4:
+ // Something about the teapot's geometry causes bad artifacts
+ // glut.glutSolidTeapot(gl, 1.0f);
+ break;
+ case 5:
+ gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
+ gl.glEnableClientState(GL.GL_NORMAL_ARRAY);
+ gl.glVertexPointer(3, GL.GL_FLOAT, 0, model.getVertices());
+ gl.glNormalPointer(GL.GL_FLOAT, 0, model.getVertexNormals());
+ int[] indices = model.getFaceIndices();
+ gl.glDrawElements(GL.GL_TRIANGLES, indices.length, GL.GL_UNSIGNED_INT, indices);
+ gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
+ gl.glDisableClientState(GL.GL_NORMAL_ARRAY);
+ break;
+ }
+
+ gl.glDisable(GL.GL_CULL_FACE);
+ pipeline.disableVertexProgram(gl);
+ pipeline.disableFragmentProgram(gl);
+ gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL.GL_FILL);
+ }
+ }
+
+ class BlurPbufferListener implements GLEventListener {
+ public void init(GLDrawable drawable) {
+ // printThreadName("init for BlurPbufferListener");
+
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
+ GL gl = drawable.getGL();
+
+ // FIXME: what about the ExaminerViewer?
+ setOrthoProjection(gl, blur_w, blur_h);
+
+ pipeline.initFloatingPointTexture(gl, blur_pbuffer_tex, blur_w, blur_h);
+ }
+
+ public void display(GLDrawable drawable) {
+ // printThreadName("display for BlurPbufferListener");
+
+ GL gl = drawable.getGL();
+
+ // horizontal blur
+ gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, blurh_fprog);
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ pipeline.bindTexture(gl, blur2_pbuffer_tex);
+ glowPass(gl);
+
+ pipeline.copyToTexture(gl, blur_pbuffer_tex, blur_w, blur_h);
+ }
+
+ // Unused routines
+ public void reshape(GLDrawable drawable, int x, int y, int width, int height) {}
+ public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
+ }
+
+ class Blur2PbufferListener implements GLEventListener {
+ public void init(GLDrawable drawable) {
+ // printThreadName("init for Blur2PbufferListener");
+
+ // drawable.setGL(new DebugGL(drawable.getGL()));
+
+ GL gl = drawable.getGL();
+ // FIXME: what about the ExaminerViewer?
+ setOrthoProjection(gl, blur_w, blur_h);
+
+ pipeline.initFloatingPointTexture(gl, blur2_pbuffer_tex, blur_w, blur_h);
+ }
+
+ public void display(GLDrawable drawable) {
+ // printThreadName("display for Blur2PbufferListener");
+
+ GL gl = drawable.getGL();
+
+ if (blur2Pass == BLUR2_SHRINK_PASS) {
+ gl.glClear(GL.GL_COLOR_BUFFER_BIT);
+
+ pipeline.enableFragmentProgram(gl, shrink_fprog);
+ setOrthoProjection(gl, blur_w, blur_h);
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, pbuffer_tex);
+ drawQuadRect2(gl, blur_w, blur_h, pbuffer_w, pbuffer_h);
+ pipeline.disableFragmentProgram(gl);
+
+ } else if (blur2Pass == BLUR2_VERT_BLUR_PASS) {
+
+ // vertical blur
+ gl.glBindProgramARB(GL.GL_FRAGMENT_PROGRAM_ARB, blurv_fprog);
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ pipeline.bindTexture(gl, blur_pbuffer_tex);
+ glowPass(gl);
+
+ } else {
+ throw new RuntimeException("Illegal value of blur2Pass: " + blur2Pass);
+ }
+
+ pipeline.copyToTexture(gl, blur2_pbuffer_tex, blur_w, blur_h);
+ }
+
+ // Unused routines
+ public void reshape(GLDrawable drawable, int x, int y, int width, int height) {}
+ public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
+ }
+
+ class TonemapPbufferListener implements GLEventListener {
+ public void init(GLDrawable drawable) {
+ GL gl = drawable.getGL();
+
+ setOrthoProjection(gl, pbuffer_w, pbuffer_h);
+
+ pipeline.initTexture(gl, tonemap_pbuffer_tex, pbuffer_w, pbuffer_h);
+ }
+
+ public void display(GLDrawable drawable) {
+ GL gl = drawable.getGL();
+
+ toneMappingPass(gl);
+
+ pipeline.copyToTexture(gl, tonemap_pbuffer_tex, pbuffer_w, pbuffer_h);
+ }
+
+ // Unused routines
+ public void reshape(GLDrawable drawable, int x, int y, int width, int height) {}
+ public void displayChanged(GLDrawable drawable, boolean modeChanged, boolean deviceChanged) {}
+ }
+
+ //----------------------------------------------------------------------
+ // Rendering routines
+ //
+
+ private void setOrthoProjection(GL gl, int w, int h) {
+ gl.glMatrixMode(GL.GL_PROJECTION);
+ gl.glLoadIdentity();
+ gl.glOrtho(0, w, 0, h, -1.0, 1.0);
+ gl.glMatrixMode(GL.GL_TEXTURE);
+ gl.glLoadIdentity();
+ gl.glMatrixMode(GL.GL_MODELVIEW);
+ gl.glLoadIdentity();
+ gl.glViewport(0, 0, w, h);
+ }
+
+ private void setPerspectiveProjection(GL gl, GLU glu, int w, int h) {
+ // FIXME: what about ExaminerViewer?
+ gl.glMatrixMode(GL.GL_PROJECTION);
+ gl.glLoadIdentity();
+ glu.gluPerspective(60.0, (float) w / (float) h, 0.1, 10.0);
+ gl.glMatrixMode(GL.GL_MODELVIEW);
+ gl.glLoadIdentity();
+ gl.glViewport(0, 0, w, h);
+ }
+
+ // blur floating point image
+ private void glowPass(GL gl) {
+ gl.glDisable(GL.GL_DEPTH_TEST);
+ gl.glEnable(GL.GL_FRAGMENT_PROGRAM_ARB);
+
+ setOrthoProjection(gl, blur_w, blur_h);
+ drawQuadRect(gl, blur_w, blur_h);
+
+ gl.glDisable(GL.GL_FRAGMENT_PROGRAM_ARB);
+ }
+
+ private void drawQuadRect(GL gl, int w, int h) {
+ gl.glBegin(GL.GL_QUADS);
+ gl.glTexCoord2f(0, h); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, 0, h / blur_scale); gl.glVertex3f(0, h, 0);
+ gl.glTexCoord2f(w, h); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, w / blur_scale, h / blur_scale); gl.glVertex3f(w, h, 0);
+ gl.glTexCoord2f(w, 0); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, w / blur_scale, 0); gl.glVertex3f(w, 0, 0);
+ gl.glTexCoord2f(0, 0); gl.glMultiTexCoord2fARB(GL.GL_TEXTURE1_ARB, 0, 0); gl.glVertex3f(0, 0, 0);
+ gl.glEnd();
+ }
+
+ private void drawQuadRect2(GL gl, int w, int h, int tw, int th) {
+ gl.glBegin(GL.GL_QUADS);
+ gl.glTexCoord2f(0, th); gl.glVertex3f(0, h, 0);
+ gl.glTexCoord2f(tw, th); gl.glVertex3f(w, h, 0);
+ gl.glTexCoord2f(tw, 0); gl.glVertex3f(w, 0, 0);
+ gl.glTexCoord2f(0, 0); gl.glVertex3f(0, 0, 0);
+ gl.glEnd();
+ }
+
+ private void drawQuadRect4(GL gl, int w, int h, int tw, int th) {
+ float offset = 0.5f;
+ gl.glBegin(GL.GL_QUADS);
+ gl.glTexCoord2f(offset, th - offset); gl.glVertex3f(0, h, 0);
+ gl.glTexCoord2f(tw - offset, th - offset); gl.glVertex3f(w, h, 0);
+ gl.glTexCoord2f(tw - offset, offset); gl.glVertex3f(w, 0, 0);
+ gl.glTexCoord2f(offset, offset); gl.glVertex3f(0, 0, 0);
+ gl.glEnd();
+ }
+
+ private void disableTexGen(GL gl) {
+ gl.glDisable(GL.GL_TEXTURE_GEN_S);
+ gl.glDisable(GL.GL_TEXTURE_GEN_T);
+ gl.glDisable(GL.GL_TEXTURE_GEN_R);
+ }
+
+ private void enableTexGen(GL gl) {
+ gl.glEnable(GL.GL_TEXTURE_GEN_S);
+ gl.glEnable(GL.GL_TEXTURE_GEN_T);
+ gl.glEnable(GL.GL_TEXTURE_GEN_R);
+ }
+
+ // draw cubemap background
+ private void drawSkyBox(GL gl) {
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex);
+ gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB);
+
+ if (hilo) {
+ gl.glActiveTextureARB(GL.GL_TEXTURE1_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_CUBE_MAP_ARB, hdr_tex2);
+ gl.glEnable(GL.GL_TEXTURE_CUBE_MAP_ARB);
+ }
+
+ // initialize object linear texgen
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ gl.glMatrixMode(GL.GL_MODELVIEW);
+ gl.glPushMatrix();
+ gl.glLoadIdentity();
+ float[] s_plane = { 1.0f, 0.0f, 0.0f, 0.0f };
+ float[] t_plane = { 0.0f, 1.0f, 0.0f, 0.0f };
+ float[] r_plane = { 0.0f, 0.0f, 1.0f, 0.0f };
+ gl.glTexGenfv(GL.GL_S, GL.GL_OBJECT_PLANE, s_plane);
+ gl.glTexGenfv(GL.GL_T, GL.GL_OBJECT_PLANE, t_plane);
+ gl.glTexGenfv(GL.GL_R, GL.GL_OBJECT_PLANE, r_plane);
+ gl.glPopMatrix();
+ gl.glTexGeni(GL.GL_S, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR);
+ gl.glTexGeni(GL.GL_T, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR);
+ gl.glTexGeni(GL.GL_R, GL.GL_TEXTURE_GEN_MODE, GL.GL_OBJECT_LINEAR);
+ enableTexGen(gl);
+
+ gl.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);
+
+ gl.glMatrixMode(GL.GL_TEXTURE);
+ gl.glPushMatrix();
+ gl.glLoadIdentity();
+ viewer.updateInverseRotation(gl);
+
+ gl.glMatrixMode(GL.GL_MODELVIEW);
+ gl.glPushMatrix();
+ gl.glLoadIdentity();
+ gl.glScalef(10.0f, 10.0f, 10.0f);
+ glut.glutSolidCube(gl, 1.0f);
+ gl.glPopMatrix();
+
+ gl.glDisable(GL.GL_TEXTURE_CUBE_MAP_ARB);
+
+ gl.glMatrixMode(GL.GL_TEXTURE);
+ gl.glPopMatrix();
+ gl.glMatrixMode(GL.GL_MODELVIEW);
+
+ disableTexGen(gl);
+ }
+
+ // read from float texture, apply tone mapping, render to regular 8/8/8 display
+ private void toneMappingPass(GL gl) {
+ gl.glFinish();
+
+ gl.glActiveTextureARB(GL.GL_TEXTURE0_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, pbuffer_tex);
+
+ gl.glActiveTextureARB(GL.GL_TEXTURE1_ARB);
+ if (blur2_pbuffer != null) {
+ gl.glBindTexture(GL.GL_TEXTURE_RECTANGLE_NV, blur2_pbuffer_tex);
+ }
+
+ gl.glActiveTextureARB(GL.GL_TEXTURE2_ARB);
+ gl.glBindTexture(GL.GL_TEXTURE_1D, gamma_tex);
+
+ gl.glActiveTextureARB(GL.GL_TEXTURE3_ARB);
+ pipeline.bindTexture(gl, vignette_tex);
+
+ pipeline.enableFragmentProgram(gl, tonemap_fprog);
+
+ pipeline.setFragmentProgramParameter1f(gl, blurAmount_param, blurAmount);
+ pipeline.setFragmentProgramParameter4f(gl, windowSize_param, 2.0f/win_w, 2.0f/win_h, -1.0f, -1.0f);
+ pipeline.setFragmentProgramParameter1f(gl, exposure_param, exposure);
+
+ drawQuadRect(gl, win_w, win_h);
+
+ pipeline.disableFragmentProgram(gl);
+ }
+
+ //----------------------------------------------------------------------
+ // Cg and blur code initialization
+ //
+
+ private String shaderRoot = "demos/hdr/shaders/";
+ private void initCg(GL gl) {
+ pipeline = new CgPipeline();
+ pipeline.init();
+
+ try {
+ tonemap_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/tonemap.cg");
+ blurAmount_param = pipeline.getNamedParameter(tonemap_fprog, "blurAmount");
+ windowSize_param = pipeline.getNamedParameter(tonemap_fprog, "windowSize");
+ exposure_param = pipeline.getNamedParameter(tonemap_fprog, "exposure");
+
+ if (hilo) {
+ skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/skybox_hilo.cg");
+ object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/object_hilo.cg");
+ } else {
+ skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/skybox.cg");
+ object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/object.cg");
+ }
+
+ shrink_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "cg/shrink.cg");
+
+ object_vprog = pipeline.loadVertexProgram(gl, shaderRoot + "cg/object_vp.cg");
+ modelViewProj_param = pipeline.getNamedParameter(object_vprog, "modelViewProj");
+ model_param = pipeline.getNamedParameter(object_vprog, "model");
+ eyePos_param = pipeline.getNamedParameter(object_vprog, "eyePos");
+ } catch (IOException e) {
+ throw new RuntimeException("Error loading shaders", e);
+ }
+ }
+
+ private void initARBFP(GL gl, int texmode) {
+ pipeline = new ARBFPPipeline(texmode);
+ pipeline.init();
+
+ try {
+ // NOTE that the program parameters are hard-coded; in the
+ // future we can use GLSL but for this demo we desire good
+ // backward compatibility
+ tonemap_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/tonemap.arbfp1");
+ blurAmount_param = 1;
+ windowSize_param = -1; // Not used
+ exposure_param = 2;
+
+ if (hilo) {
+ skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/skybox_hilo.arbfp1");
+ object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/object_hilo.arbfp1");
+ } else {
+ skybox_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/skybox.arbfp1");
+ object_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/object.arbfp1");
+ }
+
+ shrink_fprog = pipeline.loadFragmentProgram(gl, shaderRoot + "arbfp1/shrink.arbfp1");
+
+ object_vprog = pipeline.loadVertexProgram(gl, shaderRoot + "arbfp1/object_vp.arbvp1");
+ modelViewProj_param = 0;
+ model_param = 4;
+ eyePos_param = 8;
+ } catch (IOException e) {
+ throw new RuntimeException("Error loading shaders", e);
+ }
+ }
+
+ private void initBlurCode(GL gl, int blurWidth) {
+ // generate blur code
+ String blurCode = generateBlurCodeFP2(blurWidth, false);
+ blurh_fprog = loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, blurCode);
+ // printf("%s\n", blurCode);
+
+ blurCode = generateBlurCodeFP2(blurWidth, true);
+ blurv_fprog = loadProgram(gl, GL.GL_FRAGMENT_PROGRAM_ARB, blurCode);
+ // printf("%s\n", blurCode);
+ }
+
+ private int loadProgram(GL gl, int target, String code) {
+ int prog_id;
+ int[] tmp = new int[1];
+ gl.glGenProgramsARB(1, tmp);
+ prog_id = tmp[0];
+ gl.glBindProgramARB(target, prog_id);
+ int size = code.length();
+ gl.glProgramStringARB(target, GL.GL_PROGRAM_FORMAT_ASCII_ARB, code.length(), code);
+ int[] errPos = new int[1];
+ gl.glGetIntegerv(GL.GL_PROGRAM_ERROR_POSITION_ARB, errPos);
+ if (errPos[0] >= 0) {
+ String kind = "Program";
+ if (target == GL.GL_VERTEX_PROGRAM_ARB) {
+ kind = "Vertex program";
+ } else if (target == GL.GL_FRAGMENT_PROGRAM_ARB) {
+ kind = "Fragment program";
+ }
+ System.out.println(kind + " failed to load:");
+ String errMsg = gl.glGetString(GL.GL_PROGRAM_ERROR_STRING_ARB);
+ if (errMsg == null) {
+ System.out.println("[No error message available]");
+ } else {
+ System.out.println("Error message: \"" + errMsg + "\"");
+ }
+ System.out.println("Error occurred at position " + errPos[0] + " in program:");
+ int endPos = errPos[0];
+ while (endPos < code.length() && code.charAt(endPos) != '\n') {
+ ++endPos;
+ }
+ System.out.println(code.substring(errPos[0], endPos));
+ throw new GLException("Error loading " + kind);
+ } else {
+ if (target == GL.GL_FRAGMENT_PROGRAM_ARB) {
+ int[] isNative = new int[1];
+ gl.glGetProgramivARB(GL.GL_FRAGMENT_PROGRAM_ARB,
+ GL.GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB,
+ isNative);
+ if (isNative[0] != 1) {
+ System.out.println("WARNING: fragment program is over native resource limits");
+ Thread.dumpStack();
+ }
+ }
+ }
+ return prog_id;
+ }
+
+ // 1d Gaussian distribution
+ private float gaussian(float x, float s) {
+ return (float) (Math.exp(-x*x/(2*s*s)) / (s*Math.sqrt(2*Math.PI)));
+ }
+
+ private void dumpWeights(int n) {
+ float s = n / 3.0f;
+ float sum = 0.0f;
+ System.err.println("gaussian weights, s = " + s + ", n = " + n);
+ for(int x=-n; x<=n; x++) {
+ float w = gaussian(x, s);
+ sum += w;
+ System.err.println("" + x + ": " + w);
+ }
+ System.err.println("sum = " + sum);
+ }
+
+ // optimized version
+ // pairs texture lookups, uses half precision
+ private String generateBlurCodeFP2(int n, boolean vertical) {
+ StringBuffer buf = new StringBuffer();
+
+ float sum = 0;
+ for(int i=-n; i<=n; i++) {
+ float weight = gaussian(3.0f*i / (float) n, 1.0f);
+ sum += weight;
+ }
+ System.err.println("sum = " + sum);
+
+ buf.append("!!ARBfp1.0\n");
+ buf.append("TEMP H0, H1, H2;\n");
+ for(int i=-n; i<=n; i+=2) {
+ float weight = gaussian(3.0f*i / (float) n, 1.0f) / sum;
+ float weight2 = gaussian(3.0f*(i+1) / (float) n, 1.0f) / sum;
+
+ int x_offset, y_offset, x_offset2, y_offset2;
+ if (vertical) {
+ x_offset = 0; x_offset2 = 0;
+ y_offset = i; y_offset2 = i+1;
+ } else {
+ x_offset = i; x_offset2 = i+1;
+ y_offset = 0; y_offset2 = 0;
+ }
+
+ // calculate texcoords
+ buf.append("ADD H0, fragment.texcoord[0], {" + x_offset + ", " + y_offset + "};\n");
+ if (i+1 <= n) {
+ buf.append("ADD H1, fragment.texcoord[0], {" + x_offset2 + ", " + y_offset2 + "};\n");
+ }
+ // do texture lookups
+ buf.append("TEX H0, H0, texture[0], RECT;\n");
+ if (i+1 <= n) {
+ buf.append("TEX H1, H1, texture[0], RECT;\n");
+ }
+
+ // accumulate results
+ if (i==-n) {
+ // first sample
+ buf.append("MUL H2, H0, {" + weight + "}.x;\n");
+ buf.append("MAD H2, H1, {" + weight2 + "}.x, H2;\n");
+ } else {
+ buf.append("MAD H2, H0, {" + weight + "}.x, H2;\n");
+ if (i+1 <= n) {
+ buf.append("MAD H2, H1, {" + weight2 + "}.x, H2;\n");
+ }
+ }
+ }
+
+ buf.append(
+ "MOV result.color, H2;\n" +
+ "END\n"
+ );
+
+ return buf.toString();
+ }
+
+ private void applyTransform(GL gl, Mat4f mat) {
+ float[] data = new float[16];
+ mat.getColumnMajorData(data);
+ gl.glMultMatrixf(data);
+ }
+
+ private void usage() {
+ System.err.println("usage: java demos.hdr.HDR [-cg] image.hdr pbuffer_w pbuffer_h window_scale blur_width blur_decimate [obj file]");
+ System.exit(1);
+ }
+
+ private void printThreadName(String where) {
+ System.err.println("In " + where + ": current thread = " + Thread.currentThread().getName());
+ }
+
+ private void runExit() {
+ // Note: calling System.exit() synchronously inside the draw,
+ // reshape or init callbacks can lead to deadlocks on certain
+ // platforms (in particular, X11) because the JAWT's locking
+ // routines cause a global AWT lock to be grabbed. Run the
+ // exit routine in another thread.
+ new Thread(new Runnable() {
+ public void run() {
+ animator.stop();
+ System.exit(0);
+ }
+ }).start();
+ }
+}
diff --git a/src/demos/hdr/HDRTexture.java b/src/demos/hdr/HDRTexture.java
new file mode 100755
index 0000000..fcaac11
--- /dev/null
+++ b/src/demos/hdr/HDRTexture.java
@@ -0,0 +1,494 @@
+package demos.hdr;
+
+import java.io.*;
+
+import net.java.games.jogl.*;
+
+public class HDRTexture {
+ private RGBE.Header header;
+ private byte[] m_data;
+ private float[] m_floatdata;
+ private int m_width, m_height;
+ private float m_max_r, m_max_g, m_max_b;
+ private float m_min_r, m_min_g, m_min_b;
+ private float m_max;
+ private int m_target;
+
+ public HDRTexture(String filename) throws IOException {
+ this(new FileInputStream(filename));
+ }
+
+ public HDRTexture(InputStream in) throws IOException {
+ DataInputStream datain = new DataInputStream(new BufferedInputStream(in));
+ header = RGBE.readHeader(datain);
+ m_width = header.getWidth();
+ m_height = header.getHeight();
+ m_data = new byte[m_width * m_height * 4];
+ RGBE.readPixelsRawRLE(datain, m_data, 0, m_width, m_height);
+ System.err.println("Loaded HDR image " + m_width + " x " + m_height);
+ }
+
+ public byte[] getData() { return m_data; }
+ public int getPixelIndex(int x, int y) {
+ return ((m_width * (m_height - 1 - y)) + x) * 4;
+ }
+ public float[] getFloatData() { return m_floatdata; }
+ public int getPixelFloatIndex(int x, int y) {
+ return ((m_width * (m_height - 1 - y)) + x) * 3;
+ }
+
+ public void analyze() {
+ m_max_r = m_max_g = m_max_b = 0.0f;
+ m_min_r = m_min_g = m_min_b = 1e10f;
+ int mine = 255;
+ int maxe = 0;
+
+ int ptr = 0;
+ float[] rgb = new float[3];
+ for(int i=0; i<m_width*m_height; i++) {
+ int e = m_data[ptr+3] & 0xFF;
+ if (e < mine) mine = e;
+ if (e > maxe) maxe = e;
+
+ RGBE.rgbe2float(rgb, m_data, ptr);
+ float r = rgb[0];
+ float g = rgb[1];
+ float b = rgb[2];
+ if (r > m_max_r) m_max_r = r;
+ if (g > m_max_g) m_max_g = g;
+ if (b > m_max_b) m_max_b = b;
+ if (r < m_min_r) m_min_r = r;
+ if (g < m_min_g) m_min_g = g;
+ if (b < m_min_b) m_min_b = b;
+ ptr += 4;
+ }
+ System.err.println("max intensity: " + m_max_r + " " + m_max_g + " " + m_max_b);
+ System.err.println("min intensity: " + m_min_r + " " + m_min_g + " " + m_min_b);
+ System.err.println("max e: " + maxe + " = " + RGBE.ldexp(1.0, maxe-128));
+ System.err.println("min e: " + mine + " = " + RGBE.ldexp(1.0, mine-128));
+
+ m_max = m_max_r;
+ if (m_max_g > m_max) m_max = m_max_g;
+ if (m_max_b > m_max) m_max = m_max_b;
+ System.err.println("max: " + m_max);
+ }
+
+ /** Converts from RGBE to floating-point RGB data. */
+ public void convert() {
+ m_floatdata = new float [m_width*m_height*3];
+
+ int src = 0;
+ int dest = 0;
+ float[] rgb = new float[3];
+ for(int i=0; i<m_width*m_height; i++) {
+ RGBE.rgbe2float(rgb, m_data, src);
+
+ m_floatdata[dest++] = remap(rgb[0], m_max);
+ m_floatdata[dest++] = remap(rgb[1], m_max);
+ m_floatdata[dest++] = remap(rgb[2], m_max);
+
+ src += 4;
+ }
+ }
+
+ public int create2DTextureRGBE(GL gl, int targetTextureType) {
+ m_target = targetTextureType;
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[1];
+
+ gl.glBindTexture(m_target, texid);
+
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+ gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE);
+ gl.glTexImage2D(m_target, 0, GL.GL_RGBA, m_width, m_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, m_data);
+
+ return texid;
+ }
+
+ public int create2DTextureHILO(GL gl, int targetTextureType, boolean rg) {
+ m_target = targetTextureType;
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[0];
+
+ gl.glBindTexture(m_target, texid);
+
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+ gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE);
+
+ float[] img = new float [m_width * m_height * 2];
+ int src = 0;
+ int dest = 0;
+ for (int j=0; j<m_height; j++) {
+ for (int i=0; i<m_width; i++) {
+ if (rg) {
+ img[dest++] = m_floatdata[src + 0];
+ img[dest++] = m_floatdata[src + 1];
+ } else {
+ img[dest++] = m_floatdata[src + 2];
+ img[dest++] = 0;
+ }
+ src+=3;
+ }
+ }
+
+ gl.glTexImage2D(m_target, 0, GL.GL_HILO16_NV, m_width, m_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, img);
+
+ return texid;
+ }
+
+ // create a cubemap texture from a 2D image in cross format (thanks to Jonathon McGee)
+ public int createCubemapRGBE(GL gl) {
+ // cross is 3 faces wide, 4 faces high
+ int face_width = m_width / 3;
+ int face_height = m_height / 4;
+ byte[] face = new byte[face_width * face_height * 4];
+
+ m_target = GL.GL_TEXTURE_CUBE_MAP_ARB;
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[0];
+ gl.glBindTexture(m_target, texid);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+ gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE);
+
+ // gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ // gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_NEAREST);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
+
+ // extract 6 faces
+
+ // positive Y
+ int ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelIndex(2 * face_width - (i + 1), 3 * face_height + j);
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face);
+
+ // positive X
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelIndex(i, m_height - (face_height + j + 1));
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face);
+
+ // negative Z
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelIndex(face_width + i, m_height - (face_height + j + 1));
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face);
+
+ // negative X
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelIndex(2 * face_width + i, m_height - (face_height + j + 1));
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face);
+
+ // negative Y
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelIndex(2 * face_width - (i + 1), face_height + j);
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face);
+
+ // positive Z
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelIndex(2 * face_width - (i + 1), j);
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ face[ptr++] = m_data[src++];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, 0, GL.GL_RGBA, face_width, face_height, 0, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE, face);
+
+ return texid;
+ }
+
+ public int createCubemapHILO(GL gl, boolean rg) {
+ // cross is 3 faces wide, 4 faces high
+ int face_width = m_width / 3;
+ int face_height = m_height / 4;
+ float[] face = new float [face_width * face_height * 2];
+
+ m_target = GL.GL_TEXTURE_CUBE_MAP_ARB;
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[0];
+ gl.glBindTexture(m_target, texid);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+ gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE);
+
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
+
+ // extract 6 faces
+
+ // positive Y
+ int ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width - (i + 1), 3 * face_height + j);
+ if (rg) {
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ } else {
+ face[ptr++] = m_floatdata[src + 2];
+ face[ptr++] = 0;
+ }
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face);
+
+ // positive X
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(i, m_height - (face_height + j + 1));
+ if (rg) {
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ } else {
+ face[ptr++] = m_floatdata[src + 2];
+ face[ptr++] = 0;
+ }
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face);
+
+ // negative Z
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(face_width + i, m_height - (face_height + j + 1));
+ if (rg) {
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ } else {
+ face[ptr++] = m_floatdata[src + 2];
+ face[ptr++] = 0;
+ }
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face);
+
+ // negative X
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width + i, m_height - (face_height + j + 1));
+ if (rg) {
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ } else {
+ face[ptr++] = m_floatdata[src + 2];
+ face[ptr++] = 0;
+ }
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face);
+
+ // negative Y
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width - (i + 1), face_height + j);
+ if (rg) {
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ } else {
+ face[ptr++] = m_floatdata[src + 2];
+ face[ptr++] = 0;
+ }
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face);
+
+ // positive Z
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width - (i + 1), j);
+ if (rg) {
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ } else {
+ face[ptr++] = m_floatdata[src + 2];
+ face[ptr++] = 0;
+ }
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, 0, GL.GL_HILO16_NV, face_width, face_height, 0, GL.GL_HILO_NV, GL.GL_FLOAT, face);
+
+ return texid;
+ }
+
+ public int createCubemap(GL gl, int format) {
+ // cross is 3 faces wide, 4 faces high
+ int face_width = m_width / 3;
+ int face_height = m_height / 4;
+ float[] face = new float [face_width * face_height * 3];
+
+ m_target = GL.GL_TEXTURE_CUBE_MAP_ARB;
+ int[] tmp = new int[1];
+ gl.glGenTextures(1, tmp);
+ int texid = tmp[0];
+ gl.glBindTexture(m_target, texid);
+
+ gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);
+ gl.glTexParameteri(m_target, GL.GL_GENERATE_MIPMAP_SGIS, GL.GL_TRUE);
+
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR_MIPMAP_LINEAR);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_S, GL.GL_CLAMP_TO_EDGE);
+ gl.glTexParameteri(m_target, GL.GL_TEXTURE_WRAP_T, GL.GL_CLAMP_TO_EDGE);
+
+ // extract 6 faces
+
+ // positive Y
+ int ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width - (i + 1), 3 * face_height + j);
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ face[ptr++] = m_floatdata[src + 2];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face);
+
+ // positive X
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(i, m_height - (face_height + j + 1));
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ face[ptr++] = m_floatdata[src + 2];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face);
+
+ // negative Z
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(face_width + i, m_height - (face_height + j + 1));
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ face[ptr++] = m_floatdata[src + 2];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face);
+
+ // negative X
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width + i, m_height - (face_height + j + 1));
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ face[ptr++] = m_floatdata[src + 2];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face);
+
+ // negative Y
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width - (i + 1), face_height + j);
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ face[ptr++] = m_floatdata[src + 2];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face);
+
+ // positive Z
+ ptr = 0;
+ for (int j=0; j<face_height; j++) {
+ for (int i=0; i<face_width; i++) {
+ int src = getPixelFloatIndex(2 * face_width - (i + 1), j);
+ face[ptr++] = m_floatdata[src + 0];
+ face[ptr++] = m_floatdata[src + 1];
+ face[ptr++] = m_floatdata[src + 2];
+ }
+ }
+ gl.glTexImage2D(GL.GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, 0, format, face_width, face_height, 0, GL.GL_RGB, GL.GL_FLOAT, face);
+
+ return texid;
+ }
+
+ //----------------------------------------------------------------------
+ // Internals only below this point
+ //
+
+ private static float remap(float x, float max) {
+ if (x > max) x = max;
+ return (float) Math.sqrt(x / max);
+ }
+
+ public static void main(String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ try {
+ HDRTexture tex = new HDRTexture(args[i]);
+ tex.analyze();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/demos/hdr/Pipeline.java b/src/demos/hdr/Pipeline.java
new file mode 100755
index 0000000..822c3fb
--- /dev/null
+++ b/src/demos/hdr/Pipeline.java
@@ -0,0 +1,31 @@
+package demos.hdr;
+
+import java.io.*;
+import java.util.*;
+
+import net.java.games.jogl.*;
+import net.java.games.cg.*;
+import demos.util.*;
+
+public interface Pipeline {
+ public void init();
+ public void initFloatingPointTexture (GL gl, int textureObject, int w, int h);
+ public void initTexture (GL gl, int textureObject, int w, int h);
+ public void copyToTexture (GL gl, int textureObject, int w, int h);
+ public void bindTexture (GL gl, int textureObject);
+ public int loadVertexProgram (GL gl, String filename) throws IOException;
+ public int loadFragmentProgram (GL gl, String filename) throws IOException;
+ public void enableVertexProgram (GL gl, int program);
+ public void enableFragmentProgram (GL gl, int program);
+ public void disableVertexProgram (GL gl);
+ public void disableFragmentProgram (GL gl);
+ public int getNamedParameter (int program, String name);
+ public void setVertexProgramParameter1f (GL gl, int param, float val);
+ public void setVertexProgramParameter3f (GL gl, int param, float x, float y, float z);
+ public void setVertexProgramParameter4f (GL gl, int param, float x, float y, float z, float w);
+ public void setFragmentProgramParameter1f (GL gl, int param, float val);
+ public void setFragmentProgramParameter3f (GL gl, int param, float x, float y, float z);
+ public void setFragmentProgramParameter4f (GL gl, int param, float x, float y, float z, float w);
+ public void trackModelViewProjectionMatrix(GL gl, int param);
+ public void setMatrixParameterfc (GL gl, int param, float[] matrix);
+}
diff --git a/src/demos/hdr/RGBE.java b/src/demos/hdr/RGBE.java
new file mode 100755
index 0000000..9c83ae6
--- /dev/null
+++ b/src/demos/hdr/RGBE.java
@@ -0,0 +1,452 @@
+package demos.hdr;
+
+import java.io.*;
+import java.util.regex.*;
+
+/** This file contains code to read and write four byte rgbe file format
+ developed by Greg Ward. It handles the conversions between rgbe and
+ pixels consisting of floats. The data is assumed to be an array of floats.
+ By default there are three floats per pixel in the order red, green, blue.
+ (RGBE_DATA_??? values control this.) Only the mimimal header reading and
+ writing is implemented. Each routine does error checking and will return
+ a status value as defined below. This code is intended as a skeleton so
+ feel free to modify it to suit your needs. <P>
+
+ Ported to Java and restructured by Kenneth Russell. <BR>
+ posted to http://www.graphics.cornell.edu/~bjw/ <BR>
+ written by Bruce Walter ([email protected]) 5/26/95 <BR>
+ based on code written by Greg Ward <BR>
+*/
+
+public class RGBE {
+ // Flags indicating which fields in a Header are valid
+ private static final int VALID_PROGRAMTYPE = 0x01;
+ private static final int VALID_GAMMA = 0x02;
+ private static final int VALID_EXPOSURE = 0x04;
+
+ private static final String gammaString = "GAMMA=";
+ private static final String exposureString = "EXPOSURE=";
+
+ private static final Pattern widthHeightPattern = Pattern.compile("-Y (\\d+) \\+X (\\d+)");
+
+ public static class Header {
+ // Indicates which fields are valid
+ private int valid;
+
+ // Listed at beginning of file to identify it after "#?".
+ // Defaults to "RGBE"
+ private String programType;
+
+ // Image has already been gamma corrected with given gamma.
+ // Defaults to 1.0 (no correction)
+ private float gamma;
+
+ // A value of 1.0 in an image corresponds to <exposure>
+ // watts/steradian/m^2. Defaults to 1.0.
+ private float exposure;
+
+ // Width and height of image
+ private int width;
+ private int height;
+
+ private Header(int valid,
+ String programType,
+ float gamma,
+ float exposure,
+ int width,
+ int height) {
+ this.valid = valid;
+ this.programType = programType;
+ this.gamma = gamma;
+ this.exposure = exposure;
+ this.width = width;
+ this.height = height;
+ }
+
+ public boolean isProgramTypeValid() { return ((valid & VALID_PROGRAMTYPE) != 0); }
+ public boolean isGammaValid() { return ((valid & VALID_GAMMA) != 0); }
+ public boolean isExposureValid() { return ((valid & VALID_EXPOSURE) != 0); }
+
+ public String getProgramType() { return programType; }
+ public float getGamma() { return gamma; }
+ public float getExposure() { return exposure; }
+ public int getWidth() { return width; }
+ public int getHeight() { return height; }
+
+ public String toString() {
+ StringBuffer buf = new StringBuffer();
+ if (isProgramTypeValid()) {
+ buf.append(" Program type: ");
+ buf.append(getProgramType());
+ }
+ buf.append(" Gamma");
+ if (isGammaValid()) {
+ buf.append(" [valid]");
+ }
+ buf.append(": ");
+ buf.append(getGamma());
+ buf.append(" Exposure");
+ if (isExposureValid()) {
+ buf.append(" [valid]");
+ }
+ buf.append(": ");
+ buf.append(getExposure());
+ buf.append(" Width: ");
+ buf.append(getWidth());
+ buf.append(" Height: ");
+ buf.append(getHeight());
+ return buf.toString();
+ }
+ }
+
+ public static Header readHeader(DataInputStream in) throws IOException {
+ int valid = 0;
+ String programType = null;
+ float gamma = 1.0f;
+ float exposure = 1.0f;
+ int width = 0;
+ int height = 0;
+
+ String buf = in.readLine();
+ if (buf == null) {
+ throw new IOException("Unexpected EOF reading magic token");
+ }
+ if (buf.charAt(0) == '#' && buf.charAt(1) == '?') {
+ valid |= VALID_PROGRAMTYPE;
+ programType = buf.substring(2);
+ buf = in.readLine();
+ if (buf == null) {
+ throw new IOException("Unexpected EOF reading line after magic token");
+ }
+ }
+
+ boolean foundFormat = false;
+ boolean done = false;
+ while (!done) {
+ if (buf.equals("FORMAT=32-bit_rle_rgbe")) {
+ foundFormat = true;
+ } else if (buf.startsWith(gammaString)) {
+ valid |= VALID_GAMMA;
+ gamma = Float.parseFloat(buf.substring(gammaString.length()));
+ } else if (buf.startsWith(exposureString)) {
+ valid |= VALID_EXPOSURE;
+ exposure = Float.parseFloat(buf.substring(exposureString.length()));
+ } else {
+ Matcher m = widthHeightPattern.matcher(buf);
+ if (m.matches()) {
+ width = Integer.parseInt(m.group(2));
+ height = Integer.parseInt(m.group(1));
+ done = true;
+ }
+ }
+
+ if (!done) {
+ buf = in.readLine();
+ if (buf == null) {
+ throw new IOException("Unexpected EOF reading header");
+ }
+ }
+ }
+
+ if (!foundFormat) {
+ throw new IOException("No FORMAT specifier found");
+ }
+
+ return new Header(valid, programType, gamma, exposure, width, height);
+ }
+
+ /** Simple read routine. Will not correctly handle run length encoding. */
+ public static void readPixels(DataInputStream in, float[] data, int numpixels) throws IOException {
+ byte[] rgbe = new byte[4];
+ float[] rgb = new float[3];
+ int offset = 0;
+
+ while(numpixels-- > 0) {
+ int numRead = in.read(rgbe);
+ if (numRead < 4) {
+ throw new IOException("Only able to read " + numRead + " out of expected " + rgbe.length + " bytes");
+ }
+ rgbe2float(rgb, rgbe, 0);
+ data[offset++] = rgb[0];
+ data[offset++] = rgb[1];
+ data[offset++] = rgb[2];
+ }
+ }
+
+ public static void readPixelsRaw(DataInputStream in, byte[] data, int offset, int numpixels) throws IOException {
+ int numExpected = 4 * numpixels;
+ int numRead = in.read(data, offset, numExpected);
+ if (numRead < numExpected)
+ throw new IOException("Error reading raw pixels: got " + numRead + " bytes, expected " + numExpected);
+ }
+
+ public static void readPixelsRawRLE(DataInputStream in, byte[] data, int offset,
+ int scanline_width, int num_scanlines) throws IOException {
+ byte[] rgbe = new byte[4];
+ byte[] scanline_buffer = null;
+ int ptr, ptr_end;
+ int count;
+ byte[] buf = new byte[2];
+
+ if ((scanline_width < 8)||(scanline_width > 0x7fff)) {
+ /* run length encoding is not allowed so read flat*/
+ readPixelsRaw(in, data, offset, scanline_width*num_scanlines);
+ }
+
+ /* read in each successive scanline */
+ while (num_scanlines > 0) {
+ if (in.read(rgbe) < rgbe.length) {
+ throw new IOException("Error reading bytes: expected " + rgbe.length);
+ }
+
+ if ((rgbe[0] != 2)||(rgbe[1] != 2)||((rgbe[2] & 0x80) != 0)) {
+ /* this file is not run length encoded */
+ data[offset++] = rgbe[0];
+ data[offset++] = rgbe[1];
+ data[offset++] = rgbe[2];
+ data[offset++] = rgbe[3];
+ readPixelsRaw(in, data, offset, scanline_width*num_scanlines-1);
+ }
+
+ if ((((rgbe[2] & 0xFF)<<8) | (rgbe[3] & 0xFF)) != scanline_width) {
+ throw new IOException("Wrong scanline width " +
+ (((rgbe[2] & 0xFF)<<8) | (rgbe[3] & 0xFF)) +
+ ", expected " + scanline_width);
+ }
+
+ if (scanline_buffer == null) {
+ scanline_buffer = new byte[4*scanline_width];
+ }
+
+ ptr = 0;
+ /* read each of the four channels for the scanline into the buffer */
+ for (int i=0; i<4; i++) {
+ ptr_end = (i+1)*scanline_width;
+ while(ptr < ptr_end) {
+ if (in.read(buf) < buf.length) {
+ throw new IOException("Error reading 2-byte buffer");
+ }
+ if ((buf[0] & 0xFF) > 128) {
+ /* a run of the same value */
+ count = (buf[0] & 0xFF)-128;
+ if ((count == 0)||(count > ptr_end - ptr)) {
+ throw new IOException("Bad scanline data");
+ }
+ while(count-- > 0)
+ scanline_buffer[ptr++] = buf[1];
+ }
+ else {
+ /* a non-run */
+ count = buf[0] & 0xFF;
+ if ((count == 0)||(count > ptr_end - ptr)) {
+ throw new IOException("Bad scanline data");
+ }
+ scanline_buffer[ptr++] = buf[1];
+ if (--count > 0) {
+ if (in.read(scanline_buffer, ptr, count) < count) {
+ throw new IOException("Error reading non-run data");
+ }
+ ptr += count;
+ }
+ }
+ }
+ }
+ /* copy byte data to output */
+ for(int i = 0; i < scanline_width; i++) {
+ data[offset++] = scanline_buffer[i];
+ data[offset++] = scanline_buffer[i+scanline_width];
+ data[offset++] = scanline_buffer[i+2*scanline_width];
+ data[offset++] = scanline_buffer[i+3*scanline_width];
+ }
+ num_scanlines--;
+ }
+ }
+
+ /** Standard conversion from float pixels to rgbe pixels. */
+ public static void float2rgbe(byte[] rgbe, float red, float green, float blue) {
+ float v;
+ int e;
+
+ v = red;
+ if (green > v) v = green;
+ if (blue > v) v = blue;
+ if (v < 1e-32f) {
+ rgbe[0] = rgbe[1] = rgbe[2] = rgbe[3] = 0;
+ }
+ else {
+ FracExp fe = frexp(v);
+ v = (float) (fe.getFraction() * 256.0 / v);
+ rgbe[0] = (byte) (red * v);
+ rgbe[1] = (byte) (green * v);
+ rgbe[2] = (byte) (blue * v);
+ rgbe[3] = (byte) (fe.getExponent() + 128);
+ }
+ }
+
+ /** Standard conversion from rgbe to float pixels. Note: Ward uses
+ ldexp(col+0.5,exp-(128+8)). However we wanted pixels in the
+ range [0,1] to map back into the range [0,1]. */
+ public static void rgbe2float(float[] rgb, byte[] rgbe, int startRGBEOffset) {
+ float f;
+
+ if (rgbe[startRGBEOffset + 3] != 0) { /*nonzero pixel*/
+ f = (float) ldexp(1.0,(rgbe[startRGBEOffset + 3] & 0xFF)-(128+8));
+ rgb[0] = (rgbe[startRGBEOffset + 0] & 0xFF) * f;
+ rgb[1] = (rgbe[startRGBEOffset + 1] & 0xFF) * f;
+ rgb[2] = (rgbe[startRGBEOffset + 2] & 0xFF) * f;
+ } else {
+ rgb[0] = 0;
+ rgb[1] = 0;
+ rgb[2] = 0;
+ }
+ }
+
+ public static double ldexp(double value, int exp) {
+ if(!finite(value)||value==0.0) return value;
+ value = scalbn(value,exp);
+ // No good way to indicate errno (want to avoid throwing
+ // exceptions because don't know about stability of calculations)
+ // if(!finite(value)||value==0.0) errno = ERANGE;
+ return value;
+ }
+
+ //----------------------------------------------------------------------
+ // Internals only below this point
+ //
+
+ //----------------------------------------------------------------------
+ // Math routines, some fdlibm-derived
+ //
+
+ static class FracExp {
+ private double fraction;
+ private int exponent;
+
+ public FracExp(double fraction, int exponent) {
+ this.fraction = fraction;
+ this.exponent = exponent;
+ }
+
+ public double getFraction() { return fraction; }
+ public int getExponent() { return exponent; }
+ }
+
+ private static final double two54 = 1.80143985094819840000e+16; /* 43500000 00000000 */
+ private static final double twom54 = 5.55111512312578270212e-17; /* 0x3C900000 0x00000000 */
+ private static final double huge = 1.0e+300;
+ private static final double tiny = 1.0e-300;
+
+ private static int hi(double x) {
+ long bits = Double.doubleToRawLongBits(x);
+ return (int) (bits >>> 32);
+ }
+
+ private static int lo(double x) {
+ long bits = Double.doubleToRawLongBits(x);
+ return (int) bits;
+ }
+
+ private static double fromhilo(int hi, int lo) {
+ return Double.longBitsToDouble((((long) hi) << 32) |
+ (((long) lo) & 0xFFFFFFFFL));
+ }
+
+ private static FracExp frexp(double x) {
+ int hx = hi(x);
+ int ix = 0x7fffffff&hx;
+ int lx = lo(x);
+ int e = 0;
+ if(ix>=0x7ff00000||((ix|lx)==0))
+ return new FracExp(x, e); /* 0,inf,nan */
+ if (ix<0x00100000) { /* subnormal */
+ x *= two54;
+ hx = hi(x);
+ ix = hx&0x7fffffff;
+ e = -54;
+ }
+ e += (ix>>20)-1022;
+ hx = (hx&0x800fffff)|0x3fe00000;
+ lx = lo(x);
+ return new FracExp(fromhilo(hx, lx), e);
+ }
+
+ private static boolean finite(double x) {
+ int hx;
+ hx = hi(x);
+ return (((hx&0x7fffffff)-0x7ff00000)>>31) != 0;
+ }
+
+ /**
+ * copysign(double x, double y) <BR>
+ * copysign(x,y) returns a value with the magnitude of x and
+ * with the sign bit of y.
+ */
+ private static double copysign(double x, double y) {
+ return fromhilo((hi(x)&0x7fffffff)|(hi(y)&0x80000000), lo(x));
+ }
+
+ /**
+ * scalbn (double x, int n) <BR>
+ * scalbn(x,n) returns x* 2**n computed by exponent
+ * manipulation rather than by actually performing an
+ * exponentiation or a multiplication.
+ */
+ private static double scalbn(double x, int n) {
+ int hx = hi(x);
+ int lx = lo(x);
+ int k = (hx&0x7ff00000)>>20; /* extract exponent */
+ if (k==0) { /* 0 or subnormal x */
+ if ((lx|(hx&0x7fffffff))==0) {
+ return x; /* +-0 */
+ }
+ x *= two54;
+ hx = hi(x);
+ k = ((hx&0x7ff00000)>>20) - 54;
+ if (n< -50000) {
+ return tiny*x; /*underflow*/
+ }
+ }
+ if (k==0x7ff) {
+ return x+x; /* NaN or Inf */
+ }
+ k = k+n;
+ if (k > 0x7fe) {
+ return huge*copysign(huge,x); /* overflow */
+ }
+ if (k > 0) {
+ /* normal result */
+ return fromhilo((hx&0x800fffff)|(k<<20), lo(x));
+ }
+ if (k <= -54) {
+ if (n > 50000) {
+ /* in case integer overflow in n+k */
+ return huge*copysign(huge,x); /* overflow */
+ } else {
+ return tiny*copysign(tiny,x); /* underflow */
+ }
+ }
+ k += 54; /* subnormal result */
+ x = fromhilo((hx&0x800fffff)|(k<<20), lo(x));
+ return x*twom54;
+ }
+
+ //----------------------------------------------------------------------
+ // Test harness
+ //
+
+ public static void main(String[] args) {
+ for (int i = 0; i < args.length; i++) {
+ try {
+ DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(args[i])));
+ Header header = RGBE.readHeader(in);
+ System.err.println("Header for file \"" + args[i] + "\":");
+ System.err.println(" " + header);
+ byte[] data = new byte[header.getWidth() * header.getHeight() * 4];
+ readPixelsRawRLE(in, data, 0, header.getWidth(), header.getHeight());
+ in.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+}
diff --git a/src/demos/hdr/readme.txt b/src/demos/hdr/readme.txt
new file mode 100755
index 0000000..ebc5a32
--- /dev/null
+++ b/src/demos/hdr/readme.txt
@@ -0,0 +1,3 @@
+Run with e.g.
+
+java -Dsun.java2d.noddraw=true demos.hdr.HDR demos/data/images/stpeters_cross.hdr 512 384 2 7 3 demos/data/models/teapot.obj
diff --git a/src/demos/hdr/shaders/arbfp1/object.arbfp1 b/src/demos/hdr/shaders/arbfp1/object.arbfp1
new file mode 100755
index 0000000..30ee986
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/object.arbfp1
@@ -0,0 +1,41 @@
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ../cg/object.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.envMap : TEXUNIT0
+#var float4 In.HPosition : : : 0 : 0
+#var float4 In.P : : : 0 : 0
+#var float3 In.N : $vin.TEX1 : TEX1 : 0 : 1
+#var float3 In.I : $vin.TEX2 : TEX2 : 0 : 1
+#var samplerCUBE envMap : TEXUNIT0 : texunit 0 : 1 : 1
+#var half4 main : $vout.COL : COL : -1 : 1
+#const c[0] = 2 1 0 5
+#const c[1] = 0.9799805 0.02000427
+PARAM c[2] = { { 2, 1, 0, 5 },
+ { 0.97998047, 0.020004272 } };
+TEMP R0;
+TEMP R1;
+DP3 R0.y, fragment.texcoord[2], fragment.texcoord[2];
+RSQ R0.w, R0.y;
+DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1];
+RSQ R0.x, R0.x;
+MUL R1.xyz, R0.w, fragment.texcoord[2];
+MUL R0.xyz, R0.x, fragment.texcoord[1];
+DP3 R0.w, -R1, R0;
+ADD R0.w, -R0, c[0].y;
+DP3 R1.w, R0, R1;
+MAX R0.w, R0, c[0].z;
+MUL R0.xyz, R0, R1.w;
+POW R0.w, R0.w, c[0].w;
+MAD R0.xyz, -R0, c[0].x, R1;
+MAD R0.w, R0, c[1].x, c[1].y;
+TEX R0.xyz, R0, texture[0], CUBE;
+MUL result.color.xyz, R0, R0.w;
+MOV result.color.w, c[0].y;
+END
+# 17 instructions, 2 R-regs
diff --git a/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1 b/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1
new file mode 100755
index 0000000..c6d5b55
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/object_hilo.arbfp1
@@ -0,0 +1,45 @@
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ../cg/object_hilo.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.envMap_rg : TEXUNIT0
+#semantic main.envMap_b : TEXUNIT1
+#var float4 In.HPosition : : : 0 : 0
+#var float4 In.P : : : 0 : 0
+#var float3 In.N : $vin.TEX1 : TEX1 : 0 : 1
+#var float3 In.I : $vin.TEX2 : TEX2 : 0 : 1
+#var samplerCUBE envMap_rg : TEXUNIT0 : texunit 0 : 1 : 1
+#var samplerCUBE envMap_b : TEXUNIT1 : texunit 1 : 2 : 1
+#var half4 main : $vout.COL : COL : -1 : 1
+#const c[0] = 2 1 0 5
+#const c[1] = 0.9799805 0.02000427
+PARAM c[2] = { { 2, 1, 0, 5 },
+ { 0.97998047, 0.020004272 } };
+TEMP R0;
+TEMP R1;
+DP3 R0.y, fragment.texcoord[2], fragment.texcoord[2];
+RSQ R0.y, R0.y;
+DP3 R0.x, fragment.texcoord[1], fragment.texcoord[1];
+MUL R1.xyz, R0.y, fragment.texcoord[2];
+RSQ R0.x, R0.x;
+MUL R0.xyz, R0.x, fragment.texcoord[1];
+DP3 R0.w, -R1, R0;
+DP3 R1.w, R0, R1;
+MUL R0.xyz, R0, R1.w;
+MAD R1.xyz, -R0, c[0].x, R1;
+ADD R0.w, -R0, c[0].y;
+MAX R0.y, R0.w, c[0].z;
+TEX R0.x, R1, texture[1], CUBE;
+POW R0.y, R0.y, c[0].w;
+MOV R0.z, R0.x;
+MAD R0.w, R0.y, c[1].x, c[1].y;
+TEX R0.xy, R1, texture[0], CUBE;
+MUL result.color.xyz, R0, R0.w;
+MOV result.color.w, c[0].y;
+END
+# 19 instructions, 2 R-regs
diff --git a/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1 b/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1
new file mode 100755
index 0000000..1f2a6fa
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/object_vp.arbvp1
@@ -0,0 +1,42 @@
+!!ARBvp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbvp1
+# source file: ../cg/object_vp.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbvp1
+#program main
+#semantic main.modelViewProj
+#semantic main.model
+#semantic main.eyePos
+#var float4 In.Position : $vin.POSITION : POSITION : 0 : 1
+#var float4 In.Normal : $vin.NORMAL : NORMAL : 0 : 1
+#var float4x4 modelViewProj : : c[0], 4 : 1 : 1
+#var float4x4 model : : c[4], 4 : 2 : 1
+#var float3 eyePos : : c[8] : 3 : 1
+#var float4 main.HPosition : $vout.HPOS : HPOS : -1 : 1
+#var float4 main.P : $vout.TEX0 : TEX0 : -1 : 1
+#var float3 main.N : $vout.TEX1 : TEX1 : -1 : 1
+#var float3 main.I : $vout.TEX2 : TEX2 : -1 : 1
+PARAM c[9] = { program.local[0..8] };
+TEMP R0;
+TEMP R1;
+DP4 result.position.w, vertex.position, c[3];
+DP4 result.position.z, vertex.position, c[2];
+DP4 result.position.y, vertex.position, c[1];
+DP4 result.position.x, vertex.position, c[0];
+DP4 R0.w, vertex.position, c[7];
+DP4 R0.z, vertex.position, c[6];
+DP4 R0.y, vertex.position, c[5];
+DP3 R1.z, vertex.normal, c[6];
+DP3 R1.y, vertex.normal, c[5];
+DP3 R1.x, vertex.normal, c[4];
+DP4 R0.x, vertex.position, c[4];
+DP3 R1.w, R1, R1;
+ADD result.texcoord[2].xyz, R0, -c[8];
+RSQ R1.w, R1.w;
+MOV result.texcoord[0], R0;
+MUL result.texcoord[1].xyz, R1.w, R1;
+END
+# 16 instructions, 2 R-regs
diff --git a/src/demos/hdr/shaders/arbfp1/recompile.txt b/src/demos/hdr/shaders/arbfp1/recompile.txt
new file mode 100755
index 0000000..48469f3
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/recompile.txt
@@ -0,0 +1,7 @@
+cgc -profile arbfp1 -o object.arbfp1 ../cg/object.cg
+cgc -profile arbfp1 -o object_hilo.arbfp1 ../cg/object_hilo.cg
+cgc -profile arbvp1 -o object_vp.arbvp1 ../cg/object_vp.cg
+cgc -profile arbfp1 -o shrink.arbfp1 ../cg/shrink.cg
+cgc -profile arbfp1 -o skybox.arbfp1 ../cg/skybox.cg
+cgc -profile arbfp1 -o skybox_hilo.arbfp1 ../cg/skybox_hilo.cg
+cgc -profile arbfp1 -o tonemap.arbfp1 ../cg/tonemap.cg
diff --git a/src/demos/hdr/shaders/arbfp1/shrink.arbfp1 b/src/demos/hdr/shaders/arbfp1/shrink.arbfp1
new file mode 100755
index 0000000..ddf7a4b
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/shrink.arbfp1
@@ -0,0 +1,34 @@
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ../cg/shrink.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.sceneTex : TEXUNIT0
+#var float4 In.wpos : : : 0 : 0
+#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1
+#var float3 In.tex1 : : : 0 : 0
+#var float4 In.col0 : : : 0 : 0
+#var samplerRECT sceneTex : TEXUNIT0 : texunit 0 : 1 : 1
+#var half4 main : $vout.COL : COL : -1 : 1
+#const c[0] = 1 0 0.25
+PARAM c[1] = { { 1, 0, 0.25 } };
+TEMP R0;
+TEMP R1;
+TEMP R2;
+ADD R0.xy, fragment.texcoord[0], c[0];
+TEX R1, R0, texture[0], RECT;
+TEX R0, fragment.texcoord[0], texture[0], RECT;
+ADD R2, R0, R1;
+ADD R0.xy, fragment.texcoord[0], c[0].yxzw;
+ADD R1.xy, fragment.texcoord[0], c[0].x;
+TEX R0, R0, texture[0], RECT;
+TEX R1, R1, texture[0], RECT;
+ADD R0, R2, R0;
+ADD R0, R0, R1;
+MUL result.color, R0, c[0].z;
+END
+# 11 instructions, 3 R-regs
diff --git a/src/demos/hdr/shaders/arbfp1/skybox.arbfp1 b/src/demos/hdr/shaders/arbfp1/skybox.arbfp1
new file mode 100755
index 0000000..8d3d9db
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/skybox.arbfp1
@@ -0,0 +1,22 @@
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ../cg/skybox.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.envMap : TEXUNIT0
+#var float4 In.wpos : : : 0 : 0
+#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1
+#var float3 In.tex1 : : : 0 : 0
+#var float4 In.col0 : : : 0 : 0
+#var samplerCUBE envMap : TEXUNIT0 : texunit 0 : 1 : 1
+#var half4 main : $vout.COL : COL : -1 : 1
+#const c[0] = 1
+PARAM c[1] = { { 1 } };
+TEX result.color.xyz, fragment.texcoord[0], texture[0], CUBE;
+MOV result.color.w, c[0].x;
+END
+# 2 instructions, 0 R-regs
diff --git a/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1 b/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1
new file mode 100755
index 0000000..fe0d910
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/skybox_hilo.arbfp1
@@ -0,0 +1,27 @@
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ../cg/skybox_hilo.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.envMap_rg : TEXUNIT0
+#semantic main.envMap_b : TEXUNIT1
+#var float4 In.wpos : : : 0 : 0
+#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1
+#var float3 In.tex1 : : : 0 : 0
+#var float4 In.col0 : : : 0 : 0
+#var samplerCUBE envMap_rg : TEXUNIT0 : texunit 0 : 1 : 1
+#var samplerCUBE envMap_b : TEXUNIT1 : texunit 1 : 2 : 1
+#var half4 main : $vout.COL : COL : -1 : 1
+#const c[0] = 1
+PARAM c[1] = { { 1 } };
+TEMP R0;
+TEX R0.x, fragment.texcoord[0], texture[1], CUBE;
+TEX result.color.xy, fragment.texcoord[0], texture[0], CUBE;
+MOV result.color.z, R0.x;
+MOV result.color.w, c[0].x;
+END
+# 4 instructions, 1 R-regs
diff --git a/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1 b/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1
new file mode 100755
index 0000000..0dd5a5a
--- /dev/null
+++ b/src/demos/hdr/shaders/arbfp1/tonemap.arbfp1
@@ -0,0 +1,64 @@
+!!ARBfp1.0
+# cgc version 1.3.0001, build date Aug 4 2004 10:01:10
+# command line args: -profile arbfp1
+# source file: ../cg/tonemap.cg
+# source file: ../cg/hdr.cg
+#vendor NVIDIA Corporation
+#version 1.0.02
+#profile arbfp1
+#program main
+#semantic main.sceneTex : TEXUNIT0
+#semantic main.blurTex : TEXUNIT1
+#semantic main.gammaTex : TEXUNIT2
+#semantic main.vignetteTex : TEXUNIT3
+#semantic main.blurAmount
+#semantic main.windowSize
+#semantic main.exposure
+#var float4 In.wpos : : : 0 : 0
+#var float3 In.tex0 : $vin.TEX0 : TEX0 : 0 : 1
+#var float3 In.tex1 : $vin.TEX1 : TEX1 : 0 : 1
+#var float4 In.col0 : : : 0 : 0
+#var samplerRECT sceneTex : TEXUNIT0 : texunit 0 : 1 : 1
+#var samplerRECT blurTex : TEXUNIT1 : texunit 1 : 2 : 1
+#var sampler1D gammaTex : TEXUNIT2 : texunit 2 : 3 : 1
+#var samplerRECT vignetteTex : TEXUNIT3 : texunit 3 : 4 : 1
+#var float blurAmount : : c[1] : 5 : 1
+#var float4 windowSize : : : 6 : 0
+#var float exposure : : c[2] : 7 : 1
+#var half4 main : $vout.COL : COL : -1 : 1
+#const c[0] = 1 0
+PARAM c[3] = { { 1, 0 },
+ program.local[1..2] };
+TEMP R0;
+TEMP R1;
+TEMP R2;
+TEMP R3;
+TEMP R4;
+ADD R0.xy, fragment.texcoord[1], c[0].yxzw;
+ADD R1.xy, fragment.texcoord[1], c[0].x;
+TEX R1.xyz, R1, texture[1], RECT;
+TEX R0.xyz, R0, texture[1], RECT;
+ADD R3.xyz, R1, -R0;
+FRC R4.xy, fragment.texcoord[1];
+ADD R1.xy, fragment.texcoord[1], c[0];
+TEX R2.xyz, fragment.texcoord[1], texture[1], RECT;
+TEX R1.xyz, R1, texture[1], RECT;
+ADD R1.xyz, R1, -R2;
+MAD R1.xyz, R4.x, R1, R2;
+MAD R0.xyz, R4.x, R3, R0;
+ADD R2.xyz, R0, -R1;
+TEX R0.xyz, fragment.texcoord[0], texture[0], RECT;
+MAD R1.xyz, R4.y, R2, R1;
+ADD R1.xyz, R1, -R0;
+MAD R1.xyz, R1, c[1].x, R0;
+MUL R1.xyz, R1, c[2].x;
+TEX R0.xyz, fragment.texcoord[0], texture[3], RECT;
+MUL R0.xyz, R1, R0;
+TEX result.color.x, R0, texture[2], 1D;
+TEX R0.x, R0.y, texture[2], 1D;
+TEX R1.x, R0.z, texture[2], 1D;
+MOV result.color.y, R0.x;
+MOV result.color.z, R1.x;
+MOV result.color.w, c[0].x;
+END
+# 26 instructions, 5 R-regs
diff --git a/src/demos/hdr/shaders/cg/hdr.cg b/src/demos/hdr/shaders/cg/hdr.cg
new file mode 100755
index 0000000..3a0cafd
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/hdr.cg
@@ -0,0 +1,130 @@
+/*
+ Cg functions to decode and filter textures in Radiance (RGBE) high dynamic range format
+ sgg 2/15/02
+
+ http://www.graphics.cornell.edu/~bjw/rgbe.html
+*/
+
+#if 0
+typedef float4 vec4;
+typedef float3 vec3;
+typedef float2 vec2;
+typedef float real;
+#define texRECT f4texRECT
+#define texCUBE f4texCUBE
+#else
+typedef half4 vec4;
+typedef half3 vec3;
+typedef half2 vec2;
+typedef half real;
+#define texRECT h4texRECT
+#define texCUBE h4texCUBE
+#endif
+
+struct fragin
+{
+ float4 wpos : WPOS;
+ float3 tex0 : TEXCOORD0;
+ float3 tex1 : TEXCOORD1;
+ float4 col0 : COLOR0;
+};
+
+// Lookup in RGBE-encoded rectangle texture
+vec3 texRECT_RGBE(uniform samplerRECT tex, float2 t)
+{
+ vec4 rgbe = texRECT(tex, t);
+ real e = (rgbe[3] * 255) - 128;
+ return rgbe.xyz * exp2(e);
+}
+
+// Lookup in RGBE-encoded cube map texture
+vec3 texCUBE_RGBE(uniform samplerCUBE tex, float3 t)
+{
+ vec4 rgbe = texCUBE(tex, t);
+ real e = (rgbe[3] * 255) - 128;
+ return rgbe.xyz * exp2(e);
+}
+
+// Lookup in RGBE-encoded rectangle texture with filtering
+vec3 texRECT_RGBE_Bilinear(uniform samplerRECT tex, half2 t)
+{
+ float2 f = frac(t);
+ vec3 t0 = texRECT_RGBE(tex, t);
+ vec3 t1 = texRECT_RGBE(tex, t + half2(1,0) );
+ vec3 t2 = lerp(t0, t1, f[0]);
+ t0 = texRECT_RGBE(tex, t + half2(0,1) );
+ t1 = texRECT_RGBE(tex, t + half2(1,1) );
+ t0 = lerp(t0, t1, f[0]);
+ t0 = lerp(t2, t0, f[1]);
+ return t0;
+}
+
+// Lookup in cubemap encoded as two HILO cube maps
+vec3 texCUBE_hilo(uniform samplerCUBE rg_tex : TEXUNIT0, uniform samplerCUBE b_tex : TEXUNIT1, float3 t)
+{
+ vec3 c;
+ c.xy = texCUBE(rg_tex, t).xy;
+ c.z = texCUBE(b_tex, t).x;
+// c = c * c;
+ return c;
+}
+
+// Lookup in rectangle texture encoded as two HILO cube maps
+vec3 texRECT_hilo(uniform samplerRECT rg_tex : TEXUNIT0, uniform samplerRECT b_tex : TEXUNIT1, float2 t)
+{
+ vec3 c;
+ c.xy = texRECT(rg_tex, t).xy;
+ c.z = texRECT(b_tex, t).x;
+ return c;
+}
+
+// bilinear lookup in float texture
+vec4 texRECT_bilinear(uniform samplerRECT tex, half2 t)
+{
+ float2 f = frac(t);
+ vec4 t0 = texRECT(tex, t);
+ vec4 t1 = texRECT(tex, t + half2(1,0) );
+ vec4 t2 = lerp(t0, t1, f[0]);
+ t0 = texRECT(tex, t + half2(0,1) );
+ t1 = texRECT(tex, t + half2(1,1) );
+ t0 = lerp(t0, t1, f[0]);
+ t0 = lerp(t2, t0, f[1]);
+ return t0;
+}
+
+// applying vignetting based on window coordinates
+void vignette(inout float3 c, float4 wpos, const float2 win_bias, const float2 win_scale)
+{
+ // convert window coord to [-1, 1] range
+ wpos.xy = (wpos.xy - win_bias) * win_scale;
+ // calculate distance from origin
+ float r = length(wpos.xy);
+ r = 1.0 - smoothstep(0.8, 1.5, r);
+ c = c * r;
+}
+
+// refraction function from Renderman spec
+// I = incident direction, N = normal, eta = relative index of refraction
+half3 my_refract(half3 I, half3 N, half eta)
+{
+ half IdotN = dot(I,N);
+ half k = 1 - eta*eta*(1 - IdotN*IdotN);
+
+ return eta*I - (eta*IdotN + sqrt(k))*N;
+}
+
+// fresnel approximation
+half my_fresnel(half3 I, half3 N, half power, half scale, half bias)
+{
+ return bias + (pow(max(0.0, 1.0 - dot(I, N)), power) * scale);
+}
+
+// transform a direction vector by a 4x4 matrix
+float3 transform_dir(float4x4 m, float3 v)
+{
+ float3 o;
+ o.x = dot(v, m._11_12_13);
+ o.y = dot(v, m._21_22_23);
+ o.z = dot(v, m._31_32_33);
+ return o;
+}
diff --git a/src/demos/hdr/shaders/cg/object.cg b/src/demos/hdr/shaders/cg/object.cg
new file mode 100755
index 0000000..a242bc6
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/object.cg
@@ -0,0 +1,30 @@
+// object shader
+
+#include "hdr.cg"
+
+struct v2f
+{
+ float4 HPosition : POSITION;
+ float4 P : TEXCOORD0; // position
+ float3 N : TEXCOORD1; // normal
+ float3 I : TEXCOORD2; // incident vector
+};
+
+half4 main(v2f In,
+ uniform samplerCUBE envMap : TEXUNIT0) : COLOR
+{
+ half3 I = normalize(half3(In.I));
+ half3 N = normalize(half3(In.N));
+
+ half3 R = reflect(I, N);
+// half3 T = refract(I, N, 0.9);
+ half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02);
+
+ half3 Creflect = texCUBE(envMap, R).rgb; // lookup reflection in HDR cube map
+// half3 Crefract = texCUBE(envMap, T).rgb; // refraction
+
+// half3 Cout = lerp(Crefract, Creflect, fresnel);
+// return half4(Cout, fresnel*0.5 + 0.5);
+
+ return half4(Creflect * fresnel, 1.0);
+}
diff --git a/src/demos/hdr/shaders/cg/object_hilo.cg b/src/demos/hdr/shaders/cg/object_hilo.cg
new file mode 100755
index 0000000..88a3348
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/object_hilo.cg
@@ -0,0 +1,31 @@
+// object shader
+
+#include "hdr.cg"
+
+struct v2f
+{
+ float4 HPosition : POSITION;
+ float4 P : TEXCOORD0; // position
+ float3 N : TEXCOORD1; // normal
+ float3 I : TEXCOORD2; // incident vector
+};
+
+half4 main(v2f In,
+ uniform samplerCUBE envMap_rg : TEXUNIT0,
+ uniform samplerCUBE envMap_b : TEXUNIT1) : COLOR
+{
+ half3 I = normalize(half3(In.I));
+ half3 N = normalize(half3(In.N));
+
+ half3 R = reflect(I, N);
+// half3 T = refract(I, N, 0.9);
+ half fresnel = my_fresnel(-I, N, 5.0, 0.98, 0.02);
+
+ half3 Creflect = texCUBE_hilo(envMap_rg, envMap_b, R).rgb; // lookup reflection in HDR cube map
+// half3 Crefract = texCUBE_hilo(envMap_rg, envMap_b, T).rgb; // refraction
+
+// half3 Cout = lerp(Crefract, Creflect, fresnel);
+// return half4(Cout, 1.0);
+
+ return half4(Creflect * fresnel, 1.0);
+}
diff --git a/src/demos/hdr/shaders/cg/object_vp.cg b/src/demos/hdr/shaders/cg/object_vp.cg
new file mode 100755
index 0000000..895dc28
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/object_vp.cg
@@ -0,0 +1,43 @@
+#include "hdr.cg"
+
+// application to vertex shader
+struct a2v
+{
+ float4 Position : POSITION;
+ float4 Normal : NORMAL;
+};
+
+// vertex shader to fragment shader
+struct v2f
+{
+ float4 HPosition : POSITION;
+ float4 P : TEXCOORD0; // position
+ float3 N : TEXCOORD1; // normal
+ float3 I : TEXCOORD2; // incident vector
+};
+
+v2f main(a2v In,
+ uniform float4x4 modelViewProj,
+ uniform float4x4 model,
+ uniform float3 eyePos
+ )
+{
+ v2f Out;
+
+ // transform position
+ float4 P = mul(model, In.Position);
+
+ // transform normal
+ float3 N = transform_dir(model, In.Normal.xyz);
+ N = normalize(N);
+
+ // calculate incident vector
+ float3 I = P.xyz - eyePos;
+
+ Out.P = P;
+ Out.N = N;
+ Out.I = I;
+
+ Out.HPosition = mul(modelViewProj, In.Position);
+ return Out;
+}
diff --git a/src/demos/hdr/shaders/cg/shrink.cg b/src/demos/hdr/shaders/cg/shrink.cg
new file mode 100755
index 0000000..7e01947
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/shrink.cg
@@ -0,0 +1,17 @@
+// downsample float image by half
+
+#include "hdr.cg"
+
+half4 main(fragin In,
+ uniform samplerRECT sceneTex : TEXUNIT0
+ ) : COLOR
+{
+ // should calculate texcoords in vertex shader here:
+ half4 c;
+ c = texRECT(sceneTex, In.tex0.xy);
+ c = c + texRECT(sceneTex, In.tex0.xy + float2(1, 0));
+ c = c + texRECT(sceneTex, In.tex0.xy + float2(0, 1));
+ c = c + texRECT(sceneTex, In.tex0.xy + float2(1, 1));
+ c = c * 0.25;
+ return c;
+}
diff --git a/src/demos/hdr/shaders/cg/skybox.cg b/src/demos/hdr/shaders/cg/skybox.cg
new file mode 100755
index 0000000..5ca6e6f
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/skybox.cg
@@ -0,0 +1,8 @@
+#include "hdr.cg"
+
+half4 main(fragin In,
+ uniform samplerCUBE envMap : TEXUNIT0) : COLOR
+{
+ half3 c = texCUBE(envMap, In.tex0).rgb;
+ return half4(c, 1.0);
+}
diff --git a/src/demos/hdr/shaders/cg/skybox_hilo.cg b/src/demos/hdr/shaders/cg/skybox_hilo.cg
new file mode 100755
index 0000000..d7392bf
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/skybox_hilo.cg
@@ -0,0 +1,9 @@
+#include "hdr.cg"
+
+half4 main(fragin In,
+ uniform samplerCUBE envMap_rg : TEXUNIT0,
+ uniform samplerCUBE envMap_b : TEXUNIT1) : COLOR
+{
+ half3 c = texCUBE_hilo(envMap_rg, envMap_b, In.tex0).rgb;
+ return half4(c, 1.0);
+}
diff --git a/src/demos/hdr/shaders/cg/tonemap.cg b/src/demos/hdr/shaders/cg/tonemap.cg
new file mode 100755
index 0000000..c3d218f
--- /dev/null
+++ b/src/demos/hdr/shaders/cg/tonemap.cg
@@ -0,0 +1,37 @@
+// Tone mapping pass
+
+#include "hdr.cg"
+
+half4 main(fragin In,
+ uniform samplerRECT sceneTex : TEXUNIT0,
+ uniform samplerRECT blurTex : TEXUNIT1,
+ uniform sampler1D gammaTex : TEXUNIT2,
+ uniform samplerRECT vignetteTex : TEXUNIT3,
+ uniform float blurAmount,
+ uniform float4 windowSize,
+ uniform float exposure
+ ) : COLOR
+{
+ // sum original and blurred image
+ half3 c = lerp(texRECT(sceneTex, In.tex0.xy), texRECT_bilinear(blurTex, In.tex1.xy), blurAmount).xyz;
+
+ // exposure
+ c = c * half(exposure);
+
+ // vignette effect (makes brightness drop off with distance from center)
+// vignette(c, In.wpos, windowSize.xy, windowSize.zw);
+ c = c * texRECT(vignetteTex, In.tex0.xy).rgb;
+
+ // gamma correction
+#if 0
+ // use math
+ c = pow(c, 1.0 / 2.2);
+#else
+ // use lut
+ c.r = h1tex1D(gammaTex, c.r);
+ c.g = h1tex1D(gammaTex, c.g);
+ c.b = h1tex1D(gammaTex, c.b);
+#endif
+
+ return half4(c, 1.0);
+}