From 466115060ac3d26f3a8af3f924d1fe8fb7c674de Mon Sep 17 00:00:00 2001 From: CJSatnarine Date: Thu, 27 Feb 2025 18:53:37 -0500 Subject: [PATCH] obj thingy works --- dist/assets/head-DD9xLfml.obj | 6357 +++++++++++++++++ .../{index-DLCEVn4m.js => index-Co9VroNa.js} | 352 +- dist/index.html | 4 +- index.html | 2 +- main.js | 36 +- package.json | 14 +- 6 files changed, 6568 insertions(+), 197 deletions(-) create mode 100644 dist/assets/head-DD9xLfml.obj rename dist/assets/{index-DLCEVn4m.js => index-Co9VroNa.js} (56%) diff --git a/dist/assets/head-DD9xLfml.obj b/dist/assets/head-DD9xLfml.obj new file mode 100644 index 0000000..9f900f6 --- /dev/null +++ b/dist/assets/head-DD9xLfml.obj @@ -0,0 +1,6357 @@ +v -0.000581696 -0.734665 -0.623267 +v 0.000283538 -1 0.286843 +v -0.117277 -0.973564 0.306907 +v -0.382144 -0.890788 0.221243 +v -0.247144 -0.942602 0.276051 +v -0.656078 -0.718512 -0.109025 +v -0.609847 -0.786562 0.0198068 +v -0.66248 -0.632053 -0.244271 +v -0.511812 -0.845392 0.127809 +v -0.609326 -0.569868 -0.41571 +v -0.426949 -0.649767 -0.567143 +v -0.201076 -0.720822 -0.633205 +v 0.117382 -0.973645 0.306766 +v 0.382454 -0.890869 0.221097 +v 0.247512 -0.942667 0.275986 +v 0.656371 -0.718624 -0.109224 +v 0.610273 -0.786562 0.0197893 +v 0.66248 -0.631463 -0.244119 +v 0.511631 -0.845357 0.127832 +v 0.608654 -0.568839 -0.416318 +v 0.424663 -0.649937 -0.567418 +v 0.198972 -0.720968 -0.633141 +v 0.153371 -0.140519 0.477416 +v 0.134781 -0.14723 0.48805 +v 0.131261 -0.132153 0.49872 +v 0.14749 -0.135105 0.489565 +v 0.000686924 -0.0534984 0.505694 +v 0.075062 -0.0473306 0.49955 +v 0.0695841 -0.0997942 0.550277 +v 0.0302569 -0.0971868 0.55389 +v 0.0745124 -0.135953 0.523215 +v 0.0354892 -0.12785 0.535159 +v 0.0389268 -0.109557 0.550558 +v 0.0734835 -0.11538 0.538029 +v 0.106386 -0.125623 0.51513 +v 0.107415 -0.144295 0.5047 +v 0.15968 -0.130861 0.484794 +v 0.156224 -0.123705 0.486735 +v 0.15792 -0.107798 0.4677 +v 0.163784 -0.126996 0.470144 +v 0.154687 -0.134655 0.486373 +v 0.160668 -0.135649 0.476189 +v 0.143433 -0.119034 0.499854 +v 0.131606 -0.0726738 0.476148 +v -0.000260156 -0.124553 0.539058 +v -0.000646004 -0.110651 0.55444 +v 0.100423 -0.10574 0.537643 +v 0.126128 -0.115784 0.515598 +v 0.250944 -0.275583 0.380381 +v 0.221602 -0.335752 0.330174 +v 0.275434 -0.301318 0.24751 +v 0.307699 -0.239869 0.292356 +v 0.332124 -0.0415605 0.412962 +v 0.319444 0.00732526 0.451091 +v 0.28667 -0.025805 0.481549 +v 0.297006 -0.0758717 0.454242 +v 0.357953 -0.159928 -0.223225 +v 0.303981 -0.144611 -0.343644 +v 0.296386 -0.0547553 -0.357792 +v 0.357339 -0.0633433 -0.24278 +v 0.45086 0.331215 0.047962 +v 0.438899 0.336167 0.131147 +v 0.447405 0.226107 0.139349 +v 0.455613 0.205353 0.0827643 +v 0.197493 -0.411308 0.138256 +v 0.204911 -0.353378 0.2082 +v 0.102001 -0.419375 0.24969 +v 0.0995867 -0.475697 0.20834 +v 0.150133 -0.372261 0.431226 +v 0.176423 -0.362054 0.392056 +v 0.196019 -0.326474 0.426929 +v 0.154611 -0.348549 0.463444 +v 0.0892273 -0.391968 0.303592 +v 0.159013 -0.363737 0.305077 +v 0.455712 0.508986 -0.0641442 +v 0.432146 0.648411 -0.0417475 +v 0.417051 0.611568 0.0817295 +v 0.44205 0.483438 0.0478626 +v 0.3446 0.43288 0.398633 +v 0.372358 0.383369 0.353998 +v 0.388341 0.404485 0.306953 +v 0.355059 0.467372 0.356967 +v 0.305162 0.338815 0.458112 +v 0.298579 0.319803 0.456627 +v 0.313422 0.304568 0.427776 +v 0.323711 0.315968 0.429291 +v 0.33161 0.397557 0.430226 +v 0.354427 0.359727 0.390478 +v 0.304162 0.291952 0.432377 +v 0.292662 0.309771 0.452991 +v 0.282934 0.292496 0.4562 +v 0.292025 0.281663 0.435178 +v 0.397344 0.565249 0.192585 +v 0.42257 0.455996 0.145494 +v 0.317848 0.364866 0.448834 +v 0.340595 0.337517 0.417978 +v 0.243227 0.479439 0.494236 +v 0.250155 0.546138 0.465934 +v 0.179019 0.560251 0.511681 +v 0.170173 0.4781 0.536229 +v 0.162386 0.410407 0.547009 +v 0.235031 0.427051 0.517018 +v 0.271745 0.634415 0.42162 +v 0.196896 0.657291 0.472505 +v 0.186589 0.312952 0.511073 +v 0.189518 0.32493 0.514165 +v 0.146286 0.31277 0.509009 +v 0.144959 0.300178 0.501713 +v 0.143965 0.300412 0.49409 +v 0.187203 0.310596 0.506407 +v 0.157744 0.364614 0.528804 +v 0.216697 0.382527 0.516083 +v 0.194441 0.332425 0.515989 +v 0.204286 0.349818 0.516732 +v 0.156254 0.334062 0.519579 +v 0.151565 0.320341 0.513961 +v 0.0431068 0.071791 0.618005 +v 0.0477954 0.0867105 0.593486 +v 0.0780844 0.0816652 0.602518 +v 0.0574124 0.0746147 0.621185 +v 0.448253 0.130656 0.149533 +v 0.431801 0.159355 0.215905 +v 0.422792 0.0771637 0.237185 +v 0.428691 0.0348783 0.166914 +v 0.365073 -0.0526507 0.316126 +v 0.326974 -0.104793 0.373068 +v 0.312773 -0.172965 0.33446 +v 0.368107 -0.126698 0.269222 +v 0.203695 -0.131796 0.523934 +v 0.180463 -0.136479 0.525396 +v 0.182848 -0.14892 0.516989 +v 0.204163 -0.152533 0.514914 +v 0.39379 0.00616771 0.269368 +v 0.40177 -0.0591341 0.209048 +v 0.26083 -0.0996422 0.484274 +v 0.250406 -0.0552171 0.50321 +v 0.15851 -0.136292 0.498474 +v 0.155032 -0.134684 0.502964 +v 0.145006 -0.133819 0.514504 +v 0.171033 -0.12032 0.538263 +v 0.158849 -0.127938 0.534943 +v 0.167969 -0.138075 0.523788 +v 0.232061 -0.151474 0.497024 +v 0.23074 -0.117128 0.507191 +v 0.365798 0.221617 0.362743 +v 0.342501 0.235507 0.392185 +v 0.325951 0.202558 0.415114 +v 0.359268 0.178677 0.383229 +v 0.352369 0.0489033 0.417452 +v 0.322262 0.0907619 0.44953 +v 0.295322 0.04895 0.483251 +v 0.367108 0.00328555 0.369771 +v 0.138972 -0.18796 0.555521 +v 0.161562 -0.177794 0.535913 +v 0.154015 -0.155093 0.536392 +v 0.136131 -0.156414 0.558491 +v 0.220263 -0.08194 0.518603 +v 0.202088 -0.0486753 0.52791 +v 0.17564 -0.0814314 0.545822 +v 0.193131 -0.106435 0.533575 +v 0.199492 -0.169714 0.509722 +v 0.190033 -0.188183 0.514668 +v 0.207302 -0.213011 0.492721 +v 0.222415 -0.183044 0.489617 +v 0.125088 -0.132884 0.551294 +v 0.144497 -0.139192 0.530254 +v 0.135014 0.119128 0.544717 +v 0.119534 0.149685 0.554253 +v 0.096915 0.171211 0.569382 +v 0.112553 0.137432 0.569616 +v 0.0878476 0.217858 0.555667 +v 0.0649773 0.232128 0.568628 +v 0.073466 0.185119 0.584571 +v 0.116359 0.191199 0.548932 +v 0.111419 0.228591 0.524951 +v 0.0858774 0.255408 0.530312 +v 0.301408 0.0368718 -0.387812 +v 0.366839 0.037626 -0.269538 +v 0.272125 -0.199781 0.399533 +v 0.246349 -0.195514 0.453266 +v 0.223339 -0.243049 0.450553 +v 0.364021 -0.197455 0.21335 +v 0.411416 -0.124798 0.140589 +v 0.431568 -0.0028997 0.0907502 +v 0.449346 0.11075 0.0889086 +v 0.0649948 0.777167 0.432594 +v 0.133465 0.770619 0.418569 +v 0.14341 0.869244 0.301253 +v 0.0689586 0.877043 0.315395 +v 0.305372 0.809321 0.22043 +v 0.289307 0.723856 0.335524 +v 0.355187 0.660735 0.264773 +v 0.372264 0.728258 0.148528 +v 0.382308 0.7766 0.0116631 +v 0.0971488 0.470588 0.557912 +v 0.110788 0.565185 0.534317 +v 0.100113 0.277828 0.510938 +v 0.10966 0.248679 0.503771 +v 0.0443988 0.240822 0.58581 +v 0.0522151 0.193614 0.604337 +v 0.052601 0.564735 0.541859 +v 0.123726 0.667896 0.498907 +v 0.0597976 0.671147 0.508711 +v 0.0466729 0.466215 0.561034 +v 0.000423846 0.462807 0.558988 +v -0.00017831 0.388326 0.563478 +v 0.0352086 0.389069 0.560584 +v 0.000833078 0.56384 0.544139 +v 0.295773 0.426823 0.470722 +v 0.301706 0.464689 0.451056 +v 0.189957 0.181465 0.501181 +v 0.186163 0.208931 0.491956 +v 0.141574 0.222722 0.500509 +v 0.146526 0.195338 0.518293 +v 0.111986 0.0116865 0.562811 +v 0.111343 0.0404672 0.565769 +v 0.0577164 0.0420398 0.577988 +v 0.0656438 -0.00796249 0.596918 +v 0.147695 0.0440509 0.537258 +v 0.144778 0.0631738 0.538491 +v 0.0268719 -0.0140834 0.602378 +v 0.0270356 -0.0372401 0.622027 +v 0.0876429 -0.0456996 0.601127 +v 0.183093 0.146552 0.519439 +v 0.148589 0.164593 0.536819 +v 0.147344 0.131095 0.542934 +v 0.176733 0.112264 0.532435 +v -0.000394618 -0.0441035 0.617625 +v -0.000260156 -0.0187662 0.600677 +v 0.165058 0.0770935 0.530856 +v 0.148554 0.0982976 0.535562 +v 0.116476 0.272829 0.494797 +v 0.119084 0.26261 0.493569 +v 0.120873 0.268971 0.480883 +v 0.11761 0.27287 0.484221 +v 0.224695 0.848444 0.271198 +v 0.231324 0.918189 0.121063 +v 0.14614 0.9439 0.150241 +v 0.241894 0.945736 -0.185803 +v 0.156043 0.976475 -0.183418 +v 0.146906 0.980702 -0.0177607 +v 0.23195 0.948285 -0.0402158 +v 0.0684324 0.995189 -0.00981573 +v 0.0682103 0.955014 0.162933 +v 0.0891571 0.383649 0.555118 +v 0.110613 0.336412 0.528863 +v 0.122749 0.310759 0.512914 +v 0.147081 -0.111919 0.55631 +v 0.158656 -0.0994551 0.55786 +v 0.0939743 0.0869969 0.616333 +v 0.101206 0.119326 0.615532 +v 0.0670469 0.122121 0.645885 +v 0.0560853 0.0831385 0.640601 +v 0.0795284 0.0820978 0.567845 +v 0.0337354 0.0564741 0.595059 +v 0.0854448 -0.103577 0.606979 +v 0.0826211 -0.0671141 0.612931 +v 0.0280704 -0.0555854 0.637736 +v 0.0319698 -0.0970874 0.628212 +v 0.0789964 -0.121811 0.579602 +v 0.0327415 -0.116959 0.594106 +v 0.0216981 0.0173339 0.585915 +v -0.00123062 -0.095585 0.625704 +v -0.000511542 -0.0598999 0.637227 +v -0.00157555 -0.115643 0.593966 +v -0.000219233 -0.0988881 0.554498 +v 0.0291929 0.0853015 0.665324 +v 0.0352671 0.124524 0.666125 +v 0.0371846 0.159004 0.648446 +v 0.0654158 0.154462 0.629171 +v 0.0280178 0.19967 0.620548 +v 0.0221015 0.245843 0.59797 +v 0.0432997 0.281499 0.556866 +v 0.0222008 0.28717 0.567459 +v -0.000400465 0.125745 0.673871 +v -0.00057585 0.0822265 0.675105 +v -0.000347849 0.160916 0.656029 +v 0.367195 0.315074 0.363767 +v 0.346658 0.302744 0.393991 +v 0.344389 0.266656 0.384439 +v 0.371726 0.266504 0.352507 +v 0.40246 0.429197 0.234116 +v 0.422126 0.335763 0.207276 +v 0.393316 0.264083 0.313887 +v 0.387102 0.325737 0.325369 +v 0.3274 0.295928 0.408636 +v 0.316392 0.29076 0.418709 +v 0.3085 0.274624 0.423199 +v 0.323636 0.272379 0.406602 +v 0.429381 0.244458 0.204002 +v 0.407084 0.332408 0.277313 +v 0.410597 0.257869 0.266264 +v -0.0012657 -0.456867 0.290093 +v -0.00137093 -0.520579 0.266159 +v 0.154137 -0.304206 0.500479 +v 0.193482 -0.282873 0.473493 +v 0.186367 -0.242201 0.509588 +v 0.148993 -0.26399 0.525367 +v 0.110332 -0.274916 0.545857 +v 0.099347 -0.233134 0.560204 +v 0.0558865 -0.227615 0.569605 +v 0.0659185 -0.270006 0.563817 +v 0.154687 -0.142577 0.51838 +v 0.159498 -0.143009 0.513072 +v 0.154646 -0.138239 0.502496 +v 0.149045 -0.137596 0.50639 +v 0.15958 -0.138174 0.517463 +v 0.161574 -0.141559 0.511657 +v 0.0940387 -0.129288 0.582226 +v 0.109215 -0.12609 0.531844 +v 0.0782715 -0.117578 0.557129 +v 0.264817 0.0151299 0.501573 +v 0.280122 0.127096 0.47057 +v 0.262508 0.0886748 0.494464 +v 0.187613 0.050926 0.529248 +v 0.207829 0.0868157 0.523449 +v 0.231821 -0.0170182 0.518246 +v 0.304138 0.164985 0.443485 +v 0.343004 0.132813 0.418235 +v 0.313621 0.250742 0.418382 +v 0.290815 0.22492 0.444303 +v 0.355269 -0.194146 0.0276407 +v 0.388534 -0.179618 0.0746089 +v 0.336544 -0.25083 0.156379 +v 0.29365 -0.279868 0.104617 +v 0.389288 0.153006 0.345258 +v 0.39155 0.205715 0.320166 +v 0.127262 0.566927 -0.64996 +v 0.000868155 0.562946 -0.661419 +v 0.000850617 0.724441 -0.605705 +v 0.118774 0.725955 -0.596105 +v 0.21095 0.754513 0.387525 +v 0.133734 -0.133188 0.514651 +v 0.131302 -0.13393 0.53047 +v 0.0671053 -0.326445 0.551902 +v 0.0661056 -0.374553 0.504765 +v 0.117289 -0.365439 0.489939 +v 0.116552 -0.318792 0.528974 +v 0.288249 -0.135286 0.424736 +v 0.39393 0.0544045 0.33225 +v 0.374655 0.0965379 0.38044 +v 0.000792155 1 -0.0074948 +v 0.0731795 0.993937 -0.182792 +v 0.000868155 0.999152 -0.181886 +v 0.179405 0.936399 -0.330549 +v 0.0842755 0.953459 -0.338026 +v 0.141767 0.271455 0.486238 +v 0.139978 0.267433 0.490862 +v 0.175908 0.259465 0.501362 +v 0.175312 0.263359 0.495861 +v 0.181597 0.230187 0.495539 +v 0.140253 0.240576 0.495341 +v 0.336982 0.587763 0.356927 +v 0.312043 0.518258 0.416183 +v 0.259971 0.350203 0.495411 +v 0.250763 0.331028 0.496036 +v 0.114179 0.255893 0.495902 +v 0.111069 0.276518 0.499456 +v 0.125433 0.293116 0.500415 +v 0.124965 0.282353 0.489968 +v 0.13906 0.254928 0.497457 +v 0.17737 0.2462 0.50062 +v 0.121796 0.272327 0.47658 +v 0.149548 0.0847578 0.549377 +v 0.142825 -0.226381 0.544992 +v 0.106181 -0.197232 0.576871 +v 0.258193 -0.146669 0.465227 +v 0.2105 0.0188071 0.525711 +v 0.181041 -0.0155508 0.531721 +v 0.173453 -0.168949 0.5218 +v 0.180322 -0.15877 0.514949 +v 0.168554 -0.150118 0.516667 +v 0.163082 -0.153579 0.523344 +v 0.139124 -0.128733 0.545343 +v 0.152348 -0.134468 0.527471 +v 0.416192 -0.0714636 0.0335278 +v 0.0220956 0.0520719 0.640232 +v 0.0361615 0.0619695 0.628476 +v -0.000283541 0.202056 0.62768 +v 0.0869063 -0.0493125 -0.489641 +v 0.192289 -0.0534399 -0.447186 +v 0.192003 -0.134672 -0.429197 +v 0.0851642 -0.130335 -0.46373 +v 0.236434 0.310245 0.495686 +v 0.237714 0.31211 0.497539 +v 0.244636 0.32534 0.496212 +v 0.121253 0.281932 0.477293 +v 0.173149 -0.207241 0.528208 +v -0.000242618 0.247989 0.603612 +v -0.00037708 0.28838 0.571697 +v 0.108496 -0.160507 0.588207 +v 0.0613995 -0.166388 0.620127 +v 0.0634222 -0.199565 0.59462 +v 0.0893734 0.151176 0.600127 +v 0.122124 0.0729427 0.596088 +v 0.0993528 0.072475 0.584781 +v 0.108315 0.0599584 0.583916 +v 0.133524 0.0551528 0.575778 +v 0.13315 0.107517 0.580426 +v 0.274937 0.384257 0.485735 +v 0.170606 -0.145383 0.517205 +v 0.0464391 -0.130399 0.611931 +v 0.0392892 -0.113439 0.575094 +v -0.00161647 -0.112428 0.579865 +v -0.00351648 -0.131685 0.617859 +v 0.0194356 0.03489 0.601858 +v -0.000564158 0.0478802 0.644208 +v -2.04632e-05 0.0350303 0.598835 +v 0.222163 0.246884 0.4972 +v 0.217802 0.257547 0.498129 +v 0.293159 0.278716 0.430419 +v 0.302852 0.281932 0.427367 +v 0.285209 0.277366 0.434932 +v 0.289307 0.275834 0.436551 +v 0.290061 0.280494 0.427963 +v -0.000225079 -0.384287 0.444245 +v 0.0651001 -0.383883 0.440585 +v -0.000891543 -0.364076 0.502426 +v 0.116576 -0.381784 0.436341 +v 0.363734 0.712842 -0.467571 +v 0.32166 0.832542 -0.392653 +v 0.376508 0.821429 -0.265451 +v 0.427095 0.698004 -0.319575 +v 0.27178 0.90956 -0.29643 +v 0.310423 0.901357 -0.210644 +v 0.441869 0.677005 -0.175175 +v 0.389019 0.807076 -0.128411 +v 0.313311 0.894506 -0.0788532 +v 0.12783 -0.376125 0.378248 +v 0.0722266 -0.391483 0.37664 +v 0.125579 0.302411 0.505741 +v 0.101656 0.861358 -0.486525 +v 0.214084 0.849981 -0.463327 +v 0.2467 0.723207 -0.559263 +v 0.104913 0.117397 -0.600268 +v 0.221579 0.117865 -0.555159 +v 0.200848 0.0268164 -0.488992 +v 0.0944011 0.0271204 -0.539134 +v 0.391141 0.144178 -0.303545 +v 0.331241 0.130393 -0.444613 +v 0.360829 0.250357 -0.491155 +v 0.424003 0.258021 -0.333419 +v 0.000868155 0.23912 -0.655479 +v 0.00089154 0.393909 -0.675105 +v 0.125626 0.397949 -0.664716 +v 0.115418 0.240453 -0.645617 +v 0.452175 0.547687 -0.348309 +v 0.450217 0.395605 -0.350776 +v 0.383015 0.40193 -0.511868 +v 0.3854 0.562496 -0.506472 +v 0.464078 0.52881 -0.195929 +v 0.311698 0.866351 0.071908 +v -9.64635e-05 -0.406882 0.376985 +v 0.373883 -0.18312 -0.115123 +v 0.389189 -0.0789467 -0.141776 +v 0.247109 0.197607 0.47589 +v 0.22891 0.231497 0.489717 +v 0.121077 -0.116725 0.574393 +v 0.125626 -0.0895459 0.583057 +v 0.110548 -0.128452 0.555428 +v 0.000710309 0.959638 0.167019 +v 0.000710309 0.881206 0.320973 +v 0.224163 0.124079 0.505215 +v 0.255305 0.260798 0.480649 +v 0.25188 0.263516 0.478322 +v 0.214891 0.26119 0.49413 +v 0.116476 0.273741 0.475423 +v 0.290704 0.283902 0.433377 +v 0.29641 0.299523 0.422813 +v 0.29406 0.288222 0.418078 +v 0.142655 0.263364 0.482467 +v 0.121638 0.267831 0.470296 +v 0.171711 0.256898 0.489693 +v 0.246864 0.257401 0.473821 +v 0.274311 0.271648 0.453301 +v 0.274539 0.26862 0.446654 +v 0.233686 0.331104 0.49074 +v 0.187548 0.326632 0.49682 +v 0.296971 0.273928 0.433476 +v 0.134067 -0.0744861 0.577333 +v 0.237434 0.052867 0.514604 +v 0.0637905 0.27076 0.54346 +v 0.375421 0.514218 0.287328 +v 0.353808 -0.333437 -0.190615 +v 0.349365 -0.276331 -0.333858 +v 0.323337 -0.214946 -0.338453 +v 0.356725 -0.247925 -0.205557 +v -0.000330311 -0.581268 0.237302 +v 0.092922 -0.548418 0.185458 +v 0.394783 -0.0876049 -0.0664009 +v 0.358315 -0.197624 -0.02995 +v 0.292785 -0.321493 0.0377429 +v 0.395175 -0.0904345 -0.0143524 +v 0.243385 0.243183 -0.602957 +v 0.000587539 -0.0451091 -0.498205 +v 0.000751232 0.030862 -0.55154 +v 0.000809694 0.11928 -0.61144 +v 0.000850617 0.862837 -0.491295 +v 0.000868155 0.958527 -0.339277 +v 0.000423846 -0.128189 -0.469085 +v 0.264186 0.56961 -0.608026 +v 0.35127 -0.283317 -0.0863656 +v 0.196201 -0.209591 -0.418785 +v 0.0873097 -0.206341 -0.44839 +v 0.000488154 -0.206259 -0.449945 +v 0.263397 0.402579 -0.621226 +v 0.456683 0.384813 -0.0591516 +v 0.457776 0.372302 -0.191281 +v 0.000850617 0.671351 0.512487 +v 0.000809694 0.77919 0.437668 +v 0.408656 0.116286 0.298547 +v 0.295913 0.259781 0.439334 +v 0.285355 0.265481 0.449775 +v 0.278766 0.270035 0.454663 +v 0.128946 -0.0227065 0.564741 +v 0.16203 0.016989 0.534633 +v 0.0985987 0.0583799 0.58087 +v 0.0538462 0.323165 0.543729 +v 0.0794758 0.301522 0.528465 +v -0.00330601 -0.197759 0.600525 +v -0.000511542 -0.225551 0.572931 +v -0.00456879 -0.164231 0.628277 +v -0.000336157 -0.26392 0.574381 +v -0.000768774 -0.325515 0.55686 +v 0.269921 0.242499 0.464742 +v 0.260573 0.253022 0.476072 +v 0.235066 0.15963 0.493271 +v 0.411369 0.186119 0.273583 +v 0.000178307 0.0131539 0.584682 +v 0.153436 -0.0554568 0.55786 +v 0.0264569 0.331747 0.554112 +v -0.000342003 0.332998 0.557743 +v 0.285589 0.277974 0.428156 +v 0.184795 -0.499655 0.1217 +v 0.332808 -0.386298 -0.0699261 +v 0.20739 -0.274419 -0.415909 +v 0.0927467 -0.274308 -0.43723 +v 0.278029 -0.438791 0.0475586 +v 0.000505693 -0.27722 -0.43768 +v 0.438191 0.12488 -0.0367783 +v 0.460214 0.163208 -0.055258 +v 0.485388 0.177437 -0.0277343 +v 0.472304 0.161641 -0.00367724 +v 0.496244 0.232684 -0.0170708 +v 0.477425 0.247036 0.00446648 +v 0.517015 0.298681 -0.0523876 +v 0.492233 0.31788 -0.0441737 +v 0.53425 0.316407 -0.124009 +v 0.511491 0.332595 -0.129276 +v 0.535904 0.290111 -0.170685 +v 0.511128 0.30365 -0.186838 +v 0.538611 0.228878 -0.193017 +v 0.511286 0.231199 -0.218992 +v 0.520242 0.128838 -0.191421 +v 0.490433 0.122168 -0.208603 +v 0.487562 0.00951757 -0.0819458 +v 0.472286 -0.00658864 -0.0930419 +v 0.47079 0.0399937 -0.154257 +v 0.496437 0.0472722 -0.136917 +v 0.485142 -0.0247586 -0.0238758 +v 0.46129 -0.0429694 -0.0334343 +v 0.474888 0.238927 -0.0419989 +v 0.495232 0.289088 -0.0628581 +v 0.508398 0.299996 -0.11766 +v 0.51311 0.283323 -0.158478 +v 0.514642 0.235303 -0.176531 +v 0.501751 0.136134 -0.181559 +v 0.486025 0.0533522 -0.11859 +v 0.486451 0.0268164 -0.067155 +v 0.482529 0.0136625 -0.0120607 +v 0.464265 0.0280383 0.0249515 +v 0.457519 -0.0185791 0.0196256 +v 0.442769 0.0582571 -0.0293244 +v 0.45632 0.0847169 -0.0600578 +v 0.442465 0.0842785 -0.0209644 +v 0.459612 0.268106 0.0209995 +v 0.458559 0.182857 0.0414318 +v 0.463026 0.318488 -0.0446005 +v 0.470222 0.311835 -0.142898 +v 0.455063 0.232836 -0.195221 +v 0.43839 0.13186 -0.191088 +v 0.424564 0.0473131 -0.148417 +v 0.423447 -0.00471202 -0.0897563 +v 0.425377 -0.0292075 -0.0262143 +v 0.430714 -0.0102191 0.0297161 +v 0.446335 0.0345567 0.0460036 +v 0.475607 0.129364 -0.0864649 +v 0.482611 0.0600636 -0.0525396 +v 0.481517 0.0827175 -0.101349 +v 0.470503 0.0444835 -0.0133527 +v 0.479278 0.0776957 0.00471786 +v 0.504692 0.223938 -0.101723 +v 0.50375 0.131866 -0.1473 +v 0.45452 0.100016 0.0450097 +v 0.403623 0.0251386 -0.16934 +v 0.414719 0.138607 -0.218957 +v 0.435461 0.249632 -0.229924 +v -0.000201695 -0.407876 0.310666 +v 0.000347846 -0.171521 0.505794 +v 0.0884205 -0.186598 0.484028 +v 0.141147 -0.173807 0.465513 +v 0.159878 -0.142255 0.458644 +v 0.152483 -0.116468 0.431278 +v 0.0708352 0.0121893 0.376371 +v 0.128069 -0.116368 0.360528 +v 0.143994 -0.166791 0.41184 +v 0.0748398 -0.218144 0.372349 +v 0.280941 0.292858 0.454897 +v 0.281356 0.319879 0.451494 +v 0.127268 0.269088 0.455435 +v 0.116921 0.284697 0.447653 +v 0.119996 0.274998 0.469126 +v 0.15699 0.254759 0.466326 +v 0.265916 0.273601 0.421176 +v 0.214885 0.253946 0.455259 +v 0.141223 0.313133 0.482117 +v 0.211436 0.255823 0.486852 +v 0.277135 0.302686 0.410799 +v 0.252505 0.333881 0.433599 +v 0.202023 0.342182 0.464578 +v 0.11989 0.295816 0.471196 +v 0.146526 0.322539 0.455943 +v 0.126292 0.301838 0.454973 +v 0.119744 0.284878 0.469419 +v 0.00103185 0.0191579 0.374711 +v 0.000909079 -0.205715 0.379849 +v 0.0536357 -0.100847 0.27211 +v 0.00103185 -0.098929 0.27128 +v 0.255463 -0.398733 -0.446098 +v 0.412907 -0.372688 -0.332858 +v 0.452596 -0.41557 -0.353559 +v 0.293329 -0.465367 -0.476007 +v 0.0815337 -0.637104 0.176286 +v 0.0726358 -0.738524 0.179519 +v 0.174763 -0.714911 0.155526 +v 0.172032 -0.601823 0.129884 +v 0.380782 -0.504069 -0.184377 +v 0.357368 -0.419095 -0.180384 +v 0.337538 -0.494803 -0.0548371 +v 0.372989 -0.619402 -0.0373571 +v 0.453578 -0.652661 -0.0939539 +v 0.452351 -0.545892 -0.196981 +v 0.173576 -0.814197 0.195654 +v 0.0739044 -0.845866 0.20734 +v 0.0964414 -0.904976 0.254455 +v 0.197703 -0.864562 0.243353 +v 0.519564 -0.487407 -0.384801 +v 0.555004 -0.584226 -0.219366 +v 0.451357 -0.731555 -0.0215899 +v 0.382594 -0.74824 0.0443666 +v 0.439805 -0.799196 0.0975376 +v 0.519108 -0.768071 -0.00769357 +v 0.274837 -0.806199 0.115503 +v 0.320508 -0.838061 0.183769 +v 0.354533 -0.544232 -0.525256 +v 0.162503 -0.604343 -0.559076 +v 0.131098 -0.496837 -0.498761 +v 0.115161 -0.410103 -0.457756 +v -0.00017831 -0.492774 -0.504192 +v 2.046e-05 -0.40666 -0.465186 +v -0.000482311 -0.600531 -0.555322 +v 0.546217 -0.696736 -0.117257 +v 0.22746 -0.332063 -0.424345 +v 0.101627 -0.33885 -0.437002 +v 0.280193 -0.554165 0.0658922 +v 0.274843 -0.684891 0.0781517 +v 0.000347846 -0.34199 -0.438165 +v 0.000733693 -0.746364 0.176765 +v 0.000312769 -0.874904 0.179121 +v 0.378648 -0.322586 -0.326994 +v -0.000114002 -0.940246 0.234262 +v 0.000979233 -0.650317 0.207112 +v -0.130513 -0.13217 0.498924 +v -0.133687 -0.14723 0.488109 +v -0.15222 -0.140519 0.477457 +v -0.14666 -0.13514 0.489746 +v -0.0697653 -0.0999404 0.550318 +v -0.0736414 -0.0473131 0.499649 +v -0.0305784 -0.0972511 0.55389 +v -0.0396517 -0.109762 0.550014 +v -0.0358517 -0.127727 0.53534 +v -0.0742493 -0.135994 0.523315 +v -0.0733373 -0.115561 0.537643 +v -0.106766 -0.144336 0.504823 +v -0.106281 -0.125786 0.515779 +v -0.156505 -0.107798 0.467782 +v -0.155611 -0.123682 0.486899 +v -0.159311 -0.130796 0.484958 +v -0.162872 -0.126996 0.470243 +v -0.159919 -0.135625 0.47627 +v -0.154055 -0.134696 0.486513 +v -0.142597 -0.118993 0.499994 +v -0.130051 -0.0726738 0.476189 +v -0.10054 -0.105798 0.538111 +v -0.125684 -0.115824 0.51596 +v -0.274604 -0.301394 0.247527 +v -0.220831 -0.335775 0.330215 +v -0.250102 -0.275554 0.380393 +v -0.3066 -0.239804 0.292309 +v -0.284302 -0.0258401 0.479772 +v -0.319479 0.00809111 0.449577 +v -0.331873 -0.0412272 0.412243 +v -0.293674 -0.0747667 0.452418 +v -0.294668 -0.0547787 -0.357622 +v -0.302063 -0.144319 -0.34334 +v -0.356012 -0.159916 -0.223184 +v -0.355474 -0.0633082 -0.24271 +v -0.447241 0.22613 0.139332 +v -0.437922 0.336149 0.131124 +v -0.449486 0.331215 0.047962 +v -0.454982 0.205353 0.0827818 +v -0.103311 -0.419241 0.249936 +v -0.203701 -0.353384 0.208147 +v -0.196966 -0.411506 0.138841 +v -0.101797 -0.475733 0.208638 +v -0.196499 -0.327216 0.427455 +v -0.176283 -0.362363 0.392138 +v -0.150331 -0.372548 0.431378 +v -0.155575 -0.349484 0.46435 +v -0.0890109 -0.391945 0.303855 +v -0.158306 -0.363848 0.305182 +v -0.415613 0.611627 0.0817705 +v -0.430808 0.648493 -0.0417066 +v -0.45411 0.508986 -0.0641209 +v -0.440308 0.483438 0.0478393 +v -0.389808 0.40462 0.306977 +v -0.375935 0.38348 0.354021 +v -0.34643 0.433026 0.398499 +v -0.354807 0.467378 0.356891 +v -0.317409 0.30382 0.429121 +v -0.30173 0.320499 0.456861 +v -0.309295 0.339493 0.457756 +v -0.328406 0.316144 0.429519 +v -0.358297 0.360101 0.389344 +v -0.335684 0.397733 0.427864 +v -0.285156 0.29304 0.457387 +v -0.294212 0.310695 0.451757 +v -0.307675 0.294425 0.430781 +v -0.29475 0.281949 0.435698 +v -0.421091 0.455996 0.145494 +v -0.395403 0.565208 0.19252 +v -0.321999 0.364421 0.449238 +v -0.345494 0.336792 0.417218 +v -0.178165 0.560672 0.512335 +v -0.249354 0.546354 0.466589 +v -0.243286 0.479638 0.494943 +v -0.170168 0.4781 0.536796 +v -0.164123 0.410647 0.547114 +v -0.236966 0.427297 0.516007 +v -0.270669 0.634748 0.422187 +v -0.195815 0.657882 0.47347 +v -0.14597 0.313039 0.508126 +v -0.18946 0.324971 0.513312 +v -0.186823 0.312829 0.511757 +v -0.144895 0.300213 0.501871 +v -0.186911 0.310514 0.506612 +v -0.143462 0.300341 0.494353 +v -0.160048 0.365076 0.528073 +v -0.219468 0.382854 0.516404 +v -0.15782 0.334506 0.520076 +v -0.205952 0.349935 0.517012 +v -0.195236 0.332495 0.516264 +v -0.151653 0.320785 0.513142 +v -0.0805691 0.0827468 0.603261 +v -0.0493739 0.08878 0.593591 +v -0.0448723 0.0732117 0.617958 +v -0.0594819 0.0761932 0.621314 +v -0.422927 0.0771812 0.237185 +v -0.432205 0.159355 0.215905 +v -0.448112 0.130656 0.149516 +v -0.4282 0.0348607 0.166897 +v -0.311779 -0.172912 0.334378 +v -0.324787 -0.103758 0.371735 +v -0.364851 -0.052639 0.316097 +v -0.367254 -0.126698 0.269146 +v -0.183918 -0.149136 0.51793 +v -0.182024 -0.137865 0.527822 +v -0.205163 -0.131463 0.524127 +v -0.205514 -0.152071 0.514943 +v -0.39379 0.00614433 0.269368 +v -0.400951 -0.0591282 0.208995 +v -0.261011 -0.0993382 0.483865 +v -0.25102 -0.0551177 0.50328 +v -0.158849 -0.136444 0.499199 +v -0.155155 -0.134784 0.503397 +v -0.145304 -0.133848 0.514902 +v -0.160802 -0.128394 0.536919 +v -0.173424 -0.121349 0.541327 +v -0.169156 -0.138478 0.524928 +v -0.232096 -0.116964 0.50767 +v -0.232727 -0.151188 0.49696 +v -0.326085 0.202611 0.415651 +v -0.34094 0.235683 0.392156 +v -0.367727 0.221336 0.359031 +v -0.358829 0.177595 0.3841 +v -0.295603 0.0501836 0.478632 +v -0.32232 0.0902006 0.449922 +v -0.351843 0.04895 0.416686 +v -0.367248 0.00336155 0.369624 +v -0.156137 -0.154941 0.536878 +v -0.165134 -0.177028 0.538193 +v -0.144573 -0.187364 0.558725 +v -0.140533 -0.155882 0.559046 +v -0.17761 -0.0804258 0.547933 +v -0.201667 -0.0484356 0.526945 +v -0.22024 -0.0817529 0.517585 +v -0.195826 -0.106131 0.536439 +v -0.207794 -0.213087 0.493049 +v -0.191711 -0.188305 0.515551 +v -0.201111 -0.170071 0.510745 +v -0.223385 -0.183243 0.490178 +v -0.128595 -0.132761 0.551212 +v -0.145777 -0.139513 0.530605 +v -0.0971664 0.171538 0.569909 +v -0.120048 0.150182 0.555387 +v -0.13557 0.119437 0.545004 +v -0.113103 0.137432 0.569453 +v -0.0653573 0.232432 0.569575 +v -0.08745 0.217992 0.556468 +v -0.0739395 0.185388 0.584933 +v -0.0855266 0.255554 0.53095 +v -0.110583 0.228714 0.525501 +v -0.115915 0.191404 0.5495 +v -0.300099 0.0366964 -0.387999 +v -0.364734 0.0377897 -0.269357 +v -0.223181 -0.243207 0.45081 +v -0.246139 -0.195666 0.45347 +v -0.271201 -0.199869 0.399446 +v -0.362846 -0.197443 0.213286 +v -0.410176 -0.124757 0.140565 +v -0.430404 -0.00290555 0.0907385 +v -0.448779 0.11075 0.0889086 +v -0.142135 0.869847 0.301633 +v -0.132167 0.771303 0.419317 +v -0.0633989 0.777407 0.43288 +v -0.0675789 0.877324 0.315577 +v -0.353469 0.660735 0.264732 +v -0.2875 0.723792 0.335465 +v -0.30353 0.809117 0.220313 +v -0.37099 0.728422 0.148627 +v -0.381016 0.776764 0.0117274 +v -0.0996744 0.472587 0.557146 +v -0.109525 0.565325 0.53475 +v -0.100294 0.277787 0.511248 +v -0.108689 0.248457 0.503268 +v -0.0528874 0.193947 0.604898 +v -0.0453926 0.241125 0.586705 +v -0.12255 0.668732 0.500514 +v -0.0511336 0.564922 0.542589 +v -0.0582191 0.671655 0.50974 +v -0.0440363 0.465776 0.561151 +v -0.0361966 0.388923 0.562367 +v -0.301894 0.466338 0.448542 +v -0.295831 0.424807 0.472166 +v -0.140867 0.22264 0.499754 +v -0.185742 0.209381 0.492394 +v -0.186338 0.179495 0.502724 +v -0.145859 0.19535 0.519018 +v -0.0600022 0.0437294 0.578309 +v -0.113337 0.0407946 0.564875 +v -0.114196 0.0121659 0.564255 +v -0.0686019 -0.00676987 0.598064 +v -0.143661 0.0637116 0.537807 +v -0.147607 0.0440217 0.535469 +v -0.0907706 -0.0459919 0.600525 +v -0.0300113 -0.0346152 0.623594 +v -0.028047 -0.0138554 0.603173 +v -0.148028 0.131527 0.5437 +v -0.148519 0.164868 0.537322 +v -0.183164 0.146873 0.520193 +v -0.176978 0.112363 0.532908 +v -0.147823 0.0979234 0.535574 +v -0.165064 0.0766492 0.532955 +v -0.120107 0.268649 0.480825 +v -0.118558 0.262394 0.493353 +v -0.115979 0.27287 0.494434 +v -0.116476 0.272952 0.483859 +v -0.229115 0.916634 0.120496 +v -0.223379 0.848952 0.271461 +v -0.145146 0.945128 0.150709 +v -0.145409 0.980883 -0.0176788 +v -0.154278 0.976311 -0.1834 +v -0.240088 0.945514 -0.185786 +v -0.230512 0.948548 -0.0401515 +v -0.0669533 0.995411 -0.00979819 +v -0.0669124 0.955581 0.163097 +v -0.0891746 0.383199 0.554861 +v -0.112226 0.336757 0.527307 +v -0.123381 0.311174 0.513382 +v -0.149484 -0.111966 0.558549 +v -0.160264 -0.0991219 0.559216 +v -0.0695139 0.122828 0.646821 +v -0.103574 0.1197 0.616608 +v -0.0967747 0.0873945 0.617683 +v -0.0583127 0.0845006 0.640951 +v -0.0810075 0.0824603 0.567973 +v -0.0347818 0.058339 0.594989 +v -0.031812 -0.0520134 0.636181 +v -0.0876079 -0.0656701 0.61341 +v -0.0905251 -0.101683 0.607529 +v -0.0378686 -0.0937434 0.629054 +v -0.0836617 -0.122507 0.579642 +v -0.0385351 -0.11728 0.594673 +v -0.0223295 0.0177081 0.586652 +v -0.0307538 0.0864766 0.665646 +v -0.0369098 0.125196 0.667078 +v -0.0659946 0.154643 0.629212 +v -0.0379446 0.159028 0.648136 +v -0.0287544 0.19984 0.620642 +v -0.0228205 0.245931 0.598298 +v -0.0444456 0.281523 0.558544 +v -0.0233467 0.287164 0.569581 +v -0.348774 0.267521 0.384632 +v -0.352083 0.30296 0.39367 +v -0.371253 0.315308 0.363077 +v -0.374871 0.266369 0.352501 +v -0.422202 0.335746 0.207253 +v -0.401928 0.429197 0.234116 +v -0.395345 0.264083 0.313998 +v -0.391071 0.32586 0.325679 +v -0.312703 0.275793 0.421661 +v -0.320315 0.291642 0.417107 +v -0.332077 0.295173 0.409057 +v -0.327599 0.271742 0.406824 +v -0.429802 0.244434 0.203979 +v -0.409282 0.332454 0.277442 +v -0.411848 0.257886 0.266369 +v -0.187414 -0.242265 0.510307 +v -0.193763 -0.283183 0.474066 +v -0.155254 -0.304954 0.501777 +v -0.149998 -0.264183 0.526518 +v -0.0567108 -0.227311 0.569523 +v -0.101124 -0.233508 0.561461 +v -0.11039 -0.27508 0.546021 +v -0.066205 -0.270351 0.564711 +v -0.154225 -0.138052 0.502391 +v -0.159867 -0.142787 0.513271 +v -0.15533 -0.142366 0.518626 +v -0.148566 -0.137426 0.506285 +v -0.160416 -0.138344 0.518258 +v -0.161965 -0.141513 0.511996 +v -0.110811 -0.126394 0.533276 +v -0.10089 -0.129879 0.583501 +v -0.0809374 -0.117865 0.558397 +v -0.263876 0.014785 0.500935 +v -0.26083 0.088932 0.49537 +v -0.279702 0.127055 0.470506 +v -0.207764 0.0867397 0.523776 +v -0.187729 0.0509786 0.529558 +v -0.232096 -0.0167025 0.518065 +v -0.344056 0.133304 0.417078 +v -0.302046 0.166376 0.445239 +v -0.292551 0.225429 0.44414 +v -0.316041 0.250468 0.418475 +v -0.335386 -0.250836 0.156385 +v -0.387207 -0.179618 0.074568 +v -0.353755 -0.194151 0.0276524 +v -0.292388 -0.279891 0.104617 +v -0.392211 0.205733 0.320201 +v -0.386651 0.150025 0.344942 +v -0.126064 0.567371 -0.651942 +v -0.117096 0.725914 -0.596082 +v -0.209068 0.754227 0.387245 +v -0.134091 -0.133281 0.515294 +v -0.132384 -0.133778 0.530774 +v -0.118289 -0.366228 0.490722 +v -0.0673742 -0.375085 0.505343 +v -0.0685259 -0.327012 0.553422 +v -0.117722 -0.319453 0.530388 +v -0.287793 -0.13528 0.424643 +v -0.375234 0.0965671 0.380457 +v -0.394351 0.054463 0.33218 +v -0.0714373 0.993797 -0.182751 +v -0.0825568 0.953558 -0.338084 +v -0.177458 0.935674 -0.330221 +v -0.176961 0.259482 0.501637 +v -0.139651 0.267463 0.490903 +v -0.141176 0.271537 0.486156 +v -0.175792 0.263446 0.495797 +v -0.139621 0.240295 0.49489 +v -0.181918 0.230053 0.49499 +v -0.335299 0.587722 0.356851 +v -0.311189 0.51838 0.416464 +v -0.263028 0.350391 0.495528 +v -0.252435 0.331198 0.496568 +v -0.111168 0.276448 0.500608 +v -0.113553 0.255671 0.49582 +v -0.124754 0.293525 0.500263 +v -0.124275 0.282616 0.489933 +v -0.138587 0.254671 0.496603 +v -0.17851 0.246346 0.500783 +v -0.120744 0.272286 0.476557 +v -0.150635 0.0843194 0.549231 +v -0.110981 -0.197039 0.578654 +v -0.145877 -0.226522 0.547184 +v -0.257825 -0.146365 0.464946 +v -0.181813 -0.015013 0.533586 +v -0.21057 0.0188715 0.525811 +v -0.169226 -0.14996 0.516989 +v -0.181743 -0.1588 0.515902 +v -0.175376 -0.168545 0.522911 +v -0.163813 -0.153415 0.52335 +v -0.140253 -0.128364 0.545887 +v -0.153091 -0.134363 0.527834 +v -0.414608 -0.0714286 0.0335337 +v -0.0376523 0.063203 0.628721 +v -0.0232707 0.0530365 0.640016 +v -0.190483 -0.134521 -0.42891 +v -0.190425 -0.0530365 -0.446291 +v -0.0856669 -0.0492716 -0.489617 +v -0.0841703 -0.13027 -0.463549 +v -0.238743 0.312729 0.498784 +v -0.236568 0.310718 0.495914 +v -0.245034 0.325784 0.495083 +v -0.120311 0.281967 0.47734 +v -0.176107 -0.207054 0.530523 +v -0.114635 -0.15994 0.588938 +v -0.0702155 -0.19877 0.595006 +v -0.0735478 -0.165324 0.619338 +v -0.0899814 0.151661 0.600396 +v -0.111016 0.0572925 0.58557 +v -0.101867 0.0715163 0.586237 +v -0.127064 0.0733753 0.597824 +v -0.136833 0.0543987 0.574241 +v -0.135833 0.107312 0.581379 +v -0.278287 0.38386 0.485911 +v -0.171226 -0.145371 0.517737 +v -0.0426215 -0.114106 0.575498 +v -0.0575293 -0.131258 0.610721 +v -0.0203535 0.0339429 0.602828 +v -0.224215 0.246978 0.496697 +v -0.219644 0.257664 0.498129 +v -0.308126 0.284604 0.426215 +v -0.296275 0.279026 0.430641 +v -0.291721 0.275554 0.437358 +v -0.286612 0.276705 0.435172 +v -0.291949 0.280143 0.428238 +v -0.065825 -0.384532 0.440825 +v -0.11702 -0.382428 0.436651 +v -0.374667 0.821265 -0.265393 +v -0.3198 0.831958 -0.392208 +v -0.362179 0.712818 -0.467507 +v -0.425879 0.698185 -0.319692 +v -0.269938 0.909215 -0.296313 +v -0.308015 0.900609 -0.210562 +v -0.440407 0.677046 -0.175192 +v -0.387417 0.807117 -0.128411 +v -0.312037 0.894728 -0.0788123 +v -0.0720161 -0.391612 0.376675 +v -0.127765 -0.376523 0.378341 +v -0.124801 0.303066 0.504835 +v -0.0997913 0.860855 -0.486022 +v -0.212687 0.850449 -0.463771 +v -0.245244 0.723306 -0.559461 +v -0.199083 0.0271847 -0.488407 +v -0.21986 0.118005 -0.554936 +v -0.10327 0.117479 -0.600127 +v -0.0928636 0.0273016 -0.53883 +v -0.389259 0.144254 -0.303446 +v -0.329178 0.130557 -0.444432 +v -0.359227 0.250316 -0.491237 +v -0.422325 0.258021 -0.333419 +v -0.123907 0.397932 -0.664658 +v -0.113699 0.240517 -0.645459 +v -0.381641 0.401913 -0.512072 +v -0.448592 0.395605 -0.3508 +v -0.450574 0.547705 -0.348333 +v -0.384366 0.562601 -0.506817 +v -0.462722 0.528827 -0.195952 +v -0.310604 0.866976 0.0721301 +v -0.372013 -0.183143 -0.115123 +v -0.387686 -0.0789994 -0.141781 +v -0.2476 0.197566 0.475487 +v -0.230342 0.231532 0.488372 +v -0.129238 -0.0890256 0.584927 +v -0.123544 -0.115971 0.574872 +v -0.114588 -0.128867 0.557082 +v -0.221702 0.122764 0.506442 +v -0.216107 0.26119 0.49413 +v -0.253242 0.263207 0.478422 +v -0.256568 0.260547 0.479737 +v -0.115342 0.273619 0.475323 +v -0.298743 0.299903 0.422953 +v -0.291698 0.283732 0.432722 +v -0.295854 0.288181 0.418253 +v -0.142059 0.263388 0.482491 +v -0.120428 0.267802 0.470325 +v -0.172108 0.256934 0.489641 +v -0.275083 0.271584 0.453242 +v -0.248582 0.25684 0.473757 +v -0.275001 0.268573 0.446274 +v -0.234253 0.331396 0.490634 +v -0.187624 0.326819 0.49717 +v -0.300292 0.274694 0.432944 +v -0.135658 -0.0739483 0.577444 +v -0.237428 0.052791 0.514919 +v -0.0645564 0.270789 0.544612 +v -0.373819 0.514195 0.287264 +v -0.321852 -0.214718 -0.338184 +v -0.348166 -0.27584 -0.333396 +v -0.352171 -0.333378 -0.190533 +v -0.354936 -0.247872 -0.205511 +v -0.0936937 -0.549137 0.186785 +v -0.35669 -0.197653 -0.0299733 +v -0.393228 -0.0876225 -0.0664009 +v -0.29161 -0.321499 0.0380294 +v -0.393638 -0.0904403 -0.014329 +v -0.241608 0.243201 -0.602916 +v -0.263209 0.569914 -0.609242 +v -0.349441 -0.283282 -0.0863831 +v -0.194821 -0.209504 -0.418674 +v -0.0862925 -0.206323 -0.448413 +v -0.261795 0.402579 -0.621448 +v -0.456233 0.372302 -0.191263 +v -0.455245 0.384813 -0.0591282 +v -0.408072 0.116608 0.297155 +v -0.298661 0.260278 0.439147 +v -0.287606 0.265861 0.450068 +v -0.279696 0.270216 0.454289 +v -0.162731 0.0172638 0.536515 +v -0.13087 -0.0222973 0.565699 +v -0.101475 0.0572691 0.580946 +v -0.0809198 0.301049 0.528407 +v -0.0556351 0.322972 0.54498 +v -0.272306 0.242932 0.464508 +v -0.262964 0.253017 0.476001 +v -0.233067 0.158607 0.487893 +v -0.412053 0.186142 0.273695 +v -0.154815 -0.0532762 0.55793 +v -0.0277489 0.331782 0.556427 +v -0.286179 0.277611 0.427928 +v -0.183941 -0.499632 0.122144 +v -0.331493 -0.386257 -0.0698735 +v -0.206238 -0.274279 -0.416026 +v -0.0915482 -0.274332 -0.437317 +v -0.277193 -0.438779 0.0481257 +v -0.484037 0.177414 -0.0276816 +v -0.458618 0.163319 -0.0553633 +v -0.437233 0.124752 -0.0367315 +v -0.471526 0.1616 -0.00366555 +v -0.476232 0.247018 0.00445479 +v -0.494987 0.232631 -0.0169773 +v -0.491035 0.317921 -0.0441971 +v -0.515688 0.298728 -0.0523583 +v -0.510175 0.332513 -0.1293 +v -0.532917 0.316524 -0.12405 +v -0.50993 0.303592 -0.186815 +v -0.534671 0.290233 -0.170849 +v -0.510152 0.231181 -0.21891 +v -0.537459 0.228895 -0.193058 +v -0.48934 0.122068 -0.20872 +v -0.519208 0.128879 -0.191363 +v -0.469632 0.0399528 -0.15424 +v -0.470766 -0.00661202 -0.0930419 +v -0.486142 0.00947665 -0.0819458 +v -0.495221 0.0472722 -0.1369 +v -0.459705 -0.0431682 -0.033446 +v -0.483546 -0.0248521 -0.0238816 +v -0.494011 0.289082 -0.0628932 +v -0.473502 0.238904 -0.0420457 +v -0.507246 0.300137 -0.117724 +v -0.512134 0.2833 -0.158502 +v -0.513712 0.235303 -0.176549 +v -0.50102 0.136093 -0.181582 +v -0.485095 0.0532704 -0.118549 +v -0.485253 0.0267755 -0.0671726 +v -0.481172 0.0136801 -0.012201 +v -0.456127 -0.0187428 0.0196958 +v -0.462909 0.027933 0.024969 +v -0.454923 0.0845591 -0.060163 +v -0.441284 0.0577602 -0.0294063 +v -0.440921 0.0840388 -0.0210813 +v -0.457712 0.18288 0.0414318 +v -0.458378 0.268123 0.0210228 +v -0.461588 0.318505 -0.044618 +v -0.468843 0.311858 -0.142898 +v -0.453707 0.232836 -0.195204 +v -0.436969 0.13182 -0.191047 +v -0.423167 0.0473306 -0.148288 +v -0.421945 -0.00467109 -0.089692 +v -0.423991 -0.0291198 -0.0260915 +v -0.429434 -0.0102776 0.0297746 +v -0.445242 0.0345158 0.0460211 +v -0.481617 0.0602039 -0.0524227 +v -0.474104 0.129276 -0.0866754 +v -0.480325 0.0824545 -0.101285 +v -0.469474 0.0446648 -0.013376 +v -0.478167 0.0776431 0.00467109 +v -0.503592 0.223961 -0.101887 +v -0.502575 0.131983 -0.147242 +v -0.453707 0.0999988 0.0450097 +v -0.413357 0.138549 -0.218945 +v -0.402232 0.0251035 -0.169299 +v -0.434023 0.249632 -0.229901 +v -0.0871226 -0.186639 0.484069 +v -0.139686 -0.173807 0.465537 +v -0.158481 -0.142278 0.458685 +v -0.0688299 0.0121893 0.376371 +v -0.150805 -0.116468 0.431278 +v -0.126228 -0.116368 0.360528 +v -0.142316 -0.166791 0.41184 +v -0.0730392 -0.218144 0.372349 +v -0.282087 0.293548 0.454716 +v -0.283513 0.320341 0.45129 +v -0.124398 0.285323 0.452968 +v -0.126795 0.269175 0.455978 +v -0.119353 0.275057 0.469524 +v -0.156265 0.2548 0.466332 +v -0.265074 0.27356 0.421036 +v -0.214762 0.253899 0.455218 +v -0.141855 0.312577 0.484315 +v -0.212745 0.255776 0.486875 +v -0.277117 0.302621 0.410811 +v -0.252014 0.333887 0.433371 +v -0.20141 0.342405 0.464461 +v -0.120767 0.295565 0.473184 +v -0.145333 0.322832 0.456154 +v -0.126041 0.301873 0.455785 +v -0.119879 0.284837 0.470541 +v -0.0516539 -0.100847 0.27211 +v -0.454245 -0.41571 -0.353027 +v -0.413392 -0.372097 -0.332203 +v -0.255785 -0.398019 -0.4467 +v -0.294685 -0.464338 -0.476902 +v -0.174388 -0.714777 0.156607 +v -0.0715543 -0.738454 0.180284 +v -0.0798266 -0.636725 0.177765 +v -0.171536 -0.601788 0.131147 +v -0.337345 -0.494639 -0.0546091 +v -0.355094 -0.419334 -0.180442 +v -0.379665 -0.504905 -0.184915 +v -0.373053 -0.619338 -0.0373044 +v -0.45328 -0.545816 -0.197379 +v -0.454128 -0.653065 -0.0942754 +v -0.0965876 -0.904778 0.254759 +v -0.0736004 -0.845567 0.20775 +v -0.172974 -0.81408 0.195975 +v -0.1973 -0.864375 0.243622 +v -0.520961 -0.488138 -0.3841 +v -0.556272 -0.584635 -0.21946 +v -0.439238 -0.799155 0.0975785 +v -0.381694 -0.748264 0.0442672 +v -0.45103 -0.731883 -0.0219173 +v -0.519067 -0.768135 -0.0077988 +v -0.273785 -0.806328 0.115322 +v -0.319391 -0.83802 0.183769 +v -0.163088 -0.604103 -0.559421 +v -0.356672 -0.543712 -0.525361 +v -0.131226 -0.496761 -0.498854 +v -0.114629 -0.410074 -0.45775 +v -0.546533 -0.697291 -0.117619 +v -0.100633 -0.33885 -0.437013 +v -0.22677 -0.331835 -0.424707 +v -0.274931 -0.684651 0.0790578 +v -0.28021 -0.553908 0.0669913 +v -0.378028 -0.321668 -0.326088 +v 0.172833 0.300014 0.41564 +v -0.171097 0.299996 0.415616 +# 1258 vertices + +vt 0.532 0.923 0.000 +vt 0.535 0.917 0.000 +vt 0.542 0.923 0.000 +vt 0.541 0.929 0.000 +vt 0.521 0.984 0.000 +vt 0.521 0.996 0.000 +vt 0.505 0.998 0.000 +vt 0.500 0.985 0.000 +vt 0.504 0.917 0.000 +vt 0.507 0.910 0.000 +vt 0.516 0.910 0.000 +vt 0.515 0.918 0.000 +vt 0.523 0.921 0.000 +vt 0.525 0.913 0.000 +vt 0.549 0.958 0.000 +vt 0.538 0.954 0.000 +vt 0.544 0.942 0.000 +vt 0.550 0.946 0.000 +vt 0.545 0.935 0.000 +vt 0.550 0.932 0.000 +vt 0.547 0.974 0.000 +vt 0.533 0.967 0.000 +vt 0.500 0.917 0.000 +vt 0.500 0.910 0.000 +vt 0.542 0.987 0.000 +vt 0.533 0.994 0.000 +vt 0.616 0.254 0.000 +vt 0.653 0.261 0.000 +vt 0.658 0.307 0.000 +vt 0.619 0.292 0.000 +vt 0.636 0.438 0.000 +vt 0.620 0.419 0.000 +vt 0.627 0.396 0.000 +vt 0.647 0.414 0.000 +vt 0.886 0.312 0.000 +vt 0.897 0.370 0.000 +vt 0.860 0.369 0.000 +vt 0.844 0.308 0.000 +vt 0.740 0.593 0.000 +vt 0.741 0.542 0.000 +vt 0.759 0.541 0.000 +vt 0.768 0.598 0.000 +vt 0.644 0.213 0.000 +vt 0.561 0.175 0.000 +vt 0.566 0.146 0.000 +vt 0.644 0.174 0.000 +vt 0.580 0.254 0.000 +vt 0.585 0.277 0.000 +vt 0.565 0.268 0.000 +vt 0.565 0.256 0.000 +vt 0.590 0.217 0.000 +vt 0.544 0.195 0.000 +vt 0.771 0.721 0.000 +vt 0.736 0.712 0.000 +vt 0.758 0.653 0.000 +vt 0.794 0.663 0.000 +vt 0.669 0.622 0.000 +vt 0.685 0.632 0.000 +vt 0.665 0.669 0.000 +vt 0.652 0.651 0.000 +vt 0.623 0.588 0.000 +vt 0.632 0.582 0.000 +vt 0.639 0.590 0.000 +vt 0.627 0.599 0.000 +vt 0.641 0.632 0.000 +vt 0.657 0.612 0.000 +vt 0.619 0.580 0.000 +vt 0.617 0.575 0.000 +vt 0.623 0.573 0.000 +vt 0.627 0.576 0.000 +vt 0.708 0.702 0.000 +vt 0.729 0.646 0.000 +vt 0.633 0.614 0.000 +vt 0.647 0.601 0.000 +vt 0.604 0.718 0.000 +vt 0.574 0.725 0.000 +vt 0.567 0.686 0.000 +vt 0.596 0.682 0.000 +vt 0.562 0.648 0.000 +vt 0.590 0.649 0.000 +vt 0.618 0.756 0.000 +vt 0.584 0.769 0.000 +vt 0.586 0.587 0.000 +vt 0.566 0.586 0.000 +vt 0.568 0.579 0.000 +vt 0.586 0.580 0.000 +vt 0.569 0.574 0.000 +vt 0.586 0.573 0.000 +vt 0.562 0.627 0.000 +vt 0.587 0.627 0.000 +vt 0.587 0.610 0.000 +vt 0.563 0.608 0.000 +vt 0.565 0.595 0.000 +vt 0.587 0.596 0.000 +vt 0.521 0.441 0.000 +vt 0.526 0.450 0.000 +vt 0.520 0.450 0.000 +vt 0.517 0.445 0.000 +vt 0.720 0.504 0.000 +vt 0.709 0.467 0.000 +vt 0.727 0.446 0.000 +vt 0.738 0.494 0.000 +vt 0.656 0.383 0.000 +vt 0.660 0.348 0.000 +vt 0.684 0.368 0.000 +vt 0.673 0.403 0.000 +vt 0.572 0.371 0.000 +vt 0.573 0.365 0.000 +vt 0.581 0.364 0.000 +vt 0.581 0.374 0.000 +vt 0.708 0.400 0.000 +vt 0.693 0.431 0.000 +vt 0.604 0.401 0.000 +vt 0.609 0.383 0.000 +vt 0.557 0.364 0.000 +vt 0.559 0.365 0.000 +vt 0.557 0.366 0.000 +vt 0.556 0.364 0.000 +vt 0.552 0.367 0.000 +vt 0.552 0.364 0.000 +vt 0.568 0.377 0.000 +vt 0.561 0.374 0.000 +vt 0.566 0.370 0.000 +vt 0.594 0.377 0.000 +vt 0.594 0.363 0.000 +vt 0.653 0.551 0.000 +vt 0.644 0.534 0.000 +vt 0.658 0.523 0.000 +vt 0.666 0.545 0.000 +vt 0.637 0.480 0.000 +vt 0.625 0.458 0.000 +vt 0.649 0.459 0.000 +vt 0.662 0.434 0.000 +vt 0.557 0.345 0.000 +vt 0.553 0.353 0.000 +vt 0.543 0.349 0.000 +vt 0.546 0.337 0.000 +vt 0.586 0.403 0.000 +vt 0.573 0.392 0.000 +vt 0.579 0.382 0.000 +vt 0.591 0.389 0.000 +vt 0.572 0.343 0.000 +vt 0.584 0.331 0.000 +vt 0.590 0.347 0.000 +vt 0.578 0.353 0.000 +vt 0.553 0.358 0.000 +vt 0.543 0.355 0.000 +vt 0.553 0.499 0.000 +vt 0.541 0.507 0.000 +vt 0.542 0.484 0.000 +vt 0.553 0.477 0.000 +vt 0.539 0.532 0.000 +vt 0.529 0.541 0.000 +vt 0.531 0.513 0.000 +vt 0.551 0.538 0.000 +vt 0.538 0.552 0.000 +vt 0.552 0.521 0.000 +vt 0.908 0.437 0.000 +vt 0.876 0.429 0.000 +vt 0.608 0.340 0.000 +vt 0.599 0.314 0.000 +vt 0.629 0.336 0.000 +vt 0.691 0.326 0.000 +vt 0.723 0.365 0.000 +vt 0.748 0.426 0.000 +vt 0.755 0.489 0.000 +vt 0.564 0.825 0.000 +vt 0.590 0.868 0.000 +vt 0.558 0.886 0.000 +vt 0.533 0.834 0.000 +vt 0.637 0.789 0.000 +vt 0.673 0.755 0.000 +vt 0.702 0.774 0.000 +vt 0.665 0.817 0.000 +vt 0.740 0.787 0.000 +vt 0.545 0.727 0.000 +vt 0.540 0.686 0.000 +vt 0.551 0.550 0.000 +vt 0.538 0.572 0.000 +vt 0.520 0.546 0.000 +vt 0.522 0.517 0.000 +vt 0.552 0.775 0.000 +vt 0.524 0.777 0.000 +vt 0.521 0.728 0.000 +vt 0.500 0.687 0.000 +vt 0.500 0.651 0.000 +vt 0.515 0.650 0.000 +vt 0.518 0.687 0.000 +vt 0.500 0.727 0.000 +vt 0.625 0.671 0.000 +vt 0.618 0.644 0.000 +vt 0.591 0.533 0.000 +vt 0.571 0.539 0.000 +vt 0.569 0.527 0.000 +vt 0.589 0.518 0.000 +vt 0.545 0.436 0.000 +vt 0.525 0.427 0.000 +vt 0.528 0.413 0.000 +vt 0.549 0.425 0.000 +vt 0.556 0.449 0.000 +vt 0.563 0.439 0.000 +vt 0.514 0.395 0.000 +vt 0.532 0.396 0.000 +vt 0.513 0.409 0.000 +vt 0.566 0.511 0.000 +vt 0.564 0.490 0.000 +vt 0.577 0.478 0.000 +vt 0.584 0.500 0.000 +vt 0.500 0.408 0.000 +vt 0.500 0.394 0.000 +vt 0.571 0.457 0.000 +vt 0.561 0.468 0.000 +vt 0.554 0.561 0.000 +vt 0.557 0.563 0.000 +vt 0.552 0.569 0.000 +vt 0.548 0.569 0.000 +vt 0.627 0.847 0.000 +vt 0.674 0.871 0.000 +vt 0.645 0.898 0.000 +vt 0.776 0.920 0.000 +vt 0.709 0.921 0.000 +vt 0.729 0.888 0.000 +vt 0.783 0.887 0.000 +vt 0.693 0.947 0.000 +vt 0.621 0.920 0.000 +vt 0.535 0.642 0.000 +vt 0.542 0.618 0.000 +vt 0.545 0.599 0.000 +vt 0.559 0.383 0.000 +vt 0.552 0.377 0.000 +vt 0.531 0.470 0.000 +vt 0.520 0.472 0.000 +vt 0.517 0.456 0.000 +vt 0.528 0.457 0.000 +vt 0.530 0.438 0.000 +vt 0.517 0.436 0.000 +vt 0.528 0.383 0.000 +vt 0.513 0.384 0.000 +vt 0.512 0.374 0.000 +vt 0.526 0.374 0.000 +vt 0.512 0.367 0.000 +vt 0.526 0.366 0.000 +vt 0.512 0.362 0.000 +vt 0.526 0.362 0.000 +vt 0.511 0.422 0.000 +vt 0.500 0.384 0.000 +vt 0.500 0.375 0.000 +vt 0.500 0.362 0.000 +vt 0.500 0.367 0.000 +vt 0.511 0.472 0.000 +vt 0.508 0.457 0.000 +vt 0.521 0.491 0.000 +vt 0.512 0.519 0.000 +vt 0.512 0.491 0.000 +vt 0.511 0.550 0.000 +vt 0.520 0.576 0.000 +vt 0.510 0.583 0.000 +vt 0.500 0.457 0.000 +vt 0.500 0.472 0.000 +vt 0.500 0.491 0.000 +vt 0.654 0.584 0.000 +vt 0.656 0.568 0.000 +vt 0.669 0.567 0.000 +vt 0.666 0.589 0.000 +vt 0.705 0.639 0.000 +vt 0.718 0.591 0.000 +vt 0.684 0.563 0.000 +vt 0.680 0.592 0.000 +vt 0.637 0.575 0.000 +vt 0.636 0.566 0.000 +vt 0.645 0.567 0.000 +vt 0.645 0.579 0.000 +vt 0.723 0.546 0.000 +vt 0.697 0.592 0.000 +vt 0.702 0.554 0.000 +vt 0.500 0.163 0.000 +vt 0.500 0.137 0.000 +vt 0.579 0.298 0.000 +vt 0.570 0.317 0.000 +vt 0.554 0.307 0.000 +vt 0.560 0.287 0.000 +vt 0.534 0.318 0.000 +vt 0.517 0.314 0.000 +vt 0.519 0.296 0.000 +vt 0.538 0.300 0.000 +vt 0.562 0.362 0.000 +vt 0.559 0.363 0.000 +vt 0.557 0.362 0.000 +vt 0.559 0.360 0.000 +vt 0.563 0.365 0.000 +vt 0.561 0.368 0.000 +vt 0.543 0.360 0.000 +vt 0.531 0.358 0.000 +vt 0.531 0.351 0.000 +vt 0.611 0.437 0.000 +vt 0.613 0.475 0.000 +vt 0.624 0.497 0.000 +vt 0.580 0.445 0.000 +vt 0.590 0.466 0.000 +vt 0.598 0.418 0.000 +vt 0.648 0.501 0.000 +vt 0.633 0.516 0.000 +vt 0.641 0.554 0.000 +vt 0.630 0.541 0.000 +vt 0.733 0.331 0.000 +vt 0.696 0.288 0.000 +vt 0.706 0.252 0.000 +vt 0.751 0.313 0.000 +vt 0.683 0.535 0.000 +vt 0.674 0.508 0.000 +vt 0.999 0.696 0.000 +vt 0.986 0.778 0.000 +vt 0.950 0.772 0.000 +vt 0.967 0.695 0.000 +vt 0.600 0.811 0.000 +vt 0.552 0.361 0.000 +vt 0.547 0.367 0.000 +vt 0.546 0.364 0.000 +vt 0.525 0.254 0.000 +vt 0.546 0.261 0.000 +vt 0.542 0.280 0.000 +vt 0.522 0.274 0.000 +vt 0.631 0.369 0.000 +vt 0.678 0.460 0.000 +vt 0.662 0.482 0.000 +vt 0.770 0.948 0.000 +vt 0.762 0.981 0.000 +vt 0.676 0.977 0.000 +vt 0.845 0.915 0.000 +vt 0.835 0.891 0.000 +vt 0.569 0.560 0.000 +vt 0.582 0.558 0.000 +vt 0.580 0.563 0.000 +vt 0.569 0.564 0.000 +vt 0.590 0.544 0.000 +vt 0.571 0.548 0.000 +vt 0.635 0.701 0.000 +vt 0.651 0.731 0.000 +vt 0.607 0.593 0.000 +vt 0.609 0.606 0.000 +vt 0.543 0.570 0.000 +vt 0.553 0.556 0.000 +vt 0.552 0.580 0.000 +vt 0.556 0.574 0.000 +vt 0.569 0.554 0.000 +vt 0.585 0.551 0.000 +vt 0.559 0.566 0.000 +vt 0.550 0.458 0.000 +vt 0.532 0.330 0.000 +vt 0.549 0.325 0.000 +vt 0.610 0.364 0.000 +vt 0.589 0.432 0.000 +vt 0.578 0.417 0.000 +vt 0.570 0.357 0.000 +vt 0.565 0.360 0.000 +vt 0.562 0.356 0.000 +vt 0.565 0.351 0.000 +vt 0.557 0.364 0.000 +vt 0.556 0.364 0.000 +vt 0.548 0.371 0.000 +vt 0.557 0.371 0.000 +vt 0.762 0.385 0.000 +vt 0.513 0.445 0.000 +vt 0.508 0.444 0.000 +vt 0.500 0.520 0.000 +vt 0.939 0.378 0.000 +vt 0.932 0.316 0.000 +vt 0.972 0.321 0.000 +vt 0.974 0.384 0.000 +vt 0.605 0.572 0.000 +vt 0.605 0.578 0.000 +vt 0.605 0.584 0.000 +vt 0.559 0.571 0.000 +vt 0.562 0.333 0.000 +vt 0.500 0.552 0.000 +vt 0.500 0.585 0.000 +vt 0.531 0.343 0.000 +vt 0.514 0.338 0.000 +vt 0.516 0.324 0.000 +vt 0.532 0.488 0.000 +vt 0.534 0.448 0.000 +vt 0.540 0.446 0.000 +vt 0.545 0.448 0.000 +vt 0.538 0.455 0.000 +vt 0.541 0.466 0.000 +vt 0.612 0.623 0.000 +vt 0.567 0.366 0.000 +vt 0.513 0.356 0.000 +vt 0.500 0.355 0.000 +vt 0.500 0.346 0.000 +vt 0.514 0.348 0.000 +vt 0.543 0.363 0.000 +vt 0.552 0.364 0.000 +vt 0.531 0.362 0.000 +vt 0.512 0.361 0.000 +vt 0.509 0.433 0.000 +vt 0.500 0.444 0.000 +vt 0.500 0.432 0.000 +vt 0.603 0.551 0.000 +vt 0.599 0.557 0.000 +vt 0.627 0.570 0.000 +vt 0.631 0.571 0.000 +vt 0.625 0.566 0.000 +vt 0.622 0.569 0.000 +vt 0.621 0.567 0.000 +vt 0.529 0.234 0.000 +vt 0.500 0.249 0.000 +vt 0.500 0.227 0.000 +vt 0.550 0.245 0.000 +vt 0.857 0.816 0.000 +vt 0.825 0.804 0.000 +vt 0.851 0.737 0.000 +vt 0.886 0.748 0.000 +vt 0.821 0.866 0.000 +vt 0.798 0.856 0.000 +vt 0.783 0.797 0.000 +vt 0.810 0.729 0.000 +vt 0.755 0.848 0.000 +vt 0.534 0.215 0.000 +vt 0.563 0.233 0.000 +vt 0.548 0.588 0.000 +vt 0.884 0.835 0.000 +vt 0.908 0.854 0.000 +vt 0.919 0.761 0.000 +vt 0.947 0.512 0.000 +vt 0.944 0.446 0.000 +vt 0.974 0.452 0.000 +vt 0.974 0.519 0.000 +vt 0.915 0.504 0.000 +vt 0.887 0.498 0.000 +vt 0.917 0.564 0.000 +vt 0.890 0.556 0.000 +vt 0.999 0.634 0.000 +vt 0.973 0.633 0.000 +vt 0.975 0.577 0.000 +vt 0.999 0.579 0.000 +vt 0.882 0.614 0.000 +vt 0.911 0.622 0.000 +vt 0.901 0.679 0.000 +vt 0.868 0.671 0.000 +vt 0.833 0.667 0.000 +vt 0.708 0.836 0.000 +vt 0.500 0.205 0.000 +vt 0.826 0.364 0.000 +vt 0.801 0.303 0.000 +vt 0.613 0.529 0.000 +vt 0.607 0.544 0.000 +vt 0.541 0.380 0.000 +vt 0.538 0.372 0.000 +vt 0.537 0.366 0.000 +vt 0.537 0.363 0.000 +vt 0.598 0.945 0.000 +vt 0.524 0.902 0.000 +vt 0.599 0.489 0.000 +vt 0.609 0.563 0.000 +vt 0.596 0.563 0.000 +vt 0.612 0.559 0.000 +vt 0.557 0.569 0.000 +vt 0.620 0.571 0.000 +vt 0.616 0.569 0.000 +vt 0.618 0.569 0.000 +vt 0.569 0.568 0.000 +vt 0.561 0.568 0.000 +vt 0.579 0.567 0.000 +vt 0.616 0.564 0.000 +vt 0.613 0.567 0.000 +vt 0.607 0.567 0.000 +vt 0.587 0.568 0.000 +vt 0.606 0.568 0.000 +vt 0.630 0.565 0.000 +vt 0.548 0.389 0.000 +vt 0.601 0.452 0.000 +vt 0.529 0.566 0.000 +vt 0.684 0.686 0.000 +vt 0.872 0.222 0.000 +vt 0.876 0.265 0.000 +vt 0.825 0.258 0.000 +vt 0.821 0.214 0.000 +vt 0.561 0.119 0.000 +vt 0.500 0.114 0.000 +vt 0.771 0.304 0.000 +vt 0.797 0.363 0.000 +vt 0.726 0.227 0.000 +vt 0.777 0.371 0.000 +vt 0.947 0.571 0.000 +vt 0.999 0.388 0.000 +vt 0.999 0.456 0.000 +vt 0.999 0.524 0.000 +vt 0.936 0.877 0.000 +vt 0.856 0.945 0.000 +vt 0.999 0.323 0.000 +vt 0.935 0.689 0.000 +vt 0.776 0.240 0.000 +vt 0.928 0.265 0.000 +vt 0.969 0.264 0.000 +vt 0.999 0.267 0.000 +vt 0.943 0.628 0.000 +vt 0.806 0.622 0.000 +vt 0.851 0.611 0.000 +vt 0.500 0.777 0.000 +vt 0.500 0.839 0.000 +vt 0.692 0.489 0.000 +vt 0.631 0.558 0.000 +vt 0.622 0.562 0.000 +vt 0.626 0.560 0.000 +vt 0.555 0.413 0.000 +vt 0.570 0.429 0.000 +vt 0.539 0.440 0.000 +vt 0.524 0.607 0.000 +vt 0.531 0.591 0.000 +vt 0.500 0.361 0.000 +vt 0.500 0.321 0.000 +vt 0.500 0.312 0.000 +vt 0.500 0.336 0.000 +vt 0.500 0.294 0.000 +vt 0.500 0.273 0.000 +vt 0.622 0.549 0.000 +vt 0.616 0.554 0.000 +vt 0.607 0.509 0.000 +vt 0.701 0.520 0.000 +vt 0.500 0.421 0.000 +vt 0.564 0.403 0.000 +vt 0.511 0.615 0.000 +vt 0.500 0.618 0.000 +vt 0.617 0.568 0.000 +vt 0.636 0.139 0.000 +vt 0.764 0.192 0.000 +vt 0.921 0.220 0.000 +vt 0.967 0.219 0.000 +vt 0.708 0.168 0.000 +vt 0.999 0.218 0.000 +vt 0.803 0.523 0.000 +vt 0.794 0.535 0.000 +vt 0.783 0.527 0.000 +vt 0.791 0.508 0.000 +vt 0.789 0.571 0.000 +vt 0.797 0.562 0.000 +vt 0.813 0.591 0.000 +vt 0.815 0.578 0.000 +vt 0.839 0.583 0.000 +vt 0.835 0.574 0.000 +vt 0.850 0.569 0.000 +vt 0.845 0.560 0.000 +vt 0.855 0.539 0.000 +vt 0.847 0.535 0.000 +vt 0.850 0.501 0.000 +vt 0.841 0.502 0.000 +vt 0.814 0.438 0.000 +vt 0.836 0.464 0.000 +vt 0.828 0.472 0.000 +vt 0.809 0.452 0.000 +vt 0.792 0.427 0.000 +vt 0.790 0.441 0.000 +vt 0.818 0.567 0.000 +vt 0.807 0.550 0.000 +vt 0.831 0.561 0.000 +vt 0.839 0.553 0.000 +vt 0.837 0.534 0.000 +vt 0.831 0.505 0.000 +vt 0.820 0.479 0.000 +vt 0.804 0.465 0.000 +vt 0.786 0.460 0.000 +vt 0.773 0.456 0.000 +vt 0.779 0.433 0.000 +vt 0.797 0.489 0.000 +vt 0.785 0.495 0.000 +vt 0.789 0.486 0.000 +vt 0.772 0.537 0.000 +vt 0.781 0.583 0.000 +vt 0.812 0.602 0.000 +vt 0.848 0.587 0.000 +vt 0.862 0.546 0.000 +vt 0.859 0.500 0.000 +vt 0.820 0.412 0.000 +vt 0.843 0.450 0.000 +vt 0.791 0.404 0.000 +vt 0.773 0.417 0.000 +vt 0.764 0.447 0.000 +vt 0.801 0.477 0.000 +vt 0.813 0.487 0.000 +vt 0.806 0.496 0.000 +vt 0.787 0.478 0.000 +vt 0.778 0.489 0.000 +vt 0.822 0.538 0.000 +vt 0.822 0.510 0.000 +vt 0.767 0.492 0.000 +vt 0.870 0.496 0.000 +vt 0.851 0.425 0.000 +vt 0.872 0.552 0.000 +vt 0.500 0.183 0.000 +vt 0.516 0.930 0.000 +vt 0.500 0.928 0.000 +vt 0.528 0.934 0.000 +vt 0.537 0.938 0.000 +vt 0.516 0.970 0.000 +vt 0.520 0.955 0.000 +vt 0.530 0.952 0.000 +vt 0.522 0.944 0.000 +vt 0.512 0.942 0.000 +vt 0.615 0.572 0.000 +vt 0.612 0.569 0.000 +vt 0.576 0.968 0.000 +vt 0.573 0.973 0.000 +vt 0.562 0.969 0.000 +vt 0.563 0.961 0.000 +vt 0.571 0.956 0.000 +vt 0.582 0.961 0.000 +vt 0.611 0.961 0.000 +vt 0.606 0.967 0.000 +vt 0.595 0.960 0.000 +vt 0.601 0.955 0.000 +vt 0.570 0.569 0.000 +vt 0.595 0.566 0.000 +vt 0.616 0.967 0.000 +vt 0.617 0.975 0.000 +vt 0.607 0.978 0.000 +vt 0.614 0.982 0.000 +vt 0.605 0.991 0.000 +vt 0.599 0.986 0.000 +vt 0.593 0.996 0.000 +vt 0.589 0.989 0.000 +vt 0.562 0.570 0.000 +vt 0.573 0.994 0.000 +vt 0.579 0.987 0.000 +vt 0.584 0.996 0.000 +vt 0.581 0.953 0.000 +vt 0.592 0.953 0.000 +vt 0.561 0.988 0.000 +vt 0.572 0.981 0.000 +vt 0.563 0.978 0.000 +vt 0.500 0.970 0.000 +vt 0.500 0.943 0.000 +vt 0.511 0.956 0.000 +vt 0.500 0.956 0.000 +vt 0.868 0.132 0.000 +vt 0.867 0.090 0.000 +vt 0.916 0.092 0.000 +vt 0.918 0.133 0.000 +vt 0.554 0.066 0.000 +vt 0.612 0.070 0.000 +vt 0.619 0.103 0.000 +vt 0.558 0.095 0.000 +vt 0.815 0.169 0.000 +vt 0.758 0.148 0.000 +vt 0.747 0.102 0.000 +vt 0.814 0.126 0.000 +vt 0.770 0.072 0.000 +vt 0.817 0.087 0.000 +vt 0.552 0.038 0.000 +vt 0.551 0.020 0.000 +vt 0.602 0.021 0.000 +vt 0.605 0.039 0.000 +vt 0.821 0.050 0.000 +vt 0.867 0.055 0.000 +vt 0.712 0.053 0.000 +vt 0.700 0.022 0.000 +vt 0.739 0.023 0.000 +vt 0.740 0.052 0.000 +vt 0.652 0.022 0.000 +vt 0.659 0.043 0.000 +vt 0.913 0.055 0.000 +vt 0.959 0.055 0.000 +vt 0.960 0.091 0.000 +vt 0.999 0.089 0.000 +vt 0.999 0.131 0.000 +vt 0.962 0.133 0.000 +vt 0.999 0.053 0.000 +vt 0.778 0.038 0.000 +vt 0.917 0.177 0.000 +vt 0.965 0.178 0.000 +vt 0.674 0.083 0.000 +vt 0.685 0.124 0.000 +vt 0.999 0.175 0.000 +vt 0.500 0.037 0.000 +vt 0.500 0.066 0.000 +vt 0.871 0.175 0.000 +vt 0.500 0.019 0.000 +vt 0.500 0.092 0.000 +vt 0.999 0.002 0.000 +vt 0.958 0.002 0.000 +vt 0.867 0.002 0.000 +vt 0.823 0.002 0.000 +vt 0.908 0.002 0.000 +vt 0.601 0.002 0.000 +vt 0.550 0.002 0.000 +vt 0.697 0.002 0.000 +vt 0.650 0.002 0.000 +vt 0.782 0.002 0.000 +vt 0.740 0.002 0.000 +vt 0.500 0.002 0.000 +vt 0.468 0.923 0.000 +vt 0.459 0.929 0.000 +vt 0.458 0.923 0.000 +vt 0.465 0.917 0.000 +vt 0.479 0.984 0.000 +vt 0.495 0.998 0.000 +vt 0.479 0.996 0.000 +vt 0.496 0.917 0.000 +vt 0.485 0.918 0.000 +vt 0.484 0.910 0.000 +vt 0.493 0.910 0.000 +vt 0.477 0.921 0.000 +vt 0.475 0.913 0.000 +vt 0.451 0.958 0.000 +vt 0.450 0.946 0.000 +vt 0.456 0.942 0.000 +vt 0.462 0.954 0.000 +vt 0.455 0.935 0.000 +vt 0.450 0.932 0.000 +vt 0.467 0.967 0.000 +vt 0.453 0.974 0.000 +vt 0.467 0.994 0.000 +vt 0.458 0.987 0.000 +vt 0.384 0.254 0.000 +vt 0.381 0.292 0.000 +vt 0.342 0.307 0.000 +vt 0.347 0.261 0.000 +vt 0.364 0.438 0.000 +vt 0.353 0.414 0.000 +vt 0.373 0.396 0.000 +vt 0.380 0.419 0.000 +vt 0.114 0.312 0.000 +vt 0.156 0.308 0.000 +vt 0.140 0.369 0.000 +vt 0.103 0.370 0.000 +vt 0.260 0.593 0.000 +vt 0.232 0.598 0.000 +vt 0.241 0.541 0.000 +vt 0.259 0.542 0.000 +vt 0.356 0.213 0.000 +vt 0.356 0.174 0.000 +vt 0.434 0.146 0.000 +vt 0.439 0.175 0.000 +vt 0.420 0.254 0.000 +vt 0.435 0.256 0.000 +vt 0.435 0.268 0.000 +vt 0.415 0.277 0.000 +vt 0.456 0.195 0.000 +vt 0.410 0.217 0.000 +vt 0.229 0.721 0.000 +vt 0.206 0.663 0.000 +vt 0.242 0.653 0.000 +vt 0.264 0.712 0.000 +vt 0.331 0.622 0.000 +vt 0.348 0.651 0.000 +vt 0.335 0.669 0.000 +vt 0.315 0.632 0.000 +vt 0.377 0.588 0.000 +vt 0.373 0.599 0.000 +vt 0.361 0.590 0.000 +vt 0.368 0.582 0.000 +vt 0.359 0.632 0.000 +vt 0.343 0.612 0.000 +vt 0.381 0.580 0.000 +vt 0.373 0.576 0.000 +vt 0.377 0.573 0.000 +vt 0.383 0.575 0.000 +vt 0.292 0.702 0.000 +vt 0.271 0.646 0.000 +vt 0.353 0.601 0.000 +vt 0.367 0.614 0.000 +vt 0.396 0.718 0.000 +vt 0.404 0.682 0.000 +vt 0.433 0.686 0.000 +vt 0.426 0.725 0.000 +vt 0.410 0.649 0.000 +vt 0.438 0.648 0.000 +vt 0.416 0.769 0.000 +vt 0.382 0.756 0.000 +vt 0.414 0.587 0.000 +vt 0.414 0.580 0.000 +vt 0.432 0.579 0.000 +vt 0.434 0.586 0.000 +vt 0.431 0.574 0.000 +vt 0.414 0.573 0.000 +vt 0.413 0.627 0.000 +vt 0.438 0.627 0.000 +vt 0.413 0.610 0.000 +vt 0.413 0.596 0.000 +vt 0.435 0.595 0.000 +vt 0.437 0.608 0.000 +vt 0.479 0.441 0.000 +vt 0.483 0.445 0.000 +vt 0.480 0.450 0.000 +vt 0.474 0.450 0.000 +vt 0.280 0.504 0.000 +vt 0.262 0.494 0.000 +vt 0.273 0.446 0.000 +vt 0.291 0.467 0.000 +vt 0.344 0.383 0.000 +vt 0.327 0.403 0.000 +vt 0.316 0.368 0.000 +vt 0.340 0.348 0.000 +vt 0.428 0.371 0.000 +vt 0.419 0.374 0.000 +vt 0.419 0.364 0.000 +vt 0.427 0.365 0.000 +vt 0.307 0.431 0.000 +vt 0.292 0.400 0.000 +vt 0.391 0.383 0.000 +vt 0.396 0.401 0.000 +vt 0.443 0.364 0.000 +vt 0.444 0.364 0.000 +vt 0.443 0.366 0.000 +vt 0.441 0.365 0.000 +vt 0.448 0.367 0.000 +vt 0.448 0.364 0.000 +vt 0.432 0.377 0.000 +vt 0.434 0.370 0.000 +vt 0.439 0.374 0.000 +vt 0.406 0.377 0.000 +vt 0.406 0.363 0.000 +vt 0.347 0.551 0.000 +vt 0.334 0.545 0.000 +vt 0.342 0.523 0.000 +vt 0.356 0.534 0.000 +vt 0.363 0.480 0.000 +vt 0.351 0.459 0.000 +vt 0.375 0.458 0.000 +vt 0.338 0.434 0.000 +vt 0.443 0.345 0.000 +vt 0.454 0.337 0.000 +vt 0.457 0.349 0.000 +vt 0.447 0.353 0.000 +vt 0.414 0.403 0.000 +vt 0.409 0.389 0.000 +vt 0.421 0.382 0.000 +vt 0.427 0.392 0.000 +vt 0.428 0.343 0.000 +vt 0.422 0.353 0.000 +vt 0.410 0.347 0.000 +vt 0.416 0.331 0.000 +vt 0.457 0.355 0.000 +vt 0.447 0.358 0.000 +vt 0.447 0.499 0.000 +vt 0.447 0.477 0.000 +vt 0.458 0.484 0.000 +vt 0.459 0.507 0.000 +vt 0.461 0.532 0.000 +vt 0.469 0.513 0.000 +vt 0.471 0.541 0.000 +vt 0.449 0.538 0.000 +vt 0.448 0.521 0.000 +vt 0.462 0.552 0.000 +vt 0.124 0.429 0.000 +vt 0.092 0.437 0.000 +vt 0.392 0.340 0.000 +vt 0.371 0.336 0.000 +vt 0.401 0.314 0.000 +vt 0.309 0.326 0.000 +vt 0.252 0.426 0.000 +vt 0.277 0.365 0.000 +vt 0.245 0.489 0.000 +vt 0.436 0.825 0.000 +vt 0.467 0.834 0.000 +vt 0.442 0.886 0.000 +vt 0.410 0.868 0.000 +vt 0.363 0.789 0.000 +vt 0.335 0.817 0.000 +vt 0.298 0.774 0.000 +vt 0.327 0.755 0.000 +vt 0.260 0.787 0.000 +vt 0.460 0.686 0.000 +vt 0.455 0.727 0.000 +vt 0.462 0.572 0.000 +vt 0.449 0.550 0.000 +vt 0.480 0.546 0.000 +vt 0.478 0.517 0.000 +vt 0.479 0.728 0.000 +vt 0.476 0.777 0.000 +vt 0.448 0.775 0.000 +vt 0.482 0.687 0.000 +vt 0.485 0.650 0.000 +vt 0.375 0.671 0.000 +vt 0.382 0.644 0.000 +vt 0.409 0.533 0.000 +vt 0.411 0.518 0.000 +vt 0.431 0.527 0.000 +vt 0.429 0.539 0.000 +vt 0.455 0.436 0.000 +vt 0.451 0.425 0.000 +vt 0.472 0.413 0.000 +vt 0.475 0.427 0.000 +vt 0.444 0.449 0.000 +vt 0.437 0.439 0.000 +vt 0.486 0.395 0.000 +vt 0.487 0.409 0.000 +vt 0.468 0.396 0.000 +vt 0.434 0.511 0.000 +vt 0.416 0.500 0.000 +vt 0.423 0.478 0.000 +vt 0.436 0.490 0.000 +vt 0.429 0.457 0.000 +vt 0.439 0.468 0.000 +vt 0.446 0.561 0.000 +vt 0.452 0.569 0.000 +vt 0.448 0.569 0.000 +vt 0.443 0.563 0.000 +vt 0.373 0.847 0.000 +vt 0.355 0.898 0.000 +vt 0.326 0.871 0.000 +vt 0.224 0.920 0.000 +vt 0.217 0.887 0.000 +vt 0.271 0.888 0.000 +vt 0.291 0.921 0.000 +vt 0.379 0.920 0.000 +vt 0.307 0.947 0.000 +vt 0.465 0.642 0.000 +vt 0.455 0.599 0.000 +vt 0.458 0.618 0.000 +vt 0.448 0.377 0.000 +vt 0.441 0.383 0.000 +vt 0.469 0.470 0.000 +vt 0.472 0.457 0.000 +vt 0.483 0.456 0.000 +vt 0.480 0.472 0.000 +vt 0.470 0.438 0.000 +vt 0.483 0.436 0.000 +vt 0.472 0.383 0.000 +vt 0.474 0.374 0.000 +vt 0.488 0.374 0.000 +vt 0.487 0.384 0.000 +vt 0.474 0.366 0.000 +vt 0.488 0.367 0.000 +vt 0.474 0.362 0.000 +vt 0.488 0.362 0.000 +vt 0.489 0.422 0.000 +vt 0.492 0.457 0.000 +vt 0.489 0.472 0.000 +vt 0.479 0.491 0.000 +vt 0.488 0.491 0.000 +vt 0.488 0.519 0.000 +vt 0.489 0.550 0.000 +vt 0.490 0.583 0.000 +vt 0.480 0.576 0.000 +vt 0.346 0.584 0.000 +vt 0.334 0.589 0.000 +vt 0.331 0.567 0.000 +vt 0.344 0.568 0.000 +vt 0.295 0.639 0.000 +vt 0.282 0.591 0.000 +vt 0.320 0.592 0.000 +vt 0.316 0.563 0.000 +vt 0.363 0.575 0.000 +vt 0.355 0.579 0.000 +vt 0.355 0.567 0.000 +vt 0.364 0.566 0.000 +vt 0.277 0.546 0.000 +vt 0.298 0.554 0.000 +vt 0.303 0.592 0.000 +vt 0.421 0.298 0.000 +vt 0.440 0.287 0.000 +vt 0.446 0.307 0.000 +vt 0.430 0.317 0.000 +vt 0.466 0.318 0.000 +vt 0.462 0.300 0.000 +vt 0.481 0.296 0.000 +vt 0.483 0.314 0.000 +vt 0.438 0.362 0.000 +vt 0.441 0.360 0.000 +vt 0.443 0.362 0.000 +vt 0.441 0.363 0.000 +vt 0.439 0.368 0.000 +vt 0.437 0.365 0.000 +vt 0.469 0.351 0.000 +vt 0.469 0.358 0.000 +vt 0.457 0.360 0.000 +vt 0.389 0.437 0.000 +vt 0.387 0.475 0.000 +vt 0.376 0.497 0.000 +vt 0.420 0.445 0.000 +vt 0.410 0.466 0.000 +vt 0.402 0.418 0.000 +vt 0.352 0.501 0.000 +vt 0.367 0.516 0.000 +vt 0.359 0.554 0.000 +vt 0.370 0.541 0.000 +vt 0.267 0.331 0.000 +vt 0.249 0.313 0.000 +vt 0.294 0.252 0.000 +vt 0.304 0.288 0.000 +vt 0.317 0.535 0.000 +vt 0.326 0.508 0.000 +vt 0.001 0.696 0.000 +vt 0.033 0.695 0.000 +vt 0.050 0.772 0.000 +vt 0.014 0.778 0.000 +vt 0.400 0.811 0.000 +vt 0.448 0.361 0.000 +vt 0.454 0.364 0.000 +vt 0.453 0.367 0.000 +vt 0.475 0.254 0.000 +vt 0.478 0.274 0.000 +vt 0.458 0.280 0.000 +vt 0.454 0.261 0.000 +vt 0.369 0.369 0.000 +vt 0.322 0.460 0.000 +vt 0.338 0.482 0.000 +vt 0.324 0.977 0.000 +vt 0.238 0.981 0.000 +vt 0.230 0.948 0.000 +vt 0.155 0.915 0.000 +vt 0.165 0.891 0.000 +vt 0.431 0.560 0.000 +vt 0.431 0.564 0.000 +vt 0.420 0.563 0.000 +vt 0.418 0.558 0.000 +vt 0.410 0.544 0.000 +vt 0.429 0.548 0.000 +vt 0.349 0.731 0.000 +vt 0.365 0.701 0.000 +vt 0.391 0.606 0.000 +vt 0.393 0.593 0.000 +vt 0.457 0.570 0.000 +vt 0.447 0.556 0.000 +vt 0.444 0.574 0.000 +vt 0.448 0.580 0.000 +vt 0.415 0.551 0.000 +vt 0.431 0.554 0.000 +vt 0.441 0.566 0.000 +vt 0.450 0.458 0.000 +vt 0.451 0.325 0.000 +vt 0.468 0.330 0.000 +vt 0.390 0.364 0.000 +vt 0.411 0.432 0.000 +vt 0.422 0.417 0.000 +vt 0.430 0.357 0.000 +vt 0.435 0.351 0.000 +vt 0.438 0.356 0.000 +vt 0.435 0.360 0.000 +vt 0.443 0.364 0.000 +vt 0.444 0.364 0.000 +vt 0.443 0.371 0.000 +vt 0.452 0.371 0.000 +vt 0.238 0.385 0.000 +vt 0.487 0.445 0.000 +vt 0.492 0.444 0.000 +vt 0.061 0.378 0.000 +vt 0.026 0.384 0.000 +vt 0.028 0.321 0.000 +vt 0.068 0.316 0.000 +vt 0.395 0.572 0.000 +vt 0.395 0.578 0.000 +vt 0.395 0.584 0.000 +vt 0.441 0.571 0.000 +vt 0.438 0.333 0.000 +vt 0.469 0.343 0.000 +vt 0.486 0.338 0.000 +vt 0.484 0.324 0.000 +vt 0.468 0.488 0.000 +vt 0.466 0.448 0.000 +vt 0.462 0.455 0.000 +vt 0.455 0.448 0.000 +vt 0.460 0.446 0.000 +vt 0.459 0.466 0.000 +vt 0.388 0.623 0.000 +vt 0.433 0.366 0.000 +vt 0.487 0.356 0.000 +vt 0.486 0.348 0.000 +vt 0.457 0.363 0.000 +vt 0.448 0.364 0.000 +vt 0.469 0.362 0.000 +vt 0.488 0.361 0.000 +vt 0.491 0.433 0.000 +vt 0.401 0.557 0.000 +vt 0.397 0.551 0.000 +vt 0.373 0.570 0.000 +vt 0.369 0.571 0.000 +vt 0.375 0.566 0.000 +vt 0.379 0.567 0.000 +vt 0.378 0.569 0.000 +vt 0.471 0.234 0.000 +vt 0.450 0.245 0.000 +vt 0.143 0.816 0.000 +vt 0.114 0.748 0.000 +vt 0.149 0.737 0.000 +vt 0.175 0.804 0.000 +vt 0.202 0.856 0.000 +vt 0.179 0.866 0.000 +vt 0.190 0.729 0.000 +vt 0.217 0.797 0.000 +vt 0.245 0.848 0.000 +vt 0.466 0.215 0.000 +vt 0.437 0.233 0.000 +vt 0.452 0.588 0.000 +vt 0.092 0.854 0.000 +vt 0.116 0.835 0.000 +vt 0.081 0.761 0.000 +vt 0.053 0.512 0.000 +vt 0.026 0.519 0.000 +vt 0.026 0.452 0.000 +vt 0.056 0.446 0.000 +vt 0.113 0.498 0.000 +vt 0.085 0.504 0.000 +vt 0.110 0.556 0.000 +vt 0.083 0.564 0.000 +vt 0.001 0.634 0.000 +vt 0.001 0.579 0.000 +vt 0.025 0.577 0.000 +vt 0.027 0.633 0.000 +vt 0.118 0.614 0.000 +vt 0.132 0.671 0.000 +vt 0.099 0.679 0.000 +vt 0.089 0.622 0.000 +vt 0.167 0.667 0.000 +vt 0.292 0.836 0.000 +vt 0.199 0.303 0.000 +vt 0.174 0.364 0.000 +vt 0.393 0.544 0.000 +vt 0.387 0.529 0.000 +vt 0.459 0.380 0.000 +vt 0.462 0.372 0.000 +vt 0.463 0.366 0.000 +vt 0.463 0.363 0.000 +vt 0.402 0.945 0.000 +vt 0.476 0.902 0.000 +vt 0.401 0.489 0.000 +vt 0.391 0.563 0.000 +vt 0.388 0.559 0.000 +vt 0.404 0.563 0.000 +vt 0.443 0.569 0.000 +vt 0.380 0.571 0.000 +vt 0.382 0.569 0.000 +vt 0.384 0.569 0.000 +vt 0.439 0.568 0.000 +vt 0.431 0.568 0.000 +vt 0.421 0.567 0.000 +vt 0.393 0.567 0.000 +vt 0.387 0.567 0.000 +vt 0.384 0.564 0.000 +vt 0.394 0.568 0.000 +vt 0.413 0.568 0.000 +vt 0.370 0.565 0.000 +vt 0.452 0.389 0.000 +vt 0.399 0.452 0.000 +vt 0.471 0.566 0.000 +vt 0.316 0.686 0.000 +vt 0.128 0.222 0.000 +vt 0.179 0.214 0.000 +vt 0.175 0.258 0.000 +vt 0.124 0.265 0.000 +vt 0.439 0.119 0.000 +vt 0.229 0.304 0.000 +vt 0.203 0.363 0.000 +vt 0.274 0.227 0.000 +vt 0.223 0.371 0.000 +vt 0.053 0.571 0.000 +vt 0.001 0.388 0.000 +vt 0.001 0.456 0.000 +vt 0.001 0.524 0.000 +vt 0.064 0.877 0.000 +vt 0.144 0.945 0.000 +vt 0.001 0.323 0.000 +vt 0.065 0.689 0.000 +vt 0.224 0.240 0.000 +vt 0.072 0.265 0.000 +vt 0.001 0.267 0.000 +vt 0.031 0.264 0.000 +vt 0.057 0.628 0.000 +vt 0.194 0.622 0.000 +vt 0.149 0.611 0.000 +vt 0.308 0.489 0.000 +vt 0.369 0.558 0.000 +vt 0.374 0.560 0.000 +vt 0.378 0.562 0.000 +vt 0.445 0.413 0.000 +vt 0.430 0.429 0.000 +vt 0.461 0.440 0.000 +vt 0.476 0.607 0.000 +vt 0.469 0.591 0.000 +vt 0.378 0.549 0.000 +vt 0.384 0.554 0.000 +vt 0.393 0.509 0.000 +vt 0.299 0.520 0.000 +vt 0.436 0.403 0.000 +vt 0.489 0.615 0.000 +vt 0.383 0.568 0.000 +vt 0.364 0.139 0.000 +vt 0.236 0.192 0.000 +vt 0.033 0.219 0.000 +vt 0.079 0.220 0.000 +vt 0.292 0.168 0.000 +vt 0.001 0.218 0.000 +vt 0.197 0.523 0.000 +vt 0.209 0.508 0.000 +vt 0.217 0.527 0.000 +vt 0.206 0.535 0.000 +vt 0.211 0.571 0.000 +vt 0.203 0.562 0.000 +vt 0.187 0.591 0.000 +vt 0.185 0.578 0.000 +vt 0.161 0.583 0.000 +vt 0.165 0.574 0.000 +vt 0.150 0.569 0.000 +vt 0.155 0.560 0.000 +vt 0.145 0.539 0.000 +vt 0.153 0.535 0.000 +vt 0.150 0.501 0.000 +vt 0.159 0.502 0.000 +vt 0.186 0.438 0.000 +vt 0.191 0.452 0.000 +vt 0.172 0.472 0.000 +vt 0.164 0.464 0.000 +vt 0.208 0.427 0.000 +vt 0.210 0.441 0.000 +vt 0.182 0.567 0.000 +vt 0.193 0.550 0.000 +vt 0.169 0.561 0.000 +vt 0.161 0.553 0.000 +vt 0.163 0.534 0.000 +vt 0.169 0.505 0.000 +vt 0.196 0.465 0.000 +vt 0.180 0.479 0.000 +vt 0.214 0.460 0.000 +vt 0.227 0.456 0.000 +vt 0.221 0.433 0.000 +vt 0.203 0.489 0.000 +vt 0.211 0.486 0.000 +vt 0.215 0.495 0.000 +vt 0.228 0.537 0.000 +vt 0.219 0.583 0.000 +vt 0.188 0.602 0.000 +vt 0.152 0.587 0.000 +vt 0.138 0.546 0.000 +vt 0.141 0.500 0.000 +vt 0.157 0.450 0.000 +vt 0.180 0.412 0.000 +vt 0.209 0.404 0.000 +vt 0.227 0.417 0.000 +vt 0.236 0.447 0.000 +vt 0.194 0.496 0.000 +vt 0.187 0.487 0.000 +vt 0.199 0.477 0.000 +vt 0.213 0.478 0.000 +vt 0.222 0.489 0.000 +vt 0.178 0.538 0.000 +vt 0.178 0.510 0.000 +vt 0.233 0.492 0.000 +vt 0.130 0.496 0.000 +vt 0.149 0.425 0.000 +vt 0.128 0.552 0.000 +vt 0.484 0.930 0.000 +vt 0.472 0.934 0.000 +vt 0.463 0.938 0.000 +vt 0.470 0.952 0.000 +vt 0.480 0.955 0.000 +vt 0.484 0.970 0.000 +vt 0.488 0.942 0.000 +vt 0.478 0.944 0.000 +vt 0.388 0.569 0.000 +vt 0.385 0.572 0.000 +vt 0.424 0.968 0.000 +vt 0.437 0.961 0.000 +vt 0.438 0.969 0.000 +vt 0.427 0.973 0.000 +vt 0.418 0.961 0.000 +vt 0.429 0.956 0.000 +vt 0.389 0.961 0.000 +vt 0.399 0.955 0.000 +vt 0.405 0.960 0.000 +vt 0.394 0.967 0.000 +vt 0.429 0.569 0.000 +vt 0.405 0.566 0.000 +vt 0.393 0.978 0.000 +vt 0.383 0.975 0.000 +vt 0.384 0.967 0.000 +vt 0.401 0.986 0.000 +vt 0.395 0.991 0.000 +vt 0.386 0.982 0.000 +vt 0.411 0.989 0.000 +vt 0.407 0.996 0.000 +vt 0.438 0.570 0.000 +vt 0.427 0.994 0.000 +vt 0.416 0.996 0.000 +vt 0.421 0.987 0.000 +vt 0.419 0.953 0.000 +vt 0.408 0.953 0.000 +vt 0.439 0.988 0.000 +vt 0.428 0.981 0.000 +vt 0.437 0.978 0.000 +vt 0.489 0.956 0.000 +vt 0.132 0.132 0.000 +vt 0.082 0.133 0.000 +vt 0.084 0.092 0.000 +vt 0.133 0.090 0.000 +vt 0.446 0.066 0.000 +vt 0.442 0.095 0.000 +vt 0.381 0.103 0.000 +vt 0.388 0.070 0.000 +vt 0.185 0.169 0.000 +vt 0.186 0.126 0.000 +vt 0.253 0.102 0.000 +vt 0.242 0.148 0.000 +vt 0.230 0.072 0.000 +vt 0.183 0.087 0.000 +vt 0.448 0.038 0.000 +vt 0.395 0.039 0.000 +vt 0.398 0.021 0.000 +vt 0.449 0.020 0.000 +vt 0.133 0.055 0.000 +vt 0.179 0.050 0.000 +vt 0.288 0.053 0.000 +vt 0.260 0.052 0.000 +vt 0.261 0.023 0.000 +vt 0.300 0.022 0.000 +vt 0.341 0.043 0.000 +vt 0.348 0.022 0.000 +vt 0.087 0.055 0.000 +vt 0.040 0.091 0.000 +vt 0.041 0.055 0.000 +vt 0.038 0.133 0.000 +vt 0.001 0.131 0.000 +vt 0.001 0.089 0.000 +vt 0.001 0.053 0.000 +vt 0.222 0.038 0.000 +vt 0.083 0.177 0.000 +vt 0.035 0.178 0.000 +vt 0.326 0.083 0.000 +vt 0.315 0.124 0.000 +vt 0.001 0.175 0.000 +vt 0.129 0.175 0.000 +vt 0.001 0.002 0.000 +vt 0.042 0.002 0.000 +vt 0.133 0.002 0.000 +vt 0.177 0.002 0.000 +vt 0.092 0.002 0.000 +vt 0.399 0.002 0.000 +vt 0.450 0.002 0.000 +vt 0.303 0.002 0.000 +vt 0.350 0.002 0.000 +vt 0.218 0.002 0.000 +vt 0.260 0.002 0.000 +vt 0.558 0.967 0.000 +vt 0.557 0.976 0.000 +vt 0.500 0.997 0.000 +vt 0.588 0.975 0.000 +vt 0.442 0.967 0.000 +vt 0.443 0.976 0.000 +vt 0.412 0.975 0.000 +# 1339 texture vertices + +vn 0.001 0.482 -0.876 +vn -0.001 0.661 0.751 +vn 0.136 0.595 0.792 +vn -0.203 0.679 0.706 +vn -0.092 0.474 0.876 +vn -0.184 0.792 0.581 +vn -0.098 0.863 0.495 +vn -0.449 0.820 0.356 +vn -0.220 0.748 0.626 +vn -0.560 0.798 -0.222 +vn -0.233 0.531 -0.815 +vn 0.001 0.534 -0.845 +vn -0.135 0.596 0.791 +vn 0.203 0.676 0.708 +vn 0.091 0.476 0.875 +vn 0.189 0.792 0.581 +vn 0.099 0.862 0.496 +vn 0.444 0.821 0.360 +vn 0.221 0.747 0.627 +vn 0.556 0.801 -0.221 +vn 0.228 0.532 -0.815 +vn -0.002 0.536 -0.844 +vn -0.574 0.744 -0.343 +vn -0.485 0.523 -0.701 +vn -0.121 0.869 -0.480 +vn -0.215 0.930 -0.298 +vn -0.000 -0.806 -0.591 +vn -0.277 -0.779 -0.562 +vn -0.258 -0.731 -0.632 +vn -0.046 -0.809 -0.586 +vn -0.210 0.565 -0.798 +vn -0.094 0.624 -0.775 +vn 0.015 0.952 -0.307 +vn 0.045 0.919 -0.392 +vn -0.099 0.857 -0.505 +vn -0.379 0.493 -0.783 +vn -0.947 0.285 -0.149 +vn -0.809 -0.421 -0.411 +vn -0.895 -0.443 -0.043 +vn -0.999 -0.020 0.035 +vn -0.359 0.933 -0.019 +vn -0.809 0.586 0.047 +vn -0.667 -0.516 -0.538 +vn -0.726 -0.626 -0.285 +vn -0.001 0.671 -0.741 +vn -0.001 0.945 -0.327 +vn -0.531 -0.632 -0.565 +vn -0.618 -0.566 -0.546 +vn 0.800 -0.473 0.369 +vn 0.618 -0.771 0.151 +vn 0.693 -0.711 0.116 +vn 0.818 -0.467 0.335 +vn 0.849 -0.259 0.460 +vn 0.775 -0.130 0.619 +vn 0.667 -0.132 0.733 +vn 0.775 -0.270 0.571 +vn 0.958 -0.057 -0.280 +vn 0.763 0.033 -0.646 +vn 0.763 -0.153 -0.628 +vn 0.911 -0.129 -0.391 +vn 0.990 0.067 0.126 +vn 0.979 0.090 0.185 +vn 0.981 0.057 0.184 +vn 0.996 0.020 0.090 +vn 0.770 -0.392 0.504 +vn 0.657 -0.721 0.219 +vn 0.478 -0.656 0.584 +vn 0.599 -0.389 0.700 +vn 0.498 -0.846 0.192 +vn 0.537 -0.840 0.082 +vn 0.740 -0.557 0.378 +vn 0.668 -0.570 0.479 +vn 0.280 -0.914 0.294 +vn 0.421 -0.898 0.126 +vn 0.991 0.084 0.103 +vn 0.964 0.223 0.143 +vn 0.960 0.189 0.207 +vn 0.979 0.103 0.175 +vn 0.868 0.172 0.465 +vn 0.907 0.085 0.413 +vn 0.938 0.144 0.316 +vn 0.897 0.178 0.405 +vn 0.662 -0.174 0.729 +vn 0.583 -0.417 0.697 +vn 0.627 -0.449 0.637 +vn 0.685 -0.405 0.605 +vn 0.827 0.091 0.555 +vn 0.890 0.018 0.455 +vn 0.663 -0.395 0.636 +vn 0.606 -0.428 0.671 +vn 0.313 -0.735 0.602 +vn -0.136 -0.864 0.485 +vn 0.951 0.158 0.267 +vn 0.964 0.113 0.241 +vn 0.731 -0.036 0.681 +vn 0.819 -0.134 0.558 +vn 0.546 0.270 0.793 +vn 0.602 0.237 0.763 +vn 0.444 0.233 0.865 +vn 0.353 0.173 0.920 +vn 0.240 -0.093 0.966 +vn 0.498 0.051 0.866 +vn 0.675 0.338 0.656 +vn 0.480 0.400 0.780 +vn 0.064 -0.572 0.818 +vn 0.126 -0.313 0.941 +vn 0.207 -0.613 0.763 +vn 0.221 -0.810 0.544 +vn 0.598 -0.694 -0.401 +vn 0.124 -0.977 -0.175 +vn 0.218 -0.333 0.917 +vn 0.377 -0.161 0.912 +vn 0.142 -0.210 0.967 +vn 0.256 -0.155 0.954 +vn 0.111 -0.351 0.930 +vn 0.107 -0.480 0.871 +vn 0.675 -0.732 -0.096 +vn 0.496 -0.844 0.206 +vn -0.016 -0.986 0.167 +vn 0.304 -0.948 0.097 +vn 0.982 -0.082 0.171 +vn 0.963 -0.002 0.269 +vn 0.967 -0.134 0.216 +vn 0.969 -0.177 0.175 +vn 0.916 -0.244 0.319 +vn 0.853 -0.341 0.394 +vn 0.837 -0.365 0.407 +vn 0.886 -0.281 0.368 +vn 0.422 -0.292 0.858 +vn 0.039 -0.571 0.820 +vn -0.011 -0.399 0.917 +vn 0.333 -0.349 0.876 +vn 0.935 -0.237 0.263 +vn 0.949 -0.159 0.273 +vn 0.697 -0.213 0.685 +vn 0.568 -0.123 0.814 +vn -0.938 0.322 0.130 +vn -0.609 -0.738 -0.291 +vn -0.447 -0.857 -0.258 +vn 0.259 -0.528 0.809 +vn 0.137 -0.704 0.697 +vn -0.107 -0.741 0.663 +vn 0.647 -0.296 0.703 +vn 0.603 -0.168 0.780 +vn 0.836 0.072 0.545 +vn 0.744 0.114 0.659 +vn 0.701 0.149 0.698 +vn 0.802 0.157 0.577 +vn 0.823 -0.080 0.562 +vn 0.690 0.142 0.710 +vn 0.628 0.036 0.778 +vn 0.894 -0.247 0.373 +vn 0.624 -0.153 0.766 +vn 0.661 0.110 0.742 +vn 0.712 0.424 0.559 +vn 0.701 0.284 0.654 +vn 0.504 -0.050 0.862 +vn 0.413 0.027 0.910 +vn 0.569 0.046 0.821 +vn 0.488 -0.134 0.862 +vn 0.411 -0.180 0.894 +vn 0.610 -0.024 0.792 +vn 0.747 -0.250 0.616 +vn 0.672 -0.313 0.671 +vn 0.536 0.762 0.363 +vn 0.559 0.768 0.312 +vn 0.802 0.272 0.531 +vn 0.618 0.206 0.759 +vn 0.717 0.383 0.583 +vn 0.780 0.464 0.420 +vn 0.617 0.401 0.678 +vn 0.658 0.397 0.640 +vn 0.672 0.440 0.596 +vn 0.501 0.314 0.807 +vn 0.612 0.527 0.589 +vn 0.679 0.320 0.661 +vn 0.732 -0.406 -0.547 +vn 0.885 -0.261 -0.386 +vn 0.842 -0.347 0.414 +vn 0.782 -0.349 0.517 +vn 0.784 -0.368 0.500 +vn 0.858 -0.453 0.244 +vn 0.953 -0.279 0.118 +vn 0.977 -0.189 0.104 +vn 0.989 -0.110 0.102 +vn 0.142 0.669 0.730 +vn 0.300 0.652 0.696 +vn 0.291 0.792 0.536 +vn 0.143 0.821 0.553 +vn 0.737 0.561 0.378 +vn 0.716 0.470 0.515 +vn 0.884 0.306 0.353 +vn 0.898 0.354 0.263 +vn 0.890 0.423 0.171 +vn 0.174 0.078 0.982 +vn 0.219 0.254 0.942 +vn 0.665 -0.104 0.739 +vn 0.671 0.390 0.631 +vn 0.596 0.435 0.675 +vn 0.636 0.467 0.614 +vn 0.076 0.244 0.967 +vn 0.261 0.437 0.861 +vn 0.107 0.440 0.892 +vn 0.011 0.082 0.997 +vn 0.005 0.082 0.997 +vn 0.028 -0.027 0.999 +vn 0.073 -0.057 0.996 +vn 0.006 0.228 0.974 +vn 0.683 0.140 0.717 +vn 0.724 0.233 0.650 +vn 0.400 0.338 0.852 +vn 0.270 0.126 0.955 +vn 0.357 0.433 0.828 +vn 0.503 0.485 0.716 +vn 0.536 0.133 0.834 +vn 0.416 -0.306 0.856 +vn 0.337 0.097 0.937 +vn 0.262 0.372 0.891 +vn 0.425 0.075 0.902 +vn 0.701 -0.147 0.698 +vn -0.056 0.558 0.828 +vn 0.005 0.605 0.796 +vn 0.483 0.327 0.812 +vn 0.497 0.276 0.823 +vn 0.505 0.283 0.815 +vn 0.340 -0.030 0.940 +vn 0.332 0.066 0.941 +vn 0.026 0.644 0.765 +vn 0.021 0.538 0.843 +vn 0.170 -0.012 0.985 +vn 0.365 -0.067 0.929 +vn 0.826 -0.173 0.537 +vn 0.320 0.415 0.852 +vn 0.384 0.739 0.554 +vn 0.987 -0.013 0.160 +vn 0.495 0.720 0.487 +vn 0.490 0.830 0.268 +vn 0.279 0.906 0.317 +vn 0.431 0.899 -0.074 +vn 0.267 0.957 -0.112 +vn 0.283 0.953 0.107 +vn 0.471 0.877 0.092 +vn 0.132 0.985 0.113 +vn 0.135 0.931 0.339 +vn 0.190 -0.184 0.964 +vn 0.292 -0.372 0.881 +vn 0.307 -0.447 0.840 +vn 0.393 -0.580 0.713 +vn 0.524 -0.286 0.802 +vn 0.380 -0.582 0.719 +vn 0.697 0.212 0.685 +vn 0.603 0.070 0.795 +vn 0.558 -0.571 0.602 +vn -0.089 -0.701 0.707 +vn 0.794 -0.345 0.500 +vn 0.345 -0.517 0.783 +vn 0.481 0.101 0.871 +vn 0.134 0.283 0.950 +vn 0.113 -0.558 0.822 +vn -0.073 -0.993 0.089 +vn -0.041 -0.994 0.103 +vn 0.084 -0.038 0.996 +vn -0.012 -0.622 0.783 +vn -0.002 0.254 0.967 +vn 0.004 -0.997 0.079 +vn 0.001 -0.832 -0.555 +vn 0.477 -0.363 0.801 +vn 0.414 0.160 0.896 +vn 0.395 0.485 0.780 +vn 0.611 0.484 0.627 +vn 0.406 0.510 0.758 +vn 0.375 0.498 0.782 +vn 0.555 0.314 0.770 +vn 0.349 0.411 0.842 +vn 0.012 0.247 0.969 +vn 0.002 -0.369 0.930 +vn -0.003 0.509 0.861 +vn 0.876 -0.041 0.481 +vn 0.757 -0.214 0.618 +vn 0.737 -0.048 0.674 +vn 0.840 -0.012 0.542 +vn 0.960 0.137 0.243 +vn 0.969 0.103 0.226 +vn 0.909 0.015 0.417 +vn 0.906 0.015 0.423 +vn 0.676 -0.276 0.683 +vn 0.688 -0.223 0.691 +vn 0.691 0.035 0.722 +vn 0.719 -0.082 0.691 +vn 0.964 0.062 0.260 +vn 0.956 0.070 0.286 +vn 0.953 0.037 0.300 +vn -0.003 -0.415 0.910 +vn -0.001 -0.380 0.925 +vn 0.658 -0.419 0.625 +vn 0.735 -0.421 0.532 +vn 0.663 -0.303 0.685 +vn 0.550 -0.321 0.771 +vn 0.423 -0.236 0.875 +vn 0.326 -0.294 0.899 +vn 0.124 -0.396 0.910 +vn 0.218 -0.177 0.960 +vn 0.530 0.781 0.331 +vn 0.167 0.827 0.537 +vn 0.094 0.948 0.303 +vn 0.313 0.934 0.171 +vn -0.406 -0.892 0.201 +vn -0.743 0.107 0.661 +vn 0.455 0.704 0.546 +vn 0.288 0.957 0.025 +vn 0.245 0.958 0.150 +vn 0.532 -0.027 0.846 +vn 0.566 0.213 0.796 +vn 0.508 0.208 0.836 +vn 0.173 0.028 0.984 +vn 0.371 0.122 0.921 +vn 0.429 -0.045 0.902 +vn 0.614 0.165 0.772 +vn 0.737 0.157 0.657 +vn 0.726 0.057 0.685 +vn 0.662 0.061 0.747 +vn 0.845 -0.523 -0.112 +vn 0.845 -0.501 -0.185 +vn 0.744 -0.668 0.009 +vn 0.773 -0.630 0.079 +vn 0.889 0.108 0.445 +vn 0.899 0.077 0.430 +vn 0.184 0.204 -0.961 +vn 0.005 0.202 -0.979 +vn -0.000 0.485 -0.875 +vn 0.159 0.484 -0.861 +vn 0.499 0.592 0.633 +vn 0.305 0.950 0.065 +vn -0.274 -0.953 -0.127 +vn 0.245 -0.456 0.856 +vn 0.083 -0.881 0.465 +vn 0.435 -0.739 0.515 +vn 0.504 -0.429 0.750 +vn 0.818 -0.367 0.443 +vn 0.933 -0.162 0.322 +vn 0.872 0.029 0.489 +vn 0.002 0.994 0.113 +vn 0.133 0.983 -0.126 +vn -0.001 0.992 -0.127 +vn 0.280 0.892 -0.356 +vn 0.126 0.916 -0.381 +vn 0.210 0.974 -0.083 +vn -0.082 0.663 0.745 +vn -0.059 0.391 0.919 +vn 0.111 0.992 -0.055 +vn 0.081 -0.190 0.978 +vn 0.035 0.076 0.996 +vn 0.852 0.236 0.467 +vn 0.775 0.219 0.593 +vn 0.505 -0.109 0.856 +vn 0.446 -0.314 0.838 +vn 0.511 0.200 0.836 +vn 0.623 -0.242 0.744 +vn 0.436 -0.554 0.709 +vn 0.599 -0.742 0.300 +vn -0.036 0.177 0.984 +vn -0.039 -0.159 0.987 +vn 0.308 0.942 -0.135 +vn 0.989 0.093 -0.111 +vn 0.477 -0.259 0.840 +vn 0.473 -0.423 0.773 +vn 0.774 -0.329 0.541 +vn 0.285 0.019 0.958 +vn 0.350 0.101 0.931 +vn 0.579 0.261 0.773 +vn 0.298 0.015 0.954 +vn 0.165 0.336 0.927 +vn 0.577 0.511 0.636 +vn 0.254 -0.834 0.490 +vn -0.114 -0.925 0.363 +vn 0.941 -0.280 -0.188 +vn 0.460 -0.738 0.493 +vn 0.740 -0.635 0.221 +vn 0.003 0.529 0.849 +vn 0.206 -0.427 -0.881 +vn 0.497 -0.316 -0.808 +vn 0.457 -0.144 -0.878 +vn 0.179 -0.244 -0.953 +vn -0.182 -0.980 -0.078 +vn 0.342 -0.427 0.837 +vn 0.424 -0.296 0.856 +vn 0.896 -0.357 -0.264 +vn 0.594 -0.104 0.798 +vn 0.012 0.528 0.849 +vn 0.042 0.469 0.882 +vn 0.624 0.102 0.775 +vn 0.324 -0.123 0.938 +vn 0.202 -0.638 0.743 +vn 0.714 0.512 0.477 +vn 0.433 -0.511 0.742 +vn -0.350 -0.708 0.613 +vn 0.095 -0.410 0.907 +vn 0.622 -0.593 0.512 +vn 0.846 0.304 0.437 +vn 0.582 -0.043 0.812 +vn -0.226 -0.380 0.897 +vn 0.215 0.644 0.734 +vn 0.123 0.952 0.280 +vn -0.004 0.956 0.293 +vn -0.005 0.635 0.772 +vn 0.325 -0.730 0.601 +vn -0.017 -0.840 0.543 +vn 0.017 -0.788 0.616 +vn 0.294 -0.138 0.946 +vn 0.214 0.401 0.891 +vn -0.150 0.490 0.859 +vn 0.573 -0.125 0.810 +vn -0.134 0.957 0.258 +vn 0.252 0.828 0.501 +vn -0.673 0.643 0.364 +vn 0.004 -0.960 0.279 +vn 0.032 -0.991 0.133 +vn 0.006 -0.908 0.419 +vn 0.180 -0.980 0.086 +vn 0.740 0.403 -0.538 +vn 0.627 0.652 -0.426 +vn 0.814 0.561 -0.149 +vn 0.925 0.321 -0.206 +vn 0.492 0.825 -0.280 +vn 0.649 0.757 -0.076 +vn 0.966 0.258 0.022 +vn 0.864 0.501 0.053 +vn 0.680 0.729 0.077 +vn 0.272 -0.962 -0.032 +vn 0.225 -0.968 0.111 +vn 0.288 -0.510 0.810 +vn 0.126 0.748 -0.651 +vn 0.340 0.725 -0.598 +vn 0.421 0.466 -0.778 +vn 0.205 -0.458 -0.865 +vn 0.489 -0.479 -0.729 +vn 0.500 -0.523 -0.690 +vn 0.210 -0.566 -0.798 +vn 0.895 -0.322 -0.309 +vn 0.759 -0.434 -0.485 +vn 0.797 -0.287 -0.532 +vn 0.937 -0.248 -0.245 +vn -0.001 -0.238 -0.971 +vn -0.000 -0.025 -1.000 +vn 0.194 -0.025 -0.981 +vn 0.201 -0.248 -0.948 +vn 0.969 0.094 -0.229 +vn 0.968 -0.101 -0.228 +vn 0.814 -0.088 -0.575 +vn 0.800 0.142 -0.583 +vn 0.998 0.061 -0.010 +vn 0.726 0.657 0.205 +vn 0.000 -0.985 0.174 +vn 0.985 -0.166 0.038 +vn 0.955 -0.220 -0.200 +vn 0.472 0.076 0.879 +vn 0.343 -0.235 0.909 +vn 0.464 -0.641 0.612 +vn 0.578 -0.186 0.795 +vn -0.189 -0.982 0.010 +vn 0.004 0.938 0.345 +vn 0.002 0.829 0.559 +vn 0.445 0.232 0.865 +vn 0.463 0.340 0.818 +vn -0.116 0.983 0.143 +vn 0.004 0.995 0.102 +vn 0.978 0.204 0.044 +vn -0.967 -0.216 -0.137 +vn -0.911 -0.347 0.224 +vn -0.728 0.350 0.590 +vn 0.426 0.738 -0.523 +vn 0.618 0.786 0.011 +vn 0.151 0.857 -0.493 +vn -0.333 0.912 -0.241 +vn -0.277 0.956 0.095 +vn -0.569 0.822 -0.032 +vn -0.341 -0.671 -0.658 +vn 0.161 -0.736 -0.657 +vn 0.528 0.432 0.731 +vn 0.586 0.105 0.803 +vn 0.436 0.074 0.897 +vn 0.621 0.267 0.737 +vn 0.936 0.153 0.316 +vn 0.999 -0.010 0.042 +vn 0.826 0.281 -0.489 +vn 0.775 0.178 -0.606 +vn 0.995 -0.039 -0.095 +vn 0.005 -0.414 0.910 +vn 0.580 -0.243 0.778 +vn 0.938 -0.339 -0.068 +vn 0.925 -0.371 0.080 +vn 0.888 -0.269 0.373 +vn 0.923 -0.371 -0.106 +vn 0.494 -0.274 -0.825 +vn -0.001 -0.456 -0.890 +vn -0.002 -0.569 -0.822 +vn -0.001 -0.452 -0.892 +vn -0.003 0.749 -0.663 +vn -0.000 0.920 -0.391 +vn -0.001 -0.280 -0.960 +vn 0.470 0.194 -0.861 +vn 0.965 -0.123 0.234 +vn 0.400 -0.039 -0.916 +vn 0.142 -0.166 -0.976 +vn -0.000 -0.194 -0.981 +vn 0.497 -0.049 -0.867 +vn 0.998 0.042 0.045 +vn 0.996 -0.037 -0.082 +vn 0.009 0.433 0.901 +vn 0.004 0.669 0.743 +vn 0.955 0.004 0.296 +vn 0.737 -0.001 0.675 +vn 0.707 0.177 0.684 +vn 0.484 0.627 0.610 +vn 0.515 0.250 0.820 +vn 0.360 0.121 0.925 +vn -0.544 -0.573 0.613 +vn 0.382 -0.114 0.917 +vn 0.489 -0.108 0.866 +vn -0.002 -0.670 0.742 +vn 0.002 -0.394 0.919 +vn -0.004 -0.168 0.986 +vn 0.007 -0.109 0.994 +vn 0.009 -0.519 0.855 +vn 0.660 -0.118 0.742 +vn 0.621 -0.127 0.774 +vn 0.416 0.220 0.882 +vn 0.946 0.046 0.322 +vn 0.014 0.006 1.000 +vn 0.569 0.184 0.802 +vn 0.218 0.013 0.976 +vn 0.044 0.087 0.995 +vn -0.419 0.862 0.284 +vn 0.647 -0.120 0.753 +vn 0.954 -0.017 0.301 +vn 0.352 0.140 -0.926 +vn 0.095 -0.050 -0.994 +vn 0.770 0.025 0.638 +vn 0.000 -0.078 -0.997 +vn 0.985 -0.172 0.009 +vn 0.920 -0.340 0.195 +vn 0.929 -0.331 -0.163 +vn 0.969 -0.237 0.074 +vn 0.969 -0.183 0.165 +vn 0.801 0.160 0.577 +vn 0.954 -0.021 0.301 +vn 0.293 0.803 0.520 +vn 0.977 0.170 0.129 +vn 0.134 0.985 -0.104 +vn 0.994 0.106 -0.036 +vn 0.099 0.675 -0.731 +vn 0.997 -0.079 -0.000 +vn 0.197 0.126 -0.972 +vn 0.978 -0.175 -0.110 +vn 0.110 -0.321 -0.941 +vn 0.939 -0.332 -0.089 +vn 0.400 -0.789 -0.467 +vn 0.171 -0.673 -0.720 +vn 0.931 -0.336 -0.144 +vn 0.854 -0.500 0.146 +vn 0.161 -0.985 -0.069 +vn 0.931 -0.304 -0.200 +vn 0.813 -0.565 -0.143 +vn 0.823 -0.546 0.154 +vn 0.795 -0.387 0.467 +vn 0.809 -0.168 0.563 +vn 0.826 0.053 0.562 +vn 0.925 0.261 0.275 +vn 0.990 0.071 0.119 +vn 0.951 0.129 0.281 +vn 0.810 -0.147 0.568 +vn 0.383 -0.603 0.699 +vn 0.769 0.635 0.079 +vn 0.786 0.352 0.508 +vn 0.919 0.082 -0.386 +vn 0.937 0.163 0.310 +vn 0.974 -0.026 0.224 +vn 0.787 0.550 0.279 +vn 0.517 0.758 -0.397 +vn 0.337 0.112 -0.935 +vn 0.221 -0.300 -0.928 +vn 0.395 -0.578 -0.714 +vn 0.521 -0.711 -0.472 +vn 0.432 -0.901 -0.043 +vn 0.826 -0.520 0.218 +vn 0.885 -0.217 0.412 +vn 0.786 -0.107 0.609 +vn 0.864 0.400 0.304 +vn 0.954 0.061 0.293 +vn 0.949 0.313 0.046 +vn 0.991 0.028 -0.131 +vn 0.945 -0.116 0.305 +vn 0.970 -0.241 0.032 +vn 0.946 -0.038 0.322 +vn 0.886 -0.270 -0.376 +vn 0.855 -0.272 -0.441 +vn 0.952 -0.122 -0.281 +vn 0.002 -0.883 0.469 +vn -0.001 0.792 -0.611 +vn -0.180 0.823 -0.539 +vn -0.642 0.677 -0.360 +vn -0.957 0.288 -0.031 +vn -0.912 -0.300 0.281 +vn -0.454 -0.866 0.207 +vn -0.855 -0.043 0.517 +vn -0.834 0.460 0.305 +vn -0.242 0.911 0.334 +vn -0.720 -0.667 -0.192 +vn -0.762 -0.580 -0.288 +vn 0.452 0.774 0.444 +vn 0.857 0.048 0.513 +vn 0.966 0.131 0.225 +vn 0.211 0.953 0.219 +vn -0.108 0.726 0.679 +vn 0.021 0.946 0.324 +vn 0.566 -0.691 -0.450 +vn -0.068 0.939 -0.338 +vn -0.261 -0.298 0.918 +vn -0.200 -0.891 0.407 +vn 0.124 -0.991 0.059 +vn 0.913 -0.350 -0.211 +vn 0.488 -0.838 0.244 +vn 0.738 -0.593 0.322 +vn 0.994 -0.060 -0.087 +vn -0.000 -0.981 0.193 +vn 0.000 0.974 0.227 +vn -0.350 -0.016 0.936 +vn 0.000 -0.017 1.000 +vn 0.252 0.455 -0.854 +vn 0.774 0.620 -0.127 +vn 0.634 0.759 -0.148 +vn 0.192 0.569 -0.800 +vn 0.405 -0.094 0.909 +vn 0.031 0.149 0.988 +vn 0.360 0.283 0.889 +vn 0.469 0.080 0.880 +vn 0.769 0.452 0.452 +vn 0.946 0.185 0.266 +vn 0.893 0.181 0.413 +vn 0.654 0.429 0.623 +vn 0.506 0.610 0.610 +vn 0.436 0.659 0.613 +vn 0.160 0.558 0.814 +vn -0.285 0.396 0.873 +vn -0.223 0.539 0.812 +vn 0.037 0.570 0.821 +vn 0.623 0.727 -0.289 +vn 0.456 0.738 0.497 +vn 0.382 0.656 0.651 +vn 0.278 0.687 0.671 +vn 0.213 0.798 0.563 +vn 0.171 0.844 0.508 +vn 0.300 0.690 0.659 +vn 0.144 0.793 0.591 +vn 0.204 0.541 -0.816 +vn -0.001 0.494 -0.870 +vn 0.029 0.458 -0.888 +vn 0.060 0.366 -0.929 +vn 0.000 0.421 -0.907 +vn 0.000 0.386 -0.922 +vn 0.001 0.455 -0.891 +vn 0.264 0.718 0.644 +vn 0.307 0.317 -0.897 +vn 0.056 0.164 -0.985 +vn 0.717 0.079 0.693 +vn 0.638 0.188 0.746 +vn 0.000 0.202 -0.979 +vn 0.006 -0.044 0.999 +vn 0.001 0.405 0.914 +vn 0.805 0.560 -0.194 +vn 0.002 0.627 0.779 +vn 0.010 -0.298 0.954 +vn 0.124 0.870 -0.477 +vn 0.488 0.530 -0.693 +vn 0.566 0.756 -0.329 +vn 0.213 0.932 -0.294 +vn 0.245 -0.741 -0.626 +vn 0.275 -0.782 -0.559 +vn 0.044 -0.811 -0.584 +vn -0.012 0.949 -0.315 +vn 0.097 0.621 -0.778 +vn 0.215 0.561 -0.799 +vn -0.030 0.913 -0.407 +vn 0.378 0.505 -0.776 +vn 0.084 0.865 -0.495 +vn 0.892 -0.451 -0.026 +vn 0.803 -0.447 -0.394 +vn 0.954 0.274 -0.123 +vn 0.998 -0.024 0.066 +vn 0.806 0.588 0.057 +vn 0.351 0.936 -0.012 +vn 0.662 -0.536 -0.524 +vn 0.725 -0.630 -0.278 +vn 0.524 -0.662 -0.536 +vn 0.620 -0.585 -0.522 +vn -0.694 -0.711 0.115 +vn -0.621 -0.770 0.148 +vn -0.805 -0.470 0.362 +vn -0.819 -0.465 0.335 +vn -0.680 -0.145 0.719 +vn -0.763 -0.140 0.631 +vn -0.840 -0.272 0.470 +vn -0.773 -0.256 0.580 +vn -0.763 -0.155 -0.627 +vn -0.763 0.034 -0.645 +vn -0.958 -0.057 -0.281 +vn -0.910 -0.129 -0.393 +vn -0.983 0.060 0.175 +vn -0.980 0.096 0.177 +vn -0.990 0.069 0.123 +vn -0.996 0.023 0.083 +vn -0.484 -0.649 0.587 +vn -0.662 -0.717 0.220 +vn -0.775 -0.388 0.499 +vn -0.606 -0.384 0.697 +vn -0.748 -0.556 0.363 +vn -0.539 -0.840 0.071 +vn -0.496 -0.849 0.183 +vn -0.668 -0.580 0.467 +vn -0.280 -0.913 0.296 +vn -0.424 -0.897 0.125 +vn -0.960 0.187 0.209 +vn -0.965 0.222 0.143 +vn -0.991 0.084 0.104 +vn -0.979 0.104 0.175 +vn -0.940 0.170 0.295 +vn -0.909 0.107 0.404 +vn -0.862 0.204 0.464 +vn -0.896 0.204 0.395 +vn -0.570 -0.493 0.658 +vn -0.531 -0.465 0.709 +vn -0.651 -0.181 0.737 +vn -0.688 -0.376 0.620 +vn -0.892 0.030 0.452 +vn -0.827 0.122 0.549 +vn -0.345 -0.706 0.619 +vn -0.566 -0.461 0.684 +vn -0.543 -0.393 0.742 +vn -0.097 -0.841 0.533 +vn -0.964 0.119 0.237 +vn -0.950 0.158 0.268 +vn -0.733 -0.024 0.679 +vn -0.825 -0.117 0.552 +vn -0.442 0.232 0.866 +vn -0.605 0.237 0.760 +vn -0.556 0.267 0.787 +vn -0.350 0.172 0.921 +vn -0.239 -0.096 0.966 +vn -0.501 0.068 0.863 +vn -0.679 0.342 0.650 +vn -0.486 0.403 0.776 +vn -0.211 -0.600 0.772 +vn -0.123 -0.334 0.934 +vn -0.052 -0.530 0.847 +vn -0.176 -0.798 0.577 +vn -0.131 -0.968 -0.212 +vn -0.598 -0.684 -0.418 +vn -0.205 -0.329 0.922 +vn -0.374 -0.151 0.915 +vn -0.117 -0.376 0.919 +vn -0.246 -0.160 0.956 +vn -0.126 -0.268 0.955 +vn -0.137 -0.531 0.837 +vn 0.062 -0.980 0.190 +vn -0.478 -0.855 0.203 +vn -0.669 -0.734 -0.114 +vn -0.286 -0.955 0.083 +vn -0.967 -0.136 0.215 +vn -0.965 -0.005 0.263 +vn -0.983 -0.085 0.164 +vn -0.969 -0.182 0.170 +vn -0.840 -0.358 0.408 +vn -0.857 -0.341 0.386 +vn -0.910 -0.256 0.326 +vn -0.884 -0.284 0.371 +vn 0.022 -0.449 0.893 +vn -0.046 -0.611 0.791 +vn -0.478 -0.294 0.827 +vn -0.375 -0.338 0.863 +vn -0.935 -0.243 0.259 +vn -0.949 -0.164 0.269 +vn -0.736 -0.207 0.645 +vn -0.587 -0.108 0.802 +vn 0.945 0.284 0.163 +vn 0.592 -0.756 -0.279 +vn 0.442 -0.866 -0.236 +vn -0.053 -0.740 0.670 +vn -0.228 -0.529 0.817 +vn 0.170 -0.772 0.613 +vn -0.609 -0.162 0.777 +vn -0.663 -0.292 0.690 +vn -0.713 0.145 0.686 +vn -0.759 0.059 0.648 +vn -0.825 0.047 0.564 +vn -0.809 0.158 0.566 +vn -0.637 0.025 0.770 +vn -0.687 0.129 0.715 +vn -0.821 -0.086 0.564 +vn -0.891 -0.252 0.378 +vn -0.721 0.489 0.490 +vn -0.698 0.164 0.697 +vn -0.646 -0.143 0.750 +vn -0.712 0.352 0.608 +vn -0.567 0.074 0.821 +vn -0.464 0.032 0.885 +vn -0.518 -0.023 0.855 +vn -0.550 -0.128 0.825 +vn -0.756 -0.260 0.601 +vn -0.645 -0.025 0.764 +vn -0.437 -0.158 0.885 +vn -0.687 -0.310 0.657 +vn -0.541 0.781 0.313 +vn -0.565 0.780 0.270 +vn -0.712 0.385 0.587 +vn -0.611 0.201 0.765 +vn -0.859 0.335 0.388 +vn -0.775 0.474 0.417 +vn -0.673 0.387 0.630 +vn -0.628 0.400 0.668 +vn -0.676 0.438 0.592 +vn -0.698 0.309 0.646 +vn -0.622 0.535 0.573 +vn -0.511 0.327 0.795 +vn -0.733 -0.405 -0.547 +vn -0.884 -0.261 -0.388 +vn -0.791 -0.366 0.490 +vn -0.793 -0.344 0.502 +vn -0.844 -0.347 0.408 +vn -0.858 -0.453 0.243 +vn -0.953 -0.280 0.116 +vn -0.976 -0.193 0.100 +vn -0.989 -0.113 0.096 +vn -0.289 0.792 0.537 +vn -0.301 0.654 0.693 +vn -0.134 0.672 0.728 +vn -0.137 0.821 0.554 +vn -0.884 0.305 0.354 +vn -0.716 0.471 0.515 +vn -0.736 0.562 0.377 +vn -0.897 0.355 0.265 +vn -0.890 0.422 0.171 +vn -0.179 0.082 0.981 +vn -0.216 0.250 0.944 +vn -0.661 -0.125 0.740 +vn -0.679 0.371 0.633 +vn -0.636 0.460 0.620 +vn -0.594 0.426 0.682 +vn -0.258 0.436 0.862 +vn -0.070 0.240 0.968 +vn -0.095 0.440 0.893 +vn -0.011 0.089 0.996 +vn -0.069 -0.049 0.996 +vn -0.719 0.247 0.649 +vn -0.673 0.172 0.719 +vn -0.353 0.447 0.822 +vn -0.270 0.134 0.954 +vn -0.440 0.328 0.836 +vn -0.511 0.490 0.706 +vn -0.342 0.114 0.933 +vn -0.435 -0.298 0.849 +vn -0.552 0.158 0.818 +vn -0.273 0.369 0.888 +vn -0.705 -0.192 0.683 +vn -0.357 0.088 0.930 +vn -0.499 0.346 0.795 +vn 0.009 0.585 0.811 +vn 0.086 0.584 0.807 +vn -0.348 -0.035 0.937 +vn -0.516 0.299 0.803 +vn -0.512 0.295 0.806 +vn -0.339 0.070 0.938 +vn -0.348 -0.070 0.935 +vn -0.148 -0.003 0.989 +vn -0.349 0.750 0.561 +vn -0.322 0.418 0.849 +vn -0.890 -0.163 0.425 +vn -0.990 -0.001 0.144 +vn -0.500 0.824 0.267 +vn -0.501 0.717 0.484 +vn -0.285 0.905 0.315 +vn -0.282 0.954 0.103 +vn -0.268 0.957 -0.114 +vn -0.433 0.898 -0.078 +vn -0.473 0.876 0.093 +vn -0.131 0.985 0.111 +vn -0.127 0.932 0.339 +vn -0.211 -0.186 0.960 +vn -0.293 -0.359 0.886 +vn -0.344 -0.465 0.816 +vn -0.382 -0.591 0.710 +vn -0.525 -0.255 0.812 +vn -0.598 0.089 0.796 +vn -0.688 0.244 0.683 +vn -0.344 -0.576 0.742 +vn -0.544 -0.583 0.603 +vn 0.098 -0.695 0.712 +vn -0.805 -0.326 0.496 +vn -0.132 0.306 0.943 +vn -0.485 0.160 0.860 +vn -0.351 -0.498 0.793 +vn -0.141 -0.499 0.855 +vn 0.065 -0.990 0.123 +vn 0.037 -0.989 0.143 +vn -0.065 -0.055 0.996 +vn -0.473 -0.369 0.800 +vn -0.396 0.179 0.900 +vn -0.600 0.505 0.620 +vn -0.387 0.499 0.776 +vn -0.398 0.505 0.766 +vn -0.358 0.488 0.796 +vn -0.570 0.304 0.763 +vn -0.317 0.412 0.854 +vn -0.742 -0.129 0.658 +vn -0.771 -0.207 0.602 +vn -0.881 -0.036 0.472 +vn -0.841 -0.052 0.538 +vn -0.972 0.111 0.208 +vn -0.961 0.151 0.230 +vn -0.916 -0.004 0.402 +vn -0.913 0.013 0.408 +vn -0.689 0.026 0.724 +vn -0.641 -0.316 0.699 +vn -0.647 -0.304 0.699 +vn -0.697 -0.094 0.711 +vn -0.966 0.063 0.249 +vn -0.963 0.075 0.259 +vn -0.958 0.031 0.287 +vn -0.681 -0.315 0.661 +vn -0.745 -0.412 0.525 +vn -0.666 -0.413 0.621 +vn -0.548 -0.335 0.767 +vn -0.107 -0.395 0.913 +vn -0.299 -0.320 0.899 +vn -0.418 -0.236 0.877 +vn -0.210 -0.169 0.963 +vn -0.090 0.952 0.291 +vn -0.166 0.838 0.520 +vn -0.523 0.797 0.302 +vn -0.302 0.941 0.154 +vn 0.408 -0.888 0.211 +vn 0.735 0.117 0.668 +vn -0.279 0.960 0.001 +vn -0.468 0.706 0.531 +vn -0.232 0.964 0.131 +vn -0.555 -0.033 0.831 +vn -0.517 0.199 0.833 +vn -0.549 0.222 0.806 +vn -0.376 0.125 0.918 +vn -0.210 0.031 0.977 +vn -0.435 -0.045 0.899 +vn -0.739 0.154 0.656 +vn -0.610 0.153 0.777 +vn -0.663 0.041 0.748 +vn -0.733 0.013 0.681 +vn -0.744 -0.668 0.007 +vn -0.845 -0.501 -0.187 +vn -0.845 -0.522 -0.114 +vn -0.774 -0.629 0.079 +vn -0.897 0.040 0.440 +vn -0.896 0.094 0.434 +vn -0.179 0.204 -0.962 +vn -0.157 0.488 -0.858 +vn -0.506 0.590 0.630 +vn -0.305 0.951 0.047 +vn 0.267 -0.958 -0.102 +vn -0.432 -0.745 0.509 +vn -0.075 -0.883 0.463 +vn -0.236 -0.454 0.859 +vn -0.504 -0.423 0.753 +vn -0.821 -0.351 0.449 +vn -0.876 0.033 0.481 +vn -0.934 -0.155 0.322 +vn -0.134 0.983 -0.126 +vn -0.128 0.916 -0.381 +vn -0.284 0.891 -0.353 +vn 0.055 0.396 0.917 +vn 0.092 0.644 0.760 +vn -0.199 0.976 -0.093 +vn -0.109 0.991 -0.072 +vn -0.039 0.079 0.996 +vn -0.081 -0.191 0.978 +vn -0.854 0.239 0.462 +vn -0.774 0.223 0.593 +vn -0.502 -0.119 0.856 +vn -0.403 -0.420 0.813 +vn -0.680 -0.255 0.687 +vn -0.525 0.172 0.834 +vn -0.376 -0.531 0.759 +vn -0.576 -0.754 0.316 +vn 0.040 0.159 0.986 +vn 0.036 -0.180 0.983 +vn -0.308 0.943 -0.129 +vn -0.983 0.074 -0.170 +vn -0.456 -0.445 0.771 +vn -0.476 -0.297 0.828 +vn -0.788 -0.316 0.528 +vn -0.393 0.095 0.915 +vn -0.308 0.018 0.951 +vn -0.125 0.331 0.935 +vn -0.283 0.033 0.959 +vn -0.598 0.322 0.734 +vn -0.575 0.559 0.598 +vn -0.216 -0.852 0.476 +vn 0.156 -0.927 0.342 +vn -0.941 -0.282 -0.189 +vn -0.739 -0.637 0.221 +vn -0.469 -0.731 0.495 +vn -0.458 -0.139 -0.878 +vn -0.498 -0.315 -0.808 +vn -0.210 -0.426 -0.880 +vn -0.182 -0.243 -0.953 +vn -0.334 -0.402 0.853 +vn 0.221 -0.960 -0.173 +vn -0.414 -0.366 0.834 +vn -0.902 -0.373 -0.218 +vn -0.632 -0.114 0.767 +vn -0.642 0.122 0.757 +vn -0.194 -0.651 0.734 +vn -0.351 -0.095 0.931 +vn -0.707 0.530 0.467 +vn -0.087 -0.550 0.831 +vn 0.352 -0.710 0.610 +vn -0.500 -0.482 0.720 +vn -0.653 -0.626 0.427 +vn -0.856 0.328 0.399 +vn -0.578 -0.029 0.816 +vn 0.275 -0.432 0.859 +vn -0.123 0.953 0.277 +vn -0.228 0.657 0.719 +vn -0.298 -0.735 0.609 +vn -0.300 -0.179 0.937 +vn -0.219 0.400 0.890 +vn -0.587 -0.175 0.791 +vn 0.175 0.460 0.870 +vn -0.179 0.856 0.485 +vn 0.114 0.959 0.259 +vn 0.664 0.620 0.418 +vn -0.026 -0.991 0.129 +vn -0.184 -0.979 0.082 +vn -0.810 0.566 -0.151 +vn -0.628 0.654 -0.422 +vn -0.741 0.405 -0.536 +vn -0.924 0.322 -0.207 +vn -0.493 0.823 -0.280 +vn -0.648 0.758 -0.080 +vn -0.966 0.258 0.022 +vn -0.864 0.501 0.051 +vn -0.679 0.730 0.075 +vn -0.221 -0.970 0.105 +vn -0.271 -0.962 -0.038 +vn -0.376 -0.516 0.769 +vn -0.124 0.748 -0.652 +vn -0.339 0.727 -0.598 +vn -0.420 0.469 -0.777 +vn -0.500 -0.524 -0.690 +vn -0.489 -0.481 -0.728 +vn -0.206 -0.458 -0.865 +vn -0.212 -0.565 -0.797 +vn -0.893 -0.325 -0.312 +vn -0.759 -0.435 -0.485 +vn -0.796 -0.289 -0.532 +vn -0.937 -0.249 -0.246 +vn -0.193 -0.029 -0.981 +vn -0.202 -0.249 -0.947 +vn -0.814 -0.090 -0.574 +vn -0.969 -0.102 -0.227 +vn -0.969 0.093 -0.229 +vn -0.801 0.142 -0.581 +vn -0.998 0.061 -0.010 +vn -0.718 0.664 0.209 +vn -0.985 -0.168 0.036 +vn -0.954 -0.222 -0.201 +vn -0.451 0.039 0.891 +vn -0.341 -0.253 0.905 +vn -0.604 -0.144 0.784 +vn -0.472 -0.641 0.606 +vn 0.107 -0.991 0.080 +vn -0.463 0.274 0.843 +vn -0.002 0.997 0.081 +vn 0.083 0.977 0.195 +vn -0.466 0.366 0.805 +vn -0.977 0.200 0.072 +vn 0.916 -0.331 0.226 +vn 0.929 -0.364 -0.067 +vn 0.728 0.359 0.584 +vn -0.419 0.737 -0.531 +vn -0.638 0.769 0.043 +vn -0.146 0.857 -0.494 +vn 0.280 0.954 0.105 +vn 0.343 0.909 -0.237 +vn 0.546 0.838 -0.008 +vn 0.342 -0.678 -0.651 +vn -0.159 -0.734 -0.660 +vn -0.545 0.363 0.756 +vn -0.599 0.165 0.783 +vn -0.447 0.066 0.892 +vn -0.645 0.255 0.721 +vn -0.936 0.164 0.311 +vn -0.776 0.182 -0.604 +vn -0.827 0.285 -0.485 +vn -0.999 -0.012 0.041 +vn -0.995 -0.037 -0.093 +vn -0.586 -0.252 0.770 +vn -0.926 -0.370 0.079 +vn -0.938 -0.339 -0.067 +vn -0.889 -0.266 0.372 +vn -0.922 -0.372 -0.106 +vn -0.493 -0.275 -0.825 +vn -0.473 0.194 -0.860 +vn -0.965 -0.122 0.231 +vn -0.401 -0.036 -0.915 +vn -0.143 -0.164 -0.976 +vn -0.496 -0.052 -0.867 +vn -0.996 -0.037 -0.083 +vn -0.998 0.042 0.045 +vn -0.950 0.012 0.313 +vn -0.733 -0.008 0.681 +vn -0.670 0.247 0.700 +vn -0.408 0.697 0.589 +vn -0.330 0.155 0.931 +vn -0.517 0.244 0.821 +vn 0.568 -0.625 0.535 +vn -0.512 -0.108 0.852 +vn -0.414 -0.112 0.903 +vn -0.654 -0.140 0.743 +vn -0.608 -0.086 0.789 +vn -0.422 0.215 0.881 +vn -0.943 0.031 0.332 +vn -0.549 0.190 0.814 +vn -0.193 0.018 0.981 +vn 0.358 0.872 0.335 +vn -0.651 -0.118 0.750 +vn -0.954 -0.010 0.300 +vn -0.352 0.145 -0.925 +vn -0.095 -0.049 -0.994 +vn -0.769 0.031 0.639 +vn -0.929 -0.329 -0.171 +vn -0.923 -0.336 0.190 +vn -0.985 -0.174 0.005 +vn -0.970 -0.234 0.068 +vn -0.801 0.162 0.576 +vn -0.969 -0.184 0.166 +vn -0.293 0.803 0.519 +vn -0.954 -0.019 0.300 +vn -0.133 0.986 -0.105 +vn -0.976 0.175 0.130 +vn -0.098 0.675 -0.732 +vn -0.993 0.112 -0.041 +vn -0.197 0.127 -0.972 +vn -0.997 -0.077 -0.003 +vn -0.112 -0.322 -0.940 +vn -0.978 -0.176 -0.109 +vn -0.171 -0.674 -0.719 +vn -0.397 -0.789 -0.468 +vn -0.937 -0.337 -0.091 +vn -0.929 -0.341 -0.146 +vn -0.158 -0.985 -0.070 +vn -0.854 -0.500 0.145 +vn -0.814 -0.564 -0.141 +vn -0.931 -0.306 -0.199 +vn -0.824 -0.545 0.156 +vn -0.797 -0.383 0.466 +vn -0.811 -0.165 0.562 +vn -0.824 0.053 0.564 +vn -0.926 0.257 0.275 +vn -0.991 0.062 0.118 +vn -0.952 0.122 0.281 +vn -0.383 -0.604 0.699 +vn -0.810 -0.150 0.567 +vn -0.784 0.355 0.509 +vn -0.761 0.645 0.076 +vn -0.920 0.079 -0.385 +vn -0.975 -0.023 0.222 +vn -0.937 0.166 0.308 +vn -0.787 0.551 0.279 +vn -0.517 0.758 -0.396 +vn -0.337 0.112 -0.935 +vn -0.221 -0.301 -0.928 +vn -0.395 -0.579 -0.714 +vn -0.520 -0.711 -0.473 +vn -0.426 -0.904 -0.044 +vn -0.824 -0.523 0.219 +vn -0.886 -0.220 0.409 +vn -0.863 0.404 0.303 +vn -0.782 -0.104 0.615 +vn -0.953 0.066 0.297 +vn -0.949 0.312 0.046 +vn -0.991 0.025 -0.134 +vn -0.944 -0.116 0.308 +vn -0.971 -0.237 0.041 +vn -0.947 -0.041 0.318 +vn -0.854 -0.274 -0.443 +vn -0.885 -0.271 -0.378 +vn -0.952 -0.121 -0.282 +vn 0.180 0.824 -0.537 +vn 0.642 0.679 -0.355 +vn 0.956 0.291 -0.021 +vn 0.453 -0.867 0.208 +vn 0.910 -0.301 0.285 +vn 0.854 -0.043 0.518 +vn 0.833 0.459 0.308 +vn 0.241 0.911 0.334 +vn 0.731 -0.650 -0.206 +vn 0.760 -0.585 -0.282 +vn -0.814 0.019 0.580 +vn -0.563 0.638 0.526 +vn -0.925 -0.012 0.381 +vn -0.214 0.952 0.217 +vn 0.096 0.721 0.686 +vn -0.027 0.945 0.325 +vn -0.555 -0.678 -0.481 +vn 0.062 0.937 -0.343 +vn 0.240 -0.291 0.926 +vn 0.184 -0.889 0.419 +vn -0.126 -0.990 0.061 +vn -0.889 -0.369 -0.271 +vn -0.506 -0.832 0.229 +vn -0.808 -0.443 0.388 +vn -0.993 -0.084 0.087 +vn 0.350 -0.016 0.937 +vn -0.636 0.759 -0.140 +vn -0.771 0.626 -0.115 +vn -0.250 0.462 -0.851 +vn -0.192 0.568 -0.801 +vn -0.359 0.279 0.891 +vn -0.026 0.144 0.989 +vn -0.398 -0.100 0.912 +vn -0.465 0.084 0.881 +vn -0.895 0.186 0.405 +vn -0.947 0.184 0.264 +vn -0.761 0.459 0.458 +vn -0.657 0.429 0.620 +vn -0.426 0.660 0.618 +vn -0.505 0.610 0.611 +vn 0.223 0.536 0.814 +vn 0.285 0.393 0.874 +vn -0.163 0.555 0.815 +vn -0.038 0.570 0.821 +vn -0.628 0.723 -0.288 +vn -0.458 0.737 0.497 +vn -0.212 0.799 0.563 +vn -0.278 0.687 0.672 +vn -0.380 0.657 0.651 +vn -0.170 0.846 0.506 +vn -0.305 0.687 0.660 +vn -0.144 0.795 0.589 +vn 0.001 0.494 -0.870 +vn -0.208 0.539 -0.816 +vn -0.027 0.458 -0.888 +vn -0.057 0.367 -0.929 +vn -0.262 0.718 0.645 +vn -0.054 0.163 -0.985 +vn -0.306 0.325 -0.895 +vn -0.643 0.181 0.744 +vn -0.717 0.083 0.692 +vn -0.800 0.573 -0.178 +vn 0.296 -0.070 0.953 +vn -0.319 -0.065 0.946 +# 1258 vertex normals + +g head +s 1 +f 24/1/24 25/2/25 26/3/26 +f 24/1/24 26/3/26 23/4/23 +f 28/5/28 29/6/29 30/7/30 +f 28/5/28 30/7/30 27/8/27 +f 32/9/32 33/10/33 34/11/34 +f 32/9/32 34/11/34 31/12/31 +f 36/13/36 31/12/31 34/11/34 +f 36/13/36 34/11/34 35/14/35 +f 36/13/36 35/14/35 25/2/25 +f 36/13/36 25/2/25 24/1/24 +f 38/15/38 39/16/39 40/17/40 +f 38/15/38 40/17/40 37/18/37 +f 42/19/42 23/4/23 26/3/26 +f 42/19/42 26/3/26 41/20/41 +f 40/17/40 42/19/42 41/20/41 +f 40/17/40 41/20/41 37/18/37 +f 38/15/38 43/21/43 44/22/44 +f 38/15/38 44/22/44 39/16/39 +f 32/9/32 45/23/45 46/24/46 +f 32/9/32 46/24/46 33/10/33 +f 28/5/28 44/22/44 48/25/48 +f 28/5/28 48/25/48 47/26/47 +f 50/27/50 51/28/51 52/29/52 +f 50/27/50 52/29/52 49/30/49 +f 54/31/54 55/32/55 56/33/56 +f 54/31/54 56/33/56 53/34/53 +f 58/35/58 59/36/59 60/37/60 +f 58/35/58 60/37/60 57/38/57 +f 62/39/62 63/40/63 64/41/64 +f 62/39/62 64/41/64 61/42/61 +f 66/43/66 67/44/67 68/45/68 +f 66/43/66 68/45/68 65/46/65 +f 70/47/70 71/48/71 72/49/72 +f 70/47/70 72/49/72 69/50/69 +f 67/44/67 66/43/66 74/51/74 +f 67/44/67 74/51/74 73/52/73 +f 66/43/66 51/28/51 50/27/50 +f 66/43/66 50/27/50 74/51/74 +f 76/53/76 77/54/77 78/55/78 +f 76/53/76 78/55/78 75/56/75 +f 80/57/80 81/58/81 82/59/82 +f 80/57/80 82/59/82 79/60/79 +f 84/61/84 85/62/85 86/63/86 +f 84/61/84 86/63/86 83/64/83 +f 87/65/87 88/66/88 80/57/80 +f 87/65/87 80/57/80 79/60/79 +f 90/67/90 91/68/91 92/69/92 +f 90/67/90 92/69/92 89/70/89 +f 93/71/93 94/72/94 78/55/78 +f 93/71/93 78/55/78 77/54/77 +f 87/65/87 95/73/95 96/74/96 +f 87/65/87 96/74/96 88/66/88 +f 98/75/98 99/76/99 100/77/100 +f 98/75/98 100/77/100 97/78/97 +f 100/77/100 101/79/101 102/80/102 +f 100/77/100 102/80/102 97/78/97 +f 98/75/98 103/81/103 104/82/104 +f 98/75/98 104/82/104 99/76/99 +f 106/83/106 107/84/107 108/85/108 +f 106/83/106 108/85/108 105/86/105 +f 109/87/109 110/88/110 105/86/105 +f 109/87/109 105/86/105 108/85/108 +f 101/79/101 111/89/111 112/90/112 +f 101/79/101 112/90/112 102/80/102 +f 114/91/114 115/92/115 116/93/116 +f 114/91/114 116/93/116 113/94/113 +f 118/95/118 119/96/119 120/97/120 +f 118/95/118 120/97/120 117/98/117 +f 122/99/122 123/100/123 124/101/124 +f 122/99/122 124/101/124 121/102/121 +f 126/103/126 127/104/127 128/105/128 +f 126/103/126 128/105/128 125/106/125 +f 130/107/130 131/108/131 132/109/132 +f 130/107/130 132/109/132 129/110/129 +f 125/106/125 128/105/128 134/111/134 +f 125/106/125 134/111/134 133/112/133 +f 56/33/56 55/32/55 136/113/136 +f 56/33/56 136/113/136 135/114/135 +f 37/115/37 137/116/137 138/117/138 +f 37/115/37 138/117/138 38/118/38 +f 139/119/139 43/120/43 38/118/38 +f 139/119/139 38/118/38 138/117/138 +f 140/121/140 141/122/141 142/123/142 +f 140/121/140 142/123/142 130/107/130 +f 144/124/144 129/110/129 132/109/132 +f 144/124/144 132/109/132 143/125/143 +f 146/126/146 147/127/147 148/128/148 +f 146/126/146 148/128/148 145/129/145 +f 150/130/150 151/131/151 54/31/54 +f 150/130/150 54/31/54 149/132/149 +f 54/31/54 53/34/53 152/133/152 +f 54/31/54 152/133/152 149/132/149 +f 154/134/154 155/135/155 156/136/156 +f 154/134/154 156/136/156 153/137/153 +f 158/138/158 159/139/159 160/140/160 +f 158/138/158 160/140/160 157/141/157 +f 162/142/162 163/143/163 164/144/164 +f 162/142/162 164/144/164 161/145/161 +f 129/110/129 144/124/144 157/141/157 +f 129/110/129 157/141/157 160/140/160 +f 156/136/156 155/135/155 166/146/166 +f 156/136/156 166/146/166 165/147/165 +f 168/148/168 169/149/169 170/150/170 +f 168/148/168 170/150/170 167/151/167 +f 171/152/171 172/153/172 173/154/173 +f 171/152/171 173/154/173 169/149/169 +f 175/155/175 176/156/176 171/152/171 +f 175/155/175 171/152/171 174/157/174 +f 59/36/59 177/158/177 178/159/178 +f 59/36/59 178/159/178 60/37/60 +f 180/160/180 181/161/181 49/30/49 +f 180/160/180 49/30/49 179/162/179 +f 127/104/127 52/29/52 182/163/182 +f 127/104/127 182/163/182 128/105/128 +f 134/111/134 183/164/183 184/165/184 +f 134/111/134 184/165/184 124/101/124 +f 185/166/185 121/102/121 124/101/124 +f 185/166/185 124/101/124 184/165/184 +f 187/167/187 188/168/188 189/169/189 +f 187/167/187 189/169/189 186/170/186 +f 191/171/191 192/172/192 193/173/193 +f 191/171/191 193/173/193 190/174/190 +f 76/53/76 194/175/194 193/173/193 +f 76/53/76 193/173/193 77/54/77 +f 100/77/100 99/76/99 196/176/196 +f 100/77/100 196/176/196 195/177/195 +f 176/156/176 175/155/175 198/178/198 +f 176/156/176 198/178/198 197/179/197 +f 199/180/199 200/181/200 173/154/173 +f 199/180/199 173/154/173 172/153/172 +f 196/176/196 202/182/202 203/183/203 +f 196/176/196 203/183/203 201/184/201 +f 205/185/205 206/186/206 207/187/207 +f 205/185/205 207/187/207 204/188/204 +f 208/189/208 205/185/205 204/188/204 +f 208/189/208 204/188/204 201/184/201 +f 210/190/210 97/78/97 102/80/102 +f 210/190/210 102/80/102 209/191/209 +f 79/60/79 210/190/210 209/191/209 +f 79/60/79 209/191/209 87/65/87 +f 212/192/212 213/193/213 214/194/214 +f 212/192/212 214/194/214 211/195/211 +f 216/196/216 217/197/217 218/198/218 +f 216/196/216 218/198/218 215/199/215 +f 220/200/220 216/196/216 215/199/215 +f 220/200/220 215/199/215 219/201/219 +f 222/202/222 223/203/223 218/198/218 +f 222/202/222 218/198/218 221/204/221 +f 225/205/225 226/206/226 227/207/227 +f 225/205/225 227/207/227 224/208/224 +f 222/202/222 221/204/221 229/209/229 +f 222/202/222 229/209/229 228/210/228 +f 230/211/230 231/212/231 220/200/220 +f 230/211/230 220/200/220 219/201/219 +f 227/207/227 226/206/226 231/212/231 +f 227/207/227 231/212/231 230/211/230 +f 233/213/233 234/214/234 235/215/235 +f 233/213/233 235/215/235 232/216/232 +f 186/170/186 203/183/203 202/182/202 +f 186/170/186 202/182/202 187/167/187 +f 236/217/236 237/218/237 238/219/238 +f 236/217/236 238/219/238 188/168/188 +f 240/220/240 241/221/241 242/222/242 +f 240/220/240 242/222/242 239/223/239 +f 241/221/241 243/224/243 244/225/244 +f 241/221/241 244/225/244 238/219/238 +f 245/226/245 101/79/101 100/77/100 +f 245/226/245 100/77/100 195/177/195 +f 195/177/195 204/188/204 207/187/207 +f 195/177/195 207/187/207 245/226/245 +f 111/89/111 246/227/246 247/228/247 +f 111/89/111 247/228/247 115/92/115 +f 141/122/141 140/121/140 249/229/249 +f 141/122/141 249/229/249 248/230/248 +f 251/231/251 252/232/252 253/233/253 +f 251/231/251 253/233/253 250/234/250 +f 254/235/254 118/95/118 255/236/255 +f 254/235/254 255/236/255 217/197/217 +f 257/237/257 258/238/258 259/239/259 +f 257/237/257 259/239/259 256/240/256 +f 256/240/256 259/239/259 261/241/261 +f 256/240/256 261/241/261 260/242/260 +f 260/242/260 261/241/261 30/243/30 +f 260/242/260 30/243/30 29/244/29 +f 218/198/218 217/197/217 262/245/262 +f 218/198/218 262/245/262 221/204/221 +f 259/239/259 258/238/258 264/246/264 +f 259/239/259 264/246/264 263/247/263 +f 266/248/266 30/243/30 261/241/261 +f 266/248/266 261/241/261 265/249/265 +f 253/233/253 252/232/252 268/250/268 +f 253/233/253 268/250/268 267/251/267 +f 270/252/270 200/181/200 271/253/271 +f 270/252/270 271/253/271 269/254/269 +f 199/180/199 272/255/272 271/253/271 +f 199/180/199 271/253/271 200/181/200 +f 199/180/199 273/256/273 274/257/274 +f 199/180/199 274/257/274 272/255/272 +f 276/258/276 267/251/267 268/250/268 +f 276/258/276 268/250/268 275/259/275 +f 275/259/275 268/250/268 269/254/269 +f 275/259/275 269/254/269 277/260/277 +f 93/71/93 77/54/77 193/173/193 +f 93/71/93 193/173/193 192/172/192 +f 279/261/279 280/262/280 281/263/281 +f 279/261/279 281/263/281 278/264/278 +f 278/264/278 88/66/88 96/74/96 +f 278/264/278 96/74/96 279/261/279 +f 282/265/282 283/266/283 62/39/62 +f 282/265/282 62/39/62 94/72/94 +f 281/263/281 284/267/284 285/268/285 +f 281/263/281 285/268/285 278/264/278 +f 287/269/287 288/270/288 289/271/289 +f 287/269/287 289/271/289 286/272/286 +f 63/40/63 62/39/62 283/266/283 +f 63/40/63 283/266/283 290/273/290 +f 283/266/283 291/274/291 292/275/292 +f 283/266/283 292/275/292 290/273/290 +f 293/276/293 294/277/294 68/45/68 +f 293/276/293 68/45/68 67/44/67 +f 296/278/296 297/279/297 298/280/298 +f 296/278/296 298/280/298 295/281/295 +f 300/282/300 301/283/301 302/284/302 +f 300/282/300 302/284/302 299/285/299 +f 304/286/304 305/287/305 306/288/306 +f 304/286/304 306/288/306 303/289/303 +f 138/117/138 137/116/137 308/290/308 +f 138/117/138 308/290/308 307/291/307 +f 165/147/165 310/292/310 311/293/311 +f 165/147/165 311/293/311 309/294/309 +f 312/295/312 55/32/55 54/31/54 +f 312/295/312 54/31/54 151/131/151 +f 314/296/314 151/131/151 150/130/150 +f 314/296/314 150/130/150 313/297/313 +f 315/298/315 316/299/316 227/207/227 +f 315/298/315 227/207/227 230/211/230 +f 136/113/136 317/300/317 158/138/158 +f 136/113/136 158/138/158 157/141/157 +f 319/301/319 148/128/148 147/127/147 +f 319/301/319 147/127/147 318/302/318 +f 320/303/320 321/304/321 147/127/147 +f 320/303/320 147/127/147 146/126/146 +f 323/305/323 324/306/324 325/307/325 +f 323/305/323 325/307/325 322/308/322 +f 80/57/80 88/66/88 278/264/278 +f 80/57/80 278/264/278 285/268/285 +f 327/309/327 145/129/145 148/128/148 +f 327/309/327 148/128/148 326/310/326 +f 279/261/279 286/272/286 289/271/289 +f 279/261/279 289/271/289 280/262/280 +f 329/311/329 330/312/330 331/313/331 +f 329/311/329 331/313/331 328/314/328 +f 187/167/187 202/182/202 104/82/104 +f 187/167/187 104/82/104 332/315/332 +f 236/217/236 332/315/332 191/171/191 +f 236/217/236 191/171/191 190/174/190 +f 165/147/165 166/146/166 333/316/333 +f 165/147/165 333/316/333 310/292/310 +f 139/119/139 334/317/334 48/318/48 +f 139/119/139 48/318/48 43/120/43 +f 336/319/336 337/320/337 338/321/338 +f 336/319/336 338/321/338 335/322/335 +f 51/28/51 324/306/324 182/163/182 +f 51/28/51 182/163/182 52/29/52 +f 339/323/339 126/103/126 53/34/53 +f 339/323/339 53/34/53 56/33/56 +f 340/324/340 341/325/341 149/132/149 +f 340/324/340 149/132/149 152/133/152 +f 243/224/243 343/326/343 344/327/344 +f 243/224/243 344/327/344 342/328/342 +f 346/329/346 343/326/343 240/220/240 +f 346/329/346 240/220/240 345/330/345 +f 348/331/348 349/332/349 350/333/350 +f 348/331/348 350/333/350 347/334/347 +f 351/335/351 352/336/352 213/193/213 +f 351/335/351 213/193/213 212/192/212 +f 128/105/128 182/163/182 183/164/183 +f 128/105/128 183/164/183 134/111/134 +f 103/81/103 98/75/98 354/337/354 +f 103/81/103 354/337/354 353/338/353 +f 114/91/114 113/94/113 356/339/356 +f 114/91/114 356/339/356 355/340/355 +f 358/341/358 197/179/197 198/178/198 +f 358/341/358 198/178/198 357/342/357 +f 107/84/107 359/343/359 360/344/360 +f 107/84/107 360/344/360 108/85/108 +f 348/331/348 361/345/361 362/346/362 +f 348/331/348 362/346/362 349/332/349 +f 347/334/347 363/347/363 234/214/234 +f 347/334/347 234/214/234 348/331/348 +f 220/200/220 231/212/231 167/151/167 +f 220/200/220 167/151/167 364/348/364 +f 153/137/153 366/349/366 300/282/300 +f 153/137/153 300/282/300 365/350/365 +f 295/281/295 72/49/72 71/48/71 +f 295/281/295 71/48/71 296/278/296 +f 179/162/179 339/323/339 367/351/367 +f 179/162/179 367/351/367 180/160/180 +f 368/352/368 369/353/369 158/138/158 +f 368/352/368 158/138/158 317/300/317 +f 317/300/317 136/113/136 55/32/55 +f 317/300/317 55/32/55 312/295/312 +f 371/354/371 372/355/372 373/356/373 +f 371/354/371 373/356/373 370/357/370 +f 41/358/41 26/359/26 306/288/306 +f 41/358/41 306/288/306 305/287/305 +f 305/287/305 137/116/137 37/115/37 +f 305/287/305 37/115/37 41/358/41 +f 248/230/248 374/360/374 375/361/375 +f 248/230/248 375/361/375 141/122/141 +f 66/43/66 325/307/325 324/306/324 +f 66/43/66 324/306/324 51/28/51 +f 183/164/183 323/305/323 376/362/376 +f 183/164/183 376/362/376 184/165/184 +f 378/363/378 253/233/253 267/251/267 +f 378/363/378 267/251/267 377/364/377 +f 269/254/269 271/253/271 379/365/379 +f 269/254/269 379/365/379 277/260/277 +f 381/366/381 382/367/382 383/368/383 +f 381/366/381 383/368/383 380/369/380 +f 384/370/384 385/371/385 105/86/105 +f 384/370/384 105/86/105 110/88/110 +f 105/86/105 385/371/385 386/372/386 +f 105/86/105 386/372/386 106/83/106 +f 360/344/360 387/373/387 109/87/109 +f 360/344/360 109/87/109 108/85/108 +f 181/161/181 180/160/180 164/144/164 +f 181/161/181 164/144/164 163/143/163 +f 365/350/365 388/374/388 154/134/154 +f 365/350/365 154/134/154 153/137/153 +f 168/148/168 167/151/167 231/212/231 +f 168/148/168 231/212/231 226/206/226 +f 81/58/81 291/274/291 283/266/283 +f 81/58/81 283/266/283 282/265/282 +f 272/255/272 389/375/389 379/365/379 +f 272/255/272 379/365/379 271/253/271 +f 274/257/274 390/376/390 389/375/389 +f 274/257/274 389/375/389 272/255/272 +f 139/119/139 375/361/375 374/360/374 +f 139/119/139 374/360/374 334/317/334 +f 391/377/391 366/349/366 153/137/153 +f 391/377/391 153/137/153 156/136/156 +f 392/378/392 393/379/393 366/349/366 +f 392/378/392 366/349/366 391/377/391 +f 173/154/173 200/181/200 270/252/270 +f 173/154/173 270/252/270 394/380/394 +f 301/283/301 300/282/300 366/349/366 +f 301/283/301 366/349/366 393/379/393 +f 396/381/396 397/382/397 398/383/398 +f 396/381/396 398/383/398 395/384/395 +f 399/385/399 364/348/364 167/151/167 +f 399/385/399 167/151/167 170/150/170 +f 394/380/394 251/231/251 399/385/399 +f 394/380/394 399/385/399 170/150/170 +f 270/252/270 252/232/252 251/231/251 +f 270/252/270 251/231/251 394/380/394 +f 102/80/102 112/90/112 400/386/400 +f 102/80/102 400/386/400 209/191/209 +f 131/108/131 401/387/401 372/355/372 +f 131/108/131 372/355/372 371/354/371 +f 391/377/391 156/136/156 165/147/165 +f 391/377/391 165/147/165 309/294/309 +f 403/388/403 404/389/404 405/390/405 +f 403/388/403 405/390/405 402/391/402 +f 402/391/402 392/378/392 391/377/391 +f 402/391/402 391/377/391 309/294/309 +f 35/392/35 310/292/310 333/316/333 +f 35/392/35 333/316/333 25/393/25 +f 35/392/35 34/394/34 311/293/311 +f 35/392/35 311/293/311 310/292/310 +f 34/394/34 33/395/33 403/388/403 +f 34/394/34 403/388/403 311/293/311 +f 406/396/406 262/245/262 217/197/217 +f 406/396/406 217/197/217 255/236/255 +f 377/364/377 407/397/407 408/398/408 +f 377/364/377 408/398/408 406/396/406 +f 117/98/117 378/363/378 255/236/255 +f 117/98/117 255/236/255 118/95/118 +f 270/252/270 269/254/269 268/250/268 +f 270/252/270 268/250/268 252/232/252 +f 304/286/304 303/289/303 373/356/373 +f 304/286/304 373/356/373 372/355/372 +f 362/346/362 409/399/409 410/400/410 +f 362/346/362 410/400/410 349/332/349 +f 411/401/411 412/402/412 89/70/89 +f 411/401/411 89/70/89 92/69/92 +f 414/403/414 411/401/411 415/404/415 +f 414/403/414 415/404/415 413/405/413 +f 417/406/417 336/319/336 418/407/418 +f 417/406/417 418/407/418 416/408/416 +f 337/320/337 419/409/419 69/50/69 +f 337/320/337 69/50/69 72/49/72 +f 421/410/421 422/411/422 423/412/423 +f 421/410/421 423/412/423 420/413/420 +f 421/410/421 424/414/424 425/415/425 +f 421/410/421 425/415/425 422/411/422 +f 423/412/423 422/411/422 427/416/427 +f 423/412/423 427/416/427 426/417/426 +f 239/223/239 242/222/242 428/418/428 +f 239/223/239 428/418/428 425/415/425 +f 430/419/430 73/52/73 74/51/74 +f 430/419/430 74/51/74 429/420/429 +f 70/47/70 69/50/69 419/409/419 +f 70/47/70 419/409/419 429/420/429 +f 247/228/247 431/421/431 116/93/116 +f 247/228/247 116/93/116 115/92/115 +f 346/329/346 345/330/345 433/422/433 +f 346/329/346 433/422/433 432/423/432 +f 433/422/433 421/410/421 420/413/420 +f 433/422/433 420/413/420 434/424/434 +f 436/425/436 437/426/437 438/427/438 +f 436/425/436 438/427/438 435/428/435 +f 437/426/437 381/366/381 380/369/380 +f 437/426/437 380/369/380 438/427/438 +f 178/159/178 177/158/177 440/429/440 +f 178/159/178 440/429/440 439/430/439 +f 440/429/440 441/431/441 442/432/442 +f 440/429/440 442/432/442 439/430/439 +f 444/433/444 445/434/445 446/435/446 +f 444/433/444 446/435/446 443/436/443 +f 324/306/324 323/305/323 183/164/183 +f 324/306/324 183/164/183 182/163/182 +f 213/193/213 352/336/352 357/342/357 +f 213/193/213 357/342/357 198/178/198 +f 214/194/214 175/155/175 174/157/174 +f 214/194/214 174/157/174 225/205/225 +f 448/437/448 449/438/449 450/439/450 +f 448/437/448 450/439/450 447/440/447 +f 423/412/423 426/417/426 451/441/451 +f 423/412/423 451/441/451 447/440/447 +f 75/56/75 451/441/451 426/417/426 +f 75/56/75 426/417/426 76/53/76 +f 78/55/78 94/72/94 62/39/62 +f 78/55/78 62/39/62 61/42/61 +f 286/272/286 86/63/86 85/62/85 +f 286/272/286 85/62/85 287/269/287 +f 95/73/95 87/65/87 209/191/209 +f 95/73/95 209/191/209 400/386/400 +f 237/218/237 452/442/452 428/418/428 +f 237/218/237 428/418/428 242/222/242 +f 190/174/190 193/173/193 194/175/194 +f 190/174/190 194/175/194 452/442/452 +f 237/218/237 236/217/236 190/174/190 +f 237/218/237 190/174/190 452/442/452 +f 79/60/79 82/59/82 354/337/354 +f 79/60/79 354/337/354 210/190/210 +f 286/272/286 279/261/279 96/74/96 +f 286/272/286 96/74/96 86/63/86 +f 430/419/430 417/406/417 416/408/416 +f 430/419/430 416/408/416 453/443/453 +f 338/321/338 295/281/295 298/280/298 +f 338/321/338 298/280/298 299/285/299 +f 57/38/57 60/37/60 455/444/455 +f 57/38/57 455/444/455 454/445/454 +f 212/192/212 456/446/456 457/447/457 +f 212/192/212 457/447/457 351/335/351 +f 83/64/83 355/340/355 356/339/356 +f 83/64/83 356/339/356 84/61/84 +f 142/123/142 141/122/141 375/361/375 +f 142/123/142 375/361/375 307/291/307 +f 401/387/401 142/123/142 307/291/307 +f 401/387/401 307/291/307 308/290/308 +f 459/448/459 257/237/257 256/240/256 +f 459/448/459 256/240/256 458/449/458 +f 228/210/228 264/246/264 258/238/258 +f 228/210/228 258/238/258 222/202/222 +f 256/240/256 260/242/260 460/450/460 +f 256/240/256 460/450/460 458/449/458 +f 460/450/460 260/242/260 29/244/29 +f 460/450/460 29/244/29 47/451/47 +f 263/247/263 265/249/265 261/241/261 +f 263/247/263 261/241/261 259/239/259 +f 461/452/461 462/453/462 189/169/189 +f 461/452/461 189/169/189 244/225/244 +f 227/207/227 316/299/316 463/454/463 +f 227/207/227 463/454/463 224/208/224 +f 465/455/465 466/456/466 410/400/410 +f 465/455/465 410/400/410 464/457/464 +f 90/67/90 386/372/386 385/371/385 +f 90/67/90 385/371/385 91/68/91 +f 233/213/233 361/345/361 348/331/348 +f 233/213/233 348/331/348 234/214/234 +f 235/215/235 234/214/234 363/347/363 +f 235/215/235 363/347/363 467/458/467 +f 338/321/338 337/320/337 72/49/72 +f 338/321/338 72/49/72 295/281/295 +f 338/321/338 299/285/299 302/284/302 +f 338/321/338 302/284/302 335/322/335 +f 468/459/468 469/460/469 470/461/470 +f 468/459/468 470/461/470 415/404/415 +f 347/334/347 471/462/471 472/463/472 +f 347/334/347 472/463/472 363/347/363 +f 471/462/471 347/334/347 350/333/350 +f 471/462/471 350/333/350 473/464/473 +f 465/455/465 475/465/475 476/466/476 +f 465/455/465 476/466/476 474/467/474 +f 384/370/384 110/88/110 478/468/478 +f 384/370/384 478/468/478 477/469/477 +f 414/403/414 479/470/479 412/402/412 +f 414/403/414 412/402/412 411/401/411 +f 288/270/288 287/269/287 412/402/412 +f 288/270/288 412/402/412 479/470/479 +f 85/62/85 84/61/84 90/67/90 +f 85/62/85 90/67/90 89/70/89 +f 386/372/386 356/339/356 113/94/113 +f 386/372/386 113/94/113 106/83/106 +f 232/216/232 358/341/358 357/342/357 +f 232/216/232 357/342/357 233/213/233 +f 297/279/297 296/278/296 181/161/181 +f 297/279/297 181/161/181 163/143/163 +f 419/409/419 337/320/337 336/319/336 +f 419/409/419 336/319/336 417/406/417 +f 49/30/49 52/29/52 127/104/127 +f 49/30/49 127/104/127 179/162/179 +f 26/359/26 25/393/25 333/316/333 +f 26/359/26 333/316/333 306/288/306 +f 371/354/371 370/357/370 162/142/162 +f 371/354/371 162/142/162 161/145/161 +f 258/238/258 257/237/257 223/203/223 +f 258/238/258 223/203/223 222/202/222 +f 257/237/257 459/448/459 480/471/480 +f 257/237/257 480/471/480 223/203/223 +f 211/195/211 214/194/214 225/205/225 +f 211/195/211 225/205/225 224/208/224 +f 316/299/316 481/472/481 314/296/314 +f 316/299/316 314/296/314 463/454/463 +f 171/152/171 169/149/169 168/148/168 +f 171/152/171 168/148/168 174/157/174 +f 273/256/273 199/180/199 172/153/172 +f 273/256/273 172/153/172 482/473/482 +f 168/148/168 226/206/226 225/205/225 +f 168/148/168 225/205/225 174/157/174 +f 245/226/245 246/227/246 111/89/111 +f 245/226/245 111/89/111 101/79/101 +f 114/91/114 112/90/112 111/89/111 +f 114/91/114 111/89/111 115/92/115 +f 210/190/210 354/337/354 98/75/98 +f 210/190/210 98/75/98 97/78/97 +f 431/421/431 358/341/358 232/216/232 +f 431/421/431 232/216/232 359/343/359 +f 235/215/235 360/344/360 359/343/359 +f 235/215/235 359/343/359 232/216/232 +f 360/344/360 235/215/235 467/458/467 +f 360/344/360 467/458/467 387/373/387 +f 81/58/81 282/265/282 483/474/483 +f 81/58/81 483/474/483 82/59/82 +f 485/475/485 486/476/486 487/477/487 +f 485/475/485 487/477/487 484/478/484 +f 489/479/489 68/45/68 294/277/294 +f 489/479/489 294/277/294 488/480/488 +f 491/481/491 454/445/454 455/444/455 +f 491/481/491 455/444/455 490/482/490 +f 154/134/154 370/357/370 373/356/373 +f 154/134/154 373/356/373 155/135/155 +f 491/481/491 322/308/322 325/307/325 +f 491/481/491 325/307/325 492/483/492 +f 491/481/491 490/482/490 493/484/493 +f 491/481/491 493/484/493 322/308/322 +f 436/425/436 435/428/435 446/435/446 +f 436/425/436 446/435/446 494/485/494 +f 495/486/495 496/487/496 438/427/438 +f 495/486/495 438/427/438 380/369/380 +f 496/487/496 497/488/497 435/428/435 +f 496/487/496 435/428/435 438/427/438 +f 331/313/331 330/312/330 498/489/498 +f 331/313/331 498/489/498 432/423/432 +f 499/490/499 346/329/346 432/423/432 +f 499/490/499 432/423/432 498/489/498 +f 380/369/380 383/368/383 500/491/500 +f 380/369/380 500/491/500 495/486/495 +f 501/492/501 328/314/328 331/313/331 +f 501/492/501 331/313/331 434/424/434 +f 499/490/499 344/327/344 343/326/343 +f 499/490/499 343/326/343 346/329/346 +f 492/483/492 502/493/502 454/445/454 +f 492/483/492 454/445/454 491/481/491 +f 454/445/454 502/493/502 487/477/487 +f 454/445/454 487/477/487 57/38/57 +f 486/476/486 58/35/58 57/38/57 +f 486/476/486 57/38/57 487/477/487 +f 58/35/58 486/476/486 503/494/503 +f 58/35/58 503/494/503 382/367/382 +f 383/368/383 504/495/504 505/496/505 +f 383/368/383 505/496/505 500/491/500 +f 447/440/447 450/439/450 420/413/420 +f 447/440/447 420/413/420 423/412/423 +f 329/311/329 328/314/328 445/434/445 +f 329/311/329 445/434/445 444/433/444 +f 450/439/450 449/438/449 506/497/506 +f 450/439/450 506/497/506 501/492/501 +f 507/498/507 508/499/508 451/441/451 +f 507/498/507 451/441/451 75/56/75 +f 99/76/99 104/82/104 202/182/202 +f 99/76/99 202/182/202 196/176/196 +f 509/500/509 208/189/208 201/184/201 +f 509/500/509 201/184/201 203/183/203 +f 201/184/201 204/188/204 195/177/195 +f 201/184/201 195/177/195 196/176/196 +f 462/453/462 510/501/510 186/170/186 +f 462/453/462 186/170/186 189/169/189 +f 203/183/203 186/170/186 510/501/510 +f 203/183/203 510/501/510 509/500/509 +f 148/128/148 319/301/319 341/325/341 +f 148/128/148 341/325/341 326/310/326 +f 326/310/326 341/325/341 340/324/340 +f 326/310/326 340/324/340 511/502/511 +f 123/100/123 511/502/511 340/324/340 +f 123/100/123 340/324/340 133/112/133 +f 71/48/71 49/30/49 181/161/181 +f 71/48/71 181/161/181 296/278/296 +f 154/134/154 388/374/388 162/142/162 +f 154/134/154 162/142/162 370/357/370 +f 155/135/155 373/356/373 303/289/303 +f 155/135/155 303/289/303 166/146/166 +f 166/146/166 303/289/303 306/288/306 +f 166/146/166 306/288/306 333/316/333 +f 512/503/512 320/303/320 289/271/289 +f 512/503/512 289/271/289 288/270/288 +f 479/470/479 414/403/414 514/504/514 +f 479/470/479 514/504/514 513/505/513 +f 414/403/414 413/405/413 475/465/475 +f 414/403/414 475/465/475 514/504/514 +f 513/505/513 512/503/512 288/270/288 +f 513/505/513 288/270/288 479/470/479 +f 191/171/191 103/81/103 353/338/353 +f 191/171/191 353/338/353 192/172/192 +f 332/315/332 104/82/104 103/81/103 +f 332/315/332 103/81/103 191/171/191 +f 82/59/82 483/474/483 353/338/353 +f 82/59/82 353/338/353 354/337/354 +f 83/64/83 86/63/86 96/74/96 +f 83/64/83 96/74/96 95/73/95 +f 83/64/83 95/73/95 400/386/400 +f 83/64/83 400/386/400 355/340/355 +f 355/340/355 400/386/400 112/90/112 +f 355/340/355 112/90/112 114/91/114 +f 144/124/144 135/114/135 136/113/136 +f 144/124/144 136/113/136 157/141/157 +f 298/280/298 365/350/365 300/282/300 +f 298/280/298 300/282/300 299/285/299 +f 298/280/298 297/279/297 388/374/388 +f 298/280/298 388/374/388 365/350/365 +f 367/351/367 143/125/143 164/144/164 +f 367/351/367 164/144/164 180/160/180 +f 515/506/515 516/507/516 219/201/219 +f 515/506/515 219/201/219 215/199/215 +f 254/235/254 217/197/217 216/196/216 +f 254/235/254 216/196/216 517/508/517 +f 398/383/398 364/348/364 399/385/399 +f 398/383/398 399/385/399 395/384/395 +f 398/383/398 397/382/397 517/508/517 +f 398/383/398 517/508/517 216/196/216 +f 518/509/518 519/510/519 246/227/246 +f 518/509/518 246/227/246 245/226/245 +f 319/301/319 150/130/150 149/132/149 +f 319/301/319 149/132/149 341/325/341 +f 429/420/429 419/409/419 417/406/417 +f 429/420/429 417/406/417 430/419/430 +f 33/395/33 46/511/46 404/389/404 +f 33/395/33 404/389/404 403/388/403 +f 403/388/403 402/391/402 309/294/309 +f 403/388/403 309/294/309 311/293/311 +f 393/379/393 520/512/520 521/513/521 +f 393/379/393 521/513/521 301/283/301 +f 522/514/522 520/512/520 393/379/393 +f 522/514/522 393/379/393 392/378/392 +f 302/284/302 301/283/301 521/513/521 +f 302/284/302 521/513/521 523/515/523 +f 302/284/302 523/515/523 524/516/524 +f 302/284/302 524/516/524 335/322/335 +f 321/304/321 456/446/456 318/302/318 +f 321/304/321 318/302/318 147/127/147 +f 456/446/456 321/304/321 525/517/525 +f 456/446/456 525/517/525 457/447/457 +f 410/400/410 409/399/409 526/518/526 +f 410/400/410 526/518/526 464/457/464 +f 410/400/410 466/456/466 350/333/350 +f 410/400/410 350/333/350 349/332/349 +f 456/446/456 212/192/212 211/195/211 +f 456/446/456 211/195/211 527/519/527 +f 211/195/211 224/208/224 463/454/463 +f 211/195/211 463/454/463 527/519/527 +f 407/397/407 377/364/377 267/251/267 +f 407/397/407 267/251/267 276/258/276 +f 378/363/378 377/364/377 406/396/406 +f 378/363/378 406/396/406 255/236/255 +f 175/155/175 214/194/214 213/193/213 +f 175/155/175 213/193/213 198/178/198 +f 386/372/386 90/67/90 84/61/84 +f 386/372/386 84/61/84 356/339/356 +f 409/399/409 362/346/362 351/335/351 +f 409/399/409 351/335/351 457/447/457 +f 85/62/85 89/70/89 412/402/412 +f 85/62/85 412/402/412 287/269/287 +f 361/345/361 233/213/233 357/342/357 +f 361/345/361 357/342/357 352/336/352 +f 116/93/116 431/421/431 359/343/359 +f 116/93/116 359/343/359 107/84/107 +f 116/93/116 107/84/107 106/83/106 +f 116/93/116 106/83/106 113/94/113 +f 352/336/352 351/335/351 362/346/362 +f 352/336/352 362/346/362 361/345/361 +f 513/505/513 514/504/514 464/457/464 +f 513/505/513 464/457/464 526/518/526 +f 526/518/526 409/399/409 457/447/457 +f 526/518/526 457/447/457 525/517/525 +f 514/504/514 475/465/475 465/455/465 +f 514/504/514 465/455/465 464/457/464 +f 358/341/358 431/421/431 247/228/247 +f 358/341/358 247/228/247 197/179/197 +f 176/156/176 482/473/482 172/153/172 +f 176/156/176 172/153/172 171/152/171 +f 396/381/396 395/384/395 250/234/250 +f 396/381/396 250/234/250 119/96/119 +f 395/384/395 399/385/399 251/231/251 +f 395/384/395 251/231/251 250/234/250 +f 291/274/291 81/58/81 80/57/80 +f 291/274/291 80/57/80 285/268/285 +f 284/267/284 292/275/292 291/274/291 +f 284/267/284 291/274/291 285/268/285 +f 528/520/528 327/309/327 326/310/326 +f 528/520/528 326/310/326 511/502/511 +f 126/103/126 125/106/125 152/133/152 +f 126/103/126 152/133/152 53/34/53 +f 152/133/152 125/106/125 133/112/133 +f 152/133/152 133/112/133 340/324/340 +f 127/104/127 126/103/126 339/323/339 +f 127/104/127 339/323/339 179/162/179 +f 56/33/56 135/114/135 367/351/367 +f 56/33/56 367/351/367 339/323/339 +f 124/101/124 123/100/123 133/112/133 +f 124/101/124 133/112/133 134/111/134 +f 143/125/143 367/351/367 135/114/135 +f 143/125/143 135/114/135 144/124/144 +f 164/144/164 143/125/143 132/109/132 +f 164/144/164 132/109/132 161/145/161 +f 401/387/401 131/108/131 130/107/130 +f 401/387/401 130/107/130 142/123/142 +f 292/275/292 528/520/528 122/99/122 +f 292/275/292 122/99/122 290/273/290 +f 61/42/61 507/498/507 75/56/75 +f 61/42/61 75/56/75 78/55/78 +f 320/303/320 512/503/512 525/517/525 +f 320/303/320 525/517/525 321/304/321 +f 512/503/512 513/505/513 526/518/526 +f 512/503/512 526/518/526 525/517/525 +f 123/100/123 122/99/122 528/520/528 +f 123/100/123 528/520/528 511/502/511 +f 262/245/262 529/521/529 229/209/229 +f 262/245/262 229/209/229 221/204/221 +f 316/299/316 315/298/315 368/352/368 +f 316/299/316 368/352/368 481/472/481 +f 516/507/516 315/298/315 230/211/230 +f 516/507/516 230/211/230 219/201/219 +f 515/506/515 530/522/530 369/353/369 +f 515/506/515 369/353/369 516/507/516 +f 530/522/530 515/506/515 223/203/223 +f 530/522/530 223/203/223 480/471/480 +f 215/199/215 218/198/218 223/203/223 +f 215/199/215 223/203/223 515/506/515 +f 459/448/459 458/449/458 374/360/374 +f 459/448/459 374/360/374 248/230/248 +f 458/449/458 460/450/460 334/317/334 +f 458/449/458 334/317/334 374/360/374 +f 334/317/334 460/450/460 47/451/47 +f 334/317/334 47/451/47 48/318/48 +f 459/448/459 248/230/248 249/229/249 +f 459/448/459 249/229/249 480/471/480 +f 253/233/253 120/97/120 119/96/119 +f 253/233/253 119/96/119 250/234/250 +f 394/380/394 170/150/170 169/149/169 +f 394/380/394 169/149/169 173/154/173 +f 519/510/519 482/473/482 176/156/176 +f 519/510/519 176/156/176 197/179/197 +f 518/509/518 273/256/273 482/473/482 +f 518/509/518 482/473/482 519/510/519 +f 531/523/531 274/257/274 273/256/273 +f 531/523/531 273/256/273 518/509/518 +f 532/524/532 390/376/390 274/257/274 +f 532/524/532 274/257/274 531/523/531 +f 343/326/343 243/224/243 241/221/241 +f 343/326/343 241/221/241 240/220/240 +f 188/168/188 238/219/238 244/225/244 +f 188/168/188 244/225/244 189/169/189 +f 187/167/187 332/315/332 236/217/236 +f 187/167/187 236/217/236 188/168/188 +f 447/440/447 451/441/451 508/499/508 +f 447/440/447 508/499/508 448/437/448 +f 162/142/162 388/374/388 297/279/297 +f 162/142/162 297/279/297 163/143/163 +f 392/378/392 402/391/402 405/390/405 +f 392/378/392 405/390/405 522/514/522 +f 533/525/533 413/405/413 415/404/415 +f 533/525/533 415/404/415 470/461/470 +f 534/526/534 65/46/65 68/45/68 +f 534/526/534 68/45/68 489/479/489 +f 502/493/502 535/527/535 484/478/484 +f 502/493/502 484/478/484 487/477/487 +f 503/494/503 536/528/536 537/529/537 +f 503/494/503 537/529/537 504/495/504 +f 492/483/492 538/530/538 535/527/535 +f 492/483/492 535/527/535 502/493/502 +f 492/483/492 325/307/325 66/43/66 +f 492/483/492 66/43/66 65/46/65 +f 504/495/504 537/529/537 539/531/539 +f 504/495/504 539/531/539 505/496/505 +f 239/223/239 424/414/424 345/330/345 +f 239/223/239 345/330/345 240/220/240 +f 59/36/59 58/35/58 382/367/382 +f 59/36/59 382/367/382 381/366/381 +f 432/423/432 433/422/433 434/424/434 +f 432/423/432 434/424/434 331/313/331 +f 437/426/437 436/425/436 440/429/440 +f 437/426/437 440/429/440 177/158/177 +f 381/366/381 437/426/437 177/158/177 +f 381/366/381 177/158/177 59/36/59 +f 449/438/449 441/431/441 494/485/494 +f 449/438/449 494/485/494 506/497/506 +f 450/439/450 501/492/501 434/424/434 +f 450/439/450 434/424/434 420/413/420 +f 382/367/382 503/494/503 504/495/504 +f 382/367/382 504/495/504 383/368/383 +f 501/492/501 506/497/506 445/434/445 +f 501/492/501 445/434/445 328/314/328 +f 536/528/536 503/494/503 486/476/486 +f 536/528/536 486/476/486 485/475/485 +f 313/297/313 150/130/150 319/301/319 +f 313/297/313 319/301/319 318/302/318 +f 327/309/327 284/267/284 281/263/281 +f 327/309/327 281/263/281 145/129/145 +f 483/474/483 93/71/93 192/172/192 +f 483/474/483 192/172/192 353/338/353 +f 483/474/483 282/265/282 94/72/94 +f 483/474/483 94/72/94 93/71/93 +f 422/411/422 425/415/425 428/418/428 +f 422/411/422 428/418/428 427/416/427 +f 421/410/421 433/422/433 345/330/345 +f 421/410/421 345/330/345 424/414/424 +f 463/454/463 314/296/314 313/297/313 +f 463/454/463 313/297/313 527/519/527 +f 315/298/315 516/507/516 369/353/369 +f 315/298/315 369/353/369 368/352/368 +f 314/296/314 481/472/481 312/295/312 +f 314/296/314 312/295/312 151/131/151 +f 368/352/368 317/300/317 312/295/312 +f 368/352/368 312/295/312 481/472/481 +f 369/353/369 530/522/530 159/139/159 +f 369/353/369 159/139/159 158/138/158 +f 480/471/480 249/229/249 159/139/159 +f 480/471/480 159/139/159 530/522/530 +f 262/245/262 406/396/406 408/398/408 +f 262/245/262 408/398/408 529/521/529 +f 398/383/398 216/196/216 220/200/220 +f 398/383/398 220/200/220 364/348/364 +f 541/532/541 542/533/542 543/534/543 +f 541/532/541 543/534/543 540/535/540 +f 545/536/545 543/534/543 542/533/542 +f 545/536/545 542/533/542 544/537/544 +f 547/538/547 545/536/545 544/537/544 +f 547/538/547 544/537/544 546/539/546 +f 549/540/549 547/538/547 546/539/546 +f 549/540/549 546/539/546 548/541/548 +f 551/542/551 549/540/549 548/541/548 +f 551/542/551 548/541/548 550/543/550 +f 553/544/553 551/542/551 550/543/550 +f 553/544/553 550/543/550 552/545/552 +f 555/546/555 553/544/553 552/545/552 +f 555/546/555 552/545/552 554/547/554 +f 557/548/557 558/549/558 559/550/559 +f 557/548/557 559/550/559 556/551/556 +f 561/552/561 557/548/557 556/551/556 +f 561/552/561 556/551/556 560/553/560 +f 563/554/563 546/539/546 544/537/544 +f 563/554/563 544/537/544 562/555/562 +f 564/556/564 548/541/548 546/539/546 +f 564/556/564 546/539/546 563/554/563 +f 565/557/565 550/543/550 548/541/548 +f 565/557/565 548/541/548 564/556/564 +f 566/558/566 552/545/552 550/543/550 +f 566/558/566 550/543/550 565/557/565 +f 552/545/552 566/558/566 567/559/567 +f 552/545/552 567/559/567 554/547/554 +f 559/550/559 568/560/568 569/561/569 +f 559/550/559 569/561/569 556/551/556 +f 570/562/570 560/553/560 556/551/556 +f 570/562/570 556/551/556 569/561/569 +f 571/563/571 572/564/572 560/553/560 +f 571/563/571 560/553/560 570/562/570 +f 574/565/574 540/535/540 575/566/575 +f 574/565/574 575/566/575 573/567/573 +f 577/568/577 543/534/543 545/536/545 +f 577/568/577 545/536/545 576/569/576 +f 545/536/545 547/538/547 578/570/578 +f 545/536/545 578/570/578 576/569/576 +f 579/571/579 578/570/578 547/538/547 +f 579/571/579 547/538/547 549/540/549 +f 580/572/580 579/571/579 551/542/551 +f 580/572/580 551/542/551 553/544/553 +f 580/572/580 553/544/553 555/546/555 +f 580/572/580 555/546/555 581/573/581 +f 558/549/558 557/548/557 583/574/583 +f 558/549/558 583/574/583 582/575/582 +f 561/552/561 584/576/584 583/574/583 +f 561/552/561 583/574/583 557/548/557 +f 561/552/561 572/564/572 585/577/585 +f 561/552/561 585/577/585 584/576/584 +f 571/563/571 586/578/586 585/577/585 +f 571/563/571 585/577/585 572/564/572 +f 544/537/544 542/533/542 541/532/541 +f 544/537/544 541/532/541 562/555/562 +f 574/565/574 588/579/588 589/580/589 +f 574/565/574 589/580/589 587/581/587 +f 574/565/574 573/567/573 590/582/590 +f 574/565/574 590/582/590 588/579/588 +f 590/582/590 573/567/573 575/566/575 +f 590/582/590 575/566/575 591/583/591 +f 575/566/575 540/535/540 543/534/543 +f 575/566/575 543/534/543 591/583/591 +f 564/556/564 592/584/592 566/558/566 +f 564/556/564 566/558/566 565/557/565 +f 592/584/592 593/585/593 567/559/567 +f 592/584/592 567/559/567 566/558/566 +f 568/560/568 559/550/559 554/547/554 +f 568/560/568 554/547/554 567/559/567 +f 554/547/554 559/550/559 558/549/558 +f 554/547/554 558/549/558 555/546/555 +f 582/575/582 581/573/581 555/546/555 +f 582/575/582 555/546/555 558/549/558 +f 592/584/592 564/556/564 563/554/563 +f 592/584/592 563/554/563 562/555/562 +f 589/580/589 568/560/568 567/559/567 +f 589/580/589 567/559/567 593/585/593 +f 540/535/540 574/565/574 587/581/587 +f 540/535/540 587/581/587 541/532/541 +f 571/563/571 570/562/570 590/582/590 +f 571/563/571 590/582/590 591/583/591 +f 589/580/589 588/579/588 569/561/569 +f 589/580/589 569/561/569 568/560/568 +f 543/534/543 577/568/577 594/586/594 +f 543/534/543 594/586/594 591/583/591 +f 594/586/594 586/578/586 571/563/571 +f 594/586/594 571/563/571 591/583/591 +f 596/587/596 581/573/581 582/575/582 +f 596/587/596 582/575/582 595/588/595 +f 596/587/596 597/589/597 580/572/580 +f 596/587/596 580/572/580 581/573/581 +f 583/574/583 490/482/490 455/444/455 +f 583/574/583 455/444/455 595/588/595 +f 583/574/583 584/576/584 493/484/493 +f 583/574/583 493/484/493 490/482/490 +f 597/589/597 508/499/508 579/571/579 +f 597/589/597 579/571/579 580/572/580 +f 442/432/442 448/437/448 508/499/508 +f 442/432/442 508/499/508 597/589/597 +f 60/37/60 178/159/178 595/588/595 +f 60/37/60 595/588/595 455/444/455 +f 178/159/178 439/430/439 596/587/596 +f 178/159/178 596/587/596 595/588/595 +f 577/568/577 64/41/64 185/166/185 +f 577/568/577 185/166/185 594/586/594 +f 586/578/586 184/165/184 376/362/376 +f 586/578/586 376/362/376 585/577/585 +f 590/582/590 570/562/570 569/561/569 +f 590/582/590 569/561/569 588/579/588 +f 61/42/61 576/569/576 578/570/578 +f 61/42/61 578/570/578 507/498/507 +f 585/577/585 376/362/376 493/484/493 +f 585/577/585 493/484/493 584/576/584 +f 453/443/453 598/590/598 73/52/73 +f 453/443/453 73/52/73 430/419/430 +f 519/510/519 197/179/197 247/228/247 +f 519/510/519 247/228/247 246/227/246 +f 281/263/281 280/262/280 146/126/146 +f 281/263/281 146/126/146 145/129/145 +f 64/41/64 63/40/63 121/102/121 +f 64/41/64 121/102/121 185/166/185 +f 284/267/284 327/309/327 528/520/528 +f 284/267/284 528/520/528 292/275/292 +f 290/273/290 122/99/122 121/102/121 +f 290/273/290 121/102/121 63/40/63 +f 280/262/280 289/271/289 320/303/320 +f 280/262/280 320/303/320 146/126/146 +f 184/165/184 586/578/586 594/586/594 +f 184/165/184 594/586/594 185/166/185 +f 253/233/253 378/363/378 117/98/117 +f 253/233/253 117/98/117 120/97/120 +f 249/229/249 140/121/140 160/140/160 +f 249/229/249 160/140/160 159/139/159 +f 129/110/129 160/140/160 140/121/140 +f 129/110/129 140/121/140 130/107/130 +f 161/145/161 132/109/132 131/108/131 +f 161/145/161 131/108/131 371/354/371 +f 313/297/313 318/302/318 456/446/456 +f 313/297/313 456/446/456 527/519/527 +f 492/483/492 65/46/65 534/526/534 +f 492/483/492 534/526/534 538/530/538 +f 441/431/441 449/438/449 448/437/448 +f 441/431/441 448/437/448 442/432/442 +f 443/436/443 446/435/446 435/428/435 +f 443/436/443 435/428/435 497/488/497 +f 446/435/446 445/434/445 506/497/506 +f 446/435/446 506/497/506 494/485/494 +f 441/431/441 440/429/440 436/425/436 +f 441/431/441 436/425/436 494/485/494 +f 596/587/596 439/430/439 442/432/442 +f 596/587/596 442/432/442 597/589/597 +f 577/568/577 576/569/576 61/42/61 +f 577/568/577 61/42/61 64/41/64 +f 238/219/238 237/218/237 242/222/242 +f 238/219/238 242/222/242 241/221/241 +f 194/175/194 76/53/76 426/417/426 +f 194/175/194 426/417/426 427/416/427 +f 452/442/452 194/175/194 427/416/427 +f 452/442/452 427/416/427 428/418/428 +f 461/452/461 244/225/244 243/224/243 +f 461/452/461 243/224/243 342/328/342 +f 508/499/508 507/498/507 578/570/578 +f 508/499/508 578/570/578 579/571/579 +f 245/226/245 207/187/207 531/523/531 +f 245/226/245 531/523/531 518/509/518 +f 206/186/206 532/524/532 531/523/531 +f 206/186/206 531/523/531 207/187/207 +f 32/9/32 31/12/31 600/591/600 +f 32/9/32 600/591/600 599/592/599 +f 601/593/601 600/591/600 36/13/36 +f 601/593/601 36/13/36 24/1/24 +f 602/594/602 601/593/601 24/1/24 +f 602/594/602 24/1/24 23/4/23 +f 40/17/40 602/594/602 23/4/23 +f 40/17/40 23/4/23 42/19/42 +f 44/22/44 604/595/604 605/596/605 +f 44/22/44 605/596/605 603/597/603 +f 39/16/39 603/597/603 602/594/602 +f 39/16/39 602/594/602 40/17/40 +f 601/593/601 606/598/606 607/599/607 +f 601/593/601 607/599/607 600/591/600 +f 468/459/468 608/600/608 609/601/609 +f 468/459/468 609/601/609 469/460/469 +f 477/469/477 609/601/609 608/600/608 +f 477/469/477 608/600/608 384/370/384 +f 610/602/610 611/603/611 612/604/612 +f 610/602/610 612/604/612 472/605/472 +f 610/602/610 472/605/472 471/606/471 +f 610/602/610 471/606/471 613/607/613 +f 476/608/476 614/609/614 615/610/615 +f 476/608/476 615/610/615 474/611/474 +f 478/468/478 110/88/110 109/87/109 +f 478/468/478 109/87/109 616/612/616 +f 466/456/466 465/455/465 474/467/474 +f 466/456/466 474/467/474 617/613/617 +f 466/456/466 617/613/617 473/464/473 +f 466/456/466 473/464/473 350/333/350 +f 614/609/614 533/614/533 470/615/470 +f 614/609/614 470/615/470 618/616/618 +f 475/465/475 413/405/413 533/525/533 +f 475/465/475 533/525/533 476/466/476 +f 618/616/618 469/617/469 609/618/609 +f 618/616/618 609/618/609 619/619/619 +f 619/619/619 609/618/609 477/620/477 +f 619/619/619 477/620/477 620/621/620 +f 387/373/387 621/622/621 616/612/616 +f 387/373/387 616/612/616 109/87/109 +f 616/623/616 622/624/622 620/621/620 +f 616/623/616 620/621/620 478/625/478 +f 473/626/473 617/627/617 615/610/615 +f 473/626/473 615/610/615 613/607/613 +f 621/628/621 623/629/623 622/624/622 +f 621/628/621 622/624/622 616/623/616 +f 624/630/624 612/604/612 611/603/611 +f 624/630/624 611/603/611 623/629/623 +f 49/30/49 71/48/71 70/47/70 +f 49/30/49 70/47/70 50/27/50 +f 336/319/336 335/322/335 524/516/524 +f 336/319/336 524/516/524 418/407/418 +f 598/590/598 293/276/293 67/44/67 +f 598/590/598 67/44/67 73/52/73 +f 50/27/50 70/47/70 429/420/429 +f 50/27/50 429/420/429 74/51/74 +f 322/308/322 493/484/493 376/362/376 +f 322/308/322 376/362/376 323/305/323 +f 589/580/589 593/585/593 592/584/592 +f 589/580/589 592/584/592 587/581/587 +f 396/381/396 119/96/119 118/95/118 +f 396/381/396 118/95/118 254/235/254 +f 517/508/517 397/382/397 396/381/396 +f 517/508/517 396/381/396 254/235/254 +f 28/5/28 27/8/27 625/631/625 +f 28/5/28 625/631/625 604/595/604 +f 600/591/600 607/599/607 626/632/626 +f 600/591/600 626/632/626 599/592/599 +f 607/599/607 627/633/627 628/634/628 +f 607/599/607 628/634/628 626/632/626 +f 604/595/604 625/631/625 628/634/628 +f 604/595/604 628/634/628 627/633/627 +f 630/635/630 631/636/631 632/637/632 +f 630/635/630 632/637/632 629/638/629 +f 634/639/634 635/640/635 636/641/636 +f 634/639/634 636/641/636 633/642/633 +f 638/643/638 639/644/639 640/645/640 +f 638/643/638 640/645/640 637/646/637 +f 641/647/641 642/648/642 637/646/637 +f 641/647/641 637/646/637 640/645/640 +f 644/649/644 645/650/645 646/651/646 +f 644/649/644 646/651/646 643/652/643 +f 631/636/631 642/648/642 648/653/648 +f 631/636/631 648/653/648 647/654/647 +f 650/655/650 651/656/651 652/657/652 +f 650/655/650 652/657/652 649/658/649 +f 643/652/643 646/651/646 654/659/654 +f 643/652/643 654/659/654 653/660/653 +f 654/659/654 651/656/651 650/655/650 +f 654/659/654 650/655/650 653/660/653 +f 655/661/655 656/662/656 657/663/657 +f 655/661/655 657/663/657 632/637/632 +f 657/663/657 659/664/659 660/665/660 +f 657/663/657 660/665/660 658/666/658 +f 661/667/661 659/664/659 657/663/657 +f 661/667/661 657/663/657 656/662/656 +f 631/636/631 647/654/647 655/661/655 +f 631/636/631 655/661/655 632/637/632 +f 637/646/637 642/648/642 631/636/631 +f 637/646/637 631/636/631 630/635/630 +f 640/645/640 650/655/650 649/658/649 +f 640/645/640 649/658/649 641/647/641 +f 652/657/652 662/668/662 641/647/641 +f 652/657/652 641/647/641 649/658/649 +f 648/653/648 642/648/642 641/647/641 +f 648/653/648 641/647/641 662/668/662 +f 663/669/663 664/670/664 537/529/537 +f 663/669/663 537/529/537 536/528/536 +f 666/671/666 640/645/640 639/644/639 +f 666/671/666 639/644/639 665/672/665 +f 666/671/666 665/672/665 636/641/636 +f 666/671/666 636/641/636 635/640/635 +f 667/673/667 539/531/539 537/529/537 +f 667/673/667 537/529/537 664/670/664 +f 634/639/634 644/649/644 643/652/643 +f 634/639/634 643/652/643 635/640/635 +f 653/660/653 650/655/650 640/645/640 +f 653/660/653 640/645/640 666/671/666 +f 666/671/666 635/640/635 643/652/643 +f 666/671/666 643/652/643 653/660/653 +f 669/674/669 644/649/644 634/639/634 +f 669/674/669 634/639/634 668/675/668 +f 638/643/638 637/646/637 630/635/630 +f 638/643/638 630/635/630 670/676/670 +f 645/650/645 644/649/644 669/674/669 +f 645/650/645 669/674/669 671/677/671 +f 638/643/638 670/676/670 485/475/485 +f 638/643/638 485/475/485 484/478/484 +f 672/678/672 633/642/633 489/479/489 +f 672/678/672 489/479/489 488/480/488 +f 632/637/632 657/663/657 658/666/658 +f 632/637/632 658/666/658 629/638/629 +f 670/676/670 663/669/663 536/528/536 +f 670/676/670 536/528/536 485/475/485 +f 633/642/633 636/641/636 534/526/534 +f 633/642/633 534/526/534 489/479/489 +f 484/478/484 535/527/535 639/644/639 +f 484/478/484 639/644/639 638/643/638 +f 629/638/629 658/666/658 664/670/664 +f 629/638/629 664/670/664 663/669/663 +f 665/672/665 639/644/639 535/527/535 +f 665/672/665 535/527/535 538/530/538 +f 636/641/636 665/672/665 538/530/538 +f 636/641/636 538/530/538 534/526/534 +f 660/665/660 667/673/667 664/670/664 +f 660/665/660 664/670/664 658/666/658 +f 668/675/668 634/639/634 633/642/633 +f 668/675/668 633/642/633 672/678/672 +f 630/635/630 629/638/629 663/669/663 +f 630/635/630 663/669/663 670/676/670 +f 1/679/1 661/667/661 656/662/656 +f 1/679/1 656/662/656 22/680/22 +f 20/681/20 647/654/647 648/653/648 +f 20/681/20 648/653/648 18/682/18 +f 647/654/647 20/681/20 21/683/21 +f 647/654/647 21/683/21 655/661/655 +f 15/684/15 646/651/646 645/650/645 +f 15/684/15 645/650/645 13/685/13 +f 19/686/19 651/656/651 654/659/654 +f 19/686/19 654/659/654 14/687/14 +f 648/653/648 662/668/662 16/688/16 +f 648/653/648 16/688/16 18/682/18 +f 17/689/17 652/657/652 651/656/651 +f 17/689/17 651/656/651 19/686/19 +f 21/683/21 22/680/22 656/662/656 +f 21/683/21 656/662/656 655/661/655 +f 13/685/13 645/650/645 671/677/671 +f 13/685/13 671/677/671 2/690/2 +f 646/651/646 15/684/15 14/687/14 +f 646/651/646 14/687/14 654/659/654 +f 17/689/17 16/688/16 662/668/662 +f 17/689/17 662/668/662 652/657/652 +f 608/600/608 91/68/91 385/371/385 +f 608/600/608 385/371/385 384/370/384 +f 304/286/304 372/355/372 401/387/401 +f 304/286/304 401/387/401 308/290/308 +f 468/459/468 415/404/415 411/401/411 +f 468/459/468 411/401/411 92/69/92 +f 602/594/602 603/597/603 606/598/606 +f 602/594/602 606/598/606 601/593/601 +f 608/600/608 468/459/468 92/69/92 +f 608/600/608 92/69/92 91/68/91 +f 305/287/305 304/286/304 308/290/308 +f 305/287/305 308/290/308 137/116/137 +f 139/119/139 138/117/138 307/291/307 +f 139/119/139 307/291/307 375/361/375 +f 674/691/674 675/692/675 676/693/676 +f 674/691/674 676/693/676 673/694/673 +f 678/695/678 27/8/27 679/696/679 +f 678/695/678 679/696/679 677/697/677 +f 681/698/681 682/699/682 683/700/683 +f 681/698/681 683/700/683 680/701/680 +f 684/702/684 685/703/685 683/700/683 +f 684/702/684 683/700/683 682/699/682 +f 684/702/684 674/691/674 673/694/673 +f 684/702/684 673/694/673 685/703/685 +f 687/704/687 688/705/688 689/706/689 +f 687/704/687 689/706/689 686/707/686 +f 690/708/690 691/709/691 676/693/676 +f 690/708/690 676/693/676 675/692/675 +f 689/706/689 688/705/688 691/709/691 +f 689/706/689 691/709/691 690/708/690 +f 687/704/687 686/707/686 693/710/693 +f 687/704/687 693/710/693 692/711/692 +f 681/698/681 680/701/680 46/24/46 +f 681/698/681 46/24/46 45/23/45 +f 678/695/678 694/712/694 695/713/695 +f 678/695/678 695/713/695 693/710/693 +f 697/714/697 698/715/698 699/716/699 +f 697/714/697 699/716/699 696/717/696 +f 701/718/701 702/719/702 703/720/703 +f 701/718/701 703/720/703 700/721/700 +f 705/722/705 706/723/706 707/724/707 +f 705/722/705 707/724/707 704/725/704 +f 709/726/709 710/727/710 711/728/711 +f 709/726/709 711/728/711 708/729/708 +f 713/730/713 714/731/714 715/732/715 +f 713/730/713 715/732/715 712/733/712 +f 717/734/717 718/735/718 719/736/719 +f 717/734/717 719/736/719 716/737/716 +f 712/733/712 720/738/720 721/739/721 +f 712/733/712 721/739/721 713/730/713 +f 713/730/713 721/739/721 697/714/697 +f 713/730/713 697/714/697 696/717/696 +f 723/740/723 724/741/724 725/742/725 +f 723/740/723 725/742/725 722/743/722 +f 727/744/727 728/745/728 729/746/729 +f 727/744/727 729/746/729 726/747/726 +f 731/748/731 732/749/732 733/750/733 +f 731/748/731 733/750/733 730/751/730 +f 735/752/735 728/745/728 727/744/727 +f 735/752/735 727/744/727 734/753/734 +f 737/754/737 738/755/738 739/756/739 +f 737/754/737 739/756/739 736/757/736 +f 741/758/741 722/743/722 725/742/725 +f 741/758/741 725/742/725 740/759/740 +f 735/752/735 734/753/734 743/760/743 +f 735/752/735 743/760/743 742/761/742 +f 745/762/745 746/763/746 747/764/747 +f 745/762/745 747/764/747 744/765/744 +f 747/764/747 746/763/746 749/766/749 +f 747/764/747 749/766/749 748/767/748 +f 745/762/745 744/765/744 751/768/751 +f 745/762/745 751/768/751 750/769/750 +f 753/770/753 754/771/754 755/772/755 +f 753/770/753 755/772/755 752/773/752 +f 757/774/757 755/772/755 754/771/754 +f 757/774/757 754/771/754 756/775/756 +f 748/767/748 749/766/749 759/776/759 +f 748/767/748 759/776/759 758/777/758 +f 761/778/761 762/779/762 763/780/763 +f 761/778/761 763/780/763 760/781/760 +f 765/782/765 766/783/766 767/784/767 +f 765/782/765 767/784/767 764/785/764 +f 769/786/769 770/787/770 771/788/771 +f 769/786/769 771/788/771 768/789/768 +f 773/790/773 774/791/774 775/792/775 +f 773/790/773 775/792/775 772/793/772 +f 777/794/777 778/795/778 779/796/779 +f 777/794/777 779/796/779 776/797/776 +f 774/791/774 780/798/780 781/799/781 +f 774/791/774 781/799/781 775/792/775 +f 703/720/703 782/800/782 783/801/783 +f 703/720/703 783/801/783 700/721/700 +f 688/802/688 687/803/687 785/804/785 +f 688/802/688 785/804/785 784/805/784 +f 786/806/786 785/804/785 687/803/687 +f 786/806/786 687/803/687 692/807/692 +f 788/808/788 777/794/777 789/809/789 +f 788/808/788 789/809/789 787/810/787 +f 790/811/790 791/812/791 779/796/779 +f 790/811/790 779/796/779 778/795/778 +f 793/813/793 794/814/794 795/815/795 +f 793/813/793 795/815/795 792/816/792 +f 797/817/797 798/818/798 701/718/701 +f 797/817/797 701/718/701 796/819/796 +f 701/718/701 798/818/798 799/820/799 +f 701/718/701 799/820/799 702/719/702 +f 801/821/801 802/822/802 803/823/803 +f 801/821/801 803/823/803 800/824/800 +f 805/825/805 806/826/806 807/827/807 +f 805/825/805 807/827/807 804/828/804 +f 809/829/809 810/830/810 811/831/811 +f 809/829/809 811/831/811 808/832/808 +f 778/795/778 807/827/807 806/826/806 +f 778/795/778 806/826/806 790/811/790 +f 803/823/803 812/833/812 813/834/813 +f 803/823/803 813/834/813 800/824/800 +f 815/835/815 816/836/816 817/837/817 +f 815/835/815 817/837/817 814/838/814 +f 819/839/819 814/838/814 820/840/820 +f 819/839/819 820/840/820 818/841/818 +f 822/842/822 823/843/823 819/839/819 +f 822/842/822 819/839/819 821/844/821 +f 704/725/704 707/724/707 825/845/825 +f 704/725/704 825/845/825 824/846/824 +f 827/847/827 828/848/828 698/715/698 +f 827/847/827 698/715/698 826/849/826 +f 772/793/772 775/792/775 829/850/829 +f 772/793/772 829/850/829 699/716/699 +f 781/799/781 771/788/771 831/851/831 +f 781/799/781 831/851/831 830/852/830 +f 832/853/832 831/851/831 771/788/771 +f 832/853/832 771/788/771 770/787/770 +f 834/854/834 835/855/835 836/856/836 +f 834/854/834 836/856/836 833/857/833 +f 838/858/838 839/859/839 840/860/840 +f 838/858/838 840/860/840 837/861/837 +f 723/740/723 722/743/722 840/860/840 +f 723/740/723 840/860/840 841/862/841 +f 747/764/747 842/863/842 843/864/843 +f 747/764/747 843/864/843 744/765/744 +f 821/844/821 844/865/844 845/866/845 +f 821/844/821 845/866/845 822/842/822 +f 847/867/847 818/841/818 820/840/820 +f 847/867/847 820/840/820 846/868/846 +f 843/864/843 849/869/849 850/870/850 +f 843/864/843 850/870/850 848/871/848 +f 205/185/205 851/872/851 852/873/852 +f 205/185/205 852/873/852 206/186/206 +f 208/189/208 849/869/849 851/872/851 +f 208/189/208 851/872/851 205/185/205 +f 853/874/853 854/875/854 749/766/749 +f 853/874/853 749/766/749 746/763/746 +f 728/745/728 735/752/735 854/875/854 +f 728/745/728 854/875/854 853/874/853 +f 856/876/856 857/877/857 858/878/858 +f 856/876/856 858/878/858 855/879/855 +f 860/880/860 861/881/861 862/882/862 +f 860/880/860 862/882/862 859/883/859 +f 863/884/863 864/885/864 861/881/861 +f 863/884/863 861/881/861 860/880/860 +f 866/886/866 867/887/867 862/882/862 +f 866/886/866 862/882/862 865/888/865 +f 869/889/869 870/890/870 871/891/871 +f 869/889/869 871/891/871 868/892/868 +f 866/886/866 228/210/228 229/209/229 +f 866/886/866 229/209/229 867/887/867 +f 873/893/873 864/885/864 863/884/863 +f 873/893/873 863/884/863 872/894/872 +f 871/891/871 873/893/873 872/894/872 +f 871/891/871 872/894/872 868/892/868 +f 875/895/875 876/896/876 877/897/877 +f 875/895/875 877/897/877 874/898/874 +f 835/855/835 834/854/834 848/871/848 +f 835/855/835 848/871/848 850/870/850 +f 879/899/879 833/857/833 880/900/880 +f 879/899/879 880/900/880 878/901/878 +f 882/902/882 883/903/883 884/904/884 +f 882/902/882 884/904/884 881/905/881 +f 881/905/881 880/900/880 886/906/886 +f 881/905/881 886/906/886 885/907/885 +f 887/908/887 842/863/842 747/764/747 +f 887/908/887 747/764/747 748/767/748 +f 842/863/842 887/908/887 852/873/852 +f 842/863/842 852/873/852 851/872/851 +f 758/777/758 760/781/760 889/909/889 +f 758/777/758 889/909/889 888/910/888 +f 787/810/787 890/911/890 891/912/891 +f 787/810/787 891/912/891 788/808/788 +f 893/913/893 894/914/894 895/915/895 +f 893/913/893 895/915/895 892/916/892 +f 896/917/896 859/883/859 897/918/897 +f 896/917/896 897/918/897 765/782/765 +f 899/919/899 900/920/900 901/921/901 +f 899/919/899 901/921/901 898/922/898 +f 900/920/900 902/923/902 903/924/903 +f 900/920/900 903/924/903 901/921/901 +f 902/923/902 677/925/677 679/926/679 +f 902/923/902 679/926/679 903/924/903 +f 862/882/862 867/887/867 904/927/904 +f 862/882/862 904/927/904 859/883/859 +f 901/921/901 263/247/263 264/246/264 +f 901/921/901 264/246/264 898/922/898 +f 266/248/266 265/249/265 903/924/903 +f 266/248/266 903/924/903 679/926/679 +f 895/915/895 905/928/905 906/929/906 +f 895/915/895 906/929/906 892/916/892 +f 907/930/907 908/931/908 909/932/909 +f 907/930/907 909/932/909 846/868/846 +f 847/867/847 846/868/846 909/932/909 +f 847/867/847 909/932/909 910/933/910 +f 847/867/847 910/933/910 912/934/912 +f 847/867/847 912/934/912 911/935/911 +f 276/258/276 275/259/275 906/929/906 +f 276/258/276 906/929/906 905/928/905 +f 275/259/275 277/260/277 908/931/908 +f 275/259/275 908/931/908 906/929/906 +f 741/758/741 837/861/837 840/860/840 +f 741/758/741 840/860/840 722/743/722 +f 914/936/914 915/937/915 916/938/916 +f 914/936/914 916/938/916 913/939/913 +f 915/937/915 914/936/914 743/760/743 +f 915/937/915 743/760/743 734/753/734 +f 918/940/918 740/759/740 709/726/709 +f 918/940/918 709/726/709 917/941/917 +f 916/938/916 915/937/915 920/942/920 +f 916/938/916 920/942/920 919/943/919 +f 922/944/922 923/945/923 924/946/924 +f 922/944/922 924/946/924 921/947/921 +f 708/729/708 925/948/925 917/941/917 +f 708/729/708 917/941/917 709/726/709 +f 917/941/917 925/948/925 927/949/927 +f 917/941/917 927/949/927 926/950/926 +f 293/276/293 712/733/712 715/732/715 +f 293/276/293 715/732/715 294/277/294 +f 929/951/929 930/952/930 931/953/931 +f 929/951/929 931/953/931 928/954/928 +f 933/955/933 934/956/934 935/957/935 +f 933/955/933 935/957/935 932/958/932 +f 937/959/937 938/960/938 939/961/939 +f 937/959/937 939/961/939 936/962/936 +f 785/804/785 940/963/940 941/964/941 +f 785/804/785 941/964/941 784/805/784 +f 812/833/812 943/965/943 944/966/944 +f 812/833/812 944/966/944 942/967/942 +f 945/968/945 796/819/796 701/718/701 +f 945/968/945 701/718/701 700/721/700 +f 946/969/946 947/970/947 797/817/797 +f 946/969/946 797/817/797 796/819/796 +f 949/971/949 873/893/873 871/891/871 +f 949/971/949 871/891/871 948/972/948 +f 783/801/783 806/826/806 805/825/805 +f 783/801/783 805/825/805 950/973/950 +f 951/974/951 952/975/952 792/816/792 +f 951/974/951 792/816/792 795/815/795 +f 954/976/954 793/813/793 792/816/792 +f 954/976/954 792/816/792 953/977/953 +f 956/978/956 957/979/957 958/980/958 +f 956/978/956 958/980/958 955/981/955 +f 727/744/727 920/942/920 915/937/915 +f 727/744/727 915/937/915 734/753/734 +f 959/982/959 960/983/960 795/815/795 +f 959/982/959 795/815/795 794/814/794 +f 914/936/914 913/939/913 924/946/924 +f 914/936/914 924/946/924 923/945/923 +f 329/984/329 961/985/961 962/986/962 +f 329/984/329 962/986/962 330/987/330 +f 834/854/834 963/988/963 751/768/751 +f 834/854/834 751/768/751 848/871/848 +f 879/899/879 839/859/839 838/858/838 +f 879/899/879 838/858/838 963/988/963 +f 812/833/812 942/967/942 964/989/964 +f 812/833/812 964/989/964 813/834/813 +f 786/806/786 692/807/692 695/990/695 +f 786/806/786 695/990/695 965/991/965 +f 967/992/967 968/993/968 969/994/969 +f 967/992/967 969/994/969 966/995/966 +f 696/717/696 699/716/699 829/850/829 +f 696/717/696 829/850/829 955/981/955 +f 970/996/970 703/720/703 702/719/702 +f 970/996/970 702/719/702 773/790/773 +f 972/997/972 799/820/799 798/818/798 +f 972/997/972 798/818/798 971/998/971 +f 885/907/885 342/999/342 344/1000/344 +f 885/907/885 344/1000/344 973/1001/973 +f 974/1002/974 975/1003/975 882/902/882 +f 974/1002/974 882/902/882 973/1001/973 +f 977/1004/977 978/1005/978 979/1006/979 +f 977/1004/977 979/1006/979 976/1007/976 +f 981/1008/981 856/876/856 855/879/855 +f 981/1008/981 855/879/855 980/1009/980 +f 775/792/775 781/799/781 830/852/830 +f 775/792/775 830/852/830 829/850/829 +f 750/769/750 982/1010/982 983/1011/983 +f 750/769/750 983/1011/983 745/762/745 +f 761/778/761 984/1012/984 985/1013/985 +f 761/778/761 985/1013/985 762/779/762 +f 986/1014/986 987/1015/987 845/866/845 +f 986/1014/986 845/866/845 844/865/844 +f 752/773/752 755/772/755 989/1016/989 +f 752/773/752 989/1016/989 988/1017/988 +f 977/1004/977 976/1007/976 991/1018/991 +f 977/1004/977 991/1018/991 990/1019/990 +f 978/1005/978 977/1004/977 874/898/874 +f 978/1005/978 874/898/874 992/1020/992 +f 863/884/863 993/1021/993 816/836/816 +f 863/884/863 816/836/816 872/894/872 +f 802/822/802 995/1022/995 933/955/933 +f 802/822/802 933/955/933 994/1023/994 +f 930/952/930 929/951/929 716/737/716 +f 930/952/930 716/737/716 719/736/719 +f 828/848/828 827/847/827 996/1024/996 +f 828/848/828 996/1024/996 970/996/970 +f 998/1025/998 950/973/950 805/825/805 +f 998/1025/998 805/825/805 997/1026/997 +f 950/973/950 945/968/945 700/721/700 +f 950/973/950 700/721/700 783/801/783 +f 1000/1027/1000 1001/1028/1001 1002/1029/1002 +f 1000/1027/1000 1002/1029/1002 999/1030/999 +f 691/1031/691 936/962/936 939/961/939 +f 691/1031/691 939/961/939 676/1032/676 +f 936/962/936 691/1031/691 688/802/688 +f 936/962/936 688/802/688 784/805/784 +f 890/911/890 787/810/787 1004/1033/1004 +f 890/911/890 1004/1033/1004 1003/1034/1003 +f 713/730/713 696/717/696 955/981/955 +f 713/730/713 955/981/955 958/980/958 +f 830/852/830 831/851/831 1005/1035/1005 +f 830/852/830 1005/1035/1005 956/978/956 +f 1006/1036/1006 1007/1037/1007 905/928/905 +f 1006/1036/1006 905/928/905 895/915/895 +f 908/931/908 277/260/277 379/365/379 +f 908/931/908 379/365/379 909/932/909 +f 1009/1038/1009 1010/1039/1010 1011/1040/1011 +f 1009/1038/1009 1011/1040/1011 1008/1041/1008 +f 1013/1042/1013 756/775/756 754/771/754 +f 1013/1042/1013 754/771/754 1012/1043/1012 +f 754/771/754 753/770/753 1014/1044/1014 +f 754/771/754 1014/1044/1014 1012/1043/1012 +f 989/1016/989 755/772/755 757/774/757 +f 989/1016/989 757/774/757 1015/1045/1015 +f 826/849/826 808/832/808 811/831/811 +f 826/849/826 811/831/811 827/847/827 +f 995/1022/995 802/822/802 801/821/801 +f 995/1022/995 801/821/801 1016/1046/1016 +f 815/835/815 868/892/868 872/894/872 +f 815/835/815 872/894/872 816/836/816 +f 726/747/726 918/940/918 917/941/917 +f 726/747/726 917/941/917 926/950/926 +f 910/933/910 909/932/909 379/365/379 +f 910/933/910 379/365/379 389/375/389 +f 912/934/912 910/933/910 389/375/389 +f 912/934/912 389/375/389 390/376/390 +f 786/806/786 965/991/965 1003/1034/1003 +f 786/806/786 1003/1034/1003 1004/1033/1004 +f 1017/1047/1017 803/823/803 802/822/802 +f 1017/1047/1017 802/822/802 994/1023/994 +f 1019/1048/1019 1017/1047/1017 994/1023/994 +f 1019/1048/1019 994/1023/994 1018/1049/1018 +f 820/840/820 1020/1050/1020 907/930/907 +f 820/840/820 907/930/907 846/868/846 +f 932/958/932 1018/1049/1018 994/1023/994 +f 932/958/932 994/1023/994 933/955/933 +f 1022/1051/1022 1023/1052/1023 1024/1053/1024 +f 1022/1051/1022 1024/1053/1024 1021/1054/1021 +f 1025/1055/1025 817/837/817 816/836/816 +f 1025/1055/1025 816/836/816 993/1021/993 +f 1020/1050/1020 817/837/817 1025/1055/1025 +f 1020/1050/1020 1025/1055/1025 893/913/893 +f 907/930/907 1020/1050/1020 893/913/893 +f 907/930/907 893/913/893 892/916/892 +f 749/766/749 854/875/854 1026/1056/1026 +f 749/766/749 1026/1056/1026 759/776/759 +f 776/797/776 1000/1027/1000 999/1030/999 +f 776/797/776 999/1030/999 1027/1057/1027 +f 1017/1047/1017 943/965/943 812/833/812 +f 1017/1047/1017 812/833/812 803/823/803 +f 1028/1058/1028 1029/1059/1029 405/390/405 +f 1028/1058/1028 405/390/405 404/389/404 +f 1029/1059/1029 943/965/943 1017/1047/1017 +f 1029/1059/1029 1017/1047/1017 1019/1048/1019 +f 685/1060/685 673/1061/673 964/989/964 +f 685/1060/685 964/989/964 942/967/942 +f 685/1060/685 942/967/942 944/966/944 +f 685/1060/685 944/966/944 683/1062/683 +f 683/1062/683 944/966/944 1028/1058/1028 +f 683/1062/683 1028/1058/1028 680/1063/680 +f 1030/1064/1030 897/918/897 859/883/859 +f 1030/1064/1030 859/883/859 904/927/904 +f 1007/1037/1007 1030/1064/1030 408/398/408 +f 1007/1037/1007 408/398/408 407/397/407 +f 766/783/766 765/782/765 897/918/897 +f 766/783/766 897/918/897 1006/1036/1006 +f 907/930/907 892/916/892 906/929/906 +f 907/930/907 906/929/906 908/931/908 +f 937/959/937 999/1030/999 1002/1029/1002 +f 937/959/937 1002/1029/1002 938/960/938 +f 991/1018/991 976/1007/976 1032/1065/1032 +f 991/1018/991 1032/1065/1032 1031/1066/1031 +f 1034/1067/1034 739/756/739 738/755/738 +f 1034/1067/1034 738/755/738 1033/1068/1033 +f 1035/1069/1035 1036/1070/1036 1037/1071/1037 +f 1035/1069/1035 1037/1071/1037 1034/1067/1034 +f 1038/1072/1038 416/408/416 418/407/418 +f 1038/1072/1038 418/407/418 967/992/967 +f 966/995/966 719/736/719 718/735/718 +f 966/995/966 718/735/718 1039/1073/1039 +f 1041/1074/1041 1042/1075/1042 1043/1076/1043 +f 1041/1074/1041 1043/1076/1043 1040/1077/1040 +f 1041/1074/1041 1040/1077/1040 1045/1078/1045 +f 1041/1074/1041 1045/1078/1045 1044/1079/1044 +f 1043/1076/1043 1046/1080/1046 1047/1081/1047 +f 1043/1076/1043 1047/1081/1047 1040/1077/1040 +f 883/903/883 1045/1078/1045 1048/1082/1048 +f 883/903/883 1048/1082/1048 884/904/884 +f 1049/1083/1049 1050/1084/1050 721/739/721 +f 1049/1083/1049 721/739/721 720/738/720 +f 717/734/717 1050/1084/1050 1039/1073/1039 +f 717/734/717 1039/1073/1039 718/735/718 +f 889/909/889 760/781/760 763/780/763 +f 889/909/889 763/780/763 1051/1085/1051 +f 974/1002/974 1052/1086/1052 1053/1087/1053 +f 974/1002/974 1053/1087/1053 975/1003/975 +f 1053/1087/1053 1054/1088/1054 1042/1075/1042 +f 1053/1087/1053 1042/1075/1042 1041/1074/1041 +f 1056/1089/1056 1057/1090/1057 1058/1091/1058 +f 1056/1089/1056 1058/1091/1058 1055/1092/1055 +f 1055/1092/1055 1058/1091/1058 1010/1039/1010 +f 1055/1092/1055 1010/1039/1010 1009/1038/1009 +f 825/845/825 1059/1093/1059 1060/1094/1060 +f 825/845/825 1060/1094/1060 824/846/824 +f 1060/1094/1060 1059/1093/1059 1062/1095/1062 +f 1060/1094/1060 1062/1095/1062 1061/1096/1061 +f 444/1097/444 443/1098/443 1064/1099/1064 +f 444/1097/444 1064/1099/1064 1063/1100/1063 +f 955/981/955 829/850/829 830/852/830 +f 955/981/955 830/852/830 956/978/956 +f 855/879/855 845/866/845 987/1015/987 +f 855/879/855 987/1015/987 980/1009/980 +f 858/878/858 869/889/869 823/843/823 +f 858/878/858 823/843/823 822/842/822 +f 1066/1101/1066 1067/1102/1067 1068/1103/1068 +f 1066/1101/1066 1068/1103/1068 1065/1104/1065 +f 1043/1076/1043 1067/1102/1067 1069/1105/1069 +f 1043/1076/1043 1069/1105/1069 1046/1080/1046 +f 724/741/724 723/740/723 1046/1080/1046 +f 724/741/724 1046/1080/1046 1069/1105/1069 +f 725/742/725 710/727/710 709/726/709 +f 725/742/725 709/726/709 740/759/740 +f 923/945/923 922/944/922 730/751/730 +f 923/945/923 730/751/730 733/750/733 +f 742/761/742 1026/1056/1026 854/875/854 +f 742/761/742 854/875/854 735/752/735 +f 878/901/878 884/904/884 1048/1082/1048 +f 878/901/878 1048/1082/1048 1070/1106/1070 +f 839/859/839 1070/1106/1070 841/862/841 +f 839/859/839 841/862/841 840/860/840 +f 878/901/878 1070/1106/1070 839/859/839 +f 878/901/878 839/859/839 879/899/879 +f 728/745/728 853/874/853 983/1011/983 +f 728/745/728 983/1011/983 729/746/729 +f 923/945/923 733/750/733 743/760/743 +f 923/945/923 743/760/743 914/936/914 +f 1049/1083/1049 453/443/453 416/408/416 +f 1049/1083/1049 416/408/416 1038/1072/1038 +f 969/994/969 934/956/934 931/953/931 +f 969/994/969 931/953/931 930/952/930 +f 706/723/706 1071/1107/1071 1072/1108/1072 +f 706/723/706 1072/1108/1072 707/724/707 +f 856/876/856 981/1008/981 1074/1109/1074 +f 856/876/856 1074/1109/1074 1073/1110/1073 +f 732/749/732 731/748/731 985/1013/985 +f 732/749/732 985/1013/985 984/1012/984 +f 789/809/789 940/963/940 1004/1033/1004 +f 789/809/789 1004/1033/1004 787/810/787 +f 1027/1057/1027 941/964/941 940/963/940 +f 1027/1057/1027 940/963/940 789/809/789 +f 1075/1111/1075 1076/1112/1076 900/920/900 +f 1075/1111/1075 900/920/900 899/919/899 +f 228/210/228 866/886/866 898/922/898 +f 228/210/228 898/922/898 264/246/264 +f 900/920/900 1076/1112/1076 1077/1113/1077 +f 900/920/900 1077/1113/1077 902/923/902 +f 1077/1113/1077 694/1114/694 677/925/677 +f 1077/1113/1077 677/925/677 902/923/902 +f 263/247/263 901/921/901 903/924/903 +f 263/247/263 903/924/903 265/249/265 +f 461/1115/461 886/906/886 836/856/836 +f 461/1115/461 836/856/836 462/1116/462 +f 871/891/871 870/890/870 1078/1117/1078 +f 871/891/871 1078/1117/1078 948/972/948 +f 1080/1118/1080 1081/1119/1081 1032/1065/1032 +f 1080/1118/1080 1032/1065/1032 1079/1120/1079 +f 737/754/737 736/757/736 1012/1043/1012 +f 737/754/737 1012/1043/1012 1014/1044/1014 +f 875/895/875 874/898/874 977/1004/977 +f 875/895/875 977/1004/977 990/1019/990 +f 877/897/877 1082/1121/1082 992/1020/992 +f 877/897/877 992/1020/992 874/898/874 +f 969/994/969 930/952/930 719/736/719 +f 969/994/969 719/736/719 966/995/966 +f 969/994/969 968/993/968 935/957/935 +f 969/994/969 935/957/935 934/956/934 +f 1084/1122/1084 1037/1071/1037 1085/1123/1085 +f 1084/1122/1084 1085/1123/1085 1083/1124/1083 +f 978/1005/978 992/1020/992 1087/1125/1087 +f 978/1005/978 1087/1125/1087 1086/1126/1086 +f 1086/1126/1086 1088/1127/1088 979/1006/979 +f 1086/1126/1086 979/1006/979 978/1005/978 +f 1080/1118/1080 1090/1128/1090 1091/1129/1091 +f 1080/1118/1080 1091/1129/1091 1089/1130/1089 +f 1013/1042/1013 1092/1131/1092 1093/1132/1093 +f 1013/1042/1013 1093/1132/1093 756/775/756 +f 1035/1069/1035 1034/1067/1034 1033/1068/1033 +f 1035/1069/1035 1033/1068/1033 1094/1133/1094 +f 921/947/921 1094/1133/1094 1033/1068/1033 +f 921/947/921 1033/1068/1033 922/944/922 +f 730/751/730 738/755/738 737/754/737 +f 730/751/730 737/754/737 731/748/731 +f 1014/1044/1014 753/770/753 762/779/762 +f 1014/1044/1014 762/779/762 985/1013/985 +f 876/896/876 875/895/875 987/1015/987 +f 876/896/876 987/1015/987 986/1014/986 +f 928/954/928 808/832/808 826/849/826 +f 928/954/928 826/849/826 929/951/929 +f 1039/1073/1039 1038/1072/1038 967/992/967 +f 1039/1073/1039 967/992/967 966/995/966 +f 698/715/698 828/848/828 772/793/772 +f 698/715/698 772/793/772 699/716/699 +f 676/1032/676 939/961/939 964/989/964 +f 676/1032/676 964/989/964 673/1061/673 +f 1000/1027/1000 810/830/810 809/829/809 +f 1000/1027/1000 809/829/809 1001/1028/1001 +f 898/922/898 866/886/866 865/888/865 +f 898/922/898 865/888/865 899/919/899 +f 899/919/899 865/888/865 1095/1134/1095 +f 899/919/899 1095/1134/1095 1075/1111/1075 +f 857/877/857 870/890/870 869/889/869 +f 857/877/857 869/889/869 858/878/858 +f 948/972/948 1078/1117/1078 946/969/946 +f 948/972/948 946/969/946 1096/1135/1096 +f 819/839/819 823/843/823 815/835/815 +f 819/839/819 815/835/815 814/838/814 +f 911/935/911 1097/1136/1097 818/841/818 +f 911/935/911 818/841/818 847/867/847 +f 815/835/815 823/843/823 869/889/869 +f 815/835/815 869/889/869 868/892/868 +f 887/908/887 748/767/748 758/777/758 +f 887/908/887 758/777/758 888/910/888 +f 761/778/761 760/781/760 758/777/758 +f 761/778/761 758/777/758 759/776/759 +f 853/874/853 746/763/746 745/762/745 +f 853/874/853 745/762/745 983/1011/983 +f 1051/1085/1051 988/1017/988 876/896/876 +f 1051/1085/1051 876/896/876 986/1014/986 +f 877/897/877 876/896/876 988/1017/988 +f 877/897/877 988/1017/988 989/1016/989 +f 989/1016/989 1015/1045/1015 1082/1121/1082 +f 989/1016/989 1082/1121/1082 877/897/877 +f 726/747/726 729/746/729 1098/1137/1098 +f 726/747/726 1098/1137/1098 918/940/918 +f 1100/1138/1100 1101/1139/1101 1102/1140/1102 +f 1100/1138/1100 1102/1140/1102 1099/1141/1099 +f 1103/1142/1103 488/480/488 294/277/294 +f 1103/1142/1103 294/277/294 715/732/715 +f 1104/1143/1104 1105/1144/1105 1072/1108/1072 +f 1104/1143/1104 1072/1108/1072 1071/1107/1071 +f 801/821/801 800/824/800 1002/1029/1002 +f 801/821/801 1002/1029/1002 1001/1028/1001 +f 1104/1143/1104 1106/1145/1106 958/980/958 +f 1104/1143/1104 958/980/958 957/979/957 +f 1104/1143/1104 957/979/957 1107/1146/1107 +f 1104/1143/1104 1107/1146/1107 1105/1144/1105 +f 1056/1089/1056 1108/1147/1108 1064/1099/1064 +f 1056/1089/1056 1064/1099/1064 1057/1090/1057 +f 495/1148/495 1010/1039/1010 1058/1091/1058 +f 495/1148/495 1058/1091/1058 496/1149/496 +f 496/1149/496 1058/1091/1058 1057/1090/1057 +f 496/1149/496 1057/1090/1057 497/1150/497 +f 962/986/962 1052/1086/1052 498/1151/498 +f 962/986/962 498/1151/498 330/987/330 +f 499/1152/499 498/1151/498 1052/1086/1052 +f 499/1152/499 1052/1086/1052 974/1002/974 +f 1010/1039/1010 495/1148/495 500/1153/500 +f 1010/1039/1010 500/1153/500 1011/1040/1011 +f 1109/1154/1109 1054/1088/1054 962/986/962 +f 1109/1154/1109 962/986/962 961/985/961 +f 499/1152/499 974/1002/974 973/1001/973 +f 499/1152/499 973/1001/973 344/1000/344 +f 1106/1145/1106 1104/1143/1104 1071/1107/1071 +f 1106/1145/1106 1071/1107/1071 1110/1155/1110 +f 1071/1107/1071 706/723/706 1102/1140/1102 +f 1071/1107/1071 1102/1140/1102 1110/1155/1110 +f 1099/1141/1099 1102/1140/1102 706/723/706 +f 1099/1141/1099 706/723/706 705/722/705 +f 705/722/705 1008/1041/1008 1111/1156/1111 +f 705/722/705 1111/1156/1111 1099/1141/1099 +f 1011/1040/1011 500/1153/500 505/1157/505 +f 1011/1040/1011 505/1157/505 1112/1158/1112 +f 1067/1102/1067 1043/1076/1043 1042/1075/1042 +f 1067/1102/1067 1042/1075/1042 1068/1103/1068 +f 329/984/329 444/1097/444 1063/1100/1063 +f 329/984/329 1063/1100/1063 961/985/961 +f 1068/1103/1068 1109/1154/1109 1113/1159/1113 +f 1068/1103/1068 1113/1159/1113 1065/1104/1065 +f 1115/1160/1115 724/741/724 1069/1105/1069 +f 1115/1160/1115 1069/1105/1069 1114/1161/1114 +f 744/765/744 843/864/843 848/871/848 +f 744/765/744 848/871/848 751/768/751 +f 509/500/509 850/870/850 849/869/849 +f 509/500/509 849/869/849 208/189/208 +f 849/869/849 843/864/843 842/863/842 +f 849/869/849 842/863/842 851/872/851 +f 462/1116/462 836/856/836 835/855/835 +f 462/1116/462 835/855/835 510/501/510 +f 850/870/850 509/500/509 510/501/510 +f 850/870/850 510/501/510 835/855/835 +f 795/815/795 960/983/960 971/998/971 +f 795/815/795 971/998/971 951/974/951 +f 960/983/960 1116/1162/1116 972/997/972 +f 960/983/960 972/997/972 971/998/971 +f 768/789/768 780/798/780 972/997/972 +f 768/789/768 972/997/972 1116/1162/1116 +f 716/737/716 929/951/929 826/849/826 +f 716/737/716 826/849/826 698/715/698 +f 801/821/801 1001/1028/1001 809/829/809 +f 801/821/801 809/829/809 1016/1046/1016 +f 800/824/800 813/834/813 938/960/938 +f 800/824/800 938/960/938 1002/1029/1002 +f 813/834/813 964/989/964 939/961/939 +f 813/834/813 939/961/939 938/960/938 +f 1117/1163/1117 921/947/921 924/946/924 +f 1117/1163/1117 924/946/924 954/976/954 +f 1094/1133/1094 1118/1164/1118 1119/1165/1119 +f 1094/1133/1094 1119/1165/1119 1035/1069/1035 +f 1035/1069/1035 1119/1165/1119 1089/1130/1089 +f 1035/1069/1035 1089/1130/1089 1036/1070/1036 +f 1118/1164/1118 1094/1133/1094 921/947/921 +f 1118/1164/1118 921/947/921 1117/1163/1117 +f 838/858/838 837/861/837 982/1010/982 +f 838/858/838 982/1010/982 750/769/750 +f 963/988/963 838/858/838 750/769/750 +f 963/988/963 750/769/750 751/768/751 +f 729/746/729 983/1011/983 982/1010/982 +f 729/746/729 982/1010/982 1098/1137/1098 +f 732/749/732 742/761/742 743/760/743 +f 732/749/732 743/760/743 733/750/733 +f 732/749/732 984/1012/984 1026/1056/1026 +f 732/749/732 1026/1056/1026 742/761/742 +f 984/1012/984 761/778/761 759/776/759 +f 984/1012/984 759/776/759 1026/1056/1026 +f 790/811/790 806/826/806 783/801/783 +f 790/811/790 783/801/783 782/800/782 +f 931/953/931 934/956/934 933/955/933 +f 931/953/931 933/955/933 995/1022/995 +f 931/953/931 995/1022/995 1016/1046/1016 +f 931/953/931 1016/1046/1016 928/954/928 +f 996/1024/996 827/847/827 811/831/811 +f 996/1024/996 811/831/811 791/812/791 +f 1121/1166/1121 861/881/861 864/885/864 +f 1121/1166/1121 864/885/864 1120/1167/1120 +f 896/917/896 1122/1168/1122 860/880/860 +f 896/917/896 860/880/860 859/883/859 +f 1024/1053/1024 1023/1052/1023 1025/1055/1025 +f 1024/1053/1024 1025/1055/1025 993/1021/993 +f 1024/1053/1024 860/880/860 1122/1168/1122 +f 1024/1053/1024 1122/1168/1122 1021/1054/1021 +f 1124/1169/1124 887/908/887 888/910/888 +f 1124/1169/1124 888/910/888 1123/1170/1123 +f 951/974/951 971/998/971 798/818/798 +f 951/974/951 798/818/798 797/817/797 +f 1050/1084/1050 1049/1083/1049 1038/1072/1038 +f 1050/1084/1050 1038/1072/1038 1039/1073/1039 +f 680/1063/680 1028/1058/1028 404/389/404 +f 680/1063/680 404/389/404 46/511/46 +f 1028/1058/1028 944/966/944 943/965/943 +f 1028/1058/1028 943/965/943 1029/1059/1029 +f 1018/1049/1018 932/958/932 521/513/521 +f 1018/1049/1018 521/513/521 520/512/520 +f 522/514/522 1019/1048/1019 1018/1049/1018 +f 522/514/522 1018/1049/1018 520/512/520 +f 935/957/935 523/515/523 521/513/521 +f 935/957/935 521/513/521 932/958/932 +f 935/957/935 968/993/968 524/516/524 +f 935/957/935 524/516/524 523/515/523 +f 953/977/953 792/816/792 952/975/952 +f 953/977/953 952/975/952 1073/1110/1073 +f 1073/1110/1073 1074/1109/1074 1125/1171/1125 +f 1073/1110/1073 1125/1171/1125 953/977/953 +f 1032/1065/1032 1081/1119/1081 1126/1172/1126 +f 1032/1065/1032 1126/1172/1126 1031/1066/1031 +f 1032/1065/1032 976/1007/976 979/1006/979 +f 1032/1065/1032 979/1006/979 1079/1120/1079 +f 1073/1110/1073 1127/1173/1127 857/877/857 +f 1073/1110/1073 857/877/857 856/876/856 +f 857/877/857 1127/1173/1127 1078/1117/1078 +f 857/877/857 1078/1117/1078 870/890/870 +f 407/397/407 276/258/276 905/928/905 +f 407/397/407 905/928/905 1007/1037/1007 +f 1006/1036/1006 897/918/897 1030/1064/1030 +f 1006/1036/1006 1030/1064/1030 1007/1037/1007 +f 822/842/822 845/866/845 855/879/855 +f 822/842/822 855/879/855 858/878/858 +f 1014/1044/1014 985/1013/985 731/748/731 +f 1014/1044/1014 731/748/731 737/754/737 +f 1031/1066/1031 1074/1109/1074 981/1008/981 +f 1031/1066/1031 981/1008/981 991/1018/991 +f 730/751/730 922/944/922 1033/1068/1033 +f 730/751/730 1033/1068/1033 738/755/738 +f 990/1019/990 980/1009/980 987/1015/987 +f 990/1019/990 987/1015/987 875/895/875 +f 763/780/763 752/773/752 988/1017/988 +f 763/780/763 988/1017/988 1051/1085/1051 +f 763/780/763 762/779/762 753/770/753 +f 763/780/763 753/770/753 752/773/752 +f 980/1009/980 990/1019/990 991/1018/991 +f 980/1009/980 991/1018/991 981/1008/981 +f 1118/1164/1118 1126/1172/1126 1081/1119/1081 +f 1118/1164/1118 1081/1119/1081 1119/1165/1119 +f 1126/1172/1126 1125/1171/1125 1074/1109/1074 +f 1126/1172/1126 1074/1109/1074 1031/1066/1031 +f 1119/1165/1119 1081/1119/1081 1080/1118/1080 +f 1119/1165/1119 1080/1118/1080 1089/1130/1089 +f 986/1014/986 844/865/844 889/909/889 +f 986/1014/986 889/909/889 1051/1085/1051 +f 821/844/821 819/839/819 818/841/818 +f 821/844/821 818/841/818 1097/1136/1097 +f 1022/1051/1022 764/785/764 894/914/894 +f 1022/1051/1022 894/914/894 1023/1052/1023 +f 1023/1052/1023 894/914/894 893/913/893 +f 1023/1052/1023 893/913/893 1025/1055/1025 +f 926/950/926 920/942/920 727/744/727 +f 926/950/926 727/744/727 726/747/726 +f 919/943/919 920/942/920 926/950/926 +f 919/943/919 926/950/926 927/949/927 +f 1128/1174/1128 1116/1162/1116 960/983/960 +f 1128/1174/1128 960/983/960 959/982/959 +f 773/790/773 702/719/702 799/820/799 +f 773/790/773 799/820/799 774/791/774 +f 799/820/799 972/997/972 780/798/780 +f 799/820/799 780/798/780 774/791/774 +f 772/793/772 828/848/828 970/996/970 +f 772/793/772 970/996/970 773/790/773 +f 703/720/703 970/996/970 996/1024/996 +f 703/720/703 996/1024/996 782/800/782 +f 771/788/771 781/799/781 780/798/780 +f 771/788/771 780/798/780 768/789/768 +f 791/812/791 790/811/790 782/800/782 +f 791/812/791 782/800/782 996/1024/996 +f 811/831/811 810/830/810 779/796/779 +f 811/831/811 779/796/779 791/812/791 +f 1027/1057/1027 789/809/789 777/794/777 +f 1027/1057/1027 777/794/777 776/797/776 +f 927/949/927 925/948/925 769/786/769 +f 927/949/927 769/786/769 1128/1174/1128 +f 710/727/710 725/742/725 724/741/724 +f 710/727/710 724/741/724 1115/1160/1115 +f 954/976/954 953/977/953 1125/1171/1125 +f 954/976/954 1125/1171/1125 1117/1163/1117 +f 1117/1163/1117 1125/1171/1125 1126/1172/1126 +f 1117/1163/1117 1126/1172/1126 1118/1164/1118 +f 768/789/768 1116/1162/1116 1128/1174/1128 +f 768/789/768 1128/1174/1128 769/786/769 +f 904/927/904 867/887/867 229/209/229 +f 904/927/904 229/209/229 529/521/529 +f 948/972/948 1096/1135/1096 998/1025/998 +f 948/972/948 998/1025/998 949/971/949 +f 1120/1167/1120 864/885/864 873/893/873 +f 1120/1167/1120 873/893/873 949/971/949 +f 1121/1166/1121 1120/1167/1120 997/1026/997 +f 1121/1166/1121 997/1026/997 1129/1175/1129 +f 1129/1175/1129 1095/1134/1095 865/888/865 +f 1129/1175/1129 865/888/865 1121/1166/1121 +f 861/881/861 1121/1166/1121 865/888/865 +f 861/881/861 865/888/865 862/882/862 +f 1075/1111/1075 890/911/890 1003/1034/1003 +f 1075/1111/1075 1003/1034/1003 1076/1112/1076 +f 1076/1112/1076 1003/1034/1003 965/991/965 +f 1076/1112/1076 965/991/965 1077/1113/1077 +f 965/991/965 695/990/695 694/1114/694 +f 965/991/965 694/1114/694 1077/1113/1077 +f 1075/1111/1075 1095/1134/1095 891/912/891 +f 1075/1111/1075 891/912/891 890/911/890 +f 895/915/895 894/914/894 764/785/764 +f 895/915/895 764/785/764 767/784/767 +f 1020/1050/1020 820/840/820 814/838/814 +f 1020/1050/1020 814/838/814 817/837/817 +f 1123/1170/1123 844/865/844 821/844/821 +f 1123/1170/1123 821/844/821 1097/1136/1097 +f 1124/1169/1124 1123/1170/1123 1097/1136/1097 +f 1124/1169/1124 1097/1136/1097 911/935/911 +f 1130/1176/1130 1124/1169/1124 911/935/911 +f 1130/1176/1130 911/935/911 912/934/912 +f 532/524/532 1130/1176/1130 912/934/912 +f 532/524/532 912/934/912 390/376/390 +f 973/1001/973 882/902/882 881/905/881 +f 973/1001/973 881/905/881 885/907/885 +f 833/857/833 836/856/836 886/906/886 +f 833/857/833 886/906/886 880/900/880 +f 834/854/834 833/857/833 879/899/879 +f 834/854/834 879/899/879 963/988/963 +f 1067/1102/1067 1066/1101/1066 1114/1161/1114 +f 1067/1102/1067 1114/1161/1114 1069/1105/1069 +f 809/829/809 808/832/808 928/954/928 +f 809/829/809 928/954/928 1016/1046/1016 +f 1019/1048/1019 522/514/522 405/390/405 +f 1019/1048/1019 405/390/405 1029/1059/1029 +f 1131/1177/1131 1085/1123/1085 1037/1071/1037 +f 1131/1177/1131 1037/1071/1037 1036/1070/1036 +f 1132/1178/1132 1103/1142/1103 715/732/715 +f 1132/1178/1132 715/732/715 714/731/714 +f 1110/1155/1110 1102/1140/1102 1101/1139/1101 +f 1110/1155/1110 1101/1139/1101 1133/1179/1133 +f 1111/1156/1111 1112/1158/1112 1135/1180/1135 +f 1111/1156/1111 1135/1180/1135 1134/1181/1134 +f 1106/1145/1106 1110/1155/1110 1133/1179/1133 +f 1106/1145/1106 1133/1179/1133 1136/1182/1136 +f 1106/1145/1106 714/731/714 713/730/713 +f 1106/1145/1106 713/730/713 958/980/958 +f 1112/1158/1112 505/1157/505 539/1183/539 +f 1112/1158/1112 539/1183/539 1135/1180/1135 +f 883/903/883 882/902/882 975/1003/975 +f 883/903/883 975/1003/975 1044/1079/1044 +f 704/725/704 1009/1038/1009 1008/1041/1008 +f 704/725/704 1008/1041/1008 705/722/705 +f 1052/1086/1052 962/986/962 1054/1088/1054 +f 1052/1086/1052 1054/1088/1054 1053/1087/1053 +f 1055/1092/1055 824/846/824 1060/1094/1060 +f 1055/1092/1055 1060/1094/1060 1056/1089/1056 +f 1009/1038/1009 704/725/704 824/846/824 +f 1009/1038/1009 824/846/824 1055/1092/1055 +f 1065/1104/1065 1113/1159/1113 1108/1147/1108 +f 1065/1104/1065 1108/1147/1108 1061/1096/1061 +f 1068/1103/1068 1042/1075/1042 1054/1088/1054 +f 1068/1103/1068 1054/1088/1054 1109/1154/1109 +f 1008/1041/1008 1011/1040/1011 1112/1158/1112 +f 1008/1041/1008 1112/1158/1112 1111/1156/1111 +f 1109/1154/1109 961/985/961 1063/1100/1063 +f 1109/1154/1109 1063/1100/1063 1113/1159/1113 +f 1134/1181/1134 1100/1138/1100 1099/1141/1099 +f 1134/1181/1134 1099/1141/1099 1111/1156/1111 +f 947/970/947 952/975/952 951/974/951 +f 947/970/947 951/974/951 797/817/797 +f 959/982/959 794/814/794 916/938/916 +f 959/982/959 916/938/916 919/943/919 +f 1098/1137/1098 982/1010/982 837/861/837 +f 1098/1137/1098 837/861/837 741/758/741 +f 1098/1137/1098 741/758/741 740/759/740 +f 1098/1137/1098 740/759/740 918/940/918 +f 1040/1077/1040 1047/1081/1047 1048/1082/1048 +f 1040/1077/1040 1048/1082/1048 1045/1078/1045 +f 1041/1074/1041 1044/1079/1044 975/1003/975 +f 1041/1074/1041 975/1003/975 1053/1087/1053 +f 1078/1117/1078 1127/1173/1127 947/970/947 +f 1078/1117/1078 947/970/947 946/969/946 +f 949/971/949 998/1025/998 997/1026/997 +f 949/971/949 997/1026/997 1120/1167/1120 +f 946/969/946 796/819/796 945/968/945 +f 946/969/946 945/968/945 1096/1135/1096 +f 998/1025/998 1096/1135/1096 945/968/945 +f 998/1025/998 945/968/945 950/973/950 +f 997/1026/997 805/825/805 804/828/804 +f 997/1026/997 804/828/804 1129/1175/1129 +f 1095/1134/1095 1129/1175/1129 804/828/804 +f 1095/1134/1095 804/828/804 891/912/891 +f 904/927/904 529/521/529 408/398/408 +f 904/927/904 408/398/408 1030/1064/1030 +f 1024/1053/1024 993/1021/993 863/884/863 +f 1024/1053/1024 863/884/863 860/880/860 +f 1138/1184/1138 1139/1185/1139 1140/1186/1140 +f 1138/1184/1138 1140/1186/1140 1137/1187/1137 +f 1141/1188/1141 1142/1189/1142 1137/1187/1137 +f 1141/1188/1141 1137/1187/1137 1140/1186/1140 +f 1143/1190/1143 1144/1191/1144 1142/1189/1142 +f 1143/1190/1143 1142/1189/1142 1141/1188/1141 +f 1145/1192/1145 1146/1193/1146 1144/1191/1144 +f 1145/1192/1145 1144/1191/1144 1143/1190/1143 +f 1147/1194/1147 1148/1195/1148 1146/1193/1146 +f 1147/1194/1147 1146/1193/1146 1145/1192/1145 +f 1149/1196/1149 1150/1197/1150 1148/1195/1148 +f 1149/1196/1149 1148/1195/1148 1147/1194/1147 +f 1151/1198/1151 1152/1199/1152 1150/1197/1150 +f 1151/1198/1151 1150/1197/1150 1149/1196/1149 +f 1154/1200/1154 1155/1201/1155 1156/1202/1156 +f 1154/1200/1154 1156/1202/1156 1153/1203/1153 +f 1157/1204/1157 1158/1205/1158 1155/1201/1155 +f 1157/1204/1157 1155/1201/1155 1154/1200/1154 +f 1159/1206/1159 1160/1207/1160 1142/1189/1142 +f 1159/1206/1159 1142/1189/1142 1144/1191/1144 +f 1161/1208/1161 1159/1206/1159 1144/1191/1144 +f 1161/1208/1161 1144/1191/1144 1146/1193/1146 +f 1162/1209/1162 1161/1208/1161 1146/1193/1146 +f 1162/1209/1162 1146/1193/1146 1148/1195/1148 +f 1163/1210/1163 1162/1209/1162 1148/1195/1148 +f 1163/1210/1163 1148/1195/1148 1150/1197/1150 +f 1150/1197/1150 1152/1199/1152 1164/1211/1164 +f 1150/1197/1150 1164/1211/1164 1163/1210/1163 +f 1156/1202/1156 1155/1201/1155 1166/1212/1166 +f 1156/1202/1156 1166/1212/1166 1165/1213/1165 +f 1167/1214/1167 1166/1212/1166 1155/1201/1155 +f 1167/1214/1167 1155/1201/1155 1158/1205/1158 +f 1169/1215/1169 1167/1214/1167 1158/1205/1158 +f 1169/1215/1169 1158/1205/1158 1168/1216/1168 +f 1170/1217/1170 1171/1218/1171 1172/1219/1172 +f 1170/1217/1170 1172/1219/1172 1139/1185/1139 +f 1173/1220/1173 1174/1221/1174 1141/1188/1141 +f 1173/1220/1173 1141/1188/1141 1140/1186/1140 +f 1141/1188/1141 1174/1221/1174 1175/1222/1175 +f 1141/1188/1141 1175/1222/1175 1143/1190/1143 +f 1176/1223/1176 1145/1192/1145 1143/1190/1143 +f 1176/1223/1176 1143/1190/1143 1175/1222/1175 +f 1177/1224/1177 1149/1196/1149 1147/1194/1147 +f 1177/1224/1177 1147/1194/1147 1176/1223/1176 +f 1177/1224/1177 1178/1225/1178 1151/1198/1151 +f 1177/1224/1177 1151/1198/1151 1149/1196/1149 +f 1153/1203/1153 1179/1226/1179 1180/1227/1180 +f 1153/1203/1153 1180/1227/1180 1154/1200/1154 +f 1157/1204/1157 1154/1200/1154 1180/1227/1180 +f 1157/1204/1157 1180/1227/1180 1181/1228/1181 +f 1157/1204/1157 1181/1228/1181 1182/1229/1182 +f 1157/1204/1157 1182/1229/1182 1168/1216/1168 +f 1169/1215/1169 1168/1216/1168 1182/1229/1182 +f 1169/1215/1169 1182/1229/1182 1183/1230/1183 +f 1142/1189/1142 1160/1207/1160 1138/1184/1138 +f 1142/1189/1142 1138/1184/1138 1137/1187/1137 +f 1170/1217/1170 1185/1231/1185 1186/1232/1186 +f 1170/1217/1170 1186/1232/1186 1184/1233/1184 +f 1170/1217/1170 1184/1233/1184 1187/1234/1187 +f 1170/1217/1170 1187/1234/1187 1171/1218/1171 +f 1187/1234/1187 1188/1235/1188 1172/1219/1172 +f 1187/1234/1187 1172/1219/1172 1171/1218/1171 +f 1172/1219/1172 1188/1235/1188 1140/1186/1140 +f 1172/1219/1172 1140/1186/1140 1139/1185/1139 +f 1161/1208/1161 1162/1209/1162 1163/1210/1163 +f 1161/1208/1161 1163/1210/1163 1189/1236/1189 +f 1189/1236/1189 1163/1210/1163 1164/1211/1164 +f 1189/1236/1189 1164/1211/1164 1190/1237/1190 +f 1165/1213/1165 1164/1211/1164 1152/1199/1152 +f 1165/1213/1165 1152/1199/1152 1156/1202/1156 +f 1152/1199/1152 1151/1198/1151 1153/1203/1153 +f 1152/1199/1152 1153/1203/1153 1156/1202/1156 +f 1179/1226/1179 1153/1203/1153 1151/1198/1151 +f 1179/1226/1179 1151/1198/1151 1178/1225/1178 +f 1189/1236/1189 1160/1207/1160 1159/1206/1159 +f 1189/1236/1189 1159/1206/1159 1161/1208/1161 +f 1186/1232/1186 1190/1237/1190 1164/1211/1164 +f 1186/1232/1186 1164/1211/1164 1165/1213/1165 +f 1139/1185/1139 1138/1184/1138 1185/1231/1185 +f 1139/1185/1139 1185/1231/1185 1170/1217/1170 +f 1169/1215/1169 1188/1235/1188 1187/1234/1187 +f 1169/1215/1169 1187/1234/1187 1167/1214/1167 +f 1186/1232/1186 1165/1213/1165 1166/1212/1166 +f 1186/1232/1186 1166/1212/1166 1184/1233/1184 +f 1140/1186/1140 1188/1235/1188 1191/1238/1191 +f 1140/1186/1140 1191/1238/1191 1173/1220/1173 +f 1191/1238/1191 1188/1235/1188 1169/1215/1169 +f 1191/1238/1191 1169/1215/1169 1183/1230/1183 +f 1192/1239/1192 1193/1240/1193 1179/1226/1179 +f 1192/1239/1192 1179/1226/1179 1178/1225/1178 +f 1192/1239/1192 1178/1225/1178 1177/1224/1177 +f 1192/1239/1192 1177/1224/1177 1194/1241/1194 +f 1180/1227/1180 1193/1240/1193 1072/1108/1072 +f 1180/1227/1180 1072/1108/1072 1105/1144/1105 +f 1180/1227/1180 1105/1144/1105 1107/1146/1107 +f 1180/1227/1180 1107/1146/1107 1181/1228/1181 +f 1194/1241/1194 1177/1224/1177 1176/1223/1176 +f 1194/1241/1194 1176/1223/1176 1114/1161/1114 +f 1062/1095/1062 1194/1241/1194 1114/1161/1114 +f 1062/1095/1062 1114/1161/1114 1066/1101/1066 +f 707/724/707 1072/1108/1072 1193/1240/1193 +f 707/724/707 1193/1240/1193 825/845/825 +f 825/845/825 1193/1240/1193 1192/1239/1192 +f 825/845/825 1192/1239/1192 1059/1093/1059 +f 1173/1220/1173 1191/1238/1191 832/853/832 +f 1173/1220/1173 832/853/832 711/728/711 +f 1183/1230/1183 1182/1229/1182 1005/1035/1005 +f 1183/1230/1183 1005/1035/1005 831/851/831 +f 1187/1234/1187 1184/1233/1184 1166/1212/1166 +f 1187/1234/1187 1166/1212/1166 1167/1214/1167 +f 710/727/710 1115/1160/1115 1175/1222/1175 +f 710/727/710 1175/1222/1175 1174/1221/1174 +f 1182/1229/1182 1181/1228/1181 1107/1146/1107 +f 1182/1229/1182 1107/1146/1107 1005/1035/1005 +f 453/443/453 1049/1083/1049 720/738/720 +f 453/443/453 720/738/720 598/590/598 +f 1123/1170/1123 888/910/888 889/909/889 +f 1123/1170/1123 889/909/889 844/865/844 +f 916/938/916 794/814/794 793/813/793 +f 916/938/916 793/813/793 913/939/913 +f 711/728/711 832/853/832 770/787/770 +f 711/728/711 770/787/770 708/729/708 +f 919/943/919 927/949/927 1128/1174/1128 +f 919/943/919 1128/1174/1128 959/982/959 +f 925/948/925 708/729/708 770/787/770 +f 925/948/925 770/787/770 769/786/769 +f 913/939/913 793/813/793 954/976/954 +f 913/939/913 954/976/954 924/946/924 +f 831/851/831 832/853/832 1191/1238/1191 +f 831/851/831 1191/1238/1191 1183/1230/1183 +f 895/915/895 767/784/767 766/783/766 +f 895/915/895 766/783/766 1006/1036/1006 +f 891/912/891 804/828/804 807/827/807 +f 891/912/891 807/827/807 788/808/788 +f 778/795/778 777/794/777 788/808/788 +f 778/795/778 788/808/788 807/827/807 +f 810/830/810 1000/1027/1000 776/797/776 +f 810/830/810 776/797/776 779/796/779 +f 947/970/947 1127/1173/1127 1073/1110/1073 +f 947/970/947 1073/1110/1073 952/975/952 +f 1106/1145/1106 1136/1182/1136 1132/1178/1132 +f 1106/1145/1106 1132/1178/1132 714/731/714 +f 1061/1096/1061 1062/1095/1062 1066/1101/1066 +f 1061/1096/1061 1066/1101/1066 1065/1104/1065 +f 443/1098/443 497/1150/497 1057/1090/1057 +f 443/1098/443 1057/1090/1057 1064/1099/1064 +f 1064/1099/1064 1108/1147/1108 1113/1159/1113 +f 1064/1099/1064 1113/1159/1113 1063/1100/1063 +f 1061/1096/1061 1108/1147/1108 1056/1089/1056 +f 1061/1096/1061 1056/1089/1056 1060/1094/1060 +f 1192/1239/1192 1194/1241/1194 1062/1095/1062 +f 1192/1239/1192 1062/1095/1062 1059/1093/1059 +f 1173/1220/1173 711/728/711 710/727/710 +f 1173/1220/1173 710/727/710 1174/1221/1174 +f 880/900/880 881/905/881 884/904/884 +f 880/900/880 884/904/884 878/901/878 +f 841/862/841 1047/1081/1047 1046/1080/1046 +f 841/862/841 1046/1080/1046 723/740/723 +f 1070/1106/1070 1048/1082/1048 1047/1081/1047 +f 1070/1106/1070 1047/1081/1047 841/862/841 +f 461/1115/461 342/999/342 885/907/885 +f 461/1115/461 885/907/885 886/906/886 +f 1114/1161/1114 1176/1223/1176 1175/1222/1175 +f 1114/1161/1114 1175/1222/1175 1115/1160/1115 +f 887/908/887 1124/1169/1124 1130/1176/1130 +f 887/908/887 1130/1176/1130 852/873/852 +f 206/186/206 852/873/852 1130/1176/1130 +f 206/186/206 1130/1176/1130 532/524/532 +f 681/698/681 599/592/599 1195/1242/1195 +f 681/698/681 1195/1242/1195 682/699/682 +f 1196/1243/1196 674/691/674 684/702/684 +f 1196/1243/1196 684/702/684 1195/1242/1195 +f 1197/1244/1197 675/692/675 674/691/674 +f 1197/1244/1197 674/691/674 1196/1243/1196 +f 689/706/689 690/708/690 675/692/675 +f 689/706/689 675/692/675 1197/1244/1197 +f 693/710/693 1199/1245/1199 1200/1246/1200 +f 693/710/693 1200/1246/1200 1198/1247/1198 +f 686/707/686 689/706/689 1197/1244/1197 +f 686/707/686 1197/1244/1197 1199/1245/1199 +f 1196/1243/1196 1195/1242/1195 1202/1248/1202 +f 1196/1243/1196 1202/1248/1202 1201/1249/1201 +f 1084/1122/1084 1083/1124/1083 1204/1250/1204 +f 1084/1122/1084 1204/1250/1204 1203/1251/1203 +f 1092/1131/1092 1013/1042/1013 1203/1251/1203 +f 1092/1131/1092 1203/1251/1203 1204/1250/1204 +f 1206/1252/1206 1087/1253/1087 1207/1254/1207 +f 1206/1252/1206 1207/1254/1207 1205/1255/1205 +f 1206/1252/1206 1208/1256/1208 1086/1257/1086 +f 1206/1252/1206 1086/1257/1086 1087/1253/1087 +f 1091/1258/1091 1090/1259/1090 1210/1260/1210 +f 1091/1258/1091 1210/1260/1210 1209/1261/1209 +f 1093/1132/1093 1211/1262/1211 757/774/757 +f 1093/1132/1093 757/774/757 756/775/756 +f 1079/1120/1079 1212/1263/1212 1090/1128/1090 +f 1079/1120/1079 1090/1128/1090 1080/1118/1080 +f 1079/1120/1079 979/1006/979 1088/1127/1088 +f 1079/1120/1079 1088/1127/1088 1212/1263/1212 +f 1209/1261/1209 1213/1264/1213 1085/1265/1085 +f 1209/1261/1209 1085/1265/1085 1131/1266/1131 +f 1089/1130/1089 1091/1129/1091 1131/1177/1131 +f 1089/1130/1089 1131/1177/1131 1036/1070/1036 +f 1213/1264/1213 1214/1267/1214 1204/1268/1204 +f 1213/1264/1213 1204/1268/1204 1083/1269/1083 +f 1214/1267/1214 1215/1270/1215 1092/1271/1092 +f 1214/1267/1214 1092/1271/1092 1204/1268/1204 +f 1015/1045/1015 757/774/757 1211/1262/1211 +f 1015/1045/1015 1211/1262/1211 1216/1272/1216 +f 1211/1273/1211 1093/1274/1093 1215/1270/1215 +f 1211/1273/1211 1215/1270/1215 1217/1275/1217 +f 1088/1276/1088 1208/1256/1208 1210/1260/1210 +f 1088/1276/1088 1210/1260/1210 1212/1277/1212 +f 1216/1278/1216 1211/1273/1211 1217/1275/1217 +f 1216/1278/1216 1217/1275/1217 1218/1279/1218 +f 1219/1280/1219 1218/1279/1218 1205/1255/1205 +f 1219/1280/1219 1205/1255/1205 1207/1254/1207 +f 698/715/698 697/714/697 717/734/717 +f 698/715/698 717/734/717 716/737/716 +f 967/992/967 418/407/418 524/516/524 +f 967/992/967 524/516/524 968/993/968 +f 598/590/598 720/738/720 712/733/712 +f 598/590/598 712/733/712 293/276/293 +f 697/714/697 721/739/721 1050/1084/1050 +f 697/714/697 1050/1084/1050 717/734/717 +f 957/979/957 956/978/956 1005/1035/1005 +f 957/979/957 1005/1035/1005 1107/1146/1107 +f 1186/1232/1186 1185/1231/1185 1189/1236/1189 +f 1186/1232/1186 1189/1236/1189 1190/1237/1190 +f 1022/1051/1022 896/917/896 765/782/765 +f 1022/1051/1022 765/782/765 764/785/764 +f 1122/1168/1122 896/917/896 1022/1051/1022 +f 1122/1168/1122 1022/1051/1022 1021/1054/1021 +f 678/695/678 1198/1247/1198 625/631/625 +f 678/695/678 625/631/625 27/8/27 +f 1195/1242/1195 599/592/599 626/632/626 +f 1195/1242/1195 626/632/626 1202/1248/1202 +f 1202/1248/1202 626/632/626 628/634/628 +f 1202/1248/1202 628/634/628 1220/1281/1220 +f 1198/1247/1198 1220/1281/1220 628/634/628 +f 1198/1247/1198 628/634/628 625/631/625 +f 1222/1282/1222 1223/1283/1223 1224/1284/1224 +f 1222/1282/1222 1224/1284/1224 1221/1285/1221 +f 1226/1286/1226 1227/1287/1227 1228/1288/1228 +f 1226/1286/1226 1228/1288/1228 1225/1289/1225 +f 1230/1290/1230 1231/1291/1231 1232/1292/1232 +f 1230/1290/1230 1232/1292/1232 1229/1293/1229 +f 1234/1294/1234 1232/1292/1232 1231/1291/1231 +f 1234/1294/1234 1231/1291/1231 1233/1295/1233 +f 1236/1296/1236 1237/1297/1237 1238/1298/1238 +f 1236/1296/1236 1238/1298/1238 1235/1299/1235 +f 1221/1285/1221 1239/1300/1239 1240/1301/1240 +f 1221/1285/1221 1240/1301/1240 1233/1295/1233 +f 1242/1302/1242 1243/1303/1243 1244/1304/1244 +f 1242/1302/1242 1244/1304/1244 1241/1305/1241 +f 1237/1297/1237 1245/1306/1245 1246/1307/1246 +f 1237/1297/1237 1246/1307/1246 1238/1298/1238 +f 1246/1307/1246 1245/1306/1245 1242/1302/1242 +f 1246/1307/1246 1242/1302/1242 1241/1305/1241 +f 1248/1308/1248 1224/1284/1224 1249/1309/1249 +f 1248/1308/1248 1249/1309/1249 1247/1310/1247 +f 1249/1309/1249 1250/1311/1250 660/1312/660 +f 1249/1309/1249 660/1312/660 659/1313/659 +f 661/1314/661 1247/1310/1247 1249/1309/1249 +f 661/1314/661 1249/1309/1249 659/1313/659 +f 1221/1285/1221 1224/1284/1224 1248/1308/1248 +f 1221/1285/1221 1248/1308/1248 1239/1300/1239 +f 1231/1291/1231 1222/1282/1222 1221/1285/1221 +f 1231/1291/1231 1221/1285/1221 1233/1295/1233 +f 1232/1292/1232 1234/1294/1234 1243/1303/1243 +f 1232/1292/1232 1243/1303/1243 1242/1302/1242 +f 1244/1304/1244 1243/1303/1243 1234/1294/1234 +f 1244/1304/1244 1234/1294/1234 1251/1315/1251 +f 1240/1301/1240 1251/1315/1251 1234/1294/1234 +f 1240/1301/1240 1234/1294/1234 1233/1295/1233 +f 1253/1316/1253 1134/1181/1134 1135/1180/1135 +f 1253/1316/1253 1135/1180/1135 1252/1317/1252 +f 1254/1318/1254 1255/1319/1255 1229/1293/1229 +f 1254/1318/1254 1229/1293/1229 1232/1292/1232 +f 1254/1318/1254 1225/1289/1225 1228/1288/1228 +f 1254/1318/1254 1228/1288/1228 1255/1319/1255 +f 667/1320/667 1252/1317/1252 1135/1180/1135 +f 667/1320/667 1135/1180/1135 539/1183/539 +f 1226/1286/1226 1225/1289/1225 1237/1297/1237 +f 1226/1286/1226 1237/1297/1237 1236/1296/1236 +f 1245/1306/1245 1254/1318/1254 1232/1292/1232 +f 1245/1306/1245 1232/1292/1232 1242/1302/1242 +f 1254/1318/1254 1245/1306/1245 1237/1297/1237 +f 1254/1318/1254 1237/1297/1237 1225/1289/1225 +f 669/674/669 668/675/668 1226/1286/1226 +f 669/674/669 1226/1286/1226 1236/1296/1236 +f 1230/1290/1230 1256/1321/1256 1222/1282/1222 +f 1230/1290/1230 1222/1282/1222 1231/1291/1231 +f 1235/1299/1235 671/677/671 669/674/669 +f 1235/1299/1235 669/674/669 1236/1296/1236 +f 1230/1290/1230 1101/1139/1101 1100/1138/1100 +f 1230/1290/1230 1100/1138/1100 1256/1321/1256 +f 672/678/672 488/480/488 1103/1142/1103 +f 672/678/672 1103/1142/1103 1227/1287/1227 +f 1224/1284/1224 1223/1283/1223 1250/1311/1250 +f 1224/1284/1224 1250/1311/1250 1249/1309/1249 +f 1256/1321/1256 1100/1138/1100 1134/1181/1134 +f 1256/1321/1256 1134/1181/1134 1253/1316/1253 +f 1227/1287/1227 1103/1142/1103 1132/1178/1132 +f 1227/1287/1227 1132/1178/1132 1228/1288/1228 +f 1101/1139/1101 1230/1290/1230 1229/1293/1229 +f 1101/1139/1101 1229/1293/1229 1133/1179/1133 +f 1223/1283/1223 1253/1316/1253 1252/1317/1252 +f 1223/1283/1223 1252/1317/1252 1250/1311/1250 +f 1255/1319/1255 1136/1182/1136 1133/1179/1133 +f 1255/1319/1255 1133/1179/1133 1229/1293/1229 +f 1228/1288/1228 1132/1178/1132 1136/1182/1136 +f 1228/1288/1228 1136/1182/1136 1255/1319/1255 +f 660/1312/660 1250/1311/1250 1252/1317/1252 +f 660/1312/660 1252/1317/1252 667/1320/667 +f 668/675/668 672/678/672 1227/1287/1227 +f 668/675/668 1227/1287/1227 1226/1286/1226 +f 1222/1282/1222 1256/1321/1256 1253/1316/1253 +f 1222/1282/1222 1253/1316/1253 1223/1283/1223 +f 1/1322/1 12/1323/12 1247/1310/1247 +f 1/1322/1 1247/1310/1247 661/1314/661 +f 10/1324/10 8/1325/8 1240/1301/1240 +f 10/1324/10 1240/1301/1240 1239/1300/1239 +f 1239/1300/1239 1248/1308/1248 11/1326/11 +f 1239/1300/1239 11/1326/11 10/1324/10 +f 5/1327/5 3/1328/3 1235/1299/1235 +f 5/1327/5 1235/1299/1235 1238/1298/1238 +f 9/1329/9 4/1330/4 1246/1307/1246 +f 9/1329/9 1246/1307/1246 1241/1305/1241 +f 1240/1301/1240 8/1325/8 6/1331/6 +f 1240/1301/1240 6/1331/6 1251/1315/1251 +f 7/1332/7 9/1329/9 1241/1305/1241 +f 7/1332/7 1241/1305/1241 1244/1304/1244 +f 11/1326/11 1248/1308/1248 1247/1310/1247 +f 11/1326/11 1247/1310/1247 12/1323/12 +f 3/1328/3 2/690/2 671/677/671 +f 3/1328/3 671/677/671 1235/1299/1235 +f 1238/1298/1238 1246/1307/1246 4/1330/4 +f 1238/1298/1238 4/1330/4 5/1327/5 +f 7/1332/7 1244/1304/1244 1251/1315/1251 +f 7/1332/7 1251/1315/1251 6/1331/6 +f 1203/1251/1203 1013/1042/1013 1012/1043/1012 +f 1203/1251/1203 1012/1043/1012 736/757/736 +f 937/959/937 941/964/941 1027/1057/1027 +f 937/959/937 1027/1057/1027 999/1030/999 +f 1084/1122/1084 739/756/739 1034/1067/1034 +f 1084/1122/1084 1034/1067/1034 1037/1071/1037 +f 1197/1244/1197 1196/1243/1196 1201/1249/1201 +f 1197/1244/1197 1201/1249/1201 1199/1245/1199 +f 1203/1251/1203 736/757/736 739/756/739 +f 1203/1251/1203 739/756/739 1084/1122/1084 +f 936/962/936 784/805/784 941/964/941 +f 936/962/936 941/964/941 937/959/937 +f 786/806/786 1004/1033/1004 940/963/940 +f 786/806/786 940/963/940 785/804/785 +f 467/1333/467 612/604/612 387/1334/387 +f 612/604/612 624/630/624 387/1334/387 +f 621/628/621 387/1334/387 624/630/624 +f 604/595/604 44/22/44 28/5/28 +f 472/605/472 612/604/612 467/1333/467 +f 29/6/29 28/5/28 47/26/47 +f 43/21/43 48/25/48 44/22/44 +f 30/7/30 266/1335/266 27/8/27 +f 424/414/424 239/223/239 425/415/425 +f 467/458/467 363/347/363 472/463/472 +f 561/552/561 560/553/560 572/564/572 +f 549/540/549 551/542/551 579/571/579 +f 583/574/583 595/588/595 582/575/582 +f 31/12/31 36/13/36 600/591/600 +f 39/16/39 44/22/44 603/597/603 +f 32/9/32 599/592/599 45/23/45 +f 473/626/473 613/607/613 471/606/471 +f 477/620/477 478/625/478 620/621/620 +f 474/611/474 615/610/615 617/627/617 +f 1257/1336/1257 614/609/614 618/616/618 +f 1257/1336/1257 620/621/620 622/624/622 +f 1257/1336/1257 618/616/618 619/619/619 +f 1257/1336/1257 613/607/613 615/610/615 +f 614/609/614 1257/1336/1257 615/610/615 +f 622/624/622 623/629/623 1257/1336/1257 +f 1257/1336/1257 623/629/623 611/603/611 +f 624/630/624 623/629/623 621/628/621 +f 469/617/469 618/616/618 470/615/470 +f 614/609/614 476/608/476 533/614/533 +f 610/602/610 1257/1336/1257 611/603/611 +f 613/607/613 1257/1336/1257 610/602/610 +f 620/621/620 1257/1336/1257 619/619/619 +f 541/532/541 592/584/592 562/555/562 +f 541/532/541 587/581/587 592/584/592 +f 627/633/627 607/599/607 605/596/605 +f 627/633/627 605/596/605 604/595/604 +f 605/596/605 606/598/606 603/597/603 +f 607/599/607 606/598/606 605/596/605 +f 1207/1254/1207 1082/1337/1082 1015/1338/1015 +f 1219/1280/1219 1207/1254/1207 1015/1338/1015 +f 1015/1338/1015 1216/1278/1216 1219/1280/1219 +f 693/710/693 1198/1247/1198 678/695/678 +f 1207/1254/1207 1087/1253/1087 1082/1337/1082 +f 678/695/678 677/697/677 694/712/694 +f 695/713/695 692/711/692 693/710/693 +f 266/1335/266 679/696/679 27/8/27 +f 883/903/883 1044/1079/1044 1045/1078/1045 +f 992/1020/992 1082/1121/1082 1087/1125/1087 +f 1158/1205/1158 1157/1204/1157 1168/1216/1168 +f 1147/1194/1147 1145/1192/1145 1176/1223/1176 +f 1193/1240/1193 1180/1227/1180 1179/1226/1179 +f 684/702/684 682/699/682 1195/1242/1195 +f 693/710/693 686/707/686 1199/1245/1199 +f 599/592/599 681/698/681 45/23/45 +f 1208/1256/1208 1088/1276/1088 1086/1257/1086 +f 1093/1274/1093 1092/1271/1092 1215/1270/1215 +f 1210/1260/1210 1090/1259/1090 1212/1277/1212 +f 1209/1261/1209 1258/1339/1258 1213/1264/1213 +f 1215/1270/1215 1258/1339/1258 1217/1275/1217 +f 1213/1264/1213 1258/1339/1258 1214/1267/1214 +f 1208/1256/1208 1258/1339/1258 1210/1260/1210 +f 1258/1339/1258 1209/1261/1209 1210/1260/1210 +f 1218/1279/1218 1217/1275/1217 1258/1339/1258 +f 1218/1279/1218 1258/1339/1258 1205/1255/1205 +f 1218/1279/1218 1219/1280/1219 1216/1278/1216 +f 1213/1264/1213 1083/1269/1083 1085/1265/1085 +f 1091/1258/1091 1209/1261/1209 1131/1266/1131 +f 1258/1339/1258 1206/1252/1206 1205/1255/1205 +f 1258/1339/1258 1208/1256/1208 1206/1252/1206 +f 1258/1339/1258 1215/1270/1215 1214/1267/1214 +f 1189/1236/1189 1138/1184/1138 1160/1207/1160 +f 1185/1231/1185 1138/1184/1138 1189/1236/1189 +f 1202/1248/1202 1220/1281/1220 1200/1246/1200 +f 1200/1246/1200 1220/1281/1220 1198/1247/1198 +f 1201/1249/1201 1200/1246/1200 1199/1245/1199 +f 1201/1249/1201 1202/1248/1202 1200/1246/1200 +# 2492 faces + diff --git a/dist/assets/index-DLCEVn4m.js b/dist/assets/index-Co9VroNa.js similarity index 56% rename from dist/assets/index-DLCEVn4m.js rename to dist/assets/index-Co9VroNa.js index d7b36d7..52aa543 100644 --- a/dist/assets/index-DLCEVn4m.js +++ b/dist/assets/index-Co9VroNa.js @@ -2,11 +2,11 @@ * @license * Copyright 2010-2025 Three.js Authors * SPDX-License-Identifier: MIT - */const Ts="174",So=0,Vs=1,Eo=2,Fa=1,To=2,Kt=3,hn=0,vt=1,Zt=2,cn=0,Kn=1,Gs=2,ks=3,Ws=4,yo=5,yn=100,Ao=101,bo=102,Ro=103,wo=104,Co=200,Po=201,Do=202,Lo=203,Nr=204,Fr=205,Uo=206,Io=207,No=208,Fo=209,Oo=210,Bo=211,zo=212,Ho=213,Vo=214,Or=0,Br=1,zr=2,jn=3,Hr=4,Vr=5,Gr=6,kr=7,Oa=0,Go=1,ko=2,un=0,Wo=1,Xo=2,qo=3,Yo=4,Ko=5,Zo=6,$o=7,Ba=300,Jn=301,Qn=302,Wr=303,Xr=304,Ji=306,qr=1e3,bn=1001,Yr=1002,Ot=1003,jo=1004,Si=1005,zt=1006,sr=1007,Rn=1008,Qt=1009,za=1010,Ha=1011,pi=1012,ys=1013,Cn=1014,$t=1015,mi=1016,As=1017,bs=1018,ei=1020,Va=35902,Ga=1021,ka=1022,Ft=1023,Wa=1024,Xa=1025,Zn=1026,ti=1027,qa=1028,Rs=1029,Ya=1030,ws=1031,Cs=1033,ki=33776,Wi=33777,Xi=33778,qi=33779,Kr=35840,Zr=35841,$r=35842,jr=35843,Jr=36196,Qr=37492,es=37496,ts=37808,ns=37809,is=37810,rs=37811,ss=37812,as=37813,os=37814,ls=37815,cs=37816,us=37817,hs=37818,fs=37819,ds=37820,ps=37821,Yi=36492,ms=36494,_s=36495,Ka=36283,gs=36284,vs=36285,xs=36286,Jo=3200,Qo=3201,el=0,tl=1,ln="",wt="srgb",ni="srgb-linear",Zi="linear",qe="srgb",Un=7680,Xs=519,nl=512,il=513,rl=514,Za=515,sl=516,al=517,ol=518,ll=519,qs=35044,Ys="300 es",jt=2e3,$i=2001;class ri{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[e]===void 0&&(n[e]=[]),n[e].indexOf(t)===-1&&n[e].push(t)}hasEventListener(e,t){const n=this._listeners;return n===void 0?!1:n[e]!==void 0&&n[e].indexOf(t)!==-1}removeEventListener(e,t){const n=this._listeners;if(n===void 0)return;const r=n[e];if(r!==void 0){const s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){const t=this._listeners;if(t===void 0)return;const n=t[e.type];if(n!==void 0){e.target=this;const r=n.slice(0);for(let s=0,a=r.length;s>8&255]+ft[i>>16&255]+ft[i>>24&255]+"-"+ft[e&255]+ft[e>>8&255]+"-"+ft[e>>16&15|64]+ft[e>>24&255]+"-"+ft[t&63|128]+ft[t>>8&255]+"-"+ft[t>>16&255]+ft[t>>24&255]+ft[n&255]+ft[n>>8&255]+ft[n>>16&255]+ft[n>>24&255]).toLowerCase()}function Ue(i,e,t){return Math.max(e,Math.min(t,i))}function cl(i,e){return(i%e+e)%e}function or(i,e,t){return(1-t)*i+t*e}function li(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function gt(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}class Ze{constructor(e=0,t=0){Ze.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ue(this.x,e.x,t.x),this.y=Ue(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ue(this.x,e,t),this.y=Ue(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ue(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ue(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),r=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*r+e.x,this.y=s*r+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Ce{constructor(e,t,n,r,s,a,o,l,c){Ce.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c)}set(e,t,n,r,s,a,o,l,c){const h=this.elements;return h[0]=e,h[1]=r,h[2]=o,h[3]=t,h[4]=s,h[5]=l,h[6]=n,h[7]=a,h[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],h=n[4],f=n[7],d=n[2],m=n[5],v=n[8],M=r[0],p=r[3],u=r[6],b=r[1],y=r[4],T=r[7],U=r[2],D=r[5],R=r[8];return s[0]=a*M+o*b+l*U,s[3]=a*p+o*y+l*D,s[6]=a*u+o*T+l*R,s[1]=c*M+h*b+f*U,s[4]=c*p+h*y+f*D,s[7]=c*u+h*T+f*R,s[2]=d*M+m*b+v*U,s[5]=d*p+m*y+v*D,s[8]=d*u+m*T+v*R,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8];return t*a*h-t*o*c-n*s*h+n*o*l+r*s*c-r*a*l}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],f=h*a-o*c,d=o*l-h*s,m=c*s-a*l,v=t*f+n*d+r*m;if(v===0)return this.set(0,0,0,0,0,0,0,0,0);const M=1/v;return e[0]=f*M,e[1]=(r*c-h*n)*M,e[2]=(o*n-r*a)*M,e[3]=d*M,e[4]=(h*t-r*l)*M,e[5]=(r*s-o*t)*M,e[6]=m*M,e[7]=(n*l-c*t)*M,e[8]=(a*t-n*s)*M,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,s,a,o){const l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(lr.makeScale(e,t)),this}rotate(e){return this.premultiply(lr.makeRotation(-e)),this}translate(e,t){return this.premultiply(lr.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const lr=new Ce;function $a(i){for(let e=i.length-1;e>=0;--e)if(i[e]>=65535)return!0;return!1}function ji(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function ul(){const i=ji("canvas");return i.style.display="block",i}const Ks={};function Sn(i){i in Ks||(Ks[i]=!0,console.warn(i))}function hl(i,e,t){return new Promise(function(n,r){function s(){switch(i.clientWaitSync(e,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:r();break;case i.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:n()}}setTimeout(s,t)})}function fl(i){const e=i.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function dl(i){const e=i.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const Zs=new Ce().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),$s=new Ce().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function pl(){const i={enabled:!0,workingColorSpace:ni,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===qe&&(r.r=Jt(r.r),r.g=Jt(r.g),r.b=Jt(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===qe&&(r.r=$n(r.r),r.g=$n(r.g),r.b=$n(r.b))),r},fromWorkingColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},toWorkingColorSpace:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===ln?Zi:this.spaces[r].transfer},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[ni]:{primaries:e,whitePoint:n,transfer:Zi,toXYZ:Zs,fromXYZ:$s,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:wt},outputColorSpaceConfig:{drawingBufferColorSpace:wt}},[wt]:{primaries:e,whitePoint:n,transfer:qe,toXYZ:Zs,fromXYZ:$s,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:wt}}}),i}const Ve=pl();function Jt(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function $n(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let In;class ml{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{In===void 0&&(In=ji("canvas")),In.width=e.width,In.height=e.height;const n=In.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=In}return t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=ji("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const r=n.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==Ba)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case qr:e.x=e.x-Math.floor(e.x);break;case bn:e.x=e.x<0?0:1;break;case Yr:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case qr:e.y=e.y-Math.floor(e.y);break;case bn:e.y=e.y<0?0:1;break;case Yr:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}xt.DEFAULT_IMAGE=null;xt.DEFAULT_MAPPING=Ba;xt.DEFAULT_ANISOTROPY=1;class it{constructor(e=0,t=0,n=0,r=1){it.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,s;const l=e.elements,c=l[0],h=l[4],f=l[8],d=l[1],m=l[5],v=l[9],M=l[2],p=l[6],u=l[10];if(Math.abs(h-d)<.01&&Math.abs(f-M)<.01&&Math.abs(v-p)<.01){if(Math.abs(h+d)<.1&&Math.abs(f+M)<.1&&Math.abs(v+p)<.1&&Math.abs(c+m+u-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const y=(c+1)/2,T=(m+1)/2,U=(u+1)/2,D=(h+d)/4,R=(f+M)/4,I=(v+p)/4;return y>T&&y>U?y<.01?(n=0,r=.707106781,s=.707106781):(n=Math.sqrt(y),r=D/n,s=R/n):T>U?T<.01?(n=.707106781,r=0,s=.707106781):(r=Math.sqrt(T),n=D/r,s=I/r):U<.01?(n=.707106781,r=.707106781,s=0):(s=Math.sqrt(U),n=R/s,r=I/s),this.set(n,r,s,t),this}let b=Math.sqrt((p-v)*(p-v)+(f-M)*(f-M)+(d-h)*(d-h));return Math.abs(b)<.001&&(b=1),this.x=(p-v)/b,this.y=(f-M)/b,this.z=(d-h)/b,this.w=Math.acos((c+m+u-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ue(this.x,e.x,t.x),this.y=Ue(this.y,e.y,t.y),this.z=Ue(this.z,e.z,t.z),this.w=Ue(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ue(this.x,e,t),this.y=Ue(this.y,e,t),this.z=Ue(this.z,e,t),this.w=Ue(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ue(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class vl extends ri{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new it(0,0,e,t),this.scissorTest=!1,this.viewport=new it(0,0,e,t);const r={width:e,height:t,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:zt,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const s=new xt(r,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);s.flipY=!1,s.generateMipmaps=n.generateMipmaps,s.internalFormat=n.internalFormat,this.textures=[];const a=n.count;for(let o=0;o=0?1:-1,y=1-u*u;if(y>Number.EPSILON){const U=Math.sqrt(y),D=Math.atan2(U,u*b);p=Math.sin(p*D)/U,o=Math.sin(o*D)/U}const T=o*b;if(l=l*p+d*T,c=c*p+m*T,h=h*p+v*T,f=f*p+M*T,p===1-o){const U=1/Math.sqrt(l*l+c*c+h*h+f*f);l*=U,c*=U,h*=U,f*=U}}e[t]=l,e[t+1]=c,e[t+2]=h,e[t+3]=f}static multiplyQuaternionsFlat(e,t,n,r,s,a){const o=n[r],l=n[r+1],c=n[r+2],h=n[r+3],f=s[a],d=s[a+1],m=s[a+2],v=s[a+3];return e[t]=o*v+h*f+l*m-c*d,e[t+1]=l*v+h*d+c*f-o*m,e[t+2]=c*v+h*m+o*d-l*f,e[t+3]=h*v-o*f-l*d-c*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,r=e._y,s=e._z,a=e._order,o=Math.cos,l=Math.sin,c=o(n/2),h=o(r/2),f=o(s/2),d=l(n/2),m=l(r/2),v=l(s/2);switch(a){case"XYZ":this._x=d*h*f+c*m*v,this._y=c*m*f-d*h*v,this._z=c*h*v+d*m*f,this._w=c*h*f-d*m*v;break;case"YXZ":this._x=d*h*f+c*m*v,this._y=c*m*f-d*h*v,this._z=c*h*v-d*m*f,this._w=c*h*f+d*m*v;break;case"ZXY":this._x=d*h*f-c*m*v,this._y=c*m*f+d*h*v,this._z=c*h*v+d*m*f,this._w=c*h*f-d*m*v;break;case"ZYX":this._x=d*h*f-c*m*v,this._y=c*m*f+d*h*v,this._z=c*h*v-d*m*f,this._w=c*h*f+d*m*v;break;case"YZX":this._x=d*h*f+c*m*v,this._y=c*m*f+d*h*v,this._z=c*h*v-d*m*f,this._w=c*h*f-d*m*v;break;case"XZY":this._x=d*h*f-c*m*v,this._y=c*m*f-d*h*v,this._z=c*h*v+d*m*f,this._w=c*h*f+d*m*v;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],r=t[4],s=t[8],a=t[1],o=t[5],l=t[9],c=t[2],h=t[6],f=t[10],d=n+o+f;if(d>0){const m=.5/Math.sqrt(d+1);this._w=.25/m,this._x=(h-l)*m,this._y=(s-c)*m,this._z=(a-r)*m}else if(n>o&&n>f){const m=2*Math.sqrt(1+n-o-f);this._w=(h-l)/m,this._x=.25*m,this._y=(r+a)/m,this._z=(s+c)/m}else if(o>f){const m=2*Math.sqrt(1+o-n-f);this._w=(s-c)/m,this._x=(r+a)/m,this._y=.25*m,this._z=(l+h)/m}else{const m=2*Math.sqrt(1+f-n-o);this._w=(a-r)/m,this._x=(s+c)/m,this._y=(l+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ue(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,h=t._w;return this._x=n*h+a*o+r*c-s*l,this._y=r*h+a*l+s*o-n*c,this._z=s*h+a*c+n*l-r*o,this._w=a*h-n*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,r=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+r*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const m=1-t;return this._w=m*a+t*this._w,this._x=m*n+t*this._x,this._y=m*r+t*this._y,this._z=m*s+t*this._z,this.normalize(),this}const c=Math.sqrt(l),h=Math.atan2(c,o),f=Math.sin((1-t)*h)/c,d=Math.sin(t*h)/c;return this._w=a*f+this._w*d,this._x=n*f+this._x*d,this._y=r*f+this._y*d,this._z=s*f+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class B{constructor(e=0,t=0,n=0){B.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(js.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(js.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*r,this.y=s[1]*t+s[4]*n+s[7]*r,this.z=s[2]*t+s[5]*n+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*r+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*n),h=2*(o*t-s*r),f=2*(s*n-a*t);return this.x=t+l*c+a*f-o*h,this.y=n+l*h+o*c-s*f,this.z=r+l*f+s*h-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*r,this.y=s[1]*t+s[5]*n+s[9]*r,this.z=s[2]*t+s[6]*n+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ue(this.x,e.x,t.x),this.y=Ue(this.y,e.y,t.y),this.z=Ue(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ue(this.x,e,t),this.y=Ue(this.y,e,t),this.z=Ue(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ue(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-n*l,this.z=n*o-r*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return ur.copy(this).projectOnVector(e),this.sub(ur)}reflect(e){return this.sub(ur.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ue(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const ur=new B,js=new gi;class vi{constructor(e=new B(1/0,1/0,1/0),t=new B(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,Lt),Lt.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(ci),Ti.subVectors(this.max,ci),Nn.subVectors(e.a,ci),Fn.subVectors(e.b,ci),On.subVectors(e.c,ci),tn.subVectors(Fn,Nn),nn.subVectors(On,Fn),mn.subVectors(Nn,On);let t=[0,-tn.z,tn.y,0,-nn.z,nn.y,0,-mn.z,mn.y,tn.z,0,-tn.x,nn.z,0,-nn.x,mn.z,0,-mn.x,-tn.y,tn.x,0,-nn.y,nn.x,0,-mn.y,mn.x,0];return!hr(t,Nn,Fn,On,Ti)||(t=[1,0,0,0,1,0,0,0,1],!hr(t,Nn,Fn,On,Ti))?!1:(yi.crossVectors(tn,nn),t=[yi.x,yi.y,yi.z],hr(t,Nn,Fn,On,Ti))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,Lt).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(Lt).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(kt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),kt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),kt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),kt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),kt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),kt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),kt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),kt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(kt),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const kt=[new B,new B,new B,new B,new B,new B,new B,new B],Lt=new B,Ei=new vi,Nn=new B,Fn=new B,On=new B,tn=new B,nn=new B,mn=new B,ci=new B,Ti=new B,yi=new B,_n=new B;function hr(i,e,t,n,r){for(let s=0,a=i.length-3;s<=a;s+=3){_n.fromArray(i,s);const o=r.x*Math.abs(_n.x)+r.y*Math.abs(_n.y)+r.z*Math.abs(_n.z),l=e.dot(_n),c=t.dot(_n),h=n.dot(_n);if(Math.max(-Math.max(l,c,h),Math.min(l,c,h))>o)return!1}return!0}const Ml=new vi,ui=new B,fr=new B;class Ds{constructor(e=new B,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):Ml.setFromPoints(e).getCenter(n);let r=0;for(let s=0,a=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;ui.subVectors(e,this.center);const t=ui.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.addScaledVector(ui,r/n),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(fr.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ui.copy(e.center).add(fr)),this.expandByPoint(ui.copy(e.center).sub(fr))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Wt=new B,dr=new B,Ai=new B,rn=new B,pr=new B,bi=new B,mr=new B;class Sl{constructor(e=new B,t=new B(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Wt)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=Wt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Wt.copy(this.origin).addScaledVector(this.direction,t),Wt.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){dr.copy(e).add(t).multiplyScalar(.5),Ai.copy(t).sub(e).normalize(),rn.copy(this.origin).sub(dr);const s=e.distanceTo(t)*.5,a=-this.direction.dot(Ai),o=rn.dot(this.direction),l=-rn.dot(Ai),c=rn.lengthSq(),h=Math.abs(1-a*a);let f,d,m,v;if(h>0)if(f=a*l-o,d=a*o-l,v=s*h,f>=0)if(d>=-v)if(d<=v){const M=1/h;f*=M,d*=M,m=f*(f+a*d+2*o)+d*(a*f+d+2*l)+c}else d=s,f=Math.max(0,-(a*d+o)),m=-f*f+d*(d+2*l)+c;else d=-s,f=Math.max(0,-(a*d+o)),m=-f*f+d*(d+2*l)+c;else d<=-v?(f=Math.max(0,-(-a*s+o)),d=f>0?-s:Math.min(Math.max(-s,-l),s),m=-f*f+d*(d+2*l)+c):d<=v?(f=0,d=Math.min(Math.max(-s,-l),s),m=d*(d+2*l)+c):(f=Math.max(0,-(a*s+o)),d=f>0?s:Math.min(Math.max(-s,-l),s),m=-f*f+d*(d+2*l)+c);else d=a>0?-s:s,f=Math.max(0,-(a*d+o)),m=-f*f+d*(d+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,f),r&&r.copy(dr).addScaledVector(Ai,d),m}intersectSphere(e,t){Wt.subVectors(e.center,this.origin);const n=Wt.dot(this.direction),r=Wt.dot(Wt)-n*n,s=e.radius*e.radius;if(r>s)return null;const a=Math.sqrt(s-r),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,s,a,o,l;const c=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,d=this.origin;return c>=0?(n=(e.min.x-d.x)*c,r=(e.max.x-d.x)*c):(n=(e.max.x-d.x)*c,r=(e.min.x-d.x)*c),h>=0?(s=(e.min.y-d.y)*h,a=(e.max.y-d.y)*h):(s=(e.max.y-d.y)*h,a=(e.min.y-d.y)*h),n>a||s>r||((s>n||isNaN(n))&&(n=s),(a=0?(o=(e.min.z-d.z)*f,l=(e.max.z-d.z)*f):(o=(e.max.z-d.z)*f,l=(e.min.z-d.z)*f),n>l||o>r)||((o>n||n!==n)&&(n=o),(l=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,Wt)!==null}intersectTriangle(e,t,n,r,s){pr.subVectors(t,e),bi.subVectors(n,e),mr.crossVectors(pr,bi);let a=this.direction.dot(mr),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;rn.subVectors(this.origin,e);const l=o*this.direction.dot(bi.crossVectors(rn,bi));if(l<0)return null;const c=o*this.direction.dot(pr.cross(rn));if(c<0||l+c>a)return null;const h=-o*rn.dot(mr);return h<0?null:this.at(h/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class at{constructor(e,t,n,r,s,a,o,l,c,h,f,d,m,v,M,p){at.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c,h,f,d,m,v,M,p)}set(e,t,n,r,s,a,o,l,c,h,f,d,m,v,M,p){const u=this.elements;return u[0]=e,u[4]=t,u[8]=n,u[12]=r,u[1]=s,u[5]=a,u[9]=o,u[13]=l,u[2]=c,u[6]=h,u[10]=f,u[14]=d,u[3]=m,u[7]=v,u[11]=M,u[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new at().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,r=1/Bn.setFromMatrixColumn(e,0).length(),s=1/Bn.setFromMatrixColumn(e,1).length(),a=1/Bn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,r=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(r),c=Math.sin(r),h=Math.cos(s),f=Math.sin(s);if(e.order==="XYZ"){const d=a*h,m=a*f,v=o*h,M=o*f;t[0]=l*h,t[4]=-l*f,t[8]=c,t[1]=m+v*c,t[5]=d-M*c,t[9]=-o*l,t[2]=M-d*c,t[6]=v+m*c,t[10]=a*l}else if(e.order==="YXZ"){const d=l*h,m=l*f,v=c*h,M=c*f;t[0]=d+M*o,t[4]=v*o-m,t[8]=a*c,t[1]=a*f,t[5]=a*h,t[9]=-o,t[2]=m*o-v,t[6]=M+d*o,t[10]=a*l}else if(e.order==="ZXY"){const d=l*h,m=l*f,v=c*h,M=c*f;t[0]=d-M*o,t[4]=-a*f,t[8]=v+m*o,t[1]=m+v*o,t[5]=a*h,t[9]=M-d*o,t[2]=-a*c,t[6]=o,t[10]=a*l}else if(e.order==="ZYX"){const d=a*h,m=a*f,v=o*h,M=o*f;t[0]=l*h,t[4]=v*c-m,t[8]=d*c+M,t[1]=l*f,t[5]=M*c+d,t[9]=m*c-v,t[2]=-c,t[6]=o*l,t[10]=a*l}else if(e.order==="YZX"){const d=a*l,m=a*c,v=o*l,M=o*c;t[0]=l*h,t[4]=M-d*f,t[8]=v*f+m,t[1]=f,t[5]=a*h,t[9]=-o*h,t[2]=-c*h,t[6]=m*f+v,t[10]=d-M*f}else if(e.order==="XZY"){const d=a*l,m=a*c,v=o*l,M=o*c;t[0]=l*h,t[4]=-f,t[8]=c*h,t[1]=d*f+M,t[5]=a*h,t[9]=m*f-v,t[2]=v*f-m,t[6]=o*h,t[10]=M*f+d}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(El,e,Tl)}lookAt(e,t,n){const r=this.elements;return St.subVectors(e,t),St.lengthSq()===0&&(St.z=1),St.normalize(),sn.crossVectors(n,St),sn.lengthSq()===0&&(Math.abs(n.z)===1?St.x+=1e-4:St.z+=1e-4,St.normalize(),sn.crossVectors(n,St)),sn.normalize(),Ri.crossVectors(St,sn),r[0]=sn.x,r[4]=Ri.x,r[8]=St.x,r[1]=sn.y,r[5]=Ri.y,r[9]=St.y,r[2]=sn.z,r[6]=Ri.z,r[10]=St.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],h=n[1],f=n[5],d=n[9],m=n[13],v=n[2],M=n[6],p=n[10],u=n[14],b=n[3],y=n[7],T=n[11],U=n[15],D=r[0],R=r[4],I=r[8],S=r[12],x=r[1],w=r[5],k=r[9],z=r[13],K=r[2],Z=r[6],X=r[10],j=r[14],V=r[3],re=r[7],ue=r[11],ve=r[15];return s[0]=a*D+o*x+l*K+c*V,s[4]=a*R+o*w+l*Z+c*re,s[8]=a*I+o*k+l*X+c*ue,s[12]=a*S+o*z+l*j+c*ve,s[1]=h*D+f*x+d*K+m*V,s[5]=h*R+f*w+d*Z+m*re,s[9]=h*I+f*k+d*X+m*ue,s[13]=h*S+f*z+d*j+m*ve,s[2]=v*D+M*x+p*K+u*V,s[6]=v*R+M*w+p*Z+u*re,s[10]=v*I+M*k+p*X+u*ue,s[14]=v*S+M*z+p*j+u*ve,s[3]=b*D+y*x+T*K+U*V,s[7]=b*R+y*w+T*Z+U*re,s[11]=b*I+y*k+T*X+U*ue,s[15]=b*S+y*z+T*j+U*ve,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],r=e[8],s=e[12],a=e[1],o=e[5],l=e[9],c=e[13],h=e[2],f=e[6],d=e[10],m=e[14],v=e[3],M=e[7],p=e[11],u=e[15];return v*(+s*l*f-r*c*f-s*o*d+n*c*d+r*o*m-n*l*m)+M*(+t*l*m-t*c*d+s*a*d-r*a*m+r*c*h-s*l*h)+p*(+t*c*f-t*o*m-s*a*f+n*a*m+s*o*h-n*c*h)+u*(-r*o*h-t*l*f+t*o*d+r*a*f-n*a*d+n*l*h)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],h=e[8],f=e[9],d=e[10],m=e[11],v=e[12],M=e[13],p=e[14],u=e[15],b=f*p*c-M*d*c+M*l*m-o*p*m-f*l*u+o*d*u,y=v*d*c-h*p*c-v*l*m+a*p*m+h*l*u-a*d*u,T=h*M*c-v*f*c+v*o*m-a*M*m-h*o*u+a*f*u,U=v*f*l-h*M*l-v*o*d+a*M*d+h*o*p-a*f*p,D=t*b+n*y+r*T+s*U;if(D===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const R=1/D;return e[0]=b*R,e[1]=(M*d*s-f*p*s-M*r*m+n*p*m+f*r*u-n*d*u)*R,e[2]=(o*p*s-M*l*s+M*r*c-n*p*c-o*r*u+n*l*u)*R,e[3]=(f*l*s-o*d*s-f*r*c+n*d*c+o*r*m-n*l*m)*R,e[4]=y*R,e[5]=(h*p*s-v*d*s+v*r*m-t*p*m-h*r*u+t*d*u)*R,e[6]=(v*l*s-a*p*s-v*r*c+t*p*c+a*r*u-t*l*u)*R,e[7]=(a*d*s-h*l*s+h*r*c-t*d*c-a*r*m+t*l*m)*R,e[8]=T*R,e[9]=(v*f*s-h*M*s-v*n*m+t*M*m+h*n*u-t*f*u)*R,e[10]=(a*M*s-v*o*s+v*n*c-t*M*c-a*n*u+t*o*u)*R,e[11]=(h*o*s-a*f*s-h*n*c+t*f*c+a*n*m-t*o*m)*R,e[12]=U*R,e[13]=(h*M*r-v*f*r+v*n*d-t*M*d-h*n*p+t*f*p)*R,e[14]=(v*o*r-a*M*r-v*n*l+t*M*l+a*n*p-t*o*p)*R,e[15]=(a*f*r-h*o*r+h*n*l-t*f*l-a*n*d+t*o*d)*R,this}scale(e){const t=this.elements,n=e.x,r=e.y,s=e.z;return t[0]*=n,t[4]*=r,t[8]*=s,t[1]*=n,t[5]*=r,t[9]*=s,t[2]*=n,t[6]*=r,t[10]*=s,t[3]*=n,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,r))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),r=Math.sin(t),s=1-n,a=e.x,o=e.y,l=e.z,c=s*a,h=s*o;return this.set(c*a+n,c*o-r*l,c*l+r*o,0,c*o+r*l,h*o+n,h*l-r*a,0,c*l-r*o,h*l+r*a,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,r,s,a){return this.set(1,n,s,0,e,1,a,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){const r=this.elements,s=t._x,a=t._y,o=t._z,l=t._w,c=s+s,h=a+a,f=o+o,d=s*c,m=s*h,v=s*f,M=a*h,p=a*f,u=o*f,b=l*c,y=l*h,T=l*f,U=n.x,D=n.y,R=n.z;return r[0]=(1-(M+u))*U,r[1]=(m+T)*U,r[2]=(v-y)*U,r[3]=0,r[4]=(m-T)*D,r[5]=(1-(d+u))*D,r[6]=(p+b)*D,r[7]=0,r[8]=(v+y)*R,r[9]=(p-b)*R,r[10]=(1-(d+M))*R,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){const r=this.elements;let s=Bn.set(r[0],r[1],r[2]).length();const a=Bn.set(r[4],r[5],r[6]).length(),o=Bn.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],Ut.copy(this);const c=1/s,h=1/a,f=1/o;return Ut.elements[0]*=c,Ut.elements[1]*=c,Ut.elements[2]*=c,Ut.elements[4]*=h,Ut.elements[5]*=h,Ut.elements[6]*=h,Ut.elements[8]*=f,Ut.elements[9]*=f,Ut.elements[10]*=f,t.setFromRotationMatrix(Ut),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,r,s,a,o=jt){const l=this.elements,c=2*s/(t-e),h=2*s/(n-r),f=(t+e)/(t-e),d=(n+r)/(n-r);let m,v;if(o===jt)m=-(a+s)/(a-s),v=-2*a*s/(a-s);else if(o===$i)m=-a/(a-s),v=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=f,l[12]=0,l[1]=0,l[5]=h,l[9]=d,l[13]=0,l[2]=0,l[6]=0,l[10]=m,l[14]=v,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,r,s,a,o=jt){const l=this.elements,c=1/(t-e),h=1/(n-r),f=1/(a-s),d=(t+e)*c,m=(n+r)*h;let v,M;if(o===jt)v=(a+s)*f,M=-2*f;else if(o===$i)v=s*f,M=-1*f;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-d,l[1]=0,l[5]=2*h,l[9]=0,l[13]=-m,l[2]=0,l[6]=0,l[10]=M,l[14]=-v,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const Bn=new B,Ut=new at,El=new B(0,0,0),Tl=new B(1,1,1),sn=new B,Ri=new B,St=new B,Js=new at,Qs=new gi;class en{constructor(e=0,t=0,n=0,r=en.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,r=this._order){return this._x=e,this._y=t,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const r=e.elements,s=r[0],a=r[4],o=r[8],l=r[1],c=r[5],h=r[9],f=r[2],d=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin(Ue(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Ue(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(Ue(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Ue(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(d,m),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(Ue(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,c),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-Ue(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Js.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Js,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Qs.setFromEuler(this),this.setFromQuaternion(Qs,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}en.DEFAULT_ORDER="XYZ";class Ja{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,h=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),d.length>0&&(n.skeletons=d),m.length>0&&(n.animations=m),v.length>0&&(n.nodes=v)}return n.object=r,n;function a(o){const l=[];for(const c in o){const h=o[c];delete h.metadata,l.push(h)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,n,r,s){It.subVectors(r,t),qt.subVectors(n,t),gr.subVectors(e,t);const a=It.dot(It),o=It.dot(qt),l=It.dot(gr),c=qt.dot(qt),h=qt.dot(gr),f=a*c-o*o;if(f===0)return s.set(0,0,0),null;const d=1/f,m=(c*l-o*h)*d,v=(a*h-o*l)*d;return s.set(1-m-v,v,m)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,Yt)===null?!1:Yt.x>=0&&Yt.y>=0&&Yt.x+Yt.y<=1}static getInterpolation(e,t,n,r,s,a,o,l){return this.getBarycoord(e,t,n,r,Yt)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Yt.x),l.addScaledVector(a,Yt.y),l.addScaledVector(o,Yt.z),l)}static getInterpolatedAttribute(e,t,n,r,s,a){return Sr.setScalar(0),Er.setScalar(0),Tr.setScalar(0),Sr.fromBufferAttribute(e,t),Er.fromBufferAttribute(e,n),Tr.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(Sr,s.x),a.addScaledVector(Er,s.y),a.addScaledVector(Tr,s.z),a}static isFrontFacing(e,t,n,r){return It.subVectors(n,t),qt.subVectors(e,t),It.cross(qt).dot(r)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,n,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return It.subVectors(this.c,this.b),qt.subVectors(this.a,this.b),It.cross(qt).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Nt.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Nt.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,r,s){return Nt.getInterpolation(e,this.a,this.b,this.c,t,n,r,s)}containsPoint(e){return Nt.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Nt.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,r=this.b,s=this.c;let a,o;Vn.subVectors(r,n),Gn.subVectors(s,n),vr.subVectors(e,n);const l=Vn.dot(vr),c=Gn.dot(vr);if(l<=0&&c<=0)return t.copy(n);xr.subVectors(e,r);const h=Vn.dot(xr),f=Gn.dot(xr);if(h>=0&&f<=h)return t.copy(r);const d=l*f-h*c;if(d<=0&&l>=0&&h<=0)return a=l/(l-h),t.copy(n).addScaledVector(Vn,a);Mr.subVectors(e,s);const m=Vn.dot(Mr),v=Gn.dot(Mr);if(v>=0&&m<=v)return t.copy(s);const M=m*c-l*v;if(M<=0&&c>=0&&v<=0)return o=c/(c-v),t.copy(n).addScaledVector(Gn,o);const p=h*v-m*f;if(p<=0&&f-h>=0&&m-v>=0)return sa.subVectors(s,r),o=(f-h)/(f-h+(m-v)),t.copy(r).addScaledVector(sa,o);const u=1/(p+M+d);return a=M*u,o=d*u,t.copy(n).addScaledVector(Vn,a).addScaledVector(Gn,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Qa={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},an={h:0,s:0,l:0},Ci={h:0,s:0,l:0};function yr(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*6*(2/3-t):i}class Ye{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=wt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ve.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=Ve.workingColorSpace){return this.r=e,this.g=t,this.b=n,Ve.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=Ve.workingColorSpace){if(e=cl(e,1),t=Ue(t,0,1),n=Ue(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,a=2*n-s;this.r=yr(a,s,e+1/3),this.g=yr(a,s,e),this.b=yr(a,s,e-1/3)}return Ve.toWorkingColorSpace(this,r),this}setStyle(e,t=wt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=wt){const n=Qa[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Jt(e.r),this.g=Jt(e.g),this.b=Jt(e.b),this}copyLinearToSRGB(e){return this.r=$n(e.r),this.g=$n(e.g),this.b=$n(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=wt){return Ve.fromWorkingColorSpace(dt.copy(this),e),Math.round(Ue(dt.r*255,0,255))*65536+Math.round(Ue(dt.g*255,0,255))*256+Math.round(Ue(dt.b*255,0,255))}getHexString(e=wt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ve.workingColorSpace){Ve.fromWorkingColorSpace(dt.copy(this),t);const n=dt.r,r=dt.g,s=dt.b,a=Math.max(n,r,s),o=Math.min(n,r,s);let l,c;const h=(o+a)/2;if(o===a)l=0,c=0;else{const f=a-o;switch(c=h<=.5?f/(a+o):f/(2-a-o),a){case n:l=(r-s)/f+(r0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Kn&&(n.blending=this.blending),this.side!==hn&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==Nr&&(n.blendSrc=this.blendSrc),this.blendDst!==Fr&&(n.blendDst=this.blendDst),this.blendEquation!==yn&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==jn&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Xs&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Un&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Un&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Un&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function r(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(t){const s=r(e.textures),a=r(e.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Ls extends Qi{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ye(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new en,this.combine=Oa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const st=new B,Pi=new Ze;let Cl=0;class Vt{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Cl++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=qs,this.updateRanges=[],this.gpuType=$t,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let r=0,s=this.itemSize;rt.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new vi);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new B(-1/0,-1/0,-1/0),new B(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,r=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],h=[];for(let f=0,d=c.length;f0&&(r[l]=h,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone(t));const r=e.attributes;for(const c in r){const h=r[c];this.setAttribute(c,h.clone(t))}const s=e.morphAttributes;for(const c in s){const h=[],f=s[c];for(let d=0,m=f.length;d0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(e.far-e.near)**2))&&(aa.copy(s).invert(),gn.copy(e.ray).applyMatrix4(aa),!(n.boundingBox!==null&&gn.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,gn)))}_computeIntersections(e,t,n){let r;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,h=s.attributes.uv1,f=s.attributes.normal,d=s.groups,m=s.drawRange;if(o!==null)if(Array.isArray(a))for(let v=0,M=d.length;vt.far?null:{distance:c,point:Fi.clone(),object:i}}function Oi(i,e,t,n,r,s,a,o,l,c){i.getVertexPosition(o,Li),i.getVertexPosition(l,Ui),i.getVertexPosition(c,Ii);const h=Dl(i,e,t,n,Li,Ui,Ii,la);if(h){const f=new B;Nt.getBarycoord(la,Li,Ui,Ii,f),r&&(h.uv=Nt.getInterpolatedAttribute(r,o,l,c,f,new Ze)),s&&(h.uv1=Nt.getInterpolatedAttribute(s,o,l,c,f,new Ze)),a&&(h.normal=Nt.getInterpolatedAttribute(a,o,l,c,f,new B),h.normal.dot(n.direction)>0&&h.normal.multiplyScalar(-1));const d={a:o,b:l,c,normal:new B,materialIndex:0};Nt.getNormal(Li,Ui,Ii,d.normal),h.face=d,h.barycoord=f}return h}class si extends Dn{constructor(e=1,t=1,n=1,r=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:s,depthSegments:a};const o=this;r=Math.floor(r),s=Math.floor(s),a=Math.floor(a);const l=[],c=[],h=[],f=[];let d=0,m=0;v("z","y","x",-1,-1,n,t,e,a,s,0),v("z","y","x",1,-1,n,t,-e,a,s,1),v("x","z","y",1,1,e,n,t,r,a,2),v("x","z","y",1,-1,e,n,-t,r,a,3),v("x","y","z",1,-1,e,t,n,r,s,4),v("x","y","z",-1,-1,e,t,-n,r,s,5),this.setIndex(l),this.setAttribute("position",new wn(c,3)),this.setAttribute("normal",new wn(h,3)),this.setAttribute("uv",new wn(f,2));function v(M,p,u,b,y,T,U,D,R,I,S){const x=T/R,w=U/I,k=T/2,z=U/2,K=D/2,Z=R+1,X=I+1;let j=0,V=0;const re=new B;for(let ue=0;ue0?1:-1,h.push(re.x,re.y,re.z),f.push(Le/R),f.push(1-ue/I),j+=1}}for(let ue=0;ue>8&255]+dt[i>>16&255]+dt[i>>24&255]+"-"+dt[e&255]+dt[e>>8&255]+"-"+dt[e>>16&15|64]+dt[e>>24&255]+"-"+dt[t&63|128]+dt[t>>8&255]+"-"+dt[t>>16&255]+dt[t>>24&255]+dt[n&255]+dt[n>>8&255]+dt[n>>16&255]+dt[n>>24&255]).toLowerCase()}function Ie(i,e,t){return Math.max(e,Math.min(t,i))}function Bl(i,e){return(i%e+e)%e}function Mr(i,e,t){return(1-t)*i+t*e}function ui(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return i/4294967295;case Uint16Array:return i/65535;case Uint8Array:return i/255;case Int32Array:return Math.max(i/2147483647,-1);case Int16Array:return Math.max(i/32767,-1);case Int8Array:return Math.max(i/127,-1);default:throw new Error("Invalid component type.")}}function xt(i,e){switch(e.constructor){case Float32Array:return i;case Uint32Array:return Math.round(i*4294967295);case Uint16Array:return Math.round(i*65535);case Uint8Array:return Math.round(i*255);case Int32Array:return Math.round(i*2147483647);case Int16Array:return Math.round(i*32767);case Int8Array:return Math.round(i*127);default:throw new Error("Invalid component type.")}}class je{constructor(e=0,t=0){je.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Ie(this.x,e.x,t.x),this.y=Ie(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=Ie(this.x,e,t),this.y=Ie(this.y,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ie(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ie(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const n=Math.cos(t),r=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*r+e.x,this.y=s*r+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Ce{constructor(e,t,n,r,s,a,o,l,c){Ce.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c)}set(e,t,n,r,s,a,o,l,c){const u=this.elements;return u[0]=e,u[1]=r,u[2]=o,u[3]=t,u[4]=s,u[5]=l,u[6]=n,u[7]=a,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[3],l=n[6],c=n[1],u=n[4],h=n[7],d=n[2],m=n[5],g=n[8],x=r[0],p=r[3],f=r[6],b=r[1],T=r[4],S=r[7],U=r[2],R=r[5],w=r[8];return s[0]=a*x+o*b+l*U,s[3]=a*p+o*T+l*R,s[6]=a*f+o*S+l*w,s[1]=c*x+u*b+h*U,s[4]=c*p+u*T+h*R,s[7]=c*f+u*S+h*w,s[2]=d*x+m*b+g*U,s[5]=d*p+m*T+g*R,s[8]=d*f+m*S+g*w,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],u=e[8];return t*a*u-t*o*c-n*s*u+n*o*l+r*s*c-r*a*l}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],u=e[8],h=u*a-o*c,d=o*l-u*s,m=c*s-a*l,g=t*h+n*d+r*m;if(g===0)return this.set(0,0,0,0,0,0,0,0,0);const x=1/g;return e[0]=h*x,e[1]=(r*c-u*n)*x,e[2]=(o*n-r*a)*x,e[3]=d*x,e[4]=(u*t-r*l)*x,e[5]=(r*s-o*t)*x,e[6]=m*x,e[7]=(n*l-c*t)*x,e[8]=(a*t-n*s)*x,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,r,s,a,o){const l=Math.cos(s),c=Math.sin(s);return this.set(n*l,n*c,-n*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Sr.makeScale(e,t)),this}rotate(e){return this.premultiply(Sr.makeRotation(-e)),this}translate(e,t){return this.premultiply(Sr.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Sr=new Ce;function Ro(i){for(let e=i.length-1;e>=0;--e)if(i[e]>=65535)return!0;return!1}function cr(i){return document.createElementNS("http://www.w3.org/1999/xhtml",i)}function zl(){const i=cr("canvas");return i.style.display="block",i}const fa={};function An(i){i in fa||(fa[i]=!0,console.warn(i))}function Hl(i,e,t){return new Promise(function(n,r){function s(){switch(i.clientWaitSync(e,i.SYNC_FLUSH_COMMANDS_BIT,0)){case i.WAIT_FAILED:r();break;case i.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:n()}}setTimeout(s,t)})}function Vl(i){const e=i.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function Gl(i){const e=i.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const da=new Ce().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),pa=new Ce().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function kl(){const i={enabled:!0,workingColorSpace:si,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===Ye&&(r.r=rn(r.r),r.g=rn(r.g),r.b=rn(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Ye&&(r.r=Qn(r.r),r.g=Qn(r.g),r.b=Qn(r.b))),r},fromWorkingColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},toWorkingColorSpace:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===dn?or:this.spaces[r].transfer},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],n=[.3127,.329];return i.define({[si]:{primaries:e,whitePoint:n,transfer:or,toXYZ:da,fromXYZ:pa,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:bt},outputColorSpaceConfig:{drawingBufferColorSpace:bt}},[bt]:{primaries:e,whitePoint:n,transfer:Ye,toXYZ:da,fromXYZ:pa,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:bt}}}),i}const Ge=kl();function rn(i){return i<.04045?i*.0773993808:Math.pow(i*.9478672986+.0521327014,2.4)}function Qn(i){return i<.0031308?i*12.92:1.055*Math.pow(i,.41666)-.055}let On;class Wl{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let t;if(e instanceof HTMLCanvasElement)t=e;else{On===void 0&&(On=cr("canvas")),On.width=e.width,On.height=e.height;const n=On.getContext("2d");e instanceof ImageData?n.putImageData(e,0,0):n.drawImage(e,0,0,e.width,e.height),t=On}return t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const t=cr("canvas");t.width=e.width,t.height=e.height;const n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);const r=n.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==po)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case ls:e.x=e.x-Math.floor(e.x);break;case Ln:e.x=e.x<0?0:1;break;case cs:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case ls:e.y=e.y-Math.floor(e.y);break;case Ln:e.y=e.y<0?0:1;break;case cs:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}St.DEFAULT_IMAGE=null;St.DEFAULT_MAPPING=po;St.DEFAULT_ANISOTROPY=1;class rt{constructor(e=0,t=0,n=0,r=1){rt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,r){return this.x=e,this.y=t,this.z=n,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,r,s;const l=e.elements,c=l[0],u=l[4],h=l[8],d=l[1],m=l[5],g=l[9],x=l[2],p=l[6],f=l[10];if(Math.abs(u-d)<.01&&Math.abs(h-x)<.01&&Math.abs(g-p)<.01){if(Math.abs(u+d)<.1&&Math.abs(h+x)<.1&&Math.abs(g+p)<.1&&Math.abs(c+m+f-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const T=(c+1)/2,S=(m+1)/2,U=(f+1)/2,R=(u+d)/4,w=(h+x)/4,I=(g+p)/4;return T>S&&T>U?T<.01?(n=0,r=.707106781,s=.707106781):(n=Math.sqrt(T),r=R/n,s=w/n):S>U?S<.01?(n=.707106781,r=0,s=.707106781):(r=Math.sqrt(S),n=R/r,s=I/r):U<.01?(n=.707106781,r=.707106781,s=0):(s=Math.sqrt(U),n=w/s,r=I/s),this.set(n,r,s,t),this}let b=Math.sqrt((p-g)*(p-g)+(h-x)*(h-x)+(d-u)*(d-u));return Math.abs(b)<.001&&(b=1),this.x=(p-g)/b,this.y=(h-x)/b,this.z=(d-u)/b,this.w=Math.acos((c+m+f-1)/2),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Ie(this.x,e.x,t.x),this.y=Ie(this.y,e.y,t.y),this.z=Ie(this.z,e.z,t.z),this.w=Ie(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=Ie(this.x,e,t),this.y=Ie(this.y,e,t),this.z=Ie(this.z,e,t),this.w=Ie(this.w,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ie(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Yl extends oi{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new rt(0,0,e,t),this.scissorTest=!1,this.viewport=new rt(0,0,e,t);const r={width:e,height:t,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:kt,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const s=new St(r,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);s.flipY=!1,s.generateMipmaps=n.generateMipmaps,s.internalFormat=n.internalFormat,this.textures=[];const a=n.count;for(let o=0;o=0?1:-1,T=1-f*f;if(T>Number.EPSILON){const U=Math.sqrt(T),R=Math.atan2(U,f*b);p=Math.sin(p*R)/U,o=Math.sin(o*R)/U}const S=o*b;if(l=l*p+d*S,c=c*p+m*S,u=u*p+g*S,h=h*p+x*S,p===1-o){const U=1/Math.sqrt(l*l+c*c+u*u+h*h);l*=U,c*=U,u*=U,h*=U}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=h}static multiplyQuaternionsFlat(e,t,n,r,s,a){const o=n[r],l=n[r+1],c=n[r+2],u=n[r+3],h=s[a],d=s[a+1],m=s[a+2],g=s[a+3];return e[t]=o*g+u*h+l*m-c*d,e[t+1]=l*g+u*d+c*h-o*m,e[t+2]=c*g+u*m+o*d-l*h,e[t+3]=u*g-o*h-l*d-c*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,r){return this._x=e,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,r=e._y,s=e._z,a=e._order,o=Math.cos,l=Math.sin,c=o(n/2),u=o(r/2),h=o(s/2),d=l(n/2),m=l(r/2),g=l(s/2);switch(a){case"XYZ":this._x=d*u*h+c*m*g,this._y=c*m*h-d*u*g,this._z=c*u*g+d*m*h,this._w=c*u*h-d*m*g;break;case"YXZ":this._x=d*u*h+c*m*g,this._y=c*m*h-d*u*g,this._z=c*u*g-d*m*h,this._w=c*u*h+d*m*g;break;case"ZXY":this._x=d*u*h-c*m*g,this._y=c*m*h+d*u*g,this._z=c*u*g+d*m*h,this._w=c*u*h-d*m*g;break;case"ZYX":this._x=d*u*h-c*m*g,this._y=c*m*h+d*u*g,this._z=c*u*g-d*m*h,this._w=c*u*h+d*m*g;break;case"YZX":this._x=d*u*h+c*m*g,this._y=c*m*h+d*u*g,this._z=c*u*g-d*m*h,this._w=c*u*h-d*m*g;break;case"XZY":this._x=d*u*h-c*m*g,this._y=c*m*h-d*u*g,this._z=c*u*g+d*m*h,this._w=c*u*h+d*m*g;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,r=Math.sin(n);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],r=t[4],s=t[8],a=t[1],o=t[5],l=t[9],c=t[2],u=t[6],h=t[10],d=n+o+h;if(d>0){const m=.5/Math.sqrt(d+1);this._w=.25/m,this._x=(u-l)*m,this._y=(s-c)*m,this._z=(a-r)*m}else if(n>o&&n>h){const m=2*Math.sqrt(1+n-o-h);this._w=(u-l)/m,this._x=.25*m,this._y=(r+a)/m,this._z=(s+c)/m}else if(o>h){const m=2*Math.sqrt(1+o-n-h);this._w=(s-c)/m,this._x=(r+a)/m,this._y=.25*m,this._z=(l+u)/m}else{const m=2*Math.sqrt(1+h-n-o);this._w=(a-r)/m,this._x=(s+c)/m,this._y=(l+u)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Ie(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,u=t._w;return this._x=n*u+a*o+r*c-s*l,this._y=r*u+a*l+s*o-n*c,this._z=s*u+a*c+n*l-r*o,this._w=a*u-n*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,r=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+r*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=r,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const m=1-t;return this._w=m*a+t*this._w,this._x=m*n+t*this._x,this._y=m*r+t*this._y,this._z=m*s+t*this._z,this.normalize(),this}const c=Math.sqrt(l),u=Math.atan2(c,o),h=Math.sin((1-t)*u)/c,d=Math.sin(t*u)/c;return this._w=a*h+this._w*d,this._x=n*h+this._x*d,this._y=r*h+this._y*d,this._z=s*h+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class N{constructor(e=0,t=0,n=0){N.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(ma.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(ma.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*r,this.y=s[1]*t+s[4]*n+s[7]*r,this.z=s[2]*t+s[5]*n+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*r+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*n),u=2*(o*t-s*r),h=2*(s*n-a*t);return this.x=t+l*c+a*h-o*u,this.y=n+l*u+o*c-s*h,this.z=r+l*h+s*u-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,n=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*r,this.y=s[1]*t+s[5]*n+s[9]*r,this.z=s[2]*t+s[6]*n+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Ie(this.x,e.x,t.x),this.y=Ie(this.y,e.y,t.y),this.z=Ie(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=Ie(this.x,e,t),this.y=Ie(this.y,e,t),this.z=Ie(this.z,e,t),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Ie(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-n*l,this.z=n*o-r*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return yr.copy(this).projectOnVector(e),this.sub(yr)}reflect(e){return this.sub(yr.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Ie(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,r=this.z-e.z;return t*t+n*n+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){const r=Math.sin(t)*e;return this.x=r*Math.sin(n),this.y=Math.cos(t)*e,this.z=r*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const yr=new N,ma=new Ei;class yi{constructor(e=new N(1/0,1/0,1/0),t=new N(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,It),It.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(hi),Pi.subVectors(this.max,hi),Bn.subVectors(e.a,hi),zn.subVectors(e.b,hi),Hn.subVectors(e.c,hi),on.subVectors(zn,Bn),ln.subVectors(Hn,zn),Mn.subVectors(Bn,Hn);let t=[0,-on.z,on.y,0,-ln.z,ln.y,0,-Mn.z,Mn.y,on.z,0,-on.x,ln.z,0,-ln.x,Mn.z,0,-Mn.x,-on.y,on.x,0,-ln.y,ln.x,0,-Mn.y,Mn.x,0];return!Tr(t,Bn,zn,Hn,Pi)||(t=[1,0,0,0,1,0,0,0,1],!Tr(t,Bn,zn,Hn,Pi))?!1:(Li.crossVectors(on,ln),t=[Li.x,Li.y,Li.z],Tr(t,Bn,zn,Hn,Pi))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,It).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(It).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Yt[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Yt[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Yt[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Yt[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Yt[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Yt[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Yt[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Yt[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Yt),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Yt=[new N,new N,new N,new N,new N,new N,new N,new N],It=new N,Ci=new yi,Bn=new N,zn=new N,Hn=new N,on=new N,ln=new N,Mn=new N,hi=new N,Pi=new N,Li=new N,Sn=new N;function Tr(i,e,t,n,r){for(let s=0,a=i.length-3;s<=a;s+=3){Sn.fromArray(i,s);const o=r.x*Math.abs(Sn.x)+r.y*Math.abs(Sn.y)+r.z*Math.abs(Sn.z),l=e.dot(Sn),c=t.dot(Sn),u=n.dot(Sn);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}const Kl=new yi,fi=new N,br=new N;class Ti{constructor(e=new N,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const n=this.center;t!==void 0?n.copy(t):Kl.setFromPoints(e).getCenter(n);let r=0;for(let s=0,a=e.length;sthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;fi.subVectors(e,this.center);const t=fi.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.addScaledVector(fi,r/n),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(br.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(fi.copy(e.center).add(br)),this.expandByPoint(fi.copy(e.center).sub(br))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const jt=new N,Ar=new N,Di=new N,cn=new N,Rr=new N,Ui=new N,wr=new N;class js{constructor(e=new N,t=new N(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,jt)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=jt.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(jt.copy(this.origin).addScaledVector(this.direction,t),jt.distanceToSquared(e))}distanceSqToSegment(e,t,n,r){Ar.copy(e).add(t).multiplyScalar(.5),Di.copy(t).sub(e).normalize(),cn.copy(this.origin).sub(Ar);const s=e.distanceTo(t)*.5,a=-this.direction.dot(Di),o=cn.dot(this.direction),l=-cn.dot(Di),c=cn.lengthSq(),u=Math.abs(1-a*a);let h,d,m,g;if(u>0)if(h=a*l-o,d=a*o-l,g=s*u,h>=0)if(d>=-g)if(d<=g){const x=1/u;h*=x,d*=x,m=h*(h+a*d+2*o)+d*(a*h+d+2*l)+c}else d=s,h=Math.max(0,-(a*d+o)),m=-h*h+d*(d+2*l)+c;else d=-s,h=Math.max(0,-(a*d+o)),m=-h*h+d*(d+2*l)+c;else d<=-g?(h=Math.max(0,-(-a*s+o)),d=h>0?-s:Math.min(Math.max(-s,-l),s),m=-h*h+d*(d+2*l)+c):d<=g?(h=0,d=Math.min(Math.max(-s,-l),s),m=d*(d+2*l)+c):(h=Math.max(0,-(a*s+o)),d=h>0?s:Math.min(Math.max(-s,-l),s),m=-h*h+d*(d+2*l)+c);else d=a>0?-s:s,h=Math.max(0,-(a*d+o)),m=-h*h+d*(d+2*l)+c;return n&&n.copy(this.origin).addScaledVector(this.direction,h),r&&r.copy(Ar).addScaledVector(Di,d),m}intersectSphere(e,t){jt.subVectors(e.center,this.origin);const n=jt.dot(this.direction),r=jt.dot(jt)-n*n,s=e.radius*e.radius;if(r>s)return null;const a=Math.sqrt(s-r),o=n-a,l=n+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){const n=this.distanceToPlane(e);return n===null?null:this.at(n,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let n,r,s,a,o,l;const c=1/this.direction.x,u=1/this.direction.y,h=1/this.direction.z,d=this.origin;return c>=0?(n=(e.min.x-d.x)*c,r=(e.max.x-d.x)*c):(n=(e.max.x-d.x)*c,r=(e.min.x-d.x)*c),u>=0?(s=(e.min.y-d.y)*u,a=(e.max.y-d.y)*u):(s=(e.max.y-d.y)*u,a=(e.min.y-d.y)*u),n>a||s>r||((s>n||isNaN(n))&&(n=s),(a=0?(o=(e.min.z-d.z)*h,l=(e.max.z-d.z)*h):(o=(e.max.z-d.z)*h,l=(e.min.z-d.z)*h),n>l||o>r)||((o>n||n!==n)&&(n=o),(l=0?n:r,t)}intersectsBox(e){return this.intersectBox(e,jt)!==null}intersectTriangle(e,t,n,r,s){Rr.subVectors(t,e),Ui.subVectors(n,e),wr.crossVectors(Rr,Ui);let a=this.direction.dot(wr),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;cn.subVectors(this.origin,e);const l=o*this.direction.dot(Ui.crossVectors(cn,Ui));if(l<0)return null;const c=o*this.direction.dot(Rr.cross(cn));if(c<0||l+c>a)return null;const u=-o*cn.dot(wr);return u<0?null:this.at(u/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class nt{constructor(e,t,n,r,s,a,o,l,c,u,h,d,m,g,x,p){nt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,r,s,a,o,l,c,u,h,d,m,g,x,p)}set(e,t,n,r,s,a,o,l,c,u,h,d,m,g,x,p){const f=this.elements;return f[0]=e,f[4]=t,f[8]=n,f[12]=r,f[1]=s,f[5]=a,f[9]=o,f[13]=l,f[2]=c,f[6]=u,f[10]=h,f[14]=d,f[3]=m,f[7]=g,f[11]=x,f[15]=p,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new nt().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,r=1/Vn.setFromMatrixColumn(e,0).length(),s=1/Vn.setFromMatrixColumn(e,1).length(),a=1/Vn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,r=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),l=Math.cos(r),c=Math.sin(r),u=Math.cos(s),h=Math.sin(s);if(e.order==="XYZ"){const d=a*u,m=a*h,g=o*u,x=o*h;t[0]=l*u,t[4]=-l*h,t[8]=c,t[1]=m+g*c,t[5]=d-x*c,t[9]=-o*l,t[2]=x-d*c,t[6]=g+m*c,t[10]=a*l}else if(e.order==="YXZ"){const d=l*u,m=l*h,g=c*u,x=c*h;t[0]=d+x*o,t[4]=g*o-m,t[8]=a*c,t[1]=a*h,t[5]=a*u,t[9]=-o,t[2]=m*o-g,t[6]=x+d*o,t[10]=a*l}else if(e.order==="ZXY"){const d=l*u,m=l*h,g=c*u,x=c*h;t[0]=d-x*o,t[4]=-a*h,t[8]=g+m*o,t[1]=m+g*o,t[5]=a*u,t[9]=x-d*o,t[2]=-a*c,t[6]=o,t[10]=a*l}else if(e.order==="ZYX"){const d=a*u,m=a*h,g=o*u,x=o*h;t[0]=l*u,t[4]=g*c-m,t[8]=d*c+x,t[1]=l*h,t[5]=x*c+d,t[9]=m*c-g,t[2]=-c,t[6]=o*l,t[10]=a*l}else if(e.order==="YZX"){const d=a*l,m=a*c,g=o*l,x=o*c;t[0]=l*u,t[4]=x-d*h,t[8]=g*h+m,t[1]=h,t[5]=a*u,t[9]=-o*u,t[2]=-c*u,t[6]=m*h+g,t[10]=d-x*h}else if(e.order==="XZY"){const d=a*l,m=a*c,g=o*l,x=o*c;t[0]=l*u,t[4]=-h,t[8]=c*u,t[1]=d*h+x,t[5]=a*u,t[9]=m*h-g,t[2]=g*h-m,t[6]=o*u,t[10]=x*h+d}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Zl,e,$l)}lookAt(e,t,n){const r=this.elements;return yt.subVectors(e,t),yt.lengthSq()===0&&(yt.z=1),yt.normalize(),un.crossVectors(n,yt),un.lengthSq()===0&&(Math.abs(n.z)===1?yt.x+=1e-4:yt.z+=1e-4,yt.normalize(),un.crossVectors(n,yt)),un.normalize(),Ii.crossVectors(yt,un),r[0]=un.x,r[4]=Ii.x,r[8]=yt.x,r[1]=un.y,r[5]=Ii.y,r[9]=yt.y,r[2]=un.z,r[6]=Ii.z,r[10]=yt.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,r=t.elements,s=this.elements,a=n[0],o=n[4],l=n[8],c=n[12],u=n[1],h=n[5],d=n[9],m=n[13],g=n[2],x=n[6],p=n[10],f=n[14],b=n[3],T=n[7],S=n[11],U=n[15],R=r[0],w=r[4],I=r[8],E=r[12],M=r[1],C=r[5],k=r[9],z=r[13],j=r[2],K=r[6],X=r[10],$=r[14],V=r[3],re=r[7],ue=r[11],ve=r[15];return s[0]=a*R+o*M+l*j+c*V,s[4]=a*w+o*C+l*K+c*re,s[8]=a*I+o*k+l*X+c*ue,s[12]=a*E+o*z+l*$+c*ve,s[1]=u*R+h*M+d*j+m*V,s[5]=u*w+h*C+d*K+m*re,s[9]=u*I+h*k+d*X+m*ue,s[13]=u*E+h*z+d*$+m*ve,s[2]=g*R+x*M+p*j+f*V,s[6]=g*w+x*C+p*K+f*re,s[10]=g*I+x*k+p*X+f*ue,s[14]=g*E+x*z+p*$+f*ve,s[3]=b*R+T*M+S*j+U*V,s[7]=b*w+T*C+S*K+U*re,s[11]=b*I+T*k+S*X+U*ue,s[15]=b*E+T*z+S*$+U*ve,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],r=e[8],s=e[12],a=e[1],o=e[5],l=e[9],c=e[13],u=e[2],h=e[6],d=e[10],m=e[14],g=e[3],x=e[7],p=e[11],f=e[15];return g*(+s*l*h-r*c*h-s*o*d+n*c*d+r*o*m-n*l*m)+x*(+t*l*m-t*c*d+s*a*d-r*a*m+r*c*u-s*l*u)+p*(+t*c*h-t*o*m-s*a*h+n*a*m+s*o*u-n*c*u)+f*(-r*o*u-t*l*h+t*o*d+r*a*h-n*a*d+n*l*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],u=e[8],h=e[9],d=e[10],m=e[11],g=e[12],x=e[13],p=e[14],f=e[15],b=h*p*c-x*d*c+x*l*m-o*p*m-h*l*f+o*d*f,T=g*d*c-u*p*c-g*l*m+a*p*m+u*l*f-a*d*f,S=u*x*c-g*h*c+g*o*m-a*x*m-u*o*f+a*h*f,U=g*h*l-u*x*l-g*o*d+a*x*d+u*o*p-a*h*p,R=t*b+n*T+r*S+s*U;if(R===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const w=1/R;return e[0]=b*w,e[1]=(x*d*s-h*p*s-x*r*m+n*p*m+h*r*f-n*d*f)*w,e[2]=(o*p*s-x*l*s+x*r*c-n*p*c-o*r*f+n*l*f)*w,e[3]=(h*l*s-o*d*s-h*r*c+n*d*c+o*r*m-n*l*m)*w,e[4]=T*w,e[5]=(u*p*s-g*d*s+g*r*m-t*p*m-u*r*f+t*d*f)*w,e[6]=(g*l*s-a*p*s-g*r*c+t*p*c+a*r*f-t*l*f)*w,e[7]=(a*d*s-u*l*s+u*r*c-t*d*c-a*r*m+t*l*m)*w,e[8]=S*w,e[9]=(g*h*s-u*x*s-g*n*m+t*x*m+u*n*f-t*h*f)*w,e[10]=(a*x*s-g*o*s+g*n*c-t*x*c-a*n*f+t*o*f)*w,e[11]=(u*o*s-a*h*s-u*n*c+t*h*c+a*n*m-t*o*m)*w,e[12]=U*w,e[13]=(u*x*r-g*h*r+g*n*d-t*x*d-u*n*p+t*h*p)*w,e[14]=(g*o*r-a*x*r-g*n*l+t*x*l+a*n*p-t*o*p)*w,e[15]=(a*h*r-u*o*r+u*n*l-t*h*l-a*n*d+t*o*d)*w,this}scale(e){const t=this.elements,n=e.x,r=e.y,s=e.z;return t[0]*=n,t[4]*=r,t[8]*=s,t[1]*=n,t[5]*=r,t[9]*=s,t[2]*=n,t[6]*=r,t[10]*=s,t[3]*=n,t[7]*=r,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,r))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),r=Math.sin(t),s=1-n,a=e.x,o=e.y,l=e.z,c=s*a,u=s*o;return this.set(c*a+n,c*o-r*l,c*l+r*o,0,c*o+r*l,u*o+n,u*l-r*a,0,c*l-r*o,u*l+r*a,s*l*l+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,r,s,a){return this.set(1,n,s,0,e,1,a,0,t,r,1,0,0,0,0,1),this}compose(e,t,n){const r=this.elements,s=t._x,a=t._y,o=t._z,l=t._w,c=s+s,u=a+a,h=o+o,d=s*c,m=s*u,g=s*h,x=a*u,p=a*h,f=o*h,b=l*c,T=l*u,S=l*h,U=n.x,R=n.y,w=n.z;return r[0]=(1-(x+f))*U,r[1]=(m+S)*U,r[2]=(g-T)*U,r[3]=0,r[4]=(m-S)*R,r[5]=(1-(d+f))*R,r[6]=(p+b)*R,r[7]=0,r[8]=(g+T)*w,r[9]=(p-b)*w,r[10]=(1-(d+x))*w,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,n){const r=this.elements;let s=Vn.set(r[0],r[1],r[2]).length();const a=Vn.set(r[4],r[5],r[6]).length(),o=Vn.set(r[8],r[9],r[10]).length();this.determinant()<0&&(s=-s),e.x=r[12],e.y=r[13],e.z=r[14],Nt.copy(this);const c=1/s,u=1/a,h=1/o;return Nt.elements[0]*=c,Nt.elements[1]*=c,Nt.elements[2]*=c,Nt.elements[4]*=u,Nt.elements[5]*=u,Nt.elements[6]*=u,Nt.elements[8]*=h,Nt.elements[9]*=h,Nt.elements[10]*=h,t.setFromRotationMatrix(Nt),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,r,s,a,o=nn){const l=this.elements,c=2*s/(t-e),u=2*s/(n-r),h=(t+e)/(t-e),d=(n+r)/(n-r);let m,g;if(o===nn)m=-(a+s)/(a-s),g=-2*a*s/(a-s);else if(o===lr)m=-a/(a-s),g=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return l[0]=c,l[4]=0,l[8]=h,l[12]=0,l[1]=0,l[5]=u,l[9]=d,l[13]=0,l[2]=0,l[6]=0,l[10]=m,l[14]=g,l[3]=0,l[7]=0,l[11]=-1,l[15]=0,this}makeOrthographic(e,t,n,r,s,a,o=nn){const l=this.elements,c=1/(t-e),u=1/(n-r),h=1/(a-s),d=(t+e)*c,m=(n+r)*u;let g,x;if(o===nn)g=(a+s)*h,x=-2*h;else if(o===lr)g=s*h,x=-1*h;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return l[0]=2*c,l[4]=0,l[8]=0,l[12]=-d,l[1]=0,l[5]=2*u,l[9]=0,l[13]=-m,l[2]=0,l[6]=0,l[10]=x,l[14]=-g,l[3]=0,l[7]=0,l[11]=0,l[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const Vn=new N,Nt=new nt,Zl=new N(0,0,0),$l=new N(1,1,1),un=new N,Ii=new N,yt=new N,_a=new nt,ga=new Ei;class Xt{constructor(e=0,t=0,n=0,r=Xt.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=r}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,r=this._order){return this._x=e,this._y=t,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const r=e.elements,s=r[0],a=r[4],o=r[8],l=r[1],c=r[5],u=r[9],h=r[2],d=r[6],m=r[10];switch(t){case"XYZ":this._y=Math.asin(Ie(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(d,c),this._z=0);break;case"YXZ":this._x=Math.asin(-Ie(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-h,s),this._z=0);break;case"ZXY":this._x=Math.asin(Ie(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-h,m),this._z=Math.atan2(-a,c)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Ie(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(d,m),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,c));break;case"YZX":this._z=Math.asin(Ie(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-h,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-Ie(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(d,c),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return _a.makeRotationFromQuaternion(e),this.setFromRotationMatrix(_a,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return ga.setFromEuler(this),this.setFromQuaternion(ga,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Xt.DEFAULT_ORDER="XYZ";class Co{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let n=0;n0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const l=o.shapes;if(Array.isArray(l))for(let c=0,u=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(n.geometries=o),l.length>0&&(n.materials=l),c.length>0&&(n.textures=c),u.length>0&&(n.images=u),h.length>0&&(n.shapes=h),d.length>0&&(n.skeletons=d),m.length>0&&(n.animations=m),g.length>0&&(n.nodes=g)}return n.object=r,n;function a(o){const l=[];for(const c in o){const u=o[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let n=0;n0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,n,r,s){Ft.subVectors(r,t),Zt.subVectors(n,t),Pr.subVectors(e,t);const a=Ft.dot(Ft),o=Ft.dot(Zt),l=Ft.dot(Pr),c=Zt.dot(Zt),u=Zt.dot(Pr),h=a*c-o*o;if(h===0)return s.set(0,0,0),null;const d=1/h,m=(c*l-o*u)*d,g=(a*u-o*l)*d;return s.set(1-m-g,g,m)}static containsPoint(e,t,n,r){return this.getBarycoord(e,t,n,r,$t)===null?!1:$t.x>=0&&$t.y>=0&&$t.x+$t.y<=1}static getInterpolation(e,t,n,r,s,a,o,l){return this.getBarycoord(e,t,n,r,$t)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,$t.x),l.addScaledVector(a,$t.y),l.addScaledVector(o,$t.z),l)}static getInterpolatedAttribute(e,t,n,r,s,a){return Ir.setScalar(0),Nr.setScalar(0),Fr.setScalar(0),Ir.fromBufferAttribute(e,t),Nr.fromBufferAttribute(e,n),Fr.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(Ir,s.x),a.addScaledVector(Nr,s.y),a.addScaledVector(Fr,s.z),a}static isFrontFacing(e,t,n,r){return Ft.subVectors(n,t),Zt.subVectors(e,t),Ft.cross(Zt).dot(r)<0}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,r){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,n,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Ft.subVectors(this.c,this.b),Zt.subVectors(this.a,this.b),Ft.cross(Zt).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Ot.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Ot.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,r,s){return Ot.getInterpolation(e,this.a,this.b,this.c,t,n,r,s)}containsPoint(e){return Ot.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Ot.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const n=this.a,r=this.b,s=this.c;let a,o;Wn.subVectors(r,n),Xn.subVectors(s,n),Lr.subVectors(e,n);const l=Wn.dot(Lr),c=Xn.dot(Lr);if(l<=0&&c<=0)return t.copy(n);Dr.subVectors(e,r);const u=Wn.dot(Dr),h=Xn.dot(Dr);if(u>=0&&h<=u)return t.copy(r);const d=l*h-u*c;if(d<=0&&l>=0&&u<=0)return a=l/(l-u),t.copy(n).addScaledVector(Wn,a);Ur.subVectors(e,s);const m=Wn.dot(Ur),g=Xn.dot(Ur);if(g>=0&&m<=g)return t.copy(s);const x=m*c-l*g;if(x<=0&&c>=0&&g<=0)return o=c/(c-g),t.copy(n).addScaledVector(Xn,o);const p=u*g-m*h;if(p<=0&&h-u>=0&&m-g>=0)return ya.subVectors(s,r),o=(h-u)/(h-u+(m-g)),t.copy(r).addScaledVector(ya,o);const f=1/(p+x+d);return a=x*f,o=d*f,t.copy(n).addScaledVector(Wn,a).addScaledVector(Xn,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const Po={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},hn={h:0,s:0,l:0},Fi={h:0,s:0,l:0};function Or(i,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?i+(e-i)*6*t:t<1/2?e:t<2/3?i+(e-i)*6*(2/3-t):i}class Ue{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){if(t===void 0&&n===void 0){const r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,n);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=bt){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,Ge.toWorkingColorSpace(this,t),this}setRGB(e,t,n,r=Ge.workingColorSpace){return this.r=e,this.g=t,this.b=n,Ge.toWorkingColorSpace(this,r),this}setHSL(e,t,n,r=Ge.workingColorSpace){if(e=Bl(e,1),t=Ie(t,0,1),n=Ie(n,0,1),t===0)this.r=this.g=this.b=n;else{const s=n<=.5?n*(1+t):n+t-n*t,a=2*n-s;this.r=Or(a,s,e+1/3),this.g=Or(a,s,e),this.b=Or(a,s,e-1/3)}return Ge.toWorkingColorSpace(this,r),this}setStyle(e,t=bt){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s;const a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return n(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){const s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=bt){const n=Po[e.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=rn(e.r),this.g=rn(e.g),this.b=rn(e.b),this}copyLinearToSRGB(e){return this.r=Qn(e.r),this.g=Qn(e.g),this.b=Qn(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=bt){return Ge.fromWorkingColorSpace(pt.copy(this),e),Math.round(Ie(pt.r*255,0,255))*65536+Math.round(Ie(pt.g*255,0,255))*256+Math.round(Ie(pt.b*255,0,255))}getHexString(e=bt){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Ge.workingColorSpace){Ge.fromWorkingColorSpace(pt.copy(this),t);const n=pt.r,r=pt.g,s=pt.b,a=Math.max(n,r,s),o=Math.min(n,r,s);let l,c;const u=(o+a)/2;if(o===a)l=0,c=0;else{const h=a-o;switch(c=u<=.5?h/(a+o):h/(2-a-o),a){case n:l=(r-s)/h+(r0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const t in e){const n=e[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(e){const t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==$n&&(n.blending=this.blending),this.side!==_n&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==$r&&(n.blendSrc=this.blendSrc),this.blendDst!==Jr&&(n.blendDst=this.blendDst),this.blendEquation!==Cn&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==ei&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==ca&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Fn&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Fn&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Fn&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function r(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(t){const s=r(e.textures),a=r(e.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let s=0;s!==r;++s)n[s]=t[s].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Lo extends an{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ue(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Xt,this.combine=Hs,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const at=new N,Oi=new je;let ic=0;class Wt{constructor(e,t,n=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:ic++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=n,this.usage=ua,this.updateRanges=[],this.gpuType=tn,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let r=0,s=this.itemSize;rt.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new yi);const e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new N(-1/0,-1/0,-1/0),new N(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let n=0,r=t.length;n0&&(e.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};const t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const l in n){const c=n[l];e.data.attributes[l]=c.toJSON(e.data)}const r={};let s=!1;for(const l in this.morphAttributes){const c=this.morphAttributes[l],u=[];for(let h=0,d=c.length;h0&&(r[l]=u,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const n=e.index;n!==null&&this.setIndex(n.clone(t));const r=e.attributes;for(const c in r){const u=r[c];this.setAttribute(c,u.clone(t))}const s=e.morphAttributes;for(const c in s){const u=[],h=s[c];for(let d=0,m=h.length;d0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(e.far-e.near)**2))&&(Ta.copy(s).invert(),En.copy(e.ray).applyMatrix4(Ta),!(n.boundingBox!==null&&En.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(e,t,En)))}_computeIntersections(e,t,n){let r;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,u=s.attributes.uv1,h=s.attributes.normal,d=s.groups,m=s.drawRange;if(o!==null)if(Array.isArray(a))for(let g=0,x=d.length;gt.far?null:{distance:c,point:ki.clone(),object:i}}function Wi(i,e,t,n,r,s,a,o,l,c){i.getVertexPosition(o,zi),i.getVertexPosition(l,Hi),i.getVertexPosition(c,Vi);const u=sc(i,e,t,n,zi,Hi,Vi,Aa);if(u){const h=new N;Ot.getBarycoord(Aa,zi,Hi,Vi,h),r&&(u.uv=Ot.getInterpolatedAttribute(r,o,l,c,h,new je)),s&&(u.uv1=Ot.getInterpolatedAttribute(s,o,l,c,h,new je)),a&&(u.normal=Ot.getInterpolatedAttribute(a,o,l,c,h,new N),u.normal.dot(n.direction)>0&&u.normal.multiplyScalar(-1));const d={a:o,b:l,c,normal:new N,materialIndex:0};Ot.getNormal(zi,Hi,Vi,d.normal),u.face=d,u.barycoord=h}return u}class bi extends Vt{constructor(e=1,t=1,n=1,r=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:r,heightSegments:s,depthSegments:a};const o=this;r=Math.floor(r),s=Math.floor(s),a=Math.floor(a);const l=[],c=[],u=[],h=[];let d=0,m=0;g("z","y","x",-1,-1,n,t,e,a,s,0),g("z","y","x",1,-1,n,t,-e,a,s,1),g("x","z","y",1,1,e,n,t,r,a,2),g("x","z","y",1,-1,e,n,-t,r,a,3),g("x","y","z",1,-1,e,t,n,r,s,4),g("x","y","z",-1,-1,e,t,-n,r,s,5),this.setIndex(l),this.setAttribute("position",new gt(c,3)),this.setAttribute("normal",new gt(u,3)),this.setAttribute("uv",new gt(h,2));function g(x,p,f,b,T,S,U,R,w,I,E){const M=S/w,C=U/I,k=S/2,z=U/2,j=R/2,K=w+1,X=I+1;let $=0,V=0;const re=new N;for(let ue=0;ue0?1:-1,u.push(re.x,re.y,re.z),h.push(De/w),h.push(1-ue/I),$+=1}}for(let ue=0;ue0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class io extends Tt{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new at,this.projectionMatrix=new at,this.projectionMatrixInverse=new at,this.coordinateSystem=jt}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const on=new B,ca=new Ze,ua=new Ze;class Ct extends io{constructor(e=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Ms*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(ar*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Ms*2*Math.atan(Math.tan(ar*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){on.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(on.x,on.y).multiplyScalar(-e/on.z),on.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(on.x,on.y).multiplyScalar(-e/on.z)}getViewSize(e,t){return this.getViewBounds(e,ca,ua),t.subVectors(ua,ca)}setViewOffset(e,t,n,r,s,a){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(ar*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,s=-.5*r;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;s+=a.offsetX*r/l,t-=a.offsetY*n/c,r*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(s+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const Wn=-90,Xn=1;class Fl extends Tt{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Ct(Wn,Xn,e,t);r.layers=this.layers,this.add(r);const s=new Ct(Wn,Xn,e,t);s.layers=this.layers,this.add(s);const a=new Ct(Wn,Xn,e,t);a.layers=this.layers,this.add(a);const o=new Ct(Wn,Xn,e,t);o.layers=this.layers,this.add(o);const l=new Ct(Wn,Xn,e,t);l.layers=this.layers,this.add(l);const c=new Ct(Wn,Xn,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,r,s,a,o,l]=t;for(const c of t)this.remove(c);if(e===jt)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===$i)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,a,o,l,c,h]=this.children,f=e.getRenderTarget(),d=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),v=e.xr.enabled;e.xr.enabled=!1;const M=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,r),e.render(t,s),e.setRenderTarget(n,1,r),e.render(t,a),e.setRenderTarget(n,2,r),e.render(t,o),e.setRenderTarget(n,3,r),e.render(t,l),e.setRenderTarget(n,4,r),e.render(t,c),n.texture.generateMipmaps=M,e.setRenderTarget(n,5,r),e.render(t,h),e.setRenderTarget(f,d,m),e.xr.enabled=v,n.texture.needsPMREMUpdate=!0}}class ro extends xt{constructor(e,t,n,r,s,a,o,l,c,h){e=e!==void 0?e:[],t=t!==void 0?t:Jn,super(e,t,n,r,s,a,o,l,c,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class Ol extends Pn{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new ro(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:zt}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` +}`;class gn extends an{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=lc,this.fragmentShader=cc,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=ai(e.uniforms),this.uniformsGroups=ac(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(const r in this.uniforms){const a=this.uniforms[r].value;a&&a.isTexture?t.uniforms[r]={type:"t",value:a.toJSON(e).uuid}:a&&a.isColor?t.uniforms[r]={type:"c",value:a.getHex()}:a&&a.isVector2?t.uniforms[r]={type:"v2",value:a.toArray()}:a&&a.isVector3?t.uniforms[r]={type:"v3",value:a.toArray()}:a&&a.isVector4?t.uniforms[r]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?t.uniforms[r]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?t.uniforms[r]={type:"m4",value:a.toArray()}:t.uniforms[r]={value:a}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class No extends ht{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new nt,this.projectionMatrix=new nt,this.projectionMatrixInverse=new nt,this.coordinateSystem=nn}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const fn=new N,Ra=new je,wa=new je;class Lt extends No{constructor(e=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=Fs*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(xr*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Fs*2*Math.atan(Math.tan(xr*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){fn.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(fn.x,fn.y).multiplyScalar(-e/fn.z),fn.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(fn.x,fn.y).multiplyScalar(-e/fn.z)}getViewSize(e,t){return this.getViewBounds(e,Ra,wa),t.subVectors(wa,Ra)}setViewOffset(e,t,n,r,s,a){this.aspect=e/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(xr*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,s=-.5*r;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,c=a.fullHeight;s+=a.offsetX*r/l,t-=a.offsetY*n/c,r*=a.width/l,n*=a.height/c}const o=this.filmOffset;o!==0&&(s+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const Yn=-90,jn=1;class uc extends ht{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new Lt(Yn,jn,e,t);r.layers=this.layers,this.add(r);const s=new Lt(Yn,jn,e,t);s.layers=this.layers,this.add(s);const a=new Lt(Yn,jn,e,t);a.layers=this.layers,this.add(a);const o=new Lt(Yn,jn,e,t);o.layers=this.layers,this.add(o);const l=new Lt(Yn,jn,e,t);l.layers=this.layers,this.add(l);const c=new Lt(Yn,jn,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){const e=this.coordinateSystem,t=this.children.concat(),[n,r,s,a,o,l]=t;for(const c of t)this.remove(c);if(e===nn)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===lr)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[s,a,o,l,c,u]=this.children,h=e.getRenderTarget(),d=e.getActiveCubeFace(),m=e.getActiveMipmapLevel(),g=e.xr.enabled;e.xr.enabled=!1;const x=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,r),e.render(t,s),e.setRenderTarget(n,1,r),e.render(t,a),e.setRenderTarget(n,2,r),e.render(t,o),e.setRenderTarget(n,3,r),e.render(t,l),e.setRenderTarget(n,4,r),e.render(t,c),n.texture.generateMipmaps=x,e.setRenderTarget(n,5,r),e.render(t,u),e.setRenderTarget(h,d,m),e.xr.enabled=g,n.texture.needsPMREMUpdate=!0}}class Fo extends St{constructor(e,t,n,r,s,a,o,l,c,u){e=e!==void 0?e:[],t=t!==void 0?t:ti,super(e,t,n,r,s,a,o,l,c,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class hc extends In{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1},r=[n,n,n,n,n,n];this.texture=new Fo(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:kt}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -41,13 +41,13 @@ gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},r=new si(5,5,5),s=new fn({name:"CubemapFromEquirect",uniforms:ii(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:vt,blending:cn});s.uniforms.tEquirect.value=t;const a=new Ht(r,s),o=t.minFilter;return t.minFilter===Rn&&(t.minFilter=zt),new Fl(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,n,r){const s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,r);e.setRenderTarget(s)}}class Bi extends Tt{constructor(){super(),this.isGroup=!0,this.type="Group"}}const Bl={type:"move"};class Rr{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Bi,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Bi,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new B,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new B),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Bi,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new B,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new B),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const t=this._hand;if(t)for(const n of e.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,t,n){let r=null,s=null,a=null;const o=this._targetRay,l=this._grip,c=this._hand;if(e&&t.session.visibilityState!=="visible-blurred"){if(c&&e.hand){a=!0;for(const M of e.hand.values()){const p=t.getJointPose(M,n),u=this._getHandJoint(c,M);p!==null&&(u.matrix.fromArray(p.transform.matrix),u.matrix.decompose(u.position,u.rotation,u.scale),u.matrixWorldNeedsUpdate=!0,u.jointRadius=p.radius),u.visible=p!==null}const h=c.joints["index-finger-tip"],f=c.joints["thumb-tip"],d=h.position.distanceTo(f.position),m=.02,v=.005;c.inputState.pinching&&d>m+v?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&d<=m-v&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(Bl)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new Bi;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class zl extends Tt{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new en,this.environmentIntensity=1,this.environmentRotation=new en,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}const wr=new B,Hl=new B,Vl=new Ce;class En{constructor(e=new B(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const r=wr.subVectors(n,t).cross(Hl.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(wr),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(n,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||Vl.getNormalMatrix(e),r=this.coplanarPoint(wr).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const vn=new Ds,zi=new B;class so{constructor(e=new En,t=new En,n=new En,r=new En,s=new En,a=new En){this.planes=[e,t,n,r,s,a]}set(e,t,n,r,s,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=jt){const n=this.planes,r=e.elements,s=r[0],a=r[1],o=r[2],l=r[3],c=r[4],h=r[5],f=r[6],d=r[7],m=r[8],v=r[9],M=r[10],p=r[11],u=r[12],b=r[13],y=r[14],T=r[15];if(n[0].setComponents(l-s,d-c,p-m,T-u).normalize(),n[1].setComponents(l+s,d+c,p+m,T+u).normalize(),n[2].setComponents(l+a,d+h,p+v,T+b).normalize(),n[3].setComponents(l-a,d-h,p-v,T-b).normalize(),n[4].setComponents(l-o,d-f,p-M,T-y).normalize(),t===jt)n[5].setComponents(l+o,d+f,p+M,T+y).normalize();else if(t===$i)n[5].setComponents(o,f,M,y).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),vn.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),vn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(vn)}intersectsSprite(e){return vn.center.set(0,0,0),vn.radius=.7071067811865476,vn.applyMatrix4(e.matrixWorld),this.intersectsSphere(vn)}intersectsSphere(e){const t=this.planes,n=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)0?e.max.x:e.min.x,zi.y=r.normal.y>0?e.max.y:e.min.y,zi.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(zi)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class ao extends xt{constructor(e,t,n,r,s,a,o,l,c,h=Zn){if(h!==Zn&&h!==ti)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===Zn&&(n=Cn),n===void 0&&h===ti&&(n=ei),super(null,r,s,a,o,l,h,n,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=o!==void 0?o:Ot,this.minFilter=l!==void 0?l:Ot,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Ps(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class er extends Dn{constructor(e=1,t=1,n=1,r=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:r};const s=e/2,a=t/2,o=Math.floor(n),l=Math.floor(r),c=o+1,h=l+1,f=e/o,d=t/l,m=[],v=[],M=[],p=[];for(let u=0;um+g?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&d<=m-g&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,n),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1));o!==null&&(r=t.getPose(e.targetRaySpace,n),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(fc)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){const n=new _i;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}class dc extends ht{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Xt,this.environmentIntensity=1,this.environmentRotation=new Xt,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}const Vr=new N,pc=new N,mc=new Ce;class Rn{constructor(e=new N(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,n,r){return this.normal.set(e,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,n){const r=Vr.subVectors(n,t).cross(pc.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,t){const n=e.delta(Vr),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(e.start)===0?t.copy(e.start):null;const s=-(e.start.dot(this.normal)+this.constant)/r;return s<0||s>1?null:t.copy(e.start).addScaledVector(n,s)}intersectsLine(e){const t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const n=t||mc.getNormalMatrix(e),r=this.coplanarPoint(Vr).applyMatrix4(e),s=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const yn=new Ti,Xi=new N;class Oo{constructor(e=new Rn,t=new Rn,n=new Rn,r=new Rn,s=new Rn,a=new Rn){this.planes=[e,t,n,r,s,a]}set(e,t,n,r,s,a){const o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=nn){const n=this.planes,r=e.elements,s=r[0],a=r[1],o=r[2],l=r[3],c=r[4],u=r[5],h=r[6],d=r[7],m=r[8],g=r[9],x=r[10],p=r[11],f=r[12],b=r[13],T=r[14],S=r[15];if(n[0].setComponents(l-s,d-c,p-m,S-f).normalize(),n[1].setComponents(l+s,d+c,p+m,S+f).normalize(),n[2].setComponents(l+a,d+u,p+g,S+b).normalize(),n[3].setComponents(l-a,d-u,p-g,S-b).normalize(),n[4].setComponents(l-o,d-h,p-x,S-T).normalize(),t===nn)n[5].setComponents(l+o,d+h,p+x,S+T).normalize();else if(t===lr)n[5].setComponents(o,h,x,T).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),yn.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),yn.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(yn)}intersectsSprite(e){return yn.center.set(0,0,0),yn.radius=.7071067811865476,yn.applyMatrix4(e.matrixWorld),this.intersectsSphere(yn)}intersectsSphere(e){const t=this.planes,n=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(n)0?e.max.x:e.min.x,Xi.y=r.normal.y>0?e.max.y:e.min.y,Xi.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(Xi)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class sr extends an{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new Ue(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const ur=new N,hr=new N,Ca=new nt,mi=new js,qi=new Ti,Gr=new N,Pa=new N;class _c extends ht{constructor(e=new Vt,t=new sr){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[0];for(let r=1,s=t.count;r0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;sn)return;Gr.applyMatrix4(i.matrixWorld);const c=e.ray.origin.distanceTo(Gr);if(!(ce.far))return{distance:c,point:Pa.clone().applyMatrix4(i.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:i}}const La=new N,Da=new N;class Ua extends _c{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const t=e.attributes.position,n=[];for(let r=0,s=t.count;r0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;sr.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}class Bo extends St{constructor(e,t,n,r,s,a,o,l,c,u=Jn){if(u!==Jn&&u!==ri)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&u===Jn&&(n=Un),n===void 0&&u===ri&&(n=ii),super(null,r,s,a,o,l,u,n,c),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=o!==void 0?o:Ht,this.minFilter=l!==void 0?l:Ht,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.source=new Ys(Object.assign({},e.image)),this.compareFunction=e.compareFunction,this}toJSON(e){const t=super.toJSON(e);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}class dr extends Vt{constructor(e=1,t=1,n=1,r=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:t,widthSegments:n,heightSegments:r};const s=e/2,a=t/2,o=Math.floor(n),l=Math.floor(r),c=o+1,u=l+1,h=e/o,d=t/l,m=[],g=[],x=[],p=[];for(let f=0;f{t&&t(s),this.manager.itemEnd(e)},0),s;if(Jt[e]!==void 0){Jt[e].push({onLoad:t,onProgress:n,onError:r});return}Jt[e]=[],Jt[e].push({onLoad:t,onProgress:n,onError:r});const a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||c.body===void 0||c.body.getReader===void 0)return c;const u=Jt[e],h=c.body.getReader(),d=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),m=d?parseInt(d):0,g=m!==0;let x=0;const p=new ReadableStream({start(f){b();function b(){h.read().then(({done:T,value:S})=>{if(T)f.close();else{x+=S.byteLength;const U=new ProgressEvent("progress",{lengthComputable:g,loaded:x,total:m});for(let R=0,w=u.length;R{f.error(T)})}}});return new Response(p)}else throw new Ec(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(u=>new DOMParser().parseFromString(u,o));case"json":return c.json();default:if(o===void 0)return c.text();{const h=/charset="?([^;"\s]*)"?/i.exec(o),d=h&&h[1]?h[1].toLowerCase():void 0,m=new TextDecoder(d);return c.arrayBuffer().then(g=>m.decode(g))}}}).then(c=>{Fa.add(e,c);const u=Jt[e];delete Jt[e];for(let h=0,d=u.length;h{const u=Jt[e];if(u===void 0)throw this.manager.itemError(e),c;delete Jt[e];for(let h=0,d=u.length;h{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class Tc extends ht{constructor(e,t=1){super(),this.isLight=!0,this.type="Light",this.color=new Ue(e),this.intensity=t}dispose(){}copy(e,t){return super.copy(e,t),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(t.object.target=this.target.uuid),t}}class bc extends Tc{constructor(e,t,n){super(e,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(ht.DEFAULT_UP),this.updateMatrix(),this.groundColor=new Ue(t)}copy(e,t){return super.copy(e,t),this.groundColor.copy(e.groundColor),this}}class Ac extends No{constructor(e=-1,t=1,n=1,r=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=r,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,n,r,s,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let s=n-e,a=n+e,o=r+t,l=r-t;if(this.view!==null&&this.view.enabled){const c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=c*this.view.offsetX,a=s+c*this.view.width,o-=u*this.view.offsetY,l=o-u*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}class Rc extends Lt{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e,this.index=0}}function Oa(i,e,t,n){const r=wc(n);switch(t){case vo:return i*e;case Mo:return i*e;case So:return i*e*2;case Eo:return i*e/r.components*r.byteLength;case Ws:return i*e/r.components*r.byteLength;case yo:return i*e*2/r.components*r.byteLength;case Xs:return i*e*2/r.components*r.byteLength;case xo:return i*e*3/r.components*r.byteLength;case Bt:return i*e*4/r.components*r.byteLength;case qs:return i*e*4/r.components*r.byteLength;case er:case tr:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case nr:case ir:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case hs:case ds:return Math.max(i,16)*Math.max(e,8)/4;case us:case fs:return Math.max(i,8)*Math.max(e,8)/2;case ps:case ms:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*8;case _s:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case gs:return Math.floor((i+3)/4)*Math.floor((e+3)/4)*16;case vs:return Math.floor((i+4)/5)*Math.floor((e+3)/4)*16;case xs:return Math.floor((i+4)/5)*Math.floor((e+4)/5)*16;case Ms:return Math.floor((i+5)/6)*Math.floor((e+4)/5)*16;case Ss:return Math.floor((i+5)/6)*Math.floor((e+5)/6)*16;case Es:return Math.floor((i+7)/8)*Math.floor((e+4)/5)*16;case ys:return Math.floor((i+7)/8)*Math.floor((e+5)/6)*16;case Ts:return Math.floor((i+7)/8)*Math.floor((e+7)/8)*16;case bs:return Math.floor((i+9)/10)*Math.floor((e+4)/5)*16;case As:return Math.floor((i+9)/10)*Math.floor((e+5)/6)*16;case Rs:return Math.floor((i+9)/10)*Math.floor((e+7)/8)*16;case ws:return Math.floor((i+9)/10)*Math.floor((e+9)/10)*16;case Cs:return Math.floor((i+11)/12)*Math.floor((e+9)/10)*16;case Ps:return Math.floor((i+11)/12)*Math.floor((e+11)/12)*16;case rr:case Ls:case Ds:return Math.ceil(i/4)*Math.ceil(e/4)*16;case To:case Us:return Math.ceil(i/4)*Math.ceil(e/4)*8;case Is:case Ns:return Math.ceil(i/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${t} format.`)}function wc(i){switch(i){case sn:case mo:return{byteLength:1,components:1};case xi:case _o:case Mi:return{byteLength:2,components:1};case Gs:case ks:return{byteLength:2,components:4};case Un:case Vs:case tn:return{byteLength:4,components:1};case go:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${i}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:zs}}));typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=zs);/** * @license * Copyright 2010-2025 Three.js Authors * SPDX-License-Identifier: MIT - */function oo(){let i=null,e=!1,t=null,n=null;function r(s,a){t(s,a),n=i.requestAnimationFrame(r)}return{start:function(){e!==!0&&t!==null&&(n=i.requestAnimationFrame(r),e=!0)},stop:function(){i.cancelAnimationFrame(n),e=!1},setAnimationLoop:function(s){t=s},setContext:function(s){i=s}}}function Yl(i){const e=new WeakMap;function t(o,l){const c=o.array,h=o.usage,f=c.byteLength,d=i.createBuffer();i.bindBuffer(l,d),i.bufferData(l,c,h),o.onUploadCallback();let m;if(c instanceof Float32Array)m=i.FLOAT;else if(c instanceof Uint16Array)o.isFloat16BufferAttribute?m=i.HALF_FLOAT:m=i.UNSIGNED_SHORT;else if(c instanceof Int16Array)m=i.SHORT;else if(c instanceof Uint32Array)m=i.UNSIGNED_INT;else if(c instanceof Int32Array)m=i.INT;else if(c instanceof Int8Array)m=i.BYTE;else if(c instanceof Uint8Array)m=i.UNSIGNED_BYTE;else if(c instanceof Uint8ClampedArray)m=i.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+c);return{buffer:d,type:m,bytesPerElement:c.BYTES_PER_ELEMENT,version:o.version,size:f}}function n(o,l,c){const h=l.array,f=l.updateRanges;if(i.bindBuffer(c,o),f.length===0)i.bufferSubData(c,0,h);else{f.sort((m,v)=>m.start-v.start);let d=0;for(let m=1;mm.start-g.start);let d=0;for(let m=1;m 0 +#endif`,Xc=`#if NUM_CLIPPING_PLANES > 0 vec4 plane; #ifdef ALPHA_TO_COVERAGE float distanceToPlane, distanceGradient; @@ -297,26 +297,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve if ( clipped ) discard; #endif #endif -#endif`,uc=`#if NUM_CLIPPING_PLANES > 0 +#endif`,qc=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ]; -#endif`,hc=`#if NUM_CLIPPING_PLANES > 0 +#endif`,Yc=`#if NUM_CLIPPING_PLANES > 0 varying vec3 vClipPosition; -#endif`,fc=`#if NUM_CLIPPING_PLANES > 0 +#endif`,jc=`#if NUM_CLIPPING_PLANES > 0 vClipPosition = - mvPosition.xyz; -#endif`,dc=`#if defined( USE_COLOR_ALPHA ) +#endif`,Kc=`#if defined( USE_COLOR_ALPHA ) diffuseColor *= vColor; #elif defined( USE_COLOR ) diffuseColor.rgb *= vColor; -#endif`,pc=`#if defined( USE_COLOR_ALPHA ) +#endif`,Zc=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) varying vec3 vColor; -#endif`,mc=`#if defined( USE_COLOR_ALPHA ) +#endif`,$c=`#if defined( USE_COLOR_ALPHA ) varying vec4 vColor; #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) varying vec3 vColor; -#endif`,_c=`#if defined( USE_COLOR_ALPHA ) +#endif`,Jc=`#if defined( USE_COLOR_ALPHA ) vColor = vec4( 1.0 ); #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR ) vColor = vec3( 1.0 ); @@ -330,7 +330,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve #ifdef USE_BATCHING_COLOR vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) ); vColor.xyz *= batchingColor.xyz; -#endif`,gc=`#define PI 3.141592653589793 +#endif`,Qc=`#define PI 3.141592653589793 #define PI2 6.283185307179586 #define PI_HALF 1.5707963267948966 #define RECIPROCAL_PI 0.3183098861837907 @@ -404,7 +404,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) { float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH ); return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel ); -} // validated`,vc=`#ifdef ENVMAP_TYPE_CUBE_UV +} // validated`,eu=`#ifdef ENVMAP_TYPE_CUBE_UV #define cubeUV_minMipLevel 4.0 #define cubeUV_minTileSize 16.0 float getFace( vec3 direction ) { @@ -497,7 +497,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) { return vec4( mix( color0, color1, mipF ), 1.0 ); } } -#endif`,xc=`vec3 transformedNormal = objectNormal; +#endif`,tu=`vec3 transformedNormal = objectNormal; #ifdef USE_TANGENT vec3 transformedTangent = objectTangent; #endif @@ -526,21 +526,21 @@ transformedNormal = normalMatrix * transformedNormal; #ifdef FLIP_SIDED transformedTangent = - transformedTangent; #endif -#endif`,Mc=`#ifdef USE_DISPLACEMENTMAP +#endif`,nu=`#ifdef USE_DISPLACEMENTMAP uniform sampler2D displacementMap; uniform float displacementScale; uniform float displacementBias; -#endif`,Sc=`#ifdef USE_DISPLACEMENTMAP +#endif`,iu=`#ifdef USE_DISPLACEMENTMAP transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias ); -#endif`,Ec=`#ifdef USE_EMISSIVEMAP +#endif`,ru=`#ifdef USE_EMISSIVEMAP vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv ); #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE emissiveColor = sRGBTransferEOTF( emissiveColor ); #endif totalEmissiveRadiance *= emissiveColor.rgb; -#endif`,Tc=`#ifdef USE_EMISSIVEMAP +#endif`,su=`#ifdef USE_EMISSIVEMAP uniform sampler2D emissiveMap; -#endif`,yc="gl_FragColor = linearToOutputTexel( gl_FragColor );",Ac=`vec4 LinearTransferOETF( in vec4 value ) { +#endif`,au="gl_FragColor = linearToOutputTexel( gl_FragColor );",ou=`vec4 LinearTransferOETF( in vec4 value ) { return value; } vec4 sRGBTransferEOTF( in vec4 value ) { @@ -548,7 +548,7 @@ vec4 sRGBTransferEOTF( in vec4 value ) { } vec4 sRGBTransferOETF( in vec4 value ) { return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a ); -}`,bc=`#ifdef USE_ENVMAP +}`,lu=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vec3 cameraToFrag; if ( isOrthographic ) { @@ -577,7 +577,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { #elif defined( ENVMAP_BLENDING_ADD ) outgoingLight += envColor.xyz * specularStrength * reflectivity; #endif -#endif`,Rc=`#ifdef USE_ENVMAP +#endif`,cu=`#ifdef USE_ENVMAP uniform float envMapIntensity; uniform float flipEnvMap; uniform mat3 envMapRotation; @@ -587,7 +587,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { uniform sampler2D envMap; #endif -#endif`,wc=`#ifdef USE_ENVMAP +#endif`,uu=`#ifdef USE_ENVMAP uniform float reflectivity; #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS @@ -598,7 +598,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { #else varying vec3 vReflect; #endif -#endif`,Cc=`#ifdef USE_ENVMAP +#endif`,hu=`#ifdef USE_ENVMAP #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT ) #define ENV_WORLDPOS #endif @@ -609,7 +609,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { varying vec3 vReflect; uniform float refractionRatio; #endif -#endif`,Pc=`#ifdef USE_ENVMAP +#endif`,fu=`#ifdef USE_ENVMAP #ifdef ENV_WORLDPOS vWorldPosition = worldPosition.xyz; #else @@ -626,18 +626,18 @@ vec4 sRGBTransferOETF( in vec4 value ) { vReflect = refract( cameraToVertex, worldNormal, refractionRatio ); #endif #endif -#endif`,Dc=`#ifdef USE_FOG +#endif`,du=`#ifdef USE_FOG vFogDepth = - mvPosition.z; -#endif`,Lc=`#ifdef USE_FOG +#endif`,pu=`#ifdef USE_FOG varying float vFogDepth; -#endif`,Uc=`#ifdef USE_FOG +#endif`,mu=`#ifdef USE_FOG #ifdef FOG_EXP2 float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth ); #else float fogFactor = smoothstep( fogNear, fogFar, vFogDepth ); #endif gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor ); -#endif`,Ic=`#ifdef USE_FOG +#endif`,_u=`#ifdef USE_FOG uniform vec3 fogColor; varying float vFogDepth; #ifdef FOG_EXP2 @@ -646,7 +646,7 @@ vec4 sRGBTransferOETF( in vec4 value ) { uniform float fogNear; uniform float fogFar; #endif -#endif`,Nc=`#ifdef USE_GRADIENTMAP +#endif`,gu=`#ifdef USE_GRADIENTMAP uniform sampler2D gradientMap; #endif vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { @@ -658,12 +658,12 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) { vec2 fw = fwidth( coord ) * 0.5; return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) ); #endif -}`,Fc=`#ifdef USE_LIGHTMAP +}`,vu=`#ifdef USE_LIGHTMAP uniform sampler2D lightMap; uniform float lightMapIntensity; -#endif`,Oc=`LambertMaterial material; +#endif`,xu=`LambertMaterial material; material.diffuseColor = diffuseColor.rgb; -material.specularStrength = specularStrength;`,Bc=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,Mu=`varying vec3 vViewPosition; struct LambertMaterial { vec3 diffuseColor; float specularStrength; @@ -677,7 +677,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Lambert -#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,zc=`uniform bool receiveShadow; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Su=`uniform bool receiveShadow; uniform vec3 ambientLightColor; #if defined( USE_LIGHT_PROBES ) uniform vec3 lightProbe[ 9 ]; @@ -793,7 +793,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight ); return irradiance; } -#endif`,Hc=`#ifdef USE_ENVMAP +#endif`,Eu=`#ifdef USE_ENVMAP vec3 getIBLIrradiance( const in vec3 normal ) { #ifdef ENVMAP_TYPE_CUBE_UV vec3 worldNormal = inverseTransformDirection( normal, viewMatrix ); @@ -826,8 +826,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi #endif } #endif -#endif`,Vc=`ToonMaterial material; -material.diffuseColor = diffuseColor.rgb;`,Gc=`varying vec3 vViewPosition; +#endif`,yu=`ToonMaterial material; +material.diffuseColor = diffuseColor.rgb;`,Tu=`varying vec3 vViewPosition; struct ToonMaterial { vec3 diffuseColor; }; @@ -839,11 +839,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_Toon -#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,kc=`BlinnPhongMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,bu=`BlinnPhongMaterial material; material.diffuseColor = diffuseColor.rgb; material.specularColor = specular; material.specularShininess = shininess; -material.specularStrength = specularStrength;`,Wc=`varying vec3 vViewPosition; +material.specularStrength = specularStrength;`,Au=`varying vec3 vViewPosition; struct BlinnPhongMaterial { vec3 diffuseColor; vec3 specularColor; @@ -860,7 +860,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor ); } #define RE_Direct RE_Direct_BlinnPhong -#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Xc=`PhysicalMaterial material; +#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Ru=`PhysicalMaterial material; material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor ); vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) ); float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z ); @@ -946,7 +946,7 @@ material.roughness = min( material.roughness, 1.0 ); material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) ); material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y; material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y; -#endif`,qc=`struct PhysicalMaterial { +#endif`,wu=`struct PhysicalMaterial { vec3 diffuseColor; float roughness; vec3 specularColor; @@ -1247,7 +1247,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia #define RE_IndirectSpecular RE_IndirectSpecular_Physical float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) { return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion ); -}`,Yc=` +}`,Cu=` vec3 geometryPosition = - vViewPosition; vec3 geometryNormal = normal; vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition ); @@ -1362,7 +1362,7 @@ IncidentLight directLight; #if defined( RE_IndirectSpecular ) vec3 radiance = vec3( 0.0 ); vec3 clearcoatRadiance = vec3( 0.0 ); -#endif`,Kc=`#if defined( RE_IndirectDiffuse ) +#endif`,Pu=`#if defined( RE_IndirectDiffuse ) #ifdef USE_LIGHTMAP vec4 lightMapTexel = texture2D( lightMap, vLightMapUv ); vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity; @@ -1381,32 +1381,32 @@ IncidentLight directLight; #ifdef USE_CLEARCOAT clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness ); #endif -#endif`,Zc=`#if defined( RE_IndirectDiffuse ) +#endif`,Lu=`#if defined( RE_IndirectDiffuse ) RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); #endif #if defined( RE_IndirectSpecular ) RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight ); -#endif`,$c=`#if defined( USE_LOGDEPTHBUF ) +#endif`,Du=`#if defined( USE_LOGDEPTHBUF ) gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5; -#endif`,jc=`#if defined( USE_LOGDEPTHBUF ) +#endif`,Uu=`#if defined( USE_LOGDEPTHBUF ) uniform float logDepthBufFC; varying float vFragDepth; varying float vIsPerspective; -#endif`,Jc=`#ifdef USE_LOGDEPTHBUF +#endif`,Iu=`#ifdef USE_LOGDEPTHBUF varying float vFragDepth; varying float vIsPerspective; -#endif`,Qc=`#ifdef USE_LOGDEPTHBUF +#endif`,Nu=`#ifdef USE_LOGDEPTHBUF vFragDepth = 1.0 + gl_Position.w; vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) ); -#endif`,eu=`#ifdef USE_MAP +#endif`,Fu=`#ifdef USE_MAP vec4 sampledDiffuseColor = texture2D( map, vMapUv ); #ifdef DECODE_VIDEO_TEXTURE sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor ); #endif diffuseColor *= sampledDiffuseColor; -#endif`,tu=`#ifdef USE_MAP +#endif`,Ou=`#ifdef USE_MAP uniform sampler2D map; -#endif`,nu=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) +#endif`,Bu=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP ) #if defined( USE_POINTS_UV ) vec2 uv = vUv; #else @@ -1418,7 +1418,7 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP diffuseColor.a *= texture2D( alphaMap, uv ).g; -#endif`,iu=`#if defined( USE_POINTS_UV ) +#endif`,zu=`#if defined( USE_POINTS_UV ) varying vec2 vUv; #else #if defined( USE_MAP ) || defined( USE_ALPHAMAP ) @@ -1430,19 +1430,19 @@ IncidentLight directLight; #endif #ifdef USE_ALPHAMAP uniform sampler2D alphaMap; -#endif`,ru=`float metalnessFactor = metalness; +#endif`,Hu=`float metalnessFactor = metalness; #ifdef USE_METALNESSMAP vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv ); metalnessFactor *= texelMetalness.b; -#endif`,su=`#ifdef USE_METALNESSMAP +#endif`,Vu=`#ifdef USE_METALNESSMAP uniform sampler2D metalnessMap; -#endif`,au=`#ifdef USE_INSTANCING_MORPH +#endif`,Gu=`#ifdef USE_INSTANCING_MORPH float morphTargetInfluences[ MORPHTARGETS_COUNT ]; float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r; } -#endif`,ou=`#if defined( USE_MORPHCOLORS ) +#endif`,ku=`#if defined( USE_MORPHCOLORS ) vColor *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { #if defined( USE_COLOR_ALPHA ) @@ -1451,12 +1451,12 @@ IncidentLight directLight; if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ]; #endif } -#endif`,lu=`#ifdef USE_MORPHNORMALS +#endif`,Wu=`#ifdef USE_MORPHNORMALS objectNormal *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ]; } -#endif`,cu=`#ifdef USE_MORPHTARGETS +#endif`,Xu=`#ifdef USE_MORPHTARGETS #ifndef USE_INSTANCING_MORPH uniform float morphTargetBaseInfluence; uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ]; @@ -1470,12 +1470,12 @@ IncidentLight directLight; ivec3 morphUV = ivec3( x, y, morphTargetIndex ); return texelFetch( morphTargetsTexture, morphUV, 0 ); } -#endif`,uu=`#ifdef USE_MORPHTARGETS +#endif`,qu=`#ifdef USE_MORPHTARGETS transformed *= morphTargetBaseInfluence; for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) { if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ]; } -#endif`,hu=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; +#endif`,Yu=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0; #ifdef FLAT_SHADED vec3 fdx = dFdx( vViewPosition ); vec3 fdy = dFdy( vViewPosition ); @@ -1516,7 +1516,7 @@ IncidentLight directLight; tbn2[1] *= faceDirection; #endif #endif -vec3 nonPerturbedNormal = normal;`,fu=`#ifdef USE_NORMALMAP_OBJECTSPACE +vec3 nonPerturbedNormal = normal;`,ju=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0; #ifdef FLIP_SIDED normal = - normal; @@ -1531,25 +1531,25 @@ vec3 nonPerturbedNormal = normal;`,fu=`#ifdef USE_NORMALMAP_OBJECTSPACE normal = normalize( tbn * mapN ); #elif defined( USE_BUMPMAP ) normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection ); -#endif`,du=`#ifndef FLAT_SHADED +#endif`,Ku=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,pu=`#ifndef FLAT_SHADED +#endif`,Zu=`#ifndef FLAT_SHADED varying vec3 vNormal; #ifdef USE_TANGENT varying vec3 vTangent; varying vec3 vBitangent; #endif -#endif`,mu=`#ifndef FLAT_SHADED +#endif`,$u=`#ifndef FLAT_SHADED vNormal = normalize( transformedNormal ); #ifdef USE_TANGENT vTangent = normalize( transformedTangent ); vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w ); #endif -#endif`,_u=`#ifdef USE_NORMALMAP +#endif`,Ju=`#ifdef USE_NORMALMAP uniform sampler2D normalMap; uniform vec2 normalScale; #endif @@ -1571,13 +1571,13 @@ vec3 nonPerturbedNormal = normal;`,fu=`#ifdef USE_NORMALMAP_OBJECTSPACE float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det ); return mat3( T * scale, B * scale, N ); } -#endif`,gu=`#ifdef USE_CLEARCOAT +#endif`,Qu=`#ifdef USE_CLEARCOAT vec3 clearcoatNormal = nonPerturbedNormal; -#endif`,vu=`#ifdef USE_CLEARCOAT_NORMALMAP +#endif`,eh=`#ifdef USE_CLEARCOAT_NORMALMAP vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0; clearcoatMapN.xy *= clearcoatNormalScale; clearcoatNormal = normalize( tbn2 * clearcoatMapN ); -#endif`,xu=`#ifdef USE_CLEARCOATMAP +#endif`,th=`#ifdef USE_CLEARCOATMAP uniform sampler2D clearcoatMap; #endif #ifdef USE_CLEARCOAT_NORMALMAP @@ -1586,18 +1586,18 @@ vec3 nonPerturbedNormal = normal;`,fu=`#ifdef USE_NORMALMAP_OBJECTSPACE #endif #ifdef USE_CLEARCOAT_ROUGHNESSMAP uniform sampler2D clearcoatRoughnessMap; -#endif`,Mu=`#ifdef USE_IRIDESCENCEMAP +#endif`,nh=`#ifdef USE_IRIDESCENCEMAP uniform sampler2D iridescenceMap; #endif #ifdef USE_IRIDESCENCE_THICKNESSMAP uniform sampler2D iridescenceThicknessMap; -#endif`,Su=`#ifdef OPAQUE +#endif`,ih=`#ifdef OPAQUE diffuseColor.a = 1.0; #endif #ifdef USE_TRANSMISSION diffuseColor.a *= material.transmissionAlpha; #endif -gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Eu=`vec3 packNormalToRGB( const in vec3 normal ) { +gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,rh=`vec3 packNormalToRGB( const in vec3 normal ) { return normalize( normal ) * 0.5 + 0.5; } vec3 unpackRGBToNormal( const in vec3 rgb ) { @@ -1666,9 +1666,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const } float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) { return ( near * far ) / ( ( far - near ) * depth - far ); -}`,Tu=`#ifdef PREMULTIPLIED_ALPHA +}`,sh=`#ifdef PREMULTIPLIED_ALPHA gl_FragColor.rgb *= gl_FragColor.a; -#endif`,yu=`vec4 mvPosition = vec4( transformed, 1.0 ); +#endif`,ah=`vec4 mvPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING mvPosition = batchingMatrix * mvPosition; #endif @@ -1676,22 +1676,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const mvPosition = instanceMatrix * mvPosition; #endif mvPosition = modelViewMatrix * mvPosition; -gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING +gl_Position = projectionMatrix * mvPosition;`,oh=`#ifdef DITHERING gl_FragColor.rgb = dithering( gl_FragColor.rgb ); -#endif`,bu=`#ifdef DITHERING +#endif`,lh=`#ifdef DITHERING vec3 dithering( vec3 color ) { float grid_position = rand( gl_FragCoord.xy ); vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 ); dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position ); return color + dither_shift_RGB; } -#endif`,Ru=`float roughnessFactor = roughness; +#endif`,ch=`float roughnessFactor = roughness; #ifdef USE_ROUGHNESSMAP vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv ); roughnessFactor *= texelRoughness.g; -#endif`,wu=`#ifdef USE_ROUGHNESSMAP +#endif`,uh=`#ifdef USE_ROUGHNESSMAP uniform sampler2D roughnessMap; -#endif`,Cu=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,hh=`#if NUM_SPOT_LIGHT_COORDS > 0 varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif #if NUM_SPOT_LIGHT_MAPS > 0 @@ -1877,7 +1877,7 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING } return mix( 1.0, shadow, shadowIntensity ); } -#endif`,Pu=`#if NUM_SPOT_LIGHT_COORDS > 0 +#endif`,fh=`#if NUM_SPOT_LIGHT_COORDS > 0 uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ]; varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ]; #endif @@ -1918,7 +1918,7 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING }; uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ]; #endif -#endif`,Du=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) +#endif`,dh=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 ) vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix ); vec4 shadowWorldPosition; #endif @@ -1950,7 +1950,7 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition; } #pragma unroll_loop_end -#endif`,Lu=`float getShadowMask() { +#endif`,ph=`float getShadowMask() { float shadow = 1.0; #ifdef USE_SHADOWMAP #if NUM_DIR_LIGHT_SHADOWS > 0 @@ -1982,12 +1982,12 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING #endif #endif return shadow; -}`,Uu=`#ifdef USE_SKINNING +}`,mh=`#ifdef USE_SKINNING mat4 boneMatX = getBoneMatrix( skinIndex.x ); mat4 boneMatY = getBoneMatrix( skinIndex.y ); mat4 boneMatZ = getBoneMatrix( skinIndex.z ); mat4 boneMatW = getBoneMatrix( skinIndex.w ); -#endif`,Iu=`#ifdef USE_SKINNING +#endif`,_h=`#ifdef USE_SKINNING uniform mat4 bindMatrix; uniform mat4 bindMatrixInverse; uniform highp sampler2D boneTexture; @@ -2002,7 +2002,7 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 ); return mat4( v1, v2, v3, v4 ); } -#endif`,Nu=`#ifdef USE_SKINNING +#endif`,gh=`#ifdef USE_SKINNING vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 ); vec4 skinned = vec4( 0.0 ); skinned += boneMatX * skinVertex * skinWeight.x; @@ -2010,7 +2010,7 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING skinned += boneMatZ * skinVertex * skinWeight.z; skinned += boneMatW * skinVertex * skinWeight.w; transformed = ( bindMatrixInverse * skinned ).xyz; -#endif`,Fu=`#ifdef USE_SKINNING +#endif`,vh=`#ifdef USE_SKINNING mat4 skinMatrix = mat4( 0.0 ); skinMatrix += skinWeight.x * boneMatX; skinMatrix += skinWeight.y * boneMatY; @@ -2021,17 +2021,17 @@ gl_Position = projectionMatrix * mvPosition;`,Au=`#ifdef DITHERING #ifdef USE_TANGENT objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz; #endif -#endif`,Ou=`float specularStrength; +#endif`,xh=`float specularStrength; #ifdef USE_SPECULARMAP vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv ); specularStrength = texelSpecular.r; #else specularStrength = 1.0; -#endif`,Bu=`#ifdef USE_SPECULARMAP +#endif`,Mh=`#ifdef USE_SPECULARMAP uniform sampler2D specularMap; -#endif`,zu=`#if defined( TONE_MAPPING ) +#endif`,Sh=`#if defined( TONE_MAPPING ) gl_FragColor.rgb = toneMapping( gl_FragColor.rgb ); -#endif`,Hu=`#ifndef saturate +#endif`,Eh=`#ifndef saturate #define saturate( a ) clamp( a, 0.0, 1.0 ) #endif uniform float toneMappingExposure; @@ -2128,7 +2128,7 @@ vec3 NeutralToneMapping( vec3 color ) { float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. ); return mix( color, vec3( newPeak ), g ); } -vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISSION +vec3 CustomToneMapping( vec3 color ) { return color; }`,yh=`#ifdef USE_TRANSMISSION material.transmission = transmission; material.transmissionAlpha = 1.0; material.thickness = thickness; @@ -2149,7 +2149,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISS material.attenuationColor, material.attenuationDistance ); material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission ); totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission ); -#endif`,Gu=`#ifdef USE_TRANSMISSION +#endif`,Th=`#ifdef USE_TRANSMISSION uniform float transmission; uniform float thickness; uniform float attenuationDistance; @@ -2275,7 +2275,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISS float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0; return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor ); } -#endif`,ku=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,bh=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2345,7 +2345,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,Wu=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Ah=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) varying vec2 vUv; #endif #ifdef USE_MAP @@ -2439,7 +2439,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISS #ifdef USE_THICKNESSMAP uniform mat3 thicknessMapTransform; varying vec2 vThicknessMapUv; -#endif`,Xu=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) +#endif`,Rh=`#if defined( USE_UV ) || defined( USE_ANISOTROPY ) vUv = vec3( uv, 1 ).xy; #endif #ifdef USE_MAP @@ -2510,7 +2510,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISS #endif #ifdef USE_THICKNESSMAP vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy; -#endif`,qu=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 +#endif`,wh=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0 vec4 worldPosition = vec4( transformed, 1.0 ); #ifdef USE_BATCHING worldPosition = batchingMatrix * worldPosition; @@ -2519,12 +2519,12 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Vu=`#ifdef USE_TRANSMISS worldPosition = instanceMatrix * worldPosition; #endif worldPosition = modelMatrix * worldPosition; -#endif`;const Yu=`varying vec2 vUv; +#endif`;const Ch=`varying vec2 vUv; uniform mat3 uvTransform; void main() { vUv = ( uvTransform * vec3( uv, 1 ) ).xy; gl_Position = vec4( position.xy, 1.0, 1.0 ); -}`,Ku=`uniform sampler2D t2D; +}`,Ph=`uniform sampler2D t2D; uniform float backgroundIntensity; varying vec2 vUv; void main() { @@ -2536,14 +2536,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,Zu=`varying vec3 vWorldDirection; +}`,Lh=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,$u=`#ifdef ENVMAP_TYPE_CUBE +}`,Dh=`#ifdef ENVMAP_TYPE_CUBE uniform samplerCube envMap; #elif defined( ENVMAP_TYPE_CUBE_UV ) uniform sampler2D envMap; @@ -2566,14 +2566,14 @@ void main() { gl_FragColor = texColor; #include #include -}`,ju=`varying vec3 vWorldDirection; +}`,Uh=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include gl_Position.z = gl_Position.w; -}`,Ju=`uniform samplerCube tCube; +}`,Ih=`uniform samplerCube tCube; uniform float tFlip; uniform float opacity; varying vec3 vWorldDirection; @@ -2583,7 +2583,7 @@ void main() { gl_FragColor.a *= opacity; #include #include -}`,Qu=`#include +}`,Nh=`#include #include #include #include @@ -2610,7 +2610,7 @@ void main() { #include #include vHighPrecisionZW = gl_Position.zw; -}`,eh=`#if DEPTH_PACKING == 3200 +}`,Fh=`#if DEPTH_PACKING == 3200 uniform float opacity; #endif #include @@ -2644,7 +2644,7 @@ void main() { #elif DEPTH_PACKING == 3203 gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 ); #endif -}`,th=`#define DISTANCE +}`,Oh=`#define DISTANCE varying vec3 vWorldPosition; #include #include @@ -2671,7 +2671,7 @@ void main() { #include #include vWorldPosition = worldPosition.xyz; -}`,nh=`#define DISTANCE +}`,Bh=`#define DISTANCE uniform vec3 referencePosition; uniform float nearDistance; uniform float farDistance; @@ -2695,13 +2695,13 @@ void main () { dist = ( dist - nearDistance ) / ( farDistance - nearDistance ); dist = saturate( dist ); gl_FragColor = packDepthToRGBA( dist ); -}`,ih=`varying vec3 vWorldDirection; +}`,zh=`varying vec3 vWorldDirection; #include void main() { vWorldDirection = transformDirection( position, modelMatrix ); #include #include -}`,rh=`uniform sampler2D tEquirect; +}`,Hh=`uniform sampler2D tEquirect; varying vec3 vWorldDirection; #include void main() { @@ -2710,7 +2710,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); #include #include -}`,sh=`uniform float scale; +}`,Vh=`uniform float scale; attribute float lineDistance; varying float vLineDistance; #include @@ -2732,7 +2732,7 @@ void main() { #include #include #include -}`,ah=`uniform vec3 diffuse; +}`,Gh=`uniform vec3 diffuse; uniform float opacity; uniform float dashSize; uniform float totalSize; @@ -2760,7 +2760,7 @@ void main() { #include #include #include -}`,oh=`#include +}`,kh=`#include #include #include #include @@ -2792,7 +2792,7 @@ void main() { #include #include #include -}`,lh=`uniform vec3 diffuse; +}`,Wh=`uniform vec3 diffuse; uniform float opacity; #ifndef FLAT_SHADED varying vec3 vNormal; @@ -2840,7 +2840,7 @@ void main() { #include #include #include -}`,ch=`#define LAMBERT +}`,Xh=`#define LAMBERT varying vec3 vViewPosition; #include #include @@ -2879,7 +2879,7 @@ void main() { #include #include #include -}`,uh=`#define LAMBERT +}`,qh=`#define LAMBERT uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -2936,7 +2936,7 @@ void main() { #include #include #include -}`,hh=`#define MATCAP +}`,Yh=`#define MATCAP varying vec3 vViewPosition; #include #include @@ -2970,7 +2970,7 @@ void main() { #include #include vViewPosition = - mvPosition.xyz; -}`,fh=`#define MATCAP +}`,jh=`#define MATCAP uniform vec3 diffuse; uniform float opacity; uniform sampler2D matcap; @@ -3016,7 +3016,7 @@ void main() { #include #include #include -}`,dh=`#define NORMAL +}`,Kh=`#define NORMAL #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; #endif @@ -3049,7 +3049,7 @@ void main() { #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) vViewPosition = - mvPosition.xyz; #endif -}`,ph=`#define NORMAL +}`,Zh=`#define NORMAL uniform float opacity; #if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE ) varying vec3 vViewPosition; @@ -3071,7 +3071,7 @@ void main() { #ifdef OPAQUE gl_FragColor.a = 1.0; #endif -}`,mh=`#define PHONG +}`,$h=`#define PHONG varying vec3 vViewPosition; #include #include @@ -3110,7 +3110,7 @@ void main() { #include #include #include -}`,_h=`#define PHONG +}`,Jh=`#define PHONG uniform vec3 diffuse; uniform vec3 emissive; uniform vec3 specular; @@ -3169,7 +3169,7 @@ void main() { #include #include #include -}`,gh=`#define STANDARD +}`,Qh=`#define STANDARD varying vec3 vViewPosition; #ifdef USE_TRANSMISSION varying vec3 vWorldPosition; @@ -3212,7 +3212,7 @@ void main() { #ifdef USE_TRANSMISSION vWorldPosition = worldPosition.xyz; #endif -}`,vh=`#define STANDARD +}`,ef=`#define STANDARD #ifdef PHYSICAL #define IOR #define USE_SPECULAR @@ -3337,7 +3337,7 @@ void main() { #include #include #include -}`,xh=`#define TOON +}`,tf=`#define TOON varying vec3 vViewPosition; #include #include @@ -3374,7 +3374,7 @@ void main() { #include #include #include -}`,Mh=`#define TOON +}`,nf=`#define TOON uniform vec3 diffuse; uniform vec3 emissive; uniform float opacity; @@ -3427,7 +3427,7 @@ void main() { #include #include #include -}`,Sh=`uniform float size; +}`,rf=`uniform float size; uniform float scale; #include #include @@ -3458,7 +3458,7 @@ void main() { #include #include #include -}`,Eh=`uniform vec3 diffuse; +}`,sf=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3483,7 +3483,7 @@ void main() { #include #include #include -}`,Th=`#include +}`,af=`#include #include #include #include @@ -3506,7 +3506,7 @@ void main() { #include #include #include -}`,yh=`uniform vec3 color; +}`,of=`uniform vec3 color; uniform float opacity; #include #include @@ -3522,7 +3522,7 @@ void main() { #include #include #include -}`,Ah=`uniform float rotation; +}`,lf=`uniform float rotation; uniform vec2 center; #include #include @@ -3546,7 +3546,7 @@ void main() { #include #include #include -}`,bh=`uniform vec3 diffuse; +}`,cf=`uniform vec3 diffuse; uniform float opacity; #include #include @@ -3571,7 +3571,7 @@ void main() { #include #include #include -}`,De={alphahash_fragment:Kl,alphahash_pars_fragment:Zl,alphamap_fragment:$l,alphamap_pars_fragment:jl,alphatest_fragment:Jl,alphatest_pars_fragment:Ql,aomap_fragment:ec,aomap_pars_fragment:tc,batching_pars_vertex:nc,batching_vertex:ic,begin_vertex:rc,beginnormal_vertex:sc,bsdfs:ac,iridescence_fragment:oc,bumpmap_pars_fragment:lc,clipping_planes_fragment:cc,clipping_planes_pars_fragment:uc,clipping_planes_pars_vertex:hc,clipping_planes_vertex:fc,color_fragment:dc,color_pars_fragment:pc,color_pars_vertex:mc,color_vertex:_c,common:gc,cube_uv_reflection_fragment:vc,defaultnormal_vertex:xc,displacementmap_pars_vertex:Mc,displacementmap_vertex:Sc,emissivemap_fragment:Ec,emissivemap_pars_fragment:Tc,colorspace_fragment:yc,colorspace_pars_fragment:Ac,envmap_fragment:bc,envmap_common_pars_fragment:Rc,envmap_pars_fragment:wc,envmap_pars_vertex:Cc,envmap_physical_pars_fragment:Hc,envmap_vertex:Pc,fog_vertex:Dc,fog_pars_vertex:Lc,fog_fragment:Uc,fog_pars_fragment:Ic,gradientmap_pars_fragment:Nc,lightmap_pars_fragment:Fc,lights_lambert_fragment:Oc,lights_lambert_pars_fragment:Bc,lights_pars_begin:zc,lights_toon_fragment:Vc,lights_toon_pars_fragment:Gc,lights_phong_fragment:kc,lights_phong_pars_fragment:Wc,lights_physical_fragment:Xc,lights_physical_pars_fragment:qc,lights_fragment_begin:Yc,lights_fragment_maps:Kc,lights_fragment_end:Zc,logdepthbuf_fragment:$c,logdepthbuf_pars_fragment:jc,logdepthbuf_pars_vertex:Jc,logdepthbuf_vertex:Qc,map_fragment:eu,map_pars_fragment:tu,map_particle_fragment:nu,map_particle_pars_fragment:iu,metalnessmap_fragment:ru,metalnessmap_pars_fragment:su,morphinstance_vertex:au,morphcolor_vertex:ou,morphnormal_vertex:lu,morphtarget_pars_vertex:cu,morphtarget_vertex:uu,normal_fragment_begin:hu,normal_fragment_maps:fu,normal_pars_fragment:du,normal_pars_vertex:pu,normal_vertex:mu,normalmap_pars_fragment:_u,clearcoat_normal_fragment_begin:gu,clearcoat_normal_fragment_maps:vu,clearcoat_pars_fragment:xu,iridescence_pars_fragment:Mu,opaque_fragment:Su,packing:Eu,premultiplied_alpha_fragment:Tu,project_vertex:yu,dithering_fragment:Au,dithering_pars_fragment:bu,roughnessmap_fragment:Ru,roughnessmap_pars_fragment:wu,shadowmap_pars_fragment:Cu,shadowmap_pars_vertex:Pu,shadowmap_vertex:Du,shadowmask_pars_fragment:Lu,skinbase_vertex:Uu,skinning_pars_vertex:Iu,skinning_vertex:Nu,skinnormal_vertex:Fu,specularmap_fragment:Ou,specularmap_pars_fragment:Bu,tonemapping_fragment:zu,tonemapping_pars_fragment:Hu,transmission_fragment:Vu,transmission_pars_fragment:Gu,uv_pars_fragment:ku,uv_pars_vertex:Wu,uv_vertex:Xu,worldpos_vertex:qu,background_vert:Yu,background_frag:Ku,backgroundCube_vert:Zu,backgroundCube_frag:$u,cube_vert:ju,cube_frag:Ju,depth_vert:Qu,depth_frag:eh,distanceRGBA_vert:th,distanceRGBA_frag:nh,equirect_vert:ih,equirect_frag:rh,linedashed_vert:sh,linedashed_frag:ah,meshbasic_vert:oh,meshbasic_frag:lh,meshlambert_vert:ch,meshlambert_frag:uh,meshmatcap_vert:hh,meshmatcap_frag:fh,meshnormal_vert:dh,meshnormal_frag:ph,meshphong_vert:mh,meshphong_frag:_h,meshphysical_vert:gh,meshphysical_frag:vh,meshtoon_vert:xh,meshtoon_frag:Mh,points_vert:Sh,points_frag:Eh,shadow_vert:Th,shadow_frag:yh,sprite_vert:Ah,sprite_frag:bh},te={common:{diffuse:{value:new Ye(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ce},alphaMap:{value:null},alphaMapTransform:{value:new Ce},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ce}},envmap:{envMap:{value:null},envMapRotation:{value:new Ce},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ce}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ce}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ce},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ce},normalScale:{value:new Ze(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ce},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ce}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ce}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ce}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ye(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ye(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ce},alphaTest:{value:0},uvTransform:{value:new Ce}},sprite:{diffuse:{value:new Ye(16777215)},opacity:{value:1},center:{value:new Ze(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ce},alphaMap:{value:null},alphaMapTransform:{value:new Ce},alphaTest:{value:0}}},Bt={basic:{uniforms:mt([te.common,te.specularmap,te.envmap,te.aomap,te.lightmap,te.fog]),vertexShader:De.meshbasic_vert,fragmentShader:De.meshbasic_frag},lambert:{uniforms:mt([te.common,te.specularmap,te.envmap,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.fog,te.lights,{emissive:{value:new Ye(0)}}]),vertexShader:De.meshlambert_vert,fragmentShader:De.meshlambert_frag},phong:{uniforms:mt([te.common,te.specularmap,te.envmap,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.fog,te.lights,{emissive:{value:new Ye(0)},specular:{value:new Ye(1118481)},shininess:{value:30}}]),vertexShader:De.meshphong_vert,fragmentShader:De.meshphong_frag},standard:{uniforms:mt([te.common,te.envmap,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.roughnessmap,te.metalnessmap,te.fog,te.lights,{emissive:{value:new Ye(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:De.meshphysical_vert,fragmentShader:De.meshphysical_frag},toon:{uniforms:mt([te.common,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.gradientmap,te.fog,te.lights,{emissive:{value:new Ye(0)}}]),vertexShader:De.meshtoon_vert,fragmentShader:De.meshtoon_frag},matcap:{uniforms:mt([te.common,te.bumpmap,te.normalmap,te.displacementmap,te.fog,{matcap:{value:null}}]),vertexShader:De.meshmatcap_vert,fragmentShader:De.meshmatcap_frag},points:{uniforms:mt([te.points,te.fog]),vertexShader:De.points_vert,fragmentShader:De.points_frag},dashed:{uniforms:mt([te.common,te.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:De.linedashed_vert,fragmentShader:De.linedashed_frag},depth:{uniforms:mt([te.common,te.displacementmap]),vertexShader:De.depth_vert,fragmentShader:De.depth_frag},normal:{uniforms:mt([te.common,te.bumpmap,te.normalmap,te.displacementmap,{opacity:{value:1}}]),vertexShader:De.meshnormal_vert,fragmentShader:De.meshnormal_frag},sprite:{uniforms:mt([te.sprite,te.fog]),vertexShader:De.sprite_vert,fragmentShader:De.sprite_frag},background:{uniforms:{uvTransform:{value:new Ce},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:De.background_vert,fragmentShader:De.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Ce}},vertexShader:De.backgroundCube_vert,fragmentShader:De.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:De.cube_vert,fragmentShader:De.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:De.equirect_vert,fragmentShader:De.equirect_frag},distanceRGBA:{uniforms:mt([te.common,te.displacementmap,{referencePosition:{value:new B},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:De.distanceRGBA_vert,fragmentShader:De.distanceRGBA_frag},shadow:{uniforms:mt([te.lights,te.fog,{color:{value:new Ye(0)},opacity:{value:1}}]),vertexShader:De.shadow_vert,fragmentShader:De.shadow_frag}};Bt.physical={uniforms:mt([Bt.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ce},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ce},clearcoatNormalScale:{value:new Ze(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ce},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ce},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ce},sheen:{value:0},sheenColor:{value:new Ye(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ce},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ce},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ce},transmissionSamplerSize:{value:new Ze},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ce},attenuationDistance:{value:0},attenuationColor:{value:new Ye(0)},specularColor:{value:new Ye(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ce},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ce},anisotropyVector:{value:new Ze},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ce}}]),vertexShader:De.meshphysical_vert,fragmentShader:De.meshphysical_frag};const Hi={r:0,b:0,g:0},xn=new en,Rh=new at;function wh(i,e,t,n,r,s,a){const o=new Ye(0);let l=s===!0?0:1,c,h,f=null,d=0,m=null;function v(y){let T=y.isScene===!0?y.background:null;return T&&T.isTexture&&(T=(y.backgroundBlurriness>0?t:e).get(T)),T}function M(y){let T=!1;const U=v(y);U===null?u(o,l):U&&U.isColor&&(u(U,1),T=!0);const D=i.xr.getEnvironmentBlendMode();D==="additive"?n.buffers.color.setClear(0,0,0,1,a):D==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||T)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function p(y,T){const U=v(T);U&&(U.isCubeTexture||U.mapping===Ji)?(h===void 0&&(h=new Ht(new si(1,1,1),new fn({name:"BackgroundCubeMaterial",uniforms:ii(Bt.backgroundCube.uniforms),vertexShader:Bt.backgroundCube.vertexShader,fragmentShader:Bt.backgroundCube.fragmentShader,side:vt,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(D,R,I){this.matrixWorld.copyPosition(I.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(h)),xn.copy(T.backgroundRotation),xn.x*=-1,xn.y*=-1,xn.z*=-1,U.isCubeTexture&&U.isRenderTargetTexture===!1&&(xn.y*=-1,xn.z*=-1),h.material.uniforms.envMap.value=U,h.material.uniforms.flipEnvMap.value=U.isCubeTexture&&U.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=T.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(Rh.makeRotationFromEuler(xn)),h.material.toneMapped=Ve.getTransfer(U.colorSpace)!==qe,(f!==U||d!==U.version||m!==i.toneMapping)&&(h.material.needsUpdate=!0,f=U,d=U.version,m=i.toneMapping),h.layers.enableAll(),y.unshift(h,h.geometry,h.material,0,0,null)):U&&U.isTexture&&(c===void 0&&(c=new Ht(new er(2,2),new fn({name:"BackgroundMaterial",uniforms:ii(Bt.background.uniforms),vertexShader:Bt.background.vertexShader,fragmentShader:Bt.background.fragmentShader,side:hn,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=U,c.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,c.material.toneMapped=Ve.getTransfer(U.colorSpace)!==qe,U.matrixAutoUpdate===!0&&U.updateMatrix(),c.material.uniforms.uvTransform.value.copy(U.matrix),(f!==U||d!==U.version||m!==i.toneMapping)&&(c.material.needsUpdate=!0,f=U,d=U.version,m=i.toneMapping),c.layers.enableAll(),y.unshift(c,c.geometry,c.material,0,0,null))}function u(y,T){y.getRGB(Hi,no(i)),n.buffers.color.setClear(Hi.r,Hi.g,Hi.b,T,a)}function b(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return o},setClearColor:function(y,T=1){o.set(y),l=T,u(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(y){l=y,u(o,l)},render:M,addToRenderList:p,dispose:b}}function Ch(i,e){const t=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},r=d(null);let s=r,a=!1;function o(x,w,k,z,K){let Z=!1;const X=f(z,k,w);s!==X&&(s=X,c(s.object)),Z=m(x,z,k,K),Z&&v(x,z,k,K),K!==null&&e.update(K,i.ELEMENT_ARRAY_BUFFER),(Z||a)&&(a=!1,T(x,w,k,z),K!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,e.get(K).buffer))}function l(){return i.createVertexArray()}function c(x){return i.bindVertexArray(x)}function h(x){return i.deleteVertexArray(x)}function f(x,w,k){const z=k.wireframe===!0;let K=n[x.id];K===void 0&&(K={},n[x.id]=K);let Z=K[w.id];Z===void 0&&(Z={},K[w.id]=Z);let X=Z[z];return X===void 0&&(X=d(l()),Z[z]=X),X}function d(x){const w=[],k=[],z=[];for(let K=0;K=0){const ue=K[V];let ve=Z[V];if(ve===void 0&&(V==="instanceMatrix"&&x.instanceMatrix&&(ve=x.instanceMatrix),V==="instanceColor"&&x.instanceColor&&(ve=x.instanceColor)),ue===void 0||ue.attribute!==ve||ve&&ue.data!==ve.data)return!0;X++}return s.attributesNum!==X||s.index!==z}function v(x,w,k,z){const K={},Z=w.attributes;let X=0;const j=k.getAttributes();for(const V in j)if(j[V].location>=0){let ue=Z[V];ue===void 0&&(V==="instanceMatrix"&&x.instanceMatrix&&(ue=x.instanceMatrix),V==="instanceColor"&&x.instanceColor&&(ue=x.instanceColor));const ve={};ve.attribute=ue,ue&&ue.data&&(ve.data=ue.data),K[V]=ve,X++}s.attributes=K,s.attributesNum=X,s.index=z}function M(){const x=s.newAttributes;for(let w=0,k=x.length;w=0){let re=K[j];if(re===void 0&&(j==="instanceMatrix"&&x.instanceMatrix&&(re=x.instanceMatrix),j==="instanceColor"&&x.instanceColor&&(re=x.instanceColor)),re!==void 0){const ue=re.normalized,ve=re.itemSize,Le=e.get(re);if(Le===void 0)continue;const Ke=Le.buffer,W=Le.type,ee=Le.bytesPerElement,me=W===i.INT||W===i.UNSIGNED_INT||re.gpuType===ys;if(re.isInterleavedBufferAttribute){const se=re.data,Ee=se.stride,Ge=re.offset;if(se.isInstancedInterleavedBuffer){for(let ye=0;ye0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const h=l(c);h!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",h,"instead."),c=h);const f=t.logarithmicDepthBuffer===!0,d=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),m=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),v=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),M=i.getParameter(i.MAX_TEXTURE_SIZE),p=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),u=i.getParameter(i.MAX_VERTEX_ATTRIBS),b=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),y=i.getParameter(i.MAX_VARYING_VECTORS),T=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),U=v>0,D=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:f,reverseDepthBuffer:d,maxTextures:m,maxVertexTextures:v,maxTextureSize:M,maxCubemapSize:p,maxAttributes:u,maxVertexUniforms:b,maxVaryings:y,maxFragmentUniforms:T,vertexTextures:U,maxSamples:D}}function Lh(i){const e=this;let t=null,n=0,r=!1,s=!1;const a=new En,o=new Ce,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(f,d){const m=f.length!==0||d||n!==0||r;return r=d,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,d){t=h(f,d,0)},this.setState=function(f,d,m){const v=f.clippingPlanes,M=f.clipIntersection,p=f.clipShadows,u=i.get(f);if(!r||v===null||v.length===0||s&&!p)s?h(null):c();else{const b=s?0:n,y=b*4;let T=u.clippingState||null;l.value=T,T=h(v,d,y,m);for(let U=0;U!==y;++U)T[U]=t[U];u.clippingState=T,this.numIntersection=M?this.numPlanes:0,this.numPlanes+=b}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function h(f,d,m,v){const M=f!==null?f.length:0;let p=null;if(M!==0){if(p=l.value,v!==!0||p===null){const u=m+M*4,b=d.matrixWorldInverse;o.getNormalMatrix(b),(p===null||p.length0){const c=new Ol(l.height);return c.fromEquirectangularTexture(i,a),e.set(a,c),a.addEventListener("dispose",r),t(c.texture,a.mapping)}else return null}}return a}function r(a){const o=a.target;o.removeEventListener("dispose",r);const l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}const Yn=4,fa=[.125,.215,.35,.446,.526,.582],An=20,Cr=new Wl,da=new Ye;let Pr=null,Dr=0,Lr=0,Ur=!1;const Tn=(1+Math.sqrt(5))/2,qn=1/Tn,pa=[new B(-Tn,qn,0),new B(Tn,qn,0),new B(-qn,0,Tn),new B(qn,0,Tn),new B(0,Tn,-qn),new B(0,Tn,qn),new B(-1,1,-1),new B(1,1,-1),new B(-1,1,1),new B(1,1,1)],Ih=new B;class ma{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100,s={}){const{size:a=256,position:o=Ih}=s;Pr=this._renderer.getRenderTarget(),Dr=this._renderer.getActiveCubeFace(),Lr=this._renderer.getActiveMipmapLevel(),Ur=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=va(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=ga(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?T:0,T,T),f.setRenderTarget(r),p&&f.render(M,l),f.render(e,l)}M.geometry.dispose(),M.material.dispose(),f.toneMapping=m,f.autoClear=d,e.background=u}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===Jn||e.mapping===Qn;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=va()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=ga());const s=r?this._cubemapMaterial:this._equirectMaterial,a=new Ht(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=e;const l=this._cubeSize;Vi(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(a,Cr)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;sAn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${An}`);const u=[];let b=0;for(let R=0;Ry-Yn?r-y+Yn:0),D=4*(this._cubeSize-T);Vi(t,U,D,3*T,2*T),l.setRenderTarget(t),l.render(f,Cr)}}function Nh(i){const e=[],t=[],n=[];let r=i;const s=i-Yn+1+fa.length;for(let a=0;ai-Yn?l=fa[a-i+Yn-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),h=-c,f=1+c,d=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,v=6,M=3,p=2,u=1,b=new Float32Array(M*v*m),y=new Float32Array(p*v*m),T=new Float32Array(u*v*m);for(let D=0;D2?0:-1,S=[R,I,0,R+2/3,I,0,R+2/3,I+1,0,R,I,0,R+2/3,I+1,0,R,I+1,0];b.set(S,M*v*D),y.set(d,p*v*D);const x=[D,D,D,D,D,D];T.set(x,u*v*D)}const U=new Dn;U.setAttribute("position",new Vt(b,M)),U.setAttribute("uv",new Vt(y,p)),U.setAttribute("faceIndex",new Vt(T,u)),e.push(U),r>Yn&&r--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function _a(i,e,t){const n=new Pn(i,e,t);return n.texture.mapping=Ji,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Vi(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function Fh(i,e,t){const n=new Float32Array(An),r=new B(0,1,0);return new fn({name:"SphericalGaussianBlur",defines:{n:An,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:Us(),fragmentShader:` +}`,Le={alphahash_fragment:Pc,alphahash_pars_fragment:Lc,alphamap_fragment:Dc,alphamap_pars_fragment:Uc,alphatest_fragment:Ic,alphatest_pars_fragment:Nc,aomap_fragment:Fc,aomap_pars_fragment:Oc,batching_pars_vertex:Bc,batching_vertex:zc,begin_vertex:Hc,beginnormal_vertex:Vc,bsdfs:Gc,iridescence_fragment:kc,bumpmap_pars_fragment:Wc,clipping_planes_fragment:Xc,clipping_planes_pars_fragment:qc,clipping_planes_pars_vertex:Yc,clipping_planes_vertex:jc,color_fragment:Kc,color_pars_fragment:Zc,color_pars_vertex:$c,color_vertex:Jc,common:Qc,cube_uv_reflection_fragment:eu,defaultnormal_vertex:tu,displacementmap_pars_vertex:nu,displacementmap_vertex:iu,emissivemap_fragment:ru,emissivemap_pars_fragment:su,colorspace_fragment:au,colorspace_pars_fragment:ou,envmap_fragment:lu,envmap_common_pars_fragment:cu,envmap_pars_fragment:uu,envmap_pars_vertex:hu,envmap_physical_pars_fragment:Eu,envmap_vertex:fu,fog_vertex:du,fog_pars_vertex:pu,fog_fragment:mu,fog_pars_fragment:_u,gradientmap_pars_fragment:gu,lightmap_pars_fragment:vu,lights_lambert_fragment:xu,lights_lambert_pars_fragment:Mu,lights_pars_begin:Su,lights_toon_fragment:yu,lights_toon_pars_fragment:Tu,lights_phong_fragment:bu,lights_phong_pars_fragment:Au,lights_physical_fragment:Ru,lights_physical_pars_fragment:wu,lights_fragment_begin:Cu,lights_fragment_maps:Pu,lights_fragment_end:Lu,logdepthbuf_fragment:Du,logdepthbuf_pars_fragment:Uu,logdepthbuf_pars_vertex:Iu,logdepthbuf_vertex:Nu,map_fragment:Fu,map_pars_fragment:Ou,map_particle_fragment:Bu,map_particle_pars_fragment:zu,metalnessmap_fragment:Hu,metalnessmap_pars_fragment:Vu,morphinstance_vertex:Gu,morphcolor_vertex:ku,morphnormal_vertex:Wu,morphtarget_pars_vertex:Xu,morphtarget_vertex:qu,normal_fragment_begin:Yu,normal_fragment_maps:ju,normal_pars_fragment:Ku,normal_pars_vertex:Zu,normal_vertex:$u,normalmap_pars_fragment:Ju,clearcoat_normal_fragment_begin:Qu,clearcoat_normal_fragment_maps:eh,clearcoat_pars_fragment:th,iridescence_pars_fragment:nh,opaque_fragment:ih,packing:rh,premultiplied_alpha_fragment:sh,project_vertex:ah,dithering_fragment:oh,dithering_pars_fragment:lh,roughnessmap_fragment:ch,roughnessmap_pars_fragment:uh,shadowmap_pars_fragment:hh,shadowmap_pars_vertex:fh,shadowmap_vertex:dh,shadowmask_pars_fragment:ph,skinbase_vertex:mh,skinning_pars_vertex:_h,skinning_vertex:gh,skinnormal_vertex:vh,specularmap_fragment:xh,specularmap_pars_fragment:Mh,tonemapping_fragment:Sh,tonemapping_pars_fragment:Eh,transmission_fragment:yh,transmission_pars_fragment:Th,uv_pars_fragment:bh,uv_pars_vertex:Ah,uv_vertex:Rh,worldpos_vertex:wh,background_vert:Ch,background_frag:Ph,backgroundCube_vert:Lh,backgroundCube_frag:Dh,cube_vert:Uh,cube_frag:Ih,depth_vert:Nh,depth_frag:Fh,distanceRGBA_vert:Oh,distanceRGBA_frag:Bh,equirect_vert:zh,equirect_frag:Hh,linedashed_vert:Vh,linedashed_frag:Gh,meshbasic_vert:kh,meshbasic_frag:Wh,meshlambert_vert:Xh,meshlambert_frag:qh,meshmatcap_vert:Yh,meshmatcap_frag:jh,meshnormal_vert:Kh,meshnormal_frag:Zh,meshphong_vert:$h,meshphong_frag:Jh,meshphysical_vert:Qh,meshphysical_frag:ef,meshtoon_vert:tf,meshtoon_frag:nf,points_vert:rf,points_frag:sf,shadow_vert:af,shadow_frag:of,sprite_vert:lf,sprite_frag:cf},te={common:{diffuse:{value:new Ue(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ce},alphaMap:{value:null},alphaMapTransform:{value:new Ce},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ce}},envmap:{envMap:{value:null},envMapRotation:{value:new Ce},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ce}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ce}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ce},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ce},normalScale:{value:new je(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ce},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ce}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ce}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ce}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ue(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ue(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ce},alphaTest:{value:0},uvTransform:{value:new Ce}},sprite:{diffuse:{value:new Ue(16777215)},opacity:{value:1},center:{value:new je(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ce},alphaMap:{value:null},alphaMapTransform:{value:new Ce},alphaTest:{value:0}}},Gt={basic:{uniforms:_t([te.common,te.specularmap,te.envmap,te.aomap,te.lightmap,te.fog]),vertexShader:Le.meshbasic_vert,fragmentShader:Le.meshbasic_frag},lambert:{uniforms:_t([te.common,te.specularmap,te.envmap,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.fog,te.lights,{emissive:{value:new Ue(0)}}]),vertexShader:Le.meshlambert_vert,fragmentShader:Le.meshlambert_frag},phong:{uniforms:_t([te.common,te.specularmap,te.envmap,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.fog,te.lights,{emissive:{value:new Ue(0)},specular:{value:new Ue(1118481)},shininess:{value:30}}]),vertexShader:Le.meshphong_vert,fragmentShader:Le.meshphong_frag},standard:{uniforms:_t([te.common,te.envmap,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.roughnessmap,te.metalnessmap,te.fog,te.lights,{emissive:{value:new Ue(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Le.meshphysical_vert,fragmentShader:Le.meshphysical_frag},toon:{uniforms:_t([te.common,te.aomap,te.lightmap,te.emissivemap,te.bumpmap,te.normalmap,te.displacementmap,te.gradientmap,te.fog,te.lights,{emissive:{value:new Ue(0)}}]),vertexShader:Le.meshtoon_vert,fragmentShader:Le.meshtoon_frag},matcap:{uniforms:_t([te.common,te.bumpmap,te.normalmap,te.displacementmap,te.fog,{matcap:{value:null}}]),vertexShader:Le.meshmatcap_vert,fragmentShader:Le.meshmatcap_frag},points:{uniforms:_t([te.points,te.fog]),vertexShader:Le.points_vert,fragmentShader:Le.points_frag},dashed:{uniforms:_t([te.common,te.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Le.linedashed_vert,fragmentShader:Le.linedashed_frag},depth:{uniforms:_t([te.common,te.displacementmap]),vertexShader:Le.depth_vert,fragmentShader:Le.depth_frag},normal:{uniforms:_t([te.common,te.bumpmap,te.normalmap,te.displacementmap,{opacity:{value:1}}]),vertexShader:Le.meshnormal_vert,fragmentShader:Le.meshnormal_frag},sprite:{uniforms:_t([te.sprite,te.fog]),vertexShader:Le.sprite_vert,fragmentShader:Le.sprite_frag},background:{uniforms:{uvTransform:{value:new Ce},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Le.background_vert,fragmentShader:Le.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Ce}},vertexShader:Le.backgroundCube_vert,fragmentShader:Le.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Le.cube_vert,fragmentShader:Le.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Le.equirect_vert,fragmentShader:Le.equirect_frag},distanceRGBA:{uniforms:_t([te.common,te.displacementmap,{referencePosition:{value:new N},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Le.distanceRGBA_vert,fragmentShader:Le.distanceRGBA_frag},shadow:{uniforms:_t([te.lights,te.fog,{color:{value:new Ue(0)},opacity:{value:1}}]),vertexShader:Le.shadow_vert,fragmentShader:Le.shadow_frag}};Gt.physical={uniforms:_t([Gt.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ce},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ce},clearcoatNormalScale:{value:new je(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ce},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ce},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ce},sheen:{value:0},sheenColor:{value:new Ue(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ce},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ce},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ce},transmissionSamplerSize:{value:new je},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ce},attenuationDistance:{value:0},attenuationColor:{value:new Ue(0)},specularColor:{value:new Ue(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ce},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ce},anisotropyVector:{value:new je},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ce}}]),vertexShader:Le.meshphysical_vert,fragmentShader:Le.meshphysical_frag};const Zi={r:0,b:0,g:0},Tn=new Xt,uf=new nt;function hf(i,e,t,n,r,s,a){const o=new Ue(0);let l=s===!0?0:1,c,u,h=null,d=0,m=null;function g(T){let S=T.isScene===!0?T.background:null;return S&&S.isTexture&&(S=(T.backgroundBlurriness>0?t:e).get(S)),S}function x(T){let S=!1;const U=g(T);U===null?f(o,l):U&&U.isColor&&(f(U,1),S=!0);const R=i.xr.getEnvironmentBlendMode();R==="additive"?n.buffers.color.setClear(0,0,0,1,a):R==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,a),(i.autoClear||S)&&(n.buffers.depth.setTest(!0),n.buffers.depth.setMask(!0),n.buffers.color.setMask(!0),i.clear(i.autoClearColor,i.autoClearDepth,i.autoClearStencil))}function p(T,S){const U=g(S);U&&(U.isCubeTexture||U.mapping===fr)?(u===void 0&&(u=new zt(new bi(1,1,1),new gn({name:"BackgroundCubeMaterial",uniforms:ai(Gt.backgroundCube.uniforms),vertexShader:Gt.backgroundCube.vertexShader,fragmentShader:Gt.backgroundCube.fragmentShader,side:Mt,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(R,w,I){this.matrixWorld.copyPosition(I.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(u)),Tn.copy(S.backgroundRotation),Tn.x*=-1,Tn.y*=-1,Tn.z*=-1,U.isCubeTexture&&U.isRenderTargetTexture===!1&&(Tn.y*=-1,Tn.z*=-1),u.material.uniforms.envMap.value=U,u.material.uniforms.flipEnvMap.value=U.isCubeTexture&&U.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=S.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=S.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(uf.makeRotationFromEuler(Tn)),u.material.toneMapped=Ge.getTransfer(U.colorSpace)!==Ye,(h!==U||d!==U.version||m!==i.toneMapping)&&(u.material.needsUpdate=!0,h=U,d=U.version,m=i.toneMapping),u.layers.enableAll(),T.unshift(u,u.geometry,u.material,0,0,null)):U&&U.isTexture&&(c===void 0&&(c=new zt(new dr(2,2),new gn({name:"BackgroundMaterial",uniforms:ai(Gt.background.uniforms),vertexShader:Gt.background.vertexShader,fragmentShader:Gt.background.fragmentShader,side:_n,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),Object.defineProperty(c.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(c)),c.material.uniforms.t2D.value=U,c.material.uniforms.backgroundIntensity.value=S.backgroundIntensity,c.material.toneMapped=Ge.getTransfer(U.colorSpace)!==Ye,U.matrixAutoUpdate===!0&&U.updateMatrix(),c.material.uniforms.uvTransform.value.copy(U.matrix),(h!==U||d!==U.version||m!==i.toneMapping)&&(c.material.needsUpdate=!0,h=U,d=U.version,m=i.toneMapping),c.layers.enableAll(),T.unshift(c,c.geometry,c.material,0,0,null))}function f(T,S){T.getRGB(Zi,Io(i)),n.buffers.color.setClear(Zi.r,Zi.g,Zi.b,S,a)}function b(){u!==void 0&&(u.geometry.dispose(),u.material.dispose(),u=void 0),c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0)}return{getClearColor:function(){return o},setClearColor:function(T,S=1){o.set(T),l=S,f(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(T){l=T,f(o,l)},render:x,addToRenderList:p,dispose:b}}function ff(i,e){const t=i.getParameter(i.MAX_VERTEX_ATTRIBS),n={},r=d(null);let s=r,a=!1;function o(M,C,k,z,j){let K=!1;const X=h(z,k,C);s!==X&&(s=X,c(s.object)),K=m(M,z,k,j),K&&g(M,z,k,j),j!==null&&e.update(j,i.ELEMENT_ARRAY_BUFFER),(K||a)&&(a=!1,S(M,C,k,z),j!==null&&i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,e.get(j).buffer))}function l(){return i.createVertexArray()}function c(M){return i.bindVertexArray(M)}function u(M){return i.deleteVertexArray(M)}function h(M,C,k){const z=k.wireframe===!0;let j=n[M.id];j===void 0&&(j={},n[M.id]=j);let K=j[C.id];K===void 0&&(K={},j[C.id]=K);let X=K[z];return X===void 0&&(X=d(l()),K[z]=X),X}function d(M){const C=[],k=[],z=[];for(let j=0;j=0){const ue=j[V];let ve=K[V];if(ve===void 0&&(V==="instanceMatrix"&&M.instanceMatrix&&(ve=M.instanceMatrix),V==="instanceColor"&&M.instanceColor&&(ve=M.instanceColor)),ue===void 0||ue.attribute!==ve||ve&&ue.data!==ve.data)return!0;X++}return s.attributesNum!==X||s.index!==z}function g(M,C,k,z){const j={},K=C.attributes;let X=0;const $=k.getAttributes();for(const V in $)if($[V].location>=0){let ue=K[V];ue===void 0&&(V==="instanceMatrix"&&M.instanceMatrix&&(ue=M.instanceMatrix),V==="instanceColor"&&M.instanceColor&&(ue=M.instanceColor));const ve={};ve.attribute=ue,ue&&ue.data&&(ve.data=ue.data),j[V]=ve,X++}s.attributes=j,s.attributesNum=X,s.index=z}function x(){const M=s.newAttributes;for(let C=0,k=M.length;C=0){let re=j[$];if(re===void 0&&($==="instanceMatrix"&&M.instanceMatrix&&(re=M.instanceMatrix),$==="instanceColor"&&M.instanceColor&&(re=M.instanceColor)),re!==void 0){const ue=re.normalized,ve=re.itemSize,De=e.get(re);if(De===void 0)continue;const Ke=De.buffer,W=De.type,ee=De.bytesPerElement,me=W===i.INT||W===i.UNSIGNED_INT||re.gpuType===Vs;if(re.isInterleavedBufferAttribute){const se=re.data,Ee=se.stride,ke=re.offset;if(se.isInstancedInterleavedBuffer){for(let Te=0;Te0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.HIGH_FLOAT).precision>0)return"highp";w="mediump"}return w==="mediump"&&i.getShaderPrecisionFormat(i.VERTEX_SHADER,i.MEDIUM_FLOAT).precision>0&&i.getShaderPrecisionFormat(i.FRAGMENT_SHADER,i.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp";const u=l(c);u!==c&&(console.warn("THREE.WebGLRenderer:",c,"not supported, using",u,"instead."),c=u);const h=t.logarithmicDepthBuffer===!0,d=t.reverseDepthBuffer===!0&&e.has("EXT_clip_control"),m=i.getParameter(i.MAX_TEXTURE_IMAGE_UNITS),g=i.getParameter(i.MAX_VERTEX_TEXTURE_IMAGE_UNITS),x=i.getParameter(i.MAX_TEXTURE_SIZE),p=i.getParameter(i.MAX_CUBE_MAP_TEXTURE_SIZE),f=i.getParameter(i.MAX_VERTEX_ATTRIBS),b=i.getParameter(i.MAX_VERTEX_UNIFORM_VECTORS),T=i.getParameter(i.MAX_VARYING_VECTORS),S=i.getParameter(i.MAX_FRAGMENT_UNIFORM_VECTORS),U=g>0,R=i.getParameter(i.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:h,reverseDepthBuffer:d,maxTextures:m,maxVertexTextures:g,maxTextureSize:x,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:b,maxVaryings:T,maxFragmentUniforms:S,vertexTextures:U,maxSamples:R}}function mf(i){const e=this;let t=null,n=0,r=!1,s=!1;const a=new Rn,o=new Ce,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(h,d){const m=h.length!==0||d||n!==0||r;return r=d,n=h.length,m},this.beginShadows=function(){s=!0,u(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(h,d){t=u(h,d,0)},this.setState=function(h,d,m){const g=h.clippingPlanes,x=h.clipIntersection,p=h.clipShadows,f=i.get(h);if(!r||g===null||g.length===0||s&&!p)s?u(null):c();else{const b=s?0:n,T=b*4;let S=f.clippingState||null;l.value=S,S=u(g,d,T,m);for(let U=0;U!==T;++U)S[U]=t[U];f.clippingState=S,this.numIntersection=x?this.numPlanes:0,this.numPlanes+=b}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=n>0),e.numPlanes=n,e.numIntersection=0}function u(h,d,m,g){const x=h!==null?h.length:0;let p=null;if(x!==0){if(p=l.value,g!==!0||p===null){const f=m+x*4,b=d.matrixWorldInverse;o.getNormalMatrix(b),(p===null||p.length0){const c=new hc(l.height);return c.fromEquirectangularTexture(i,a),e.set(a,c),a.addEventListener("dispose",r),t(c.texture,a.mapping)}else return null}}return a}function r(a){const o=a.target;o.removeEventListener("dispose",r);const l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function s(){e=new WeakMap}return{get:n,dispose:s}}const Zn=4,Ba=[.125,.215,.35,.446,.526,.582],Pn=20,Wr=new Ac,za=new Ue;let Xr=null,qr=0,Yr=0,jr=!1;const wn=(1+Math.sqrt(5))/2,Kn=1/wn,Ha=[new N(-wn,Kn,0),new N(wn,Kn,0),new N(-Kn,0,wn),new N(Kn,0,wn),new N(0,wn,-Kn),new N(0,wn,Kn),new N(-1,1,-1),new N(1,1,-1),new N(-1,1,1),new N(1,1,1)],gf=new N;class Va{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,r=100,s={}){const{size:a=256,position:o=gf}=s;Xr=this._renderer.getRenderTarget(),qr=this._renderer.getActiveCubeFace(),Yr=this._renderer.getActiveMipmapLevel(),jr=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,n,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Wa(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=ka(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?S:0,S,S),h.setRenderTarget(r),p&&h.render(x,l),h.render(e,l)}x.geometry.dispose(),x.material.dispose(),h.toneMapping=m,h.autoClear=d,e.background=f}_textureToCubeUV(e,t){const n=this._renderer,r=e.mapping===ti||e.mapping===ni;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=Wa()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=ka());const s=r?this._cubemapMaterial:this._equirectMaterial,a=new zt(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=e;const l=this._cubeSize;$i(t,0,0,3*l,2*l),n.setRenderTarget(t),n.render(a,Wr)}_applyPMREM(e){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let s=1;sPn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${Pn}`);const f=[];let b=0;for(let w=0;wT-Zn?r-T+Zn:0),R=4*(this._cubeSize-S);$i(t,U,R,3*S,2*S),l.setRenderTarget(t),l.render(h,Wr)}}function vf(i){const e=[],t=[],n=[];let r=i;const s=i-Zn+1+Ba.length;for(let a=0;ai-Zn?l=Ba[a-i+Zn-1]:a===0&&(l=0),n.push(l);const c=1/(o-2),u=-c,h=1+c,d=[u,u,h,u,h,h,u,u,h,h,u,h],m=6,g=6,x=3,p=2,f=1,b=new Float32Array(x*g*m),T=new Float32Array(p*g*m),S=new Float32Array(f*g*m);for(let R=0;R2?0:-1,E=[w,I,0,w+2/3,I,0,w+2/3,I+1,0,w,I,0,w+2/3,I+1,0,w,I+1,0];b.set(E,x*g*R),T.set(d,p*g*R);const M=[R,R,R,R,R,R];S.set(M,f*g*R)}const U=new Vt;U.setAttribute("position",new Wt(b,x)),U.setAttribute("uv",new Wt(T,p)),U.setAttribute("faceIndex",new Wt(S,f)),e.push(U),r>Zn&&r--}return{lodPlanes:e,sizeLods:t,sigmas:n}}function Ga(i,e,t){const n=new In(i,e,t);return n.texture.mapping=fr,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function $i(i,e,t,n,r){i.viewport.set(e,t,n,r),i.scissor.set(e,t,n,r)}function xf(i,e,t){const n=new Float32Array(Pn),r=new N(0,1,0);return new gn({name:"SphericalGaussianBlur",defines:{n:Pn,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${i}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:Zs(),fragmentShader:` precision mediump float; precision mediump int; @@ -3631,7 +3631,7 @@ void main() { } } - `,blending:cn,depthTest:!1,depthWrite:!1})}function ga(){return new fn({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Us(),fragmentShader:` + `,blending:pn,depthTest:!1,depthWrite:!1})}function ka(){return new gn({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Zs(),fragmentShader:` precision mediump float; precision mediump int; @@ -3650,7 +3650,7 @@ void main() { gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:cn,depthTest:!1,depthWrite:!1})}function va(){return new fn({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Us(),fragmentShader:` + `,blending:pn,depthTest:!1,depthWrite:!1})}function Wa(){return new gn({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Zs(),fragmentShader:` precision mediump float; precision mediump int; @@ -3666,7 +3666,7 @@ void main() { gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } - `,blending:cn,depthTest:!1,depthWrite:!1})}function Us(){return` + `,blending:pn,depthTest:!1,depthWrite:!1})}function Zs(){return` precision mediump float; precision mediump int; @@ -3721,17 +3721,17 @@ void main() { gl_Position = vec4( position, 1.0 ); } - `}function Oh(i){let e=new WeakMap,t=null;function n(o){if(o&&o.isTexture){const l=o.mapping,c=l===Wr||l===Xr,h=l===Jn||l===Qn;if(c||h){let f=e.get(o);const d=f!==void 0?f.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==d)return t===null&&(t=new ma(i)),f=c?t.fromEquirectangular(o,f):t.fromCubemap(o,f),f.texture.pmremVersion=o.pmremVersion,e.set(o,f),f.texture;if(f!==void 0)return f.texture;{const m=o.image;return c&&m&&m.height>0||h&&m&&r(m)?(t===null&&(t=new ma(i)),f=c?t.fromEquirectangular(o):t.fromCubemap(o),f.texture.pmremVersion=o.pmremVersion,e.set(o,f),o.addEventListener("dispose",s),f.texture):null}}}return o}function r(o){let l=0;const c=6;for(let h=0;he.maxTextureSize&&(D=Math.ceil(U/e.maxTextureSize),U=e.maxTextureSize);const R=new Float32Array(U*D*4*f),I=new ja(R,U,D,f);I.type=$t,I.needsUpdate=!0;const S=T*4;for(let w=0;w0)return i;const r=e*t;let s=Ma[r];if(s===void 0&&(s=new Float32Array(r),Ma[r]=s),e!==0){n.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,i[a].toArray(s,o)}return s}function ot(i,e){if(i.length!==e.length)return!1;for(let t=0,n=i.length;t0||u&&m&&r(m)?(t===null&&(t=new Va(i)),h=c?t.fromEquirectangular(o):t.fromCubemap(o),h.texture.pmremVersion=o.pmremVersion,e.set(o,h),o.addEventListener("dispose",s),h.texture):null}}}return o}function r(o){let l=0;const c=6;for(let u=0;ue.maxTextureSize&&(R=Math.ceil(U/e.maxTextureSize),U=e.maxTextureSize);const w=new Float32Array(U*R*4*h),I=new wo(w,U,R,h);I.type=tn,I.needsUpdate=!0;const E=S*4;for(let C=0;C0)return i;const r=e*t;let s=qa[r];if(s===void 0&&(s=new Float32Array(r),qa[r]=s),e!==0){n.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,i[a].toArray(s,o)}return s}function ot(i,e){if(i.length!==e.length)return!1;for(let t=0,n=i.length;t":" "} ${o}: ${t[a]}`)}return n.join(` -`)}const Ra=new Ce;function Bf(i){Ve._getMatrix(Ra,Ve.workingColorSpace,i);const e=`mat3( ${Ra.elements.map(t=>t.toFixed(4))} )`;switch(Ve.getTransfer(i)){case Zi:return[e,"LinearTransferOETF"];case qe:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",i),[e,"LinearTransferOETF"]}}function wa(i,e,t){const n=i.getShaderParameter(e,i.COMPILE_STATUS),r=i.getShaderInfoLog(e).trim();if(n&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const a=parseInt(s[1]);return t.toUpperCase()+` +`)}const Qa=new Ce;function Md(i){Ge._getMatrix(Qa,Ge.workingColorSpace,i);const e=`mat3( ${Qa.elements.map(t=>t.toFixed(4))} )`;switch(Ge.getTransfer(i)){case or:return[e,"LinearTransferOETF"];case Ye:return[e,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",i),[e,"LinearTransferOETF"]}}function eo(i,e,t){const n=i.getShaderParameter(e,i.COMPILE_STATUS),r=i.getShaderInfoLog(e).trim();if(n&&r==="")return"";const s=/ERROR: 0:(\d+)/.exec(r);if(s){const a=parseInt(s[1]);return t.toUpperCase()+` `+r+` -`+Of(i.getShaderSource(e),a)}else return r}function zf(i,e){const t=Bf(e);return[`vec4 ${i}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` -`)}function Hf(i,e){let t;switch(e){case Wo:t="Linear";break;case Xo:t="Reinhard";break;case qo:t="Cineon";break;case Yo:t="ACESFilmic";break;case Zo:t="AgX";break;case $o:t="Neutral";break;case Ko:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),t="Linear"}return"vec3 "+i+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}const Gi=new B;function Vf(){Ve.getLuminanceCoefficients(Gi);const i=Gi.x.toFixed(4),e=Gi.y.toFixed(4),t=Gi.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${i}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` -`)}function Gf(i){return[i.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",i.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(di).join(` -`)}function kf(i){const e=[];for(const t in i){const n=i[t];n!==!1&&e.push("#define "+t+" "+n)}return e.join(` -`)}function Wf(i,e){const t={},n=i.getProgramParameter(e,i.ACTIVE_ATTRIBUTES);for(let r=0;r/gm;function Ss(i){return i.replace(Xf,Yf)}const qf=new Map;function Yf(i,e){let t=De[e];if(t===void 0){const n=qf.get(e);if(n!==void 0)t=De[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return Ss(t)}const Kf=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Da(i){return i.replace(Kf,Zf)}function Zf(i,e,t,n){let r="";for(let s=parseInt(e);s/gm;function Bs(i){return i.replace(Rd,Cd)}const wd=new Map;function Cd(i,e){let t=Le[e];if(t===void 0){const n=wd.get(e);if(n!==void 0)t=Le[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,n);else throw new Error("Can not resolve #include <"+e+">")}return Bs(t)}const Pd=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function io(i){return i.replace(Pd,Ld)}function Ld(i,e,t,n){let r="";for(let s=parseInt(e);s0&&(p+=` -`),u=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,v].filter(di).join(` -`),u.length>0&&(u+=` -`)):(p=[La(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,v,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+h:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` -`].filter(di).join(` -`),u=[La(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,v,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+h:"",t.envMap?"#define "+f:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==un?"#define TONE_MAPPING":"",t.toneMapping!==un?De.tonemapping_pars_fragment:"",t.toneMapping!==un?Hf("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",De.colorspace_pars_fragment,zf("linearToOutputTexel",t.outputColorSpace),Vf(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` -`].filter(di).join(` -`)),a=Ss(a),a=Ca(a,t),a=Pa(a,t),o=Ss(o),o=Ca(o,t),o=Pa(o,t),a=Da(a),o=Da(o),t.isRawShaderMaterial!==!0&&(b=`#version 300 es +`),f=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g].filter(vi).join(` +`),f.length>0&&(f+=` +`)):(p=[ro(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.batchingColor?"#define USE_BATCHING_COLOR":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+u:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",` +`].filter(vi).join(` +`),f=[ro(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,g,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+c:"",t.envMap?"#define "+u:"",t.envMap?"#define "+h:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor||t.batchingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+l:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",t.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==mn?"#define TONE_MAPPING":"",t.toneMapping!==mn?Le.tonemapping_pars_fragment:"",t.toneMapping!==mn?Ed("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",Le.colorspace_pars_fragment,Sd("linearToOutputTexel",t.outputColorSpace),yd(),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",` +`].filter(vi).join(` +`)),a=Bs(a),a=to(a,t),a=no(a,t),o=Bs(o),o=to(o,t),o=no(o,t),a=io(a),o=io(o),t.isRawShaderMaterial!==!0&&(b=`#version 300 es `,p=[m,"#define attribute in","#define varying out","#define texture2D texture"].join(` `)+` -`+p,u=["#define varying in",t.glslVersion===Ys?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===Ys?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` +`+p,f=["#define varying in",t.glslVersion===ha?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===ha?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(` `)+` -`+u);const y=b+p+a,T=b+u+o,U=ba(r,r.VERTEX_SHADER,y),D=ba(r,r.FRAGMENT_SHADER,T);r.attachShader(M,U),r.attachShader(M,D),t.index0AttributeName!==void 0?r.bindAttribLocation(M,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(M,0,"position"),r.linkProgram(M);function R(w){if(i.debug.checkShaderErrors){const k=r.getProgramInfoLog(M).trim(),z=r.getShaderInfoLog(U).trim(),K=r.getShaderInfoLog(D).trim();let Z=!0,X=!0;if(r.getProgramParameter(M,r.LINK_STATUS)===!1)if(Z=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(r,M,U,D);else{const j=wa(r,U,"vertex"),V=wa(r,D,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(M,r.VALIDATE_STATUS)+` +`+f);const T=b+p+a,S=b+f+o,U=Ja(r,r.VERTEX_SHADER,T),R=Ja(r,r.FRAGMENT_SHADER,S);r.attachShader(x,U),r.attachShader(x,R),t.index0AttributeName!==void 0?r.bindAttribLocation(x,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(x,0,"position"),r.linkProgram(x);function w(C){if(i.debug.checkShaderErrors){const k=r.getProgramInfoLog(x).trim(),z=r.getShaderInfoLog(U).trim(),j=r.getShaderInfoLog(R).trim();let K=!0,X=!0;if(r.getProgramParameter(x,r.LINK_STATUS)===!1)if(K=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(r,x,U,R);else{const $=eo(r,U,"vertex"),V=eo(r,R,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(x,r.VALIDATE_STATUS)+` -Material Name: `+w.name+` -Material Type: `+w.type+` +Material Name: `+C.name+` +Material Type: `+C.type+` Program Info Log: `+k+` -`+j+` -`+V)}else k!==""?console.warn("THREE.WebGLProgram: Program Info Log:",k):(z===""||K==="")&&(X=!1);X&&(w.diagnostics={runnable:Z,programLog:k,vertexShader:{log:z,prefix:p},fragmentShader:{log:K,prefix:u}})}r.deleteShader(U),r.deleteShader(D),I=new Ki(r,M),S=Wf(r,M)}let I;this.getUniforms=function(){return I===void 0&&R(this),I};let S;this.getAttributes=function(){return S===void 0&&R(this),S};let x=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return x===!1&&(x=r.getProgramParameter(M,Nf)),x},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(M),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=Ff++,this.cacheKey=e,this.usedTimes=1,this.program=M,this.vertexShader=U,this.fragmentShader=D,this}let nd=0;class id{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new rd(e),t.set(e,n)),n}}class rd{constructor(e){this.id=nd++,this.code=e,this.usedTimes=0}}function sd(i,e,t,n,r,s,a){const o=new Ja,l=new id,c=new Set,h=[],f=r.logarithmicDepthBuffer,d=r.vertexTextures;let m=r.precision;const v={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function M(S){return c.add(S),S===0?"uv":`uv${S}`}function p(S,x,w,k,z){const K=k.fog,Z=z.geometry,X=S.isMeshStandardMaterial?k.environment:null,j=(S.isMeshStandardMaterial?t:e).get(S.envMap||X),V=j&&j.mapping===Ji?j.image.height:null,re=v[S.type];S.precision!==null&&(m=r.getMaxPrecision(S.precision),m!==S.precision&&console.warn("THREE.WebGLProgram.getParameters:",S.precision,"not supported, using",m,"instead."));const ue=Z.morphAttributes.position||Z.morphAttributes.normal||Z.morphAttributes.color,ve=ue!==void 0?ue.length:0;let Le=0;Z.morphAttributes.position!==void 0&&(Le=1),Z.morphAttributes.normal!==void 0&&(Le=2),Z.morphAttributes.color!==void 0&&(Le=3);let Ke,W,ee,me;if(re){const Xe=Bt[re];Ke=Xe.vertexShader,W=Xe.fragmentShader}else Ke=S.vertexShader,W=S.fragmentShader,l.update(S),ee=l.getVertexShaderID(S),me=l.getFragmentShaderID(S);const se=i.getRenderTarget(),Ee=i.state.buffers.depth.getReversed(),Ge=z.isInstancedMesh===!0,ye=z.isBatchedMesh===!0,nt=!!S.map,Qe=!!S.matcap,Ie=!!j,A=!!S.aoMap,yt=!!S.lightMap,Ne=!!S.bumpMap,Fe=!!S.normalMap,xe=!!S.displacementMap,je=!!S.emissiveMap,ge=!!S.metalnessMap,E=!!S.roughnessMap,_=S.anisotropy>0,N=S.clearcoat>0,q=S.dispersion>0,$=S.iridescence>0,G=S.sheen>0,_e=S.transmission>0,ae=_&&!!S.anisotropyMap,he=N&&!!S.clearcoatMap,Be=N&&!!S.clearcoatNormalMap,Q=N&&!!S.clearcoatRoughnessMap,fe=$&&!!S.iridescenceMap,Te=$&&!!S.iridescenceThicknessMap,Ae=G&&!!S.sheenColorMap,de=G&&!!S.sheenRoughnessMap,Oe=!!S.specularMap,Pe=!!S.specularColorMap,$e=!!S.specularIntensityMap,C=_e&&!!S.transmissionMap,ne=_e&&!!S.thicknessMap,H=!!S.gradientMap,Y=!!S.alphaMap,le=S.alphaTest>0,oe=!!S.alphaHash,we=!!S.extensions;let et=un;S.toneMapped&&(se===null||se.isXRRenderTarget===!0)&&(et=i.toneMapping);const ht={shaderID:re,shaderType:S.type,shaderName:S.name,vertexShader:Ke,fragmentShader:W,defines:S.defines,customVertexShaderID:ee,customFragmentShaderID:me,isRawShaderMaterial:S.isRawShaderMaterial===!0,glslVersion:S.glslVersion,precision:m,batching:ye,batchingColor:ye&&z._colorsTexture!==null,instancing:Ge,instancingColor:Ge&&z.instanceColor!==null,instancingMorph:Ge&&z.morphTexture!==null,supportsVertexTextures:d,outputColorSpace:se===null?i.outputColorSpace:se.isXRRenderTarget===!0?se.texture.colorSpace:ni,alphaToCoverage:!!S.alphaToCoverage,map:nt,matcap:Qe,envMap:Ie,envMapMode:Ie&&j.mapping,envMapCubeUVHeight:V,aoMap:A,lightMap:yt,bumpMap:Ne,normalMap:Fe,displacementMap:d&&xe,emissiveMap:je,normalMapObjectSpace:Fe&&S.normalMapType===tl,normalMapTangentSpace:Fe&&S.normalMapType===el,metalnessMap:ge,roughnessMap:E,anisotropy:_,anisotropyMap:ae,clearcoat:N,clearcoatMap:he,clearcoatNormalMap:Be,clearcoatRoughnessMap:Q,dispersion:q,iridescence:$,iridescenceMap:fe,iridescenceThicknessMap:Te,sheen:G,sheenColorMap:Ae,sheenRoughnessMap:de,specularMap:Oe,specularColorMap:Pe,specularIntensityMap:$e,transmission:_e,transmissionMap:C,thicknessMap:ne,gradientMap:H,opaque:S.transparent===!1&&S.blending===Kn&&S.alphaToCoverage===!1,alphaMap:Y,alphaTest:le,alphaHash:oe,combine:S.combine,mapUv:nt&&M(S.map.channel),aoMapUv:A&&M(S.aoMap.channel),lightMapUv:yt&&M(S.lightMap.channel),bumpMapUv:Ne&&M(S.bumpMap.channel),normalMapUv:Fe&&M(S.normalMap.channel),displacementMapUv:xe&&M(S.displacementMap.channel),emissiveMapUv:je&&M(S.emissiveMap.channel),metalnessMapUv:ge&&M(S.metalnessMap.channel),roughnessMapUv:E&&M(S.roughnessMap.channel),anisotropyMapUv:ae&&M(S.anisotropyMap.channel),clearcoatMapUv:he&&M(S.clearcoatMap.channel),clearcoatNormalMapUv:Be&&M(S.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Q&&M(S.clearcoatRoughnessMap.channel),iridescenceMapUv:fe&&M(S.iridescenceMap.channel),iridescenceThicknessMapUv:Te&&M(S.iridescenceThicknessMap.channel),sheenColorMapUv:Ae&&M(S.sheenColorMap.channel),sheenRoughnessMapUv:de&&M(S.sheenRoughnessMap.channel),specularMapUv:Oe&&M(S.specularMap.channel),specularColorMapUv:Pe&&M(S.specularColorMap.channel),specularIntensityMapUv:$e&&M(S.specularIntensityMap.channel),transmissionMapUv:C&&M(S.transmissionMap.channel),thicknessMapUv:ne&&M(S.thicknessMap.channel),alphaMapUv:Y&&M(S.alphaMap.channel),vertexTangents:!!Z.attributes.tangent&&(Fe||_),vertexColors:S.vertexColors,vertexAlphas:S.vertexColors===!0&&!!Z.attributes.color&&Z.attributes.color.itemSize===4,pointsUvs:z.isPoints===!0&&!!Z.attributes.uv&&(nt||Y),fog:!!K,useFog:S.fog===!0,fogExp2:!!K&&K.isFogExp2,flatShading:S.flatShading===!0,sizeAttenuation:S.sizeAttenuation===!0,logarithmicDepthBuffer:f,reverseDepthBuffer:Ee,skinning:z.isSkinnedMesh===!0,morphTargets:Z.morphAttributes.position!==void 0,morphNormals:Z.morphAttributes.normal!==void 0,morphColors:Z.morphAttributes.color!==void 0,morphTargetsCount:ve,morphTextureStride:Le,numDirLights:x.directional.length,numPointLights:x.point.length,numSpotLights:x.spot.length,numSpotLightMaps:x.spotLightMap.length,numRectAreaLights:x.rectArea.length,numHemiLights:x.hemi.length,numDirLightShadows:x.directionalShadowMap.length,numPointLightShadows:x.pointShadowMap.length,numSpotLightShadows:x.spotShadowMap.length,numSpotLightShadowsWithMaps:x.numSpotLightShadowsWithMaps,numLightProbes:x.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:S.dithering,shadowMapEnabled:i.shadowMap.enabled&&w.length>0,shadowMapType:i.shadowMap.type,toneMapping:et,decodeVideoTexture:nt&&S.map.isVideoTexture===!0&&Ve.getTransfer(S.map.colorSpace)===qe,decodeVideoTextureEmissive:je&&S.emissiveMap.isVideoTexture===!0&&Ve.getTransfer(S.emissiveMap.colorSpace)===qe,premultipliedAlpha:S.premultipliedAlpha,doubleSided:S.side===Zt,flipSided:S.side===vt,useDepthPacking:S.depthPacking>=0,depthPacking:S.depthPacking||0,index0AttributeName:S.index0AttributeName,extensionClipCullDistance:we&&S.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(we&&S.extensions.multiDraw===!0||ye)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:S.customProgramCacheKey()};return ht.vertexUv1s=c.has(1),ht.vertexUv2s=c.has(2),ht.vertexUv3s=c.has(3),c.clear(),ht}function u(S){const x=[];if(S.shaderID?x.push(S.shaderID):(x.push(S.customVertexShaderID),x.push(S.customFragmentShaderID)),S.defines!==void 0)for(const w in S.defines)x.push(w),x.push(S.defines[w]);return S.isRawShaderMaterial===!1&&(b(x,S),y(x,S),x.push(i.outputColorSpace)),x.push(S.customProgramCacheKey),x.join()}function b(S,x){S.push(x.precision),S.push(x.outputColorSpace),S.push(x.envMapMode),S.push(x.envMapCubeUVHeight),S.push(x.mapUv),S.push(x.alphaMapUv),S.push(x.lightMapUv),S.push(x.aoMapUv),S.push(x.bumpMapUv),S.push(x.normalMapUv),S.push(x.displacementMapUv),S.push(x.emissiveMapUv),S.push(x.metalnessMapUv),S.push(x.roughnessMapUv),S.push(x.anisotropyMapUv),S.push(x.clearcoatMapUv),S.push(x.clearcoatNormalMapUv),S.push(x.clearcoatRoughnessMapUv),S.push(x.iridescenceMapUv),S.push(x.iridescenceThicknessMapUv),S.push(x.sheenColorMapUv),S.push(x.sheenRoughnessMapUv),S.push(x.specularMapUv),S.push(x.specularColorMapUv),S.push(x.specularIntensityMapUv),S.push(x.transmissionMapUv),S.push(x.thicknessMapUv),S.push(x.combine),S.push(x.fogExp2),S.push(x.sizeAttenuation),S.push(x.morphTargetsCount),S.push(x.morphAttributeCount),S.push(x.numDirLights),S.push(x.numPointLights),S.push(x.numSpotLights),S.push(x.numSpotLightMaps),S.push(x.numHemiLights),S.push(x.numRectAreaLights),S.push(x.numDirLightShadows),S.push(x.numPointLightShadows),S.push(x.numSpotLightShadows),S.push(x.numSpotLightShadowsWithMaps),S.push(x.numLightProbes),S.push(x.shadowMapType),S.push(x.toneMapping),S.push(x.numClippingPlanes),S.push(x.numClipIntersection),S.push(x.depthPacking)}function y(S,x){o.disableAll(),x.supportsVertexTextures&&o.enable(0),x.instancing&&o.enable(1),x.instancingColor&&o.enable(2),x.instancingMorph&&o.enable(3),x.matcap&&o.enable(4),x.envMap&&o.enable(5),x.normalMapObjectSpace&&o.enable(6),x.normalMapTangentSpace&&o.enable(7),x.clearcoat&&o.enable(8),x.iridescence&&o.enable(9),x.alphaTest&&o.enable(10),x.vertexColors&&o.enable(11),x.vertexAlphas&&o.enable(12),x.vertexUv1s&&o.enable(13),x.vertexUv2s&&o.enable(14),x.vertexUv3s&&o.enable(15),x.vertexTangents&&o.enable(16),x.anisotropy&&o.enable(17),x.alphaHash&&o.enable(18),x.batching&&o.enable(19),x.dispersion&&o.enable(20),x.batchingColor&&o.enable(21),S.push(o.mask),o.disableAll(),x.fog&&o.enable(0),x.useFog&&o.enable(1),x.flatShading&&o.enable(2),x.logarithmicDepthBuffer&&o.enable(3),x.reverseDepthBuffer&&o.enable(4),x.skinning&&o.enable(5),x.morphTargets&&o.enable(6),x.morphNormals&&o.enable(7),x.morphColors&&o.enable(8),x.premultipliedAlpha&&o.enable(9),x.shadowMapEnabled&&o.enable(10),x.doubleSided&&o.enable(11),x.flipSided&&o.enable(12),x.useDepthPacking&&o.enable(13),x.dithering&&o.enable(14),x.transmission&&o.enable(15),x.sheen&&o.enable(16),x.opaque&&o.enable(17),x.pointsUvs&&o.enable(18),x.decodeVideoTexture&&o.enable(19),x.decodeVideoTextureEmissive&&o.enable(20),x.alphaToCoverage&&o.enable(21),S.push(o.mask)}function T(S){const x=v[S.type];let w;if(x){const k=Bt[x];w=Ul.clone(k.uniforms)}else w=S.uniforms;return w}function U(S,x){let w;for(let k=0,z=h.length;k0?n.push(u):m.transparent===!0?r.push(u):t.push(u)}function l(f,d,m,v,M,p){const u=a(f,d,m,v,M,p);m.transmission>0?n.unshift(u):m.transparent===!0?r.unshift(u):t.unshift(u)}function c(f,d){t.length>1&&t.sort(f||od),n.length>1&&n.sort(d||Ua),r.length>1&&r.sort(d||Ua)}function h(){for(let f=e,d=i.length;f=s.length?(a=new Ia,s.push(a)):a=s[r],a}function t(){i=new WeakMap}return{get:e,dispose:t}}function cd(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new B,color:new Ye};break;case"SpotLight":t={position:new B,direction:new B,color:new Ye,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new B,color:new Ye,distance:0,decay:0};break;case"HemisphereLight":t={direction:new B,skyColor:new Ye,groundColor:new Ye};break;case"RectAreaLight":t={color:new Ye,position:new B,halfWidth:new B,halfHeight:new B};break}return i[e.id]=t,t}}}function ud(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ze};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ze};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ze,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[e.id]=t,t}}}let hd=0;function fd(i,e){return(e.castShadow?2:0)-(i.castShadow?2:0)+(e.map?1:0)-(i.map?1:0)}function dd(i){const e=new cd,t=ud(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new B);const r=new B,s=new at,a=new at;function o(c){let h=0,f=0,d=0;for(let S=0;S<9;S++)n.probe[S].set(0,0,0);let m=0,v=0,M=0,p=0,u=0,b=0,y=0,T=0,U=0,D=0,R=0;c.sort(fd);for(let S=0,x=c.length;S0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=te.LTC_FLOAT_1,n.rectAreaLTC2=te.LTC_FLOAT_2):(n.rectAreaLTC1=te.LTC_HALF_1,n.rectAreaLTC2=te.LTC_HALF_2)),n.ambient[0]=h,n.ambient[1]=f,n.ambient[2]=d;const I=n.hash;(I.directionalLength!==m||I.pointLength!==v||I.spotLength!==M||I.rectAreaLength!==p||I.hemiLength!==u||I.numDirectionalShadows!==b||I.numPointShadows!==y||I.numSpotShadows!==T||I.numSpotMaps!==U||I.numLightProbes!==R)&&(n.directional.length=m,n.spot.length=M,n.rectArea.length=p,n.point.length=v,n.hemi.length=u,n.directionalShadow.length=b,n.directionalShadowMap.length=b,n.pointShadow.length=y,n.pointShadowMap.length=y,n.spotShadow.length=T,n.spotShadowMap.length=T,n.directionalShadowMatrix.length=b,n.pointShadowMatrix.length=y,n.spotLightMatrix.length=T+U-D,n.spotLightMap.length=U,n.numSpotLightShadowsWithMaps=D,n.numLightProbes=R,I.directionalLength=m,I.pointLength=v,I.spotLength=M,I.rectAreaLength=p,I.hemiLength=u,I.numDirectionalShadows=b,I.numPointShadows=y,I.numSpotShadows=T,I.numSpotMaps=U,I.numLightProbes=R,n.version=hd++)}function l(c,h){let f=0,d=0,m=0,v=0,M=0;const p=h.matrixWorldInverse;for(let u=0,b=c.length;u=a.length?(o=new Na(i),a.push(o)):o=a[s],o}function n(){e=new WeakMap}return{get:t,dispose:n}}const md=`void main() { +`+$+` +`+V)}else k!==""?console.warn("THREE.WebGLProgram: Program Info Log:",k):(z===""||j==="")&&(X=!1);X&&(C.diagnostics={runnable:K,programLog:k,vertexShader:{log:z,prefix:p},fragmentShader:{log:j,prefix:f}})}r.deleteShader(U),r.deleteShader(R),I=new ar(r,x),E=Ad(r,x)}let I;this.getUniforms=function(){return I===void 0&&w(this),I};let E;this.getAttributes=function(){return E===void 0&&w(this),E};let M=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return M===!1&&(M=r.getProgramParameter(x,gd)),M},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(x),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=vd++,this.cacheKey=e,this.usedTimes=1,this.program=x,this.vertexShader=U,this.fragmentShader=R,this}let Bd=0;class zd{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){const t=e.vertexShader,n=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){const t=this.materialCache.get(e);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){const t=this.materialCache;let n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){const t=this.shaderCache;let n=t.get(e);return n===void 0&&(n=new Hd(e),t.set(e,n)),n}}class Hd{constructor(e){this.id=Bd++,this.code=e,this.usedTimes=0}}function Vd(i,e,t,n,r,s,a){const o=new Co,l=new zd,c=new Set,u=[],h=r.logarithmicDepthBuffer,d=r.vertexTextures;let m=r.precision;const g={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function x(E){return c.add(E),E===0?"uv":`uv${E}`}function p(E,M,C,k,z){const j=k.fog,K=z.geometry,X=E.isMeshStandardMaterial?k.environment:null,$=(E.isMeshStandardMaterial?t:e).get(E.envMap||X),V=$&&$.mapping===fr?$.image.height:null,re=g[E.type];E.precision!==null&&(m=r.getMaxPrecision(E.precision),m!==E.precision&&console.warn("THREE.WebGLProgram.getParameters:",E.precision,"not supported, using",m,"instead."));const ue=K.morphAttributes.position||K.morphAttributes.normal||K.morphAttributes.color,ve=ue!==void 0?ue.length:0;let De=0;K.morphAttributes.position!==void 0&&(De=1),K.morphAttributes.normal!==void 0&&(De=2),K.morphAttributes.color!==void 0&&(De=3);let Ke,W,ee,me;if(re){const qe=Gt[re];Ke=qe.vertexShader,W=qe.fragmentShader}else Ke=E.vertexShader,W=E.fragmentShader,l.update(E),ee=l.getVertexShaderID(E),me=l.getFragmentShaderID(E);const se=i.getRenderTarget(),Ee=i.state.buffers.depth.getReversed(),ke=z.isInstancedMesh===!0,Te=z.isBatchedMesh===!0,it=!!E.map,Qe=!!E.matcap,Ne=!!$,A=!!E.aoMap,At=!!E.lightMap,Fe=!!E.bumpMap,Oe=!!E.normalMap,xe=!!E.displacementMap,$e=!!E.emissiveMap,ge=!!E.metalnessMap,y=!!E.roughnessMap,_=E.anisotropy>0,F=E.clearcoat>0,q=E.dispersion>0,Z=E.iridescence>0,G=E.sheen>0,_e=E.transmission>0,ae=_&&!!E.anisotropyMap,he=F&&!!E.clearcoatMap,ze=F&&!!E.clearcoatNormalMap,Q=F&&!!E.clearcoatRoughnessMap,fe=Z&&!!E.iridescenceMap,ye=Z&&!!E.iridescenceThicknessMap,be=G&&!!E.sheenColorMap,de=G&&!!E.sheenRoughnessMap,Be=!!E.specularMap,Pe=!!E.specularColorMap,Ze=!!E.specularIntensityMap,P=_e&&!!E.transmissionMap,ne=_e&&!!E.thicknessMap,H=!!E.gradientMap,Y=!!E.alphaMap,le=E.alphaTest>0,oe=!!E.alphaHash,we=!!E.extensions;let et=mn;E.toneMapped&&(se===null||se.isXRRenderTarget===!0)&&(et=i.toneMapping);const ft={shaderID:re,shaderType:E.type,shaderName:E.name,vertexShader:Ke,fragmentShader:W,defines:E.defines,customVertexShaderID:ee,customFragmentShaderID:me,isRawShaderMaterial:E.isRawShaderMaterial===!0,glslVersion:E.glslVersion,precision:m,batching:Te,batchingColor:Te&&z._colorsTexture!==null,instancing:ke,instancingColor:ke&&z.instanceColor!==null,instancingMorph:ke&&z.morphTexture!==null,supportsVertexTextures:d,outputColorSpace:se===null?i.outputColorSpace:se.isXRRenderTarget===!0?se.texture.colorSpace:si,alphaToCoverage:!!E.alphaToCoverage,map:it,matcap:Qe,envMap:Ne,envMapMode:Ne&&$.mapping,envMapCubeUVHeight:V,aoMap:A,lightMap:At,bumpMap:Fe,normalMap:Oe,displacementMap:d&&xe,emissiveMap:$e,normalMapObjectSpace:Oe&&E.normalMapType===Pl,normalMapTangentSpace:Oe&&E.normalMapType===bo,metalnessMap:ge,roughnessMap:y,anisotropy:_,anisotropyMap:ae,clearcoat:F,clearcoatMap:he,clearcoatNormalMap:ze,clearcoatRoughnessMap:Q,dispersion:q,iridescence:Z,iridescenceMap:fe,iridescenceThicknessMap:ye,sheen:G,sheenColorMap:be,sheenRoughnessMap:de,specularMap:Be,specularColorMap:Pe,specularIntensityMap:Ze,transmission:_e,transmissionMap:P,thicknessMap:ne,gradientMap:H,opaque:E.transparent===!1&&E.blending===$n&&E.alphaToCoverage===!1,alphaMap:Y,alphaTest:le,alphaHash:oe,combine:E.combine,mapUv:it&&x(E.map.channel),aoMapUv:A&&x(E.aoMap.channel),lightMapUv:At&&x(E.lightMap.channel),bumpMapUv:Fe&&x(E.bumpMap.channel),normalMapUv:Oe&&x(E.normalMap.channel),displacementMapUv:xe&&x(E.displacementMap.channel),emissiveMapUv:$e&&x(E.emissiveMap.channel),metalnessMapUv:ge&&x(E.metalnessMap.channel),roughnessMapUv:y&&x(E.roughnessMap.channel),anisotropyMapUv:ae&&x(E.anisotropyMap.channel),clearcoatMapUv:he&&x(E.clearcoatMap.channel),clearcoatNormalMapUv:ze&&x(E.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:Q&&x(E.clearcoatRoughnessMap.channel),iridescenceMapUv:fe&&x(E.iridescenceMap.channel),iridescenceThicknessMapUv:ye&&x(E.iridescenceThicknessMap.channel),sheenColorMapUv:be&&x(E.sheenColorMap.channel),sheenRoughnessMapUv:de&&x(E.sheenRoughnessMap.channel),specularMapUv:Be&&x(E.specularMap.channel),specularColorMapUv:Pe&&x(E.specularColorMap.channel),specularIntensityMapUv:Ze&&x(E.specularIntensityMap.channel),transmissionMapUv:P&&x(E.transmissionMap.channel),thicknessMapUv:ne&&x(E.thicknessMap.channel),alphaMapUv:Y&&x(E.alphaMap.channel),vertexTangents:!!K.attributes.tangent&&(Oe||_),vertexColors:E.vertexColors,vertexAlphas:E.vertexColors===!0&&!!K.attributes.color&&K.attributes.color.itemSize===4,pointsUvs:z.isPoints===!0&&!!K.attributes.uv&&(it||Y),fog:!!j,useFog:E.fog===!0,fogExp2:!!j&&j.isFogExp2,flatShading:E.flatShading===!0,sizeAttenuation:E.sizeAttenuation===!0,logarithmicDepthBuffer:h,reverseDepthBuffer:Ee,skinning:z.isSkinnedMesh===!0,morphTargets:K.morphAttributes.position!==void 0,morphNormals:K.morphAttributes.normal!==void 0,morphColors:K.morphAttributes.color!==void 0,morphTargetsCount:ve,morphTextureStride:De,numDirLights:M.directional.length,numPointLights:M.point.length,numSpotLights:M.spot.length,numSpotLightMaps:M.spotLightMap.length,numRectAreaLights:M.rectArea.length,numHemiLights:M.hemi.length,numDirLightShadows:M.directionalShadowMap.length,numPointLightShadows:M.pointShadowMap.length,numSpotLightShadows:M.spotShadowMap.length,numSpotLightShadowsWithMaps:M.numSpotLightShadowsWithMaps,numLightProbes:M.numLightProbes,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:E.dithering,shadowMapEnabled:i.shadowMap.enabled&&C.length>0,shadowMapType:i.shadowMap.type,toneMapping:et,decodeVideoTexture:it&&E.map.isVideoTexture===!0&&Ge.getTransfer(E.map.colorSpace)===Ye,decodeVideoTextureEmissive:$e&&E.emissiveMap.isVideoTexture===!0&&Ge.getTransfer(E.emissiveMap.colorSpace)===Ye,premultipliedAlpha:E.premultipliedAlpha,doubleSided:E.side===en,flipSided:E.side===Mt,useDepthPacking:E.depthPacking>=0,depthPacking:E.depthPacking||0,index0AttributeName:E.index0AttributeName,extensionClipCullDistance:we&&E.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(we&&E.extensions.multiDraw===!0||Te)&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:E.customProgramCacheKey()};return ft.vertexUv1s=c.has(1),ft.vertexUv2s=c.has(2),ft.vertexUv3s=c.has(3),c.clear(),ft}function f(E){const M=[];if(E.shaderID?M.push(E.shaderID):(M.push(E.customVertexShaderID),M.push(E.customFragmentShaderID)),E.defines!==void 0)for(const C in E.defines)M.push(C),M.push(E.defines[C]);return E.isRawShaderMaterial===!1&&(b(M,E),T(M,E),M.push(i.outputColorSpace)),M.push(E.customProgramCacheKey),M.join()}function b(E,M){E.push(M.precision),E.push(M.outputColorSpace),E.push(M.envMapMode),E.push(M.envMapCubeUVHeight),E.push(M.mapUv),E.push(M.alphaMapUv),E.push(M.lightMapUv),E.push(M.aoMapUv),E.push(M.bumpMapUv),E.push(M.normalMapUv),E.push(M.displacementMapUv),E.push(M.emissiveMapUv),E.push(M.metalnessMapUv),E.push(M.roughnessMapUv),E.push(M.anisotropyMapUv),E.push(M.clearcoatMapUv),E.push(M.clearcoatNormalMapUv),E.push(M.clearcoatRoughnessMapUv),E.push(M.iridescenceMapUv),E.push(M.iridescenceThicknessMapUv),E.push(M.sheenColorMapUv),E.push(M.sheenRoughnessMapUv),E.push(M.specularMapUv),E.push(M.specularColorMapUv),E.push(M.specularIntensityMapUv),E.push(M.transmissionMapUv),E.push(M.thicknessMapUv),E.push(M.combine),E.push(M.fogExp2),E.push(M.sizeAttenuation),E.push(M.morphTargetsCount),E.push(M.morphAttributeCount),E.push(M.numDirLights),E.push(M.numPointLights),E.push(M.numSpotLights),E.push(M.numSpotLightMaps),E.push(M.numHemiLights),E.push(M.numRectAreaLights),E.push(M.numDirLightShadows),E.push(M.numPointLightShadows),E.push(M.numSpotLightShadows),E.push(M.numSpotLightShadowsWithMaps),E.push(M.numLightProbes),E.push(M.shadowMapType),E.push(M.toneMapping),E.push(M.numClippingPlanes),E.push(M.numClipIntersection),E.push(M.depthPacking)}function T(E,M){o.disableAll(),M.supportsVertexTextures&&o.enable(0),M.instancing&&o.enable(1),M.instancingColor&&o.enable(2),M.instancingMorph&&o.enable(3),M.matcap&&o.enable(4),M.envMap&&o.enable(5),M.normalMapObjectSpace&&o.enable(6),M.normalMapTangentSpace&&o.enable(7),M.clearcoat&&o.enable(8),M.iridescence&&o.enable(9),M.alphaTest&&o.enable(10),M.vertexColors&&o.enable(11),M.vertexAlphas&&o.enable(12),M.vertexUv1s&&o.enable(13),M.vertexUv2s&&o.enable(14),M.vertexUv3s&&o.enable(15),M.vertexTangents&&o.enable(16),M.anisotropy&&o.enable(17),M.alphaHash&&o.enable(18),M.batching&&o.enable(19),M.dispersion&&o.enable(20),M.batchingColor&&o.enable(21),E.push(o.mask),o.disableAll(),M.fog&&o.enable(0),M.useFog&&o.enable(1),M.flatShading&&o.enable(2),M.logarithmicDepthBuffer&&o.enable(3),M.reverseDepthBuffer&&o.enable(4),M.skinning&&o.enable(5),M.morphTargets&&o.enable(6),M.morphNormals&&o.enable(7),M.morphColors&&o.enable(8),M.premultipliedAlpha&&o.enable(9),M.shadowMapEnabled&&o.enable(10),M.doubleSided&&o.enable(11),M.flipSided&&o.enable(12),M.useDepthPacking&&o.enable(13),M.dithering&&o.enable(14),M.transmission&&o.enable(15),M.sheen&&o.enable(16),M.opaque&&o.enable(17),M.pointsUvs&&o.enable(18),M.decodeVideoTexture&&o.enable(19),M.decodeVideoTextureEmissive&&o.enable(20),M.alphaToCoverage&&o.enable(21),E.push(o.mask)}function S(E){const M=g[E.type];let C;if(M){const k=Gt[M];C=oc.clone(k.uniforms)}else C=E.uniforms;return C}function U(E,M){let C;for(let k=0,z=u.length;k0?n.push(f):m.transparent===!0?r.push(f):t.push(f)}function l(h,d,m,g,x,p){const f=a(h,d,m,g,x,p);m.transmission>0?n.unshift(f):m.transparent===!0?r.unshift(f):t.unshift(f)}function c(h,d){t.length>1&&t.sort(h||kd),n.length>1&&n.sort(d||so),r.length>1&&r.sort(d||so)}function u(){for(let h=e,d=i.length;h=s.length?(a=new ao,s.push(a)):a=s[r],a}function t(){i=new WeakMap}return{get:e,dispose:t}}function Xd(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new N,color:new Ue};break;case"SpotLight":t={position:new N,direction:new N,color:new Ue,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new N,color:new Ue,distance:0,decay:0};break;case"HemisphereLight":t={direction:new N,skyColor:new Ue,groundColor:new Ue};break;case"RectAreaLight":t={color:new Ue,position:new N,halfWidth:new N,halfHeight:new N};break}return i[e.id]=t,t}}}function qd(){const i={};return{get:function(e){if(i[e.id]!==void 0)return i[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new je};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new je};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new je,shadowCameraNear:1,shadowCameraFar:1e3};break}return i[e.id]=t,t}}}let Yd=0;function jd(i,e){return(e.castShadow?2:0)-(i.castShadow?2:0)+(e.map?1:0)-(i.map?1:0)}function Kd(i){const e=new Xd,t=qd(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)n.probe.push(new N);const r=new N,s=new nt,a=new nt;function o(c){let u=0,h=0,d=0;for(let E=0;E<9;E++)n.probe[E].set(0,0,0);let m=0,g=0,x=0,p=0,f=0,b=0,T=0,S=0,U=0,R=0,w=0;c.sort(jd);for(let E=0,M=c.length;E0&&(i.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=te.LTC_FLOAT_1,n.rectAreaLTC2=te.LTC_FLOAT_2):(n.rectAreaLTC1=te.LTC_HALF_1,n.rectAreaLTC2=te.LTC_HALF_2)),n.ambient[0]=u,n.ambient[1]=h,n.ambient[2]=d;const I=n.hash;(I.directionalLength!==m||I.pointLength!==g||I.spotLength!==x||I.rectAreaLength!==p||I.hemiLength!==f||I.numDirectionalShadows!==b||I.numPointShadows!==T||I.numSpotShadows!==S||I.numSpotMaps!==U||I.numLightProbes!==w)&&(n.directional.length=m,n.spot.length=x,n.rectArea.length=p,n.point.length=g,n.hemi.length=f,n.directionalShadow.length=b,n.directionalShadowMap.length=b,n.pointShadow.length=T,n.pointShadowMap.length=T,n.spotShadow.length=S,n.spotShadowMap.length=S,n.directionalShadowMatrix.length=b,n.pointShadowMatrix.length=T,n.spotLightMatrix.length=S+U-R,n.spotLightMap.length=U,n.numSpotLightShadowsWithMaps=R,n.numLightProbes=w,I.directionalLength=m,I.pointLength=g,I.spotLength=x,I.rectAreaLength=p,I.hemiLength=f,I.numDirectionalShadows=b,I.numPointShadows=T,I.numSpotShadows=S,I.numSpotMaps=U,I.numLightProbes=w,n.version=Yd++)}function l(c,u){let h=0,d=0,m=0,g=0,x=0;const p=u.matrixWorldInverse;for(let f=0,b=c.length;f=a.length?(o=new oo(i),a.push(o)):o=a[s],o}function n(){e=new WeakMap}return{get:t,dispose:n}}const $d=`void main() { gl_Position = vec4( position, 1.0 ); -}`,_d=`uniform sampler2D shadow_pass; +}`,Jd=`uniform sampler2D shadow_pass; uniform vec2 resolution; uniform float radius; #include @@ -3800,12 +3800,12 @@ void main() { squared_mean = squared_mean / samples; float std_dev = sqrt( squared_mean - mean * mean ); gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); -}`;function gd(i,e,t){let n=new so;const r=new Ze,s=new Ze,a=new it,o=new Gl({depthPacking:Qo}),l=new kl,c={},h=t.maxTextureSize,f={[hn]:vt,[vt]:hn,[Zt]:Zt},d=new fn({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ze},radius:{value:4}},vertexShader:md,fragmentShader:_d}),m=d.clone();m.defines.HORIZONTAL_PASS=1;const v=new Dn;v.setAttribute("position",new Vt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const M=new Ht(v,d),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Fa;let u=this.type;this.render=function(D,R,I){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||D.length===0)return;const S=i.getRenderTarget(),x=i.getActiveCubeFace(),w=i.getActiveMipmapLevel(),k=i.state;k.setBlending(cn),k.buffers.color.setClear(1,1,1,1),k.buffers.depth.setTest(!0),k.setScissorTest(!1);const z=u!==Kt&&this.type===Kt,K=u===Kt&&this.type!==Kt;for(let Z=0,X=D.length;Zh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/re.x),r.x=s.x*re.x,V.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/re.y),r.y=s.y*re.y,V.mapSize.y=s.y)),V.map===null||z===!0||K===!0){const ve=this.type!==Kt?{minFilter:Ot,magFilter:Ot}:{};V.map!==null&&V.map.dispose(),V.map=new Pn(r.x,r.y,ve),V.map.texture.name=j.name+".shadowMap",V.camera.updateProjectionMatrix()}i.setRenderTarget(V.map),i.clear();const ue=V.getViewportCount();for(let ve=0;ve0||R.map&&R.alphaTest>0){const k=x.uuid,z=R.uuid;let K=c[k];K===void 0&&(K={},c[k]=K);let Z=K[z];Z===void 0&&(Z=x.clone(),K[z]=Z,R.addEventListener("dispose",U)),x=Z}if(x.visible=R.visible,x.wireframe=R.wireframe,S===Kt?x.side=R.shadowSide!==null?R.shadowSide:R.side:x.side=R.shadowSide!==null?R.shadowSide:f[R.side],x.alphaMap=R.alphaMap,x.alphaTest=R.alphaTest,x.map=R.map,x.clipShadows=R.clipShadows,x.clippingPlanes=R.clippingPlanes,x.clipIntersection=R.clipIntersection,x.displacementMap=R.displacementMap,x.displacementScale=R.displacementScale,x.displacementBias=R.displacementBias,x.wireframeLinewidth=R.wireframeLinewidth,x.linewidth=R.linewidth,I.isPointLight===!0&&x.isMeshDistanceMaterial===!0){const k=i.properties.get(x);k.light=I}return x}function T(D,R,I,S,x){if(D.visible===!1)return;if(D.layers.test(R.layers)&&(D.isMesh||D.isLine||D.isPoints)&&(D.castShadow||D.receiveShadow&&x===Kt)&&(!D.frustumCulled||n.intersectsObject(D))){D.modelViewMatrix.multiplyMatrices(I.matrixWorldInverse,D.matrixWorld);const z=e.update(D),K=D.material;if(Array.isArray(K)){const Z=z.groups;for(let X=0,j=Z.length;X=1):V.indexOf("OpenGL ES")!==-1&&(j=parseFloat(/^OpenGL ES (\d)/.exec(V)[1]),X=j>=2);let re=null,ue={};const ve=i.getParameter(i.SCISSOR_BOX),Le=i.getParameter(i.VIEWPORT),Ke=new it().fromArray(ve),W=new it().fromArray(Le);function ee(C,ne,H,Y){const le=new Uint8Array(4),oe=i.createTexture();i.bindTexture(C,oe),i.texParameteri(C,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(C,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let we=0;we"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new Ze,h=new WeakMap;let f;const d=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function v(E,_){return m?new OffscreenCanvas(E,_):ji("canvas")}function M(E,_,N){let q=1;const $=ge(E);if(($.width>N||$.height>N)&&(q=N/Math.max($.width,$.height)),q<1)if(typeof HTMLImageElement<"u"&&E instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&E instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&E instanceof ImageBitmap||typeof VideoFrame<"u"&&E instanceof VideoFrame){const G=Math.floor(q*$.width),_e=Math.floor(q*$.height);f===void 0&&(f=v(G,_e));const ae=_?v(G,_e):f;return ae.width=G,ae.height=_e,ae.getContext("2d").drawImage(E,0,0,G,_e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+$.width+"x"+$.height+") to ("+G+"x"+_e+")."),ae}else return"data"in E&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+$.width+"x"+$.height+")."),E;return E}function p(E){return E.generateMipmaps}function u(E){i.generateMipmap(E)}function b(E){return E.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:E.isWebGL3DRenderTarget?i.TEXTURE_3D:E.isWebGLArrayRenderTarget||E.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function y(E,_,N,q,$=!1){if(E!==null){if(i[E]!==void 0)return i[E];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+E+"'")}let G=_;if(_===i.RED&&(N===i.FLOAT&&(G=i.R32F),N===i.HALF_FLOAT&&(G=i.R16F),N===i.UNSIGNED_BYTE&&(G=i.R8)),_===i.RED_INTEGER&&(N===i.UNSIGNED_BYTE&&(G=i.R8UI),N===i.UNSIGNED_SHORT&&(G=i.R16UI),N===i.UNSIGNED_INT&&(G=i.R32UI),N===i.BYTE&&(G=i.R8I),N===i.SHORT&&(G=i.R16I),N===i.INT&&(G=i.R32I)),_===i.RG&&(N===i.FLOAT&&(G=i.RG32F),N===i.HALF_FLOAT&&(G=i.RG16F),N===i.UNSIGNED_BYTE&&(G=i.RG8)),_===i.RG_INTEGER&&(N===i.UNSIGNED_BYTE&&(G=i.RG8UI),N===i.UNSIGNED_SHORT&&(G=i.RG16UI),N===i.UNSIGNED_INT&&(G=i.RG32UI),N===i.BYTE&&(G=i.RG8I),N===i.SHORT&&(G=i.RG16I),N===i.INT&&(G=i.RG32I)),_===i.RGB_INTEGER&&(N===i.UNSIGNED_BYTE&&(G=i.RGB8UI),N===i.UNSIGNED_SHORT&&(G=i.RGB16UI),N===i.UNSIGNED_INT&&(G=i.RGB32UI),N===i.BYTE&&(G=i.RGB8I),N===i.SHORT&&(G=i.RGB16I),N===i.INT&&(G=i.RGB32I)),_===i.RGBA_INTEGER&&(N===i.UNSIGNED_BYTE&&(G=i.RGBA8UI),N===i.UNSIGNED_SHORT&&(G=i.RGBA16UI),N===i.UNSIGNED_INT&&(G=i.RGBA32UI),N===i.BYTE&&(G=i.RGBA8I),N===i.SHORT&&(G=i.RGBA16I),N===i.INT&&(G=i.RGBA32I)),_===i.RGB&&N===i.UNSIGNED_INT_5_9_9_9_REV&&(G=i.RGB9_E5),_===i.RGBA){const _e=$?Zi:Ve.getTransfer(q);N===i.FLOAT&&(G=i.RGBA32F),N===i.HALF_FLOAT&&(G=i.RGBA16F),N===i.UNSIGNED_BYTE&&(G=_e===qe?i.SRGB8_ALPHA8:i.RGBA8),N===i.UNSIGNED_SHORT_4_4_4_4&&(G=i.RGBA4),N===i.UNSIGNED_SHORT_5_5_5_1&&(G=i.RGB5_A1)}return(G===i.R16F||G===i.R32F||G===i.RG16F||G===i.RG32F||G===i.RGBA16F||G===i.RGBA32F)&&e.get("EXT_color_buffer_float"),G}function T(E,_){let N;return E?_===null||_===Cn||_===ei?N=i.DEPTH24_STENCIL8:_===$t?N=i.DEPTH32F_STENCIL8:_===pi&&(N=i.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):_===null||_===Cn||_===ei?N=i.DEPTH_COMPONENT24:_===$t?N=i.DEPTH_COMPONENT32F:_===pi&&(N=i.DEPTH_COMPONENT16),N}function U(E,_){return p(E)===!0||E.isFramebufferTexture&&E.minFilter!==Ot&&E.minFilter!==zt?Math.log2(Math.max(_.width,_.height))+1:E.mipmaps!==void 0&&E.mipmaps.length>0?E.mipmaps.length:E.isCompressedTexture&&Array.isArray(E.image)?_.mipmaps.length:1}function D(E){const _=E.target;_.removeEventListener("dispose",D),I(_),_.isVideoTexture&&h.delete(_)}function R(E){const _=E.target;_.removeEventListener("dispose",R),x(_)}function I(E){const _=n.get(E);if(_.__webglInit===void 0)return;const N=E.source,q=d.get(N);if(q){const $=q[_.__cacheKey];$.usedTimes--,$.usedTimes===0&&S(E),Object.keys(q).length===0&&d.delete(N)}n.remove(E)}function S(E){const _=n.get(E);i.deleteTexture(_.__webglTexture);const N=E.source,q=d.get(N);delete q[_.__cacheKey],a.memory.textures--}function x(E){const _=n.get(E);if(E.depthTexture&&(E.depthTexture.dispose(),n.remove(E.depthTexture)),E.isWebGLCubeRenderTarget)for(let q=0;q<6;q++){if(Array.isArray(_.__webglFramebuffer[q]))for(let $=0;$<_.__webglFramebuffer[q].length;$++)i.deleteFramebuffer(_.__webglFramebuffer[q][$]);else i.deleteFramebuffer(_.__webglFramebuffer[q]);_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer[q])}else{if(Array.isArray(_.__webglFramebuffer))for(let q=0;q<_.__webglFramebuffer.length;q++)i.deleteFramebuffer(_.__webglFramebuffer[q]);else i.deleteFramebuffer(_.__webglFramebuffer);if(_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer),_.__webglMultisampledFramebuffer&&i.deleteFramebuffer(_.__webglMultisampledFramebuffer),_.__webglColorRenderbuffer)for(let q=0;q<_.__webglColorRenderbuffer.length;q++)_.__webglColorRenderbuffer[q]&&i.deleteRenderbuffer(_.__webglColorRenderbuffer[q]);_.__webglDepthRenderbuffer&&i.deleteRenderbuffer(_.__webglDepthRenderbuffer)}const N=E.textures;for(let q=0,$=N.length;q<$;q++){const G=n.get(N[q]);G.__webglTexture&&(i.deleteTexture(G.__webglTexture),a.memory.textures--),n.remove(N[q])}n.remove(E)}let w=0;function k(){w=0}function z(){const E=w;return E>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+E+" texture units while this GPU supports only "+r.maxTextures),w+=1,E}function K(E){const _=[];return _.push(E.wrapS),_.push(E.wrapT),_.push(E.wrapR||0),_.push(E.magFilter),_.push(E.minFilter),_.push(E.anisotropy),_.push(E.internalFormat),_.push(E.format),_.push(E.type),_.push(E.generateMipmaps),_.push(E.premultiplyAlpha),_.push(E.flipY),_.push(E.unpackAlignment),_.push(E.colorSpace),_.join()}function Z(E,_){const N=n.get(E);if(E.isVideoTexture&&xe(E),E.isRenderTargetTexture===!1&&E.version>0&&N.__version!==E.version){const q=E.image;if(q===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(q.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{W(N,E,_);return}}t.bindTexture(i.TEXTURE_2D,N.__webglTexture,i.TEXTURE0+_)}function X(E,_){const N=n.get(E);if(E.version>0&&N.__version!==E.version){W(N,E,_);return}t.bindTexture(i.TEXTURE_2D_ARRAY,N.__webglTexture,i.TEXTURE0+_)}function j(E,_){const N=n.get(E);if(E.version>0&&N.__version!==E.version){W(N,E,_);return}t.bindTexture(i.TEXTURE_3D,N.__webglTexture,i.TEXTURE0+_)}function V(E,_){const N=n.get(E);if(E.version>0&&N.__version!==E.version){ee(N,E,_);return}t.bindTexture(i.TEXTURE_CUBE_MAP,N.__webglTexture,i.TEXTURE0+_)}const re={[qr]:i.REPEAT,[bn]:i.CLAMP_TO_EDGE,[Yr]:i.MIRRORED_REPEAT},ue={[Ot]:i.NEAREST,[jo]:i.NEAREST_MIPMAP_NEAREST,[Si]:i.NEAREST_MIPMAP_LINEAR,[zt]:i.LINEAR,[sr]:i.LINEAR_MIPMAP_NEAREST,[Rn]:i.LINEAR_MIPMAP_LINEAR},ve={[nl]:i.NEVER,[ll]:i.ALWAYS,[il]:i.LESS,[Za]:i.LEQUAL,[rl]:i.EQUAL,[ol]:i.GEQUAL,[sl]:i.GREATER,[al]:i.NOTEQUAL};function Le(E,_){if(_.type===$t&&e.has("OES_texture_float_linear")===!1&&(_.magFilter===zt||_.magFilter===sr||_.magFilter===Si||_.magFilter===Rn||_.minFilter===zt||_.minFilter===sr||_.minFilter===Si||_.minFilter===Rn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(E,i.TEXTURE_WRAP_S,re[_.wrapS]),i.texParameteri(E,i.TEXTURE_WRAP_T,re[_.wrapT]),(E===i.TEXTURE_3D||E===i.TEXTURE_2D_ARRAY)&&i.texParameteri(E,i.TEXTURE_WRAP_R,re[_.wrapR]),i.texParameteri(E,i.TEXTURE_MAG_FILTER,ue[_.magFilter]),i.texParameteri(E,i.TEXTURE_MIN_FILTER,ue[_.minFilter]),_.compareFunction&&(i.texParameteri(E,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(E,i.TEXTURE_COMPARE_FUNC,ve[_.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(_.magFilter===Ot||_.minFilter!==Si&&_.minFilter!==Rn||_.type===$t&&e.has("OES_texture_float_linear")===!1)return;if(_.anisotropy>1||n.get(_).__currentAnisotropy){const N=e.get("EXT_texture_filter_anisotropic");i.texParameterf(E,N.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(_.anisotropy,r.getMaxAnisotropy())),n.get(_).__currentAnisotropy=_.anisotropy}}}function Ke(E,_){let N=!1;E.__webglInit===void 0&&(E.__webglInit=!0,_.addEventListener("dispose",D));const q=_.source;let $=d.get(q);$===void 0&&($={},d.set(q,$));const G=K(_);if(G!==E.__cacheKey){$[G]===void 0&&($[G]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,N=!0),$[G].usedTimes++;const _e=$[E.__cacheKey];_e!==void 0&&($[E.__cacheKey].usedTimes--,_e.usedTimes===0&&S(_)),E.__cacheKey=G,E.__webglTexture=$[G].texture}return N}function W(E,_,N){let q=i.TEXTURE_2D;(_.isDataArrayTexture||_.isCompressedArrayTexture)&&(q=i.TEXTURE_2D_ARRAY),_.isData3DTexture&&(q=i.TEXTURE_3D);const $=Ke(E,_),G=_.source;t.bindTexture(q,E.__webglTexture,i.TEXTURE0+N);const _e=n.get(G);if(G.version!==_e.__version||$===!0){t.activeTexture(i.TEXTURE0+N);const ae=Ve.getPrimaries(Ve.workingColorSpace),he=_.colorSpace===ln?null:Ve.getPrimaries(_.colorSpace),Be=_.colorSpace===ln||ae===he?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,_.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,_.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,Be);let Q=M(_.image,!1,r.maxTextureSize);Q=je(_,Q);const fe=s.convert(_.format,_.colorSpace),Te=s.convert(_.type);let Ae=y(_.internalFormat,fe,Te,_.colorSpace,_.isVideoTexture);Le(q,_);let de;const Oe=_.mipmaps,Pe=_.isVideoTexture!==!0,$e=_e.__version===void 0||$===!0,C=G.dataReady,ne=U(_,Q);if(_.isDepthTexture)Ae=T(_.format===ti,_.type),$e&&(Pe?t.texStorage2D(i.TEXTURE_2D,1,Ae,Q.width,Q.height):t.texImage2D(i.TEXTURE_2D,0,Ae,Q.width,Q.height,0,fe,Te,null));else if(_.isDataTexture)if(Oe.length>0){Pe&&$e&&t.texStorage2D(i.TEXTURE_2D,ne,Ae,Oe[0].width,Oe[0].height);for(let H=0,Y=Oe.length;H0){const le=ha(de.width,de.height,_.format,_.type);for(const oe of _.layerUpdates){const we=de.data.subarray(oe*le/de.data.BYTES_PER_ELEMENT,(oe+1)*le/de.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,H,0,0,oe,de.width,de.height,1,fe,we)}_.clearLayerUpdates()}else t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,H,0,0,0,de.width,de.height,Q.depth,fe,de.data)}else t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,H,Ae,de.width,de.height,Q.depth,0,de.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else Pe?C&&t.texSubImage3D(i.TEXTURE_2D_ARRAY,H,0,0,0,de.width,de.height,Q.depth,fe,Te,de.data):t.texImage3D(i.TEXTURE_2D_ARRAY,H,Ae,de.width,de.height,Q.depth,0,fe,Te,de.data)}else{Pe&&$e&&t.texStorage2D(i.TEXTURE_2D,ne,Ae,Oe[0].width,Oe[0].height);for(let H=0,Y=Oe.length;H0){const H=ha(Q.width,Q.height,_.format,_.type);for(const Y of _.layerUpdates){const le=Q.data.subarray(Y*H/Q.data.BYTES_PER_ELEMENT,(Y+1)*H/Q.data.BYTES_PER_ELEMENT);t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,Y,Q.width,Q.height,1,fe,Te,le)}_.clearLayerUpdates()}else t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,Q.width,Q.height,Q.depth,fe,Te,Q.data)}else t.texImage3D(i.TEXTURE_2D_ARRAY,0,Ae,Q.width,Q.height,Q.depth,0,fe,Te,Q.data);else if(_.isData3DTexture)Pe?($e&&t.texStorage3D(i.TEXTURE_3D,ne,Ae,Q.width,Q.height,Q.depth),C&&t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,Q.width,Q.height,Q.depth,fe,Te,Q.data)):t.texImage3D(i.TEXTURE_3D,0,Ae,Q.width,Q.height,Q.depth,0,fe,Te,Q.data);else if(_.isFramebufferTexture){if($e)if(Pe)t.texStorage2D(i.TEXTURE_2D,ne,Ae,Q.width,Q.height);else{let H=Q.width,Y=Q.height;for(let le=0;le>=1,Y>>=1}}else if(Oe.length>0){if(Pe&&$e){const H=ge(Oe[0]);t.texStorage2D(i.TEXTURE_2D,ne,Ae,H.width,H.height)}for(let H=0,Y=Oe.length;H0&&ne++;const Y=ge(fe[0]);t.texStorage2D(i.TEXTURE_CUBE_MAP,ne,Oe,Y.width,Y.height)}for(let Y=0;Y<6;Y++)if(Q){Pe?C&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,0,0,fe[Y].width,fe[Y].height,Ae,de,fe[Y].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,Oe,fe[Y].width,fe[Y].height,0,Ae,de,fe[Y].data);for(let le=0;le>G),Te=Math.max(1,_.height>>G);$===i.TEXTURE_3D||$===i.TEXTURE_2D_ARRAY?t.texImage3D($,G,he,fe,Te,_.depth,0,_e,ae,null):t.texImage2D($,G,he,fe,Te,0,_e,ae,null)}t.bindFramebuffer(i.FRAMEBUFFER,E),Fe(_)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,q,$,Q.__webglTexture,0,Ne(_)):($===i.TEXTURE_2D||$>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&$<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,q,$,Q.__webglTexture,G),t.bindFramebuffer(i.FRAMEBUFFER,null)}function se(E,_,N){if(i.bindRenderbuffer(i.RENDERBUFFER,E),_.depthBuffer){const q=_.depthTexture,$=q&&q.isDepthTexture?q.type:null,G=T(_.stencilBuffer,$),_e=_.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ae=Ne(_);Fe(_)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,ae,G,_.width,_.height):N?i.renderbufferStorageMultisample(i.RENDERBUFFER,ae,G,_.width,_.height):i.renderbufferStorage(i.RENDERBUFFER,G,_.width,_.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,_e,i.RENDERBUFFER,E)}else{const q=_.textures;for(let $=0;${delete _.__boundDepthTexture,delete _.__depthDisposeCallback,q.removeEventListener("dispose",$)};q.addEventListener("dispose",$),_.__depthDisposeCallback=$}_.__boundDepthTexture=q}if(E.depthTexture&&!_.__autoAllocateDepthBuffer){if(N)throw new Error("target.depthTexture not supported in Cube render targets");Ee(_.__webglFramebuffer,E)}else if(N){_.__webglDepthbuffer=[];for(let q=0;q<6;q++)if(t.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer[q]),_.__webglDepthbuffer[q]===void 0)_.__webglDepthbuffer[q]=i.createRenderbuffer(),se(_.__webglDepthbuffer[q],E,!1);else{const $=E.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,G=_.__webglDepthbuffer[q];i.bindRenderbuffer(i.RENDERBUFFER,G),i.framebufferRenderbuffer(i.FRAMEBUFFER,$,i.RENDERBUFFER,G)}}else if(t.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer),_.__webglDepthbuffer===void 0)_.__webglDepthbuffer=i.createRenderbuffer(),se(_.__webglDepthbuffer,E,!1);else{const q=E.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,$=_.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,$),i.framebufferRenderbuffer(i.FRAMEBUFFER,q,i.RENDERBUFFER,$)}t.bindFramebuffer(i.FRAMEBUFFER,null)}function ye(E,_,N){const q=n.get(E);_!==void 0&&me(q.__webglFramebuffer,E,E.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),N!==void 0&&Ge(E)}function nt(E){const _=E.texture,N=n.get(E),q=n.get(_);E.addEventListener("dispose",R);const $=E.textures,G=E.isWebGLCubeRenderTarget===!0,_e=$.length>1;if(_e||(q.__webglTexture===void 0&&(q.__webglTexture=i.createTexture()),q.__version=_.version,a.memory.textures++),G){N.__webglFramebuffer=[];for(let ae=0;ae<6;ae++)if(_.mipmaps&&_.mipmaps.length>0){N.__webglFramebuffer[ae]=[];for(let he=0;he<_.mipmaps.length;he++)N.__webglFramebuffer[ae][he]=i.createFramebuffer()}else N.__webglFramebuffer[ae]=i.createFramebuffer()}else{if(_.mipmaps&&_.mipmaps.length>0){N.__webglFramebuffer=[];for(let ae=0;ae<_.mipmaps.length;ae++)N.__webglFramebuffer[ae]=i.createFramebuffer()}else N.__webglFramebuffer=i.createFramebuffer();if(_e)for(let ae=0,he=$.length;ae0&&Fe(E)===!1){N.__webglMultisampledFramebuffer=i.createFramebuffer(),N.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,N.__webglMultisampledFramebuffer);for(let ae=0;ae<$.length;ae++){const he=$[ae];N.__webglColorRenderbuffer[ae]=i.createRenderbuffer(),i.bindRenderbuffer(i.RENDERBUFFER,N.__webglColorRenderbuffer[ae]);const Be=s.convert(he.format,he.colorSpace),Q=s.convert(he.type),fe=y(he.internalFormat,Be,Q,he.colorSpace,E.isXRRenderTarget===!0),Te=Ne(E);i.renderbufferStorageMultisample(i.RENDERBUFFER,Te,fe,E.width,E.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+ae,i.RENDERBUFFER,N.__webglColorRenderbuffer[ae])}i.bindRenderbuffer(i.RENDERBUFFER,null),E.depthBuffer&&(N.__webglDepthRenderbuffer=i.createRenderbuffer(),se(N.__webglDepthRenderbuffer,E,!0)),t.bindFramebuffer(i.FRAMEBUFFER,null)}}if(G){t.bindTexture(i.TEXTURE_CUBE_MAP,q.__webglTexture),Le(i.TEXTURE_CUBE_MAP,_);for(let ae=0;ae<6;ae++)if(_.mipmaps&&_.mipmaps.length>0)for(let he=0;he<_.mipmaps.length;he++)me(N.__webglFramebuffer[ae][he],E,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+ae,he);else me(N.__webglFramebuffer[ae],E,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+ae,0);p(_)&&u(i.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(_e){for(let ae=0,he=$.length;ae0)for(let he=0;he<_.mipmaps.length;he++)me(N.__webglFramebuffer[he],E,_,i.COLOR_ATTACHMENT0,ae,he);else me(N.__webglFramebuffer,E,_,i.COLOR_ATTACHMENT0,ae,0);p(_)&&u(ae),t.unbindTexture()}E.depthBuffer&&Ge(E)}function Qe(E){const _=E.textures;for(let N=0,q=_.length;N0){if(Fe(E)===!1){const _=E.textures,N=E.width,q=E.height;let $=i.COLOR_BUFFER_BIT;const G=E.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,_e=n.get(E),ae=_.length>1;if(ae)for(let he=0;he<_.length;he++)t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,null),t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,null,0);t.bindFramebuffer(i.READ_FRAMEBUFFER,_e.__webglMultisampledFramebuffer),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,_e.__webglFramebuffer);for(let he=0;he<_.length;he++){if(E.resolveDepthBuffer&&(E.depthBuffer&&($|=i.DEPTH_BUFFER_BIT),E.stencilBuffer&&E.resolveStencilBuffer&&($|=i.STENCIL_BUFFER_BIT)),ae){i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,_e.__webglColorRenderbuffer[he]);const Be=n.get(_[he]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,Be,0)}i.blitFramebuffer(0,0,N,q,0,0,N,q,$,i.NEAREST),l===!0&&(Ie.length=0,A.length=0,Ie.push(i.COLOR_ATTACHMENT0+he),E.depthBuffer&&E.resolveDepthBuffer===!1&&(Ie.push(G),A.push(G),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,A)),i.invalidateFramebuffer(i.READ_FRAMEBUFFER,Ie))}if(t.bindFramebuffer(i.READ_FRAMEBUFFER,null),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),ae)for(let he=0;he<_.length;he++){t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,_e.__webglColorRenderbuffer[he]);const Be=n.get(_[he]).__webglTexture;t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,Be,0)}t.bindFramebuffer(i.DRAW_FRAMEBUFFER,_e.__webglMultisampledFramebuffer)}else if(E.depthBuffer&&E.resolveDepthBuffer===!1&&l){const _=E.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[_])}}}function Ne(E){return Math.min(r.maxSamples,E.samples)}function Fe(E){const _=n.get(E);return E.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&_.__useRenderToTexture!==!1}function xe(E){const _=a.render.frame;h.get(E)!==_&&(h.set(E,_),E.update())}function je(E,_){const N=E.colorSpace,q=E.format,$=E.type;return E.isCompressedTexture===!0||E.isVideoTexture===!0||N!==ni&&N!==ln&&(Ve.getTransfer(N)===qe?(q!==Ft||$!==Qt)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",N)),_}function ge(E){return typeof HTMLImageElement<"u"&&E instanceof HTMLImageElement?(c.width=E.naturalWidth||E.width,c.height=E.naturalHeight||E.height):typeof VideoFrame<"u"&&E instanceof VideoFrame?(c.width=E.displayWidth,c.height=E.displayHeight):(c.width=E.width,c.height=E.height),c}this.allocateTextureUnit=z,this.resetTextureUnits=k,this.setTexture2D=Z,this.setTexture2DArray=X,this.setTexture3D=j,this.setTextureCube=V,this.rebindTextures=ye,this.setupRenderTarget=nt,this.updateRenderTargetMipmap=Qe,this.updateMultisampleRenderTarget=yt,this.setupDepthRenderbuffer=Ge,this.setupFrameBufferTexture=me,this.useMultisampledRTT=Fe}function Sd(i,e){function t(n,r=ln){let s;const a=Ve.getTransfer(r);if(n===Qt)return i.UNSIGNED_BYTE;if(n===As)return i.UNSIGNED_SHORT_4_4_4_4;if(n===bs)return i.UNSIGNED_SHORT_5_5_5_1;if(n===Va)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===za)return i.BYTE;if(n===Ha)return i.SHORT;if(n===pi)return i.UNSIGNED_SHORT;if(n===ys)return i.INT;if(n===Cn)return i.UNSIGNED_INT;if(n===$t)return i.FLOAT;if(n===mi)return i.HALF_FLOAT;if(n===Ga)return i.ALPHA;if(n===ka)return i.RGB;if(n===Ft)return i.RGBA;if(n===Wa)return i.LUMINANCE;if(n===Xa)return i.LUMINANCE_ALPHA;if(n===Zn)return i.DEPTH_COMPONENT;if(n===ti)return i.DEPTH_STENCIL;if(n===qa)return i.RED;if(n===Rs)return i.RED_INTEGER;if(n===Ya)return i.RG;if(n===ws)return i.RG_INTEGER;if(n===Cs)return i.RGBA_INTEGER;if(n===ki||n===Wi||n===Xi||n===qi)if(a===qe)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===ki)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===Wi)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===Xi)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===qi)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===ki)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===Wi)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===Xi)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===qi)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Kr||n===Zr||n===$r||n===jr)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===Kr)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===Zr)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===$r)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===jr)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Jr||n===Qr||n===es)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(n===Jr||n===Qr)return a===qe?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===es)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===ts||n===ns||n===is||n===rs||n===ss||n===as||n===os||n===ls||n===cs||n===us||n===hs||n===fs||n===ds||n===ps)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(n===ts)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===ns)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===is)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===rs)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===ss)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===as)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===os)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===ls)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===cs)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===us)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===hs)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===fs)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===ds)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===ps)return a===qe?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Yi||n===ms||n===_s)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(n===Yi)return a===qe?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===ms)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===_s)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Ka||n===gs||n===vs||n===xs)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(n===Yi)return s.COMPRESSED_RED_RGTC1_EXT;if(n===gs)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===vs)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===xs)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===ei?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:t}}const Ed=` +}`;function Qd(i,e,t){let n=new Oo;const r=new je,s=new je,a=new rt,o=new vc({depthPacking:Cl}),l=new xc,c={},u=t.maxTextureSize,h={[_n]:Mt,[Mt]:_n,[en]:en},d=new gn({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new je},radius:{value:4}},vertexShader:$d,fragmentShader:Jd}),m=d.clone();m.defines.HORIZONTAL_PASS=1;const g=new Vt;g.setAttribute("position",new Wt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const x=new zt(g,d),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=fo;let f=this.type;this.render=function(R,w,I){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||R.length===0)return;const E=i.getRenderTarget(),M=i.getActiveCubeFace(),C=i.getActiveMipmapLevel(),k=i.state;k.setBlending(pn),k.buffers.color.setClear(1,1,1,1),k.buffers.depth.setTest(!0),k.setScissorTest(!1);const z=f!==Qt&&this.type===Qt,j=f===Qt&&this.type!==Qt;for(let K=0,X=R.length;Ku||r.y>u)&&(r.x>u&&(s.x=Math.floor(u/re.x),r.x=s.x*re.x,V.mapSize.x=s.x),r.y>u&&(s.y=Math.floor(u/re.y),r.y=s.y*re.y,V.mapSize.y=s.y)),V.map===null||z===!0||j===!0){const ve=this.type!==Qt?{minFilter:Ht,magFilter:Ht}:{};V.map!==null&&V.map.dispose(),V.map=new In(r.x,r.y,ve),V.map.texture.name=$.name+".shadowMap",V.camera.updateProjectionMatrix()}i.setRenderTarget(V.map),i.clear();const ue=V.getViewportCount();for(let ve=0;ve0||w.map&&w.alphaTest>0){const k=M.uuid,z=w.uuid;let j=c[k];j===void 0&&(j={},c[k]=j);let K=j[z];K===void 0&&(K=M.clone(),j[z]=K,w.addEventListener("dispose",U)),M=K}if(M.visible=w.visible,M.wireframe=w.wireframe,E===Qt?M.side=w.shadowSide!==null?w.shadowSide:w.side:M.side=w.shadowSide!==null?w.shadowSide:h[w.side],M.alphaMap=w.alphaMap,M.alphaTest=w.alphaTest,M.map=w.map,M.clipShadows=w.clipShadows,M.clippingPlanes=w.clippingPlanes,M.clipIntersection=w.clipIntersection,M.displacementMap=w.displacementMap,M.displacementScale=w.displacementScale,M.displacementBias=w.displacementBias,M.wireframeLinewidth=w.wireframeLinewidth,M.linewidth=w.linewidth,I.isPointLight===!0&&M.isMeshDistanceMaterial===!0){const k=i.properties.get(M);k.light=I}return M}function S(R,w,I,E,M){if(R.visible===!1)return;if(R.layers.test(w.layers)&&(R.isMesh||R.isLine||R.isPoints)&&(R.castShadow||R.receiveShadow&&M===Qt)&&(!R.frustumCulled||n.intersectsObject(R))){R.modelViewMatrix.multiplyMatrices(I.matrixWorldInverse,R.matrixWorld);const z=e.update(R),j=R.material;if(Array.isArray(j)){const K=z.groups;for(let X=0,$=K.length;X<$;X++){const V=K[X],re=j[V.materialIndex];if(re&&re.visible){const ue=T(R,re,E,M);R.onBeforeShadow(i,R,w,I,z,ue,V),i.renderBufferDirect(I,null,z,ue,R,V),R.onAfterShadow(i,R,w,I,z,ue,V)}}}else if(j.visible){const K=T(R,j,E,M);R.onBeforeShadow(i,R,w,I,z,K,null),i.renderBufferDirect(I,null,z,K,R,null),R.onAfterShadow(i,R,w,I,z,K,null)}}const k=R.children;for(let z=0,j=k.length;z=1):V.indexOf("OpenGL ES")!==-1&&($=parseFloat(/^OpenGL ES (\d)/.exec(V)[1]),X=$>=2);let re=null,ue={};const ve=i.getParameter(i.SCISSOR_BOX),De=i.getParameter(i.VIEWPORT),Ke=new rt().fromArray(ve),W=new rt().fromArray(De);function ee(P,ne,H,Y){const le=new Uint8Array(4),oe=i.createTexture();i.bindTexture(P,oe),i.texParameteri(P,i.TEXTURE_MIN_FILTER,i.NEAREST),i.texParameteri(P,i.TEXTURE_MAG_FILTER,i.NEAREST);for(let we=0;we"u"?!1:/OculusBrowser/g.test(navigator.userAgent),c=new je,u=new WeakMap;let h;const d=new WeakMap;let m=!1;try{m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function g(y,_){return m?new OffscreenCanvas(y,_):cr("canvas")}function x(y,_,F){let q=1;const Z=ge(y);if((Z.width>F||Z.height>F)&&(q=F/Math.max(Z.width,Z.height)),q<1)if(typeof HTMLImageElement<"u"&&y instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&y instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&y instanceof ImageBitmap||typeof VideoFrame<"u"&&y instanceof VideoFrame){const G=Math.floor(q*Z.width),_e=Math.floor(q*Z.height);h===void 0&&(h=g(G,_e));const ae=_?g(G,_e):h;return ae.width=G,ae.height=_e,ae.getContext("2d").drawImage(y,0,0,G,_e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Z.width+"x"+Z.height+") to ("+G+"x"+_e+")."),ae}else return"data"in y&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Z.width+"x"+Z.height+")."),y;return y}function p(y){return y.generateMipmaps}function f(y){i.generateMipmap(y)}function b(y){return y.isWebGLCubeRenderTarget?i.TEXTURE_CUBE_MAP:y.isWebGL3DRenderTarget?i.TEXTURE_3D:y.isWebGLArrayRenderTarget||y.isCompressedArrayTexture?i.TEXTURE_2D_ARRAY:i.TEXTURE_2D}function T(y,_,F,q,Z=!1){if(y!==null){if(i[y]!==void 0)return i[y];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+y+"'")}let G=_;if(_===i.RED&&(F===i.FLOAT&&(G=i.R32F),F===i.HALF_FLOAT&&(G=i.R16F),F===i.UNSIGNED_BYTE&&(G=i.R8)),_===i.RED_INTEGER&&(F===i.UNSIGNED_BYTE&&(G=i.R8UI),F===i.UNSIGNED_SHORT&&(G=i.R16UI),F===i.UNSIGNED_INT&&(G=i.R32UI),F===i.BYTE&&(G=i.R8I),F===i.SHORT&&(G=i.R16I),F===i.INT&&(G=i.R32I)),_===i.RG&&(F===i.FLOAT&&(G=i.RG32F),F===i.HALF_FLOAT&&(G=i.RG16F),F===i.UNSIGNED_BYTE&&(G=i.RG8)),_===i.RG_INTEGER&&(F===i.UNSIGNED_BYTE&&(G=i.RG8UI),F===i.UNSIGNED_SHORT&&(G=i.RG16UI),F===i.UNSIGNED_INT&&(G=i.RG32UI),F===i.BYTE&&(G=i.RG8I),F===i.SHORT&&(G=i.RG16I),F===i.INT&&(G=i.RG32I)),_===i.RGB_INTEGER&&(F===i.UNSIGNED_BYTE&&(G=i.RGB8UI),F===i.UNSIGNED_SHORT&&(G=i.RGB16UI),F===i.UNSIGNED_INT&&(G=i.RGB32UI),F===i.BYTE&&(G=i.RGB8I),F===i.SHORT&&(G=i.RGB16I),F===i.INT&&(G=i.RGB32I)),_===i.RGBA_INTEGER&&(F===i.UNSIGNED_BYTE&&(G=i.RGBA8UI),F===i.UNSIGNED_SHORT&&(G=i.RGBA16UI),F===i.UNSIGNED_INT&&(G=i.RGBA32UI),F===i.BYTE&&(G=i.RGBA8I),F===i.SHORT&&(G=i.RGBA16I),F===i.INT&&(G=i.RGBA32I)),_===i.RGB&&F===i.UNSIGNED_INT_5_9_9_9_REV&&(G=i.RGB9_E5),_===i.RGBA){const _e=Z?or:Ge.getTransfer(q);F===i.FLOAT&&(G=i.RGBA32F),F===i.HALF_FLOAT&&(G=i.RGBA16F),F===i.UNSIGNED_BYTE&&(G=_e===Ye?i.SRGB8_ALPHA8:i.RGBA8),F===i.UNSIGNED_SHORT_4_4_4_4&&(G=i.RGBA4),F===i.UNSIGNED_SHORT_5_5_5_1&&(G=i.RGB5_A1)}return(G===i.R16F||G===i.R32F||G===i.RG16F||G===i.RG32F||G===i.RGBA16F||G===i.RGBA32F)&&e.get("EXT_color_buffer_float"),G}function S(y,_){let F;return y?_===null||_===Un||_===ii?F=i.DEPTH24_STENCIL8:_===tn?F=i.DEPTH32F_STENCIL8:_===xi&&(F=i.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):_===null||_===Un||_===ii?F=i.DEPTH_COMPONENT24:_===tn?F=i.DEPTH_COMPONENT32F:_===xi&&(F=i.DEPTH_COMPONENT16),F}function U(y,_){return p(y)===!0||y.isFramebufferTexture&&y.minFilter!==Ht&&y.minFilter!==kt?Math.log2(Math.max(_.width,_.height))+1:y.mipmaps!==void 0&&y.mipmaps.length>0?y.mipmaps.length:y.isCompressedTexture&&Array.isArray(y.image)?_.mipmaps.length:1}function R(y){const _=y.target;_.removeEventListener("dispose",R),I(_),_.isVideoTexture&&u.delete(_)}function w(y){const _=y.target;_.removeEventListener("dispose",w),M(_)}function I(y){const _=n.get(y);if(_.__webglInit===void 0)return;const F=y.source,q=d.get(F);if(q){const Z=q[_.__cacheKey];Z.usedTimes--,Z.usedTimes===0&&E(y),Object.keys(q).length===0&&d.delete(F)}n.remove(y)}function E(y){const _=n.get(y);i.deleteTexture(_.__webglTexture);const F=y.source,q=d.get(F);delete q[_.__cacheKey],a.memory.textures--}function M(y){const _=n.get(y);if(y.depthTexture&&(y.depthTexture.dispose(),n.remove(y.depthTexture)),y.isWebGLCubeRenderTarget)for(let q=0;q<6;q++){if(Array.isArray(_.__webglFramebuffer[q]))for(let Z=0;Z<_.__webglFramebuffer[q].length;Z++)i.deleteFramebuffer(_.__webglFramebuffer[q][Z]);else i.deleteFramebuffer(_.__webglFramebuffer[q]);_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer[q])}else{if(Array.isArray(_.__webglFramebuffer))for(let q=0;q<_.__webglFramebuffer.length;q++)i.deleteFramebuffer(_.__webglFramebuffer[q]);else i.deleteFramebuffer(_.__webglFramebuffer);if(_.__webglDepthbuffer&&i.deleteRenderbuffer(_.__webglDepthbuffer),_.__webglMultisampledFramebuffer&&i.deleteFramebuffer(_.__webglMultisampledFramebuffer),_.__webglColorRenderbuffer)for(let q=0;q<_.__webglColorRenderbuffer.length;q++)_.__webglColorRenderbuffer[q]&&i.deleteRenderbuffer(_.__webglColorRenderbuffer[q]);_.__webglDepthRenderbuffer&&i.deleteRenderbuffer(_.__webglDepthRenderbuffer)}const F=y.textures;for(let q=0,Z=F.length;q=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+y+" texture units while this GPU supports only "+r.maxTextures),C+=1,y}function j(y){const _=[];return _.push(y.wrapS),_.push(y.wrapT),_.push(y.wrapR||0),_.push(y.magFilter),_.push(y.minFilter),_.push(y.anisotropy),_.push(y.internalFormat),_.push(y.format),_.push(y.type),_.push(y.generateMipmaps),_.push(y.premultiplyAlpha),_.push(y.flipY),_.push(y.unpackAlignment),_.push(y.colorSpace),_.join()}function K(y,_){const F=n.get(y);if(y.isVideoTexture&&xe(y),y.isRenderTargetTexture===!1&&y.version>0&&F.__version!==y.version){const q=y.image;if(q===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(q.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{W(F,y,_);return}}t.bindTexture(i.TEXTURE_2D,F.__webglTexture,i.TEXTURE0+_)}function X(y,_){const F=n.get(y);if(y.version>0&&F.__version!==y.version){W(F,y,_);return}t.bindTexture(i.TEXTURE_2D_ARRAY,F.__webglTexture,i.TEXTURE0+_)}function $(y,_){const F=n.get(y);if(y.version>0&&F.__version!==y.version){W(F,y,_);return}t.bindTexture(i.TEXTURE_3D,F.__webglTexture,i.TEXTURE0+_)}function V(y,_){const F=n.get(y);if(y.version>0&&F.__version!==y.version){ee(F,y,_);return}t.bindTexture(i.TEXTURE_CUBE_MAP,F.__webglTexture,i.TEXTURE0+_)}const re={[ls]:i.REPEAT,[Ln]:i.CLAMP_TO_EDGE,[cs]:i.MIRRORED_REPEAT},ue={[Ht]:i.NEAREST,[Rl]:i.NEAREST_MIPMAP_NEAREST,[wi]:i.NEAREST_MIPMAP_LINEAR,[kt]:i.LINEAR,[vr]:i.LINEAR_MIPMAP_NEAREST,[Dn]:i.LINEAR_MIPMAP_LINEAR},ve={[Ll]:i.NEVER,[Ol]:i.ALWAYS,[Dl]:i.LESS,[Ao]:i.LEQUAL,[Ul]:i.EQUAL,[Fl]:i.GEQUAL,[Il]:i.GREATER,[Nl]:i.NOTEQUAL};function De(y,_){if(_.type===tn&&e.has("OES_texture_float_linear")===!1&&(_.magFilter===kt||_.magFilter===vr||_.magFilter===wi||_.magFilter===Dn||_.minFilter===kt||_.minFilter===vr||_.minFilter===wi||_.minFilter===Dn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),i.texParameteri(y,i.TEXTURE_WRAP_S,re[_.wrapS]),i.texParameteri(y,i.TEXTURE_WRAP_T,re[_.wrapT]),(y===i.TEXTURE_3D||y===i.TEXTURE_2D_ARRAY)&&i.texParameteri(y,i.TEXTURE_WRAP_R,re[_.wrapR]),i.texParameteri(y,i.TEXTURE_MAG_FILTER,ue[_.magFilter]),i.texParameteri(y,i.TEXTURE_MIN_FILTER,ue[_.minFilter]),_.compareFunction&&(i.texParameteri(y,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE),i.texParameteri(y,i.TEXTURE_COMPARE_FUNC,ve[_.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(_.magFilter===Ht||_.minFilter!==wi&&_.minFilter!==Dn||_.type===tn&&e.has("OES_texture_float_linear")===!1)return;if(_.anisotropy>1||n.get(_).__currentAnisotropy){const F=e.get("EXT_texture_filter_anisotropic");i.texParameterf(y,F.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(_.anisotropy,r.getMaxAnisotropy())),n.get(_).__currentAnisotropy=_.anisotropy}}}function Ke(y,_){let F=!1;y.__webglInit===void 0&&(y.__webglInit=!0,_.addEventListener("dispose",R));const q=_.source;let Z=d.get(q);Z===void 0&&(Z={},d.set(q,Z));const G=j(_);if(G!==y.__cacheKey){Z[G]===void 0&&(Z[G]={texture:i.createTexture(),usedTimes:0},a.memory.textures++,F=!0),Z[G].usedTimes++;const _e=Z[y.__cacheKey];_e!==void 0&&(Z[y.__cacheKey].usedTimes--,_e.usedTimes===0&&E(_)),y.__cacheKey=G,y.__webglTexture=Z[G].texture}return F}function W(y,_,F){let q=i.TEXTURE_2D;(_.isDataArrayTexture||_.isCompressedArrayTexture)&&(q=i.TEXTURE_2D_ARRAY),_.isData3DTexture&&(q=i.TEXTURE_3D);const Z=Ke(y,_),G=_.source;t.bindTexture(q,y.__webglTexture,i.TEXTURE0+F);const _e=n.get(G);if(G.version!==_e.__version||Z===!0){t.activeTexture(i.TEXTURE0+F);const ae=Ge.getPrimaries(Ge.workingColorSpace),he=_.colorSpace===dn?null:Ge.getPrimaries(_.colorSpace),ze=_.colorSpace===dn||ae===he?i.NONE:i.BROWSER_DEFAULT_WEBGL;i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,_.flipY),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_.premultiplyAlpha),i.pixelStorei(i.UNPACK_ALIGNMENT,_.unpackAlignment),i.pixelStorei(i.UNPACK_COLORSPACE_CONVERSION_WEBGL,ze);let Q=x(_.image,!1,r.maxTextureSize);Q=$e(_,Q);const fe=s.convert(_.format,_.colorSpace),ye=s.convert(_.type);let be=T(_.internalFormat,fe,ye,_.colorSpace,_.isVideoTexture);De(q,_);let de;const Be=_.mipmaps,Pe=_.isVideoTexture!==!0,Ze=_e.__version===void 0||Z===!0,P=G.dataReady,ne=U(_,Q);if(_.isDepthTexture)be=S(_.format===ri,_.type),Ze&&(Pe?t.texStorage2D(i.TEXTURE_2D,1,be,Q.width,Q.height):t.texImage2D(i.TEXTURE_2D,0,be,Q.width,Q.height,0,fe,ye,null));else if(_.isDataTexture)if(Be.length>0){Pe&&Ze&&t.texStorage2D(i.TEXTURE_2D,ne,be,Be[0].width,Be[0].height);for(let H=0,Y=Be.length;H0){const le=Oa(de.width,de.height,_.format,_.type);for(const oe of _.layerUpdates){const we=de.data.subarray(oe*le/de.data.BYTES_PER_ELEMENT,(oe+1)*le/de.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,H,0,0,oe,de.width,de.height,1,fe,we)}_.clearLayerUpdates()}else t.compressedTexSubImage3D(i.TEXTURE_2D_ARRAY,H,0,0,0,de.width,de.height,Q.depth,fe,de.data)}else t.compressedTexImage3D(i.TEXTURE_2D_ARRAY,H,be,de.width,de.height,Q.depth,0,de.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else Pe?P&&t.texSubImage3D(i.TEXTURE_2D_ARRAY,H,0,0,0,de.width,de.height,Q.depth,fe,ye,de.data):t.texImage3D(i.TEXTURE_2D_ARRAY,H,be,de.width,de.height,Q.depth,0,fe,ye,de.data)}else{Pe&&Ze&&t.texStorage2D(i.TEXTURE_2D,ne,be,Be[0].width,Be[0].height);for(let H=0,Y=Be.length;H0){const H=Oa(Q.width,Q.height,_.format,_.type);for(const Y of _.layerUpdates){const le=Q.data.subarray(Y*H/Q.data.BYTES_PER_ELEMENT,(Y+1)*H/Q.data.BYTES_PER_ELEMENT);t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,Y,Q.width,Q.height,1,fe,ye,le)}_.clearLayerUpdates()}else t.texSubImage3D(i.TEXTURE_2D_ARRAY,0,0,0,0,Q.width,Q.height,Q.depth,fe,ye,Q.data)}else t.texImage3D(i.TEXTURE_2D_ARRAY,0,be,Q.width,Q.height,Q.depth,0,fe,ye,Q.data);else if(_.isData3DTexture)Pe?(Ze&&t.texStorage3D(i.TEXTURE_3D,ne,be,Q.width,Q.height,Q.depth),P&&t.texSubImage3D(i.TEXTURE_3D,0,0,0,0,Q.width,Q.height,Q.depth,fe,ye,Q.data)):t.texImage3D(i.TEXTURE_3D,0,be,Q.width,Q.height,Q.depth,0,fe,ye,Q.data);else if(_.isFramebufferTexture){if(Ze)if(Pe)t.texStorage2D(i.TEXTURE_2D,ne,be,Q.width,Q.height);else{let H=Q.width,Y=Q.height;for(let le=0;le>=1,Y>>=1}}else if(Be.length>0){if(Pe&&Ze){const H=ge(Be[0]);t.texStorage2D(i.TEXTURE_2D,ne,be,H.width,H.height)}for(let H=0,Y=Be.length;H0&&ne++;const Y=ge(fe[0]);t.texStorage2D(i.TEXTURE_CUBE_MAP,ne,Be,Y.width,Y.height)}for(let Y=0;Y<6;Y++)if(Q){Pe?P&&t.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,0,0,fe[Y].width,fe[Y].height,be,de,fe[Y].data):t.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,Be,fe[Y].width,fe[Y].height,0,be,de,fe[Y].data);for(let le=0;le>G),ye=Math.max(1,_.height>>G);Z===i.TEXTURE_3D||Z===i.TEXTURE_2D_ARRAY?t.texImage3D(Z,G,he,fe,ye,_.depth,0,_e,ae,null):t.texImage2D(Z,G,he,fe,ye,0,_e,ae,null)}t.bindFramebuffer(i.FRAMEBUFFER,y),Oe(_)?o.framebufferTexture2DMultisampleEXT(i.FRAMEBUFFER,q,Z,Q.__webglTexture,0,Fe(_)):(Z===i.TEXTURE_2D||Z>=i.TEXTURE_CUBE_MAP_POSITIVE_X&&Z<=i.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&i.framebufferTexture2D(i.FRAMEBUFFER,q,Z,Q.__webglTexture,G),t.bindFramebuffer(i.FRAMEBUFFER,null)}function se(y,_,F){if(i.bindRenderbuffer(i.RENDERBUFFER,y),_.depthBuffer){const q=_.depthTexture,Z=q&&q.isDepthTexture?q.type:null,G=S(_.stencilBuffer,Z),_e=_.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,ae=Fe(_);Oe(_)?o.renderbufferStorageMultisampleEXT(i.RENDERBUFFER,ae,G,_.width,_.height):F?i.renderbufferStorageMultisample(i.RENDERBUFFER,ae,G,_.width,_.height):i.renderbufferStorage(i.RENDERBUFFER,G,_.width,_.height),i.framebufferRenderbuffer(i.FRAMEBUFFER,_e,i.RENDERBUFFER,y)}else{const q=_.textures;for(let Z=0;Z{delete _.__boundDepthTexture,delete _.__depthDisposeCallback,q.removeEventListener("dispose",Z)};q.addEventListener("dispose",Z),_.__depthDisposeCallback=Z}_.__boundDepthTexture=q}if(y.depthTexture&&!_.__autoAllocateDepthBuffer){if(F)throw new Error("target.depthTexture not supported in Cube render targets");Ee(_.__webglFramebuffer,y)}else if(F){_.__webglDepthbuffer=[];for(let q=0;q<6;q++)if(t.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer[q]),_.__webglDepthbuffer[q]===void 0)_.__webglDepthbuffer[q]=i.createRenderbuffer(),se(_.__webglDepthbuffer[q],y,!1);else{const Z=y.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,G=_.__webglDepthbuffer[q];i.bindRenderbuffer(i.RENDERBUFFER,G),i.framebufferRenderbuffer(i.FRAMEBUFFER,Z,i.RENDERBUFFER,G)}}else if(t.bindFramebuffer(i.FRAMEBUFFER,_.__webglFramebuffer),_.__webglDepthbuffer===void 0)_.__webglDepthbuffer=i.createRenderbuffer(),se(_.__webglDepthbuffer,y,!1);else{const q=y.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,Z=_.__webglDepthbuffer;i.bindRenderbuffer(i.RENDERBUFFER,Z),i.framebufferRenderbuffer(i.FRAMEBUFFER,q,i.RENDERBUFFER,Z)}t.bindFramebuffer(i.FRAMEBUFFER,null)}function Te(y,_,F){const q=n.get(y);_!==void 0&&me(q.__webglFramebuffer,y,y.texture,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,0),F!==void 0&&ke(y)}function it(y){const _=y.texture,F=n.get(y),q=n.get(_);y.addEventListener("dispose",w);const Z=y.textures,G=y.isWebGLCubeRenderTarget===!0,_e=Z.length>1;if(_e||(q.__webglTexture===void 0&&(q.__webglTexture=i.createTexture()),q.__version=_.version,a.memory.textures++),G){F.__webglFramebuffer=[];for(let ae=0;ae<6;ae++)if(_.mipmaps&&_.mipmaps.length>0){F.__webglFramebuffer[ae]=[];for(let he=0;he<_.mipmaps.length;he++)F.__webglFramebuffer[ae][he]=i.createFramebuffer()}else F.__webglFramebuffer[ae]=i.createFramebuffer()}else{if(_.mipmaps&&_.mipmaps.length>0){F.__webglFramebuffer=[];for(let ae=0;ae<_.mipmaps.length;ae++)F.__webglFramebuffer[ae]=i.createFramebuffer()}else F.__webglFramebuffer=i.createFramebuffer();if(_e)for(let ae=0,he=Z.length;ae0&&Oe(y)===!1){F.__webglMultisampledFramebuffer=i.createFramebuffer(),F.__webglColorRenderbuffer=[],t.bindFramebuffer(i.FRAMEBUFFER,F.__webglMultisampledFramebuffer);for(let ae=0;ae0)for(let he=0;he<_.mipmaps.length;he++)me(F.__webglFramebuffer[ae][he],y,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+ae,he);else me(F.__webglFramebuffer[ae],y,_,i.COLOR_ATTACHMENT0,i.TEXTURE_CUBE_MAP_POSITIVE_X+ae,0);p(_)&&f(i.TEXTURE_CUBE_MAP),t.unbindTexture()}else if(_e){for(let ae=0,he=Z.length;ae0)for(let he=0;he<_.mipmaps.length;he++)me(F.__webglFramebuffer[he],y,_,i.COLOR_ATTACHMENT0,ae,he);else me(F.__webglFramebuffer,y,_,i.COLOR_ATTACHMENT0,ae,0);p(_)&&f(ae),t.unbindTexture()}y.depthBuffer&&ke(y)}function Qe(y){const _=y.textures;for(let F=0,q=_.length;F0){if(Oe(y)===!1){const _=y.textures,F=y.width,q=y.height;let Z=i.COLOR_BUFFER_BIT;const G=y.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT,_e=n.get(y),ae=_.length>1;if(ae)for(let he=0;he<_.length;he++)t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,null),t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,null,0);t.bindFramebuffer(i.READ_FRAMEBUFFER,_e.__webglMultisampledFramebuffer),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,_e.__webglFramebuffer);for(let he=0;he<_.length;he++){if(y.resolveDepthBuffer&&(y.depthBuffer&&(Z|=i.DEPTH_BUFFER_BIT),y.stencilBuffer&&y.resolveStencilBuffer&&(Z|=i.STENCIL_BUFFER_BIT)),ae){i.framebufferRenderbuffer(i.READ_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.RENDERBUFFER,_e.__webglColorRenderbuffer[he]);const ze=n.get(_[he]).__webglTexture;i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0,i.TEXTURE_2D,ze,0)}i.blitFramebuffer(0,0,F,q,0,0,F,q,Z,i.NEAREST),l===!0&&(Ne.length=0,A.length=0,Ne.push(i.COLOR_ATTACHMENT0+he),y.depthBuffer&&y.resolveDepthBuffer===!1&&(Ne.push(G),A.push(G),i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,A)),i.invalidateFramebuffer(i.READ_FRAMEBUFFER,Ne))}if(t.bindFramebuffer(i.READ_FRAMEBUFFER,null),t.bindFramebuffer(i.DRAW_FRAMEBUFFER,null),ae)for(let he=0;he<_.length;he++){t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglMultisampledFramebuffer),i.framebufferRenderbuffer(i.FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.RENDERBUFFER,_e.__webglColorRenderbuffer[he]);const ze=n.get(_[he]).__webglTexture;t.bindFramebuffer(i.FRAMEBUFFER,_e.__webglFramebuffer),i.framebufferTexture2D(i.DRAW_FRAMEBUFFER,i.COLOR_ATTACHMENT0+he,i.TEXTURE_2D,ze,0)}t.bindFramebuffer(i.DRAW_FRAMEBUFFER,_e.__webglMultisampledFramebuffer)}else if(y.depthBuffer&&y.resolveDepthBuffer===!1&&l){const _=y.stencilBuffer?i.DEPTH_STENCIL_ATTACHMENT:i.DEPTH_ATTACHMENT;i.invalidateFramebuffer(i.DRAW_FRAMEBUFFER,[_])}}}function Fe(y){return Math.min(r.maxSamples,y.samples)}function Oe(y){const _=n.get(y);return y.samples>0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&_.__useRenderToTexture!==!1}function xe(y){const _=a.render.frame;u.get(y)!==_&&(u.set(y,_),y.update())}function $e(y,_){const F=y.colorSpace,q=y.format,Z=y.type;return y.isCompressedTexture===!0||y.isVideoTexture===!0||F!==si&&F!==dn&&(Ge.getTransfer(F)===Ye?(q!==Bt||Z!==sn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",F)),_}function ge(y){return typeof HTMLImageElement<"u"&&y instanceof HTMLImageElement?(c.width=y.naturalWidth||y.width,c.height=y.naturalHeight||y.height):typeof VideoFrame<"u"&&y instanceof VideoFrame?(c.width=y.displayWidth,c.height=y.displayHeight):(c.width=y.width,c.height=y.height),c}this.allocateTextureUnit=z,this.resetTextureUnits=k,this.setTexture2D=K,this.setTexture2DArray=X,this.setTexture3D=$,this.setTextureCube=V,this.rebindTextures=Te,this.setupRenderTarget=it,this.updateRenderTargetMipmap=Qe,this.updateMultisampleRenderTarget=At,this.setupDepthRenderbuffer=ke,this.setupFrameBufferTexture=me,this.useMultisampledRTT=Oe}function ip(i,e){function t(n,r=dn){let s;const a=Ge.getTransfer(r);if(n===sn)return i.UNSIGNED_BYTE;if(n===Gs)return i.UNSIGNED_SHORT_4_4_4_4;if(n===ks)return i.UNSIGNED_SHORT_5_5_5_1;if(n===go)return i.UNSIGNED_INT_5_9_9_9_REV;if(n===mo)return i.BYTE;if(n===_o)return i.SHORT;if(n===xi)return i.UNSIGNED_SHORT;if(n===Vs)return i.INT;if(n===Un)return i.UNSIGNED_INT;if(n===tn)return i.FLOAT;if(n===Mi)return i.HALF_FLOAT;if(n===vo)return i.ALPHA;if(n===xo)return i.RGB;if(n===Bt)return i.RGBA;if(n===Mo)return i.LUMINANCE;if(n===So)return i.LUMINANCE_ALPHA;if(n===Jn)return i.DEPTH_COMPONENT;if(n===ri)return i.DEPTH_STENCIL;if(n===Eo)return i.RED;if(n===Ws)return i.RED_INTEGER;if(n===yo)return i.RG;if(n===Xs)return i.RG_INTEGER;if(n===qs)return i.RGBA_INTEGER;if(n===er||n===tr||n===nr||n===ir)if(a===Ye)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(n===er)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===tr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===nr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===ir)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(n===er)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===tr)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===nr)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===ir)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===us||n===hs||n===fs||n===ds)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(n===us)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===hs)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===fs)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===ds)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===ps||n===ms||n===_s)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(n===ps||n===ms)return a===Ye?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(n===_s)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===gs||n===vs||n===xs||n===Ms||n===Ss||n===Es||n===ys||n===Ts||n===bs||n===As||n===Rs||n===ws||n===Cs||n===Ps)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(n===gs)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===vs)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===xs)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===Ms)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Ss)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Es)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===ys)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===Ts)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===bs)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===As)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===Rs)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===ws)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Cs)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Ps)return a===Ye?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===rr||n===Ls||n===Ds)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(n===rr)return a===Ye?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Ls)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Ds)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===To||n===Us||n===Is||n===Ns)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(n===rr)return s.COMPRESSED_RED_RGTC1_EXT;if(n===Us)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===Is)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===Ns)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===ii?i.UNSIGNED_INT_24_8:i[n]!==void 0?i[n]:null}return{convert:t}}const rp=` void main() { gl_Position = vec4( position, 1.0 ); -}`,Td=` +}`,sp=` uniform sampler2DArray depthColor; uniform float depthWidth; uniform float depthHeight; @@ -3824,4 +3824,8 @@ void main() { } -}`;class yd{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(this.texture===null){const r=new xt,s=e.properties.get(r);s.__webglTexture=t.texture,(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){const t=e.cameras[0].viewport,n=new fn({vertexShader:Ed,fragmentShader:Td,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Ht(new er(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class Ad extends ri{constructor(e,t){super();const n=this;let r=null,s=1,a=null,o="local-floor",l=1,c=null,h=null,f=null,d=null,m=null,v=null;const M=new yd,p=t.getContextAttributes();let u=null,b=null;const y=[],T=[],U=new Ze;let D=null;const R=new Ct;R.viewport=new it;const I=new Ct;I.viewport=new it;const S=[R,I],x=new Xl;let w=null,k=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(W){let ee=y[W];return ee===void 0&&(ee=new Rr,y[W]=ee),ee.getTargetRaySpace()},this.getControllerGrip=function(W){let ee=y[W];return ee===void 0&&(ee=new Rr,y[W]=ee),ee.getGripSpace()},this.getHand=function(W){let ee=y[W];return ee===void 0&&(ee=new Rr,y[W]=ee),ee.getHandSpace()};function z(W){const ee=T.indexOf(W.inputSource);if(ee===-1)return;const me=y[ee];me!==void 0&&(me.update(W.inputSource,W.frame,c||a),me.dispatchEvent({type:W.type,data:W.inputSource}))}function K(){r.removeEventListener("select",z),r.removeEventListener("selectstart",z),r.removeEventListener("selectend",z),r.removeEventListener("squeeze",z),r.removeEventListener("squeezestart",z),r.removeEventListener("squeezeend",z),r.removeEventListener("end",K),r.removeEventListener("inputsourceschange",Z);for(let W=0;W=0&&(T[se]=null,y[se].disconnect(me))}for(let ee=0;ee=T.length){T.push(me),se=Ge;break}else if(T[Ge]===null){T[Ge]=me,se=Ge;break}if(se===-1)break}const Ee=y[se];Ee&&Ee.connect(me)}}const X=new B,j=new B;function V(W,ee,me){X.setFromMatrixPosition(ee.matrixWorld),j.setFromMatrixPosition(me.matrixWorld);const se=X.distanceTo(j),Ee=ee.projectionMatrix.elements,Ge=me.projectionMatrix.elements,ye=Ee[14]/(Ee[10]-1),nt=Ee[14]/(Ee[10]+1),Qe=(Ee[9]+1)/Ee[5],Ie=(Ee[9]-1)/Ee[5],A=(Ee[8]-1)/Ee[0],yt=(Ge[8]+1)/Ge[0],Ne=ye*A,Fe=ye*yt,xe=se/(-A+yt),je=xe*-A;if(ee.matrixWorld.decompose(W.position,W.quaternion,W.scale),W.translateX(je),W.translateZ(xe),W.matrixWorld.compose(W.position,W.quaternion,W.scale),W.matrixWorldInverse.copy(W.matrixWorld).invert(),Ee[10]===-1)W.projectionMatrix.copy(ee.projectionMatrix),W.projectionMatrixInverse.copy(ee.projectionMatrixInverse);else{const ge=ye+xe,E=nt+xe,_=Ne-je,N=Fe+(se-je),q=Qe*nt/E*ge,$=Ie*nt/E*ge;W.projectionMatrix.makePerspective(_,N,q,$,ge,E),W.projectionMatrixInverse.copy(W.projectionMatrix).invert()}}function re(W,ee){ee===null?W.matrixWorld.copy(W.matrix):W.matrixWorld.multiplyMatrices(ee.matrixWorld,W.matrix),W.matrixWorldInverse.copy(W.matrixWorld).invert()}this.updateCamera=function(W){if(r===null)return;let ee=W.near,me=W.far;M.texture!==null&&(M.depthNear>0&&(ee=M.depthNear),M.depthFar>0&&(me=M.depthFar)),x.near=I.near=R.near=ee,x.far=I.far=R.far=me,(w!==x.near||k!==x.far)&&(r.updateRenderState({depthNear:x.near,depthFar:x.far}),w=x.near,k=x.far),R.layers.mask=W.layers.mask|2,I.layers.mask=W.layers.mask|4,x.layers.mask=R.layers.mask|I.layers.mask;const se=W.parent,Ee=x.cameras;re(x,se);for(let Ge=0;Ge0&&(p.alphaTest.value=u.alphaTest);const b=e.get(u),y=b.envMap,T=b.envMapRotation;y&&(p.envMap.value=y,Mn.copy(T),Mn.x*=-1,Mn.y*=-1,Mn.z*=-1,y.isCubeTexture&&y.isRenderTargetTexture===!1&&(Mn.y*=-1,Mn.z*=-1),p.envMapRotation.value.setFromMatrix4(bd.makeRotationFromEuler(Mn)),p.flipEnvMap.value=y.isCubeTexture&&y.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=u.reflectivity,p.ior.value=u.ior,p.refractionRatio.value=u.refractionRatio),u.lightMap&&(p.lightMap.value=u.lightMap,p.lightMapIntensity.value=u.lightMapIntensity,t(u.lightMap,p.lightMapTransform)),u.aoMap&&(p.aoMap.value=u.aoMap,p.aoMapIntensity.value=u.aoMapIntensity,t(u.aoMap,p.aoMapTransform))}function a(p,u){p.diffuse.value.copy(u.color),p.opacity.value=u.opacity,u.map&&(p.map.value=u.map,t(u.map,p.mapTransform))}function o(p,u){p.dashSize.value=u.dashSize,p.totalSize.value=u.dashSize+u.gapSize,p.scale.value=u.scale}function l(p,u,b,y){p.diffuse.value.copy(u.color),p.opacity.value=u.opacity,p.size.value=u.size*b,p.scale.value=y*.5,u.map&&(p.map.value=u.map,t(u.map,p.uvTransform)),u.alphaMap&&(p.alphaMap.value=u.alphaMap,t(u.alphaMap,p.alphaMapTransform)),u.alphaTest>0&&(p.alphaTest.value=u.alphaTest)}function c(p,u){p.diffuse.value.copy(u.color),p.opacity.value=u.opacity,p.rotation.value=u.rotation,u.map&&(p.map.value=u.map,t(u.map,p.mapTransform)),u.alphaMap&&(p.alphaMap.value=u.alphaMap,t(u.alphaMap,p.alphaMapTransform)),u.alphaTest>0&&(p.alphaTest.value=u.alphaTest)}function h(p,u){p.specular.value.copy(u.specular),p.shininess.value=Math.max(u.shininess,1e-4)}function f(p,u){u.gradientMap&&(p.gradientMap.value=u.gradientMap)}function d(p,u){p.metalness.value=u.metalness,u.metalnessMap&&(p.metalnessMap.value=u.metalnessMap,t(u.metalnessMap,p.metalnessMapTransform)),p.roughness.value=u.roughness,u.roughnessMap&&(p.roughnessMap.value=u.roughnessMap,t(u.roughnessMap,p.roughnessMapTransform)),u.envMap&&(p.envMapIntensity.value=u.envMapIntensity)}function m(p,u,b){p.ior.value=u.ior,u.sheen>0&&(p.sheenColor.value.copy(u.sheenColor).multiplyScalar(u.sheen),p.sheenRoughness.value=u.sheenRoughness,u.sheenColorMap&&(p.sheenColorMap.value=u.sheenColorMap,t(u.sheenColorMap,p.sheenColorMapTransform)),u.sheenRoughnessMap&&(p.sheenRoughnessMap.value=u.sheenRoughnessMap,t(u.sheenRoughnessMap,p.sheenRoughnessMapTransform))),u.clearcoat>0&&(p.clearcoat.value=u.clearcoat,p.clearcoatRoughness.value=u.clearcoatRoughness,u.clearcoatMap&&(p.clearcoatMap.value=u.clearcoatMap,t(u.clearcoatMap,p.clearcoatMapTransform)),u.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=u.clearcoatRoughnessMap,t(u.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),u.clearcoatNormalMap&&(p.clearcoatNormalMap.value=u.clearcoatNormalMap,t(u.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(u.clearcoatNormalScale),u.side===vt&&p.clearcoatNormalScale.value.negate())),u.dispersion>0&&(p.dispersion.value=u.dispersion),u.iridescence>0&&(p.iridescence.value=u.iridescence,p.iridescenceIOR.value=u.iridescenceIOR,p.iridescenceThicknessMinimum.value=u.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=u.iridescenceThicknessRange[1],u.iridescenceMap&&(p.iridescenceMap.value=u.iridescenceMap,t(u.iridescenceMap,p.iridescenceMapTransform)),u.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=u.iridescenceThicknessMap,t(u.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),u.transmission>0&&(p.transmission.value=u.transmission,p.transmissionSamplerMap.value=b.texture,p.transmissionSamplerSize.value.set(b.width,b.height),u.transmissionMap&&(p.transmissionMap.value=u.transmissionMap,t(u.transmissionMap,p.transmissionMapTransform)),p.thickness.value=u.thickness,u.thicknessMap&&(p.thicknessMap.value=u.thicknessMap,t(u.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=u.attenuationDistance,p.attenuationColor.value.copy(u.attenuationColor)),u.anisotropy>0&&(p.anisotropyVector.value.set(u.anisotropy*Math.cos(u.anisotropyRotation),u.anisotropy*Math.sin(u.anisotropyRotation)),u.anisotropyMap&&(p.anisotropyMap.value=u.anisotropyMap,t(u.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=u.specularIntensity,p.specularColor.value.copy(u.specularColor),u.specularColorMap&&(p.specularColorMap.value=u.specularColorMap,t(u.specularColorMap,p.specularColorMapTransform)),u.specularIntensityMap&&(p.specularIntensityMap.value=u.specularIntensityMap,t(u.specularIntensityMap,p.specularIntensityMapTransform))}function v(p,u){u.matcap&&(p.matcap.value=u.matcap)}function M(p,u){const b=e.get(u).light;p.referencePosition.value.setFromMatrixPosition(b.matrixWorld),p.nearDistance.value=b.shadow.camera.near,p.farDistance.value=b.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function wd(i,e,t,n){let r={},s={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(b,y){const T=y.program;n.uniformBlockBinding(b,T)}function c(b,y){let T=r[b.id];T===void 0&&(v(b),T=h(b),r[b.id]=T,b.addEventListener("dispose",p));const U=y.program;n.updateUBOMapping(b,U);const D=e.render.frame;s[b.id]!==D&&(d(b),s[b.id]=D)}function h(b){const y=f();b.__bindingPointIndex=y;const T=i.createBuffer(),U=b.__size,D=b.usage;return i.bindBuffer(i.UNIFORM_BUFFER,T),i.bufferData(i.UNIFORM_BUFFER,U,D),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,y,T),T}function f(){for(let b=0;b0&&(T+=U-D),b.__size=T,b.__cache={},this}function M(b){const y={boundary:0,storage:0};return typeof b=="number"||typeof b=="boolean"?(y.boundary=4,y.storage=4):b.isVector2?(y.boundary=8,y.storage=8):b.isVector3||b.isColor?(y.boundary=16,y.storage=12):b.isVector4?(y.boundary=16,y.storage=16):b.isMatrix3?(y.boundary=48,y.storage=48):b.isMatrix4?(y.boundary=64,y.storage=64):b.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",b),y}function p(b){const y=b.target;y.removeEventListener("dispose",p);const T=a.indexOf(y.__bindingPointIndex);a.splice(T,1),i.deleteBuffer(r[y.id]),delete r[y.id],delete s[y.id]}function u(){for(const b in r)i.deleteBuffer(r[b]);a=[],r={},s={}}return{bind:l,update:c,dispose:u}}class Cd{constructor(e={}){const{canvas:t=ul(),context:n=null,depth:r=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:f=!1,reverseDepthBuffer:d=!1}=e;this.isWebGLRenderer=!0;let m;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=n.getContextAttributes().alpha}else m=a;const v=new Uint32Array(4),M=new Int32Array(4);let p=null,u=null;const b=[],y=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=wt,this.toneMapping=un,this.toneMappingExposure=1;const T=this;let U=!1,D=0,R=0,I=null,S=-1,x=null;const w=new it,k=new it;let z=null;const K=new Ye(0);let Z=0,X=t.width,j=t.height,V=1,re=null,ue=null;const ve=new it(0,0,X,j),Le=new it(0,0,X,j);let Ke=!1;const W=new so;let ee=!1,me=!1;this.transmissionResolutionScale=1;const se=new at,Ee=new at,Ge=new B,ye=new it,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Qe=!1;function Ie(){return I===null?V:1}let A=n;function yt(g,P){return t.getContext(g,P)}try{const g={alpha:!0,depth:r,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:h,failIfMajorPerformanceCaveat:f};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${Ts}`),t.addEventListener("webglcontextlost",Y,!1),t.addEventListener("webglcontextrestored",le,!1),t.addEventListener("webglcontextcreationerror",oe,!1),A===null){const P="webgl2";if(A=yt(P,g),A===null)throw yt(P)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(g){throw console.error("THREE.WebGLRenderer: "+g.message),g}let Ne,Fe,xe,je,ge,E,_,N,q,$,G,_e,ae,he,Be,Q,fe,Te,Ae,de,Oe,Pe,$e,C;function ne(){Ne=new Bh(A),Ne.init(),Pe=new Sd(A,Ne),Fe=new Dh(A,Ne,e,Pe),xe=new xd(A,Ne),Fe.reverseDepthBuffer&&d&&xe.buffers.depth.setReversed(!0),je=new Vh(A),ge=new ad,E=new Md(A,Ne,xe,ge,Fe,Pe,je),_=new Uh(T),N=new Oh(T),q=new Yl(A),$e=new Ch(A,q),$=new zh(A,q,je,$e),G=new kh(A,$,q,je),Ae=new Gh(A,Fe,E),Q=new Lh(ge),_e=new sd(T,_,N,Ne,Fe,$e,Q),ae=new Rd(T,ge),he=new ld,Be=new pd(Ne),Te=new wh(T,_,N,xe,G,m,l),fe=new gd(T,G,Fe),C=new wd(A,je,Fe,xe),de=new Ph(A,Ne,je),Oe=new Hh(A,Ne,je),je.programs=_e.programs,T.capabilities=Fe,T.extensions=Ne,T.properties=ge,T.renderLists=he,T.shadowMap=fe,T.state=xe,T.info=je}ne();const H=new Ad(T,A);this.xr=H,this.getContext=function(){return A},this.getContextAttributes=function(){return A.getContextAttributes()},this.forceContextLoss=function(){const g=Ne.get("WEBGL_lose_context");g&&g.loseContext()},this.forceContextRestore=function(){const g=Ne.get("WEBGL_lose_context");g&&g.restoreContext()},this.getPixelRatio=function(){return V},this.setPixelRatio=function(g){g!==void 0&&(V=g,this.setSize(X,j,!1))},this.getSize=function(g){return g.set(X,j)},this.setSize=function(g,P,F=!0){if(H.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}X=g,j=P,t.width=Math.floor(g*V),t.height=Math.floor(P*V),F===!0&&(t.style.width=g+"px",t.style.height=P+"px"),this.setViewport(0,0,g,P)},this.getDrawingBufferSize=function(g){return g.set(X*V,j*V).floor()},this.setDrawingBufferSize=function(g,P,F){X=g,j=P,V=F,t.width=Math.floor(g*F),t.height=Math.floor(P*F),this.setViewport(0,0,g,P)},this.getCurrentViewport=function(g){return g.copy(w)},this.getViewport=function(g){return g.copy(ve)},this.setViewport=function(g,P,F,O){g.isVector4?ve.set(g.x,g.y,g.z,g.w):ve.set(g,P,F,O),xe.viewport(w.copy(ve).multiplyScalar(V).round())},this.getScissor=function(g){return g.copy(Le)},this.setScissor=function(g,P,F,O){g.isVector4?Le.set(g.x,g.y,g.z,g.w):Le.set(g,P,F,O),xe.scissor(k.copy(Le).multiplyScalar(V).round())},this.getScissorTest=function(){return Ke},this.setScissorTest=function(g){xe.setScissorTest(Ke=g)},this.setOpaqueSort=function(g){re=g},this.setTransparentSort=function(g){ue=g},this.getClearColor=function(g){return g.copy(Te.getClearColor())},this.setClearColor=function(){Te.setClearColor(...arguments)},this.getClearAlpha=function(){return Te.getClearAlpha()},this.setClearAlpha=function(){Te.setClearAlpha(...arguments)},this.clear=function(g=!0,P=!0,F=!0){let O=0;if(g){let L=!1;if(I!==null){const J=I.texture.format;L=J===Cs||J===ws||J===Rs}if(L){const J=I.texture.type,ie=J===Qt||J===Cn||J===pi||J===ei||J===As||J===bs,ce=Te.getClearColor(),pe=Te.getClearAlpha(),be=ce.r,Re=ce.g,Me=ce.b;ie?(v[0]=be,v[1]=Re,v[2]=Me,v[3]=pe,A.clearBufferuiv(A.COLOR,0,v)):(M[0]=be,M[1]=Re,M[2]=Me,M[3]=pe,A.clearBufferiv(A.COLOR,0,M))}else O|=A.COLOR_BUFFER_BIT}P&&(O|=A.DEPTH_BUFFER_BIT),F&&(O|=A.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),A.clear(O)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Y,!1),t.removeEventListener("webglcontextrestored",le,!1),t.removeEventListener("webglcontextcreationerror",oe,!1),Te.dispose(),he.dispose(),Be.dispose(),ge.dispose(),_.dispose(),N.dispose(),G.dispose(),$e.dispose(),C.dispose(),_e.dispose(),H.dispose(),H.removeEventListener("sessionstart",Is),H.removeEventListener("sessionend",Ns),dn.stop()};function Y(g){g.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),U=!0}function le(){console.log("THREE.WebGLRenderer: Context Restored."),U=!1;const g=je.autoReset,P=fe.enabled,F=fe.autoUpdate,O=fe.needsUpdate,L=fe.type;ne(),je.autoReset=g,fe.enabled=P,fe.autoUpdate=F,fe.needsUpdate=O,fe.type=L}function oe(g){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",g.statusMessage)}function we(g){const P=g.target;P.removeEventListener("dispose",we),et(P)}function et(g){ht(g),ge.remove(g)}function ht(g){const P=ge.get(g).programs;P!==void 0&&(P.forEach(function(F){_e.releaseProgram(F)}),g.isShaderMaterial&&_e.releaseShaderCache(g))}this.renderBufferDirect=function(g,P,F,O,L,J){P===null&&(P=nt);const ie=L.isMesh&&L.matrixWorld.determinant()<0,ce=mo(g,P,F,O,L);xe.setMaterial(O,ie);let pe=F.index,be=1;if(O.wireframe===!0){if(pe=$.getWireframeAttribute(F),pe===void 0)return;be=2}const Re=F.drawRange,Me=F.attributes.position;let ze=Re.start*be,ke=(Re.start+Re.count)*be;J!==null&&(ze=Math.max(ze,J.start*be),ke=Math.min(ke,(J.start+J.count)*be)),pe!==null?(ze=Math.max(ze,0),ke=Math.min(ke,pe.count)):Me!=null&&(ze=Math.max(ze,0),ke=Math.min(ke,Me.count));const rt=ke-ze;if(rt<0||rt===1/0)return;$e.setup(L,O,ce,F,pe);let tt,He=de;if(pe!==null&&(tt=q.get(pe),He=Oe,He.setIndex(tt)),L.isMesh)O.wireframe===!0?(xe.setLineWidth(O.wireframeLinewidth*Ie()),He.setMode(A.LINES)):He.setMode(A.TRIANGLES);else if(L.isLine){let Se=O.linewidth;Se===void 0&&(Se=1),xe.setLineWidth(Se*Ie()),L.isLineSegments?He.setMode(A.LINES):L.isLineLoop?He.setMode(A.LINE_LOOP):He.setMode(A.LINE_STRIP)}else L.isPoints?He.setMode(A.POINTS):L.isSprite&&He.setMode(A.TRIANGLES);if(L.isBatchedMesh)if(L._multiDrawInstances!==null)Sn("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),He.renderMultiDrawInstances(L._multiDrawStarts,L._multiDrawCounts,L._multiDrawCount,L._multiDrawInstances);else if(Ne.get("WEBGL_multi_draw"))He.renderMultiDraw(L._multiDrawStarts,L._multiDrawCounts,L._multiDrawCount);else{const Se=L._multiDrawStarts,ut=L._multiDrawCounts,We=L._multiDrawCount,Dt=pe?q.get(pe).bytesPerElement:1,Ln=ge.get(O).currentProgram.getUniforms();for(let Mt=0;Mt{function J(){if(O.forEach(function(ie){ge.get(ie).currentProgram.isReady()&&O.delete(ie)}),O.size===0){L(g);return}setTimeout(J,10)}Ne.get("KHR_parallel_shader_compile")!==null?J():setTimeout(J,10)})};let Pt=null;function Gt(g){Pt&&Pt(g)}function Is(){dn.stop()}function Ns(){dn.start()}const dn=new oo;dn.setAnimationLoop(Gt),typeof self<"u"&&dn.setContext(self),this.setAnimationLoop=function(g){Pt=g,H.setAnimationLoop(g),g===null?dn.stop():dn.start()},H.addEventListener("sessionstart",Is),H.addEventListener("sessionend",Ns),this.render=function(g,P){if(P!==void 0&&P.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(U===!0)return;if(g.matrixWorldAutoUpdate===!0&&g.updateMatrixWorld(),P.parent===null&&P.matrixWorldAutoUpdate===!0&&P.updateMatrixWorld(),H.enabled===!0&&H.isPresenting===!0&&(H.cameraAutoUpdate===!0&&H.updateCamera(P),P=H.getCamera()),g.isScene===!0&&g.onBeforeRender(T,g,P,I),u=Be.get(g,y.length),u.init(P),y.push(u),Ee.multiplyMatrices(P.projectionMatrix,P.matrixWorldInverse),W.setFromProjectionMatrix(Ee),me=this.localClippingEnabled,ee=Q.init(this.clippingPlanes,me),p=he.get(g,b.length),p.init(),b.push(p),H.enabled===!0&&H.isPresenting===!0){const J=T.xr.getDepthSensingMesh();J!==null&&ir(J,P,-1/0,T.sortObjects)}ir(g,P,0,T.sortObjects),p.finish(),T.sortObjects===!0&&p.sort(re,ue),Qe=H.enabled===!1||H.isPresenting===!1||H.hasDepthSensing()===!1,Qe&&Te.addToRenderList(p,g),this.info.render.frame++,ee===!0&&Q.beginShadows();const F=u.state.shadowsArray;fe.render(F,g,P),ee===!0&&Q.endShadows(),this.info.autoReset===!0&&this.info.reset();const O=p.opaque,L=p.transmissive;if(u.setupLights(),P.isArrayCamera){const J=P.cameras;if(L.length>0)for(let ie=0,ce=J.length;ie0&&Os(O,L,g,P),Qe&&Te.render(g),Fs(p,g,P);I!==null&&R===0&&(E.updateMultisampleRenderTarget(I),E.updateRenderTargetMipmap(I)),g.isScene===!0&&g.onAfterRender(T,g,P),$e.resetDefaultState(),S=-1,x=null,y.pop(),y.length>0?(u=y[y.length-1],ee===!0&&Q.setGlobalState(T.clippingPlanes,u.state.camera)):u=null,b.pop(),b.length>0?p=b[b.length-1]:p=null};function ir(g,P,F,O){if(g.visible===!1)return;if(g.layers.test(P.layers)){if(g.isGroup)F=g.renderOrder;else if(g.isLOD)g.autoUpdate===!0&&g.update(P);else if(g.isLight)u.pushLight(g),g.castShadow&&u.pushShadow(g);else if(g.isSprite){if(!g.frustumCulled||W.intersectsSprite(g)){O&&ye.setFromMatrixPosition(g.matrixWorld).applyMatrix4(Ee);const ie=G.update(g),ce=g.material;ce.visible&&p.push(g,ie,ce,F,ye.z,null)}}else if((g.isMesh||g.isLine||g.isPoints)&&(!g.frustumCulled||W.intersectsObject(g))){const ie=G.update(g),ce=g.material;if(O&&(g.boundingSphere!==void 0?(g.boundingSphere===null&&g.computeBoundingSphere(),ye.copy(g.boundingSphere.center)):(ie.boundingSphere===null&&ie.computeBoundingSphere(),ye.copy(ie.boundingSphere.center)),ye.applyMatrix4(g.matrixWorld).applyMatrix4(Ee)),Array.isArray(ce)){const pe=ie.groups;for(let be=0,Re=pe.length;be0&&xi(L,P,F),J.length>0&&xi(J,P,F),ie.length>0&&xi(ie,P,F),xe.buffers.depth.setTest(!0),xe.buffers.depth.setMask(!0),xe.buffers.color.setMask(!0),xe.setPolygonOffset(!1)}function Os(g,P,F,O){if((F.isScene===!0?F.overrideMaterial:null)!==null)return;u.state.transmissionRenderTarget[O.id]===void 0&&(u.state.transmissionRenderTarget[O.id]=new Pn(1,1,{generateMipmaps:!0,type:Ne.has("EXT_color_buffer_half_float")||Ne.has("EXT_color_buffer_float")?mi:Qt,minFilter:Rn,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Ve.workingColorSpace}));const J=u.state.transmissionRenderTarget[O.id],ie=O.viewport||w;J.setSize(ie.z*T.transmissionResolutionScale,ie.w*T.transmissionResolutionScale);const ce=T.getRenderTarget();T.setRenderTarget(J),T.getClearColor(K),Z=T.getClearAlpha(),Z<1&&T.setClearColor(16777215,.5),T.clear(),Qe&&Te.render(F);const pe=T.toneMapping;T.toneMapping=un;const be=O.viewport;if(O.viewport!==void 0&&(O.viewport=void 0),u.setupLightsView(O),ee===!0&&Q.setGlobalState(T.clippingPlanes,O),xi(g,F,O),E.updateMultisampleRenderTarget(J),E.updateRenderTargetMipmap(J),Ne.has("WEBGL_multisampled_render_to_texture")===!1){let Re=!1;for(let Me=0,ze=P.length;Me0),Me=!!F.morphAttributes.position,ze=!!F.morphAttributes.normal,ke=!!F.morphAttributes.color;let rt=un;O.toneMapped&&(I===null||I.isXRRenderTarget===!0)&&(rt=T.toneMapping);const tt=F.morphAttributes.position||F.morphAttributes.normal||F.morphAttributes.color,He=tt!==void 0?tt.length:0,Se=ge.get(O),ut=u.state.lights;if(ee===!0&&(me===!0||g!==x)){const pt=g===x&&O.id===S;Q.setState(O,g,pt)}let We=!1;O.version===Se.__version?(Se.needsLights&&Se.lightsStateVersion!==ut.state.version||Se.outputColorSpace!==ce||L.isBatchedMesh&&Se.batching===!1||!L.isBatchedMesh&&Se.batching===!0||L.isBatchedMesh&&Se.batchingColor===!0&&L.colorTexture===null||L.isBatchedMesh&&Se.batchingColor===!1&&L.colorTexture!==null||L.isInstancedMesh&&Se.instancing===!1||!L.isInstancedMesh&&Se.instancing===!0||L.isSkinnedMesh&&Se.skinning===!1||!L.isSkinnedMesh&&Se.skinning===!0||L.isInstancedMesh&&Se.instancingColor===!0&&L.instanceColor===null||L.isInstancedMesh&&Se.instancingColor===!1&&L.instanceColor!==null||L.isInstancedMesh&&Se.instancingMorph===!0&&L.morphTexture===null||L.isInstancedMesh&&Se.instancingMorph===!1&&L.morphTexture!==null||Se.envMap!==pe||O.fog===!0&&Se.fog!==J||Se.numClippingPlanes!==void 0&&(Se.numClippingPlanes!==Q.numPlanes||Se.numIntersection!==Q.numIntersection)||Se.vertexAlphas!==be||Se.vertexTangents!==Re||Se.morphTargets!==Me||Se.morphNormals!==ze||Se.morphColors!==ke||Se.toneMapping!==rt||Se.morphTargetsCount!==He)&&(We=!0):(We=!0,Se.__version=O.version);let Dt=Se.currentProgram;We===!0&&(Dt=Mi(O,P,L));let Ln=!1,Mt=!1,oi=!1;const Je=Dt.getUniforms(),At=Se.uniforms;if(xe.useProgram(Dt.program)&&(Ln=!0,Mt=!0,oi=!0),O.id!==S&&(S=O.id,Mt=!0),Ln||x!==g){xe.buffers.depth.getReversed()?(se.copy(g.projectionMatrix),fl(se),dl(se),Je.setValue(A,"projectionMatrix",se)):Je.setValue(A,"projectionMatrix",g.projectionMatrix),Je.setValue(A,"viewMatrix",g.matrixWorldInverse);const _t=Je.map.cameraPosition;_t!==void 0&&_t.setValue(A,Ge.setFromMatrixPosition(g.matrixWorld)),Fe.logarithmicDepthBuffer&&Je.setValue(A,"logDepthBufFC",2/(Math.log(g.far+1)/Math.LN2)),(O.isMeshPhongMaterial||O.isMeshToonMaterial||O.isMeshLambertMaterial||O.isMeshBasicMaterial||O.isMeshStandardMaterial||O.isShaderMaterial)&&Je.setValue(A,"isOrthographic",g.isOrthographicCamera===!0),x!==g&&(x=g,Mt=!0,oi=!0)}if(L.isSkinnedMesh){Je.setOptional(A,L,"bindMatrix"),Je.setOptional(A,L,"bindMatrixInverse");const pt=L.skeleton;pt&&(pt.boneTexture===null&&pt.computeBoneTexture(),Je.setValue(A,"boneTexture",pt.boneTexture,E))}L.isBatchedMesh&&(Je.setOptional(A,L,"batchingTexture"),Je.setValue(A,"batchingTexture",L._matricesTexture,E),Je.setOptional(A,L,"batchingIdTexture"),Je.setValue(A,"batchingIdTexture",L._indirectTexture,E),Je.setOptional(A,L,"batchingColorTexture"),L._colorsTexture!==null&&Je.setValue(A,"batchingColorTexture",L._colorsTexture,E));const bt=F.morphAttributes;if((bt.position!==void 0||bt.normal!==void 0||bt.color!==void 0)&&Ae.update(L,F,Dt),(Mt||Se.receiveShadow!==L.receiveShadow)&&(Se.receiveShadow=L.receiveShadow,Je.setValue(A,"receiveShadow",L.receiveShadow)),O.isMeshGouraudMaterial&&O.envMap!==null&&(At.envMap.value=pe,At.flipEnvMap.value=pe.isCubeTexture&&pe.isRenderTargetTexture===!1?-1:1),O.isMeshStandardMaterial&&O.envMap===null&&P.environment!==null&&(At.envMapIntensity.value=P.environmentIntensity),Mt&&(Je.setValue(A,"toneMappingExposure",T.toneMappingExposure),Se.needsLights&&_o(At,oi),J&&O.fog===!0&&ae.refreshFogUniforms(At,J),ae.refreshMaterialUniforms(At,O,V,j,u.state.transmissionRenderTarget[g.id]),Ki.upload(A,zs(Se),At,E)),O.isShaderMaterial&&O.uniformsNeedUpdate===!0&&(Ki.upload(A,zs(Se),At,E),O.uniformsNeedUpdate=!1),O.isSpriteMaterial&&Je.setValue(A,"center",L.center),Je.setValue(A,"modelViewMatrix",L.modelViewMatrix),Je.setValue(A,"normalMatrix",L.normalMatrix),Je.setValue(A,"modelMatrix",L.matrixWorld),O.isShaderMaterial||O.isRawShaderMaterial){const pt=O.uniformsGroups;for(let _t=0,rr=pt.length;_t0&&E.useMultisampledRTT(g)===!1?L=ge.get(g).__webglMultisampledFramebuffer:Array.isArray(Re)?L=Re[F]:L=Re,w.copy(g.viewport),k.copy(g.scissor),z=g.scissorTest}else w.copy(ve).multiplyScalar(V).floor(),k.copy(Le).multiplyScalar(V).floor(),z=Ke;if(F!==0&&(L=vo),xe.bindFramebuffer(A.FRAMEBUFFER,L)&&O&&xe.drawBuffers(g,L),xe.viewport(w),xe.scissor(k),xe.setScissorTest(z),J){const pe=ge.get(g.texture);A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_CUBE_MAP_POSITIVE_X+P,pe.__webglTexture,F)}else if(ie){const pe=ge.get(g.texture),be=P;A.framebufferTextureLayer(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,pe.__webglTexture,F,be)}else if(g!==null&&F!==0){const pe=ge.get(g.texture);A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,pe.__webglTexture,F)}S=-1},this.readRenderTargetPixels=function(g,P,F,O,L,J,ie){if(!(g&&g.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ce=ge.get(g).__webglFramebuffer;if(g.isWebGLCubeRenderTarget&&ie!==void 0&&(ce=ce[ie]),ce){xe.bindFramebuffer(A.FRAMEBUFFER,ce);try{const pe=g.texture,be=pe.format,Re=pe.type;if(!Fe.textureFormatReadable(be)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Fe.textureTypeReadable(Re)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}P>=0&&P<=g.width-O&&F>=0&&F<=g.height-L&&A.readPixels(P,F,O,L,Pe.convert(be),Pe.convert(Re),J)}finally{const pe=I!==null?ge.get(I).__webglFramebuffer:null;xe.bindFramebuffer(A.FRAMEBUFFER,pe)}}},this.readRenderTargetPixelsAsync=async function(g,P,F,O,L,J,ie){if(!(g&&g.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ce=ge.get(g).__webglFramebuffer;if(g.isWebGLCubeRenderTarget&&ie!==void 0&&(ce=ce[ie]),ce){const pe=g.texture,be=pe.format,Re=pe.type;if(!Fe.textureFormatReadable(be))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Fe.textureTypeReadable(Re))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(P>=0&&P<=g.width-O&&F>=0&&F<=g.height-L){xe.bindFramebuffer(A.FRAMEBUFFER,ce);const Me=A.createBuffer();A.bindBuffer(A.PIXEL_PACK_BUFFER,Me),A.bufferData(A.PIXEL_PACK_BUFFER,J.byteLength,A.STREAM_READ),A.readPixels(P,F,O,L,Pe.convert(be),Pe.convert(Re),0);const ze=I!==null?ge.get(I).__webglFramebuffer:null;xe.bindFramebuffer(A.FRAMEBUFFER,ze);const ke=A.fenceSync(A.SYNC_GPU_COMMANDS_COMPLETE,0);return A.flush(),await hl(A,ke,4),A.bindBuffer(A.PIXEL_PACK_BUFFER,Me),A.getBufferSubData(A.PIXEL_PACK_BUFFER,0,J),A.deleteBuffer(Me),A.deleteSync(ke),J}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(g,P=null,F=0){g.isTexture!==!0&&(Sn("WebGLRenderer: copyFramebufferToTexture function signature has changed."),P=arguments[0]||null,g=arguments[1]);const O=Math.pow(2,-F),L=Math.floor(g.image.width*O),J=Math.floor(g.image.height*O),ie=P!==null?P.x:0,ce=P!==null?P.y:0;E.setTexture2D(g,0),A.copyTexSubImage2D(A.TEXTURE_2D,F,0,0,ie,ce,L,J),xe.unbindTexture()};const xo=A.createFramebuffer(),Mo=A.createFramebuffer();this.copyTextureToTexture=function(g,P,F=null,O=null,L=0,J=null){g.isTexture!==!0&&(Sn("WebGLRenderer: copyTextureToTexture function signature has changed."),O=arguments[0]||null,g=arguments[1],P=arguments[2],J=arguments[3]||0,F=null),J===null&&(L!==0?(Sn("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),J=L,L=0):J=0);let ie,ce,pe,be,Re,Me,ze,ke,rt;const tt=g.isCompressedTexture?g.mipmaps[J]:g.image;if(F!==null)ie=F.max.x-F.min.x,ce=F.max.y-F.min.y,pe=F.isBox3?F.max.z-F.min.z:1,be=F.min.x,Re=F.min.y,Me=F.isBox3?F.min.z:0;else{const bt=Math.pow(2,-L);ie=Math.floor(tt.width*bt),ce=Math.floor(tt.height*bt),g.isDataArrayTexture?pe=tt.depth:g.isData3DTexture?pe=Math.floor(tt.depth*bt):pe=1,be=0,Re=0,Me=0}O!==null?(ze=O.x,ke=O.y,rt=O.z):(ze=0,ke=0,rt=0);const He=Pe.convert(P.format),Se=Pe.convert(P.type);let ut;P.isData3DTexture?(E.setTexture3D(P,0),ut=A.TEXTURE_3D):P.isDataArrayTexture||P.isCompressedArrayTexture?(E.setTexture2DArray(P,0),ut=A.TEXTURE_2D_ARRAY):(E.setTexture2D(P,0),ut=A.TEXTURE_2D),A.pixelStorei(A.UNPACK_FLIP_Y_WEBGL,P.flipY),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,P.premultiplyAlpha),A.pixelStorei(A.UNPACK_ALIGNMENT,P.unpackAlignment);const We=A.getParameter(A.UNPACK_ROW_LENGTH),Dt=A.getParameter(A.UNPACK_IMAGE_HEIGHT),Ln=A.getParameter(A.UNPACK_SKIP_PIXELS),Mt=A.getParameter(A.UNPACK_SKIP_ROWS),oi=A.getParameter(A.UNPACK_SKIP_IMAGES);A.pixelStorei(A.UNPACK_ROW_LENGTH,tt.width),A.pixelStorei(A.UNPACK_IMAGE_HEIGHT,tt.height),A.pixelStorei(A.UNPACK_SKIP_PIXELS,be),A.pixelStorei(A.UNPACK_SKIP_ROWS,Re),A.pixelStorei(A.UNPACK_SKIP_IMAGES,Me);const Je=g.isDataArrayTexture||g.isData3DTexture,At=P.isDataArrayTexture||P.isData3DTexture;if(g.isDepthTexture){const bt=ge.get(g),pt=ge.get(P),_t=ge.get(bt.__renderTarget),rr=ge.get(pt.__renderTarget);xe.bindFramebuffer(A.READ_FRAMEBUFFER,_t.__webglFramebuffer),xe.bindFramebuffer(A.DRAW_FRAMEBUFFER,rr.__webglFramebuffer);for(let pn=0;pn=0&&(S[se]=null,T[se].disconnect(me))}for(let ee=0;ee=S.length){S.push(me),se=ke;break}else if(S[ke]===null){S[ke]=me,se=ke;break}if(se===-1)break}const Ee=T[se];Ee&&Ee.connect(me)}}const X=new N,$=new N;function V(W,ee,me){X.setFromMatrixPosition(ee.matrixWorld),$.setFromMatrixPosition(me.matrixWorld);const se=X.distanceTo($),Ee=ee.projectionMatrix.elements,ke=me.projectionMatrix.elements,Te=Ee[14]/(Ee[10]-1),it=Ee[14]/(Ee[10]+1),Qe=(Ee[9]+1)/Ee[5],Ne=(Ee[9]-1)/Ee[5],A=(Ee[8]-1)/Ee[0],At=(ke[8]+1)/ke[0],Fe=Te*A,Oe=Te*At,xe=se/(-A+At),$e=xe*-A;if(ee.matrixWorld.decompose(W.position,W.quaternion,W.scale),W.translateX($e),W.translateZ(xe),W.matrixWorld.compose(W.position,W.quaternion,W.scale),W.matrixWorldInverse.copy(W.matrixWorld).invert(),Ee[10]===-1)W.projectionMatrix.copy(ee.projectionMatrix),W.projectionMatrixInverse.copy(ee.projectionMatrixInverse);else{const ge=Te+xe,y=it+xe,_=Fe-$e,F=Oe+(se-$e),q=Qe*it/y*ge,Z=Ne*it/y*ge;W.projectionMatrix.makePerspective(_,F,q,Z,ge,y),W.projectionMatrixInverse.copy(W.projectionMatrix).invert()}}function re(W,ee){ee===null?W.matrixWorld.copy(W.matrix):W.matrixWorld.multiplyMatrices(ee.matrixWorld,W.matrix),W.matrixWorldInverse.copy(W.matrixWorld).invert()}this.updateCamera=function(W){if(r===null)return;let ee=W.near,me=W.far;x.texture!==null&&(x.depthNear>0&&(ee=x.depthNear),x.depthFar>0&&(me=x.depthFar)),M.near=I.near=w.near=ee,M.far=I.far=w.far=me,(C!==M.near||k!==M.far)&&(r.updateRenderState({depthNear:M.near,depthFar:M.far}),C=M.near,k=M.far),w.layers.mask=W.layers.mask|2,I.layers.mask=W.layers.mask|4,M.layers.mask=w.layers.mask|I.layers.mask;const se=W.parent,Ee=M.cameras;re(M,se);for(let ke=0;ke0&&(p.alphaTest.value=f.alphaTest);const b=e.get(f),T=b.envMap,S=b.envMapRotation;T&&(p.envMap.value=T,bn.copy(S),bn.x*=-1,bn.y*=-1,bn.z*=-1,T.isCubeTexture&&T.isRenderTargetTexture===!1&&(bn.y*=-1,bn.z*=-1),p.envMapRotation.value.setFromMatrix4(lp.makeRotationFromEuler(bn)),p.flipEnvMap.value=T.isCubeTexture&&T.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=f.reflectivity,p.ior.value=f.ior,p.refractionRatio.value=f.refractionRatio),f.lightMap&&(p.lightMap.value=f.lightMap,p.lightMapIntensity.value=f.lightMapIntensity,t(f.lightMap,p.lightMapTransform)),f.aoMap&&(p.aoMap.value=f.aoMap,p.aoMapIntensity.value=f.aoMapIntensity,t(f.aoMap,p.aoMapTransform))}function a(p,f){p.diffuse.value.copy(f.color),p.opacity.value=f.opacity,f.map&&(p.map.value=f.map,t(f.map,p.mapTransform))}function o(p,f){p.dashSize.value=f.dashSize,p.totalSize.value=f.dashSize+f.gapSize,p.scale.value=f.scale}function l(p,f,b,T){p.diffuse.value.copy(f.color),p.opacity.value=f.opacity,p.size.value=f.size*b,p.scale.value=T*.5,f.map&&(p.map.value=f.map,t(f.map,p.uvTransform)),f.alphaMap&&(p.alphaMap.value=f.alphaMap,t(f.alphaMap,p.alphaMapTransform)),f.alphaTest>0&&(p.alphaTest.value=f.alphaTest)}function c(p,f){p.diffuse.value.copy(f.color),p.opacity.value=f.opacity,p.rotation.value=f.rotation,f.map&&(p.map.value=f.map,t(f.map,p.mapTransform)),f.alphaMap&&(p.alphaMap.value=f.alphaMap,t(f.alphaMap,p.alphaMapTransform)),f.alphaTest>0&&(p.alphaTest.value=f.alphaTest)}function u(p,f){p.specular.value.copy(f.specular),p.shininess.value=Math.max(f.shininess,1e-4)}function h(p,f){f.gradientMap&&(p.gradientMap.value=f.gradientMap)}function d(p,f){p.metalness.value=f.metalness,f.metalnessMap&&(p.metalnessMap.value=f.metalnessMap,t(f.metalnessMap,p.metalnessMapTransform)),p.roughness.value=f.roughness,f.roughnessMap&&(p.roughnessMap.value=f.roughnessMap,t(f.roughnessMap,p.roughnessMapTransform)),f.envMap&&(p.envMapIntensity.value=f.envMapIntensity)}function m(p,f,b){p.ior.value=f.ior,f.sheen>0&&(p.sheenColor.value.copy(f.sheenColor).multiplyScalar(f.sheen),p.sheenRoughness.value=f.sheenRoughness,f.sheenColorMap&&(p.sheenColorMap.value=f.sheenColorMap,t(f.sheenColorMap,p.sheenColorMapTransform)),f.sheenRoughnessMap&&(p.sheenRoughnessMap.value=f.sheenRoughnessMap,t(f.sheenRoughnessMap,p.sheenRoughnessMapTransform))),f.clearcoat>0&&(p.clearcoat.value=f.clearcoat,p.clearcoatRoughness.value=f.clearcoatRoughness,f.clearcoatMap&&(p.clearcoatMap.value=f.clearcoatMap,t(f.clearcoatMap,p.clearcoatMapTransform)),f.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=f.clearcoatRoughnessMap,t(f.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),f.clearcoatNormalMap&&(p.clearcoatNormalMap.value=f.clearcoatNormalMap,t(f.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(f.clearcoatNormalScale),f.side===Mt&&p.clearcoatNormalScale.value.negate())),f.dispersion>0&&(p.dispersion.value=f.dispersion),f.iridescence>0&&(p.iridescence.value=f.iridescence,p.iridescenceIOR.value=f.iridescenceIOR,p.iridescenceThicknessMinimum.value=f.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=f.iridescenceThicknessRange[1],f.iridescenceMap&&(p.iridescenceMap.value=f.iridescenceMap,t(f.iridescenceMap,p.iridescenceMapTransform)),f.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=f.iridescenceThicknessMap,t(f.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),f.transmission>0&&(p.transmission.value=f.transmission,p.transmissionSamplerMap.value=b.texture,p.transmissionSamplerSize.value.set(b.width,b.height),f.transmissionMap&&(p.transmissionMap.value=f.transmissionMap,t(f.transmissionMap,p.transmissionMapTransform)),p.thickness.value=f.thickness,f.thicknessMap&&(p.thicknessMap.value=f.thicknessMap,t(f.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=f.attenuationDistance,p.attenuationColor.value.copy(f.attenuationColor)),f.anisotropy>0&&(p.anisotropyVector.value.set(f.anisotropy*Math.cos(f.anisotropyRotation),f.anisotropy*Math.sin(f.anisotropyRotation)),f.anisotropyMap&&(p.anisotropyMap.value=f.anisotropyMap,t(f.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=f.specularIntensity,p.specularColor.value.copy(f.specularColor),f.specularColorMap&&(p.specularColorMap.value=f.specularColorMap,t(f.specularColorMap,p.specularColorMapTransform)),f.specularIntensityMap&&(p.specularIntensityMap.value=f.specularIntensityMap,t(f.specularIntensityMap,p.specularIntensityMapTransform))}function g(p,f){f.matcap&&(p.matcap.value=f.matcap)}function x(p,f){const b=e.get(f).light;p.referencePosition.value.setFromMatrixPosition(b.matrixWorld),p.nearDistance.value=b.shadow.camera.near,p.farDistance.value=b.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function up(i,e,t,n){let r={},s={},a=[];const o=i.getParameter(i.MAX_UNIFORM_BUFFER_BINDINGS);function l(b,T){const S=T.program;n.uniformBlockBinding(b,S)}function c(b,T){let S=r[b.id];S===void 0&&(g(b),S=u(b),r[b.id]=S,b.addEventListener("dispose",p));const U=T.program;n.updateUBOMapping(b,U);const R=e.render.frame;s[b.id]!==R&&(d(b),s[b.id]=R)}function u(b){const T=h();b.__bindingPointIndex=T;const S=i.createBuffer(),U=b.__size,R=b.usage;return i.bindBuffer(i.UNIFORM_BUFFER,S),i.bufferData(i.UNIFORM_BUFFER,U,R),i.bindBuffer(i.UNIFORM_BUFFER,null),i.bindBufferBase(i.UNIFORM_BUFFER,T,S),S}function h(){for(let b=0;b0&&(S+=U-R),b.__size=S,b.__cache={},this}function x(b){const T={boundary:0,storage:0};return typeof b=="number"||typeof b=="boolean"?(T.boundary=4,T.storage=4):b.isVector2?(T.boundary=8,T.storage=8):b.isVector3||b.isColor?(T.boundary=16,T.storage=12):b.isVector4?(T.boundary=16,T.storage=16):b.isMatrix3?(T.boundary=48,T.storage=48):b.isMatrix4?(T.boundary=64,T.storage=64):b.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",b),T}function p(b){const T=b.target;T.removeEventListener("dispose",p);const S=a.indexOf(T.__bindingPointIndex);a.splice(S,1),i.deleteBuffer(r[T.id]),delete r[T.id],delete s[T.id]}function f(){for(const b in r)i.deleteBuffer(r[b]);a=[],r={},s={}}return{bind:l,update:c,dispose:f}}class hp{constructor(e={}){const{canvas:t=zl(),context:n=null,depth:r=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:c=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:h=!1,reverseDepthBuffer:d=!1}=e;this.isWebGLRenderer=!0;let m;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");m=n.getContextAttributes().alpha}else m=a;const g=new Uint32Array(4),x=new Int32Array(4);let p=null,f=null;const b=[],T=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=bt,this.toneMapping=mn,this.toneMappingExposure=1;const S=this;let U=!1,R=0,w=0,I=null,E=-1,M=null;const C=new rt,k=new rt;let z=null;const j=new Ue(0);let K=0,X=t.width,$=t.height,V=1,re=null,ue=null;const ve=new rt(0,0,X,$),De=new rt(0,0,X,$);let Ke=!1;const W=new Oo;let ee=!1,me=!1;this.transmissionResolutionScale=1;const se=new nt,Ee=new nt,ke=new N,Te=new rt,it={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let Qe=!1;function Ne(){return I===null?V:1}let A=n;function At(v,L){return t.getContext(v,L)}try{const v={alpha:!0,depth:r,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:c,powerPreference:u,failIfMajorPerformanceCaveat:h};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${zs}`),t.addEventListener("webglcontextlost",Y,!1),t.addEventListener("webglcontextrestored",le,!1),t.addEventListener("webglcontextcreationerror",oe,!1),A===null){const L="webgl2";if(A=At(L,v),A===null)throw At(L)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(v){throw console.error("THREE.WebGLRenderer: "+v.message),v}let Fe,Oe,xe,$e,ge,y,_,F,q,Z,G,_e,ae,he,ze,Q,fe,ye,be,de,Be,Pe,Ze,P;function ne(){Fe=new Sf(A),Fe.init(),Pe=new ip(A,Fe),Oe=new pf(A,Fe,e,Pe),xe=new tp(A,Fe),Oe.reverseDepthBuffer&&d&&xe.buffers.depth.setReversed(!0),$e=new Tf(A),ge=new Gd,y=new np(A,Fe,xe,ge,Oe,Pe,$e),_=new _f(S),F=new Mf(S),q=new Cc(A),Ze=new ff(A,q),Z=new Ef(A,q,$e,Ze),G=new Af(A,Z,q,$e),be=new bf(A,Oe,y),Q=new mf(ge),_e=new Vd(S,_,F,Fe,Oe,Ze,Q),ae=new cp(S,ge),he=new Wd,ze=new Zd(Fe),ye=new hf(S,_,F,xe,G,m,l),fe=new Qd(S,G,Oe),P=new up(A,$e,Oe,xe),de=new df(A,Fe,$e),Be=new yf(A,Fe,$e),$e.programs=_e.programs,S.capabilities=Oe,S.extensions=Fe,S.properties=ge,S.renderLists=he,S.shadowMap=fe,S.state=xe,S.info=$e}ne();const H=new op(S,A);this.xr=H,this.getContext=function(){return A},this.getContextAttributes=function(){return A.getContextAttributes()},this.forceContextLoss=function(){const v=Fe.get("WEBGL_lose_context");v&&v.loseContext()},this.forceContextRestore=function(){const v=Fe.get("WEBGL_lose_context");v&&v.restoreContext()},this.getPixelRatio=function(){return V},this.setPixelRatio=function(v){v!==void 0&&(V=v,this.setSize(X,$,!1))},this.getSize=function(v){return v.set(X,$)},this.setSize=function(v,L,O=!0){if(H.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}X=v,$=L,t.width=Math.floor(v*V),t.height=Math.floor(L*V),O===!0&&(t.style.width=v+"px",t.style.height=L+"px"),this.setViewport(0,0,v,L)},this.getDrawingBufferSize=function(v){return v.set(X*V,$*V).floor()},this.setDrawingBufferSize=function(v,L,O){X=v,$=L,V=O,t.width=Math.floor(v*O),t.height=Math.floor(L*O),this.setViewport(0,0,v,L)},this.getCurrentViewport=function(v){return v.copy(C)},this.getViewport=function(v){return v.copy(ve)},this.setViewport=function(v,L,O,B){v.isVector4?ve.set(v.x,v.y,v.z,v.w):ve.set(v,L,O,B),xe.viewport(C.copy(ve).multiplyScalar(V).round())},this.getScissor=function(v){return v.copy(De)},this.setScissor=function(v,L,O,B){v.isVector4?De.set(v.x,v.y,v.z,v.w):De.set(v,L,O,B),xe.scissor(k.copy(De).multiplyScalar(V).round())},this.getScissorTest=function(){return Ke},this.setScissorTest=function(v){xe.setScissorTest(Ke=v)},this.setOpaqueSort=function(v){re=v},this.setTransparentSort=function(v){ue=v},this.getClearColor=function(v){return v.copy(ye.getClearColor())},this.setClearColor=function(){ye.setClearColor(...arguments)},this.getClearAlpha=function(){return ye.getClearAlpha()},this.setClearAlpha=function(){ye.setClearAlpha(...arguments)},this.clear=function(v=!0,L=!0,O=!0){let B=0;if(v){let D=!1;if(I!==null){const J=I.texture.format;D=J===qs||J===Xs||J===Ws}if(D){const J=I.texture.type,ie=J===sn||J===Un||J===xi||J===ii||J===Gs||J===ks,ce=ye.getClearColor(),pe=ye.getClearAlpha(),Ae=ce.r,Re=ce.g,Me=ce.b;ie?(g[0]=Ae,g[1]=Re,g[2]=Me,g[3]=pe,A.clearBufferuiv(A.COLOR,0,g)):(x[0]=Ae,x[1]=Re,x[2]=Me,x[3]=pe,A.clearBufferiv(A.COLOR,0,x))}else B|=A.COLOR_BUFFER_BIT}L&&(B|=A.DEPTH_BUFFER_BIT),O&&(B|=A.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),A.clear(B)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",Y,!1),t.removeEventListener("webglcontextrestored",le,!1),t.removeEventListener("webglcontextcreationerror",oe,!1),ye.dispose(),he.dispose(),ze.dispose(),ge.dispose(),_.dispose(),F.dispose(),G.dispose(),Ze.dispose(),P.dispose(),_e.dispose(),H.dispose(),H.removeEventListener("sessionstart",Js),H.removeEventListener("sessionend",Qs),vn.stop()};function Y(v){v.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),U=!0}function le(){console.log("THREE.WebGLRenderer: Context Restored."),U=!1;const v=$e.autoReset,L=fe.enabled,O=fe.autoUpdate,B=fe.needsUpdate,D=fe.type;ne(),$e.autoReset=v,fe.enabled=L,fe.autoUpdate=O,fe.needsUpdate=B,fe.type=D}function oe(v){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",v.statusMessage)}function we(v){const L=v.target;L.removeEventListener("dispose",we),et(L)}function et(v){ft(v),ge.remove(v)}function ft(v){const L=ge.get(v).programs;L!==void 0&&(L.forEach(function(O){_e.releaseProgram(O)}),v.isShaderMaterial&&_e.releaseShaderCache(v))}this.renderBufferDirect=function(v,L,O,B,D,J){L===null&&(L=it);const ie=D.isMesh&&D.matrixWorld.determinant()<0,ce=Xo(v,L,O,B,D);xe.setMaterial(B,ie);let pe=O.index,Ae=1;if(B.wireframe===!0){if(pe=Z.getWireframeAttribute(O),pe===void 0)return;Ae=2}const Re=O.drawRange,Me=O.attributes.position;let He=Re.start*Ae,We=(Re.start+Re.count)*Ae;J!==null&&(He=Math.max(He,J.start*Ae),We=Math.min(We,(J.start+J.count)*Ae)),pe!==null?(He=Math.max(He,0),We=Math.min(We,pe.count)):Me!=null&&(He=Math.max(He,0),We=Math.min(We,Me.count));const st=We-He;if(st<0||st===1/0)return;Ze.setup(D,B,ce,O,pe);let tt,Ve=de;if(pe!==null&&(tt=q.get(pe),Ve=Be,Ve.setIndex(tt)),D.isMesh)B.wireframe===!0?(xe.setLineWidth(B.wireframeLinewidth*Ne()),Ve.setMode(A.LINES)):Ve.setMode(A.TRIANGLES);else if(D.isLine){let Se=B.linewidth;Se===void 0&&(Se=1),xe.setLineWidth(Se*Ne()),D.isLineSegments?Ve.setMode(A.LINES):D.isLineLoop?Ve.setMode(A.LINE_LOOP):Ve.setMode(A.LINE_STRIP)}else D.isPoints?Ve.setMode(A.POINTS):D.isSprite&&Ve.setMode(A.TRIANGLES);if(D.isBatchedMesh)if(D._multiDrawInstances!==null)An("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),Ve.renderMultiDrawInstances(D._multiDrawStarts,D._multiDrawCounts,D._multiDrawCount,D._multiDrawInstances);else if(Fe.get("WEBGL_multi_draw"))Ve.renderMultiDraw(D._multiDrawStarts,D._multiDrawCounts,D._multiDrawCount);else{const Se=D._multiDrawStarts,ut=D._multiDrawCounts,Xe=D._multiDrawCount,Ut=pe?q.get(pe).bytesPerElement:1,Nn=ge.get(B).currentProgram.getUniforms();for(let Et=0;Et{function J(){if(B.forEach(function(ie){ge.get(ie).currentProgram.isReady()&&B.delete(ie)}),B.size===0){D(v);return}setTimeout(J,10)}Fe.get("KHR_parallel_shader_compile")!==null?J():setTimeout(J,10)})};let Dt=null;function qt(v){Dt&&Dt(v)}function Js(){vn.stop()}function Qs(){vn.start()}const vn=new zo;vn.setAnimationLoop(qt),typeof self<"u"&&vn.setContext(self),this.setAnimationLoop=function(v){Dt=v,H.setAnimationLoop(v),v===null?vn.stop():vn.start()},H.addEventListener("sessionstart",Js),H.addEventListener("sessionend",Qs),this.render=function(v,L){if(L!==void 0&&L.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(U===!0)return;if(v.matrixWorldAutoUpdate===!0&&v.updateMatrixWorld(),L.parent===null&&L.matrixWorldAutoUpdate===!0&&L.updateMatrixWorld(),H.enabled===!0&&H.isPresenting===!0&&(H.cameraAutoUpdate===!0&&H.updateCamera(L),L=H.getCamera()),v.isScene===!0&&v.onBeforeRender(S,v,L,I),f=ze.get(v,T.length),f.init(L),T.push(f),Ee.multiplyMatrices(L.projectionMatrix,L.matrixWorldInverse),W.setFromProjectionMatrix(Ee),me=this.localClippingEnabled,ee=Q.init(this.clippingPlanes,me),p=he.get(v,b.length),p.init(),b.push(p),H.enabled===!0&&H.isPresenting===!0){const J=S.xr.getDepthSensingMesh();J!==null&&_r(J,L,-1/0,S.sortObjects)}_r(v,L,0,S.sortObjects),p.finish(),S.sortObjects===!0&&p.sort(re,ue),Qe=H.enabled===!1||H.isPresenting===!1||H.hasDepthSensing()===!1,Qe&&ye.addToRenderList(p,v),this.info.render.frame++,ee===!0&&Q.beginShadows();const O=f.state.shadowsArray;fe.render(O,v,L),ee===!0&&Q.endShadows(),this.info.autoReset===!0&&this.info.reset();const B=p.opaque,D=p.transmissive;if(f.setupLights(),L.isArrayCamera){const J=L.cameras;if(D.length>0)for(let ie=0,ce=J.length;ie0&&ta(B,D,v,L),Qe&&ye.render(v),ea(p,v,L);I!==null&&w===0&&(y.updateMultisampleRenderTarget(I),y.updateRenderTargetMipmap(I)),v.isScene===!0&&v.onAfterRender(S,v,L),Ze.resetDefaultState(),E=-1,M=null,T.pop(),T.length>0?(f=T[T.length-1],ee===!0&&Q.setGlobalState(S.clippingPlanes,f.state.camera)):f=null,b.pop(),b.length>0?p=b[b.length-1]:p=null};function _r(v,L,O,B){if(v.visible===!1)return;if(v.layers.test(L.layers)){if(v.isGroup)O=v.renderOrder;else if(v.isLOD)v.autoUpdate===!0&&v.update(L);else if(v.isLight)f.pushLight(v),v.castShadow&&f.pushShadow(v);else if(v.isSprite){if(!v.frustumCulled||W.intersectsSprite(v)){B&&Te.setFromMatrixPosition(v.matrixWorld).applyMatrix4(Ee);const ie=G.update(v),ce=v.material;ce.visible&&p.push(v,ie,ce,O,Te.z,null)}}else if((v.isMesh||v.isLine||v.isPoints)&&(!v.frustumCulled||W.intersectsObject(v))){const ie=G.update(v),ce=v.material;if(B&&(v.boundingSphere!==void 0?(v.boundingSphere===null&&v.computeBoundingSphere(),Te.copy(v.boundingSphere.center)):(ie.boundingSphere===null&&ie.computeBoundingSphere(),Te.copy(ie.boundingSphere.center)),Te.applyMatrix4(v.matrixWorld).applyMatrix4(Ee)),Array.isArray(ce)){const pe=ie.groups;for(let Ae=0,Re=pe.length;Ae0&&Ai(D,L,O),J.length>0&&Ai(J,L,O),ie.length>0&&Ai(ie,L,O),xe.buffers.depth.setTest(!0),xe.buffers.depth.setMask(!0),xe.buffers.color.setMask(!0),xe.setPolygonOffset(!1)}function ta(v,L,O,B){if((O.isScene===!0?O.overrideMaterial:null)!==null)return;f.state.transmissionRenderTarget[B.id]===void 0&&(f.state.transmissionRenderTarget[B.id]=new In(1,1,{generateMipmaps:!0,type:Fe.has("EXT_color_buffer_half_float")||Fe.has("EXT_color_buffer_float")?Mi:sn,minFilter:Dn,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Ge.workingColorSpace}));const J=f.state.transmissionRenderTarget[B.id],ie=B.viewport||C;J.setSize(ie.z*S.transmissionResolutionScale,ie.w*S.transmissionResolutionScale);const ce=S.getRenderTarget();S.setRenderTarget(J),S.getClearColor(j),K=S.getClearAlpha(),K<1&&S.setClearColor(16777215,.5),S.clear(),Qe&&ye.render(O);const pe=S.toneMapping;S.toneMapping=mn;const Ae=B.viewport;if(B.viewport!==void 0&&(B.viewport=void 0),f.setupLightsView(B),ee===!0&&Q.setGlobalState(S.clippingPlanes,B),Ai(v,O,B),y.updateMultisampleRenderTarget(J),y.updateRenderTargetMipmap(J),Fe.has("WEBGL_multisampled_render_to_texture")===!1){let Re=!1;for(let Me=0,He=L.length;Me0),Me=!!O.morphAttributes.position,He=!!O.morphAttributes.normal,We=!!O.morphAttributes.color;let st=mn;B.toneMapped&&(I===null||I.isXRRenderTarget===!0)&&(st=S.toneMapping);const tt=O.morphAttributes.position||O.morphAttributes.normal||O.morphAttributes.color,Ve=tt!==void 0?tt.length:0,Se=ge.get(B),ut=f.state.lights;if(ee===!0&&(me===!0||v!==M)){const mt=v===M&&B.id===E;Q.setState(B,v,mt)}let Xe=!1;B.version===Se.__version?(Se.needsLights&&Se.lightsStateVersion!==ut.state.version||Se.outputColorSpace!==ce||D.isBatchedMesh&&Se.batching===!1||!D.isBatchedMesh&&Se.batching===!0||D.isBatchedMesh&&Se.batchingColor===!0&&D.colorTexture===null||D.isBatchedMesh&&Se.batchingColor===!1&&D.colorTexture!==null||D.isInstancedMesh&&Se.instancing===!1||!D.isInstancedMesh&&Se.instancing===!0||D.isSkinnedMesh&&Se.skinning===!1||!D.isSkinnedMesh&&Se.skinning===!0||D.isInstancedMesh&&Se.instancingColor===!0&&D.instanceColor===null||D.isInstancedMesh&&Se.instancingColor===!1&&D.instanceColor!==null||D.isInstancedMesh&&Se.instancingMorph===!0&&D.morphTexture===null||D.isInstancedMesh&&Se.instancingMorph===!1&&D.morphTexture!==null||Se.envMap!==pe||B.fog===!0&&Se.fog!==J||Se.numClippingPlanes!==void 0&&(Se.numClippingPlanes!==Q.numPlanes||Se.numIntersection!==Q.numIntersection)||Se.vertexAlphas!==Ae||Se.vertexTangents!==Re||Se.morphTargets!==Me||Se.morphNormals!==He||Se.morphColors!==We||Se.toneMapping!==st||Se.morphTargetsCount!==Ve)&&(Xe=!0):(Xe=!0,Se.__version=B.version);let Ut=Se.currentProgram;Xe===!0&&(Ut=Ri(B,L,D));let Nn=!1,Et=!1,ci=!1;const Je=Ut.getUniforms(),Rt=Se.uniforms;if(xe.useProgram(Ut.program)&&(Nn=!0,Et=!0,ci=!0),B.id!==E&&(E=B.id,Et=!0),Nn||M!==v){xe.buffers.depth.getReversed()?(se.copy(v.projectionMatrix),Vl(se),Gl(se),Je.setValue(A,"projectionMatrix",se)):Je.setValue(A,"projectionMatrix",v.projectionMatrix),Je.setValue(A,"viewMatrix",v.matrixWorldInverse);const vt=Je.map.cameraPosition;vt!==void 0&&vt.setValue(A,ke.setFromMatrixPosition(v.matrixWorld)),Oe.logarithmicDepthBuffer&&Je.setValue(A,"logDepthBufFC",2/(Math.log(v.far+1)/Math.LN2)),(B.isMeshPhongMaterial||B.isMeshToonMaterial||B.isMeshLambertMaterial||B.isMeshBasicMaterial||B.isMeshStandardMaterial||B.isShaderMaterial)&&Je.setValue(A,"isOrthographic",v.isOrthographicCamera===!0),M!==v&&(M=v,Et=!0,ci=!0)}if(D.isSkinnedMesh){Je.setOptional(A,D,"bindMatrix"),Je.setOptional(A,D,"bindMatrixInverse");const mt=D.skeleton;mt&&(mt.boneTexture===null&&mt.computeBoneTexture(),Je.setValue(A,"boneTexture",mt.boneTexture,y))}D.isBatchedMesh&&(Je.setOptional(A,D,"batchingTexture"),Je.setValue(A,"batchingTexture",D._matricesTexture,y),Je.setOptional(A,D,"batchingIdTexture"),Je.setValue(A,"batchingIdTexture",D._indirectTexture,y),Je.setOptional(A,D,"batchingColorTexture"),D._colorsTexture!==null&&Je.setValue(A,"batchingColorTexture",D._colorsTexture,y));const wt=O.morphAttributes;if((wt.position!==void 0||wt.normal!==void 0||wt.color!==void 0)&&be.update(D,O,Ut),(Et||Se.receiveShadow!==D.receiveShadow)&&(Se.receiveShadow=D.receiveShadow,Je.setValue(A,"receiveShadow",D.receiveShadow)),B.isMeshGouraudMaterial&&B.envMap!==null&&(Rt.envMap.value=pe,Rt.flipEnvMap.value=pe.isCubeTexture&&pe.isRenderTargetTexture===!1?-1:1),B.isMeshStandardMaterial&&B.envMap===null&&L.environment!==null&&(Rt.envMapIntensity.value=L.environmentIntensity),Et&&(Je.setValue(A,"toneMappingExposure",S.toneMappingExposure),Se.needsLights&&qo(Rt,ci),J&&B.fog===!0&&ae.refreshFogUniforms(Rt,J),ae.refreshMaterialUniforms(Rt,B,V,$,f.state.transmissionRenderTarget[v.id]),ar.upload(A,ia(Se),Rt,y)),B.isShaderMaterial&&B.uniformsNeedUpdate===!0&&(ar.upload(A,ia(Se),Rt,y),B.uniformsNeedUpdate=!1),B.isSpriteMaterial&&Je.setValue(A,"center",D.center),Je.setValue(A,"modelViewMatrix",D.modelViewMatrix),Je.setValue(A,"normalMatrix",D.normalMatrix),Je.setValue(A,"modelMatrix",D.matrixWorld),B.isShaderMaterial||B.isRawShaderMaterial){const mt=B.uniformsGroups;for(let vt=0,gr=mt.length;vt0&&y.useMultisampledRTT(v)===!1?D=ge.get(v).__webglMultisampledFramebuffer:Array.isArray(Re)?D=Re[O]:D=Re,C.copy(v.viewport),k.copy(v.scissor),z=v.scissorTest}else C.copy(ve).multiplyScalar(V).floor(),k.copy(De).multiplyScalar(V).floor(),z=Ke;if(O!==0&&(D=jo),xe.bindFramebuffer(A.FRAMEBUFFER,D)&&B&&xe.drawBuffers(v,D),xe.viewport(C),xe.scissor(k),xe.setScissorTest(z),J){const pe=ge.get(v.texture);A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_CUBE_MAP_POSITIVE_X+L,pe.__webglTexture,O)}else if(ie){const pe=ge.get(v.texture),Ae=L;A.framebufferTextureLayer(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,pe.__webglTexture,O,Ae)}else if(v!==null&&O!==0){const pe=ge.get(v.texture);A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_2D,pe.__webglTexture,O)}E=-1},this.readRenderTargetPixels=function(v,L,O,B,D,J,ie){if(!(v&&v.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ce=ge.get(v).__webglFramebuffer;if(v.isWebGLCubeRenderTarget&&ie!==void 0&&(ce=ce[ie]),ce){xe.bindFramebuffer(A.FRAMEBUFFER,ce);try{const pe=v.texture,Ae=pe.format,Re=pe.type;if(!Oe.textureFormatReadable(Ae)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Oe.textureTypeReadable(Re)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}L>=0&&L<=v.width-B&&O>=0&&O<=v.height-D&&A.readPixels(L,O,B,D,Pe.convert(Ae),Pe.convert(Re),J)}finally{const pe=I!==null?ge.get(I).__webglFramebuffer:null;xe.bindFramebuffer(A.FRAMEBUFFER,pe)}}},this.readRenderTargetPixelsAsync=async function(v,L,O,B,D,J,ie){if(!(v&&v.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ce=ge.get(v).__webglFramebuffer;if(v.isWebGLCubeRenderTarget&&ie!==void 0&&(ce=ce[ie]),ce){const pe=v.texture,Ae=pe.format,Re=pe.type;if(!Oe.textureFormatReadable(Ae))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Oe.textureTypeReadable(Re))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(L>=0&&L<=v.width-B&&O>=0&&O<=v.height-D){xe.bindFramebuffer(A.FRAMEBUFFER,ce);const Me=A.createBuffer();A.bindBuffer(A.PIXEL_PACK_BUFFER,Me),A.bufferData(A.PIXEL_PACK_BUFFER,J.byteLength,A.STREAM_READ),A.readPixels(L,O,B,D,Pe.convert(Ae),Pe.convert(Re),0);const He=I!==null?ge.get(I).__webglFramebuffer:null;xe.bindFramebuffer(A.FRAMEBUFFER,He);const We=A.fenceSync(A.SYNC_GPU_COMMANDS_COMPLETE,0);return A.flush(),await Hl(A,We,4),A.bindBuffer(A.PIXEL_PACK_BUFFER,Me),A.getBufferSubData(A.PIXEL_PACK_BUFFER,0,J),A.deleteBuffer(Me),A.deleteSync(We),J}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(v,L=null,O=0){v.isTexture!==!0&&(An("WebGLRenderer: copyFramebufferToTexture function signature has changed."),L=arguments[0]||null,v=arguments[1]);const B=Math.pow(2,-O),D=Math.floor(v.image.width*B),J=Math.floor(v.image.height*B),ie=L!==null?L.x:0,ce=L!==null?L.y:0;y.setTexture2D(v,0),A.copyTexSubImage2D(A.TEXTURE_2D,O,0,0,ie,ce,D,J),xe.unbindTexture()};const Ko=A.createFramebuffer(),Zo=A.createFramebuffer();this.copyTextureToTexture=function(v,L,O=null,B=null,D=0,J=null){v.isTexture!==!0&&(An("WebGLRenderer: copyTextureToTexture function signature has changed."),B=arguments[0]||null,v=arguments[1],L=arguments[2],J=arguments[3]||0,O=null),J===null&&(D!==0?(An("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),J=D,D=0):J=0);let ie,ce,pe,Ae,Re,Me,He,We,st;const tt=v.isCompressedTexture?v.mipmaps[J]:v.image;if(O!==null)ie=O.max.x-O.min.x,ce=O.max.y-O.min.y,pe=O.isBox3?O.max.z-O.min.z:1,Ae=O.min.x,Re=O.min.y,Me=O.isBox3?O.min.z:0;else{const wt=Math.pow(2,-D);ie=Math.floor(tt.width*wt),ce=Math.floor(tt.height*wt),v.isDataArrayTexture?pe=tt.depth:v.isData3DTexture?pe=Math.floor(tt.depth*wt):pe=1,Ae=0,Re=0,Me=0}B!==null?(He=B.x,We=B.y,st=B.z):(He=0,We=0,st=0);const Ve=Pe.convert(L.format),Se=Pe.convert(L.type);let ut;L.isData3DTexture?(y.setTexture3D(L,0),ut=A.TEXTURE_3D):L.isDataArrayTexture||L.isCompressedArrayTexture?(y.setTexture2DArray(L,0),ut=A.TEXTURE_2D_ARRAY):(y.setTexture2D(L,0),ut=A.TEXTURE_2D),A.pixelStorei(A.UNPACK_FLIP_Y_WEBGL,L.flipY),A.pixelStorei(A.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),A.pixelStorei(A.UNPACK_ALIGNMENT,L.unpackAlignment);const Xe=A.getParameter(A.UNPACK_ROW_LENGTH),Ut=A.getParameter(A.UNPACK_IMAGE_HEIGHT),Nn=A.getParameter(A.UNPACK_SKIP_PIXELS),Et=A.getParameter(A.UNPACK_SKIP_ROWS),ci=A.getParameter(A.UNPACK_SKIP_IMAGES);A.pixelStorei(A.UNPACK_ROW_LENGTH,tt.width),A.pixelStorei(A.UNPACK_IMAGE_HEIGHT,tt.height),A.pixelStorei(A.UNPACK_SKIP_PIXELS,Ae),A.pixelStorei(A.UNPACK_SKIP_ROWS,Re),A.pixelStorei(A.UNPACK_SKIP_IMAGES,Me);const Je=v.isDataArrayTexture||v.isData3DTexture,Rt=L.isDataArrayTexture||L.isData3DTexture;if(v.isDepthTexture){const wt=ge.get(v),mt=ge.get(L),vt=ge.get(wt.__renderTarget),gr=ge.get(mt.__renderTarget);xe.bindFramebuffer(A.READ_FRAMEBUFFER,vt.__webglFramebuffer),xe.bindFramebuffer(A.DRAW_FRAMEBUFFER,gr.__webglFramebuffer);for(let xn=0;xn0?s[s.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){const c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){const s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},n&&n.name&&typeof n.clone=="function"){const r=n.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseNormalIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/3)*3},parseUVIndex:function(e,t){const n=parseInt(e,10);return(n>=0?n-1:n+t/2)*2},addVertex:function(e,t,n){const r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[n+0],r[n+1],r[n+2])},addVertexPoint:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){const t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){const r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[n+0],r[n+1],r[n+2])},addFaceNormal:function(e,t,n){const r=this.vertices,s=this.object.geometry.normals;co.fromArray(r,e),Zr.fromArray(r,t),uo.fromArray(r,n),Pt.subVectors(uo,Zr),ho.subVectors(co,Zr),Pt.cross(ho),Pt.normalize(),s.push(Pt.x,Pt.y,Pt.z),s.push(Pt.x,Pt.y,Pt.z),s.push(Pt.x,Pt.y,Pt.z)},addColor:function(e,t,n){const r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[n]!==void 0&&s.push(r[n+0],r[n+1],r[n+2])},addUV:function(e,t,n){const r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[n+0],r[n+1])},addDefaultUV:function(){const e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){const t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,r,s,a,o,l,c){const u=this.vertices.length;let h=this.parseVertexIndex(e,u),d=this.parseVertexIndex(t,u),m=this.parseVertexIndex(n,u);if(this.addVertex(h,d,m),this.addColor(h,d,m),o!==void 0&&o!==""){const g=this.normals.length;h=this.parseNormalIndex(o,g),d=this.parseNormalIndex(l,g),m=this.parseNormalIndex(c,g),this.addNormal(h,d,m)}else this.addFaceNormal(h,d,m);if(r!==void 0&&r!==""){const g=this.uvs.length;h=this.parseUVIndex(r,g),d=this.parseUVIndex(s,g),m=this.parseUVIndex(a,g),this.addUV(h,d,m),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";const t=this.vertices.length;for(let n=0,r=e.length;n=7?(Qi.setRGB(parseFloat(h[4]),parseFloat(h[5]),parseFloat(h[6]),bt),t.colors.push(Qi.r,Qi.g,Qi.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(h[1]),parseFloat(h[2]),parseFloat(h[3]));break;case"vt":t.uvs.push(parseFloat(h[1]),parseFloat(h[2]));break}}else if(u==="f"){const d=c.slice(1).trim().split(lo),m=[];for(let x=0,p=d.length;x0){const b=f.split("/");m.push(b)}}const g=m[0];for(let x=1,p=m.length-1;x1){const d=r[1].trim().toLowerCase();t.object.smooth=d!=="0"&&d!=="off"}else t.object.smooth=!0;const h=t.object.currentMaterial();h&&(h.smooth=t.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}t.finalize();const s=new _i;if(s.materialLibraries=[].concat(t.materialLibraries),!(t.objects.length===1&&t.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=t.objects.length;o0&&x.setAttribute("normal",new gt(u.normals,3)),u.colors.length>0&&(g=!0,x.setAttribute("color",new gt(u.colors,3))),u.hasUVIndices===!0&&x.setAttribute("uv",new gt(u.uvs,2));const p=[];for(let b=0,T=h.length;b1){for(let b=0,T=h.length;b0){const o=new gi({size:1,sizeAttenuation:!1}),l=new Vt;l.setAttribute("position",new gt(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new gt(t.colors,3)),o.vertexColors=!0);const c=new kr(l,o);s.add(c)}return s}}const vp="/assets/head-DD9xLfml.obj",$s=new dc,Wo=new Lt(75,window.innerWidth/window.innerHeight,.1,1e3),mr=new hp;mr.setSize(window.innerWidth,window.innerHeight);mr.setAnimationLoop(Sp);document.body.appendChild(mr.domElement);Wo.position.z=3;const xp=new bc(16777147,526368,1);$s.add(xp);const Mp=new gp;Mp.load(vp,function(i){$s.add(i)},function(i){console.log(i.loaded/i.total*100+"% loaded")},function(i){console.log("an error happened")});function Sp(){mr.render($s,Wo)} diff --git a/dist/index.html b/dist/index.html index 5e2be35..a4e1fdf 100644 --- a/dist/index.html +++ b/dist/index.html @@ -3,7 +3,7 @@ - First three.js app + CJ Satnarine website - + diff --git a/index.html b/index.html index 4b2c13e..95f5f96 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - First three.js app + CJ Satnarine website