@albi_scando/as-design-system-threejs-lib 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (function(ei,Rs){typeof exports=="object"&&typeof module<"u"?Rs(exports):typeof define=="function"&&define.amd?define(["exports"],Rs):(ei=typeof globalThis<"u"?globalThis:ei||self,Rs(ei["as-design-system-threejs-lib"]={}))})(this,(function(ei){"use strict";const Rs="as-design-system-threejs-lib";class pc{constructor(t=new Map){this.registerAllComponents(t)}registerAllComponents(t){Array.from(t.entries()).forEach(([e,i])=>{this.registerComponent(e,i)})}registerComponent(t,e){customElements.get(t)===void 0?(customElements.define(t,e),console.log(`Registered Web Component: ${t}`)):console.warn(`Web Component "${t}" is already registered.`)}}const fa={LANGUAGE_CHANGE_CONFIRMED:"language-change-confirmed",THEME_CHANGE_CONFIRMED:"theme-change-confirmed"},Le={ENGLISH_UNITED_KINGDOM:"English",ENGLISH_UNITED_STATES:"English",ENGLISH_AUSTRALIA:"English",FRENCH:"French",GERMAN_GERMANY:"German",GERMAN_SWITZERLAND:"German",HINDI_INDIA:"Hindi",ITALIAN:"Italian",JAPANESE_JAPAN:"Japanese",PORTUGUESE_BRAZILIAN:"Portuguese",PORTUGUESE_PORTUGAL:"Portuguese",RUSSIAN:"Russian",SPANISH_SPAIN:"Spanish",CHINESE_CHINA:"Chinese"},Ne={ENGLISH_UNITED_KINGDOM:"English",ENGLISH_UNITED_STATES:"English",ENGLISH_AUSTRALIA:"English",FRENCH:"Français",GERMAN_GERMANY:"Deutsch",GERMAN_SWITZERLAND:"Deutsch",HINDI_INDIA:"हिन्दी",ITALIAN:"Italiano",JAPANESE_JAPAN:"日本語",PORTUGUESE_BRAZILIAN:"Português",PORTUGUESE_PORTUGAL:"Português",RUSSIAN:"Русский",SPANISH_SPAIN:"Español",CHINESE_CHINA:"中文"},_t={ENGLISH_UNITED_KINGDOM:"en-UK",ENGLISH_UNITED_STATES:"en-US",ENGLISH_AUSTRALIA:"en-AU",FRENCH:"fr-FR",GERMAN_GERMANY:"de-DE",GERMAN_SWITZERLAND:"de-CH",HINDI_INDIA:"hi-IN",ITALIAN:"it-IT",JAPANESE_JAPAN:"ja-JP",PORTUGUESE_BRAZILIAN:"br-BR",PORTUGUESE_PORTUGAL:"pt-PT",RUSSIAN:"ru-RU",SPANISH_SPAIN:"es-ES",CHINESE_CHINA:"zh-CN"},Fe={ENGLISH_UNITED_KINGDOM:"English (United Kingdom)",ENGLISH_UNITED_STATES:"English (United States)",ENGLISH_AUSTRALIA:"English (Australia)",FRENCH:"French",GERMAN_GERMANY:"German (Germany)",GERMAN_SWITZERLAND:"German (Switzerland)",HINDI_INDIA:"Hindi (India)",ITALIAN:"Italian",JAPANESE_JAPAN:"Japanese (Japan)",PORTUGUESE_BRAZILIAN:"Portuguese (Brazil)",PORTUGUESE_PORTUGAL:"Portuguese (Portugal)",RUSSIAN:"Russian",SPANISH_SPAIN:"Spanish (Spain)",CHINESE_CHINA:"Chinese (China)"},jt={ENGLISH_UNITED_KINGDOM:"ENGLISH_UNITED_KINGDOM",ENGLISH_UNITED_STATES:"ENGLISH_UNITED_STATES",ENGLISH_AUSTRALIA:"ENGLISH_AUSTRALIA",FRENCH:"FRENCH",GERMAN_GERMANY:"GERMAN_GERMANY",GERMAN_SWITZERLAND:"GERMAN_SWITZERLAND",HINDI_INDIA:"HINDI_INDIA",ITALIAN:"ITALIAN",JAPANESE_JAPAN:"JAPANESE_JAPAN",PORTUGUESE_BRAZILIAN:"PORTUGUESE_BRAZILIAN",PORTUGUESE_PORTUGAL:"PORTUGUESE_PORTUGAL",RUSSIAN:"RUSSIAN",SPANISH_SPAIN:"SPANISH_SPAIN",CHINESE_CHINA:"CHINESE_CHINA"},ga=new Map([[jt.ENGLISH_UNITED_KINGDOM,{autonyms:Ne.ENGLISH_UNITED_KINGDOM,id:jt.ENGLISH_UNITED_KINGDOM,isoCode:_t.ENGLISH_UNITED_KINGDOM,language:Le.ENGLISH_UNITED_KINGDOM,name:Fe.ENGLISH_UNITED_KINGDOM,value:_t.ENGLISH_UNITED_KINGDOM}],[jt.ENGLISH_UNITED_STATES,{autonyms:Ne.ENGLISH_UNITED_STATES,id:jt.ENGLISH_UNITED_STATES,isoCode:_t.ENGLISH_UNITED_STATES,language:Le.ENGLISH_UNITED_STATES,name:Fe.ENGLISH_UNITED_STATES,value:_t.ENGLISH_UNITED_STATES}],[jt.ENGLISH_AUSTRALIA,{autonyms:Ne.ENGLISH_AUSTRALIA,id:jt.ENGLISH_AUSTRALIA,isoCode:_t.ENGLISH_AUSTRALIA,language:Le.ENGLISH_AUSTRALIA,name:Fe.ENGLISH_AUSTRALIA,value:_t.ENGLISH_AUSTRALIA}],[jt.FRENCH,{autonyms:Ne.FRENCH,id:jt.FRENCH,isoCode:_t.FRENCH,language:Le.FRENCH,name:Fe.FRENCH,value:_t.FRENCH}],[jt.GERMAN_GERMANY,{autonyms:Ne.GERMAN_GERMANY,id:jt.GERMAN_GERMANY,isoCode:_t.GERMAN_GERMANY,language:Le.GERMAN_GERMANY,name:Fe.GERMAN_GERMANY,value:_t.GERMAN_GERMANY}],[jt.GERMAN_SWITZERLAND,{autonyms:Ne.GERMAN_SWITZERLAND,id:jt.GERMAN_SWITZERLAND,isoCode:_t.GERMAN_SWITZERLAND,language:Le.GERMAN_SWITZERLAND,name:Fe.GERMAN_SWITZERLAND,value:_t.GERMAN_SWITZERLAND}],[jt.HINDI_INDIA,{autonyms:Ne.HINDI_INDIA,id:jt.HINDI_INDIA,isoCode:_t.HINDI_INDIA,language:Le.HINDI_INDIA,name:Fe.HINDI_INDIA,value:_t.HINDI_INDIA}],[jt.ITALIAN,{autonyms:Ne.ITALIAN,id:jt.ITALIAN,isoCode:_t.ITALIAN,language:Le.ITALIAN,name:Fe.ITALIAN,value:_t.ITALIAN}],[jt.JAPANESE_JAPAN,{autonyms:Ne.JAPANESE_JAPAN,id:jt.JAPANESE_JAPAN,isoCode:_t.JAPANESE_JAPAN,language:Le.JAPANESE_JAPAN,name:Fe.JAPANESE_JAPAN,value:_t.JAPANESE_JAPAN}],[jt.PORTUGUESE_BRAZILIAN,{autonyms:Ne.PORTUGUESE_BRAZILIAN,id:jt.PORTUGUESE_BRAZILIAN,isoCode:_t.PORTUGUESE_BRAZILIAN,language:Le.PORTUGUESE_BRAZILIAN,name:Fe.PORTUGUESE_BRAZILIAN,value:_t.PORTUGUESE_BRAZILIAN}],[jt.PORTUGUESE_PORTUGAL,{autonyms:Ne.PORTUGUESE_PORTUGAL,id:jt.PORTUGUESE_PORTUGAL,isoCode:_t.PORTUGUESE_PORTUGAL,language:Le.PORTUGUESE_PORTUGAL,name:Fe.PORTUGUESE_PORTUGAL,value:_t.PORTUGUESE_PORTUGAL}],[jt.RUSSIAN,{autonyms:Ne.RUSSIAN,id:jt.RUSSIAN,isoCode:_t.RUSSIAN,language:Le.RUSSIAN,name:Fe.RUSSIAN,value:_t.RUSSIAN}],[jt.SPANISH_SPAIN,{autonyms:Ne.SPANISH_SPAIN,id:jt.SPANISH_SPAIN,isoCode:_t.SPANISH_SPAIN,language:Le.SPANISH_SPAIN,name:Fe.SPANISH_SPAIN,value:_t.SPANISH_SPAIN}],[jt.CHINESE_CHINA,{autonyms:Ne.CHINESE_CHINA,id:jt.CHINESE_CHINA,isoCode:_t.CHINESE_CHINA,language:Le.CHINESE_CHINA,name:Fe.CHINESE_CHINA,value:_t.CHINESE_CHINA}]]),_s={FERRARI:"Ferrari theme inspired by the iconic red color of Ferrari cars.",LIGHT:"Light theme with a clean and minimalistic design.",LIGHT_BLUE:"Light Blue theme with a refreshing and calm appearance.",DARK:"Dark theme with a sleek and modern look.",DARK_PURPLE:"Dark Purple theme with a luxurious and elegant feel."},Ps={FERRARI:"🏎️",LIGHT:"☀️",LIGHT_BLUE:"🫧",DARK:"🌙",DARK_PURPLE:"🟣"},Ds={FERRARI:"Ferrari",LIGHT:"Light",LIGHT_BLUE:"Light Blue",DARK:"Dark",DARK_PURPLE:"Dark Purple"},Ls={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},me={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},mc=new Map([[me.DARK,{description:_s.DARK,icon:Ps.DARK,id:me.DARK,name:Ds.DARK,value:Ls.DARK}],[me.DARK_PURPLE,{description:_s.DARK_PURPLE,icon:Ps.DARK_PURPLE,id:me.DARK_PURPLE,name:Ds.DARK_PURPLE,value:Ls.DARK_PURPLE}],[me.FERRARI,{description:_s.FERRARI,icon:Ps.FERRARI,id:me.FERRARI,name:Ds.FERRARI,value:Ls.FERRARI}],[me.LIGHT,{description:_s.LIGHT,icon:Ps.LIGHT,id:me.LIGHT,name:Ds.LIGHT,value:Ls.LIGHT}],[me.LIGHT_BLUE,{description:_s.LIGHT_BLUE,icon:Ps.LIGHT_BLUE,id:me.LIGHT_BLUE,name:Ds.LIGHT_BLUE,value:Ls.LIGHT_BLUE}]]),Ic="data:image/png;base64,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",Cc="data:image/png;base64,UklGRoYAAABXRUJQVlA4THkAAAAv+UA+AC+gkG0EOHUEr9Ap3PwrZBsBTh3BK3QKN/+BSFR1N3MHRpEkKVowQA7ojw7Wwd6dfzvM0BH9V9y2bUQtkHd6DEC+U8F/woyNbkMYxsZ/FcF/MU+ojlamjKrn1oZ15b8TAL2Nr9ov0vHKLxBo7gA/SPuGBP8RAA==",vc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAHgCAYAAABdBwn1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8xNy8xNGy2A68AAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAA+3ByVld4nO2UwQnCUBAF18SDYBGxBUvw5DUteBCv6UDswmosQFKCPdiBMShBhJ9NFPYJMkMOgXwcx0c8305Xq6xqWmprzGoDAAAAAAAACGQqBD9+/Pjx48ePHz/+X/vzLJddSf/jWXcm9j7lz56nXkcD7/t+f019nvQL6of2j6539xfVO/2q+vT+gvqh/aPr3f0zTX1/v6y+9/2Prh+zf2S9u7+o3t9fUi/9/x+/f/cwrt7d/00fV+/vL6l33//Ien//+Hp3/4kQ/Pjx48ePHz9+/PgBAAAAAAAAAADgXyltYzvb2sKWv/4q8AGr9mrmFzvuD8WsXBfffs4dJqpYuFnU5g8AAABIbWtCRvreyv4AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmkM6EAADslbWtUU3ic7X3bd9tGkj43E8eRfE/2zD7si87Z/Z19SgZ3go+iKEqa6MIhKUfOiw8IArE2tuyRbGW8Ovzff1XV3UCj2QABkqIoG/GMGkDj0viq+qvq6mrw6Jf29c3L/uD8Jpi87B+d35iTbn9HKvr/OD6/scyx1XRG8eTscCe+MSavWPHrQSe+8Q1jsn8wjG8c35j0dwfxTdOa9Aen53BCew/uEfP/Jr3Dw+ubdg/+7GwPr24aG41RI2y8bvQaUeMCts4bbycHx0dQswk1F1BjNn6C2vPGv+CMt5N+52SEN90+pntvQ6PtyJ+0OwfY0PYRtD6Ggt6lPdilkwZdqhvsU9E+pIPtX6jYOeY32O3Sfn9IJ3XbtNftU3HMDg565zctb9Iessohu/twwB5yxO7HioNtbOUxtsqYdE7M8xsfCgtv0zmxqejCQQsKixU2FpNSyPyHDpnGVmMbjn6E/Z9g6y2UQeMKasarxMxcEDPztjB7xDHba1wCLh8ab6DuYyMqxMZh2EQF2BhabMIwg41RgE3oM2xsqzI6psPgCRg8AYPHZ/D4DB5/Muj9Bk8ZTQYDXvZOADU3gAN8oxyALziAO433oFzvAUZQLVA6+UwZTLgxoWm5RWgGJdBUNK0ITUXTguX2ToLQ8zQQDnptVjNgpQzp9xzSNvXH80bIAX3GAR0AmDHo4lajD1uf4Nh4Zq/VYmnGznL7rR3O2W+Dqv02D6PHHKN9OH5J6nYItRe31W8r2IEK2Bi3g82zKWwW1J8lW8q7R+jxVA+bW3vUvlVFf+64bwlK7xA6b0g3shok1WRQLELJWlMGMpeO0lMtSrzXVcfoznmoCCGXIeQyhNyF9GgfyqBx3fh8Ly2ZmfWxXAaTy2AKGEwBg0nvQU3DtJHA9B7I6OMKjXyhyxQ6czKRwaAxGDQGg8Zg0BgMGqMkNM+1GtQhezYCd7OYsdeVi6ylc5EepyEw0TmMae4rTvacOD3mOG3D21+CdW/D30+IC0fre45WOYuG7Zbg8RyGD9XPxMd3Cjocje0khMYLekYWQ8hiCDkMIYch5LABH0o1M+LD16DhChyogqEYNw9B1/4FpPWJDfyKkdQqWjGQZotDaY2KBs8qlJWGz3ODabXKgfmUg7kDCveWQjC/J+GGz4oVQKV8B9vvG++LAzTcDJh2aWfdNJzqdsA1GJLEB4hkXDR6zloCyy+Npe3zcbRtjitjV9yhm2MGnR8y5KIluV9GkftlzWk8y0E2L0D/gH56jmdlAHJcBpA5UnRLRP8MhlFY1FFRLWbrFhGihJPHnQxSqlsAalq3ko46bwftQ+2IOuhFoZqZreXq2XKHi7ejZ99xjH4FW/BRi05TUTHF6SgaTeOlGXysO8eH4nsURG1Pkf6jBK83NCYMQWOCJGwqtGmH7CZSfvF4SMHLtEItYgrhN8PqKuXwWGnAMbPHTmnbOX+nbIvIKTc11ZHsEfl/nD0bpCAZOyUsZywsJ/oTJYFMuI0DST7J8nFE+AbCG0FyY26J2EBkmV8iNvqVIZ7H2dN3cIr658McWtX1NXH1XIvhTH2jJNBmVLqbJyBacQXoHmZjjVUgI3M7cyRGb1tZNSPu1BFUu3yCZKm62QeVtKKIqZtqbzcSzNCCfCZbOs/YLDs0oyHCnBHrMh3Z8rmXQoOSknDZlg4uj8HlMbg81pUZAeLGKFa6MtqY/v6U7s3GcUgzmmHjjyqaVwrIcg6fHknqs2hbRkvXO+JE6qoCyL5Mjowu50H0YeL/BY0/ZkRUfAZni8FJTq8Ep7GoXjoMTdZ7tYqJs6wIqFUAqMsDdeCosshKi+smx9TjoHpOnnomc50CzDjQUmOXEhFwomWIASlNAP0SIN1qHPGtqHFZBt4q2mq6UZmQjN4VWpL36E1NwbdFRCbffSzGbp/c8DfcHX9D7s+ldr6dbCv1dSOjnMwiTymndmRClqhs3CC4VezKQyVmIQ4TiPIVTR2lhNqAlVUwSEnN8Rwu963pmdxXU38buzH5235UAc+HGctysdz55JLhPmM5eUQVumkClpoZ8x0H60STE4NBU3QGcRJ+QIH4gM/wFPNboPUDS3g16HAVBF/CgOFmcfsRWoobOOaeM3M5ZxhkgJ2h53P4fIZfyFONQo5g6Kv2Azf6YmM6aaafbAi3u9fnJrzfF4OYwbRXqRPFpiSKcxofzpoNCarqrLDc6MvM0lhbsdzCERJjQ+KWKbttlhiz4NEul0aXSYMwJtO8TaaZoMZsJDTVjsdANOOZGP6oH/7xWYFyqDbnRLUUD3B/KA6UUDVnAmeUAdXRgeo5emV2+cSly2cuoczG/pln2SdHcjDoc8D5PgJtxqWBfpQMFlfAFfa4FFcoo+yEKgqnAXIcTYc7mg7D1g4ZtlTaVJLKsi6vpQXylhBtUuM+U+uqXDAAWNG7x4yoqzKOpphjEXN/ZhAtOvfHNddV+CBrwtCwDSjvOh9cobhlwRXAmXEy/iEAlXHQE47fr6SGEY9rUIKnMsIsl8+hzP0lXme5aWYM7VR0BhJFJT1fKBykTZ1N4m7pYJ08ebHRP5GwNhjWSgZoeYzLjeItXxtyo+HREhEWg3hbxNvc8gDrPS5bN4intNm8xNpqMFZxWWPe5eNsl4+DJXkAiw6P9Cpq6RBkPqvsZyXRD3WWVYQ9+pwW3zfeKTYJ87svGjFO7OBiAh2GpuswDL0shkEFCD2tHho6CFmwY558CaGF2Qx5i6shlTaVrPd6vPuWBy21NP8Ebykgf6nY0rjzThZW6LjML5K8zgpRX/ChtMEiPN7lx7vsOLmbIiXCbHJObDK7Lbwjstv7zH0qh+nDhpwmV4ymrUNTmb7Ww2mUdzfJhk3r38iZHXpLjLaCJhotBqfFzTZuMIcTBunM4cSNntDLgcCyL+wO8+3LYSrma7vo0+sQHTkZL1P06CpuZuGiF8JQF9LUO0IcU1uHaejrPfgWH8+3eLC95aUa2hexy3aqmSKWqcTjZivmK+roxdYla6FLzT2WwjGrmSNt6qYyDNJalzxvMi8mnJ3F5bCRP5mTT3YKUF2Qof5EPrjwzf/KQXxJ48mQMjyvaO0ahjZxKdEWzfBinn7xLJo2Zsfmy8vOCdmzR/Bhtu+TLzQ9fncqDYe4Ebd5UiOUhDGfy+Djedb9ud5mvE2iXGkg6mfHoRUF8jix+28oPQFDgdFU0osKvjdv8MQsH1lOPHzbqz4dJ9ynWYvj9oXDuT/tcM6C7gGHzm505pgib5bJKy0TXLaz7nqWDMAez62olq8JNe0zf7MKTpspTtC798hl/7MYMa1hL5eKKyAzZ/NnqDXsZqQzQuZKIXuRGOy3lMpXNbKsn9BYHD9KEpJCy4F2eCMQLBPPUM24FkHBh/0kPjzt/ZSFNLEutw/p1NS51uDYLT8bro+1PVkfMlaSEEK9Wup8I3VdcBqo586RHORk6MMLNl1m9r1q4AsKOIHjH8nUz1qGtwwKcMvHkhUFbs12oUTChzK4XBIBPElCGe9pHPQGNJXnvRXDtrxFHkXGxtfmPWNgSoLNqhLHzAOOOZyD6VH5LASfSgj+i6JqWxQ6qowhJVxVWMGQ4OjMjm3M/TkJDF6U8G8oKhQ2NVlGlJNAB8SGcCJ73LvHV2RzcJK7T/H3Sfewc33TlVfgxiSLAQXkzqUlbzHJ4Jg+GPCOpHOaW8Nl0mWAdJkqdplCdXcJtG6/Q6f0+6xunxVnWEy68iiONYgv+MURm9IkueY0t2a+JlmsSVDsJS16Ae0Jkw9QjPlg56P0PYWrpOuHfCoTTVPY+APUVnyuorv3EoA/3mE3P4DtvR5+haXLPrJi0H8TqcoUVfz7K1j3CuuMxe9jznkLUQX7BN0kI7pHXHQ7tCIphF79ViO+PgdxWqPkmvnEZzPx2bX45hDfUy6+PgAUwktjFOV3RYhPE1Hpzjktcc58gg2YYINasHMIdjPplzhBgPZUdu9iafJA1J0W1M0nQIcJ0KkFuEDPZIL4SKG3SwGb0jP155yWOGchyjXNWrJzSDZ1vwL6AFiaHB7z6Slx/DTn+HxSc5nU3FpoCwitR+5mKK1aj3mcQhw/zTk+n9CaTGjNWmgLCK1LwIwTWIRw0uOnOcfnE5rPhObXQptDaE+40Hb5etYPRHqy//KEi0l3xunMM+YTaYuJtFWLdA6RPuQibdNc7FUyQxsni8oukz6oHp1PXCETV1iLaw5xbSSDQuw57Es16ng+rVHH82nNfKIbM9GNa9EtYPF+peTPaMripcdPc47PJ7SICS2qhbbAWL2Xzm0lg4LNxI+U604L6uYTYMwEGGca9jjRpqgxanRIIm9o6k1kIwjtUetPZ9TP10iTR4+x7JgSsN2OldmzM3tOZm/IBLBHQfF5tPW5pK2f4Kw+Lbt4RbkYbLI81VlbqygtwxhZsqIYP7upthUpYsi1KKPQt/WQ5Wn7XDi/UHCWEBbH8pD+OW3LyLCCIA+GcQzV2cqWemUh2kt+0B0jLjR7lzKLaHqOchn2KFUWrpLw9nRNtAw7zDbR+NnyRa05ajXNUbbWSTAyIyeGvUytJyq9IAoNM1vZdPNvbKotUqV4/5p/x7qxwXUDa9DBQxZPtcHRNarVdDxT6RJ20iVGYz9U8PKTWi+0ItPTvk8Uj0fheFqid9OEO5bKJpeK9JkdqJvRS+HdPM/LU3Pf8A10d/Rq7nnMGdKqOV7YjPPUnD04x+g04X8le+laN39N9IH5JNNWUtusAm9AeBGqYBa4z5rw2IA+uXet8JhW4Vp2C9qfp3COhf/yFG7kjuyRmaNwnjetyanCjSP8p8UCldwva9XWuvl3rA2PEm34wGeu8YOq72YzqNowgFSunGKgtN1WkEtAeJ16W38i8U+uz56AUYY+17Xtd6wLX2EUYi6cnkqe4IjGCB/powOqrdFqn2HYvqpDKRmBhrWCZh4ZgQnxCvRv+tJmwaWm2qJSnWetm3/HevEs43skY8ZZY/UiXpIAyCUQvEonv9t6yJqgjEuy3tPqn4+NE/7hhN9nM5XVMgK3lefFaofKC9xnTRg94fGU22fhJOi2uHFlfOIy91liXHm327m+2e1K06kRoXVAidcY1WnD32v6ICtD6QfCD32gd0n6OjufvGP+2xe7vcH1TWdnF//8Qnq424hp5Tl6TQcw+mSLBM/5T0B0dl7CWd9yjwr8QOnaJ2kbkrykSzaC5dd902g2XOWaXZA1aDh9L4CWbkNJ8/T8mn9rGMoV29QnsI+IHxW6oOuukivszBWP6RNkV2D5885Xn5B+vqzDP7kTULqHeP+/NMyGoVz1DO7+lqIoETzvE9lP9oMQ5zQaEc8ylavYaoyMBFOd51c9bPwXoBTjM6ee+5QWaf/JGRllPp66fgOuN6R/diNW3nifelLxHWLpn3qHZxRdxA91A66NLvXGaGY71Hd5IRam0WdjAtJSvQRUmT3K6O0RfQnsoNHhZ/+/xg1oHtZ6IDmUndX4CbaxjbiFx8b0U44+HGtCDWudS2c24a8JNbg3yTx1Q5LZsPEZZZ/Tvk3pzF9pLRn0x6RXmFNnpxqYaLuke7bSizYk3VPbYSk47dMImfGmTs8kKStXDmh16pjko7syT6qbdCVedQIa8r9MRvy6B/Ac9DWvFC55BHh9oukv5BGmDR9z0d1I9EbFVj3zf0BL/4BWdAmFiKzIJUfjBJ70FtBjH996Byi+J/66hGOydp3C+cdsnS5/yiOJh7ckJibirsDZG5yz+/Du+DyUes3QNUPXDP0lM7RXM/S9Y2jJq64ZumbomqG/aIY2a4a+Nwy9yRn6N5L+b/CM32EMVHN0zdE1R3/JHO3UHH1vOFp40RJH1wxdM3TN0F80Q9s1Q98bhn7IGRq/fQfvW7Nzzc41O3/R7KziVLPz+rMzLsu9qH3nmp1rdv7C2dmt2XnN2FnT4+vMu5qza86+c84214Sz68y7VXB22osX4ew6865m6JqhvzaGrjPv7h9D15l3NUPXDP21MHSdeXd/GLrOvKs5uubor4+j68y7+8PRdeZdzdA1Q39tDF1n3t0fhq4z72p2rtn5a2LnOvPu/rFznXlXs3PNzl8DO9eZd+vGzh04C2Ul4Zl8RZGxc/qt19eZs5bJ1rN7TACa32o48G8M9/OX0mOKtUjlh0DJQdrMXD0r11U+l33tM2VhNeYnnzvd42x4G1dhXfmKPI5qrkT3hD5tZXSlqu4Jz4DbyK9O1zwlm2J5uuavQNfQhlhro21PubbJPoHqiX7P9Q3zioH960gBP99SnlD7oqvxRU1Fg74kX9RW2CrfF1X1r44T3C9P9HHKp8DQUj9YgKH78IRzwqVm6Jqh62jBbTC0yro1Q3+pDP0k5dPGuJCjn2VQ3CKdZr97+FYatz3OrPq7u2iBy/tBTD0A+0kT/jlwvugxNmzhL7Ng+4T0fepjMY37sN8sFi1wNbpURwum/QOdtsyje8/IRr6lfpS5W+Nn/DelgQ8agYLWNyD5LFYPoOXF1kTljP8EfWwDFjEhxazja8DkkjgU7emfsP8xwRE1/v+SFjwg/dzCvxU1ftRoQVtC+ItcH5GNcMjyCo3HOAbqewz9Qegonu3DPvaTMZyf1fjvG+M7Hd/Pkug8WrKZ0TlRt2pf0lP0bLaf58zpe92Fv2IRs/qgU6AnxLSoY6h187NvkaV0VqCLer3JauBj4N8x+AmfCMUtSR5M9/4KsrpM/CMu4cbfVC3J4avbYZYXgNR0m17Tu7+HN7lItLa6HtggSxs4ZkTSZba3BXpgZvQA68dwF4N4C611i/zcMXGT6rc+I0aW0SrT1tvRiWryrKYr38nfOFiRLsyW6Bik44JUTS6ln8i/GkPPVUcifmJjUKLoeY3h/wbpw2QFssniVw37FzDWwF9T/xtwI3rvn+iZiCbKdbW980rTgjIa/5zs5u336nHSq60FevVjaOdbamHibyn46Edbm3DdJ8LzrjigjK5U074NGEMLi361Um17Due9pzcI6Spmb1+DFonfttcj+0K57g3XvOkr/0L84RY+Nb161GC/iph/bRnGMkBfIzgHWYmNBE24s6thLKskYz3NwekS2j3KwehZ7lvKV+ne8TH1I2bpyjzpiXR++afkv1OUG88seqf0qvLvlP+kvHcqfspTzVNm6fIz7ZPK6LGKhnhiVouL3qzcFU+1LZzdVzbgTGSud/BX1SCz8ExZLqrHIJ85ja2adySfrb6luQK21nFrNXZ+BPWfKLq3Jd+rZuglMbSZMLRTM3TN0DVDf2UMncevVX3oHZLzNclhlT501fFTlIyf7IXGT4lk6R3eN84pAnE12esBaHu94fXN2eEO/mLyK1ZM0mOW67KjuDFR9IG0cOn3xNmmZd7zkdDVpd71tnyQad2spt2b6RGoZa17q5nfyJsl1cWDH8IbfaC5b3y/zwlL6bIFbnPmbkwa7lBkOKSIcUDz2C0ldow9JsjMddPMPmVsRpq5bpEdgFGCcS5z31bsWCevrMwfwP3x26ZRIuXnPI4ovnO6xVlxG67+gDMda8NoyE02/EXJBTTGDqF0aMZJ9uBcivCXy0+4HUnMxnSWVDapRRd8tpzl/6zK+58tiZhyQAySR0yoxzTHl857GyQJ7CNlfenb6hM6HLPof5vMfTPs0/31wduEupj8SScZuwirPt/Y5XbwTrErxvgpZYTgvC/GW7dE7Up9qB/onUQbhB96qY3yfgMIZjn8x9yr/wll0HibsXDfoFwq2yiUuk25FQ7xnUVPRL5zaH7LJbuFskXdcKGuRX4f6kFMcg9XIvViaRZrwvPGHlz1iWYOzmlO+G604d9pTCK3Q5apkPWnZK78B8D5Z+LA/H/qtyqrxSiMJEZhr10/ny21YqlvJGdvERKXmkzb9WBba43ZVofiLN7F88S80d30tBfErukso8y7aqZUqzJruoC+T/6eB3f2yDeJ+dyxQ3KMiTVNYkeX8pkw6xVHtT6dEUx59rfFmkWyyHJTHmL5mVPGDE143Pitgd9kfXdHWvAczmHPr2p5X2ivXJbVbfH1eKgxXhIjsaj341q9EekPaphH48cR6U5MI0qLxo043liF/uRLMCv5hzxj7ZLyny+StY/Zo+vCviFxKo4mML+LjS1Yxvn02KJ5p+yrIlgG9cfZo2to/UzK3Iwpbsxyb1rUH5pT1k9k1d0V/vlYlpHEM7jjBa2lYTVbSW7kKlnwR+K6tBWvKSZ+Ravgl+FzFt1fx7VuZb7MekvOGntLsyQut+CvBbh9LFqHpcR1jilKjPlEov9vk6XYSmtWrG8BPf81vJ14/mvy47FUs9Dz8qGea++yHH2KSDMMytAdUUQpJJ2xyf6GfDSEf11a6SNyftHqRmS7cTS8Gv7Jk6XKP2zdYTZDXHzV85ieh9o1HVtfdX54mbWGpnLFrLWG6INVy0Kfzvuv1xvW6w0XX2+Yzd+vvx13VysO3RVw87c5ayf0XCy+A7NPb/7+DnhYzQVZBx5WJVWz8H1gYfXLOzUL1yx8V6vZ8lj4O8DpLY0VxsA2YjUMajS72yX1NtTCrcyZ6xIjGVM8sEk9okVjFI/m3dLsEZ/GKBhZbjXkVbD4/5jOXU2MuQyq2XcPk5rp8SBqs4gz2Mo3RDbIknwuuCqmLIFWCV34bi2lHtO8nMOjXiGPB7ekDGK29tkAvSi79vm2VqWtj3x/oMyLz1zr2Grpz7DtcIQw/3KXy132lTCmzazmeuVVopRN6tk+X2Ma05riUSY+7VEWkk3zSfiX7TvEF6vq+0Vozi+jZ8qs1ZBag+3+suTE8gNXE5csRnR+WW2Qh3/JRilfnHzw2Gpm2adRzMrkR8rsO2+wWYgBtOGcb+E4Bz00WSrfp5lo91ImTZBEk3KSmpSbhH898oVcsoirkMk0hlmJPCLsI8ozRj9aZMOKLyT0yPP+SJz4psG+7Ylji2vqV/Kzp/2Pb8mnCqXxuzpOKRcvyPfxZ8kJZ1ciGnPENPrCObqIrhByCsgTaVJPMfgqeYv7LS2owbntVcipGtL439EAhDj5jf72tofXN+2dw/ObODbov0mX7Vku/pt0e4nEv6c5qNfpt1y4rB9IR06njvQ7J6MbuOuwfY7FbpeKwdH5jQV7w/Mbc9Ltd+iUfp/V7bPiDIvJ8Kx9fSMetMeJ+wJe4pfrm197cI5vTPZ5ORz8BveDdxgeQKuHB53zm2Y8dmKaNRqedZdzo8nuWe/6pns0xFfYOaRG9w5hzwM44XQO4DiymmYC53hsudLeyPRNS6pzpLrQjE1T7EWGbRuxtOeke3CdlZ4Jz/Olu0RWK/O8QDrTN3zTTu5p2oF0T98I0jrYc6Uzg6ZnBNKeme7BmY50XWhGmZYFaVsi142MUOzFzXBsOFLd2Bgn17WMsYRSbBtpO2MDXq8pIeFlEAzTp8dWEBhesoeXGlJdK60DlFpSq0emJ+2NLVt6B9OOjEh6P/npzQy6vjc2RsnzzMBJWw11YVoH13lmgsQ4MJ303aOwGRktqS2m1DLPMKTrULNMCTNT0h7LsdJWR01ZDuPQMqTrAtOSnt7yorSdsDeS3oj+m0AHOD6/saEHYH/AntMbHrOOAd3fnGz3DlkxoGJ7hxUdKgbQdyI4s4MX7GFPMiZ/7/3j/MbFcsB2T1jRQ6bY6x5g8fcBnhNAuct2h3i7vw/axCaHPaKRY6S5vcEhHjscnGLRYcXhgGhnZ3CEl+3uDJCLjl9RCw8HtLc/PMKb7A+ZxeuQf4Ds+yeVtPpgctalc8+OqP3DPt0OrsTirLNNN++ewQ0ak+Mj5/oG/iBXUBGzwmSFoRRQdvF84Ex3QgX4G8cDg91rYPLS4qVN5e7xDp433D6k5vR+xeIMX8Sc7LRP6ZydNrHWTnubjna2aa9zdH1z2B3GN8bP7mR40mMb/QN+pH3CNyY7ZwTx5OgYmnd03KF7Tg6OSDi9g0NW4OH/pvW/ZoNlT5uU44LbHm1hdpebWFKPx3k8ylsYU4QUYyk43xyBRKB1k4NDJshXINXD7Vdgu37ZwwOnfdKvQ+6U/wqXjcgMBuTIX04ODwmOowGdd7RDt+kckLB3DtHG7eItd37B47uH+KzJ5OUBvN9LdtJkMvU8gz/vYfoceKaZeZbBnmUWP+vgaC85cHbSpQVurMgudyM7ZVvcUJkRt1S+MFRHO5IhX9IeM35x6LfYtg82yDMX327Go1EY8e3Ijr1lbMex6wd8exwHyf0X2Y7BOqP/ONwmpVDVYrLX71zf7J2coYD2Tl5RMYA9YMO9wStWCg+LkeVeB/zdvQ7pxV7nF6lqr7OPdNV5iY86GZDPdDKg7jnpdXbgsX0gm2Dysn/EPKcdqej/AyjXMsdW0xnFquYcdGKAHzQHu7MDGtPfHcQ3TWvSH5zi7dt7OxKf91BN26nvt0GZIq/B12QRznPp961HNLOHY5keHP8XRkOE19feJiPQ3oZG25E/aXcOsKHtoyOkvvYRvUt7sEsnDYjf2uj+QdGmPtRu/0LFzjG/AfMf231yHNtdAqjdJTZrH7ODAyD+ljdpM4+zPWR3Hw7YQ47Y/VhxsI2tPMZWARucmKChUFh4m86JTUXXRDev07VYYWMxKYXMf+iQoTVqFzSy/ImPaQPKaxmvEjNzQczM28LsEceM+ecfaNU9zr4UYeMwbKICbAwtNmGYwcYowCb0GTbIvRXRAd+M4AkYPAGDx2fw+AwefzLoAY+Ho8lgwEt0eCxwbgYDvlEOwBccwHShKvsgsHymDCbcmNC03CI0gxJoKppWhKaiacFyeydB6HkaCAe9NqsZsFKG9HsOaZv643kjTKKxDFAxg7/V6PMcvPHMXqvF0oyd5fZbO5yz3wZV+20eRo85RvsUsRjz+MPFbfXbCnagAjbG7WDzbAqbBfVnyZby7hF6PNXD5tYetW9V0Z877luC0juEzhvSjawGSTUZFItQstaUgcylo/RUixLvddUxunMeKkLIZQi5DCF3IT3a55GMz/fSkplZH8tlMLkMpoDBFDCY9B7UNEwbCUzvKQ1odUa+0GUKnTmZyGDQGAwag0FjMGgMBo1REprnWg3qkD1j8y73kYuspXORHqchzfZ8uLc42XPi9JjjtA1vz37J9JLWw7xJZmsZWuUsGrZbgsdzGD5UPxMf3ynocDS2kxAaL+gZWQwhiyHkMIQchpDDBnwo1cyID1+DhitwoAqGYtyMs4f/arCvF88iLluraMVAmi0OpTUqGjyrUFYaPs8NptUqB+ZTDuYOTQ6zz2uLcMNnxQq0KdyP6cXviwM03AyYdmln3TSc6nbANRiSxAeIZFw0es5aAssvjaXt83G0bY4rY1fcoZtjBp0fMuSiJblfRpH7Zc1pPMtBNi9A/4B+yrImZIAclwFkjhTdEtE/g2EUFnVUVIvZukWEKOHkcSeDlOoWgJrWraSjzttB+5TzgR30olDNzNZy9Wy5w8Xb0bPvOEY4HfZRi05TUTHF6SgaTeOlGXysO8eH4nsURG1Pkf6jBC+24jikrJ+3ijbtJDO8xeMhBS/TCrWIKYTfDKurlMNjpQHHzB47pW3n/J2yLSKn3NRUR7LHVmDNng1SkIydEpYzFpYT/YmSQCbcxoEkn2T5OCJ8A+GNILkxt0RsILLMLxEb/coQz+Ps6Ts4Rf3zYQ6t6vqauHquxXCmvlESaDMq3c0TEK24AnQPs7HGKpCRuZ05EqO3rayaEXfqCKpdPkGyVN3sg0paUcTUTbW3Gwlml5TI8D75hke1sVl2aEZDhDkj1mU6suVzL4UGJSXhsi0dXB6Dy2NweawrMwLEjVGsdGW0Mf39Kd2bjeOQZjTDxh9VNK8UkOUcPj2S1GfRtoyWrnfEidRVBZB9mRwZXc6D6MPE/wsaf8yIqPgMzhaDk5xeCU5jUb10GJqs92oVE2dZWcprPqAuD9SBo8oiKy2umxxTj4PqOXnqmcx1CjDjQEuNXUpE+EgLIc4bHzQB9EuAdIsn5f9B+VMl4K2iraYblQnJ6F2hJXmP3tQUfFtEZPLdx2Ls9vni2fQnu1TsxHw72Vbq60ZGOZlFnlJO7ciELFHZuEFwq9iVh0rMQqTrjPMVTR2lhNqAlVUwSEnN8Rwu963pmdxXU38buzH5235UAc+HGctysdz55JLhPmM5eUQVumkClpoZ8x0H60STE4NB0/e0qENeODTdR1XYAq0fWMKrQYerIPgSBgw3i9uP0FLcwDH3nJnLOcMgA+wMPZ/D5zP8Qp5qFHIEQ1+1H7jRFxvTSTP9ZEO43b0+N+G4YoMNYgbTXqVOFJuSKNjXFWbNhgRVdVZYbvRlZmmsrVhu4QiJsSFxy5TdNkuMWfBol0ujy6RBGJNp3ibTTFBjNhKaasdjIJrxTAx/1A//+KxAOVSbc6Jaige4PxQHSqiaM4EzyoDq6ED1HL0yu3zi0uUzl1BmY//Ms+yTIzkY9DngfB+BNuPSQD9KBosr4Ap7XIorlFF2QhWF0wA5jqbDHU2HYWuHDFsqbSpJZVmX19ICeUuINqlxn6l1VS4Y8O/1XNBa+hKOpphjEXN/ZhAtOvfHNddV+CBrwtCwDSjvOh9cobhlwRXAmXEy/iEAlXHQE47fr+xrJDyuIf+WzPeJC1omn0OZ+0u8znLTzBjaqegMJIpKer5QOEibOpvE3dLBOnnyYqN/ImFtMKyVDNDyGJcbxVu+NuRGw6MlIiwG8baIt7nlAdZ7XLZuEE9ps3mJtdVgrOKyxrzLx9kuHwdL8gAWHR7pVdTSIch8VtnPSqIf6iyrCHv0OS2+b7xTbBL70Bku7EWrdK7D0HQdhqGXxTCoAKGn1UNDByELdsyTLyG0MJshb3E1pNKmkvVej3ff8qClloZ9w5y+91aodu68k4UVOi7ziySvs0LUF3wobbAIj3f58S47Tu6mSIkwm5wTm8xuC++I7PY+c5/KYfqwIafJFaNp69BUpq/1cBrl3U2yYdP6N3Jmh94So62giUaLwWlxs40bzOGEQTpzOHGjJ/RyILDsC7vDfPtymIr52i79ioAG0ZGT8TJFj67iZhYueiEMdSFNvSPEMbV1mIa+3oNv8fF8iwfbW16qoX0Ru2ynmilimUo8brZivqKOXmxdsha61NxjKRyzmjnSpm4qwyCtdcnzJvNiwtlZXA4b+ZM5+WT4ve6LRvp79+n3OxiI7KsaIWV4XvHfVxNfYemxLyjMmEXTxuzYfHnZOSF79gg+zPZ98oWmx+9OpeEQN+I2T2qEkjDmcxl8PM+6P9fbjLdJlCsNRP3sOLSiQB4ndv8N+/wHfUJETXpRwffmDZ6Y5SPLiYdve9Wn44T7NGtx3L5wOPenHc5Z0D3g0NmNzhxT5M0yeaVlgst21l3PkgHY47kV1fI1oaZ95m9WwWkzxQl6t/iuZCFiWsNeLhVXQGbO5s9Qa9jNSGeEzJVC9iIx2G8pla9qZFk/obE4fpQkJIWWA+3wRiBYJp6hmnEtgoIP+0l8eNr7KQtpYl1uH9KpqXOtwbFbfjZcH2t7sj5krCQhhHq11PlG6rrgNFDPnSM5yMnQhxdsuszse9XAFxTAPg39tsQyvGVQgFs+lqwocGu2CyUSPpTB5ZII4EkSynhP46A39NvLVzPXrJvLW+RRZGx8bd4zBqYk2Kwqccw84JjDOZgelc9C8KmE4L8oqrZFoaPKGFLCVYUVDAmOzuzYxtyfk8DgRQn/hqJCYVOTZUQ5CXRAbAgnsse9e3xFNgcnufsUf590DzvXNyW+4LYBx9VfSjnNrVn0i25deRTHGsQX/OKITWmSXHOaWzNfkyzWJCj2kha9gPaEyQcoxnyw81H6nsJV0vVDPpWJpils/AFqKz5X0d17CcDjh5jw5gewvYdfU4Jt+dM6UpUpqsT3tGD/FdYZi9/HnPMWogr2CbpJRnSPuOh2aEVSSL87MC0+6VdrFfHJNfOJz2bis2vxzSG+p1x8ff5pSPbDoFkhPk1EpTvntMQ58wk2YIINasHOIdjNpF/iBAHaU9m9i6XJA1F3WlA3nwAdJkCnFuACPVP8lM17cpg4bErP1J9zWuKchSgXPxRZS7ayZFP3K6APgKXJ4TGfnhLHT3OOzyc1l0nNrYW2gNB65G6G0qr1mMcpxPHTnOPzCa3JhNashbaA0LoETPqzJ0I46fHTnOPzCc1nQvNroc0htCdcaLt8PesHIj3Zf3nCxaQ743TmGfOJtMVE2qpFOodIH3KRtmku9iqZoY2TRWWXSR9Uj84nrpCJK6zFNYe4NpJBIfYc9qUadTyf1qjj+bRmPtGNmejGtegWsHi/NthnyVWLlx4/zTk+n9AiJrSoFtoCY/VeOreVDAo2Ez9SrjstqJtPgDETYJxp2ONEm/A76h2SyBuaehPZCEJ71PrTGfXzNdLk0WMsO6YEbLdjZfbszJ6T2RsyAexRUHwebX0uaesnOKtPyy5eUS4GmyxPddbWKkrLMEaWrCj4Of1E24oUMeRalFHo23rI8rR9LpxfKDhLCItjeUj/nLZlZFhBkAfDOIbqbGVLvbIQ7SU/6I4RF5q9S5lFND1HuQx7lCoLV0l4e7omWoYdZpto/Gz5otYctZrmKFvrJBiZkRPDXqbWE5VeEIWGma1suvk3NtUWqVK8f82/Y93Y4LqxQz8t9YFYPNUGR9eoVtPxTKVL2EmXGI39UMHLT2q90IpMT/s+UTweheNpid5NE+5YKptcKtJndqBuRi+Fd/M8L0/NfcM30N3Rq7nnMWdIq+Z4YTPOU3P24Byj04T/leyla938NdEH5pNMW0ltswq8AeFFqIJZ4D5rwmMD+uTetcJjWoVr2S1of57CORb+y1O4kTuyR2aOwnnetCanCjeO8J8WC1Ryv6xVW+vm37E2PEq04QOfucYPqr6bzaBqwwBSuXKKgdJ2W0EuAeF16m39icQ/uT57AkYZ+lzXtt+xLnyFUYi5cHoqeYIjGiN8pI8OqLZGq32GYfuqDqVkBBrWCpp5ZAQmxCvQv+lLmwWXmmqLSnWetW7+HevFs4zvkYwZZ43Vi3hJAiCXQPAqnfxu6yFrgjIuyXpPq38+Nk74hxN+n81UVssI3FaeF6sdKi9wnzVh9ITHU26fhZOg2+LGlfGJy9xniXHl3W7n+kb6ge4n5Ne8bhxQ4jVGddqNiPxeMZ36A+GHPtC7JH2dnU/eMf/tC/XHucv99Pa33KPK/vD2k7QNSV7SJRvBJj/13Wy4yjXih8jxewG0dJt+5vottI1d82/Kj4M/oZ/Y+536iPhRoQu67iq5ws5c8Zg+QXYFlj/vfPUJ6efLOvyTOwGle4j3/wv9zLuh/Gj5gPQUPc4jypH8yH8Q4pxGI+JZpnIVW42RkWCq8/yqh43/oh8rN9i/zB2e0iLtPzkjo8zHU9dvwPWG9M9uxMob71NPKr5DLP1T7/CMoosj+pnyq0aXemM0sx3qu7wQC9PoszEBaaleAqrMZv/oe5NqPfqBd/wx95/op2gj2mI/+o4/5ejDsSb96Dv+c+nMJvw1oQb3JpmnbkgyGzY+o+xz2rcpnfkrrSWD/pj0CnPq7FQDE22XdM9WetGGpHtqOywFp30aITPe1OmZJGXlygGtTh2TfHRX5kl1k67Eq05AQ/6XyYhf9wCeg77mlcIljwCvTzT9hTzCtOFjLrobid6o2Kpn/g9o6R/Qii6hEJEVueRonMCT3gJ67ONb7wDF98Rfl3BM1q5TOP+YrdPlT3kk8fCWxMRE3BU4e4Nzdh/eHZ+HUq8ZumbomqG/ZIb2aoa+dwwtedU1Q9cMXTP0F83QZs3Q94ahNzlD/0bS/w2e8TuMgWqOrjm65ugvmaOdmqPvDUcLL1ri6Jqha4auGfqLZmi7Zuh7w9APOUPjt+/gfWt2rtm5Zucvmp1VnGp2Xn92xmW5F7XvXLNzzc5fODu7NTuvGTtrenydeVdzds3Zd87Z5ppwdp15twrOTnvxIpxdZ97VDF0z9NfG0HXm3f1j6DrzrmbomqG/FoauM+/uD0PXmXc1R9cc/fVxdJ15d384us68qxm6ZuivjaHrzLv7w9B15l3NzjU7f03sXGfe3T92rjPvanau2flrYOc6827d2LkDZ6GsJDyTrygydk6/9fo6c9Yy2Xp2jwlA81sNB/6N4X7+UnpMsRap/BAoOUibmatn5brK57KvfaYsrMb85HOne5wNb+MqrCtfkcdRzZXontCnrYyuVNU94RlwG/nV6ZqnZFMsT9f8Fega2hBrbbTtKdc22SdQPdHvub5hXjGwfx0p4OdbyhNqX3Q1vqipaNCX5IvaClvl+6Kq/tVxgvvliT5O+RQYWuoHCzB0H55wTrjUDF0zdB0tuA2GVlm3ZugvlaGfpHzaGBdy9LMMiluk0+x3D99K47bHmVV/dxctcHk/iKkHYD9pwj8Hzhc9xoYt/GUWbJ+Qvk99LKZxH/abxaIFrkaX6mjBtH+g05Z5dO8Z2ci31I8yd2v8jP+mNPBBI1DQ+gYkn8XqAbS82JqonPGfoI9twCImpJh1fA2YXBKHoj39E/Y/Jjiixv9f0oIHpJ9b+Leixo8aLWhLCH+R6yOyEQ5ZXqHxGMdAfY+hPwgdxbN92Md+Mobzsxr/fWN8p+P7WRKdR0s2Mzon6lbtS3qKns3285w5fa+78FcsYlYfdAr0hJgWdQy1bn72LbKUzgp0Ua83WQ18DPw7Bj/hE6G4JcmD6d5fQVaXiX/EJdz4m6olOXx1O8zyApCabtNrevf38CYXidZW1wMbZGkDx4xIusz2tkAPzIweYP0Y7mIQb6G1bpGfOyZuUv3WZ8TIMlpl2no7OlFNntV05Tv5Gwcr0oXZEh2DdFyQqsml9BP5V2PouepIxE9sDEoUPa8x/N8gfZisQDZZ/Kph/wLGGvhr6n8DbkTv/RM9E9FEua62d15pWlBG45+T3bz9Xj1OerW1QK9+DO18Sy1M/C0FH/1oaxOu+0R43hUHlNGVatq3AWNoYdGvVqptz+G89/QGIV3F7O1r0CLx2/Z6ZF8o173hmjd95V+IP9zCp6ZXjxrsVxHzry3DWAboawTnICuxkaAJd3Y1jGWVZKynOThdQrtHORg9y31L+SrdOz6mfsQsXZknPZHOL/+U/HeKcuOZRe+UXlX+nfKflPdOxU95qnnKLF1+pn1SGT1W0RBPzGpx0ZuVu+KptoWz+8oGnInM9Q7+qhpkFp4py0X1GOQzp7FV847ks9W3NFfA1jpurcbOj6D+E0X3tuR71Qy9JIY2E4Z2aoauGbpm6K+MofP4taoPvUNyviY5rNKHrjp+ipLxk73Q+CmRLL3D+8Y5RSCuJns9AG2vN7y+OTvcwV9MfsWKSXrMcl12FDcmij6QFi79njjbtMx7PhK6utS73pYPMq2b1bR7Mz0Ctax1bzXzG3mzpLp48EN4ow80943v9zlhKV22wG3O3I1Jwx2KDIcUMQ5oHrulxI6xxwSZuW6a2aeMzUgz1y2yAzBKMM5l7tuKHevklZX5A7g/fts0SqT8nMcRxXdOtzgrbsPVH3CmY20YDbnJhr8ouYDG2CGUDs04yR6cSxH+cvkJtyOJ2ZjOksomteiCz5az/J9Vef+zJRFTDohB8ogJ9Zjm+NJ5b4MkgX2krC99W31Ch2MW/W+TuW+Gfbq/PnibUBeTP+kkYxdh1ecbu9wO3il2xRg/pYwQnPfFeOuWqF2pD/UDvZNog/BDL7VR3m8AwSyH/5h79T+hDBpvMxbuG5RLZRuFUrcpt8IhvrPoich3Ds1vuWS3ULaoGy7UtcjvQz2ISe7hSqReLM1iTXje2IOrPtHMwTnNCd+NNvw7jUnkdsgyFbL+lMyV/wA4/0wcmP9P/VZltRiFkcQo7LXr57OlViz1jeTsLULiUpNpux5sa60x2+pQnMW7eJ6YN7qbnvaC2DWdZZR5V82UalVmTRfQ98nf8+DOHvkmMZ87dkiOMbGmSezoUj4TZr3iqNanM4Ipz/62WLNIFlluykMsP3PKmKEJjxu/NfCbrO/uSAuewzns+VUt7wvtlcuyui2+Hg81xktiJBb1flyrNyL9QQ3zaPw4It2JaURp0bgRxxur0J98CWYl/5BnrF1S/vNFsvYxe3Rd2DckTsXRBOZ3sbEFyzifHls075R9VQTLoP44e3QNrZ9JmZsxxY1Z7k2L+kNzyvqJrLq7wj8fyzKSeAZ3vKC1NKxmK8mNXCUL/khcl7biNcXEr2gV/DJ8zqL767jWrcyXWW/JWWNvaZbE5Rb8tQC3j0XrsJS4zjFFiTGfSPT/bbIUW2nNivUtoOe/hrcTz39NfjyWahZ6Xj7Uc+1dlqNPEWmGQRm6I4oohaQzNtnfkI+G8K9LK31Ezi9a3YhsN46GV8M/ebLMasF3jR1C9ROce5Xk/mEWNLv7JbEX9p+tzJnrYhHG5P00yQa3SCIeRRnSWLlPEkE/upXJ+cf/x3TuajzqMqhm3z1Maqa1H+cxBKvayorJDeKCzwVXxRQTbZXQhe/WUuoxRSEcbuND7v22pHwJttLDAL0ou9LjtnJw10e+P1Cc+TPXOrY25DNsOxwhnG3e5XKXV3CgB89Whq7XLDJK2aSe7fOM+phWUIwy3rhHcy42jZ7xL9t3iC9W1feL0JxfRs+UMfqQWoPt/rLkxGZDV+OFFSM6v6w2yJ+7ZPPDX5x8nKm1SrcVU5xGMSuTH2ke85yPuQbQhnO+hWv5A5rvTKXyfTrvdi9l0gRJNGkGpkkzMfjXI1/IJYu4CplMY5iVyCPCPqKsCvTXxdy/WA/Wo5HKR+JE3PpAEjonttzKPHva//iWfKpQ8unVL/eVy9TIX8k+S044loxoxBHTDD5GJCK6QsgpIE+kST3F4GuCLO63tKAGI3mrkFM1pNUoBfs6SXYdqfj2/zG1Aceg0xk4q15FWuaLJKZyxawvkmCkttpa1enVwfVXSeqvkiz+VZLsKt/6C9N39V0SdwV8/W3OCms9F4uvRe7Tm7+/Ax5WM8bXgYdVSdUsfB9YWP0+Z83CNQvf1TcvMiw86W0Pr2/aO4fnN3Fs0H+TLtuzXPw36fYSnv6e5p1ep99v4Uz9QDpyOnWk3zkZ3cBdh+1zLHa7VAyOzm8s2Bue35iTbr9Dp/T7rG6fFWdYTIZn7esb8aA9Hr64mBwNfrm++bUH5/jGZJ+Xw8FvcD94h+EBtHp40Dm/acZjJ6aZouFZdzk3muye9a5vukdDfIWdQ2p07xD2PIATTucAjiOraSZwjseWK+2NTN+0pDpHqgvN2DTFXmTYthFLe066B9dZ6ZnwPF+6S2S1Ms8LpDN9wzft5J6mHUj39I0grYM9VzozaHpGIO2Z6R6c6UjXhWaUaVmQtiVy3cgIxV7cDMeGI9WNjXFyXcsYSyjFtpG2Mzbg9ZoSEl4GwTB9emwFgeEle3ipIdW10jpAqSW1emR60t7YsqV3MO3IiKT3k5/ezKDre2NjlDzPDJy01VAXpnVwnWcmSIwD00nfPQqbkdGS2mJKLfMMQ7oONcuUMDMl7bEcK2111JTlMA4tQ7ouMC3p6S0vStsJeyPpjeg/IJLD4/MbG3oA9gfsOb3hMesY0P3NyXbvkBUDKrZ3WNGhYgB9J4IzO3jBHvYkY/L33j/Ob1wsB2z3hBU9ZIq97gEWfx/gOQGUu2x3iLf7+6BNbHLYIxo5hh452Rsc4rHDwSkWHVYcDoh2dgZHeNnuzgC56PgVtfBwQHv7wyO8yf6QxX065Pchm/5JJa04mJx16dyzI2r/sE+3gyuxOOts0827Z3CDxuT4yLm+gT/IFVTErDBZYSgFlF08HzjTnVABHtnxwGD3Gpi8tHhpU7l7vIPnDbcPqTm9X7E4wxcxJzvtUzpnp02stdPepqOdbdrrHF3fHHaH8Y3xszsZnvTYRv+AH2mf8I3JzhlBPDk6huYdHXfonpPe3vEVzg/1GgH5yVvgPx4ckcB6B4eswFP/G/MmKBJo0QxnTPOZDkX4cN4r5jEmtsaBHWtRvGlM+YQGn+sYgZSgxZPDVyDiw+1XYMh+2cPHnPaZtPk44hDu9rnBvvEEkj0kXI6YRhztkF52DkjqO4do7Hbxdju/YPXuITzg4GgvOXB20qUVZ6zIrj8jI2Jb3IqYETcjvrAiRzuSlV3SHrNMcei32LYPBsIzF99uxqNRGPHtyI69ZWzHsesHfHscB8n9F9mOwXSiOzbcBk3A/14egE6+ZPKcTKbUwuRqsQHOVARqt5WqR0Y1TKYaRrFqTD1vsteBYepeZx9Jp/MSzzgZkOdzMqBONvn/3SdMN5s/C5wAAAC+bWtCU3icXU7LDoIwEOzN3/ATAIPgEcrDhq0aqBG8gbEJV02amM3+uy0gB+cyk5mdzcgqNVjUfESfWuAaPepmuolMYxDu6SiURj8KqM4bjY6b62gP0tK29AKCDgxC0hlMq3Kw8bUGR3CSb2QbBqxnH/ZkL7ZlPslmCjnYEs9dk1fOyEEaFLJcjfZcTJtm+lt4ae1sz6OjE/2DVHMfMfZICftRiWzESB+C2KdFh9HQ/3Qf7ParDuOQKFOJQVrwBaemX1kg7QRYAAAAqW1rQlT6zsr+AH36zgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeJztxDEBAAAIAyD7h7PStMUeDkh2AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZV8AAAAAAAAAAAAAAAAAAACArgMFexqrk0pThwAAAKlta0JU+s7K/gB+P24AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHic7cMBDQAACAOg9w9nA7PcIMJGN6mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqft9RVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV1fcPRecIvN7nJ6oAAAFWbWtCVPrOyv4AfyQeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO3RMQGAABDEMPyLw9KDixuaITXQu/e5oT/HzvK9/3v+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/nf5n+b/23+t/kPAAAAAAAAAAAAAAAAAAAAsPUB7pD/Bbef1ZAAAAq1bWtCVPrOyv4Af1e6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO2djZHbOAxGU0gaSSEpJI2kkBSSRlJIbpCbd/PuC0jJWa8d23gzntXqh6QIEqIAkPr5cxiGYRiGYRiGYRiGYXhJvn///tvvx48f/x27J1WOe5fh2fnw4cNvv69fv/6q99q+Z/1XOaoMw/uBvM/i9vCW/rm7to7Vbyd/rkdXDXs+fvzY1tVK/u7/bH/69OnX32/fvv388uXLf/qi9he1r/IpKi/O5RjnkU79XK7az7Hab/mTdp1baVpf1bFhz0rOnf4vOvl//vz51zb1T/8tuZQMkDkyYj/nVP7IFJnX/mwX9GvOJT+3E9oC5Rv27ORfMvL4r+jkzzHkQn+1DJFztRX3WeTHNeA+vjqGPgDKYz0x7NnJ/6z+T/l37wzoeeRef6stINfatiz9zFjJ33oA6PuVnnXD0HNN+SPXklVd6z5IX/eYwHn4WZLHdroh24n1jOVfbcRpDP9SdeL+c7QfXc1YnG0fp19n+ylZWd4pD/pt5l3XeSyXsqxt2iB6hjHJ6pphGIZhGIZheEUYx9+TR7DXp//zby/vWfLd+h5c6mu6NvWueITL6O1qB8/mZ0id8Jb2vruW9/Od/M/Y8Y98hnme93W+xC69lfz/hv7zFlz+9LNhz8Omjk0m/Xfp28MX5GvpI53PkPokP85d+QNN52+kjFyP/ci+LNsv7d/apZfytx/iUdtAyt9+Nh9zPyl9ic4suSAbbL7s55z0C9hnWCAj7HYF51HntA+T9me3HdoM90KemRby7uzZmV7K33X0qOOBrv8DdWi94L5tP459e12M0C5+yH3Qdl/3/0o763jnb8xnSvbr9Fldkt6z639AtukDLuyrKZnhb3F/Q5b8v5M/fd8+QMf7WJ/Azt+Y8ict/ADk08n/KL1XkT/P9vqbsrG8i/TF2xfn+t7pBvSJ2wm6xboYdv7GlL/P6+RPnMqZ9FL+nNf5w/527FtLP1tBfaU/Lf139u3ltdRt0dWR/X08R8hj5UuElb8xfYi8p3Xl8XjmTHreph4eVf7DMAzDMAzDUGNb7Jv8PD6/Z1w99oAZY78ftn3xs02+iwu9FX/D/MNnZ2fT6vzg1gnoDseE59zA9C1CXuvza19nP8zyoK9GP5yjs6sg/5Xd13YwfHzYjtAb2H89x6dIv1DG7ttn53Pst+Mvx2gf2JHxSQ3HdP3cfhfXe5Hy5/puXqd9gbbvWub4D7p5RJ7rl/PP7LfzNeiI6f/nWMl/pf9XdvD0padPHRsp7SL7sWMwzhzLdlngk9jFCwz/51ry73x+4LlfJS/PBSzO9H9wXIDLybl5zrDnWvIv0MnpOy94hhfW4c5z9fxf6Qa3OT//HatQzNyvNd27XO1bveN5fN7ZAhjD5/XEjTid1M/d+J9nAOT7v8vKsUx75D8MwzAMwzAM5xhf4GszvsDnhj60kuP4Ap8b29zGF/h65BqryfgCX4Od/McX+PxcU/7jC3w8rin/YnyBj8XK5ze+wGEYhmEYhmF4bi61lXTrhhxhfxI/bMT3XkPjld8RdmutrNi9I67g/dx+ZfuQ7in/tDM8M17XB9sbtrnCa/CsZGz5Y3/BJrdqSyubnOVvfyJl8vo8LuPKnmCbwepeKDN6zPLP9uh1Cp/BpmzbKza7+t92tO6bPJmG1xDDr4cNvms3Xf8vbNNjG1tg/U/a9vnQbn291+fymoSr7wuRR8rf646xBprXxHp0kBG4Xnbf5DIpfz87V23GcvU1nfwdb+Rj9h+zn/5Jeuw/+r6Yj5FP7vd6ePeMe7km2Mch+4VluXou/qn8u/2d/NMX1MUi0a/R7aR/9A253TH8FNbz5MHxR2fX/+17K9KPA7eSf9cebPt3PAH9PX1H3b3s2kbGqJBe+ikf9Z2Btux6SR1w5Ee/lfwLr+NL7ACs1pzOe8172cnfZcjvC/uaR5V/kTEy6cfbra/Pca+nmWl1bWYXl5M+vy6/1f7dfayuzevynK5+nmHsPwzDMAzDMAywmlt1tL+bK/A3+FN2cazD7+zm1q32ec6F5wodvT/egpF/j30YtqHlnBpY+ed37cW2kdp2zD/f5bDfqfD3RPD/gY/5WtuT8C1xL5Y/37PxPb/qPBHLzH62jJuHI/3f2eat/9nmuz6209lGa/+M2yJx/vh6sAFyrb9R6G8JOcbEcqYs+IjuraduzVlbOxztp2/mOgEpf0APuC1g16ct2DeL/Ch7zhux36+bU9Ltp936u0CvwrXl3/WfS+TvOR/o7vzWoL/JuJN/Pg86n27BM+kV5wpfW/9fKn/rbXSwY23sw0M+5HGk/1P+tI1Mk/gQxwg8sj/nEjxuoo/Rr24h/8I+Pffn3TzyvDbHfzv548er9HP89+j+3GEYhmEYhmEYhnvgeMuMmVzFf96K3fvqcB1457Y/MNeLvBcj/zWe3+D4eubH0Y+Zg2O/XaazsqF4Dl766myH8ryglQ/QxygT12b5sf86fh+fpsvT2aNeAWygaQ/Fbuc1Gjmvs6kXnlfHz363XDsU2z92/m6Ol+279ueSNmXMcqXf0f2/81ViU352+af+o16591UMTzdPKOl8Oyv5U8/pR/T8NHw/2GbtH7T/0Pe2Kj/Hco6X91d+zzLPb8VO/pbZn8p/pf9T/jn/135kjmGr55jn8u7Wh9zJ320USIs29uxtwFj/W//dSv6F/ZB+znMu4xLaA3mc0f+QbYM02bZP3O3vFXxCHv+tZPye8vf4L+f42QeY/sFiNf7byb/Ief7d+O9V5D8MwzAMwzAMwzAMwzAMwzAMwzAMwzC8LsRQFpd+DwQf/irWzjFAR1zin7/k3EvK8N4Q33JLWP+YtXMyf+KxKN+l8ue6jkrr7LcWujiUjownPuKSWEDilrwOzlGs+1H9GmKj4Npx9I6d8nd4iQvsYvcpk7/r7rhfykt8lY+Rds4XIN7cMeeO1U28NhBrCGWfZS0yx5vv+jX5nzmX8x0/S16ORbqkfok58s+xUe+xrlmu10a5OJbrfxEPTj/lfjs6PUo8l+/b3/6hLex0APG6xJJ5TkHeG8fpZ7v+Q/6OCVzh+0794ljKS+qXcykn6V5L/2dcfuLnMn2bNu191LO/t+HvKbke3G5dT7v7ct4dXhvM97Nqh36GIrfuex9w5rni+TI5d4A2lBzVL9AuHJ96LXbtOvsr/cf/o/OyTXveV5ce/Y/7Slm5r1r3rcrqtaJgJbeMDe3SpGw5j4W8EueV7Z62mRzVr88jT89VeivowVX/Pzvu/RP5c47n3GSafh528eBOt5uHRJ3nNyouWeerGyt2OtN5ZTv0+DjLfaZ+6f/dfIW3sivDkd6FTv45f6Pg3cB9lXtCxp4jdAav6ZjXeO6Q49Wtc49Yyb9rr4xTrB9W7Zv8L9Xnu3VKPW/qDEf9v/A8i9W7TCf/o7LzTKzyOg/kRF2yNtxqrGadmfJnTJjrBHqdL68r2L1be46Z3x26cvDdQ/RNrlnXcaZ+4ehbuxx7j3mLvKOu8s15GgljBch6Qb+n3vS79JHeO9Pud++Eq7GAxzmXrBN6yXN6V7+U+0iunPPs81aHYXgz/wCggvog4L8lowAADtdta0JU+s7K/gB/koEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHic7Z2NkRwpDIUdiBNxIA7EiTgQB+JEHMhe6eo+17tnSUDPz/5Yr2pqZ7tpEBII0IOel5fBYDAYDAaDwWAwGAwGg8HgP/z69evl58+ff3ziOveq5+JzpawAZfj3wf9R6fmK/jN8//795dOnT3984jr3Mnz58uXfzy6+ffv2O++wN2UE9PtHRtT7tJ6Vnk/1vwI20f6u9l/1Ufp2laaT1+3f+Z1dVPKs5ARdGr1epcuuZ+28ez5wauereuvsH+Vr33W5tG97HpoPeQWq/q95ZfWO+58/f/73e+gt0v348eP3vXiGuqgvC0Q6vR7pM0T+nibyiLy5F2WrXkgX1/V56qBpIy9PRx30evyNz6r/x9+vX7/+fu4KOvtzTWXR8iNNlM8zWZ8jPfcy+7sMUZ7bCJvH39CZponvjFtccz1FGp3zOLR9RT6kRxfIqelU7vigC9qyyh3XVB+qZy2f8X3X/vrMFaz8f1Zm1v/pf528gcz+6m+oU1Z37Bx6Vn3RLuKDL9A+qH6BPFZydrpAPsohP/cVVZ39+ZDPy98Z/+8xF7jF/ug8+iP17uSl/pX9fR3iwLbYPf5GWyB//vd+hqz0UdqLQvOhTpku8LcuK+2RuV5lf2TU5738TG8rW1zFLfanHWu77+QNZPZXf4fvzfoofd39j+o27nHd/SS+I7M/etA2lulC06nNaRfI7/bHP/JM/OUZzTeuIeMz7E9fUX3QnwF19e/qbxnfHJoemelb+j2epQ90a6XIi/v4TcD/kcbvISd9LwP1xodkutByMvnJX8dD+of/77Ko/DqXqfTpuh0MBoPBYDAYDDo495fdf83yb8E9uIQrOC3zNH3F257CY+XEpVjPZHGBe2JV/urZFZ/WcZiPwqnOrui44m3vIavGtqtnKs6q8h9VXHq3/Fv5tEdB5dY9E16nK3J18fx7tetMVuXV/P4J51WlPyn/Vj6t0pPzhs4p+h4F53iQhXycA1nprNKBxhW7Zx5pf/TjnFzFeWncXmPmVfrT8m/h0yo9EaMLwLPC8yHzyv7E7VQWlbPTWaUDtT9yZvJn/v/KHpoT+1ecl3PWyr1WHNlu+dT1Kp9W2R/uWPkj5RQ9/8xGyNz9f6oDz6uSf5crW6Eaq+BG9H7FeQVIq1xMl363/Fv5tM5P0oejjGgP9DWe3bW/jhme9lQHp/a/Fepv4BqUd698U2YXrvvcwdOflH8rn9bpKbO3zjsZF7TszEYB5RaztDs6eA3769jJx/fiKS+IT1POC3my61X6k/Jv4dMy3s5lA8opVmUzJ3eulOeRZ0dnmY4970r+rl6DwWAwGAwGg8EKxL6I+ZyCdSBrmFUsqksTc9sd/uce2JE1gG4eWeauLPcG52JYd3sMfwXiH6y/d9Ym3fr1mfsZM65R15SB+E6s8FFldtcfCY9dB6ivxre69q9nY0iv+sue5xnuab2d94p77pf0zEGmM57p9El/8ziGx2iz8nfyymTM0nXXd8vI9LiDVRxJ9+RX53GUg/A4re7V1+dJoz4HnSuXo/FA5eyUD3CZ9BxRxZ/h88hHY/5al6r8nfJcxqrM6vqOvMQbVcYTrOzfnbcEXczS+S/4Ou3/6MrPM2TnO8mrOmdCOchSnY3I9O98R1d+lZfu13cZqzKr6zvyZno8QcePkd+KZ+zsX+l/52wR+fqnyxd50P2Oz9L+nsXis/I9r52zhFWZ1fUdeTM9niAb/5Vb9DZf7fu52v8zXVX9X8vu7O8c9Kr/a95d/6/mf13/17KrMqvrO/Leav+Aji0+huGfdHzp+CuXaTX+q9xu/4Ce4avOn2e6Ws1ZfDz1MU55xax8RTf+a/qqzOr6jrz3sD/1rtb/ei9rm9zXPuQ8ms//PY3OkX1On83luxiBzoX5ngEZ/D7ldeVXea1krMqsrq/SZHocDAaDwWAwGAwq6NxcP1c4wEejksvXHx8Bz+ICWbv7HszVOoL90s9EFWer9mO+ZzyLC8z2MiuyuIDu2dX9/yfrV7UVsTa9nnFu2J97ngdy6HXnIne4PNJUa/TOLpke9FygcqSVvm7lG0/g++/VPlXsj5gTfmOHI1Q/o/Erruueefbve7xR+cIsjyxenXFGHS9Yxft2OLou1qlnE+HXM33tyLjiAk9Q+X/sjwx+biXjaFUH3kc0Dqfn+Chf+4VzbnxXfVRnJnheY+v0kyxG7f2Ftsf5FbDD0a24DvKr9LUr44oLPMHK/yMrfS/jVXc4Qs5SaF/Pyu/k0Xy7MzMhD22Wclw3VTmMberfKHvF0Z1wnZm+dmXc5QJ30Olb+6z6eK/rDkeo77XM+r+O313/37E/Zzv1LOdu39K9A9pvdzi6Xa6z0teV/q/P32J/9//I7uM/+sdPVum8Pfm4Wtlf887G/x37oyO/dmX8P+HodrnOTl9Xxv+ds44VqvW/ct5ZTIDr2m87jhD5sJ/OMbNnsjlwVl6VR7V+PplbX+HodrhOT7dT9x0ZnxUzGAwGg8FgMBi8f8Dn6NrvUbiSt75b4x7vvtfYwAl2ZX9PXBRrXjgA1pSPqAN2PAHrWmJ6uq+y2wdcAY7hFBpP7HCljq8FYha+biR+FvB9rL4Ox2/oepUzGPHRmA1tS+ML6KvjdlXGzv5dXrtptE66D97luFcdQfa7I7T3eI7rlKvpApHmat/KdMT17BwLcQuNszoHo7/PRT3QDXol1oXfcfkpQ2Px1VkBtUXF0e2kcZm0rsp5Ukf9LaErdQwoD0tcD/torFDTESel3Cpe2KGyv16v7K/xcdo9bRI9eXxL8/L4dsWrZfyJ21z9mHLIip00AbWfxx89jpvxe1fquPrdMdL7+wSdOz3dt+XyeBza6xNw+ztvQD76m5TImOkGVFzUjv0rHkOxkwY9Ku+Zyat8mL9H8EodT7hDyuUDV135lhV4jjEus5nvtaAPOV9Fn9CxqeINvf1W/XHH/gH1f8rjKXbSKOeo46DKkX3P7L9bR+UE8fkdd6icn+7HugId2/Tjey3ig2/0vRzcUx1k15Vfy57vzteDyv74MuXUHTtpVCafdyrfznf6h7eZkzoG1Aa6p8fHZ9ettpNT/k+h4wdzzOzeao/d6rrvJVqNW35fy69k6daut6TxsiudnNbx9LnMd13Z/zcYDAaDwWAw+Lug6xhdz9xrHtntSYx1kL4rZadMXasS787Wgu8Bb0Fej+ew7js9R1Khsz+cAOl27K+xFtY7PPcW9HmCtyBvFo8kTu4xG+e0iD0636VQ7lbjFQGedZ+jPLTHIDwmq/y/6jNLq3kTQ6m4GC8X+TSWoxxyxylpPbX+Ki98zo5ekF3LUblO0J0xcY5HuQiNpXc+w7l75ZXhCzxGqvXz843OwVb+n3KyMr1u2d5sb//Yjdinx3yxbbZvm7YCJ+JxYuyt7aLTi8vucp1gZX/s6mVmsf8Vj+g2CjAHqGx6kp9zQd5fsryrGLDuD9J4N7HW7LejKu5VfY3urVKuJfMZK724v0OuE6z8v9tf5wm32p9+SVz9UfbXfrFrf/wGeanPI1+3/2pvB35EeVXlD8CuXqr6nmA1/6OecIy6B+UW+2u57odvtT86pBzVy679yUPHDrW57nfZyQd/rvyfy+s+P9NLds/lOkG2/vN9RTq3yM5fq24cK3vR/nX/wz3sr/O/6txyoLOb93HNk77Ms10+Pv/LZNF9GCu9+PzP5Rp8TLyF9eLg9TD2/7sx/P5gMBgM7oVs/beKZYC39K75jmc6ha7XuvG2ip2eYFfX9ywzy0/jP6u9kQFdl74FXDn7UIH41+5+zVuwo2tP/wj7V/lp7EdjFX7GKeMIHcQtPJ4Od6a8Lv2PM3HMfZUP455/J3aqdfB3JFaxkqxuGpPRduHyKLJysrrC/7iuNY7vMqm9iFM7V7iLyv9rjF/PS9HPlPOtOEIvB93BnWj56EXP1aAflyeLOep3P39LO9J4OvJ4G/C6BTyW7HxAtg/bY7PEz72uFYen+Vb64HnixhUHu2N/9/9A25aOUx53zThCBxyV8nGuw+7/XfujFz2P6TIH9GyPQtNlNlZ9Zfb3uYieravyUv0ot9jpw8vh3glW/t9lyvZaVByh64Q03fsf72F/ZKKtZTIH3pL9K27xWfbP5n/4QvWXuo8Cn1RxhK5T/H/X/wO7/g7flOk8m8Pv+H+tWybPPfx/Zv+OW3yG//cP9fdzsHruUOcpGUfo5ejZwap9e1rXhc4zq7OZbjfFav4XcPtX87/Od2bldPbvuEW/d8/531vHvdc7g/eFsf9gbD8YDAaDwWAwGAwGg8FgMBgMBoPBYPD34RF70dn79JHBfhP/rPa9s8fS32kRYG9M9nmEPnVvqcPfaVxxiexL83x9/wjvANIP+zeeyVN2dTnNR/ft8ansr79jwr4j9tnpPrcsz2pv8K3yd3v11Yb6HhCH1hvdsodM+wT5PattV+jq8sgydV+k9o2s/zjYr5bl6Z9qb54/u9obsmt/3stE+vjf37Gh9n9tvIb9/XcH1D70ww7sI66gfanbyxbX9bdFOqzsT9uhTzs8/6z/c538eZeb7qHUfZsB2pu+a4l9fvqM7rHVfLVNkobvJzgZQ1QX/q6hrG8rqFtXnvqCzPaMvfiGVZnkqe/vUZn1/XIn9ve97lznf60n55J0nFRZuM939IrMei5E86U9qNxXfNPJfnE9X6G+AHmqvk273PHn2dkBzcf3lq/kx49r/gF0p+9iUz0y5vt8pdKxz3m0TtpffU+v7mXX+ZTmkb3bj/bg/fB0TOCcUzafcWBD/+3Mahxm/bQzliPL6dywsz961TEL/+ntSO2v/l33mpPnif31XCLtV8vM3l3l86zK/vxPO74yJ0C+7ONAfnRHG878Orqr/Krne+XddYHK/uo3AW0xixXomVFd31BXnR9W5xsy+1OujuV6Xc+lep/Scx+d/ZHJ29cz0MVdducWke6q3N14d9Ke9N062pc+2nmKwWDwofEPiCRqout3vRYAAAR5bWtCVPrOyv4Af6I2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4nO2aiW3rMBAFXUgaSSEpJI2kkBSSRlKIPzb4YzxsSNmxZPiaBwx0kOKxy0Mitd8rpZRSSimllFJK/df39/f+6+trSoXfg7Iel0z7EulfU1Wf3W435fPzc//6+vpzfst1px5V1i1Vvn95eTnYY+v0r630//v7+y9Kdax6P6P/afvP4P+ZPj4+ftoAcwFto64rjHbBdYXVkfgVzr1ZmnXMOLO0+rN1ThnSP6RXUD7KMUpzpIpXaVb/5/yR/V91S/BFH/+Jz7iIL3KczPmjwohf4ppnS5VXXdexnpnNRVke8mNsyvMsW6afVJxZG0i7VL7P4P8Otpv5/+3t7fCOiH14pvfHTCN9QZsgvNLinPZH/J5WHcs3vJeRXvd9PpNp0p66si3nHPjo/p9p5v/sO32eTEr4sOxY7SbHVMpQ9zP9VN4jr/TfqB1n/67wSh8f1vlsDiAeZeT9J+89itb4P4XNmG/p5/lugO2xYfbr7Jv0vXw3GI0V+T6a/T/HkPRVliXLO6vvEo+irfyPL/Ft9rWeTn8v6ONJjrXZ92bzUdaD/Hp7yPE802TM6TbpZJlu+Tvor9rK/6WyUb4Dlm37e3v3Ne0k/cD7BGnRpnjmFP9nPMYk8iLNXr4lPer8r5RSSimlnlOX2ufNdO9lL/nWlOsgl7BhfRvNvmv699RftfZ5tT+sOdSayWzNeo3S/31tI7/zR9/8S2shrJv082soyznqR/zjMbu/lN7oepbXLK1RvybubM1pVua/iv2y3PsjX9Y88pz2wjO5zp5tJPdeOWcNl3s5JrB3sya82zrLmeuJdY/1Ztaa+rpShfc61r1MK21Xx/QZkFdeox6nxHol90mXve6lMp+j7pdsb6P+z1obtmY/vms09le83Mct6COs860JP1Yv7JdjXv+3IfchEHsZdcy1yrRVptnzGtm3/xNBnNH9kf9HZT5Hff4/xf8Zf/b+kHbinL0Zjvgz/8lYE35qvfqcl3sC+HpUp/RBt09ez/LKsNE+E/ezP3OdeY/KfK628H/fRymfUKY8LzHWMX4yltGe14afUi/CGDf4jwAb074Qc233fx9zco/ymP/5fyLzKPX73f+zMp+rY/7PuR079H6SdS318Sl9g7+Iyzy2Vfgxu2cYtuT9OudhxnDiYue0NXud+DP3KI+Vg39r8SFtJ23KntnI/6Myn/MuyH5b1il9R9/OumKP0VhF3Eyv59f92fvBmnDCluqVYdSDuaT7N+fy0TcYz/fnRnn1MNpA34tMGxM/856Vufe1S2hpvUA9vvS/UkoppZRSSimllFJKXU07EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREZE75B+Hl45q2TuOnAAAAVNta0JU+s7K/gB/pYUA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a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTNiAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMTAtMTdUMTY6MzI6NTFaPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMTAtMTdUMTU6NTU6MzBaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+RmxhZyBvZiBHZXJtYW55IGljb248L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QWx0PgogICAgICAgICA8L2RjOnRpdGxlPgogICAgICAgICA8ZGM6Y3JlYXRvcj4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+UGhpbDIwMDc8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgICAgIDxkYzpkZXNjcmlwdGlvbj4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+T3JpZ2luYWwgYXV0aG9yIGh0dHA6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9Vc2VyOlNrb3BwIE1vZGlmaWNhdGlvbnMgLSBjb252ZXJ0ZWQgdG8gUE5HPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzpkZXNjcmlwdGlvbj4KICAgICAgICAgPGRjOnJpZ2h0cz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLzwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6cmlnaHRzPgogICAgICAgICA8ZGM6c3ViamVjdD4KICAgICAgICAgICAgPHJkZjpCYWc+CiAgICAgICAgICAgICAgIDxyZGY6bGk+R2VybWFueTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPkdlcm1hbjwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPmZsYWc8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5pY29uPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+c21hbGw8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5zaGFkb3c8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5ib3JkZXI8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5wbmc8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L2RjOnN1YmplY3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNhcHRpb25Xcml0ZXI+RmxhZyBvZiBHZXJtYW55PC9waG90b3Nob3A6Q2FwdGlvbldyaXRlcj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcFJpZ2h0cz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3JpZ2h0cy8iPgogICAgICAgICA8eG1wUmlnaHRzOk1hcmtlZD5UcnVlPC94bXBSaWdodHM6TWFya2VkPgogICAgICAgICA8eG1wUmlnaHRzOldlYlN0YXRlbWVudD5odHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvPC94bXBSaWdodHM6V2ViU3RhdGVtZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pvf+FJgAAAoDSURBVHic7dlBEYAwEATBg8K/NBygJbiYPNKtYL9Te83MGgAAgMC9ewAAAHAOAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkHm+3QsAAIBjeEAAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyFzrnbV7BAAAcAYPCAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAACZH4UyCGm17iMbAAAAAElFTkSuQmCC",xc="data:image/png;base64,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",Ec="data:image/png;base64,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",Sc="data:image/png;base64,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",Mc="data:image/png;base64,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nc9oNkhFaJTlte1c//E+gkcuEC0W4ZFNFWxoP5d0IsmD33x/LuQYisGLW6pIpWeTNWdhWrMpr2hkdk09odCxN+pv2bmDZ5q3cueam4/78wYGBujtbqGQ24/f24PP3U1tTTcXNuXe08jvnfz0tzVs61nA+bM7WX1lFzPecn5xwythHmteyKGRagzD5Jyqfq5ZuosPn5ufWGZ/j5uHNtWza6COqxq3sfpq3T4hcjpRCOVds2042GPR3lHKaDJKwYyAEaFghnC53GRzbgIBP5lsikiJm3wujduVxOdN4TIS1NbEmT+vQGnk5Iz4RETeC4VQREQcTXONioiIoymEIiLiaAqhiIg4mkIoIiKOphCKiIijKYQiIuJoCqGIiDiaQigiIo6mEIqIiKMphCIi4mgKoYiIOJpCKCIijqYQioiIoymEIiLiaAqhiIg4mkIoIiKOphCKiIijGR1E9IR6ERFxLI0IRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxtP8HOHUqzzr9sygAAAAASUVORK5CYII=",yc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAKABAMAAACh1wxwAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAHlBMVEUAI5UAIZQkQqTc4fD////84uTvR1XsJzftKTkAAADDjxUDAAAAAWJLR0QJ8dml7AAAAAd0SU1FB+kIFA4XJ7iDdxQAAAVjSURBVHja7dHBAAAgAASwY4glhGJJJewketxjU1jSbcxVbZ/bLYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLBgwYIFCxYsWLDg3x62iYejbsx9MAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNS0wOC0yMFQxNDoyMzozOCswMDowMMkF3NYAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjUtMDgtMjBUMTQ6MjM6MzgrMDA6MDC4WGRqAAAAAElFTkSuQmCC",bc="data:image/png;base64,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",Tc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAKAAgMAAAAul/nQAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACVBMVEUAkkb////OKzdsRJOSAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+kECAABIgHQHmAAAAJ0SURBVHja7c8xAQAACAOglbSkKS2xT2hAUjZlWxZhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh4R/hAzW+Q6qmKxk5AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI1LTA0LTA4VDAwOjAxOjM0KzAwOjAwSGxLUQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNS0wNC0wOFQwMDowMTozNCswMDowMDkx8+0AAAAASUVORK5CYII=",wc="data:image/png;base64,UklGRlwEAABXRUJQVlA4TE8EAAAvScE2AH/FuG3bQPvPeu/7NSYK524GBG3bxvwhb/vjuG0jSXL+wc53zxLnn0DSJsHdY0gQDIAAYATANmzC+14Sm/PMYwpAIlJNGQmAFAZSADRQVgKmwOnvgurURFIYmA4kphOUoRlHBJAS0URuymZVcDp1pwQp4yzj5VUfmdIBRkS+/acjGDj9fU74/2MbABRt2zYlSSeUdqBs27Zt27Zt25WsF0jrnd+syrj77tuMiP5PgOT8n/N/zv//SzU8eOKKvZfvv6vxmlWbvJp39y/tXT5hUNixBAYtOP6iTX9z2/Nj8wcGHEl85rl6/eN1Z2bEnUfV7Kud2kO7Hy7r5TCCw853aI/uujkl7CbK13zXLPy2qsw99N6d0SxN70q4hdjOZs3ipm1RdxBZltIsT67NdwQjP6sBPw53AZWH1JDnY/RNqFNj1o7jrnCvGvV0MXEDP6hh3/ajbVxKjZuZzFlgo68G9tczFj6khj4Roavouhr7WiFZxbfU4PfKqCp9rEZ/VEJU4R01/MNimvKuq/GvRUgKnFCAR0napBDXUTTex+BPIqh/WkFmBtJT/EFhvilk54gC3U/OeEXqj6UmVgdFa6qYOatgjxMzUtH6Q2nJ+wRH30dYWa2Al5ISSyH6VcnJToW8hZLezZiaEozsVtA7CClLo0qX87FGYa+kI/Qd19cgG6MU+Ag2LiO7SEa8E1lHlIvFCn0hF3ew3aQi3oWtM8rELAU/jYlz6E4REahHVx3gYZDC78vDQnzzeDiG7wgPL/E9oyHchq8lxMJgtcABLEy0gbEsrLSBpSzss4HdLFyygYssPLCBuyy8t4E3LFTbwA8WUjbgsdBiA80sdNlA198PWmygmYWUDXgsVNvADxbe2cBrFu7ZwG0WLtnARRb22sBuFlbYwFIWJtrAWBYG2UB/FsKt+FpCLMhzfE+ExmP4jvCwAN8cHgbg68NDoA7dTyHyLLoTTMxEN5WJeBe2ziom5Ba2G0LlImzzuYh1IGuv4kIuITsvZI5ENpyN4DdcX4JsyCpcy4TO0hQqr4QP2YVqqxAay2BqjDMi2zBtFkqjHqKGCk5kOaIlQmr4LZ53YVZkOBx/iPB6Cs0RITZai6W6khkZ6SPxxwi3B5HsFXKL3uJ4VcCO9E2h8PoIv+N8DN2jheENGNYIxwcQHBGSI9fMdyXMkhTeNt2tAuG55JHZHhYL08U3TXa3VLguvGauKwXCduiAqY5GhPB1vom61wjnoz3zpCcK633fmOZVH+G9YK9vEv9QkVA/psYc1aOE/YpDvhn801FxgEPfm+DNEHGD4UV12fZrWVicYenaVDY1bq8UpxjfkcqW5NaoOMfSlV+z4cvyEnGSwWHn23tW+9UpIXGXlbOvdvSUrofLEuI6o9NP1fy56pNTq8SR9pt75Fnr72p5enhOX3Gsof7jlu25ePfNTy+jmvF+vrl7Yc/Ssf1DkvN/zv85//8vVQA=",Rc="data:image/png;base64,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",_c="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAIVBAMAAADbnobxAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX///+qveEANKMAOaYAOamOL0vaKhrVKx4AAACnHtw1AAAAAWJLR0QIht6VegAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+gHCBEgFNPt/igAAAI2SURBVHja7dFBEYAwAAOwWsACFmYBC1jAwuxPwd7rHYmFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwN5FldxUyaCKECEIEYIQIQgRghAhCEGIEIQIQYgQhAhBCEKEIEQIQoQgRAhCECIEIUIQIgQhQhCCECEIEYIQIQgRghCECEGIEIQIQYgQhCBECEKEIEQIQoQgBCFCECIEIUIQIgQhCBGCECEIEYIQIQhBiBCECEGIEIQIQYgQhCBECEKEIEQIQoQgBCFCECIEIUIQIgQhCBGCECEIEYIQIQhBiBCECEGIEIQIQQhChCBECEKEIEQIQhAiBCFCECIEIUIQghAhCBGCECEIEYIQhAhBiBCECEGIEIQgRAhChCBECEKEcCDkoUpequSjSiZVhAhBiBCECEGIEIQIQQhChCBECEKEIEQIQhAiBCFCECIEIUIQghAhCBGCECEIEYIQhAhBiBCECEGIEIQgRAhChCBECEKEIAQhQhAiBCFCECIEIQgRghAhCBGCECEIQYgQhAhBiBCECEEIQoQgRAhChCBECEKEIAQhQhAiBCFCECIEIQgRghAhCBGCECEIQYgQhAhBiBCECEEIQoQgRAhChCBECEIQIgQhQhAiBCFCEIIQIQgRghAhCBGCEIQIQYgQhAhBiBCEIEQIQoQgRAhChCAEIUIQIgQhQhAiBCG/twAF+zc5lLr9EAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNC0wNy0wOFQxNzozMjoxOSswMDowME1J9akAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjQtMDctMDhUMTc6MzI6MTkrMDA6MDA8FE0VAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==",Pc="data:image/png;base64,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",Un={[_t.ENGLISH_UNITED_KINGDOM]:Ec,[_t.ENGLISH_UNITED_STATES]:Sc,[_t.ENGLISH_AUSTRALIA]:xc,[_t.FRENCH]:yc,[_t.GERMAN_GERMANY]:vc,[_t.GERMAN_SWITZERLAND]:Cc,[_t.HINDI_INDIA]:bc,[_t.ITALIAN]:Tc,[_t.JAPANESE_JAPAN]:wc,[_t.PORTUGUESE_BRAZILIAN]:Ic,[_t.PORTUGUESE_PORTUGAL]:Rc,[_t.RUSSIAN]:_c,[_t.SPANISH_SPAIN]:Mc,[_t.CHINESE_CHINA]:Pc},Dc={[me.FERRARI]:Un[_t.ITALIAN],[me.LIGHT]:Un[_t.ENGLISH_UNITED_KINGDOM],[me.LIGHT_BLUE]:Un[_t.FRENCH],[me.DARK]:Un[_t.ENGLISH_UNITED_STATES],[me.DARK_PURPLE]:Un[_t.JAPANESE_JAPAN]};`${btoa({CUSTOM_CROSSHAIR:`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
1
+ (function(ei,_s){typeof exports=="object"&&typeof module<"u"?_s(exports):typeof define=="function"&&define.amd?define(["exports"],_s):(ei=typeof globalThis<"u"?globalThis:ei||self,_s(ei["as-design-system-threejs-lib"]={}))})(this,(function(ei){"use strict";const _s="as-design-system-threejs-lib";class xc{constructor(t=new Map){this.registerAllComponents(t)}registerAllComponents(t){Array.from(t.entries()).forEach(([e,i])=>{this.registerComponent(e,i)})}registerComponent(t,e){customElements.get(t)===void 0?(customElements.define(t,e),console.log(`Registered Web Component: ${t}`)):console.warn(`Web Component "${t}" is already registered.`)}}const Ca={LANGUAGE_CHANGE_CONFIRMED:"language-change-confirmed",THEME_CHANGE_CONFIRMED:"theme-change-confirmed"},De={ENGLISH_UNITED_KINGDOM:"English",ENGLISH_UNITED_STATES:"English",ENGLISH_AUSTRALIA:"English",FRENCH:"French",GERMAN_GERMANY:"German",GERMAN_SWITZERLAND:"German",HINDI_INDIA:"Hindi",ITALIAN:"Italian",JAPANESE_JAPAN:"Japanese",PORTUGUESE_BRAZILIAN:"Portuguese",PORTUGUESE_PORTUGAL:"Portuguese",RUSSIAN:"Russian",SPANISH_SPAIN:"Spanish",CHINESE_CHINA:"Chinese"},Ne={ENGLISH_UNITED_KINGDOM:"English",ENGLISH_UNITED_STATES:"English",ENGLISH_AUSTRALIA:"English",FRENCH:"Français",GERMAN_GERMANY:"Deutsch",GERMAN_SWITZERLAND:"Deutsch",HINDI_INDIA:"हिन्दी",ITALIAN:"Italiano",JAPANESE_JAPAN:"日本語",PORTUGUESE_BRAZILIAN:"Português",PORTUGUESE_PORTUGAL:"Português",RUSSIAN:"Русский",SPANISH_SPAIN:"Español",CHINESE_CHINA:"中文"},_t={ENGLISH_UNITED_KINGDOM:"en-UK",ENGLISH_UNITED_STATES:"en-US",ENGLISH_AUSTRALIA:"en-AU",FRENCH:"fr-FR",GERMAN_GERMANY:"de-DE",GERMAN_SWITZERLAND:"de-CH",HINDI_INDIA:"hi-IN",ITALIAN:"it-IT",JAPANESE_JAPAN:"ja-JP",PORTUGUESE_BRAZILIAN:"br-BR",PORTUGUESE_PORTUGAL:"pt-PT",RUSSIAN:"ru-RU",SPANISH_SPAIN:"es-ES",CHINESE_CHINA:"zh-CN"},Fe={ENGLISH_UNITED_KINGDOM:"English (United Kingdom)",ENGLISH_UNITED_STATES:"English (United States)",ENGLISH_AUSTRALIA:"English (Australia)",FRENCH:"French",GERMAN_GERMANY:"German (Germany)",GERMAN_SWITZERLAND:"German (Switzerland)",HINDI_INDIA:"Hindi (India)",ITALIAN:"Italian",JAPANESE_JAPAN:"Japanese (Japan)",PORTUGUESE_BRAZILIAN:"Portuguese (Brazil)",PORTUGUESE_PORTUGAL:"Portuguese (Portugal)",RUSSIAN:"Russian",SPANISH_SPAIN:"Spanish (Spain)",CHINESE_CHINA:"Chinese (China)"},jt={ENGLISH_UNITED_KINGDOM:"ENGLISH_UNITED_KINGDOM",ENGLISH_UNITED_STATES:"ENGLISH_UNITED_STATES",ENGLISH_AUSTRALIA:"ENGLISH_AUSTRALIA",FRENCH:"FRENCH",GERMAN_GERMANY:"GERMAN_GERMANY",GERMAN_SWITZERLAND:"GERMAN_SWITZERLAND",HINDI_INDIA:"HINDI_INDIA",ITALIAN:"ITALIAN",JAPANESE_JAPAN:"JAPANESE_JAPAN",PORTUGUESE_BRAZILIAN:"PORTUGUESE_BRAZILIAN",PORTUGUESE_PORTUGAL:"PORTUGUESE_PORTUGAL",RUSSIAN:"RUSSIAN",SPANISH_SPAIN:"SPANISH_SPAIN",CHINESE_CHINA:"CHINESE_CHINA"},va=new Map([[jt.ENGLISH_UNITED_KINGDOM,{autonyms:Ne.ENGLISH_UNITED_KINGDOM,id:jt.ENGLISH_UNITED_KINGDOM,isoCode:_t.ENGLISH_UNITED_KINGDOM,language:De.ENGLISH_UNITED_KINGDOM,name:Fe.ENGLISH_UNITED_KINGDOM,value:_t.ENGLISH_UNITED_KINGDOM}],[jt.ENGLISH_UNITED_STATES,{autonyms:Ne.ENGLISH_UNITED_STATES,id:jt.ENGLISH_UNITED_STATES,isoCode:_t.ENGLISH_UNITED_STATES,language:De.ENGLISH_UNITED_STATES,name:Fe.ENGLISH_UNITED_STATES,value:_t.ENGLISH_UNITED_STATES}],[jt.ENGLISH_AUSTRALIA,{autonyms:Ne.ENGLISH_AUSTRALIA,id:jt.ENGLISH_AUSTRALIA,isoCode:_t.ENGLISH_AUSTRALIA,language:De.ENGLISH_AUSTRALIA,name:Fe.ENGLISH_AUSTRALIA,value:_t.ENGLISH_AUSTRALIA}],[jt.FRENCH,{autonyms:Ne.FRENCH,id:jt.FRENCH,isoCode:_t.FRENCH,language:De.FRENCH,name:Fe.FRENCH,value:_t.FRENCH}],[jt.GERMAN_GERMANY,{autonyms:Ne.GERMAN_GERMANY,id:jt.GERMAN_GERMANY,isoCode:_t.GERMAN_GERMANY,language:De.GERMAN_GERMANY,name:Fe.GERMAN_GERMANY,value:_t.GERMAN_GERMANY}],[jt.GERMAN_SWITZERLAND,{autonyms:Ne.GERMAN_SWITZERLAND,id:jt.GERMAN_SWITZERLAND,isoCode:_t.GERMAN_SWITZERLAND,language:De.GERMAN_SWITZERLAND,name:Fe.GERMAN_SWITZERLAND,value:_t.GERMAN_SWITZERLAND}],[jt.HINDI_INDIA,{autonyms:Ne.HINDI_INDIA,id:jt.HINDI_INDIA,isoCode:_t.HINDI_INDIA,language:De.HINDI_INDIA,name:Fe.HINDI_INDIA,value:_t.HINDI_INDIA}],[jt.ITALIAN,{autonyms:Ne.ITALIAN,id:jt.ITALIAN,isoCode:_t.ITALIAN,language:De.ITALIAN,name:Fe.ITALIAN,value:_t.ITALIAN}],[jt.JAPANESE_JAPAN,{autonyms:Ne.JAPANESE_JAPAN,id:jt.JAPANESE_JAPAN,isoCode:_t.JAPANESE_JAPAN,language:De.JAPANESE_JAPAN,name:Fe.JAPANESE_JAPAN,value:_t.JAPANESE_JAPAN}],[jt.PORTUGUESE_BRAZILIAN,{autonyms:Ne.PORTUGUESE_BRAZILIAN,id:jt.PORTUGUESE_BRAZILIAN,isoCode:_t.PORTUGUESE_BRAZILIAN,language:De.PORTUGUESE_BRAZILIAN,name:Fe.PORTUGUESE_BRAZILIAN,value:_t.PORTUGUESE_BRAZILIAN}],[jt.PORTUGUESE_PORTUGAL,{autonyms:Ne.PORTUGUESE_PORTUGAL,id:jt.PORTUGUESE_PORTUGAL,isoCode:_t.PORTUGUESE_PORTUGAL,language:De.PORTUGUESE_PORTUGAL,name:Fe.PORTUGUESE_PORTUGAL,value:_t.PORTUGUESE_PORTUGAL}],[jt.RUSSIAN,{autonyms:Ne.RUSSIAN,id:jt.RUSSIAN,isoCode:_t.RUSSIAN,language:De.RUSSIAN,name:Fe.RUSSIAN,value:_t.RUSSIAN}],[jt.SPANISH_SPAIN,{autonyms:Ne.SPANISH_SPAIN,id:jt.SPANISH_SPAIN,isoCode:_t.SPANISH_SPAIN,language:De.SPANISH_SPAIN,name:Fe.SPANISH_SPAIN,value:_t.SPANISH_SPAIN}],[jt.CHINESE_CHINA,{autonyms:Ne.CHINESE_CHINA,id:jt.CHINESE_CHINA,isoCode:_t.CHINESE_CHINA,language:De.CHINESE_CHINA,name:Fe.CHINESE_CHINA,value:_t.CHINESE_CHINA}]]),Ps={FERRARI:"Ferrari theme inspired by the iconic red color of Ferrari cars.",LIGHT:"Light theme with a clean and minimalistic design.",LIGHT_BLUE:"Light Blue theme with a refreshing and calm appearance.",DARK:"Dark theme with a sleek and modern look.",DARK_PURPLE:"Dark Purple theme with a luxurious and elegant feel."},Ls={FERRARI:"🏎️",LIGHT:"☀️",LIGHT_BLUE:"🫧",DARK:"🌙",DARK_PURPLE:"🟣"},Ds={FERRARI:"Ferrari",LIGHT:"Light",LIGHT_BLUE:"Light Blue",DARK:"Dark",DARK_PURPLE:"Dark Purple"},Ns={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},me={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},Ec=new Map([[me.DARK,{description:Ps.DARK,icon:Ls.DARK,id:me.DARK,name:Ds.DARK,value:Ns.DARK}],[me.DARK_PURPLE,{description:Ps.DARK_PURPLE,icon:Ls.DARK_PURPLE,id:me.DARK_PURPLE,name:Ds.DARK_PURPLE,value:Ns.DARK_PURPLE}],[me.FERRARI,{description:Ps.FERRARI,icon:Ls.FERRARI,id:me.FERRARI,name:Ds.FERRARI,value:Ns.FERRARI}],[me.LIGHT,{description:Ps.LIGHT,icon:Ls.LIGHT,id:me.LIGHT,name:Ds.LIGHT,value:Ns.LIGHT}],[me.LIGHT_BLUE,{description:Ps.LIGHT_BLUE,icon:Ls.LIGHT_BLUE,id:me.LIGHT_BLUE,name:Ds.LIGHT_BLUE,value:Ns.LIGHT_BLUE}]]),Sc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAADnCAIAAAD3vojWAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAAB3RJTUUH6AkKDjoVFoSmwgAAMW5JREFUeNrtnWd4U0fWx+eqd8mWq1wl27Jxb5hq03sNLYFsgBBMCSTLsmlvkk0I2TSSkCUdHFIgFUNCMSV0Y+NQ3LvkIle5yLJ6L/f9IJZNiCEUdc/vyZMPsrh37tz568zMOXMOAj6eCCAQiDeCgV0AgUB5QyAQKG8IBALlDYFAoLwhEAiUNwQCgfKGQKC8IRAIlDcEAoHyhkAgUN4QCATKGwKBQHlDIFDeEAgEyhsCgUB5QyAQKG8IBALlDYFAoLwhEChvCAQC5Q2BQKC8IRAIlDcEAoHyhkAgUN4QCATKGwKB8oZAIFDeEHeGjTN9E9X4TVQjG2eCvTFMwMEuGA4sZUs+jmgKwBsBAHNZ0v/r5O7p58BugdYb4tlwCIZfYmoPRNfZtA0A8MWZdnOFJ2KrI4h62D/eDRbMjoS94J2/3AiaG9BzNLY2haL5819jSLp1AT0WgFxRMVCAwO7yShBY39srSaJo8riCUTTlX36zQkPLFcWWaeiw06D1hrg7JMT6cmj7fl7jXc69gwnGNf69fjhzkZppQuFiDcob4q6MpyuOx9Ys8ZVgEfRepvFgFE35sK+kTkcVGciwG71ngQa7wDtgYs27IpoLR1TEkbX3d4Uoku7MiKp9UQ3QcwatN8SNmMeSHo+rmcaUIQ+2R4YAkELRrPTvk5jwVVoa7FhovSGuJBhvzI+pOxpbE0ow2OuaQXjjN1GNx/g1Yfa7JgRab8i9WdqVfr1HY2szqCpHXJ9P1j0R0KuzYq5r6NBz5rGDBDrGPJBokm4PVzCJIXfCvUrUzNxWfr2OCrsdWm+IY8Ej6LOczvzo+miSzjl3DCMY1gX0UDHWIjXTgkIzDq03xDGMpSn28IQJZI1L7t6kJ68XxV5QsuCLgNYbYk+oWMvroW15UcLA/4aOOx82zrzSv5dDMF5SMQ0wAAbKG2IX5rCkJ2Jr5vhIXS4pBIAMqmq1f2+bgdQAV+NuD/wNdmsC8cZ9UQ0FsTXh7nS6KxhvPBhTd4xvT28cBFrvYcRNv9fouzgW4hL4ZN0a/149Cj1n7jyK4Naa+8Ej6nZzhVOZMo9obZGSua4ttlFHgS8OWm/IncAh6FNB3Qdj6u87dNz5RBANawN68AhaomZAzxm03pChSaWo83iCTMdEoTmBGi01VxR7Vc2Ar9JNgFtrbgEFY3k7rLU0qcxztQ0ASKJoSuLLd3OFdIwFvlM4OYcAAMBEhvx4bM18N/B72WE2iIAMqmq5f79AR2mGR8eh9R7O+ODMu7nCCyMqY5wVYeocIgn6k3HVB6Lr/PHw6Di03sOSpWzJydjqHIbCWx8wgaJd698js+DKYSI3aL2HD1yi/lTssDBuN6Yn8ZV8kha+d2i9vf3XFEFzA3oO82vjKcNouEcS9WsDesww6bLTgY4x55FMUedxhVnuGoXmBKq0tLWtsaVwrg6ttzdBxlhfDmnfx2sMH96FQYLwMOkytN7eRTZDsSdS4KooNJMZqzMQlBqSTk/QGQgAADLRSCYZGVQ9mWjE41zjoG41kDeI+GcUPnB4QHl7Kiyc+Z2w1twAsXOWmwNyemu3X0ePX1sPWyT27+hl90oZZgv2Dv8Eh7UEsZURwQNczkBEkDSCM8ALkbCZauf0T77U/8k2/oAZD4cKlLeHMY8l/YwnDME79sjkoIJa1hh5tZZXIYho7fa3yzVDA2Qp/I602I5xKU1BbMf67fpMhOc6ePsGguCAgfL2DDgEw0eRzYt8JI67RVNn4PHilKIKvr0kfTuiQvuzU4VzsquiQ/sdd5cTcvbGtpgOAwkOHihvd+5NkBsgfje8lYE1O+L6Cg357NWEgqKUSmG4kx+NFyKZm105P6fSQVN3rRW7vTviPXGYBXrOoLzdkESyZg9PMMYxfq+qprCvjmYXV8ZYrK7ccMZirNlpwjXzipJiuhxx/XINPVfEh1FuUN5uBB5BtwZ3vhbSRsRY7X7xCkH418eyL1Xw3eqRU/kdq+cVT0gX2P3KJhTZ2RO2rStSDz1nUN4uZxxdsYcrjHdAcuKiCn7e4Qk1zaFu++zJMZ3rF10cm9xs9ys368nr2/jnoecMyttVMLHm7aFtmwO7MPZeLfYNMt7bP+vstXiP6IecNOHzq49z/OT2vSwKwLcDgVvaoweh5+y+F1Mwau3+mMeSFsTVTH/gopy3YLZgfzwz6pn/PCJo9xhfUXsv+9D5TLMFmxzThcXabXliK1e6yr+vw0iCJZCg9XYSQXjjjvCWx/z67H7lsobI17+Y397L9tCeieQM/OuJo+lx7Xa/coGMvbGN32UkwuEHrbfjfgvBSr/eIw5IToyiyNcF4//1+UNylQebKbmKUlCcgqKY9Lh2+05qYLlSaL0dSxRJt5srnMKwf3JimZL68meLSqqjvaavRsaL3tx0yI9l/7xxl1XMXFFsA0y6DK23vcAh6LOczgMx9XwHpEy6Vsfd8NYqYYdXRWWKJT4nS5LieWKOv9y+Vw4nGtYFiGG5Uihv+5BGVR/j1z7m14dDUPsvKYtSn/twmUbnhcGYWj3xeHFKgI96BLfHzkMWAePpioW+AxUaOlyNQ3nfJxSM5fXQtq+jGkMcU0nr+19Hv/HlXKvVa4M3UBS5VMFHUSQzvs3uFw/Am54I6OEQjIVKlhEGwEB53xOzHVmUE0WRXT9O/zR/MvD+XSKkrCFSqSWPSWpB7P2stnKlq/z7RAZyox6uxqG878osGD/jCt8Jb2XhHHIsxGrFvPL5Q/nnRg6fLq1tDu2W+EzMECAOWODQsZaH2f2ZVNUlJUtlxcEBDOV9W5ayJSdia8Y4LB0aiiJvfDnv6KW04daxTR1BUgUtJ13ooOvbypXCpMtQ3kPDI+p+iql/gdNBccCxkJt8enDKd6fGDM8ebhBxAHDIOtwGCWOd5yOdxJT/pmJIYRwrlLcNW1HO/Jj6EQ5Oh5Z/duSuH6cN564ua4hk0PRJ0V2Ou0UEUf9EQA8eA8uVQnkDkEJRH4mtfcK/l4BBHXqj01cTX8tbiA77AXelJjo6tJ8X4sBUNngEnciQL/CRlmnoYhMRyns4YktOvD+qIYxgcPS9WroCnn7vUZMZC6eLKIoUVfInZzb6MBw7VwrEGx/37/XDmYvVzGHrORum8p5Alx+Pq1nsK8E63poajPjNO/7WN8iE2rZhtmDLGiLn51TicFaH3giDgFE05XJ2f4OO0jIsy5UOO3n74My7Ipo/jGzywzmpvtfrX8wvqY6Bqv49g0qqTEl1RLKXId/4Y359CWTNRZWP1oqF8vZabH6vHIbcaSvgUyVJnx6cAvX8ZxraOGGBMn54n3Nul0DRPuHfK7fgyoaT52y4rEk4BMMvMbUHousC8Ean3bR3gPn63vlQybfjra/m9A0ynHY7X5xpN1d4IrY6YtiUgvJ+620rynk0tjaFonHyrV/ZvaipIxDK+HaYzLi+Qea0UXXOvGkMSbcuoMcyPMqVern1TqJoSuIrdnOFdIyzi2mVVEdfKI2DGr4zZ64mFFc6e2OCgrG8HdZ6PbEsg6qC8vZISIh1W2hbaULZKFcU3DWacDu+mQ3Vezfs2D/baHJBrHgaVX0loXxXRDMVa/HWvvXOyfl4uuJ4bM0SXwkWQV3SgD2/TDhfGg+lezco1WQCzpIxot35t7Z5zh72ldTrqa3e6DnzNuvNxJp3RTQXjqhwVcFdAIBcRdl/YizU7d3z1bHxMqXLksxFkXSn46r2RTWwneUrhdb7fpjHkh6Pq5lm7+TE92y6D0+4Xs+Dor17zBYsgWAeGS9yVQNsSZdX+vdJTPgqLc1rOtZLUikG440fRjYt8ZW4vCVqLWn2ln+oNHfKr0ShEPB4LJ1BAgDg8FgyGQ8AIFMIAACd1ggA0OlMZpMFAKBU6Mxmq1Zr9HqF0yj6E//5gE51vcuqQMZ+so3f6RVpnjz++DsCwGN+vR9EtPi6x8zqh19H6QyU0DAmJ4TFCWEGh7B8fak+vhSmD5nJorBYZCaLQiDcW+yU0WhRyLVyuU4h1ypkOtmgdnBQ09Mt7+6Si7vlvT1Ki8Xq6e9RrSXlnxu5Zn6Ry1sy10eaw7j+SlfkR30hVg8/AuTZ1juapNvDFUxiyN2kPTqzjyRIEBrmh/ljLLvBYvqy4cSgXjVoUJKwhKeSFwVRfAEAswteECl7LKg1yZf77riNPEYwAGBr8aenOq5RcEQyjkjCEQ7N3M4gUK73N57quPZ82goCFlc10BJMZQeQWbaLWyzWvl6luFve1SFrEvQ3C/sFjb0Kuc7j3iaTpj2x6wMKyV2mKiVqZm4r36MLpHiqvB1alPO+KZe+nj7jZale+Y/iTxpk7Qu4417MeBSDYPQWI2PPnL+nLPYl0q/2NejMhl/nvwsA4O5bvnP8k+H0wKOiy8fafitftgcAsOTUq1NC00cGxMkNagtqnRyahsfgdpT/+Pxvu8uX7Qmg+ER88/CLGX/bPurxO7RE0q9qEvYLG/sEDb2VZR29PUqPeK2vrjuycEK5+7THVq701e5Ig2dmvPTIyflYmmIPT5hA1rhbw2hhywAAK8++yWUE78p+6pnLn5GwhGfSHiZhCTgMdtvI1XKjGotgv286e6P3MdhYVni8b0SGP//LhpODepUvia4zG75qOHWhuxKLYJ5OXoTH4AAAA3qFP5lVJhH2aWUELN6fPMT5s09qDssN6njfiCQ2j+cf7B8QNXZ8lO1PAxJ1fa24sqyzsryztrrbZHJTT+/xohS3kjceQZ/ndCzylawXxV5QsqC8HQsVa/kXp/0ZTicWoO7Wtj5NSkxGjAW1nu4sVa87ScTi3xu3cfOlXc+kPQwAoOHJrC/msog0PIJ7d9z6G6MHgzOjFgCAyWo2WEw4DBYAoDMbNybOD6MF6C3GEKr/jYtrB2eGZ5X2Cy50V+RwkgMpvn9uwBf1x6eHZx5qubT9+r73xm2cEpp+809+/rScSfzsSTEIQLRaY0Vpx+Wi5suFzR3tg3/9Y5odXVfdrVA4Y7Zf1hjRLfEJ8Ze51ZuNIenOjajM6+c828FTWnBQ3g5hDkv6aWRTuLueB+g0bwlEEICiDAKlTysLpwcYLEY85sYuGh1P/m3xJ1FMznfCs8faSh7lT7NZ71Pt1671NRxrK8kKiGMQKAAAndkgM6hpeDKLSBPKOwMoLBKW0K+TPxY7fcPFnTmcZCwGc3PhfRMLam2UdfBZoSl+0f9MXZbmP0Sk5+KTr/ZopJND02bFjHouZyZ4CXR1yq6WiK6WtJYUt2jUt6a18POjccJYa9aNa6gXXzgrbKgV63SO3b9EUeTk5aS1Cy+53yIWrAsQz/MZeKot5tCgv6dIxjNWFIF4476ohoLYmnD3PeuDhMTNBQBgEczfk5csOPHSzsr89Rd3bkxccGPfiEgbNCgBANPCMg2WGyKZFZFVKhGc6yofF5SUP3Ob7cMpYelX+ur3CU7vqPjxlWtfSXRyAIDapMsKjCNi8U/Ez+7XygPIt9a1b1Z0RzNDHuVPQwDo18mHWEZazYXiypcy/2ZF0eWnX99R/iMAIDTMZ8aiETt2LTlf8s/3P142Y06CzUtnQybTLnk4IyMrYsXK0aPH8hytbRvHLqW6bcqqYLzxYEzdMX5NqOMz/AyLrTWb32tnRIubRxSJ5DO5U0/eMEEA/V547rfeuqmhGQt5420fDupVDAIFh3mgdAJijTSAzCrqqR4dGE/G/cExe6jl0otX8v6esiTeJyKJzWOTbj1oWSiuWnH69X1TXxwblLC34cQvrUXnFuwEAEw+vFWsGXiIl/1IzOQUvyi9zlRU2HT6RH1RodCgN6emh+38ZBkAYP60j9RqJ+1p//jmZ7ERve78uuVm3LZuD/CcubW8eUTdbq5wKlMG3J5S2aeZ0zbe8qFSqRd3yXt7FINSjVymlctsvmudXK5VyHQWixVFUZVSDwAwmSw220gm4/F4LACAziAhCILDYRgsMotFYbLILB8Ki0X28aX6+FKCgpmcUBaDQfq98s91ldUOimqlojBawOcTt97SmJev7r3YXWmymmukIhRFv5320uKonH6dPPnHNQdnvnZUVLK34fgnOVseiZls+75Wa7xwprGqouvozxU0OpnJJLW2DDinM7eu+PWxOSXu/9KLlMx1bbGNblyu1E3X3jgE3RTY/UaoyFNO82Co6RVlHc3C/rZWqbhbbvtPrbrnKZxOZ7LpXKn862UIjU4MCfWxxc9Ecv2SYkc8lDiBRh863Op0R+mOsesnhqTqzAaj1cwkUAEAP7dcYhKoSqP29VFrMAhysv3qTXl3GfuzpofPWZC8YtWonw+UFxyuclpnXm/geoS8sxmKiqTSd8Thb4rDjW7pOXNH651KUefxBJmecxbXZMZOWPeCzkBwh8ZwQlgxsYExsQH8uMDk1NDAoBuz9G8af30kZjIR+4f8/lOP/DOMFlA/2F4lbSZgcEfnvDkxJFVh1Cw4/pJI1aMy6v49+oknExfY5hcXzgoO/VR2/YoIdbDXgkoyXNzzDs5zzmnWaKm5otiraoa7Ncy9rDcFY3klxE39XnegtiXkdtqm0QhOW7LemKV3y8Xd8sLzN7IU+gfQ4xODU9LD0jLiMVYM+N3aX6KTl/YLjs15k4wjPlvyOZvEmBiSCgB4o/TbCHrghYc+aFf1pfz4xKrYGVQ8CY/HTp8VP31WfJOg76fvrh87XG00mB30CBo9sb6VkxzT6SkDIImiKYkv/0LCeaY9SuVO2RrdSN4zmYOf8YSRBM/Lg1Vaz73dnzY8NenAD9c72gZd1TZJv6rwvKrwvBAAQKUS0kdGjMuJHpcdHRruwyTQzi/8wLZFh0EQFuHGSalCceUH4zcjAImkB9HxlH6djIsPBgCc6rh2ra9xSmj6y9vnrt884Yd91w7+VKZSOuR9XavjepC8AQAYBKwLEM/xkW5uizk86OcmrXKLA6G25MQfRDSzsGbggXx/aoxIfKsvNCzc5633F0+bFT9nfmJEJPu3khaLxcVTEpPJ0tE2WFzY/MP+a6cKasWdCg7VNzCIgcVh2CRmmn8Mg0C1rdIRgIwJSjgiuny2q+yVkSsRBPnX1S//U3UwmhXyyrUveYzgjNCYUWN5D/9tJNuP2iTo12rsPENh0vTTR9d53EhgYC2PsPvdJ+my69feS9mSTyKE/ngPPkm/+LnNrd1DhDokpYbu+3GN0WSekPWuXuemD0gk4UaP5U2bGT9l+ggSGQ8AaJC1zzr2PBbBaM2Gn2dtHxOUMKhX8fYvb37sOz8S80T71c9rjx6d8wYAoF8nxyFYOpZy9Oeqzz+6OCBR26tVMWF9B97+1HOHhMyMe6GTl9fPQYetvLlE/WeRwhmsQeDJWK2YMWteGjJb2KOrRyEIEhXt/1XeZRfOz+8SGp04cUrstJnxY8ZHWTHWVqU4mhlii3gvlzQ9fu7tqkf2/tJaJNOr53FH+5N9AABrzu/Ib764KWnhc2nLKSjpl/yKvbuLpAN2OAtAwJt/+/INDMazD7oWqljrWvlCvcs8Z66ZnNuSEx/m18ZTtMDD6e73+fbk0KmX6mvEVeVdheeFapUedfu9QqPRImzsO1VQm/9DmWJQl8SLYLNvrMaZRNrbZd+zyQwrat1w8f06WfvymClCede/ru49v/CDM52lW4o/ns0bNXVM0uJHMkkkXH2t+AFPrVismAUTK+gUz05IHknUrw3oMbsu6bIL5J1MUR/h120IFDu6KKdzqG4OPVmSPOSfbkoa9agH1etN1ZVdP313/dIFIQAIN8qPQiRMCEnZWZlf1FODAHBuwQcELO6pSx/2aQfHBSc+l/aIQN7ZrOieFpZJIGDTMsOWPJJpNFrqasUP8uDjUprDAgc9fXjgEXQqU7bAV1rqinKlTpW3rSjnPl5juBeViSiu4pdUeWcJsQGJ+tIF4YHvSyUS1ZjE2M1ZCxZwx0XQAzMDYmukrf8u3f/v0U+89NsX71X8dL2/8f8yHo1ickTKnpH5G1g02qZFMydMim1tHujtUdzf3ZOiuhOju72jJ4PwxjX+vX44c5GaaXJiuVLnrb2zGYo8riCWpPUyDXx+aNLunycCbweDQbInxqzOHZeaHgYA+LjmF7PVsiVliRW1Bn21+PyCnYlsLgBg2a+vBVF8f+utQ1F05/hNOZzkSxeEO/59qrtLfq93XLvw0qal57ysG1sN5A0i/hmFj5PemhPuwcKZd3OFhSMqvE/bAACtnuCtkl69dtzNnLNWK1p4Xvj48q/WrPj6wtnGJxMWbklZAgCQ6BRELD7eNwIAUNxTc7C5kEmgXlj4wdMpix87+0arsidnEv9gwcZVa8disfc22OQqL0w8ziPqTsdVHYiuc06BWofLex5LWpt8fV2A2FurOXmrvGfPT968ddIX+1dTKH94wIqyjq2bDiyZ+9nxI9VWC2oF1o+yn8YgGBSgW4s//WbqC4N6ZeIPjzPwlJa/fW/LHkci47c8O/X7n3PjEzl33wCFmuKlQwYsZUtqk6+v9HP4qTgHrr05BMPXUYLtoSKG9xZ5AQCc/C25udML6wTK5VocFlNT1V1eOkT9ELlMe/5M47nTDeGBfrMzMxAEXOiq3Fl1YCFv/PMZy2eEZQEAuIxgAIDMoHri/LuHRcXp3KiNK6ewWJTy0naz+a89XmGBsplja7x12NCwlod8B7JoqmI1U+GwDDAOkbcttcURfl0qRQ28nWOX0tp72V44K9EYS4pbaqq67vAd2aD2zKn64sKmwCDGhKSE8cFJ265/vbf+RA4nOZtzw5uwt+HEt8IzTyUt2nRplx+ZuWJy9vRZCUJBX0/3X2y5hfjL54yv9u7BE0PSrXdkuVKHTM53RjTv5goZnhlheq/ojU6K28diESzWHZc4dTXizbnfr1u5L0QdXLr0842JC1ac+XersgcAMKhXzQofpbcYiVj8W6Nzd5T/AAAIi/DN27fquZdm2k623w6TGTscxo+tXOl7ES0eY71PK3zFJsIEhoKIsXr96zl7NdE51nvilNiwCHa7SOqe/SDulh/6qby7U/749MnPZj3sR2YCAFafexuHwT0eN2v56dc3JM6fyx0bRgsAACAISEoJmTg1rrKsY1A6dJRbZLDU6603AEBrxf6ri7utK9IR1ttRa+8yDX3fQCCXZBhB1nr367lUEeuEtfffVo9+6bU502bG63Smmsou9+wKFAXCxr5f8iuwGExCUggWi7Gg1rfLv/97yhIMgsmrP74tazUAYECvWH3uncOi4jHRcWsfnaTVGmurh/Bv80IkXrz2tnFCzp4lSDohZzsops2BO+diI3GxMGG+IKnbRPTiN0QlOSOr3rdfX1GrDCq18ftvrrh5h6iU+g/fO7di0Z7qiq5HYiY/n75i/M9P/afq4MzwLNsXvhOcvdJbPzdyzPzjL13sr3j2pRk7P3n494mlbBDxJi8eNn0mwqqWuDmCpA4DyXF3cUZYCwtnfiesNddLfWM7v5vhhHK/TCaJziABgCiVOqXCM2L+EAQsWpb+j+enkyk4hVHjQ6QDAGoHRVQcKePA+gMzXm1V9nwvPHvxof8AAHrFimeezq+rEd/850unXn/x8QKv1Ha+1P/JNv6AGe/w/RonBKXqrZgCOfu8ymcsXenndSWUq5rCyxoc3ocGg1mp1CuVeoPBkzYsG+p6jv1SFRrmG88PsX0y7/iLXEbw3MgxK8+99VrW4wlsbgwrFABAo5PmLkge6Fc1NtzwBo9LaXZhSWAH0WogP9yc8E5PuHNOgzsv5rzDQNorCTYDZCxNiUVQr3lhws4gb405twtajfH0ibr2NunI0ZEkEt5ktXxae/j59BU10tZaqWhr6lLb1yQ6uc5qmDMzlcUiXy1ptVrRaVn1XhNzDgAwo8jHfaFLmhOcmVnVqcmYdFbMtq7Inwf98rjCLJrSO15beKDUU5pqc0S5pMDYqYLaitKO7e8seHL0AhRFU39aKzeo9019EQCgtxjXnNvxa+c1FAVPxM9+97ENcQnBzzyVHx4s9RptV2lpa1tjSzV0Z6+PXJLOAYOga/173g9voXl+QFtXn++8rX/3iKbOmptoRdFfj7ssyREGg6xcM+bJLZMAFtVbjHQ8BQDw6rWvKiTN+TO3GSymxB8ePzHv7URfbo9YAerig33Enj48dFbMa92R74nDLK447+2aVIpWFNnTzzmj8PWCbC0cfzkBbx4yW8vdQKEQtFpnpFJd/tiorc9PRQHw9aX+sP+aa967Ff36i5LiwuY3dy6K4QfYPjzZfu0/2ZuJWDwRi4+gB/Zr5cAXsNlUHEvi6dp2ebYWV+ZeFxlIMwXJy5oTJCa8575CDMYaGnCfdVSCg5kHT2wcOdoZ2x8/fXdNKtUMDqh/+u66a3usual/5bK9BYdvhKyE0vwviasAAPnNF1uV4lGBIwAAveJ+DOLBu7AyM269iD+pPtWF2gbukCm1Xkf9QsLxwZkzPKduwS1cq+X9OVPq3aDVGuITQy5dECrkDi+vS6eTDh0oP/hTOY6ANbp6+91stl442zggUY0ZH5UVFPfCb3kv/LanTCI8MGNbJCMIANDeVB+IfOGh4yFf6j9LmFKkYrm8JW5UpcRz85zn/TLh04OT7+abk6fF9YoV9XU97jT7AFbXhQ6npIW9++EStj/1pmPcRunZvEzWOo8bCd0mIsxzfps5m4Gc1x+MQ8AYuhLjUS8Vi0WPFKbf+TsMJmnpipEPPzoyPSuCwSS1CPtNJseqCkFAYnJIf99fzInWbZpQfr3dVV3X16ssOFIdn8iJjvxDYK+uZbsvWeBBY8CKgjwJZ4EgqVpLc6PfbrfqI60V+0InL7Mmw/kuhAchKbrrL0NTlQq9Qq6Niw/OzIoQd8u1WscuLBlM0sdfrPh076OjxvJu9x0SCb/trfm5T2Z//8u6EQnBLlumDmo3PfHdL/kV/xsGGkME81cPGgA1WurY+vT1Ir5bVSByO3nbqNTSxtSlb2mP1lg840ggFmNN4f91xZzeHoWgoUfQ0NchcrizQKnQ63Vmvd50/cptA7/0etOxQ5Uoikol6gaXrhfMZuv2l4+9+8avVisKABAJ6nEYg0e8ej2Kea07MrMuww3rBwK3LQBsRpFdvaHHZGxPqe89MkFUUh39FwuzDtnyh/IwGCQgyBlD4dUXj5gMFjwee4c4VhSAnJE7UtPD3aEPv993ta9P+caOh/QDxcDXA7Tt/vW93WjtPcS0zYL/diCo1UDKYSgo7n10nIg3HTqf+ftP/PxpOt0fHNoqlQEAgKLgPup+3wdGg8VisVosVgAAjoCxDlXhrEesMJusXR3u8gMqahkou94+K+07FrnDnV+33Ix7oZP3ZDtfYnLrTHvuvoeFArBvICiheuT+AbfOZzaC2xMZPHCjTzGAwSBtfHrS+AkxNPo9H4ZNSgmJjvG3Y9u2PDs175tVeIIrVzrJqaF3+c3B7opInyJ3ftcFMnZSzchdvaFW1N3PQHrGFnWfibCyZcRcBx+OfUBmj7sRp2G1gmWPjnxoaeq7Hy4ZNYZ3TxdZtCz9zfcWv/vhw/MXpdrN1Ch0ne1Sk9Fl8b8YLPLSa3OG/BOVeqv1m5dT6bavuMdEWNKUME+Y1GX0jBQGnuSBOi5nx9eMfEcc7pLw3b9kbnYV8t+TcEd/rmqo6xE09J073XBvluFIdUAQPTiEcarAbolKvt5z+ZUXjrqqW+YsSD5X8s+Y2MALV56dOTfxfyMPA9JHRryza0l6ZsTNDxEEnTXOHRMwoQDs6efEVWUdGvT3IMl4loMZaCzYFzp5OXWpdTqqu7Ut2E+eFntjxajRGB5d/MW6Vftw+HvrYQqV8MYrBe9sP0kkeXCg7h9+lI9UCxr6TCbzb5dbThXU3vzcagUjRgSNGRcVHvm/kh2ZI9o4fnJ3e4QmPXlKQ+p6EV9pwXlW57v11trt6DSS8vo5Gis2m67AudPRcasVU1geCwCwzYQtZqvN03P36HUmQWNfY32v0eA9eWaJRNwzT+UzmORb3G84PHbf3hKN2ngz9mbdQ4Vxkb3u03ITirzXE76sOaFZ75ElU9woKPU+iCbp9nAFkxju8nuvN+Bnb/mHTEkFkKHA4TB3KGDAomtP7PqATDS6SWtL1MzcVn69zoPfJsajh0uznjylIXVVS9yg2S2msiSiacWMB0p1mDWG67jmZWRFpGe60sW99smcP6dMvMnK2SVuom2lBbelPTq7PtWjte2pk/NbqNLS9g8ERRD18W6QdDk2ojf/3Mj7OP5NJuPf3bU098mclqb+NnsnM6czScuWZz7yaFbWGC6NTmprHXDy5B9BwNbnp63OHTt/cWprk6Sz49a4PRpF/+amQwS865ckBTL2HEHyaYUvCjw+9ycGeAU9JsLSpoT5Atd7LKhkw7Kp95MsQacz9fUpB/pVdwgjvW9UCr1CoUtJD0tND1MqdCqls4/loSj4Kq9YrzPLZdrLRc1//sKjM6/QKC4+LNhrIqxqiZsnTOo0eknqbm+w3jcR6ilfSoIpGOtIqhJx3S9vbETfgbNZ91FD5/qVtv1fXcFgEFuomb3tJ5IxMkI6oPn5QPmAxAW134I5rN0fF1aVd/35EBuZaHxr80ES0WX5G1AAvh0IXCBMuqJmetNmh1fJGwBgQDGnFL7nlT5jaUo/F+XBJxFMZgu2tOGeV9E2VQ+pbRqNYHywuBQSGffl7uKDP5YRiDgnW++wMB+lUi+XaY1Gy5AHVDcsvjg2udlVY6ZFT364OeH9njCd1duqmmGAN1KsYqbVZL7WHWm0uuYBH59XfDNG1S5s3jrFP+CBDsl2d8qtVtRqRbs7nRdhHhBEH5EQvO3tBZFcNoEw9H5EeKD0sdklLnlNZhT5sDc0pTbzrMLHK4Xgbdb7f28OIBeVrCNyv3SqOpTg7NOFWKw1Ikh6/HLKg18qJMxn+9sLps9KmDFnRGAQ69qVVtTNksRTqYTbJVf28aHs/nolL9rPbLEWFzYN+Z03Nx+K5Aw4v9kVGtoCYdKXkmAT6p1Gzmut901qtNSx9WkuOWc/JrllSlb9g1+nu1P2w7fXCASsjy/tk13nLRaHi3v02HuIk09I4rz9wZJRY7lE4v+MM45wY1x1dcoryzt+PV5bWT70efgZo2udPy23ZQ0ZWZtR5lFZQ6D1HnLXBCnT0L8ZCIoi6uOc6zlLjuk6fCHdZH7QSMaZc5KKCpvUKmNlaYdG41jP8Jz5yW/vXJycFnrpQtOQp1BoDNLvnWoBAfSn/jmZRMSf+m/6dAaT/OyLM6orOs1mq9WKXjwnOH2yvqtT9ucTqVSy4T/P/EAlO3VudVLuO1uQfNxhRTmhvF2AyoL7aTCgXk+dQFdQnVU7gUYxhATKzl5LeNA5SGVXZXnn+dMNBoP5XqNc75VesWLWvMSKso5L54W3/IlCJYzLid78j8miloGBgRt773g85tTxujaRtPO/h8azJ/E3bZkUHsn+9UQdAMCm6iFPm7+67mga33nnugfN+C3t0Vs7ohWeFjp+33h2UOp94IMzv+3ccqWv5S04fDHdU/qHSMQZDGbb///817xvV6amhc+b9lGvWHG7K0Ty/CK5fjgc5uyvd1qbLJly/aU1zisAmi/139TO9+iM+lDed8sEunwPT8gnOWOubjThVr6aK2gP8oJ+GzWWq9UY2kWDygdzrcWE9e3fnkckOMNzKTKQNoj4pxW+w3CcD5fJ+S20G2+UKx1HV2AdbMexWGtWouhYYeqDL8JdTnenvL9PdYthX7g0TaXU370vnUIyfv5/+/xYDg+tsRXlXNqc0KAbpod8hqm8be/+opJ1VOaXQVOFEBy7X8Wk6SKCpWevJ6Co523nxCcGS/pvK8UNT03YtGXy3IUpskGNsLHvL6+GwVjf3px/82C846jW0hYIk/ZKgo0oBgxXhq+8bfSZCF9JggfN+PF0BQHjwF0rXoiEzVQXVcR6UOeMSAgePT5qy3NTlXJdV4dsyHC6yorOJ9aNMxjNLz97+G6u+dzKk/OyqxzabJ0V86Y4YmVrXKeRBIY3w13eAAArQK6qGT9JA+LJ2iiSA6M143liAJCyBo/pcK3W+O6upeERvmXXO6oqhnZcB3GYBYerr1xu7etV/uWu/pNLzq+ae9mhbb6kYs0VJB0a9LegCBj2QHnfQGbB7x8IqtdTJzHkjku6nBnfptSSa5tDPaJPTCZLND/g/OnGnm55a8vQgWUqpX5QqunqlP2ltpdMub5lxRnHtVZuxv29PfrptpgBMx6OZxvDdOf8DgTgje+Ftzzm1+eg61utmFd2LzxenDKsenVeTuW23MMYhy1/CmTsDSJ+t4kIBzC03ndCY8X+IvO/rqGPpytZOPtnF0AQdFJmo9GEqxSGe0eP5Uzid3fdyXovn3nlxdUFDtK22Ehc1TLilW6uyoqDoxfK+65o0lP2OKxcKYKAUYmtDJr+Sk006uFLxDHjot7/eNmU6bEXzgp1WuOff8v+vvzspqXnHXH8HgUgr58zX5BUpaPBEQvlfY8rTxRzVulzTO43kqoKdoDnLCm6KzRQdqmcb3WW5wZBgN1l1tMjH58dLRD0/z7J8Y2xhbH+K/fYI9OvOuJZanXUhcKkz/s5w9nvBdfedgCHoP8M7twW2kZC7L/lVtYQ+X+fLJHInHF06ZkXZ6AAff/N0/a0D1jEYkFt///DFoaP8q3NB9Pj7F853IQiO3vCXu2ONFihsKG87UQUSbebK5zCsH8uBLmK8vJniy5XxTj6EdhsKoqAwQGNo2+UldD65qZDbKb949Iuq5i5otgGNy7KCSfnHonMjN/vmHKlJKJp1tgaBk13rZbn0Im6TmfSaR0b5o3FWNc9VPhq7hEq2c7LGYUF90Inb2ObuxflhPL2YKq0tH0DQYF4YwrFnjYQQUBSdFfmiLbq5jC5ylNNEy9E8v4/fpqbXWX3Fb4tOfEZr0hODCfnHsA8lvQTrjDM3mmezBbsgbMjPzkwRav3JBtFIppWzbm8Zn6R3ROV95oIT7fH5Ev94ZCD1tt5OCjpMgaDJkV3zcupkimpTR2ecYY0J0340bPfTcpsxGLtuWaxJSeeL0zy+pRJ0Hq7L+Poij1cYTzZ/vtVJdXRe36eWNUU5rbPnhbbsX7RhVGJrXa/crOevL6Nf95LE5hCeXsSeATdGtz5Wkgb0QHB6hWC8K+PZV+q4LvVI6fyO1bPK56QLrD7lW1+r21dkXro0Ibydh8SyZo9PMEYmtIRF69pCv2qILuoIsZscWWqfRzWkpMmfHx+UWJUtyOuX66h54r45XA2DuXtlr0JcgPE74a3MrAOKYWn0JDPXk0oKEpxfrw6L0QyN7tyfk6lI7zZAACtFbu9O+I9cZgF7o1DebszHILho8jmRT4Sx92itdu/oDiluILf3BXguKh1BEGjw/qzU4Vzx1dxQxz4OCfk7I1tMR0GEhw8UN6ewTyW9DOeMATv2CTeMiW1tCGyQhheKQhvbAu2i9RDA2SjEltS+Z1Zia0BPkqHtr/PRHiug7dvIAgOGChvD4OFM7/jxKTLgwpqq9i/vcevvYctEvu397J7JMw7r9XxOEuQnyIyeCCSMxARJI0IHuBxJL5MjXP6J1/q/2QbH2ZfgPL2YLIZij2RAicXSLmJRkeUqSgqDRkAoDPgAQBkogkAwKDpWHQtlWRwSataDeQNIv4Z6PeC8vYCyBjr85yO/wvuIDgszZOnYEaRT/tCXuziaixYODCgvL2HZIo6jyvMoimHbQ9UaWlrW2NLod/LWcDIAedRraWNqU9bL+Krh5/h0lkxL3TyMmoyoLadCYw5dyq2cqU/SgPjSNpokm6YPHWhijVHkHRU5gfPe0Hr7f2IDKSZguRlzQleX9FOZsatF/En1acK9TABA7Tew4l6HfULCccHZ86gqrzyAfOl/rOEKUUqFnzX0HoPR24Yt4bUJj3Zm56rzUia1TgspifQekP+SgwG0l6Jo5IuOxkrCvIknIcEifV6KnyzLgc6xtyIVIo6jyfI9Ni5eo2WmiuKvapmwFcJrTfkVnr/W64028HlSu2OHsW8IY54rHUEPBYC5Q25/eQWIFfVjB+lAQlkLc+R5UrtSJGSOVeYfBAW5XQ/4NaaO9JqIE9vTFnVEid17+MWcjNuS3v0xMbURph4HFpvyD1RpaV944Cky/aiQMaeI4TJiaH1htwvfSbCypYRcwVJbrWm7TERljQlzBMmdRlhwV1ovSEPRpOekicJxgLXe85sRTkXCBMrtTB0HMobYids5UrPKnxG01UBeJNL2tCkJy9tSvyoL8QAc5hCeUPsTqeRlNfP0Vix2XQFDnGe58yEIu/1hC9rTmj2rug6rweGtXgk0STdHq5gEkPuhHuVqJm5rfx6HYxC8zzgLMsjadaTpzSkrmqJG3Sk50xpwW1pj86uT4XahpNziLOp0tL2DwRFEPXxDkjkZivKeRr6vaD1hriKHhNhaVPCfIE9fVS9JsKqlrh5wqRO6PeC1hvicuxVrtRWlHOBMOmKmgl71QuAW2texXi6Io97n0mXW/Tk9SL+OSVMTgytN8Qt6TCS9vYHWwAylqbE3rXnzIwiH/eFLm1OEMCUSdB6Q9yfJIomjysYdRdJlys0tFxRbBlMYOqNwK0176RGSx1bn7ZexFdZb5t0WWvFvtDJG1mbAbUNJ+cQD8OWdPmbgaAoov7Pq/GTct/ZguTjcjb0e0HrDfFUxEbiQ02Jy5oT+k0E2yeDZvx6EX+2ILkdZlaBa2+Id8DGmXZGtAAAtrZHSWFRTihvCAQCJ+cQCATKGwKBQHlDIBAobwgEAuUNgUB5QyAQKG8IBALlDYFAoLwhEAiUNwQCgfKGQKC8IRAIlDcEAoHyhkAgUN4QCATKGwKBQHlDIBAobwgEyhsCgUB5QyAQKG8IBALlDYFAoLwhEAiUNwQC5Q2BQKC8IRAIlDcEAnE+/w8rArB5OVbkuwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNC0wOS0xMFQxNDo1ODoyMSswMDowMNK8yPMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjQtMDktMTBUMTQ6NTg6MjErMDA6MDCj4XBPAAAAAElFTkSuQmCC",Mc="data:image/png;base64,UklGRoYAAABXRUJQVlA4THkAAAAv+UA+AC+gkG0EOHUEr9Ap3PwrZBsBTh3BK3QKN/+BSFR1N3MHRpEkKVowQA7ojw7Wwd6dfzvM0BH9V9y2bUQtkHd6DEC+U8F/woyNbkMYxsZ/FcF/MU+ojlamjKrn1oZ15b8TAL2Nr9ov0vHKLxBo7gA/SPuGBP8RAA==",yc="data:image/png;base64,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S/BFH/+Jz7iIL3KczPmjwohf4ppnS5VXXdexnpnNRVke8mNsyvMsW6afVJxZG0i7VL7P4P8Otpv5/+3t7fCOiH14pvfHTCN9QZsgvNLinPZH/J5WHcs3vJeRXvd9PpNp0p66si3nHPjo/p9p5v/sO32eTEr4sOxY7SbHVMpQ9zP9VN4jr/TfqB1n/67wSh8f1vlsDiAeZeT9J+89itb4P4XNmG/p5/lugO2xYfbr7Jv0vXw3GI0V+T6a/T/HkPRVliXLO6vvEo+irfyPL/Ft9rWeTn8v6ONJjrXZ92bzUdaD/Hp7yPE802TM6TbpZJlu+Tvor9rK/6WyUb4Dlm37e3v3Ne0k/cD7BGnRpnjmFP9nPMYk8iLNXr4lPer8r5RSSimlnlOX2ufNdO9lL/nWlOsgl7BhfRvNvmv699RftfZ5tT+sOdSayWzNeo3S/31tI7/zR9/8S2shrJv082soyznqR/zjMbu/lN7oepbXLK1RvybubM1pVua/iv2y3PsjX9Y88pz2wjO5zp5tJPdeOWcNl3s5JrB3sya82zrLmeuJdY/1Ztaa+rpShfc61r1MK21Xx/QZkFdeox6nxHol90mXve6lMp+j7pdsb6P+z1obtmY/vms09le83Mct6COs860JP1Yv7JdjXv+3IfchEHsZdcy1yrRVptnzGtm3/xNBnNH9kf9HZT5Hff4/xf8Zf/b+kHbinL0Zjvgz/8lYE35qvfqcl3sC+HpUp/RBt09ez/LKsNE+E/ezP3OdeY/KfK628H/fRymfUKY8LzHWMX4yltGe14afUi/CGDf4jwAb074Qc233fx9zco/ymP/5fyLzKPX73f+zMp+rY/7PuR079H6SdS318Sl9g7+Iyzy2Vfgxu2cYtuT9OudhxnDiYue0NXud+DP3KI+Vg39r8SFtJ23KntnI/6Myn/MuyH5b1il9R9/OumKP0VhF3Eyv59f92fvBmnDCluqVYdSDuaT7N+fy0TcYz/fnRnn1MNpA34tMGxM/856Vufe1S2hpvUA9vvS/UkoppZRSSimllFJKXU07EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREZE75B+Hl45q2TuOnAAAAVNta0JU+s7K/gB/pYUA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a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjMtYzAxMSA2Ni4xNDU2NjEsIDIwMTIvMDIvMDYtMTQ6NTY6MjcgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgRmlyZXdvcmtzIENTNiAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTQtMTAtMTdUMTY6MzI6NTFaPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTQtMTAtMTdUMTU6NTU6MzBaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxkYzp0aXRsZT4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+RmxhZyBvZiBHZXJtYW55IGljb248L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QWx0PgogICAgICAgICA8L2RjOnRpdGxlPgogICAgICAgICA8ZGM6Y3JlYXRvcj4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGk+UGhpbDIwMDc8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOmNyZWF0b3I+CiAgICAgICAgIDxkYzpkZXNjcmlwdGlvbj4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+T3JpZ2luYWwgYXV0aG9yIGh0dHA6Ly9jb21tb25zLndpa2ltZWRpYS5vcmcvd2lraS9Vc2VyOlNrb3BwIE1vZGlmaWNhdGlvbnMgLSBjb252ZXJ0ZWQgdG8gUE5HPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzpkZXNjcmlwdGlvbj4KICAgICAgICAgPGRjOnJpZ2h0cz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+aHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvMy4wLzwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6cmlnaHRzPgogICAgICAgICA8ZGM6c3ViamVjdD4KICAgICAgICAgICAgPHJkZjpCYWc+CiAgICAgICAgICAgICAgIDxyZGY6bGk+R2VybWFueTwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPkdlcm1hbjwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpPmZsYWc8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5pY29uPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGk+c21hbGw8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5zaGFkb3c8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5ib3JkZXI8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaT5wbmc8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6QmFnPgogICAgICAgICA8L2RjOnN1YmplY3Q+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNhcHRpb25Xcml0ZXI+RmxhZyBvZiBHZXJtYW55PC9waG90b3Nob3A6Q2FwdGlvbldyaXRlcj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcFJpZ2h0cz0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3JpZ2h0cy8iPgogICAgICAgICA8eG1wUmlnaHRzOk1hcmtlZD5UcnVlPC94bXBSaWdodHM6TWFya2VkPgogICAgICAgICA8eG1wUmlnaHRzOldlYlN0YXRlbWVudD5odHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS8zLjAvPC94bXBSaWdodHM6V2ViU3RhdGVtZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pvf+FJgAAAoDSURBVHic7dlBEYAwEATBg8K/NBygJbiYPNKtYL9Te83MGgAAgMC9ewAAAHAOAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkHm+3QsAAIBjeEAAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyAgQAAAgI0AAAICMAAEAADICBAAAyFzrnbV7BAAAcAYPCAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAAAZAQIAAGQECAAAkBEgAABARoAAAACZH4UyCGm17iMbAAAAAElFTkSuQmCC",bc="data:image/png;base64,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",Tc="data:image/png;base64,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",wc="data:image/png;base64,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",Rc="data:image/png;base64,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nc9oNkhFaJTlte1c//E+gkcuEC0W4ZFNFWxoP5d0IsmD33x/LuQYisGLW6pIpWeTNWdhWrMpr2hkdk09odCxN+pv2bmDZ5q3cueam4/78wYGBujtbqGQ24/f24PP3U1tTTcXNuXe08jvnfz0tzVs61nA+bM7WX1lFzPecn5xwythHmteyKGRagzD5Jyqfq5ZuosPn5ufWGZ/j5uHNtWza6COqxq3sfpq3T4hcjpRCOVds2042GPR3lHKaDJKwYyAEaFghnC53GRzbgIBP5lsikiJm3wujduVxOdN4TIS1NbEmT+vQGnk5Iz4RETeC4VQREQcTXONioiIoymEIiLiaAqhiIg4mkIoIiKOphCKiIijKYQiIuJoCqGIiDiaQigiIo6mEIqIiKMphCIi4mgKoYiIOJpCKCIijqYQioiIoymEIiLiaAqhiIg4mkIoIiKOphCKiIijGR1E9IR6ERFxLI0IRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxNIVQREQcTSEUERFHUwhFRMTRFEIREXE0hVBERBxNIRQREUdTCEVExNEUQhERcTSFUEREHE0hFBERR1MIRUTE0RRCERFxtP8HOHUqzzr9sygAAAAASUVORK5CYII=",_c="data:image/png;base64,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",Pc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAADcCAYAAAAWYejvAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAEnRAABJ0QEF/KuVAAAAB3RJTUUH6AkWDy0QeGBUywAAJ/JJREFUeNrt3Xd41fXd//Hn2TnZCSODhAySMISATAEZskErWkdxdN2iRayj1QrY9r57/9oqVqnWVnBgtXWAq4KVPRQQkB2mIYsEQgZI9kly5vf3x0kOxAC1d8fd+75fj+sKCd8k5xzOOdeLz3x/TMb30gxEROSSzHoKREQUlCIiCkoREQWliIiCUkREQSkioqAUEVFQiogoKEVEREEpIqKgFBFRUIqIKChFRBSUIiIKShERBaWIiIJSREQUlCIiCkoREQWliIiCUkREQSkioqAUEVFQiogoKEVEREEpIqKgFBFRUIqIKChFRBSUIiIKShERBaWIiIJSRERBKSIiCkoREQWliIiCUkREQSkioqAUEVFQiogoKEVEFJQiIqKgFBFRUIqIKChFRBSUIiIKShERBaWIiIJSRERBKSIiCkoREQWliIiCUkREQSkioqAUEVFQiogoKEVEFJQiIgpKERFRUIqIKChFRBSUIiIKShERBaWIiIJSRERBKSKioBQREQWliIiCUkREQSki8k9jxTD0LIiIXDYoLTY9CyIil2Eydr6vJqWIyGWD0lDfW0TkcjSZIyLyF1j1FMh/F8Mw8HoDtLT48Lj9eH0BAoFgB8dsNmGzmrE7LDidVmw2MyaTSU+aKCjlf7dAwODcuRbKShs4duwcx4/XcLKsgerqZmprWmlyefB6AgDY7GYiI+zExYeRkBBOz57R5PSOo1+/rqSnR9OlqxOzWcEpCkr5XxKOVVUudu+qZPOmk+zdW0VJcR0NDR7cHj8GYGr7ABPt0We0/Wm0fW0CHHYLUVF2evWKZciwRCZO7Mnw4UkkJkUoNOUfSpM58g/hdvs5fPgsK/5UyJo1JygoqKWl2RvsVptM7ckY6k5f6m14se+3d8+dThs5veOYNj2DG2/MZkBuNxwOi558UVDKvzav18++vdW89uoRVq8qobLShWEYmM2mDqFnGHS43v61xRL8Gb/fIBAwQt9r/9pk6hie7deTkiKYPiOT7/xbf4YOTcBmU2CKglL+xRiGQVFRHS+9cJDly/OprGjqFGz+gAGGgcNhJTExgqgoGwWFtbS6fVw9OoXZd+fS0uwDEzidVpa+fIhPt5fjdFjJzomnscFDVZULt9sHJhMWc+fgTUqKZNZtfbhnzkCysmI1ASR/FxqjlL9ZS4uPP71fwNNP7eHI4S+C3esLxgzb/y/OzoplyrQM0tOjGT8+lfguTn7+nzs4dOgsP/jhUG78ejbFRXUA9MqKJSrKTmurj9zcbvz0P0ZRc66FLZ+corS0gXVrT1BcXHdBFz0YyFVVLp59Zh8bN5bx8CPDuOnmHJxOvc1FLUr5b1Re3sivFu7m9T8epbHR06ErbRgQFmahtdVPwDB4etF4fvDDoRw+dJboGAdpadE0NXpocnnp1s2JxWJm394qAIYMTcTvD3D2bAuRETYio+yUldXTUO9hQG43nvn1Xh55+BPMJlPoPtrDsr1LHhVl585vXcG8ecNJSY3SiyVqUco/3/591SyYv5WPN58EwGIxYxgGfn+A6GgHM2/IYvLkNN57rwCvN8DUaRkAhEfY+PzYOdLSoomMshMZZQ/dZkODJ/S1xWImMTEi9PfPj9WQnRMHwNSpGWzedBKbzczNt+SwYX0ZK1cU0dDgbhvrNONyeXlxSR4Fx2t4YuFYBg9J0IsmCkr559m8qYyHf/gJhw+d7dCKtFrNjBrdg1tu7c2UKWlkZMYy84ZsDAwiIoIFWGJiHJwoqaO52Ut4eMeiLBcG5YWam72cKKlj6LBEAPr2i2fZ29dhwkREpI2RI3swcmQy77xznB3bT+PzBUKPadPGMu767loWPTOeCRPT9OLJX01bGOWvYhgGa9ecYO6cjaGQbL8eCBj06RPPCy9N5s47+1JQUIvL5SUi0kZkpD00sRIX56Ch0cuJE/Wdbr+hwU1Dg7vT9RMn6mlo9BIX5wiOGZlMREbaiYi04XJ5KSio4Y47+/HCS5Pp0yeeQMAIjY2azSYOHz7L3DkbWbvmBBptEgWl/EN9vPkkDz2wmaKiWiwWc4dush+D8AgbMTEOIiLtOJ1WPt12utNtWCxmYmMd7NtbfZGg9Fy0Vbl/bzVxsY4O99lu+6encTqtREQG7zs8woYfo9PjKyqq5aEHNoeGCkQUlPJ3t39fNQ//8JNQSLZP2IwcmcxTT4/j/vsGM3/BCLp0cQIw6MruHDhQHZrJvlBOThw7d5zG4/F3uN7U6KGpsWNQejx+duw4HRqfvFBxUR3791czaFB3ALp0cTJ/wQjuv28wTy0ax8iRyaGlQ+1h+fAPP2H/vmq9oPKVaYxSvpLy8kYWzN8a6m63h+TgwQn86ulxjLgqGb8/0GFheXS0g4GDuvPmm8eYv2AEdvv5ReBpadGcOtVIaWk9OTnx54PS5e1036Wl9Zw61UhaWnSnAH3zzWMMG5ZIdIwj1M2+9rpMps/IwGIxM2xYEg/cv6ktGIOL2g8fOsuC+Vt55dVppKRoNlzUopS/g5ZmL79auJuPN5/ssD5y1Khknnt+Il5vgMrKJiyWzhV+xozpQVWlizWrT3S4npgUgdVqZueOitA1wzBwuby4XN4O44g7d1RgtZpJSorocBtr1pygqtLFmLEpHa6bTMFZ78pKF16vn+d+N5FRo5LPv+nNJj7efJInF+6mpcWrF1gUlPK3e//9Ql7/49FQCEFwzO/mW3szYkQSWVmxbFhXRmFhbaffjYy0c/3MLF595TDl5Y2h6+HhNnr1iuXjzSfxeoPd70DAwNXkxdXkDe3n9nr9fLz5JL16xeK8YIa8vLyRV5ce5vqZWURG2jvdb2FhLRvWl9IrK5YRI5K4+dbeoTHL9n/DG388yvvvFeoFFgWl/G0KC2pZ9PQeGhs9HRZzt3p9FBbUEggYJCZFMmp0MsuX5ZN34Eyn2xg3LoWoaDuLn8/D5wuErg8c1J29e6spL28KBqX/fIsy4DfaArGJvXvPj0EC+HwBljyfR1S0nXHjUjrdX96BMyxfls/IUckkJUUS8BsUFtTS6vWFZsNNJhONjR4WPb3nogEvoqCUr8TrDfDiiwc5cviL0Lik1WomN7cbo0f2YMrU9FBXPCs7jq99rRdLFuexdcup9jppADjDbXz7O/1Z+UEhn3x8fsa5d+/g/u1dnwW73/6AgcvlweXyBPeFA7s+q6CxwUNO7/PjmJ98fIoVHxTy7e/079DKBNi6tZwli/O47mu9yM4OTv6YLSamTE1n9Mge5OZ2w2o1h4pwHDn8BS++cBCvN6AXXBSU8tfbu7eKt5fnh7qrgYDBqNE9ePf9maz48EZmXJvZ4ecHXdmdO77Zj0VP7+XPfy4OdZ8BRl/dgyuHJLDwid1UV7sASE+PJjbWwcYNZfjaqpu7mtpalAEDny/Axg1lxMY6SE8PTuRUV7tYuHAXVw5JYPTVPUK3HwgYfPTnYhY9tYc77uzLlVd27/DYZlybyYoPb+Td92cyanSPUNUhgLeX57O3beukiIJSvjKPx88fXj3SVgUoONESHe3gllt7k5gUQddLVBgfOzaFu+/JZeETu3jrjWOhrrbTaWX27AF8fuwcS186RCBgEBcfRk7vOHbsqKCiognDCM56NzV5MQyoqGhix44KcnrHERcfRiBgsPTlQ3x+9ByzZw8IFbvw+QK89ebnPPH4LmbfncvYcamd3+hmE127OklKiuCWW3sTHe1o64JDZUUTf3j1CN4vLVUSUVDKZR06dJbVq0ouqP0IM2/IYuq0dD7dVs7WLacuuoMG4NrrMrl37iAe/+UulizOC5ZFI7jecvKUdF5YcpAd209jt1sYOLA7ZaUN7N1TRSBg0NLio6UlOJa4d08VZaUNDBzYHbvdwo7tp3lh8UEmT0lj5MjgLLbb7eOFxXk8/ovPuPfeQVz3tcyLPqaGBjdbt55i27Zypk5LZ+YNWbRPrJtMJlavKuHgobN64UVBKV+NYRh88KdCKitdtK/2CQuzMHlyGunpMYwZk0Jrq5/Fz+exds0Jmpo6LhA3mUzMuq0P9943iCcX7uLJhbtpavLgCLNy190D8Hj9PLlwNw0Nbq7o3zW4H3vTSRobPHg8fjweP40NHjZtOolhGFzRvysNDW6eXLgbj9fPXbNzcYRZaWry8KuFu1m4cDf33jeIWbf36bQ8qanJw9o1J1j8fB4tLT6uHpNCenoMkyanERZmaXu8UFnpYsWfCrW9URSU8tVUVDSF9kS3B09rq5/33ivA5fISHmFj8pQ0br21N7t3V/LoI1tYu+YEzc3n1yRarWbu+V4u93xvIL95Zh8//cmn1NS0MGJEEtdfn8WG9aW89vsjZGXFEh8fxmc7Kigvb8QIgBEILv/5bEcF8fFhZGXH8tqrR9iwvpTrr89ixFVJ1NS08u8/2c6zz+xru59crNbzb+fmZi9r157g0Ue2sHt3ZVuRjnQiIoJ7w99/t4DWVn8o2A3DYM2aE1RUNOkNIJ1oZ450smdXFQXHazuMQQbajpblgu5qZq9Y5s0fwbq1J1iyJI833zjGt7/Tn9FX98DptOJwWPnhw0Opq3Xz4gsHqat188STY/m3uwbw0UfF/Pa5/QweksCA3G7s21dNXb07VGGort7NqfJGhgxJoL7OzW9/s5+4+DD+7a4B1NS0smDeVt55+zj3zBnIDx8eisMRfCu3tPjYsf00r716hIYGD3fNHsDUaRkdz9IxCB6NaxhY2v4jMJtNFBTUsmd3FT1u1G4dUYtS/kK3e/Pmk7S0eDGZTPj9Br16xfL0ovE8+dQ4IiI7LsdxOCxcPzOL5xdPomfPaB68fxN337WOTz4+SWurj8hIOz/56VXc+o3evPnmMe793gZi4xzMmtWHkhP1rFtbyrXXZtLS4qO+zk33hHC6J4RTX+empdnHtddmsm5dKSUn6pk1qw+xcQ7mztnAm28e49Zv9OYnP72KyMhgJfQtn5zintnreOD7m0jtGcXziydx/cysTgeORUTaePKpcTy9aDy9esXi9wdbzi3NXja3dfdF1KKUSzp7toW9ey5cKmMwdVoGD/1gyGXPn0lJieI/fz6aayb2ZOHju7jjtlVMnpLOXXcPYMSIJB5/Ygz19W5WrCzC6w0wf8Fw9u6pYuWKQp7+9TWkpkRRfqqRhITgNsVTpxpJTY0ip3c8L714kFEjk7np5hx+9PAWVq8pYebMLB5/YgxRUXY+3VbOK0sPs35dKX37deE3v53I+GtSO3TFv6xfvy707RtP6Yl6CgsP0H4s5N49VZw920L37uF6M4iCUi6urKyB4pK60AJzh8NKeno0R4+ewxlmJSbWQWys46IhZLWamTQpjdwBXVn68mGWLM5jzeoSrp+ZxV2zB/DLJ8bg9QRYt/4EaWnR/GjecB56cDP5+ecYPyGVU6caSUgMBlT5qUbGT0glP/8cTS4vv3h8DMuW5bN+/QlmTM/k8SfGUHaygf/49+2sXFmE3WZh7n2DmH1PbihsL8bnC1Bf76auzk1Li4/0jBgcDiterx+z2URxSR0nyxoUlKKglEs7dvQLGtvqQRoGJCZGMG58KjHRdo4ePceJkjoaG73ExDrIzokjPS2axKQInE5rqMXZPSGCeQuGM258Kk8u3MXrrx/lo4+K+casPsxbMJye6dG8vSyfjMwY5t53JRvWl3HbbX3YurWcHj0igeBe7bHjUlj2Vj5z77uSwoJa3l6Wz913D+S22/vw0gsHeXt5PjW1rUyenM68BcMZOTK5Qw1KwzBobfVTWdlEWWkDhYW11NW6iYqyk5EZQ78rujBufCqJieGcPNmIyQSNDR6OHv0iVEldREEpnRQcr8Xt8WNpa1FGRdmIjw8jtWc0KalRtLT4KD3RwL59Vbz7dj6nTjVitZrJ7BXLoEHd6d07nrT0aOLjwxh9dQ9ef/Na/vDaEX77m/389rf72bunikfnDSczM4bX/3iMR340jF69Ysk7eJajR8+xt62Yr9NpJTrGQWavWBITI3j6qT3Mf2wEOb3jWDB/Kzt3VpCeHsO8BSP49nf6ExvrwOPx88VZF2VlDRw/XsPBvDMUF9Xh9RmkpEQyanQPrv1aDzIyYkLBbrQdQtY+w+/2+Ck4rr3f0pFOYZQQj8fPXd9dy5tvfY6trTCvzWbmttv78uxzEzpV6fF4/JSWNvDZzgo2bzrJ3r1VNDZ4iG1rbQ4c1J3+/buQlR1Hfb2b9WtLWbGiiKYmD3Pvu5LExAjWrC7B6w2wenUJHnfwtEYAs8mE3WFhxoxMbDYz02dkUl3l4vnnDxAZYWPmDdlMnZZObGwYhUW1HD3yBQfzzlJQUBNqNQ4dlsA1E3oycmQy6RkxHephQnCN5YMPbGb5W5/j9QbP2PH6A9xxe19eeXVap58XtShFaGnxUV3dTPuUjclkosXt49ChszQ1eTsFpd1uIScnjpycOGbd1ofTp5vY9VkFmzaeZMf206xZHVyLGR8fxoDcbsy4NpOnF43neH4N69eXkpkZg9cT4IMPCkML2y1mc6jb7HH7+eBPhdz49Wz27KmipLiOhx4aQp++XSgoqOGXv/iMw4fOUlPTiskEaekxjBqVzMRJaVw1MpkePSIvG3ZNTV4OHzpLi9uHzdK2+Byorm6mpcWnoBS1KKWzs2eamTHtfQ4cqA6tobxqZDI/fGQo11+fddG93Rfj8wWorHSxd08VmzaWsXNnBeWnGmlu9pGaGsX4a1K5+uoe5B08y+LfHcDj8V9yRt0wDOx2C3O/fyWDBnVn+6flfPzxKU6dbMTptJKSGsXIkclMnNSTYcMSSUqOvOxs94UCAYMPPyzi10/v5bOdFaFrVw5OYPXam+jWTRM6ohalfInXF6DJdX47otlsYvbdudxwQ/Zlf6+9RmUgYOD3Bz936RLG5MlpjLgqifJTjaGZ5vJTjZSXN7JtWzlHjpzrdGbOpYYEdu6ooKHBTXi4jdl355KSEkVcnIOYGAc9UqKIjrZjNpvwePz4fIG2s71NHY6m+DKz2cQNN2TTUO9h967KULWjpiavyq6JglIu3cLyegKYaK9ibmqbvKmnpqa17ShZT9uHm8ZGT6gsmsvlpcnlbfu7B5fLS3OzD4/HTyAAkRE2uieEk5AQTkJCBEnJkexpK4RxsZMVuaD77/cHaG3xkZ0dx7kvWjh65As2bSzjzJlmXE1eTKbgMIAz3EpkhI2ICDsRETYiIm3Bz21fR0XZiY4OfkRFO4iOthMfH0ZzsxeLJVhGzoQJr8ffoUSciHbmiIioRSlf+X9Nswmb3YxBsGXl9xs4nVbSM2JIz4j5q7reEDzaoaHRc9Gud3FRLU6nLbSw/XJjlGaziTCnlcLCWsLDbVzRvytTp2VctOttMgX/HV+l690uPNyGv+3oCQMDm93ylcdjRUEp/8fYrGYiI+wduuJLXz5EdHTwgLBLhUfw1EMTFgvYbF9tMmfMmBSioh3kHajG7b78OKXdYWHkqOTQZM7Slw/9/SZzVhax9OVDHbrakZE2bDZ1tkRBKZcIpLj4MAzOn1T46fZyWlt9XDUymcTES28N9Hj8nZYHlZY2hJYHDR6SwIxrM+ndO57j+TUsW5ZPZmYM02dk8sGfCmkvS3S+UHBbC8+AGTMy8bj9LHvrcyZPTmPmDdkUFNSw6qMSDh86y6u/P8xrrx7+q5cHnTnTzOO//Iy9+6pCy4MMDOLiwrQ0SBSUcnFOp5WEhPDQuWCGYeB0WMnN7Ubkl6oGtYfjpRac9+3XhVm39+204Pzllw51WnB+49ezQwvO/YHgbPOXF5wPHZZIamoUzz67L7Tg/Mc/uarTgvM9e6rYsL7sKy04j4y0kZvbjaNHvggtODeAhITw0DETIqB1lPIlP16wjYULd2ExB2eB+w/oysoPbyQtPQbDMDpsYdyx/fRltzDa7Rbq692hLYwlpfWMvCqZR+cNp7CgltdfD25h3LunCrvDws4dFbS0+EKhPXJUMm63n2HDEnn6qT3c+c1+5PSO46knd4e2MN7/wOAOWxhra1ovu4VxyNCEDlsYy0rrmfm1DzhyJHjSpD9gMH/BCH75+Bi9GUQtSrm4nN5xOOwWfL5gC6uxwUtNTStms6lTUYxbvtHnokUxAPz+ANs/Pc2TC3exfn0pcXFh3H//YG6+OYdly/J5e1k+8x8bQVWVi+LiOm67vQ8N9e7QEbOFhbUMGtSNZW/lk5oaxTe/1Y8nfrmLb8zqwxMLx/L+ewW8vTyfeY9uYeOGslBRjITECBISIxg+Iok7v9mvU1GMVX8u6VAU41xNa+jMcgCH3ULvnHi9EUQtSrm0PXuquG7G+9TWtAJgs1n4xeNXM3lK+l8ss9buTLUrVGbN4/GHyqzFxDp49OEtrFt/grvvGcjUqek89OBmHvrBEPLzawhzWINFdk3gbvXT6vbRp088zz6zj2d/M4F160p5+aWDTJmSwVOLxlFf7+b3Sw+HyqzNuXfgX11mbcP6Un7y2Kd4vcEJpbj4MFatvknVg6QDTe1JB2lp0fTKjA2de+12+ygtreeKK7rQKyuWrl2dlwxJny/Axo1l3H7bKp7/3QEmTkrjvQ9m8vySSaSlRfPjBdtYtaaEKVMyuO22Pjz15G4iI2z06dOFTzafIiU1iurqZqqrmklJjeKTzafo06cLkRE2nnpyN7fd1ocpUzJYvaaExxZsI61nNL9bPIn3/zSTSZPTWPx8Hnfctip0TvhFu1BWM126OOnVK5YrruhC6Yl63G5f6NzyXr1i6ZkWrTeCKCjl0rp1c36pNWVi/dpSnn1mH8eOnrvk75WXN/IfP93Og9/fRGJiBG8uu5YXXprMmDEpNDZ6eGzBNj76qJiZ12fx1KJxvP9eATt2VjDzxmwKjtdwqjxY0by62kV1tYvU1ChOnWqk4HgNM2/MZsfOCt5/r4CnFo3jhplZrPqomMcWbKOx0cPVY1JY8uJk3lp+HUlJETx4/yb+/aefUn6q8ZKP99jRczz7zD7WrysFzg8ZDB2aSLduTr0RREEplxmLMZmYMLEnTqcNwzCwWEwUF9fxyMOfMO/RLbiavB1+3u328+HKIu6bu5GTJxv4zW8n8vIrUxl/TU/C2o6U/eXPP+Odt49zxx39WPLiZOpq3Sxfnk9mRgxTp6azalUJTmewW3+mupkz1c3ExDpwhltZtaqEqVPTycyIYfnyfOpq3Sx+YTJ33NGPd94+zi9+/hlNTR7CwqyMG5/KS0un8tzvJnLqZCP3zd3IhyuLOq3TdDV5mffoFh55+BOKi+uwWIKL3sPDbUyY2PMvLlCX/3s0mSOdDBueSE7vOA7mncFiaTul0GQKLsJuyxDDMDhRUs8bbxyjqtLFvfcOYuy4FMLDbReEqI9fL9rLH147wj1zcvnpv48kMtLOT3/8KbU1rSx4bAQxMQ4OHzpLakoUsTEOXK5gEMfGOEhNieLwobPExDq4/8HBPPrIFn7/ymGeXzKJRc9cQ1xcGH947QhxcQ7mzR+Ow2HF6bQycVIaI0cls3VrOR+uKCIv7wx33NmPzMyYYAiagovrzRcEYiBgkJ0Tx7DhGpsUtSjlK0hOjmT69IzQedcAYWEWbro5h4gIG80uLxvWl/HOO8cZPjyJXz09jmnTMzqEpM8X4KUXD/HSiwd58AdD+PkvriY+3smuXZV8+GERk6ek853v9qeoqI6amlauGpVMSkoUJjOYzMHDyq4alUxNTStFhXV857v9mTwlnQ8/LGLXZ5XEx4fx/34xmod+MKTtfg51GJcMD7cxbVoGv3p6HMOHJ/HuO8dZv74Ul8tLRISNm27JISzMEgp9k8nE9OkZJCdH6g0gCkr5at3vG76eTVJSBO1rIlpb/WzcUEZpaT3btpUTFhY8zGva9IxOBX0Nw2D5snyWPJ/HvPkjmDd/OJGRdtytPl55+TB2m4V584cTHe3g6JEvMJlMTJzUk6hoO3a7BbvdQlS0nYmTgt3go0e+IDo62Gq02yy8svQQ7rajcB+dP5z584ez5Pk8lr+V3+mo2chIO9OmZzD3vkE4nTY+3VZOaWk9GzeU0drqb3u8kJQUwY1fz1a3WxSU8tUNbKtI3h48JhOsXFHEurWlXD0mhbHjUomOdlz0dz/6qIQli/N47McjuHfuIByO4AjPzp0VbFhfypy5Axk1ugcej5+DB8+Qlh7N0KGJmM0mnM5g99lsNjF0aCJp6dEcPHgGj8fPqNE9mDN3IBvWB/ePAzgcVubMHcRjP7mKJUvy+OjPJRd9TNHRDsaOTWHMmBTWrS1l5YqiUFV1wzCYcW0muQO76YUXBaV8dTa7hW9/tz9JyZEYRrCV2dDg5t13jlNV6eKLs80Xrdm4dWs5S186xPzHRnD7nf1CS4laWnwsXXqYvv26MPvuXMxmE7U1rRQcr2XUqGSSkyMxmYJ1KyMjbZhMwSGAUaOSKTheS23bovfZd+fS94ouLF16OLSLx2o1c/sdfVnw2AiWvnyIrVtOdXpcgYDBF2ebqax08e47x2locLcNLUBSciTf/m5/bDbt7xYFpfyVhg5NZNasPqFWl9lsYsf209xy00pumLmC1as6tt7yDpzhzdeP8fAjQ/nadb06VBva/ulpDuyrZv6C4aEF4aWlDdTVuZk0OQ2r1YzZbAoV2zWbTcFzwienUVfnprS0AYCEhAjmzx/BgX3VbP/09Pk3stnEdV/rxcM/Gsabb3zOgQNnOjy21atKuGHmCm65aSU7tp8OlXcDmDWrD0OHahJHFJTyX2lV2szcM2cg/Qd0DS1A9/kCHDp0lu07T7N+XWmoVVlUWMufPyzm3rmDGDsu9cKlibQ0e/nDa0eYeWM246/pGbp+/HgNUdF2RlyVDIDFbGqrTm7H0hayI65KJirazvHjNaHfG39NKjfcmM0fXjtCS3PH5Upjx6Zw79xBfPTnYgoLg8fOBvwG69eVsn3naQ4dOhvanhkIGAwY0JV75gxUWTVRUMp/XXZ2HA//aFiHs6/NZhNhNivZOXGYzSYqK5vYsb2CWbf3YdCV3TvdxpYt5TQ2eJh736AOu3oO5p1h6NAEUlKCM81miyl0dIO5bVlSSkokQ4cmcDDvfAvRajVz732DaGz0sGVLeaf7G3Rld2bd1oedOyqorGzCbDGRnRNHmM0aKuQbPLPczsOPDAvtLxdRUMp/2U03ZfPNb10R6oJDsOjFu+8cZ9dnlRQX1TF5atpFA6epycOHK4v47uwBpKREha43N3spLq7jmgk9Q2ODoa53pC3UbbfZLFwzoSfFxXU0X9B6TEmJ4t/uGsCHK4PnhF8s4CdPSaO4qI5duyp5953j+P2BDv+Gb37rCr5+c7ZeYFFQyt/O6bTx6PzhXDOhZ4cJnJ07Knjg+5uw2cwkJUXi9wc6Lc/Ztu00iUkRTJ+e0eF6VaULny/AyFHJoWsm0/kW5YXLdEaOSsbnC1BV6epwG9OmZ5CYFMG2rR1blYZh4PcHSEqKxGYz88B9m9i5oyL0/UDA4JoJPXl0/nCcTpteYFFQyt9HSkoUTywcy4DcbqHxSpMJ9u+v5kePbOG3z+3nBw9+zKqPSkJh2tDg5mDeGe64o1+norllZQ2kpkaRnt7xLJ7ICBuRER3DKz09htTUKMrKGjpct9st3HFHPw4ePEtDvTsUgqs+KuEHD37M757bz48e2cL+/dWYTJwfl8ztxhMLx3Zo4YpcjrYwylc2eEgCi349nrlzNlJUVNt2zKzBZzsr2LO7klavn/37qxlxVRLduoWTd+AMgwcn0CsrttNtFRTUMmpUj85Vx6PsnX7WbrcwalQPCgpquWZCzw7f65UVy+DBCeTlnWHsuFTOnWth4RO72L7zNGE2K35/IBSSfn+ArKw4Fv16PIOHJOgFFbUo5R9jwoSePPvcBLKy4kJjfgB+v4EFE80uL/X1blxNHlpafIy+uken2/D7A9TVtTJ4aOewaj93u1NID02grq61w322G311D1pafLiagvfd7PJiwfSlxxcMyWefm9ApbEUUlPL3ZTIxbXoGi1+YFOqGBy8HZ8Pz82uYc88G3njjc3Jy4oiIsOFq8tLU5AmNX9bWuomOspNxkSNwo6MdF93xk5ERQ3SUndraYBfbMAyamjy4moJ7t3Ny4nnjjWPMuWcD+fk1HY6pbe9uL35hEtPa9rCLqOst//iW5cQ0Xvn9NBbM38rHm0+Glg75fAE++fgk+/dVs3NHFpOnpPH+uwV4fQGe/NU4+l3Rhfp6NxmZsR2KaFzYoryY8HAbGZmx1Ne76drVyefHzjHv0a3YrGZuviWHDRvKWLmiiIYGd4clQAATJ6XxxMKx6m6LglL++QYPSeCVV6fxq4W7ef2PR2ls9GA2m7BYzDQ1eXjzjWO8/95xWlv9BAyDCRN70u+KLjS7vPTt1wWAxkYPLpeXbt2cWCzmDkHp9wc4e7YlOMETZadvvy6hSZt160pZvboEs8nEhg2ltLb6MZnAYjGHZr2joux881tX8Oj84Zq4kb+J5Wc/+9nP9DTIf1V0tIPx1/QkIzOGkuI6qqub2/aGBz/8fgOTKVjP8kRJPYUFddTUttI9IRyPJ8CC+Vv5za/30b17BH37dqGl2UdYmJX4+DBWrijivjkbOHDgDAMHdafmXAsfbz7JsmX5vLM8n7o6d4f7CHbJg59zc7vxi1+O4YGHhtCliyqWy9844qTDxeTvwTAMiovqePGFgyxfnk9lRVNoCVH7mKA/YIBh4HBYSUwMJyrKTkFhLa1uH1ePTmH23bm0NLcdVxtuZenLh/h0ezlOh5Xs7DgaGz1UVTXjdvvAZAptczQMA8MIfk5KjmTWrD58b85AemXFajxSFJTyr8fr9bNvbzWvvXqE1atKqKx0hQpqtIfWhcF24XhisNveFqp+I7Re0zCMDms3L7yd9utJSRHMuDaTb3+3P0OHJqgSkCgo5V+f2+3nyOGzfPCnQtauOUFBQW1oC6K57TgG6Bh6F32Dfvn7BgTavnY6beT0jmPa9Axu/Ho2AwZ0Cx53K6KglP9JAgGDqioXu3dVsnnTSfburaKkuI6GBg9ujx+DYGa2d5BNbV8ZGO25GPoZR1vl816ZsQwdlsiEiT0ZPiKJxMSIDiXdRBSU8j86NM+da6GstIFjx85x/HgNJ8saqK5upra2laYmL15P8HgGm91CZKSNuLgwEhLC6dkzmpzecfS7oivp6dF06eJUOIqCUv73MwwDrzdAS4sPj8eP1xsILWA3m4OnPtrtFpxOKzabWRMzoqAUEflXpS2MIiJ/gfWNXWv0LIiIXK7rHfb90ep6i4hcrkXp9fv0LIiIXC4oNZMoInJ5mswREVFQiogoKEVEFJQiIgpKEREFpYiIglJEREEpIqKgFBERBaWIiIJSRERBKSKioBQRUVCKiCgoRUQUlCIiCkoREVFQiogoKEVEFJQiIgpKEREFpYiIglJEREEpIqKgFBERBaWIiIJSRERBKSKioBQRUVCKiCgoRUQUlCIiCkoREQWliIgoKEVEFJQiIgpKEREFpYiIglJEREEpIqKgFBFRUIqIiIJSRERBKSKioBQRUVCKiCgoRUQUlCIiCkoREQWliIgoKEVEFJQiIgpKEREFpYiIglJEREEpIqKgFBFRUIqIKChFRERBKSKioBQRUVCKiCgoRUQUlCIiCkoREQWliIiCUkREFJQiIgpKEREFpYjIP8//B1mN2RiJgl1hAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI0LTA5LTIyVDE1OjQ1OjE1KzAwOjAwlaAYEQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNC0wOS0yMlQxNTo0NToxNSswMDowMOT9oK0AAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC",Lc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8AAAAKAAgMAAAAul/nQAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACVBMVEUAkkb////OKzdsRJOSAAAAAWJLR0QB/wIt3gAAAAd0SU1FB+kECAABIgHQHmAAAAJ0SURBVHja7c8xAQAACAOglbSkKS2xT2hAUjZlWxZhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh4R/hAzW+Q6qmKxk5AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI1LTA0LTA4VDAwOjAxOjM0KzAwOjAwSGxLUQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNS0wNC0wOFQwMDowMTozNCswMDowMDkx8+0AAAAASUVORK5CYII=",Dc="data:image/png;base64,UklGRlwEAABXRUJQVlA4TE8EAAAvScE2AH/FuG3bQPvPeu/7NSYK524GBG3bxvwhb/vjuG0jSXL+wc53zxLnn0DSJsHdY0gQDIAAYATANmzC+14Sm/PMYwpAIlJNGQmAFAZSADRQVgKmwOnvgurURFIYmA4kphOUoRlHBJAS0URuymZVcDp1pwQp4yzj5VUfmdIBRkS+/acjGDj9fU74/2MbABRt2zYlSSeUdqBs27Zt27Zt25WsF0jrnd+syrj77tuMiP5PgOT8n/N/zv//SzU8eOKKvZfvv6vxmlWbvJp39y/tXT5hUNixBAYtOP6iTX9z2/Nj8wcGHEl85rl6/eN1Z2bEnUfV7Kud2kO7Hy7r5TCCw853aI/uujkl7CbK13zXLPy2qsw99N6d0SxN70q4hdjOZs3ipm1RdxBZltIsT67NdwQjP6sBPw53AZWH1JDnY/RNqFNj1o7jrnCvGvV0MXEDP6hh3/ajbVxKjZuZzFlgo68G9tczFj6khj4Roavouhr7WiFZxbfU4PfKqCp9rEZ/VEJU4R01/MNimvKuq/GvRUgKnFCAR0napBDXUTTex+BPIqh/WkFmBtJT/EFhvilk54gC3U/OeEXqj6UmVgdFa6qYOatgjxMzUtH6Q2nJ+wRH30dYWa2Al5ISSyH6VcnJToW8hZLezZiaEozsVtA7CClLo0qX87FGYa+kI/Qd19cgG6MU+Ag2LiO7SEa8E1lHlIvFCn0hF3ew3aQi3oWtM8rELAU/jYlz6E4REahHVx3gYZDC78vDQnzzeDiG7wgPL/E9oyHchq8lxMJgtcABLEy0gbEsrLSBpSzss4HdLFyygYssPLCBuyy8t4E3LFTbwA8WUjbgsdBiA80sdNlA198PWmygmYWUDXgsVNvADxbe2cBrFu7ZwG0WLtnARRb22sBuFlbYwFIWJtrAWBYG2UB/FsKt+FpCLMhzfE+ExmP4jvCwAN8cHgbg68NDoA7dTyHyLLoTTMxEN5WJeBe2ziom5Ba2G0LlImzzuYh1IGuv4kIuITsvZI5ENpyN4DdcX4JsyCpcy4TO0hQqr4QP2YVqqxAay2BqjDMi2zBtFkqjHqKGCk5kOaIlQmr4LZ53YVZkOBx/iPB6Cs0RITZai6W6khkZ6SPxxwi3B5HsFXKL3uJ4VcCO9E2h8PoIv+N8DN2jheENGNYIxwcQHBGSI9fMdyXMkhTeNt2tAuG55JHZHhYL08U3TXa3VLguvGauKwXCduiAqY5GhPB1vom61wjnoz3zpCcK633fmOZVH+G9YK9vEv9QkVA/psYc1aOE/YpDvhn801FxgEPfm+DNEHGD4UV12fZrWVicYenaVDY1bq8UpxjfkcqW5NaoOMfSlV+z4cvyEnGSwWHn23tW+9UpIXGXlbOvdvSUrofLEuI6o9NP1fy56pNTq8SR9pt75Fnr72p5enhOX3Gsof7jlu25ePfNTy+jmvF+vrl7Yc/Ssf1DkvN/zv85//8vVQA=",Nc="data:image/png;base64,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",Fc="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAIVBAMAAADbnobxAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX///+qveEANKMAOaYAOamOL0vaKhrVKx4AAACnHtw1AAAAAWJLR0QIht6VegAAAAlwSFlzAAAN1wAADdcBQiibeAAAAAd0SU1FB+gHCBEgFNPt/igAAAI2SURBVHja7dFBEYAwAAOwWsACFmYBC1jAwuxPwd7rHYmFJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwN5FldxUyaCKECEIEYIQIQgRghAhCEGIEIQIQYgQhAhBCEKEIEQIQoQgRAhCECIEIUIQIgQhQhCCECEIEYIQIQgRghCECEGIEIQIQYgQhCBECEKEIEQIQoQgBCFCECIEIUIQIgQhCBGCECEIEYIQIQhBiBCECEGIEIQIQYgQhCBECEKEIEQIQoQgBCFCECIEIUIQIgQhCBGCECEIEYIQIQhBiBCECEGIEIQIQQhChCBECEKEIEQIQhAiBCFCECIEIUIQghAhCBGCECEIEYIQhAhBiBCECEGIEIQgRAhChCBECEKEcCDkoUpequSjSiZVhAhBiBCECEGIEIQIQQhChCBECEKEIEQIQhAiBCFCECIEIUIQghAhCBGCECEIEYIQhAhBiBCECEGIEIQgRAhChCBECEKEIAQhQhAiBCFCECIEIQgRghAhCBGCECEIQYgQhAhBiBCECEEIQoQgRAhChCBECEKEIAQhQhAiBCFCECIEIQgRghAhCBGCECEIQYgQhAhBiBCECEEIQoQgRAhChCBECEIQIgQhQhAiBCFCEIIQIQgRghAhCBGCEIQIQYgQhAhBiBCEIEQIQoQgRAhChCAEIUIQIgQhQhAiBCG/twAF+zc5lLr9EAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyNC0wNy0wOFQxNzozMjoxOSswMDowME1J9akAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjQtMDctMDhUMTc6MzI6MTkrMDA6MDA8FE0VAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==",Bc="data:image/png;base64,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",zn={[_t.ENGLISH_UNITED_KINGDOM]:Tc,[_t.ENGLISH_UNITED_STATES]:wc,[_t.ENGLISH_AUSTRALIA]:bc,[_t.FRENCH]:_c,[_t.GERMAN_GERMANY]:yc,[_t.GERMAN_SWITZERLAND]:Mc,[_t.HINDI_INDIA]:Pc,[_t.ITALIAN]:Lc,[_t.JAPANESE_JAPAN]:Dc,[_t.PORTUGUESE_BRAZILIAN]:Sc,[_t.PORTUGUESE_PORTUGAL]:Nc,[_t.RUSSIAN]:Fc,[_t.SPANISH_SPAIN]:Rc,[_t.CHINESE_CHINA]:Bc},Oc={[me.FERRARI]:zn[_t.ITALIAN],[me.LIGHT]:zn[_t.ENGLISH_UNITED_KINGDOM],[me.LIGHT_BLUE]:zn[_t.FRENCH],[me.DARK]:zn[_t.ENGLISH_UNITED_STATES],[me.DARK_PURPLE]:zn[_t.JAPANESE_JAPAN]};`${btoa({CUSTOM_CROSSHAIR:`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
2
2
  <!-- White border (underneath) -->
3
3
  <line x1="16" y1="2" x2="16" y2="30" stroke="white" stroke-width="5"/>
4
4
  <line x1="2" y1="16" x2="30" y2="16" stroke="white" stroke-width="5"/>
@@ -6,7 +6,7 @@
6
6
  <!-- Black crosshair lines (on top) -->
7
7
  <line x1="16" y1="2" x2="16" y2="30" stroke="black" stroke-width="2"/>
8
8
  <line x1="2" y1="16" x2="30" y2="16" stroke="black" stroke-width="2"/>
9
- </svg>`}.CUSTOM_CROSSHAIR)}`;const RA={CANVAS:"canvas"},lr={CLICK:"click"},Hi={POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_UP:"pointerup",POINTER_CANCEL:"pointercancel"},hr={CONFIRMATION_DIALOG_CONFIRM:"confirmation-dialog-confirm",CONFIRMATION_DIALOG_UNDO:"confirmation-dialog-undo"},Ae="",_A={SHOW_MODAL:"show-modal",CLOSE:"close"};`${btoa({CUSTOM_CROSSHAIR:`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
9
+ </svg>`}.CUSTOM_CROSSHAIR)}`;const NA={CANVAS:"canvas"},fr={CLICK:"click"},Vi={POINTER_DOWN:"pointerdown",POINTER_MOVE:"pointermove",POINTER_UP:"pointerup",POINTER_CANCEL:"pointercancel"},gr={CONFIRMATION_DIALOG_CONFIRM:"confirmation-dialog-confirm",CONFIRMATION_DIALOG_UNDO:"confirmation-dialog-undo"},Fs={FERRARI:"Ferrari theme inspired by the iconic red color of Ferrari cars.",LIGHT:"Light theme with a clean and minimalistic design.",LIGHT_BLUE:"Light Blue theme with a refreshing and calm appearance.",DARK:"Dark theme with a sleek and modern look.",DARK_PURPLE:"Dark Purple theme with a luxurious and elegant feel."},Bs={FERRARI:"🏎️",LIGHT:"☀️",LIGHT_BLUE:"🫧",DARK:"🌙",DARK_PURPLE:"🟣"},Os={FERRARI:"Ferrari",LIGHT:"Light",LIGHT_BLUE:"Light Blue",DARK:"Dark",DARK_PURPLE:"Dark Purple"},Us={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},ii={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},Uc=new Map([[ii.DARK,{description:Fs.DARK,icon:Bs.DARK,id:ii.DARK,name:Os.DARK,value:Us.DARK}],[ii.DARK_PURPLE,{description:Fs.DARK_PURPLE,icon:Bs.DARK_PURPLE,id:ii.DARK_PURPLE,name:Os.DARK_PURPLE,value:Us.DARK_PURPLE}],[ii.FERRARI,{description:Fs.FERRARI,icon:Bs.FERRARI,id:ii.FERRARI,name:Os.FERRARI,value:Us.FERRARI}],[ii.LIGHT,{description:Fs.LIGHT,icon:Bs.LIGHT,id:ii.LIGHT,name:Os.LIGHT,value:Us.LIGHT}],[ii.LIGHT_BLUE,{description:Fs.LIGHT_BLUE,icon:Bs.LIGHT_BLUE,id:ii.LIGHT_BLUE,name:Os.LIGHT_BLUE,value:Us.LIGHT_BLUE}]]),FA=r=>{zc();const t=Uc.get(r)?.value;t!==void 0&&document.body.classList.add(t)},zc=()=>{document.body.classList.remove(...Object.values(ii))},Gc="base-button",Ae="",BA={SHOW_MODAL:"show-modal",CLOSE:"close"};`${btoa({CUSTOM_CROSSHAIR:`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
10
10
  <!-- White border (underneath) -->
11
11
  <line x1="16" y1="2" x2="16" y2="30" stroke="white" stroke-width="5"/>
12
12
  <line x1="2" y1="16" x2="30" y2="16" stroke="white" stroke-width="5"/>
@@ -14,13 +14,13 @@
14
14
  <!-- Black crosshair lines (on top) -->
15
15
  <line x1="16" y1="2" x2="16" y2="30" stroke="black" stroke-width="2"/>
16
16
  <line x1="2" y1="16" x2="30" y2="16" stroke="black" stroke-width="2"/>
17
- </svg>`}.CUSTOM_CROSSHAIR)}`;const pa={ANY:"any",NONE:"none"},PA={KEY_DOWN:"keydown"},Vi={CLICK:"click"},Lc={FERRARI:"ferrari",LIGHT:"light",LIGHT_BLUE:"light-blue",DARK:"dark",DARK_PURPLE:"dark-purple"},DA=r=>{Nc(),document.body.classList.add(r)},Nc=()=>{document.body.classList.remove(...Object.values(Lc))},Fc="base-button",Bc=`<button part="button">
17
+ </svg>`}.CUSTOM_CROSSHAIR)}`;const xa={ANY:"any",NONE:"none"},OA={KEY_DOWN:"keydown"},Wi={CLICK:"click"},kc=`<button part="button">
18
18
  <slot></slot>
19
19
  </button>
20
- `,Oc=":where(button,input[type=button],input[type=submit],input[type=reset]),:where(input[type=file])::file-selector-button{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);letter-spacing:var(--letter-spacing-normal);line-height:var(--line-height-normal);padding-block:var(--button-padding-block-md);padding-inline:var(--button-padding-inline-md);display:inline-flex;justify-content:center;align-items:center;text-align:center;gap:var(--gap-sm);background:var(--color-bg-secondary);color:var(--color-text-primary);border:var(--border-width-1) solid var(--color-border-primary);border-radius:var(--border-radius-lg);transition:all var(--transition-base)}:where(button,input[type=button],input[type=submit],input[type=reset])>.material-symbols-outlined{font-size:var(--font-size-xl);font-family:Material Symbols Outlined;line-height:1}:where(button,input[type=button],input[type=submit],input[type=reset])[disabled]{opacity:.3;cursor:not-allowed}:where(button,input[type=button],input[type=submit],input[type=reset]):where(:not(:disabled):hover),:where(button,input[type=button],input[type=submit],input[type=reset]):where(:not(:disabled):active){background:var(--color-hover-bg-secondary);border-color:var(--color-hover-border-secondary)}:where(input[type=file]){inline-size:100%;max-inline-size:max-content;background-color:var(--color-bg-secondary)}",LA=new CSSStyleSheet;LA.replaceSync(Oc);class Ht extends HTMLElement{static autofocusAttribute="autofocus";static commandAttribute="command";static commandforAttribute="commandfor";static disabledAttribute="disabled";static nameAttribute="name";static titleAttribute="title";static typeAttribute="type";static valueAttribute="value";constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot?.adoptedStyleSheets.push(LA)}static get observedAttributes(){return[Ht.autofocusAttribute,Ht.commandAttribute,Ht.commandforAttribute,Ht.disabledAttribute,Ht.nameAttribute,Ht.titleAttribute,Ht.typeAttribute,Ht.valueAttribute]}get buttonElement(){return this.shadowRoot?.querySelector("button")}get autofocus(){return this.hasAttribute(Ht.autofocusAttribute)}set autofocus(t){t?this.setAttribute(Ht.autofocusAttribute,Ae):this.removeAttribute(Ht.autofocusAttribute)}get command(){return this.getAttribute(Ht.commandAttribute)??Ae}set command(t){this.setAttribute(Ht.commandAttribute,t)}get commandfor(){return this.getAttribute(Ht.commandforAttribute)??Ae}set commandfor(t){t!==Ae?this.setAttribute(Ht.commandforAttribute,t):this.removeAttribute(Ht.commandforAttribute)}get disabled(){return this.hasAttribute(Ht.disabledAttribute)}set disabled(t){t?this.setAttribute(Ht.disabledAttribute,Ae):this.removeAttribute(Ht.disabledAttribute)}get name(){return this.getAttribute(Ht.nameAttribute)??Ae}set name(t){t!==Ae?this.setAttribute(Ht.nameAttribute,t):this.removeAttribute(Ht.nameAttribute)}get headline(){return this.getAttribute(Ht.titleAttribute)??Ae}set headline(t){t!==Ae?this.setAttribute(Ht.titleAttribute,t):this.removeAttribute(Ht.titleAttribute)}get type(){return this.getAttribute(Ht.typeAttribute)??"button"}set type(t){t!==Ae?this.setAttribute(Ht.typeAttribute,t):this.removeAttribute(Ht.typeAttribute)}get value(){return this.getAttribute(Ht.valueAttribute)??"button"}set value(t){t!==Ae?this.setAttribute(Ht.valueAttribute,t):this.removeAttribute(Ht.valueAttribute)}connectedCallback(){this._render(),this._addEventListeners()}disconnectedCallback(){this._removeEventListeners()}attributeChangedCallback(t,e,i){i!==e&&this._syncAttribute(t)}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Bc,this._syncAttributes())}_addEventListeners(){this.buttonElement.addEventListener(Vi.CLICK,this._handleClick)}_removeEventListeners(){this.buttonElement.addEventListener(Vi.CLICK,this._handleClick)}_handleClick=()=>{if(this.command===Ae||this.commandfor===Ae)return;let t=document.getElementById(this.commandfor);if(t??=this._findElementInShadowDOM(this.commandfor),t===null)return;const e=t;switch(this.command){case _A.SHOW_MODAL:e.showModal?.();break;case _A.CLOSE:e.close?.();break}};_findElementInShadowDOM(t){const e=`#${CSS.escape(t)}`;let i=this.querySelector(e);if(i!==null||(i=this._searchInShadowRootsOfChildren(this,e),i!==null))return i;let n=this.parentElement;for(;n!==null;){if(i=n.querySelector(e),i!==null||(i=this._searchInShadowRootsOfChildren(n,e),i!==null))return i;const s=n.parentElement;if(s!==null)n=s;else{const a=n.getRootNode();if(a instanceof ShadowRoot&&a.host!==null)n=a.host;else break}}return null}_searchInShadowRootsOfChildren(t,e){const i=t.children;for(const n of i){if(n.shadowRoot!==null){const a=n.shadowRoot.querySelector(e);if(a!==null)return a;const o=this._searchInShadowRootsOfChildren(n.shadowRoot,e);if(o!==null)return o}const s=this._searchInShadowRootsOfChildren(n,e);if(s!==null)return s}return null}_syncAttribute(t){const e=this.buttonElement;e!==null&&(this.hasAttribute(t)?e.setAttribute(t,this.getAttribute(t)??Ae):e.removeAttribute(t))}_syncAttributes(){Ht.observedAttributes.forEach(t=>{this._syncAttribute(t)})}}const NA=Object.freeze(Object.defineProperty({__proto__:null,BaseButtonComponent:Ht,selector:Fc},Symbol.toStringTag,{value:"Module"}));new CSSStyleSheet().replaceSync("button[part=button]{background:var(--color-warning);font-weight:var(--font-weight-medium);padding-block:var(--button-padding-block-md);padding-inline:var(--button-padding-inline-md);border-radius:var(--border-radius-lg);border:none;box-shadow:var(--shadow-md);transition:all var(--transition-base);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--gap-sm)}button[part=button]:hover{filter:brightness(1.2)}");const FA="undo-button";new CSSStyleSheet().replaceSync("button[part=button]{background:var(--color-success);font-weight:var(--font-weight-medium);padding-block:var(--button-padding-block-md);padding-inline:var(--button-padding-inline-md);border-radius:var(--border-radius-lg);border:none;box-shadow:var(--shadow-md);transition:all var(--transition-base);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--gap-sm)}button[part=button]:hover{filter:brightness(1.2)}");const BA="confirm-button";new CSSStyleSheet().replaceSync("button[part=button]{border:none;background:transparent}button[part=button]:not(:disabled):hover{transform:scale(1.2)}"),new CSSStyleSheet().replaceSync("button[part=button]{border:none;background:transparent}button[part=button]:not(:disabled):hover{transform:scale(1.2)}");const Uc=`<dialog part="dialog">
20
+ `,Hc="*{box-sizing:border-box}:where(button,input[type=button],input[type=submit],input[type=reset]),:where(input[type=file])::file-selector-button{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family-base);letter-spacing:var(--letter-spacing-normal);line-height:var(--line-height-normal);padding-block:var(--button-padding-block-md);padding-inline:var(--button-padding-inline-md);display:inline-flex;justify-content:center;align-items:center;text-align:center;gap:var(--gap-sm);background:var(--color-bg-secondary);color:var(--color-text-primary);border:var(--border-width-1) solid var(--color-border-primary);border-radius:var(--border-radius-lg);transition:all var(--transition-base)}:where(button,input[type=button],input[type=submit],input[type=reset])>.material-symbols-outlined{font-size:var(--font-size-xl);font-family:Material Symbols Outlined;line-height:1}:where(button,input[type=button],input[type=submit],input[type=reset])[disabled]{opacity:.3;cursor:not-allowed}:where(button,input[type=button],input[type=submit],input[type=reset]):where(:not(:disabled):hover),:where(button,input[type=button],input[type=submit],input[type=reset]):where(:not(:disabled):active){background:var(--color-hover-bg-secondary);border-color:var(--color-hover-border-secondary)}:where(input[type=file]){inline-size:100%;max-inline-size:max-content;background-color:var(--color-bg-secondary)}",UA=new CSSStyleSheet;UA.replaceSync(Hc);class Ht extends HTMLElement{static autofocusAttribute="autofocus";static commandAttribute="command";static commandforAttribute="commandfor";static disabledAttribute="disabled";static nameAttribute="name";static titleAttribute="title";static typeAttribute="type";static valueAttribute="value";constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot?.adoptedStyleSheets.push(UA)}static get observedAttributes(){return[Ht.autofocusAttribute,Ht.commandAttribute,Ht.commandforAttribute,Ht.disabledAttribute,Ht.nameAttribute,Ht.titleAttribute,Ht.typeAttribute,Ht.valueAttribute]}get buttonElement(){return this.shadowRoot?.querySelector("button")}get autofocus(){return this.hasAttribute(Ht.autofocusAttribute)}set autofocus(t){t?this.setAttribute(Ht.autofocusAttribute,Ae):this.removeAttribute(Ht.autofocusAttribute)}get command(){return this.getAttribute(Ht.commandAttribute)??Ae}set command(t){this.setAttribute(Ht.commandAttribute,t)}get commandfor(){return this.getAttribute(Ht.commandforAttribute)??Ae}set commandfor(t){t!==Ae?this.setAttribute(Ht.commandforAttribute,t):this.removeAttribute(Ht.commandforAttribute)}get disabled(){return this.hasAttribute(Ht.disabledAttribute)}set disabled(t){t?this.setAttribute(Ht.disabledAttribute,Ae):this.removeAttribute(Ht.disabledAttribute)}get name(){return this.getAttribute(Ht.nameAttribute)??Ae}set name(t){t!==Ae?this.setAttribute(Ht.nameAttribute,t):this.removeAttribute(Ht.nameAttribute)}get headline(){return this.getAttribute(Ht.titleAttribute)??Ae}set headline(t){t!==Ae?this.setAttribute(Ht.titleAttribute,t):this.removeAttribute(Ht.titleAttribute)}get type(){return this.getAttribute(Ht.typeAttribute)??"button"}set type(t){t!==Ae?this.setAttribute(Ht.typeAttribute,t):this.removeAttribute(Ht.typeAttribute)}get value(){return this.getAttribute(Ht.valueAttribute)??"button"}set value(t){t!==Ae?this.setAttribute(Ht.valueAttribute,t):this.removeAttribute(Ht.valueAttribute)}connectedCallback(){this._render(),this._addEventListeners()}disconnectedCallback(){this._removeEventListeners()}attributeChangedCallback(t,e,i){i!==e&&this._syncAttribute(t)}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=kc,this._syncAttributes())}_addEventListeners(){this.buttonElement.addEventListener(Wi.CLICK,this._handleClick)}_removeEventListeners(){this.buttonElement.addEventListener(Wi.CLICK,this._handleClick)}_handleClick=()=>{if(this.command===Ae||this.commandfor===Ae)return;let t=document.getElementById(this.commandfor);if(t??=this._findElementInShadowDOM(this.commandfor),t===null)return;const e=t;switch(this.command){case BA.SHOW_MODAL:e.showModal?.();break;case BA.CLOSE:e.close?.();break}};_findElementInShadowDOM(t){const e=`#${CSS.escape(t)}`;let i=this.querySelector(e);if(i!==null||(i=this._searchInShadowRootsOfChildren(this,e),i!==null))return i;let n=this.parentElement;for(;n!==null;){if(i=n.querySelector(e),i!==null||(i=this._searchInShadowRootsOfChildren(n,e),i!==null))return i;const s=n.parentElement;if(s!==null)n=s;else{const a=n.getRootNode();if(a instanceof ShadowRoot&&a.host!==null)n=a.host;else break}}return null}_searchInShadowRootsOfChildren(t,e){const i=t.children;for(const n of i){if(n.shadowRoot!==null){const a=n.shadowRoot.querySelector(e);if(a!==null)return a;const o=this._searchInShadowRootsOfChildren(n.shadowRoot,e);if(o!==null)return o}const s=this._searchInShadowRootsOfChildren(n,e);if(s!==null)return s}return null}_syncAttribute(t){const e=this.buttonElement;e!==null&&(this.hasAttribute(t)?e.setAttribute(t,this.getAttribute(t)??Ae):e.removeAttribute(t))}_syncAttributes(){Ht.observedAttributes.forEach(t=>{this._syncAttribute(t)})}}const zA=Object.freeze(Object.defineProperty({__proto__:null,BaseButtonComponent:Ht,selector:Gc},Symbol.toStringTag,{value:"Module"}));new CSSStyleSheet().replaceSync("*{box-sizing:border-box}button[part=button]{background:var(--color-warning);font-weight:var(--font-weight-medium);padding-block:var(--button-padding-block-md);padding-inline:var(--button-padding-inline-md);border-radius:var(--border-radius-lg);border:none;box-shadow:var(--shadow-md);transition:all var(--transition-base);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--gap-sm)}button[part=button]:hover{filter:brightness(1.2)}");const GA="undo-button";new CSSStyleSheet().replaceSync("*{box-sizing:border-box}button[part=button]{background:var(--color-success);font-weight:var(--font-weight-medium);padding-block:var(--button-padding-block-md);padding-inline:var(--button-padding-inline-md);border-radius:var(--border-radius-lg);border:none;box-shadow:var(--shadow-md);transition:all var(--transition-base);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--gap-sm)}button[part=button]:hover{filter:brightness(1.2)}");const kA="confirm-button";new CSSStyleSheet().replaceSync("*{box-sizing:border-box}button[part=button]{border:none;background:transparent}button[part=button]:not(:disabled):hover{transform:scale(1.2)}"),new CSSStyleSheet().replaceSync("*{box-sizing:border-box}button[part=button]{border:none;background:transparent}button[part=button]:not(:disabled):hover{transform:scale(1.2)}");const Vc=`<dialog part="dialog">
21
21
  <slot></slot>
22
22
  </dialog>
23
- `,zc="dialog{background-color:var(--color-bg-primary);color:var(--color-text-primary);border:var(--border-width-1) solid var(--color-border-secondary);border-radius:var(--border-radius-xl);padding:var(--spacing-4);max-width:90vw;max-height:90vh;font-family:var(--font-family-base);line-height:var(--line-height-normal);font-size:var(--font-size-sm);box-shadow:var(--shadow-2xl);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:slideIn var(--transition-base) cubic-bezier(.34,1.56,.64,1) forwards}dialog.closing{animation:slideOut var(--transition-base) cubic-bezier(.34,1.56,.64,1) forwards}dialog::backdrop{background:var(--window-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn var(--transition-base) ease-out forwards}dialog.closing::backdrop{animation:fadeOut var(--transition-base) ease-out forwards}@keyframes slideIn{0%{opacity:0;transform:scale(.95) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-20px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}",OA=new CSSStyleSheet;OA.replaceSync(zc);class hn extends HTMLElement{static closedByAttribute="closedby";_closedBy=pa.ANY;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot?.adoptedStyleSheets.push(OA)}static get observedAttributes(){return[hn.closedByAttribute]}get dialogElement(){return this.shadowRoot?.querySelector("dialog")}get command(){return this.getAttribute(hn.closedByAttribute)??pa.ANY}get closedBy(){return this._closedBy}set closedBy(t){this._closedBy=t,this.setAttribute(hn.closedByAttribute,t)}connectedCallback(){this._render(),this._addEventListeners()}disconnectedCallback(){this._removeEventListeners()}attributeChangedCallback(t,e,i){this.dialogElement!=null&&i!==e&&this._syncAttribute(t)}_addEventListeners(){}_removeEventListeners(){}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Uc,this._syncAttributes())}_syncAttribute(t){const e=this.dialogElement;e!=null&&(this.hasAttribute(t)===!0?e.setAttribute(t,this.getAttribute(t)??Ae):e.removeAttribute(t))}_syncAttributes(){hn.observedAttributes.forEach(t=>{this._syncAttribute(t)})}show(){this.dialogElement.show()}showModal(){this.dialogElement.showModal()}close(t){const e=this.dialogElement;e.classList.add("closing"),setTimeout(()=>{e.close(t),e.classList.remove("closing")},300)}}const Gc=`<dialog part="dialog">
23
+ `,Wc="*{box-sizing:border-box}dialog{background-color:var(--color-bg-primary);color:var(--color-text-primary);border:var(--border-width-1) solid var(--color-border-secondary);border-radius:var(--border-radius-xl);padding:var(--spacing-4);max-width:90vw;max-height:90vh;font-family:var(--font-family-base);line-height:var(--line-height-normal);font-size:var(--font-size-sm);box-shadow:var(--shadow-2xl);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:slideIn var(--transition-base) cubic-bezier(.34,1.56,.64,1) forwards}dialog.closing{animation:slideOut var(--transition-base) cubic-bezier(.34,1.56,.64,1) forwards}dialog::backdrop{background:var(--window-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn var(--transition-base) ease-out forwards}dialog.closing::backdrop{animation:fadeOut var(--transition-base) ease-out forwards}@keyframes slideIn{0%{opacity:0;transform:scale(.95) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideOut{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-20px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}",HA=new CSSStyleSheet;HA.replaceSync(Wc);class cn extends HTMLElement{static closedByAttribute="closedby";_closedBy=xa.ANY;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot?.adoptedStyleSheets.push(HA)}static get observedAttributes(){return[cn.closedByAttribute]}get dialogElement(){return this.shadowRoot?.querySelector("dialog")}get command(){return this.getAttribute(cn.closedByAttribute)??xa.ANY}get closedBy(){return this._closedBy}set closedBy(t){this._closedBy=t,this.setAttribute(cn.closedByAttribute,t)}connectedCallback(){this._render(),this._addEventListeners()}disconnectedCallback(){this._removeEventListeners()}attributeChangedCallback(t,e,i){this.dialogElement!=null&&i!==e&&this._syncAttribute(t)}_addEventListeners(){}_removeEventListeners(){}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Vc,this._syncAttributes())}_syncAttribute(t){const e=this.dialogElement;e!=null&&(this.hasAttribute(t)===!0?e.setAttribute(t,this.getAttribute(t)??Ae):e.removeAttribute(t))}_syncAttributes(){cn.observedAttributes.forEach(t=>{this._syncAttribute(t)})}show(){this.dialogElement.show()}showModal(){this.dialogElement.showModal()}close(t){const e=this.dialogElement;e.classList.add("closing"),setTimeout(()=>{e.close(t),e.classList.remove("closing")},300)}}const Yc=`<dialog part="dialog">
24
24
  <header part="header">
25
25
  <h2></h2>
26
26
  </header>
@@ -32,7 +32,7 @@
32
32
  <undo-button></undo-button>
33
33
  </footer>
34
34
  </dialog>
35
- `,kc="dialog header[part=header] h2{margin:0;padding:0}dialog div[part=body] p{margin:0;padding:0}dialog footer[part=footer]{display:flex;gap:var(--gap-md);justify-content:flex-end}",Hc=`<dialog part="dialog">
35
+ `,Xc="*{box-sizing:border-box}dialog header[part=header] h2{margin:0;padding:0}dialog div[part=body] p{margin:0;padding:0}dialog footer[part=footer]{display:flex;gap:var(--gap-md);justify-content:flex-end}",Zc=`<dialog part="dialog">
36
36
  <header part="header">
37
37
  <slot name="header"></slot>
38
38
  </header>
@@ -43,7 +43,7 @@
43
43
  <slot name="footer"></slot>
44
44
  </footer>
45
45
  </dialog>
46
- `,Vc='dialog[open]{display:flex;flex-direction:column;gap:var(--spacing-4)}dialog>[part]{position:relative}dialog>[part][hidden]{display:none}dialog>[part][data-divider=true]:after{content:"";position:absolute;left:0;right:0;bottom:0;border-bottom:var(--border-width-1) solid var(--color-neutral-600)}dialog>[part][data-divider=true]{padding-bottom:var(--spacing-4)}dialog div[part=body]{flex:1;min-height:0}',UA=new CSSStyleSheet;UA.replaceSync(Vc);let zA=class extends hn{_sectionNames=["header","body","footer"];_handleSlotChange=()=>{this._updateSectionState()};constructor(){super(),this.shadowRoot?.adoptedStyleSheets.push(UA)}static get observedAttributes(){return hn.observedAttributes}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Hc,this._syncAttributes())}_addEventListeners(){super._addEventListeners(),this.shadowRoot!==null&&(this.shadowRoot.querySelectorAll("slot").forEach(t=>{t.addEventListener("slotchange",this._handleSlotChange)}),this._updateSectionState())}_removeEventListeners(){super._removeEventListeners(),this.shadowRoot!==null&&this.shadowRoot.querySelectorAll("slot").forEach(t=>{t.removeEventListener("slotchange",this._handleSlotChange)})}_updateSectionState(){if(this.shadowRoot===null)return;const t=[];this._sectionNames.forEach(e=>{const i=this.shadowRoot?.querySelector(`[part='${e}']`),n=this.shadowRoot?.querySelector(`slot[name='${e}']`);if(i===null||n===null)return;const s=n.assignedNodes({flatten:!0}).some(a=>a.nodeType===Node.TEXT_NODE?a.textContent?.trim().length!==0:a.nodeType===Node.ELEMENT_NODE);i.toggleAttribute("hidden",s===!1),i.dataset.filled=String(s),i.removeAttribute("data-divider"),s===!0&&t.push(i)}),t.slice(0,-1).forEach(e=>{e.dataset.divider="true"})}};const GA=new CSSStyleSheet;GA.replaceSync(kc);class je extends zA{_headline=Ae;_text=Ae;_value=void 0;static textAttribute="text";static headlineAttribute="headline";static valueAttribute="value";constructor(){super(),this.shadowRoot?.adoptedStyleSheets.push(GA)}static get observedAttributes(){return[...zA.observedAttributes,je.textAttribute,je.headlineAttribute,je.valueAttribute]}get headline(){return this._headline}set headline(t){this._headline=t,this.setAttribute(je.headlineAttribute,t)}get text(){return this._text}set text(t){this._text=t,this.setAttribute(je.textAttribute,t)}get value(){return this._value}set value(t){this._value=t}connectedCallback(){this._render(),this._addEventListeners(),this.closedBy=pa.NONE}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Gc,this._syncAttributes())}_syncAttribute(t){if(je.observedAttributes.includes(t))switch(t){case je.headlineAttribute:{this._headline=this.getAttribute(t)??Ae;const e=this.shadowRoot?.querySelector("h2");e!=null&&(e.textContent=this._headline);break}case je.textAttribute:{this._text=this.getAttribute(t)??Ae;const e=this.shadowRoot?.querySelector("p");e!=null&&(e.textContent=this._text);break}case je.valueAttribute:{this._value=this.getAttribute(t);break}default:super._syncAttribute(t)}else super._syncAttribute(t)}_syncAttributes(){super._syncAttributes(),je.observedAttributes.forEach(t=>{this._syncAttribute(t)})}_addEventListeners(){super._addEventListeners(),this.shadowRoot?.querySelector(BA)?.addEventListener(Vi.CLICK,this._handleConfirm),this.shadowRoot?.querySelector(FA)?.addEventListener(Vi.CLICK,this._handleUndo)}_removeEventListeners(){super._removeEventListeners(),this.shadowRoot?.querySelector(BA)?.removeEventListener(Vi.CLICK,this._handleConfirm),this.shadowRoot?.querySelector(FA)?.removeEventListener(Vi.CLICK,this._handleUndo)}_handleConfirm=()=>{const t=new CustomEvent(hr.CONFIRMATION_DIALOG_CONFIRM,{bubbles:!0,composed:!0,detail:{value:this._value}});this.dispatchEvent(t)};_handleUndo=()=>{const t=new CustomEvent(hr.CONFIRMATION_DIALOG_UNDO,{bubbles:!0,composed:!0,detail:{value:this._value}});this.dispatchEvent(t),this._value=void 0}}const Wc="confirmation-dialog",Yc={CONFIRMATION_DIALOG_CONFIRM:hr.CONFIRMATION_DIALOG_CONFIRM,CONFIRMATION_DIALOG_UNDO:hr.CONFIRMATION_DIALOG_UNDO},Wi=Object.freeze(Object.defineProperty({__proto__:null,COMPONENT_CUSTOM_MESSAGES:Yc,ConfirmationDialogComponent:je,selector:Wc},Symbol.toStringTag,{value:"Module"})),Xc=`<div class="bar-menu-container">
46
+ `,Jc='*{box-sizing:border-box}dialog[open]{display:flex;flex-direction:column;gap:var(--spacing-4)}dialog>[part]{position:relative}dialog>[part][hidden]{display:none}dialog>[part][data-divider=true]:after{content:"";position:absolute;left:0;right:0;bottom:0;border-bottom:var(--border-width-1) solid var(--color-neutral-600)}dialog>[part][data-divider=true]{padding-bottom:var(--spacing-4)}dialog div[part=body]{flex:1;min-height:0}',VA=new CSSStyleSheet;VA.replaceSync(Jc);class WA extends cn{_sectionNames=["header","body","footer"];_handleSlotChange=()=>{this._updateSectionState()};constructor(){super(),this.shadowRoot?.adoptedStyleSheets.push(VA)}static get observedAttributes(){return cn.observedAttributes}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Zc,this._syncAttributes())}_addEventListeners(){super._addEventListeners(),this.shadowRoot!==null&&(this.shadowRoot.querySelectorAll("slot").forEach(t=>{t.addEventListener("slotchange",this._handleSlotChange)}),this._updateSectionState())}_removeEventListeners(){super._removeEventListeners(),this.shadowRoot!==null&&this.shadowRoot.querySelectorAll("slot").forEach(t=>{t.removeEventListener("slotchange",this._handleSlotChange)})}_updateSectionState(){if(this.shadowRoot===null)return;const t=[];this._sectionNames.forEach(e=>{const i=this.shadowRoot?.querySelector(`[part='${e}']`),n=this.shadowRoot?.querySelector(`slot[name='${e}']`);if(i===null||n===null)return;const s=n.assignedNodes({flatten:!0}).some(a=>a.nodeType===Node.TEXT_NODE?a.textContent?.trim().length!==0:a.nodeType===Node.ELEMENT_NODE);i.toggleAttribute("hidden",s===!1),i.dataset.filled=String(s),i.removeAttribute("data-divider"),s===!0&&t.push(i)}),t.slice(0,-1).forEach(e=>{e.dataset.divider="true"})}}const YA=new CSSStyleSheet;YA.replaceSync(Xc);class je extends WA{_headline=Ae;_text=Ae;_value=void 0;static textAttribute="text";static headlineAttribute="headline";static valueAttribute="value";constructor(){super(),this.shadowRoot?.adoptedStyleSheets.push(YA)}static get observedAttributes(){return[...WA.observedAttributes,je.textAttribute,je.headlineAttribute,je.valueAttribute]}get headline(){return this._headline}set headline(t){this._headline=t,this.setAttribute(je.headlineAttribute,t)}get text(){return this._text}set text(t){this._text=t,this.setAttribute(je.textAttribute,t)}get value(){return this._value}set value(t){this._value=t}connectedCallback(){this._render(),this._addEventListeners(),this.closedBy=xa.NONE}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Yc,this._syncAttributes())}_syncAttribute(t){if(je.observedAttributes.includes(t))switch(t){case je.headlineAttribute:{this._headline=this.getAttribute(t)??Ae;const e=this.shadowRoot?.querySelector("h2");e!=null&&(e.textContent=this._headline);break}case je.textAttribute:{this._text=this.getAttribute(t)??Ae;const e=this.shadowRoot?.querySelector("p");e!=null&&(e.textContent=this._text);break}case je.valueAttribute:{this._value=this.getAttribute(t);break}default:super._syncAttribute(t)}else super._syncAttribute(t)}_syncAttributes(){super._syncAttributes(),je.observedAttributes.forEach(t=>{this._syncAttribute(t)})}_addEventListeners(){super._addEventListeners(),this.shadowRoot?.querySelector(kA)?.addEventListener(Wi.CLICK,this._handleConfirm),this.shadowRoot?.querySelector(GA)?.addEventListener(Wi.CLICK,this._handleUndo)}_removeEventListeners(){super._removeEventListeners(),this.shadowRoot?.querySelector(kA)?.removeEventListener(Wi.CLICK,this._handleConfirm),this.shadowRoot?.querySelector(GA)?.removeEventListener(Wi.CLICK,this._handleUndo)}_handleConfirm=()=>{const t=new CustomEvent(gr.CONFIRMATION_DIALOG_CONFIRM,{bubbles:!0,composed:!0,detail:{value:this._value}});this.dispatchEvent(t)};_handleUndo=()=>{const t=new CustomEvent(gr.CONFIRMATION_DIALOG_UNDO,{bubbles:!0,composed:!0,detail:{value:this._value}});this.dispatchEvent(t),this._value=void 0}}const jc="confirmation-dialog",Qc={CONFIRMATION_DIALOG_CONFIRM:gr.CONFIRMATION_DIALOG_CONFIRM,CONFIRMATION_DIALOG_UNDO:gr.CONFIRMATION_DIALOG_UNDO},Yi=Object.freeze(Object.defineProperty({__proto__:null,COMPONENT_CUSTOM_MESSAGES:Qc,ConfirmationDialogComponent:je,selector:jc},Symbol.toStringTag,{value:"Module"})),qc=`<div class="bar-menu-container">
47
47
  <previous-button class="nav-prev" part="nav-prev-button"></previous-button>
48
48
 
49
49
  <div class="buttons-wrapper" part="buttons-wrapper">
@@ -52,11 +52,11 @@
52
52
 
53
53
  <next-button class="nav-next" part="nav-next-button"></next-button>
54
54
  </div>
55
- `,Zc=":host{display:block;width:100%}.bar-menu-container{display:flex;align-items:center;justify-content:space-between;height:100%;gap:var(--gap-sm);padding:var(--spacing-1);background:var(--color-bg-primary);border-radius:var(--border-radius-full);border:var(--border-width-2) solid var(--color-border-secondary);box-shadow:var(--shadow-sm);margin:0 auto}.bar-menu-container .nav-prev,.bar-menu-container .nav-next{flex-shrink:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease-in-out,visibility .2s ease-in-out}.bar-menu-container .nav-prev.visible,.bar-menu-container .nav-next.visible{opacity:1;visibility:visible;pointer-events:auto}.bar-menu-container .nav-prev::part(button),.bar-menu-container .nav-next::part(button){background-color:transparent;box-shadow:none}.bar-menu-container .buttons-wrapper{display:grid;grid-template-columns:repeat(var(--bar-menu-visible-count, 3),1fr);grid-auto-rows:max-content;align-items:center;justify-items:center;gap:var(--gap-sm);overflow:hidden;position:relative;width:auto}::slotted(*){display:none;flex-shrink:0;will-change:opacity,transform;contain:layout style paint;opacity:0;transform:scale(.8)}::slotted(.animating){transition:opacity .4s cubic-bezier(.34,1.56,.64,1),transform .4s cubic-bezier(.34,1.56,.64,1)}::slotted(.visible-button){display:inline-flex!important;pointer-events:auto;opacity:1;transform:scale(1)}",kA=new CSSStyleSheet;kA.replaceSync(Zc);class ii extends HTMLElement{static _visibleCountAttribute="visible-count";static _cyclicalNavigationAttribute="cyclical-navigation";_currentIndex=0;_visibleCount=3;_cyclicalNavigation=!1;_MIN_VISIBLE=1;_MAX_VISIBLE=5;_slotElement=null;_navPrevButton=null;_navNextButton=null;_buttonsWrapper=null;_slotChangeListener=null;_keyDownListener=null;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot?.adoptedStyleSheets.push(kA)}static get observedAttributes(){return[ii._visibleCountAttribute,ii._cyclicalNavigationAttribute]}get visibleButtons(){const t=this.getAttribute(ii._visibleCountAttribute);if(t!==null&&t!==Ae){const e=parseInt(t,10);return Math.max(this._MIN_VISIBLE,Math.min(this._MAX_VISIBLE,e))}return this._visibleCount}set visibleButtons(t){const e=Math.max(this._MIN_VISIBLE,Math.min(this._MAX_VISIBLE,t));this.setAttribute(ii._visibleCountAttribute,String(e))}get cyclicalNavigation(){return this.hasAttribute(ii._cyclicalNavigationAttribute)}set cyclicalNavigation(t){t?this.setAttribute(ii._cyclicalNavigationAttribute,Ae):this.removeAttribute(ii._cyclicalNavigationAttribute)}connectedCallback(){this._render(),this._cacheElements(),this._setupSlotListener(),this._setupKeyboardListener(),this._updateButtonVisibility()}disconnectedCallback(){this._removeSlotListener(),this._removeKeyboardListener()}attributeChangedCallback(t,e,i){t===ii._visibleCountAttribute?(this._visibleCount=this.visibleButtons,this._buttonsWrapper!==null&&this._buttonsWrapper.style.setProperty("--bar-menu-visible-count",String(this.visibleButtons)),this._updateButtonVisibility()):t===ii._cyclicalNavigationAttribute&&(this._cyclicalNavigation=this.cyclicalNavigation,this._updateButtonVisibility())}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=Xc)}_cacheElements(){this._slotElement=this.shadowRoot?.querySelector("slot")??null,this._navPrevButton=this.shadowRoot?.querySelector(".nav-prev")??null,this._navNextButton=this.shadowRoot?.querySelector(".nav-next")??null,this._buttonsWrapper=this.shadowRoot?.querySelector(".buttons-wrapper")??null,this._buttonsWrapper!==null&&this._buttonsWrapper.style.setProperty("--bar-menu-visible-count",String(this.visibleButtons)),this._navPrevButton!==null&&(this._navPrevButton.setAttribute("aria-label","Previous"),this._navPrevButton.addEventListener(Vi.CLICK,()=>{this._scrollPrevious()})),this._navNextButton!==null&&(this._navNextButton.setAttribute("aria-label","Next"),this._navNextButton.addEventListener(Vi.CLICK,()=>{this._scrollNext()}))}_setupSlotListener(){this._slotElement!==null&&(this._slotChangeListener=()=>{this._currentIndex=0,this._updateButtonVisibility()},this._slotElement.addEventListener("slotchange",this._slotChangeListener))}_removeSlotListener(){this._slotElement!==null&&this._slotChangeListener!==null&&this._slotElement.removeEventListener("slotchange",this._slotChangeListener)}_setupKeyboardListener(){this._keyDownListener=t=>{t.key==="ArrowLeft"?(t.preventDefault(),this._scrollPrevious()):t.key==="ArrowRight"&&(t.preventDefault(),this._scrollNext())},this.addEventListener(PA.KEY_DOWN,this._keyDownListener)}_removeKeyboardListener(){this._keyDownListener!==null&&this.removeEventListener(PA.KEY_DOWN,this._keyDownListener)}_getSlottedButtons(){return this._slotElement===null?[]:this._slotElement.assignedElements()}_updateButtonVisibility(t){const e=this._getSlottedButtons(),i=e.length,n=this.visibleButtons,s=this._currentIndex,a=Math.min(s+n,i);e.forEach((o,l)=>{const A=l>=s&&l<a,h=o;A||(o.classList.remove("visible-button"),o.classList.remove("animating"),h.style.display="none")}),t!==void 0?(e[0]?.offsetHeight,e.forEach((o,l)=>{if(l>=s&&l<a){const A=o;A.style.display="inline-flex",o.classList.add("animating");const h=l%this.visibleButtons*50;A.style.transitionDelay=`${h}ms`}}),e[0]?.offsetHeight,e.forEach((o,l)=>{l>=s&&l<a&&o.classList.add("visible-button")}),setTimeout(()=>{e.forEach(o=>{o.classList.remove("animating"),o.style.transitionDelay=Ae})},400)):e.forEach((o,l)=>{const A=l>=s&&l<a,h=o;A&&(h.style.display="inline-flex",o.classList.add("visible-button"))}),this._updateNavigationButtons(i,n)}_updateNavigationButtons(t,e){const i=t>e,n=this._currentIndex+e<t,s=this._currentIndex===0,a=!n;this._navPrevButton!==null&&(i?(this._navPrevButton.classList.add("visible"),this._navPrevButton.disabled=!this._cyclicalNavigation&&s):this._navPrevButton.classList.remove("visible")),this._navNextButton!==null&&(i?(this._navNextButton.classList.add("visible"),this._navNextButton.disabled=!this._cyclicalNavigation&&a):this._navNextButton.classList.remove("visible"))}_scrollPrevious(){const t=this._getSlottedButtons().length,e=this.visibleButtons;this._currentIndex>0?(this._currentIndex=Math.max(0,this._currentIndex-e),this._updateButtonVisibility("previous")):this._cyclicalNavigation&&t>e&&(this._currentIndex=Math.max(0,t-e),this._updateButtonVisibility("previous"))}_scrollNext(){const t=this._getSlottedButtons().length,e=this.visibleButtons,i=this._currentIndex+e;i<t?(this._currentIndex=i,this._updateButtonVisibility("next")):this._cyclicalNavigation&&t>e&&(this._currentIndex=0,this._updateButtonVisibility("next"))}scrollToButton(t){const e=this._getSlottedButtons().length,i=this.visibleButtons;t>=0&&t<e&&(this._currentIndex=Math.max(0,Math.min(t,e-i)),this._updateButtonVisibility())}getVisibleButtons(){return this._getSlottedButtons().filter(t=>t.classList.contains("visible-button"))}getAllButtons(){return this._getSlottedButtons()}getCurrentIndex(){return this._currentIndex}}const Jc="bar-menu",jc=Object.freeze(Object.defineProperty({__proto__:null,BarMenuComponent:ii,selector:Jc},Symbol.toStringTag,{value:"Module"})),ke="srgb",HA="srgb-linear",VA="linear",ma="srgb";function Qc(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function WA(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}const YA={};function XA(r){const t=r[0];if(typeof t=="string"&&t.startsWith("TSL:")){const e=r[1];e&&e.isStackTrace?r[0]+=" "+e.getLocation():r[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return r}function Me(...r){r=XA(r);const t="THREE."+r.shift();{const e=r[0];e&&e.isStackTrace?console.warn(e.getError(t)):console.warn(t,...r)}}function cn(...r){r=XA(r);const t="THREE."+r.shift();{const e=r[0];e&&e.isStackTrace?console.error(e.getError(t)):console.error(t,...r)}}function ZA(...r){const t=r.join(" ");t in YA||(YA[t]=!0,Me(...r))}class cr{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[t]===void 0&&(i[t]=[]),i[t].indexOf(e)===-1&&i[t].push(e)}hasEventListener(t,e){const i=this._listeners;return i===void 0?!1:i[t]!==void 0&&i[t].indexOf(e)!==-1}removeEventListener(t,e){const i=this._listeners;if(i===void 0)return;const n=i[t];if(n!==void 0){const s=n.indexOf(e);s!==-1&&n.splice(s,1)}}dispatchEvent(t){const e=this._listeners;if(e===void 0)return;const i=e[t.type];if(i!==void 0){t.target=this;const n=i.slice(0);for(let s=0,a=n.length;s<a;s++)n[s].call(this,t);t.target=null}}}const ye=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function Ns(){const r=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(ye[r&255]+ye[r>>8&255]+ye[r>>16&255]+ye[r>>24&255]+"-"+ye[t&255]+ye[t>>8&255]+"-"+ye[t>>16&15|64]+ye[t>>24&255]+"-"+ye[e&63|128]+ye[e>>8&255]+"-"+ye[e>>16&255]+ye[e>>24&255]+ye[i&255]+ye[i>>8&255]+ye[i>>16&255]+ye[i>>24&255]).toLowerCase()}function Gt(r,t,e){return Math.max(t,Math.min(e,r))}function qc(r,t){return(r%t+t)%t}function Ia(r,t,e){return(1-e)*r+e*t}function Fs(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Be(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}class He{constructor(t=0,e=0){He.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,i=this.y,n=t.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Gt(this.x,t.x,e.x),this.y=Gt(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=Gt(this.x,t,e),this.y=Gt(this.y,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Gt(i,t,e))}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(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(Gt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const i=Math.cos(e),n=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*i-a*n+t.x,this.y=s*n+a*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Bs{constructor(t=0,e=0,i=0,n=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=n}static slerpFlat(t,e,i,n,s,a,o){let l=i[n+0],A=i[n+1],h=i[n+2],c=i[n+3],u=s[a+0],d=s[a+1],p=s[a+2],m=s[a+3];if(c!==m||l!==u||A!==d||h!==p){let g=l*u+A*d+h*p+c*m;g<0&&(u=-u,d=-d,p=-p,m=-m,g=-g);let f=1-o;if(g<.9995){const y=Math.acos(g),S=Math.sin(y);f=Math.sin(f*y)/S,o=Math.sin(o*y)/S,l=l*f+u*o,A=A*f+d*o,h=h*f+p*o,c=c*f+m*o}else{l=l*f+u*o,A=A*f+d*o,h=h*f+p*o,c=c*f+m*o;const y=1/Math.sqrt(l*l+A*A+h*h+c*c);l*=y,A*=y,h*=y,c*=y}}t[e]=l,t[e+1]=A,t[e+2]=h,t[e+3]=c}static multiplyQuaternionsFlat(t,e,i,n,s,a){const o=i[n],l=i[n+1],A=i[n+2],h=i[n+3],c=s[a],u=s[a+1],d=s[a+2],p=s[a+3];return t[e]=o*p+h*c+l*d-A*u,t[e+1]=l*p+h*u+A*c-o*d,t[e+2]=A*p+h*d+o*u-l*c,t[e+3]=h*p-o*c-l*u-A*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,n){return this._x=t,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const i=t._x,n=t._y,s=t._z,a=t._order,o=Math.cos,l=Math.sin,A=o(i/2),h=o(n/2),c=o(s/2),u=l(i/2),d=l(n/2),p=l(s/2);switch(a){case"XYZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"YXZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"ZXY":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"ZYX":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"YZX":this._x=u*h*c+A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c-u*d*p;break;case"XZY":this._x=u*h*c-A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c+u*d*p;break;default:Me("Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const i=e/2,n=Math.sin(i);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,i=e[0],n=e[4],s=e[8],a=e[1],o=e[5],l=e[9],A=e[2],h=e[6],c=e[10],u=i+o+c;if(u>0){const d=.5/Math.sqrt(u+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-A)*d,this._z=(a-n)*d}else if(i>o&&i>c){const d=2*Math.sqrt(1+i-o-c);this._w=(h-l)/d,this._x=.25*d,this._y=(n+a)/d,this._z=(s+A)/d}else if(o>c){const d=2*Math.sqrt(1+o-i-c);this._w=(s-A)/d,this._x=(n+a)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+c-i-o);this._w=(a-n)/d,this._x=(s+A)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i<1e-8?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(Gt(this.dot(t),-1,1)))}rotateTowards(t,e){const i=this.angleTo(t);if(i===0)return this;const n=Math.min(1,e/i);return this.slerp(t,n),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const i=t._x,n=t._y,s=t._z,a=t._w,o=e._x,l=e._y,A=e._z,h=e._w;return this._x=i*h+a*o+n*A-s*l,this._y=n*h+a*l+s*o-i*A,this._z=s*h+a*A+i*l-n*o,this._w=a*h-i*o-n*l-s*A,this._onChangeCallback(),this}slerp(t,e){let i=t._x,n=t._y,s=t._z,a=t._w,o=this.dot(t);o<0&&(i=-i,n=-n,s=-s,a=-a,o=-o);let l=1-e;if(o<.9995){const A=Math.acos(o),h=Math.sin(A);l=Math.sin(l*A)/h,e=Math.sin(e*A)/h,this._x=this._x*l+i*e,this._y=this._y*l+n*e,this._z=this._z*l+s*e,this._w=this._w*l+a*e,this._onChangeCallback()}else this._x=this._x*l+i*e,this._y=this._y*l+n*e,this._z=this._z*l+s*e,this._w=this._w*l+a*e,this.normalize();return this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),n=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(n*Math.sin(t),n*Math.cos(t),s*Math.sin(e),s*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class V{constructor(t=0,e=0,i=0){V.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}set(t,e,i){return i===void 0&&(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(JA.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(JA.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=t.elements,a=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*a,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*a,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*a,this}applyQuaternion(t){const e=this.x,i=this.y,n=this.z,s=t.x,a=t.y,o=t.z,l=t.w,A=2*(a*n-o*i),h=2*(o*e-s*n),c=2*(s*i-a*e);return this.x=e+l*A+a*c-o*h,this.y=i+l*h+o*A-s*c,this.z=n+l*c+s*h-a*A,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Gt(this.x,t.x,e.x),this.y=Gt(this.y,t.y,e.y),this.z=Gt(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=Gt(this.x,t,e),this.y=Gt(this.y,t,e),this.z=Gt(this.z,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Gt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const i=t.x,n=t.y,s=t.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*a-i*l,this.z=i*o-n*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return Ca.copy(this).projectOnVector(t),this.sub(Ca)}reflect(t){return this.sub(Ca.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(Gt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){const n=Math.sin(e)*t;return this.x=n*Math.sin(i),this.y=Math.cos(e)*t,this.z=n*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ca=new V,JA=new Bs;class Yi{constructor(t,e,i,n,s,a,o,l,A){Yi.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A)}set(t,e,i,n,s,a,o,l,A){const h=this.elements;return h[0]=t,h[1]=n,h[2]=o,h[3]=e,h[4]=s,h[5]=l,h[6]=i,h[7]=a,h[8]=A,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[3],l=i[6],A=i[1],h=i[4],c=i[7],u=i[2],d=i[5],p=i[8],m=n[0],g=n[3],f=n[6],y=n[1],S=n[4],v=n[7],w=n[2],T=n[5],R=n[8];return s[0]=a*m+o*y+l*w,s[3]=a*g+o*S+l*T,s[6]=a*f+o*v+l*R,s[1]=A*m+h*y+c*w,s[4]=A*g+h*S+c*T,s[7]=A*f+h*v+c*R,s[2]=u*m+d*y+p*w,s[5]=u*g+d*S+p*T,s[8]=u*f+d*v+p*R,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8];return e*a*h-e*o*A-i*s*h+i*o*l+n*s*A-n*a*l}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=h*a-o*A,u=o*l-h*s,d=A*s-a*l,p=e*c+i*u+n*d;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return t[0]=c*m,t[1]=(n*A-h*i)*m,t[2]=(o*i-n*a)*m,t[3]=u*m,t[4]=(h*e-n*l)*m,t[5]=(n*s-o*e)*m,t[6]=d*m,t[7]=(i*l-A*e)*m,t[8]=(a*e-i*s)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,n,s,a,o){const l=Math.cos(s),A=Math.sin(s);return this.set(i*l,i*A,-i*(l*a+A*o)+a+t,-n*A,n*l,-n*(-A*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(va.makeScale(t,e)),this}rotate(t){return this.premultiply(va.makeRotation(-t)),this}translate(t,e){return this.premultiply(va.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<9;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const va=new Yi,jA=new Yi().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),QA=new Yi().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Kc(){const r={enabled:!0,workingColorSpace:HA,spaces:{},convert:function(n,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===ma&&(n.r=Mi(n.r),n.g=Mi(n.g),n.b=Mi(n.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(n.applyMatrix3(this.spaces[s].toXYZ),n.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===ma&&(n.r=zn(n.r),n.g=zn(n.g),n.b=zn(n.b))),n},workingToColorSpace:function(n,s){return this.convert(n,this.workingColorSpace,s)},colorSpaceToWorking:function(n,s){return this.convert(n,s,this.workingColorSpace)},getPrimaries:function(n){return this.spaces[n].primaries},getTransfer:function(n){return n===""?VA:this.spaces[n].transfer},getToneMappingMode:function(n){return this.spaces[n].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(n,s=this.workingColorSpace){return n.fromArray(this.spaces[s].luminanceCoefficients)},define:function(n){Object.assign(this.spaces,n)},_getMatrix:function(n,s,a){return n.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(n){return this.spaces[n].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(n=this.workingColorSpace){return this.spaces[n].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(n,s){return ZA("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(n,s)},toWorkingColorSpace:function(n,s){return ZA("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(n,s)}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],i=[.3127,.329];return r.define({[HA]:{primaries:t,whitePoint:i,transfer:VA,toXYZ:jA,fromXYZ:QA,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:ke},outputColorSpaceConfig:{drawingBufferColorSpace:ke}},[ke]:{primaries:t,whitePoint:i,transfer:ma,toXYZ:jA,fromXYZ:QA,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:ke}}}),r}const ni=Kc();function Mi(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function zn(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let Gn;class $c{static getDataURL(t,e="image/png"){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let i;if(t instanceof HTMLCanvasElement)i=t;else{Gn===void 0&&(Gn=WA("canvas")),Gn.width=t.width,Gn.height=t.height;const n=Gn.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),i=Gn}return i.toDataURL(e)}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=WA("canvas");e.width=t.width,e.height=t.height;const i=e.getContext("2d");i.drawImage(t,0,0,t.width,t.height);const n=i.getImageData(0,0,t.width,t.height),s=n.data;for(let a=0;a<s.length;a++)s[a]=Mi(s[a]/255)*255;return i.putImageData(n,0,0),e}else if(t.data){const e=t.data.slice(0);for(let i=0;i<e.length;i++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[i]=Math.floor(Mi(e[i]/255)*255):e[i]=Mi(e[i]);return{data:e,width:t.width,height:t.height}}else return Me("ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}}let tu=0;class eu{constructor(t=null){this.isSource=!0,Object.defineProperty(this,"id",{value:tu++}),this.uuid=Ns(),this.data=t,this.dataReady=!0,this.version=0}getSize(t){const e=this.data;return typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement?t.set(e.videoWidth,e.videoHeight,0):typeof VideoFrame<"u"&&e instanceof VideoFrame?t.set(e.displayHeight,e.displayWidth,0):e!==null?t.set(e.width,e.height,e.depth||0):t.set(0,0,0),t}set needsUpdate(t){t===!0&&this.version++}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.images[this.uuid]!==void 0)return t.images[this.uuid];const i={uuid:this.uuid,url:""},n=this.data;if(n!==null){let s;if(Array.isArray(n)){s=[];for(let a=0,o=n.length;a<o;a++)n[a].isDataTexture?s.push(xa(n[a].image)):s.push(xa(n[a]))}else s=xa(n);i.url=s}return e||(t.images[this.uuid]=i),i}}function xa(r){return typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&r instanceof ImageBitmap?$c.getDataURL(r):r.data?{data:Array.from(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(Me("Texture: Unable to serialize Texture."),{})}let iu=0;const Ea=new V;class mi extends cr{constructor(t=mi.DEFAULT_IMAGE,e=mi.DEFAULT_MAPPING,i=1001,n=1001,s=1006,a=1008,o=1023,l=1009,A=mi.DEFAULT_ANISOTROPY,h=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:iu++}),this.uuid=Ns(),this.name="",this.source=new eu(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=n,this.magFilter=s,this.minFilter=a,this.anisotropy=A,this.format=o,this.internalFormat=null,this.type=l,this.offset=new He(0,0),this.repeat=new He(1,1),this.center=new He(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Yi,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&&t.depth&&t.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Ea).x}get height(){return this.source.getSize(Ea).y}get depth(){return this.source.getSize(Ea).z}get image(){return this.source.data}set image(t=null){this.source.data=t}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.channel=t.channel,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.colorSpace=t.colorSpace,this.renderTarget=t.renderTarget,this.isRenderTargetTexture=t.isRenderTargetTexture,this.isArrayTexture=t.isArrayTexture,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}setValues(t){for(const e in t){const i=t[e];if(i===void 0){Me(`Texture.setValues(): parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){Me(`Texture.setValues(): property '${e}' does not exist.`);continue}n&&i&&n.isVector2&&i.isVector2||n&&i&&n.isVector3&&i.isVector3||n&&i&&n.isMatrix3&&i.isMatrix3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];const i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==300)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case 1e3:t.x=t.x-Math.floor(t.x);break;case 1001:t.x=t.x<0?0:1;break;case 1002:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case 1e3:t.y=t.y-Math.floor(t.y);break;case 1001:t.y=t.y<0?0:1;break;case 1002:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}mi.DEFAULT_IMAGE=null,mi.DEFAULT_MAPPING=300,mi.DEFAULT_ANISOTROPY=1;class Os{constructor(t=0,e=0,i=0,n=1){Os.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*i+a[8]*n+a[12]*s,this.y=a[1]*e+a[5]*i+a[9]*n+a[13]*s,this.z=a[2]*e+a[6]*i+a[10]*n+a[14]*s,this.w=a[3]*e+a[7]*i+a[11]*n+a[15]*s,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,n,s;const a=t.elements,o=a[0],l=a[4],A=a[8],h=a[1],c=a[5],u=a[9],d=a[2],p=a[6],m=a[10];if(Math.abs(l-h)<.01&&Math.abs(A-d)<.01&&Math.abs(u-p)<.01){if(Math.abs(l+h)<.1&&Math.abs(A+d)<.1&&Math.abs(u+p)<.1&&Math.abs(o+c+m-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const f=(o+1)/2,y=(c+1)/2,S=(m+1)/2,v=(l+h)/4,w=(A+d)/4,T=(u+p)/4;return f>y&&f>S?f<.01?(i=0,n=.707106781,s=.707106781):(i=Math.sqrt(f),n=v/i,s=w/i):y>S?y<.01?(i=.707106781,n=0,s=.707106781):(n=Math.sqrt(y),i=v/n,s=T/n):S<.01?(i=.707106781,n=.707106781,s=0):(s=Math.sqrt(S),i=w/s,n=T/s),this.set(i,n,s,e),this}let g=Math.sqrt((p-u)*(p-u)+(A-d)*(A-d)+(h-l)*(h-l));return Math.abs(g)<.001&&(g=1),this.x=(p-u)/g,this.y=(A-d)/g,this.z=(h-l)/g,this.w=Math.acos((o+c+m-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Gt(this.x,t.x,e.x),this.y=Gt(this.y,t.y,e.y),this.z=Gt(this.z,t.z,e.z),this.w=Gt(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=Gt(this.x,t,e),this.y=Gt(this.y,t,e),this.z=Gt(this.z,t,e),this.w=Gt(this.w,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Gt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),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 si{constructor(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){si.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g)}set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){const f=this.elements;return f[0]=t,f[4]=e,f[8]=i,f[12]=n,f[1]=s,f[5]=a,f[9]=o,f[13]=l,f[2]=A,f[6]=h,f[10]=c,f[14]=u,f[3]=d,f[7]=p,f[11]=m,f[15]=g,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 si().fromArray(this.elements)}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){const e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return this.determinant()===0?(t.set(1,0,0),e.set(0,1,0),i.set(0,0,1),this):(t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this)}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){if(t.determinant()===0)return this.identity();const e=this.elements,i=t.elements,n=1/kn.setFromMatrixColumn(t,0).length(),s=1/kn.setFromMatrixColumn(t,1).length(),a=1/kn.setFromMatrixColumn(t,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*s,e[5]=i[5]*s,e[6]=i[6]*s,e[7]=0,e[8]=i[8]*a,e[9]=i[9]*a,e[10]=i[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,i=t.x,n=t.y,s=t.z,a=Math.cos(i),o=Math.sin(i),l=Math.cos(n),A=Math.sin(n),h=Math.cos(s),c=Math.sin(s);if(t.order==="XYZ"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=-l*c,e[8]=A,e[1]=d+p*A,e[5]=u-m*A,e[9]=-o*l,e[2]=m-u*A,e[6]=p+d*A,e[10]=a*l}else if(t.order==="YXZ"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u+m*o,e[4]=p*o-d,e[8]=a*A,e[1]=a*c,e[5]=a*h,e[9]=-o,e[2]=d*o-p,e[6]=m+u*o,e[10]=a*l}else if(t.order==="ZXY"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u-m*o,e[4]=-a*c,e[8]=p+d*o,e[1]=d+p*o,e[5]=a*h,e[9]=m-u*o,e[2]=-a*A,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=p*A-d,e[8]=u*A+m,e[1]=l*c,e[5]=m*A+u,e[9]=d*A-p,e[2]=-A,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=m-u*c,e[8]=p*c+d,e[1]=c,e[5]=a*h,e[9]=-o*h,e[2]=-A*h,e[6]=d*c+p,e[10]=u-m*c}else if(t.order==="XZY"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=-c,e[8]=A*h,e[1]=u*c+m,e[5]=a*h,e[9]=d*c-p,e[2]=p*c-d,e[6]=o*h,e[10]=m*c+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(nu,t,su)}lookAt(t,e,i){const n=this.elements;return Ve.subVectors(t,e),Ve.lengthSq()===0&&(Ve.z=1),Ve.normalize(),Xi.crossVectors(i,Ve),Xi.lengthSq()===0&&(Math.abs(i.z)===1?Ve.x+=1e-4:Ve.z+=1e-4,Ve.normalize(),Xi.crossVectors(i,Ve)),Xi.normalize(),ur.crossVectors(Ve,Xi),n[0]=Xi.x,n[4]=ur.x,n[8]=Ve.x,n[1]=Xi.y,n[5]=ur.y,n[9]=Ve.y,n[2]=Xi.z,n[6]=ur.z,n[10]=Ve.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[4],l=i[8],A=i[12],h=i[1],c=i[5],u=i[9],d=i[13],p=i[2],m=i[6],g=i[10],f=i[14],y=i[3],S=i[7],v=i[11],w=i[15],T=n[0],R=n[4],P=n[8],E=n[12],x=n[1],b=n[5],z=n[9],B=n[13],U=n[2],W=n[6],Y=n[10],$=n[14],H=n[3],rt=n[7],lt=n[11],mt=n[15];return s[0]=a*T+o*x+l*U+A*H,s[4]=a*R+o*b+l*W+A*rt,s[8]=a*P+o*z+l*Y+A*lt,s[12]=a*E+o*B+l*$+A*mt,s[1]=h*T+c*x+u*U+d*H,s[5]=h*R+c*b+u*W+d*rt,s[9]=h*P+c*z+u*Y+d*lt,s[13]=h*E+c*B+u*$+d*mt,s[2]=p*T+m*x+g*U+f*H,s[6]=p*R+m*b+g*W+f*rt,s[10]=p*P+m*z+g*Y+f*lt,s[14]=p*E+m*B+g*$+f*mt,s[3]=y*T+S*x+v*U+w*H,s[7]=y*R+S*b+v*W+w*rt,s[11]=y*P+S*z+v*Y+w*lt,s[15]=y*E+S*B+v*$+w*mt,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[4],n=t[8],s=t[12],a=t[1],o=t[5],l=t[9],A=t[13],h=t[2],c=t[6],u=t[10],d=t[14],p=t[3],m=t[7],g=t[11],f=t[15],y=l*d-A*u,S=o*d-A*c,v=o*u-l*c,w=a*d-A*h,T=a*u-l*h,R=a*c-o*h;return e*(m*y-g*S+f*v)-i*(p*y-g*w+f*T)+n*(p*S-m*w+f*R)-s*(p*v-m*T+g*R)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){const n=this.elements;return t.isVector3?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=i),this}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=t[9],u=t[10],d=t[11],p=t[12],m=t[13],g=t[14],f=t[15],y=e*o-i*a,S=e*l-n*a,v=e*A-s*a,w=i*l-n*o,T=i*A-s*o,R=n*A-s*l,P=h*m-c*p,E=h*g-u*p,x=h*f-d*p,b=c*g-u*m,z=c*f-d*m,B=u*f-d*g,U=y*B-S*z+v*b+w*x-T*E+R*P;if(U===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const W=1/U;return t[0]=(o*B-l*z+A*b)*W,t[1]=(n*z-i*B-s*b)*W,t[2]=(m*R-g*T+f*w)*W,t[3]=(u*T-c*R-d*w)*W,t[4]=(l*x-a*B-A*E)*W,t[5]=(e*B-n*x+s*E)*W,t[6]=(g*v-p*R-f*S)*W,t[7]=(h*R-u*v+d*S)*W,t[8]=(a*z-o*x+A*P)*W,t[9]=(i*x-e*z-s*P)*W,t[10]=(p*T-m*v+f*y)*W,t[11]=(c*v-h*T-d*y)*W,t[12]=(o*E-a*b-l*P)*W,t[13]=(e*b-i*E+n*P)*W,t[14]=(m*S-p*w-g*y)*W,t[15]=(h*w-c*S+u*y)*W,this}scale(t){const e=this.elements,i=t.x,n=t.y,s=t.z;return e[0]*=i,e[4]*=n,e[8]*=s,e[1]*=i,e[5]*=n,e[9]*=s,e[2]*=i,e[6]*=n,e[10]*=s,e[3]*=i,e[7]*=n,e[11]*=s,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const i=Math.cos(e),n=Math.sin(e),s=1-i,a=t.x,o=t.y,l=t.z,A=s*a,h=s*o;return this.set(A*a+i,A*o-n*l,A*l+n*o,0,A*o+n*l,h*o+i,h*l-n*a,0,A*l-n*o,h*l+n*a,s*l*l+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,n,s,a){return this.set(1,i,s,0,t,1,a,0,e,n,1,0,0,0,0,1),this}compose(t,e,i){const n=this.elements,s=e._x,a=e._y,o=e._z,l=e._w,A=s+s,h=a+a,c=o+o,u=s*A,d=s*h,p=s*c,m=a*h,g=a*c,f=o*c,y=l*A,S=l*h,v=l*c,w=i.x,T=i.y,R=i.z;return n[0]=(1-(m+f))*w,n[1]=(d+v)*w,n[2]=(p-S)*w,n[3]=0,n[4]=(d-v)*T,n[5]=(1-(u+f))*T,n[6]=(g+y)*T,n[7]=0,n[8]=(p+S)*R,n[9]=(g-y)*R,n[10]=(1-(u+m))*R,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,i){const n=this.elements;t.x=n[12],t.y=n[13],t.z=n[14];const s=this.determinant();if(s===0)return i.set(1,1,1),e.identity(),this;let a=kn.set(n[0],n[1],n[2]).length();const o=kn.set(n[4],n[5],n[6]).length(),l=kn.set(n[8],n[9],n[10]).length();s<0&&(a=-a),ri.copy(this);const A=1/a,h=1/o,c=1/l;return ri.elements[0]*=A,ri.elements[1]*=A,ri.elements[2]*=A,ri.elements[4]*=h,ri.elements[5]*=h,ri.elements[6]*=h,ri.elements[8]*=c,ri.elements[9]*=c,ri.elements[10]*=c,e.setFromRotationMatrix(ri),i.x=a,i.y=o,i.z=l,this}makePerspective(t,e,i,n,s,a,o=2e3,l=!1){const A=this.elements,h=2*s/(e-t),c=2*s/(i-n),u=(e+t)/(e-t),d=(i+n)/(i-n);let p,m;if(l)p=s/(a-s),m=a*s/(a-s);else if(o===2e3)p=-(a+s)/(a-s),m=-2*a*s/(a-s);else if(o===2001)p=-a/(a-s),m=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=u,A[12]=0,A[1]=0,A[5]=c,A[9]=d,A[13]=0,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=-1,A[15]=0,this}makeOrthographic(t,e,i,n,s,a,o=2e3,l=!1){const A=this.elements,h=2/(e-t),c=2/(i-n),u=-(e+t)/(e-t),d=-(i+n)/(i-n);let p,m;if(l)p=1/(a-s),m=a/(a-s);else if(o===2e3)p=-2/(a-s),m=-(a+s)/(a-s);else if(o===2001)p=-1/(a-s),m=-s/(a-s);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=0,A[12]=u,A[1]=0,A[5]=c,A[9]=0,A[13]=d,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=0,A[15]=1,this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<16;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}}const kn=new V,ri=new si,nu=new V(0,0,0),su=new V(1,1,1),Xi=new V,ur=new V,Ve=new V,qA=new si,KA=new Bs;class Hn{constructor(t=0,e=0,i=0,n=Hn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,n=this._order){return this._x=t,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){const n=t.elements,s=n[0],a=n[4],o=n[8],l=n[1],A=n[5],h=n[9],c=n[2],u=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(Gt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,A),this._z=0);break;case"YXZ":this._x=Math.asin(-Gt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,A)):(this._y=Math.atan2(-c,s),this._z=0);break;case"ZXY":this._x=Math.asin(Gt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,A)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Gt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,A));break;case"YZX":this._z=Math.asin(Gt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,A),this._y=Math.atan2(-c,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-Gt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,A),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:Me("Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,i===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return qA.makeRotationFromQuaternion(t),this.setFromRotationMatrix(qA,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return KA.setFromEuler(this),this.setFromQuaternion(KA,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Hn.DEFAULT_ORDER="XYZ";class ru{constructor(){this.mask=1}set(t){this.mask=(1<<t|0)>>>0}enable(t){this.mask|=1<<t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t|0}disable(t){this.mask&=~(1<<t|0)}disableAll(){this.mask=0}test(t){return(this.mask&t.mask)!==0}isEnabled(t){return(this.mask&(1<<t|0))!==0}}let au=0;const $A=new V,Vn=new Bs,yi=new si,dr=new V,Us=new V,ou=new V,Au=new Bs,tl=new V(1,0,0),el=new V(0,1,0),il=new V(0,0,1),nl={type:"added"},lu={type:"removed"},Wn={type:"childadded",child:null},Sa={type:"childremoved",child:null};class Qe extends cr{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:au++}),this.uuid=Ns(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Qe.DEFAULT_UP.clone();const t=new V,e=new Hn,i=new Bs,n=new V(1,1,1);function s(){i.setFromEuler(e,!1)}function a(){e.setFromQuaternion(i,void 0,!1)}e._onChange(s),i._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new si},normalMatrix:{value:new Yi}}),this.matrix=new si,this.matrixWorld=new si,this.matrixAutoUpdate=Qe.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=Qe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new ru,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.static=!1,this.userData={},this.pivot=null}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return Vn.setFromAxisAngle(t,e),this.quaternion.multiply(Vn),this}rotateOnWorldAxis(t,e){return Vn.setFromAxisAngle(t,e),this.quaternion.premultiply(Vn),this}rotateX(t){return this.rotateOnAxis(tl,t)}rotateY(t){return this.rotateOnAxis(el,t)}rotateZ(t){return this.rotateOnAxis(il,t)}translateOnAxis(t,e){return $A.copy(t).applyQuaternion(this.quaternion),this.position.add($A.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(tl,t)}translateY(t){return this.translateOnAxis(el,t)}translateZ(t){return this.translateOnAxis(il,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(yi.copy(this.matrixWorld).invert())}lookAt(t,e,i){t.isVector3?dr.copy(t):dr.set(t,e,i);const n=this.parent;this.updateWorldMatrix(!0,!1),Us.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?yi.lookAt(Us,dr,this.up):yi.lookAt(dr,Us,this.up),this.quaternion.setFromRotationMatrix(yi),n&&(yi.extractRotation(n.matrixWorld),Vn.setFromRotationMatrix(yi),this.quaternion.premultiply(Vn.invert()))}add(t){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return t===this?(cn("Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.removeFromParent(),t.parent=this,this.children.push(t),t.dispatchEvent(nl),Wn.child=t,this.dispatchEvent(Wn),Wn.child=null):cn("Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.remove(arguments[i]);return this}const e=this.children.indexOf(t);return e!==-1&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(lu),Sa.child=t,this.dispatchEvent(Sa),Sa.child=null),this}removeFromParent(){const t=this.parent;return t!==null&&t.remove(this),this}clear(){return this.remove(...this.children)}attach(t){return this.updateWorldMatrix(!0,!1),yi.copy(this.matrixWorld).invert(),t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),yi.multiply(t.parent.matrixWorld)),t.applyMatrix4(yi),t.removeFromParent(),t.parent=this,this.children.push(t),t.updateWorldMatrix(!1,!0),t.dispatchEvent(nl),Wn.child=t,this.dispatchEvent(Wn),Wn.child=null,this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let i=0,n=this.children.length;i<n;i++){const s=this.children[i].getObjectByProperty(t,e);if(s!==void 0)return s}}getObjectsByProperty(t,e,i=[]){this[t]===e&&i.push(this);const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].getObjectsByProperty(t,e,i);return i}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Us,t,ou),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Us,Au,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverseVisible(t)}traverseAncestors(t){const e=this.parent;e!==null&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale);const t=this.pivot;if(t!==null){const e=t.x,i=t.y,n=t.z,s=this.matrix.elements;s[12]+=e-s[0]*e-s[4]*i-s[8]*n,s[13]+=i-s[1]*e-s[5]*i-s[9]*n,s[14]+=n-s[2]*e-s[6]*i-s[10]*n}this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].updateMatrixWorld(t)}updateWorldMatrix(t,e){const i=this.parent;if(t===!0&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),e===!0){const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].updateWorldMatrix(!1,!0)}}toJSON(t){const e=t===void 0||typeof t=="string",i={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const n={};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),this.static!==!1&&(n.static=this.static),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),this.pivot!==null&&(n.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(n.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(n.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(n.morphTargetInfluences=this.morphTargetInfluences.slice()),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),n.instanceInfo=this._instanceInfo.map(o=>({...o})),n.availableInstanceIds=this._availableInstanceIds.slice(),n.availableGeometryIds=this._availableGeometryIds.slice(),n.nextIndexStart=this._nextIndexStart,n.nextVertexStart=this._nextVertexStart,n.geometryCount=this._geometryCount,n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.matricesTexture=this._matricesTexture.toJSON(t),n.indirectTexture=this._indirectTexture.toJSON(t),this._colorsTexture!==null&&(n.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&&(n.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(n.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(n.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=s(t.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 A=0,h=l.length;A<h;A++){const c=l[A];s(t.shapes,c)}else s(t.shapes,l)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(t.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,A=this.material.length;l<A;l++)o.push(s(t.materials,this.material[l]));n.material=o}else n.material=s(t.materials,this.material);if(this.children.length>0){n.children=[];for(let o=0;o<this.children.length;o++)n.children.push(this.children[o].toJSON(t).object)}if(this.animations.length>0){n.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];n.animations.push(s(t.animations,l))}}if(e){const o=a(t.geometries),l=a(t.materials),A=a(t.textures),h=a(t.images),c=a(t.shapes),u=a(t.skeletons),d=a(t.animations),p=a(t.nodes);o.length>0&&(i.geometries=o),l.length>0&&(i.materials=l),A.length>0&&(i.textures=A),h.length>0&&(i.images=h),c.length>0&&(i.shapes=c),u.length>0&&(i.skeletons=u),d.length>0&&(i.animations=d),p.length>0&&(i.nodes=p)}return i.object=n,i;function a(o){const l=[];for(const A in o){const h=o[A];delete h.metadata,l.push(h)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),t.pivot!==null&&(this.pivot=t.pivot.clone()),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.static=t.static,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let i=0;i<t.children.length;i++){const n=t.children[i];this.add(n.clone())}return this}}Qe.DEFAULT_UP=new V(0,1,0),Qe.DEFAULT_MATRIX_AUTO_UPDATE=!0,Qe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const sl={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},Zi={h:0,s:0,l:0},fr={h:0,s:0,l:0};function Ma(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}class Ji{constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}set(t,e,i){if(e===void 0&&i===void 0){const n=t;n&&n.isColor?this.copy(n):typeof n=="number"?this.setHex(n):typeof n=="string"&&this.setStyle(n)}else this.setRGB(t,e,i);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=ke){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,ni.colorSpaceToWorking(this,e),this}setRGB(t,e,i,n=ni.workingColorSpace){return this.r=t,this.g=e,this.b=i,ni.colorSpaceToWorking(this,n),this}setHSL(t,e,i,n=ni.workingColorSpace){if(t=qc(t,1),e=Gt(e,0,1),i=Gt(i,0,1),e===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+e):i+e-i*e,a=2*i-s;this.r=Ma(a,s,t+1/3),this.g=Ma(a,s,t),this.b=Ma(a,s,t-1/3)}return ni.colorSpaceToWorking(this,n),this}setStyle(t,e=ke){function i(s){s!==void 0&&parseFloat(s)<1&&Me("Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^(\w+)\(([^\)]*)\)/.exec(t)){let s;const a=n[1],o=n[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 i(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,e);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(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,e);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 i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,e);break;default:Me("Color: Unknown color model "+t)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(t)){const s=n[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,e);if(a===6)return this.setHex(parseInt(s,16),e);Me("Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=ke){const i=sl[t.toLowerCase()];return i!==void 0?this.setHex(i,e):Me("Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=Mi(t.r),this.g=Mi(t.g),this.b=Mi(t.b),this}copyLinearToSRGB(t){return this.r=zn(t.r),this.g=zn(t.g),this.b=zn(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=ke){return ni.workingToColorSpace(be.copy(this),t),Math.round(Gt(be.r*255,0,255))*65536+Math.round(Gt(be.g*255,0,255))*256+Math.round(Gt(be.b*255,0,255))}getHexString(t=ke){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=ni.workingColorSpace){ni.workingToColorSpace(be.copy(this),e);const i=be.r,n=be.g,s=be.b,a=Math.max(i,n,s),o=Math.min(i,n,s);let l,A;const h=(o+a)/2;if(o===a)l=0,A=0;else{const c=a-o;switch(A=h<=.5?c/(a+o):c/(2-a-o),a){case i:l=(n-s)/c+(n<s?6:0);break;case n:l=(s-i)/c+2;break;case s:l=(i-n)/c+4;break}l/=6}return t.h=l,t.s=A,t.l=h,t}getRGB(t,e=ni.workingColorSpace){return ni.workingToColorSpace(be.copy(this),e),t.r=be.r,t.g=be.g,t.b=be.b,t}getStyle(t=ke){ni.workingToColorSpace(be.copy(this),t);const e=be.r,i=be.g,n=be.b;return t!==ke?`color(${t} ${e.toFixed(3)} ${i.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(i*255)},${Math.round(n*255)})`}offsetHSL(t,e,i){return this.getHSL(Zi),this.setHSL(Zi.h+t,Zi.s+e,Zi.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(Zi),t.getHSL(fr);const i=Ia(Zi.h,fr.h,e),n=Ia(Zi.s,fr.s,e),s=Ia(Zi.l,fr.l,e);return this.setHSL(i,n,s),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,i=this.g,n=this.b,s=t.elements;return this.r=s[0]*e+s[3]*i+s[6]*n,this.g=s[1]*e+s[4]*i+s[7]*n,this.b=s[2]*e+s[5]*i+s[8]*n,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const be=new Ji;Ji.NAMES=sl;const ai=new V,bi=new V,ya=new V,Ti=new V,Yn=new V,Xn=new V,rl=new V,ba=new V,Ta=new V,wa=new V,Ra=new Os,_a=new Os,Pa=new Os;class oi{constructor(t=new V,e=new V,i=new V){this.a=t,this.b=e,this.c=i}static getNormal(t,e,i,n){n.subVectors(i,e),ai.subVectors(t,e),n.cross(ai);const s=n.lengthSq();return s>0?n.multiplyScalar(1/Math.sqrt(s)):n.set(0,0,0)}static getBarycoord(t,e,i,n,s){ai.subVectors(n,e),bi.subVectors(i,e),ya.subVectors(t,e);const a=ai.dot(ai),o=ai.dot(bi),l=ai.dot(ya),A=bi.dot(bi),h=bi.dot(ya),c=a*A-o*o;if(c===0)return s.set(0,0,0),null;const u=1/c,d=(A*l-o*h)*u,p=(a*h-o*l)*u;return s.set(1-d-p,p,d)}static containsPoint(t,e,i,n){return this.getBarycoord(t,e,i,n,Ti)===null?!1:Ti.x>=0&&Ti.y>=0&&Ti.x+Ti.y<=1}static getInterpolation(t,e,i,n,s,a,o,l){return this.getBarycoord(t,e,i,n,Ti)===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,Ti.x),l.addScaledVector(a,Ti.y),l.addScaledVector(o,Ti.z),l)}static getInterpolatedAttribute(t,e,i,n,s,a){return Ra.setScalar(0),_a.setScalar(0),Pa.setScalar(0),Ra.fromBufferAttribute(t,e),_a.fromBufferAttribute(t,i),Pa.fromBufferAttribute(t,n),a.setScalar(0),a.addScaledVector(Ra,s.x),a.addScaledVector(_a,s.y),a.addScaledVector(Pa,s.z),a}static isFrontFacing(t,e,i,n){return ai.subVectors(i,e),bi.subVectors(t,e),ai.cross(bi).dot(n)<0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,n){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[n]),this}setFromAttributeAndIndices(t,e,i,n){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,n),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return ai.subVectors(this.c,this.b),bi.subVectors(this.a,this.b),ai.cross(bi).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return oi.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return oi.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,n,s){return oi.getInterpolation(t,this.a,this.b,this.c,e,i,n,s)}containsPoint(t){return oi.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return oi.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const i=this.a,n=this.b,s=this.c;let a,o;Yn.subVectors(n,i),Xn.subVectors(s,i),ba.subVectors(t,i);const l=Yn.dot(ba),A=Xn.dot(ba);if(l<=0&&A<=0)return e.copy(i);Ta.subVectors(t,n);const h=Yn.dot(Ta),c=Xn.dot(Ta);if(h>=0&&c<=h)return e.copy(n);const u=l*c-h*A;if(u<=0&&l>=0&&h<=0)return a=l/(l-h),e.copy(i).addScaledVector(Yn,a);wa.subVectors(t,s);const d=Yn.dot(wa),p=Xn.dot(wa);if(p>=0&&d<=p)return e.copy(s);const m=d*A-l*p;if(m<=0&&A>=0&&p<=0)return o=A/(A-p),e.copy(i).addScaledVector(Xn,o);const g=h*p-d*c;if(g<=0&&c-h>=0&&d-p>=0)return rl.subVectors(s,n),o=(c-h)/(c-h+(d-p)),e.copy(n).addScaledVector(rl,o);const f=1/(g+m+u);return a=m*f,o=u*f,e.copy(i).addScaledVector(Yn,a).addScaledVector(Xn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}class zs{constructor(t=new V(1/0,1/0,1/0),e=new V(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e+=3)this.expandByPoint(Ai.fromArray(t,e));return this}setFromBufferAttribute(t){this.makeEmpty();for(let e=0,i=t.count;e<i;e++)this.expandByPoint(Ai.fromBufferAttribute(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const i=Ai.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);const i=t.geometry;if(i!==void 0){const s=i.getAttribute("position");if(e===!0&&s!==void 0&&t.isInstancedMesh!==!0)for(let a=0,o=s.count;a<o;a++)t.isMesh===!0?t.getVertexPosition(a,Ai):Ai.fromBufferAttribute(s,a),Ai.applyMatrix4(t.matrixWorld),this.expandByPoint(Ai);else t.boundingBox!==void 0?(t.boundingBox===null&&t.computeBoundingBox(),gr.copy(t.boundingBox)):(i.boundingBox===null&&i.computeBoundingBox(),gr.copy(i.boundingBox)),gr.applyMatrix4(t.matrixWorld),this.union(gr)}const n=t.children;for(let s=0,a=n.length;s<a;s++)this.expandByObject(n[s],e);return this}containsPoint(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,Ai),Ai.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Gs),pr.subVectors(this.max,Gs),Zn.subVectors(t.a,Gs),Jn.subVectors(t.b,Gs),jn.subVectors(t.c,Gs),ji.subVectors(Jn,Zn),Qi.subVectors(jn,Jn),un.subVectors(Zn,jn);let e=[0,-ji.z,ji.y,0,-Qi.z,Qi.y,0,-un.z,un.y,ji.z,0,-ji.x,Qi.z,0,-Qi.x,un.z,0,-un.x,-ji.y,ji.x,0,-Qi.y,Qi.x,0,-un.y,un.x,0];return!Da(e,Zn,Jn,jn,pr)||(e=[1,0,0,0,1,0,0,0,1],!Da(e,Zn,Jn,jn,pr))?!1:(mr.crossVectors(ji,Qi),e=[mr.x,mr.y,mr.z],Da(e,Zn,Jn,jn,pr))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,Ai).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(Ai).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(wi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),wi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),wi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),wi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),wi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),wi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),wi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),wi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(wi),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}}const wi=[new V,new V,new V,new V,new V,new V,new V,new V],Ai=new V,gr=new zs,Zn=new V,Jn=new V,jn=new V,ji=new V,Qi=new V,un=new V,Gs=new V,pr=new V,mr=new V,dn=new V;function Da(r,t,e,i,n){for(let s=0,a=r.length-3;s<=a;s+=3){dn.fromArray(r,s);const o=n.x*Math.abs(dn.x)+n.y*Math.abs(dn.y)+n.z*Math.abs(dn.z),l=t.dot(dn),A=e.dot(dn),h=i.dot(dn);if(Math.max(-Math.max(l,A,h),Math.min(l,A,h))>o)return!1}return!0}const ge=new V,Ir=new He;let hu=0;class fn{constructor(t,e,i=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:hu++}),this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=i,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let n=0,s=this.itemSize;n<s;n++)this.array[t+n]=e.array[i+n];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,i=this.count;e<i;e++)Ir.fromBufferAttribute(this,e),Ir.applyMatrix3(t),this.setXY(e,Ir.x,Ir.y);else if(this.itemSize===3)for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.applyMatrix3(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}applyMatrix4(t){for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.applyMatrix4(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.applyNormalMatrix(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}transformDirection(t){for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.transformDirection(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=Fs(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=Be(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=Fs(e,this.array)),e}setX(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=Fs(e,this.array)),e}setY(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=Fs(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=Fs(e,this.array)),e}setW(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=Be(e,this.array),i=Be(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,n){return t*=this.itemSize,this.normalized&&(e=Be(e,this.array),i=Be(i,this.array),n=Be(n,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this}setXYZW(t,e,i,n,s){return t*=this.itemSize,this.normalized&&(e=Be(e,this.array),i=Be(i,this.array),n=Be(n,this.array),s=Be(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(t.name=this.name),this.usage!==35044&&(t.usage=this.usage),t}}class cu extends fn{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class uu extends fn{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class gn extends fn{constructor(t,e,i){super(new Float32Array(t),e,i)}}const du=new zs,ks=new V,La=new V;class al{constructor(t=new V,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const i=this.center;e!==void 0?i.copy(e):du.setFromPoints(t).getCenter(i);let n=0;for(let s=0,a=t.length;s<a;s++)n=Math.max(n,i.distanceToSquared(t[s]));return this.radius=Math.sqrt(n),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){const e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){const i=this.center.distanceToSquared(t);return e.copy(t),i>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;ks.subVectors(t,this.center);const e=ks.lengthSq();if(e>this.radius*this.radius){const i=Math.sqrt(e),n=(i-this.radius)*.5;this.center.addScaledVector(ks,n/i),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(La.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(ks.copy(t.center).add(La)),this.expandByPoint(ks.copy(t.center).sub(La))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}}let fu=0;const qe=new si,Na=new Qe,Qn=new V,We=new zs,Hs=new zs,ve=new V;class qn extends cr{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:fu++}),this.uuid=Ns(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(Qc(t)?uu:cu)(t,1):this.index=t,this}setIndirect(t,e=0){return this.indirect=t,this.indirectOffset=e,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(i!==void 0){const s=new Yi().getNormalMatrix(t);i.applyNormalMatrix(s),i.needsUpdate=!0}const n=this.attributes.tangent;return n!==void 0&&(n.transformDirection(t),n.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(t){return qe.makeRotationFromQuaternion(t),this.applyMatrix4(qe),this}rotateX(t){return qe.makeRotationX(t),this.applyMatrix4(qe),this}rotateY(t){return qe.makeRotationY(t),this.applyMatrix4(qe),this}rotateZ(t){return qe.makeRotationZ(t),this.applyMatrix4(qe),this}translate(t,e,i){return qe.makeTranslation(t,e,i),this.applyMatrix4(qe),this}scale(t,e,i){return qe.makeScale(t,e,i),this.applyMatrix4(qe),this}lookAt(t){return Na.lookAt(t),Na.updateMatrix(),this.applyMatrix4(Na.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Qn).negate(),this.translate(Qn.x,Qn.y,Qn.z),this}setFromPoints(t){const e=this.getAttribute("position");if(e===void 0){const i=[];for(let n=0,s=t.length;n<s;n++){const a=t[n];i.push(a.x,a.y,a.z||0)}this.setAttribute("position",new gn(i,3))}else{const i=Math.min(t.length,e.count);for(let n=0;n<i;n++){const s=t[n];e.setXYZ(n,s.x,s.y,s.z||0)}t.length>e.count&&Me("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new zs);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){cn("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new V(-1/0,-1/0,-1/0),new V(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let i=0,n=e.length;i<n;i++){const s=e[i];We.setFromBufferAttribute(s),this.morphTargetsRelative?(ve.addVectors(this.boundingBox.min,We.min),this.boundingBox.expandByPoint(ve),ve.addVectors(this.boundingBox.max,We.max),this.boundingBox.expandByPoint(ve)):(this.boundingBox.expandByPoint(We.min),this.boundingBox.expandByPoint(We.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&cn('BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new al);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){cn("BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new V,1/0);return}if(t){const i=this.boundingSphere.center;if(We.setFromBufferAttribute(t),e)for(let s=0,a=e.length;s<a;s++){const o=e[s];Hs.setFromBufferAttribute(o),this.morphTargetsRelative?(ve.addVectors(We.min,Hs.min),We.expandByPoint(ve),ve.addVectors(We.max,Hs.max),We.expandByPoint(ve)):(We.expandByPoint(Hs.min),We.expandByPoint(Hs.max))}We.getCenter(i);let n=0;for(let s=0,a=t.count;s<a;s++)ve.fromBufferAttribute(t,s),n=Math.max(n,i.distanceToSquared(ve));if(e)for(let s=0,a=e.length;s<a;s++){const o=e[s],l=this.morphTargetsRelative;for(let A=0,h=o.count;A<h;A++)ve.fromBufferAttribute(o,A),l&&(Qn.fromBufferAttribute(t,A),ve.add(Qn)),n=Math.max(n,i.distanceToSquared(ve))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&cn('BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){cn("BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const i=e.position,n=e.normal,s=e.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new fn(new Float32Array(4*i.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let P=0;P<i.count;P++)o[P]=new V,l[P]=new V;const A=new V,h=new V,c=new V,u=new He,d=new He,p=new He,m=new V,g=new V;function f(P,E,x){A.fromBufferAttribute(i,P),h.fromBufferAttribute(i,E),c.fromBufferAttribute(i,x),u.fromBufferAttribute(s,P),d.fromBufferAttribute(s,E),p.fromBufferAttribute(s,x),h.sub(A),c.sub(A),d.sub(u),p.sub(u);const b=1/(d.x*p.y-p.x*d.y);isFinite(b)&&(m.copy(h).multiplyScalar(p.y).addScaledVector(c,-d.y).multiplyScalar(b),g.copy(c).multiplyScalar(d.x).addScaledVector(h,-p.x).multiplyScalar(b),o[P].add(m),o[E].add(m),o[x].add(m),l[P].add(g),l[E].add(g),l[x].add(g))}let y=this.groups;y.length===0&&(y=[{start:0,count:t.count}]);for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)f(t.getX(B+0),t.getX(B+1),t.getX(B+2))}const S=new V,v=new V,w=new V,T=new V;function R(P){w.fromBufferAttribute(n,P),T.copy(w);const E=o[P];S.copy(E),S.sub(w.multiplyScalar(w.dot(E))).normalize(),v.crossVectors(T,E);const x=v.dot(l[P])<0?-1:1;a.setXYZW(P,S.x,S.y,S.z,x)}for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)R(t.getX(B+0)),R(t.getX(B+1)),R(t.getX(B+2))}}computeVertexNormals(){const t=this.index,e=this.getAttribute("position");if(e!==void 0){let i=this.getAttribute("normal");if(i===void 0)i=new fn(new Float32Array(e.count*3),3),this.setAttribute("normal",i);else for(let u=0,d=i.count;u<d;u++)i.setXYZ(u,0,0,0);const n=new V,s=new V,a=new V,o=new V,l=new V,A=new V,h=new V,c=new V;if(t)for(let u=0,d=t.count;u<d;u+=3){const p=t.getX(u+0),m=t.getX(u+1),g=t.getX(u+2);n.fromBufferAttribute(e,p),s.fromBufferAttribute(e,m),a.fromBufferAttribute(e,g),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),o.fromBufferAttribute(i,p),l.fromBufferAttribute(i,m),A.fromBufferAttribute(i,g),o.add(h),l.add(h),A.add(h),i.setXYZ(p,o.x,o.y,o.z),i.setXYZ(m,l.x,l.y,l.z),i.setXYZ(g,A.x,A.y,A.z)}else for(let u=0,d=e.count;u<d;u+=3)n.fromBufferAttribute(e,u+0),s.fromBufferAttribute(e,u+1),a.fromBufferAttribute(e,u+2),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),i.setXYZ(u+0,h.x,h.y,h.z),i.setXYZ(u+1,h.x,h.y,h.z),i.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),i.needsUpdate=!0}}normalizeNormals(){const t=this.attributes.normal;for(let e=0,i=t.count;e<i;e++)ve.fromBufferAttribute(t,e),ve.normalize(),t.setXYZ(e,ve.x,ve.y,ve.z)}toNonIndexed(){function t(o,l){const A=o.array,h=o.itemSize,c=o.normalized,u=new A.constructor(l.length*h);let d=0,p=0;for(let m=0,g=l.length;m<g;m++){o.isInterleavedBufferAttribute?d=l[m]*o.data.stride+o.offset:d=l[m]*h;for(let f=0;f<h;f++)u[p++]=A[d++]}return new fn(u,h,c)}if(this.index===null)return Me("BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new qn,i=this.index.array,n=this.attributes;for(const o in n){const l=n[o],A=t(l,i);e.setAttribute(o,A)}const s=this.morphAttributes;for(const o in s){const l=[],A=s[o];for(let h=0,c=A.length;h<c;h++){const u=A[h],d=t(u,i);l.push(d)}e.morphAttributes[o]=l}e.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const A=a[o];e.addGroup(A.start,A.count,A.materialIndex)}return e}toJSON(){const t={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const A in l)l[A]!==void 0&&(t[A]=l[A]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const l in i){const A=i[l];t.data.attributes[l]=A.toJSON(t.data)}const n={};let s=!1;for(const l in this.morphAttributes){const A=this.morphAttributes[l],h=[];for(let c=0,u=A.length;c<u;c++){const d=A[c];h.push(d.toJSON(t.data))}h.length>0&&(n[l]=h,s=!0)}s&&(t.data.morphAttributes=n,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere=o.toJSON()),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;i!==null&&this.setIndex(i.clone());const n=t.attributes;for(const A in n){const h=n[A];this.setAttribute(A,h.clone(e))}const s=t.morphAttributes;for(const A in s){const h=[],c=s[A];for(let u=0,d=c.length;u<d;u++)h.push(c[u].clone(e));this.morphAttributes[A]=h}this.morphTargetsRelative=t.morphTargetsRelative;const a=t.groups;for(let A=0,h=a.length;A<h;A++){const c=a[A];this.addGroup(c.start,c.count,c.materialIndex)}const o=t.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=t.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}let gu=0;class Fa extends cr{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:gu++}),this.uuid=Ns(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Ji(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const i=t[e];if(i===void 0){Me(`Material: parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){Me(`Material: '${e}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(t).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(t).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==1&&(i.blending=this.blending),this.side!==0&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==204&&(i.blendSrc=this.blendSrc),this.blendDst!==205&&(i.blendDst=this.blendDst),this.blendEquation!==100&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==3&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==519&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==7680&&(i.stencilFail=this.stencilFail),this.stencilZFail!==7680&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==7680&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.allowOverride===!1&&(i.allowOverride=!1),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function n(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(e){const s=n(t.textures),a=n(t.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(e!==null){const n=e.length;i=new Array(n);for(let s=0;s!==n;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.allowOverride=t.allowOverride,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}}const Ri=new V,Ba=new V,Cr=new V,qi=new V,Oa=new V,vr=new V,Ua=new V;class pu{constructor(t=new V,e=new V(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Ri)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=Ri.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Ri.copy(this.origin).addScaledVector(this.direction,e),Ri.distanceToSquared(t))}distanceSqToSegment(t,e,i,n){Ba.copy(t).add(e).multiplyScalar(.5),Cr.copy(e).sub(t).normalize(),qi.copy(this.origin).sub(Ba);const s=t.distanceTo(e)*.5,a=-this.direction.dot(Cr),o=qi.dot(this.direction),l=-qi.dot(Cr),A=qi.lengthSq(),h=Math.abs(1-a*a);let c,u,d,p;if(h>0)if(c=a*l-o,u=a*o-l,p=s*h,c>=0)if(u>=-p)if(u<=p){const m=1/h;c*=m,u*=m,d=c*(c+a*u+2*o)+u*(a*c+u+2*l)+A}else u=s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u=-s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u<=-p?(c=Math.max(0,-(-a*s+o)),u=c>0?-s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A):u<=p?(c=0,u=Math.min(Math.max(-s,-l),s),d=u*(u+2*l)+A):(c=Math.max(0,-(a*s+o)),u=c>0?s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A);else u=a>0?-s:s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;return i&&i.copy(this.origin).addScaledVector(this.direction,c),n&&n.copy(Ba).addScaledVector(Cr,u),d}intersectSphere(t,e){Ri.subVectors(t.center,this.origin);const i=Ri.dot(this.direction),n=Ri.dot(Ri)-i*i,s=t.radius*t.radius;if(n>s)return null;const a=Math.sqrt(s-n),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return t.radius<0?!1:this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return i===null?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,n,s,a,o,l;const A=1/this.direction.x,h=1/this.direction.y,c=1/this.direction.z,u=this.origin;return A>=0?(i=(t.min.x-u.x)*A,n=(t.max.x-u.x)*A):(i=(t.max.x-u.x)*A,n=(t.min.x-u.x)*A),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),i>a||s>n||((s>i||isNaN(i))&&(i=s),(a<n||isNaN(n))&&(n=a),c>=0?(o=(t.min.z-u.z)*c,l=(t.max.z-u.z)*c):(o=(t.max.z-u.z)*c,l=(t.min.z-u.z)*c),i>l||o>n)||((o>i||i!==i)&&(i=o),(l<n||n!==n)&&(n=l),n<0)?null:this.at(i>=0?i:n,e)}intersectsBox(t){return this.intersectBox(t,Ri)!==null}intersectTriangle(t,e,i,n,s){Oa.subVectors(e,t),vr.subVectors(i,t),Ua.crossVectors(Oa,vr);let a=this.direction.dot(Ua),o;if(a>0){if(n)return null;o=1}else if(a<0)o=-1,a=-a;else return null;qi.subVectors(this.origin,t);const l=o*this.direction.dot(vr.crossVectors(qi,vr));if(l<0)return null;const A=o*this.direction.dot(Oa.cross(qi));if(A<0||l+A>a)return null;const h=-o*qi.dot(Ua);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class mu extends Fa{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ji(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 Hn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const ol=new si,pn=new pu,xr=new al,Al=new V,Er=new V,Sr=new V,Mr=new V,za=new V,yr=new V,ll=new V,br=new V;class hl extends Qe{constructor(t=new qn,e=new mu){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const i=t[e[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let n=0,s=i.length;n<s;n++){const a=i[n].name||String(n);this.morphTargetInfluences.push(0),this.morphTargetDictionary[a]=n}}}}getVertexPosition(t,e){const i=this.geometry,n=i.attributes.position,s=i.morphAttributes.position,a=i.morphTargetsRelative;e.fromBufferAttribute(n,t);const o=this.morphTargetInfluences;if(s&&o){yr.set(0,0,0);for(let l=0,A=s.length;l<A;l++){const h=o[l],c=s[l];h!==0&&(za.fromBufferAttribute(c,t),a?yr.addScaledVector(za,h):yr.addScaledVector(za.sub(e),h))}e.add(yr)}return e}raycast(t,e){const i=this.geometry,n=this.material,s=this.matrixWorld;n!==void 0&&(i.boundingSphere===null&&i.computeBoundingSphere(),xr.copy(i.boundingSphere),xr.applyMatrix4(s),pn.copy(t.ray).recast(t.near),!(xr.containsPoint(pn.origin)===!1&&(pn.intersectSphere(xr,Al)===null||pn.origin.distanceToSquared(Al)>(t.far-t.near)**2))&&(ol.copy(s).invert(),pn.copy(t.ray).applyMatrix4(ol),!(i.boundingBox!==null&&pn.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(t,e,pn)))}_computeIntersections(t,e,i){let n;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,A=s.attributes.uv,h=s.attributes.uv1,c=s.attributes.normal,u=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(o.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=o.getX(v),R=o.getX(v+1),P=o.getX(v+2);n=Tr(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(o.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=o.getX(g),S=o.getX(g+1),v=o.getX(g+2);n=Tr(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}else if(l!==void 0)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(l.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=v,R=v+1,P=v+2;n=Tr(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(l.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=g,S=g+1,v=g+2;n=Tr(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}}}function Iu(r,t,e,i,n,s,a,o){let l;if(t.side===1?l=i.intersectTriangle(a,s,n,!0,o):l=i.intersectTriangle(n,s,a,t.side===0,o),l===null)return null;br.copy(o),br.applyMatrix4(r.matrixWorld);const A=e.ray.origin.distanceTo(br);return A<e.near||A>e.far?null:{distance:A,point:br.clone(),object:r}}function Tr(r,t,e,i,n,s,a,o,l,A){r.getVertexPosition(o,Er),r.getVertexPosition(l,Sr),r.getVertexPosition(A,Mr);const h=Iu(r,t,e,i,Er,Sr,Mr,ll);if(h){const c=new V;oi.getBarycoord(ll,Er,Sr,Mr,c),n&&(h.uv=oi.getInterpolatedAttribute(n,o,l,A,c,new He)),s&&(h.uv1=oi.getInterpolatedAttribute(s,o,l,A,c,new He)),a&&(h.normal=oi.getInterpolatedAttribute(a,o,l,A,c,new V),h.normal.dot(i.direction)>0&&h.normal.multiplyScalar(-1));const u={a:o,b:l,c:A,normal:new V,materialIndex:0};oi.getNormal(Er,Sr,Mr,u.normal),h.face=u,h.barycoord=c}return h}class Cu extends mi{constructor(t=null,e=1,i=1,n,s,a,o,l,A=1003,h=1003,c,u){super(null,a,o,l,A,h,n,s,c,u),this.isDataTexture=!0,this.image={data:t,width:e,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class mn extends qn{constructor(t=1,e=1,i=1,n=32,s=1,a=!1,o=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:t,radiusBottom:e,height:i,radialSegments:n,heightSegments:s,openEnded:a,thetaStart:o,thetaLength:l};const A=this;n=Math.floor(n),s=Math.floor(s);const h=[],c=[],u=[],d=[];let p=0;const m=[],g=i/2;let f=0;y(),a===!1&&(t>0&&S(!0),e>0&&S(!1)),this.setIndex(h),this.setAttribute("position",new gn(c,3)),this.setAttribute("normal",new gn(u,3)),this.setAttribute("uv",new gn(d,2));function y(){const v=new V,w=new V;let T=0;const R=(e-t)/i;for(let P=0;P<=s;P++){const E=[],x=P/s,b=x*(e-t)+t;for(let z=0;z<=n;z++){const B=z/n,U=B*l+o,W=Math.sin(U),Y=Math.cos(U);w.x=b*W,w.y=-x*i+g,w.z=b*Y,c.push(w.x,w.y,w.z),v.set(W,R,Y).normalize(),u.push(v.x,v.y,v.z),d.push(B,1-x),E.push(p++)}m.push(E)}for(let P=0;P<n;P++)for(let E=0;E<s;E++){const x=m[E][P],b=m[E+1][P],z=m[E+1][P+1],B=m[E][P+1];(t>0||E!==0)&&(h.push(x,b,B),T+=3),(e>0||E!==s-1)&&(h.push(b,z,B),T+=3)}A.addGroup(f,T,0),f+=T}function S(v){const w=p,T=new He,R=new V;let P=0;const E=v===!0?t:e,x=v===!0?1:-1;for(let z=1;z<=n;z++)c.push(0,g*x,0),u.push(0,x,0),d.push(.5,.5),p++;const b=p;for(let z=0;z<=n;z++){const B=z/n*l+o,U=Math.cos(B),W=Math.sin(B);R.x=E*W,R.y=g*x,R.z=E*U,c.push(R.x,R.y,R.z),u.push(0,x,0),T.x=U*.5+.5,T.y=W*.5*x+.5,d.push(T.x,T.y),p++}for(let z=0;z<n;z++){const B=w+z,U=b+z;v===!0?h.push(U,U+1,B):h.push(U+1,U,B),P+=3}A.addGroup(f,P,v===!0?1:2),f+=P}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new mn(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}function vu(r){const t={};for(const e in r){t[e]={};for(const i in r[e]){const n=r[e][i];n&&(n.isColor||n.isMatrix3||n.isMatrix4||n.isVector2||n.isVector3||n.isVector4||n.isTexture||n.isQuaternion)?n.isRenderTargetTexture?(Me("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[e][i]=null):t[e][i]=n.clone():Array.isArray(n)?t[e][i]=n.slice():t[e][i]=n}}return t}function xu(r){const t=[];for(let e=0;e<r.length;e++)t.push(r[e].clone());return t}var Eu=`void main() {
55
+ `,Kc="*{box-sizing:border-box}:host{display:block;width:100%}.bar-menu-container{display:flex;align-items:center;justify-content:space-between;height:100%;gap:var(--gap-sm);padding:var(--spacing-1);background:var(--color-bg-primary);border-radius:var(--border-radius-full);border:var(--border-width-2) solid var(--color-border-secondary);box-shadow:var(--shadow-sm);margin:0 auto}.bar-menu-container .nav-prev,.bar-menu-container .nav-next{flex-shrink:0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s ease-in-out,visibility .2s ease-in-out}.bar-menu-container .nav-prev.visible,.bar-menu-container .nav-next.visible{opacity:1;visibility:visible;pointer-events:auto}.bar-menu-container .nav-prev::part(button),.bar-menu-container .nav-next::part(button){background-color:transparent;box-shadow:none}.bar-menu-container .buttons-wrapper{display:grid;grid-template-columns:repeat(var(--bar-menu-visible-count, 3),1fr);grid-auto-rows:max-content;align-items:center;justify-items:center;gap:var(--gap-sm);overflow:hidden;position:relative;width:auto}::slotted(*){display:none;flex-shrink:0;will-change:opacity,transform;contain:layout style paint;opacity:0;transform:scale(.8)}::slotted(.animating){transition:opacity .4s cubic-bezier(.34,1.56,.64,1),transform .4s cubic-bezier(.34,1.56,.64,1)}::slotted(.visible-button){display:inline-flex!important;pointer-events:auto;opacity:1;transform:scale(1)}",XA=new CSSStyleSheet;XA.replaceSync(Kc);class ni extends HTMLElement{static _visibleCountAttribute="visible-count";static _cyclicalNavigationAttribute="cyclical-navigation";_currentIndex=0;_visibleCount=3;_cyclicalNavigation=!1;_MIN_VISIBLE=1;_MAX_VISIBLE=5;_slotElement=null;_navPrevButton=null;_navNextButton=null;_buttonsWrapper=null;_slotChangeListener=null;_keyDownListener=null;constructor(){super(),this.attachShadow({mode:"open"}),this.shadowRoot?.adoptedStyleSheets.push(XA)}static get observedAttributes(){return[ni._visibleCountAttribute,ni._cyclicalNavigationAttribute]}get visibleButtons(){const t=this.getAttribute(ni._visibleCountAttribute);if(t!==null&&t!==Ae){const e=parseInt(t,10);return Math.max(this._MIN_VISIBLE,Math.min(this._MAX_VISIBLE,e))}return this._visibleCount}set visibleButtons(t){const e=Math.max(this._MIN_VISIBLE,Math.min(this._MAX_VISIBLE,t));this.setAttribute(ni._visibleCountAttribute,String(e))}get cyclicalNavigation(){return this.hasAttribute(ni._cyclicalNavigationAttribute)}set cyclicalNavigation(t){t?this.setAttribute(ni._cyclicalNavigationAttribute,Ae):this.removeAttribute(ni._cyclicalNavigationAttribute)}connectedCallback(){this._render(),this._cacheElements(),this._setupSlotListener(),this._setupKeyboardListener(),this._updateButtonVisibility()}disconnectedCallback(){this._removeSlotListener(),this._removeKeyboardListener()}attributeChangedCallback(t,e,i){t===ni._visibleCountAttribute?(this._visibleCount=this.visibleButtons,this._buttonsWrapper!==null&&this._buttonsWrapper.style.setProperty("--bar-menu-visible-count",String(this.visibleButtons)),this._updateButtonVisibility()):t===ni._cyclicalNavigationAttribute&&(this._cyclicalNavigation=this.cyclicalNavigation,this._updateButtonVisibility())}_render(){this.shadowRoot!==null&&(this.shadowRoot.innerHTML=qc)}_cacheElements(){this._slotElement=this.shadowRoot?.querySelector("slot")??null,this._navPrevButton=this.shadowRoot?.querySelector(".nav-prev")??null,this._navNextButton=this.shadowRoot?.querySelector(".nav-next")??null,this._buttonsWrapper=this.shadowRoot?.querySelector(".buttons-wrapper")??null,this._buttonsWrapper!==null&&this._buttonsWrapper.style.setProperty("--bar-menu-visible-count",String(this.visibleButtons)),this._navPrevButton!==null&&(this._navPrevButton.setAttribute("aria-label","Previous"),this._navPrevButton.addEventListener(Wi.CLICK,()=>{this._scrollPrevious()})),this._navNextButton!==null&&(this._navNextButton.setAttribute("aria-label","Next"),this._navNextButton.addEventListener(Wi.CLICK,()=>{this._scrollNext()}))}_setupSlotListener(){this._slotElement!==null&&(this._slotChangeListener=()=>{this._currentIndex=0,this._updateButtonVisibility()},this._slotElement.addEventListener("slotchange",this._slotChangeListener))}_removeSlotListener(){this._slotElement!==null&&this._slotChangeListener!==null&&this._slotElement.removeEventListener("slotchange",this._slotChangeListener)}_setupKeyboardListener(){this._keyDownListener=t=>{t.key==="ArrowLeft"?(t.preventDefault(),this._scrollPrevious()):t.key==="ArrowRight"&&(t.preventDefault(),this._scrollNext())},this.addEventListener(OA.KEY_DOWN,this._keyDownListener)}_removeKeyboardListener(){this._keyDownListener!==null&&this.removeEventListener(OA.KEY_DOWN,this._keyDownListener)}_getSlottedButtons(){return this._slotElement===null?[]:this._slotElement.assignedElements()}_updateButtonVisibility(t){const e=this._getSlottedButtons(),i=e.length,n=this.visibleButtons,s=this._currentIndex,a=Math.min(s+n,i);e.forEach((o,l)=>{const A=l>=s&&l<a,h=o;A||(o.classList.remove("visible-button"),o.classList.remove("animating"),h.style.display="none")}),t!==void 0?(e[0]?.offsetHeight,e.forEach((o,l)=>{if(l>=s&&l<a){const A=o;A.style.display="inline-flex",o.classList.add("animating");const h=l%this.visibleButtons*50;A.style.transitionDelay=`${h}ms`}}),e[0]?.offsetHeight,e.forEach((o,l)=>{l>=s&&l<a&&o.classList.add("visible-button")}),setTimeout(()=>{e.forEach(o=>{o.classList.remove("animating"),o.style.transitionDelay=Ae})},400)):e.forEach((o,l)=>{const A=l>=s&&l<a,h=o;A&&(h.style.display="inline-flex",o.classList.add("visible-button"))}),this._updateNavigationButtons(i,n)}_updateNavigationButtons(t,e){const i=t>e,n=this._currentIndex+e<t,s=this._currentIndex===0,a=!n;this._navPrevButton!==null&&(i?(this._navPrevButton.classList.add("visible"),this._navPrevButton.disabled=!this._cyclicalNavigation&&s):this._navPrevButton.classList.remove("visible")),this._navNextButton!==null&&(i?(this._navNextButton.classList.add("visible"),this._navNextButton.disabled=!this._cyclicalNavigation&&a):this._navNextButton.classList.remove("visible"))}_scrollPrevious(){const t=this._getSlottedButtons().length,e=this.visibleButtons;this._currentIndex>0?(this._currentIndex=Math.max(0,this._currentIndex-e),this._updateButtonVisibility("previous")):this._cyclicalNavigation&&t>e&&(this._currentIndex=Math.max(0,t-e),this._updateButtonVisibility("previous"))}_scrollNext(){const t=this._getSlottedButtons().length,e=this.visibleButtons,i=this._currentIndex+e;i<t?(this._currentIndex=i,this._updateButtonVisibility("next")):this._cyclicalNavigation&&t>e&&(this._currentIndex=0,this._updateButtonVisibility("next"))}scrollToButton(t){const e=this._getSlottedButtons().length,i=this.visibleButtons;t>=0&&t<e&&(this._currentIndex=Math.max(0,Math.min(t,e-i)),this._updateButtonVisibility())}getVisibleButtons(){return this._getSlottedButtons().filter(t=>t.classList.contains("visible-button"))}getAllButtons(){return this._getSlottedButtons()}getCurrentIndex(){return this._currentIndex}}const $c="bar-menu",tu=Object.freeze(Object.defineProperty({__proto__:null,BarMenuComponent:ni,selector:$c},Symbol.toStringTag,{value:"Module"})),ke="srgb",ZA="srgb-linear",JA="linear",Ea="srgb";function eu(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function jA(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}const QA={};function qA(r){const t=r[0];if(typeof t=="string"&&t.startsWith("TSL:")){const e=r[1];e&&e.isStackTrace?r[0]+=" "+e.getLocation():r[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return r}function Me(...r){r=qA(r);const t="THREE."+r.shift();{const e=r[0];e&&e.isStackTrace?console.warn(e.getError(t)):console.warn(t,...r)}}function un(...r){r=qA(r);const t="THREE."+r.shift();{const e=r[0];e&&e.isStackTrace?console.error(e.getError(t)):console.error(t,...r)}}function KA(...r){const t=r.join(" ");t in QA||(QA[t]=!0,Me(...r))}class pr{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[t]===void 0&&(i[t]=[]),i[t].indexOf(e)===-1&&i[t].push(e)}hasEventListener(t,e){const i=this._listeners;return i===void 0?!1:i[t]!==void 0&&i[t].indexOf(e)!==-1}removeEventListener(t,e){const i=this._listeners;if(i===void 0)return;const n=i[t];if(n!==void 0){const s=n.indexOf(e);s!==-1&&n.splice(s,1)}}dispatchEvent(t){const e=this._listeners;if(e===void 0)return;const i=e[t.type];if(i!==void 0){t.target=this;const n=i.slice(0);for(let s=0,a=n.length;s<a;s++)n[s].call(this,t);t.target=null}}}const ye=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];function zs(){const r=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(ye[r&255]+ye[r>>8&255]+ye[r>>16&255]+ye[r>>24&255]+"-"+ye[t&255]+ye[t>>8&255]+"-"+ye[t>>16&15|64]+ye[t>>24&255]+"-"+ye[e&63|128]+ye[e>>8&255]+"-"+ye[e>>16&255]+ye[e>>24&255]+ye[i&255]+ye[i>>8&255]+ye[i>>16&255]+ye[i>>24&255]).toLowerCase()}function Gt(r,t,e){return Math.max(t,Math.min(e,r))}function iu(r,t){return(r%t+t)%t}function Sa(r,t,e){return(1-e)*r+e*t}function Gs(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Be(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}class He{constructor(t=0,e=0){He.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,i=this.y,n=t.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Gt(this.x,t.x,e.x),this.y=Gt(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=Gt(this.x,t,e),this.y=Gt(this.y,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Gt(i,t,e))}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(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(Gt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const i=Math.cos(e),n=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*i-a*n+t.x,this.y=s*n+a*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class ks{constructor(t=0,e=0,i=0,n=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=n}static slerpFlat(t,e,i,n,s,a,o){let l=i[n+0],A=i[n+1],h=i[n+2],c=i[n+3],u=s[a+0],d=s[a+1],p=s[a+2],m=s[a+3];if(c!==m||l!==u||A!==d||h!==p){let g=l*u+A*d+h*p+c*m;g<0&&(u=-u,d=-d,p=-p,m=-m,g=-g);let f=1-o;if(g<.9995){const y=Math.acos(g),S=Math.sin(y);f=Math.sin(f*y)/S,o=Math.sin(o*y)/S,l=l*f+u*o,A=A*f+d*o,h=h*f+p*o,c=c*f+m*o}else{l=l*f+u*o,A=A*f+d*o,h=h*f+p*o,c=c*f+m*o;const y=1/Math.sqrt(l*l+A*A+h*h+c*c);l*=y,A*=y,h*=y,c*=y}}t[e]=l,t[e+1]=A,t[e+2]=h,t[e+3]=c}static multiplyQuaternionsFlat(t,e,i,n,s,a){const o=i[n],l=i[n+1],A=i[n+2],h=i[n+3],c=s[a],u=s[a+1],d=s[a+2],p=s[a+3];return t[e]=o*p+h*c+l*d-A*u,t[e+1]=l*p+h*u+A*c-o*d,t[e+2]=A*p+h*d+o*u-l*c,t[e+3]=h*p-o*c-l*u-A*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,n){return this._x=t,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const i=t._x,n=t._y,s=t._z,a=t._order,o=Math.cos,l=Math.sin,A=o(i/2),h=o(n/2),c=o(s/2),u=l(i/2),d=l(n/2),p=l(s/2);switch(a){case"XYZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"YXZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"ZXY":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"ZYX":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"YZX":this._x=u*h*c+A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c-u*d*p;break;case"XZY":this._x=u*h*c-A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c+u*d*p;break;default:Me("Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const i=e/2,n=Math.sin(i);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,i=e[0],n=e[4],s=e[8],a=e[1],o=e[5],l=e[9],A=e[2],h=e[6],c=e[10],u=i+o+c;if(u>0){const d=.5/Math.sqrt(u+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-A)*d,this._z=(a-n)*d}else if(i>o&&i>c){const d=2*Math.sqrt(1+i-o-c);this._w=(h-l)/d,this._x=.25*d,this._y=(n+a)/d,this._z=(s+A)/d}else if(o>c){const d=2*Math.sqrt(1+o-i-c);this._w=(s-A)/d,this._x=(n+a)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+c-i-o);this._w=(a-n)/d,this._x=(s+A)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i<1e-8?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(Gt(this.dot(t),-1,1)))}rotateTowards(t,e){const i=this.angleTo(t);if(i===0)return this;const n=Math.min(1,e/i);return this.slerp(t,n),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const i=t._x,n=t._y,s=t._z,a=t._w,o=e._x,l=e._y,A=e._z,h=e._w;return this._x=i*h+a*o+n*A-s*l,this._y=n*h+a*l+s*o-i*A,this._z=s*h+a*A+i*l-n*o,this._w=a*h-i*o-n*l-s*A,this._onChangeCallback(),this}slerp(t,e){let i=t._x,n=t._y,s=t._z,a=t._w,o=this.dot(t);o<0&&(i=-i,n=-n,s=-s,a=-a,o=-o);let l=1-e;if(o<.9995){const A=Math.acos(o),h=Math.sin(A);l=Math.sin(l*A)/h,e=Math.sin(e*A)/h,this._x=this._x*l+i*e,this._y=this._y*l+n*e,this._z=this._z*l+s*e,this._w=this._w*l+a*e,this._onChangeCallback()}else this._x=this._x*l+i*e,this._y=this._y*l+n*e,this._z=this._z*l+s*e,this._w=this._w*l+a*e,this.normalize();return this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),n=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(n*Math.sin(t),n*Math.cos(t),s*Math.sin(e),s*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class V{constructor(t=0,e=0,i=0){V.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}set(t,e,i){return i===void 0&&(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion($A.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion($A.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=t.elements,a=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*a,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*a,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*a,this}applyQuaternion(t){const e=this.x,i=this.y,n=this.z,s=t.x,a=t.y,o=t.z,l=t.w,A=2*(a*n-o*i),h=2*(o*e-s*n),c=2*(s*i-a*e);return this.x=e+l*A+a*c-o*h,this.y=i+l*h+o*A-s*c,this.z=n+l*c+s*h-a*A,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Gt(this.x,t.x,e.x),this.y=Gt(this.y,t.y,e.y),this.z=Gt(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=Gt(this.x,t,e),this.y=Gt(this.y,t,e),this.z=Gt(this.z,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Gt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const i=t.x,n=t.y,s=t.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*a-i*l,this.z=i*o-n*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return Ma.copy(this).projectOnVector(t),this.sub(Ma)}reflect(t){return this.sub(Ma.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(Gt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){const n=Math.sin(e)*t;return this.x=n*Math.sin(i),this.y=Math.cos(e)*t,this.z=n*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ma=new V,$A=new ks;class Xi{constructor(t,e,i,n,s,a,o,l,A){Xi.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A)}set(t,e,i,n,s,a,o,l,A){const h=this.elements;return h[0]=t,h[1]=n,h[2]=o,h[3]=e,h[4]=s,h[5]=l,h[6]=i,h[7]=a,h[8]=A,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[3],l=i[6],A=i[1],h=i[4],c=i[7],u=i[2],d=i[5],p=i[8],m=n[0],g=n[3],f=n[6],y=n[1],S=n[4],v=n[7],w=n[2],T=n[5],R=n[8];return s[0]=a*m+o*y+l*w,s[3]=a*g+o*S+l*T,s[6]=a*f+o*v+l*R,s[1]=A*m+h*y+c*w,s[4]=A*g+h*S+c*T,s[7]=A*f+h*v+c*R,s[2]=u*m+d*y+p*w,s[5]=u*g+d*S+p*T,s[8]=u*f+d*v+p*R,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8];return e*a*h-e*o*A-i*s*h+i*o*l+n*s*A-n*a*l}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=h*a-o*A,u=o*l-h*s,d=A*s-a*l,p=e*c+i*u+n*d;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return t[0]=c*m,t[1]=(n*A-h*i)*m,t[2]=(o*i-n*a)*m,t[3]=u*m,t[4]=(h*e-n*l)*m,t[5]=(n*s-o*e)*m,t[6]=d*m,t[7]=(i*l-A*e)*m,t[8]=(a*e-i*s)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,n,s,a,o){const l=Math.cos(s),A=Math.sin(s);return this.set(i*l,i*A,-i*(l*a+A*o)+a+t,-n*A,n*l,-n*(-A*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(ya.makeScale(t,e)),this}rotate(t){return this.premultiply(ya.makeRotation(-t)),this}translate(t,e){return this.premultiply(ya.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<9;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const ya=new Xi,tl=new Xi().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),el=new Xi().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function nu(){const r={enabled:!0,workingColorSpace:ZA,spaces:{},convert:function(n,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===Ea&&(n.r=yi(n.r),n.g=yi(n.g),n.b=yi(n.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(n.applyMatrix3(this.spaces[s].toXYZ),n.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Ea&&(n.r=Gn(n.r),n.g=Gn(n.g),n.b=Gn(n.b))),n},workingToColorSpace:function(n,s){return this.convert(n,this.workingColorSpace,s)},colorSpaceToWorking:function(n,s){return this.convert(n,s,this.workingColorSpace)},getPrimaries:function(n){return this.spaces[n].primaries},getTransfer:function(n){return n===""?JA:this.spaces[n].transfer},getToneMappingMode:function(n){return this.spaces[n].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(n,s=this.workingColorSpace){return n.fromArray(this.spaces[s].luminanceCoefficients)},define:function(n){Object.assign(this.spaces,n)},_getMatrix:function(n,s,a){return n.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(n){return this.spaces[n].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(n=this.workingColorSpace){return this.spaces[n].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(n,s){return KA("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(n,s)},toWorkingColorSpace:function(n,s){return KA("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(n,s)}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],i=[.3127,.329];return r.define({[ZA]:{primaries:t,whitePoint:i,transfer:JA,toXYZ:tl,fromXYZ:el,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:ke},outputColorSpaceConfig:{drawingBufferColorSpace:ke}},[ke]:{primaries:t,whitePoint:i,transfer:Ea,toXYZ:tl,fromXYZ:el,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:ke}}}),r}const si=nu();function yi(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Gn(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let kn;class su{static getDataURL(t,e="image/png"){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let i;if(t instanceof HTMLCanvasElement)i=t;else{kn===void 0&&(kn=jA("canvas")),kn.width=t.width,kn.height=t.height;const n=kn.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),i=kn}return i.toDataURL(e)}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=jA("canvas");e.width=t.width,e.height=t.height;const i=e.getContext("2d");i.drawImage(t,0,0,t.width,t.height);const n=i.getImageData(0,0,t.width,t.height),s=n.data;for(let a=0;a<s.length;a++)s[a]=yi(s[a]/255)*255;return i.putImageData(n,0,0),e}else if(t.data){const e=t.data.slice(0);for(let i=0;i<e.length;i++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[i]=Math.floor(yi(e[i]/255)*255):e[i]=yi(e[i]);return{data:e,width:t.width,height:t.height}}else return Me("ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}}let ru=0;class au{constructor(t=null){this.isSource=!0,Object.defineProperty(this,"id",{value:ru++}),this.uuid=zs(),this.data=t,this.dataReady=!0,this.version=0}getSize(t){const e=this.data;return typeof HTMLVideoElement<"u"&&e instanceof HTMLVideoElement?t.set(e.videoWidth,e.videoHeight,0):typeof VideoFrame<"u"&&e instanceof VideoFrame?t.set(e.displayHeight,e.displayWidth,0):e!==null?t.set(e.width,e.height,e.depth||0):t.set(0,0,0),t}set needsUpdate(t){t===!0&&this.version++}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.images[this.uuid]!==void 0)return t.images[this.uuid];const i={uuid:this.uuid,url:""},n=this.data;if(n!==null){let s;if(Array.isArray(n)){s=[];for(let a=0,o=n.length;a<o;a++)n[a].isDataTexture?s.push(ba(n[a].image)):s.push(ba(n[a]))}else s=ba(n);i.url=s}return e||(t.images[this.uuid]=i),i}}function ba(r){return typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&r instanceof ImageBitmap?su.getDataURL(r):r.data?{data:Array.from(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(Me("Texture: Unable to serialize Texture."),{})}let ou=0;const Ta=new V;class Ii extends pr{constructor(t=Ii.DEFAULT_IMAGE,e=Ii.DEFAULT_MAPPING,i=1001,n=1001,s=1006,a=1008,o=1023,l=1009,A=Ii.DEFAULT_ANISOTROPY,h=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:ou++}),this.uuid=zs(),this.name="",this.source=new au(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=n,this.magFilter=s,this.minFilter=a,this.anisotropy=A,this.format=o,this.internalFormat=null,this.type=l,this.offset=new He(0,0),this.repeat=new He(1,1),this.center=new He(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Xi,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&&t.depth&&t.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Ta).x}get height(){return this.source.getSize(Ta).y}get depth(){return this.source.getSize(Ta).z}get image(){return this.source.data}set image(t=null){this.source.data=t}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.channel=t.channel,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.colorSpace=t.colorSpace,this.renderTarget=t.renderTarget,this.isRenderTargetTexture=t.isRenderTargetTexture,this.isArrayTexture=t.isArrayTexture,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}setValues(t){for(const e in t){const i=t[e];if(i===void 0){Me(`Texture.setValues(): parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){Me(`Texture.setValues(): property '${e}' does not exist.`);continue}n&&i&&n.isVector2&&i.isVector2||n&&i&&n.isVector3&&i.isVector3||n&&i&&n.isMatrix3&&i.isMatrix3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];const i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==300)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case 1e3:t.x=t.x-Math.floor(t.x);break;case 1001:t.x=t.x<0?0:1;break;case 1002:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case 1e3:t.y=t.y-Math.floor(t.y);break;case 1001:t.y=t.y<0?0:1;break;case 1002:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}Ii.DEFAULT_IMAGE=null,Ii.DEFAULT_MAPPING=300,Ii.DEFAULT_ANISOTROPY=1;class Hs{constructor(t=0,e=0,i=0,n=1){Hs.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*i+a[8]*n+a[12]*s,this.y=a[1]*e+a[5]*i+a[9]*n+a[13]*s,this.z=a[2]*e+a[6]*i+a[10]*n+a[14]*s,this.w=a[3]*e+a[7]*i+a[11]*n+a[15]*s,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,n,s;const a=t.elements,o=a[0],l=a[4],A=a[8],h=a[1],c=a[5],u=a[9],d=a[2],p=a[6],m=a[10];if(Math.abs(l-h)<.01&&Math.abs(A-d)<.01&&Math.abs(u-p)<.01){if(Math.abs(l+h)<.1&&Math.abs(A+d)<.1&&Math.abs(u+p)<.1&&Math.abs(o+c+m-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const f=(o+1)/2,y=(c+1)/2,S=(m+1)/2,v=(l+h)/4,w=(A+d)/4,T=(u+p)/4;return f>y&&f>S?f<.01?(i=0,n=.707106781,s=.707106781):(i=Math.sqrt(f),n=v/i,s=w/i):y>S?y<.01?(i=.707106781,n=0,s=.707106781):(n=Math.sqrt(y),i=v/n,s=T/n):S<.01?(i=.707106781,n=.707106781,s=0):(s=Math.sqrt(S),i=w/s,n=T/s),this.set(i,n,s,e),this}let g=Math.sqrt((p-u)*(p-u)+(A-d)*(A-d)+(h-l)*(h-l));return Math.abs(g)<.001&&(g=1),this.x=(p-u)/g,this.y=(A-d)/g,this.z=(h-l)/g,this.w=Math.acos((o+c+m-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Gt(this.x,t.x,e.x),this.y=Gt(this.y,t.y,e.y),this.z=Gt(this.z,t.z,e.z),this.w=Gt(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=Gt(this.x,t,e),this.y=Gt(this.y,t,e),this.z=Gt(this.z,t,e),this.w=Gt(this.w,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Gt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),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 ri{constructor(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){ri.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g)}set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){const f=this.elements;return f[0]=t,f[4]=e,f[8]=i,f[12]=n,f[1]=s,f[5]=a,f[9]=o,f[13]=l,f[2]=A,f[6]=h,f[10]=c,f[14]=u,f[3]=d,f[7]=p,f[11]=m,f[15]=g,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 ri().fromArray(this.elements)}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){const e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return this.determinant()===0?(t.set(1,0,0),e.set(0,1,0),i.set(0,0,1),this):(t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this)}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){if(t.determinant()===0)return this.identity();const e=this.elements,i=t.elements,n=1/Hn.setFromMatrixColumn(t,0).length(),s=1/Hn.setFromMatrixColumn(t,1).length(),a=1/Hn.setFromMatrixColumn(t,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*s,e[5]=i[5]*s,e[6]=i[6]*s,e[7]=0,e[8]=i[8]*a,e[9]=i[9]*a,e[10]=i[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,i=t.x,n=t.y,s=t.z,a=Math.cos(i),o=Math.sin(i),l=Math.cos(n),A=Math.sin(n),h=Math.cos(s),c=Math.sin(s);if(t.order==="XYZ"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=-l*c,e[8]=A,e[1]=d+p*A,e[5]=u-m*A,e[9]=-o*l,e[2]=m-u*A,e[6]=p+d*A,e[10]=a*l}else if(t.order==="YXZ"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u+m*o,e[4]=p*o-d,e[8]=a*A,e[1]=a*c,e[5]=a*h,e[9]=-o,e[2]=d*o-p,e[6]=m+u*o,e[10]=a*l}else if(t.order==="ZXY"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u-m*o,e[4]=-a*c,e[8]=p+d*o,e[1]=d+p*o,e[5]=a*h,e[9]=m-u*o,e[2]=-a*A,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=p*A-d,e[8]=u*A+m,e[1]=l*c,e[5]=m*A+u,e[9]=d*A-p,e[2]=-A,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=m-u*c,e[8]=p*c+d,e[1]=c,e[5]=a*h,e[9]=-o*h,e[2]=-A*h,e[6]=d*c+p,e[10]=u-m*c}else if(t.order==="XZY"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=-c,e[8]=A*h,e[1]=u*c+m,e[5]=a*h,e[9]=d*c-p,e[2]=p*c-d,e[6]=o*h,e[10]=m*c+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Au,t,lu)}lookAt(t,e,i){const n=this.elements;return Ve.subVectors(t,e),Ve.lengthSq()===0&&(Ve.z=1),Ve.normalize(),Zi.crossVectors(i,Ve),Zi.lengthSq()===0&&(Math.abs(i.z)===1?Ve.x+=1e-4:Ve.z+=1e-4,Ve.normalize(),Zi.crossVectors(i,Ve)),Zi.normalize(),mr.crossVectors(Ve,Zi),n[0]=Zi.x,n[4]=mr.x,n[8]=Ve.x,n[1]=Zi.y,n[5]=mr.y,n[9]=Ve.y,n[2]=Zi.z,n[6]=mr.z,n[10]=Ve.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[4],l=i[8],A=i[12],h=i[1],c=i[5],u=i[9],d=i[13],p=i[2],m=i[6],g=i[10],f=i[14],y=i[3],S=i[7],v=i[11],w=i[15],T=n[0],R=n[4],P=n[8],E=n[12],x=n[1],b=n[5],z=n[9],B=n[13],U=n[2],W=n[6],Y=n[10],$=n[14],H=n[3],rt=n[7],lt=n[11],mt=n[15];return s[0]=a*T+o*x+l*U+A*H,s[4]=a*R+o*b+l*W+A*rt,s[8]=a*P+o*z+l*Y+A*lt,s[12]=a*E+o*B+l*$+A*mt,s[1]=h*T+c*x+u*U+d*H,s[5]=h*R+c*b+u*W+d*rt,s[9]=h*P+c*z+u*Y+d*lt,s[13]=h*E+c*B+u*$+d*mt,s[2]=p*T+m*x+g*U+f*H,s[6]=p*R+m*b+g*W+f*rt,s[10]=p*P+m*z+g*Y+f*lt,s[14]=p*E+m*B+g*$+f*mt,s[3]=y*T+S*x+v*U+w*H,s[7]=y*R+S*b+v*W+w*rt,s[11]=y*P+S*z+v*Y+w*lt,s[15]=y*E+S*B+v*$+w*mt,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[4],n=t[8],s=t[12],a=t[1],o=t[5],l=t[9],A=t[13],h=t[2],c=t[6],u=t[10],d=t[14],p=t[3],m=t[7],g=t[11],f=t[15],y=l*d-A*u,S=o*d-A*c,v=o*u-l*c,w=a*d-A*h,T=a*u-l*h,R=a*c-o*h;return e*(m*y-g*S+f*v)-i*(p*y-g*w+f*T)+n*(p*S-m*w+f*R)-s*(p*v-m*T+g*R)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){const n=this.elements;return t.isVector3?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=i),this}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=t[9],u=t[10],d=t[11],p=t[12],m=t[13],g=t[14],f=t[15],y=e*o-i*a,S=e*l-n*a,v=e*A-s*a,w=i*l-n*o,T=i*A-s*o,R=n*A-s*l,P=h*m-c*p,E=h*g-u*p,x=h*f-d*p,b=c*g-u*m,z=c*f-d*m,B=u*f-d*g,U=y*B-S*z+v*b+w*x-T*E+R*P;if(U===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const W=1/U;return t[0]=(o*B-l*z+A*b)*W,t[1]=(n*z-i*B-s*b)*W,t[2]=(m*R-g*T+f*w)*W,t[3]=(u*T-c*R-d*w)*W,t[4]=(l*x-a*B-A*E)*W,t[5]=(e*B-n*x+s*E)*W,t[6]=(g*v-p*R-f*S)*W,t[7]=(h*R-u*v+d*S)*W,t[8]=(a*z-o*x+A*P)*W,t[9]=(i*x-e*z-s*P)*W,t[10]=(p*T-m*v+f*y)*W,t[11]=(c*v-h*T-d*y)*W,t[12]=(o*E-a*b-l*P)*W,t[13]=(e*b-i*E+n*P)*W,t[14]=(m*S-p*w-g*y)*W,t[15]=(h*w-c*S+u*y)*W,this}scale(t){const e=this.elements,i=t.x,n=t.y,s=t.z;return e[0]*=i,e[4]*=n,e[8]*=s,e[1]*=i,e[5]*=n,e[9]*=s,e[2]*=i,e[6]*=n,e[10]*=s,e[3]*=i,e[7]*=n,e[11]*=s,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const i=Math.cos(e),n=Math.sin(e),s=1-i,a=t.x,o=t.y,l=t.z,A=s*a,h=s*o;return this.set(A*a+i,A*o-n*l,A*l+n*o,0,A*o+n*l,h*o+i,h*l-n*a,0,A*l-n*o,h*l+n*a,s*l*l+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,n,s,a){return this.set(1,i,s,0,t,1,a,0,e,n,1,0,0,0,0,1),this}compose(t,e,i){const n=this.elements,s=e._x,a=e._y,o=e._z,l=e._w,A=s+s,h=a+a,c=o+o,u=s*A,d=s*h,p=s*c,m=a*h,g=a*c,f=o*c,y=l*A,S=l*h,v=l*c,w=i.x,T=i.y,R=i.z;return n[0]=(1-(m+f))*w,n[1]=(d+v)*w,n[2]=(p-S)*w,n[3]=0,n[4]=(d-v)*T,n[5]=(1-(u+f))*T,n[6]=(g+y)*T,n[7]=0,n[8]=(p+S)*R,n[9]=(g-y)*R,n[10]=(1-(u+m))*R,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,i){const n=this.elements;t.x=n[12],t.y=n[13],t.z=n[14];const s=this.determinant();if(s===0)return i.set(1,1,1),e.identity(),this;let a=Hn.set(n[0],n[1],n[2]).length();const o=Hn.set(n[4],n[5],n[6]).length(),l=Hn.set(n[8],n[9],n[10]).length();s<0&&(a=-a),ai.copy(this);const A=1/a,h=1/o,c=1/l;return ai.elements[0]*=A,ai.elements[1]*=A,ai.elements[2]*=A,ai.elements[4]*=h,ai.elements[5]*=h,ai.elements[6]*=h,ai.elements[8]*=c,ai.elements[9]*=c,ai.elements[10]*=c,e.setFromRotationMatrix(ai),i.x=a,i.y=o,i.z=l,this}makePerspective(t,e,i,n,s,a,o=2e3,l=!1){const A=this.elements,h=2*s/(e-t),c=2*s/(i-n),u=(e+t)/(e-t),d=(i+n)/(i-n);let p,m;if(l)p=s/(a-s),m=a*s/(a-s);else if(o===2e3)p=-(a+s)/(a-s),m=-2*a*s/(a-s);else if(o===2001)p=-a/(a-s),m=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=u,A[12]=0,A[1]=0,A[5]=c,A[9]=d,A[13]=0,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=-1,A[15]=0,this}makeOrthographic(t,e,i,n,s,a,o=2e3,l=!1){const A=this.elements,h=2/(e-t),c=2/(i-n),u=-(e+t)/(e-t),d=-(i+n)/(i-n);let p,m;if(l)p=1/(a-s),m=a/(a-s);else if(o===2e3)p=-2/(a-s),m=-(a+s)/(a-s);else if(o===2001)p=-1/(a-s),m=-s/(a-s);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=0,A[12]=u,A[1]=0,A[5]=c,A[9]=0,A[13]=d,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=0,A[15]=1,this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<16;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}}const Hn=new V,ai=new ri,Au=new V(0,0,0),lu=new V(1,1,1),Zi=new V,mr=new V,Ve=new V,il=new ri,nl=new ks;class Vn{constructor(t=0,e=0,i=0,n=Vn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,n=this._order){return this._x=t,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){const n=t.elements,s=n[0],a=n[4],o=n[8],l=n[1],A=n[5],h=n[9],c=n[2],u=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(Gt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,A),this._z=0);break;case"YXZ":this._x=Math.asin(-Gt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,A)):(this._y=Math.atan2(-c,s),this._z=0);break;case"ZXY":this._x=Math.asin(Gt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,A)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-Gt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,A));break;case"YZX":this._z=Math.asin(Gt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,A),this._y=Math.atan2(-c,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-Gt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,A),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:Me("Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,i===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return il.makeRotationFromQuaternion(t),this.setFromRotationMatrix(il,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return nl.setFromEuler(this),this.setFromQuaternion(nl,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Vn.DEFAULT_ORDER="XYZ";class hu{constructor(){this.mask=1}set(t){this.mask=(1<<t|0)>>>0}enable(t){this.mask|=1<<t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t|0}disable(t){this.mask&=~(1<<t|0)}disableAll(){this.mask=0}test(t){return(this.mask&t.mask)!==0}isEnabled(t){return(this.mask&(1<<t|0))!==0}}let cu=0;const sl=new V,Wn=new ks,bi=new ri,Ir=new V,Vs=new V,uu=new V,du=new ks,rl=new V(1,0,0),al=new V(0,1,0),ol=new V(0,0,1),Al={type:"added"},fu={type:"removed"},Yn={type:"childadded",child:null},wa={type:"childremoved",child:null};class Qe extends pr{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:cu++}),this.uuid=zs(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Qe.DEFAULT_UP.clone();const t=new V,e=new Vn,i=new ks,n=new V(1,1,1);function s(){i.setFromEuler(e,!1)}function a(){e.setFromQuaternion(i,void 0,!1)}e._onChange(s),i._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new ri},normalMatrix:{value:new Xi}}),this.matrix=new ri,this.matrixWorld=new ri,this.matrixAutoUpdate=Qe.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=Qe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new hu,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.static=!1,this.userData={},this.pivot=null}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return Wn.setFromAxisAngle(t,e),this.quaternion.multiply(Wn),this}rotateOnWorldAxis(t,e){return Wn.setFromAxisAngle(t,e),this.quaternion.premultiply(Wn),this}rotateX(t){return this.rotateOnAxis(rl,t)}rotateY(t){return this.rotateOnAxis(al,t)}rotateZ(t){return this.rotateOnAxis(ol,t)}translateOnAxis(t,e){return sl.copy(t).applyQuaternion(this.quaternion),this.position.add(sl.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(rl,t)}translateY(t){return this.translateOnAxis(al,t)}translateZ(t){return this.translateOnAxis(ol,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(bi.copy(this.matrixWorld).invert())}lookAt(t,e,i){t.isVector3?Ir.copy(t):Ir.set(t,e,i);const n=this.parent;this.updateWorldMatrix(!0,!1),Vs.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?bi.lookAt(Vs,Ir,this.up):bi.lookAt(Ir,Vs,this.up),this.quaternion.setFromRotationMatrix(bi),n&&(bi.extractRotation(n.matrixWorld),Wn.setFromRotationMatrix(bi),this.quaternion.premultiply(Wn.invert()))}add(t){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return t===this?(un("Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.removeFromParent(),t.parent=this,this.children.push(t),t.dispatchEvent(Al),Yn.child=t,this.dispatchEvent(Yn),Yn.child=null):un("Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.remove(arguments[i]);return this}const e=this.children.indexOf(t);return e!==-1&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(fu),wa.child=t,this.dispatchEvent(wa),wa.child=null),this}removeFromParent(){const t=this.parent;return t!==null&&t.remove(this),this}clear(){return this.remove(...this.children)}attach(t){return this.updateWorldMatrix(!0,!1),bi.copy(this.matrixWorld).invert(),t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),bi.multiply(t.parent.matrixWorld)),t.applyMatrix4(bi),t.removeFromParent(),t.parent=this,this.children.push(t),t.updateWorldMatrix(!1,!0),t.dispatchEvent(Al),Yn.child=t,this.dispatchEvent(Yn),Yn.child=null,this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let i=0,n=this.children.length;i<n;i++){const s=this.children[i].getObjectByProperty(t,e);if(s!==void 0)return s}}getObjectsByProperty(t,e,i=[]){this[t]===e&&i.push(this);const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].getObjectsByProperty(t,e,i);return i}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Vs,t,uu),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Vs,du,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverseVisible(t)}traverseAncestors(t){const e=this.parent;e!==null&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale);const t=this.pivot;if(t!==null){const e=t.x,i=t.y,n=t.z,s=this.matrix.elements;s[12]+=e-s[0]*e-s[4]*i-s[8]*n,s[13]+=i-s[1]*e-s[5]*i-s[9]*n,s[14]+=n-s[2]*e-s[6]*i-s[10]*n}this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].updateMatrixWorld(t)}updateWorldMatrix(t,e){const i=this.parent;if(t===!0&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),e===!0){const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].updateWorldMatrix(!1,!0)}}toJSON(t){const e=t===void 0||typeof t=="string",i={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const n={};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),this.static!==!1&&(n.static=this.static),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),this.pivot!==null&&(n.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(n.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(n.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(n.morphTargetInfluences=this.morphTargetInfluences.slice()),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),n.instanceInfo=this._instanceInfo.map(o=>({...o})),n.availableInstanceIds=this._availableInstanceIds.slice(),n.availableGeometryIds=this._availableGeometryIds.slice(),n.nextIndexStart=this._nextIndexStart,n.nextVertexStart=this._nextVertexStart,n.geometryCount=this._geometryCount,n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.matricesTexture=this._matricesTexture.toJSON(t),n.indirectTexture=this._indirectTexture.toJSON(t),this._colorsTexture!==null&&(n.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&&(n.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(n.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(n.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=s(t.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 A=0,h=l.length;A<h;A++){const c=l[A];s(t.shapes,c)}else s(t.shapes,l)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(t.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,A=this.material.length;l<A;l++)o.push(s(t.materials,this.material[l]));n.material=o}else n.material=s(t.materials,this.material);if(this.children.length>0){n.children=[];for(let o=0;o<this.children.length;o++)n.children.push(this.children[o].toJSON(t).object)}if(this.animations.length>0){n.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];n.animations.push(s(t.animations,l))}}if(e){const o=a(t.geometries),l=a(t.materials),A=a(t.textures),h=a(t.images),c=a(t.shapes),u=a(t.skeletons),d=a(t.animations),p=a(t.nodes);o.length>0&&(i.geometries=o),l.length>0&&(i.materials=l),A.length>0&&(i.textures=A),h.length>0&&(i.images=h),c.length>0&&(i.shapes=c),u.length>0&&(i.skeletons=u),d.length>0&&(i.animations=d),p.length>0&&(i.nodes=p)}return i.object=n,i;function a(o){const l=[];for(const A in o){const h=o[A];delete h.metadata,l.push(h)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),t.pivot!==null&&(this.pivot=t.pivot.clone()),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.static=t.static,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let i=0;i<t.children.length;i++){const n=t.children[i];this.add(n.clone())}return this}}Qe.DEFAULT_UP=new V(0,1,0),Qe.DEFAULT_MATRIX_AUTO_UPDATE=!0,Qe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const ll={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},Ji={h:0,s:0,l:0},Cr={h:0,s:0,l:0};function Ra(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}class ji{constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}set(t,e,i){if(e===void 0&&i===void 0){const n=t;n&&n.isColor?this.copy(n):typeof n=="number"?this.setHex(n):typeof n=="string"&&this.setStyle(n)}else this.setRGB(t,e,i);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=ke){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,si.colorSpaceToWorking(this,e),this}setRGB(t,e,i,n=si.workingColorSpace){return this.r=t,this.g=e,this.b=i,si.colorSpaceToWorking(this,n),this}setHSL(t,e,i,n=si.workingColorSpace){if(t=iu(t,1),e=Gt(e,0,1),i=Gt(i,0,1),e===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+e):i+e-i*e,a=2*i-s;this.r=Ra(a,s,t+1/3),this.g=Ra(a,s,t),this.b=Ra(a,s,t-1/3)}return si.colorSpaceToWorking(this,n),this}setStyle(t,e=ke){function i(s){s!==void 0&&parseFloat(s)<1&&Me("Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^(\w+)\(([^\)]*)\)/.exec(t)){let s;const a=n[1],o=n[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 i(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,e);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(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,e);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 i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,e);break;default:Me("Color: Unknown color model "+t)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(t)){const s=n[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,e);if(a===6)return this.setHex(parseInt(s,16),e);Me("Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=ke){const i=ll[t.toLowerCase()];return i!==void 0?this.setHex(i,e):Me("Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=yi(t.r),this.g=yi(t.g),this.b=yi(t.b),this}copyLinearToSRGB(t){return this.r=Gn(t.r),this.g=Gn(t.g),this.b=Gn(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=ke){return si.workingToColorSpace(be.copy(this),t),Math.round(Gt(be.r*255,0,255))*65536+Math.round(Gt(be.g*255,0,255))*256+Math.round(Gt(be.b*255,0,255))}getHexString(t=ke){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=si.workingColorSpace){si.workingToColorSpace(be.copy(this),e);const i=be.r,n=be.g,s=be.b,a=Math.max(i,n,s),o=Math.min(i,n,s);let l,A;const h=(o+a)/2;if(o===a)l=0,A=0;else{const c=a-o;switch(A=h<=.5?c/(a+o):c/(2-a-o),a){case i:l=(n-s)/c+(n<s?6:0);break;case n:l=(s-i)/c+2;break;case s:l=(i-n)/c+4;break}l/=6}return t.h=l,t.s=A,t.l=h,t}getRGB(t,e=si.workingColorSpace){return si.workingToColorSpace(be.copy(this),e),t.r=be.r,t.g=be.g,t.b=be.b,t}getStyle(t=ke){si.workingToColorSpace(be.copy(this),t);const e=be.r,i=be.g,n=be.b;return t!==ke?`color(${t} ${e.toFixed(3)} ${i.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(i*255)},${Math.round(n*255)})`}offsetHSL(t,e,i){return this.getHSL(Ji),this.setHSL(Ji.h+t,Ji.s+e,Ji.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(Ji),t.getHSL(Cr);const i=Sa(Ji.h,Cr.h,e),n=Sa(Ji.s,Cr.s,e),s=Sa(Ji.l,Cr.l,e);return this.setHSL(i,n,s),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,i=this.g,n=this.b,s=t.elements;return this.r=s[0]*e+s[3]*i+s[6]*n,this.g=s[1]*e+s[4]*i+s[7]*n,this.b=s[2]*e+s[5]*i+s[8]*n,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const be=new ji;ji.NAMES=ll;const oi=new V,Ti=new V,_a=new V,wi=new V,Xn=new V,Zn=new V,hl=new V,Pa=new V,La=new V,Da=new V,Na=new Hs,Fa=new Hs,Ba=new Hs;class Ai{constructor(t=new V,e=new V,i=new V){this.a=t,this.b=e,this.c=i}static getNormal(t,e,i,n){n.subVectors(i,e),oi.subVectors(t,e),n.cross(oi);const s=n.lengthSq();return s>0?n.multiplyScalar(1/Math.sqrt(s)):n.set(0,0,0)}static getBarycoord(t,e,i,n,s){oi.subVectors(n,e),Ti.subVectors(i,e),_a.subVectors(t,e);const a=oi.dot(oi),o=oi.dot(Ti),l=oi.dot(_a),A=Ti.dot(Ti),h=Ti.dot(_a),c=a*A-o*o;if(c===0)return s.set(0,0,0),null;const u=1/c,d=(A*l-o*h)*u,p=(a*h-o*l)*u;return s.set(1-d-p,p,d)}static containsPoint(t,e,i,n){return this.getBarycoord(t,e,i,n,wi)===null?!1:wi.x>=0&&wi.y>=0&&wi.x+wi.y<=1}static getInterpolation(t,e,i,n,s,a,o,l){return this.getBarycoord(t,e,i,n,wi)===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,wi.x),l.addScaledVector(a,wi.y),l.addScaledVector(o,wi.z),l)}static getInterpolatedAttribute(t,e,i,n,s,a){return Na.setScalar(0),Fa.setScalar(0),Ba.setScalar(0),Na.fromBufferAttribute(t,e),Fa.fromBufferAttribute(t,i),Ba.fromBufferAttribute(t,n),a.setScalar(0),a.addScaledVector(Na,s.x),a.addScaledVector(Fa,s.y),a.addScaledVector(Ba,s.z),a}static isFrontFacing(t,e,i,n){return oi.subVectors(i,e),Ti.subVectors(t,e),oi.cross(Ti).dot(n)<0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,n){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[n]),this}setFromAttributeAndIndices(t,e,i,n){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,n),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return oi.subVectors(this.c,this.b),Ti.subVectors(this.a,this.b),oi.cross(Ti).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return Ai.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return Ai.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,n,s){return Ai.getInterpolation(t,this.a,this.b,this.c,e,i,n,s)}containsPoint(t){return Ai.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return Ai.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const i=this.a,n=this.b,s=this.c;let a,o;Xn.subVectors(n,i),Zn.subVectors(s,i),Pa.subVectors(t,i);const l=Xn.dot(Pa),A=Zn.dot(Pa);if(l<=0&&A<=0)return e.copy(i);La.subVectors(t,n);const h=Xn.dot(La),c=Zn.dot(La);if(h>=0&&c<=h)return e.copy(n);const u=l*c-h*A;if(u<=0&&l>=0&&h<=0)return a=l/(l-h),e.copy(i).addScaledVector(Xn,a);Da.subVectors(t,s);const d=Xn.dot(Da),p=Zn.dot(Da);if(p>=0&&d<=p)return e.copy(s);const m=d*A-l*p;if(m<=0&&A>=0&&p<=0)return o=A/(A-p),e.copy(i).addScaledVector(Zn,o);const g=h*p-d*c;if(g<=0&&c-h>=0&&d-p>=0)return hl.subVectors(s,n),o=(c-h)/(c-h+(d-p)),e.copy(n).addScaledVector(hl,o);const f=1/(g+m+u);return a=m*f,o=u*f,e.copy(i).addScaledVector(Xn,a).addScaledVector(Zn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}class Ws{constructor(t=new V(1/0,1/0,1/0),e=new V(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e+=3)this.expandByPoint(li.fromArray(t,e));return this}setFromBufferAttribute(t){this.makeEmpty();for(let e=0,i=t.count;e<i;e++)this.expandByPoint(li.fromBufferAttribute(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const i=li.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);const i=t.geometry;if(i!==void 0){const s=i.getAttribute("position");if(e===!0&&s!==void 0&&t.isInstancedMesh!==!0)for(let a=0,o=s.count;a<o;a++)t.isMesh===!0?t.getVertexPosition(a,li):li.fromBufferAttribute(s,a),li.applyMatrix4(t.matrixWorld),this.expandByPoint(li);else t.boundingBox!==void 0?(t.boundingBox===null&&t.computeBoundingBox(),vr.copy(t.boundingBox)):(i.boundingBox===null&&i.computeBoundingBox(),vr.copy(i.boundingBox)),vr.applyMatrix4(t.matrixWorld),this.union(vr)}const n=t.children;for(let s=0,a=n.length;s<a;s++)this.expandByObject(n[s],e);return this}containsPoint(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,li),li.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Ys),xr.subVectors(this.max,Ys),Jn.subVectors(t.a,Ys),jn.subVectors(t.b,Ys),Qn.subVectors(t.c,Ys),Qi.subVectors(jn,Jn),qi.subVectors(Qn,jn),dn.subVectors(Jn,Qn);let e=[0,-Qi.z,Qi.y,0,-qi.z,qi.y,0,-dn.z,dn.y,Qi.z,0,-Qi.x,qi.z,0,-qi.x,dn.z,0,-dn.x,-Qi.y,Qi.x,0,-qi.y,qi.x,0,-dn.y,dn.x,0];return!Oa(e,Jn,jn,Qn,xr)||(e=[1,0,0,0,1,0,0,0,1],!Oa(e,Jn,jn,Qn,xr))?!1:(Er.crossVectors(Qi,qi),e=[Er.x,Er.y,Er.z],Oa(e,Jn,jn,Qn,xr))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,li).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(li).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ri[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ri[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ri[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ri[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ri[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ri[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ri[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ri[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ri),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}}const Ri=[new V,new V,new V,new V,new V,new V,new V,new V],li=new V,vr=new Ws,Jn=new V,jn=new V,Qn=new V,Qi=new V,qi=new V,dn=new V,Ys=new V,xr=new V,Er=new V,fn=new V;function Oa(r,t,e,i,n){for(let s=0,a=r.length-3;s<=a;s+=3){fn.fromArray(r,s);const o=n.x*Math.abs(fn.x)+n.y*Math.abs(fn.y)+n.z*Math.abs(fn.z),l=t.dot(fn),A=e.dot(fn),h=i.dot(fn);if(Math.max(-Math.max(l,A,h),Math.min(l,A,h))>o)return!1}return!0}const ge=new V,Sr=new He;let gu=0;class gn{constructor(t,e,i=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:gu++}),this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=i,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let n=0,s=this.itemSize;n<s;n++)this.array[t+n]=e.array[i+n];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,i=this.count;e<i;e++)Sr.fromBufferAttribute(this,e),Sr.applyMatrix3(t),this.setXY(e,Sr.x,Sr.y);else if(this.itemSize===3)for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.applyMatrix3(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}applyMatrix4(t){for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.applyMatrix4(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.applyNormalMatrix(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}transformDirection(t){for(let e=0,i=this.count;e<i;e++)ge.fromBufferAttribute(this,e),ge.transformDirection(t),this.setXYZ(e,ge.x,ge.y,ge.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=Gs(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=Be(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=Gs(e,this.array)),e}setX(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=Gs(e,this.array)),e}setY(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=Gs(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=Gs(e,this.array)),e}setW(t,e){return this.normalized&&(e=Be(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=Be(e,this.array),i=Be(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,n){return t*=this.itemSize,this.normalized&&(e=Be(e,this.array),i=Be(i,this.array),n=Be(n,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this}setXYZW(t,e,i,n,s){return t*=this.itemSize,this.normalized&&(e=Be(e,this.array),i=Be(i,this.array),n=Be(n,this.array),s=Be(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(t.name=this.name),this.usage!==35044&&(t.usage=this.usage),t}}class pu extends gn{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class mu extends gn{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class pn extends gn{constructor(t,e,i){super(new Float32Array(t),e,i)}}const Iu=new Ws,Xs=new V,Ua=new V;class cl{constructor(t=new V,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const i=this.center;e!==void 0?i.copy(e):Iu.setFromPoints(t).getCenter(i);let n=0;for(let s=0,a=t.length;s<a;s++)n=Math.max(n,i.distanceToSquared(t[s]));return this.radius=Math.sqrt(n),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){const e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){const i=this.center.distanceToSquared(t);return e.copy(t),i>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Xs.subVectors(t,this.center);const e=Xs.lengthSq();if(e>this.radius*this.radius){const i=Math.sqrt(e),n=(i-this.radius)*.5;this.center.addScaledVector(Xs,n/i),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(Ua.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Xs.copy(t.center).add(Ua)),this.expandByPoint(Xs.copy(t.center).sub(Ua))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}}let Cu=0;const qe=new ri,za=new Qe,qn=new V,We=new Ws,Zs=new Ws,ve=new V;class Kn extends pr{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:Cu++}),this.uuid=zs(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(eu(t)?mu:pu)(t,1):this.index=t,this}setIndirect(t,e=0){return this.indirect=t,this.indirectOffset=e,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(i!==void 0){const s=new Xi().getNormalMatrix(t);i.applyNormalMatrix(s),i.needsUpdate=!0}const n=this.attributes.tangent;return n!==void 0&&(n.transformDirection(t),n.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(t){return qe.makeRotationFromQuaternion(t),this.applyMatrix4(qe),this}rotateX(t){return qe.makeRotationX(t),this.applyMatrix4(qe),this}rotateY(t){return qe.makeRotationY(t),this.applyMatrix4(qe),this}rotateZ(t){return qe.makeRotationZ(t),this.applyMatrix4(qe),this}translate(t,e,i){return qe.makeTranslation(t,e,i),this.applyMatrix4(qe),this}scale(t,e,i){return qe.makeScale(t,e,i),this.applyMatrix4(qe),this}lookAt(t){return za.lookAt(t),za.updateMatrix(),this.applyMatrix4(za.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(qn).negate(),this.translate(qn.x,qn.y,qn.z),this}setFromPoints(t){const e=this.getAttribute("position");if(e===void 0){const i=[];for(let n=0,s=t.length;n<s;n++){const a=t[n];i.push(a.x,a.y,a.z||0)}this.setAttribute("position",new pn(i,3))}else{const i=Math.min(t.length,e.count);for(let n=0;n<i;n++){const s=t[n];e.setXYZ(n,s.x,s.y,s.z||0)}t.length>e.count&&Me("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Ws);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){un("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new V(-1/0,-1/0,-1/0),new V(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let i=0,n=e.length;i<n;i++){const s=e[i];We.setFromBufferAttribute(s),this.morphTargetsRelative?(ve.addVectors(this.boundingBox.min,We.min),this.boundingBox.expandByPoint(ve),ve.addVectors(this.boundingBox.max,We.max),this.boundingBox.expandByPoint(ve)):(this.boundingBox.expandByPoint(We.min),this.boundingBox.expandByPoint(We.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&un('BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new cl);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){un("BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new V,1/0);return}if(t){const i=this.boundingSphere.center;if(We.setFromBufferAttribute(t),e)for(let s=0,a=e.length;s<a;s++){const o=e[s];Zs.setFromBufferAttribute(o),this.morphTargetsRelative?(ve.addVectors(We.min,Zs.min),We.expandByPoint(ve),ve.addVectors(We.max,Zs.max),We.expandByPoint(ve)):(We.expandByPoint(Zs.min),We.expandByPoint(Zs.max))}We.getCenter(i);let n=0;for(let s=0,a=t.count;s<a;s++)ve.fromBufferAttribute(t,s),n=Math.max(n,i.distanceToSquared(ve));if(e)for(let s=0,a=e.length;s<a;s++){const o=e[s],l=this.morphTargetsRelative;for(let A=0,h=o.count;A<h;A++)ve.fromBufferAttribute(o,A),l&&(qn.fromBufferAttribute(t,A),ve.add(qn)),n=Math.max(n,i.distanceToSquared(ve))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&un('BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){un("BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const i=e.position,n=e.normal,s=e.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new gn(new Float32Array(4*i.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let P=0;P<i.count;P++)o[P]=new V,l[P]=new V;const A=new V,h=new V,c=new V,u=new He,d=new He,p=new He,m=new V,g=new V;function f(P,E,x){A.fromBufferAttribute(i,P),h.fromBufferAttribute(i,E),c.fromBufferAttribute(i,x),u.fromBufferAttribute(s,P),d.fromBufferAttribute(s,E),p.fromBufferAttribute(s,x),h.sub(A),c.sub(A),d.sub(u),p.sub(u);const b=1/(d.x*p.y-p.x*d.y);isFinite(b)&&(m.copy(h).multiplyScalar(p.y).addScaledVector(c,-d.y).multiplyScalar(b),g.copy(c).multiplyScalar(d.x).addScaledVector(h,-p.x).multiplyScalar(b),o[P].add(m),o[E].add(m),o[x].add(m),l[P].add(g),l[E].add(g),l[x].add(g))}let y=this.groups;y.length===0&&(y=[{start:0,count:t.count}]);for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)f(t.getX(B+0),t.getX(B+1),t.getX(B+2))}const S=new V,v=new V,w=new V,T=new V;function R(P){w.fromBufferAttribute(n,P),T.copy(w);const E=o[P];S.copy(E),S.sub(w.multiplyScalar(w.dot(E))).normalize(),v.crossVectors(T,E);const x=v.dot(l[P])<0?-1:1;a.setXYZW(P,S.x,S.y,S.z,x)}for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)R(t.getX(B+0)),R(t.getX(B+1)),R(t.getX(B+2))}}computeVertexNormals(){const t=this.index,e=this.getAttribute("position");if(e!==void 0){let i=this.getAttribute("normal");if(i===void 0)i=new gn(new Float32Array(e.count*3),3),this.setAttribute("normal",i);else for(let u=0,d=i.count;u<d;u++)i.setXYZ(u,0,0,0);const n=new V,s=new V,a=new V,o=new V,l=new V,A=new V,h=new V,c=new V;if(t)for(let u=0,d=t.count;u<d;u+=3){const p=t.getX(u+0),m=t.getX(u+1),g=t.getX(u+2);n.fromBufferAttribute(e,p),s.fromBufferAttribute(e,m),a.fromBufferAttribute(e,g),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),o.fromBufferAttribute(i,p),l.fromBufferAttribute(i,m),A.fromBufferAttribute(i,g),o.add(h),l.add(h),A.add(h),i.setXYZ(p,o.x,o.y,o.z),i.setXYZ(m,l.x,l.y,l.z),i.setXYZ(g,A.x,A.y,A.z)}else for(let u=0,d=e.count;u<d;u+=3)n.fromBufferAttribute(e,u+0),s.fromBufferAttribute(e,u+1),a.fromBufferAttribute(e,u+2),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),i.setXYZ(u+0,h.x,h.y,h.z),i.setXYZ(u+1,h.x,h.y,h.z),i.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),i.needsUpdate=!0}}normalizeNormals(){const t=this.attributes.normal;for(let e=0,i=t.count;e<i;e++)ve.fromBufferAttribute(t,e),ve.normalize(),t.setXYZ(e,ve.x,ve.y,ve.z)}toNonIndexed(){function t(o,l){const A=o.array,h=o.itemSize,c=o.normalized,u=new A.constructor(l.length*h);let d=0,p=0;for(let m=0,g=l.length;m<g;m++){o.isInterleavedBufferAttribute?d=l[m]*o.data.stride+o.offset:d=l[m]*h;for(let f=0;f<h;f++)u[p++]=A[d++]}return new gn(u,h,c)}if(this.index===null)return Me("BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new Kn,i=this.index.array,n=this.attributes;for(const o in n){const l=n[o],A=t(l,i);e.setAttribute(o,A)}const s=this.morphAttributes;for(const o in s){const l=[],A=s[o];for(let h=0,c=A.length;h<c;h++){const u=A[h],d=t(u,i);l.push(d)}e.morphAttributes[o]=l}e.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const A=a[o];e.addGroup(A.start,A.count,A.materialIndex)}return e}toJSON(){const t={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const A in l)l[A]!==void 0&&(t[A]=l[A]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const l in i){const A=i[l];t.data.attributes[l]=A.toJSON(t.data)}const n={};let s=!1;for(const l in this.morphAttributes){const A=this.morphAttributes[l],h=[];for(let c=0,u=A.length;c<u;c++){const d=A[c];h.push(d.toJSON(t.data))}h.length>0&&(n[l]=h,s=!0)}s&&(t.data.morphAttributes=n,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere=o.toJSON()),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;i!==null&&this.setIndex(i.clone());const n=t.attributes;for(const A in n){const h=n[A];this.setAttribute(A,h.clone(e))}const s=t.morphAttributes;for(const A in s){const h=[],c=s[A];for(let u=0,d=c.length;u<d;u++)h.push(c[u].clone(e));this.morphAttributes[A]=h}this.morphTargetsRelative=t.morphTargetsRelative;const a=t.groups;for(let A=0,h=a.length;A<h;A++){const c=a[A];this.addGroup(c.start,c.count,c.materialIndex)}const o=t.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=t.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}let vu=0;class Ga extends pr{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:vu++}),this.uuid=zs(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new ji(0,0,0),this.blendAlpha=0,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const i=t[e];if(i===void 0){Me(`Material: parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){Me(`Material: '${e}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(t).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(t).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==1&&(i.blending=this.blending),this.side!==0&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==204&&(i.blendSrc=this.blendSrc),this.blendDst!==205&&(i.blendDst=this.blendDst),this.blendEquation!==100&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==3&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==519&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==7680&&(i.stencilFail=this.stencilFail),this.stencilZFail!==7680&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==7680&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.allowOverride===!1&&(i.allowOverride=!1),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function n(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(e){const s=n(t.textures),a=n(t.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(e!==null){const n=e.length;i=new Array(n);for(let s=0;s!==n;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.allowOverride=t.allowOverride,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}}const _i=new V,ka=new V,Mr=new V,Ki=new V,Ha=new V,yr=new V,Va=new V;class xu{constructor(t=new V,e=new V(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,_i)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=_i.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(_i.copy(this.origin).addScaledVector(this.direction,e),_i.distanceToSquared(t))}distanceSqToSegment(t,e,i,n){ka.copy(t).add(e).multiplyScalar(.5),Mr.copy(e).sub(t).normalize(),Ki.copy(this.origin).sub(ka);const s=t.distanceTo(e)*.5,a=-this.direction.dot(Mr),o=Ki.dot(this.direction),l=-Ki.dot(Mr),A=Ki.lengthSq(),h=Math.abs(1-a*a);let c,u,d,p;if(h>0)if(c=a*l-o,u=a*o-l,p=s*h,c>=0)if(u>=-p)if(u<=p){const m=1/h;c*=m,u*=m,d=c*(c+a*u+2*o)+u*(a*c+u+2*l)+A}else u=s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u=-s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u<=-p?(c=Math.max(0,-(-a*s+o)),u=c>0?-s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A):u<=p?(c=0,u=Math.min(Math.max(-s,-l),s),d=u*(u+2*l)+A):(c=Math.max(0,-(a*s+o)),u=c>0?s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A);else u=a>0?-s:s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;return i&&i.copy(this.origin).addScaledVector(this.direction,c),n&&n.copy(ka).addScaledVector(Mr,u),d}intersectSphere(t,e){_i.subVectors(t.center,this.origin);const i=_i.dot(this.direction),n=_i.dot(_i)-i*i,s=t.radius*t.radius;if(n>s)return null;const a=Math.sqrt(s-n),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return t.radius<0?!1:this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return i===null?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,n,s,a,o,l;const A=1/this.direction.x,h=1/this.direction.y,c=1/this.direction.z,u=this.origin;return A>=0?(i=(t.min.x-u.x)*A,n=(t.max.x-u.x)*A):(i=(t.max.x-u.x)*A,n=(t.min.x-u.x)*A),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),i>a||s>n||((s>i||isNaN(i))&&(i=s),(a<n||isNaN(n))&&(n=a),c>=0?(o=(t.min.z-u.z)*c,l=(t.max.z-u.z)*c):(o=(t.max.z-u.z)*c,l=(t.min.z-u.z)*c),i>l||o>n)||((o>i||i!==i)&&(i=o),(l<n||n!==n)&&(n=l),n<0)?null:this.at(i>=0?i:n,e)}intersectsBox(t){return this.intersectBox(t,_i)!==null}intersectTriangle(t,e,i,n,s){Ha.subVectors(e,t),yr.subVectors(i,t),Va.crossVectors(Ha,yr);let a=this.direction.dot(Va),o;if(a>0){if(n)return null;o=1}else if(a<0)o=-1,a=-a;else return null;Ki.subVectors(this.origin,t);const l=o*this.direction.dot(yr.crossVectors(Ki,yr));if(l<0)return null;const A=o*this.direction.dot(Ha.cross(Ki));if(A<0||l+A>a)return null;const h=-o*Ki.dot(Va);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Eu extends Ga{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ji(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 Vn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const ul=new ri,mn=new xu,br=new cl,dl=new V,Tr=new V,wr=new V,Rr=new V,Wa=new V,_r=new V,fl=new V,Pr=new V;class gl extends Qe{constructor(t=new Kn,e=new Eu){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,e=Object.keys(t);if(e.length>0){const i=t[e[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let n=0,s=i.length;n<s;n++){const a=i[n].name||String(n);this.morphTargetInfluences.push(0),this.morphTargetDictionary[a]=n}}}}getVertexPosition(t,e){const i=this.geometry,n=i.attributes.position,s=i.morphAttributes.position,a=i.morphTargetsRelative;e.fromBufferAttribute(n,t);const o=this.morphTargetInfluences;if(s&&o){_r.set(0,0,0);for(let l=0,A=s.length;l<A;l++){const h=o[l],c=s[l];h!==0&&(Wa.fromBufferAttribute(c,t),a?_r.addScaledVector(Wa,h):_r.addScaledVector(Wa.sub(e),h))}e.add(_r)}return e}raycast(t,e){const i=this.geometry,n=this.material,s=this.matrixWorld;n!==void 0&&(i.boundingSphere===null&&i.computeBoundingSphere(),br.copy(i.boundingSphere),br.applyMatrix4(s),mn.copy(t.ray).recast(t.near),!(br.containsPoint(mn.origin)===!1&&(mn.intersectSphere(br,dl)===null||mn.origin.distanceToSquared(dl)>(t.far-t.near)**2))&&(ul.copy(s).invert(),mn.copy(t.ray).applyMatrix4(ul),!(i.boundingBox!==null&&mn.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(t,e,mn)))}_computeIntersections(t,e,i){let n;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,A=s.attributes.uv,h=s.attributes.uv1,c=s.attributes.normal,u=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(o.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=o.getX(v),R=o.getX(v+1),P=o.getX(v+2);n=Lr(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(o.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=o.getX(g),S=o.getX(g+1),v=o.getX(g+2);n=Lr(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}else if(l!==void 0)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(l.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=v,R=v+1,P=v+2;n=Lr(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(l.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=g,S=g+1,v=g+2;n=Lr(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}}}function Su(r,t,e,i,n,s,a,o){let l;if(t.side===1?l=i.intersectTriangle(a,s,n,!0,o):l=i.intersectTriangle(n,s,a,t.side===0,o),l===null)return null;Pr.copy(o),Pr.applyMatrix4(r.matrixWorld);const A=e.ray.origin.distanceTo(Pr);return A<e.near||A>e.far?null:{distance:A,point:Pr.clone(),object:r}}function Lr(r,t,e,i,n,s,a,o,l,A){r.getVertexPosition(o,Tr),r.getVertexPosition(l,wr),r.getVertexPosition(A,Rr);const h=Su(r,t,e,i,Tr,wr,Rr,fl);if(h){const c=new V;Ai.getBarycoord(fl,Tr,wr,Rr,c),n&&(h.uv=Ai.getInterpolatedAttribute(n,o,l,A,c,new He)),s&&(h.uv1=Ai.getInterpolatedAttribute(s,o,l,A,c,new He)),a&&(h.normal=Ai.getInterpolatedAttribute(a,o,l,A,c,new V),h.normal.dot(i.direction)>0&&h.normal.multiplyScalar(-1));const u={a:o,b:l,c:A,normal:new V,materialIndex:0};Ai.getNormal(Tr,wr,Rr,u.normal),h.face=u,h.barycoord=c}return h}class Mu extends Ii{constructor(t=null,e=1,i=1,n,s,a,o,l,A=1003,h=1003,c,u){super(null,a,o,l,A,h,n,s,c,u),this.isDataTexture=!0,this.image={data:t,width:e,height:i},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class In extends Kn{constructor(t=1,e=1,i=1,n=32,s=1,a=!1,o=0,l=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:t,radiusBottom:e,height:i,radialSegments:n,heightSegments:s,openEnded:a,thetaStart:o,thetaLength:l};const A=this;n=Math.floor(n),s=Math.floor(s);const h=[],c=[],u=[],d=[];let p=0;const m=[],g=i/2;let f=0;y(),a===!1&&(t>0&&S(!0),e>0&&S(!1)),this.setIndex(h),this.setAttribute("position",new pn(c,3)),this.setAttribute("normal",new pn(u,3)),this.setAttribute("uv",new pn(d,2));function y(){const v=new V,w=new V;let T=0;const R=(e-t)/i;for(let P=0;P<=s;P++){const E=[],x=P/s,b=x*(e-t)+t;for(let z=0;z<=n;z++){const B=z/n,U=B*l+o,W=Math.sin(U),Y=Math.cos(U);w.x=b*W,w.y=-x*i+g,w.z=b*Y,c.push(w.x,w.y,w.z),v.set(W,R,Y).normalize(),u.push(v.x,v.y,v.z),d.push(B,1-x),E.push(p++)}m.push(E)}for(let P=0;P<n;P++)for(let E=0;E<s;E++){const x=m[E][P],b=m[E+1][P],z=m[E+1][P+1],B=m[E][P+1];(t>0||E!==0)&&(h.push(x,b,B),T+=3),(e>0||E!==s-1)&&(h.push(b,z,B),T+=3)}A.addGroup(f,T,0),f+=T}function S(v){const w=p,T=new He,R=new V;let P=0;const E=v===!0?t:e,x=v===!0?1:-1;for(let z=1;z<=n;z++)c.push(0,g*x,0),u.push(0,x,0),d.push(.5,.5),p++;const b=p;for(let z=0;z<=n;z++){const B=z/n*l+o,U=Math.cos(B),W=Math.sin(B);R.x=E*W,R.y=g*x,R.z=E*U,c.push(R.x,R.y,R.z),u.push(0,x,0),T.x=U*.5+.5,T.y=W*.5*x+.5,d.push(T.x,T.y),p++}for(let z=0;z<n;z++){const B=w+z,U=b+z;v===!0?h.push(U,U+1,B):h.push(U+1,U,B),P+=3}A.addGroup(f,P,v===!0?1:2),f+=P}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new In(t.radiusTop,t.radiusBottom,t.height,t.radialSegments,t.heightSegments,t.openEnded,t.thetaStart,t.thetaLength)}}function yu(r){const t={};for(const e in r){t[e]={};for(const i in r[e]){const n=r[e][i];n&&(n.isColor||n.isMatrix3||n.isMatrix4||n.isVector2||n.isVector3||n.isVector4||n.isTexture||n.isQuaternion)?n.isRenderTargetTexture?(Me("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[e][i]=null):t[e][i]=n.clone():Array.isArray(n)?t[e][i]=n.slice():t[e][i]=n}}return t}function bu(r){const t=[];for(let e=0;e<r.length;e++)t.push(r[e].clone());return t}var Tu=`void main() {
56
56
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
57
- }`,Su=`void main() {
57
+ }`,wu=`void main() {
58
58
  gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
59
- }`;class Mu extends Fa{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Eu,this.fragmentShader=Su,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,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=vu(t.uniforms),this.uniformsGroups=xu(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this.defaultAttributeValues=Object.assign({},t.defaultAttributeValues),this.index0AttributeName=t.index0AttributeName,this.uniformsNeedUpdate=t.uniformsNeedUpdate,this}toJSON(t){const e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(const n in this.uniforms){const s=this.uniforms[n].value;s&&s.isTexture?e.uniforms[n]={type:"t",value:s.toJSON(t).uuid}:s&&s.isColor?e.uniforms[n]={type:"c",value:s.getHex()}:s&&s.isVector2?e.uniforms[n]={type:"v2",value:s.toArray()}:s&&s.isVector3?e.uniforms[n]={type:"v3",value:s.toArray()}:s&&s.isVector4?e.uniforms[n]={type:"v4",value:s.toArray()}:s&&s.isMatrix3?e.uniforms[n]={type:"m3",value:s.toArray()}:s&&s.isMatrix4?e.uniforms[n]={type:"m4",value:s.toArray()}:e.uniforms[n]={value:s}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const i={};for(const n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}}class cl extends Fa{constructor(t){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Ji(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Ji(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new He(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Hn,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:""},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.roughnessMap=t.roughnessMap,this.metalnessMap=t.metalnessMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.envMapIntensity=t.envMapIntensity,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"183"}})),typeof window<"u"&&(window.__THREE__?Me("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="183");const yu=`#include <common>
59
+ }`;class Ru extends Ga{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Tu,this.fragmentShader=wu,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,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=yu(t.uniforms),this.uniformsGroups=bu(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this.defaultAttributeValues=Object.assign({},t.defaultAttributeValues),this.index0AttributeName=t.index0AttributeName,this.uniformsNeedUpdate=t.uniformsNeedUpdate,this}toJSON(t){const e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(const n in this.uniforms){const s=this.uniforms[n].value;s&&s.isTexture?e.uniforms[n]={type:"t",value:s.toJSON(t).uuid}:s&&s.isColor?e.uniforms[n]={type:"c",value:s.getHex()}:s&&s.isVector2?e.uniforms[n]={type:"v2",value:s.toArray()}:s&&s.isVector3?e.uniforms[n]={type:"v3",value:s.toArray()}:s&&s.isVector4?e.uniforms[n]={type:"v4",value:s.toArray()}:s&&s.isMatrix3?e.uniforms[n]={type:"m3",value:s.toArray()}:s&&s.isMatrix4?e.uniforms[n]={type:"m4",value:s.toArray()}:e.uniforms[n]={value:s}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const i={};for(const n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}}class pl extends Ga{constructor(t){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ji(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ji(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new He(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Vn,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:""},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.roughnessMap=t.roughnessMap,this.metalnessMap=t.metalnessMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.envMapIntensity=t.envMapIntensity,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"183"}})),typeof window<"u"&&(window.__THREE__?Me("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="183");const _u=`#include <common>
60
60
  #include <batching_pars_vertex>
61
61
  #include <uv_pars_vertex>
62
62
  #include <displacementmap_pars_vertex>
@@ -83,7 +83,7 @@ void main() {
83
83
  #include <logdepthbuf_vertex>
84
84
  #include <clipping_planes_vertex>
85
85
  vHighPrecisionZW = gl_Position.zw;
86
- }`,bu=`#if DEPTH_PACKING == 3200
86
+ }`,Pu=`#if DEPTH_PACKING == 3200
87
87
  uniform float opacity;
88
88
  #endif
89
89
  #include <common>
@@ -121,11 +121,11 @@ void main() {
121
121
  #elif DEPTH_PACKING == 3203
122
122
  gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );
123
123
  #endif
124
- }`,ul={depth_vert:yu,depth_frag:bu};class Tu extends qn{constructor(t=(n,s,a)=>a.set(n,s,Math.cos(n)*Math.sin(s)),e=8,i=8){super(),this.type="ParametricGeometry",this.parameters={func:t,slices:e,stacks:i};const n=[],s=[],a=[],o=[],l=1e-5,A=new V,h=new V,c=new V,u=new V,d=new V,p=e+1;for(let m=0;m<=i;m++){const g=m/i;for(let f=0;f<=e;f++){const y=f/e;t(y,g,h),s.push(h.x,h.y,h.z),y-l>=0?(t(y-l,g,c),u.subVectors(h,c)):(t(y+l,g,c),u.subVectors(c,h)),g-l>=0?(t(y,g-l,c),d.subVectors(h,c)):(t(y,g+l,c),d.subVectors(c,h)),A.crossVectors(u,d).normalize(),a.push(A.x,A.y,A.z),o.push(y,g)}}for(let m=0;m<i;m++)for(let g=0;g<e;g++){const f=m*p+g,y=m*p+g+1,S=(m+1)*p+g+1,v=(m+1)*p+g;n.push(f,y,v),n.push(y,S,v)}this.setIndex(n),this.setAttribute("position",new gn(s,3)),this.setAttribute("normal",new gn(a,3)),this.setAttribute("uv",new gn(o,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}}const Ga=new V;class In{p1;p2;restDistance;constructor(t,e,i){this.p1=t,this.p2=e,this.restDistance=i}resolve(){const t=this.p1,e=this.p2,i=this.restDistance;Ga.subVectors(e.position,t.position);const n=Ga.length();if(n===0)return;const s=Ga.multiplyScalar((1-i/n)/2);t.position.add(s),e.position.sub(s)}}const dl=2,wu=.03,Ru=1-wu,_u=.12,Pu=1.225;class Du{position;previous;original;mass;inverseMass;acceleration;tmp;constructor(t,e){this.position=t.clone(),this.previous=t.clone(),this.original=t.clone(),this.mass=e,this.inverseMass=1/e,this.acceleration=new V,this.tmp=new V}applyForce(t){this.acceleration.addScaledVector(t,this.inverseMass)}integrate(t){const e=this.tmp.subVectors(this.position,this.previous).multiplyScalar(Ru).add(this.position).addScaledVector(this.acceleration,t);this.tmp=this.previous,this.previous=this.position,this.position=e,this.acceleration.set(0,0,0)}}class Lu{xSegments;ySegments;restDistance;width;height;particles;constraints;particleAt;geometry;constructor(t,e,i,n){const s=i*t,a=i*e,o=[],l=[],A=(m,g)=>o[m+g*(t+1)],h=(m,g,f)=>{f.set(m*s,g*a,0)},c=new V,u=n/((e+1)*(t+1));for(let m=0;m<=e;m++)for(let g=0;g<=t;g++)h(g/t,m/e,c),o.push(new Du(c,u));for(let m=0;m<e;m++)for(let g=0;g<t;g++)l.push(new In(A(g,m),A(g,m+1),i),new In(A(g,m),A(g+1,m),i));for(let m=t,g=0;g<e;g++)l.push(new In(A(m,g),A(m,g+1),i));for(let m=e,g=0;g<t;g++)l.push(new In(A(g,m),A(g+1,m),i));const d=Math.sqrt(i*i*2);for(let m=0;m<e;m++)for(let g=0;g<t;g++)l.push(new In(A(g,m),A(g+1,m+1),d),new In(A(g+1,m),A(g,m+1),d));const p=new Tu(h,t,e);p.getAttribute("position").setUsage(35040),this.xSegments=t,this.ySegments=e,this.restDistance=i,this.width=s,this.height=a,this.particles=o,this.constraints=l,this.particleAt=A,this.geometry=p}reset(){for(const t of this.particles)t.previous.copy(t.position.copy(t.original))}simulate(t){const e=this.particles,i=this.constraints,n=Math.pow(t,2);for(let s=0,a=e.length;s<a;s++)e[s].integrate(n);for(let s=0,a=dl;s<a;s++)for(let o=0,l=i.length;o<l;o++)i[o].resolve()}render(){const t=this.particles,e=this.geometry,i=e.getAttribute("position"),n=i.array;for(let s=0,a=t.length;s<a;s++){const o=t[s].position,l=s*3;n[l]=o.x,n[l+1]=o.y,n[l+2]=o.z}i.needsUpdate=!0,e.computeVertexNormals()}}function Nu(r){const{width:t,height:e,mass:i,restDistance:n}=r;return new Lu(Math.max(1,Math.round(t/n)),Math.max(1,Math.round(e/n)),n,i*t*e)}function fl(r,t,e){const i=r*t,n=new Uint8Array(4*i),s=Math.floor(e.r*255),a=Math.floor(e.g*255),o=Math.floor(e.b*255),l=255;for(let h=0;h<i;h++){const c=h*4;n[c]=s,n[c+1]=a,n[c+2]=o,n[c+3]=l}const A=new Cu(n,r,t,1023,1009);return A.needsUpdate=!0,A}const Fu=fl(1,1,new Ji(16777215));function Bu(r,t){const e=r.geometry;let i=Fu,n;const s=o=>(o.needsUpdate=!0,o.anisotropy=16,o.minFilter=1006,o.magFilter=1006,o.wrapS=1001,o.wrapT=1001,o),a=(o,l)=>{o.colorSpace=ke;const A=new cl({alphaTest:.5,color:16777215,metalness:.08,roughness:.86,side:l,map:o}),h=new hl(e,A);return h.castShadow=!0,h.customDepthMaterial=new Mu({uniforms:{textureMap:{value:o}},vertexShader:ul.depth_vert,fragmentShader:ul.depth_frag,side:l,lights:!1,defines:{DEPTH_PACKING:"3200"}}),h.position.set(0,-r.height,0),h};return t?.texture instanceof mi?(i=s(t.texture),t.backSideTexture instanceof mi&&(n=s(t.backSideTexture))):t?.texture!==void 0&&console.error("FlagWaver.Flag: options.texture must be an instance of THREE.Texture."),[a(i,n!==void 0?0:2),n!==void 0?a(n,1):null]}const le={TOP:"top",LEFT:"left",BOTTOM:"bottom",RIGHT:"right"},Ou=(()=>{const r={edges:[],spacing:1};function t(e,i,n,s){const{xSegments:a,ySegments:o,particleAt:l}=e,{spacing:A}=s;switch(n){case le.TOP:for(let h=0;h<=a;h+=A)i.push(l(h,o));break;case le.LEFT:for(let h=0;h<=o;h+=A)i.push(l(0,h));break;case le.BOTTOM:for(let h=0;h<=a;h+=A)i.push(l(h,0));break;case le.RIGHT:for(let h=0;h<=o;h+=A)i.push(l(a,h));break}}return function(e,i,n={}){const s={...r,...n},{edges:a}=s;if(typeof a=="string")t(e,i,a,s);else if(Array.isArray(a)&&a.length>0)for(let o=0,l=a.length;o<l;o++)t(e,i,a[o],s)}})(),gl=1.2,wr=new V;class pl extends In{resolve(){const t=this.p1,e=this.p2,i=this.restDistance*gl;wr.subVectors(t.position,e.position);const n=wr.length()/gl;wr.normalize();const s=wr.multiplyScalar(n-i);n>i&&e.position.add(s)}}function ml(r){if(Array.isArray(r))for(const t of r)Il(t);else Il(r)}function Il(r){r.map?.dispose(),r.dispose()}const Uu=fl(1,1,new Ji(16777215));class Vs{cloth;pins;lengthConstraints;mesh;mesh2;object;static defaults={width:1.8,height:1.2,mass:.11,restDistance:1.2/10,rigidness:1,texture:Uu,backSideTexture:void 0,pin:{edges:[le.LEFT],spacing:1}};constructor(t={}){const e={...Vs.defaults,...t};this.cloth=Nu(e),this.pins=[],this.lengthConstraints=[];const[i,n]=Bu(this.cloth,e);this.mesh=i,this.mesh2=n,this.object=new Qe,this.object.add(this.mesh),this.mesh2!==null&&this.object.add(this.mesh2),this.pin(e.pin)}destroy(){ml(this.mesh.material),this.mesh.geometry.dispose(),this.mesh.customDepthMaterial?.dispose(),this.mesh2!==null&&(ml(this.mesh2.material),this.mesh2.customDepthMaterial?.dispose())}pin(t){Ou(this.cloth,this.pins,t)}unpin(){this.pins=[]}setLengthConstraints(t){const{xSegments:e,ySegments:i,restDistance:n,particleAt:s}=this.cloth,a=[];if(t===le.LEFT)for(let o=0;o<=i;o++)for(let l=0;l<e;l++)a.push(new pl(s(l,o),s(l+1,o),n));else if(t===le.TOP)for(let o=0;o<=e;o++)for(let l=i;l>0;l--)a.push(new pl(s(o,l),s(o,l-1),n));this.lengthConstraints=a}reset(){this.cloth.reset()}simulate(t){const e=this.pins,i=this.lengthConstraints;this.cloth.simulate(t);for(const n of e)n.previous.copy(n.position.copy(n.original));for(let n=0;n<dl;n++)for(const s of i)s.resolve()}render(){this.cloth.render()}setTexture(t){t.needsUpdate=!0,t.anisotropy=16,t.minFilter=1006,t.magFilter=1006,t.wrapS=1001,t.wrapT=1001,t.colorSpace=ke;const e=this.mesh.material;e.map!==null&&e.map!==void 0&&(e.map=t,e.needsUpdate=!0);const i=this.mesh.customDepthMaterial;if(i!=null){const n=i;n.uniforms!=null&&n.uniforms.textureMap!=null&&(n.uniforms.textureMap.value=t)}if(this.mesh2!=null){const n=this.mesh2.material;n.map!=null&&(n.map=t,n.needsUpdate=!0);const s=this.mesh2.customDepthMaterial;if(s!=null){const a=s;a.uniforms?.textureMap!=null&&(a.uniforms.textureMap.value=t)}}}}const Cn={CROSSBAR:"CROSSBAR",GALLERY:"GALLERY",HORIZONTAL:"HORIZONTAL",OUTRIGGER:"OUTRIGGER",VERTICAL:"VERTICAL"},Ws={NONE:"none",TOP_RIGHT:"topright",TOP_LEFT:"topleft"};class _i{top;mesh;object;constructor(t){this.create(t)}static defaults={flagpoleType:Cn.VERTICAL,poleWidth:.076,poleLength:6,poleCapSize:.076*4/3,crossbarWidth:.076*2/3,crossbarLength:1.2,crossbarCapSize:.076*2/3*3/2,poleTopOffset:.1,verticalHoisting:Ws.TOP_RIGHT};destroy(){this.mesh!==void 0&&((Array.isArray(this.mesh.material)?this.mesh.material:[this.mesh.material]).forEach(t=>{t.dispose()}),this.mesh.geometry.dispose())}create(t){this.destroy();const e=Object.assign({},_i.defaults,t),i=this.buildGeometry(e),n=new cl({color:16711422,metalness:.98,roughness:.55}),s=new hl(i,n);s.receiveShadow=!0,s.castShadow=!0,this.top=new V(0,e.poleLength,0),this.mesh=s,this.object=this.mesh}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top)}}function ka(r,t=!1){const e=r[0].index!==null,i=new Set(Object.keys(r[0].attributes)),n=new Set(Object.keys(r[0].morphAttributes)),s={},a={},o=r[0].morphTargetsRelative,l=new qn;let A=0;for(let h=0;h<r.length;++h){const c=r[h];let u=0;if(e!==(c.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const d in c.attributes){if(!i.has(d))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+'. All geometries must have compatible attributes; make sure "'+d+'" attribute exists among all geometries, or in none of them.'),null;s[d]===void 0&&(s[d]=[]),s[d].push(c.attributes[d]),u++}if(u!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". Make sure all geometries have the same number of attributes."),null;if(o!==c.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const d in c.morphAttributes){if(!n.has(d))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphAttributes must be consistent throughout all geometries."),null;a[d]===void 0&&(a[d]=[]),a[d].push(c.morphAttributes[d])}if(t){let d;if(e)d=c.index.count;else if(c.attributes.position!==void 0)d=c.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". The geometry must have either an index or a position attribute"),null;l.addGroup(A,d,h),A+=d}}if(e){let h=0;const c=[];for(let u=0;u<r.length;++u){const d=r[u].index;for(let p=0;p<d.count;++p)c.push(d.getX(p)+h);h+=r[u].attributes.position.count}l.setIndex(c)}for(const h in s){const c=Cl(s[h]);if(!c)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" attribute."),null;l.setAttribute(h,c)}for(const h in a){const c=a[h][0].length;if(c===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[h]=[];for(let u=0;u<c;++u){const d=[];for(let m=0;m<a[h].length;++m)d.push(a[h][m][u]);const p=Cl(d);if(!p)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" morphAttribute."),null;l.morphAttributes[h].push(p)}}return l}function Cl(r){let t,e,i,n=-1,s=0;for(let A=0;A<r.length;++A){const h=r[A];if(t===void 0&&(t=h.array.constructor),t!==h.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(e===void 0&&(e=h.itemSize),e!==h.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=h.normalized),i!==h.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(n===-1&&(n=h.gpuType),n!==h.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;s+=h.count*e}const a=new t(s),o=new fn(a,e,i);let l=0;for(let A=0;A<r.length;++A){const h=r[A];if(h.isInterleavedBufferAttribute){const c=l/e;for(let u=0,d=h.count;u<d;u++)for(let p=0;p<e;p++){const m=h.getComponent(u,p);o.setComponent(u+c,p,m)}}else a.set(h.array,l);l+=h.count*e}return n!==void 0&&(o.gpuType=n),o}function Ys(r){const t=r.poleWidth/2,e=r.poleLength,i=32,n=r.poleCapSize/2,s=new mn(t,t,e,i);s.translate(0,r.poleLength/2,0);const a=new mn(n,n,n,i);return a.translate(0,e+n/2,0),ka([s,a])}function zu(r){const t=Ys(r),e=r.poleWidth/2,i=r.poleLength,n=r.crossbarWidth/2,s=r.crossbarLength,a=16,o=r.crossbarCapSize/2,l=r.poleTopOffset,A=new mn(n,n,s,a);A.rotateZ(Math.PI/2);const h=new mn(o,o,o,a),c=h.clone(),u=i-l,d=e+n;return h.rotateZ(Math.PI/2),h.translate(-s/2,u,d),c.rotateZ(-Math.PI/2),c.translate(s/2,u,d),A.translate(0,u,d),ka([t,A,h,c])}function Gu(r){const t=Ys(r),e=r.poleLength,i=r.poleCapSize/2,n=r.crossbarWidth/2,s=r.crossbarLength,a=16,o=new mn(n,n,s,a);return o.rotateZ(Math.PI/2),o.translate(s/2,e+i-n,0),ka([t,o])}class vl extends _i{constructor(t={}){super(t)}buildGeometry(t){return Ys(t)}}class ku{flagpole;flag;object;constructor(t={}){const e={...t},{flagpole:i,flag:n}=e;this.flagpole=i??new vl,this.flag=n??new Vs,this.flagpole.addFlag(this.flag),this.object=new Qe,this.object.add(this.flagpole.object),this.object.add(this.flag.object)}destroy(){this.destroyChildSubject(this.flagpole),this.destroyChildSubject(this.flag)}destroyChildSubject(t){t!=null&&(this.object.remove(t.object),t.destroy())}reset(){this.flag.reset()}simulate(t){this.flag.simulate(t)}render(){this.flag.render()}setTexture(t){this.flag.setTexture(t)}}function Hu(r){return r===0?.001:r}function Vu(r){return r.x===0&&(r.x=.001),r.y===0&&(r.y=.001),r.z===0&&(r.z=.001),r}const xl={blowFromLeftDirection:r=>r.set(2e3,0,1e3),constantSpeed:r=>r};function Wu(r){return .5*Pu*Math.pow(r,2)}class Ha{direction;speed;directionFn;speedFn;pressure;static defaults={direction:new V(1,0,0),speed:10,directionFn:xl.blowFromLeftDirection,speedFn:xl.constantSpeed};constructor(t={}){const e={...Ha.defaults,...t};this.direction=e.direction.clone(),this.speed=e.speed,this.directionFn=e.directionFn,this.speedFn=e.speedFn,this.pressure=new V}update(){const t=Date.now();this.directionFn(Vu(this.pressure.copy(this.direction)),t).normalize().multiplyScalar(Wu(this.speedFn(Hu(this.speed),t)))}}const Rr=new V,El=new V;function Sl(r,t){return Rr.copy(r),t instanceof Qe&&(El.setFromMatrixPosition(t.matrixWorld),Rr.add(El),t.worldToLocal(Rr)),Rr}const Yu=new V(0,-9.80665,0);function Xu(r,t){const e=r.particles,i=Sl(Yu,t);for(let n=0,s=e.length;n<s;n++)e[n].acceleration.add(i)}const _r=new V,Ml=new V;function Zu(r){return r<0?0:r>1?1:r}function yl(r){const t=Math.sin(r*12.9898)*43758.5453;return t-Math.floor(t)}function Ju(r,t){const e=Zu(t?.randomizeAmount??0);if(e===0)return 1;const i=t?.randomSeed??r?.id??0,n=t?.time??0,s=.5+yl(i)*2,a=yl(i+1e3)*Math.PI*2;return 1+(Math.sin(n*s+a)*.5+Math.sin(n*s*1.7+a*.3)*.3)*e}function ju(r,t,e){return _r.subVectors(e,t),Ml.subVectors(r,t),_r.cross(Ml),_r.normalize(),_r}function Qu(r,t,e,i){const n=r.particles,s=r.geometry.getIndex();if(t==null||s==null)return;const a=r.restDistance*r.restDistance/2,o=Ju(e,i),l=Sl(t.pressure,e).multiplyScalar(_u*a/3*o);for(let A=0,h=s.count;A<h;A+=3){const c=s.getX(A),u=s.getX(A+1),d=s.getX(A+2),p=n[c],m=n[u],g=n[d],f=ju(p.position,m.position,g.position);f.multiplyScalar(f.dot(l)),p.applyForce(f),m.applyForce(f),g.applyForce(f)}}function qu(r){return new Vs(r)}function Ku(r,t){const e={...r};return Object.entries(t).forEach(([i,n])=>{n!==void 0&&(e[i]=n)}),e}class $u extends _i{verticalHoisting;constructor(t={}){super(t);const e=Ku(_i.defaults,t);this.top.set(0,e.poleLength-e.poleTopOffset,e.poleWidth/2+e.crossbarWidth/2),this.verticalHoisting=e.verticalHoisting}buildGeometry(t){return zu(t)}addFlag(t){switch(t.unpin(),this.verticalHoisting){case Ws.NONE:t.pin({edges:[le.TOP]}),t.setLengthConstraints(le.TOP),t.object.position.add(this.top),t.object.position.x=-t.cloth.width/2;break;case Ws.TOP_LEFT:t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.position.x=-t.cloth.height/2,t.object.rotateZ(Math.PI*3/2),t.object.rotateX(Math.PI);break;case Ws.TOP_RIGHT:default:t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.position.x=t.cloth.height/2,t.object.rotateZ(Math.PI*3/2);break}}}class td extends _i{buildGeometry(t){return Gu(t)}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT,le.TOP]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top)}}const ed=new V(0,0,1);class id extends _i{constructor(t={}){super(t),this.top.applyAxisAngle(ed,Math.PI*3/2)}buildGeometry(t){const e=Ys(t);return e.rotateZ(Math.PI*3/2),e}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.rotateZ(Math.PI*3/2)}}const nd=new V(0,0,1);class sd extends _i{constructor(t={}){super(t),this.top.applyAxisAngle(nd,Math.PI*7/4)}buildGeometry(t){const e=Ys(t);return e.rotateZ(Math.PI*7/4),e}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.rotateZ(Math.PI*7/4)}}function rd(r,t){const e=Object.assign({},r);let i;switch(e.flagpoleType){case Cn.HORIZONTAL:i=new id(e);break;case Cn.OUTRIGGER:i=new sd(e);break;case Cn.CROSSBAR:e.crossbarLength=e.verticalHoisting===Ws.NONE?t.cloth.width:t.cloth.height,i=new $u(e);break;case Cn.GALLERY:e.crossbarLength=t.cloth.width,i=new td(e);break;case Cn.VERTICAL:default:i=new vl(e);break}return i}const Pi=Object.freeze(Object.defineProperty({__proto__:null,FLAG_POLE_TYPE:Cn,Flag:Vs,FlagGroup:ku,Flagpole:_i,Wind:Ha,applyGravityToCloth:Xu,applyWindForceToCloth:Qu,buildFlag:qu,buildFlagpole:rd},Symbol.toStringTag,{value:"Module"}));const Va="179",ad=0,bl=1,od=2,Tl=1,Ad=2,Di=3,Ki=0,Oe=1,Li=2,$i=0,Kn=1,wl=2,Rl=3,_l=4,ld=5,vn=100,hd=101,cd=102,ud=103,dd=104,fd=200,gd=201,pd=202,md=203,Wa=204,Ya=205,Id=206,Cd=207,vd=208,xd=209,Ed=210,Sd=211,Md=212,yd=213,bd=214,Xa=0,Za=1,Ja=2,$n=3,ja=4,Qa=5,qa=6,Ka=7,Pl=0,Td=1,wd=2,tn=0,Rd=1,_d=2,Pd=3,Dd=4,Ld=5,Nd=6,Fd=7,Dl=300,ts=301,es=302,$a=303,to=304,Pr=306,eo=1e3,xn=1001,io=1002,li=1003,Bd=1004,Dr=1005,Ii=1006,no=1007,En=1008,Ci=1009,Ll=1010,Nl=1011,Xs=1012,so=1013,Sn=1014,Ni=1015,Zs=1016,ro=1017,ao=1018,Js=1020,Fl=35902,Bl=1021,Ol=1022,hi=1023,js=1026,Qs=1027,Ul=1028,oo=1029,zl=1030,Ao=1031,lo=1033,Lr=33776,Nr=33777,Fr=33778,Br=33779,ho=35840,co=35841,uo=35842,fo=35843,go=36196,po=37492,mo=37496,Io=37808,Co=37809,vo=37810,xo=37811,Eo=37812,So=37813,Mo=37814,yo=37815,bo=37816,To=37817,wo=37818,Ro=37819,_o=37820,Po=37821,Or=36492,Do=36494,Lo=36495,Gl=36283,No=36284,Fo=36285,Bo=36286,Od=3200,Ud=3201,kl=0,zd=1,en="",_e="srgb",is="srgb-linear",Ur="linear",qt="srgb",ns=7680,Hl=519,Gd=512,kd=513,Hd=514,Vl=515,Vd=516,Wd=517,Yd=518,Xd=519,Wl=35044,Yl="300 es",vi=2e3,zr=2001;class ss{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[t]===void 0&&(i[t]=[]),i[t].indexOf(e)===-1&&i[t].push(e)}hasEventListener(t,e){const i=this._listeners;return i===void 0?!1:i[t]!==void 0&&i[t].indexOf(e)!==-1}removeEventListener(t,e){const i=this._listeners;if(i===void 0)return;const n=i[t];if(n!==void 0){const s=n.indexOf(e);s!==-1&&n.splice(s,1)}}dispatchEvent(t){const e=this._listeners;if(e===void 0)return;const i=e[t.type];if(i!==void 0){t.target=this;const n=i.slice(0);for(let s=0,a=n.length;s<a;s++)n[s].call(this,t);t.target=null}}}const Te=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],Oo=Math.PI/180,Gr=180/Math.PI;function qs(){const r=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Te[r&255]+Te[r>>8&255]+Te[r>>16&255]+Te[r>>24&255]+"-"+Te[t&255]+Te[t>>8&255]+"-"+Te[t>>16&15|64]+Te[t>>24&255]+"-"+Te[e&63|128]+Te[e>>8&255]+"-"+Te[e>>16&255]+Te[e>>24&255]+Te[i&255]+Te[i>>8&255]+Te[i>>16&255]+Te[i>>24&255]).toLowerCase()}function kt(r,t,e){return Math.max(t,Math.min(e,r))}function Zd(r,t){return(r%t+t)%t}function Uo(r,t,e){return(1-e)*r+e*t}function Ks(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Ue(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}class Zt{constructor(t=0,e=0){Zt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,i=this.y,n=t.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(kt(i,t,e))}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(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(kt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const i=Math.cos(e),n=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*i-a*n+t.x,this.y=s*n+a*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class rs{constructor(t=0,e=0,i=0,n=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=n}static slerpFlat(t,e,i,n,s,a,o){let l=i[n+0],A=i[n+1],h=i[n+2],c=i[n+3];const u=s[a+0],d=s[a+1],p=s[a+2],m=s[a+3];if(o===0){t[e+0]=l,t[e+1]=A,t[e+2]=h,t[e+3]=c;return}if(o===1){t[e+0]=u,t[e+1]=d,t[e+2]=p,t[e+3]=m;return}if(c!==m||l!==u||A!==d||h!==p){let g=1-o;const f=l*u+A*d+h*p+c*m,y=f>=0?1:-1,S=1-f*f;if(S>Number.EPSILON){const w=Math.sqrt(S),T=Math.atan2(w,f*y);g=Math.sin(g*T)/w,o=Math.sin(o*T)/w}const v=o*y;if(l=l*g+u*v,A=A*g+d*v,h=h*g+p*v,c=c*g+m*v,g===1-o){const w=1/Math.sqrt(l*l+A*A+h*h+c*c);l*=w,A*=w,h*=w,c*=w}}t[e]=l,t[e+1]=A,t[e+2]=h,t[e+3]=c}static multiplyQuaternionsFlat(t,e,i,n,s,a){const o=i[n],l=i[n+1],A=i[n+2],h=i[n+3],c=s[a],u=s[a+1],d=s[a+2],p=s[a+3];return t[e]=o*p+h*c+l*d-A*u,t[e+1]=l*p+h*u+A*c-o*d,t[e+2]=A*p+h*d+o*u-l*c,t[e+3]=h*p-o*c-l*u-A*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,n){return this._x=t,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const i=t._x,n=t._y,s=t._z,a=t._order,o=Math.cos,l=Math.sin,A=o(i/2),h=o(n/2),c=o(s/2),u=l(i/2),d=l(n/2),p=l(s/2);switch(a){case"XYZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"YXZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"ZXY":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"ZYX":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"YZX":this._x=u*h*c+A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c-u*d*p;break;case"XZY":this._x=u*h*c-A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const i=e/2,n=Math.sin(i);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,i=e[0],n=e[4],s=e[8],a=e[1],o=e[5],l=e[9],A=e[2],h=e[6],c=e[10],u=i+o+c;if(u>0){const d=.5/Math.sqrt(u+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-A)*d,this._z=(a-n)*d}else if(i>o&&i>c){const d=2*Math.sqrt(1+i-o-c);this._w=(h-l)/d,this._x=.25*d,this._y=(n+a)/d,this._z=(s+A)/d}else if(o>c){const d=2*Math.sqrt(1+o-i-c);this._w=(s-A)/d,this._x=(n+a)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+c-i-o);this._w=(a-n)/d,this._x=(s+A)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i<1e-8?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(kt(this.dot(t),-1,1)))}rotateTowards(t,e){const i=this.angleTo(t);if(i===0)return this;const n=Math.min(1,e/i);return this.slerp(t,n),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const i=t._x,n=t._y,s=t._z,a=t._w,o=e._x,l=e._y,A=e._z,h=e._w;return this._x=i*h+a*o+n*A-s*l,this._y=n*h+a*l+s*o-i*A,this._z=s*h+a*A+i*l-n*o,this._w=a*h-i*o-n*l-s*A,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const i=this._x,n=this._y,s=this._z,a=this._w;let o=a*t._w+i*t._x+n*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=i,this._y=n,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const d=1-e;return this._w=d*a+e*this._w,this._x=d*i+e*this._x,this._y=d*n+e*this._y,this._z=d*s+e*this._z,this.normalize(),this}const A=Math.sqrt(l),h=Math.atan2(A,o),c=Math.sin((1-e)*h)/A,u=Math.sin(e*h)/A;return this._w=a*c+this._w*u,this._x=i*c+this._x*u,this._y=n*c+this._y*u,this._z=s*c+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),n=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(n*Math.sin(t),n*Math.cos(t),s*Math.sin(e),s*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class F{constructor(t=0,e=0,i=0){F.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}set(t,e,i){return i===void 0&&(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(Xl.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(Xl.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=t.elements,a=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*a,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*a,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*a,this}applyQuaternion(t){const e=this.x,i=this.y,n=this.z,s=t.x,a=t.y,o=t.z,l=t.w,A=2*(a*n-o*i),h=2*(o*e-s*n),c=2*(s*i-a*e);return this.x=e+l*A+a*c-o*h,this.y=i+l*h+o*A-s*c,this.z=n+l*c+s*h-a*A,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this.z=kt(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this.z=kt(this.z,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(kt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const i=t.x,n=t.y,s=t.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*a-i*l,this.z=i*o-n*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return zo.copy(this).projectOnVector(t),this.sub(zo)}reflect(t){return this.sub(zo.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(kt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){const n=Math.sin(e)*t;return this.x=n*Math.sin(i),this.y=Math.cos(e)*t,this.z=n*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const zo=new F,Xl=new rs;class Nt{constructor(t,e,i,n,s,a,o,l,A){Nt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A)}set(t,e,i,n,s,a,o,l,A){const h=this.elements;return h[0]=t,h[1]=n,h[2]=o,h[3]=e,h[4]=s,h[5]=l,h[6]=i,h[7]=a,h[8]=A,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[3],l=i[6],A=i[1],h=i[4],c=i[7],u=i[2],d=i[5],p=i[8],m=n[0],g=n[3],f=n[6],y=n[1],S=n[4],v=n[7],w=n[2],T=n[5],R=n[8];return s[0]=a*m+o*y+l*w,s[3]=a*g+o*S+l*T,s[6]=a*f+o*v+l*R,s[1]=A*m+h*y+c*w,s[4]=A*g+h*S+c*T,s[7]=A*f+h*v+c*R,s[2]=u*m+d*y+p*w,s[5]=u*g+d*S+p*T,s[8]=u*f+d*v+p*R,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8];return e*a*h-e*o*A-i*s*h+i*o*l+n*s*A-n*a*l}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=h*a-o*A,u=o*l-h*s,d=A*s-a*l,p=e*c+i*u+n*d;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return t[0]=c*m,t[1]=(n*A-h*i)*m,t[2]=(o*i-n*a)*m,t[3]=u*m,t[4]=(h*e-n*l)*m,t[5]=(n*s-o*e)*m,t[6]=d*m,t[7]=(i*l-A*e)*m,t[8]=(a*e-i*s)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,n,s,a,o){const l=Math.cos(s),A=Math.sin(s);return this.set(i*l,i*A,-i*(l*a+A*o)+a+t,-n*A,n*l,-n*(-A*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(Go.makeScale(t,e)),this}rotate(t){return this.premultiply(Go.makeRotation(-t)),this}translate(t,e){return this.premultiply(Go.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<9;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const Go=new Nt;function Zl(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function $s(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function Jd(){const r=$s("canvas");return r.style.display="block",r}const Jl={};function as(r){r in Jl||(Jl[r]=!0,console.warn(r))}function jd(r,t,e){return new Promise(function(i,n){function s(){switch(r.clientWaitSync(t,r.SYNC_FLUSH_COMMANDS_BIT,0)){case r.WAIT_FAILED:n();break;case r.TIMEOUT_EXPIRED:setTimeout(s,e);break;default:i()}}setTimeout(s,e)})}const jl=new Nt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),Ql=new Nt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function Qd(){const r={enabled:!0,workingColorSpace:is,spaces:{},convert:function(n,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===qt&&(n.r=Fi(n.r),n.g=Fi(n.g),n.b=Fi(n.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(n.applyMatrix3(this.spaces[s].toXYZ),n.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===qt&&(n.r=os(n.r),n.g=os(n.g),n.b=os(n.b))),n},workingToColorSpace:function(n,s){return this.convert(n,this.workingColorSpace,s)},colorSpaceToWorking:function(n,s){return this.convert(n,s,this.workingColorSpace)},getPrimaries:function(n){return this.spaces[n].primaries},getTransfer:function(n){return n===en?Ur:this.spaces[n].transfer},getLuminanceCoefficients:function(n,s=this.workingColorSpace){return n.fromArray(this.spaces[s].luminanceCoefficients)},define:function(n){Object.assign(this.spaces,n)},_getMatrix:function(n,s,a){return n.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(n){return this.spaces[n].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(n=this.workingColorSpace){return this.spaces[n].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(n,s){return as("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(n,s)},toWorkingColorSpace:function(n,s){return as("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(n,s)}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],i=[.3127,.329];return r.define({[is]:{primaries:t,whitePoint:i,transfer:Ur,toXYZ:jl,fromXYZ:Ql,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:_e},outputColorSpaceConfig:{drawingBufferColorSpace:_e}},[_e]:{primaries:t,whitePoint:i,transfer:qt,toXYZ:jl,fromXYZ:Ql,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:_e}}}),r}const Yt=Qd();function Fi(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function os(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let As;class qd{static getDataURL(t,e="image/png"){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let i;if(t instanceof HTMLCanvasElement)i=t;else{As===void 0&&(As=$s("canvas")),As.width=t.width,As.height=t.height;const n=As.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),i=As}return i.toDataURL(e)}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=$s("canvas");e.width=t.width,e.height=t.height;const i=e.getContext("2d");i.drawImage(t,0,0,t.width,t.height);const n=i.getImageData(0,0,t.width,t.height),s=n.data;for(let a=0;a<s.length;a++)s[a]=Fi(s[a]/255)*255;return i.putImageData(n,0,0),e}else if(t.data){const e=t.data.slice(0);for(let i=0;i<e.length;i++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[i]=Math.floor(Fi(e[i]/255)*255):e[i]=Fi(e[i]);return{data:e,width:t.width,height:t.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}}let Kd=0;class ko{constructor(t=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Kd++}),this.uuid=qs(),this.data=t,this.dataReady=!0,this.version=0}getSize(t){const e=this.data;return e instanceof HTMLVideoElement?t.set(e.videoWidth,e.videoHeight,0):e instanceof VideoFrame?t.set(e.displayHeight,e.displayWidth,0):e!==null?t.set(e.width,e.height,e.depth||0):t.set(0,0,0),t}set needsUpdate(t){t===!0&&this.version++}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.images[this.uuid]!==void 0)return t.images[this.uuid];const i={uuid:this.uuid,url:""},n=this.data;if(n!==null){let s;if(Array.isArray(n)){s=[];for(let a=0,o=n.length;a<o;a++)n[a].isDataTexture?s.push(Ho(n[a].image)):s.push(Ho(n[a]))}else s=Ho(n);i.url=s}return e||(t.images[this.uuid]=i),i}}function Ho(r){return typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&r instanceof ImageBitmap?qd.getDataURL(r):r.data?{data:Array.from(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let $d=0;const Vo=new F;class we extends ss{constructor(t=we.DEFAULT_IMAGE,e=we.DEFAULT_MAPPING,i=xn,n=xn,s=Ii,a=En,o=hi,l=Ci,A=we.DEFAULT_ANISOTROPY,h=en){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:$d++}),this.uuid=qs(),this.name="",this.source=new ko(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=n,this.magFilter=s,this.minFilter=a,this.anisotropy=A,this.format=o,this.internalFormat=null,this.type=l,this.offset=new Zt(0,0),this.repeat=new Zt(1,1),this.center=new Zt(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Nt,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&&t.depth&&t.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Vo).x}get height(){return this.source.getSize(Vo).y}get depth(){return this.source.getSize(Vo).z}get image(){return this.source.data}set image(t=null){this.source.data=t}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.channel=t.channel,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.colorSpace=t.colorSpace,this.renderTarget=t.renderTarget,this.isRenderTargetTexture=t.isRenderTargetTexture,this.isArrayTexture=t.isArrayTexture,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}setValues(t){for(const e in t){const i=t[e];if(i===void 0){console.warn(`THREE.Texture.setValues(): parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){console.warn(`THREE.Texture.setValues(): property '${e}' does not exist.`);continue}n&&i&&n.isVector2&&i.isVector2||n&&i&&n.isVector3&&i.isVector3||n&&i&&n.isMatrix3&&i.isMatrix3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];const i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Dl)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case eo:t.x=t.x-Math.floor(t.x);break;case xn:t.x=t.x<0?0:1;break;case io:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case eo:t.y=t.y-Math.floor(t.y);break;case xn:t.y=t.y<0?0:1;break;case io:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}we.DEFAULT_IMAGE=null,we.DEFAULT_MAPPING=Dl,we.DEFAULT_ANISOTROPY=1;class he{constructor(t=0,e=0,i=0,n=1){he.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*i+a[8]*n+a[12]*s,this.y=a[1]*e+a[5]*i+a[9]*n+a[13]*s,this.z=a[2]*e+a[6]*i+a[10]*n+a[14]*s,this.w=a[3]*e+a[7]*i+a[11]*n+a[15]*s,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,n,s;const l=t.elements,A=l[0],h=l[4],c=l[8],u=l[1],d=l[5],p=l[9],m=l[2],g=l[6],f=l[10];if(Math.abs(h-u)<.01&&Math.abs(c-m)<.01&&Math.abs(p-g)<.01){if(Math.abs(h+u)<.1&&Math.abs(c+m)<.1&&Math.abs(p+g)<.1&&Math.abs(A+d+f-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const S=(A+1)/2,v=(d+1)/2,w=(f+1)/2,T=(h+u)/4,R=(c+m)/4,P=(p+g)/4;return S>v&&S>w?S<.01?(i=0,n=.707106781,s=.707106781):(i=Math.sqrt(S),n=T/i,s=R/i):v>w?v<.01?(i=.707106781,n=0,s=.707106781):(n=Math.sqrt(v),i=T/n,s=P/n):w<.01?(i=.707106781,n=.707106781,s=0):(s=Math.sqrt(w),i=R/s,n=P/s),this.set(i,n,s,e),this}let y=Math.sqrt((g-p)*(g-p)+(c-m)*(c-m)+(u-h)*(u-h));return Math.abs(y)<.001&&(y=1),this.x=(g-p)/y,this.y=(c-m)/y,this.z=(u-h)/y,this.w=Math.acos((A+d+f-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this.z=kt(this.z,t.z,e.z),this.w=kt(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this.z=kt(this.z,t,e),this.w=kt(this.w,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(kt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),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 tf extends ss{constructor(t=1,e=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Ii,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=i.depth,this.scissor=new he(0,0,t,e),this.scissorTest=!1,this.viewport=new he(0,0,t,e);const n={width:t,height:e,depth:i.depth},s=new we(n);this.textures=[];const a=i.count;for(let o=0;o<a;o++)this.textures[o]=s.clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;this._setTextureOptions(i),this.depthBuffer=i.depthBuffer,this.stencilBuffer=i.stencilBuffer,this.resolveDepthBuffer=i.resolveDepthBuffer,this.resolveStencilBuffer=i.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=i.depthTexture,this.samples=i.samples,this.multiview=i.multiview}_setTextureOptions(t={}){const e={minFilter:Ii,generateMipmaps:!1,flipY:!1,internalFormat:null};t.mapping!==void 0&&(e.mapping=t.mapping),t.wrapS!==void 0&&(e.wrapS=t.wrapS),t.wrapT!==void 0&&(e.wrapT=t.wrapT),t.wrapR!==void 0&&(e.wrapR=t.wrapR),t.magFilter!==void 0&&(e.magFilter=t.magFilter),t.minFilter!==void 0&&(e.minFilter=t.minFilter),t.format!==void 0&&(e.format=t.format),t.type!==void 0&&(e.type=t.type),t.anisotropy!==void 0&&(e.anisotropy=t.anisotropy),t.colorSpace!==void 0&&(e.colorSpace=t.colorSpace),t.flipY!==void 0&&(e.flipY=t.flipY),t.generateMipmaps!==void 0&&(e.generateMipmaps=t.generateMipmaps),t.internalFormat!==void 0&&(e.internalFormat=t.internalFormat);for(let i=0;i<this.textures.length;i++)this.textures[i].setValues(e)}get texture(){return this.textures[0]}set texture(t){this.textures[0]=t}set depthTexture(t){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),t!==null&&(t.renderTarget=this),this._depthTexture=t}get depthTexture(){return this._depthTexture}setSize(t,e,i=1){if(this.width!==t||this.height!==e||this.depth!==i){this.width=t,this.height=e,this.depth=i;for(let n=0,s=this.textures.length;n<s;n++)this.textures[n].image.width=t,this.textures[n].image.height=e,this.textures[n].image.depth=i,this.textures[n].isArrayTexture=this.textures[n].image.depth>1;this.dispose()}this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.scissor.copy(t.scissor),this.scissorTest=t.scissorTest,this.viewport.copy(t.viewport),this.textures.length=0;for(let e=0,i=t.textures.length;e<i;e++){this.textures[e]=t.textures[e].clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;const n=Object.assign({},t.textures[e].image);this.textures[e].source=new ko(n)}return this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.resolveDepthBuffer=t.resolveDepthBuffer,this.resolveStencilBuffer=t.resolveStencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Mn extends tf{constructor(t=1,e=1,i={}){super(t,e,i),this.isWebGLRenderTarget=!0}}class ql extends we{constructor(t=null,e=1,i=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:i,depth:n},this.magFilter=li,this.minFilter=li,this.wrapR=xn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}}class ef extends we{constructor(t=null,e=1,i=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:i,depth:n},this.magFilter=li,this.minFilter=li,this.wrapR=xn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class ls{constructor(t=new F(1/0,1/0,1/0),e=new F(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e+=3)this.expandByPoint(ci.fromArray(t,e));return this}setFromBufferAttribute(t){this.makeEmpty();for(let e=0,i=t.count;e<i;e++)this.expandByPoint(ci.fromBufferAttribute(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const i=ci.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);const i=t.geometry;if(i!==void 0){const s=i.getAttribute("position");if(e===!0&&s!==void 0&&t.isInstancedMesh!==!0)for(let a=0,o=s.count;a<o;a++)t.isMesh===!0?t.getVertexPosition(a,ci):ci.fromBufferAttribute(s,a),ci.applyMatrix4(t.matrixWorld),this.expandByPoint(ci);else t.boundingBox!==void 0?(t.boundingBox===null&&t.computeBoundingBox(),kr.copy(t.boundingBox)):(i.boundingBox===null&&i.computeBoundingBox(),kr.copy(i.boundingBox)),kr.applyMatrix4(t.matrixWorld),this.union(kr)}const n=t.children;for(let s=0,a=n.length;s<a;s++)this.expandByObject(n[s],e);return this}containsPoint(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,ci),ci.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(tr),Hr.subVectors(this.max,tr),hs.subVectors(t.a,tr),cs.subVectors(t.b,tr),us.subVectors(t.c,tr),nn.subVectors(cs,hs),sn.subVectors(us,cs),yn.subVectors(hs,us);let e=[0,-nn.z,nn.y,0,-sn.z,sn.y,0,-yn.z,yn.y,nn.z,0,-nn.x,sn.z,0,-sn.x,yn.z,0,-yn.x,-nn.y,nn.x,0,-sn.y,sn.x,0,-yn.y,yn.x,0];return!Wo(e,hs,cs,us,Hr)||(e=[1,0,0,0,1,0,0,0,1],!Wo(e,hs,cs,us,Hr))?!1:(Vr.crossVectors(nn,sn),e=[Vr.x,Vr.y,Vr.z],Wo(e,hs,cs,us,Hr))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,ci).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(ci).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Bi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Bi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Bi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Bi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Bi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Bi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Bi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Bi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Bi),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}}const Bi=[new F,new F,new F,new F,new F,new F,new F,new F],ci=new F,kr=new ls,hs=new F,cs=new F,us=new F,nn=new F,sn=new F,yn=new F,tr=new F,Hr=new F,Vr=new F,bn=new F;function Wo(r,t,e,i,n){for(let s=0,a=r.length-3;s<=a;s+=3){bn.fromArray(r,s);const o=n.x*Math.abs(bn.x)+n.y*Math.abs(bn.y)+n.z*Math.abs(bn.z),l=t.dot(bn),A=e.dot(bn),h=i.dot(bn);if(Math.max(-Math.max(l,A,h),Math.min(l,A,h))>o)return!1}return!0}const nf=new ls,er=new F,Yo=new F;class Xo{constructor(t=new F,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const i=this.center;e!==void 0?i.copy(e):nf.setFromPoints(t).getCenter(i);let n=0;for(let s=0,a=t.length;s<a;s++)n=Math.max(n,i.distanceToSquared(t[s]));return this.radius=Math.sqrt(n),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){const e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){const i=this.center.distanceToSquared(t);return e.copy(t),i>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;er.subVectors(t,this.center);const e=er.lengthSq();if(e>this.radius*this.radius){const i=Math.sqrt(e),n=(i-this.radius)*.5;this.center.addScaledVector(er,n/i),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(Yo.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(er.copy(t.center).add(Yo)),this.expandByPoint(er.copy(t.center).sub(Yo))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}}const Oi=new F,Zo=new F,Wr=new F,rn=new F,Jo=new F,Yr=new F,jo=new F;class sf{constructor(t=new F,e=new F(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Oi)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=Oi.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Oi.copy(this.origin).addScaledVector(this.direction,e),Oi.distanceToSquared(t))}distanceSqToSegment(t,e,i,n){Zo.copy(t).add(e).multiplyScalar(.5),Wr.copy(e).sub(t).normalize(),rn.copy(this.origin).sub(Zo);const s=t.distanceTo(e)*.5,a=-this.direction.dot(Wr),o=rn.dot(this.direction),l=-rn.dot(Wr),A=rn.lengthSq(),h=Math.abs(1-a*a);let c,u,d,p;if(h>0)if(c=a*l-o,u=a*o-l,p=s*h,c>=0)if(u>=-p)if(u<=p){const m=1/h;c*=m,u*=m,d=c*(c+a*u+2*o)+u*(a*c+u+2*l)+A}else u=s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u=-s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u<=-p?(c=Math.max(0,-(-a*s+o)),u=c>0?-s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A):u<=p?(c=0,u=Math.min(Math.max(-s,-l),s),d=u*(u+2*l)+A):(c=Math.max(0,-(a*s+o)),u=c>0?s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A);else u=a>0?-s:s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;return i&&i.copy(this.origin).addScaledVector(this.direction,c),n&&n.copy(Zo).addScaledVector(Wr,u),d}intersectSphere(t,e){Oi.subVectors(t.center,this.origin);const i=Oi.dot(this.direction),n=Oi.dot(Oi)-i*i,s=t.radius*t.radius;if(n>s)return null;const a=Math.sqrt(s-n),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return t.radius<0?!1:this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return i===null?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,n,s,a,o,l;const A=1/this.direction.x,h=1/this.direction.y,c=1/this.direction.z,u=this.origin;return A>=0?(i=(t.min.x-u.x)*A,n=(t.max.x-u.x)*A):(i=(t.max.x-u.x)*A,n=(t.min.x-u.x)*A),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),i>a||s>n||((s>i||isNaN(i))&&(i=s),(a<n||isNaN(n))&&(n=a),c>=0?(o=(t.min.z-u.z)*c,l=(t.max.z-u.z)*c):(o=(t.max.z-u.z)*c,l=(t.min.z-u.z)*c),i>l||o>n)||((o>i||i!==i)&&(i=o),(l<n||n!==n)&&(n=l),n<0)?null:this.at(i>=0?i:n,e)}intersectsBox(t){return this.intersectBox(t,Oi)!==null}intersectTriangle(t,e,i,n,s){Jo.subVectors(e,t),Yr.subVectors(i,t),jo.crossVectors(Jo,Yr);let a=this.direction.dot(jo),o;if(a>0){if(n)return null;o=1}else if(a<0)o=-1,a=-a;else return null;rn.subVectors(this.origin,t);const l=o*this.direction.dot(Yr.crossVectors(rn,Yr));if(l<0)return null;const A=o*this.direction.dot(Jo.cross(rn));if(A<0||l+A>a)return null;const h=-o*rn.dot(jo);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class ue{constructor(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){ue.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g)}set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){const f=this.elements;return f[0]=t,f[4]=e,f[8]=i,f[12]=n,f[1]=s,f[5]=a,f[9]=o,f[13]=l,f[2]=A,f[6]=h,f[10]=c,f[14]=u,f[3]=d,f[7]=p,f[11]=m,f[15]=g,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 ue().fromArray(this.elements)}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){const e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,i=t.elements,n=1/ds.setFromMatrixColumn(t,0).length(),s=1/ds.setFromMatrixColumn(t,1).length(),a=1/ds.setFromMatrixColumn(t,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*s,e[5]=i[5]*s,e[6]=i[6]*s,e[7]=0,e[8]=i[8]*a,e[9]=i[9]*a,e[10]=i[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,i=t.x,n=t.y,s=t.z,a=Math.cos(i),o=Math.sin(i),l=Math.cos(n),A=Math.sin(n),h=Math.cos(s),c=Math.sin(s);if(t.order==="XYZ"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=-l*c,e[8]=A,e[1]=d+p*A,e[5]=u-m*A,e[9]=-o*l,e[2]=m-u*A,e[6]=p+d*A,e[10]=a*l}else if(t.order==="YXZ"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u+m*o,e[4]=p*o-d,e[8]=a*A,e[1]=a*c,e[5]=a*h,e[9]=-o,e[2]=d*o-p,e[6]=m+u*o,e[10]=a*l}else if(t.order==="ZXY"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u-m*o,e[4]=-a*c,e[8]=p+d*o,e[1]=d+p*o,e[5]=a*h,e[9]=m-u*o,e[2]=-a*A,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=p*A-d,e[8]=u*A+m,e[1]=l*c,e[5]=m*A+u,e[9]=d*A-p,e[2]=-A,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=m-u*c,e[8]=p*c+d,e[1]=c,e[5]=a*h,e[9]=-o*h,e[2]=-A*h,e[6]=d*c+p,e[10]=u-m*c}else if(t.order==="XZY"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=-c,e[8]=A*h,e[1]=u*c+m,e[5]=a*h,e[9]=d*c-p,e[2]=p*c-d,e[6]=o*h,e[10]=m*c+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(rf,t,af)}lookAt(t,e,i){const n=this.elements;return Ye.subVectors(t,e),Ye.lengthSq()===0&&(Ye.z=1),Ye.normalize(),an.crossVectors(i,Ye),an.lengthSq()===0&&(Math.abs(i.z)===1?Ye.x+=1e-4:Ye.z+=1e-4,Ye.normalize(),an.crossVectors(i,Ye)),an.normalize(),Xr.crossVectors(Ye,an),n[0]=an.x,n[4]=Xr.x,n[8]=Ye.x,n[1]=an.y,n[5]=Xr.y,n[9]=Ye.y,n[2]=an.z,n[6]=Xr.z,n[10]=Ye.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[4],l=i[8],A=i[12],h=i[1],c=i[5],u=i[9],d=i[13],p=i[2],m=i[6],g=i[10],f=i[14],y=i[3],S=i[7],v=i[11],w=i[15],T=n[0],R=n[4],P=n[8],E=n[12],x=n[1],b=n[5],z=n[9],B=n[13],U=n[2],W=n[6],Y=n[10],$=n[14],H=n[3],rt=n[7],lt=n[11],mt=n[15];return s[0]=a*T+o*x+l*U+A*H,s[4]=a*R+o*b+l*W+A*rt,s[8]=a*P+o*z+l*Y+A*lt,s[12]=a*E+o*B+l*$+A*mt,s[1]=h*T+c*x+u*U+d*H,s[5]=h*R+c*b+u*W+d*rt,s[9]=h*P+c*z+u*Y+d*lt,s[13]=h*E+c*B+u*$+d*mt,s[2]=p*T+m*x+g*U+f*H,s[6]=p*R+m*b+g*W+f*rt,s[10]=p*P+m*z+g*Y+f*lt,s[14]=p*E+m*B+g*$+f*mt,s[3]=y*T+S*x+v*U+w*H,s[7]=y*R+S*b+v*W+w*rt,s[11]=y*P+S*z+v*Y+w*lt,s[15]=y*E+S*B+v*$+w*mt,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[4],n=t[8],s=t[12],a=t[1],o=t[5],l=t[9],A=t[13],h=t[2],c=t[6],u=t[10],d=t[14],p=t[3],m=t[7],g=t[11],f=t[15];return p*(+s*l*c-n*A*c-s*o*u+i*A*u+n*o*d-i*l*d)+m*(+e*l*d-e*A*u+s*a*u-n*a*d+n*A*h-s*l*h)+g*(+e*A*c-e*o*d-s*a*c+i*a*d+s*o*h-i*A*h)+f*(-n*o*h-e*l*c+e*o*u+n*a*c-i*a*u+i*l*h)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){const n=this.elements;return t.isVector3?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=i),this}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=t[9],u=t[10],d=t[11],p=t[12],m=t[13],g=t[14],f=t[15],y=c*g*A-m*u*A+m*l*d-o*g*d-c*l*f+o*u*f,S=p*u*A-h*g*A-p*l*d+a*g*d+h*l*f-a*u*f,v=h*m*A-p*c*A+p*o*d-a*m*d-h*o*f+a*c*f,w=p*c*l-h*m*l-p*o*u+a*m*u+h*o*g-a*c*g,T=e*y+i*S+n*v+s*w;if(T===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const R=1/T;return t[0]=y*R,t[1]=(m*u*s-c*g*s-m*n*d+i*g*d+c*n*f-i*u*f)*R,t[2]=(o*g*s-m*l*s+m*n*A-i*g*A-o*n*f+i*l*f)*R,t[3]=(c*l*s-o*u*s-c*n*A+i*u*A+o*n*d-i*l*d)*R,t[4]=S*R,t[5]=(h*g*s-p*u*s+p*n*d-e*g*d-h*n*f+e*u*f)*R,t[6]=(p*l*s-a*g*s-p*n*A+e*g*A+a*n*f-e*l*f)*R,t[7]=(a*u*s-h*l*s+h*n*A-e*u*A-a*n*d+e*l*d)*R,t[8]=v*R,t[9]=(p*c*s-h*m*s-p*i*d+e*m*d+h*i*f-e*c*f)*R,t[10]=(a*m*s-p*o*s+p*i*A-e*m*A-a*i*f+e*o*f)*R,t[11]=(h*o*s-a*c*s-h*i*A+e*c*A+a*i*d-e*o*d)*R,t[12]=w*R,t[13]=(h*m*n-p*c*n+p*i*u-e*m*u-h*i*g+e*c*g)*R,t[14]=(p*o*n-a*m*n-p*i*l+e*m*l+a*i*g-e*o*g)*R,t[15]=(a*c*n-h*o*n+h*i*l-e*c*l-a*i*u+e*o*u)*R,this}scale(t){const e=this.elements,i=t.x,n=t.y,s=t.z;return e[0]*=i,e[4]*=n,e[8]*=s,e[1]*=i,e[5]*=n,e[9]*=s,e[2]*=i,e[6]*=n,e[10]*=s,e[3]*=i,e[7]*=n,e[11]*=s,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const i=Math.cos(e),n=Math.sin(e),s=1-i,a=t.x,o=t.y,l=t.z,A=s*a,h=s*o;return this.set(A*a+i,A*o-n*l,A*l+n*o,0,A*o+n*l,h*o+i,h*l-n*a,0,A*l-n*o,h*l+n*a,s*l*l+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,n,s,a){return this.set(1,i,s,0,t,1,a,0,e,n,1,0,0,0,0,1),this}compose(t,e,i){const n=this.elements,s=e._x,a=e._y,o=e._z,l=e._w,A=s+s,h=a+a,c=o+o,u=s*A,d=s*h,p=s*c,m=a*h,g=a*c,f=o*c,y=l*A,S=l*h,v=l*c,w=i.x,T=i.y,R=i.z;return n[0]=(1-(m+f))*w,n[1]=(d+v)*w,n[2]=(p-S)*w,n[3]=0,n[4]=(d-v)*T,n[5]=(1-(u+f))*T,n[6]=(g+y)*T,n[7]=0,n[8]=(p+S)*R,n[9]=(g-y)*R,n[10]=(1-(u+m))*R,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,i){const n=this.elements;let s=ds.set(n[0],n[1],n[2]).length();const a=ds.set(n[4],n[5],n[6]).length(),o=ds.set(n[8],n[9],n[10]).length();this.determinant()<0&&(s=-s),t.x=n[12],t.y=n[13],t.z=n[14],ui.copy(this);const A=1/s,h=1/a,c=1/o;return ui.elements[0]*=A,ui.elements[1]*=A,ui.elements[2]*=A,ui.elements[4]*=h,ui.elements[5]*=h,ui.elements[6]*=h,ui.elements[8]*=c,ui.elements[9]*=c,ui.elements[10]*=c,e.setFromRotationMatrix(ui),i.x=s,i.y=a,i.z=o,this}makePerspective(t,e,i,n,s,a,o=vi,l=!1){const A=this.elements,h=2*s/(e-t),c=2*s/(i-n),u=(e+t)/(e-t),d=(i+n)/(i-n);let p,m;if(l)p=s/(a-s),m=a*s/(a-s);else if(o===vi)p=-(a+s)/(a-s),m=-2*a*s/(a-s);else if(o===zr)p=-a/(a-s),m=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=u,A[12]=0,A[1]=0,A[5]=c,A[9]=d,A[13]=0,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=-1,A[15]=0,this}makeOrthographic(t,e,i,n,s,a,o=vi,l=!1){const A=this.elements,h=2/(e-t),c=2/(i-n),u=-(e+t)/(e-t),d=-(i+n)/(i-n);let p,m;if(l)p=1/(a-s),m=a/(a-s);else if(o===vi)p=-2/(a-s),m=-(a+s)/(a-s);else if(o===zr)p=-1/(a-s),m=-s/(a-s);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=0,A[12]=u,A[1]=0,A[5]=c,A[9]=0,A[13]=d,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=0,A[15]=1,this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<16;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}}const ds=new F,ui=new ue,rf=new F(0,0,0),af=new F(1,1,1),an=new F,Xr=new F,Ye=new F,Kl=new ue,$l=new rs;class di{constructor(t=0,e=0,i=0,n=di.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,n=this._order){return this._x=t,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){const n=t.elements,s=n[0],a=n[4],o=n[8],l=n[1],A=n[5],h=n[9],c=n[2],u=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(kt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,A),this._z=0);break;case"YXZ":this._x=Math.asin(-kt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,A)):(this._y=Math.atan2(-c,s),this._z=0);break;case"ZXY":this._x=Math.asin(kt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,A)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-kt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,A));break;case"YZX":this._z=Math.asin(kt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,A),this._y=Math.atan2(-c,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-kt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,A),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,i===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return Kl.makeRotationFromQuaternion(t),this.setFromRotationMatrix(Kl,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return $l.setFromEuler(this),this.setFromQuaternion($l,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}di.DEFAULT_ORDER="XYZ";class th{constructor(){this.mask=1}set(t){this.mask=(1<<t|0)>>>0}enable(t){this.mask|=1<<t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t|0}disable(t){this.mask&=~(1<<t|0)}disableAll(){this.mask=0}test(t){return(this.mask&t.mask)!==0}isEnabled(t){return(this.mask&(1<<t|0))!==0}}let of=0;const eh=new F,fs=new rs,Ui=new ue,Zr=new F,ir=new F,Af=new F,lf=new rs,ih=new F(1,0,0),nh=new F(0,1,0),sh=new F(0,0,1),rh={type:"added"},hf={type:"removed"},gs={type:"childadded",child:null},Qo={type:"childremoved",child:null};class xe extends ss{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:of++}),this.uuid=qs(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=xe.DEFAULT_UP.clone();const t=new F,e=new di,i=new rs,n=new F(1,1,1);function s(){i.setFromEuler(e,!1)}function a(){e.setFromQuaternion(i,void 0,!1)}e._onChange(s),i._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new ue},normalMatrix:{value:new Nt}}),this.matrix=new ue,this.matrixWorld=new ue,this.matrixAutoUpdate=xe.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=xe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new th,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return fs.setFromAxisAngle(t,e),this.quaternion.multiply(fs),this}rotateOnWorldAxis(t,e){return fs.setFromAxisAngle(t,e),this.quaternion.premultiply(fs),this}rotateX(t){return this.rotateOnAxis(ih,t)}rotateY(t){return this.rotateOnAxis(nh,t)}rotateZ(t){return this.rotateOnAxis(sh,t)}translateOnAxis(t,e){return eh.copy(t).applyQuaternion(this.quaternion),this.position.add(eh.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(ih,t)}translateY(t){return this.translateOnAxis(nh,t)}translateZ(t){return this.translateOnAxis(sh,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(Ui.copy(this.matrixWorld).invert())}lookAt(t,e,i){t.isVector3?Zr.copy(t):Zr.set(t,e,i);const n=this.parent;this.updateWorldMatrix(!0,!1),ir.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?Ui.lookAt(ir,Zr,this.up):Ui.lookAt(Zr,ir,this.up),this.quaternion.setFromRotationMatrix(Ui),n&&(Ui.extractRotation(n.matrixWorld),fs.setFromRotationMatrix(Ui),this.quaternion.premultiply(fs.invert()))}add(t){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return t===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.removeFromParent(),t.parent=this,this.children.push(t),t.dispatchEvent(rh),gs.child=t,this.dispatchEvent(gs),gs.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.remove(arguments[i]);return this}const e=this.children.indexOf(t);return e!==-1&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(hf),Qo.child=t,this.dispatchEvent(Qo),Qo.child=null),this}removeFromParent(){const t=this.parent;return t!==null&&t.remove(this),this}clear(){return this.remove(...this.children)}attach(t){return this.updateWorldMatrix(!0,!1),Ui.copy(this.matrixWorld).invert(),t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),Ui.multiply(t.parent.matrixWorld)),t.applyMatrix4(Ui),t.removeFromParent(),t.parent=this,this.children.push(t),t.updateWorldMatrix(!1,!0),t.dispatchEvent(rh),gs.child=t,this.dispatchEvent(gs),gs.child=null,this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let i=0,n=this.children.length;i<n;i++){const a=this.children[i].getObjectByProperty(t,e);if(a!==void 0)return a}}getObjectsByProperty(t,e,i=[]){this[t]===e&&i.push(this);const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].getObjectsByProperty(t,e,i);return i}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ir,t,Af),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ir,lf,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverseVisible(t)}traverseAncestors(t){const e=this.parent;e!==null&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].updateMatrixWorld(t)}updateWorldMatrix(t,e){const i=this.parent;if(t===!0&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),e===!0){const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].updateWorldMatrix(!1,!0)}}toJSON(t){const e=t===void 0||typeof t=="string",i={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const n={};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),n.instanceInfo=this._instanceInfo.map(o=>({...o})),n.availableInstanceIds=this._availableInstanceIds.slice(),n.availableGeometryIds=this._availableGeometryIds.slice(),n.nextIndexStart=this._nextIndexStart,n.nextVertexStart=this._nextVertexStart,n.geometryCount=this._geometryCount,n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.matricesTexture=this._matricesTexture.toJSON(t),n.indirectTexture=this._indirectTexture.toJSON(t),this._colorsTexture!==null&&(n.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&&(n.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(n.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(n.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=s(t.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 A=0,h=l.length;A<h;A++){const c=l[A];s(t.shapes,c)}else s(t.shapes,l)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(t.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,A=this.material.length;l<A;l++)o.push(s(t.materials,this.material[l]));n.material=o}else n.material=s(t.materials,this.material);if(this.children.length>0){n.children=[];for(let o=0;o<this.children.length;o++)n.children.push(this.children[o].toJSON(t).object)}if(this.animations.length>0){n.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];n.animations.push(s(t.animations,l))}}if(e){const o=a(t.geometries),l=a(t.materials),A=a(t.textures),h=a(t.images),c=a(t.shapes),u=a(t.skeletons),d=a(t.animations),p=a(t.nodes);o.length>0&&(i.geometries=o),l.length>0&&(i.materials=l),A.length>0&&(i.textures=A),h.length>0&&(i.images=h),c.length>0&&(i.shapes=c),u.length>0&&(i.skeletons=u),d.length>0&&(i.animations=d),p.length>0&&(i.nodes=p)}return i.object=n,i;function a(o){const l=[];for(const A in o){const h=o[A];delete h.metadata,l.push(h)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let i=0;i<t.children.length;i++){const n=t.children[i];this.add(n.clone())}return this}}xe.DEFAULT_UP=new F(0,1,0),xe.DEFAULT_MATRIX_AUTO_UPDATE=!0,xe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const fi=new F,zi=new F,qo=new F,Gi=new F,ps=new F,ms=new F,ah=new F,Ko=new F,$o=new F,tA=new F,eA=new he,iA=new he,nA=new he;class gi{constructor(t=new F,e=new F,i=new F){this.a=t,this.b=e,this.c=i}static getNormal(t,e,i,n){n.subVectors(i,e),fi.subVectors(t,e),n.cross(fi);const s=n.lengthSq();return s>0?n.multiplyScalar(1/Math.sqrt(s)):n.set(0,0,0)}static getBarycoord(t,e,i,n,s){fi.subVectors(n,e),zi.subVectors(i,e),qo.subVectors(t,e);const a=fi.dot(fi),o=fi.dot(zi),l=fi.dot(qo),A=zi.dot(zi),h=zi.dot(qo),c=a*A-o*o;if(c===0)return s.set(0,0,0),null;const u=1/c,d=(A*l-o*h)*u,p=(a*h-o*l)*u;return s.set(1-d-p,p,d)}static containsPoint(t,e,i,n){return this.getBarycoord(t,e,i,n,Gi)===null?!1:Gi.x>=0&&Gi.y>=0&&Gi.x+Gi.y<=1}static getInterpolation(t,e,i,n,s,a,o,l){return this.getBarycoord(t,e,i,n,Gi)===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,Gi.x),l.addScaledVector(a,Gi.y),l.addScaledVector(o,Gi.z),l)}static getInterpolatedAttribute(t,e,i,n,s,a){return eA.setScalar(0),iA.setScalar(0),nA.setScalar(0),eA.fromBufferAttribute(t,e),iA.fromBufferAttribute(t,i),nA.fromBufferAttribute(t,n),a.setScalar(0),a.addScaledVector(eA,s.x),a.addScaledVector(iA,s.y),a.addScaledVector(nA,s.z),a}static isFrontFacing(t,e,i,n){return fi.subVectors(i,e),zi.subVectors(t,e),fi.cross(zi).dot(n)<0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,n){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[n]),this}setFromAttributeAndIndices(t,e,i,n){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,n),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return fi.subVectors(this.c,this.b),zi.subVectors(this.a,this.b),fi.cross(zi).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return gi.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return gi.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,n,s){return gi.getInterpolation(t,this.a,this.b,this.c,e,i,n,s)}containsPoint(t){return gi.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return gi.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const i=this.a,n=this.b,s=this.c;let a,o;ps.subVectors(n,i),ms.subVectors(s,i),Ko.subVectors(t,i);const l=ps.dot(Ko),A=ms.dot(Ko);if(l<=0&&A<=0)return e.copy(i);$o.subVectors(t,n);const h=ps.dot($o),c=ms.dot($o);if(h>=0&&c<=h)return e.copy(n);const u=l*c-h*A;if(u<=0&&l>=0&&h<=0)return a=l/(l-h),e.copy(i).addScaledVector(ps,a);tA.subVectors(t,s);const d=ps.dot(tA),p=ms.dot(tA);if(p>=0&&d<=p)return e.copy(s);const m=d*A-l*p;if(m<=0&&A>=0&&p<=0)return o=A/(A-p),e.copy(i).addScaledVector(ms,o);const g=h*p-d*c;if(g<=0&&c-h>=0&&d-p>=0)return ah.subVectors(s,n),o=(c-h)/(c-h+(d-p)),e.copy(n).addScaledVector(ah,o);const f=1/(g+m+u);return a=m*f,o=u*f,e.copy(i).addScaledVector(ps,a).addScaledVector(ms,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const oh={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},on={h:0,s:0,l:0},Jr={h:0,s:0,l:0};function sA(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}class Vt{constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}set(t,e,i){if(e===void 0&&i===void 0){const n=t;n&&n.isColor?this.copy(n):typeof n=="number"?this.setHex(n):typeof n=="string"&&this.setStyle(n)}else this.setRGB(t,e,i);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=_e){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,Yt.colorSpaceToWorking(this,e),this}setRGB(t,e,i,n=Yt.workingColorSpace){return this.r=t,this.g=e,this.b=i,Yt.colorSpaceToWorking(this,n),this}setHSL(t,e,i,n=Yt.workingColorSpace){if(t=Zd(t,1),e=kt(e,0,1),i=kt(i,0,1),e===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+e):i+e-i*e,a=2*i-s;this.r=sA(a,s,t+1/3),this.g=sA(a,s,t),this.b=sA(a,s,t-1/3)}return Yt.colorSpaceToWorking(this,n),this}setStyle(t,e=_e){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^(\w+)\(([^\)]*)\)/.exec(t)){let s;const a=n[1],o=n[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 i(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,e);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(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,e);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 i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(t)){const s=n[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,e);if(a===6)return this.setHex(parseInt(s,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=_e){const i=oh[t.toLowerCase()];return i!==void 0?this.setHex(i,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=Fi(t.r),this.g=Fi(t.g),this.b=Fi(t.b),this}copyLinearToSRGB(t){return this.r=os(t.r),this.g=os(t.g),this.b=os(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=_e){return Yt.workingToColorSpace(Re.copy(this),t),Math.round(kt(Re.r*255,0,255))*65536+Math.round(kt(Re.g*255,0,255))*256+Math.round(kt(Re.b*255,0,255))}getHexString(t=_e){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Yt.workingColorSpace){Yt.workingToColorSpace(Re.copy(this),e);const i=Re.r,n=Re.g,s=Re.b,a=Math.max(i,n,s),o=Math.min(i,n,s);let l,A;const h=(o+a)/2;if(o===a)l=0,A=0;else{const c=a-o;switch(A=h<=.5?c/(a+o):c/(2-a-o),a){case i:l=(n-s)/c+(n<s?6:0);break;case n:l=(s-i)/c+2;break;case s:l=(i-n)/c+4;break}l/=6}return t.h=l,t.s=A,t.l=h,t}getRGB(t,e=Yt.workingColorSpace){return Yt.workingToColorSpace(Re.copy(this),e),t.r=Re.r,t.g=Re.g,t.b=Re.b,t}getStyle(t=_e){Yt.workingToColorSpace(Re.copy(this),t);const e=Re.r,i=Re.g,n=Re.b;return t!==_e?`color(${t} ${e.toFixed(3)} ${i.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(i*255)},${Math.round(n*255)})`}offsetHSL(t,e,i){return this.getHSL(on),this.setHSL(on.h+t,on.s+e,on.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(on),t.getHSL(Jr);const i=Uo(on.h,Jr.h,e),n=Uo(on.s,Jr.s,e),s=Uo(on.l,Jr.l,e);return this.setHSL(i,n,s),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,i=this.g,n=this.b,s=t.elements;return this.r=s[0]*e+s[3]*i+s[6]*n,this.g=s[1]*e+s[4]*i+s[7]*n,this.b=s[2]*e+s[5]*i+s[8]*n,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Re=new Vt;Vt.NAMES=oh;let cf=0;class nr extends ss{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:cf++}),this.uuid=qs(),this.name="",this.type="Material",this.blending=Kn,this.side=Ki,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=Wa,this.blendDst=Ya,this.blendEquation=vn,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Vt(0,0,0),this.blendAlpha=0,this.depthFunc=$n,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Hl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=ns,this.stencilZFail=ns,this.stencilZPass=ns,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const i=t[e];if(i===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Kn&&(i.blending=this.blending),this.side!==Ki&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==Wa&&(i.blendSrc=this.blendSrc),this.blendDst!==Ya&&(i.blendDst=this.blendDst),this.blendEquation!==vn&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==$n&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Hl&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ns&&(i.stencilFail=this.stencilFail),this.stencilZFail!==ns&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==ns&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function n(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(e){const s=n(t.textures),a=n(t.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(e!==null){const n=e.length;i=new Array(n);for(let s=0;s!==n;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}}class rA extends nr{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Vt(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 di,this.combine=Pl,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const pe=new F,jr=new Zt;let uf=0;class xi{constructor(t,e,i=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:uf++}),this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=i,this.usage=Wl,this.updateRanges=[],this.gpuType=Ni,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let n=0,s=this.itemSize;n<s;n++)this.array[t+n]=e.array[i+n];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,i=this.count;e<i;e++)jr.fromBufferAttribute(this,e),jr.applyMatrix3(t),this.setXY(e,jr.x,jr.y);else if(this.itemSize===3)for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.applyMatrix3(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}applyMatrix4(t){for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.applyMatrix4(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.applyNormalMatrix(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}transformDirection(t){for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.transformDirection(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=Ks(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=Ue(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=Ks(e,this.array)),e}setX(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=Ks(e,this.array)),e}setY(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=Ks(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=Ks(e,this.array)),e}setW(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=Ue(e,this.array),i=Ue(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,n){return t*=this.itemSize,this.normalized&&(e=Ue(e,this.array),i=Ue(i,this.array),n=Ue(n,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this}setXYZW(t,e,i,n,s){return t*=this.itemSize,this.normalized&&(e=Ue(e,this.array),i=Ue(i,this.array),n=Ue(n,this.array),s=Ue(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(t.name=this.name),this.usage!==Wl&&(t.usage=this.usage),t}}class Ah extends xi{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class lh extends xi{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class Tn extends xi{constructor(t,e,i){super(new Float32Array(t),e,i)}}let df=0;const Ke=new ue,aA=new xe,Is=new F,Xe=new ls,sr=new ls,Ee=new F;class wn extends ss{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:df++}),this.uuid=qs(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(Zl(t)?lh:Ah)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(i!==void 0){const s=new Nt().getNormalMatrix(t);i.applyNormalMatrix(s),i.needsUpdate=!0}const n=this.attributes.tangent;return n!==void 0&&(n.transformDirection(t),n.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(t){return Ke.makeRotationFromQuaternion(t),this.applyMatrix4(Ke),this}rotateX(t){return Ke.makeRotationX(t),this.applyMatrix4(Ke),this}rotateY(t){return Ke.makeRotationY(t),this.applyMatrix4(Ke),this}rotateZ(t){return Ke.makeRotationZ(t),this.applyMatrix4(Ke),this}translate(t,e,i){return Ke.makeTranslation(t,e,i),this.applyMatrix4(Ke),this}scale(t,e,i){return Ke.makeScale(t,e,i),this.applyMatrix4(Ke),this}lookAt(t){return aA.lookAt(t),aA.updateMatrix(),this.applyMatrix4(aA.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Is).negate(),this.translate(Is.x,Is.y,Is.z),this}setFromPoints(t){const e=this.getAttribute("position");if(e===void 0){const i=[];for(let n=0,s=t.length;n<s;n++){const a=t[n];i.push(a.x,a.y,a.z||0)}this.setAttribute("position",new Tn(i,3))}else{const i=Math.min(t.length,e.count);for(let n=0;n<i;n++){const s=t[n];e.setXYZ(n,s.x,s.y,s.z||0)}t.length>e.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ls);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new F(-1/0,-1/0,-1/0),new F(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let i=0,n=e.length;i<n;i++){const s=e[i];Xe.setFromBufferAttribute(s),this.morphTargetsRelative?(Ee.addVectors(this.boundingBox.min,Xe.min),this.boundingBox.expandByPoint(Ee),Ee.addVectors(this.boundingBox.max,Xe.max),this.boundingBox.expandByPoint(Ee)):(this.boundingBox.expandByPoint(Xe.min),this.boundingBox.expandByPoint(Xe.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Xo);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new F,1/0);return}if(t){const i=this.boundingSphere.center;if(Xe.setFromBufferAttribute(t),e)for(let s=0,a=e.length;s<a;s++){const o=e[s];sr.setFromBufferAttribute(o),this.morphTargetsRelative?(Ee.addVectors(Xe.min,sr.min),Xe.expandByPoint(Ee),Ee.addVectors(Xe.max,sr.max),Xe.expandByPoint(Ee)):(Xe.expandByPoint(sr.min),Xe.expandByPoint(sr.max))}Xe.getCenter(i);let n=0;for(let s=0,a=t.count;s<a;s++)Ee.fromBufferAttribute(t,s),n=Math.max(n,i.distanceToSquared(Ee));if(e)for(let s=0,a=e.length;s<a;s++){const o=e[s],l=this.morphTargetsRelative;for(let A=0,h=o.count;A<h;A++)Ee.fromBufferAttribute(o,A),l&&(Is.fromBufferAttribute(t,A),Ee.add(Is)),n=Math.max(n,i.distanceToSquared(Ee))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const i=e.position,n=e.normal,s=e.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new xi(new Float32Array(4*i.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let P=0;P<i.count;P++)o[P]=new F,l[P]=new F;const A=new F,h=new F,c=new F,u=new Zt,d=new Zt,p=new Zt,m=new F,g=new F;function f(P,E,x){A.fromBufferAttribute(i,P),h.fromBufferAttribute(i,E),c.fromBufferAttribute(i,x),u.fromBufferAttribute(s,P),d.fromBufferAttribute(s,E),p.fromBufferAttribute(s,x),h.sub(A),c.sub(A),d.sub(u),p.sub(u);const b=1/(d.x*p.y-p.x*d.y);isFinite(b)&&(m.copy(h).multiplyScalar(p.y).addScaledVector(c,-d.y).multiplyScalar(b),g.copy(c).multiplyScalar(d.x).addScaledVector(h,-p.x).multiplyScalar(b),o[P].add(m),o[E].add(m),o[x].add(m),l[P].add(g),l[E].add(g),l[x].add(g))}let y=this.groups;y.length===0&&(y=[{start:0,count:t.count}]);for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)f(t.getX(B+0),t.getX(B+1),t.getX(B+2))}const S=new F,v=new F,w=new F,T=new F;function R(P){w.fromBufferAttribute(n,P),T.copy(w);const E=o[P];S.copy(E),S.sub(w.multiplyScalar(w.dot(E))).normalize(),v.crossVectors(T,E);const b=v.dot(l[P])<0?-1:1;a.setXYZW(P,S.x,S.y,S.z,b)}for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)R(t.getX(B+0)),R(t.getX(B+1)),R(t.getX(B+2))}}computeVertexNormals(){const t=this.index,e=this.getAttribute("position");if(e!==void 0){let i=this.getAttribute("normal");if(i===void 0)i=new xi(new Float32Array(e.count*3),3),this.setAttribute("normal",i);else for(let u=0,d=i.count;u<d;u++)i.setXYZ(u,0,0,0);const n=new F,s=new F,a=new F,o=new F,l=new F,A=new F,h=new F,c=new F;if(t)for(let u=0,d=t.count;u<d;u+=3){const p=t.getX(u+0),m=t.getX(u+1),g=t.getX(u+2);n.fromBufferAttribute(e,p),s.fromBufferAttribute(e,m),a.fromBufferAttribute(e,g),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),o.fromBufferAttribute(i,p),l.fromBufferAttribute(i,m),A.fromBufferAttribute(i,g),o.add(h),l.add(h),A.add(h),i.setXYZ(p,o.x,o.y,o.z),i.setXYZ(m,l.x,l.y,l.z),i.setXYZ(g,A.x,A.y,A.z)}else for(let u=0,d=e.count;u<d;u+=3)n.fromBufferAttribute(e,u+0),s.fromBufferAttribute(e,u+1),a.fromBufferAttribute(e,u+2),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),i.setXYZ(u+0,h.x,h.y,h.z),i.setXYZ(u+1,h.x,h.y,h.z),i.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),i.needsUpdate=!0}}normalizeNormals(){const t=this.attributes.normal;for(let e=0,i=t.count;e<i;e++)Ee.fromBufferAttribute(t,e),Ee.normalize(),t.setXYZ(e,Ee.x,Ee.y,Ee.z)}toNonIndexed(){function t(o,l){const A=o.array,h=o.itemSize,c=o.normalized,u=new A.constructor(l.length*h);let d=0,p=0;for(let m=0,g=l.length;m<g;m++){o.isInterleavedBufferAttribute?d=l[m]*o.data.stride+o.offset:d=l[m]*h;for(let f=0;f<h;f++)u[p++]=A[d++]}return new xi(u,h,c)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new wn,i=this.index.array,n=this.attributes;for(const o in n){const l=n[o],A=t(l,i);e.setAttribute(o,A)}const s=this.morphAttributes;for(const o in s){const l=[],A=s[o];for(let h=0,c=A.length;h<c;h++){const u=A[h],d=t(u,i);l.push(d)}e.morphAttributes[o]=l}e.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const A=a[o];e.addGroup(A.start,A.count,A.materialIndex)}return e}toJSON(){const t={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const A in l)l[A]!==void 0&&(t[A]=l[A]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const l in i){const A=i[l];t.data.attributes[l]=A.toJSON(t.data)}const n={};let s=!1;for(const l in this.morphAttributes){const A=this.morphAttributes[l],h=[];for(let c=0,u=A.length;c<u;c++){const d=A[c];h.push(d.toJSON(t.data))}h.length>0&&(n[l]=h,s=!0)}s&&(t.data.morphAttributes=n,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere=o.toJSON()),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;i!==null&&this.setIndex(i.clone());const n=t.attributes;for(const A in n){const h=n[A];this.setAttribute(A,h.clone(e))}const s=t.morphAttributes;for(const A in s){const h=[],c=s[A];for(let u=0,d=c.length;u<d;u++)h.push(c[u].clone(e));this.morphAttributes[A]=h}this.morphTargetsRelative=t.morphTargetsRelative;const a=t.groups;for(let A=0,h=a.length;A<h;A++){const c=a[A];this.addGroup(c.start,c.count,c.materialIndex)}const o=t.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=t.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const hh=new ue,Rn=new sf,Qr=new Xo,ch=new F,qr=new F,Kr=new F,$r=new F,oA=new F,ta=new F,uh=new F,ea=new F;class pi extends xe{constructor(t=new wn,e=new rA){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length>0){const n=e[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=n.length;s<a;s++){const o=n[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}getVertexPosition(t,e){const i=this.geometry,n=i.attributes.position,s=i.morphAttributes.position,a=i.morphTargetsRelative;e.fromBufferAttribute(n,t);const o=this.morphTargetInfluences;if(s&&o){ta.set(0,0,0);for(let l=0,A=s.length;l<A;l++){const h=o[l],c=s[l];h!==0&&(oA.fromBufferAttribute(c,t),a?ta.addScaledVector(oA,h):ta.addScaledVector(oA.sub(e),h))}e.add(ta)}return e}raycast(t,e){const i=this.geometry,n=this.material,s=this.matrixWorld;n!==void 0&&(i.boundingSphere===null&&i.computeBoundingSphere(),Qr.copy(i.boundingSphere),Qr.applyMatrix4(s),Rn.copy(t.ray).recast(t.near),!(Qr.containsPoint(Rn.origin)===!1&&(Rn.intersectSphere(Qr,ch)===null||Rn.origin.distanceToSquared(ch)>(t.far-t.near)**2))&&(hh.copy(s).invert(),Rn.copy(t.ray).applyMatrix4(hh),!(i.boundingBox!==null&&Rn.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(t,e,Rn)))}_computeIntersections(t,e,i){let n;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,A=s.attributes.uv,h=s.attributes.uv1,c=s.attributes.normal,u=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(o.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=o.getX(v),R=o.getX(v+1),P=o.getX(v+2);n=ia(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(o.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=o.getX(g),S=o.getX(g+1),v=o.getX(g+2);n=ia(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}else if(l!==void 0)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(l.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=v,R=v+1,P=v+2;n=ia(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(l.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=g,S=g+1,v=g+2;n=ia(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}}}function ff(r,t,e,i,n,s,a,o){let l;if(t.side===Oe?l=i.intersectTriangle(a,s,n,!0,o):l=i.intersectTriangle(n,s,a,t.side===Ki,o),l===null)return null;ea.copy(o),ea.applyMatrix4(r.matrixWorld);const A=e.ray.origin.distanceTo(ea);return A<e.near||A>e.far?null:{distance:A,point:ea.clone(),object:r}}function ia(r,t,e,i,n,s,a,o,l,A){r.getVertexPosition(o,qr),r.getVertexPosition(l,Kr),r.getVertexPosition(A,$r);const h=ff(r,t,e,i,qr,Kr,$r,uh);if(h){const c=new F;gi.getBarycoord(uh,qr,Kr,$r,c),n&&(h.uv=gi.getInterpolatedAttribute(n,o,l,A,c,new Zt)),s&&(h.uv1=gi.getInterpolatedAttribute(s,o,l,A,c,new Zt)),a&&(h.normal=gi.getInterpolatedAttribute(a,o,l,A,c,new F),h.normal.dot(i.direction)>0&&h.normal.multiplyScalar(-1));const u={a:o,b:l,c:A,normal:new F,materialIndex:0};gi.getNormal(qr,Kr,$r,u.normal),h.face=u,h.barycoord=c}return h}class Cs extends wn{constructor(t=1,e=1,i=1,n=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:i,widthSegments:n,heightSegments:s,depthSegments:a};const o=this;n=Math.floor(n),s=Math.floor(s),a=Math.floor(a);const l=[],A=[],h=[],c=[];let u=0,d=0;p("z","y","x",-1,-1,i,e,t,a,s,0),p("z","y","x",1,-1,i,e,-t,a,s,1),p("x","z","y",1,1,t,i,e,n,a,2),p("x","z","y",1,-1,t,i,-e,n,a,3),p("x","y","z",1,-1,t,e,i,n,s,4),p("x","y","z",-1,-1,t,e,-i,n,s,5),this.setIndex(l),this.setAttribute("position",new Tn(A,3)),this.setAttribute("normal",new Tn(h,3)),this.setAttribute("uv",new Tn(c,2));function p(m,g,f,y,S,v,w,T,R,P,E){const x=v/R,b=w/P,z=v/2,B=w/2,U=T/2,W=R+1,Y=P+1;let $=0,H=0;const rt=new F;for(let lt=0;lt<Y;lt++){const mt=lt*b-B;for(let Ot=0;Ot<W;Ot++){const se=Ot*x-z;rt[m]=se*y,rt[g]=mt*S,rt[f]=U,A.push(rt.x,rt.y,rt.z),rt[m]=0,rt[g]=0,rt[f]=T>0?1:-1,h.push(rt.x,rt.y,rt.z),c.push(Ot/R),c.push(1-lt/P),$+=1}}for(let lt=0;lt<P;lt++)for(let mt=0;mt<R;mt++){const Ot=u+mt+W*lt,se=u+mt+W*(lt+1),$t=u+(mt+1)+W*(lt+1),J=u+(mt+1)+W*lt;l.push(Ot,se,J),l.push(se,$t,J),H+=6}o.addGroup(d,H,E),d+=H,u+=$}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new Cs(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}}function vs(r){const t={};for(const e in r){t[e]={};for(const i in r[e]){const n=r[e][i];n&&(n.isColor||n.isMatrix3||n.isMatrix4||n.isVector2||n.isVector3||n.isVector4||n.isTexture||n.isQuaternion)?n.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[e][i]=null):t[e][i]=n.clone():Array.isArray(n)?t[e][i]=n.slice():t[e][i]=n}}return t}function Pe(r){const t={};for(let e=0;e<r.length;e++){const i=vs(r[e]);for(const n in i)t[n]=i[n]}return t}function gf(r){const t=[];for(let e=0;e<r.length;e++)t.push(r[e].clone());return t}function dh(r){const t=r.getRenderTarget();return t===null?r.outputColorSpace:t.isXRRenderTarget===!0?t.texture.colorSpace:Yt.workingColorSpace}const pf={clone:vs,merge:Pe};var mf=`void main() {
124
+ }`,ml={depth_vert:_u,depth_frag:Pu};class Lu extends Kn{constructor(t=(n,s,a)=>a.set(n,s,Math.cos(n)*Math.sin(s)),e=8,i=8){super(),this.type="ParametricGeometry",this.parameters={func:t,slices:e,stacks:i};const n=[],s=[],a=[],o=[],l=1e-5,A=new V,h=new V,c=new V,u=new V,d=new V,p=e+1;for(let m=0;m<=i;m++){const g=m/i;for(let f=0;f<=e;f++){const y=f/e;t(y,g,h),s.push(h.x,h.y,h.z),y-l>=0?(t(y-l,g,c),u.subVectors(h,c)):(t(y+l,g,c),u.subVectors(c,h)),g-l>=0?(t(y,g-l,c),d.subVectors(h,c)):(t(y,g+l,c),d.subVectors(c,h)),A.crossVectors(u,d).normalize(),a.push(A.x,A.y,A.z),o.push(y,g)}}for(let m=0;m<i;m++)for(let g=0;g<e;g++){const f=m*p+g,y=m*p+g+1,S=(m+1)*p+g+1,v=(m+1)*p+g;n.push(f,y,v),n.push(y,S,v)}this.setIndex(n),this.setAttribute("position",new pn(s,3)),this.setAttribute("normal",new pn(a,3)),this.setAttribute("uv",new pn(o,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}}const Ya=new V;class Cn{p1;p2;restDistance;constructor(t,e,i){this.p1=t,this.p2=e,this.restDistance=i}resolve(){const t=this.p1,e=this.p2,i=this.restDistance;Ya.subVectors(e.position,t.position);const n=Ya.length();if(n===0)return;const s=Ya.multiplyScalar((1-i/n)/2);t.position.add(s),e.position.sub(s)}}const Il=2,Du=.03,Nu=1-Du,Fu=.12,Bu=1.225;class Ou{position;previous;original;mass;inverseMass;acceleration;tmp;constructor(t,e){this.position=t.clone(),this.previous=t.clone(),this.original=t.clone(),this.mass=e,this.inverseMass=1/e,this.acceleration=new V,this.tmp=new V}applyForce(t){this.acceleration.addScaledVector(t,this.inverseMass)}integrate(t){const e=this.tmp.subVectors(this.position,this.previous).multiplyScalar(Nu).add(this.position).addScaledVector(this.acceleration,t);this.tmp=this.previous,this.previous=this.position,this.position=e,this.acceleration.set(0,0,0)}}class Uu{xSegments;ySegments;restDistance;width;height;particles;constraints;particleAt;geometry;constructor(t,e,i,n){const s=i*t,a=i*e,o=[],l=[],A=(m,g)=>o[m+g*(t+1)],h=(m,g,f)=>{f.set(m*s,g*a,0)},c=new V,u=n/((e+1)*(t+1));for(let m=0;m<=e;m++)for(let g=0;g<=t;g++)h(g/t,m/e,c),o.push(new Ou(c,u));for(let m=0;m<e;m++)for(let g=0;g<t;g++)l.push(new Cn(A(g,m),A(g,m+1),i),new Cn(A(g,m),A(g+1,m),i));for(let m=t,g=0;g<e;g++)l.push(new Cn(A(m,g),A(m,g+1),i));for(let m=e,g=0;g<t;g++)l.push(new Cn(A(g,m),A(g+1,m),i));const d=Math.sqrt(i*i*2);for(let m=0;m<e;m++)for(let g=0;g<t;g++)l.push(new Cn(A(g,m),A(g+1,m+1),d),new Cn(A(g+1,m),A(g,m+1),d));const p=new Lu(h,t,e);p.getAttribute("position").setUsage(35040),this.xSegments=t,this.ySegments=e,this.restDistance=i,this.width=s,this.height=a,this.particles=o,this.constraints=l,this.particleAt=A,this.geometry=p}reset(){for(const t of this.particles)t.previous.copy(t.position.copy(t.original))}simulate(t){const e=this.particles,i=this.constraints,n=Math.pow(t,2);for(let s=0,a=e.length;s<a;s++)e[s].integrate(n);for(let s=0,a=Il;s<a;s++)for(let o=0,l=i.length;o<l;o++)i[o].resolve()}render(){const t=this.particles,e=this.geometry,i=e.getAttribute("position"),n=i.array;for(let s=0,a=t.length;s<a;s++){const o=t[s].position,l=s*3;n[l]=o.x,n[l+1]=o.y,n[l+2]=o.z}i.needsUpdate=!0,e.computeVertexNormals()}}function zu(r){const{width:t,height:e,mass:i,restDistance:n}=r;return new Uu(Math.max(1,Math.round(t/n)),Math.max(1,Math.round(e/n)),n,i*t*e)}function Cl(r,t,e){const i=r*t,n=new Uint8Array(4*i),s=Math.floor(e.r*255),a=Math.floor(e.g*255),o=Math.floor(e.b*255),l=255;for(let h=0;h<i;h++){const c=h*4;n[c]=s,n[c+1]=a,n[c+2]=o,n[c+3]=l}const A=new Mu(n,r,t,1023,1009);return A.needsUpdate=!0,A}const Gu=Cl(1,1,new ji(16777215));function ku(r,t){const e=r.geometry;let i=Gu,n;const s=o=>(o.needsUpdate=!0,o.anisotropy=16,o.minFilter=1006,o.magFilter=1006,o.wrapS=1001,o.wrapT=1001,o),a=(o,l)=>{o.colorSpace=ke;const A=new pl({alphaTest:.5,color:16777215,metalness:.08,roughness:.86,side:l,map:o}),h=new gl(e,A);return h.castShadow=!0,h.customDepthMaterial=new Ru({uniforms:{textureMap:{value:o}},vertexShader:ml.depth_vert,fragmentShader:ml.depth_frag,side:l,lights:!1,defines:{DEPTH_PACKING:"3200"}}),h.position.set(0,-r.height,0),h};return t?.texture instanceof Ii?(i=s(t.texture),t.backSideTexture instanceof Ii&&(n=s(t.backSideTexture))):t?.texture!==void 0&&console.error("FlagWaver.Flag: options.texture must be an instance of THREE.Texture."),[a(i,n!==void 0?0:2),n!==void 0?a(n,1):null]}const le={TOP:"top",LEFT:"left",BOTTOM:"bottom",RIGHT:"right"},Hu=(()=>{const r={edges:[],spacing:1};function t(e,i,n,s){const{xSegments:a,ySegments:o,particleAt:l}=e,{spacing:A}=s;switch(n){case le.TOP:for(let h=0;h<=a;h+=A)i.push(l(h,o));break;case le.LEFT:for(let h=0;h<=o;h+=A)i.push(l(0,h));break;case le.BOTTOM:for(let h=0;h<=a;h+=A)i.push(l(h,0));break;case le.RIGHT:for(let h=0;h<=o;h+=A)i.push(l(a,h));break}}return function(e,i,n={}){const s={...r,...n},{edges:a}=s;if(typeof a=="string")t(e,i,a,s);else if(Array.isArray(a)&&a.length>0)for(let o=0,l=a.length;o<l;o++)t(e,i,a[o],s)}})(),vl=1.2,Dr=new V;class xl extends Cn{resolve(){const t=this.p1,e=this.p2,i=this.restDistance*vl;Dr.subVectors(t.position,e.position);const n=Dr.length()/vl;Dr.normalize();const s=Dr.multiplyScalar(n-i);n>i&&e.position.add(s)}}function El(r){if(Array.isArray(r))for(const t of r)Sl(t);else Sl(r)}function Sl(r){r.map?.dispose(),r.dispose()}const Vu=Cl(1,1,new ji(16777215));class Js{cloth;pins;lengthConstraints;mesh;mesh2;object;static defaults={width:1.8,height:1.2,mass:.11,restDistance:1.2/10,rigidness:1,texture:Vu,backSideTexture:void 0,pin:{edges:[le.LEFT],spacing:1}};constructor(t={}){const e={...Js.defaults,...t};this.cloth=zu(e),this.pins=[],this.lengthConstraints=[];const[i,n]=ku(this.cloth,e);this.mesh=i,this.mesh2=n,this.object=new Qe,this.object.add(this.mesh),this.mesh2!==null&&this.object.add(this.mesh2),this.pin(e.pin)}destroy(){El(this.mesh.material),this.mesh.geometry.dispose(),this.mesh.customDepthMaterial?.dispose(),this.mesh2!==null&&(El(this.mesh2.material),this.mesh2.customDepthMaterial?.dispose())}pin(t){Hu(this.cloth,this.pins,t)}unpin(){this.pins=[]}setLengthConstraints(t){const{xSegments:e,ySegments:i,restDistance:n,particleAt:s}=this.cloth,a=[];if(t===le.LEFT)for(let o=0;o<=i;o++)for(let l=0;l<e;l++)a.push(new xl(s(l,o),s(l+1,o),n));else if(t===le.TOP)for(let o=0;o<=e;o++)for(let l=i;l>0;l--)a.push(new xl(s(o,l),s(o,l-1),n));this.lengthConstraints=a}reset(){this.cloth.reset()}simulate(t){const e=this.pins,i=this.lengthConstraints;this.cloth.simulate(t);for(const n of e)n.previous.copy(n.position.copy(n.original));for(let n=0;n<Il;n++)for(const s of i)s.resolve()}render(){this.cloth.render()}setTexture(t){t.needsUpdate=!0,t.anisotropy=16,t.minFilter=1006,t.magFilter=1006,t.wrapS=1001,t.wrapT=1001,t.colorSpace=ke;const e=this.mesh.material;e.map!==null&&e.map!==void 0&&(e.map=t,e.needsUpdate=!0);const i=this.mesh.customDepthMaterial;if(i!=null){const n=i;n.uniforms!=null&&n.uniforms.textureMap!=null&&(n.uniforms.textureMap.value=t)}if(this.mesh2!=null){const n=this.mesh2.material;n.map!=null&&(n.map=t,n.needsUpdate=!0);const s=this.mesh2.customDepthMaterial;if(s!=null){const a=s;a.uniforms?.textureMap!=null&&(a.uniforms.textureMap.value=t)}}}}const vn={CROSSBAR:"CROSSBAR",GALLERY:"GALLERY",HORIZONTAL:"HORIZONTAL",OUTRIGGER:"OUTRIGGER",VERTICAL:"VERTICAL"},js={NONE:"none",TOP_RIGHT:"topright",TOP_LEFT:"topleft"};class Pi{top;mesh;object;constructor(t){this.create(t)}static defaults={flagpoleType:vn.VERTICAL,poleWidth:.076,poleLength:6,poleCapSize:.076*4/3,crossbarWidth:.076*2/3,crossbarLength:1.2,crossbarCapSize:.076*2/3*3/2,poleTopOffset:.1,verticalHoisting:js.TOP_RIGHT};destroy(){this.mesh!==void 0&&((Array.isArray(this.mesh.material)?this.mesh.material:[this.mesh.material]).forEach(t=>{t.dispose()}),this.mesh.geometry.dispose())}create(t){this.destroy();const e=Object.assign({},Pi.defaults,t),i=this.buildGeometry(e),n=new pl({color:16711422,metalness:.98,roughness:.55}),s=new gl(i,n);s.receiveShadow=!0,s.castShadow=!0,this.top=new V(0,e.poleLength,0),this.mesh=s,this.object=this.mesh}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top)}}function Xa(r,t=!1){const e=r[0].index!==null,i=new Set(Object.keys(r[0].attributes)),n=new Set(Object.keys(r[0].morphAttributes)),s={},a={},o=r[0].morphTargetsRelative,l=new Kn;let A=0;for(let h=0;h<r.length;++h){const c=r[h];let u=0;if(e!==(c.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const d in c.attributes){if(!i.has(d))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+'. All geometries must have compatible attributes; make sure "'+d+'" attribute exists among all geometries, or in none of them.'),null;s[d]===void 0&&(s[d]=[]),s[d].push(c.attributes[d]),u++}if(u!==i.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". Make sure all geometries have the same number of attributes."),null;if(o!==c.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const d in c.morphAttributes){if(!n.has(d))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". .morphAttributes must be consistent throughout all geometries."),null;a[d]===void 0&&(a[d]=[]),a[d].push(c.morphAttributes[d])}if(t){let d;if(e)d=c.index.count;else if(c.attributes.position!==void 0)d=c.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+h+". The geometry must have either an index or a position attribute"),null;l.addGroup(A,d,h),A+=d}}if(e){let h=0;const c=[];for(let u=0;u<r.length;++u){const d=r[u].index;for(let p=0;p<d.count;++p)c.push(d.getX(p)+h);h+=r[u].attributes.position.count}l.setIndex(c)}for(const h in s){const c=Ml(s[h]);if(!c)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" attribute."),null;l.setAttribute(h,c)}for(const h in a){const c=a[h][0].length;if(c===0)break;l.morphAttributes=l.morphAttributes||{},l.morphAttributes[h]=[];for(let u=0;u<c;++u){const d=[];for(let m=0;m<a[h].length;++m)d.push(a[h][m][u]);const p=Ml(d);if(!p)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+h+" morphAttribute."),null;l.morphAttributes[h].push(p)}}return l}function Ml(r){let t,e,i,n=-1,s=0;for(let A=0;A<r.length;++A){const h=r[A];if(t===void 0&&(t=h.array.constructor),t!==h.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(e===void 0&&(e=h.itemSize),e!==h.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(i===void 0&&(i=h.normalized),i!==h.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(n===-1&&(n=h.gpuType),n!==h.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;s+=h.count*e}const a=new t(s),o=new gn(a,e,i);let l=0;for(let A=0;A<r.length;++A){const h=r[A];if(h.isInterleavedBufferAttribute){const c=l/e;for(let u=0,d=h.count;u<d;u++)for(let p=0;p<e;p++){const m=h.getComponent(u,p);o.setComponent(u+c,p,m)}}else a.set(h.array,l);l+=h.count*e}return n!==void 0&&(o.gpuType=n),o}function Qs(r){const t=r.poleWidth/2,e=r.poleLength,i=32,n=r.poleCapSize/2,s=new In(t,t,e,i);s.translate(0,r.poleLength/2,0);const a=new In(n,n,n,i);return a.translate(0,e+n/2,0),Xa([s,a])}function Wu(r){const t=Qs(r),e=r.poleWidth/2,i=r.poleLength,n=r.crossbarWidth/2,s=r.crossbarLength,a=16,o=r.crossbarCapSize/2,l=r.poleTopOffset,A=new In(n,n,s,a);A.rotateZ(Math.PI/2);const h=new In(o,o,o,a),c=h.clone(),u=i-l,d=e+n;return h.rotateZ(Math.PI/2),h.translate(-s/2,u,d),c.rotateZ(-Math.PI/2),c.translate(s/2,u,d),A.translate(0,u,d),Xa([t,A,h,c])}function Yu(r){const t=Qs(r),e=r.poleLength,i=r.poleCapSize/2,n=r.crossbarWidth/2,s=r.crossbarLength,a=16,o=new In(n,n,s,a);return o.rotateZ(Math.PI/2),o.translate(s/2,e+i-n,0),Xa([t,o])}class yl extends Pi{constructor(t={}){super(t)}buildGeometry(t){return Qs(t)}}class Xu{flagpole;flag;object;constructor(t={}){const e={...t},{flagpole:i,flag:n}=e;this.flagpole=i??new yl,this.flag=n??new Js,this.flagpole.addFlag(this.flag),this.object=new Qe,this.object.add(this.flagpole.object),this.object.add(this.flag.object)}destroy(){this.destroyChildSubject(this.flagpole),this.destroyChildSubject(this.flag)}destroyChildSubject(t){t!=null&&(this.object.remove(t.object),t.destroy())}reset(){this.flag.reset()}simulate(t){this.flag.simulate(t)}render(){this.flag.render()}setTexture(t){this.flag.setTexture(t)}}function Zu(r){return r===0?.001:r}function Ju(r){return r.x===0&&(r.x=.001),r.y===0&&(r.y=.001),r.z===0&&(r.z=.001),r}const bl={blowFromLeftDirection:r=>r.set(2e3,0,1e3),constantSpeed:r=>r};function ju(r){return .5*Bu*Math.pow(r,2)}class Za{direction;speed;directionFn;speedFn;pressure;static defaults={direction:new V(1,0,0),speed:10,directionFn:bl.blowFromLeftDirection,speedFn:bl.constantSpeed};constructor(t={}){const e={...Za.defaults,...t};this.direction=e.direction.clone(),this.speed=e.speed,this.directionFn=e.directionFn,this.speedFn=e.speedFn,this.pressure=new V}update(){const t=Date.now();this.directionFn(Ju(this.pressure.copy(this.direction)),t).normalize().multiplyScalar(ju(this.speedFn(Zu(this.speed),t)))}}const Nr=new V,Tl=new V;function wl(r,t){return Nr.copy(r),t instanceof Qe&&(Tl.setFromMatrixPosition(t.matrixWorld),Nr.add(Tl),t.worldToLocal(Nr)),Nr}const Qu=new V(0,-9.80665,0);function qu(r,t){const e=r.particles,i=wl(Qu,t);for(let n=0,s=e.length;n<s;n++)e[n].acceleration.add(i)}const Fr=new V,Rl=new V;function Ku(r){return r<0?0:r>1?1:r}function _l(r){const t=Math.sin(r*12.9898)*43758.5453;return t-Math.floor(t)}function $u(r,t){const e=Ku(t?.randomizeAmount??0);if(e===0)return 1;const i=t?.randomSeed??r?.id??0,n=t?.time??0,s=.5+_l(i)*2,a=_l(i+1e3)*Math.PI*2;return 1+(Math.sin(n*s+a)*.5+Math.sin(n*s*1.7+a*.3)*.3)*e}function td(r,t,e){return Fr.subVectors(e,t),Rl.subVectors(r,t),Fr.cross(Rl),Fr.normalize(),Fr}function ed(r,t,e,i){const n=r.particles,s=r.geometry.getIndex();if(t==null||s==null)return;const a=r.restDistance*r.restDistance/2,o=$u(e,i),l=wl(t.pressure,e).multiplyScalar(Fu*a/3*o);for(let A=0,h=s.count;A<h;A+=3){const c=s.getX(A),u=s.getX(A+1),d=s.getX(A+2),p=n[c],m=n[u],g=n[d],f=td(p.position,m.position,g.position);f.multiplyScalar(f.dot(l)),p.applyForce(f),m.applyForce(f),g.applyForce(f)}}function id(r){return new Js(r)}function nd(r,t){const e={...r};return Object.entries(t).forEach(([i,n])=>{n!==void 0&&(e[i]=n)}),e}class sd extends Pi{verticalHoisting;constructor(t={}){super(t);const e=nd(Pi.defaults,t);this.top.set(0,e.poleLength-e.poleTopOffset,e.poleWidth/2+e.crossbarWidth/2),this.verticalHoisting=e.verticalHoisting}buildGeometry(t){return Wu(t)}addFlag(t){switch(t.unpin(),this.verticalHoisting){case js.NONE:t.pin({edges:[le.TOP]}),t.setLengthConstraints(le.TOP),t.object.position.add(this.top),t.object.position.x=-t.cloth.width/2;break;case js.TOP_LEFT:t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.position.x=-t.cloth.height/2,t.object.rotateZ(Math.PI*3/2),t.object.rotateX(Math.PI);break;case js.TOP_RIGHT:default:t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.position.x=t.cloth.height/2,t.object.rotateZ(Math.PI*3/2);break}}}class rd extends Pi{buildGeometry(t){return Yu(t)}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT,le.TOP]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top)}}const ad=new V(0,0,1);class od extends Pi{constructor(t={}){super(t),this.top.applyAxisAngle(ad,Math.PI*3/2)}buildGeometry(t){const e=Qs(t);return e.rotateZ(Math.PI*3/2),e}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.rotateZ(Math.PI*3/2)}}const Ad=new V(0,0,1);class ld extends Pi{constructor(t={}){super(t),this.top.applyAxisAngle(Ad,Math.PI*7/4)}buildGeometry(t){const e=Qs(t);return e.rotateZ(Math.PI*7/4),e}addFlag(t){t.unpin(),t.pin({edges:[le.LEFT]}),t.setLengthConstraints(le.LEFT),t.object.position.add(this.top),t.object.rotateZ(Math.PI*7/4)}}function hd(r,t){const e=Object.assign({},r);let i;switch(e.flagpoleType){case vn.HORIZONTAL:i=new od(e);break;case vn.OUTRIGGER:i=new ld(e);break;case vn.CROSSBAR:e.crossbarLength=e.verticalHoisting===js.NONE?t.cloth.width:t.cloth.height,i=new sd(e);break;case vn.GALLERY:e.crossbarLength=t.cloth.width,i=new rd(e);break;case vn.VERTICAL:default:i=new yl(e);break}return i}const Li=Object.freeze(Object.defineProperty({__proto__:null,FLAG_POLE_TYPE:vn,Flag:Js,FlagGroup:Xu,Flagpole:Pi,Wind:Za,applyGravityToCloth:qu,applyWindForceToCloth:ed,buildFlag:id,buildFlagpole:hd},Symbol.toStringTag,{value:"Module"}));const Ja="179",cd=0,Pl=1,ud=2,Ll=1,dd=2,Di=3,$i=0,Oe=1,Ni=2,tn=0,$n=1,Dl=2,Nl=3,Fl=4,fd=5,xn=100,gd=101,pd=102,md=103,Id=104,Cd=200,vd=201,xd=202,Ed=203,ja=204,Qa=205,Sd=206,Md=207,yd=208,bd=209,Td=210,wd=211,Rd=212,_d=213,Pd=214,qa=0,Ka=1,$a=2,ts=3,to=4,eo=5,io=6,no=7,Bl=0,Ld=1,Dd=2,en=0,Nd=1,Fd=2,Bd=3,Od=4,Ud=5,zd=6,Gd=7,Ol=300,es=301,is=302,so=303,ro=304,Br=306,ao=1e3,En=1001,oo=1002,hi=1003,kd=1004,Or=1005,Ci=1006,Ao=1007,Sn=1008,vi=1009,Ul=1010,zl=1011,qs=1012,lo=1013,Mn=1014,Fi=1015,Ks=1016,ho=1017,co=1018,$s=1020,Gl=35902,kl=1021,Hl=1022,ci=1023,tr=1026,er=1027,Vl=1028,uo=1029,Wl=1030,fo=1031,go=1033,Ur=33776,zr=33777,Gr=33778,kr=33779,po=35840,mo=35841,Io=35842,Co=35843,vo=36196,xo=37492,Eo=37496,So=37808,Mo=37809,yo=37810,bo=37811,To=37812,wo=37813,Ro=37814,_o=37815,Po=37816,Lo=37817,Do=37818,No=37819,Fo=37820,Bo=37821,Hr=36492,Oo=36494,Uo=36495,Yl=36283,zo=36284,Go=36285,ko=36286,Hd=3200,Vd=3201,Xl=0,Wd=1,nn="",_e="srgb",ns="srgb-linear",Vr="linear",qt="srgb",ss=7680,Zl=519,Yd=512,Xd=513,Zd=514,Jl=515,Jd=516,jd=517,Qd=518,qd=519,jl=35044,Ql="300 es",xi=2e3,Wr=2001;class rs{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});const i=this._listeners;i[t]===void 0&&(i[t]=[]),i[t].indexOf(e)===-1&&i[t].push(e)}hasEventListener(t,e){const i=this._listeners;return i===void 0?!1:i[t]!==void 0&&i[t].indexOf(e)!==-1}removeEventListener(t,e){const i=this._listeners;if(i===void 0)return;const n=i[t];if(n!==void 0){const s=n.indexOf(e);s!==-1&&n.splice(s,1)}}dispatchEvent(t){const e=this._listeners;if(e===void 0)return;const i=e[t.type];if(i!==void 0){t.target=this;const n=i.slice(0);for(let s=0,a=n.length;s<a;s++)n[s].call(this,t);t.target=null}}}const Te=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"],Ho=Math.PI/180,Yr=180/Math.PI;function ir(){const r=Math.random()*4294967295|0,t=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Te[r&255]+Te[r>>8&255]+Te[r>>16&255]+Te[r>>24&255]+"-"+Te[t&255]+Te[t>>8&255]+"-"+Te[t>>16&15|64]+Te[t>>24&255]+"-"+Te[e&63|128]+Te[e>>8&255]+"-"+Te[e>>16&255]+Te[e>>24&255]+Te[i&255]+Te[i>>8&255]+Te[i>>16&255]+Te[i>>24&255]).toLowerCase()}function kt(r,t,e){return Math.max(t,Math.min(e,r))}function Kd(r,t){return(r%t+t)%t}function Vo(r,t,e){return(1-e)*r+e*t}function nr(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Ue(r,t){switch(t.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}class Zt{constructor(t=0,e=0){Zt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,i=this.y,n=t.elements;return this.x=n[0]*e+n[3]*i+n[6],this.y=n[1]*e+n[4]*i+n[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(kt(i,t,e))}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(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.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(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(kt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y;return e*e+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const i=Math.cos(e),n=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*i-a*n+t.x,this.y=s*n+a*i+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class as{constructor(t=0,e=0,i=0,n=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=i,this._w=n}static slerpFlat(t,e,i,n,s,a,o){let l=i[n+0],A=i[n+1],h=i[n+2],c=i[n+3];const u=s[a+0],d=s[a+1],p=s[a+2],m=s[a+3];if(o===0){t[e+0]=l,t[e+1]=A,t[e+2]=h,t[e+3]=c;return}if(o===1){t[e+0]=u,t[e+1]=d,t[e+2]=p,t[e+3]=m;return}if(c!==m||l!==u||A!==d||h!==p){let g=1-o;const f=l*u+A*d+h*p+c*m,y=f>=0?1:-1,S=1-f*f;if(S>Number.EPSILON){const w=Math.sqrt(S),T=Math.atan2(w,f*y);g=Math.sin(g*T)/w,o=Math.sin(o*T)/w}const v=o*y;if(l=l*g+u*v,A=A*g+d*v,h=h*g+p*v,c=c*g+m*v,g===1-o){const w=1/Math.sqrt(l*l+A*A+h*h+c*c);l*=w,A*=w,h*=w,c*=w}}t[e]=l,t[e+1]=A,t[e+2]=h,t[e+3]=c}static multiplyQuaternionsFlat(t,e,i,n,s,a){const o=i[n],l=i[n+1],A=i[n+2],h=i[n+3],c=s[a],u=s[a+1],d=s[a+2],p=s[a+3];return t[e]=o*p+h*c+l*d-A*u,t[e+1]=l*p+h*u+A*c-o*d,t[e+2]=A*p+h*d+o*u-l*c,t[e+3]=h*p-o*c-l*u-A*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,i,n){return this._x=t,this._y=e,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const i=t._x,n=t._y,s=t._z,a=t._order,o=Math.cos,l=Math.sin,A=o(i/2),h=o(n/2),c=o(s/2),u=l(i/2),d=l(n/2),p=l(s/2);switch(a){case"XYZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"YXZ":this._x=u*h*c+A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"ZXY":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c-u*d*p;break;case"ZYX":this._x=u*h*c-A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c+u*d*p;break;case"YZX":this._x=u*h*c+A*d*p,this._y=A*d*c+u*h*p,this._z=A*h*p-u*d*c,this._w=A*h*c-u*d*p;break;case"XZY":this._x=u*h*c-A*d*p,this._y=A*d*c-u*h*p,this._z=A*h*p+u*d*c,this._w=A*h*c+u*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const i=e/2,n=Math.sin(i);return this._x=t.x*n,this._y=t.y*n,this._z=t.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,i=e[0],n=e[4],s=e[8],a=e[1],o=e[5],l=e[9],A=e[2],h=e[6],c=e[10],u=i+o+c;if(u>0){const d=.5/Math.sqrt(u+1);this._w=.25/d,this._x=(h-l)*d,this._y=(s-A)*d,this._z=(a-n)*d}else if(i>o&&i>c){const d=2*Math.sqrt(1+i-o-c);this._w=(h-l)/d,this._x=.25*d,this._y=(n+a)/d,this._z=(s+A)/d}else if(o>c){const d=2*Math.sqrt(1+o-i-c);this._w=(s-A)/d,this._x=(n+a)/d,this._y=.25*d,this._z=(l+h)/d}else{const d=2*Math.sqrt(1+c-i-o);this._w=(a-n)/d,this._x=(s+A)/d,this._y=(l+h)/d,this._z=.25*d}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let i=t.dot(e)+1;return i<1e-8?(i=0,Math.abs(t.x)>Math.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=i):(this._x=0,this._y=-t.z,this._z=t.y,this._w=i)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=i),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(kt(this.dot(t),-1,1)))}rotateTowards(t,e){const i=this.angleTo(t);if(i===0)return this;const n=Math.min(1,e/i);return this.slerp(t,n),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(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const i=t._x,n=t._y,s=t._z,a=t._w,o=e._x,l=e._y,A=e._z,h=e._w;return this._x=i*h+a*o+n*A-s*l,this._y=n*h+a*l+s*o-i*A,this._z=s*h+a*A+i*l-n*o,this._w=a*h-i*o-n*l-s*A,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);const i=this._x,n=this._y,s=this._z,a=this._w;let o=a*t._w+i*t._x+n*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=i,this._y=n,this._z=s,this;const l=1-o*o;if(l<=Number.EPSILON){const d=1-e;return this._w=d*a+e*this._w,this._x=d*i+e*this._x,this._y=d*n+e*this._y,this._z=d*s+e*this._z,this.normalize(),this}const A=Math.sqrt(l),h=Math.atan2(A,o),c=Math.sin((1-e)*h)/A,u=Math.sin(e*h)/A;return this._w=a*c+this._w*u,this._x=i*c+this._x*u,this._y=n*c+this._y*u,this._z=s*c+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,i){return this.copy(t).slerp(e,i)}random(){const t=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),i=Math.random(),n=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(n*Math.sin(t),n*Math.cos(t),s*Math.sin(e),s*Math.cos(e))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class F{constructor(t=0,e=0,i=0){F.prototype.isVector3=!0,this.x=t,this.y=e,this.z=i}set(t,e,i){return i===void 0&&(i=this.z),this.x=t,this.y=e,this.z=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(ql.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(ql.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[3]*i+s[6]*n,this.y=s[1]*e+s[4]*i+s[7]*n,this.z=s[2]*e+s[5]*i+s[8]*n,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=t.elements,a=1/(s[3]*e+s[7]*i+s[11]*n+s[15]);return this.x=(s[0]*e+s[4]*i+s[8]*n+s[12])*a,this.y=(s[1]*e+s[5]*i+s[9]*n+s[13])*a,this.z=(s[2]*e+s[6]*i+s[10]*n+s[14])*a,this}applyQuaternion(t){const e=this.x,i=this.y,n=this.z,s=t.x,a=t.y,o=t.z,l=t.w,A=2*(a*n-o*i),h=2*(o*e-s*n),c=2*(s*i-a*e);return this.x=e+l*A+a*c-o*h,this.y=i+l*h+o*A-s*c,this.z=n+l*c+s*h-a*A,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,i=this.y,n=this.z,s=t.elements;return this.x=s[0]*e+s[4]*i+s[8]*n,this.y=s[1]*e+s[5]*i+s[9]*n,this.z=s[2]*e+s[6]*i+s[10]*n,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this.z=kt(this.z,t.z,e.z),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this.z=kt(this.z,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(kt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const i=t.x,n=t.y,s=t.z,a=e.x,o=e.y,l=e.z;return this.x=n*l-s*o,this.y=s*a-i*l,this.z=i*o-n*a,this}projectOnVector(t){const e=t.lengthSq();if(e===0)return this.set(0,0,0);const i=t.dot(this)/e;return this.copy(t).multiplyScalar(i)}projectOnPlane(t){return Wo.copy(this).projectOnVector(t),this.sub(Wo)}reflect(t){return this.sub(Wo.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;const i=this.dot(t)/e;return Math.acos(kt(i,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,i=this.y-t.y,n=this.z-t.z;return e*e+i*i+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,i){const n=Math.sin(e)*t;return this.x=n*Math.sin(i),this.y=Math.cos(e)*t,this.z=n*Math.cos(i),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,i){return this.x=t*Math.sin(e),this.y=i,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),i=this.setFromMatrixColumn(t,1).length(),n=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=i,this.z=n,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=Math.random()*Math.PI*2,e=Math.random()*2-1,i=Math.sqrt(1-e*e);return this.x=i*Math.cos(t),this.y=e,this.z=i*Math.sin(t),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Wo=new F,ql=new as;class Nt{constructor(t,e,i,n,s,a,o,l,A){Nt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A)}set(t,e,i,n,s,a,o,l,A){const h=this.elements;return h[0]=t,h[1]=n,h[2]=o,h[3]=e,h[4]=s,h[5]=l,h[6]=i,h[7]=a,h[8]=A,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],this}extractBasis(t,e,i){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[3],l=i[6],A=i[1],h=i[4],c=i[7],u=i[2],d=i[5],p=i[8],m=n[0],g=n[3],f=n[6],y=n[1],S=n[4],v=n[7],w=n[2],T=n[5],R=n[8];return s[0]=a*m+o*y+l*w,s[3]=a*g+o*S+l*T,s[6]=a*f+o*v+l*R,s[1]=A*m+h*y+c*w,s[4]=A*g+h*S+c*T,s[7]=A*f+h*v+c*R,s[2]=u*m+d*y+p*w,s[5]=u*g+d*S+p*T,s[8]=u*f+d*v+p*R,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8];return e*a*h-e*o*A-i*s*h+i*o*l+n*s*A-n*a*l}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=h*a-o*A,u=o*l-h*s,d=A*s-a*l,p=e*c+i*u+n*d;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return t[0]=c*m,t[1]=(n*A-h*i)*m,t[2]=(o*i-n*a)*m,t[3]=u*m,t[4]=(h*e-n*l)*m,t[5]=(n*s-o*e)*m,t[6]=d*m,t[7]=(i*l-A*e)*m,t[8]=(a*e-i*s)*m,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,i,n,s,a,o){const l=Math.cos(s),A=Math.sin(s);return this.set(i*l,i*A,-i*(l*a+A*o)+a+t,-n*A,n*l,-n*(-A*a+l*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(Yo.makeScale(t,e)),this}rotate(t){return this.premultiply(Yo.makeRotation(-t)),this}translate(t,e){return this.premultiply(Yo.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,i,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<9;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<9;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t}clone(){return new this.constructor().fromArray(this.elements)}}const Yo=new Nt;function Kl(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function sr(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function $d(){const r=sr("canvas");return r.style.display="block",r}const $l={};function os(r){r in $l||($l[r]=!0,console.warn(r))}function tf(r,t,e){return new Promise(function(i,n){function s(){switch(r.clientWaitSync(t,r.SYNC_FLUSH_COMMANDS_BIT,0)){case r.WAIT_FAILED:n();break;case r.TIMEOUT_EXPIRED:setTimeout(s,e);break;default:i()}}setTimeout(s,e)})}const th=new Nt().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),eh=new Nt().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function ef(){const r={enabled:!0,workingColorSpace:ns,spaces:{},convert:function(n,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===qt&&(n.r=Bi(n.r),n.g=Bi(n.g),n.b=Bi(n.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(n.applyMatrix3(this.spaces[s].toXYZ),n.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===qt&&(n.r=As(n.r),n.g=As(n.g),n.b=As(n.b))),n},workingToColorSpace:function(n,s){return this.convert(n,this.workingColorSpace,s)},colorSpaceToWorking:function(n,s){return this.convert(n,s,this.workingColorSpace)},getPrimaries:function(n){return this.spaces[n].primaries},getTransfer:function(n){return n===nn?Vr:this.spaces[n].transfer},getLuminanceCoefficients:function(n,s=this.workingColorSpace){return n.fromArray(this.spaces[s].luminanceCoefficients)},define:function(n){Object.assign(this.spaces,n)},_getMatrix:function(n,s,a){return n.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(n){return this.spaces[n].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(n=this.workingColorSpace){return this.spaces[n].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(n,s){return os("THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),r.workingToColorSpace(n,s)},toWorkingColorSpace:function(n,s){return os("THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),r.colorSpaceToWorking(n,s)}},t=[.64,.33,.3,.6,.15,.06],e=[.2126,.7152,.0722],i=[.3127,.329];return r.define({[ns]:{primaries:t,whitePoint:i,transfer:Vr,toXYZ:th,fromXYZ:eh,luminanceCoefficients:e,workingColorSpaceConfig:{unpackColorSpace:_e},outputColorSpaceConfig:{drawingBufferColorSpace:_e}},[_e]:{primaries:t,whitePoint:i,transfer:qt,toXYZ:th,fromXYZ:eh,luminanceCoefficients:e,outputColorSpaceConfig:{drawingBufferColorSpace:_e}}}),r}const Yt=ef();function Bi(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function As(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}let ls;class nf{static getDataURL(t,e="image/png"){if(/^data:/i.test(t.src)||typeof HTMLCanvasElement>"u")return t.src;let i;if(t instanceof HTMLCanvasElement)i=t;else{ls===void 0&&(ls=sr("canvas")),ls.width=t.width,ls.height=t.height;const n=ls.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),i=ls}return i.toDataURL(e)}static sRGBToLinear(t){if(typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&t instanceof ImageBitmap){const e=sr("canvas");e.width=t.width,e.height=t.height;const i=e.getContext("2d");i.drawImage(t,0,0,t.width,t.height);const n=i.getImageData(0,0,t.width,t.height),s=n.data;for(let a=0;a<s.length;a++)s[a]=Bi(s[a]/255)*255;return i.putImageData(n,0,0),e}else if(t.data){const e=t.data.slice(0);for(let i=0;i<e.length;i++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[i]=Math.floor(Bi(e[i]/255)*255):e[i]=Bi(e[i]);return{data:e,width:t.width,height:t.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),t}}let sf=0;class Xo{constructor(t=null){this.isSource=!0,Object.defineProperty(this,"id",{value:sf++}),this.uuid=ir(),this.data=t,this.dataReady=!0,this.version=0}getSize(t){const e=this.data;return e instanceof HTMLVideoElement?t.set(e.videoWidth,e.videoHeight,0):e instanceof VideoFrame?t.set(e.displayHeight,e.displayWidth,0):e!==null?t.set(e.width,e.height,e.depth||0):t.set(0,0,0),t}set needsUpdate(t){t===!0&&this.version++}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.images[this.uuid]!==void 0)return t.images[this.uuid];const i={uuid:this.uuid,url:""},n=this.data;if(n!==null){let s;if(Array.isArray(n)){s=[];for(let a=0,o=n.length;a<o;a++)n[a].isDataTexture?s.push(Zo(n[a].image)):s.push(Zo(n[a]))}else s=Zo(n);i.url=s}return e||(t.images[this.uuid]=i),i}}function Zo(r){return typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&r instanceof ImageBitmap?nf.getDataURL(r):r.data?{data:Array.from(r.data),width:r.width,height:r.height,type:r.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let rf=0;const Jo=new F;class we extends rs{constructor(t=we.DEFAULT_IMAGE,e=we.DEFAULT_MAPPING,i=En,n=En,s=Ci,a=Sn,o=ci,l=vi,A=we.DEFAULT_ANISOTROPY,h=nn){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:rf++}),this.uuid=ir(),this.name="",this.source=new Xo(t),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=i,this.wrapT=n,this.magFilter=s,this.minFilter=a,this.anisotropy=A,this.format=o,this.internalFormat=null,this.type=l,this.offset=new Zt(0,0),this.repeat=new Zt(1,1),this.center=new Zt(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Nt,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=h,this.userData={},this.updateRanges=[],this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.isArrayTexture=!!(t&&t.depth&&t.depth>1),this.pmremVersion=0}get width(){return this.source.getSize(Jo).x}get height(){return this.source.getSize(Jo).y}get depth(){return this.source.getSize(Jo).z}get image(){return this.source.data}set image(t=null){this.source.data=t}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(t){return this.name=t.name,this.source=t.source,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.channel=t.channel,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.internalFormat=t.internalFormat,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.center.copy(t.center),this.rotation=t.rotation,this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrix.copy(t.matrix),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.colorSpace=t.colorSpace,this.renderTarget=t.renderTarget,this.isRenderTargetTexture=t.isRenderTargetTexture,this.isArrayTexture=t.isArrayTexture,this.userData=JSON.parse(JSON.stringify(t.userData)),this.needsUpdate=!0,this}setValues(t){for(const e in t){const i=t[e];if(i===void 0){console.warn(`THREE.Texture.setValues(): parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){console.warn(`THREE.Texture.setValues(): property '${e}' does not exist.`);continue}n&&i&&n.isVector2&&i.isVector2||n&&i&&n.isVector3&&i.isVector3||n&&i&&n.isMatrix3&&i.isMatrix3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";if(!e&&t.textures[this.uuid]!==void 0)return t.textures[this.uuid];const i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(t).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),e||(t.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Ol)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case ao:t.x=t.x-Math.floor(t.x);break;case En:t.x=t.x<0?0:1;break;case oo:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case ao:t.y=t.y-Math.floor(t.y);break;case En:t.y=t.y<0?0:1;break;case oo:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(t){t===!0&&this.pmremVersion++}}we.DEFAULT_IMAGE=null,we.DEFAULT_MAPPING=Ol,we.DEFAULT_ANISOTROPY=1;class he{constructor(t=0,e=0,i=0,n=1){he.prototype.isVector4=!0,this.x=t,this.y=e,this.z=i,this.w=n}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,i,n){return this.x=t,this.y=e,this.z=i,this.w=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,i=this.y,n=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*i+a[8]*n+a[12]*s,this.y=a[1]*e+a[5]*i+a[9]*n+a[13]*s,this.z=a[2]*e+a[6]*i+a[10]*n+a[14]*s,this.w=a[3]*e+a[7]*i+a[11]*n+a[15]*s,this}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,i,n,s;const l=t.elements,A=l[0],h=l[4],c=l[8],u=l[1],d=l[5],p=l[9],m=l[2],g=l[6],f=l[10];if(Math.abs(h-u)<.01&&Math.abs(c-m)<.01&&Math.abs(p-g)<.01){if(Math.abs(h+u)<.1&&Math.abs(c+m)<.1&&Math.abs(p+g)<.1&&Math.abs(A+d+f-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const S=(A+1)/2,v=(d+1)/2,w=(f+1)/2,T=(h+u)/4,R=(c+m)/4,P=(p+g)/4;return S>v&&S>w?S<.01?(i=0,n=.707106781,s=.707106781):(i=Math.sqrt(S),n=T/i,s=R/i):v>w?v<.01?(i=.707106781,n=0,s=.707106781):(n=Math.sqrt(v),i=T/n,s=P/n):w<.01?(i=.707106781,n=.707106781,s=0):(s=Math.sqrt(w),i=R/s,n=P/s),this.set(i,n,s,e),this}let y=Math.sqrt((g-p)*(g-p)+(c-m)*(c-m)+(u-h)*(u-h));return Math.abs(y)<.001&&(y=1),this.x=(g-p)/y,this.y=(c-m)/y,this.z=(u-h)/y,this.w=Math.acos((A+d+f-1)/2),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this.w=e[15],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=kt(this.x,t.x,e.x),this.y=kt(this.y,t.y,e.y),this.z=kt(this.z,t.z,e.z),this.w=kt(this.w,t.w,e.w),this}clampScalar(t,e){return this.x=kt(this.x,t,e),this.y=kt(this.y,t,e),this.z=kt(this.z,t,e),this.w=kt(this.w,t,e),this}clampLength(t,e){const i=this.length();return this.divideScalar(i||1).multiplyScalar(kt(i,t,e))}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(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this}lerpVectors(t,e,i){return this.x=t.x+(e.x-t.x)*i,this.y=t.y+(e.y-t.y)*i,this.z=t.z+(e.z-t.z)*i,this.w=t.w+(e.w-t.w)*i,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),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 af extends rs{constructor(t=1,e=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Ci,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=t,this.height=e,this.depth=i.depth,this.scissor=new he(0,0,t,e),this.scissorTest=!1,this.viewport=new he(0,0,t,e);const n={width:t,height:e,depth:i.depth},s=new we(n);this.textures=[];const a=i.count;for(let o=0;o<a;o++)this.textures[o]=s.clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;this._setTextureOptions(i),this.depthBuffer=i.depthBuffer,this.stencilBuffer=i.stencilBuffer,this.resolveDepthBuffer=i.resolveDepthBuffer,this.resolveStencilBuffer=i.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=i.depthTexture,this.samples=i.samples,this.multiview=i.multiview}_setTextureOptions(t={}){const e={minFilter:Ci,generateMipmaps:!1,flipY:!1,internalFormat:null};t.mapping!==void 0&&(e.mapping=t.mapping),t.wrapS!==void 0&&(e.wrapS=t.wrapS),t.wrapT!==void 0&&(e.wrapT=t.wrapT),t.wrapR!==void 0&&(e.wrapR=t.wrapR),t.magFilter!==void 0&&(e.magFilter=t.magFilter),t.minFilter!==void 0&&(e.minFilter=t.minFilter),t.format!==void 0&&(e.format=t.format),t.type!==void 0&&(e.type=t.type),t.anisotropy!==void 0&&(e.anisotropy=t.anisotropy),t.colorSpace!==void 0&&(e.colorSpace=t.colorSpace),t.flipY!==void 0&&(e.flipY=t.flipY),t.generateMipmaps!==void 0&&(e.generateMipmaps=t.generateMipmaps),t.internalFormat!==void 0&&(e.internalFormat=t.internalFormat);for(let i=0;i<this.textures.length;i++)this.textures[i].setValues(e)}get texture(){return this.textures[0]}set texture(t){this.textures[0]=t}set depthTexture(t){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),t!==null&&(t.renderTarget=this),this._depthTexture=t}get depthTexture(){return this._depthTexture}setSize(t,e,i=1){if(this.width!==t||this.height!==e||this.depth!==i){this.width=t,this.height=e,this.depth=i;for(let n=0,s=this.textures.length;n<s;n++)this.textures[n].image.width=t,this.textures[n].image.height=e,this.textures[n].image.depth=i,this.textures[n].isArrayTexture=this.textures[n].image.depth>1;this.dispose()}this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.scissor.copy(t.scissor),this.scissorTest=t.scissorTest,this.viewport.copy(t.viewport),this.textures.length=0;for(let e=0,i=t.textures.length;e<i;e++){this.textures[e]=t.textures[e].clone(),this.textures[e].isRenderTargetTexture=!0,this.textures[e].renderTarget=this;const n=Object.assign({},t.textures[e].image);this.textures[e].source=new Xo(n)}return this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.resolveDepthBuffer=t.resolveDepthBuffer,this.resolveStencilBuffer=t.resolveStencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class yn extends af{constructor(t=1,e=1,i={}){super(t,e,i),this.isWebGLRenderTarget=!0}}class ih extends we{constructor(t=null,e=1,i=1,n=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:i,depth:n},this.magFilter=hi,this.minFilter=hi,this.wrapR=En,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(t){this.layerUpdates.add(t)}clearLayerUpdates(){this.layerUpdates.clear()}}class of extends we{constructor(t=null,e=1,i=1,n=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:i,depth:n},this.magFilter=hi,this.minFilter=hi,this.wrapR=En,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class hs{constructor(t=new F(1/0,1/0,1/0),e=new F(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e+=3)this.expandByPoint(ui.fromArray(t,e));return this}setFromBufferAttribute(t){this.makeEmpty();for(let e=0,i=t.count;e<i;e++)this.expandByPoint(ui.fromBufferAttribute(t,e));return this}setFromPoints(t){this.makeEmpty();for(let e=0,i=t.length;e<i;e++)this.expandByPoint(t[e]);return this}setFromCenterAndSize(t,e){const i=ui.copy(e).multiplyScalar(.5);return this.min.copy(t).sub(i),this.max.copy(t).add(i),this}setFromObject(t,e=!1){return this.makeEmpty(),this.expandByObject(t,e)}clone(){return new this.constructor().copy(this)}copy(t){return this.min.copy(t.min),this.max.copy(t.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(t){return this.isEmpty()?t.set(0,0,0):t.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(t){return this.isEmpty()?t.set(0,0,0):t.subVectors(this.max,this.min)}expandByPoint(t){return this.min.min(t),this.max.max(t),this}expandByVector(t){return this.min.sub(t),this.max.add(t),this}expandByScalar(t){return this.min.addScalar(-t),this.max.addScalar(t),this}expandByObject(t,e=!1){t.updateWorldMatrix(!1,!1);const i=t.geometry;if(i!==void 0){const s=i.getAttribute("position");if(e===!0&&s!==void 0&&t.isInstancedMesh!==!0)for(let a=0,o=s.count;a<o;a++)t.isMesh===!0?t.getVertexPosition(a,ui):ui.fromBufferAttribute(s,a),ui.applyMatrix4(t.matrixWorld),this.expandByPoint(ui);else t.boundingBox!==void 0?(t.boundingBox===null&&t.computeBoundingBox(),Xr.copy(t.boundingBox)):(i.boundingBox===null&&i.computeBoundingBox(),Xr.copy(i.boundingBox)),Xr.applyMatrix4(t.matrixWorld),this.union(Xr)}const n=t.children;for(let s=0,a=n.length;s<a;s++)this.expandByObject(n[s],e);return this}containsPoint(t){return t.x>=this.min.x&&t.x<=this.max.x&&t.y>=this.min.y&&t.y<=this.max.y&&t.z>=this.min.z&&t.z<=this.max.z}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return t.max.x>=this.min.x&&t.min.x<=this.max.x&&t.max.y>=this.min.y&&t.min.y<=this.max.y&&t.max.z>=this.min.z&&t.min.z<=this.max.z}intersectsSphere(t){return this.clampPoint(t.center,ui),ui.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,i;return t.normal.x>0?(e=t.normal.x*this.min.x,i=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,i=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,i+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,i+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,i+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,i+=t.normal.z*this.min.z),e<=-t.constant&&i>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(rr),Zr.subVectors(this.max,rr),cs.subVectors(t.a,rr),us.subVectors(t.b,rr),ds.subVectors(t.c,rr),sn.subVectors(us,cs),rn.subVectors(ds,us),bn.subVectors(cs,ds);let e=[0,-sn.z,sn.y,0,-rn.z,rn.y,0,-bn.z,bn.y,sn.z,0,-sn.x,rn.z,0,-rn.x,bn.z,0,-bn.x,-sn.y,sn.x,0,-rn.y,rn.x,0,-bn.y,bn.x,0];return!jo(e,cs,us,ds,Zr)||(e=[1,0,0,0,1,0,0,0,1],!jo(e,cs,us,ds,Zr))?!1:(Jr.crossVectors(sn,rn),e=[Jr.x,Jr.y,Jr.z],jo(e,cs,us,ds,Zr))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,ui).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=this.getSize(ui).length()*.5),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Oi[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Oi[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Oi[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Oi[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Oi[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Oi[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Oi[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Oi[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Oi),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(t){return this.min.fromArray(t.min),this.max.fromArray(t.max),this}}const Oi=[new F,new F,new F,new F,new F,new F,new F,new F],ui=new F,Xr=new hs,cs=new F,us=new F,ds=new F,sn=new F,rn=new F,bn=new F,rr=new F,Zr=new F,Jr=new F,Tn=new F;function jo(r,t,e,i,n){for(let s=0,a=r.length-3;s<=a;s+=3){Tn.fromArray(r,s);const o=n.x*Math.abs(Tn.x)+n.y*Math.abs(Tn.y)+n.z*Math.abs(Tn.z),l=t.dot(Tn),A=e.dot(Tn),h=i.dot(Tn);if(Math.max(-Math.max(l,A,h),Math.min(l,A,h))>o)return!1}return!0}const Af=new hs,ar=new F,Qo=new F;class qo{constructor(t=new F,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const i=this.center;e!==void 0?i.copy(e):Af.setFromPoints(t).getCenter(i);let n=0;for(let s=0,a=t.length;s<a;s++)n=Math.max(n,i.distanceToSquared(t[s]));return this.radius=Math.sqrt(n),this}copy(t){return this.center.copy(t.center),this.radius=t.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(t){return t.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(t){return t.distanceTo(this.center)-this.radius}intersectsSphere(t){const e=this.radius+t.radius;return t.center.distanceToSquared(this.center)<=e*e}intersectsBox(t){return t.intersectsSphere(this)}intersectsPlane(t){return Math.abs(t.distanceToPoint(this.center))<=this.radius}clampPoint(t,e){const i=this.center.distanceToSquared(t);return e.copy(t),i>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;ar.subVectors(t,this.center);const e=ar.lengthSq();if(e>this.radius*this.radius){const i=Math.sqrt(e),n=(i-this.radius)*.5;this.center.addScaledVector(ar,n/i),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(Qo.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(ar.copy(t.center).add(Qo)),this.expandByPoint(ar.copy(t.center).sub(Qo))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(t){return this.radius=t.radius,this.center.fromArray(t.center),this}}const Ui=new F,Ko=new F,jr=new F,an=new F,$o=new F,Qr=new F,tA=new F;class lf{constructor(t=new F,e=new F(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Ui)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const i=e.dot(this.direction);return i<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=Ui.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Ui.copy(this.origin).addScaledVector(this.direction,e),Ui.distanceToSquared(t))}distanceSqToSegment(t,e,i,n){Ko.copy(t).add(e).multiplyScalar(.5),jr.copy(e).sub(t).normalize(),an.copy(this.origin).sub(Ko);const s=t.distanceTo(e)*.5,a=-this.direction.dot(jr),o=an.dot(this.direction),l=-an.dot(jr),A=an.lengthSq(),h=Math.abs(1-a*a);let c,u,d,p;if(h>0)if(c=a*l-o,u=a*o-l,p=s*h,c>=0)if(u>=-p)if(u<=p){const m=1/h;c*=m,u*=m,d=c*(c+a*u+2*o)+u*(a*c+u+2*l)+A}else u=s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u=-s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;else u<=-p?(c=Math.max(0,-(-a*s+o)),u=c>0?-s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A):u<=p?(c=0,u=Math.min(Math.max(-s,-l),s),d=u*(u+2*l)+A):(c=Math.max(0,-(a*s+o)),u=c>0?s:Math.min(Math.max(-s,-l),s),d=-c*c+u*(u+2*l)+A);else u=a>0?-s:s,c=Math.max(0,-(a*u+o)),d=-c*c+u*(u+2*l)+A;return i&&i.copy(this.origin).addScaledVector(this.direction,c),n&&n.copy(Ko).addScaledVector(jr,u),d}intersectSphere(t,e){Ui.subVectors(t.center,this.origin);const i=Ui.dot(this.direction),n=Ui.dot(Ui)-i*i,s=t.radius*t.radius;if(n>s)return null;const a=Math.sqrt(s-n),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,e):this.at(o,e)}intersectsSphere(t){return t.radius<0?!1:this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;const i=-(this.origin.dot(t.normal)+t.constant)/e;return i>=0?i:null}intersectPlane(t,e){const i=this.distanceToPlane(t);return i===null?null:this.at(i,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let i,n,s,a,o,l;const A=1/this.direction.x,h=1/this.direction.y,c=1/this.direction.z,u=this.origin;return A>=0?(i=(t.min.x-u.x)*A,n=(t.max.x-u.x)*A):(i=(t.max.x-u.x)*A,n=(t.min.x-u.x)*A),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),i>a||s>n||((s>i||isNaN(i))&&(i=s),(a<n||isNaN(n))&&(n=a),c>=0?(o=(t.min.z-u.z)*c,l=(t.max.z-u.z)*c):(o=(t.max.z-u.z)*c,l=(t.min.z-u.z)*c),i>l||o>n)||((o>i||i!==i)&&(i=o),(l<n||n!==n)&&(n=l),n<0)?null:this.at(i>=0?i:n,e)}intersectsBox(t){return this.intersectBox(t,Ui)!==null}intersectTriangle(t,e,i,n,s){$o.subVectors(e,t),Qr.subVectors(i,t),tA.crossVectors($o,Qr);let a=this.direction.dot(tA),o;if(a>0){if(n)return null;o=1}else if(a<0)o=-1,a=-a;else return null;an.subVectors(this.origin,t);const l=o*this.direction.dot(Qr.crossVectors(an,Qr));if(l<0)return null;const A=o*this.direction.dot($o.cross(an));if(A<0||l+A>a)return null;const h=-o*an.dot(tA);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class ue{constructor(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){ue.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],t!==void 0&&this.set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g)}set(t,e,i,n,s,a,o,l,A,h,c,u,d,p,m,g){const f=this.elements;return f[0]=t,f[4]=e,f[8]=i,f[12]=n,f[1]=s,f[5]=a,f[9]=o,f[13]=l,f[2]=A,f[6]=h,f[10]=c,f[14]=u,f[3]=d,f[7]=p,f[11]=m,f[15]=g,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 ue().fromArray(this.elements)}copy(t){const e=this.elements,i=t.elements;return e[0]=i[0],e[1]=i[1],e[2]=i[2],e[3]=i[3],e[4]=i[4],e[5]=i[5],e[6]=i[6],e[7]=i[7],e[8]=i[8],e[9]=i[9],e[10]=i[10],e[11]=i[11],e[12]=i[12],e[13]=i[13],e[14]=i[14],e[15]=i[15],this}copyPosition(t){const e=this.elements,i=t.elements;return e[12]=i[12],e[13]=i[13],e[14]=i[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,i){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(t,e,i){return this.set(t.x,e.x,i.x,0,t.y,e.y,i.y,0,t.z,e.z,i.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,i=t.elements,n=1/fs.setFromMatrixColumn(t,0).length(),s=1/fs.setFromMatrixColumn(t,1).length(),a=1/fs.setFromMatrixColumn(t,2).length();return e[0]=i[0]*n,e[1]=i[1]*n,e[2]=i[2]*n,e[3]=0,e[4]=i[4]*s,e[5]=i[5]*s,e[6]=i[6]*s,e[7]=0,e[8]=i[8]*a,e[9]=i[9]*a,e[10]=i[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,i=t.x,n=t.y,s=t.z,a=Math.cos(i),o=Math.sin(i),l=Math.cos(n),A=Math.sin(n),h=Math.cos(s),c=Math.sin(s);if(t.order==="XYZ"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=-l*c,e[8]=A,e[1]=d+p*A,e[5]=u-m*A,e[9]=-o*l,e[2]=m-u*A,e[6]=p+d*A,e[10]=a*l}else if(t.order==="YXZ"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u+m*o,e[4]=p*o-d,e[8]=a*A,e[1]=a*c,e[5]=a*h,e[9]=-o,e[2]=d*o-p,e[6]=m+u*o,e[10]=a*l}else if(t.order==="ZXY"){const u=l*h,d=l*c,p=A*h,m=A*c;e[0]=u-m*o,e[4]=-a*c,e[8]=p+d*o,e[1]=d+p*o,e[5]=a*h,e[9]=m-u*o,e[2]=-a*A,e[6]=o,e[10]=a*l}else if(t.order==="ZYX"){const u=a*h,d=a*c,p=o*h,m=o*c;e[0]=l*h,e[4]=p*A-d,e[8]=u*A+m,e[1]=l*c,e[5]=m*A+u,e[9]=d*A-p,e[2]=-A,e[6]=o*l,e[10]=a*l}else if(t.order==="YZX"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=m-u*c,e[8]=p*c+d,e[1]=c,e[5]=a*h,e[9]=-o*h,e[2]=-A*h,e[6]=d*c+p,e[10]=u-m*c}else if(t.order==="XZY"){const u=a*l,d=a*A,p=o*l,m=o*A;e[0]=l*h,e[4]=-c,e[8]=A*h,e[1]=u*c+m,e[5]=a*h,e[9]=d*c-p,e[2]=p*c-d,e[6]=o*h,e[10]=m*c+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(hf,t,cf)}lookAt(t,e,i){const n=this.elements;return Ye.subVectors(t,e),Ye.lengthSq()===0&&(Ye.z=1),Ye.normalize(),on.crossVectors(i,Ye),on.lengthSq()===0&&(Math.abs(i.z)===1?Ye.x+=1e-4:Ye.z+=1e-4,Ye.normalize(),on.crossVectors(i,Ye)),on.normalize(),qr.crossVectors(Ye,on),n[0]=on.x,n[4]=qr.x,n[8]=Ye.x,n[1]=on.y,n[5]=qr.y,n[9]=Ye.y,n[2]=on.z,n[6]=qr.z,n[10]=Ye.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const i=t.elements,n=e.elements,s=this.elements,a=i[0],o=i[4],l=i[8],A=i[12],h=i[1],c=i[5],u=i[9],d=i[13],p=i[2],m=i[6],g=i[10],f=i[14],y=i[3],S=i[7],v=i[11],w=i[15],T=n[0],R=n[4],P=n[8],E=n[12],x=n[1],b=n[5],z=n[9],B=n[13],U=n[2],W=n[6],Y=n[10],$=n[14],H=n[3],rt=n[7],lt=n[11],mt=n[15];return s[0]=a*T+o*x+l*U+A*H,s[4]=a*R+o*b+l*W+A*rt,s[8]=a*P+o*z+l*Y+A*lt,s[12]=a*E+o*B+l*$+A*mt,s[1]=h*T+c*x+u*U+d*H,s[5]=h*R+c*b+u*W+d*rt,s[9]=h*P+c*z+u*Y+d*lt,s[13]=h*E+c*B+u*$+d*mt,s[2]=p*T+m*x+g*U+f*H,s[6]=p*R+m*b+g*W+f*rt,s[10]=p*P+m*z+g*Y+f*lt,s[14]=p*E+m*B+g*$+f*mt,s[3]=y*T+S*x+v*U+w*H,s[7]=y*R+S*b+v*W+w*rt,s[11]=y*P+S*z+v*Y+w*lt,s[15]=y*E+S*B+v*$+w*mt,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],i=t[4],n=t[8],s=t[12],a=t[1],o=t[5],l=t[9],A=t[13],h=t[2],c=t[6],u=t[10],d=t[14],p=t[3],m=t[7],g=t[11],f=t[15];return p*(+s*l*c-n*A*c-s*o*u+i*A*u+n*o*d-i*l*d)+m*(+e*l*d-e*A*u+s*a*u-n*a*d+n*A*h-s*l*h)+g*(+e*A*c-e*o*d-s*a*c+i*a*d+s*o*h-i*A*h)+f*(-n*o*h-e*l*c+e*o*u+n*a*c-i*a*u+i*l*h)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,i){const n=this.elements;return t.isVector3?(n[12]=t.x,n[13]=t.y,n[14]=t.z):(n[12]=t,n[13]=e,n[14]=i),this}invert(){const t=this.elements,e=t[0],i=t[1],n=t[2],s=t[3],a=t[4],o=t[5],l=t[6],A=t[7],h=t[8],c=t[9],u=t[10],d=t[11],p=t[12],m=t[13],g=t[14],f=t[15],y=c*g*A-m*u*A+m*l*d-o*g*d-c*l*f+o*u*f,S=p*u*A-h*g*A-p*l*d+a*g*d+h*l*f-a*u*f,v=h*m*A-p*c*A+p*o*d-a*m*d-h*o*f+a*c*f,w=p*c*l-h*m*l-p*o*u+a*m*u+h*o*g-a*c*g,T=e*y+i*S+n*v+s*w;if(T===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const R=1/T;return t[0]=y*R,t[1]=(m*u*s-c*g*s-m*n*d+i*g*d+c*n*f-i*u*f)*R,t[2]=(o*g*s-m*l*s+m*n*A-i*g*A-o*n*f+i*l*f)*R,t[3]=(c*l*s-o*u*s-c*n*A+i*u*A+o*n*d-i*l*d)*R,t[4]=S*R,t[5]=(h*g*s-p*u*s+p*n*d-e*g*d-h*n*f+e*u*f)*R,t[6]=(p*l*s-a*g*s-p*n*A+e*g*A+a*n*f-e*l*f)*R,t[7]=(a*u*s-h*l*s+h*n*A-e*u*A-a*n*d+e*l*d)*R,t[8]=v*R,t[9]=(p*c*s-h*m*s-p*i*d+e*m*d+h*i*f-e*c*f)*R,t[10]=(a*m*s-p*o*s+p*i*A-e*m*A-a*i*f+e*o*f)*R,t[11]=(h*o*s-a*c*s-h*i*A+e*c*A+a*i*d-e*o*d)*R,t[12]=w*R,t[13]=(h*m*n-p*c*n+p*i*u-e*m*u-h*i*g+e*c*g)*R,t[14]=(p*o*n-a*m*n-p*i*l+e*m*l+a*i*g-e*o*g)*R,t[15]=(a*c*n-h*o*n+h*i*l-e*c*l-a*i*u+e*o*u)*R,this}scale(t){const e=this.elements,i=t.x,n=t.y,s=t.z;return e[0]*=i,e[4]*=n,e[8]*=s,e[1]*=i,e[5]*=n,e[9]*=s,e[2]*=i,e[6]*=n,e[10]*=s,e[3]*=i,e[7]*=n,e[11]*=s,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],i=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],n=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,i,n))}makeTranslation(t,e,i){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,i,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),i=Math.sin(t);return this.set(1,0,0,0,0,e,-i,0,0,i,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,0,i,0,0,1,0,0,-i,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),i=Math.sin(t);return this.set(e,-i,0,0,i,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const i=Math.cos(e),n=Math.sin(e),s=1-i,a=t.x,o=t.y,l=t.z,A=s*a,h=s*o;return this.set(A*a+i,A*o-n*l,A*l+n*o,0,A*o+n*l,h*o+i,h*l-n*a,0,A*l-n*o,h*l+n*a,s*l*l+i,0,0,0,0,1),this}makeScale(t,e,i){return this.set(t,0,0,0,0,e,0,0,0,0,i,0,0,0,0,1),this}makeShear(t,e,i,n,s,a){return this.set(1,i,s,0,t,1,a,0,e,n,1,0,0,0,0,1),this}compose(t,e,i){const n=this.elements,s=e._x,a=e._y,o=e._z,l=e._w,A=s+s,h=a+a,c=o+o,u=s*A,d=s*h,p=s*c,m=a*h,g=a*c,f=o*c,y=l*A,S=l*h,v=l*c,w=i.x,T=i.y,R=i.z;return n[0]=(1-(m+f))*w,n[1]=(d+v)*w,n[2]=(p-S)*w,n[3]=0,n[4]=(d-v)*T,n[5]=(1-(u+f))*T,n[6]=(g+y)*T,n[7]=0,n[8]=(p+S)*R,n[9]=(g-y)*R,n[10]=(1-(u+m))*R,n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,this}decompose(t,e,i){const n=this.elements;let s=fs.set(n[0],n[1],n[2]).length();const a=fs.set(n[4],n[5],n[6]).length(),o=fs.set(n[8],n[9],n[10]).length();this.determinant()<0&&(s=-s),t.x=n[12],t.y=n[13],t.z=n[14],di.copy(this);const A=1/s,h=1/a,c=1/o;return di.elements[0]*=A,di.elements[1]*=A,di.elements[2]*=A,di.elements[4]*=h,di.elements[5]*=h,di.elements[6]*=h,di.elements[8]*=c,di.elements[9]*=c,di.elements[10]*=c,e.setFromRotationMatrix(di),i.x=s,i.y=a,i.z=o,this}makePerspective(t,e,i,n,s,a,o=xi,l=!1){const A=this.elements,h=2*s/(e-t),c=2*s/(i-n),u=(e+t)/(e-t),d=(i+n)/(i-n);let p,m;if(l)p=s/(a-s),m=a*s/(a-s);else if(o===xi)p=-(a+s)/(a-s),m=-2*a*s/(a-s);else if(o===Wr)p=-a/(a-s),m=-a*s/(a-s);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=u,A[12]=0,A[1]=0,A[5]=c,A[9]=d,A[13]=0,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=-1,A[15]=0,this}makeOrthographic(t,e,i,n,s,a,o=xi,l=!1){const A=this.elements,h=2/(e-t),c=2/(i-n),u=-(e+t)/(e-t),d=-(i+n)/(i-n);let p,m;if(l)p=1/(a-s),m=a/(a-s);else if(o===xi)p=-2/(a-s),m=-(a+s)/(a-s);else if(o===Wr)p=-1/(a-s),m=-s/(a-s);else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return A[0]=h,A[4]=0,A[8]=0,A[12]=u,A[1]=0,A[5]=c,A[9]=0,A[13]=d,A[2]=0,A[6]=0,A[10]=p,A[14]=m,A[3]=0,A[7]=0,A[11]=0,A[15]=1,this}equals(t){const e=this.elements,i=t.elements;for(let n=0;n<16;n++)if(e[n]!==i[n])return!1;return!0}fromArray(t,e=0){for(let i=0;i<16;i++)this.elements[i]=t[i+e];return this}toArray(t=[],e=0){const i=this.elements;return t[e]=i[0],t[e+1]=i[1],t[e+2]=i[2],t[e+3]=i[3],t[e+4]=i[4],t[e+5]=i[5],t[e+6]=i[6],t[e+7]=i[7],t[e+8]=i[8],t[e+9]=i[9],t[e+10]=i[10],t[e+11]=i[11],t[e+12]=i[12],t[e+13]=i[13],t[e+14]=i[14],t[e+15]=i[15],t}}const fs=new F,di=new ue,hf=new F(0,0,0),cf=new F(1,1,1),on=new F,qr=new F,Ye=new F,nh=new ue,sh=new as;class fi{constructor(t=0,e=0,i=0,n=fi.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=i,this._order=n}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,i,n=this._order){return this._x=t,this._y=e,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,i=!0){const n=t.elements,s=n[0],a=n[4],o=n[8],l=n[1],A=n[5],h=n[9],c=n[2],u=n[6],d=n[10];switch(e){case"XYZ":this._y=Math.asin(kt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,d),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,A),this._z=0);break;case"YXZ":this._x=Math.asin(-kt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(l,A)):(this._y=Math.atan2(-c,s),this._z=0);break;case"ZXY":this._x=Math.asin(kt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,A)):(this._y=0,this._z=Math.atan2(l,s));break;case"ZYX":this._y=Math.asin(-kt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(u,d),this._z=Math.atan2(l,s)):(this._x=0,this._z=Math.atan2(-a,A));break;case"YZX":this._z=Math.asin(kt(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-h,A),this._y=Math.atan2(-c,s)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-kt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,A),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,i===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,i){return nh.makeRotationFromQuaternion(t),this.setFromRotationMatrix(nh,e,i)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return sh.setFromEuler(this),this.setFromQuaternion(sh,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}fi.DEFAULT_ORDER="XYZ";class rh{constructor(){this.mask=1}set(t){this.mask=(1<<t|0)>>>0}enable(t){this.mask|=1<<t|0}enableAll(){this.mask=-1}toggle(t){this.mask^=1<<t|0}disable(t){this.mask&=~(1<<t|0)}disableAll(){this.mask=0}test(t){return(this.mask&t.mask)!==0}isEnabled(t){return(this.mask&(1<<t|0))!==0}}let uf=0;const ah=new F,gs=new as,zi=new ue,Kr=new F,or=new F,df=new F,ff=new as,oh=new F(1,0,0),Ah=new F(0,1,0),lh=new F(0,0,1),hh={type:"added"},gf={type:"removed"},ps={type:"childadded",child:null},eA={type:"childremoved",child:null};class xe extends rs{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:uf++}),this.uuid=ir(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=xe.DEFAULT_UP.clone();const t=new F,e=new fi,i=new as,n=new F(1,1,1);function s(){i.setFromEuler(e,!1)}function a(){e.setFromQuaternion(i,void 0,!1)}e._onChange(s),i._onChange(a),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:t},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:n},modelViewMatrix:{value:new ue},normalMatrix:{value:new Nt}}),this.matrix=new ue,this.matrixWorld=new ue,this.matrixAutoUpdate=xe.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=xe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new rh,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.customDepthMaterial=void 0,this.customDistanceMaterial=void 0,this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(t){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(t),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(t){return this.quaternion.premultiply(t),this}setRotationFromAxisAngle(t,e){this.quaternion.setFromAxisAngle(t,e)}setRotationFromEuler(t){this.quaternion.setFromEuler(t,!0)}setRotationFromMatrix(t){this.quaternion.setFromRotationMatrix(t)}setRotationFromQuaternion(t){this.quaternion.copy(t)}rotateOnAxis(t,e){return gs.setFromAxisAngle(t,e),this.quaternion.multiply(gs),this}rotateOnWorldAxis(t,e){return gs.setFromAxisAngle(t,e),this.quaternion.premultiply(gs),this}rotateX(t){return this.rotateOnAxis(oh,t)}rotateY(t){return this.rotateOnAxis(Ah,t)}rotateZ(t){return this.rotateOnAxis(lh,t)}translateOnAxis(t,e){return ah.copy(t).applyQuaternion(this.quaternion),this.position.add(ah.multiplyScalar(e)),this}translateX(t){return this.translateOnAxis(oh,t)}translateY(t){return this.translateOnAxis(Ah,t)}translateZ(t){return this.translateOnAxis(lh,t)}localToWorld(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(this.matrixWorld)}worldToLocal(t){return this.updateWorldMatrix(!0,!1),t.applyMatrix4(zi.copy(this.matrixWorld).invert())}lookAt(t,e,i){t.isVector3?Kr.copy(t):Kr.set(t,e,i);const n=this.parent;this.updateWorldMatrix(!0,!1),or.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?zi.lookAt(or,Kr,this.up):zi.lookAt(Kr,or,this.up),this.quaternion.setFromRotationMatrix(zi),n&&(zi.extractRotation(n.matrixWorld),gs.setFromRotationMatrix(zi),this.quaternion.premultiply(gs.invert()))}add(t){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return t===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",t),this):(t&&t.isObject3D?(t.removeFromParent(),t.parent=this,this.children.push(t),t.dispatchEvent(hh),ps.child=t,this.dispatchEvent(ps),ps.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",t),this)}remove(t){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.remove(arguments[i]);return this}const e=this.children.indexOf(t);return e!==-1&&(t.parent=null,this.children.splice(e,1),t.dispatchEvent(gf),eA.child=t,this.dispatchEvent(eA),eA.child=null),this}removeFromParent(){const t=this.parent;return t!==null&&t.remove(this),this}clear(){return this.remove(...this.children)}attach(t){return this.updateWorldMatrix(!0,!1),zi.copy(this.matrixWorld).invert(),t.parent!==null&&(t.parent.updateWorldMatrix(!0,!1),zi.multiply(t.parent.matrixWorld)),t.applyMatrix4(zi),t.removeFromParent(),t.parent=this,this.children.push(t),t.updateWorldMatrix(!1,!0),t.dispatchEvent(hh),ps.child=t,this.dispatchEvent(ps),ps.child=null,this}getObjectById(t){return this.getObjectByProperty("id",t)}getObjectByName(t){return this.getObjectByProperty("name",t)}getObjectByProperty(t,e){if(this[t]===e)return this;for(let i=0,n=this.children.length;i<n;i++){const a=this.children[i].getObjectByProperty(t,e);if(a!==void 0)return a}}getObjectsByProperty(t,e,i=[]){this[t]===e&&i.push(this);const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].getObjectsByProperty(t,e,i);return i}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(or,t,df),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(or,ff,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverse(t)}traverseVisible(t){if(this.visible===!1)return;t(this);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].traverseVisible(t)}traverseAncestors(t){const e=this.parent;e!==null&&(t(e),e.traverseAncestors(t))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(t){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||t)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,t=!0);const e=this.children;for(let i=0,n=e.length;i<n;i++)e[i].updateMatrixWorld(t)}updateWorldMatrix(t,e){const i=this.parent;if(t===!0&&i!==null&&i.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),e===!0){const n=this.children;for(let s=0,a=n.length;s<a;s++)n[s].updateWorldMatrix(!1,!0)}}toJSON(t){const e=t===void 0||typeof t=="string",i={};e&&(t={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},i.metadata={version:4.7,type:"Object",generator:"Object3D.toJSON"});const n={};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.castShadow===!0&&(n.castShadow=!0),this.receiveShadow===!0&&(n.receiveShadow=!0),this.visible===!1&&(n.visible=!1),this.frustumCulled===!1&&(n.frustumCulled=!1),this.renderOrder!==0&&(n.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(n.userData=this.userData),n.layers=this.layers.mask,n.matrix=this.matrix.toArray(),n.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(n.matrixAutoUpdate=!1),this.isInstancedMesh&&(n.type="InstancedMesh",n.count=this.count,n.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(n.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(n.type="BatchedMesh",n.perObjectFrustumCulled=this.perObjectFrustumCulled,n.sortObjects=this.sortObjects,n.drawRanges=this._drawRanges,n.reservedRanges=this._reservedRanges,n.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),n.instanceInfo=this._instanceInfo.map(o=>({...o})),n.availableInstanceIds=this._availableInstanceIds.slice(),n.availableGeometryIds=this._availableGeometryIds.slice(),n.nextIndexStart=this._nextIndexStart,n.nextVertexStart=this._nextVertexStart,n.geometryCount=this._geometryCount,n.maxInstanceCount=this._maxInstanceCount,n.maxVertexCount=this._maxVertexCount,n.maxIndexCount=this._maxIndexCount,n.geometryInitialized=this._geometryInitialized,n.matricesTexture=this._matricesTexture.toJSON(t),n.indirectTexture=this._indirectTexture.toJSON(t),this._colorsTexture!==null&&(n.colorsTexture=this._colorsTexture.toJSON(t)),this.boundingSphere!==null&&(n.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(n.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(t)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?n.background=this.background.toJSON():this.background.isTexture&&(n.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(n.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){n.geometry=s(t.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 A=0,h=l.length;A<h;A++){const c=l[A];s(t.shapes,c)}else s(t.shapes,l)}}if(this.isSkinnedMesh&&(n.bindMode=this.bindMode,n.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(s(t.skeletons,this.skeleton),n.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let l=0,A=this.material.length;l<A;l++)o.push(s(t.materials,this.material[l]));n.material=o}else n.material=s(t.materials,this.material);if(this.children.length>0){n.children=[];for(let o=0;o<this.children.length;o++)n.children.push(this.children[o].toJSON(t).object)}if(this.animations.length>0){n.animations=[];for(let o=0;o<this.animations.length;o++){const l=this.animations[o];n.animations.push(s(t.animations,l))}}if(e){const o=a(t.geometries),l=a(t.materials),A=a(t.textures),h=a(t.images),c=a(t.shapes),u=a(t.skeletons),d=a(t.animations),p=a(t.nodes);o.length>0&&(i.geometries=o),l.length>0&&(i.materials=l),A.length>0&&(i.textures=A),h.length>0&&(i.images=h),c.length>0&&(i.shapes=c),u.length>0&&(i.skeletons=u),d.length>0&&(i.animations=d),p.length>0&&(i.nodes=p)}return i.object=n,i;function a(o){const l=[];for(const A in o){const h=o[A];delete h.metadata,l.push(h)}return l}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let i=0;i<t.children.length;i++){const n=t.children[i];this.add(n.clone())}return this}}xe.DEFAULT_UP=new F(0,1,0),xe.DEFAULT_MATRIX_AUTO_UPDATE=!0,xe.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const gi=new F,Gi=new F,iA=new F,ki=new F,ms=new F,Is=new F,ch=new F,nA=new F,sA=new F,rA=new F,aA=new he,oA=new he,AA=new he;class pi{constructor(t=new F,e=new F,i=new F){this.a=t,this.b=e,this.c=i}static getNormal(t,e,i,n){n.subVectors(i,e),gi.subVectors(t,e),n.cross(gi);const s=n.lengthSq();return s>0?n.multiplyScalar(1/Math.sqrt(s)):n.set(0,0,0)}static getBarycoord(t,e,i,n,s){gi.subVectors(n,e),Gi.subVectors(i,e),iA.subVectors(t,e);const a=gi.dot(gi),o=gi.dot(Gi),l=gi.dot(iA),A=Gi.dot(Gi),h=Gi.dot(iA),c=a*A-o*o;if(c===0)return s.set(0,0,0),null;const u=1/c,d=(A*l-o*h)*u,p=(a*h-o*l)*u;return s.set(1-d-p,p,d)}static containsPoint(t,e,i,n){return this.getBarycoord(t,e,i,n,ki)===null?!1:ki.x>=0&&ki.y>=0&&ki.x+ki.y<=1}static getInterpolation(t,e,i,n,s,a,o,l){return this.getBarycoord(t,e,i,n,ki)===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,ki.x),l.addScaledVector(a,ki.y),l.addScaledVector(o,ki.z),l)}static getInterpolatedAttribute(t,e,i,n,s,a){return aA.setScalar(0),oA.setScalar(0),AA.setScalar(0),aA.fromBufferAttribute(t,e),oA.fromBufferAttribute(t,i),AA.fromBufferAttribute(t,n),a.setScalar(0),a.addScaledVector(aA,s.x),a.addScaledVector(oA,s.y),a.addScaledVector(AA,s.z),a}static isFrontFacing(t,e,i,n){return gi.subVectors(i,e),Gi.subVectors(t,e),gi.cross(Gi).dot(n)<0}set(t,e,i){return this.a.copy(t),this.b.copy(e),this.c.copy(i),this}setFromPointsAndIndices(t,e,i,n){return this.a.copy(t[e]),this.b.copy(t[i]),this.c.copy(t[n]),this}setFromAttributeAndIndices(t,e,i,n){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,i),this.c.fromBufferAttribute(t,n),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return gi.subVectors(this.c,this.b),Gi.subVectors(this.a,this.b),gi.cross(Gi).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return pi.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return pi.getBarycoord(t,this.a,this.b,this.c,e)}getInterpolation(t,e,i,n,s){return pi.getInterpolation(t,this.a,this.b,this.c,e,i,n,s)}containsPoint(t){return pi.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return pi.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const i=this.a,n=this.b,s=this.c;let a,o;ms.subVectors(n,i),Is.subVectors(s,i),nA.subVectors(t,i);const l=ms.dot(nA),A=Is.dot(nA);if(l<=0&&A<=0)return e.copy(i);sA.subVectors(t,n);const h=ms.dot(sA),c=Is.dot(sA);if(h>=0&&c<=h)return e.copy(n);const u=l*c-h*A;if(u<=0&&l>=0&&h<=0)return a=l/(l-h),e.copy(i).addScaledVector(ms,a);rA.subVectors(t,s);const d=ms.dot(rA),p=Is.dot(rA);if(p>=0&&d<=p)return e.copy(s);const m=d*A-l*p;if(m<=0&&A>=0&&p<=0)return o=A/(A-p),e.copy(i).addScaledVector(Is,o);const g=h*p-d*c;if(g<=0&&c-h>=0&&d-p>=0)return ch.subVectors(s,n),o=(c-h)/(c-h+(d-p)),e.copy(n).addScaledVector(ch,o);const f=1/(g+m+u);return a=m*f,o=u*f,e.copy(i).addScaledVector(ms,a).addScaledVector(Is,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const uh={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},$r={h:0,s:0,l:0};function lA(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}class Vt{constructor(t,e,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,i)}set(t,e,i){if(e===void 0&&i===void 0){const n=t;n&&n.isColor?this.copy(n):typeof n=="number"?this.setHex(n):typeof n=="string"&&this.setStyle(n)}else this.setRGB(t,e,i);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=_e){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,Yt.colorSpaceToWorking(this,e),this}setRGB(t,e,i,n=Yt.workingColorSpace){return this.r=t,this.g=e,this.b=i,Yt.colorSpaceToWorking(this,n),this}setHSL(t,e,i,n=Yt.workingColorSpace){if(t=Kd(t,1),e=kt(e,0,1),i=kt(i,0,1),e===0)this.r=this.g=this.b=i;else{const s=i<=.5?i*(1+e):i+e-i*e,a=2*i-s;this.r=lA(a,s,t+1/3),this.g=lA(a,s,t),this.b=lA(a,s,t-1/3)}return Yt.colorSpaceToWorking(this,n),this}setStyle(t,e=_e){function i(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let n;if(n=/^(\w+)\(([^\)]*)\)/.exec(t)){let s;const a=n[1],o=n[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 i(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,e);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(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,e);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 i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(t)){const s=n[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,e);if(a===6)return this.setHex(parseInt(s,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=_e){const i=uh[t.toLowerCase()];return i!==void 0?this.setHex(i,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=Bi(t.r),this.g=Bi(t.g),this.b=Bi(t.b),this}copyLinearToSRGB(t){return this.r=As(t.r),this.g=As(t.g),this.b=As(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=_e){return Yt.workingToColorSpace(Re.copy(this),t),Math.round(kt(Re.r*255,0,255))*65536+Math.round(kt(Re.g*255,0,255))*256+Math.round(kt(Re.b*255,0,255))}getHexString(t=_e){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=Yt.workingColorSpace){Yt.workingToColorSpace(Re.copy(this),e);const i=Re.r,n=Re.g,s=Re.b,a=Math.max(i,n,s),o=Math.min(i,n,s);let l,A;const h=(o+a)/2;if(o===a)l=0,A=0;else{const c=a-o;switch(A=h<=.5?c/(a+o):c/(2-a-o),a){case i:l=(n-s)/c+(n<s?6:0);break;case n:l=(s-i)/c+2;break;case s:l=(i-n)/c+4;break}l/=6}return t.h=l,t.s=A,t.l=h,t}getRGB(t,e=Yt.workingColorSpace){return Yt.workingToColorSpace(Re.copy(this),e),t.r=Re.r,t.g=Re.g,t.b=Re.b,t}getStyle(t=_e){Yt.workingToColorSpace(Re.copy(this),t);const e=Re.r,i=Re.g,n=Re.b;return t!==_e?`color(${t} ${e.toFixed(3)} ${i.toFixed(3)} ${n.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(i*255)},${Math.round(n*255)})`}offsetHSL(t,e,i){return this.getHSL(An),this.setHSL(An.h+t,An.s+e,An.l+i)}add(t){return this.r+=t.r,this.g+=t.g,this.b+=t.b,this}addColors(t,e){return this.r=t.r+e.r,this.g=t.g+e.g,this.b=t.b+e.b,this}addScalar(t){return this.r+=t,this.g+=t,this.b+=t,this}sub(t){return this.r=Math.max(0,this.r-t.r),this.g=Math.max(0,this.g-t.g),this.b=Math.max(0,this.b-t.b),this}multiply(t){return this.r*=t.r,this.g*=t.g,this.b*=t.b,this}multiplyScalar(t){return this.r*=t,this.g*=t,this.b*=t,this}lerp(t,e){return this.r+=(t.r-this.r)*e,this.g+=(t.g-this.g)*e,this.b+=(t.b-this.b)*e,this}lerpColors(t,e,i){return this.r=t.r+(e.r-t.r)*i,this.g=t.g+(e.g-t.g)*i,this.b=t.b+(e.b-t.b)*i,this}lerpHSL(t,e){this.getHSL(An),t.getHSL($r);const i=Vo(An.h,$r.h,e),n=Vo(An.s,$r.s,e),s=Vo(An.l,$r.l,e);return this.setHSL(i,n,s),this}setFromVector3(t){return this.r=t.x,this.g=t.y,this.b=t.z,this}applyMatrix3(t){const e=this.r,i=this.g,n=this.b,s=t.elements;return this.r=s[0]*e+s[3]*i+s[6]*n,this.g=s[1]*e+s[4]*i+s[7]*n,this.b=s[2]*e+s[5]*i+s[8]*n,this}equals(t){return t.r===this.r&&t.g===this.g&&t.b===this.b}fromArray(t,e=0){return this.r=t[e],this.g=t[e+1],this.b=t[e+2],this}toArray(t=[],e=0){return t[e]=this.r,t[e+1]=this.g,t[e+2]=this.b,t}fromBufferAttribute(t,e){return this.r=t.getX(e),this.g=t.getY(e),this.b=t.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Re=new Vt;Vt.NAMES=uh;let pf=0;class Ar extends rs{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:pf++}),this.uuid=ir(),this.name="",this.type="Material",this.blending=$n,this.side=$i,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=ja,this.blendDst=Qa,this.blendEquation=xn,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new Vt(0,0,0),this.blendAlpha=0,this.depthFunc=ts,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Zl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=ss,this.stencilZFail=ss,this.stencilZPass=ss,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.allowOverride=!0,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(const e in t){const i=t[e];if(i===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const n=this[e];if(n===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[e]=i}}toJSON(t){const e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});const i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(t).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(t).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(t).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(t).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(t).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==$n&&(i.blending=this.blending),this.side!==$i&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==ja&&(i.blendSrc=this.blendSrc),this.blendDst!==Qa&&(i.blendDst=this.blendDst),this.blendEquation!==xn&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==ts&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Zl&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ss&&(i.stencilFail=this.stencilFail),this.stencilZFail!==ss&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==ss&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function n(s){const a=[];for(const o in s){const l=s[o];delete l.metadata,a.push(l)}return a}if(e){const s=n(t.textures),a=n(t.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let i=null;if(e!==null){const n=e.length;i=new Array(n);for(let s=0;s!==n;++s)i[s]=e[s].clone()}return this.clippingPlanes=i,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}}class hA extends Ar{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Vt(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 fi,this.combine=Bl,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const pe=new F,ta=new Zt;let mf=0;class Ei{constructor(t,e,i=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:mf++}),this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=i,this.usage=jl,this.updateRanges=[],this.gpuType=Fi,this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,i){t*=this.itemSize,i*=e.itemSize;for(let n=0,s=this.itemSize;n<s;n++)this.array[t+n]=e.array[i+n];return this}copyArray(t){return this.array.set(t),this}applyMatrix3(t){if(this.itemSize===2)for(let e=0,i=this.count;e<i;e++)ta.fromBufferAttribute(this,e),ta.applyMatrix3(t),this.setXY(e,ta.x,ta.y);else if(this.itemSize===3)for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.applyMatrix3(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}applyMatrix4(t){for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.applyMatrix4(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}applyNormalMatrix(t){for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.applyNormalMatrix(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}transformDirection(t){for(let e=0,i=this.count;e<i;e++)pe.fromBufferAttribute(this,e),pe.transformDirection(t),this.setXYZ(e,pe.x,pe.y,pe.z);return this}set(t,e=0){return this.array.set(t,e),this}getComponent(t,e){let i=this.array[t*this.itemSize+e];return this.normalized&&(i=nr(i,this.array)),i}setComponent(t,e,i){return this.normalized&&(i=Ue(i,this.array)),this.array[t*this.itemSize+e]=i,this}getX(t){let e=this.array[t*this.itemSize];return this.normalized&&(e=nr(e,this.array)),e}setX(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize]=e,this}getY(t){let e=this.array[t*this.itemSize+1];return this.normalized&&(e=nr(e,this.array)),e}setY(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize+1]=e,this}getZ(t){let e=this.array[t*this.itemSize+2];return this.normalized&&(e=nr(e,this.array)),e}setZ(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize+2]=e,this}getW(t){let e=this.array[t*this.itemSize+3];return this.normalized&&(e=nr(e,this.array)),e}setW(t,e){return this.normalized&&(e=Ue(e,this.array)),this.array[t*this.itemSize+3]=e,this}setXY(t,e,i){return t*=this.itemSize,this.normalized&&(e=Ue(e,this.array),i=Ue(i,this.array)),this.array[t+0]=e,this.array[t+1]=i,this}setXYZ(t,e,i,n){return t*=this.itemSize,this.normalized&&(e=Ue(e,this.array),i=Ue(i,this.array),n=Ue(n,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this}setXYZW(t,e,i,n,s){return t*=this.itemSize,this.normalized&&(e=Ue(e,this.array),i=Ue(i,this.array),n=Ue(n,this.array),s=Ue(s,this.array)),this.array[t+0]=e,this.array[t+1]=i,this.array[t+2]=n,this.array[t+3]=s,this}onUpload(t){return this.onUploadCallback=t,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const t={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(t.name=this.name),this.usage!==jl&&(t.usage=this.usage),t}}class dh extends Ei{constructor(t,e,i){super(new Uint16Array(t),e,i)}}class fh extends Ei{constructor(t,e,i){super(new Uint32Array(t),e,i)}}class wn extends Ei{constructor(t,e,i){super(new Float32Array(t),e,i)}}let If=0;const Ke=new ue,cA=new xe,Cs=new F,Xe=new hs,lr=new hs,Ee=new F;class Rn extends rs{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:If++}),this.uuid=ir(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(t){return Array.isArray(t)?this.index=new(Kl(t)?fh:dh)(t,1):this.index=t,this}setIndirect(t){return this.indirect=t,this}getIndirect(){return this.indirect}getAttribute(t){return this.attributes[t]}setAttribute(t,e){return this.attributes[t]=e,this}deleteAttribute(t){return delete this.attributes[t],this}hasAttribute(t){return this.attributes[t]!==void 0}addGroup(t,e,i=0){this.groups.push({start:t,count:e,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(t,e){this.drawRange.start=t,this.drawRange.count=e}applyMatrix4(t){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(t),e.needsUpdate=!0);const i=this.attributes.normal;if(i!==void 0){const s=new Nt().getNormalMatrix(t);i.applyNormalMatrix(s),i.needsUpdate=!0}const n=this.attributes.tangent;return n!==void 0&&(n.transformDirection(t),n.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(t){return Ke.makeRotationFromQuaternion(t),this.applyMatrix4(Ke),this}rotateX(t){return Ke.makeRotationX(t),this.applyMatrix4(Ke),this}rotateY(t){return Ke.makeRotationY(t),this.applyMatrix4(Ke),this}rotateZ(t){return Ke.makeRotationZ(t),this.applyMatrix4(Ke),this}translate(t,e,i){return Ke.makeTranslation(t,e,i),this.applyMatrix4(Ke),this}scale(t,e,i){return Ke.makeScale(t,e,i),this.applyMatrix4(Ke),this}lookAt(t){return cA.lookAt(t),cA.updateMatrix(),this.applyMatrix4(cA.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Cs).negate(),this.translate(Cs.x,Cs.y,Cs.z),this}setFromPoints(t){const e=this.getAttribute("position");if(e===void 0){const i=[];for(let n=0,s=t.length;n<s;n++){const a=t[n];i.push(a.x,a.y,a.z||0)}this.setAttribute("position",new wn(i,3))}else{const i=Math.min(t.length,e.count);for(let n=0;n<i;n++){const s=t[n];e.setXYZ(n,s.x,s.y,s.z||0)}t.length>e.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),e.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new hs);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new F(-1/0,-1/0,-1/0),new F(1/0,1/0,1/0));return}if(t!==void 0){if(this.boundingBox.setFromBufferAttribute(t),e)for(let i=0,n=e.length;i<n;i++){const s=e[i];Xe.setFromBufferAttribute(s),this.morphTargetsRelative?(Ee.addVectors(this.boundingBox.min,Xe.min),this.boundingBox.expandByPoint(Ee),Ee.addVectors(this.boundingBox.max,Xe.max),this.boundingBox.expandByPoint(Ee)):(this.boundingBox.expandByPoint(Xe.min),this.boundingBox.expandByPoint(Xe.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new qo);const t=this.attributes.position,e=this.morphAttributes.position;if(t&&t.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new F,1/0);return}if(t){const i=this.boundingSphere.center;if(Xe.setFromBufferAttribute(t),e)for(let s=0,a=e.length;s<a;s++){const o=e[s];lr.setFromBufferAttribute(o),this.morphTargetsRelative?(Ee.addVectors(Xe.min,lr.min),Xe.expandByPoint(Ee),Ee.addVectors(Xe.max,lr.max),Xe.expandByPoint(Ee)):(Xe.expandByPoint(lr.min),Xe.expandByPoint(lr.max))}Xe.getCenter(i);let n=0;for(let s=0,a=t.count;s<a;s++)Ee.fromBufferAttribute(t,s),n=Math.max(n,i.distanceToSquared(Ee));if(e)for(let s=0,a=e.length;s<a;s++){const o=e[s],l=this.morphTargetsRelative;for(let A=0,h=o.count;A<h;A++)Ee.fromBufferAttribute(o,A),l&&(Cs.fromBufferAttribute(t,A),Ee.add(Cs)),n=Math.max(n,i.distanceToSquared(Ee))}this.boundingSphere.radius=Math.sqrt(n),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const t=this.index,e=this.attributes;if(t===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const i=e.position,n=e.normal,s=e.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new Ei(new Float32Array(4*i.count),4));const a=this.getAttribute("tangent"),o=[],l=[];for(let P=0;P<i.count;P++)o[P]=new F,l[P]=new F;const A=new F,h=new F,c=new F,u=new Zt,d=new Zt,p=new Zt,m=new F,g=new F;function f(P,E,x){A.fromBufferAttribute(i,P),h.fromBufferAttribute(i,E),c.fromBufferAttribute(i,x),u.fromBufferAttribute(s,P),d.fromBufferAttribute(s,E),p.fromBufferAttribute(s,x),h.sub(A),c.sub(A),d.sub(u),p.sub(u);const b=1/(d.x*p.y-p.x*d.y);isFinite(b)&&(m.copy(h).multiplyScalar(p.y).addScaledVector(c,-d.y).multiplyScalar(b),g.copy(c).multiplyScalar(d.x).addScaledVector(h,-p.x).multiplyScalar(b),o[P].add(m),o[E].add(m),o[x].add(m),l[P].add(g),l[E].add(g),l[x].add(g))}let y=this.groups;y.length===0&&(y=[{start:0,count:t.count}]);for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)f(t.getX(B+0),t.getX(B+1),t.getX(B+2))}const S=new F,v=new F,w=new F,T=new F;function R(P){w.fromBufferAttribute(n,P),T.copy(w);const E=o[P];S.copy(E),S.sub(w.multiplyScalar(w.dot(E))).normalize(),v.crossVectors(T,E);const b=v.dot(l[P])<0?-1:1;a.setXYZW(P,S.x,S.y,S.z,b)}for(let P=0,E=y.length;P<E;++P){const x=y[P],b=x.start,z=x.count;for(let B=b,U=b+z;B<U;B+=3)R(t.getX(B+0)),R(t.getX(B+1)),R(t.getX(B+2))}}computeVertexNormals(){const t=this.index,e=this.getAttribute("position");if(e!==void 0){let i=this.getAttribute("normal");if(i===void 0)i=new Ei(new Float32Array(e.count*3),3),this.setAttribute("normal",i);else for(let u=0,d=i.count;u<d;u++)i.setXYZ(u,0,0,0);const n=new F,s=new F,a=new F,o=new F,l=new F,A=new F,h=new F,c=new F;if(t)for(let u=0,d=t.count;u<d;u+=3){const p=t.getX(u+0),m=t.getX(u+1),g=t.getX(u+2);n.fromBufferAttribute(e,p),s.fromBufferAttribute(e,m),a.fromBufferAttribute(e,g),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),o.fromBufferAttribute(i,p),l.fromBufferAttribute(i,m),A.fromBufferAttribute(i,g),o.add(h),l.add(h),A.add(h),i.setXYZ(p,o.x,o.y,o.z),i.setXYZ(m,l.x,l.y,l.z),i.setXYZ(g,A.x,A.y,A.z)}else for(let u=0,d=e.count;u<d;u+=3)n.fromBufferAttribute(e,u+0),s.fromBufferAttribute(e,u+1),a.fromBufferAttribute(e,u+2),h.subVectors(a,s),c.subVectors(n,s),h.cross(c),i.setXYZ(u+0,h.x,h.y,h.z),i.setXYZ(u+1,h.x,h.y,h.z),i.setXYZ(u+2,h.x,h.y,h.z);this.normalizeNormals(),i.needsUpdate=!0}}normalizeNormals(){const t=this.attributes.normal;for(let e=0,i=t.count;e<i;e++)Ee.fromBufferAttribute(t,e),Ee.normalize(),t.setXYZ(e,Ee.x,Ee.y,Ee.z)}toNonIndexed(){function t(o,l){const A=o.array,h=o.itemSize,c=o.normalized,u=new A.constructor(l.length*h);let d=0,p=0;for(let m=0,g=l.length;m<g;m++){o.isInterleavedBufferAttribute?d=l[m]*o.data.stride+o.offset:d=l[m]*h;for(let f=0;f<h;f++)u[p++]=A[d++]}return new Ei(u,h,c)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new Rn,i=this.index.array,n=this.attributes;for(const o in n){const l=n[o],A=t(l,i);e.setAttribute(o,A)}const s=this.morphAttributes;for(const o in s){const l=[],A=s[o];for(let h=0,c=A.length;h<c;h++){const u=A[h],d=t(u,i);l.push(d)}e.morphAttributes[o]=l}e.morphTargetsRelative=this.morphTargetsRelative;const a=this.groups;for(let o=0,l=a.length;o<l;o++){const A=a[o];e.addGroup(A.start,A.count,A.materialIndex)}return e}toJSON(){const t={metadata:{version:4.7,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),Object.keys(this.userData).length>0&&(t.userData=this.userData),this.parameters!==void 0){const l=this.parameters;for(const A in l)l[A]!==void 0&&(t[A]=l[A]);return t}t.data={attributes:{}};const e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const i=this.attributes;for(const l in i){const A=i[l];t.data.attributes[l]=A.toJSON(t.data)}const n={};let s=!1;for(const l in this.morphAttributes){const A=this.morphAttributes[l],h=[];for(let c=0,u=A.length;c<u;c++){const d=A[c];h.push(d.toJSON(t.data))}h.length>0&&(n[l]=h,s=!0)}s&&(t.data.morphAttributes=n,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const o=this.boundingSphere;return o!==null&&(t.data.boundingSphere=o.toJSON()),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const i=t.index;i!==null&&this.setIndex(i.clone());const n=t.attributes;for(const A in n){const h=n[A];this.setAttribute(A,h.clone(e))}const s=t.morphAttributes;for(const A in s){const h=[],c=s[A];for(let u=0,d=c.length;u<d;u++)h.push(c[u].clone(e));this.morphAttributes[A]=h}this.morphTargetsRelative=t.morphTargetsRelative;const a=t.groups;for(let A=0,h=a.length;A<h;A++){const c=a[A];this.addGroup(c.start,c.count,c.materialIndex)}const o=t.boundingBox;o!==null&&(this.boundingBox=o.clone());const l=t.boundingSphere;return l!==null&&(this.boundingSphere=l.clone()),this.drawRange.start=t.drawRange.start,this.drawRange.count=t.drawRange.count,this.userData=t.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const gh=new ue,_n=new lf,ea=new qo,ph=new F,ia=new F,na=new F,sa=new F,uA=new F,ra=new F,mh=new F,aa=new F;class mi extends xe{constructor(t=new Rn,e=new hA){super(),this.isMesh=!0,this.type="Mesh",this.geometry=t,this.material=e,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(t,e){return super.copy(t,e),t.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=t.morphTargetInfluences.slice()),t.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},t.morphTargetDictionary)),this.material=Array.isArray(t.material)?t.material.slice():t.material,this.geometry=t.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,i=Object.keys(e);if(i.length>0){const n=e[i[0]];if(n!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=n.length;s<a;s++){const o=n[s].name||String(s);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=s}}}}getVertexPosition(t,e){const i=this.geometry,n=i.attributes.position,s=i.morphAttributes.position,a=i.morphTargetsRelative;e.fromBufferAttribute(n,t);const o=this.morphTargetInfluences;if(s&&o){ra.set(0,0,0);for(let l=0,A=s.length;l<A;l++){const h=o[l],c=s[l];h!==0&&(uA.fromBufferAttribute(c,t),a?ra.addScaledVector(uA,h):ra.addScaledVector(uA.sub(e),h))}e.add(ra)}return e}raycast(t,e){const i=this.geometry,n=this.material,s=this.matrixWorld;n!==void 0&&(i.boundingSphere===null&&i.computeBoundingSphere(),ea.copy(i.boundingSphere),ea.applyMatrix4(s),_n.copy(t.ray).recast(t.near),!(ea.containsPoint(_n.origin)===!1&&(_n.intersectSphere(ea,ph)===null||_n.origin.distanceToSquared(ph)>(t.far-t.near)**2))&&(gh.copy(s).invert(),_n.copy(t.ray).applyMatrix4(gh),!(i.boundingBox!==null&&_n.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(t,e,_n)))}_computeIntersections(t,e,i){let n;const s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,A=s.attributes.uv,h=s.attributes.uv1,c=s.attributes.normal,u=s.groups,d=s.drawRange;if(o!==null)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(o.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=o.getX(v),R=o.getX(v+1),P=o.getX(v+2);n=oa(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(o.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=o.getX(g),S=o.getX(g+1),v=o.getX(g+2);n=oa(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}else if(l!==void 0)if(Array.isArray(a))for(let p=0,m=u.length;p<m;p++){const g=u[p],f=a[g.materialIndex],y=Math.max(g.start,d.start),S=Math.min(l.count,Math.min(g.start+g.count,d.start+d.count));for(let v=y,w=S;v<w;v+=3){const T=v,R=v+1,P=v+2;n=oa(this,f,t,i,A,h,c,T,R,P),n&&(n.faceIndex=Math.floor(v/3),n.face.materialIndex=g.materialIndex,e.push(n))}}else{const p=Math.max(0,d.start),m=Math.min(l.count,d.start+d.count);for(let g=p,f=m;g<f;g+=3){const y=g,S=g+1,v=g+2;n=oa(this,a,t,i,A,h,c,y,S,v),n&&(n.faceIndex=Math.floor(g/3),e.push(n))}}}}function Cf(r,t,e,i,n,s,a,o){let l;if(t.side===Oe?l=i.intersectTriangle(a,s,n,!0,o):l=i.intersectTriangle(n,s,a,t.side===$i,o),l===null)return null;aa.copy(o),aa.applyMatrix4(r.matrixWorld);const A=e.ray.origin.distanceTo(aa);return A<e.near||A>e.far?null:{distance:A,point:aa.clone(),object:r}}function oa(r,t,e,i,n,s,a,o,l,A){r.getVertexPosition(o,ia),r.getVertexPosition(l,na),r.getVertexPosition(A,sa);const h=Cf(r,t,e,i,ia,na,sa,mh);if(h){const c=new F;pi.getBarycoord(mh,ia,na,sa,c),n&&(h.uv=pi.getInterpolatedAttribute(n,o,l,A,c,new Zt)),s&&(h.uv1=pi.getInterpolatedAttribute(s,o,l,A,c,new Zt)),a&&(h.normal=pi.getInterpolatedAttribute(a,o,l,A,c,new F),h.normal.dot(i.direction)>0&&h.normal.multiplyScalar(-1));const u={a:o,b:l,c:A,normal:new F,materialIndex:0};pi.getNormal(ia,na,sa,u.normal),h.face=u,h.barycoord=c}return h}class vs extends Rn{constructor(t=1,e=1,i=1,n=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:i,widthSegments:n,heightSegments:s,depthSegments:a};const o=this;n=Math.floor(n),s=Math.floor(s),a=Math.floor(a);const l=[],A=[],h=[],c=[];let u=0,d=0;p("z","y","x",-1,-1,i,e,t,a,s,0),p("z","y","x",1,-1,i,e,-t,a,s,1),p("x","z","y",1,1,t,i,e,n,a,2),p("x","z","y",1,-1,t,i,-e,n,a,3),p("x","y","z",1,-1,t,e,i,n,s,4),p("x","y","z",-1,-1,t,e,-i,n,s,5),this.setIndex(l),this.setAttribute("position",new wn(A,3)),this.setAttribute("normal",new wn(h,3)),this.setAttribute("uv",new wn(c,2));function p(m,g,f,y,S,v,w,T,R,P,E){const x=v/R,b=w/P,z=v/2,B=w/2,U=T/2,W=R+1,Y=P+1;let $=0,H=0;const rt=new F;for(let lt=0;lt<Y;lt++){const mt=lt*b-B;for(let Ot=0;Ot<W;Ot++){const se=Ot*x-z;rt[m]=se*y,rt[g]=mt*S,rt[f]=U,A.push(rt.x,rt.y,rt.z),rt[m]=0,rt[g]=0,rt[f]=T>0?1:-1,h.push(rt.x,rt.y,rt.z),c.push(Ot/R),c.push(1-lt/P),$+=1}}for(let lt=0;lt<P;lt++)for(let mt=0;mt<R;mt++){const Ot=u+mt+W*lt,se=u+mt+W*(lt+1),$t=u+(mt+1)+W*(lt+1),J=u+(mt+1)+W*lt;l.push(Ot,se,J),l.push(se,$t,J),H+=6}o.addGroup(d,H,E),d+=H,u+=$}}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new vs(t.width,t.height,t.depth,t.widthSegments,t.heightSegments,t.depthSegments)}}function xs(r){const t={};for(const e in r){t[e]={};for(const i in r[e]){const n=r[e][i];n&&(n.isColor||n.isMatrix3||n.isMatrix4||n.isVector2||n.isVector3||n.isVector4||n.isTexture||n.isQuaternion)?n.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),t[e][i]=null):t[e][i]=n.clone():Array.isArray(n)?t[e][i]=n.slice():t[e][i]=n}}return t}function Pe(r){const t={};for(let e=0;e<r.length;e++){const i=xs(r[e]);for(const n in i)t[n]=i[n]}return t}function vf(r){const t=[];for(let e=0;e<r.length;e++)t.push(r[e].clone());return t}function Ih(r){const t=r.getRenderTarget();return t===null?r.outputColorSpace:t.isXRRenderTarget===!0?t.texture.colorSpace:Yt.workingColorSpace}const xf={clone:xs,merge:Pe};var Ef=`void main() {
125
125
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
126
- }`,If=`void main() {
126
+ }`,Sf=`void main() {
127
127
  gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
128
- }`;class An extends nr{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=mf,this.fragmentShader=If,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,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=vs(t.uniforms),this.uniformsGroups=gf(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){const e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(const n in this.uniforms){const a=this.uniforms[n].value;a&&a.isTexture?e.uniforms[n]={type:"t",value:a.toJSON(t).uuid}:a&&a.isColor?e.uniforms[n]={type:"c",value:a.getHex()}:a&&a.isVector2?e.uniforms[n]={type:"v2",value:a.toArray()}:a&&a.isVector3?e.uniforms[n]={type:"v3",value:a.toArray()}:a&&a.isVector4?e.uniforms[n]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?e.uniforms[n]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?e.uniforms[n]={type:"m4",value:a.toArray()}:e.uniforms[n]={value:a}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const i={};for(const n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}}class fh extends xe{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ue,this.projectionMatrix=new ue,this.projectionMatrixInverse=new ue,this.coordinateSystem=vi,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const ln=new F,gh=new Zt,ph=new Zt;class ze extends fh{constructor(t=50,e=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=Gr*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(Oo*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Gr*2*Math.atan(Math.tan(Oo*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,i){ln.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(ln.x,ln.y).multiplyScalar(-t/ln.z),ln.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(ln.x,ln.y).multiplyScalar(-t/ln.z)}getViewSize(t,e){return this.getViewBounds(t,gh,ph),e.subVectors(ph,gh)}setViewOffset(t,e,i,n,s,a){this.aspect=t/e,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=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(Oo*.5*this.fov)/this.zoom,i=2*e,n=this.aspect*i,s=-.5*n;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,A=a.fullHeight;s+=a.offsetX*n/l,e-=a.offsetY*i/A,n*=a.width/l,i*=a.height/A}const o=this.filmOffset;o!==0&&(s+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+n,e,e-i,t,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const xs=-90,Es=1;class Cf extends xe{constructor(t,e,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const n=new ze(xs,Es,t,e);n.layers=this.layers,this.add(n);const s=new ze(xs,Es,t,e);s.layers=this.layers,this.add(s);const a=new ze(xs,Es,t,e);a.layers=this.layers,this.add(a);const o=new ze(xs,Es,t,e);o.layers=this.layers,this.add(o);const l=new ze(xs,Es,t,e);l.layers=this.layers,this.add(l);const A=new ze(xs,Es,t,e);A.layers=this.layers,this.add(A)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[i,n,s,a,o,l]=e;for(const A of e)this.remove(A);if(t===vi)i.up.set(0,1,0),i.lookAt(1,0,0),n.up.set(0,1,0),n.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(t===zr)i.up.set(0,-1,0),i.lookAt(-1,0,0),n.up.set(0,-1,0),n.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: "+t);for(const A of e)this.add(A),A.updateMatrixWorld()}update(t,e){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:n}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[s,a,o,l,A,h]=this.children,c=t.getRenderTarget(),u=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;const m=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0,n),t.render(e,s),t.setRenderTarget(i,1,n),t.render(e,a),t.setRenderTarget(i,2,n),t.render(e,o),t.setRenderTarget(i,3,n),t.render(e,l),t.setRenderTarget(i,4,n),t.render(e,A),i.texture.generateMipmaps=m,t.setRenderTarget(i,5,n),t.render(e,h),t.setRenderTarget(c,u,d),t.xr.enabled=p,i.texture.needsPMREMUpdate=!0}}class mh extends we{constructor(t=[],e=ts,i,n,s,a,o,l,A,h){super(t,e,i,n,s,a,o,l,A,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class vf extends Mn{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const i={width:t,height:t,depth:1},n=[i,i,i,i,i,i];this.texture=new mh(n),this._setTextureOptions(e),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:`
128
+ }`;class ln extends Ar{constructor(t){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Ef,this.fragmentShader=Sf,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,t!==void 0&&this.setValues(t)}copy(t){return super.copy(t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=xs(t.uniforms),this.uniformsGroups=vf(t.uniformsGroups),this.defines=Object.assign({},t.defines),this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.fog=t.fog,this.lights=t.lights,this.clipping=t.clipping,this.extensions=Object.assign({},t.extensions),this.glslVersion=t.glslVersion,this}toJSON(t){const e=super.toJSON(t);e.glslVersion=this.glslVersion,e.uniforms={};for(const n in this.uniforms){const a=this.uniforms[n].value;a&&a.isTexture?e.uniforms[n]={type:"t",value:a.toJSON(t).uuid}:a&&a.isColor?e.uniforms[n]={type:"c",value:a.getHex()}:a&&a.isVector2?e.uniforms[n]={type:"v2",value:a.toArray()}:a&&a.isVector3?e.uniforms[n]={type:"v3",value:a.toArray()}:a&&a.isVector4?e.uniforms[n]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?e.uniforms[n]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?e.uniforms[n]={type:"m4",value:a.toArray()}:e.uniforms[n]={value:a}}Object.keys(this.defines).length>0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const i={};for(const n in this.extensions)this.extensions[n]===!0&&(i[n]=!0);return Object.keys(i).length>0&&(e.extensions=i),e}}class Ch extends xe{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new ue,this.projectionMatrix=new ue,this.projectionMatrixInverse=new ue,this.coordinateSystem=xi,this._reversedDepth=!1}get reversedDepth(){return this._reversedDepth}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const hn=new F,vh=new Zt,xh=new Zt;class ze extends Ch{constructor(t=50,e=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=Yr*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(Ho*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Yr*2*Math.atan(Math.tan(Ho*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(t,e,i){hn.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),e.set(hn.x,hn.y).multiplyScalar(-t/hn.z),hn.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(hn.x,hn.y).multiplyScalar(-t/hn.z)}getViewSize(t,e){return this.getViewBounds(t,vh,xh),e.subVectors(xh,vh)}setViewOffset(t,e,i,n,s,a){this.aspect=t/e,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=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(Ho*.5*this.fov)/this.zoom,i=2*e,n=this.aspect*i,s=-.5*n;const a=this.view;if(this.view!==null&&this.view.enabled){const l=a.fullWidth,A=a.fullHeight;s+=a.offsetX*n/l,e-=a.offsetY*i/A,n*=a.width/l,i*=a.height/A}const o=this.filmOffset;o!==0&&(s+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+n,e,e-i,t,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const Es=-90,Ss=1;class Mf extends xe{constructor(t,e,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;const n=new ze(Es,Ss,t,e);n.layers=this.layers,this.add(n);const s=new ze(Es,Ss,t,e);s.layers=this.layers,this.add(s);const a=new ze(Es,Ss,t,e);a.layers=this.layers,this.add(a);const o=new ze(Es,Ss,t,e);o.layers=this.layers,this.add(o);const l=new ze(Es,Ss,t,e);l.layers=this.layers,this.add(l);const A=new ze(Es,Ss,t,e);A.layers=this.layers,this.add(A)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[i,n,s,a,o,l]=e;for(const A of e)this.remove(A);if(t===xi)i.up.set(0,1,0),i.lookAt(1,0,0),n.up.set(0,1,0),n.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(t===Wr)i.up.set(0,-1,0),i.lookAt(-1,0,0),n.up.set(0,-1,0),n.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: "+t);for(const A of e)this.add(A),A.updateMatrixWorld()}update(t,e){this.parent===null&&this.updateMatrixWorld();const{renderTarget:i,activeMipmapLevel:n}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[s,a,o,l,A,h]=this.children,c=t.getRenderTarget(),u=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;const m=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,t.setRenderTarget(i,0,n),t.render(e,s),t.setRenderTarget(i,1,n),t.render(e,a),t.setRenderTarget(i,2,n),t.render(e,o),t.setRenderTarget(i,3,n),t.render(e,l),t.setRenderTarget(i,4,n),t.render(e,A),i.texture.generateMipmaps=m,t.setRenderTarget(i,5,n),t.render(e,h),t.setRenderTarget(c,u,d),t.xr.enabled=p,i.texture.needsPMREMUpdate=!0}}class Eh extends we{constructor(t=[],e=es,i,n,s,a,o,l,A,h){super(t,e,i,n,s,a,o,l,A,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class yf extends yn{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const i={width:t,height:t,depth:1},n=[i,i,i,i,i,i];this.texture=new Eh(n),this._setTextureOptions(e),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:`
129
129
 
130
130
  varying vec3 vWorldDirection;
131
131
 
@@ -160,9 +160,9 @@ void main() {
160
160
  gl_FragColor = texture2D( tEquirect, sampleUV );
161
161
 
162
162
  }
163
- `},n=new Cs(5,5,5),s=new An({name:"CubemapFromEquirect",uniforms:vs(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Oe,blending:$i});s.uniforms.tEquirect.value=e;const a=new pi(n,s),o=e.minFilter;return e.minFilter===En&&(e.minFilter=Ii),new Cf(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e=!0,i=!0,n=!0){const s=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,i,n);t.setRenderTarget(s)}}class rr extends xe{constructor(){super(),this.isGroup=!0,this.type="Group"}}const xf={type:"move"};class AA{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new rr,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 rr,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new F,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new F),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new rr,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new F,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new F),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){const e=this._hand;if(e)for(const i of t.hand.values())this._getHandJoint(e,i)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,i){let n=null,s=null,a=null;const o=this._targetRay,l=this._grip,A=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(A&&t.hand){a=!0;for(const m of t.hand.values()){const g=e.getJointPose(m,i),f=this._getHandJoint(A,m);g!==null&&(f.matrix.fromArray(g.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.matrixWorldNeedsUpdate=!0,f.jointRadius=g.radius),f.visible=g!==null}const h=A.joints["index-finger-tip"],c=A.joints["thumb-tip"],u=h.position.distanceTo(c.position),d=.02,p=.005;A.inputState.pinching&&u>d+p?(A.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!A.inputState.pinching&&u<=d-p&&(A.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else l!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,i),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&&(n=e.getPose(t.targetRaySpace,i),n===null&&s!==null&&(n=s),n!==null&&(o.matrix.fromArray(n.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,n.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(n.linearVelocity)):o.hasLinearVelocity=!1,n.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(n.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(xf)))}return o!==null&&(o.visible=n!==null),l!==null&&(l.visible=s!==null),A!==null&&(A.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){const i=new rr;i.matrixAutoUpdate=!1,i.visible=!1,t.joints[e.jointName]=i,t.add(i)}return t.joints[e.jointName]}}class lA{constructor(t,e=1,i=1e3){this.isFog=!0,this.name="",this.color=new Vt(t),this.near=e,this.far=i}clone(){return new lA(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Ih extends xe{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 di,this.environmentIntensity=1,this.environmentRotation=new di,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),t.background!==null&&(this.background=t.background.clone()),t.environment!==null&&(this.environment=t.environment.clone()),t.fog!==null&&(this.fog=t.fog.clone()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),t.overrideMaterial!==null&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}const hA=new F,Ef=new F,Sf=new Nt;class _n{constructor(t=new F(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,i){const n=hA.subVectors(i,e).cross(Ef.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const i=t.delta(hA),n=this.normal.dot(i);if(n===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;const s=-(t.start.dot(this.normal)+this.constant)/n;return s<0||s>1?null:e.copy(t.start).addScaledVector(i,s)}intersectsLine(t){const e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const i=e||Sf.getNormalMatrix(t),n=this.coplanarPoint(hA).applyMatrix4(t),s=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Pn=new Xo,Mf=new Zt(.5,.5),na=new F;class cA{constructor(t=new _n,e=new _n,i=new _n,n=new _n,s=new _n,a=new _n){this.planes=[t,e,i,n,s,a]}set(t,e,i,n,s,a){const o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(i),o[3].copy(n),o[4].copy(s),o[5].copy(a),this}copy(t){const e=this.planes;for(let i=0;i<6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t,e=vi,i=!1){const n=this.planes,s=t.elements,a=s[0],o=s[1],l=s[2],A=s[3],h=s[4],c=s[5],u=s[6],d=s[7],p=s[8],m=s[9],g=s[10],f=s[11],y=s[12],S=s[13],v=s[14],w=s[15];if(n[0].setComponents(A-a,d-h,f-p,w-y).normalize(),n[1].setComponents(A+a,d+h,f+p,w+y).normalize(),n[2].setComponents(A+o,d+c,f+m,w+S).normalize(),n[3].setComponents(A-o,d-c,f-m,w-S).normalize(),i)n[4].setComponents(l,u,g,v).normalize(),n[5].setComponents(A-l,d-u,f-g,w-v).normalize();else if(n[4].setComponents(A-l,d-u,f-g,w-v).normalize(),e===vi)n[5].setComponents(A+l,d+u,f+g,w+v).normalize();else if(e===zr)n[5].setComponents(l,u,g,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(t.boundingSphere!==void 0)t.boundingSphere===null&&t.computeBoundingSphere(),Pn.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),Pn.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(Pn)}intersectsSprite(t){Pn.center.set(0,0,0);const e=Mf.distanceTo(t.center);return Pn.radius=.7071067811865476+e,Pn.applyMatrix4(t.matrixWorld),this.intersectsSphere(Pn)}intersectsSphere(t){const e=this.planes,i=t.center,n=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(i)<n)return!1;return!0}intersectsBox(t){const e=this.planes;for(let i=0;i<6;i++){const n=e[i];if(na.x=n.normal.x>0?t.max.x:t.min.x,na.y=n.normal.y>0?t.max.y:t.min.y,na.z=n.normal.z>0?t.max.z:t.min.z,n.distanceToPoint(na)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let i=0;i<6;i++)if(e[i].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class Ch extends we{constructor(t,e,i,n,s,a,o,l,A){super(t,e,i,n,s,a,o,l,A),this.isCanvasTexture=!0,this.needsUpdate=!0}}class vh extends we{constructor(t,e,i=Sn,n,s,a,o=li,l=li,A,h=js,c=1){if(h!==js&&h!==Qs)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const u={width:t,height:e,depth:c};super(u,n,s,a,o,l,h,i,A),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.source=new ko(Object.assign({},t.image)),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return this.compareFunction!==null&&(e.compareFunction=this.compareFunction),e}}class ar extends wn{constructor(t=1,e=1,i=1,n=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:i,heightSegments:n};const s=t/2,a=e/2,o=Math.floor(i),l=Math.floor(n),A=o+1,h=l+1,c=t/o,u=e/l,d=[],p=[],m=[],g=[];for(let f=0;f<h;f++){const y=f*u-a;for(let S=0;S<A;S++){const v=S*c-s;p.push(v,-y,0),m.push(0,0,1),g.push(S/o),g.push(1-f/l)}}for(let f=0;f<l;f++)for(let y=0;y<o;y++){const S=y+A*f,v=y+A*(f+1),w=y+1+A*(f+1),T=y+1+A*f;d.push(S,v,T),d.push(v,w,T)}this.setIndex(d),this.setAttribute("position",new Tn(p,3)),this.setAttribute("normal",new Tn(m,3)),this.setAttribute("uv",new Tn(g,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new ar(t.width,t.height,t.widthSegments,t.heightSegments)}}class yf extends nr{constructor(t){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Vt(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Vt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=kl,this.normalScale=new Zt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new di,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:""},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.roughnessMap=t.roughnessMap,this.metalnessMap=t.metalnessMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.envMapIntensity=t.envMapIntensity,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}class bf extends nr{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Od,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Tf extends nr{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}const uA={enabled:!1,files:{},add:function(r,t){this.enabled!==!1&&(this.files[r]=t)},get:function(r){if(this.enabled!==!1)return this.files[r]},remove:function(r){delete this.files[r]},clear:function(){this.files={}}};class wf{constructor(t,e,i){const n=this;let s=!1,a=0,o=0,l;const A=[];this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=i,this.abortController=new AbortController,this.itemStart=function(h){o++,s===!1&&n.onStart!==void 0&&n.onStart(h,a,o),s=!0},this.itemEnd=function(h){a++,n.onProgress!==void 0&&n.onProgress(h,a,o),a===o&&(s=!1,n.onLoad!==void 0&&n.onLoad())},this.itemError=function(h){n.onError!==void 0&&n.onError(h)},this.resolveURL=function(h){return l?l(h):h},this.setURLModifier=function(h){return l=h,this},this.addHandler=function(h,c){return A.push(h,c),this},this.removeHandler=function(h){const c=A.indexOf(h);return c!==-1&&A.splice(c,2),this},this.getHandler=function(h){for(let c=0,u=A.length;c<u;c+=2){const d=A[c],p=A[c+1];if(d.global&&(d.lastIndex=0),d.test(h))return p}return null},this.abort=function(){return this.abortController.abort(),this.abortController=new AbortController,this}}}const Rf=new wf;class dA{constructor(t){this.manager=t!==void 0?t:Rf,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(t,e){const i=this;return new Promise(function(n,s){i.load(t,n,e,s)})}parse(){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}abort(){return this}}dA.DEFAULT_MATERIAL_NAME="__DEFAULT";const Ss=new WeakMap;class _f extends dA{constructor(t){super(t)}load(t,e,i,n){this.path!==void 0&&(t=this.path+t),t=this.manager.resolveURL(t);const s=this,a=uA.get(`image:${t}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(t),setTimeout(function(){e&&e(a),s.manager.itemEnd(t)},0);else{let c=Ss.get(a);c===void 0&&(c=[],Ss.set(a,c)),c.push({onLoad:e,onError:n})}return a}const o=$s("img");function l(){h(),e&&e(this);const c=Ss.get(this)||[];for(let u=0;u<c.length;u++){const d=c[u];d.onLoad&&d.onLoad(this)}Ss.delete(this),s.manager.itemEnd(t)}function A(c){h(),n&&n(c),uA.remove(`image:${t}`);const u=Ss.get(this)||[];for(let d=0;d<u.length;d++){const p=u[d];p.onError&&p.onError(c)}Ss.delete(this),s.manager.itemError(t),s.manager.itemEnd(t)}function h(){o.removeEventListener("load",l,!1),o.removeEventListener("error",A,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",A,!1),t.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),uA.add(`image:${t}`,o),s.manager.itemStart(t),o.src=t,o}}class xh extends dA{constructor(t){super(t)}load(t,e,i,n){const s=new we,a=new _f(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(t,function(o){s.image=o,s.needsUpdate=!0,e!==void 0&&e(s)},i,n),s}}class fA extends xe{constructor(t,e=1){super(),this.isLight=!0,this.type="Light",this.color=new Vt(t),this.intensity=e}dispose(){}copy(t,e){return super.copy(t,e),this.color.copy(t.color),this.intensity=t.intensity,this}toJSON(t){const e=super.toJSON(t);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,this.groundColor!==void 0&&(e.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(e.object.distance=this.distance),this.angle!==void 0&&(e.object.angle=this.angle),this.decay!==void 0&&(e.object.decay=this.decay),this.penumbra!==void 0&&(e.object.penumbra=this.penumbra),this.shadow!==void 0&&(e.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(e.object.target=this.target.uuid),e}}const gA=new ue,Eh=new F,Sh=new F;class Mh{constructor(t){this.camera=t,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Zt(512,512),this.mapType=Ci,this.map=null,this.mapPass=null,this.matrix=new ue,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new cA,this._frameExtents=new Zt(1,1),this._viewportCount=1,this._viewports=[new he(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(t){const e=this.camera,i=this.matrix;Eh.setFromMatrixPosition(t.matrixWorld),e.position.copy(Eh),Sh.setFromMatrixPosition(t.target.matrixWorld),e.lookAt(Sh),e.updateMatrixWorld(),gA.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(gA,e.coordinateSystem,e.reversedDepth),e.reversedDepth?i.set(.5,0,0,.5,0,.5,0,.5,0,0,1,0,0,0,0,1):i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(gA)}getViewport(t){return this._viewports[t]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(t){return this.camera=t.camera.clone(),this.intensity=t.intensity,this.bias=t.bias,this.radius=t.radius,this.autoUpdate=t.autoUpdate,this.needsUpdate=t.needsUpdate,this.normalBias=t.normalBias,this.blurSamples=t.blurSamples,this.mapSize.copy(t.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const t={};return this.intensity!==1&&(t.intensity=this.intensity),this.bias!==0&&(t.bias=this.bias),this.normalBias!==0&&(t.normalBias=this.normalBias),this.radius!==1&&(t.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(t.mapSize=this.mapSize.toArray()),t.camera=this.camera.toJSON(!1).object,delete t.camera.matrix,t}}class Pf extends Mh{constructor(){super(new ze(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(t){const e=this.camera,i=Gr*2*t.angle*this.focus,n=this.mapSize.width/this.mapSize.height*this.aspect,s=t.distance||e.far;(i!==e.fov||n!==e.aspect||s!==e.far)&&(e.fov=i,e.aspect=n,e.far=s,e.updateProjectionMatrix()),super.updateMatrices(t)}copy(t){return super.copy(t),this.focus=t.focus,this}}class Df extends fA{constructor(t,e,i=0,n=Math.PI/3,s=0,a=2){super(t,e),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(xe.DEFAULT_UP),this.updateMatrix(),this.target=new xe,this.distance=i,this.angle=n,this.penumbra=s,this.decay=a,this.map=null,this.shadow=new Pf}get power(){return this.intensity*Math.PI}set power(t){this.intensity=t/Math.PI}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}class yh extends fh{constructor(t=-1,e=1,i=1,n=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=n,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,i,n,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=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let s=i-t,a=i+t,o=n+e,l=n-e;if(this.view!==null&&this.view.enabled){const A=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=A*this.view.offsetX,a=s+A*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}}class Lf extends Mh{constructor(){super(new yh(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class bh extends fA{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(xe.DEFAULT_UP),this.updateMatrix(),this.target=new xe,this.shadow=new Lf}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}class Nf extends fA{constructor(t,e){super(t,e),this.isAmbientLight=!0,this.type="AmbientLight"}}class Ff extends ze{constructor(t=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=t}}class Th{constructor(t=!0){this.autoStart=t,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let t=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const e=performance.now();t=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t}return t}}function wh(r,t,e,i){const n=Bf(i);switch(e){case Bl:return r*t;case Ul:return r*t/n.components*n.byteLength;case oo:return r*t/n.components*n.byteLength;case zl:return r*t*2/n.components*n.byteLength;case Ao:return r*t*2/n.components*n.byteLength;case Ol:return r*t*3/n.components*n.byteLength;case hi:return r*t*4/n.components*n.byteLength;case lo:return r*t*4/n.components*n.byteLength;case Lr:case Nr:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*8;case Fr:case Br:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*16;case co:case fo:return Math.max(r,16)*Math.max(t,8)/4;case ho:case uo:return Math.max(r,8)*Math.max(t,8)/2;case go:case po:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*8;case mo:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*16;case Io:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*16;case Co:return Math.floor((r+4)/5)*Math.floor((t+3)/4)*16;case vo:return Math.floor((r+4)/5)*Math.floor((t+4)/5)*16;case xo:return Math.floor((r+5)/6)*Math.floor((t+4)/5)*16;case Eo:return Math.floor((r+5)/6)*Math.floor((t+5)/6)*16;case So:return Math.floor((r+7)/8)*Math.floor((t+4)/5)*16;case Mo:return Math.floor((r+7)/8)*Math.floor((t+5)/6)*16;case yo:return Math.floor((r+7)/8)*Math.floor((t+7)/8)*16;case bo:return Math.floor((r+9)/10)*Math.floor((t+4)/5)*16;case To:return Math.floor((r+9)/10)*Math.floor((t+5)/6)*16;case wo:return Math.floor((r+9)/10)*Math.floor((t+7)/8)*16;case Ro:return Math.floor((r+9)/10)*Math.floor((t+9)/10)*16;case _o:return Math.floor((r+11)/12)*Math.floor((t+9)/10)*16;case Po:return Math.floor((r+11)/12)*Math.floor((t+11)/12)*16;case Or:case Do:case Lo:return Math.ceil(r/4)*Math.ceil(t/4)*16;case Gl:case No:return Math.ceil(r/4)*Math.ceil(t/4)*8;case Fo:case Bo:return Math.ceil(r/4)*Math.ceil(t/4)*16}throw new Error(`Unable to determine texture byte length for ${e} format.`)}function Bf(r){switch(r){case Ci:case Ll:return{byteLength:1,components:1};case Xs:case Nl:case Zs:return{byteLength:2,components:1};case ro:case ao:return{byteLength:2,components:4};case Sn:case so:case Ni:return{byteLength:4,components:1};case Fl:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${r}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Va}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Va);function Rh(){let r=null,t=!1,e=null,i=null;function n(s,a){e(s,a),i=r.requestAnimationFrame(n)}return{start:function(){t!==!0&&e!==null&&(i=r.requestAnimationFrame(n),t=!0)},stop:function(){r.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Of(r){const t=new WeakMap;function e(o,l){const A=o.array,h=o.usage,c=A.byteLength,u=r.createBuffer();r.bindBuffer(l,u),r.bufferData(l,A,h),o.onUploadCallback();let d;if(A instanceof Float32Array)d=r.FLOAT;else if(typeof Float16Array<"u"&&A instanceof Float16Array)d=r.HALF_FLOAT;else if(A instanceof Uint16Array)o.isFloat16BufferAttribute?d=r.HALF_FLOAT:d=r.UNSIGNED_SHORT;else if(A instanceof Int16Array)d=r.SHORT;else if(A instanceof Uint32Array)d=r.UNSIGNED_INT;else if(A instanceof Int32Array)d=r.INT;else if(A instanceof Int8Array)d=r.BYTE;else if(A instanceof Uint8Array)d=r.UNSIGNED_BYTE;else if(A instanceof Uint8ClampedArray)d=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+A);return{buffer:u,type:d,bytesPerElement:A.BYTES_PER_ELEMENT,version:o.version,size:c}}function i(o,l,A){const h=l.array,c=l.updateRanges;if(r.bindBuffer(A,o),c.length===0)r.bufferSubData(A,0,h);else{c.sort((d,p)=>d.start-p.start);let u=0;for(let d=1;d<c.length;d++){const p=c[u],m=c[d];m.start<=p.start+p.count+1?p.count=Math.max(p.count,m.start+m.count-p.start):(++u,c[u]=m)}c.length=u+1;for(let d=0,p=c.length;d<p;d++){const m=c[d];r.bufferSubData(A,m.start*h.BYTES_PER_ELEMENT,h,m.start,m.count)}l.clearUpdateRanges()}l.onUploadCallback()}function n(o){return o.isInterleavedBufferAttribute&&(o=o.data),t.get(o)}function s(o){o.isInterleavedBufferAttribute&&(o=o.data);const l=t.get(o);l&&(r.deleteBuffer(l.buffer),t.delete(o))}function a(o,l){if(o.isInterleavedBufferAttribute&&(o=o.data),o.isGLBufferAttribute){const h=t.get(o);(!h||h.version<o.version)&&t.set(o,{buffer:o.buffer,type:o.type,bytesPerElement:o.elementSize,version:o.version});return}const A=t.get(o);if(A===void 0)t.set(o,e(o,l));else if(A.version<o.version){if(A.size!==o.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");i(A.buffer,o,l),A.version=o.version}}return{get:n,remove:s,update:a}}var Uf=`#ifdef USE_ALPHAHASH
163
+ `},n=new vs(5,5,5),s=new ln({name:"CubemapFromEquirect",uniforms:xs(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Oe,blending:tn});s.uniforms.tEquirect.value=e;const a=new mi(n,s),o=e.minFilter;return e.minFilter===Sn&&(e.minFilter=Ci),new Mf(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e=!0,i=!0,n=!0){const s=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,i,n);t.setRenderTarget(s)}}class hr extends xe{constructor(){super(),this.isGroup=!0,this.type="Group"}}const bf={type:"move"};class dA{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new hr,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 hr,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new F,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new F),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new hr,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new F,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new F),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){const e=this._hand;if(e)for(const i of t.hand.values())this._getHandJoint(e,i)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,i){let n=null,s=null,a=null;const o=this._targetRay,l=this._grip,A=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(A&&t.hand){a=!0;for(const m of t.hand.values()){const g=e.getJointPose(m,i),f=this._getHandJoint(A,m);g!==null&&(f.matrix.fromArray(g.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.matrixWorldNeedsUpdate=!0,f.jointRadius=g.radius),f.visible=g!==null}const h=A.joints["index-finger-tip"],c=A.joints["thumb-tip"],u=h.position.distanceTo(c.position),d=.02,p=.005;A.inputState.pinching&&u>d+p?(A.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!A.inputState.pinching&&u<=d-p&&(A.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else l!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,i),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&&(n=e.getPose(t.targetRaySpace,i),n===null&&s!==null&&(n=s),n!==null&&(o.matrix.fromArray(n.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,n.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(n.linearVelocity)):o.hasLinearVelocity=!1,n.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(n.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(bf)))}return o!==null&&(o.visible=n!==null),l!==null&&(l.visible=s!==null),A!==null&&(A.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){const i=new hr;i.matrixAutoUpdate=!1,i.visible=!1,t.joints[e.jointName]=i,t.add(i)}return t.joints[e.jointName]}}class fA{constructor(t,e=1,i=1e3){this.isFog=!0,this.name="",this.color=new Vt(t),this.near=e,this.far=i}clone(){return new fA(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Sh extends xe{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 fi,this.environmentIntensity=1,this.environmentRotation=new fi,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(t,e){return super.copy(t,e),t.background!==null&&(this.background=t.background.clone()),t.environment!==null&&(this.environment=t.environment.clone()),t.fog!==null&&(this.fog=t.fog.clone()),this.backgroundBlurriness=t.backgroundBlurriness,this.backgroundIntensity=t.backgroundIntensity,this.backgroundRotation.copy(t.backgroundRotation),this.environmentIntensity=t.environmentIntensity,this.environmentRotation.copy(t.environmentRotation),t.overrideMaterial!==null&&(this.overrideMaterial=t.overrideMaterial.clone()),this.matrixAutoUpdate=t.matrixAutoUpdate,this}toJSON(t){const e=super.toJSON(t);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}const gA=new F,Tf=new F,wf=new Nt;class Pn{constructor(t=new F(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,i,n){return this.normal.set(t,e,i),this.constant=n,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,i){const n=gA.subVectors(i,e).cross(Tf.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(n,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const i=t.delta(gA),n=this.normal.dot(i);if(n===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;const s=-(t.start.dot(this.normal)+this.constant)/n;return s<0||s>1?null:e.copy(t.start).addScaledVector(i,s)}intersectsLine(t){const e=this.distanceToPoint(t.start),i=this.distanceToPoint(t.end);return e<0&&i>0||i<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const i=e||wf.getNormalMatrix(t),n=this.coplanarPoint(gA).applyMatrix4(t),s=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}}const Ln=new qo,Rf=new Zt(.5,.5),Aa=new F;class pA{constructor(t=new Pn,e=new Pn,i=new Pn,n=new Pn,s=new Pn,a=new Pn){this.planes=[t,e,i,n,s,a]}set(t,e,i,n,s,a){const o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(i),o[3].copy(n),o[4].copy(s),o[5].copy(a),this}copy(t){const e=this.planes;for(let i=0;i<6;i++)e[i].copy(t.planes[i]);return this}setFromProjectionMatrix(t,e=xi,i=!1){const n=this.planes,s=t.elements,a=s[0],o=s[1],l=s[2],A=s[3],h=s[4],c=s[5],u=s[6],d=s[7],p=s[8],m=s[9],g=s[10],f=s[11],y=s[12],S=s[13],v=s[14],w=s[15];if(n[0].setComponents(A-a,d-h,f-p,w-y).normalize(),n[1].setComponents(A+a,d+h,f+p,w+y).normalize(),n[2].setComponents(A+o,d+c,f+m,w+S).normalize(),n[3].setComponents(A-o,d-c,f-m,w-S).normalize(),i)n[4].setComponents(l,u,g,v).normalize(),n[5].setComponents(A-l,d-u,f-g,w-v).normalize();else if(n[4].setComponents(A-l,d-u,f-g,w-v).normalize(),e===xi)n[5].setComponents(A+l,d+u,f+g,w+v).normalize();else if(e===Wr)n[5].setComponents(l,u,g,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(t){if(t.boundingSphere!==void 0)t.boundingSphere===null&&t.computeBoundingSphere(),Ln.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),Ln.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(Ln)}intersectsSprite(t){Ln.center.set(0,0,0);const e=Rf.distanceTo(t.center);return Ln.radius=.7071067811865476+e,Ln.applyMatrix4(t.matrixWorld),this.intersectsSphere(Ln)}intersectsSphere(t){const e=this.planes,i=t.center,n=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(i)<n)return!1;return!0}intersectsBox(t){const e=this.planes;for(let i=0;i<6;i++){const n=e[i];if(Aa.x=n.normal.x>0?t.max.x:t.min.x,Aa.y=n.normal.y>0?t.max.y:t.min.y,Aa.z=n.normal.z>0?t.max.z:t.min.z,n.distanceToPoint(Aa)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let i=0;i<6;i++)if(e[i].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}class Mh extends we{constructor(t,e,i,n,s,a,o,l,A){super(t,e,i,n,s,a,o,l,A),this.isCanvasTexture=!0,this.needsUpdate=!0}}class yh extends we{constructor(t,e,i=Mn,n,s,a,o=hi,l=hi,A,h=tr,c=1){if(h!==tr&&h!==er)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");const u={width:t,height:e,depth:c};super(u,n,s,a,o,l,h,i,A),this.isDepthTexture=!0,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(t){return super.copy(t),this.source=new Xo(Object.assign({},t.image)),this.compareFunction=t.compareFunction,this}toJSON(t){const e=super.toJSON(t);return this.compareFunction!==null&&(e.compareFunction=this.compareFunction),e}}class cr extends Rn{constructor(t=1,e=1,i=1,n=1){super(),this.type="PlaneGeometry",this.parameters={width:t,height:e,widthSegments:i,heightSegments:n};const s=t/2,a=e/2,o=Math.floor(i),l=Math.floor(n),A=o+1,h=l+1,c=t/o,u=e/l,d=[],p=[],m=[],g=[];for(let f=0;f<h;f++){const y=f*u-a;for(let S=0;S<A;S++){const v=S*c-s;p.push(v,-y,0),m.push(0,0,1),g.push(S/o),g.push(1-f/l)}}for(let f=0;f<l;f++)for(let y=0;y<o;y++){const S=y+A*f,v=y+A*(f+1),w=y+1+A*(f+1),T=y+1+A*f;d.push(S,v,T),d.push(v,w,T)}this.setIndex(d),this.setAttribute("position",new wn(p,3)),this.setAttribute("normal",new wn(m,3)),this.setAttribute("uv",new wn(g,2))}copy(t){return super.copy(t),this.parameters=Object.assign({},t.parameters),this}static fromJSON(t){return new cr(t.width,t.height,t.widthSegments,t.heightSegments)}}class _f extends Ar{constructor(t){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new Vt(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Vt(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xl,this.normalScale=new Zt(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new fi,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.defines={STANDARD:""},this.color.copy(t.color),this.roughness=t.roughness,this.metalness=t.metalness,this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.emissive.copy(t.emissive),this.emissiveMap=t.emissiveMap,this.emissiveIntensity=t.emissiveIntensity,this.bumpMap=t.bumpMap,this.bumpScale=t.bumpScale,this.normalMap=t.normalMap,this.normalMapType=t.normalMapType,this.normalScale.copy(t.normalScale),this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.roughnessMap=t.roughnessMap,this.metalnessMap=t.metalnessMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.envMapRotation.copy(t.envMapRotation),this.envMapIntensity=t.envMapIntensity,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.flatShading=t.flatShading,this.fog=t.fog,this}}class Pf extends Ar{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Hd,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Lf extends Ar{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}const mA={enabled:!1,files:{},add:function(r,t){this.enabled!==!1&&(this.files[r]=t)},get:function(r){if(this.enabled!==!1)return this.files[r]},remove:function(r){delete this.files[r]},clear:function(){this.files={}}};class Df{constructor(t,e,i){const n=this;let s=!1,a=0,o=0,l;const A=[];this.onStart=void 0,this.onLoad=t,this.onProgress=e,this.onError=i,this.abortController=new AbortController,this.itemStart=function(h){o++,s===!1&&n.onStart!==void 0&&n.onStart(h,a,o),s=!0},this.itemEnd=function(h){a++,n.onProgress!==void 0&&n.onProgress(h,a,o),a===o&&(s=!1,n.onLoad!==void 0&&n.onLoad())},this.itemError=function(h){n.onError!==void 0&&n.onError(h)},this.resolveURL=function(h){return l?l(h):h},this.setURLModifier=function(h){return l=h,this},this.addHandler=function(h,c){return A.push(h,c),this},this.removeHandler=function(h){const c=A.indexOf(h);return c!==-1&&A.splice(c,2),this},this.getHandler=function(h){for(let c=0,u=A.length;c<u;c+=2){const d=A[c],p=A[c+1];if(d.global&&(d.lastIndex=0),d.test(h))return p}return null},this.abort=function(){return this.abortController.abort(),this.abortController=new AbortController,this}}}const Nf=new Df;class IA{constructor(t){this.manager=t!==void 0?t:Nf,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(t,e){const i=this;return new Promise(function(n,s){i.load(t,n,e,s)})}parse(){}setCrossOrigin(t){return this.crossOrigin=t,this}setWithCredentials(t){return this.withCredentials=t,this}setPath(t){return this.path=t,this}setResourcePath(t){return this.resourcePath=t,this}setRequestHeader(t){return this.requestHeader=t,this}abort(){return this}}IA.DEFAULT_MATERIAL_NAME="__DEFAULT";const Ms=new WeakMap;class Ff extends IA{constructor(t){super(t)}load(t,e,i,n){this.path!==void 0&&(t=this.path+t),t=this.manager.resolveURL(t);const s=this,a=mA.get(`image:${t}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(t),setTimeout(function(){e&&e(a),s.manager.itemEnd(t)},0);else{let c=Ms.get(a);c===void 0&&(c=[],Ms.set(a,c)),c.push({onLoad:e,onError:n})}return a}const o=sr("img");function l(){h(),e&&e(this);const c=Ms.get(this)||[];for(let u=0;u<c.length;u++){const d=c[u];d.onLoad&&d.onLoad(this)}Ms.delete(this),s.manager.itemEnd(t)}function A(c){h(),n&&n(c),mA.remove(`image:${t}`);const u=Ms.get(this)||[];for(let d=0;d<u.length;d++){const p=u[d];p.onError&&p.onError(c)}Ms.delete(this),s.manager.itemError(t),s.manager.itemEnd(t)}function h(){o.removeEventListener("load",l,!1),o.removeEventListener("error",A,!1)}return o.addEventListener("load",l,!1),o.addEventListener("error",A,!1),t.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),mA.add(`image:${t}`,o),s.manager.itemStart(t),o.src=t,o}}class bh extends IA{constructor(t){super(t)}load(t,e,i,n){const s=new we,a=new Ff(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(t,function(o){s.image=o,s.needsUpdate=!0,e!==void 0&&e(s)},i,n),s}}class CA extends xe{constructor(t,e=1){super(),this.isLight=!0,this.type="Light",this.color=new Vt(t),this.intensity=e}dispose(){}copy(t,e){return super.copy(t,e),this.color.copy(t.color),this.intensity=t.intensity,this}toJSON(t){const e=super.toJSON(t);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,this.groundColor!==void 0&&(e.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(e.object.distance=this.distance),this.angle!==void 0&&(e.object.angle=this.angle),this.decay!==void 0&&(e.object.decay=this.decay),this.penumbra!==void 0&&(e.object.penumbra=this.penumbra),this.shadow!==void 0&&(e.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(e.object.target=this.target.uuid),e}}const vA=new ue,Th=new F,wh=new F;class Rh{constructor(t){this.camera=t,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Zt(512,512),this.mapType=vi,this.map=null,this.mapPass=null,this.matrix=new ue,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new pA,this._frameExtents=new Zt(1,1),this._viewportCount=1,this._viewports=[new he(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(t){const e=this.camera,i=this.matrix;Th.setFromMatrixPosition(t.matrixWorld),e.position.copy(Th),wh.setFromMatrixPosition(t.target.matrixWorld),e.lookAt(wh),e.updateMatrixWorld(),vA.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(vA,e.coordinateSystem,e.reversedDepth),e.reversedDepth?i.set(.5,0,0,.5,0,.5,0,.5,0,0,1,0,0,0,0,1):i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(vA)}getViewport(t){return this._viewports[t]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(t){return this.camera=t.camera.clone(),this.intensity=t.intensity,this.bias=t.bias,this.radius=t.radius,this.autoUpdate=t.autoUpdate,this.needsUpdate=t.needsUpdate,this.normalBias=t.normalBias,this.blurSamples=t.blurSamples,this.mapSize.copy(t.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const t={};return this.intensity!==1&&(t.intensity=this.intensity),this.bias!==0&&(t.bias=this.bias),this.normalBias!==0&&(t.normalBias=this.normalBias),this.radius!==1&&(t.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(t.mapSize=this.mapSize.toArray()),t.camera=this.camera.toJSON(!1).object,delete t.camera.matrix,t}}class Bf extends Rh{constructor(){super(new ze(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1,this.aspect=1}updateMatrices(t){const e=this.camera,i=Yr*2*t.angle*this.focus,n=this.mapSize.width/this.mapSize.height*this.aspect,s=t.distance||e.far;(i!==e.fov||n!==e.aspect||s!==e.far)&&(e.fov=i,e.aspect=n,e.far=s,e.updateProjectionMatrix()),super.updateMatrices(t)}copy(t){return super.copy(t),this.focus=t.focus,this}}class Of extends CA{constructor(t,e,i=0,n=Math.PI/3,s=0,a=2){super(t,e),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(xe.DEFAULT_UP),this.updateMatrix(),this.target=new xe,this.distance=i,this.angle=n,this.penumbra=s,this.decay=a,this.map=null,this.shadow=new Bf}get power(){return this.intensity*Math.PI}set power(t){this.intensity=t/Math.PI}dispose(){this.shadow.dispose()}copy(t,e){return super.copy(t,e),this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}class _h extends Ch{constructor(t=-1,e=1,i=1,n=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=i,this.bottom=n,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,i,n,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=t,this.view.fullHeight=e,this.view.offsetX=i,this.view.offsetY=n,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let s=i-t,a=i+t,o=n+e,l=n-e;if(this.view!==null&&this.view.enabled){const A=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=A*this.view.offsetX,a=s+A*this.view.width,o-=h*this.view.offsetY,l=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,l,this.near,this.far,this.coordinateSystem,this.reversedDepth),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}}class Uf extends Rh{constructor(){super(new _h(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class Ph extends CA{constructor(t,e){super(t,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(xe.DEFAULT_UP),this.updateMatrix(),this.target=new xe,this.shadow=new Uf}dispose(){this.shadow.dispose()}copy(t){return super.copy(t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}class zf extends CA{constructor(t,e){super(t,e),this.isAmbientLight=!0,this.type="AmbientLight"}}class Gf extends ze{constructor(t=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=t}}class Lh{constructor(t=!0){this.autoStart=t,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=performance.now(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let t=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const e=performance.now();t=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t}return t}}function Dh(r,t,e,i){const n=kf(i);switch(e){case kl:return r*t;case Vl:return r*t/n.components*n.byteLength;case uo:return r*t/n.components*n.byteLength;case Wl:return r*t*2/n.components*n.byteLength;case fo:return r*t*2/n.components*n.byteLength;case Hl:return r*t*3/n.components*n.byteLength;case ci:return r*t*4/n.components*n.byteLength;case go:return r*t*4/n.components*n.byteLength;case Ur:case zr:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*8;case Gr:case kr:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*16;case mo:case Co:return Math.max(r,16)*Math.max(t,8)/4;case po:case Io:return Math.max(r,8)*Math.max(t,8)/2;case vo:case xo:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*8;case Eo:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*16;case So:return Math.floor((r+3)/4)*Math.floor((t+3)/4)*16;case Mo:return Math.floor((r+4)/5)*Math.floor((t+3)/4)*16;case yo:return Math.floor((r+4)/5)*Math.floor((t+4)/5)*16;case bo:return Math.floor((r+5)/6)*Math.floor((t+4)/5)*16;case To:return Math.floor((r+5)/6)*Math.floor((t+5)/6)*16;case wo:return Math.floor((r+7)/8)*Math.floor((t+4)/5)*16;case Ro:return Math.floor((r+7)/8)*Math.floor((t+5)/6)*16;case _o:return Math.floor((r+7)/8)*Math.floor((t+7)/8)*16;case Po:return Math.floor((r+9)/10)*Math.floor((t+4)/5)*16;case Lo:return Math.floor((r+9)/10)*Math.floor((t+5)/6)*16;case Do:return Math.floor((r+9)/10)*Math.floor((t+7)/8)*16;case No:return Math.floor((r+9)/10)*Math.floor((t+9)/10)*16;case Fo:return Math.floor((r+11)/12)*Math.floor((t+9)/10)*16;case Bo:return Math.floor((r+11)/12)*Math.floor((t+11)/12)*16;case Hr:case Oo:case Uo:return Math.ceil(r/4)*Math.ceil(t/4)*16;case Yl:case zo:return Math.ceil(r/4)*Math.ceil(t/4)*8;case Go:case ko:return Math.ceil(r/4)*Math.ceil(t/4)*16}throw new Error(`Unable to determine texture byte length for ${e} format.`)}function kf(r){switch(r){case vi:case Ul:return{byteLength:1,components:1};case qs:case zl:case Ks:return{byteLength:2,components:1};case ho:case co:return{byteLength:2,components:4};case Mn:case lo:case Fi:return{byteLength:4,components:1};case Gl:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${r}.`)}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Ja}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Ja);function Nh(){let r=null,t=!1,e=null,i=null;function n(s,a){e(s,a),i=r.requestAnimationFrame(n)}return{start:function(){t!==!0&&e!==null&&(i=r.requestAnimationFrame(n),t=!0)},stop:function(){r.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Hf(r){const t=new WeakMap;function e(o,l){const A=o.array,h=o.usage,c=A.byteLength,u=r.createBuffer();r.bindBuffer(l,u),r.bufferData(l,A,h),o.onUploadCallback();let d;if(A instanceof Float32Array)d=r.FLOAT;else if(typeof Float16Array<"u"&&A instanceof Float16Array)d=r.HALF_FLOAT;else if(A instanceof Uint16Array)o.isFloat16BufferAttribute?d=r.HALF_FLOAT:d=r.UNSIGNED_SHORT;else if(A instanceof Int16Array)d=r.SHORT;else if(A instanceof Uint32Array)d=r.UNSIGNED_INT;else if(A instanceof Int32Array)d=r.INT;else if(A instanceof Int8Array)d=r.BYTE;else if(A instanceof Uint8Array)d=r.UNSIGNED_BYTE;else if(A instanceof Uint8ClampedArray)d=r.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+A);return{buffer:u,type:d,bytesPerElement:A.BYTES_PER_ELEMENT,version:o.version,size:c}}function i(o,l,A){const h=l.array,c=l.updateRanges;if(r.bindBuffer(A,o),c.length===0)r.bufferSubData(A,0,h);else{c.sort((d,p)=>d.start-p.start);let u=0;for(let d=1;d<c.length;d++){const p=c[u],m=c[d];m.start<=p.start+p.count+1?p.count=Math.max(p.count,m.start+m.count-p.start):(++u,c[u]=m)}c.length=u+1;for(let d=0,p=c.length;d<p;d++){const m=c[d];r.bufferSubData(A,m.start*h.BYTES_PER_ELEMENT,h,m.start,m.count)}l.clearUpdateRanges()}l.onUploadCallback()}function n(o){return o.isInterleavedBufferAttribute&&(o=o.data),t.get(o)}function s(o){o.isInterleavedBufferAttribute&&(o=o.data);const l=t.get(o);l&&(r.deleteBuffer(l.buffer),t.delete(o))}function a(o,l){if(o.isInterleavedBufferAttribute&&(o=o.data),o.isGLBufferAttribute){const h=t.get(o);(!h||h.version<o.version)&&t.set(o,{buffer:o.buffer,type:o.type,bytesPerElement:o.elementSize,version:o.version});return}const A=t.get(o);if(A===void 0)t.set(o,e(o,l));else if(A.version<o.version){if(A.size!==o.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");i(A.buffer,o,l),A.version=o.version}}return{get:n,remove:s,update:a}}var Vf=`#ifdef USE_ALPHAHASH
164
164
  if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
165
- #endif`,zf=`#ifdef USE_ALPHAHASH
165
+ #endif`,Wf=`#ifdef USE_ALPHAHASH
166
166
  const float ALPHA_HASH_SCALE = 0.05;
167
167
  float hash2D( vec2 value ) {
168
168
  return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );
@@ -197,20 +197,20 @@ void main() {
197
197
  : cases.z;
198
198
  return clamp( threshold , 1.0e-6, 1.0 );
199
199
  }
200
- #endif`,Gf=`#ifdef USE_ALPHAMAP
200
+ #endif`,Yf=`#ifdef USE_ALPHAMAP
201
201
  diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;
202
- #endif`,kf=`#ifdef USE_ALPHAMAP
202
+ #endif`,Xf=`#ifdef USE_ALPHAMAP
203
203
  uniform sampler2D alphaMap;
204
- #endif`,Hf=`#ifdef USE_ALPHATEST
204
+ #endif`,Zf=`#ifdef USE_ALPHATEST
205
205
  #ifdef ALPHA_TO_COVERAGE
206
206
  diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );
207
207
  if ( diffuseColor.a == 0.0 ) discard;
208
208
  #else
209
209
  if ( diffuseColor.a < alphaTest ) discard;
210
210
  #endif
211
- #endif`,Vf=`#ifdef USE_ALPHATEST
211
+ #endif`,Jf=`#ifdef USE_ALPHATEST
212
212
  uniform float alphaTest;
213
- #endif`,Wf=`#ifdef USE_AOMAP
213
+ #endif`,jf=`#ifdef USE_AOMAP
214
214
  float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;
215
215
  reflectedLight.indirectDiffuse *= ambientOcclusion;
216
216
  #if defined( USE_CLEARCOAT )
@@ -223,10 +223,10 @@ void main() {
223
223
  float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
224
224
  reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
225
225
  #endif
226
- #endif`,Yf=`#ifdef USE_AOMAP
226
+ #endif`,Qf=`#ifdef USE_AOMAP
227
227
  uniform sampler2D aoMap;
228
228
  uniform float aoMapIntensity;
229
- #endif`,Xf=`#ifdef USE_BATCHING
229
+ #endif`,qf=`#ifdef USE_BATCHING
230
230
  #if ! defined( GL_ANGLE_multi_draw )
231
231
  #define gl_DrawID _gl_DrawID
232
232
  uniform int _gl_DrawID;
@@ -260,15 +260,15 @@ void main() {
260
260
  int y = j / size;
261
261
  return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;
262
262
  }
263
- #endif`,Zf=`#ifdef USE_BATCHING
263
+ #endif`,Kf=`#ifdef USE_BATCHING
264
264
  mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );
265
- #endif`,Jf=`vec3 transformed = vec3( position );
265
+ #endif`,$f=`vec3 transformed = vec3( position );
266
266
  #ifdef USE_ALPHAHASH
267
267
  vPosition = vec3( position );
268
- #endif`,jf=`vec3 objectNormal = vec3( normal );
268
+ #endif`,tg=`vec3 objectNormal = vec3( normal );
269
269
  #ifdef USE_TANGENT
270
270
  vec3 objectTangent = vec3( tangent.xyz );
271
- #endif`,Qf=`float G_BlinnPhong_Implicit( ) {
271
+ #endif`,eg=`float G_BlinnPhong_Implicit( ) {
272
272
  return 0.25;
273
273
  }
274
274
  float D_BlinnPhong( const in float shininess, const in float dotNH ) {
@@ -282,7 +282,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
282
282
  float G = G_BlinnPhong_Implicit( );
283
283
  float D = D_BlinnPhong( shininess, dotNH );
284
284
  return F * ( G * D );
285
- } // validated`,qf=`#ifdef USE_IRIDESCENCE
285
+ } // validated`,ig=`#ifdef USE_IRIDESCENCE
286
286
  const mat3 XYZ_TO_REC709 = mat3(
287
287
  3.2404542, -0.9692660, 0.0556434,
288
288
  -1.5371385, 1.8760108, -0.2040259,
@@ -345,7 +345,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
345
345
  }
346
346
  return max( I, vec3( 0.0 ) );
347
347
  }
348
- #endif`,Kf=`#ifdef USE_BUMPMAP
348
+ #endif`,ng=`#ifdef USE_BUMPMAP
349
349
  uniform sampler2D bumpMap;
350
350
  uniform float bumpScale;
351
351
  vec2 dHdxy_fwd() {
@@ -366,7 +366,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
366
366
  vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
367
367
  return normalize( abs( fDet ) * surf_norm - vGrad );
368
368
  }
369
- #endif`,$f=`#if NUM_CLIPPING_PLANES > 0
369
+ #endif`,sg=`#if NUM_CLIPPING_PLANES > 0
370
370
  vec4 plane;
371
371
  #ifdef ALPHA_TO_COVERAGE
372
372
  float distanceToPlane, distanceGradient;
@@ -412,26 +412,26 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
412
412
  if ( clipped ) discard;
413
413
  #endif
414
414
  #endif
415
- #endif`,tg=`#if NUM_CLIPPING_PLANES > 0
415
+ #endif`,rg=`#if NUM_CLIPPING_PLANES > 0
416
416
  varying vec3 vClipPosition;
417
417
  uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
418
- #endif`,eg=`#if NUM_CLIPPING_PLANES > 0
418
+ #endif`,ag=`#if NUM_CLIPPING_PLANES > 0
419
419
  varying vec3 vClipPosition;
420
- #endif`,ig=`#if NUM_CLIPPING_PLANES > 0
420
+ #endif`,og=`#if NUM_CLIPPING_PLANES > 0
421
421
  vClipPosition = - mvPosition.xyz;
422
- #endif`,ng=`#if defined( USE_COLOR_ALPHA )
422
+ #endif`,Ag=`#if defined( USE_COLOR_ALPHA )
423
423
  diffuseColor *= vColor;
424
424
  #elif defined( USE_COLOR )
425
425
  diffuseColor.rgb *= vColor;
426
- #endif`,sg=`#if defined( USE_COLOR_ALPHA )
426
+ #endif`,lg=`#if defined( USE_COLOR_ALPHA )
427
427
  varying vec4 vColor;
428
428
  #elif defined( USE_COLOR )
429
429
  varying vec3 vColor;
430
- #endif`,rg=`#if defined( USE_COLOR_ALPHA )
430
+ #endif`,hg=`#if defined( USE_COLOR_ALPHA )
431
431
  varying vec4 vColor;
432
432
  #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
433
433
  varying vec3 vColor;
434
- #endif`,ag=`#if defined( USE_COLOR_ALPHA )
434
+ #endif`,cg=`#if defined( USE_COLOR_ALPHA )
435
435
  vColor = vec4( 1.0 );
436
436
  #elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
437
437
  vColor = vec3( 1.0 );
@@ -445,7 +445,7 @@ vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in ve
445
445
  #ifdef USE_BATCHING_COLOR
446
446
  vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );
447
447
  vColor.xyz *= batchingColor.xyz;
448
- #endif`,og=`#define PI 3.141592653589793
448
+ #endif`,ug=`#define PI 3.141592653589793
449
449
  #define PI2 6.283185307179586
450
450
  #define PI_HALF 1.5707963267948966
451
451
  #define RECIPROCAL_PI 0.3183098861837907
@@ -519,7 +519,7 @@ vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
519
519
  float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
520
520
  float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
521
521
  return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
522
- } // validated`,Ag=`#ifdef ENVMAP_TYPE_CUBE_UV
522
+ } // validated`,dg=`#ifdef ENVMAP_TYPE_CUBE_UV
523
523
  #define cubeUV_minMipLevel 4.0
524
524
  #define cubeUV_minTileSize 16.0
525
525
  float getFace( vec3 direction ) {
@@ -612,7 +612,7 @@ float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
612
612
  return vec4( mix( color0, color1, mipF ), 1.0 );
613
613
  }
614
614
  }
615
- #endif`,lg=`vec3 transformedNormal = objectNormal;
615
+ #endif`,fg=`vec3 transformedNormal = objectNormal;
616
616
  #ifdef USE_TANGENT
617
617
  vec3 transformedTangent = objectTangent;
618
618
  #endif
@@ -641,21 +641,21 @@ transformedNormal = normalMatrix * transformedNormal;
641
641
  #ifdef FLIP_SIDED
642
642
  transformedTangent = - transformedTangent;
643
643
  #endif
644
- #endif`,hg=`#ifdef USE_DISPLACEMENTMAP
644
+ #endif`,gg=`#ifdef USE_DISPLACEMENTMAP
645
645
  uniform sampler2D displacementMap;
646
646
  uniform float displacementScale;
647
647
  uniform float displacementBias;
648
- #endif`,cg=`#ifdef USE_DISPLACEMENTMAP
648
+ #endif`,pg=`#ifdef USE_DISPLACEMENTMAP
649
649
  transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );
650
- #endif`,ug=`#ifdef USE_EMISSIVEMAP
650
+ #endif`,mg=`#ifdef USE_EMISSIVEMAP
651
651
  vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );
652
652
  #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE
653
653
  emissiveColor = sRGBTransferEOTF( emissiveColor );
654
654
  #endif
655
655
  totalEmissiveRadiance *= emissiveColor.rgb;
656
- #endif`,dg=`#ifdef USE_EMISSIVEMAP
656
+ #endif`,Ig=`#ifdef USE_EMISSIVEMAP
657
657
  uniform sampler2D emissiveMap;
658
- #endif`,fg="gl_FragColor = linearToOutputTexel( gl_FragColor );",gg=`vec4 LinearTransferOETF( in vec4 value ) {
658
+ #endif`,Cg="gl_FragColor = linearToOutputTexel( gl_FragColor );",vg=`vec4 LinearTransferOETF( in vec4 value ) {
659
659
  return value;
660
660
  }
661
661
  vec4 sRGBTransferEOTF( in vec4 value ) {
@@ -663,7 +663,7 @@ vec4 sRGBTransferEOTF( in vec4 value ) {
663
663
  }
664
664
  vec4 sRGBTransferOETF( in vec4 value ) {
665
665
  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 );
666
- }`,pg=`#ifdef USE_ENVMAP
666
+ }`,xg=`#ifdef USE_ENVMAP
667
667
  #ifdef ENV_WORLDPOS
668
668
  vec3 cameraToFrag;
669
669
  if ( isOrthographic ) {
@@ -692,7 +692,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
692
692
  #elif defined( ENVMAP_BLENDING_ADD )
693
693
  outgoingLight += envColor.xyz * specularStrength * reflectivity;
694
694
  #endif
695
- #endif`,mg=`#ifdef USE_ENVMAP
695
+ #endif`,Eg=`#ifdef USE_ENVMAP
696
696
  uniform float envMapIntensity;
697
697
  uniform float flipEnvMap;
698
698
  uniform mat3 envMapRotation;
@@ -702,7 +702,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
702
702
  uniform sampler2D envMap;
703
703
  #endif
704
704
 
705
- #endif`,Ig=`#ifdef USE_ENVMAP
705
+ #endif`,Sg=`#ifdef USE_ENVMAP
706
706
  uniform float reflectivity;
707
707
  #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
708
708
  #define ENV_WORLDPOS
@@ -713,7 +713,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
713
713
  #else
714
714
  varying vec3 vReflect;
715
715
  #endif
716
- #endif`,Cg=`#ifdef USE_ENVMAP
716
+ #endif`,Mg=`#ifdef USE_ENVMAP
717
717
  #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
718
718
  #define ENV_WORLDPOS
719
719
  #endif
@@ -724,7 +724,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
724
724
  varying vec3 vReflect;
725
725
  uniform float refractionRatio;
726
726
  #endif
727
- #endif`,vg=`#ifdef USE_ENVMAP
727
+ #endif`,yg=`#ifdef USE_ENVMAP
728
728
  #ifdef ENV_WORLDPOS
729
729
  vWorldPosition = worldPosition.xyz;
730
730
  #else
@@ -741,18 +741,18 @@ vec4 sRGBTransferOETF( in vec4 value ) {
741
741
  vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
742
742
  #endif
743
743
  #endif
744
- #endif`,xg=`#ifdef USE_FOG
744
+ #endif`,bg=`#ifdef USE_FOG
745
745
  vFogDepth = - mvPosition.z;
746
- #endif`,Eg=`#ifdef USE_FOG
746
+ #endif`,Tg=`#ifdef USE_FOG
747
747
  varying float vFogDepth;
748
- #endif`,Sg=`#ifdef USE_FOG
748
+ #endif`,wg=`#ifdef USE_FOG
749
749
  #ifdef FOG_EXP2
750
750
  float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
751
751
  #else
752
752
  float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
753
753
  #endif
754
754
  gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
755
- #endif`,Mg=`#ifdef USE_FOG
755
+ #endif`,Rg=`#ifdef USE_FOG
756
756
  uniform vec3 fogColor;
757
757
  varying float vFogDepth;
758
758
  #ifdef FOG_EXP2
@@ -761,7 +761,7 @@ vec4 sRGBTransferOETF( in vec4 value ) {
761
761
  uniform float fogNear;
762
762
  uniform float fogFar;
763
763
  #endif
764
- #endif`,yg=`#ifdef USE_GRADIENTMAP
764
+ #endif`,_g=`#ifdef USE_GRADIENTMAP
765
765
  uniform sampler2D gradientMap;
766
766
  #endif
767
767
  vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
@@ -773,12 +773,12 @@ vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
773
773
  vec2 fw = fwidth( coord ) * 0.5;
774
774
  return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );
775
775
  #endif
776
- }`,bg=`#ifdef USE_LIGHTMAP
776
+ }`,Pg=`#ifdef USE_LIGHTMAP
777
777
  uniform sampler2D lightMap;
778
778
  uniform float lightMapIntensity;
779
- #endif`,Tg=`LambertMaterial material;
779
+ #endif`,Lg=`LambertMaterial material;
780
780
  material.diffuseColor = diffuseColor.rgb;
781
- material.specularStrength = specularStrength;`,wg=`varying vec3 vViewPosition;
781
+ material.specularStrength = specularStrength;`,Dg=`varying vec3 vViewPosition;
782
782
  struct LambertMaterial {
783
783
  vec3 diffuseColor;
784
784
  float specularStrength;
@@ -792,7 +792,7 @@ void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometr
792
792
  reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
793
793
  }
794
794
  #define RE_Direct RE_Direct_Lambert
795
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Rg=`uniform bool receiveShadow;
795
+ #define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,Ng=`uniform bool receiveShadow;
796
796
  uniform vec3 ambientLightColor;
797
797
  #if defined( USE_LIGHT_PROBES )
798
798
  uniform vec3 lightProbe[ 9 ];
@@ -908,7 +908,7 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi
908
908
  vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
909
909
  return irradiance;
910
910
  }
911
- #endif`,_g=`#ifdef USE_ENVMAP
911
+ #endif`,Fg=`#ifdef USE_ENVMAP
912
912
  vec3 getIBLIrradiance( const in vec3 normal ) {
913
913
  #ifdef ENVMAP_TYPE_CUBE_UV
914
914
  vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
@@ -941,8 +941,8 @@ float getSpotAttenuation( const in float coneCosine, const in float penumbraCosi
941
941
  #endif
942
942
  }
943
943
  #endif
944
- #endif`,Pg=`ToonMaterial material;
945
- material.diffuseColor = diffuseColor.rgb;`,Dg=`varying vec3 vViewPosition;
944
+ #endif`,Bg=`ToonMaterial material;
945
+ material.diffuseColor = diffuseColor.rgb;`,Og=`varying vec3 vViewPosition;
946
946
  struct ToonMaterial {
947
947
  vec3 diffuseColor;
948
948
  };
@@ -954,11 +954,11 @@ void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPo
954
954
  reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
955
955
  }
956
956
  #define RE_Direct RE_Direct_Toon
957
- #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,Lg=`BlinnPhongMaterial material;
957
+ #define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,Ug=`BlinnPhongMaterial material;
958
958
  material.diffuseColor = diffuseColor.rgb;
959
959
  material.specularColor = specular;
960
960
  material.specularShininess = shininess;
961
- material.specularStrength = specularStrength;`,Ng=`varying vec3 vViewPosition;
961
+ material.specularStrength = specularStrength;`,zg=`varying vec3 vViewPosition;
962
962
  struct BlinnPhongMaterial {
963
963
  vec3 diffuseColor;
964
964
  vec3 specularColor;
@@ -975,7 +975,7 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geom
975
975
  reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
976
976
  }
977
977
  #define RE_Direct RE_Direct_BlinnPhong
978
- #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Fg=`PhysicalMaterial material;
978
+ #define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,Gg=`PhysicalMaterial material;
979
979
  material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
980
980
  vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );
981
981
  float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
@@ -1061,7 +1061,7 @@ material.roughness = min( material.roughness, 1.0 );
1061
1061
  material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );
1062
1062
  material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;
1063
1063
  material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;
1064
- #endif`,Bg=`struct PhysicalMaterial {
1064
+ #endif`,kg=`struct PhysicalMaterial {
1065
1065
  vec3 diffuseColor;
1066
1066
  float roughness;
1067
1067
  vec3 specularColor;
@@ -1362,7 +1362,7 @@ void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradia
1362
1362
  #define RE_IndirectSpecular RE_IndirectSpecular_Physical
1363
1363
  float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
1364
1364
  return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
1365
- }`,Og=`
1365
+ }`,Hg=`
1366
1366
  vec3 geometryPosition = - vViewPosition;
1367
1367
  vec3 geometryNormal = normal;
1368
1368
  vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
@@ -1477,7 +1477,7 @@ IncidentLight directLight;
1477
1477
  #if defined( RE_IndirectSpecular )
1478
1478
  vec3 radiance = vec3( 0.0 );
1479
1479
  vec3 clearcoatRadiance = vec3( 0.0 );
1480
- #endif`,Ug=`#if defined( RE_IndirectDiffuse )
1480
+ #endif`,Vg=`#if defined( RE_IndirectDiffuse )
1481
1481
  #ifdef USE_LIGHTMAP
1482
1482
  vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
1483
1483
  vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
@@ -1496,32 +1496,32 @@ IncidentLight directLight;
1496
1496
  #ifdef USE_CLEARCOAT
1497
1497
  clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );
1498
1498
  #endif
1499
- #endif`,zg=`#if defined( RE_IndirectDiffuse )
1499
+ #endif`,Wg=`#if defined( RE_IndirectDiffuse )
1500
1500
  RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
1501
1501
  #endif
1502
1502
  #if defined( RE_IndirectSpecular )
1503
1503
  RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
1504
- #endif`,Gg=`#if defined( USE_LOGDEPTHBUF )
1504
+ #endif`,Yg=`#if defined( USE_LOGDEPTHBUF )
1505
1505
  gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
1506
- #endif`,kg=`#if defined( USE_LOGDEPTHBUF )
1506
+ #endif`,Xg=`#if defined( USE_LOGDEPTHBUF )
1507
1507
  uniform float logDepthBufFC;
1508
1508
  varying float vFragDepth;
1509
1509
  varying float vIsPerspective;
1510
- #endif`,Hg=`#ifdef USE_LOGDEPTHBUF
1510
+ #endif`,Zg=`#ifdef USE_LOGDEPTHBUF
1511
1511
  varying float vFragDepth;
1512
1512
  varying float vIsPerspective;
1513
- #endif`,Vg=`#ifdef USE_LOGDEPTHBUF
1513
+ #endif`,Jg=`#ifdef USE_LOGDEPTHBUF
1514
1514
  vFragDepth = 1.0 + gl_Position.w;
1515
1515
  vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
1516
- #endif`,Wg=`#ifdef USE_MAP
1516
+ #endif`,jg=`#ifdef USE_MAP
1517
1517
  vec4 sampledDiffuseColor = texture2D( map, vMapUv );
1518
1518
  #ifdef DECODE_VIDEO_TEXTURE
1519
1519
  sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );
1520
1520
  #endif
1521
1521
  diffuseColor *= sampledDiffuseColor;
1522
- #endif`,Yg=`#ifdef USE_MAP
1522
+ #endif`,Qg=`#ifdef USE_MAP
1523
1523
  uniform sampler2D map;
1524
- #endif`,Xg=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
1524
+ #endif`,qg=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
1525
1525
  #if defined( USE_POINTS_UV )
1526
1526
  vec2 uv = vUv;
1527
1527
  #else
@@ -1533,7 +1533,7 @@ IncidentLight directLight;
1533
1533
  #endif
1534
1534
  #ifdef USE_ALPHAMAP
1535
1535
  diffuseColor.a *= texture2D( alphaMap, uv ).g;
1536
- #endif`,Zg=`#if defined( USE_POINTS_UV )
1536
+ #endif`,Kg=`#if defined( USE_POINTS_UV )
1537
1537
  varying vec2 vUv;
1538
1538
  #else
1539
1539
  #if defined( USE_MAP ) || defined( USE_ALPHAMAP )
@@ -1545,19 +1545,19 @@ IncidentLight directLight;
1545
1545
  #endif
1546
1546
  #ifdef USE_ALPHAMAP
1547
1547
  uniform sampler2D alphaMap;
1548
- #endif`,Jg=`float metalnessFactor = metalness;
1548
+ #endif`,$g=`float metalnessFactor = metalness;
1549
1549
  #ifdef USE_METALNESSMAP
1550
1550
  vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );
1551
1551
  metalnessFactor *= texelMetalness.b;
1552
- #endif`,jg=`#ifdef USE_METALNESSMAP
1552
+ #endif`,tp=`#ifdef USE_METALNESSMAP
1553
1553
  uniform sampler2D metalnessMap;
1554
- #endif`,Qg=`#ifdef USE_INSTANCING_MORPH
1554
+ #endif`,ep=`#ifdef USE_INSTANCING_MORPH
1555
1555
  float morphTargetInfluences[ MORPHTARGETS_COUNT ];
1556
1556
  float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;
1557
1557
  for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1558
1558
  morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;
1559
1559
  }
1560
- #endif`,qg=`#if defined( USE_MORPHCOLORS )
1560
+ #endif`,ip=`#if defined( USE_MORPHCOLORS )
1561
1561
  vColor *= morphTargetBaseInfluence;
1562
1562
  for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1563
1563
  #if defined( USE_COLOR_ALPHA )
@@ -1566,12 +1566,12 @@ IncidentLight directLight;
1566
1566
  if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];
1567
1567
  #endif
1568
1568
  }
1569
- #endif`,Kg=`#ifdef USE_MORPHNORMALS
1569
+ #endif`,np=`#ifdef USE_MORPHNORMALS
1570
1570
  objectNormal *= morphTargetBaseInfluence;
1571
1571
  for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1572
1572
  if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];
1573
1573
  }
1574
- #endif`,$g=`#ifdef USE_MORPHTARGETS
1574
+ #endif`,sp=`#ifdef USE_MORPHTARGETS
1575
1575
  #ifndef USE_INSTANCING_MORPH
1576
1576
  uniform float morphTargetBaseInfluence;
1577
1577
  uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
@@ -1585,12 +1585,12 @@ IncidentLight directLight;
1585
1585
  ivec3 morphUV = ivec3( x, y, morphTargetIndex );
1586
1586
  return texelFetch( morphTargetsTexture, morphUV, 0 );
1587
1587
  }
1588
- #endif`,tp=`#ifdef USE_MORPHTARGETS
1588
+ #endif`,rp=`#ifdef USE_MORPHTARGETS
1589
1589
  transformed *= morphTargetBaseInfluence;
1590
1590
  for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
1591
1591
  if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];
1592
1592
  }
1593
- #endif`,ep=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
1593
+ #endif`,ap=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
1594
1594
  #ifdef FLAT_SHADED
1595
1595
  vec3 fdx = dFdx( vViewPosition );
1596
1596
  vec3 fdy = dFdy( vViewPosition );
@@ -1631,7 +1631,7 @@ IncidentLight directLight;
1631
1631
  tbn2[1] *= faceDirection;
1632
1632
  #endif
1633
1633
  #endif
1634
- vec3 nonPerturbedNormal = normal;`,ip=`#ifdef USE_NORMALMAP_OBJECTSPACE
1634
+ vec3 nonPerturbedNormal = normal;`,op=`#ifdef USE_NORMALMAP_OBJECTSPACE
1635
1635
  normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
1636
1636
  #ifdef FLIP_SIDED
1637
1637
  normal = - normal;
@@ -1646,25 +1646,25 @@ vec3 nonPerturbedNormal = normal;`,ip=`#ifdef USE_NORMALMAP_OBJECTSPACE
1646
1646
  normal = normalize( tbn * mapN );
1647
1647
  #elif defined( USE_BUMPMAP )
1648
1648
  normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
1649
- #endif`,np=`#ifndef FLAT_SHADED
1649
+ #endif`,Ap=`#ifndef FLAT_SHADED
1650
1650
  varying vec3 vNormal;
1651
1651
  #ifdef USE_TANGENT
1652
1652
  varying vec3 vTangent;
1653
1653
  varying vec3 vBitangent;
1654
1654
  #endif
1655
- #endif`,sp=`#ifndef FLAT_SHADED
1655
+ #endif`,lp=`#ifndef FLAT_SHADED
1656
1656
  varying vec3 vNormal;
1657
1657
  #ifdef USE_TANGENT
1658
1658
  varying vec3 vTangent;
1659
1659
  varying vec3 vBitangent;
1660
1660
  #endif
1661
- #endif`,rp=`#ifndef FLAT_SHADED
1661
+ #endif`,hp=`#ifndef FLAT_SHADED
1662
1662
  vNormal = normalize( transformedNormal );
1663
1663
  #ifdef USE_TANGENT
1664
1664
  vTangent = normalize( transformedTangent );
1665
1665
  vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
1666
1666
  #endif
1667
- #endif`,ap=`#ifdef USE_NORMALMAP
1667
+ #endif`,cp=`#ifdef USE_NORMALMAP
1668
1668
  uniform sampler2D normalMap;
1669
1669
  uniform vec2 normalScale;
1670
1670
  #endif
@@ -1686,13 +1686,13 @@ vec3 nonPerturbedNormal = normal;`,ip=`#ifdef USE_NORMALMAP_OBJECTSPACE
1686
1686
  float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );
1687
1687
  return mat3( T * scale, B * scale, N );
1688
1688
  }
1689
- #endif`,op=`#ifdef USE_CLEARCOAT
1689
+ #endif`,up=`#ifdef USE_CLEARCOAT
1690
1690
  vec3 clearcoatNormal = nonPerturbedNormal;
1691
- #endif`,Ap=`#ifdef USE_CLEARCOAT_NORMALMAP
1691
+ #endif`,dp=`#ifdef USE_CLEARCOAT_NORMALMAP
1692
1692
  vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;
1693
1693
  clearcoatMapN.xy *= clearcoatNormalScale;
1694
1694
  clearcoatNormal = normalize( tbn2 * clearcoatMapN );
1695
- #endif`,lp=`#ifdef USE_CLEARCOATMAP
1695
+ #endif`,fp=`#ifdef USE_CLEARCOATMAP
1696
1696
  uniform sampler2D clearcoatMap;
1697
1697
  #endif
1698
1698
  #ifdef USE_CLEARCOAT_NORMALMAP
@@ -1701,18 +1701,18 @@ vec3 nonPerturbedNormal = normal;`,ip=`#ifdef USE_NORMALMAP_OBJECTSPACE
1701
1701
  #endif
1702
1702
  #ifdef USE_CLEARCOAT_ROUGHNESSMAP
1703
1703
  uniform sampler2D clearcoatRoughnessMap;
1704
- #endif`,hp=`#ifdef USE_IRIDESCENCEMAP
1704
+ #endif`,gp=`#ifdef USE_IRIDESCENCEMAP
1705
1705
  uniform sampler2D iridescenceMap;
1706
1706
  #endif
1707
1707
  #ifdef USE_IRIDESCENCE_THICKNESSMAP
1708
1708
  uniform sampler2D iridescenceThicknessMap;
1709
- #endif`,cp=`#ifdef OPAQUE
1709
+ #endif`,pp=`#ifdef OPAQUE
1710
1710
  diffuseColor.a = 1.0;
1711
1711
  #endif
1712
1712
  #ifdef USE_TRANSMISSION
1713
1713
  diffuseColor.a *= material.transmissionAlpha;
1714
1714
  #endif
1715
- gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,up=`vec3 packNormalToRGB( const in vec3 normal ) {
1715
+ gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,mp=`vec3 packNormalToRGB( const in vec3 normal ) {
1716
1716
  return normalize( normal ) * 0.5 + 0.5;
1717
1717
  }
1718
1718
  vec3 unpackRGBToNormal( const in vec3 rgb ) {
@@ -1781,9 +1781,9 @@ float viewZToPerspectiveDepth( const in float viewZ, const in float near, const
1781
1781
  }
1782
1782
  float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {
1783
1783
  return ( near * far ) / ( ( far - near ) * depth - far );
1784
- }`,dp=`#ifdef PREMULTIPLIED_ALPHA
1784
+ }`,Ip=`#ifdef PREMULTIPLIED_ALPHA
1785
1785
  gl_FragColor.rgb *= gl_FragColor.a;
1786
- #endif`,fp=`vec4 mvPosition = vec4( transformed, 1.0 );
1786
+ #endif`,Cp=`vec4 mvPosition = vec4( transformed, 1.0 );
1787
1787
  #ifdef USE_BATCHING
1788
1788
  mvPosition = batchingMatrix * mvPosition;
1789
1789
  #endif
@@ -1791,22 +1791,22 @@ float perspectiveDepthToViewZ( const in float depth, const in float near, const
1791
1791
  mvPosition = instanceMatrix * mvPosition;
1792
1792
  #endif
1793
1793
  mvPosition = modelViewMatrix * mvPosition;
1794
- gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
1794
+ gl_Position = projectionMatrix * mvPosition;`,vp=`#ifdef DITHERING
1795
1795
  gl_FragColor.rgb = dithering( gl_FragColor.rgb );
1796
- #endif`,pp=`#ifdef DITHERING
1796
+ #endif`,xp=`#ifdef DITHERING
1797
1797
  vec3 dithering( vec3 color ) {
1798
1798
  float grid_position = rand( gl_FragCoord.xy );
1799
1799
  vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
1800
1800
  dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
1801
1801
  return color + dither_shift_RGB;
1802
1802
  }
1803
- #endif`,mp=`float roughnessFactor = roughness;
1803
+ #endif`,Ep=`float roughnessFactor = roughness;
1804
1804
  #ifdef USE_ROUGHNESSMAP
1805
1805
  vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );
1806
1806
  roughnessFactor *= texelRoughness.g;
1807
- #endif`,Ip=`#ifdef USE_ROUGHNESSMAP
1807
+ #endif`,Sp=`#ifdef USE_ROUGHNESSMAP
1808
1808
  uniform sampler2D roughnessMap;
1809
- #endif`,Cp=`#if NUM_SPOT_LIGHT_COORDS > 0
1809
+ #endif`,Mp=`#if NUM_SPOT_LIGHT_COORDS > 0
1810
1810
  varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
1811
1811
  #endif
1812
1812
  #if NUM_SPOT_LIGHT_MAPS > 0
@@ -2001,7 +2001,7 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2001
2001
  }
2002
2002
  return mix( 1.0, shadow, shadowIntensity );
2003
2003
  }
2004
- #endif`,vp=`#if NUM_SPOT_LIGHT_COORDS > 0
2004
+ #endif`,yp=`#if NUM_SPOT_LIGHT_COORDS > 0
2005
2005
  uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];
2006
2006
  varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
2007
2007
  #endif
@@ -2042,7 +2042,7 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2042
2042
  };
2043
2043
  uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
2044
2044
  #endif
2045
- #endif`,xp=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
2045
+ #endif`,bp=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
2046
2046
  vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
2047
2047
  vec4 shadowWorldPosition;
2048
2048
  #endif
@@ -2074,7 +2074,7 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2074
2074
  vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;
2075
2075
  }
2076
2076
  #pragma unroll_loop_end
2077
- #endif`,Ep=`float getShadowMask() {
2077
+ #endif`,Tp=`float getShadowMask() {
2078
2078
  float shadow = 1.0;
2079
2079
  #ifdef USE_SHADOWMAP
2080
2080
  #if NUM_DIR_LIGHT_SHADOWS > 0
@@ -2106,12 +2106,12 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2106
2106
  #endif
2107
2107
  #endif
2108
2108
  return shadow;
2109
- }`,Sp=`#ifdef USE_SKINNING
2109
+ }`,wp=`#ifdef USE_SKINNING
2110
2110
  mat4 boneMatX = getBoneMatrix( skinIndex.x );
2111
2111
  mat4 boneMatY = getBoneMatrix( skinIndex.y );
2112
2112
  mat4 boneMatZ = getBoneMatrix( skinIndex.z );
2113
2113
  mat4 boneMatW = getBoneMatrix( skinIndex.w );
2114
- #endif`,Mp=`#ifdef USE_SKINNING
2114
+ #endif`,Rp=`#ifdef USE_SKINNING
2115
2115
  uniform mat4 bindMatrix;
2116
2116
  uniform mat4 bindMatrixInverse;
2117
2117
  uniform highp sampler2D boneTexture;
@@ -2126,7 +2126,7 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2126
2126
  vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );
2127
2127
  return mat4( v1, v2, v3, v4 );
2128
2128
  }
2129
- #endif`,yp=`#ifdef USE_SKINNING
2129
+ #endif`,_p=`#ifdef USE_SKINNING
2130
2130
  vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
2131
2131
  vec4 skinned = vec4( 0.0 );
2132
2132
  skinned += boneMatX * skinVertex * skinWeight.x;
@@ -2134,7 +2134,7 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2134
2134
  skinned += boneMatZ * skinVertex * skinWeight.z;
2135
2135
  skinned += boneMatW * skinVertex * skinWeight.w;
2136
2136
  transformed = ( bindMatrixInverse * skinned ).xyz;
2137
- #endif`,bp=`#ifdef USE_SKINNING
2137
+ #endif`,Pp=`#ifdef USE_SKINNING
2138
2138
  mat4 skinMatrix = mat4( 0.0 );
2139
2139
  skinMatrix += skinWeight.x * boneMatX;
2140
2140
  skinMatrix += skinWeight.y * boneMatY;
@@ -2145,17 +2145,17 @@ gl_Position = projectionMatrix * mvPosition;`,gp=`#ifdef DITHERING
2145
2145
  #ifdef USE_TANGENT
2146
2146
  objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
2147
2147
  #endif
2148
- #endif`,Tp=`float specularStrength;
2148
+ #endif`,Lp=`float specularStrength;
2149
2149
  #ifdef USE_SPECULARMAP
2150
2150
  vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );
2151
2151
  specularStrength = texelSpecular.r;
2152
2152
  #else
2153
2153
  specularStrength = 1.0;
2154
- #endif`,wp=`#ifdef USE_SPECULARMAP
2154
+ #endif`,Dp=`#ifdef USE_SPECULARMAP
2155
2155
  uniform sampler2D specularMap;
2156
- #endif`,Rp=`#if defined( TONE_MAPPING )
2156
+ #endif`,Np=`#if defined( TONE_MAPPING )
2157
2157
  gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
2158
- #endif`,_p=`#ifndef saturate
2158
+ #endif`,Fp=`#ifndef saturate
2159
2159
  #define saturate( a ) clamp( a, 0.0, 1.0 )
2160
2160
  #endif
2161
2161
  uniform float toneMappingExposure;
@@ -2252,7 +2252,7 @@ vec3 NeutralToneMapping( vec3 color ) {
2252
2252
  float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );
2253
2253
  return mix( color, vec3( newPeak ), g );
2254
2254
  }
2255
- vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISSION
2255
+ vec3 CustomToneMapping( vec3 color ) { return color; }`,Bp=`#ifdef USE_TRANSMISSION
2256
2256
  material.transmission = transmission;
2257
2257
  material.transmissionAlpha = 1.0;
2258
2258
  material.thickness = thickness;
@@ -2273,7 +2273,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISS
2273
2273
  material.attenuationColor, material.attenuationDistance );
2274
2274
  material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );
2275
2275
  totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );
2276
- #endif`,Dp=`#ifdef USE_TRANSMISSION
2276
+ #endif`,Op=`#ifdef USE_TRANSMISSION
2277
2277
  uniform float transmission;
2278
2278
  uniform float thickness;
2279
2279
  uniform float attenuationDistance;
@@ -2399,7 +2399,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISS
2399
2399
  float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
2400
2400
  return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );
2401
2401
  }
2402
- #endif`,Lp=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
2402
+ #endif`,Up=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
2403
2403
  varying vec2 vUv;
2404
2404
  #endif
2405
2405
  #ifdef USE_MAP
@@ -2469,7 +2469,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISS
2469
2469
  #ifdef USE_THICKNESSMAP
2470
2470
  uniform mat3 thicknessMapTransform;
2471
2471
  varying vec2 vThicknessMapUv;
2472
- #endif`,Np=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
2472
+ #endif`,zp=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
2473
2473
  varying vec2 vUv;
2474
2474
  #endif
2475
2475
  #ifdef USE_MAP
@@ -2563,7 +2563,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISS
2563
2563
  #ifdef USE_THICKNESSMAP
2564
2564
  uniform mat3 thicknessMapTransform;
2565
2565
  varying vec2 vThicknessMapUv;
2566
- #endif`,Fp=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
2566
+ #endif`,Gp=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
2567
2567
  vUv = vec3( uv, 1 ).xy;
2568
2568
  #endif
2569
2569
  #ifdef USE_MAP
@@ -2634,7 +2634,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISS
2634
2634
  #endif
2635
2635
  #ifdef USE_THICKNESSMAP
2636
2636
  vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;
2637
- #endif`,Bp=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
2637
+ #endif`,kp=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
2638
2638
  vec4 worldPosition = vec4( transformed, 1.0 );
2639
2639
  #ifdef USE_BATCHING
2640
2640
  worldPosition = batchingMatrix * worldPosition;
@@ -2643,7 +2643,7 @@ vec3 CustomToneMapping( vec3 color ) { return color; }`,Pp=`#ifdef USE_TRANSMISS
2643
2643
  worldPosition = instanceMatrix * worldPosition;
2644
2644
  #endif
2645
2645
  worldPosition = modelMatrix * worldPosition;
2646
- #endif`;const Bt={alphahash_fragment:Uf,alphahash_pars_fragment:zf,alphamap_fragment:Gf,alphamap_pars_fragment:kf,alphatest_fragment:Hf,alphatest_pars_fragment:Vf,aomap_fragment:Wf,aomap_pars_fragment:Yf,batching_pars_vertex:Xf,batching_vertex:Zf,begin_vertex:Jf,beginnormal_vertex:jf,bsdfs:Qf,iridescence_fragment:qf,bumpmap_pars_fragment:Kf,clipping_planes_fragment:$f,clipping_planes_pars_fragment:tg,clipping_planes_pars_vertex:eg,clipping_planes_vertex:ig,color_fragment:ng,color_pars_fragment:sg,color_pars_vertex:rg,color_vertex:ag,common:og,cube_uv_reflection_fragment:Ag,defaultnormal_vertex:lg,displacementmap_pars_vertex:hg,displacementmap_vertex:cg,emissivemap_fragment:ug,emissivemap_pars_fragment:dg,colorspace_fragment:fg,colorspace_pars_fragment:gg,envmap_fragment:pg,envmap_common_pars_fragment:mg,envmap_pars_fragment:Ig,envmap_pars_vertex:Cg,envmap_physical_pars_fragment:_g,envmap_vertex:vg,fog_vertex:xg,fog_pars_vertex:Eg,fog_fragment:Sg,fog_pars_fragment:Mg,gradientmap_pars_fragment:yg,lightmap_pars_fragment:bg,lights_lambert_fragment:Tg,lights_lambert_pars_fragment:wg,lights_pars_begin:Rg,lights_toon_fragment:Pg,lights_toon_pars_fragment:Dg,lights_phong_fragment:Lg,lights_phong_pars_fragment:Ng,lights_physical_fragment:Fg,lights_physical_pars_fragment:Bg,lights_fragment_begin:Og,lights_fragment_maps:Ug,lights_fragment_end:zg,logdepthbuf_fragment:Gg,logdepthbuf_pars_fragment:kg,logdepthbuf_pars_vertex:Hg,logdepthbuf_vertex:Vg,map_fragment:Wg,map_pars_fragment:Yg,map_particle_fragment:Xg,map_particle_pars_fragment:Zg,metalnessmap_fragment:Jg,metalnessmap_pars_fragment:jg,morphinstance_vertex:Qg,morphcolor_vertex:qg,morphnormal_vertex:Kg,morphtarget_pars_vertex:$g,morphtarget_vertex:tp,normal_fragment_begin:ep,normal_fragment_maps:ip,normal_pars_fragment:np,normal_pars_vertex:sp,normal_vertex:rp,normalmap_pars_fragment:ap,clearcoat_normal_fragment_begin:op,clearcoat_normal_fragment_maps:Ap,clearcoat_pars_fragment:lp,iridescence_pars_fragment:hp,opaque_fragment:cp,packing:up,premultiplied_alpha_fragment:dp,project_vertex:fp,dithering_fragment:gp,dithering_pars_fragment:pp,roughnessmap_fragment:mp,roughnessmap_pars_fragment:Ip,shadowmap_pars_fragment:Cp,shadowmap_pars_vertex:vp,shadowmap_vertex:xp,shadowmask_pars_fragment:Ep,skinbase_vertex:Sp,skinning_pars_vertex:Mp,skinning_vertex:yp,skinnormal_vertex:bp,specularmap_fragment:Tp,specularmap_pars_fragment:wp,tonemapping_fragment:Rp,tonemapping_pars_fragment:_p,transmission_fragment:Pp,transmission_pars_fragment:Dp,uv_pars_fragment:Lp,uv_pars_vertex:Np,uv_vertex:Fp,worldpos_vertex:Bp,background_vert:`varying vec2 vUv;
2646
+ #endif`;const Bt={alphahash_fragment:Vf,alphahash_pars_fragment:Wf,alphamap_fragment:Yf,alphamap_pars_fragment:Xf,alphatest_fragment:Zf,alphatest_pars_fragment:Jf,aomap_fragment:jf,aomap_pars_fragment:Qf,batching_pars_vertex:qf,batching_vertex:Kf,begin_vertex:$f,beginnormal_vertex:tg,bsdfs:eg,iridescence_fragment:ig,bumpmap_pars_fragment:ng,clipping_planes_fragment:sg,clipping_planes_pars_fragment:rg,clipping_planes_pars_vertex:ag,clipping_planes_vertex:og,color_fragment:Ag,color_pars_fragment:lg,color_pars_vertex:hg,color_vertex:cg,common:ug,cube_uv_reflection_fragment:dg,defaultnormal_vertex:fg,displacementmap_pars_vertex:gg,displacementmap_vertex:pg,emissivemap_fragment:mg,emissivemap_pars_fragment:Ig,colorspace_fragment:Cg,colorspace_pars_fragment:vg,envmap_fragment:xg,envmap_common_pars_fragment:Eg,envmap_pars_fragment:Sg,envmap_pars_vertex:Mg,envmap_physical_pars_fragment:Fg,envmap_vertex:yg,fog_vertex:bg,fog_pars_vertex:Tg,fog_fragment:wg,fog_pars_fragment:Rg,gradientmap_pars_fragment:_g,lightmap_pars_fragment:Pg,lights_lambert_fragment:Lg,lights_lambert_pars_fragment:Dg,lights_pars_begin:Ng,lights_toon_fragment:Bg,lights_toon_pars_fragment:Og,lights_phong_fragment:Ug,lights_phong_pars_fragment:zg,lights_physical_fragment:Gg,lights_physical_pars_fragment:kg,lights_fragment_begin:Hg,lights_fragment_maps:Vg,lights_fragment_end:Wg,logdepthbuf_fragment:Yg,logdepthbuf_pars_fragment:Xg,logdepthbuf_pars_vertex:Zg,logdepthbuf_vertex:Jg,map_fragment:jg,map_pars_fragment:Qg,map_particle_fragment:qg,map_particle_pars_fragment:Kg,metalnessmap_fragment:$g,metalnessmap_pars_fragment:tp,morphinstance_vertex:ep,morphcolor_vertex:ip,morphnormal_vertex:np,morphtarget_pars_vertex:sp,morphtarget_vertex:rp,normal_fragment_begin:ap,normal_fragment_maps:op,normal_pars_fragment:Ap,normal_pars_vertex:lp,normal_vertex:hp,normalmap_pars_fragment:cp,clearcoat_normal_fragment_begin:up,clearcoat_normal_fragment_maps:dp,clearcoat_pars_fragment:fp,iridescence_pars_fragment:gp,opaque_fragment:pp,packing:mp,premultiplied_alpha_fragment:Ip,project_vertex:Cp,dithering_fragment:vp,dithering_pars_fragment:xp,roughnessmap_fragment:Ep,roughnessmap_pars_fragment:Sp,shadowmap_pars_fragment:Mp,shadowmap_pars_vertex:yp,shadowmap_vertex:bp,shadowmask_pars_fragment:Tp,skinbase_vertex:wp,skinning_pars_vertex:Rp,skinning_vertex:_p,skinnormal_vertex:Pp,specularmap_fragment:Lp,specularmap_pars_fragment:Dp,tonemapping_fragment:Np,tonemapping_pars_fragment:Fp,transmission_fragment:Bp,transmission_pars_fragment:Op,uv_pars_fragment:Up,uv_pars_vertex:zp,uv_vertex:Gp,worldpos_vertex:kp,background_vert:`varying vec2 vUv;
2647
2647
  uniform mat3 uvTransform;
2648
2648
  void main() {
2649
2649
  vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
@@ -3699,7 +3699,7 @@ void main() {
3699
3699
  #include <tonemapping_fragment>
3700
3700
  #include <colorspace_fragment>
3701
3701
  #include <fog_fragment>
3702
- }`},at={common:{diffuse:{value:new Vt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Nt},alphaMap:{value:null},alphaMapTransform:{value:new Nt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Nt}},envmap:{envMap:{value:null},envMapRotation:{value:new Nt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Nt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Nt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Nt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Nt},normalScale:{value:new Zt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Nt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Nt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Nt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Nt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Vt(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 Vt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Nt},alphaTest:{value:0},uvTransform:{value:new Nt}},sprite:{diffuse:{value:new Vt(16777215)},opacity:{value:1},center:{value:new Zt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Nt},alphaMap:{value:null},alphaMapTransform:{value:new Nt},alphaTest:{value:0}}},Ei={basic:{uniforms:Pe([at.common,at.specularmap,at.envmap,at.aomap,at.lightmap,at.fog]),vertexShader:Bt.meshbasic_vert,fragmentShader:Bt.meshbasic_frag},lambert:{uniforms:Pe([at.common,at.specularmap,at.envmap,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.fog,at.lights,{emissive:{value:new Vt(0)}}]),vertexShader:Bt.meshlambert_vert,fragmentShader:Bt.meshlambert_frag},phong:{uniforms:Pe([at.common,at.specularmap,at.envmap,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.fog,at.lights,{emissive:{value:new Vt(0)},specular:{value:new Vt(1118481)},shininess:{value:30}}]),vertexShader:Bt.meshphong_vert,fragmentShader:Bt.meshphong_frag},standard:{uniforms:Pe([at.common,at.envmap,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.roughnessmap,at.metalnessmap,at.fog,at.lights,{emissive:{value:new Vt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Bt.meshphysical_vert,fragmentShader:Bt.meshphysical_frag},toon:{uniforms:Pe([at.common,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.gradientmap,at.fog,at.lights,{emissive:{value:new Vt(0)}}]),vertexShader:Bt.meshtoon_vert,fragmentShader:Bt.meshtoon_frag},matcap:{uniforms:Pe([at.common,at.bumpmap,at.normalmap,at.displacementmap,at.fog,{matcap:{value:null}}]),vertexShader:Bt.meshmatcap_vert,fragmentShader:Bt.meshmatcap_frag},points:{uniforms:Pe([at.points,at.fog]),vertexShader:Bt.points_vert,fragmentShader:Bt.points_frag},dashed:{uniforms:Pe([at.common,at.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Bt.linedashed_vert,fragmentShader:Bt.linedashed_frag},depth:{uniforms:Pe([at.common,at.displacementmap]),vertexShader:Bt.depth_vert,fragmentShader:Bt.depth_frag},normal:{uniforms:Pe([at.common,at.bumpmap,at.normalmap,at.displacementmap,{opacity:{value:1}}]),vertexShader:Bt.meshnormal_vert,fragmentShader:Bt.meshnormal_frag},sprite:{uniforms:Pe([at.sprite,at.fog]),vertexShader:Bt.sprite_vert,fragmentShader:Bt.sprite_frag},background:{uniforms:{uvTransform:{value:new Nt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Bt.background_vert,fragmentShader:Bt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Nt}},vertexShader:Bt.backgroundCube_vert,fragmentShader:Bt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Bt.cube_vert,fragmentShader:Bt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Bt.equirect_vert,fragmentShader:Bt.equirect_frag},distanceRGBA:{uniforms:Pe([at.common,at.displacementmap,{referencePosition:{value:new F},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Bt.distanceRGBA_vert,fragmentShader:Bt.distanceRGBA_frag},shadow:{uniforms:Pe([at.lights,at.fog,{color:{value:new Vt(0)},opacity:{value:1}}]),vertexShader:Bt.shadow_vert,fragmentShader:Bt.shadow_frag}};Ei.physical={uniforms:Pe([Ei.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Nt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Nt},clearcoatNormalScale:{value:new Zt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Nt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Nt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Nt},sheen:{value:0},sheenColor:{value:new Vt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Nt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Nt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Nt},transmissionSamplerSize:{value:new Zt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Nt},attenuationDistance:{value:0},attenuationColor:{value:new Vt(0)},specularColor:{value:new Vt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Nt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Nt},anisotropyVector:{value:new Zt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Nt}}]),vertexShader:Bt.meshphysical_vert,fragmentShader:Bt.meshphysical_frag};const sa={r:0,b:0,g:0},Dn=new di,Op=new ue;function Up(r,t,e,i,n,s,a){const o=new Vt(0);let l=s===!0?0:1,A,h,c=null,u=0,d=null;function p(S){let v=S.isScene===!0?S.background:null;return v&&v.isTexture&&(v=(S.backgroundBlurriness>0?e:t).get(v)),v}function m(S){let v=!1;const w=p(S);w===null?f(o,l):w&&w.isColor&&(f(w,1),v=!0);const T=r.xr.getEnvironmentBlendMode();T==="additive"?i.buffers.color.setClear(0,0,0,1,a):T==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,a),(r.autoClear||v)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil))}function g(S,v){const w=p(v);w&&(w.isCubeTexture||w.mapping===Pr)?(h===void 0&&(h=new pi(new Cs(1,1,1),new An({name:"BackgroundCubeMaterial",uniforms:vs(Ei.backgroundCube.uniforms),vertexShader:Ei.backgroundCube.vertexShader,fragmentShader:Ei.backgroundCube.fragmentShader,side:Oe,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(T,R,P){this.matrixWorld.copyPosition(P.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(h)),Dn.copy(v.backgroundRotation),Dn.x*=-1,Dn.y*=-1,Dn.z*=-1,w.isCubeTexture&&w.isRenderTargetTexture===!1&&(Dn.y*=-1,Dn.z*=-1),h.material.uniforms.envMap.value=w,h.material.uniforms.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(Op.makeRotationFromEuler(Dn)),h.material.toneMapped=Yt.getTransfer(w.colorSpace)!==qt,(c!==w||u!==w.version||d!==r.toneMapping)&&(h.material.needsUpdate=!0,c=w,u=w.version,d=r.toneMapping),h.layers.enableAll(),S.unshift(h,h.geometry,h.material,0,0,null)):w&&w.isTexture&&(A===void 0&&(A=new pi(new ar(2,2),new An({name:"BackgroundMaterial",uniforms:vs(Ei.background.uniforms),vertexShader:Ei.background.vertexShader,fragmentShader:Ei.background.fragmentShader,side:Ki,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),A.geometry.deleteAttribute("normal"),Object.defineProperty(A.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(A)),A.material.uniforms.t2D.value=w,A.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,A.material.toneMapped=Yt.getTransfer(w.colorSpace)!==qt,w.matrixAutoUpdate===!0&&w.updateMatrix(),A.material.uniforms.uvTransform.value.copy(w.matrix),(c!==w||u!==w.version||d!==r.toneMapping)&&(A.material.needsUpdate=!0,c=w,u=w.version,d=r.toneMapping),A.layers.enableAll(),S.unshift(A,A.geometry,A.material,0,0,null))}function f(S,v){S.getRGB(sa,dh(r)),i.buffers.color.setClear(sa.r,sa.g,sa.b,v,a)}function y(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),A!==void 0&&(A.geometry.dispose(),A.material.dispose(),A=void 0)}return{getClearColor:function(){return o},setClearColor:function(S,v=1){o.set(S),l=v,f(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(S){l=S,f(o,l)},render:m,addToRenderList:g,dispose:y}}function zp(r,t){const e=r.getParameter(r.MAX_VERTEX_ATTRIBS),i={},n=u(null);let s=n,a=!1;function o(x,b,z,B,U){let W=!1;const Y=c(B,z,b);s!==Y&&(s=Y,A(s.object)),W=d(x,B,z,U),W&&p(x,B,z,U),U!==null&&t.update(U,r.ELEMENT_ARRAY_BUFFER),(W||a)&&(a=!1,v(x,b,z,B),U!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t.get(U).buffer))}function l(){return r.createVertexArray()}function A(x){return r.bindVertexArray(x)}function h(x){return r.deleteVertexArray(x)}function c(x,b,z){const B=z.wireframe===!0;let U=i[x.id];U===void 0&&(U={},i[x.id]=U);let W=U[b.id];W===void 0&&(W={},U[b.id]=W);let Y=W[B];return Y===void 0&&(Y=u(l()),W[B]=Y),Y}function u(x){const b=[],z=[],B=[];for(let U=0;U<e;U++)b[U]=0,z[U]=0,B[U]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:b,enabledAttributes:z,attributeDivisors:B,object:x,attributes:{},index:null}}function d(x,b,z,B){const U=s.attributes,W=b.attributes;let Y=0;const $=z.getAttributes();for(const H in $)if($[H].location>=0){const lt=U[H];let mt=W[H];if(mt===void 0&&(H==="instanceMatrix"&&x.instanceMatrix&&(mt=x.instanceMatrix),H==="instanceColor"&&x.instanceColor&&(mt=x.instanceColor)),lt===void 0||lt.attribute!==mt||mt&&lt.data!==mt.data)return!0;Y++}return s.attributesNum!==Y||s.index!==B}function p(x,b,z,B){const U={},W=b.attributes;let Y=0;const $=z.getAttributes();for(const H in $)if($[H].location>=0){let lt=W[H];lt===void 0&&(H==="instanceMatrix"&&x.instanceMatrix&&(lt=x.instanceMatrix),H==="instanceColor"&&x.instanceColor&&(lt=x.instanceColor));const mt={};mt.attribute=lt,lt&&lt.data&&(mt.data=lt.data),U[H]=mt,Y++}s.attributes=U,s.attributesNum=Y,s.index=B}function m(){const x=s.newAttributes;for(let b=0,z=x.length;b<z;b++)x[b]=0}function g(x){f(x,0)}function f(x,b){const z=s.newAttributes,B=s.enabledAttributes,U=s.attributeDivisors;z[x]=1,B[x]===0&&(r.enableVertexAttribArray(x),B[x]=1),U[x]!==b&&(r.vertexAttribDivisor(x,b),U[x]=b)}function y(){const x=s.newAttributes,b=s.enabledAttributes;for(let z=0,B=b.length;z<B;z++)b[z]!==x[z]&&(r.disableVertexAttribArray(z),b[z]=0)}function S(x,b,z,B,U,W,Y){Y===!0?r.vertexAttribIPointer(x,b,z,U,W):r.vertexAttribPointer(x,b,z,B,U,W)}function v(x,b,z,B){m();const U=B.attributes,W=z.getAttributes(),Y=b.defaultAttributeValues;for(const $ in W){const H=W[$];if(H.location>=0){let rt=U[$];if(rt===void 0&&($==="instanceMatrix"&&x.instanceMatrix&&(rt=x.instanceMatrix),$==="instanceColor"&&x.instanceColor&&(rt=x.instanceColor)),rt!==void 0){const lt=rt.normalized,mt=rt.itemSize,Ot=t.get(rt);if(Ot===void 0)continue;const se=Ot.buffer,$t=Ot.type,J=Ot.bytesPerElement,ot=$t===r.INT||$t===r.UNSIGNED_INT||rt.gpuType===so;if(rt.isInterleavedBufferAttribute){const nt=rt.data,bt=nt.stride,Tt=rt.offset;if(nt.isInstancedInterleavedBuffer){for(let Dt=0;Dt<H.locationSize;Dt++)f(H.location+Dt,nt.meshPerAttribute);x.isInstancedMesh!==!0&&B._maxInstanceCount===void 0&&(B._maxInstanceCount=nt.meshPerAttribute*nt.count)}else for(let Dt=0;Dt<H.locationSize;Dt++)g(H.location+Dt);r.bindBuffer(r.ARRAY_BUFFER,se);for(let Dt=0;Dt<H.locationSize;Dt++)S(H.location+Dt,mt/H.locationSize,$t,lt,bt*J,(Tt+mt/H.locationSize*Dt)*J,ot)}else{if(rt.isInstancedBufferAttribute){for(let nt=0;nt<H.locationSize;nt++)f(H.location+nt,rt.meshPerAttribute);x.isInstancedMesh!==!0&&B._maxInstanceCount===void 0&&(B._maxInstanceCount=rt.meshPerAttribute*rt.count)}else for(let nt=0;nt<H.locationSize;nt++)g(H.location+nt);r.bindBuffer(r.ARRAY_BUFFER,se);for(let nt=0;nt<H.locationSize;nt++)S(H.location+nt,mt/H.locationSize,$t,lt,mt*J,mt/H.locationSize*nt*J,ot)}}else if(Y!==void 0){const lt=Y[$];if(lt!==void 0)switch(lt.length){case 2:r.vertexAttrib2fv(H.location,lt);break;case 3:r.vertexAttrib3fv(H.location,lt);break;case 4:r.vertexAttrib4fv(H.location,lt);break;default:r.vertexAttrib1fv(H.location,lt)}}}}y()}function w(){P();for(const x in i){const b=i[x];for(const z in b){const B=b[z];for(const U in B)h(B[U].object),delete B[U];delete b[z]}delete i[x]}}function T(x){if(i[x.id]===void 0)return;const b=i[x.id];for(const z in b){const B=b[z];for(const U in B)h(B[U].object),delete B[U];delete b[z]}delete i[x.id]}function R(x){for(const b in i){const z=i[b];if(z[x.id]===void 0)continue;const B=z[x.id];for(const U in B)h(B[U].object),delete B[U];delete z[x.id]}}function P(){E(),a=!0,s!==n&&(s=n,A(s.object))}function E(){n.geometry=null,n.program=null,n.wireframe=!1}return{setup:o,reset:P,resetDefaultState:E,dispose:w,releaseStatesOfGeometry:T,releaseStatesOfProgram:R,initAttributes:m,enableAttribute:g,disableUnusedAttributes:y}}function Gp(r,t,e){let i;function n(A){i=A}function s(A,h){r.drawArrays(i,A,h),e.update(h,i,1)}function a(A,h,c){c!==0&&(r.drawArraysInstanced(i,A,h,c),e.update(h,i,c))}function o(A,h,c){if(c===0)return;t.get("WEBGL_multi_draw").multiDrawArraysWEBGL(i,A,0,h,0,c);let d=0;for(let p=0;p<c;p++)d+=h[p];e.update(d,i,1)}function l(A,h,c,u){if(c===0)return;const d=t.get("WEBGL_multi_draw");if(d===null)for(let p=0;p<A.length;p++)a(A[p],h[p],u[p]);else{d.multiDrawArraysInstancedWEBGL(i,A,0,h,0,u,0,c);let p=0;for(let m=0;m<c;m++)p+=h[m]*u[m];e.update(p,i,1)}}this.setMode=n,this.render=s,this.renderInstances=a,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function kp(r,t,e,i){let n;function s(){if(n!==void 0)return n;if(t.has("EXT_texture_filter_anisotropic")===!0){const R=t.get("EXT_texture_filter_anisotropic");n=r.getParameter(R.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n}function a(R){return!(R!==hi&&i.convert(R)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(R){const P=R===Zs&&(t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float"));return!(R!==Ci&&i.convert(R)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_TYPE)&&R!==Ni&&!P)}function l(R){if(R==="highp"){if(r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.HIGH_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let A=e.precision!==void 0?e.precision:"highp";const h=l(A);h!==A&&(console.warn("THREE.WebGLRenderer:",A,"not supported, using",h,"instead."),A=h);const c=e.logarithmicDepthBuffer===!0,u=e.reversedDepthBuffer===!0&&t.has("EXT_clip_control"),d=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),p=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=r.getParameter(r.MAX_TEXTURE_SIZE),g=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),f=r.getParameter(r.MAX_VERTEX_ATTRIBS),y=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),S=r.getParameter(r.MAX_VARYING_VECTORS),v=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),w=p>0,T=r.getParameter(r.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:A,logarithmicDepthBuffer:c,reversedDepthBuffer:u,maxTextures:d,maxVertexTextures:p,maxTextureSize:m,maxCubemapSize:g,maxAttributes:f,maxVertexUniforms:y,maxVaryings:S,maxFragmentUniforms:v,vertexTextures:w,maxSamples:T}}function Hp(r){const t=this;let e=null,i=0,n=!1,s=!1;const a=new _n,o=new Nt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(c,u){const d=c.length!==0||u||i!==0||n;return n=u,i=c.length,d},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(c,u){e=h(c,u,0)},this.setState=function(c,u,d){const p=c.clippingPlanes,m=c.clipIntersection,g=c.clipShadows,f=r.get(c);if(!n||p===null||p.length===0||s&&!g)s?h(null):A();else{const y=s?0:i,S=y*4;let v=f.clippingState||null;l.value=v,v=h(p,u,S,d);for(let w=0;w!==S;++w)v[w]=e[w];f.clippingState=v,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=y}};function A(){l.value!==e&&(l.value=e,l.needsUpdate=i>0),t.numPlanes=i,t.numIntersection=0}function h(c,u,d,p){const m=c!==null?c.length:0;let g=null;if(m!==0){if(g=l.value,p!==!0||g===null){const f=d+m*4,y=u.matrixWorldInverse;o.getNormalMatrix(y),(g===null||g.length<f)&&(g=new Float32Array(f));for(let S=0,v=d;S!==m;++S,v+=4)a.copy(c[S]).applyMatrix4(y,o),a.normal.toArray(g,v),g[v+3]=a.constant}l.value=g,l.needsUpdate=!0}return t.numPlanes=m,t.numIntersection=0,g}}function Vp(r){let t=new WeakMap;function e(a,o){return o===$a?a.mapping=ts:o===to&&(a.mapping=es),a}function i(a){if(a&&a.isTexture){const o=a.mapping;if(o===$a||o===to)if(t.has(a)){const l=t.get(a).texture;return e(l,a.mapping)}else{const l=a.image;if(l&&l.height>0){const A=new vf(l.height);return A.fromEquirectangularTexture(r,a),t.set(a,A),a.addEventListener("dispose",n),e(A.texture,a.mapping)}else return null}}return a}function n(a){const o=a.target;o.removeEventListener("dispose",n);const l=t.get(o);l!==void 0&&(t.delete(o),l.dispose())}function s(){t=new WeakMap}return{get:i,dispose:s}}const Ms=4,_h=[.125,.215,.35,.446,.526,.582],Ln=20,pA=new yh,Ph=new Vt;let mA=null,IA=0,CA=0,vA=!1;const Nn=(1+Math.sqrt(5))/2,ys=1/Nn,Dh=[new F(-Nn,ys,0),new F(Nn,ys,0),new F(-ys,0,Nn),new F(ys,0,Nn),new F(0,Nn,-ys),new F(0,Nn,ys),new F(-1,1,-1),new F(1,1,-1),new F(-1,1,1),new F(1,1,1)],Wp=new F;class Lh{constructor(t){this._renderer=t,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(t,e=0,i=.1,n=100,s={}){const{size:a=256,position:o=Wp}=s;mA=this._renderer.getRenderTarget(),IA=this._renderer.getActiveCubeFace(),CA=this._renderer.getActiveMipmapLevel(),vA=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(t,i,n,l,o),e>0&&this._blur(l,0,0,e),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Bh(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Fh(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t<this._lodPlanes.length;t++)this._lodPlanes[t].dispose()}_cleanup(t){this._renderer.setRenderTarget(mA,IA,CA),this._renderer.xr.enabled=vA,t.scissorTest=!1,ra(t,0,0,t.width,t.height)}_fromTexture(t,e){t.mapping===ts||t.mapping===es?this._setSize(t.image.length===0?16:t.image[0].width||t.image[0].image.width):this._setSize(t.image.width/4),mA=this._renderer.getRenderTarget(),IA=this._renderer.getActiveCubeFace(),CA=this._renderer.getActiveMipmapLevel(),vA=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const i=e||this._allocateTargets();return this._textureToCubeUV(t,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){const t=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,i={magFilter:Ii,minFilter:Ii,generateMipmaps:!1,type:Zs,format:hi,colorSpace:is,depthBuffer:!1},n=Nh(t,e,i);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Nh(t,e,i);const{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Yp(s)),this._blurMaterial=Xp(s,t,e)}return n}_compileMaterial(t){const e=new pi(this._lodPlanes[0],t);this._renderer.compile(e,pA)}_sceneToCubeUV(t,e,i,n,s){const l=new ze(90,1,e,i),A=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],c=this._renderer,u=c.autoClear,d=c.toneMapping;c.getClearColor(Ph),c.toneMapping=tn,c.autoClear=!1,c.state.buffers.depth.getReversed()&&(c.setRenderTarget(n),c.clearDepth(),c.setRenderTarget(null));const m=new rA({name:"PMREM.Background",side:Oe,depthWrite:!1,depthTest:!1}),g=new pi(new Cs,m);let f=!1;const y=t.background;y?y.isColor&&(m.color.copy(y),t.background=null,f=!0):(m.color.copy(Ph),f=!0);for(let S=0;S<6;S++){const v=S%3;v===0?(l.up.set(0,A[S],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x+h[S],s.y,s.z)):v===1?(l.up.set(0,0,A[S]),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y+h[S],s.z)):(l.up.set(0,A[S],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y,s.z+h[S]));const w=this._cubeSize;ra(n,v*w,S>2?w:0,w,w),c.setRenderTarget(n),f&&c.render(g,l),c.render(t,l)}g.geometry.dispose(),g.material.dispose(),c.toneMapping=d,c.autoClear=u,t.background=y}_textureToCubeUV(t,e){const i=this._renderer,n=t.mapping===ts||t.mapping===es;n?(this._cubemapMaterial===null&&(this._cubemapMaterial=Bh()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Fh());const s=n?this._cubemapMaterial:this._equirectMaterial,a=new pi(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=t;const l=this._cubeSize;ra(e,0,0,3*l,2*l),i.setRenderTarget(e),i.render(a,pA)}_applyPMREM(t){const e=this._renderer,i=e.autoClear;e.autoClear=!1;const n=this._lodPlanes.length;for(let s=1;s<n;s++){const a=Math.sqrt(this._sigmas[s]*this._sigmas[s]-this._sigmas[s-1]*this._sigmas[s-1]),o=Dh[(n-s-1)%Dh.length];this._blur(t,s-1,s,a,o)}e.autoClear=i}_blur(t,e,i,n,s){const a=this._pingPongRenderTarget;this._halfBlur(t,a,e,i,n,"latitudinal",s),this._halfBlur(a,t,i,i,n,"longitudinal",s)}_halfBlur(t,e,i,n,s,a,o){const l=this._renderer,A=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const h=3,c=new pi(this._lodPlanes[n],A),u=A.uniforms,d=this._sizeLods[i]-1,p=isFinite(s)?Math.PI/(2*d):2*Math.PI/(2*Ln-1),m=s/p,g=isFinite(s)?1+Math.floor(h*m):Ln;g>Ln&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Ln}`);const f=[];let y=0;for(let R=0;R<Ln;++R){const P=R/m,E=Math.exp(-P*P/2);f.push(E),R===0?y+=E:R<g&&(y+=2*E)}for(let R=0;R<f.length;R++)f[R]=f[R]/y;u.envMap.value=t.texture,u.samples.value=g,u.weights.value=f,u.latitudinal.value=a==="latitudinal",o&&(u.poleAxis.value=o);const{_lodMax:S}=this;u.dTheta.value=p,u.mipInt.value=S-i;const v=this._sizeLods[n],w=3*v*(n>S-Ms?n-S+Ms:0),T=4*(this._cubeSize-v);ra(e,w,T,3*v,2*v),l.setRenderTarget(e),l.render(c,pA)}}function Yp(r){const t=[],e=[],i=[];let n=r;const s=r-Ms+1+_h.length;for(let a=0;a<s;a++){const o=Math.pow(2,n);e.push(o);let l=1/o;a>r-Ms?l=_h[a-r+Ms-1]:a===0&&(l=0),i.push(l);const A=1/(o-2),h=-A,c=1+A,u=[h,h,c,h,c,c,h,h,c,c,h,c],d=6,p=6,m=3,g=2,f=1,y=new Float32Array(m*p*d),S=new Float32Array(g*p*d),v=new Float32Array(f*p*d);for(let T=0;T<d;T++){const R=T%3*2/3-1,P=T>2?0:-1,E=[R,P,0,R+2/3,P,0,R+2/3,P+1,0,R,P,0,R+2/3,P+1,0,R,P+1,0];y.set(E,m*p*T),S.set(u,g*p*T);const x=[T,T,T,T,T,T];v.set(x,f*p*T)}const w=new wn;w.setAttribute("position",new xi(y,m)),w.setAttribute("uv",new xi(S,g)),w.setAttribute("faceIndex",new xi(v,f)),t.push(w),n>Ms&&n--}return{lodPlanes:t,sizeLods:e,sigmas:i}}function Nh(r,t,e){const i=new Mn(r,t,e);return i.texture.mapping=Pr,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function ra(r,t,e,i,n){r.viewport.set(t,e,i,n),r.scissor.set(t,e,i,n)}function Xp(r,t,e){const i=new Float32Array(Ln),n=new F(0,1,0);return new An({name:"SphericalGaussianBlur",defines:{n:Ln,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n}},vertexShader:xA(),fragmentShader:`
3702
+ }`},at={common:{diffuse:{value:new Vt(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Nt},alphaMap:{value:null},alphaMapTransform:{value:new Nt},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Nt}},envmap:{envMap:{value:null},envMapRotation:{value:new Nt},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Nt}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Nt}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Nt},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Nt},normalScale:{value:new Zt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Nt},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Nt}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Nt}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Nt}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Vt(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 Vt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Nt},alphaTest:{value:0},uvTransform:{value:new Nt}},sprite:{diffuse:{value:new Vt(16777215)},opacity:{value:1},center:{value:new Zt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Nt},alphaMap:{value:null},alphaMapTransform:{value:new Nt},alphaTest:{value:0}}},Si={basic:{uniforms:Pe([at.common,at.specularmap,at.envmap,at.aomap,at.lightmap,at.fog]),vertexShader:Bt.meshbasic_vert,fragmentShader:Bt.meshbasic_frag},lambert:{uniforms:Pe([at.common,at.specularmap,at.envmap,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.fog,at.lights,{emissive:{value:new Vt(0)}}]),vertexShader:Bt.meshlambert_vert,fragmentShader:Bt.meshlambert_frag},phong:{uniforms:Pe([at.common,at.specularmap,at.envmap,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.fog,at.lights,{emissive:{value:new Vt(0)},specular:{value:new Vt(1118481)},shininess:{value:30}}]),vertexShader:Bt.meshphong_vert,fragmentShader:Bt.meshphong_frag},standard:{uniforms:Pe([at.common,at.envmap,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.roughnessmap,at.metalnessmap,at.fog,at.lights,{emissive:{value:new Vt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Bt.meshphysical_vert,fragmentShader:Bt.meshphysical_frag},toon:{uniforms:Pe([at.common,at.aomap,at.lightmap,at.emissivemap,at.bumpmap,at.normalmap,at.displacementmap,at.gradientmap,at.fog,at.lights,{emissive:{value:new Vt(0)}}]),vertexShader:Bt.meshtoon_vert,fragmentShader:Bt.meshtoon_frag},matcap:{uniforms:Pe([at.common,at.bumpmap,at.normalmap,at.displacementmap,at.fog,{matcap:{value:null}}]),vertexShader:Bt.meshmatcap_vert,fragmentShader:Bt.meshmatcap_frag},points:{uniforms:Pe([at.points,at.fog]),vertexShader:Bt.points_vert,fragmentShader:Bt.points_frag},dashed:{uniforms:Pe([at.common,at.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Bt.linedashed_vert,fragmentShader:Bt.linedashed_frag},depth:{uniforms:Pe([at.common,at.displacementmap]),vertexShader:Bt.depth_vert,fragmentShader:Bt.depth_frag},normal:{uniforms:Pe([at.common,at.bumpmap,at.normalmap,at.displacementmap,{opacity:{value:1}}]),vertexShader:Bt.meshnormal_vert,fragmentShader:Bt.meshnormal_frag},sprite:{uniforms:Pe([at.sprite,at.fog]),vertexShader:Bt.sprite_vert,fragmentShader:Bt.sprite_frag},background:{uniforms:{uvTransform:{value:new Nt},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Bt.background_vert,fragmentShader:Bt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Nt}},vertexShader:Bt.backgroundCube_vert,fragmentShader:Bt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Bt.cube_vert,fragmentShader:Bt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Bt.equirect_vert,fragmentShader:Bt.equirect_frag},distanceRGBA:{uniforms:Pe([at.common,at.displacementmap,{referencePosition:{value:new F},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Bt.distanceRGBA_vert,fragmentShader:Bt.distanceRGBA_frag},shadow:{uniforms:Pe([at.lights,at.fog,{color:{value:new Vt(0)},opacity:{value:1}}]),vertexShader:Bt.shadow_vert,fragmentShader:Bt.shadow_frag}};Si.physical={uniforms:Pe([Si.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Nt},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Nt},clearcoatNormalScale:{value:new Zt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Nt},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Nt},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Nt},sheen:{value:0},sheenColor:{value:new Vt(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Nt},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Nt},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Nt},transmissionSamplerSize:{value:new Zt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Nt},attenuationDistance:{value:0},attenuationColor:{value:new Vt(0)},specularColor:{value:new Vt(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Nt},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Nt},anisotropyVector:{value:new Zt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Nt}}]),vertexShader:Bt.meshphysical_vert,fragmentShader:Bt.meshphysical_frag};const la={r:0,b:0,g:0},Dn=new fi,Hp=new ue;function Vp(r,t,e,i,n,s,a){const o=new Vt(0);let l=s===!0?0:1,A,h,c=null,u=0,d=null;function p(S){let v=S.isScene===!0?S.background:null;return v&&v.isTexture&&(v=(S.backgroundBlurriness>0?e:t).get(v)),v}function m(S){let v=!1;const w=p(S);w===null?f(o,l):w&&w.isColor&&(f(w,1),v=!0);const T=r.xr.getEnvironmentBlendMode();T==="additive"?i.buffers.color.setClear(0,0,0,1,a):T==="alpha-blend"&&i.buffers.color.setClear(0,0,0,0,a),(r.autoClear||v)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil))}function g(S,v){const w=p(v);w&&(w.isCubeTexture||w.mapping===Br)?(h===void 0&&(h=new mi(new vs(1,1,1),new ln({name:"BackgroundCubeMaterial",uniforms:xs(Si.backgroundCube.uniforms),vertexShader:Si.backgroundCube.vertexShader,fragmentShader:Si.backgroundCube.fragmentShader,side:Oe,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(T,R,P){this.matrixWorld.copyPosition(P.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(h)),Dn.copy(v.backgroundRotation),Dn.x*=-1,Dn.y*=-1,Dn.z*=-1,w.isCubeTexture&&w.isRenderTargetTexture===!1&&(Dn.y*=-1,Dn.z*=-1),h.material.uniforms.envMap.value=w,h.material.uniforms.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,h.material.uniforms.backgroundRotation.value.setFromMatrix4(Hp.makeRotationFromEuler(Dn)),h.material.toneMapped=Yt.getTransfer(w.colorSpace)!==qt,(c!==w||u!==w.version||d!==r.toneMapping)&&(h.material.needsUpdate=!0,c=w,u=w.version,d=r.toneMapping),h.layers.enableAll(),S.unshift(h,h.geometry,h.material,0,0,null)):w&&w.isTexture&&(A===void 0&&(A=new mi(new cr(2,2),new ln({name:"BackgroundMaterial",uniforms:xs(Si.background.uniforms),vertexShader:Si.background.vertexShader,fragmentShader:Si.background.fragmentShader,side:$i,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),A.geometry.deleteAttribute("normal"),Object.defineProperty(A.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(A)),A.material.uniforms.t2D.value=w,A.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,A.material.toneMapped=Yt.getTransfer(w.colorSpace)!==qt,w.matrixAutoUpdate===!0&&w.updateMatrix(),A.material.uniforms.uvTransform.value.copy(w.matrix),(c!==w||u!==w.version||d!==r.toneMapping)&&(A.material.needsUpdate=!0,c=w,u=w.version,d=r.toneMapping),A.layers.enableAll(),S.unshift(A,A.geometry,A.material,0,0,null))}function f(S,v){S.getRGB(la,Ih(r)),i.buffers.color.setClear(la.r,la.g,la.b,v,a)}function y(){h!==void 0&&(h.geometry.dispose(),h.material.dispose(),h=void 0),A!==void 0&&(A.geometry.dispose(),A.material.dispose(),A=void 0)}return{getClearColor:function(){return o},setClearColor:function(S,v=1){o.set(S),l=v,f(o,l)},getClearAlpha:function(){return l},setClearAlpha:function(S){l=S,f(o,l)},render:m,addToRenderList:g,dispose:y}}function Wp(r,t){const e=r.getParameter(r.MAX_VERTEX_ATTRIBS),i={},n=u(null);let s=n,a=!1;function o(x,b,z,B,U){let W=!1;const Y=c(B,z,b);s!==Y&&(s=Y,A(s.object)),W=d(x,B,z,U),W&&p(x,B,z,U),U!==null&&t.update(U,r.ELEMENT_ARRAY_BUFFER),(W||a)&&(a=!1,v(x,b,z,B),U!==null&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,t.get(U).buffer))}function l(){return r.createVertexArray()}function A(x){return r.bindVertexArray(x)}function h(x){return r.deleteVertexArray(x)}function c(x,b,z){const B=z.wireframe===!0;let U=i[x.id];U===void 0&&(U={},i[x.id]=U);let W=U[b.id];W===void 0&&(W={},U[b.id]=W);let Y=W[B];return Y===void 0&&(Y=u(l()),W[B]=Y),Y}function u(x){const b=[],z=[],B=[];for(let U=0;U<e;U++)b[U]=0,z[U]=0,B[U]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:b,enabledAttributes:z,attributeDivisors:B,object:x,attributes:{},index:null}}function d(x,b,z,B){const U=s.attributes,W=b.attributes;let Y=0;const $=z.getAttributes();for(const H in $)if($[H].location>=0){const lt=U[H];let mt=W[H];if(mt===void 0&&(H==="instanceMatrix"&&x.instanceMatrix&&(mt=x.instanceMatrix),H==="instanceColor"&&x.instanceColor&&(mt=x.instanceColor)),lt===void 0||lt.attribute!==mt||mt&&lt.data!==mt.data)return!0;Y++}return s.attributesNum!==Y||s.index!==B}function p(x,b,z,B){const U={},W=b.attributes;let Y=0;const $=z.getAttributes();for(const H in $)if($[H].location>=0){let lt=W[H];lt===void 0&&(H==="instanceMatrix"&&x.instanceMatrix&&(lt=x.instanceMatrix),H==="instanceColor"&&x.instanceColor&&(lt=x.instanceColor));const mt={};mt.attribute=lt,lt&&lt.data&&(mt.data=lt.data),U[H]=mt,Y++}s.attributes=U,s.attributesNum=Y,s.index=B}function m(){const x=s.newAttributes;for(let b=0,z=x.length;b<z;b++)x[b]=0}function g(x){f(x,0)}function f(x,b){const z=s.newAttributes,B=s.enabledAttributes,U=s.attributeDivisors;z[x]=1,B[x]===0&&(r.enableVertexAttribArray(x),B[x]=1),U[x]!==b&&(r.vertexAttribDivisor(x,b),U[x]=b)}function y(){const x=s.newAttributes,b=s.enabledAttributes;for(let z=0,B=b.length;z<B;z++)b[z]!==x[z]&&(r.disableVertexAttribArray(z),b[z]=0)}function S(x,b,z,B,U,W,Y){Y===!0?r.vertexAttribIPointer(x,b,z,U,W):r.vertexAttribPointer(x,b,z,B,U,W)}function v(x,b,z,B){m();const U=B.attributes,W=z.getAttributes(),Y=b.defaultAttributeValues;for(const $ in W){const H=W[$];if(H.location>=0){let rt=U[$];if(rt===void 0&&($==="instanceMatrix"&&x.instanceMatrix&&(rt=x.instanceMatrix),$==="instanceColor"&&x.instanceColor&&(rt=x.instanceColor)),rt!==void 0){const lt=rt.normalized,mt=rt.itemSize,Ot=t.get(rt);if(Ot===void 0)continue;const se=Ot.buffer,$t=Ot.type,J=Ot.bytesPerElement,ot=$t===r.INT||$t===r.UNSIGNED_INT||rt.gpuType===lo;if(rt.isInterleavedBufferAttribute){const nt=rt.data,bt=nt.stride,Tt=rt.offset;if(nt.isInstancedInterleavedBuffer){for(let Lt=0;Lt<H.locationSize;Lt++)f(H.location+Lt,nt.meshPerAttribute);x.isInstancedMesh!==!0&&B._maxInstanceCount===void 0&&(B._maxInstanceCount=nt.meshPerAttribute*nt.count)}else for(let Lt=0;Lt<H.locationSize;Lt++)g(H.location+Lt);r.bindBuffer(r.ARRAY_BUFFER,se);for(let Lt=0;Lt<H.locationSize;Lt++)S(H.location+Lt,mt/H.locationSize,$t,lt,bt*J,(Tt+mt/H.locationSize*Lt)*J,ot)}else{if(rt.isInstancedBufferAttribute){for(let nt=0;nt<H.locationSize;nt++)f(H.location+nt,rt.meshPerAttribute);x.isInstancedMesh!==!0&&B._maxInstanceCount===void 0&&(B._maxInstanceCount=rt.meshPerAttribute*rt.count)}else for(let nt=0;nt<H.locationSize;nt++)g(H.location+nt);r.bindBuffer(r.ARRAY_BUFFER,se);for(let nt=0;nt<H.locationSize;nt++)S(H.location+nt,mt/H.locationSize,$t,lt,mt*J,mt/H.locationSize*nt*J,ot)}}else if(Y!==void 0){const lt=Y[$];if(lt!==void 0)switch(lt.length){case 2:r.vertexAttrib2fv(H.location,lt);break;case 3:r.vertexAttrib3fv(H.location,lt);break;case 4:r.vertexAttrib4fv(H.location,lt);break;default:r.vertexAttrib1fv(H.location,lt)}}}}y()}function w(){P();for(const x in i){const b=i[x];for(const z in b){const B=b[z];for(const U in B)h(B[U].object),delete B[U];delete b[z]}delete i[x]}}function T(x){if(i[x.id]===void 0)return;const b=i[x.id];for(const z in b){const B=b[z];for(const U in B)h(B[U].object),delete B[U];delete b[z]}delete i[x.id]}function R(x){for(const b in i){const z=i[b];if(z[x.id]===void 0)continue;const B=z[x.id];for(const U in B)h(B[U].object),delete B[U];delete z[x.id]}}function P(){E(),a=!0,s!==n&&(s=n,A(s.object))}function E(){n.geometry=null,n.program=null,n.wireframe=!1}return{setup:o,reset:P,resetDefaultState:E,dispose:w,releaseStatesOfGeometry:T,releaseStatesOfProgram:R,initAttributes:m,enableAttribute:g,disableUnusedAttributes:y}}function Yp(r,t,e){let i;function n(A){i=A}function s(A,h){r.drawArrays(i,A,h),e.update(h,i,1)}function a(A,h,c){c!==0&&(r.drawArraysInstanced(i,A,h,c),e.update(h,i,c))}function o(A,h,c){if(c===0)return;t.get("WEBGL_multi_draw").multiDrawArraysWEBGL(i,A,0,h,0,c);let d=0;for(let p=0;p<c;p++)d+=h[p];e.update(d,i,1)}function l(A,h,c,u){if(c===0)return;const d=t.get("WEBGL_multi_draw");if(d===null)for(let p=0;p<A.length;p++)a(A[p],h[p],u[p]);else{d.multiDrawArraysInstancedWEBGL(i,A,0,h,0,u,0,c);let p=0;for(let m=0;m<c;m++)p+=h[m]*u[m];e.update(p,i,1)}}this.setMode=n,this.render=s,this.renderInstances=a,this.renderMultiDraw=o,this.renderMultiDrawInstances=l}function Xp(r,t,e,i){let n;function s(){if(n!==void 0)return n;if(t.has("EXT_texture_filter_anisotropic")===!0){const R=t.get("EXT_texture_filter_anisotropic");n=r.getParameter(R.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n}function a(R){return!(R!==ci&&i.convert(R)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(R){const P=R===Ks&&(t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float"));return!(R!==vi&&i.convert(R)!==r.getParameter(r.IMPLEMENTATION_COLOR_READ_TYPE)&&R!==Fi&&!P)}function l(R){if(R==="highp"){if(r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.HIGH_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&r.getShaderPrecisionFormat(r.VERTEX_SHADER,r.MEDIUM_FLOAT).precision>0&&r.getShaderPrecisionFormat(r.FRAGMENT_SHADER,r.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let A=e.precision!==void 0?e.precision:"highp";const h=l(A);h!==A&&(console.warn("THREE.WebGLRenderer:",A,"not supported, using",h,"instead."),A=h);const c=e.logarithmicDepthBuffer===!0,u=e.reversedDepthBuffer===!0&&t.has("EXT_clip_control"),d=r.getParameter(r.MAX_TEXTURE_IMAGE_UNITS),p=r.getParameter(r.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=r.getParameter(r.MAX_TEXTURE_SIZE),g=r.getParameter(r.MAX_CUBE_MAP_TEXTURE_SIZE),f=r.getParameter(r.MAX_VERTEX_ATTRIBS),y=r.getParameter(r.MAX_VERTEX_UNIFORM_VECTORS),S=r.getParameter(r.MAX_VARYING_VECTORS),v=r.getParameter(r.MAX_FRAGMENT_UNIFORM_VECTORS),w=p>0,T=r.getParameter(r.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:A,logarithmicDepthBuffer:c,reversedDepthBuffer:u,maxTextures:d,maxVertexTextures:p,maxTextureSize:m,maxCubemapSize:g,maxAttributes:f,maxVertexUniforms:y,maxVaryings:S,maxFragmentUniforms:v,vertexTextures:w,maxSamples:T}}function Zp(r){const t=this;let e=null,i=0,n=!1,s=!1;const a=new Pn,o=new Nt,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(c,u){const d=c.length!==0||u||i!==0||n;return n=u,i=c.length,d},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(c,u){e=h(c,u,0)},this.setState=function(c,u,d){const p=c.clippingPlanes,m=c.clipIntersection,g=c.clipShadows,f=r.get(c);if(!n||p===null||p.length===0||s&&!g)s?h(null):A();else{const y=s?0:i,S=y*4;let v=f.clippingState||null;l.value=v,v=h(p,u,S,d);for(let w=0;w!==S;++w)v[w]=e[w];f.clippingState=v,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=y}};function A(){l.value!==e&&(l.value=e,l.needsUpdate=i>0),t.numPlanes=i,t.numIntersection=0}function h(c,u,d,p){const m=c!==null?c.length:0;let g=null;if(m!==0){if(g=l.value,p!==!0||g===null){const f=d+m*4,y=u.matrixWorldInverse;o.getNormalMatrix(y),(g===null||g.length<f)&&(g=new Float32Array(f));for(let S=0,v=d;S!==m;++S,v+=4)a.copy(c[S]).applyMatrix4(y,o),a.normal.toArray(g,v),g[v+3]=a.constant}l.value=g,l.needsUpdate=!0}return t.numPlanes=m,t.numIntersection=0,g}}function Jp(r){let t=new WeakMap;function e(a,o){return o===so?a.mapping=es:o===ro&&(a.mapping=is),a}function i(a){if(a&&a.isTexture){const o=a.mapping;if(o===so||o===ro)if(t.has(a)){const l=t.get(a).texture;return e(l,a.mapping)}else{const l=a.image;if(l&&l.height>0){const A=new yf(l.height);return A.fromEquirectangularTexture(r,a),t.set(a,A),a.addEventListener("dispose",n),e(A.texture,a.mapping)}else return null}}return a}function n(a){const o=a.target;o.removeEventListener("dispose",n);const l=t.get(o);l!==void 0&&(t.delete(o),l.dispose())}function s(){t=new WeakMap}return{get:i,dispose:s}}const ys=4,Fh=[.125,.215,.35,.446,.526,.582],Nn=20,xA=new _h,Bh=new Vt;let EA=null,SA=0,MA=0,yA=!1;const Fn=(1+Math.sqrt(5))/2,bs=1/Fn,Oh=[new F(-Fn,bs,0),new F(Fn,bs,0),new F(-bs,0,Fn),new F(bs,0,Fn),new F(0,Fn,-bs),new F(0,Fn,bs),new F(-1,1,-1),new F(1,1,-1),new F(-1,1,1),new F(1,1,1)],jp=new F;class Uh{constructor(t){this._renderer=t,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(t,e=0,i=.1,n=100,s={}){const{size:a=256,position:o=jp}=s;EA=this._renderer.getRenderTarget(),SA=this._renderer.getActiveCubeFace(),MA=this._renderer.getActiveMipmapLevel(),yA=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);const l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(t,i,n,l,o),e>0&&this._blur(l,0,0,e),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=kh(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Gh(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t<this._lodPlanes.length;t++)this._lodPlanes[t].dispose()}_cleanup(t){this._renderer.setRenderTarget(EA,SA,MA),this._renderer.xr.enabled=yA,t.scissorTest=!1,ha(t,0,0,t.width,t.height)}_fromTexture(t,e){t.mapping===es||t.mapping===is?this._setSize(t.image.length===0?16:t.image[0].width||t.image[0].image.width):this._setSize(t.image.width/4),EA=this._renderer.getRenderTarget(),SA=this._renderer.getActiveCubeFace(),MA=this._renderer.getActiveMipmapLevel(),yA=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const i=e||this._allocateTargets();return this._textureToCubeUV(t,i),this._applyPMREM(i),this._cleanup(i),i}_allocateTargets(){const t=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,i={magFilter:Ci,minFilter:Ci,generateMipmaps:!1,type:Ks,format:ci,colorSpace:ns,depthBuffer:!1},n=zh(t,e,i);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=zh(t,e,i);const{_lodMax:s}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Qp(s)),this._blurMaterial=qp(s,t,e)}return n}_compileMaterial(t){const e=new mi(this._lodPlanes[0],t);this._renderer.compile(e,xA)}_sceneToCubeUV(t,e,i,n,s){const l=new ze(90,1,e,i),A=[1,-1,1,1,1,1],h=[1,1,1,-1,-1,-1],c=this._renderer,u=c.autoClear,d=c.toneMapping;c.getClearColor(Bh),c.toneMapping=en,c.autoClear=!1,c.state.buffers.depth.getReversed()&&(c.setRenderTarget(n),c.clearDepth(),c.setRenderTarget(null));const m=new hA({name:"PMREM.Background",side:Oe,depthWrite:!1,depthTest:!1}),g=new mi(new vs,m);let f=!1;const y=t.background;y?y.isColor&&(m.color.copy(y),t.background=null,f=!0):(m.color.copy(Bh),f=!0);for(let S=0;S<6;S++){const v=S%3;v===0?(l.up.set(0,A[S],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x+h[S],s.y,s.z)):v===1?(l.up.set(0,0,A[S]),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y+h[S],s.z)):(l.up.set(0,A[S],0),l.position.set(s.x,s.y,s.z),l.lookAt(s.x,s.y,s.z+h[S]));const w=this._cubeSize;ha(n,v*w,S>2?w:0,w,w),c.setRenderTarget(n),f&&c.render(g,l),c.render(t,l)}g.geometry.dispose(),g.material.dispose(),c.toneMapping=d,c.autoClear=u,t.background=y}_textureToCubeUV(t,e){const i=this._renderer,n=t.mapping===es||t.mapping===is;n?(this._cubemapMaterial===null&&(this._cubemapMaterial=kh()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Gh());const s=n?this._cubemapMaterial:this._equirectMaterial,a=new mi(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=t;const l=this._cubeSize;ha(e,0,0,3*l,2*l),i.setRenderTarget(e),i.render(a,xA)}_applyPMREM(t){const e=this._renderer,i=e.autoClear;e.autoClear=!1;const n=this._lodPlanes.length;for(let s=1;s<n;s++){const a=Math.sqrt(this._sigmas[s]*this._sigmas[s]-this._sigmas[s-1]*this._sigmas[s-1]),o=Oh[(n-s-1)%Oh.length];this._blur(t,s-1,s,a,o)}e.autoClear=i}_blur(t,e,i,n,s){const a=this._pingPongRenderTarget;this._halfBlur(t,a,e,i,n,"latitudinal",s),this._halfBlur(a,t,i,i,n,"longitudinal",s)}_halfBlur(t,e,i,n,s,a,o){const l=this._renderer,A=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const h=3,c=new mi(this._lodPlanes[n],A),u=A.uniforms,d=this._sizeLods[i]-1,p=isFinite(s)?Math.PI/(2*d):2*Math.PI/(2*Nn-1),m=s/p,g=isFinite(s)?1+Math.floor(h*m):Nn;g>Nn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${g} samples when the maximum is set to ${Nn}`);const f=[];let y=0;for(let R=0;R<Nn;++R){const P=R/m,E=Math.exp(-P*P/2);f.push(E),R===0?y+=E:R<g&&(y+=2*E)}for(let R=0;R<f.length;R++)f[R]=f[R]/y;u.envMap.value=t.texture,u.samples.value=g,u.weights.value=f,u.latitudinal.value=a==="latitudinal",o&&(u.poleAxis.value=o);const{_lodMax:S}=this;u.dTheta.value=p,u.mipInt.value=S-i;const v=this._sizeLods[n],w=3*v*(n>S-ys?n-S+ys:0),T=4*(this._cubeSize-v);ha(e,w,T,3*v,2*v),l.setRenderTarget(e),l.render(c,xA)}}function Qp(r){const t=[],e=[],i=[];let n=r;const s=r-ys+1+Fh.length;for(let a=0;a<s;a++){const o=Math.pow(2,n);e.push(o);let l=1/o;a>r-ys?l=Fh[a-r+ys-1]:a===0&&(l=0),i.push(l);const A=1/(o-2),h=-A,c=1+A,u=[h,h,c,h,c,c,h,h,c,c,h,c],d=6,p=6,m=3,g=2,f=1,y=new Float32Array(m*p*d),S=new Float32Array(g*p*d),v=new Float32Array(f*p*d);for(let T=0;T<d;T++){const R=T%3*2/3-1,P=T>2?0:-1,E=[R,P,0,R+2/3,P,0,R+2/3,P+1,0,R,P,0,R+2/3,P+1,0,R,P+1,0];y.set(E,m*p*T),S.set(u,g*p*T);const x=[T,T,T,T,T,T];v.set(x,f*p*T)}const w=new Rn;w.setAttribute("position",new Ei(y,m)),w.setAttribute("uv",new Ei(S,g)),w.setAttribute("faceIndex",new Ei(v,f)),t.push(w),n>ys&&n--}return{lodPlanes:t,sizeLods:e,sigmas:i}}function zh(r,t,e){const i=new yn(r,t,e);return i.texture.mapping=Br,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function ha(r,t,e,i,n){r.viewport.set(t,e,i,n),r.scissor.set(t,e,i,n)}function qp(r,t,e){const i=new Float32Array(Nn),n=new F(0,1,0);return new ln({name:"SphericalGaussianBlur",defines:{n:Nn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n}},vertexShader:bA(),fragmentShader:`
3703
3703
 
3704
3704
  precision mediump float;
3705
3705
  precision mediump int;
@@ -3759,7 +3759,7 @@ void main() {
3759
3759
  }
3760
3760
 
3761
3761
  }
3762
- `,blending:$i,depthTest:!1,depthWrite:!1})}function Fh(){return new An({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:xA(),fragmentShader:`
3762
+ `,blending:tn,depthTest:!1,depthWrite:!1})}function Gh(){return new ln({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:bA(),fragmentShader:`
3763
3763
 
3764
3764
  precision mediump float;
3765
3765
  precision mediump int;
@@ -3778,7 +3778,7 @@ void main() {
3778
3778
  gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
3779
3779
 
3780
3780
  }
3781
- `,blending:$i,depthTest:!1,depthWrite:!1})}function Bh(){return new An({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:xA(),fragmentShader:`
3781
+ `,blending:tn,depthTest:!1,depthWrite:!1})}function kh(){return new ln({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:bA(),fragmentShader:`
3782
3782
 
3783
3783
  precision mediump float;
3784
3784
  precision mediump int;
@@ -3794,7 +3794,7 @@ void main() {
3794
3794
  gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
3795
3795
 
3796
3796
  }
3797
- `,blending:$i,depthTest:!1,depthWrite:!1})}function xA(){return`
3797
+ `,blending:tn,depthTest:!1,depthWrite:!1})}function bA(){return`
3798
3798
 
3799
3799
  precision mediump float;
3800
3800
  precision mediump int;
@@ -3849,17 +3849,17 @@ void main() {
3849
3849
  gl_Position = vec4( position, 1.0 );
3850
3850
 
3851
3851
  }
3852
- `}function Zp(r){let t=new WeakMap,e=null;function i(o){if(o&&o.isTexture){const l=o.mapping,A=l===$a||l===to,h=l===ts||l===es;if(A||h){let c=t.get(o);const u=c!==void 0?c.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==u)return e===null&&(e=new Lh(r)),c=A?e.fromEquirectangular(o,c):e.fromCubemap(o,c),c.texture.pmremVersion=o.pmremVersion,t.set(o,c),c.texture;if(c!==void 0)return c.texture;{const d=o.image;return A&&d&&d.height>0||h&&d&&n(d)?(e===null&&(e=new Lh(r)),c=A?e.fromEquirectangular(o):e.fromCubemap(o),c.texture.pmremVersion=o.pmremVersion,t.set(o,c),o.addEventListener("dispose",s),c.texture):null}}}return o}function n(o){let l=0;const A=6;for(let h=0;h<A;h++)o[h]!==void 0&&l++;return l===A}function s(o){const l=o.target;l.removeEventListener("dispose",s);const A=t.get(l);A!==void 0&&(t.delete(l),A.dispose())}function a(){t=new WeakMap,e!==null&&(e.dispose(),e=null)}return{get:i,dispose:a}}function Jp(r){const t={};function e(i){if(t[i]!==void 0)return t[i];let n;switch(i){case"WEBGL_depth_texture":n=r.getExtension("WEBGL_depth_texture")||r.getExtension("MOZ_WEBGL_depth_texture")||r.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=r.getExtension("EXT_texture_filter_anisotropic")||r.getExtension("MOZ_EXT_texture_filter_anisotropic")||r.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=r.getExtension("WEBGL_compressed_texture_s3tc")||r.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=r.getExtension("WEBGL_compressed_texture_pvrtc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=r.getExtension(i)}return t[i]=n,n}return{has:function(i){return e(i)!==null},init:function(){e("EXT_color_buffer_float"),e("WEBGL_clip_cull_distance"),e("OES_texture_float_linear"),e("EXT_color_buffer_half_float"),e("WEBGL_multisampled_render_to_texture"),e("WEBGL_render_shared_exponent")},get:function(i){const n=e(i);return n===null&&as("THREE.WebGLRenderer: "+i+" extension not supported."),n}}}function jp(r,t,e,i){const n={},s=new WeakMap;function a(c){const u=c.target;u.index!==null&&t.remove(u.index);for(const p in u.attributes)t.remove(u.attributes[p]);u.removeEventListener("dispose",a),delete n[u.id];const d=s.get(u);d&&(t.remove(d),s.delete(u)),i.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,e.memory.geometries--}function o(c,u){return n[u.id]===!0||(u.addEventListener("dispose",a),n[u.id]=!0,e.memory.geometries++),u}function l(c){const u=c.attributes;for(const d in u)t.update(u[d],r.ARRAY_BUFFER)}function A(c){const u=[],d=c.index,p=c.attributes.position;let m=0;if(d!==null){const y=d.array;m=d.version;for(let S=0,v=y.length;S<v;S+=3){const w=y[S+0],T=y[S+1],R=y[S+2];u.push(w,T,T,R,R,w)}}else if(p!==void 0){const y=p.array;m=p.version;for(let S=0,v=y.length/3-1;S<v;S+=3){const w=S+0,T=S+1,R=S+2;u.push(w,T,T,R,R,w)}}else return;const g=new(Zl(u)?lh:Ah)(u,1);g.version=m;const f=s.get(c);f&&t.remove(f),s.set(c,g)}function h(c){const u=s.get(c);if(u){const d=c.index;d!==null&&u.version<d.version&&A(c)}else A(c);return s.get(c)}return{get:o,update:l,getWireframeAttribute:h}}function Qp(r,t,e){let i;function n(u){i=u}let s,a;function o(u){s=u.type,a=u.bytesPerElement}function l(u,d){r.drawElements(i,d,s,u*a),e.update(d,i,1)}function A(u,d,p){p!==0&&(r.drawElementsInstanced(i,d,s,u*a,p),e.update(d,i,p))}function h(u,d,p){if(p===0)return;t.get("WEBGL_multi_draw").multiDrawElementsWEBGL(i,d,0,s,u,0,p);let g=0;for(let f=0;f<p;f++)g+=d[f];e.update(g,i,1)}function c(u,d,p,m){if(p===0)return;const g=t.get("WEBGL_multi_draw");if(g===null)for(let f=0;f<u.length;f++)A(u[f]/a,d[f],m[f]);else{g.multiDrawElementsInstancedWEBGL(i,d,0,s,u,0,m,0,p);let f=0;for(let y=0;y<p;y++)f+=d[y]*m[y];e.update(f,i,1)}}this.setMode=n,this.setIndex=o,this.render=l,this.renderInstances=A,this.renderMultiDraw=h,this.renderMultiDrawInstances=c}function qp(r){const t={geometries:0,textures:0},e={frame:0,calls:0,triangles:0,points:0,lines:0};function i(s,a,o){switch(e.calls++,a){case r.TRIANGLES:e.triangles+=o*(s/3);break;case r.LINES:e.lines+=o*(s/2);break;case r.LINE_STRIP:e.lines+=o*(s-1);break;case r.LINE_LOOP:e.lines+=o*s;break;case r.POINTS:e.points+=o*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function n(){e.calls=0,e.triangles=0,e.points=0,e.lines=0}return{memory:t,render:e,programs:null,autoReset:!0,reset:n,update:i}}function Kp(r,t,e){const i=new WeakMap,n=new he;function s(a,o,l){const A=a.morphTargetInfluences,h=o.morphAttributes.position||o.morphAttributes.normal||o.morphAttributes.color,c=h!==void 0?h.length:0;let u=i.get(o);if(u===void 0||u.count!==c){let E=function(){R.dispose(),i.delete(o),o.removeEventListener("dispose",E)};u!==void 0&&u.texture.dispose();const d=o.morphAttributes.position!==void 0,p=o.morphAttributes.normal!==void 0,m=o.morphAttributes.color!==void 0,g=o.morphAttributes.position||[],f=o.morphAttributes.normal||[],y=o.morphAttributes.color||[];let S=0;d===!0&&(S=1),p===!0&&(S=2),m===!0&&(S=3);let v=o.attributes.position.count*S,w=1;v>t.maxTextureSize&&(w=Math.ceil(v/t.maxTextureSize),v=t.maxTextureSize);const T=new Float32Array(v*w*4*c),R=new ql(T,v,w,c);R.type=Ni,R.needsUpdate=!0;const P=S*4;for(let x=0;x<c;x++){const b=g[x],z=f[x],B=y[x],U=v*w*4*x;for(let W=0;W<b.count;W++){const Y=W*P;d===!0&&(n.fromBufferAttribute(b,W),T[U+Y+0]=n.x,T[U+Y+1]=n.y,T[U+Y+2]=n.z,T[U+Y+3]=0),p===!0&&(n.fromBufferAttribute(z,W),T[U+Y+4]=n.x,T[U+Y+5]=n.y,T[U+Y+6]=n.z,T[U+Y+7]=0),m===!0&&(n.fromBufferAttribute(B,W),T[U+Y+8]=n.x,T[U+Y+9]=n.y,T[U+Y+10]=n.z,T[U+Y+11]=B.itemSize===4?n.w:1)}}u={count:c,texture:R,size:new Zt(v,w)},i.set(o,u),o.addEventListener("dispose",E)}if(a.isInstancedMesh===!0&&a.morphTexture!==null)l.getUniforms().setValue(r,"morphTexture",a.morphTexture,e);else{let d=0;for(let m=0;m<A.length;m++)d+=A[m];const p=o.morphTargetsRelative?1:1-d;l.getUniforms().setValue(r,"morphTargetBaseInfluence",p),l.getUniforms().setValue(r,"morphTargetInfluences",A)}l.getUniforms().setValue(r,"morphTargetsTexture",u.texture,e),l.getUniforms().setValue(r,"morphTargetsTextureSize",u.size)}return{update:s}}function $p(r,t,e,i){let n=new WeakMap;function s(l){const A=i.render.frame,h=l.geometry,c=t.get(l,h);if(n.get(c)!==A&&(t.update(c),n.set(c,A)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),n.get(l)!==A&&(e.update(l.instanceMatrix,r.ARRAY_BUFFER),l.instanceColor!==null&&e.update(l.instanceColor,r.ARRAY_BUFFER),n.set(l,A))),l.isSkinnedMesh){const u=l.skeleton;n.get(u)!==A&&(u.update(),n.set(u,A))}return c}function a(){n=new WeakMap}function o(l){const A=l.target;A.removeEventListener("dispose",o),e.remove(A.instanceMatrix),A.instanceColor!==null&&e.remove(A.instanceColor)}return{update:s,dispose:a}}const Oh=new we,Uh=new vh(1,1),zh=new ql,Gh=new ef,kh=new mh,Hh=[],Vh=[],Wh=new Float32Array(16),Yh=new Float32Array(9),Xh=new Float32Array(4);function bs(r,t,e){const i=r[0];if(i<=0||i>0)return r;const n=t*e;let s=Hh[n];if(s===void 0&&(s=new Float32Array(n),Hh[n]=s),t!==0){i.toArray(s,0);for(let a=1,o=0;a!==t;++a)o+=e,r[a].toArray(s,o)}return s}function Ie(r,t){if(r.length!==t.length)return!1;for(let e=0,i=r.length;e<i;e++)if(r[e]!==t[e])return!1;return!0}function Ce(r,t){for(let e=0,i=t.length;e<i;e++)r[e]=t[e]}function aa(r,t){let e=Vh[t];e===void 0&&(e=new Int32Array(t),Vh[t]=e);for(let i=0;i!==t;++i)e[i]=r.allocateTextureUnit();return e}function tm(r,t){const e=this.cache;e[0]!==t&&(r.uniform1f(this.addr,t),e[0]=t)}function em(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2f(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Ie(e,t))return;r.uniform2fv(this.addr,t),Ce(e,t)}}function im(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3f(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else if(t.r!==void 0)(e[0]!==t.r||e[1]!==t.g||e[2]!==t.b)&&(r.uniform3f(this.addr,t.r,t.g,t.b),e[0]=t.r,e[1]=t.g,e[2]=t.b);else{if(Ie(e,t))return;r.uniform3fv(this.addr,t),Ce(e,t)}}function nm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4f(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Ie(e,t))return;r.uniform4fv(this.addr,t),Ce(e,t)}}function sm(r,t){const e=this.cache,i=t.elements;if(i===void 0){if(Ie(e,t))return;r.uniformMatrix2fv(this.addr,!1,t),Ce(e,t)}else{if(Ie(e,i))return;Xh.set(i),r.uniformMatrix2fv(this.addr,!1,Xh),Ce(e,i)}}function rm(r,t){const e=this.cache,i=t.elements;if(i===void 0){if(Ie(e,t))return;r.uniformMatrix3fv(this.addr,!1,t),Ce(e,t)}else{if(Ie(e,i))return;Yh.set(i),r.uniformMatrix3fv(this.addr,!1,Yh),Ce(e,i)}}function am(r,t){const e=this.cache,i=t.elements;if(i===void 0){if(Ie(e,t))return;r.uniformMatrix4fv(this.addr,!1,t),Ce(e,t)}else{if(Ie(e,i))return;Wh.set(i),r.uniformMatrix4fv(this.addr,!1,Wh),Ce(e,i)}}function om(r,t){const e=this.cache;e[0]!==t&&(r.uniform1i(this.addr,t),e[0]=t)}function Am(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2i(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Ie(e,t))return;r.uniform2iv(this.addr,t),Ce(e,t)}}function lm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3i(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Ie(e,t))return;r.uniform3iv(this.addr,t),Ce(e,t)}}function hm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4i(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Ie(e,t))return;r.uniform4iv(this.addr,t),Ce(e,t)}}function cm(r,t){const e=this.cache;e[0]!==t&&(r.uniform1ui(this.addr,t),e[0]=t)}function um(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2ui(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Ie(e,t))return;r.uniform2uiv(this.addr,t),Ce(e,t)}}function dm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3ui(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Ie(e,t))return;r.uniform3uiv(this.addr,t),Ce(e,t)}}function fm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4ui(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Ie(e,t))return;r.uniform4uiv(this.addr,t),Ce(e,t)}}function gm(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n);let s;this.type===r.SAMPLER_2D_SHADOW?(Uh.compareFunction=Vl,s=Uh):s=Oh,e.setTexture2D(t||s,n)}function pm(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n),e.setTexture3D(t||Gh,n)}function mm(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n),e.setTextureCube(t||kh,n)}function Im(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n),e.setTexture2DArray(t||zh,n)}function Cm(r){switch(r){case 5126:return tm;case 35664:return em;case 35665:return im;case 35666:return nm;case 35674:return sm;case 35675:return rm;case 35676:return am;case 5124:case 35670:return om;case 35667:case 35671:return Am;case 35668:case 35672:return lm;case 35669:case 35673:return hm;case 5125:return cm;case 36294:return um;case 36295:return dm;case 36296:return fm;case 35678:case 36198:case 36298:case 36306:case 35682:return gm;case 35679:case 36299:case 36307:return pm;case 35680:case 36300:case 36308:case 36293:return mm;case 36289:case 36303:case 36311:case 36292:return Im}}function vm(r,t){r.uniform1fv(this.addr,t)}function xm(r,t){const e=bs(t,this.size,2);r.uniform2fv(this.addr,e)}function Em(r,t){const e=bs(t,this.size,3);r.uniform3fv(this.addr,e)}function Sm(r,t){const e=bs(t,this.size,4);r.uniform4fv(this.addr,e)}function Mm(r,t){const e=bs(t,this.size,4);r.uniformMatrix2fv(this.addr,!1,e)}function ym(r,t){const e=bs(t,this.size,9);r.uniformMatrix3fv(this.addr,!1,e)}function bm(r,t){const e=bs(t,this.size,16);r.uniformMatrix4fv(this.addr,!1,e)}function Tm(r,t){r.uniform1iv(this.addr,t)}function wm(r,t){r.uniform2iv(this.addr,t)}function Rm(r,t){r.uniform3iv(this.addr,t)}function _m(r,t){r.uniform4iv(this.addr,t)}function Pm(r,t){r.uniform1uiv(this.addr,t)}function Dm(r,t){r.uniform2uiv(this.addr,t)}function Lm(r,t){r.uniform3uiv(this.addr,t)}function Nm(r,t){r.uniform4uiv(this.addr,t)}function Fm(r,t,e){const i=this.cache,n=t.length,s=aa(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTexture2D(t[a]||Oh,s[a])}function Bm(r,t,e){const i=this.cache,n=t.length,s=aa(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTexture3D(t[a]||Gh,s[a])}function Om(r,t,e){const i=this.cache,n=t.length,s=aa(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTextureCube(t[a]||kh,s[a])}function Um(r,t,e){const i=this.cache,n=t.length,s=aa(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTexture2DArray(t[a]||zh,s[a])}function zm(r){switch(r){case 5126:return vm;case 35664:return xm;case 35665:return Em;case 35666:return Sm;case 35674:return Mm;case 35675:return ym;case 35676:return bm;case 5124:case 35670:return Tm;case 35667:case 35671:return wm;case 35668:case 35672:return Rm;case 35669:case 35673:return _m;case 5125:return Pm;case 36294:return Dm;case 36295:return Lm;case 36296:return Nm;case 35678:case 36198:case 36298:case 36306:case 35682:return Fm;case 35679:case 36299:case 36307:return Bm;case 35680:case 36300:case 36308:case 36293:return Om;case 36289:case 36303:case 36311:case 36292:return Um}}class Gm{constructor(t,e,i){this.id=t,this.addr=i,this.cache=[],this.type=e.type,this.setValue=Cm(e.type)}}class km{constructor(t,e,i){this.id=t,this.addr=i,this.cache=[],this.type=e.type,this.size=e.size,this.setValue=zm(e.type)}}class Hm{constructor(t){this.id=t,this.seq=[],this.map={}}setValue(t,e,i){const n=this.seq;for(let s=0,a=n.length;s!==a;++s){const o=n[s];o.setValue(t,e[o.id],i)}}}const EA=/(\w+)(\])?(\[|\.)?/g;function Zh(r,t){r.seq.push(t),r.map[t.id]=t}function Vm(r,t,e){const i=r.name,n=i.length;for(EA.lastIndex=0;;){const s=EA.exec(i),a=EA.lastIndex;let o=s[1];const l=s[2]==="]",A=s[3];if(l&&(o=o|0),A===void 0||A==="["&&a+2===n){Zh(e,A===void 0?new Gm(o,r,t):new km(o,r,t));break}else{let c=e.map[o];c===void 0&&(c=new Hm(o),Zh(e,c)),e=c}}}class oa{constructor(t,e){this.seq=[],this.map={};const i=t.getProgramParameter(e,t.ACTIVE_UNIFORMS);for(let n=0;n<i;++n){const s=t.getActiveUniform(e,n),a=t.getUniformLocation(e,s.name);Vm(s,a,this)}}setValue(t,e,i,n){const s=this.map[e];s!==void 0&&s.setValue(t,i,n)}setOptional(t,e,i){const n=e[i];n!==void 0&&this.setValue(t,i,n)}static upload(t,e,i,n){for(let s=0,a=e.length;s!==a;++s){const o=e[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(t,l.value,n)}}static seqWithValue(t,e){const i=[];for(let n=0,s=t.length;n!==s;++n){const a=t[n];a.id in e&&i.push(a)}return i}}function Jh(r,t,e){const i=r.createShader(t);return r.shaderSource(i,e),r.compileShader(i),i}const Wm=37297;let Ym=0;function Xm(r,t){const e=r.split(`
3852
+ `}function Kp(r){let t=new WeakMap,e=null;function i(o){if(o&&o.isTexture){const l=o.mapping,A=l===so||l===ro,h=l===es||l===is;if(A||h){let c=t.get(o);const u=c!==void 0?c.texture.pmremVersion:0;if(o.isRenderTargetTexture&&o.pmremVersion!==u)return e===null&&(e=new Uh(r)),c=A?e.fromEquirectangular(o,c):e.fromCubemap(o,c),c.texture.pmremVersion=o.pmremVersion,t.set(o,c),c.texture;if(c!==void 0)return c.texture;{const d=o.image;return A&&d&&d.height>0||h&&d&&n(d)?(e===null&&(e=new Uh(r)),c=A?e.fromEquirectangular(o):e.fromCubemap(o),c.texture.pmremVersion=o.pmremVersion,t.set(o,c),o.addEventListener("dispose",s),c.texture):null}}}return o}function n(o){let l=0;const A=6;for(let h=0;h<A;h++)o[h]!==void 0&&l++;return l===A}function s(o){const l=o.target;l.removeEventListener("dispose",s);const A=t.get(l);A!==void 0&&(t.delete(l),A.dispose())}function a(){t=new WeakMap,e!==null&&(e.dispose(),e=null)}return{get:i,dispose:a}}function $p(r){const t={};function e(i){if(t[i]!==void 0)return t[i];let n;switch(i){case"WEBGL_depth_texture":n=r.getExtension("WEBGL_depth_texture")||r.getExtension("MOZ_WEBGL_depth_texture")||r.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":n=r.getExtension("EXT_texture_filter_anisotropic")||r.getExtension("MOZ_EXT_texture_filter_anisotropic")||r.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":n=r.getExtension("WEBGL_compressed_texture_s3tc")||r.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":n=r.getExtension("WEBGL_compressed_texture_pvrtc")||r.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:n=r.getExtension(i)}return t[i]=n,n}return{has:function(i){return e(i)!==null},init:function(){e("EXT_color_buffer_float"),e("WEBGL_clip_cull_distance"),e("OES_texture_float_linear"),e("EXT_color_buffer_half_float"),e("WEBGL_multisampled_render_to_texture"),e("WEBGL_render_shared_exponent")},get:function(i){const n=e(i);return n===null&&os("THREE.WebGLRenderer: "+i+" extension not supported."),n}}}function tm(r,t,e,i){const n={},s=new WeakMap;function a(c){const u=c.target;u.index!==null&&t.remove(u.index);for(const p in u.attributes)t.remove(u.attributes[p]);u.removeEventListener("dispose",a),delete n[u.id];const d=s.get(u);d&&(t.remove(d),s.delete(u)),i.releaseStatesOfGeometry(u),u.isInstancedBufferGeometry===!0&&delete u._maxInstanceCount,e.memory.geometries--}function o(c,u){return n[u.id]===!0||(u.addEventListener("dispose",a),n[u.id]=!0,e.memory.geometries++),u}function l(c){const u=c.attributes;for(const d in u)t.update(u[d],r.ARRAY_BUFFER)}function A(c){const u=[],d=c.index,p=c.attributes.position;let m=0;if(d!==null){const y=d.array;m=d.version;for(let S=0,v=y.length;S<v;S+=3){const w=y[S+0],T=y[S+1],R=y[S+2];u.push(w,T,T,R,R,w)}}else if(p!==void 0){const y=p.array;m=p.version;for(let S=0,v=y.length/3-1;S<v;S+=3){const w=S+0,T=S+1,R=S+2;u.push(w,T,T,R,R,w)}}else return;const g=new(Kl(u)?fh:dh)(u,1);g.version=m;const f=s.get(c);f&&t.remove(f),s.set(c,g)}function h(c){const u=s.get(c);if(u){const d=c.index;d!==null&&u.version<d.version&&A(c)}else A(c);return s.get(c)}return{get:o,update:l,getWireframeAttribute:h}}function em(r,t,e){let i;function n(u){i=u}let s,a;function o(u){s=u.type,a=u.bytesPerElement}function l(u,d){r.drawElements(i,d,s,u*a),e.update(d,i,1)}function A(u,d,p){p!==0&&(r.drawElementsInstanced(i,d,s,u*a,p),e.update(d,i,p))}function h(u,d,p){if(p===0)return;t.get("WEBGL_multi_draw").multiDrawElementsWEBGL(i,d,0,s,u,0,p);let g=0;for(let f=0;f<p;f++)g+=d[f];e.update(g,i,1)}function c(u,d,p,m){if(p===0)return;const g=t.get("WEBGL_multi_draw");if(g===null)for(let f=0;f<u.length;f++)A(u[f]/a,d[f],m[f]);else{g.multiDrawElementsInstancedWEBGL(i,d,0,s,u,0,m,0,p);let f=0;for(let y=0;y<p;y++)f+=d[y]*m[y];e.update(f,i,1)}}this.setMode=n,this.setIndex=o,this.render=l,this.renderInstances=A,this.renderMultiDraw=h,this.renderMultiDrawInstances=c}function im(r){const t={geometries:0,textures:0},e={frame:0,calls:0,triangles:0,points:0,lines:0};function i(s,a,o){switch(e.calls++,a){case r.TRIANGLES:e.triangles+=o*(s/3);break;case r.LINES:e.lines+=o*(s/2);break;case r.LINE_STRIP:e.lines+=o*(s-1);break;case r.LINE_LOOP:e.lines+=o*s;break;case r.POINTS:e.points+=o*s;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",a);break}}function n(){e.calls=0,e.triangles=0,e.points=0,e.lines=0}return{memory:t,render:e,programs:null,autoReset:!0,reset:n,update:i}}function nm(r,t,e){const i=new WeakMap,n=new he;function s(a,o,l){const A=a.morphTargetInfluences,h=o.morphAttributes.position||o.morphAttributes.normal||o.morphAttributes.color,c=h!==void 0?h.length:0;let u=i.get(o);if(u===void 0||u.count!==c){let E=function(){R.dispose(),i.delete(o),o.removeEventListener("dispose",E)};u!==void 0&&u.texture.dispose();const d=o.morphAttributes.position!==void 0,p=o.morphAttributes.normal!==void 0,m=o.morphAttributes.color!==void 0,g=o.morphAttributes.position||[],f=o.morphAttributes.normal||[],y=o.morphAttributes.color||[];let S=0;d===!0&&(S=1),p===!0&&(S=2),m===!0&&(S=3);let v=o.attributes.position.count*S,w=1;v>t.maxTextureSize&&(w=Math.ceil(v/t.maxTextureSize),v=t.maxTextureSize);const T=new Float32Array(v*w*4*c),R=new ih(T,v,w,c);R.type=Fi,R.needsUpdate=!0;const P=S*4;for(let x=0;x<c;x++){const b=g[x],z=f[x],B=y[x],U=v*w*4*x;for(let W=0;W<b.count;W++){const Y=W*P;d===!0&&(n.fromBufferAttribute(b,W),T[U+Y+0]=n.x,T[U+Y+1]=n.y,T[U+Y+2]=n.z,T[U+Y+3]=0),p===!0&&(n.fromBufferAttribute(z,W),T[U+Y+4]=n.x,T[U+Y+5]=n.y,T[U+Y+6]=n.z,T[U+Y+7]=0),m===!0&&(n.fromBufferAttribute(B,W),T[U+Y+8]=n.x,T[U+Y+9]=n.y,T[U+Y+10]=n.z,T[U+Y+11]=B.itemSize===4?n.w:1)}}u={count:c,texture:R,size:new Zt(v,w)},i.set(o,u),o.addEventListener("dispose",E)}if(a.isInstancedMesh===!0&&a.morphTexture!==null)l.getUniforms().setValue(r,"morphTexture",a.morphTexture,e);else{let d=0;for(let m=0;m<A.length;m++)d+=A[m];const p=o.morphTargetsRelative?1:1-d;l.getUniforms().setValue(r,"morphTargetBaseInfluence",p),l.getUniforms().setValue(r,"morphTargetInfluences",A)}l.getUniforms().setValue(r,"morphTargetsTexture",u.texture,e),l.getUniforms().setValue(r,"morphTargetsTextureSize",u.size)}return{update:s}}function sm(r,t,e,i){let n=new WeakMap;function s(l){const A=i.render.frame,h=l.geometry,c=t.get(l,h);if(n.get(c)!==A&&(t.update(c),n.set(c,A)),l.isInstancedMesh&&(l.hasEventListener("dispose",o)===!1&&l.addEventListener("dispose",o),n.get(l)!==A&&(e.update(l.instanceMatrix,r.ARRAY_BUFFER),l.instanceColor!==null&&e.update(l.instanceColor,r.ARRAY_BUFFER),n.set(l,A))),l.isSkinnedMesh){const u=l.skeleton;n.get(u)!==A&&(u.update(),n.set(u,A))}return c}function a(){n=new WeakMap}function o(l){const A=l.target;A.removeEventListener("dispose",o),e.remove(A.instanceMatrix),A.instanceColor!==null&&e.remove(A.instanceColor)}return{update:s,dispose:a}}const Hh=new we,Vh=new yh(1,1),Wh=new ih,Yh=new of,Xh=new Eh,Zh=[],Jh=[],jh=new Float32Array(16),Qh=new Float32Array(9),qh=new Float32Array(4);function Ts(r,t,e){const i=r[0];if(i<=0||i>0)return r;const n=t*e;let s=Zh[n];if(s===void 0&&(s=new Float32Array(n),Zh[n]=s),t!==0){i.toArray(s,0);for(let a=1,o=0;a!==t;++a)o+=e,r[a].toArray(s,o)}return s}function Ie(r,t){if(r.length!==t.length)return!1;for(let e=0,i=r.length;e<i;e++)if(r[e]!==t[e])return!1;return!0}function Ce(r,t){for(let e=0,i=t.length;e<i;e++)r[e]=t[e]}function ca(r,t){let e=Jh[t];e===void 0&&(e=new Int32Array(t),Jh[t]=e);for(let i=0;i!==t;++i)e[i]=r.allocateTextureUnit();return e}function rm(r,t){const e=this.cache;e[0]!==t&&(r.uniform1f(this.addr,t),e[0]=t)}function am(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2f(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Ie(e,t))return;r.uniform2fv(this.addr,t),Ce(e,t)}}function om(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3f(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else if(t.r!==void 0)(e[0]!==t.r||e[1]!==t.g||e[2]!==t.b)&&(r.uniform3f(this.addr,t.r,t.g,t.b),e[0]=t.r,e[1]=t.g,e[2]=t.b);else{if(Ie(e,t))return;r.uniform3fv(this.addr,t),Ce(e,t)}}function Am(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4f(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Ie(e,t))return;r.uniform4fv(this.addr,t),Ce(e,t)}}function lm(r,t){const e=this.cache,i=t.elements;if(i===void 0){if(Ie(e,t))return;r.uniformMatrix2fv(this.addr,!1,t),Ce(e,t)}else{if(Ie(e,i))return;qh.set(i),r.uniformMatrix2fv(this.addr,!1,qh),Ce(e,i)}}function hm(r,t){const e=this.cache,i=t.elements;if(i===void 0){if(Ie(e,t))return;r.uniformMatrix3fv(this.addr,!1,t),Ce(e,t)}else{if(Ie(e,i))return;Qh.set(i),r.uniformMatrix3fv(this.addr,!1,Qh),Ce(e,i)}}function cm(r,t){const e=this.cache,i=t.elements;if(i===void 0){if(Ie(e,t))return;r.uniformMatrix4fv(this.addr,!1,t),Ce(e,t)}else{if(Ie(e,i))return;jh.set(i),r.uniformMatrix4fv(this.addr,!1,jh),Ce(e,i)}}function um(r,t){const e=this.cache;e[0]!==t&&(r.uniform1i(this.addr,t),e[0]=t)}function dm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2i(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Ie(e,t))return;r.uniform2iv(this.addr,t),Ce(e,t)}}function fm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3i(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Ie(e,t))return;r.uniform3iv(this.addr,t),Ce(e,t)}}function gm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4i(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Ie(e,t))return;r.uniform4iv(this.addr,t),Ce(e,t)}}function pm(r,t){const e=this.cache;e[0]!==t&&(r.uniform1ui(this.addr,t),e[0]=t)}function mm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y)&&(r.uniform2ui(this.addr,t.x,t.y),e[0]=t.x,e[1]=t.y);else{if(Ie(e,t))return;r.uniform2uiv(this.addr,t),Ce(e,t)}}function Im(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z)&&(r.uniform3ui(this.addr,t.x,t.y,t.z),e[0]=t.x,e[1]=t.y,e[2]=t.z);else{if(Ie(e,t))return;r.uniform3uiv(this.addr,t),Ce(e,t)}}function Cm(r,t){const e=this.cache;if(t.x!==void 0)(e[0]!==t.x||e[1]!==t.y||e[2]!==t.z||e[3]!==t.w)&&(r.uniform4ui(this.addr,t.x,t.y,t.z,t.w),e[0]=t.x,e[1]=t.y,e[2]=t.z,e[3]=t.w);else{if(Ie(e,t))return;r.uniform4uiv(this.addr,t),Ce(e,t)}}function vm(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n);let s;this.type===r.SAMPLER_2D_SHADOW?(Vh.compareFunction=Jl,s=Vh):s=Hh,e.setTexture2D(t||s,n)}function xm(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n),e.setTexture3D(t||Yh,n)}function Em(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n),e.setTextureCube(t||Xh,n)}function Sm(r,t,e){const i=this.cache,n=e.allocateTextureUnit();i[0]!==n&&(r.uniform1i(this.addr,n),i[0]=n),e.setTexture2DArray(t||Wh,n)}function Mm(r){switch(r){case 5126:return rm;case 35664:return am;case 35665:return om;case 35666:return Am;case 35674:return lm;case 35675:return hm;case 35676:return cm;case 5124:case 35670:return um;case 35667:case 35671:return dm;case 35668:case 35672:return fm;case 35669:case 35673:return gm;case 5125:return pm;case 36294:return mm;case 36295:return Im;case 36296:return Cm;case 35678:case 36198:case 36298:case 36306:case 35682:return vm;case 35679:case 36299:case 36307:return xm;case 35680:case 36300:case 36308:case 36293:return Em;case 36289:case 36303:case 36311:case 36292:return Sm}}function ym(r,t){r.uniform1fv(this.addr,t)}function bm(r,t){const e=Ts(t,this.size,2);r.uniform2fv(this.addr,e)}function Tm(r,t){const e=Ts(t,this.size,3);r.uniform3fv(this.addr,e)}function wm(r,t){const e=Ts(t,this.size,4);r.uniform4fv(this.addr,e)}function Rm(r,t){const e=Ts(t,this.size,4);r.uniformMatrix2fv(this.addr,!1,e)}function _m(r,t){const e=Ts(t,this.size,9);r.uniformMatrix3fv(this.addr,!1,e)}function Pm(r,t){const e=Ts(t,this.size,16);r.uniformMatrix4fv(this.addr,!1,e)}function Lm(r,t){r.uniform1iv(this.addr,t)}function Dm(r,t){r.uniform2iv(this.addr,t)}function Nm(r,t){r.uniform3iv(this.addr,t)}function Fm(r,t){r.uniform4iv(this.addr,t)}function Bm(r,t){r.uniform1uiv(this.addr,t)}function Om(r,t){r.uniform2uiv(this.addr,t)}function Um(r,t){r.uniform3uiv(this.addr,t)}function zm(r,t){r.uniform4uiv(this.addr,t)}function Gm(r,t,e){const i=this.cache,n=t.length,s=ca(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTexture2D(t[a]||Hh,s[a])}function km(r,t,e){const i=this.cache,n=t.length,s=ca(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTexture3D(t[a]||Yh,s[a])}function Hm(r,t,e){const i=this.cache,n=t.length,s=ca(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTextureCube(t[a]||Xh,s[a])}function Vm(r,t,e){const i=this.cache,n=t.length,s=ca(e,n);Ie(i,s)||(r.uniform1iv(this.addr,s),Ce(i,s));for(let a=0;a!==n;++a)e.setTexture2DArray(t[a]||Wh,s[a])}function Wm(r){switch(r){case 5126:return ym;case 35664:return bm;case 35665:return Tm;case 35666:return wm;case 35674:return Rm;case 35675:return _m;case 35676:return Pm;case 5124:case 35670:return Lm;case 35667:case 35671:return Dm;case 35668:case 35672:return Nm;case 35669:case 35673:return Fm;case 5125:return Bm;case 36294:return Om;case 36295:return Um;case 36296:return zm;case 35678:case 36198:case 36298:case 36306:case 35682:return Gm;case 35679:case 36299:case 36307:return km;case 35680:case 36300:case 36308:case 36293:return Hm;case 36289:case 36303:case 36311:case 36292:return Vm}}class Ym{constructor(t,e,i){this.id=t,this.addr=i,this.cache=[],this.type=e.type,this.setValue=Mm(e.type)}}class Xm{constructor(t,e,i){this.id=t,this.addr=i,this.cache=[],this.type=e.type,this.size=e.size,this.setValue=Wm(e.type)}}class Zm{constructor(t){this.id=t,this.seq=[],this.map={}}setValue(t,e,i){const n=this.seq;for(let s=0,a=n.length;s!==a;++s){const o=n[s];o.setValue(t,e[o.id],i)}}}const TA=/(\w+)(\])?(\[|\.)?/g;function Kh(r,t){r.seq.push(t),r.map[t.id]=t}function Jm(r,t,e){const i=r.name,n=i.length;for(TA.lastIndex=0;;){const s=TA.exec(i),a=TA.lastIndex;let o=s[1];const l=s[2]==="]",A=s[3];if(l&&(o=o|0),A===void 0||A==="["&&a+2===n){Kh(e,A===void 0?new Ym(o,r,t):new Xm(o,r,t));break}else{let c=e.map[o];c===void 0&&(c=new Zm(o),Kh(e,c)),e=c}}}class ua{constructor(t,e){this.seq=[],this.map={};const i=t.getProgramParameter(e,t.ACTIVE_UNIFORMS);for(let n=0;n<i;++n){const s=t.getActiveUniform(e,n),a=t.getUniformLocation(e,s.name);Jm(s,a,this)}}setValue(t,e,i,n){const s=this.map[e];s!==void 0&&s.setValue(t,i,n)}setOptional(t,e,i){const n=e[i];n!==void 0&&this.setValue(t,i,n)}static upload(t,e,i,n){for(let s=0,a=e.length;s!==a;++s){const o=e[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(t,l.value,n)}}static seqWithValue(t,e){const i=[];for(let n=0,s=t.length;n!==s;++n){const a=t[n];a.id in e&&i.push(a)}return i}}function $h(r,t,e){const i=r.createShader(t);return r.shaderSource(i,e),r.compileShader(i),i}const jm=37297;let Qm=0;function qm(r,t){const e=r.split(`
3853
3853
  `),i=[],n=Math.max(t-6,0),s=Math.min(t+6,e.length);for(let a=n;a<s;a++){const o=a+1;i.push(`${o===t?">":" "} ${o}: ${e[a]}`)}return i.join(`
3854
- `)}const jh=new Nt;function Zm(r){Yt._getMatrix(jh,Yt.workingColorSpace,r);const t=`mat3( ${jh.elements.map(e=>e.toFixed(4))} )`;switch(Yt.getTransfer(r)){case Ur:return[t,"LinearTransferOETF"];case qt:return[t,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",r),[t,"LinearTransferOETF"]}}function Qh(r,t,e){const i=r.getShaderParameter(t,r.COMPILE_STATUS),s=(r.getShaderInfoLog(t)||"").trim();if(i&&s==="")return"";const a=/ERROR: 0:(\d+)/.exec(s);if(a){const o=parseInt(a[1]);return e.toUpperCase()+`
3854
+ `)}const tc=new Nt;function Km(r){Yt._getMatrix(tc,Yt.workingColorSpace,r);const t=`mat3( ${tc.elements.map(e=>e.toFixed(4))} )`;switch(Yt.getTransfer(r)){case Vr:return[t,"LinearTransferOETF"];case qt:return[t,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",r),[t,"LinearTransferOETF"]}}function ec(r,t,e){const i=r.getShaderParameter(t,r.COMPILE_STATUS),s=(r.getShaderInfoLog(t)||"").trim();if(i&&s==="")return"";const a=/ERROR: 0:(\d+)/.exec(s);if(a){const o=parseInt(a[1]);return e.toUpperCase()+`
3855
3855
 
3856
3856
  `+s+`
3857
3857
 
3858
- `+Xm(r.getShaderSource(t),o)}else return s}function Jm(r,t){const e=Zm(t);return[`vec4 ${r}( vec4 value ) {`,` return ${e[1]}( vec4( value.rgb * ${e[0]}, value.a ) );`,"}"].join(`
3859
- `)}function jm(r,t){let e;switch(t){case Rd:e="Linear";break;case _d:e="Reinhard";break;case Pd:e="Cineon";break;case Dd:e="ACESFilmic";break;case Nd:e="AgX";break;case Fd:e="Neutral";break;case Ld:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}const Aa=new F;function Qm(){Yt.getLuminanceCoefficients(Aa);const r=Aa.x.toFixed(4),t=Aa.y.toFixed(4),e=Aa.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${r}, ${t}, ${e} );`," return dot( weights, rgb );","}"].join(`
3860
- `)}function qm(r){return[r.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",r.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(or).join(`
3861
- `)}function Km(r){const t=[];for(const e in r){const i=r[e];i!==!1&&t.push("#define "+e+" "+i)}return t.join(`
3862
- `)}function $m(r,t){const e={},i=r.getProgramParameter(t,r.ACTIVE_ATTRIBUTES);for(let n=0;n<i;n++){const s=r.getActiveAttrib(t,n),a=s.name;let o=1;s.type===r.FLOAT_MAT2&&(o=2),s.type===r.FLOAT_MAT3&&(o=3),s.type===r.FLOAT_MAT4&&(o=4),e[a]={type:s.type,location:r.getAttribLocation(t,a),locationSize:o}}return e}function or(r){return r!==""}function qh(r,t){const e=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return r.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,e).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function Kh(r,t){return r.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const tI=/^[ \t]*#include +<([\w\d./]+)>/gm;function SA(r){return r.replace(tI,iI)}const eI=new Map;function iI(r,t){let e=Bt[t];if(e===void 0){const i=eI.get(t);if(i!==void 0)e=Bt[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,i);else throw new Error("Can not resolve #include <"+t+">")}return SA(e)}const nI=/#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 $h(r){return r.replace(nI,sI)}function sI(r,t,e,i){let n="";for(let s=parseInt(t);s<parseInt(e);s++)n+=i.replace(/\[\s*i\s*\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return n}function tc(r){let t=`precision ${r.precision} float;
3858
+ `+qm(r.getShaderSource(t),o)}else return s}function $m(r,t){const e=Km(t);return[`vec4 ${r}( vec4 value ) {`,` return ${e[1]}( vec4( value.rgb * ${e[0]}, value.a ) );`,"}"].join(`
3859
+ `)}function tI(r,t){let e;switch(t){case Nd:e="Linear";break;case Fd:e="Reinhard";break;case Bd:e="Cineon";break;case Od:e="ACESFilmic";break;case zd:e="AgX";break;case Gd:e="Neutral";break;case Ud:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}const da=new F;function eI(){Yt.getLuminanceCoefficients(da);const r=da.x.toFixed(4),t=da.y.toFixed(4),e=da.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${r}, ${t}, ${e} );`," return dot( weights, rgb );","}"].join(`
3860
+ `)}function iI(r){return[r.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",r.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(ur).join(`
3861
+ `)}function nI(r){const t=[];for(const e in r){const i=r[e];i!==!1&&t.push("#define "+e+" "+i)}return t.join(`
3862
+ `)}function sI(r,t){const e={},i=r.getProgramParameter(t,r.ACTIVE_ATTRIBUTES);for(let n=0;n<i;n++){const s=r.getActiveAttrib(t,n),a=s.name;let o=1;s.type===r.FLOAT_MAT2&&(o=2),s.type===r.FLOAT_MAT3&&(o=3),s.type===r.FLOAT_MAT4&&(o=4),e[a]={type:s.type,location:r.getAttribLocation(t,a),locationSize:o}}return e}function ur(r){return r!==""}function ic(r,t){const e=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return r.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,e).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function nc(r,t){return r.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const rI=/^[ \t]*#include +<([\w\d./]+)>/gm;function wA(r){return r.replace(rI,oI)}const aI=new Map;function oI(r,t){let e=Bt[t];if(e===void 0){const i=aI.get(t);if(i!==void 0)e=Bt[i],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,i);else throw new Error("Can not resolve #include <"+t+">")}return wA(e)}const AI=/#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 sc(r){return r.replace(AI,lI)}function lI(r,t,e,i){let n="";for(let s=parseInt(t);s<parseInt(e);s++)n+=i.replace(/\[\s*i\s*\]/g,"[ "+s+" ]").replace(/UNROLLED_LOOP_INDEX/g,s);return n}function rc(r){let t=`precision ${r.precision} float;
3863
3863
  precision ${r.precision} int;
3864
3864
  precision ${r.precision} sampler2D;
3865
3865
  precision ${r.precision} samplerCube;
@@ -3879,30 +3879,30 @@ void main() {
3879
3879
  `;return r.precision==="highp"?t+=`
3880
3880
  #define HIGH_PRECISION`:r.precision==="mediump"?t+=`
3881
3881
  #define MEDIUM_PRECISION`:r.precision==="lowp"&&(t+=`
3882
- #define LOW_PRECISION`),t}function rI(r){let t="SHADOWMAP_TYPE_BASIC";return r.shadowMapType===Tl?t="SHADOWMAP_TYPE_PCF":r.shadowMapType===Ad?t="SHADOWMAP_TYPE_PCF_SOFT":r.shadowMapType===Di&&(t="SHADOWMAP_TYPE_VSM"),t}function aI(r){let t="ENVMAP_TYPE_CUBE";if(r.envMap)switch(r.envMapMode){case ts:case es:t="ENVMAP_TYPE_CUBE";break;case Pr:t="ENVMAP_TYPE_CUBE_UV";break}return t}function oI(r){let t="ENVMAP_MODE_REFLECTION";return r.envMap&&r.envMapMode===es&&(t="ENVMAP_MODE_REFRACTION"),t}function AI(r){let t="ENVMAP_BLENDING_NONE";if(r.envMap)switch(r.combine){case Pl:t="ENVMAP_BLENDING_MULTIPLY";break;case Td:t="ENVMAP_BLENDING_MIX";break;case wd:t="ENVMAP_BLENDING_ADD";break}return t}function lI(r){const t=r.envMapCubeUVHeight;if(t===null)return null;const e=Math.log2(t)-2,i=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,e),112)),texelHeight:i,maxMip:e}}function hI(r,t,e,i){const n=r.getContext(),s=e.defines;let a=e.vertexShader,o=e.fragmentShader;const l=rI(e),A=aI(e),h=oI(e),c=AI(e),u=lI(e),d=qm(e),p=Km(s),m=n.createProgram();let g,f,y=e.glslVersion?"#version "+e.glslVersion+`
3883
- `:"";e.isRawShaderMaterial?(g=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p].filter(or).join(`
3882
+ #define LOW_PRECISION`),t}function hI(r){let t="SHADOWMAP_TYPE_BASIC";return r.shadowMapType===Ll?t="SHADOWMAP_TYPE_PCF":r.shadowMapType===dd?t="SHADOWMAP_TYPE_PCF_SOFT":r.shadowMapType===Di&&(t="SHADOWMAP_TYPE_VSM"),t}function cI(r){let t="ENVMAP_TYPE_CUBE";if(r.envMap)switch(r.envMapMode){case es:case is:t="ENVMAP_TYPE_CUBE";break;case Br:t="ENVMAP_TYPE_CUBE_UV";break}return t}function uI(r){let t="ENVMAP_MODE_REFLECTION";return r.envMap&&r.envMapMode===is&&(t="ENVMAP_MODE_REFRACTION"),t}function dI(r){let t="ENVMAP_BLENDING_NONE";if(r.envMap)switch(r.combine){case Bl:t="ENVMAP_BLENDING_MULTIPLY";break;case Ld:t="ENVMAP_BLENDING_MIX";break;case Dd:t="ENVMAP_BLENDING_ADD";break}return t}function fI(r){const t=r.envMapCubeUVHeight;if(t===null)return null;const e=Math.log2(t)-2,i=1/t;return{texelWidth:1/(3*Math.max(Math.pow(2,e),112)),texelHeight:i,maxMip:e}}function gI(r,t,e,i){const n=r.getContext(),s=e.defines;let a=e.vertexShader,o=e.fragmentShader;const l=hI(e),A=cI(e),h=uI(e),c=dI(e),u=fI(e),d=iI(e),p=nI(s),m=n.createProgram();let g,f,y=e.glslVersion?"#version "+e.glslVersion+`
3883
+ `:"";e.isRawShaderMaterial?(g=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p].filter(ur).join(`
3884
3884
  `),g.length>0&&(g+=`
3885
- `),f=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p].filter(or).join(`
3885
+ `),f=["#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p].filter(ur).join(`
3886
3886
  `),f.length>0&&(f+=`
3887
- `)):(g=[tc(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p,e.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",e.batching?"#define USE_BATCHING":"",e.batchingColor?"#define USE_BATCHING_COLOR":"",e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.instancingMorph?"#define USE_INSTANCING_MORPH":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.displacementMap?"#define USE_DISPLACEMENTMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.mapUv?"#define MAP_UV "+e.mapUv:"",e.alphaMapUv?"#define ALPHAMAP_UV "+e.alphaMapUv:"",e.lightMapUv?"#define LIGHTMAP_UV "+e.lightMapUv:"",e.aoMapUv?"#define AOMAP_UV "+e.aoMapUv:"",e.emissiveMapUv?"#define EMISSIVEMAP_UV "+e.emissiveMapUv:"",e.bumpMapUv?"#define BUMPMAP_UV "+e.bumpMapUv:"",e.normalMapUv?"#define NORMALMAP_UV "+e.normalMapUv:"",e.displacementMapUv?"#define DISPLACEMENTMAP_UV "+e.displacementMapUv:"",e.metalnessMapUv?"#define METALNESSMAP_UV "+e.metalnessMapUv:"",e.roughnessMapUv?"#define ROUGHNESSMAP_UV "+e.roughnessMapUv:"",e.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+e.anisotropyMapUv:"",e.clearcoatMapUv?"#define CLEARCOATMAP_UV "+e.clearcoatMapUv:"",e.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+e.clearcoatNormalMapUv:"",e.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+e.clearcoatRoughnessMapUv:"",e.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+e.iridescenceMapUv:"",e.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+e.iridescenceThicknessMapUv:"",e.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+e.sheenColorMapUv:"",e.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+e.sheenRoughnessMapUv:"",e.specularMapUv?"#define SPECULARMAP_UV "+e.specularMapUv:"",e.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+e.specularColorMapUv:"",e.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+e.specularIntensityMapUv:"",e.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+e.transmissionMapUv:"",e.thicknessMapUv?"#define THICKNESSMAP_UV "+e.thicknessMapUv:"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reversedDepthBuffer?"#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",`
3888
- `].filter(or).join(`
3889
- `),f=[tc(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+A:"",e.envMap?"#define "+h:"",e.envMap?"#define "+c:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.dispersion?"#define USE_DISPERSION":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor||e.batchingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reversedDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==tn?"#define TONE_MAPPING":"",e.toneMapping!==tn?Bt.tonemapping_pars_fragment:"",e.toneMapping!==tn?jm("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",Bt.colorspace_pars_fragment,Jm("linearToOutputTexel",e.outputColorSpace),Qm(),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`
3890
- `].filter(or).join(`
3891
- `)),a=SA(a),a=qh(a,e),a=Kh(a,e),o=SA(o),o=qh(o,e),o=Kh(o,e),a=$h(a),o=$h(o),e.isRawShaderMaterial!==!0&&(y=`#version 300 es
3887
+ `)):(g=[rc(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p,e.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",e.batching?"#define USE_BATCHING":"",e.batchingColor?"#define USE_BATCHING_COLOR":"",e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.instancingMorph?"#define USE_INSTANCING_MORPH":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.displacementMap?"#define USE_DISPLACEMENTMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.mapUv?"#define MAP_UV "+e.mapUv:"",e.alphaMapUv?"#define ALPHAMAP_UV "+e.alphaMapUv:"",e.lightMapUv?"#define LIGHTMAP_UV "+e.lightMapUv:"",e.aoMapUv?"#define AOMAP_UV "+e.aoMapUv:"",e.emissiveMapUv?"#define EMISSIVEMAP_UV "+e.emissiveMapUv:"",e.bumpMapUv?"#define BUMPMAP_UV "+e.bumpMapUv:"",e.normalMapUv?"#define NORMALMAP_UV "+e.normalMapUv:"",e.displacementMapUv?"#define DISPLACEMENTMAP_UV "+e.displacementMapUv:"",e.metalnessMapUv?"#define METALNESSMAP_UV "+e.metalnessMapUv:"",e.roughnessMapUv?"#define ROUGHNESSMAP_UV "+e.roughnessMapUv:"",e.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+e.anisotropyMapUv:"",e.clearcoatMapUv?"#define CLEARCOATMAP_UV "+e.clearcoatMapUv:"",e.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+e.clearcoatNormalMapUv:"",e.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+e.clearcoatRoughnessMapUv:"",e.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+e.iridescenceMapUv:"",e.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+e.iridescenceThicknessMapUv:"",e.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+e.sheenColorMapUv:"",e.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+e.sheenRoughnessMapUv:"",e.specularMapUv?"#define SPECULARMAP_UV "+e.specularMapUv:"",e.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+e.specularColorMapUv:"",e.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+e.specularIntensityMapUv:"",e.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+e.transmissionMapUv:"",e.thicknessMapUv?"#define THICKNESSMAP_UV "+e.thicknessMapUv:"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reversedDepthBuffer?"#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",`
3888
+ `].filter(ur).join(`
3889
+ `),f=[rc(e),"#define SHADER_TYPE "+e.shaderType,"#define SHADER_NAME "+e.shaderName,p,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+A:"",e.envMap?"#define "+h:"",e.envMap?"#define "+c:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",e.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.anisotropy?"#define USE_ANISOTROPY":"",e.anisotropyMap?"#define USE_ANISOTROPYMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.dispersion?"#define USE_DISPERSION":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",e.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.alphaHash?"#define USE_ALPHAHASH":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.vertexTangents&&e.flatShading===!1?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor||e.batchingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUv1s?"#define USE_UV1":"",e.vertexUv2s?"#define USE_UV2":"",e.vertexUv3s?"#define USE_UV3":"",e.pointsUvs?"#define USE_POINTS_UV":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+l:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.numLightProbes>0?"#define USE_LIGHT_PROBES":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.reversedDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==en?"#define TONE_MAPPING":"",e.toneMapping!==en?Bt.tonemapping_pars_fragment:"",e.toneMapping!==en?tI("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",Bt.colorspace_pars_fragment,$m("linearToOutputTexel",e.outputColorSpace),eI(),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`
3890
+ `].filter(ur).join(`
3891
+ `)),a=wA(a),a=ic(a,e),a=nc(a,e),o=wA(o),o=ic(o,e),o=nc(o,e),a=sc(a),o=sc(o),e.isRawShaderMaterial!==!0&&(y=`#version 300 es
3892
3892
  `,g=[d,"#define attribute in","#define varying out","#define texture2D texture"].join(`
3893
3893
  `)+`
3894
- `+g,f=["#define varying in",e.glslVersion===Yl?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===Yl?"":"#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(`
3894
+ `+g,f=["#define varying in",e.glslVersion===Ql?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===Ql?"":"#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(`
3895
3895
  `)+`
3896
- `+f);const S=y+g+a,v=y+f+o,w=Jh(n,n.VERTEX_SHADER,S),T=Jh(n,n.FRAGMENT_SHADER,v);n.attachShader(m,w),n.attachShader(m,T),e.index0AttributeName!==void 0?n.bindAttribLocation(m,0,e.index0AttributeName):e.morphTargets===!0&&n.bindAttribLocation(m,0,"position"),n.linkProgram(m);function R(b){if(r.debug.checkShaderErrors){const z=n.getProgramInfoLog(m)||"",B=n.getShaderInfoLog(w)||"",U=n.getShaderInfoLog(T)||"",W=z.trim(),Y=B.trim(),$=U.trim();let H=!0,rt=!0;if(n.getProgramParameter(m,n.LINK_STATUS)===!1)if(H=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(n,m,w,T);else{const lt=Qh(n,w,"vertex"),mt=Qh(n,T,"fragment");console.error("THREE.WebGLProgram: Shader Error "+n.getError()+" - VALIDATE_STATUS "+n.getProgramParameter(m,n.VALIDATE_STATUS)+`
3896
+ `+f);const S=y+g+a,v=y+f+o,w=$h(n,n.VERTEX_SHADER,S),T=$h(n,n.FRAGMENT_SHADER,v);n.attachShader(m,w),n.attachShader(m,T),e.index0AttributeName!==void 0?n.bindAttribLocation(m,0,e.index0AttributeName):e.morphTargets===!0&&n.bindAttribLocation(m,0,"position"),n.linkProgram(m);function R(b){if(r.debug.checkShaderErrors){const z=n.getProgramInfoLog(m)||"",B=n.getShaderInfoLog(w)||"",U=n.getShaderInfoLog(T)||"",W=z.trim(),Y=B.trim(),$=U.trim();let H=!0,rt=!0;if(n.getProgramParameter(m,n.LINK_STATUS)===!1)if(H=!1,typeof r.debug.onShaderError=="function")r.debug.onShaderError(n,m,w,T);else{const lt=ec(n,w,"vertex"),mt=ec(n,T,"fragment");console.error("THREE.WebGLProgram: Shader Error "+n.getError()+" - VALIDATE_STATUS "+n.getProgramParameter(m,n.VALIDATE_STATUS)+`
3897
3897
 
3898
3898
  Material Name: `+b.name+`
3899
3899
  Material Type: `+b.type+`
3900
3900
 
3901
3901
  Program Info Log: `+W+`
3902
3902
  `+lt+`
3903
- `+mt)}else W!==""?console.warn("THREE.WebGLProgram: Program Info Log:",W):(Y===""||$==="")&&(rt=!1);rt&&(b.diagnostics={runnable:H,programLog:W,vertexShader:{log:Y,prefix:g},fragmentShader:{log:$,prefix:f}})}n.deleteShader(w),n.deleteShader(T),P=new oa(n,m),E=$m(n,m)}let P;this.getUniforms=function(){return P===void 0&&R(this),P};let E;this.getAttributes=function(){return E===void 0&&R(this),E};let x=e.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return x===!1&&(x=n.getProgramParameter(m,Wm)),x},this.destroy=function(){i.releaseStatesOfProgram(this),n.deleteProgram(m),this.program=void 0},this.type=e.shaderType,this.name=e.shaderName,this.id=Ym++,this.cacheKey=t,this.usedTimes=1,this.program=m,this.vertexShader=w,this.fragmentShader=T,this}let cI=0;class uI{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){const e=t.vertexShader,i=t.fragmentShader,n=this._getShaderStage(e),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(t);return a.has(n)===!1&&(a.add(n),n.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(t){const e=this.materialCache.get(t);for(const i of e)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){const e=this.materialCache;let i=e.get(t);return i===void 0&&(i=new Set,e.set(t,i)),i}_getShaderStage(t){const e=this.shaderCache;let i=e.get(t);return i===void 0&&(i=new dI(t),e.set(t,i)),i}}class dI{constructor(t){this.id=cI++,this.code=t,this.usedTimes=0}}function fI(r,t,e,i,n,s,a){const o=new th,l=new uI,A=new Set,h=[],c=n.logarithmicDepthBuffer,u=n.vertexTextures;let d=n.precision;const p={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(E){return A.add(E),E===0?"uv":`uv${E}`}function g(E,x,b,z,B){const U=z.fog,W=B.geometry,Y=E.isMeshStandardMaterial?z.environment:null,$=(E.isMeshStandardMaterial?e:t).get(E.envMap||Y),H=$&&$.mapping===Pr?$.image.height:null,rt=p[E.type];E.precision!==null&&(d=n.getMaxPrecision(E.precision),d!==E.precision&&console.warn("THREE.WebGLProgram.getParameters:",E.precision,"not supported, using",d,"instead."));const lt=W.morphAttributes.position||W.morphAttributes.normal||W.morphAttributes.color,mt=lt!==void 0?lt.length:0;let Ot=0;W.morphAttributes.position!==void 0&&(Ot=1),W.morphAttributes.normal!==void 0&&(Ot=2),W.morphAttributes.color!==void 0&&(Ot=3);let se,$t,J,ot;if(rt){const Qt=Ei[rt];se=Qt.vertexShader,$t=Qt.fragmentShader}else se=E.vertexShader,$t=E.fragmentShader,l.update(E),J=l.getVertexShaderID(E),ot=l.getFragmentShaderID(E);const nt=r.getRenderTarget(),bt=r.state.buffers.depth.getReversed(),Tt=B.isInstancedMesh===!0,Dt=B.isBatchedMesh===!0,de=!!E.map,Wt=!!E.matcap,_=!!$,ee=!!E.aoMap,Mt=!!E.lightMap,Jt=!!E.bumpMap,Et=!!E.normalMap,re=!!E.displacementMap,ft=!!E.emissiveMap,Ut=!!E.metalnessMap,Se=!!E.roughnessMap,fe=E.anisotropy>0,M=E.clearcoat>0,I=E.dispersion>0,O=E.iridescence>0,Z=E.sheen>0,Q=E.transmission>0,X=fe&&!!E.anisotropyMap,xt=M&&!!E.clearcoatMap,it=M&&!!E.clearcoatNormalMap,It=M&&!!E.clearcoatRoughnessMap,Ct=O&&!!E.iridescenceMap,tt=O&&!!E.iridescenceThicknessMap,ct=Z&&!!E.sheenColorMap,Rt=Z&&!!E.sheenRoughnessMap,vt=!!E.specularMap,At=!!E.specularColorMap,Ft=!!E.specularIntensityMap,D=Q&&!!E.transmissionMap,et=Q&&!!E.thicknessMap,st=!!E.gradientMap,dt=!!E.alphaMap,q=E.alphaTest>0,j=!!E.alphaHash,pt=!!E.extensions;let Lt=tn;E.toneMapped&&(nt===null||nt.isXRRenderTarget===!0)&&(Lt=r.toneMapping);const ie={shaderID:rt,shaderType:E.type,shaderName:E.name,vertexShader:se,fragmentShader:$t,defines:E.defines,customVertexShaderID:J,customFragmentShaderID:ot,isRawShaderMaterial:E.isRawShaderMaterial===!0,glslVersion:E.glslVersion,precision:d,batching:Dt,batchingColor:Dt&&B._colorsTexture!==null,instancing:Tt,instancingColor:Tt&&B.instanceColor!==null,instancingMorph:Tt&&B.morphTexture!==null,supportsVertexTextures:u,outputColorSpace:nt===null?r.outputColorSpace:nt.isXRRenderTarget===!0?nt.texture.colorSpace:is,alphaToCoverage:!!E.alphaToCoverage,map:de,matcap:Wt,envMap:_,envMapMode:_&&$.mapping,envMapCubeUVHeight:H,aoMap:ee,lightMap:Mt,bumpMap:Jt,normalMap:Et,displacementMap:u&&re,emissiveMap:ft,normalMapObjectSpace:Et&&E.normalMapType===zd,normalMapTangentSpace:Et&&E.normalMapType===kl,metalnessMap:Ut,roughnessMap:Se,anisotropy:fe,anisotropyMap:X,clearcoat:M,clearcoatMap:xt,clearcoatNormalMap:it,clearcoatRoughnessMap:It,dispersion:I,iridescence:O,iridescenceMap:Ct,iridescenceThicknessMap:tt,sheen:Z,sheenColorMap:ct,sheenRoughnessMap:Rt,specularMap:vt,specularColorMap:At,specularIntensityMap:Ft,transmission:Q,transmissionMap:D,thicknessMap:et,gradientMap:st,opaque:E.transparent===!1&&E.blending===Kn&&E.alphaToCoverage===!1,alphaMap:dt,alphaTest:q,alphaHash:j,combine:E.combine,mapUv:de&&m(E.map.channel),aoMapUv:ee&&m(E.aoMap.channel),lightMapUv:Mt&&m(E.lightMap.channel),bumpMapUv:Jt&&m(E.bumpMap.channel),normalMapUv:Et&&m(E.normalMap.channel),displacementMapUv:re&&m(E.displacementMap.channel),emissiveMapUv:ft&&m(E.emissiveMap.channel),metalnessMapUv:Ut&&m(E.metalnessMap.channel),roughnessMapUv:Se&&m(E.roughnessMap.channel),anisotropyMapUv:X&&m(E.anisotropyMap.channel),clearcoatMapUv:xt&&m(E.clearcoatMap.channel),clearcoatNormalMapUv:it&&m(E.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:It&&m(E.clearcoatRoughnessMap.channel),iridescenceMapUv:Ct&&m(E.iridescenceMap.channel),iridescenceThicknessMapUv:tt&&m(E.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&m(E.sheenColorMap.channel),sheenRoughnessMapUv:Rt&&m(E.sheenRoughnessMap.channel),specularMapUv:vt&&m(E.specularMap.channel),specularColorMapUv:At&&m(E.specularColorMap.channel),specularIntensityMapUv:Ft&&m(E.specularIntensityMap.channel),transmissionMapUv:D&&m(E.transmissionMap.channel),thicknessMapUv:et&&m(E.thicknessMap.channel),alphaMapUv:dt&&m(E.alphaMap.channel),vertexTangents:!!W.attributes.tangent&&(Et||fe),vertexColors:E.vertexColors,vertexAlphas:E.vertexColors===!0&&!!W.attributes.color&&W.attributes.color.itemSize===4,pointsUvs:B.isPoints===!0&&!!W.attributes.uv&&(de||dt),fog:!!U,useFog:E.fog===!0,fogExp2:!!U&&U.isFogExp2,flatShading:E.flatShading===!0&&E.wireframe===!1,sizeAttenuation:E.sizeAttenuation===!0,logarithmicDepthBuffer:c,reversedDepthBuffer:bt,skinning:B.isSkinnedMesh===!0,morphTargets:W.morphAttributes.position!==void 0,morphNormals:W.morphAttributes.normal!==void 0,morphColors:W.morphAttributes.color!==void 0,morphTargetsCount:mt,morphTextureStride:Ot,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:E.dithering,shadowMapEnabled:r.shadowMap.enabled&&b.length>0,shadowMapType:r.shadowMap.type,toneMapping:Lt,decodeVideoTexture:de&&E.map.isVideoTexture===!0&&Yt.getTransfer(E.map.colorSpace)===qt,decodeVideoTextureEmissive:ft&&E.emissiveMap.isVideoTexture===!0&&Yt.getTransfer(E.emissiveMap.colorSpace)===qt,premultipliedAlpha:E.premultipliedAlpha,doubleSided:E.side===Li,flipSided:E.side===Oe,useDepthPacking:E.depthPacking>=0,depthPacking:E.depthPacking||0,index0AttributeName:E.index0AttributeName,extensionClipCullDistance:pt&&E.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(pt&&E.extensions.multiDraw===!0||Dt)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:E.customProgramCacheKey()};return ie.vertexUv1s=A.has(1),ie.vertexUv2s=A.has(2),ie.vertexUv3s=A.has(3),A.clear(),ie}function f(E){const x=[];if(E.shaderID?x.push(E.shaderID):(x.push(E.customVertexShaderID),x.push(E.customFragmentShaderID)),E.defines!==void 0)for(const b in E.defines)x.push(b),x.push(E.defines[b]);return E.isRawShaderMaterial===!1&&(y(x,E),S(x,E),x.push(r.outputColorSpace)),x.push(E.customProgramCacheKey),x.join()}function y(E,x){E.push(x.precision),E.push(x.outputColorSpace),E.push(x.envMapMode),E.push(x.envMapCubeUVHeight),E.push(x.mapUv),E.push(x.alphaMapUv),E.push(x.lightMapUv),E.push(x.aoMapUv),E.push(x.bumpMapUv),E.push(x.normalMapUv),E.push(x.displacementMapUv),E.push(x.emissiveMapUv),E.push(x.metalnessMapUv),E.push(x.roughnessMapUv),E.push(x.anisotropyMapUv),E.push(x.clearcoatMapUv),E.push(x.clearcoatNormalMapUv),E.push(x.clearcoatRoughnessMapUv),E.push(x.iridescenceMapUv),E.push(x.iridescenceThicknessMapUv),E.push(x.sheenColorMapUv),E.push(x.sheenRoughnessMapUv),E.push(x.specularMapUv),E.push(x.specularColorMapUv),E.push(x.specularIntensityMapUv),E.push(x.transmissionMapUv),E.push(x.thicknessMapUv),E.push(x.combine),E.push(x.fogExp2),E.push(x.sizeAttenuation),E.push(x.morphTargetsCount),E.push(x.morphAttributeCount),E.push(x.numDirLights),E.push(x.numPointLights),E.push(x.numSpotLights),E.push(x.numSpotLightMaps),E.push(x.numHemiLights),E.push(x.numRectAreaLights),E.push(x.numDirLightShadows),E.push(x.numPointLightShadows),E.push(x.numSpotLightShadows),E.push(x.numSpotLightShadowsWithMaps),E.push(x.numLightProbes),E.push(x.shadowMapType),E.push(x.toneMapping),E.push(x.numClippingPlanes),E.push(x.numClipIntersection),E.push(x.depthPacking)}function S(E,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),x.gradientMap&&o.enable(22),E.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.reversedDepthBuffer&&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),E.push(o.mask)}function v(E){const x=p[E.type];let b;if(x){const z=Ei[x];b=pf.clone(z.uniforms)}else b=E.uniforms;return b}function w(E,x){let b;for(let z=0,B=h.length;z<B;z++){const U=h[z];if(U.cacheKey===x){b=U,++b.usedTimes;break}}return b===void 0&&(b=new hI(r,x,E,s),h.push(b)),b}function T(E){if(--E.usedTimes===0){const x=h.indexOf(E);h[x]=h[h.length-1],h.pop(),E.destroy()}}function R(E){l.remove(E)}function P(){l.dispose()}return{getParameters:g,getProgramCacheKey:f,getUniforms:v,acquireProgram:w,releaseProgram:T,releaseShaderCache:R,programs:h,dispose:P}}function gI(){let r=new WeakMap;function t(a){return r.has(a)}function e(a){let o=r.get(a);return o===void 0&&(o={},r.set(a,o)),o}function i(a){r.delete(a)}function n(a,o,l){r.get(a)[o]=l}function s(){r=new WeakMap}return{has:t,get:e,remove:i,update:n,dispose:s}}function pI(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.material.id!==t.material.id?r.material.id-t.material.id:r.z!==t.z?r.z-t.z:r.id-t.id}function ec(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.z!==t.z?t.z-r.z:r.id-t.id}function ic(){const r=[];let t=0;const e=[],i=[],n=[];function s(){t=0,e.length=0,i.length=0,n.length=0}function a(c,u,d,p,m,g){let f=r[t];return f===void 0?(f={id:c.id,object:c,geometry:u,material:d,groupOrder:p,renderOrder:c.renderOrder,z:m,group:g},r[t]=f):(f.id=c.id,f.object=c,f.geometry=u,f.material=d,f.groupOrder=p,f.renderOrder=c.renderOrder,f.z=m,f.group=g),t++,f}function o(c,u,d,p,m,g){const f=a(c,u,d,p,m,g);d.transmission>0?i.push(f):d.transparent===!0?n.push(f):e.push(f)}function l(c,u,d,p,m,g){const f=a(c,u,d,p,m,g);d.transmission>0?i.unshift(f):d.transparent===!0?n.unshift(f):e.unshift(f)}function A(c,u){e.length>1&&e.sort(c||pI),i.length>1&&i.sort(u||ec),n.length>1&&n.sort(u||ec)}function h(){for(let c=t,u=r.length;c<u;c++){const d=r[c];if(d.id===null)break;d.id=null,d.object=null,d.geometry=null,d.material=null,d.group=null}}return{opaque:e,transmissive:i,transparent:n,init:s,push:o,unshift:l,finish:h,sort:A}}function mI(){let r=new WeakMap;function t(i,n){const s=r.get(i);let a;return s===void 0?(a=new ic,r.set(i,[a])):n>=s.length?(a=new ic,s.push(a)):a=s[n],a}function e(){r=new WeakMap}return{get:t,dispose:e}}function II(){const r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new F,color:new Vt};break;case"SpotLight":e={position:new F,direction:new F,color:new Vt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new F,color:new Vt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new F,skyColor:new Vt,groundColor:new Vt};break;case"RectAreaLight":e={color:new Vt,position:new F,halfWidth:new F,halfHeight:new F};break}return r[t.id]=e,e}}}function CI(){const r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Zt};break;case"SpotLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Zt};break;case"PointLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Zt,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}let vI=0;function xI(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function EI(r){const t=new II,e=CI(),i={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 A=0;A<9;A++)i.probe.push(new F);const n=new F,s=new ue,a=new ue;function o(A){let h=0,c=0,u=0;for(let E=0;E<9;E++)i.probe[E].set(0,0,0);let d=0,p=0,m=0,g=0,f=0,y=0,S=0,v=0,w=0,T=0,R=0;A.sort(xI);for(let E=0,x=A.length;E<x;E++){const b=A[E],z=b.color,B=b.intensity,U=b.distance,W=b.shadow&&b.shadow.map?b.shadow.map.texture:null;if(b.isAmbientLight)h+=z.r*B,c+=z.g*B,u+=z.b*B;else if(b.isLightProbe){for(let Y=0;Y<9;Y++)i.probe[Y].addScaledVector(b.sh.coefficients[Y],B);R++}else if(b.isDirectionalLight){const Y=t.get(b);if(Y.color.copy(b.color).multiplyScalar(b.intensity),b.castShadow){const $=b.shadow,H=e.get(b);H.shadowIntensity=$.intensity,H.shadowBias=$.bias,H.shadowNormalBias=$.normalBias,H.shadowRadius=$.radius,H.shadowMapSize=$.mapSize,i.directionalShadow[d]=H,i.directionalShadowMap[d]=W,i.directionalShadowMatrix[d]=b.shadow.matrix,y++}i.directional[d]=Y,d++}else if(b.isSpotLight){const Y=t.get(b);Y.position.setFromMatrixPosition(b.matrixWorld),Y.color.copy(z).multiplyScalar(B),Y.distance=U,Y.coneCos=Math.cos(b.angle),Y.penumbraCos=Math.cos(b.angle*(1-b.penumbra)),Y.decay=b.decay,i.spot[m]=Y;const $=b.shadow;if(b.map&&(i.spotLightMap[w]=b.map,w++,$.updateMatrices(b),b.castShadow&&T++),i.spotLightMatrix[m]=$.matrix,b.castShadow){const H=e.get(b);H.shadowIntensity=$.intensity,H.shadowBias=$.bias,H.shadowNormalBias=$.normalBias,H.shadowRadius=$.radius,H.shadowMapSize=$.mapSize,i.spotShadow[m]=H,i.spotShadowMap[m]=W,v++}m++}else if(b.isRectAreaLight){const Y=t.get(b);Y.color.copy(z).multiplyScalar(B),Y.halfWidth.set(b.width*.5,0,0),Y.halfHeight.set(0,b.height*.5,0),i.rectArea[g]=Y,g++}else if(b.isPointLight){const Y=t.get(b);if(Y.color.copy(b.color).multiplyScalar(b.intensity),Y.distance=b.distance,Y.decay=b.decay,b.castShadow){const $=b.shadow,H=e.get(b);H.shadowIntensity=$.intensity,H.shadowBias=$.bias,H.shadowNormalBias=$.normalBias,H.shadowRadius=$.radius,H.shadowMapSize=$.mapSize,H.shadowCameraNear=$.camera.near,H.shadowCameraFar=$.camera.far,i.pointShadow[p]=H,i.pointShadowMap[p]=W,i.pointShadowMatrix[p]=b.shadow.matrix,S++}i.point[p]=Y,p++}else if(b.isHemisphereLight){const Y=t.get(b);Y.skyColor.copy(b.color).multiplyScalar(B),Y.groundColor.copy(b.groundColor).multiplyScalar(B),i.hemi[f]=Y,f++}}g>0&&(r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=at.LTC_FLOAT_1,i.rectAreaLTC2=at.LTC_FLOAT_2):(i.rectAreaLTC1=at.LTC_HALF_1,i.rectAreaLTC2=at.LTC_HALF_2)),i.ambient[0]=h,i.ambient[1]=c,i.ambient[2]=u;const P=i.hash;(P.directionalLength!==d||P.pointLength!==p||P.spotLength!==m||P.rectAreaLength!==g||P.hemiLength!==f||P.numDirectionalShadows!==y||P.numPointShadows!==S||P.numSpotShadows!==v||P.numSpotMaps!==w||P.numLightProbes!==R)&&(i.directional.length=d,i.spot.length=m,i.rectArea.length=g,i.point.length=p,i.hemi.length=f,i.directionalShadow.length=y,i.directionalShadowMap.length=y,i.pointShadow.length=S,i.pointShadowMap.length=S,i.spotShadow.length=v,i.spotShadowMap.length=v,i.directionalShadowMatrix.length=y,i.pointShadowMatrix.length=S,i.spotLightMatrix.length=v+w-T,i.spotLightMap.length=w,i.numSpotLightShadowsWithMaps=T,i.numLightProbes=R,P.directionalLength=d,P.pointLength=p,P.spotLength=m,P.rectAreaLength=g,P.hemiLength=f,P.numDirectionalShadows=y,P.numPointShadows=S,P.numSpotShadows=v,P.numSpotMaps=w,P.numLightProbes=R,i.version=vI++)}function l(A,h){let c=0,u=0,d=0,p=0,m=0;const g=h.matrixWorldInverse;for(let f=0,y=A.length;f<y;f++){const S=A[f];if(S.isDirectionalLight){const v=i.directional[c];v.direction.setFromMatrixPosition(S.matrixWorld),n.setFromMatrixPosition(S.target.matrixWorld),v.direction.sub(n),v.direction.transformDirection(g),c++}else if(S.isSpotLight){const v=i.spot[d];v.position.setFromMatrixPosition(S.matrixWorld),v.position.applyMatrix4(g),v.direction.setFromMatrixPosition(S.matrixWorld),n.setFromMatrixPosition(S.target.matrixWorld),v.direction.sub(n),v.direction.transformDirection(g),d++}else if(S.isRectAreaLight){const v=i.rectArea[p];v.position.setFromMatrixPosition(S.matrixWorld),v.position.applyMatrix4(g),a.identity(),s.copy(S.matrixWorld),s.premultiply(g),a.extractRotation(s),v.halfWidth.set(S.width*.5,0,0),v.halfHeight.set(0,S.height*.5,0),v.halfWidth.applyMatrix4(a),v.halfHeight.applyMatrix4(a),p++}else if(S.isPointLight){const v=i.point[u];v.position.setFromMatrixPosition(S.matrixWorld),v.position.applyMatrix4(g),u++}else if(S.isHemisphereLight){const v=i.hemi[m];v.direction.setFromMatrixPosition(S.matrixWorld),v.direction.transformDirection(g),m++}}}return{setup:o,setupView:l,state:i}}function nc(r){const t=new EI(r),e=[],i=[];function n(h){A.camera=h,e.length=0,i.length=0}function s(h){e.push(h)}function a(h){i.push(h)}function o(){t.setup(e)}function l(h){t.setupView(e,h)}const A={lightsArray:e,shadowsArray:i,camera:null,lights:t,transmissionRenderTarget:{}};return{init:n,state:A,setupLights:o,setupLightsView:l,pushLight:s,pushShadow:a}}function SI(r){let t=new WeakMap;function e(n,s=0){const a=t.get(n);let o;return a===void 0?(o=new nc(r),t.set(n,[o])):s>=a.length?(o=new nc(r),a.push(o)):o=a[s],o}function i(){t=new WeakMap}return{get:e,dispose:i}}const MI=`void main() {
3903
+ `+mt)}else W!==""?console.warn("THREE.WebGLProgram: Program Info Log:",W):(Y===""||$==="")&&(rt=!1);rt&&(b.diagnostics={runnable:H,programLog:W,vertexShader:{log:Y,prefix:g},fragmentShader:{log:$,prefix:f}})}n.deleteShader(w),n.deleteShader(T),P=new ua(n,m),E=sI(n,m)}let P;this.getUniforms=function(){return P===void 0&&R(this),P};let E;this.getAttributes=function(){return E===void 0&&R(this),E};let x=e.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return x===!1&&(x=n.getProgramParameter(m,jm)),x},this.destroy=function(){i.releaseStatesOfProgram(this),n.deleteProgram(m),this.program=void 0},this.type=e.shaderType,this.name=e.shaderName,this.id=Qm++,this.cacheKey=t,this.usedTimes=1,this.program=m,this.vertexShader=w,this.fragmentShader=T,this}let pI=0;class mI{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){const e=t.vertexShader,i=t.fragmentShader,n=this._getShaderStage(e),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(t);return a.has(n)===!1&&(a.add(n),n.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(t){const e=this.materialCache.get(t);for(const i of e)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){const e=this.materialCache;let i=e.get(t);return i===void 0&&(i=new Set,e.set(t,i)),i}_getShaderStage(t){const e=this.shaderCache;let i=e.get(t);return i===void 0&&(i=new II(t),e.set(t,i)),i}}class II{constructor(t){this.id=pI++,this.code=t,this.usedTimes=0}}function CI(r,t,e,i,n,s,a){const o=new rh,l=new mI,A=new Set,h=[],c=n.logarithmicDepthBuffer,u=n.vertexTextures;let d=n.precision;const p={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(E){return A.add(E),E===0?"uv":`uv${E}`}function g(E,x,b,z,B){const U=z.fog,W=B.geometry,Y=E.isMeshStandardMaterial?z.environment:null,$=(E.isMeshStandardMaterial?e:t).get(E.envMap||Y),H=$&&$.mapping===Br?$.image.height:null,rt=p[E.type];E.precision!==null&&(d=n.getMaxPrecision(E.precision),d!==E.precision&&console.warn("THREE.WebGLProgram.getParameters:",E.precision,"not supported, using",d,"instead."));const lt=W.morphAttributes.position||W.morphAttributes.normal||W.morphAttributes.color,mt=lt!==void 0?lt.length:0;let Ot=0;W.morphAttributes.position!==void 0&&(Ot=1),W.morphAttributes.normal!==void 0&&(Ot=2),W.morphAttributes.color!==void 0&&(Ot=3);let se,$t,J,ot;if(rt){const Qt=Si[rt];se=Qt.vertexShader,$t=Qt.fragmentShader}else se=E.vertexShader,$t=E.fragmentShader,l.update(E),J=l.getVertexShaderID(E),ot=l.getFragmentShaderID(E);const nt=r.getRenderTarget(),bt=r.state.buffers.depth.getReversed(),Tt=B.isInstancedMesh===!0,Lt=B.isBatchedMesh===!0,de=!!E.map,Wt=!!E.matcap,_=!!$,ee=!!E.aoMap,Mt=!!E.lightMap,Jt=!!E.bumpMap,Et=!!E.normalMap,re=!!E.displacementMap,ft=!!E.emissiveMap,Ut=!!E.metalnessMap,Se=!!E.roughnessMap,fe=E.anisotropy>0,M=E.clearcoat>0,I=E.dispersion>0,O=E.iridescence>0,Z=E.sheen>0,Q=E.transmission>0,X=fe&&!!E.anisotropyMap,xt=M&&!!E.clearcoatMap,it=M&&!!E.clearcoatNormalMap,It=M&&!!E.clearcoatRoughnessMap,Ct=O&&!!E.iridescenceMap,tt=O&&!!E.iridescenceThicknessMap,ct=Z&&!!E.sheenColorMap,Rt=Z&&!!E.sheenRoughnessMap,vt=!!E.specularMap,At=!!E.specularColorMap,Ft=!!E.specularIntensityMap,L=Q&&!!E.transmissionMap,et=Q&&!!E.thicknessMap,st=!!E.gradientMap,dt=!!E.alphaMap,q=E.alphaTest>0,j=!!E.alphaHash,pt=!!E.extensions;let Dt=en;E.toneMapped&&(nt===null||nt.isXRRenderTarget===!0)&&(Dt=r.toneMapping);const ie={shaderID:rt,shaderType:E.type,shaderName:E.name,vertexShader:se,fragmentShader:$t,defines:E.defines,customVertexShaderID:J,customFragmentShaderID:ot,isRawShaderMaterial:E.isRawShaderMaterial===!0,glslVersion:E.glslVersion,precision:d,batching:Lt,batchingColor:Lt&&B._colorsTexture!==null,instancing:Tt,instancingColor:Tt&&B.instanceColor!==null,instancingMorph:Tt&&B.morphTexture!==null,supportsVertexTextures:u,outputColorSpace:nt===null?r.outputColorSpace:nt.isXRRenderTarget===!0?nt.texture.colorSpace:ns,alphaToCoverage:!!E.alphaToCoverage,map:de,matcap:Wt,envMap:_,envMapMode:_&&$.mapping,envMapCubeUVHeight:H,aoMap:ee,lightMap:Mt,bumpMap:Jt,normalMap:Et,displacementMap:u&&re,emissiveMap:ft,normalMapObjectSpace:Et&&E.normalMapType===Wd,normalMapTangentSpace:Et&&E.normalMapType===Xl,metalnessMap:Ut,roughnessMap:Se,anisotropy:fe,anisotropyMap:X,clearcoat:M,clearcoatMap:xt,clearcoatNormalMap:it,clearcoatRoughnessMap:It,dispersion:I,iridescence:O,iridescenceMap:Ct,iridescenceThicknessMap:tt,sheen:Z,sheenColorMap:ct,sheenRoughnessMap:Rt,specularMap:vt,specularColorMap:At,specularIntensityMap:Ft,transmission:Q,transmissionMap:L,thicknessMap:et,gradientMap:st,opaque:E.transparent===!1&&E.blending===$n&&E.alphaToCoverage===!1,alphaMap:dt,alphaTest:q,alphaHash:j,combine:E.combine,mapUv:de&&m(E.map.channel),aoMapUv:ee&&m(E.aoMap.channel),lightMapUv:Mt&&m(E.lightMap.channel),bumpMapUv:Jt&&m(E.bumpMap.channel),normalMapUv:Et&&m(E.normalMap.channel),displacementMapUv:re&&m(E.displacementMap.channel),emissiveMapUv:ft&&m(E.emissiveMap.channel),metalnessMapUv:Ut&&m(E.metalnessMap.channel),roughnessMapUv:Se&&m(E.roughnessMap.channel),anisotropyMapUv:X&&m(E.anisotropyMap.channel),clearcoatMapUv:xt&&m(E.clearcoatMap.channel),clearcoatNormalMapUv:it&&m(E.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:It&&m(E.clearcoatRoughnessMap.channel),iridescenceMapUv:Ct&&m(E.iridescenceMap.channel),iridescenceThicknessMapUv:tt&&m(E.iridescenceThicknessMap.channel),sheenColorMapUv:ct&&m(E.sheenColorMap.channel),sheenRoughnessMapUv:Rt&&m(E.sheenRoughnessMap.channel),specularMapUv:vt&&m(E.specularMap.channel),specularColorMapUv:At&&m(E.specularColorMap.channel),specularIntensityMapUv:Ft&&m(E.specularIntensityMap.channel),transmissionMapUv:L&&m(E.transmissionMap.channel),thicknessMapUv:et&&m(E.thicknessMap.channel),alphaMapUv:dt&&m(E.alphaMap.channel),vertexTangents:!!W.attributes.tangent&&(Et||fe),vertexColors:E.vertexColors,vertexAlphas:E.vertexColors===!0&&!!W.attributes.color&&W.attributes.color.itemSize===4,pointsUvs:B.isPoints===!0&&!!W.attributes.uv&&(de||dt),fog:!!U,useFog:E.fog===!0,fogExp2:!!U&&U.isFogExp2,flatShading:E.flatShading===!0&&E.wireframe===!1,sizeAttenuation:E.sizeAttenuation===!0,logarithmicDepthBuffer:c,reversedDepthBuffer:bt,skinning:B.isSkinnedMesh===!0,morphTargets:W.morphAttributes.position!==void 0,morphNormals:W.morphAttributes.normal!==void 0,morphColors:W.morphAttributes.color!==void 0,morphTargetsCount:mt,morphTextureStride:Ot,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:E.dithering,shadowMapEnabled:r.shadowMap.enabled&&b.length>0,shadowMapType:r.shadowMap.type,toneMapping:Dt,decodeVideoTexture:de&&E.map.isVideoTexture===!0&&Yt.getTransfer(E.map.colorSpace)===qt,decodeVideoTextureEmissive:ft&&E.emissiveMap.isVideoTexture===!0&&Yt.getTransfer(E.emissiveMap.colorSpace)===qt,premultipliedAlpha:E.premultipliedAlpha,doubleSided:E.side===Ni,flipSided:E.side===Oe,useDepthPacking:E.depthPacking>=0,depthPacking:E.depthPacking||0,index0AttributeName:E.index0AttributeName,extensionClipCullDistance:pt&&E.extensions.clipCullDistance===!0&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(pt&&E.extensions.multiDraw===!0||Lt)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:E.customProgramCacheKey()};return ie.vertexUv1s=A.has(1),ie.vertexUv2s=A.has(2),ie.vertexUv3s=A.has(3),A.clear(),ie}function f(E){const x=[];if(E.shaderID?x.push(E.shaderID):(x.push(E.customVertexShaderID),x.push(E.customFragmentShaderID)),E.defines!==void 0)for(const b in E.defines)x.push(b),x.push(E.defines[b]);return E.isRawShaderMaterial===!1&&(y(x,E),S(x,E),x.push(r.outputColorSpace)),x.push(E.customProgramCacheKey),x.join()}function y(E,x){E.push(x.precision),E.push(x.outputColorSpace),E.push(x.envMapMode),E.push(x.envMapCubeUVHeight),E.push(x.mapUv),E.push(x.alphaMapUv),E.push(x.lightMapUv),E.push(x.aoMapUv),E.push(x.bumpMapUv),E.push(x.normalMapUv),E.push(x.displacementMapUv),E.push(x.emissiveMapUv),E.push(x.metalnessMapUv),E.push(x.roughnessMapUv),E.push(x.anisotropyMapUv),E.push(x.clearcoatMapUv),E.push(x.clearcoatNormalMapUv),E.push(x.clearcoatRoughnessMapUv),E.push(x.iridescenceMapUv),E.push(x.iridescenceThicknessMapUv),E.push(x.sheenColorMapUv),E.push(x.sheenRoughnessMapUv),E.push(x.specularMapUv),E.push(x.specularColorMapUv),E.push(x.specularIntensityMapUv),E.push(x.transmissionMapUv),E.push(x.thicknessMapUv),E.push(x.combine),E.push(x.fogExp2),E.push(x.sizeAttenuation),E.push(x.morphTargetsCount),E.push(x.morphAttributeCount),E.push(x.numDirLights),E.push(x.numPointLights),E.push(x.numSpotLights),E.push(x.numSpotLightMaps),E.push(x.numHemiLights),E.push(x.numRectAreaLights),E.push(x.numDirLightShadows),E.push(x.numPointLightShadows),E.push(x.numSpotLightShadows),E.push(x.numSpotLightShadowsWithMaps),E.push(x.numLightProbes),E.push(x.shadowMapType),E.push(x.toneMapping),E.push(x.numClippingPlanes),E.push(x.numClipIntersection),E.push(x.depthPacking)}function S(E,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),x.gradientMap&&o.enable(22),E.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.reversedDepthBuffer&&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),E.push(o.mask)}function v(E){const x=p[E.type];let b;if(x){const z=Si[x];b=xf.clone(z.uniforms)}else b=E.uniforms;return b}function w(E,x){let b;for(let z=0,B=h.length;z<B;z++){const U=h[z];if(U.cacheKey===x){b=U,++b.usedTimes;break}}return b===void 0&&(b=new gI(r,x,E,s),h.push(b)),b}function T(E){if(--E.usedTimes===0){const x=h.indexOf(E);h[x]=h[h.length-1],h.pop(),E.destroy()}}function R(E){l.remove(E)}function P(){l.dispose()}return{getParameters:g,getProgramCacheKey:f,getUniforms:v,acquireProgram:w,releaseProgram:T,releaseShaderCache:R,programs:h,dispose:P}}function vI(){let r=new WeakMap;function t(a){return r.has(a)}function e(a){let o=r.get(a);return o===void 0&&(o={},r.set(a,o)),o}function i(a){r.delete(a)}function n(a,o,l){r.get(a)[o]=l}function s(){r=new WeakMap}return{has:t,get:e,remove:i,update:n,dispose:s}}function xI(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.material.id!==t.material.id?r.material.id-t.material.id:r.z!==t.z?r.z-t.z:r.id-t.id}function ac(r,t){return r.groupOrder!==t.groupOrder?r.groupOrder-t.groupOrder:r.renderOrder!==t.renderOrder?r.renderOrder-t.renderOrder:r.z!==t.z?t.z-r.z:r.id-t.id}function oc(){const r=[];let t=0;const e=[],i=[],n=[];function s(){t=0,e.length=0,i.length=0,n.length=0}function a(c,u,d,p,m,g){let f=r[t];return f===void 0?(f={id:c.id,object:c,geometry:u,material:d,groupOrder:p,renderOrder:c.renderOrder,z:m,group:g},r[t]=f):(f.id=c.id,f.object=c,f.geometry=u,f.material=d,f.groupOrder=p,f.renderOrder=c.renderOrder,f.z=m,f.group=g),t++,f}function o(c,u,d,p,m,g){const f=a(c,u,d,p,m,g);d.transmission>0?i.push(f):d.transparent===!0?n.push(f):e.push(f)}function l(c,u,d,p,m,g){const f=a(c,u,d,p,m,g);d.transmission>0?i.unshift(f):d.transparent===!0?n.unshift(f):e.unshift(f)}function A(c,u){e.length>1&&e.sort(c||xI),i.length>1&&i.sort(u||ac),n.length>1&&n.sort(u||ac)}function h(){for(let c=t,u=r.length;c<u;c++){const d=r[c];if(d.id===null)break;d.id=null,d.object=null,d.geometry=null,d.material=null,d.group=null}}return{opaque:e,transmissive:i,transparent:n,init:s,push:o,unshift:l,finish:h,sort:A}}function EI(){let r=new WeakMap;function t(i,n){const s=r.get(i);let a;return s===void 0?(a=new oc,r.set(i,[a])):n>=s.length?(a=new oc,s.push(a)):a=s[n],a}function e(){r=new WeakMap}return{get:t,dispose:e}}function SI(){const r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new F,color:new Vt};break;case"SpotLight":e={position:new F,direction:new F,color:new Vt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new F,color:new Vt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new F,skyColor:new Vt,groundColor:new Vt};break;case"RectAreaLight":e={color:new Vt,position:new F,halfWidth:new F,halfHeight:new F};break}return r[t.id]=e,e}}}function MI(){const r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Zt};break;case"SpotLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Zt};break;case"PointLight":e={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Zt,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}let yI=0;function bI(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function TI(r){const t=new SI,e=MI(),i={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 A=0;A<9;A++)i.probe.push(new F);const n=new F,s=new ue,a=new ue;function o(A){let h=0,c=0,u=0;for(let E=0;E<9;E++)i.probe[E].set(0,0,0);let d=0,p=0,m=0,g=0,f=0,y=0,S=0,v=0,w=0,T=0,R=0;A.sort(bI);for(let E=0,x=A.length;E<x;E++){const b=A[E],z=b.color,B=b.intensity,U=b.distance,W=b.shadow&&b.shadow.map?b.shadow.map.texture:null;if(b.isAmbientLight)h+=z.r*B,c+=z.g*B,u+=z.b*B;else if(b.isLightProbe){for(let Y=0;Y<9;Y++)i.probe[Y].addScaledVector(b.sh.coefficients[Y],B);R++}else if(b.isDirectionalLight){const Y=t.get(b);if(Y.color.copy(b.color).multiplyScalar(b.intensity),b.castShadow){const $=b.shadow,H=e.get(b);H.shadowIntensity=$.intensity,H.shadowBias=$.bias,H.shadowNormalBias=$.normalBias,H.shadowRadius=$.radius,H.shadowMapSize=$.mapSize,i.directionalShadow[d]=H,i.directionalShadowMap[d]=W,i.directionalShadowMatrix[d]=b.shadow.matrix,y++}i.directional[d]=Y,d++}else if(b.isSpotLight){const Y=t.get(b);Y.position.setFromMatrixPosition(b.matrixWorld),Y.color.copy(z).multiplyScalar(B),Y.distance=U,Y.coneCos=Math.cos(b.angle),Y.penumbraCos=Math.cos(b.angle*(1-b.penumbra)),Y.decay=b.decay,i.spot[m]=Y;const $=b.shadow;if(b.map&&(i.spotLightMap[w]=b.map,w++,$.updateMatrices(b),b.castShadow&&T++),i.spotLightMatrix[m]=$.matrix,b.castShadow){const H=e.get(b);H.shadowIntensity=$.intensity,H.shadowBias=$.bias,H.shadowNormalBias=$.normalBias,H.shadowRadius=$.radius,H.shadowMapSize=$.mapSize,i.spotShadow[m]=H,i.spotShadowMap[m]=W,v++}m++}else if(b.isRectAreaLight){const Y=t.get(b);Y.color.copy(z).multiplyScalar(B),Y.halfWidth.set(b.width*.5,0,0),Y.halfHeight.set(0,b.height*.5,0),i.rectArea[g]=Y,g++}else if(b.isPointLight){const Y=t.get(b);if(Y.color.copy(b.color).multiplyScalar(b.intensity),Y.distance=b.distance,Y.decay=b.decay,b.castShadow){const $=b.shadow,H=e.get(b);H.shadowIntensity=$.intensity,H.shadowBias=$.bias,H.shadowNormalBias=$.normalBias,H.shadowRadius=$.radius,H.shadowMapSize=$.mapSize,H.shadowCameraNear=$.camera.near,H.shadowCameraFar=$.camera.far,i.pointShadow[p]=H,i.pointShadowMap[p]=W,i.pointShadowMatrix[p]=b.shadow.matrix,S++}i.point[p]=Y,p++}else if(b.isHemisphereLight){const Y=t.get(b);Y.skyColor.copy(b.color).multiplyScalar(B),Y.groundColor.copy(b.groundColor).multiplyScalar(B),i.hemi[f]=Y,f++}}g>0&&(r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=at.LTC_FLOAT_1,i.rectAreaLTC2=at.LTC_FLOAT_2):(i.rectAreaLTC1=at.LTC_HALF_1,i.rectAreaLTC2=at.LTC_HALF_2)),i.ambient[0]=h,i.ambient[1]=c,i.ambient[2]=u;const P=i.hash;(P.directionalLength!==d||P.pointLength!==p||P.spotLength!==m||P.rectAreaLength!==g||P.hemiLength!==f||P.numDirectionalShadows!==y||P.numPointShadows!==S||P.numSpotShadows!==v||P.numSpotMaps!==w||P.numLightProbes!==R)&&(i.directional.length=d,i.spot.length=m,i.rectArea.length=g,i.point.length=p,i.hemi.length=f,i.directionalShadow.length=y,i.directionalShadowMap.length=y,i.pointShadow.length=S,i.pointShadowMap.length=S,i.spotShadow.length=v,i.spotShadowMap.length=v,i.directionalShadowMatrix.length=y,i.pointShadowMatrix.length=S,i.spotLightMatrix.length=v+w-T,i.spotLightMap.length=w,i.numSpotLightShadowsWithMaps=T,i.numLightProbes=R,P.directionalLength=d,P.pointLength=p,P.spotLength=m,P.rectAreaLength=g,P.hemiLength=f,P.numDirectionalShadows=y,P.numPointShadows=S,P.numSpotShadows=v,P.numSpotMaps=w,P.numLightProbes=R,i.version=yI++)}function l(A,h){let c=0,u=0,d=0,p=0,m=0;const g=h.matrixWorldInverse;for(let f=0,y=A.length;f<y;f++){const S=A[f];if(S.isDirectionalLight){const v=i.directional[c];v.direction.setFromMatrixPosition(S.matrixWorld),n.setFromMatrixPosition(S.target.matrixWorld),v.direction.sub(n),v.direction.transformDirection(g),c++}else if(S.isSpotLight){const v=i.spot[d];v.position.setFromMatrixPosition(S.matrixWorld),v.position.applyMatrix4(g),v.direction.setFromMatrixPosition(S.matrixWorld),n.setFromMatrixPosition(S.target.matrixWorld),v.direction.sub(n),v.direction.transformDirection(g),d++}else if(S.isRectAreaLight){const v=i.rectArea[p];v.position.setFromMatrixPosition(S.matrixWorld),v.position.applyMatrix4(g),a.identity(),s.copy(S.matrixWorld),s.premultiply(g),a.extractRotation(s),v.halfWidth.set(S.width*.5,0,0),v.halfHeight.set(0,S.height*.5,0),v.halfWidth.applyMatrix4(a),v.halfHeight.applyMatrix4(a),p++}else if(S.isPointLight){const v=i.point[u];v.position.setFromMatrixPosition(S.matrixWorld),v.position.applyMatrix4(g),u++}else if(S.isHemisphereLight){const v=i.hemi[m];v.direction.setFromMatrixPosition(S.matrixWorld),v.direction.transformDirection(g),m++}}}return{setup:o,setupView:l,state:i}}function Ac(r){const t=new TI(r),e=[],i=[];function n(h){A.camera=h,e.length=0,i.length=0}function s(h){e.push(h)}function a(h){i.push(h)}function o(){t.setup(e)}function l(h){t.setupView(e,h)}const A={lightsArray:e,shadowsArray:i,camera:null,lights:t,transmissionRenderTarget:{}};return{init:n,state:A,setupLights:o,setupLightsView:l,pushLight:s,pushShadow:a}}function wI(r){let t=new WeakMap;function e(n,s=0){const a=t.get(n);let o;return a===void 0?(o=new Ac(r),t.set(n,[o])):s>=a.length?(o=new Ac(r),a.push(o)):o=a[s],o}function i(){t=new WeakMap}return{get:e,dispose:i}}const RI=`void main() {
3904
3904
  gl_Position = vec4( position, 1.0 );
3905
- }`,yI=`uniform sampler2D shadow_pass;
3905
+ }`,_I=`uniform sampler2D shadow_pass;
3906
3906
  uniform vec2 resolution;
3907
3907
  uniform float radius;
3908
3908
  #include <packing>
@@ -3928,12 +3928,12 @@ void main() {
3928
3928
  squared_mean = squared_mean / samples;
3929
3929
  float std_dev = sqrt( squared_mean - mean * mean );
3930
3930
  gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
3931
- }`;function bI(r,t,e){let i=new cA;const n=new Zt,s=new Zt,a=new he,o=new bf({depthPacking:Ud}),l=new Tf,A={},h=e.maxTextureSize,c={[Ki]:Oe,[Oe]:Ki,[Li]:Li},u=new An({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Zt},radius:{value:4}},vertexShader:MI,fragmentShader:yI}),d=u.clone();d.defines.HORIZONTAL_PASS=1;const p=new wn;p.setAttribute("position",new xi(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new pi(p,u),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Tl;let f=this.type;this.render=function(T,R,P){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||T.length===0)return;const E=r.getRenderTarget(),x=r.getActiveCubeFace(),b=r.getActiveMipmapLevel(),z=r.state;z.setBlending($i),z.buffers.depth.getReversed()?z.buffers.color.setClear(0,0,0,0):z.buffers.color.setClear(1,1,1,1),z.buffers.depth.setTest(!0),z.setScissorTest(!1);const B=f!==Di&&this.type===Di,U=f===Di&&this.type!==Di;for(let W=0,Y=T.length;W<Y;W++){const $=T[W],H=$.shadow;if(H===void 0){console.warn("THREE.WebGLShadowMap:",$,"has no shadow.");continue}if(H.autoUpdate===!1&&H.needsUpdate===!1)continue;n.copy(H.mapSize);const rt=H.getFrameExtents();if(n.multiply(rt),s.copy(H.mapSize),(n.x>h||n.y>h)&&(n.x>h&&(s.x=Math.floor(h/rt.x),n.x=s.x*rt.x,H.mapSize.x=s.x),n.y>h&&(s.y=Math.floor(h/rt.y),n.y=s.y*rt.y,H.mapSize.y=s.y)),H.map===null||B===!0||U===!0){const mt=this.type!==Di?{minFilter:li,magFilter:li}:{};H.map!==null&&H.map.dispose(),H.map=new Mn(n.x,n.y,mt),H.map.texture.name=$.name+".shadowMap",H.camera.updateProjectionMatrix()}r.setRenderTarget(H.map),r.clear();const lt=H.getViewportCount();for(let mt=0;mt<lt;mt++){const Ot=H.getViewport(mt);a.set(s.x*Ot.x,s.y*Ot.y,s.x*Ot.z,s.y*Ot.w),z.viewport(a),H.updateMatrices($,mt),i=H.getFrustum(),v(R,P,H.camera,$,this.type)}H.isPointLightShadow!==!0&&this.type===Di&&y(H,P),H.needsUpdate=!1}f=this.type,g.needsUpdate=!1,r.setRenderTarget(E,x,b)};function y(T,R){const P=t.update(m);u.defines.VSM_SAMPLES!==T.blurSamples&&(u.defines.VSM_SAMPLES=T.blurSamples,d.defines.VSM_SAMPLES=T.blurSamples,u.needsUpdate=!0,d.needsUpdate=!0),T.mapPass===null&&(T.mapPass=new Mn(n.x,n.y)),u.uniforms.shadow_pass.value=T.map.texture,u.uniforms.resolution.value=T.mapSize,u.uniforms.radius.value=T.radius,r.setRenderTarget(T.mapPass),r.clear(),r.renderBufferDirect(R,null,P,u,m,null),d.uniforms.shadow_pass.value=T.mapPass.texture,d.uniforms.resolution.value=T.mapSize,d.uniforms.radius.value=T.radius,r.setRenderTarget(T.map),r.clear(),r.renderBufferDirect(R,null,P,d,m,null)}function S(T,R,P,E){let x=null;const b=P.isPointLight===!0?T.customDistanceMaterial:T.customDepthMaterial;if(b!==void 0)x=b;else if(x=P.isPointLight===!0?l:o,r.localClippingEnabled&&R.clipShadows===!0&&Array.isArray(R.clippingPlanes)&&R.clippingPlanes.length!==0||R.displacementMap&&R.displacementScale!==0||R.alphaMap&&R.alphaTest>0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){const z=x.uuid,B=R.uuid;let U=A[z];U===void 0&&(U={},A[z]=U);let W=U[B];W===void 0&&(W=x.clone(),U[B]=W,R.addEventListener("dispose",w)),x=W}if(x.visible=R.visible,x.wireframe=R.wireframe,E===Di?x.side=R.shadowSide!==null?R.shadowSide:R.side:x.side=R.shadowSide!==null?R.shadowSide:c[R.side],x.alphaMap=R.alphaMap,x.alphaTest=R.alphaToCoverage===!0?.5: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,P.isPointLight===!0&&x.isMeshDistanceMaterial===!0){const z=r.properties.get(x);z.light=P}return x}function v(T,R,P,E,x){if(T.visible===!1)return;if(T.layers.test(R.layers)&&(T.isMesh||T.isLine||T.isPoints)&&(T.castShadow||T.receiveShadow&&x===Di)&&(!T.frustumCulled||i.intersectsObject(T))){T.modelViewMatrix.multiplyMatrices(P.matrixWorldInverse,T.matrixWorld);const B=t.update(T),U=T.material;if(Array.isArray(U)){const W=B.groups;for(let Y=0,$=W.length;Y<$;Y++){const H=W[Y],rt=U[H.materialIndex];if(rt&&rt.visible){const lt=S(T,rt,E,x);T.onBeforeShadow(r,T,R,P,B,lt,H),r.renderBufferDirect(P,null,B,lt,T,H),T.onAfterShadow(r,T,R,P,B,lt,H)}}}else if(U.visible){const W=S(T,U,E,x);T.onBeforeShadow(r,T,R,P,B,W,null),r.renderBufferDirect(P,null,B,W,T,null),T.onAfterShadow(r,T,R,P,B,W,null)}}const z=T.children;for(let B=0,U=z.length;B<U;B++)v(z[B],R,P,E,x)}function w(T){T.target.removeEventListener("dispose",w);for(const P in A){const E=A[P],x=T.target.uuid;x in E&&(E[x].dispose(),delete E[x])}}}const TI={[Xa]:Za,[Ja]:qa,[ja]:Ka,[$n]:Qa,[Za]:Xa,[qa]:Ja,[Ka]:ja,[Qa]:$n};function wI(r,t){function e(){let D=!1;const et=new he;let st=null;const dt=new he(0,0,0,0);return{setMask:function(q){st!==q&&!D&&(r.colorMask(q,q,q,q),st=q)},setLocked:function(q){D=q},setClear:function(q,j,pt,Lt,ie){ie===!0&&(q*=Lt,j*=Lt,pt*=Lt),et.set(q,j,pt,Lt),dt.equals(et)===!1&&(r.clearColor(q,j,pt,Lt),dt.copy(et))},reset:function(){D=!1,st=null,dt.set(-1,0,0,0)}}}function i(){let D=!1,et=!1,st=null,dt=null,q=null;return{setReversed:function(j){if(et!==j){const pt=t.get("EXT_clip_control");j?pt.clipControlEXT(pt.LOWER_LEFT_EXT,pt.ZERO_TO_ONE_EXT):pt.clipControlEXT(pt.LOWER_LEFT_EXT,pt.NEGATIVE_ONE_TO_ONE_EXT),et=j;const Lt=q;q=null,this.setClear(Lt)}},getReversed:function(){return et},setTest:function(j){j?nt(r.DEPTH_TEST):bt(r.DEPTH_TEST)},setMask:function(j){st!==j&&!D&&(r.depthMask(j),st=j)},setFunc:function(j){if(et&&(j=TI[j]),dt!==j){switch(j){case Xa:r.depthFunc(r.NEVER);break;case Za:r.depthFunc(r.ALWAYS);break;case Ja:r.depthFunc(r.LESS);break;case $n:r.depthFunc(r.LEQUAL);break;case ja:r.depthFunc(r.EQUAL);break;case Qa:r.depthFunc(r.GEQUAL);break;case qa:r.depthFunc(r.GREATER);break;case Ka:r.depthFunc(r.NOTEQUAL);break;default:r.depthFunc(r.LEQUAL)}dt=j}},setLocked:function(j){D=j},setClear:function(j){q!==j&&(et&&(j=1-j),r.clearDepth(j),q=j)},reset:function(){D=!1,st=null,dt=null,q=null,et=!1}}}function n(){let D=!1,et=null,st=null,dt=null,q=null,j=null,pt=null,Lt=null,ie=null;return{setTest:function(Qt){D||(Qt?nt(r.STENCIL_TEST):bt(r.STENCIL_TEST))},setMask:function(Qt){et!==Qt&&!D&&(r.stencilMask(Qt),et=Qt)},setFunc:function(Qt,ki,Si){(st!==Qt||dt!==ki||q!==Si)&&(r.stencilFunc(Qt,ki,Si),st=Qt,dt=ki,q=Si)},setOp:function(Qt,ki,Si){(j!==Qt||pt!==ki||Lt!==Si)&&(r.stencilOp(Qt,ki,Si),j=Qt,pt=ki,Lt=Si)},setLocked:function(Qt){D=Qt},setClear:function(Qt){ie!==Qt&&(r.clearStencil(Qt),ie=Qt)},reset:function(){D=!1,et=null,st=null,dt=null,q=null,j=null,pt=null,Lt=null,ie=null}}}const s=new e,a=new i,o=new n,l=new WeakMap,A=new WeakMap;let h={},c={},u=new WeakMap,d=[],p=null,m=!1,g=null,f=null,y=null,S=null,v=null,w=null,T=null,R=new Vt(0,0,0),P=0,E=!1,x=null,b=null,z=null,B=null,U=null;const W=r.getParameter(r.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let Y=!1,$=0;const H=r.getParameter(r.VERSION);H.indexOf("WebGL")!==-1?($=parseFloat(/^WebGL (\d)/.exec(H)[1]),Y=$>=1):H.indexOf("OpenGL ES")!==-1&&($=parseFloat(/^OpenGL ES (\d)/.exec(H)[1]),Y=$>=2);let rt=null,lt={};const mt=r.getParameter(r.SCISSOR_BOX),Ot=r.getParameter(r.VIEWPORT),se=new he().fromArray(mt),$t=new he().fromArray(Ot);function J(D,et,st,dt){const q=new Uint8Array(4),j=r.createTexture();r.bindTexture(D,j),r.texParameteri(D,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(D,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let pt=0;pt<st;pt++)D===r.TEXTURE_3D||D===r.TEXTURE_2D_ARRAY?r.texImage3D(et,0,r.RGBA,1,1,dt,0,r.RGBA,r.UNSIGNED_BYTE,q):r.texImage2D(et+pt,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,q);return j}const ot={};ot[r.TEXTURE_2D]=J(r.TEXTURE_2D,r.TEXTURE_2D,1),ot[r.TEXTURE_CUBE_MAP]=J(r.TEXTURE_CUBE_MAP,r.TEXTURE_CUBE_MAP_POSITIVE_X,6),ot[r.TEXTURE_2D_ARRAY]=J(r.TEXTURE_2D_ARRAY,r.TEXTURE_2D_ARRAY,1,1),ot[r.TEXTURE_3D]=J(r.TEXTURE_3D,r.TEXTURE_3D,1,1),s.setClear(0,0,0,1),a.setClear(1),o.setClear(0),nt(r.DEPTH_TEST),a.setFunc($n),Jt(!1),Et(bl),nt(r.CULL_FACE),ee($i);function nt(D){h[D]!==!0&&(r.enable(D),h[D]=!0)}function bt(D){h[D]!==!1&&(r.disable(D),h[D]=!1)}function Tt(D,et){return c[D]!==et?(r.bindFramebuffer(D,et),c[D]=et,D===r.DRAW_FRAMEBUFFER&&(c[r.FRAMEBUFFER]=et),D===r.FRAMEBUFFER&&(c[r.DRAW_FRAMEBUFFER]=et),!0):!1}function Dt(D,et){let st=d,dt=!1;if(D){st=u.get(et),st===void 0&&(st=[],u.set(et,st));const q=D.textures;if(st.length!==q.length||st[0]!==r.COLOR_ATTACHMENT0){for(let j=0,pt=q.length;j<pt;j++)st[j]=r.COLOR_ATTACHMENT0+j;st.length=q.length,dt=!0}}else st[0]!==r.BACK&&(st[0]=r.BACK,dt=!0);dt&&r.drawBuffers(st)}function de(D){return p!==D?(r.useProgram(D),p=D,!0):!1}const Wt={[vn]:r.FUNC_ADD,[hd]:r.FUNC_SUBTRACT,[cd]:r.FUNC_REVERSE_SUBTRACT};Wt[ud]=r.MIN,Wt[dd]=r.MAX;const _={[fd]:r.ZERO,[gd]:r.ONE,[pd]:r.SRC_COLOR,[Wa]:r.SRC_ALPHA,[Ed]:r.SRC_ALPHA_SATURATE,[vd]:r.DST_COLOR,[Id]:r.DST_ALPHA,[md]:r.ONE_MINUS_SRC_COLOR,[Ya]:r.ONE_MINUS_SRC_ALPHA,[xd]:r.ONE_MINUS_DST_COLOR,[Cd]:r.ONE_MINUS_DST_ALPHA,[Sd]:r.CONSTANT_COLOR,[Md]:r.ONE_MINUS_CONSTANT_COLOR,[yd]:r.CONSTANT_ALPHA,[bd]:r.ONE_MINUS_CONSTANT_ALPHA};function ee(D,et,st,dt,q,j,pt,Lt,ie,Qt){if(D===$i){m===!0&&(bt(r.BLEND),m=!1);return}if(m===!1&&(nt(r.BLEND),m=!0),D!==ld){if(D!==g||Qt!==E){if((f!==vn||v!==vn)&&(r.blendEquation(r.FUNC_ADD),f=vn,v=vn),Qt)switch(D){case Kn:r.blendFuncSeparate(r.ONE,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA);break;case wl:r.blendFunc(r.ONE,r.ONE);break;case Rl:r.blendFuncSeparate(r.ZERO,r.ONE_MINUS_SRC_COLOR,r.ZERO,r.ONE);break;case _l:r.blendFuncSeparate(r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ZERO,r.ONE);break;default:console.error("THREE.WebGLState: Invalid blending: ",D);break}else switch(D){case Kn:r.blendFuncSeparate(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA);break;case wl:r.blendFuncSeparate(r.SRC_ALPHA,r.ONE,r.ONE,r.ONE);break;case Rl:console.error("THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case _l:console.error("THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:console.error("THREE.WebGLState: Invalid blending: ",D);break}y=null,S=null,w=null,T=null,R.set(0,0,0),P=0,g=D,E=Qt}return}q=q||et,j=j||st,pt=pt||dt,(et!==f||q!==v)&&(r.blendEquationSeparate(Wt[et],Wt[q]),f=et,v=q),(st!==y||dt!==S||j!==w||pt!==T)&&(r.blendFuncSeparate(_[st],_[dt],_[j],_[pt]),y=st,S=dt,w=j,T=pt),(Lt.equals(R)===!1||ie!==P)&&(r.blendColor(Lt.r,Lt.g,Lt.b,ie),R.copy(Lt),P=ie),g=D,E=!1}function Mt(D,et){D.side===Li?bt(r.CULL_FACE):nt(r.CULL_FACE);let st=D.side===Oe;et&&(st=!st),Jt(st),D.blending===Kn&&D.transparent===!1?ee($i):ee(D.blending,D.blendEquation,D.blendSrc,D.blendDst,D.blendEquationAlpha,D.blendSrcAlpha,D.blendDstAlpha,D.blendColor,D.blendAlpha,D.premultipliedAlpha),a.setFunc(D.depthFunc),a.setTest(D.depthTest),a.setMask(D.depthWrite),s.setMask(D.colorWrite);const dt=D.stencilWrite;o.setTest(dt),dt&&(o.setMask(D.stencilWriteMask),o.setFunc(D.stencilFunc,D.stencilRef,D.stencilFuncMask),o.setOp(D.stencilFail,D.stencilZFail,D.stencilZPass)),ft(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),D.alphaToCoverage===!0?nt(r.SAMPLE_ALPHA_TO_COVERAGE):bt(r.SAMPLE_ALPHA_TO_COVERAGE)}function Jt(D){x!==D&&(D?r.frontFace(r.CW):r.frontFace(r.CCW),x=D)}function Et(D){D!==ad?(nt(r.CULL_FACE),D!==b&&(D===bl?r.cullFace(r.BACK):D===od?r.cullFace(r.FRONT):r.cullFace(r.FRONT_AND_BACK))):bt(r.CULL_FACE),b=D}function re(D){D!==z&&(Y&&r.lineWidth(D),z=D)}function ft(D,et,st){D?(nt(r.POLYGON_OFFSET_FILL),(B!==et||U!==st)&&(r.polygonOffset(et,st),B=et,U=st)):bt(r.POLYGON_OFFSET_FILL)}function Ut(D){D?nt(r.SCISSOR_TEST):bt(r.SCISSOR_TEST)}function Se(D){D===void 0&&(D=r.TEXTURE0+W-1),rt!==D&&(r.activeTexture(D),rt=D)}function fe(D,et,st){st===void 0&&(rt===null?st=r.TEXTURE0+W-1:st=rt);let dt=lt[st];dt===void 0&&(dt={type:void 0,texture:void 0},lt[st]=dt),(dt.type!==D||dt.texture!==et)&&(rt!==st&&(r.activeTexture(st),rt=st),r.bindTexture(D,et||ot[D]),dt.type=D,dt.texture=et)}function M(){const D=lt[rt];D!==void 0&&D.type!==void 0&&(r.bindTexture(D.type,null),D.type=void 0,D.texture=void 0)}function I(){try{r.compressedTexImage2D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function O(){try{r.compressedTexImage3D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function Z(){try{r.texSubImage2D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function Q(){try{r.texSubImage3D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function X(){try{r.compressedTexSubImage2D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function xt(){try{r.compressedTexSubImage3D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function it(){try{r.texStorage2D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function It(){try{r.texStorage3D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function Ct(){try{r.texImage2D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function tt(){try{r.texImage3D(...arguments)}catch(D){console.error("THREE.WebGLState:",D)}}function ct(D){se.equals(D)===!1&&(r.scissor(D.x,D.y,D.z,D.w),se.copy(D))}function Rt(D){$t.equals(D)===!1&&(r.viewport(D.x,D.y,D.z,D.w),$t.copy(D))}function vt(D,et){let st=A.get(et);st===void 0&&(st=new WeakMap,A.set(et,st));let dt=st.get(D);dt===void 0&&(dt=r.getUniformBlockIndex(et,D.name),st.set(D,dt))}function At(D,et){const dt=A.get(et).get(D);l.get(et)!==dt&&(r.uniformBlockBinding(et,dt,D.__bindingPointIndex),l.set(et,dt))}function Ft(){r.disable(r.BLEND),r.disable(r.CULL_FACE),r.disable(r.DEPTH_TEST),r.disable(r.POLYGON_OFFSET_FILL),r.disable(r.SCISSOR_TEST),r.disable(r.STENCIL_TEST),r.disable(r.SAMPLE_ALPHA_TO_COVERAGE),r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ONE,r.ZERO),r.blendFuncSeparate(r.ONE,r.ZERO,r.ONE,r.ZERO),r.blendColor(0,0,0,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(r.LESS),a.setReversed(!1),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(r.ALWAYS,0,4294967295),r.stencilOp(r.KEEP,r.KEEP,r.KEEP),r.clearStencil(0),r.cullFace(r.BACK),r.frontFace(r.CCW),r.polygonOffset(0,0),r.activeTexture(r.TEXTURE0),r.bindFramebuffer(r.FRAMEBUFFER,null),r.bindFramebuffer(r.DRAW_FRAMEBUFFER,null),r.bindFramebuffer(r.READ_FRAMEBUFFER,null),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),h={},rt=null,lt={},c={},u=new WeakMap,d=[],p=null,m=!1,g=null,f=null,y=null,S=null,v=null,w=null,T=null,R=new Vt(0,0,0),P=0,E=!1,x=null,b=null,z=null,B=null,U=null,se.set(0,0,r.canvas.width,r.canvas.height),$t.set(0,0,r.canvas.width,r.canvas.height),s.reset(),a.reset(),o.reset()}return{buffers:{color:s,depth:a,stencil:o},enable:nt,disable:bt,bindFramebuffer:Tt,drawBuffers:Dt,useProgram:de,setBlending:ee,setMaterial:Mt,setFlipSided:Jt,setCullFace:Et,setLineWidth:re,setPolygonOffset:ft,setScissorTest:Ut,activeTexture:Se,bindTexture:fe,unbindTexture:M,compressedTexImage2D:I,compressedTexImage3D:O,texImage2D:Ct,texImage3D:tt,updateUBOMapping:vt,uniformBlockBinding:At,texStorage2D:it,texStorage3D:It,texSubImage2D:Z,texSubImage3D:Q,compressedTexSubImage2D:X,compressedTexSubImage3D:xt,scissor:ct,viewport:Rt,reset:Ft}}function RI(r,t,e,i,n,s,a){const o=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),A=new Zt,h=new WeakMap;let c;const u=new WeakMap;let d=!1;try{d=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function p(M,I){return d?new OffscreenCanvas(M,I):$s("canvas")}function m(M,I,O){let Z=1;const Q=fe(M);if((Q.width>O||Q.height>O)&&(Z=O/Math.max(Q.width,Q.height)),Z<1)if(typeof HTMLImageElement<"u"&&M instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&M instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&M instanceof ImageBitmap||typeof VideoFrame<"u"&&M instanceof VideoFrame){const X=Math.floor(Z*Q.width),xt=Math.floor(Z*Q.height);c===void 0&&(c=p(X,xt));const it=I?p(X,xt):c;return it.width=X,it.height=xt,it.getContext("2d").drawImage(M,0,0,X,xt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Q.width+"x"+Q.height+") to ("+X+"x"+xt+")."),it}else return"data"in M&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Q.width+"x"+Q.height+")."),M;return M}function g(M){return M.generateMipmaps}function f(M){r.generateMipmap(M)}function y(M){return M.isWebGLCubeRenderTarget?r.TEXTURE_CUBE_MAP:M.isWebGL3DRenderTarget?r.TEXTURE_3D:M.isWebGLArrayRenderTarget||M.isCompressedArrayTexture?r.TEXTURE_2D_ARRAY:r.TEXTURE_2D}function S(M,I,O,Z,Q=!1){if(M!==null){if(r[M]!==void 0)return r[M];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+M+"'")}let X=I;if(I===r.RED&&(O===r.FLOAT&&(X=r.R32F),O===r.HALF_FLOAT&&(X=r.R16F),O===r.UNSIGNED_BYTE&&(X=r.R8)),I===r.RED_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.R8UI),O===r.UNSIGNED_SHORT&&(X=r.R16UI),O===r.UNSIGNED_INT&&(X=r.R32UI),O===r.BYTE&&(X=r.R8I),O===r.SHORT&&(X=r.R16I),O===r.INT&&(X=r.R32I)),I===r.RG&&(O===r.FLOAT&&(X=r.RG32F),O===r.HALF_FLOAT&&(X=r.RG16F),O===r.UNSIGNED_BYTE&&(X=r.RG8)),I===r.RG_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.RG8UI),O===r.UNSIGNED_SHORT&&(X=r.RG16UI),O===r.UNSIGNED_INT&&(X=r.RG32UI),O===r.BYTE&&(X=r.RG8I),O===r.SHORT&&(X=r.RG16I),O===r.INT&&(X=r.RG32I)),I===r.RGB_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.RGB8UI),O===r.UNSIGNED_SHORT&&(X=r.RGB16UI),O===r.UNSIGNED_INT&&(X=r.RGB32UI),O===r.BYTE&&(X=r.RGB8I),O===r.SHORT&&(X=r.RGB16I),O===r.INT&&(X=r.RGB32I)),I===r.RGBA_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.RGBA8UI),O===r.UNSIGNED_SHORT&&(X=r.RGBA16UI),O===r.UNSIGNED_INT&&(X=r.RGBA32UI),O===r.BYTE&&(X=r.RGBA8I),O===r.SHORT&&(X=r.RGBA16I),O===r.INT&&(X=r.RGBA32I)),I===r.RGB&&O===r.UNSIGNED_INT_5_9_9_9_REV&&(X=r.RGB9_E5),I===r.RGBA){const xt=Q?Ur:Yt.getTransfer(Z);O===r.FLOAT&&(X=r.RGBA32F),O===r.HALF_FLOAT&&(X=r.RGBA16F),O===r.UNSIGNED_BYTE&&(X=xt===qt?r.SRGB8_ALPHA8:r.RGBA8),O===r.UNSIGNED_SHORT_4_4_4_4&&(X=r.RGBA4),O===r.UNSIGNED_SHORT_5_5_5_1&&(X=r.RGB5_A1)}return(X===r.R16F||X===r.R32F||X===r.RG16F||X===r.RG32F||X===r.RGBA16F||X===r.RGBA32F)&&t.get("EXT_color_buffer_float"),X}function v(M,I){let O;return M?I===null||I===Sn||I===Js?O=r.DEPTH24_STENCIL8:I===Ni?O=r.DEPTH32F_STENCIL8:I===Xs&&(O=r.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):I===null||I===Sn||I===Js?O=r.DEPTH_COMPONENT24:I===Ni?O=r.DEPTH_COMPONENT32F:I===Xs&&(O=r.DEPTH_COMPONENT16),O}function w(M,I){return g(M)===!0||M.isFramebufferTexture&&M.minFilter!==li&&M.minFilter!==Ii?Math.log2(Math.max(I.width,I.height))+1:M.mipmaps!==void 0&&M.mipmaps.length>0?M.mipmaps.length:M.isCompressedTexture&&Array.isArray(M.image)?I.mipmaps.length:1}function T(M){const I=M.target;I.removeEventListener("dispose",T),P(I),I.isVideoTexture&&h.delete(I)}function R(M){const I=M.target;I.removeEventListener("dispose",R),x(I)}function P(M){const I=i.get(M);if(I.__webglInit===void 0)return;const O=M.source,Z=u.get(O);if(Z){const Q=Z[I.__cacheKey];Q.usedTimes--,Q.usedTimes===0&&E(M),Object.keys(Z).length===0&&u.delete(O)}i.remove(M)}function E(M){const I=i.get(M);r.deleteTexture(I.__webglTexture);const O=M.source,Z=u.get(O);delete Z[I.__cacheKey],a.memory.textures--}function x(M){const I=i.get(M);if(M.depthTexture&&(M.depthTexture.dispose(),i.remove(M.depthTexture)),M.isWebGLCubeRenderTarget)for(let Z=0;Z<6;Z++){if(Array.isArray(I.__webglFramebuffer[Z]))for(let Q=0;Q<I.__webglFramebuffer[Z].length;Q++)r.deleteFramebuffer(I.__webglFramebuffer[Z][Q]);else r.deleteFramebuffer(I.__webglFramebuffer[Z]);I.__webglDepthbuffer&&r.deleteRenderbuffer(I.__webglDepthbuffer[Z])}else{if(Array.isArray(I.__webglFramebuffer))for(let Z=0;Z<I.__webglFramebuffer.length;Z++)r.deleteFramebuffer(I.__webglFramebuffer[Z]);else r.deleteFramebuffer(I.__webglFramebuffer);if(I.__webglDepthbuffer&&r.deleteRenderbuffer(I.__webglDepthbuffer),I.__webglMultisampledFramebuffer&&r.deleteFramebuffer(I.__webglMultisampledFramebuffer),I.__webglColorRenderbuffer)for(let Z=0;Z<I.__webglColorRenderbuffer.length;Z++)I.__webglColorRenderbuffer[Z]&&r.deleteRenderbuffer(I.__webglColorRenderbuffer[Z]);I.__webglDepthRenderbuffer&&r.deleteRenderbuffer(I.__webglDepthRenderbuffer)}const O=M.textures;for(let Z=0,Q=O.length;Z<Q;Z++){const X=i.get(O[Z]);X.__webglTexture&&(r.deleteTexture(X.__webglTexture),a.memory.textures--),i.remove(O[Z])}i.remove(M)}let b=0;function z(){b=0}function B(){const M=b;return M>=n.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+M+" texture units while this GPU supports only "+n.maxTextures),b+=1,M}function U(M){const I=[];return I.push(M.wrapS),I.push(M.wrapT),I.push(M.wrapR||0),I.push(M.magFilter),I.push(M.minFilter),I.push(M.anisotropy),I.push(M.internalFormat),I.push(M.format),I.push(M.type),I.push(M.generateMipmaps),I.push(M.premultiplyAlpha),I.push(M.flipY),I.push(M.unpackAlignment),I.push(M.colorSpace),I.join()}function W(M,I){const O=i.get(M);if(M.isVideoTexture&&Ut(M),M.isRenderTargetTexture===!1&&M.isExternalTexture!==!0&&M.version>0&&O.__version!==M.version){const Z=M.image;if(Z===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Z.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ot(O,M,I);return}}else M.isExternalTexture&&(O.__webglTexture=M.sourceTexture?M.sourceTexture:null);e.bindTexture(r.TEXTURE_2D,O.__webglTexture,r.TEXTURE0+I)}function Y(M,I){const O=i.get(M);if(M.isRenderTargetTexture===!1&&M.version>0&&O.__version!==M.version){ot(O,M,I);return}e.bindTexture(r.TEXTURE_2D_ARRAY,O.__webglTexture,r.TEXTURE0+I)}function $(M,I){const O=i.get(M);if(M.isRenderTargetTexture===!1&&M.version>0&&O.__version!==M.version){ot(O,M,I);return}e.bindTexture(r.TEXTURE_3D,O.__webglTexture,r.TEXTURE0+I)}function H(M,I){const O=i.get(M);if(M.version>0&&O.__version!==M.version){nt(O,M,I);return}e.bindTexture(r.TEXTURE_CUBE_MAP,O.__webglTexture,r.TEXTURE0+I)}const rt={[eo]:r.REPEAT,[xn]:r.CLAMP_TO_EDGE,[io]:r.MIRRORED_REPEAT},lt={[li]:r.NEAREST,[Bd]:r.NEAREST_MIPMAP_NEAREST,[Dr]:r.NEAREST_MIPMAP_LINEAR,[Ii]:r.LINEAR,[no]:r.LINEAR_MIPMAP_NEAREST,[En]:r.LINEAR_MIPMAP_LINEAR},mt={[Gd]:r.NEVER,[Xd]:r.ALWAYS,[kd]:r.LESS,[Vl]:r.LEQUAL,[Hd]:r.EQUAL,[Yd]:r.GEQUAL,[Vd]:r.GREATER,[Wd]:r.NOTEQUAL};function Ot(M,I){if(I.type===Ni&&t.has("OES_texture_float_linear")===!1&&(I.magFilter===Ii||I.magFilter===no||I.magFilter===Dr||I.magFilter===En||I.minFilter===Ii||I.minFilter===no||I.minFilter===Dr||I.minFilter===En)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(M,r.TEXTURE_WRAP_S,rt[I.wrapS]),r.texParameteri(M,r.TEXTURE_WRAP_T,rt[I.wrapT]),(M===r.TEXTURE_3D||M===r.TEXTURE_2D_ARRAY)&&r.texParameteri(M,r.TEXTURE_WRAP_R,rt[I.wrapR]),r.texParameteri(M,r.TEXTURE_MAG_FILTER,lt[I.magFilter]),r.texParameteri(M,r.TEXTURE_MIN_FILTER,lt[I.minFilter]),I.compareFunction&&(r.texParameteri(M,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(M,r.TEXTURE_COMPARE_FUNC,mt[I.compareFunction])),t.has("EXT_texture_filter_anisotropic")===!0){if(I.magFilter===li||I.minFilter!==Dr&&I.minFilter!==En||I.type===Ni&&t.has("OES_texture_float_linear")===!1)return;if(I.anisotropy>1||i.get(I).__currentAnisotropy){const O=t.get("EXT_texture_filter_anisotropic");r.texParameterf(M,O.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(I.anisotropy,n.getMaxAnisotropy())),i.get(I).__currentAnisotropy=I.anisotropy}}}function se(M,I){let O=!1;M.__webglInit===void 0&&(M.__webglInit=!0,I.addEventListener("dispose",T));const Z=I.source;let Q=u.get(Z);Q===void 0&&(Q={},u.set(Z,Q));const X=U(I);if(X!==M.__cacheKey){Q[X]===void 0&&(Q[X]={texture:r.createTexture(),usedTimes:0},a.memory.textures++,O=!0),Q[X].usedTimes++;const xt=Q[M.__cacheKey];xt!==void 0&&(Q[M.__cacheKey].usedTimes--,xt.usedTimes===0&&E(I)),M.__cacheKey=X,M.__webglTexture=Q[X].texture}return O}function $t(M,I,O){return Math.floor(Math.floor(M/O)/I)}function J(M,I,O,Z){const X=M.updateRanges;if(X.length===0)e.texSubImage2D(r.TEXTURE_2D,0,0,0,I.width,I.height,O,Z,I.data);else{X.sort((tt,ct)=>tt.start-ct.start);let xt=0;for(let tt=1;tt<X.length;tt++){const ct=X[xt],Rt=X[tt],vt=ct.start+ct.count,At=$t(Rt.start,I.width,4),Ft=$t(ct.start,I.width,4);Rt.start<=vt+1&&At===Ft&&$t(Rt.start+Rt.count-1,I.width,4)===At?ct.count=Math.max(ct.count,Rt.start+Rt.count-ct.start):(++xt,X[xt]=Rt)}X.length=xt+1;const it=r.getParameter(r.UNPACK_ROW_LENGTH),It=r.getParameter(r.UNPACK_SKIP_PIXELS),Ct=r.getParameter(r.UNPACK_SKIP_ROWS);r.pixelStorei(r.UNPACK_ROW_LENGTH,I.width);for(let tt=0,ct=X.length;tt<ct;tt++){const Rt=X[tt],vt=Math.floor(Rt.start/4),At=Math.ceil(Rt.count/4),Ft=vt%I.width,D=Math.floor(vt/I.width),et=At,st=1;r.pixelStorei(r.UNPACK_SKIP_PIXELS,Ft),r.pixelStorei(r.UNPACK_SKIP_ROWS,D),e.texSubImage2D(r.TEXTURE_2D,0,Ft,D,et,st,O,Z,I.data)}M.clearUpdateRanges(),r.pixelStorei(r.UNPACK_ROW_LENGTH,it),r.pixelStorei(r.UNPACK_SKIP_PIXELS,It),r.pixelStorei(r.UNPACK_SKIP_ROWS,Ct)}}function ot(M,I,O){let Z=r.TEXTURE_2D;(I.isDataArrayTexture||I.isCompressedArrayTexture)&&(Z=r.TEXTURE_2D_ARRAY),I.isData3DTexture&&(Z=r.TEXTURE_3D);const Q=se(M,I),X=I.source;e.bindTexture(Z,M.__webglTexture,r.TEXTURE0+O);const xt=i.get(X);if(X.version!==xt.__version||Q===!0){e.activeTexture(r.TEXTURE0+O);const it=Yt.getPrimaries(Yt.workingColorSpace),It=I.colorSpace===en?null:Yt.getPrimaries(I.colorSpace),Ct=I.colorSpace===en||it===It?r.NONE:r.BROWSER_DEFAULT_WEBGL;r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,I.flipY),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,I.premultiplyAlpha),r.pixelStorei(r.UNPACK_ALIGNMENT,I.unpackAlignment),r.pixelStorei(r.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ct);let tt=m(I.image,!1,n.maxTextureSize);tt=Se(I,tt);const ct=s.convert(I.format,I.colorSpace),Rt=s.convert(I.type);let vt=S(I.internalFormat,ct,Rt,I.colorSpace,I.isVideoTexture);Ot(Z,I);let At;const Ft=I.mipmaps,D=I.isVideoTexture!==!0,et=xt.__version===void 0||Q===!0,st=X.dataReady,dt=w(I,tt);if(I.isDepthTexture)vt=v(I.format===Qs,I.type),et&&(D?e.texStorage2D(r.TEXTURE_2D,1,vt,tt.width,tt.height):e.texImage2D(r.TEXTURE_2D,0,vt,tt.width,tt.height,0,ct,Rt,null));else if(I.isDataTexture)if(Ft.length>0){D&&et&&e.texStorage2D(r.TEXTURE_2D,dt,vt,Ft[0].width,Ft[0].height);for(let q=0,j=Ft.length;q<j;q++)At=Ft[q],D?st&&e.texSubImage2D(r.TEXTURE_2D,q,0,0,At.width,At.height,ct,Rt,At.data):e.texImage2D(r.TEXTURE_2D,q,vt,At.width,At.height,0,ct,Rt,At.data);I.generateMipmaps=!1}else D?(et&&e.texStorage2D(r.TEXTURE_2D,dt,vt,tt.width,tt.height),st&&J(I,tt,ct,Rt)):e.texImage2D(r.TEXTURE_2D,0,vt,tt.width,tt.height,0,ct,Rt,tt.data);else if(I.isCompressedTexture)if(I.isCompressedArrayTexture){D&&et&&e.texStorage3D(r.TEXTURE_2D_ARRAY,dt,vt,Ft[0].width,Ft[0].height,tt.depth);for(let q=0,j=Ft.length;q<j;q++)if(At=Ft[q],I.format!==hi)if(ct!==null)if(D){if(st)if(I.layerUpdates.size>0){const pt=wh(At.width,At.height,I.format,I.type);for(const Lt of I.layerUpdates){const ie=At.data.subarray(Lt*pt/At.data.BYTES_PER_ELEMENT,(Lt+1)*pt/At.data.BYTES_PER_ELEMENT);e.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,q,0,0,Lt,At.width,At.height,1,ct,ie)}I.clearLayerUpdates()}else e.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,q,0,0,0,At.width,At.height,tt.depth,ct,At.data)}else e.compressedTexImage3D(r.TEXTURE_2D_ARRAY,q,vt,At.width,At.height,tt.depth,0,At.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else D?st&&e.texSubImage3D(r.TEXTURE_2D_ARRAY,q,0,0,0,At.width,At.height,tt.depth,ct,Rt,At.data):e.texImage3D(r.TEXTURE_2D_ARRAY,q,vt,At.width,At.height,tt.depth,0,ct,Rt,At.data)}else{D&&et&&e.texStorage2D(r.TEXTURE_2D,dt,vt,Ft[0].width,Ft[0].height);for(let q=0,j=Ft.length;q<j;q++)At=Ft[q],I.format!==hi?ct!==null?D?st&&e.compressedTexSubImage2D(r.TEXTURE_2D,q,0,0,At.width,At.height,ct,At.data):e.compressedTexImage2D(r.TEXTURE_2D,q,vt,At.width,At.height,0,At.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):D?st&&e.texSubImage2D(r.TEXTURE_2D,q,0,0,At.width,At.height,ct,Rt,At.data):e.texImage2D(r.TEXTURE_2D,q,vt,At.width,At.height,0,ct,Rt,At.data)}else if(I.isDataArrayTexture)if(D){if(et&&e.texStorage3D(r.TEXTURE_2D_ARRAY,dt,vt,tt.width,tt.height,tt.depth),st)if(I.layerUpdates.size>0){const q=wh(tt.width,tt.height,I.format,I.type);for(const j of I.layerUpdates){const pt=tt.data.subarray(j*q/tt.data.BYTES_PER_ELEMENT,(j+1)*q/tt.data.BYTES_PER_ELEMENT);e.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,j,tt.width,tt.height,1,ct,Rt,pt)}I.clearLayerUpdates()}else e.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,0,tt.width,tt.height,tt.depth,ct,Rt,tt.data)}else e.texImage3D(r.TEXTURE_2D_ARRAY,0,vt,tt.width,tt.height,tt.depth,0,ct,Rt,tt.data);else if(I.isData3DTexture)D?(et&&e.texStorage3D(r.TEXTURE_3D,dt,vt,tt.width,tt.height,tt.depth),st&&e.texSubImage3D(r.TEXTURE_3D,0,0,0,0,tt.width,tt.height,tt.depth,ct,Rt,tt.data)):e.texImage3D(r.TEXTURE_3D,0,vt,tt.width,tt.height,tt.depth,0,ct,Rt,tt.data);else if(I.isFramebufferTexture){if(et)if(D)e.texStorage2D(r.TEXTURE_2D,dt,vt,tt.width,tt.height);else{let q=tt.width,j=tt.height;for(let pt=0;pt<dt;pt++)e.texImage2D(r.TEXTURE_2D,pt,vt,q,j,0,ct,Rt,null),q>>=1,j>>=1}}else if(Ft.length>0){if(D&&et){const q=fe(Ft[0]);e.texStorage2D(r.TEXTURE_2D,dt,vt,q.width,q.height)}for(let q=0,j=Ft.length;q<j;q++)At=Ft[q],D?st&&e.texSubImage2D(r.TEXTURE_2D,q,0,0,ct,Rt,At):e.texImage2D(r.TEXTURE_2D,q,vt,ct,Rt,At);I.generateMipmaps=!1}else if(D){if(et){const q=fe(tt);e.texStorage2D(r.TEXTURE_2D,dt,vt,q.width,q.height)}st&&e.texSubImage2D(r.TEXTURE_2D,0,0,0,ct,Rt,tt)}else e.texImage2D(r.TEXTURE_2D,0,vt,ct,Rt,tt);g(I)&&f(Z),xt.__version=X.version,I.onUpdate&&I.onUpdate(I)}M.__version=I.version}function nt(M,I,O){if(I.image.length!==6)return;const Z=se(M,I),Q=I.source;e.bindTexture(r.TEXTURE_CUBE_MAP,M.__webglTexture,r.TEXTURE0+O);const X=i.get(Q);if(Q.version!==X.__version||Z===!0){e.activeTexture(r.TEXTURE0+O);const xt=Yt.getPrimaries(Yt.workingColorSpace),it=I.colorSpace===en?null:Yt.getPrimaries(I.colorSpace),It=I.colorSpace===en||xt===it?r.NONE:r.BROWSER_DEFAULT_WEBGL;r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,I.flipY),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,I.premultiplyAlpha),r.pixelStorei(r.UNPACK_ALIGNMENT,I.unpackAlignment),r.pixelStorei(r.UNPACK_COLORSPACE_CONVERSION_WEBGL,It);const Ct=I.isCompressedTexture||I.image[0].isCompressedTexture,tt=I.image[0]&&I.image[0].isDataTexture,ct=[];for(let j=0;j<6;j++)!Ct&&!tt?ct[j]=m(I.image[j],!0,n.maxCubemapSize):ct[j]=tt?I.image[j].image:I.image[j],ct[j]=Se(I,ct[j]);const Rt=ct[0],vt=s.convert(I.format,I.colorSpace),At=s.convert(I.type),Ft=S(I.internalFormat,vt,At,I.colorSpace),D=I.isVideoTexture!==!0,et=X.__version===void 0||Z===!0,st=Q.dataReady;let dt=w(I,Rt);Ot(r.TEXTURE_CUBE_MAP,I);let q;if(Ct){D&&et&&e.texStorage2D(r.TEXTURE_CUBE_MAP,dt,Ft,Rt.width,Rt.height);for(let j=0;j<6;j++){q=ct[j].mipmaps;for(let pt=0;pt<q.length;pt++){const Lt=q[pt];I.format!==hi?vt!==null?D?st&&e.compressedTexSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,0,0,Lt.width,Lt.height,vt,Lt.data):e.compressedTexImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,Ft,Lt.width,Lt.height,0,Lt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):D?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,0,0,Lt.width,Lt.height,vt,At,Lt.data):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,Ft,Lt.width,Lt.height,0,vt,At,Lt.data)}}}else{if(q=I.mipmaps,D&&et){q.length>0&&dt++;const j=fe(ct[0]);e.texStorage2D(r.TEXTURE_CUBE_MAP,dt,Ft,j.width,j.height)}for(let j=0;j<6;j++)if(tt){D?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,0,0,ct[j].width,ct[j].height,vt,At,ct[j].data):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,Ft,ct[j].width,ct[j].height,0,vt,At,ct[j].data);for(let pt=0;pt<q.length;pt++){const ie=q[pt].image[j].image;D?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,0,0,ie.width,ie.height,vt,At,ie.data):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,Ft,ie.width,ie.height,0,vt,At,ie.data)}}else{D?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,0,0,vt,At,ct[j]):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,Ft,vt,At,ct[j]);for(let pt=0;pt<q.length;pt++){const Lt=q[pt];D?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,0,0,vt,At,Lt.image[j]):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,Ft,vt,At,Lt.image[j])}}}g(I)&&f(r.TEXTURE_CUBE_MAP),X.__version=Q.version,I.onUpdate&&I.onUpdate(I)}M.__version=I.version}function bt(M,I,O,Z,Q,X){const xt=s.convert(O.format,O.colorSpace),it=s.convert(O.type),It=S(O.internalFormat,xt,it,O.colorSpace),Ct=i.get(I),tt=i.get(O);if(tt.__renderTarget=I,!Ct.__hasExternalTextures){const ct=Math.max(1,I.width>>X),Rt=Math.max(1,I.height>>X);Q===r.TEXTURE_3D||Q===r.TEXTURE_2D_ARRAY?e.texImage3D(Q,X,It,ct,Rt,I.depth,0,xt,it,null):e.texImage2D(Q,X,It,ct,Rt,0,xt,it,null)}e.bindFramebuffer(r.FRAMEBUFFER,M),ft(I)?o.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,Z,Q,tt.__webglTexture,0,re(I)):(Q===r.TEXTURE_2D||Q>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&Q<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,Z,Q,tt.__webglTexture,X),e.bindFramebuffer(r.FRAMEBUFFER,null)}function Tt(M,I,O){if(r.bindRenderbuffer(r.RENDERBUFFER,M),I.depthBuffer){const Z=I.depthTexture,Q=Z&&Z.isDepthTexture?Z.type:null,X=v(I.stencilBuffer,Q),xt=I.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,it=re(I);ft(I)?o.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,it,X,I.width,I.height):O?r.renderbufferStorageMultisample(r.RENDERBUFFER,it,X,I.width,I.height):r.renderbufferStorage(r.RENDERBUFFER,X,I.width,I.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,xt,r.RENDERBUFFER,M)}else{const Z=I.textures;for(let Q=0;Q<Z.length;Q++){const X=Z[Q],xt=s.convert(X.format,X.colorSpace),it=s.convert(X.type),It=S(X.internalFormat,xt,it,X.colorSpace),Ct=re(I);O&&ft(I)===!1?r.renderbufferStorageMultisample(r.RENDERBUFFER,Ct,It,I.width,I.height):ft(I)?o.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,Ct,It,I.width,I.height):r.renderbufferStorage(r.RENDERBUFFER,It,I.width,I.height)}}r.bindRenderbuffer(r.RENDERBUFFER,null)}function Dt(M,I){if(I&&I.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(r.FRAMEBUFFER,M),!(I.depthTexture&&I.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const Z=i.get(I.depthTexture);Z.__renderTarget=I,(!Z.__webglTexture||I.depthTexture.image.width!==I.width||I.depthTexture.image.height!==I.height)&&(I.depthTexture.image.width=I.width,I.depthTexture.image.height=I.height,I.depthTexture.needsUpdate=!0),W(I.depthTexture,0);const Q=Z.__webglTexture,X=re(I);if(I.depthTexture.format===js)ft(I)?o.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,Q,0,X):r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,Q,0);else if(I.depthTexture.format===Qs)ft(I)?o.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.TEXTURE_2D,Q,0,X):r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.TEXTURE_2D,Q,0);else throw new Error("Unknown depthTexture format")}function de(M){const I=i.get(M),O=M.isWebGLCubeRenderTarget===!0;if(I.__boundDepthTexture!==M.depthTexture){const Z=M.depthTexture;if(I.__depthDisposeCallback&&I.__depthDisposeCallback(),Z){const Q=()=>{delete I.__boundDepthTexture,delete I.__depthDisposeCallback,Z.removeEventListener("dispose",Q)};Z.addEventListener("dispose",Q),I.__depthDisposeCallback=Q}I.__boundDepthTexture=Z}if(M.depthTexture&&!I.__autoAllocateDepthBuffer){if(O)throw new Error("target.depthTexture not supported in Cube render targets");const Z=M.texture.mipmaps;Z&&Z.length>0?Dt(I.__webglFramebuffer[0],M):Dt(I.__webglFramebuffer,M)}else if(O){I.__webglDepthbuffer=[];for(let Z=0;Z<6;Z++)if(e.bindFramebuffer(r.FRAMEBUFFER,I.__webglFramebuffer[Z]),I.__webglDepthbuffer[Z]===void 0)I.__webglDepthbuffer[Z]=r.createRenderbuffer(),Tt(I.__webglDepthbuffer[Z],M,!1);else{const Q=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,X=I.__webglDepthbuffer[Z];r.bindRenderbuffer(r.RENDERBUFFER,X),r.framebufferRenderbuffer(r.FRAMEBUFFER,Q,r.RENDERBUFFER,X)}}else{const Z=M.texture.mipmaps;if(Z&&Z.length>0?e.bindFramebuffer(r.FRAMEBUFFER,I.__webglFramebuffer[0]):e.bindFramebuffer(r.FRAMEBUFFER,I.__webglFramebuffer),I.__webglDepthbuffer===void 0)I.__webglDepthbuffer=r.createRenderbuffer(),Tt(I.__webglDepthbuffer,M,!1);else{const Q=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,X=I.__webglDepthbuffer;r.bindRenderbuffer(r.RENDERBUFFER,X),r.framebufferRenderbuffer(r.FRAMEBUFFER,Q,r.RENDERBUFFER,X)}}e.bindFramebuffer(r.FRAMEBUFFER,null)}function Wt(M,I,O){const Z=i.get(M);I!==void 0&&bt(Z.__webglFramebuffer,M,M.texture,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,0),O!==void 0&&de(M)}function _(M){const I=M.texture,O=i.get(M),Z=i.get(I);M.addEventListener("dispose",R);const Q=M.textures,X=M.isWebGLCubeRenderTarget===!0,xt=Q.length>1;if(xt||(Z.__webglTexture===void 0&&(Z.__webglTexture=r.createTexture()),Z.__version=I.version,a.memory.textures++),X){O.__webglFramebuffer=[];for(let it=0;it<6;it++)if(I.mipmaps&&I.mipmaps.length>0){O.__webglFramebuffer[it]=[];for(let It=0;It<I.mipmaps.length;It++)O.__webglFramebuffer[it][It]=r.createFramebuffer()}else O.__webglFramebuffer[it]=r.createFramebuffer()}else{if(I.mipmaps&&I.mipmaps.length>0){O.__webglFramebuffer=[];for(let it=0;it<I.mipmaps.length;it++)O.__webglFramebuffer[it]=r.createFramebuffer()}else O.__webglFramebuffer=r.createFramebuffer();if(xt)for(let it=0,It=Q.length;it<It;it++){const Ct=i.get(Q[it]);Ct.__webglTexture===void 0&&(Ct.__webglTexture=r.createTexture(),a.memory.textures++)}if(M.samples>0&&ft(M)===!1){O.__webglMultisampledFramebuffer=r.createFramebuffer(),O.__webglColorRenderbuffer=[],e.bindFramebuffer(r.FRAMEBUFFER,O.__webglMultisampledFramebuffer);for(let it=0;it<Q.length;it++){const It=Q[it];O.__webglColorRenderbuffer[it]=r.createRenderbuffer(),r.bindRenderbuffer(r.RENDERBUFFER,O.__webglColorRenderbuffer[it]);const Ct=s.convert(It.format,It.colorSpace),tt=s.convert(It.type),ct=S(It.internalFormat,Ct,tt,It.colorSpace,M.isXRRenderTarget===!0),Rt=re(M);r.renderbufferStorageMultisample(r.RENDERBUFFER,Rt,ct,M.width,M.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+it,r.RENDERBUFFER,O.__webglColorRenderbuffer[it])}r.bindRenderbuffer(r.RENDERBUFFER,null),M.depthBuffer&&(O.__webglDepthRenderbuffer=r.createRenderbuffer(),Tt(O.__webglDepthRenderbuffer,M,!0)),e.bindFramebuffer(r.FRAMEBUFFER,null)}}if(X){e.bindTexture(r.TEXTURE_CUBE_MAP,Z.__webglTexture),Ot(r.TEXTURE_CUBE_MAP,I);for(let it=0;it<6;it++)if(I.mipmaps&&I.mipmaps.length>0)for(let It=0;It<I.mipmaps.length;It++)bt(O.__webglFramebuffer[it][It],M,I,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+it,It);else bt(O.__webglFramebuffer[it],M,I,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+it,0);g(I)&&f(r.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(xt){for(let it=0,It=Q.length;it<It;it++){const Ct=Q[it],tt=i.get(Ct);let ct=r.TEXTURE_2D;(M.isWebGL3DRenderTarget||M.isWebGLArrayRenderTarget)&&(ct=M.isWebGL3DRenderTarget?r.TEXTURE_3D:r.TEXTURE_2D_ARRAY),e.bindTexture(ct,tt.__webglTexture),Ot(ct,Ct),bt(O.__webglFramebuffer,M,Ct,r.COLOR_ATTACHMENT0+it,ct,0),g(Ct)&&f(ct)}e.unbindTexture()}else{let it=r.TEXTURE_2D;if((M.isWebGL3DRenderTarget||M.isWebGLArrayRenderTarget)&&(it=M.isWebGL3DRenderTarget?r.TEXTURE_3D:r.TEXTURE_2D_ARRAY),e.bindTexture(it,Z.__webglTexture),Ot(it,I),I.mipmaps&&I.mipmaps.length>0)for(let It=0;It<I.mipmaps.length;It++)bt(O.__webglFramebuffer[It],M,I,r.COLOR_ATTACHMENT0,it,It);else bt(O.__webglFramebuffer,M,I,r.COLOR_ATTACHMENT0,it,0);g(I)&&f(it),e.unbindTexture()}M.depthBuffer&&de(M)}function ee(M){const I=M.textures;for(let O=0,Z=I.length;O<Z;O++){const Q=I[O];if(g(Q)){const X=y(M),xt=i.get(Q).__webglTexture;e.bindTexture(X,xt),f(X),e.unbindTexture()}}}const Mt=[],Jt=[];function Et(M){if(M.samples>0){if(ft(M)===!1){const I=M.textures,O=M.width,Z=M.height;let Q=r.COLOR_BUFFER_BIT;const X=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,xt=i.get(M),it=I.length>1;if(it)for(let Ct=0;Ct<I.length;Ct++)e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.RENDERBUFFER,null),e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglFramebuffer),r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.TEXTURE_2D,null,0);e.bindFramebuffer(r.READ_FRAMEBUFFER,xt.__webglMultisampledFramebuffer);const It=M.texture.mipmaps;It&&It.length>0?e.bindFramebuffer(r.DRAW_FRAMEBUFFER,xt.__webglFramebuffer[0]):e.bindFramebuffer(r.DRAW_FRAMEBUFFER,xt.__webglFramebuffer);for(let Ct=0;Ct<I.length;Ct++){if(M.resolveDepthBuffer&&(M.depthBuffer&&(Q|=r.DEPTH_BUFFER_BIT),M.stencilBuffer&&M.resolveStencilBuffer&&(Q|=r.STENCIL_BUFFER_BIT)),it){r.framebufferRenderbuffer(r.READ_FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.RENDERBUFFER,xt.__webglColorRenderbuffer[Ct]);const tt=i.get(I[Ct]).__webglTexture;r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,tt,0)}r.blitFramebuffer(0,0,O,Z,0,0,O,Z,Q,r.NEAREST),l===!0&&(Mt.length=0,Jt.length=0,Mt.push(r.COLOR_ATTACHMENT0+Ct),M.depthBuffer&&M.resolveDepthBuffer===!1&&(Mt.push(X),Jt.push(X),r.invalidateFramebuffer(r.DRAW_FRAMEBUFFER,Jt)),r.invalidateFramebuffer(r.READ_FRAMEBUFFER,Mt))}if(e.bindFramebuffer(r.READ_FRAMEBUFFER,null),e.bindFramebuffer(r.DRAW_FRAMEBUFFER,null),it)for(let Ct=0;Ct<I.length;Ct++){e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.RENDERBUFFER,xt.__webglColorRenderbuffer[Ct]);const tt=i.get(I[Ct]).__webglTexture;e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglFramebuffer),r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.TEXTURE_2D,tt,0)}e.bindFramebuffer(r.DRAW_FRAMEBUFFER,xt.__webglMultisampledFramebuffer)}else if(M.depthBuffer&&M.resolveDepthBuffer===!1&&l){const I=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT;r.invalidateFramebuffer(r.DRAW_FRAMEBUFFER,[I])}}}function re(M){return Math.min(n.maxSamples,M.samples)}function ft(M){const I=i.get(M);return M.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&I.__useRenderToTexture!==!1}function Ut(M){const I=a.render.frame;h.get(M)!==I&&(h.set(M,I),M.update())}function Se(M,I){const O=M.colorSpace,Z=M.format,Q=M.type;return M.isCompressedTexture===!0||M.isVideoTexture===!0||O!==is&&O!==en&&(Yt.getTransfer(O)===qt?(Z!==hi||Q!==Ci)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",O)),I}function fe(M){return typeof HTMLImageElement<"u"&&M instanceof HTMLImageElement?(A.width=M.naturalWidth||M.width,A.height=M.naturalHeight||M.height):typeof VideoFrame<"u"&&M instanceof VideoFrame?(A.width=M.displayWidth,A.height=M.displayHeight):(A.width=M.width,A.height=M.height),A}this.allocateTextureUnit=B,this.resetTextureUnits=z,this.setTexture2D=W,this.setTexture2DArray=Y,this.setTexture3D=$,this.setTextureCube=H,this.rebindTextures=Wt,this.setupRenderTarget=_,this.updateRenderTargetMipmap=ee,this.updateMultisampleRenderTarget=Et,this.setupDepthRenderbuffer=de,this.setupFrameBufferTexture=bt,this.useMultisampledRTT=ft}function _I(r,t){function e(i,n=en){let s;const a=Yt.getTransfer(n);if(i===Ci)return r.UNSIGNED_BYTE;if(i===ro)return r.UNSIGNED_SHORT_4_4_4_4;if(i===ao)return r.UNSIGNED_SHORT_5_5_5_1;if(i===Fl)return r.UNSIGNED_INT_5_9_9_9_REV;if(i===Ll)return r.BYTE;if(i===Nl)return r.SHORT;if(i===Xs)return r.UNSIGNED_SHORT;if(i===so)return r.INT;if(i===Sn)return r.UNSIGNED_INT;if(i===Ni)return r.FLOAT;if(i===Zs)return r.HALF_FLOAT;if(i===Bl)return r.ALPHA;if(i===Ol)return r.RGB;if(i===hi)return r.RGBA;if(i===js)return r.DEPTH_COMPONENT;if(i===Qs)return r.DEPTH_STENCIL;if(i===Ul)return r.RED;if(i===oo)return r.RED_INTEGER;if(i===zl)return r.RG;if(i===Ao)return r.RG_INTEGER;if(i===lo)return r.RGBA_INTEGER;if(i===Lr||i===Nr||i===Fr||i===Br)if(a===qt)if(s=t.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===Lr)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===Nr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===Fr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===Br)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=t.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===Lr)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===Nr)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===Fr)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===Br)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===ho||i===co||i===uo||i===fo)if(s=t.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===ho)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===co)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===uo)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===fo)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===go||i===po||i===mo)if(s=t.get("WEBGL_compressed_texture_etc"),s!==null){if(i===go||i===po)return a===qt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===mo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===Io||i===Co||i===vo||i===xo||i===Eo||i===So||i===Mo||i===yo||i===bo||i===To||i===wo||i===Ro||i===_o||i===Po)if(s=t.get("WEBGL_compressed_texture_astc"),s!==null){if(i===Io)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===Co)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===vo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===xo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===Eo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===So)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===Mo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===yo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===bo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===To)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===wo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===Ro)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===_o)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===Po)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===Or||i===Do||i===Lo)if(s=t.get("EXT_texture_compression_bptc"),s!==null){if(i===Or)return a===qt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===Do)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===Lo)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===Gl||i===No||i===Fo||i===Bo)if(s=t.get("EXT_texture_compression_rgtc"),s!==null){if(i===Or)return s.COMPRESSED_RED_RGTC1_EXT;if(i===No)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===Fo)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===Bo)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===Js?r.UNSIGNED_INT_24_8:r[i]!==void 0?r[i]:null}return{convert:e}}class sc extends we{constructor(t=null){super(),this.sourceTexture=t,this.isExternalTexture=!0}}const PI=`
3931
+ }`;function PI(r,t,e){let i=new pA;const n=new Zt,s=new Zt,a=new he,o=new Pf({depthPacking:Vd}),l=new Lf,A={},h=e.maxTextureSize,c={[$i]:Oe,[Oe]:$i,[Ni]:Ni},u=new ln({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Zt},radius:{value:4}},vertexShader:RI,fragmentShader:_I}),d=u.clone();d.defines.HORIZONTAL_PASS=1;const p=new Rn;p.setAttribute("position",new Ei(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new mi(p,u),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Ll;let f=this.type;this.render=function(T,R,P){if(g.enabled===!1||g.autoUpdate===!1&&g.needsUpdate===!1||T.length===0)return;const E=r.getRenderTarget(),x=r.getActiveCubeFace(),b=r.getActiveMipmapLevel(),z=r.state;z.setBlending(tn),z.buffers.depth.getReversed()?z.buffers.color.setClear(0,0,0,0):z.buffers.color.setClear(1,1,1,1),z.buffers.depth.setTest(!0),z.setScissorTest(!1);const B=f!==Di&&this.type===Di,U=f===Di&&this.type!==Di;for(let W=0,Y=T.length;W<Y;W++){const $=T[W],H=$.shadow;if(H===void 0){console.warn("THREE.WebGLShadowMap:",$,"has no shadow.");continue}if(H.autoUpdate===!1&&H.needsUpdate===!1)continue;n.copy(H.mapSize);const rt=H.getFrameExtents();if(n.multiply(rt),s.copy(H.mapSize),(n.x>h||n.y>h)&&(n.x>h&&(s.x=Math.floor(h/rt.x),n.x=s.x*rt.x,H.mapSize.x=s.x),n.y>h&&(s.y=Math.floor(h/rt.y),n.y=s.y*rt.y,H.mapSize.y=s.y)),H.map===null||B===!0||U===!0){const mt=this.type!==Di?{minFilter:hi,magFilter:hi}:{};H.map!==null&&H.map.dispose(),H.map=new yn(n.x,n.y,mt),H.map.texture.name=$.name+".shadowMap",H.camera.updateProjectionMatrix()}r.setRenderTarget(H.map),r.clear();const lt=H.getViewportCount();for(let mt=0;mt<lt;mt++){const Ot=H.getViewport(mt);a.set(s.x*Ot.x,s.y*Ot.y,s.x*Ot.z,s.y*Ot.w),z.viewport(a),H.updateMatrices($,mt),i=H.getFrustum(),v(R,P,H.camera,$,this.type)}H.isPointLightShadow!==!0&&this.type===Di&&y(H,P),H.needsUpdate=!1}f=this.type,g.needsUpdate=!1,r.setRenderTarget(E,x,b)};function y(T,R){const P=t.update(m);u.defines.VSM_SAMPLES!==T.blurSamples&&(u.defines.VSM_SAMPLES=T.blurSamples,d.defines.VSM_SAMPLES=T.blurSamples,u.needsUpdate=!0,d.needsUpdate=!0),T.mapPass===null&&(T.mapPass=new yn(n.x,n.y)),u.uniforms.shadow_pass.value=T.map.texture,u.uniforms.resolution.value=T.mapSize,u.uniforms.radius.value=T.radius,r.setRenderTarget(T.mapPass),r.clear(),r.renderBufferDirect(R,null,P,u,m,null),d.uniforms.shadow_pass.value=T.mapPass.texture,d.uniforms.resolution.value=T.mapSize,d.uniforms.radius.value=T.radius,r.setRenderTarget(T.map),r.clear(),r.renderBufferDirect(R,null,P,d,m,null)}function S(T,R,P,E){let x=null;const b=P.isPointLight===!0?T.customDistanceMaterial:T.customDepthMaterial;if(b!==void 0)x=b;else if(x=P.isPointLight===!0?l:o,r.localClippingEnabled&&R.clipShadows===!0&&Array.isArray(R.clippingPlanes)&&R.clippingPlanes.length!==0||R.displacementMap&&R.displacementScale!==0||R.alphaMap&&R.alphaTest>0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){const z=x.uuid,B=R.uuid;let U=A[z];U===void 0&&(U={},A[z]=U);let W=U[B];W===void 0&&(W=x.clone(),U[B]=W,R.addEventListener("dispose",w)),x=W}if(x.visible=R.visible,x.wireframe=R.wireframe,E===Di?x.side=R.shadowSide!==null?R.shadowSide:R.side:x.side=R.shadowSide!==null?R.shadowSide:c[R.side],x.alphaMap=R.alphaMap,x.alphaTest=R.alphaToCoverage===!0?.5: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,P.isPointLight===!0&&x.isMeshDistanceMaterial===!0){const z=r.properties.get(x);z.light=P}return x}function v(T,R,P,E,x){if(T.visible===!1)return;if(T.layers.test(R.layers)&&(T.isMesh||T.isLine||T.isPoints)&&(T.castShadow||T.receiveShadow&&x===Di)&&(!T.frustumCulled||i.intersectsObject(T))){T.modelViewMatrix.multiplyMatrices(P.matrixWorldInverse,T.matrixWorld);const B=t.update(T),U=T.material;if(Array.isArray(U)){const W=B.groups;for(let Y=0,$=W.length;Y<$;Y++){const H=W[Y],rt=U[H.materialIndex];if(rt&&rt.visible){const lt=S(T,rt,E,x);T.onBeforeShadow(r,T,R,P,B,lt,H),r.renderBufferDirect(P,null,B,lt,T,H),T.onAfterShadow(r,T,R,P,B,lt,H)}}}else if(U.visible){const W=S(T,U,E,x);T.onBeforeShadow(r,T,R,P,B,W,null),r.renderBufferDirect(P,null,B,W,T,null),T.onAfterShadow(r,T,R,P,B,W,null)}}const z=T.children;for(let B=0,U=z.length;B<U;B++)v(z[B],R,P,E,x)}function w(T){T.target.removeEventListener("dispose",w);for(const P in A){const E=A[P],x=T.target.uuid;x in E&&(E[x].dispose(),delete E[x])}}}const LI={[qa]:Ka,[$a]:io,[to]:no,[ts]:eo,[Ka]:qa,[io]:$a,[no]:to,[eo]:ts};function DI(r,t){function e(){let L=!1;const et=new he;let st=null;const dt=new he(0,0,0,0);return{setMask:function(q){st!==q&&!L&&(r.colorMask(q,q,q,q),st=q)},setLocked:function(q){L=q},setClear:function(q,j,pt,Dt,ie){ie===!0&&(q*=Dt,j*=Dt,pt*=Dt),et.set(q,j,pt,Dt),dt.equals(et)===!1&&(r.clearColor(q,j,pt,Dt),dt.copy(et))},reset:function(){L=!1,st=null,dt.set(-1,0,0,0)}}}function i(){let L=!1,et=!1,st=null,dt=null,q=null;return{setReversed:function(j){if(et!==j){const pt=t.get("EXT_clip_control");j?pt.clipControlEXT(pt.LOWER_LEFT_EXT,pt.ZERO_TO_ONE_EXT):pt.clipControlEXT(pt.LOWER_LEFT_EXT,pt.NEGATIVE_ONE_TO_ONE_EXT),et=j;const Dt=q;q=null,this.setClear(Dt)}},getReversed:function(){return et},setTest:function(j){j?nt(r.DEPTH_TEST):bt(r.DEPTH_TEST)},setMask:function(j){st!==j&&!L&&(r.depthMask(j),st=j)},setFunc:function(j){if(et&&(j=LI[j]),dt!==j){switch(j){case qa:r.depthFunc(r.NEVER);break;case Ka:r.depthFunc(r.ALWAYS);break;case $a:r.depthFunc(r.LESS);break;case ts:r.depthFunc(r.LEQUAL);break;case to:r.depthFunc(r.EQUAL);break;case eo:r.depthFunc(r.GEQUAL);break;case io:r.depthFunc(r.GREATER);break;case no:r.depthFunc(r.NOTEQUAL);break;default:r.depthFunc(r.LEQUAL)}dt=j}},setLocked:function(j){L=j},setClear:function(j){q!==j&&(et&&(j=1-j),r.clearDepth(j),q=j)},reset:function(){L=!1,st=null,dt=null,q=null,et=!1}}}function n(){let L=!1,et=null,st=null,dt=null,q=null,j=null,pt=null,Dt=null,ie=null;return{setTest:function(Qt){L||(Qt?nt(r.STENCIL_TEST):bt(r.STENCIL_TEST))},setMask:function(Qt){et!==Qt&&!L&&(r.stencilMask(Qt),et=Qt)},setFunc:function(Qt,Hi,Mi){(st!==Qt||dt!==Hi||q!==Mi)&&(r.stencilFunc(Qt,Hi,Mi),st=Qt,dt=Hi,q=Mi)},setOp:function(Qt,Hi,Mi){(j!==Qt||pt!==Hi||Dt!==Mi)&&(r.stencilOp(Qt,Hi,Mi),j=Qt,pt=Hi,Dt=Mi)},setLocked:function(Qt){L=Qt},setClear:function(Qt){ie!==Qt&&(r.clearStencil(Qt),ie=Qt)},reset:function(){L=!1,et=null,st=null,dt=null,q=null,j=null,pt=null,Dt=null,ie=null}}}const s=new e,a=new i,o=new n,l=new WeakMap,A=new WeakMap;let h={},c={},u=new WeakMap,d=[],p=null,m=!1,g=null,f=null,y=null,S=null,v=null,w=null,T=null,R=new Vt(0,0,0),P=0,E=!1,x=null,b=null,z=null,B=null,U=null;const W=r.getParameter(r.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let Y=!1,$=0;const H=r.getParameter(r.VERSION);H.indexOf("WebGL")!==-1?($=parseFloat(/^WebGL (\d)/.exec(H)[1]),Y=$>=1):H.indexOf("OpenGL ES")!==-1&&($=parseFloat(/^OpenGL ES (\d)/.exec(H)[1]),Y=$>=2);let rt=null,lt={};const mt=r.getParameter(r.SCISSOR_BOX),Ot=r.getParameter(r.VIEWPORT),se=new he().fromArray(mt),$t=new he().fromArray(Ot);function J(L,et,st,dt){const q=new Uint8Array(4),j=r.createTexture();r.bindTexture(L,j),r.texParameteri(L,r.TEXTURE_MIN_FILTER,r.NEAREST),r.texParameteri(L,r.TEXTURE_MAG_FILTER,r.NEAREST);for(let pt=0;pt<st;pt++)L===r.TEXTURE_3D||L===r.TEXTURE_2D_ARRAY?r.texImage3D(et,0,r.RGBA,1,1,dt,0,r.RGBA,r.UNSIGNED_BYTE,q):r.texImage2D(et+pt,0,r.RGBA,1,1,0,r.RGBA,r.UNSIGNED_BYTE,q);return j}const ot={};ot[r.TEXTURE_2D]=J(r.TEXTURE_2D,r.TEXTURE_2D,1),ot[r.TEXTURE_CUBE_MAP]=J(r.TEXTURE_CUBE_MAP,r.TEXTURE_CUBE_MAP_POSITIVE_X,6),ot[r.TEXTURE_2D_ARRAY]=J(r.TEXTURE_2D_ARRAY,r.TEXTURE_2D_ARRAY,1,1),ot[r.TEXTURE_3D]=J(r.TEXTURE_3D,r.TEXTURE_3D,1,1),s.setClear(0,0,0,1),a.setClear(1),o.setClear(0),nt(r.DEPTH_TEST),a.setFunc(ts),Jt(!1),Et(Pl),nt(r.CULL_FACE),ee(tn);function nt(L){h[L]!==!0&&(r.enable(L),h[L]=!0)}function bt(L){h[L]!==!1&&(r.disable(L),h[L]=!1)}function Tt(L,et){return c[L]!==et?(r.bindFramebuffer(L,et),c[L]=et,L===r.DRAW_FRAMEBUFFER&&(c[r.FRAMEBUFFER]=et),L===r.FRAMEBUFFER&&(c[r.DRAW_FRAMEBUFFER]=et),!0):!1}function Lt(L,et){let st=d,dt=!1;if(L){st=u.get(et),st===void 0&&(st=[],u.set(et,st));const q=L.textures;if(st.length!==q.length||st[0]!==r.COLOR_ATTACHMENT0){for(let j=0,pt=q.length;j<pt;j++)st[j]=r.COLOR_ATTACHMENT0+j;st.length=q.length,dt=!0}}else st[0]!==r.BACK&&(st[0]=r.BACK,dt=!0);dt&&r.drawBuffers(st)}function de(L){return p!==L?(r.useProgram(L),p=L,!0):!1}const Wt={[xn]:r.FUNC_ADD,[gd]:r.FUNC_SUBTRACT,[pd]:r.FUNC_REVERSE_SUBTRACT};Wt[md]=r.MIN,Wt[Id]=r.MAX;const _={[Cd]:r.ZERO,[vd]:r.ONE,[xd]:r.SRC_COLOR,[ja]:r.SRC_ALPHA,[Td]:r.SRC_ALPHA_SATURATE,[yd]:r.DST_COLOR,[Sd]:r.DST_ALPHA,[Ed]:r.ONE_MINUS_SRC_COLOR,[Qa]:r.ONE_MINUS_SRC_ALPHA,[bd]:r.ONE_MINUS_DST_COLOR,[Md]:r.ONE_MINUS_DST_ALPHA,[wd]:r.CONSTANT_COLOR,[Rd]:r.ONE_MINUS_CONSTANT_COLOR,[_d]:r.CONSTANT_ALPHA,[Pd]:r.ONE_MINUS_CONSTANT_ALPHA};function ee(L,et,st,dt,q,j,pt,Dt,ie,Qt){if(L===tn){m===!0&&(bt(r.BLEND),m=!1);return}if(m===!1&&(nt(r.BLEND),m=!0),L!==fd){if(L!==g||Qt!==E){if((f!==xn||v!==xn)&&(r.blendEquation(r.FUNC_ADD),f=xn,v=xn),Qt)switch(L){case $n:r.blendFuncSeparate(r.ONE,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA);break;case Dl:r.blendFunc(r.ONE,r.ONE);break;case Nl:r.blendFuncSeparate(r.ZERO,r.ONE_MINUS_SRC_COLOR,r.ZERO,r.ONE);break;case Fl:r.blendFuncSeparate(r.DST_COLOR,r.ONE_MINUS_SRC_ALPHA,r.ZERO,r.ONE);break;default:console.error("THREE.WebGLState: Invalid blending: ",L);break}else switch(L){case $n:r.blendFuncSeparate(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA,r.ONE,r.ONE_MINUS_SRC_ALPHA);break;case Dl:r.blendFuncSeparate(r.SRC_ALPHA,r.ONE,r.ONE,r.ONE);break;case Nl:console.error("THREE.WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true");break;case Fl:console.error("THREE.WebGLState: MultiplyBlending requires material.premultipliedAlpha = true");break;default:console.error("THREE.WebGLState: Invalid blending: ",L);break}y=null,S=null,w=null,T=null,R.set(0,0,0),P=0,g=L,E=Qt}return}q=q||et,j=j||st,pt=pt||dt,(et!==f||q!==v)&&(r.blendEquationSeparate(Wt[et],Wt[q]),f=et,v=q),(st!==y||dt!==S||j!==w||pt!==T)&&(r.blendFuncSeparate(_[st],_[dt],_[j],_[pt]),y=st,S=dt,w=j,T=pt),(Dt.equals(R)===!1||ie!==P)&&(r.blendColor(Dt.r,Dt.g,Dt.b,ie),R.copy(Dt),P=ie),g=L,E=!1}function Mt(L,et){L.side===Ni?bt(r.CULL_FACE):nt(r.CULL_FACE);let st=L.side===Oe;et&&(st=!st),Jt(st),L.blending===$n&&L.transparent===!1?ee(tn):ee(L.blending,L.blendEquation,L.blendSrc,L.blendDst,L.blendEquationAlpha,L.blendSrcAlpha,L.blendDstAlpha,L.blendColor,L.blendAlpha,L.premultipliedAlpha),a.setFunc(L.depthFunc),a.setTest(L.depthTest),a.setMask(L.depthWrite),s.setMask(L.colorWrite);const dt=L.stencilWrite;o.setTest(dt),dt&&(o.setMask(L.stencilWriteMask),o.setFunc(L.stencilFunc,L.stencilRef,L.stencilFuncMask),o.setOp(L.stencilFail,L.stencilZFail,L.stencilZPass)),ft(L.polygonOffset,L.polygonOffsetFactor,L.polygonOffsetUnits),L.alphaToCoverage===!0?nt(r.SAMPLE_ALPHA_TO_COVERAGE):bt(r.SAMPLE_ALPHA_TO_COVERAGE)}function Jt(L){x!==L&&(L?r.frontFace(r.CW):r.frontFace(r.CCW),x=L)}function Et(L){L!==cd?(nt(r.CULL_FACE),L!==b&&(L===Pl?r.cullFace(r.BACK):L===ud?r.cullFace(r.FRONT):r.cullFace(r.FRONT_AND_BACK))):bt(r.CULL_FACE),b=L}function re(L){L!==z&&(Y&&r.lineWidth(L),z=L)}function ft(L,et,st){L?(nt(r.POLYGON_OFFSET_FILL),(B!==et||U!==st)&&(r.polygonOffset(et,st),B=et,U=st)):bt(r.POLYGON_OFFSET_FILL)}function Ut(L){L?nt(r.SCISSOR_TEST):bt(r.SCISSOR_TEST)}function Se(L){L===void 0&&(L=r.TEXTURE0+W-1),rt!==L&&(r.activeTexture(L),rt=L)}function fe(L,et,st){st===void 0&&(rt===null?st=r.TEXTURE0+W-1:st=rt);let dt=lt[st];dt===void 0&&(dt={type:void 0,texture:void 0},lt[st]=dt),(dt.type!==L||dt.texture!==et)&&(rt!==st&&(r.activeTexture(st),rt=st),r.bindTexture(L,et||ot[L]),dt.type=L,dt.texture=et)}function M(){const L=lt[rt];L!==void 0&&L.type!==void 0&&(r.bindTexture(L.type,null),L.type=void 0,L.texture=void 0)}function I(){try{r.compressedTexImage2D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function O(){try{r.compressedTexImage3D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function Z(){try{r.texSubImage2D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function Q(){try{r.texSubImage3D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function X(){try{r.compressedTexSubImage2D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function xt(){try{r.compressedTexSubImage3D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function it(){try{r.texStorage2D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function It(){try{r.texStorage3D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function Ct(){try{r.texImage2D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function tt(){try{r.texImage3D(...arguments)}catch(L){console.error("THREE.WebGLState:",L)}}function ct(L){se.equals(L)===!1&&(r.scissor(L.x,L.y,L.z,L.w),se.copy(L))}function Rt(L){$t.equals(L)===!1&&(r.viewport(L.x,L.y,L.z,L.w),$t.copy(L))}function vt(L,et){let st=A.get(et);st===void 0&&(st=new WeakMap,A.set(et,st));let dt=st.get(L);dt===void 0&&(dt=r.getUniformBlockIndex(et,L.name),st.set(L,dt))}function At(L,et){const dt=A.get(et).get(L);l.get(et)!==dt&&(r.uniformBlockBinding(et,dt,L.__bindingPointIndex),l.set(et,dt))}function Ft(){r.disable(r.BLEND),r.disable(r.CULL_FACE),r.disable(r.DEPTH_TEST),r.disable(r.POLYGON_OFFSET_FILL),r.disable(r.SCISSOR_TEST),r.disable(r.STENCIL_TEST),r.disable(r.SAMPLE_ALPHA_TO_COVERAGE),r.blendEquation(r.FUNC_ADD),r.blendFunc(r.ONE,r.ZERO),r.blendFuncSeparate(r.ONE,r.ZERO,r.ONE,r.ZERO),r.blendColor(0,0,0,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(r.LESS),a.setReversed(!1),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(r.ALWAYS,0,4294967295),r.stencilOp(r.KEEP,r.KEEP,r.KEEP),r.clearStencil(0),r.cullFace(r.BACK),r.frontFace(r.CCW),r.polygonOffset(0,0),r.activeTexture(r.TEXTURE0),r.bindFramebuffer(r.FRAMEBUFFER,null),r.bindFramebuffer(r.DRAW_FRAMEBUFFER,null),r.bindFramebuffer(r.READ_FRAMEBUFFER,null),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),h={},rt=null,lt={},c={},u=new WeakMap,d=[],p=null,m=!1,g=null,f=null,y=null,S=null,v=null,w=null,T=null,R=new Vt(0,0,0),P=0,E=!1,x=null,b=null,z=null,B=null,U=null,se.set(0,0,r.canvas.width,r.canvas.height),$t.set(0,0,r.canvas.width,r.canvas.height),s.reset(),a.reset(),o.reset()}return{buffers:{color:s,depth:a,stencil:o},enable:nt,disable:bt,bindFramebuffer:Tt,drawBuffers:Lt,useProgram:de,setBlending:ee,setMaterial:Mt,setFlipSided:Jt,setCullFace:Et,setLineWidth:re,setPolygonOffset:ft,setScissorTest:Ut,activeTexture:Se,bindTexture:fe,unbindTexture:M,compressedTexImage2D:I,compressedTexImage3D:O,texImage2D:Ct,texImage3D:tt,updateUBOMapping:vt,uniformBlockBinding:At,texStorage2D:it,texStorage3D:It,texSubImage2D:Z,texSubImage3D:Q,compressedTexSubImage2D:X,compressedTexSubImage3D:xt,scissor:ct,viewport:Rt,reset:Ft}}function NI(r,t,e,i,n,s,a){const o=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,l=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),A=new Zt,h=new WeakMap;let c;const u=new WeakMap;let d=!1;try{d=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function p(M,I){return d?new OffscreenCanvas(M,I):sr("canvas")}function m(M,I,O){let Z=1;const Q=fe(M);if((Q.width>O||Q.height>O)&&(Z=O/Math.max(Q.width,Q.height)),Z<1)if(typeof HTMLImageElement<"u"&&M instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&M instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&M instanceof ImageBitmap||typeof VideoFrame<"u"&&M instanceof VideoFrame){const X=Math.floor(Z*Q.width),xt=Math.floor(Z*Q.height);c===void 0&&(c=p(X,xt));const it=I?p(X,xt):c;return it.width=X,it.height=xt,it.getContext("2d").drawImage(M,0,0,X,xt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Q.width+"x"+Q.height+") to ("+X+"x"+xt+")."),it}else return"data"in M&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Q.width+"x"+Q.height+")."),M;return M}function g(M){return M.generateMipmaps}function f(M){r.generateMipmap(M)}function y(M){return M.isWebGLCubeRenderTarget?r.TEXTURE_CUBE_MAP:M.isWebGL3DRenderTarget?r.TEXTURE_3D:M.isWebGLArrayRenderTarget||M.isCompressedArrayTexture?r.TEXTURE_2D_ARRAY:r.TEXTURE_2D}function S(M,I,O,Z,Q=!1){if(M!==null){if(r[M]!==void 0)return r[M];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+M+"'")}let X=I;if(I===r.RED&&(O===r.FLOAT&&(X=r.R32F),O===r.HALF_FLOAT&&(X=r.R16F),O===r.UNSIGNED_BYTE&&(X=r.R8)),I===r.RED_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.R8UI),O===r.UNSIGNED_SHORT&&(X=r.R16UI),O===r.UNSIGNED_INT&&(X=r.R32UI),O===r.BYTE&&(X=r.R8I),O===r.SHORT&&(X=r.R16I),O===r.INT&&(X=r.R32I)),I===r.RG&&(O===r.FLOAT&&(X=r.RG32F),O===r.HALF_FLOAT&&(X=r.RG16F),O===r.UNSIGNED_BYTE&&(X=r.RG8)),I===r.RG_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.RG8UI),O===r.UNSIGNED_SHORT&&(X=r.RG16UI),O===r.UNSIGNED_INT&&(X=r.RG32UI),O===r.BYTE&&(X=r.RG8I),O===r.SHORT&&(X=r.RG16I),O===r.INT&&(X=r.RG32I)),I===r.RGB_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.RGB8UI),O===r.UNSIGNED_SHORT&&(X=r.RGB16UI),O===r.UNSIGNED_INT&&(X=r.RGB32UI),O===r.BYTE&&(X=r.RGB8I),O===r.SHORT&&(X=r.RGB16I),O===r.INT&&(X=r.RGB32I)),I===r.RGBA_INTEGER&&(O===r.UNSIGNED_BYTE&&(X=r.RGBA8UI),O===r.UNSIGNED_SHORT&&(X=r.RGBA16UI),O===r.UNSIGNED_INT&&(X=r.RGBA32UI),O===r.BYTE&&(X=r.RGBA8I),O===r.SHORT&&(X=r.RGBA16I),O===r.INT&&(X=r.RGBA32I)),I===r.RGB&&O===r.UNSIGNED_INT_5_9_9_9_REV&&(X=r.RGB9_E5),I===r.RGBA){const xt=Q?Vr:Yt.getTransfer(Z);O===r.FLOAT&&(X=r.RGBA32F),O===r.HALF_FLOAT&&(X=r.RGBA16F),O===r.UNSIGNED_BYTE&&(X=xt===qt?r.SRGB8_ALPHA8:r.RGBA8),O===r.UNSIGNED_SHORT_4_4_4_4&&(X=r.RGBA4),O===r.UNSIGNED_SHORT_5_5_5_1&&(X=r.RGB5_A1)}return(X===r.R16F||X===r.R32F||X===r.RG16F||X===r.RG32F||X===r.RGBA16F||X===r.RGBA32F)&&t.get("EXT_color_buffer_float"),X}function v(M,I){let O;return M?I===null||I===Mn||I===$s?O=r.DEPTH24_STENCIL8:I===Fi?O=r.DEPTH32F_STENCIL8:I===qs&&(O=r.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):I===null||I===Mn||I===$s?O=r.DEPTH_COMPONENT24:I===Fi?O=r.DEPTH_COMPONENT32F:I===qs&&(O=r.DEPTH_COMPONENT16),O}function w(M,I){return g(M)===!0||M.isFramebufferTexture&&M.minFilter!==hi&&M.minFilter!==Ci?Math.log2(Math.max(I.width,I.height))+1:M.mipmaps!==void 0&&M.mipmaps.length>0?M.mipmaps.length:M.isCompressedTexture&&Array.isArray(M.image)?I.mipmaps.length:1}function T(M){const I=M.target;I.removeEventListener("dispose",T),P(I),I.isVideoTexture&&h.delete(I)}function R(M){const I=M.target;I.removeEventListener("dispose",R),x(I)}function P(M){const I=i.get(M);if(I.__webglInit===void 0)return;const O=M.source,Z=u.get(O);if(Z){const Q=Z[I.__cacheKey];Q.usedTimes--,Q.usedTimes===0&&E(M),Object.keys(Z).length===0&&u.delete(O)}i.remove(M)}function E(M){const I=i.get(M);r.deleteTexture(I.__webglTexture);const O=M.source,Z=u.get(O);delete Z[I.__cacheKey],a.memory.textures--}function x(M){const I=i.get(M);if(M.depthTexture&&(M.depthTexture.dispose(),i.remove(M.depthTexture)),M.isWebGLCubeRenderTarget)for(let Z=0;Z<6;Z++){if(Array.isArray(I.__webglFramebuffer[Z]))for(let Q=0;Q<I.__webglFramebuffer[Z].length;Q++)r.deleteFramebuffer(I.__webglFramebuffer[Z][Q]);else r.deleteFramebuffer(I.__webglFramebuffer[Z]);I.__webglDepthbuffer&&r.deleteRenderbuffer(I.__webglDepthbuffer[Z])}else{if(Array.isArray(I.__webglFramebuffer))for(let Z=0;Z<I.__webglFramebuffer.length;Z++)r.deleteFramebuffer(I.__webglFramebuffer[Z]);else r.deleteFramebuffer(I.__webglFramebuffer);if(I.__webglDepthbuffer&&r.deleteRenderbuffer(I.__webglDepthbuffer),I.__webglMultisampledFramebuffer&&r.deleteFramebuffer(I.__webglMultisampledFramebuffer),I.__webglColorRenderbuffer)for(let Z=0;Z<I.__webglColorRenderbuffer.length;Z++)I.__webglColorRenderbuffer[Z]&&r.deleteRenderbuffer(I.__webglColorRenderbuffer[Z]);I.__webglDepthRenderbuffer&&r.deleteRenderbuffer(I.__webglDepthRenderbuffer)}const O=M.textures;for(let Z=0,Q=O.length;Z<Q;Z++){const X=i.get(O[Z]);X.__webglTexture&&(r.deleteTexture(X.__webglTexture),a.memory.textures--),i.remove(O[Z])}i.remove(M)}let b=0;function z(){b=0}function B(){const M=b;return M>=n.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+M+" texture units while this GPU supports only "+n.maxTextures),b+=1,M}function U(M){const I=[];return I.push(M.wrapS),I.push(M.wrapT),I.push(M.wrapR||0),I.push(M.magFilter),I.push(M.minFilter),I.push(M.anisotropy),I.push(M.internalFormat),I.push(M.format),I.push(M.type),I.push(M.generateMipmaps),I.push(M.premultiplyAlpha),I.push(M.flipY),I.push(M.unpackAlignment),I.push(M.colorSpace),I.join()}function W(M,I){const O=i.get(M);if(M.isVideoTexture&&Ut(M),M.isRenderTargetTexture===!1&&M.isExternalTexture!==!0&&M.version>0&&O.__version!==M.version){const Z=M.image;if(Z===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Z.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ot(O,M,I);return}}else M.isExternalTexture&&(O.__webglTexture=M.sourceTexture?M.sourceTexture:null);e.bindTexture(r.TEXTURE_2D,O.__webglTexture,r.TEXTURE0+I)}function Y(M,I){const O=i.get(M);if(M.isRenderTargetTexture===!1&&M.version>0&&O.__version!==M.version){ot(O,M,I);return}e.bindTexture(r.TEXTURE_2D_ARRAY,O.__webglTexture,r.TEXTURE0+I)}function $(M,I){const O=i.get(M);if(M.isRenderTargetTexture===!1&&M.version>0&&O.__version!==M.version){ot(O,M,I);return}e.bindTexture(r.TEXTURE_3D,O.__webglTexture,r.TEXTURE0+I)}function H(M,I){const O=i.get(M);if(M.version>0&&O.__version!==M.version){nt(O,M,I);return}e.bindTexture(r.TEXTURE_CUBE_MAP,O.__webglTexture,r.TEXTURE0+I)}const rt={[ao]:r.REPEAT,[En]:r.CLAMP_TO_EDGE,[oo]:r.MIRRORED_REPEAT},lt={[hi]:r.NEAREST,[kd]:r.NEAREST_MIPMAP_NEAREST,[Or]:r.NEAREST_MIPMAP_LINEAR,[Ci]:r.LINEAR,[Ao]:r.LINEAR_MIPMAP_NEAREST,[Sn]:r.LINEAR_MIPMAP_LINEAR},mt={[Yd]:r.NEVER,[qd]:r.ALWAYS,[Xd]:r.LESS,[Jl]:r.LEQUAL,[Zd]:r.EQUAL,[Qd]:r.GEQUAL,[Jd]:r.GREATER,[jd]:r.NOTEQUAL};function Ot(M,I){if(I.type===Fi&&t.has("OES_texture_float_linear")===!1&&(I.magFilter===Ci||I.magFilter===Ao||I.magFilter===Or||I.magFilter===Sn||I.minFilter===Ci||I.minFilter===Ao||I.minFilter===Or||I.minFilter===Sn)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),r.texParameteri(M,r.TEXTURE_WRAP_S,rt[I.wrapS]),r.texParameteri(M,r.TEXTURE_WRAP_T,rt[I.wrapT]),(M===r.TEXTURE_3D||M===r.TEXTURE_2D_ARRAY)&&r.texParameteri(M,r.TEXTURE_WRAP_R,rt[I.wrapR]),r.texParameteri(M,r.TEXTURE_MAG_FILTER,lt[I.magFilter]),r.texParameteri(M,r.TEXTURE_MIN_FILTER,lt[I.minFilter]),I.compareFunction&&(r.texParameteri(M,r.TEXTURE_COMPARE_MODE,r.COMPARE_REF_TO_TEXTURE),r.texParameteri(M,r.TEXTURE_COMPARE_FUNC,mt[I.compareFunction])),t.has("EXT_texture_filter_anisotropic")===!0){if(I.magFilter===hi||I.minFilter!==Or&&I.minFilter!==Sn||I.type===Fi&&t.has("OES_texture_float_linear")===!1)return;if(I.anisotropy>1||i.get(I).__currentAnisotropy){const O=t.get("EXT_texture_filter_anisotropic");r.texParameterf(M,O.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(I.anisotropy,n.getMaxAnisotropy())),i.get(I).__currentAnisotropy=I.anisotropy}}}function se(M,I){let O=!1;M.__webglInit===void 0&&(M.__webglInit=!0,I.addEventListener("dispose",T));const Z=I.source;let Q=u.get(Z);Q===void 0&&(Q={},u.set(Z,Q));const X=U(I);if(X!==M.__cacheKey){Q[X]===void 0&&(Q[X]={texture:r.createTexture(),usedTimes:0},a.memory.textures++,O=!0),Q[X].usedTimes++;const xt=Q[M.__cacheKey];xt!==void 0&&(Q[M.__cacheKey].usedTimes--,xt.usedTimes===0&&E(I)),M.__cacheKey=X,M.__webglTexture=Q[X].texture}return O}function $t(M,I,O){return Math.floor(Math.floor(M/O)/I)}function J(M,I,O,Z){const X=M.updateRanges;if(X.length===0)e.texSubImage2D(r.TEXTURE_2D,0,0,0,I.width,I.height,O,Z,I.data);else{X.sort((tt,ct)=>tt.start-ct.start);let xt=0;for(let tt=1;tt<X.length;tt++){const ct=X[xt],Rt=X[tt],vt=ct.start+ct.count,At=$t(Rt.start,I.width,4),Ft=$t(ct.start,I.width,4);Rt.start<=vt+1&&At===Ft&&$t(Rt.start+Rt.count-1,I.width,4)===At?ct.count=Math.max(ct.count,Rt.start+Rt.count-ct.start):(++xt,X[xt]=Rt)}X.length=xt+1;const it=r.getParameter(r.UNPACK_ROW_LENGTH),It=r.getParameter(r.UNPACK_SKIP_PIXELS),Ct=r.getParameter(r.UNPACK_SKIP_ROWS);r.pixelStorei(r.UNPACK_ROW_LENGTH,I.width);for(let tt=0,ct=X.length;tt<ct;tt++){const Rt=X[tt],vt=Math.floor(Rt.start/4),At=Math.ceil(Rt.count/4),Ft=vt%I.width,L=Math.floor(vt/I.width),et=At,st=1;r.pixelStorei(r.UNPACK_SKIP_PIXELS,Ft),r.pixelStorei(r.UNPACK_SKIP_ROWS,L),e.texSubImage2D(r.TEXTURE_2D,0,Ft,L,et,st,O,Z,I.data)}M.clearUpdateRanges(),r.pixelStorei(r.UNPACK_ROW_LENGTH,it),r.pixelStorei(r.UNPACK_SKIP_PIXELS,It),r.pixelStorei(r.UNPACK_SKIP_ROWS,Ct)}}function ot(M,I,O){let Z=r.TEXTURE_2D;(I.isDataArrayTexture||I.isCompressedArrayTexture)&&(Z=r.TEXTURE_2D_ARRAY),I.isData3DTexture&&(Z=r.TEXTURE_3D);const Q=se(M,I),X=I.source;e.bindTexture(Z,M.__webglTexture,r.TEXTURE0+O);const xt=i.get(X);if(X.version!==xt.__version||Q===!0){e.activeTexture(r.TEXTURE0+O);const it=Yt.getPrimaries(Yt.workingColorSpace),It=I.colorSpace===nn?null:Yt.getPrimaries(I.colorSpace),Ct=I.colorSpace===nn||it===It?r.NONE:r.BROWSER_DEFAULT_WEBGL;r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,I.flipY),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,I.premultiplyAlpha),r.pixelStorei(r.UNPACK_ALIGNMENT,I.unpackAlignment),r.pixelStorei(r.UNPACK_COLORSPACE_CONVERSION_WEBGL,Ct);let tt=m(I.image,!1,n.maxTextureSize);tt=Se(I,tt);const ct=s.convert(I.format,I.colorSpace),Rt=s.convert(I.type);let vt=S(I.internalFormat,ct,Rt,I.colorSpace,I.isVideoTexture);Ot(Z,I);let At;const Ft=I.mipmaps,L=I.isVideoTexture!==!0,et=xt.__version===void 0||Q===!0,st=X.dataReady,dt=w(I,tt);if(I.isDepthTexture)vt=v(I.format===er,I.type),et&&(L?e.texStorage2D(r.TEXTURE_2D,1,vt,tt.width,tt.height):e.texImage2D(r.TEXTURE_2D,0,vt,tt.width,tt.height,0,ct,Rt,null));else if(I.isDataTexture)if(Ft.length>0){L&&et&&e.texStorage2D(r.TEXTURE_2D,dt,vt,Ft[0].width,Ft[0].height);for(let q=0,j=Ft.length;q<j;q++)At=Ft[q],L?st&&e.texSubImage2D(r.TEXTURE_2D,q,0,0,At.width,At.height,ct,Rt,At.data):e.texImage2D(r.TEXTURE_2D,q,vt,At.width,At.height,0,ct,Rt,At.data);I.generateMipmaps=!1}else L?(et&&e.texStorage2D(r.TEXTURE_2D,dt,vt,tt.width,tt.height),st&&J(I,tt,ct,Rt)):e.texImage2D(r.TEXTURE_2D,0,vt,tt.width,tt.height,0,ct,Rt,tt.data);else if(I.isCompressedTexture)if(I.isCompressedArrayTexture){L&&et&&e.texStorage3D(r.TEXTURE_2D_ARRAY,dt,vt,Ft[0].width,Ft[0].height,tt.depth);for(let q=0,j=Ft.length;q<j;q++)if(At=Ft[q],I.format!==ci)if(ct!==null)if(L){if(st)if(I.layerUpdates.size>0){const pt=Dh(At.width,At.height,I.format,I.type);for(const Dt of I.layerUpdates){const ie=At.data.subarray(Dt*pt/At.data.BYTES_PER_ELEMENT,(Dt+1)*pt/At.data.BYTES_PER_ELEMENT);e.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,q,0,0,Dt,At.width,At.height,1,ct,ie)}I.clearLayerUpdates()}else e.compressedTexSubImage3D(r.TEXTURE_2D_ARRAY,q,0,0,0,At.width,At.height,tt.depth,ct,At.data)}else e.compressedTexImage3D(r.TEXTURE_2D_ARRAY,q,vt,At.width,At.height,tt.depth,0,At.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else L?st&&e.texSubImage3D(r.TEXTURE_2D_ARRAY,q,0,0,0,At.width,At.height,tt.depth,ct,Rt,At.data):e.texImage3D(r.TEXTURE_2D_ARRAY,q,vt,At.width,At.height,tt.depth,0,ct,Rt,At.data)}else{L&&et&&e.texStorage2D(r.TEXTURE_2D,dt,vt,Ft[0].width,Ft[0].height);for(let q=0,j=Ft.length;q<j;q++)At=Ft[q],I.format!==ci?ct!==null?L?st&&e.compressedTexSubImage2D(r.TEXTURE_2D,q,0,0,At.width,At.height,ct,At.data):e.compressedTexImage2D(r.TEXTURE_2D,q,vt,At.width,At.height,0,At.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):L?st&&e.texSubImage2D(r.TEXTURE_2D,q,0,0,At.width,At.height,ct,Rt,At.data):e.texImage2D(r.TEXTURE_2D,q,vt,At.width,At.height,0,ct,Rt,At.data)}else if(I.isDataArrayTexture)if(L){if(et&&e.texStorage3D(r.TEXTURE_2D_ARRAY,dt,vt,tt.width,tt.height,tt.depth),st)if(I.layerUpdates.size>0){const q=Dh(tt.width,tt.height,I.format,I.type);for(const j of I.layerUpdates){const pt=tt.data.subarray(j*q/tt.data.BYTES_PER_ELEMENT,(j+1)*q/tt.data.BYTES_PER_ELEMENT);e.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,j,tt.width,tt.height,1,ct,Rt,pt)}I.clearLayerUpdates()}else e.texSubImage3D(r.TEXTURE_2D_ARRAY,0,0,0,0,tt.width,tt.height,tt.depth,ct,Rt,tt.data)}else e.texImage3D(r.TEXTURE_2D_ARRAY,0,vt,tt.width,tt.height,tt.depth,0,ct,Rt,tt.data);else if(I.isData3DTexture)L?(et&&e.texStorage3D(r.TEXTURE_3D,dt,vt,tt.width,tt.height,tt.depth),st&&e.texSubImage3D(r.TEXTURE_3D,0,0,0,0,tt.width,tt.height,tt.depth,ct,Rt,tt.data)):e.texImage3D(r.TEXTURE_3D,0,vt,tt.width,tt.height,tt.depth,0,ct,Rt,tt.data);else if(I.isFramebufferTexture){if(et)if(L)e.texStorage2D(r.TEXTURE_2D,dt,vt,tt.width,tt.height);else{let q=tt.width,j=tt.height;for(let pt=0;pt<dt;pt++)e.texImage2D(r.TEXTURE_2D,pt,vt,q,j,0,ct,Rt,null),q>>=1,j>>=1}}else if(Ft.length>0){if(L&&et){const q=fe(Ft[0]);e.texStorage2D(r.TEXTURE_2D,dt,vt,q.width,q.height)}for(let q=0,j=Ft.length;q<j;q++)At=Ft[q],L?st&&e.texSubImage2D(r.TEXTURE_2D,q,0,0,ct,Rt,At):e.texImage2D(r.TEXTURE_2D,q,vt,ct,Rt,At);I.generateMipmaps=!1}else if(L){if(et){const q=fe(tt);e.texStorage2D(r.TEXTURE_2D,dt,vt,q.width,q.height)}st&&e.texSubImage2D(r.TEXTURE_2D,0,0,0,ct,Rt,tt)}else e.texImage2D(r.TEXTURE_2D,0,vt,ct,Rt,tt);g(I)&&f(Z),xt.__version=X.version,I.onUpdate&&I.onUpdate(I)}M.__version=I.version}function nt(M,I,O){if(I.image.length!==6)return;const Z=se(M,I),Q=I.source;e.bindTexture(r.TEXTURE_CUBE_MAP,M.__webglTexture,r.TEXTURE0+O);const X=i.get(Q);if(Q.version!==X.__version||Z===!0){e.activeTexture(r.TEXTURE0+O);const xt=Yt.getPrimaries(Yt.workingColorSpace),it=I.colorSpace===nn?null:Yt.getPrimaries(I.colorSpace),It=I.colorSpace===nn||xt===it?r.NONE:r.BROWSER_DEFAULT_WEBGL;r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,I.flipY),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,I.premultiplyAlpha),r.pixelStorei(r.UNPACK_ALIGNMENT,I.unpackAlignment),r.pixelStorei(r.UNPACK_COLORSPACE_CONVERSION_WEBGL,It);const Ct=I.isCompressedTexture||I.image[0].isCompressedTexture,tt=I.image[0]&&I.image[0].isDataTexture,ct=[];for(let j=0;j<6;j++)!Ct&&!tt?ct[j]=m(I.image[j],!0,n.maxCubemapSize):ct[j]=tt?I.image[j].image:I.image[j],ct[j]=Se(I,ct[j]);const Rt=ct[0],vt=s.convert(I.format,I.colorSpace),At=s.convert(I.type),Ft=S(I.internalFormat,vt,At,I.colorSpace),L=I.isVideoTexture!==!0,et=X.__version===void 0||Z===!0,st=Q.dataReady;let dt=w(I,Rt);Ot(r.TEXTURE_CUBE_MAP,I);let q;if(Ct){L&&et&&e.texStorage2D(r.TEXTURE_CUBE_MAP,dt,Ft,Rt.width,Rt.height);for(let j=0;j<6;j++){q=ct[j].mipmaps;for(let pt=0;pt<q.length;pt++){const Dt=q[pt];I.format!==ci?vt!==null?L?st&&e.compressedTexSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,0,0,Dt.width,Dt.height,vt,Dt.data):e.compressedTexImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,Ft,Dt.width,Dt.height,0,Dt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):L?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,0,0,Dt.width,Dt.height,vt,At,Dt.data):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt,Ft,Dt.width,Dt.height,0,vt,At,Dt.data)}}}else{if(q=I.mipmaps,L&&et){q.length>0&&dt++;const j=fe(ct[0]);e.texStorage2D(r.TEXTURE_CUBE_MAP,dt,Ft,j.width,j.height)}for(let j=0;j<6;j++)if(tt){L?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,0,0,ct[j].width,ct[j].height,vt,At,ct[j].data):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,Ft,ct[j].width,ct[j].height,0,vt,At,ct[j].data);for(let pt=0;pt<q.length;pt++){const ie=q[pt].image[j].image;L?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,0,0,ie.width,ie.height,vt,At,ie.data):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,Ft,ie.width,ie.height,0,vt,At,ie.data)}}else{L?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,0,0,vt,At,ct[j]):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,0,Ft,vt,At,ct[j]);for(let pt=0;pt<q.length;pt++){const Dt=q[pt];L?st&&e.texSubImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,0,0,vt,At,Dt.image[j]):e.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+j,pt+1,Ft,vt,At,Dt.image[j])}}}g(I)&&f(r.TEXTURE_CUBE_MAP),X.__version=Q.version,I.onUpdate&&I.onUpdate(I)}M.__version=I.version}function bt(M,I,O,Z,Q,X){const xt=s.convert(O.format,O.colorSpace),it=s.convert(O.type),It=S(O.internalFormat,xt,it,O.colorSpace),Ct=i.get(I),tt=i.get(O);if(tt.__renderTarget=I,!Ct.__hasExternalTextures){const ct=Math.max(1,I.width>>X),Rt=Math.max(1,I.height>>X);Q===r.TEXTURE_3D||Q===r.TEXTURE_2D_ARRAY?e.texImage3D(Q,X,It,ct,Rt,I.depth,0,xt,it,null):e.texImage2D(Q,X,It,ct,Rt,0,xt,it,null)}e.bindFramebuffer(r.FRAMEBUFFER,M),ft(I)?o.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,Z,Q,tt.__webglTexture,0,re(I)):(Q===r.TEXTURE_2D||Q>=r.TEXTURE_CUBE_MAP_POSITIVE_X&&Q<=r.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&r.framebufferTexture2D(r.FRAMEBUFFER,Z,Q,tt.__webglTexture,X),e.bindFramebuffer(r.FRAMEBUFFER,null)}function Tt(M,I,O){if(r.bindRenderbuffer(r.RENDERBUFFER,M),I.depthBuffer){const Z=I.depthTexture,Q=Z&&Z.isDepthTexture?Z.type:null,X=v(I.stencilBuffer,Q),xt=I.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,it=re(I);ft(I)?o.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,it,X,I.width,I.height):O?r.renderbufferStorageMultisample(r.RENDERBUFFER,it,X,I.width,I.height):r.renderbufferStorage(r.RENDERBUFFER,X,I.width,I.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,xt,r.RENDERBUFFER,M)}else{const Z=I.textures;for(let Q=0;Q<Z.length;Q++){const X=Z[Q],xt=s.convert(X.format,X.colorSpace),it=s.convert(X.type),It=S(X.internalFormat,xt,it,X.colorSpace),Ct=re(I);O&&ft(I)===!1?r.renderbufferStorageMultisample(r.RENDERBUFFER,Ct,It,I.width,I.height):ft(I)?o.renderbufferStorageMultisampleEXT(r.RENDERBUFFER,Ct,It,I.width,I.height):r.renderbufferStorage(r.RENDERBUFFER,It,I.width,I.height)}}r.bindRenderbuffer(r.RENDERBUFFER,null)}function Lt(M,I){if(I&&I.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(r.FRAMEBUFFER,M),!(I.depthTexture&&I.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const Z=i.get(I.depthTexture);Z.__renderTarget=I,(!Z.__webglTexture||I.depthTexture.image.width!==I.width||I.depthTexture.image.height!==I.height)&&(I.depthTexture.image.width=I.width,I.depthTexture.image.height=I.height,I.depthTexture.needsUpdate=!0),W(I.depthTexture,0);const Q=Z.__webglTexture,X=re(I);if(I.depthTexture.format===tr)ft(I)?o.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,Q,0,X):r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,Q,0);else if(I.depthTexture.format===er)ft(I)?o.framebufferTexture2DMultisampleEXT(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.TEXTURE_2D,Q,0,X):r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_STENCIL_ATTACHMENT,r.TEXTURE_2D,Q,0);else throw new Error("Unknown depthTexture format")}function de(M){const I=i.get(M),O=M.isWebGLCubeRenderTarget===!0;if(I.__boundDepthTexture!==M.depthTexture){const Z=M.depthTexture;if(I.__depthDisposeCallback&&I.__depthDisposeCallback(),Z){const Q=()=>{delete I.__boundDepthTexture,delete I.__depthDisposeCallback,Z.removeEventListener("dispose",Q)};Z.addEventListener("dispose",Q),I.__depthDisposeCallback=Q}I.__boundDepthTexture=Z}if(M.depthTexture&&!I.__autoAllocateDepthBuffer){if(O)throw new Error("target.depthTexture not supported in Cube render targets");const Z=M.texture.mipmaps;Z&&Z.length>0?Lt(I.__webglFramebuffer[0],M):Lt(I.__webglFramebuffer,M)}else if(O){I.__webglDepthbuffer=[];for(let Z=0;Z<6;Z++)if(e.bindFramebuffer(r.FRAMEBUFFER,I.__webglFramebuffer[Z]),I.__webglDepthbuffer[Z]===void 0)I.__webglDepthbuffer[Z]=r.createRenderbuffer(),Tt(I.__webglDepthbuffer[Z],M,!1);else{const Q=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,X=I.__webglDepthbuffer[Z];r.bindRenderbuffer(r.RENDERBUFFER,X),r.framebufferRenderbuffer(r.FRAMEBUFFER,Q,r.RENDERBUFFER,X)}}else{const Z=M.texture.mipmaps;if(Z&&Z.length>0?e.bindFramebuffer(r.FRAMEBUFFER,I.__webglFramebuffer[0]):e.bindFramebuffer(r.FRAMEBUFFER,I.__webglFramebuffer),I.__webglDepthbuffer===void 0)I.__webglDepthbuffer=r.createRenderbuffer(),Tt(I.__webglDepthbuffer,M,!1);else{const Q=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,X=I.__webglDepthbuffer;r.bindRenderbuffer(r.RENDERBUFFER,X),r.framebufferRenderbuffer(r.FRAMEBUFFER,Q,r.RENDERBUFFER,X)}}e.bindFramebuffer(r.FRAMEBUFFER,null)}function Wt(M,I,O){const Z=i.get(M);I!==void 0&&bt(Z.__webglFramebuffer,M,M.texture,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,0),O!==void 0&&de(M)}function _(M){const I=M.texture,O=i.get(M),Z=i.get(I);M.addEventListener("dispose",R);const Q=M.textures,X=M.isWebGLCubeRenderTarget===!0,xt=Q.length>1;if(xt||(Z.__webglTexture===void 0&&(Z.__webglTexture=r.createTexture()),Z.__version=I.version,a.memory.textures++),X){O.__webglFramebuffer=[];for(let it=0;it<6;it++)if(I.mipmaps&&I.mipmaps.length>0){O.__webglFramebuffer[it]=[];for(let It=0;It<I.mipmaps.length;It++)O.__webglFramebuffer[it][It]=r.createFramebuffer()}else O.__webglFramebuffer[it]=r.createFramebuffer()}else{if(I.mipmaps&&I.mipmaps.length>0){O.__webglFramebuffer=[];for(let it=0;it<I.mipmaps.length;it++)O.__webglFramebuffer[it]=r.createFramebuffer()}else O.__webglFramebuffer=r.createFramebuffer();if(xt)for(let it=0,It=Q.length;it<It;it++){const Ct=i.get(Q[it]);Ct.__webglTexture===void 0&&(Ct.__webglTexture=r.createTexture(),a.memory.textures++)}if(M.samples>0&&ft(M)===!1){O.__webglMultisampledFramebuffer=r.createFramebuffer(),O.__webglColorRenderbuffer=[],e.bindFramebuffer(r.FRAMEBUFFER,O.__webglMultisampledFramebuffer);for(let it=0;it<Q.length;it++){const It=Q[it];O.__webglColorRenderbuffer[it]=r.createRenderbuffer(),r.bindRenderbuffer(r.RENDERBUFFER,O.__webglColorRenderbuffer[it]);const Ct=s.convert(It.format,It.colorSpace),tt=s.convert(It.type),ct=S(It.internalFormat,Ct,tt,It.colorSpace,M.isXRRenderTarget===!0),Rt=re(M);r.renderbufferStorageMultisample(r.RENDERBUFFER,Rt,ct,M.width,M.height),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+it,r.RENDERBUFFER,O.__webglColorRenderbuffer[it])}r.bindRenderbuffer(r.RENDERBUFFER,null),M.depthBuffer&&(O.__webglDepthRenderbuffer=r.createRenderbuffer(),Tt(O.__webglDepthRenderbuffer,M,!0)),e.bindFramebuffer(r.FRAMEBUFFER,null)}}if(X){e.bindTexture(r.TEXTURE_CUBE_MAP,Z.__webglTexture),Ot(r.TEXTURE_CUBE_MAP,I);for(let it=0;it<6;it++)if(I.mipmaps&&I.mipmaps.length>0)for(let It=0;It<I.mipmaps.length;It++)bt(O.__webglFramebuffer[it][It],M,I,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+it,It);else bt(O.__webglFramebuffer[it],M,I,r.COLOR_ATTACHMENT0,r.TEXTURE_CUBE_MAP_POSITIVE_X+it,0);g(I)&&f(r.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(xt){for(let it=0,It=Q.length;it<It;it++){const Ct=Q[it],tt=i.get(Ct);let ct=r.TEXTURE_2D;(M.isWebGL3DRenderTarget||M.isWebGLArrayRenderTarget)&&(ct=M.isWebGL3DRenderTarget?r.TEXTURE_3D:r.TEXTURE_2D_ARRAY),e.bindTexture(ct,tt.__webglTexture),Ot(ct,Ct),bt(O.__webglFramebuffer,M,Ct,r.COLOR_ATTACHMENT0+it,ct,0),g(Ct)&&f(ct)}e.unbindTexture()}else{let it=r.TEXTURE_2D;if((M.isWebGL3DRenderTarget||M.isWebGLArrayRenderTarget)&&(it=M.isWebGL3DRenderTarget?r.TEXTURE_3D:r.TEXTURE_2D_ARRAY),e.bindTexture(it,Z.__webglTexture),Ot(it,I),I.mipmaps&&I.mipmaps.length>0)for(let It=0;It<I.mipmaps.length;It++)bt(O.__webglFramebuffer[It],M,I,r.COLOR_ATTACHMENT0,it,It);else bt(O.__webglFramebuffer,M,I,r.COLOR_ATTACHMENT0,it,0);g(I)&&f(it),e.unbindTexture()}M.depthBuffer&&de(M)}function ee(M){const I=M.textures;for(let O=0,Z=I.length;O<Z;O++){const Q=I[O];if(g(Q)){const X=y(M),xt=i.get(Q).__webglTexture;e.bindTexture(X,xt),f(X),e.unbindTexture()}}}const Mt=[],Jt=[];function Et(M){if(M.samples>0){if(ft(M)===!1){const I=M.textures,O=M.width,Z=M.height;let Q=r.COLOR_BUFFER_BIT;const X=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,xt=i.get(M),it=I.length>1;if(it)for(let Ct=0;Ct<I.length;Ct++)e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.RENDERBUFFER,null),e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglFramebuffer),r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.TEXTURE_2D,null,0);e.bindFramebuffer(r.READ_FRAMEBUFFER,xt.__webglMultisampledFramebuffer);const It=M.texture.mipmaps;It&&It.length>0?e.bindFramebuffer(r.DRAW_FRAMEBUFFER,xt.__webglFramebuffer[0]):e.bindFramebuffer(r.DRAW_FRAMEBUFFER,xt.__webglFramebuffer);for(let Ct=0;Ct<I.length;Ct++){if(M.resolveDepthBuffer&&(M.depthBuffer&&(Q|=r.DEPTH_BUFFER_BIT),M.stencilBuffer&&M.resolveStencilBuffer&&(Q|=r.STENCIL_BUFFER_BIT)),it){r.framebufferRenderbuffer(r.READ_FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.RENDERBUFFER,xt.__webglColorRenderbuffer[Ct]);const tt=i.get(I[Ct]).__webglTexture;r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,tt,0)}r.blitFramebuffer(0,0,O,Z,0,0,O,Z,Q,r.NEAREST),l===!0&&(Mt.length=0,Jt.length=0,Mt.push(r.COLOR_ATTACHMENT0+Ct),M.depthBuffer&&M.resolveDepthBuffer===!1&&(Mt.push(X),Jt.push(X),r.invalidateFramebuffer(r.DRAW_FRAMEBUFFER,Jt)),r.invalidateFramebuffer(r.READ_FRAMEBUFFER,Mt))}if(e.bindFramebuffer(r.READ_FRAMEBUFFER,null),e.bindFramebuffer(r.DRAW_FRAMEBUFFER,null),it)for(let Ct=0;Ct<I.length;Ct++){e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglMultisampledFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.RENDERBUFFER,xt.__webglColorRenderbuffer[Ct]);const tt=i.get(I[Ct]).__webglTexture;e.bindFramebuffer(r.FRAMEBUFFER,xt.__webglFramebuffer),r.framebufferTexture2D(r.DRAW_FRAMEBUFFER,r.COLOR_ATTACHMENT0+Ct,r.TEXTURE_2D,tt,0)}e.bindFramebuffer(r.DRAW_FRAMEBUFFER,xt.__webglMultisampledFramebuffer)}else if(M.depthBuffer&&M.resolveDepthBuffer===!1&&l){const I=M.stencilBuffer?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT;r.invalidateFramebuffer(r.DRAW_FRAMEBUFFER,[I])}}}function re(M){return Math.min(n.maxSamples,M.samples)}function ft(M){const I=i.get(M);return M.samples>0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&I.__useRenderToTexture!==!1}function Ut(M){const I=a.render.frame;h.get(M)!==I&&(h.set(M,I),M.update())}function Se(M,I){const O=M.colorSpace,Z=M.format,Q=M.type;return M.isCompressedTexture===!0||M.isVideoTexture===!0||O!==ns&&O!==nn&&(Yt.getTransfer(O)===qt?(Z!==ci||Q!==vi)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",O)),I}function fe(M){return typeof HTMLImageElement<"u"&&M instanceof HTMLImageElement?(A.width=M.naturalWidth||M.width,A.height=M.naturalHeight||M.height):typeof VideoFrame<"u"&&M instanceof VideoFrame?(A.width=M.displayWidth,A.height=M.displayHeight):(A.width=M.width,A.height=M.height),A}this.allocateTextureUnit=B,this.resetTextureUnits=z,this.setTexture2D=W,this.setTexture2DArray=Y,this.setTexture3D=$,this.setTextureCube=H,this.rebindTextures=Wt,this.setupRenderTarget=_,this.updateRenderTargetMipmap=ee,this.updateMultisampleRenderTarget=Et,this.setupDepthRenderbuffer=de,this.setupFrameBufferTexture=bt,this.useMultisampledRTT=ft}function FI(r,t){function e(i,n=nn){let s;const a=Yt.getTransfer(n);if(i===vi)return r.UNSIGNED_BYTE;if(i===ho)return r.UNSIGNED_SHORT_4_4_4_4;if(i===co)return r.UNSIGNED_SHORT_5_5_5_1;if(i===Gl)return r.UNSIGNED_INT_5_9_9_9_REV;if(i===Ul)return r.BYTE;if(i===zl)return r.SHORT;if(i===qs)return r.UNSIGNED_SHORT;if(i===lo)return r.INT;if(i===Mn)return r.UNSIGNED_INT;if(i===Fi)return r.FLOAT;if(i===Ks)return r.HALF_FLOAT;if(i===kl)return r.ALPHA;if(i===Hl)return r.RGB;if(i===ci)return r.RGBA;if(i===tr)return r.DEPTH_COMPONENT;if(i===er)return r.DEPTH_STENCIL;if(i===Vl)return r.RED;if(i===uo)return r.RED_INTEGER;if(i===Wl)return r.RG;if(i===fo)return r.RG_INTEGER;if(i===go)return r.RGBA_INTEGER;if(i===Ur||i===zr||i===Gr||i===kr)if(a===qt)if(s=t.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===Ur)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===zr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===Gr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===kr)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=t.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===Ur)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===zr)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===Gr)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===kr)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===po||i===mo||i===Io||i===Co)if(s=t.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===po)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===mo)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===Io)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===Co)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===vo||i===xo||i===Eo)if(s=t.get("WEBGL_compressed_texture_etc"),s!==null){if(i===vo||i===xo)return a===qt?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===Eo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(i===So||i===Mo||i===yo||i===bo||i===To||i===wo||i===Ro||i===_o||i===Po||i===Lo||i===Do||i===No||i===Fo||i===Bo)if(s=t.get("WEBGL_compressed_texture_astc"),s!==null){if(i===So)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===Mo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===yo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===bo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===To)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===wo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===Ro)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===_o)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===Po)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===Lo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===Do)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===No)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===Fo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===Bo)return a===qt?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===Hr||i===Oo||i===Uo)if(s=t.get("EXT_texture_compression_bptc"),s!==null){if(i===Hr)return a===qt?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===Oo)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===Uo)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===Yl||i===zo||i===Go||i===ko)if(s=t.get("EXT_texture_compression_rgtc"),s!==null){if(i===Hr)return s.COMPRESSED_RED_RGTC1_EXT;if(i===zo)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===Go)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===ko)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===$s?r.UNSIGNED_INT_24_8:r[i]!==void 0?r[i]:null}return{convert:e}}class lc extends we{constructor(t=null){super(),this.sourceTexture=t,this.isExternalTexture=!0}}const BI=`
3932
3932
  void main() {
3933
3933
 
3934
3934
  gl_Position = vec4( position, 1.0 );
3935
3935
 
3936
- }`,DI=`
3936
+ }`,OI=`
3937
3937
  uniform sampler2DArray depthColor;
3938
3938
  uniform float depthWidth;
3939
3939
  uniform float depthHeight;
@@ -3952,7 +3952,7 @@ void main() {
3952
3952
 
3953
3953
  }
3954
3954
 
3955
- }`;class LI{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,e){if(this.texture===null){const i=new sc(t.texture);(t.depthNear!==e.depthNear||t.depthFar!==e.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(t){if(this.texture!==null&&this.mesh===null){const e=t.cameras[0].viewport,i=new An({vertexShader:PI,fragmentShader:DI,uniforms:{depthColor:{value:this.texture},depthWidth:{value:e.z},depthHeight:{value:e.w}}});this.mesh=new pi(new ar(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class NI extends ss{constructor(t,e){super();const i=this;let n=null,s=1,a=null,o="local-floor",l=1,A=null,h=null,c=null,u=null,d=null,p=null;const m=new LI,g={},f=e.getContextAttributes();let y=null,S=null;const v=[],w=[],T=new Zt;let R=null;const P=new ze;P.viewport=new he;const E=new ze;E.viewport=new he;const x=[P,E],b=new Ff;let z=null,B=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(J){let ot=v[J];return ot===void 0&&(ot=new AA,v[J]=ot),ot.getTargetRaySpace()},this.getControllerGrip=function(J){let ot=v[J];return ot===void 0&&(ot=new AA,v[J]=ot),ot.getGripSpace()},this.getHand=function(J){let ot=v[J];return ot===void 0&&(ot=new AA,v[J]=ot),ot.getHandSpace()};function U(J){const ot=w.indexOf(J.inputSource);if(ot===-1)return;const nt=v[ot];nt!==void 0&&(nt.update(J.inputSource,J.frame,A||a),nt.dispatchEvent({type:J.type,data:J.inputSource}))}function W(){n.removeEventListener("select",U),n.removeEventListener("selectstart",U),n.removeEventListener("selectend",U),n.removeEventListener("squeeze",U),n.removeEventListener("squeezestart",U),n.removeEventListener("squeezeend",U),n.removeEventListener("end",W),n.removeEventListener("inputsourceschange",Y);for(let J=0;J<v.length;J++){const ot=w[J];ot!==null&&(w[J]=null,v[J].disconnect(ot))}z=null,B=null,m.reset();for(const J in g)delete g[J];t.setRenderTarget(y),d=null,u=null,c=null,n=null,S=null,$t.stop(),i.isPresenting=!1,t.setPixelRatio(R),t.setSize(T.width,T.height,!1),i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(J){s=J,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(J){o=J,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return A||a},this.setReferenceSpace=function(J){A=J},this.getBaseLayer=function(){return u!==null?u:d},this.getBinding=function(){return c},this.getFrame=function(){return p},this.getSession=function(){return n},this.setSession=async function(J){if(n=J,n!==null){if(y=t.getRenderTarget(),n.addEventListener("select",U),n.addEventListener("selectstart",U),n.addEventListener("selectend",U),n.addEventListener("squeeze",U),n.addEventListener("squeezestart",U),n.addEventListener("squeezeend",U),n.addEventListener("end",W),n.addEventListener("inputsourceschange",Y),f.xrCompatible!==!0&&await e.makeXRCompatible(),R=t.getPixelRatio(),t.getSize(T),typeof XRWebGLBinding<"u"&&(c=new XRWebGLBinding(n,e)),c!==null&&"createProjectionLayer"in XRWebGLBinding.prototype){let nt=null,bt=null,Tt=null;f.depth&&(Tt=f.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,nt=f.stencil?Qs:js,bt=f.stencil?Js:Sn);const Dt={colorFormat:e.RGBA8,depthFormat:Tt,scaleFactor:s};u=c.createProjectionLayer(Dt),n.updateRenderState({layers:[u]}),t.setPixelRatio(1),t.setSize(u.textureWidth,u.textureHeight,!1),S=new Mn(u.textureWidth,u.textureHeight,{format:hi,type:Ci,depthTexture:new vh(u.textureWidth,u.textureHeight,bt,void 0,void 0,void 0,void 0,void 0,void 0,nt),stencilBuffer:f.stencil,colorSpace:t.outputColorSpace,samples:f.antialias?4:0,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1})}else{const nt={antialias:f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(n,e,nt),n.updateRenderState({baseLayer:d}),t.setPixelRatio(1),t.setSize(d.framebufferWidth,d.framebufferHeight,!1),S=new Mn(d.framebufferWidth,d.framebufferHeight,{format:hi,type:Ci,colorSpace:t.outputColorSpace,stencilBuffer:f.stencil,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1})}S.isXRRenderTarget=!0,this.setFoveation(l),A=null,a=await n.requestReferenceSpace(o),$t.setContext(n),$t.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(n!==null)return n.environmentBlendMode},this.getDepthTexture=function(){return m.getDepthTexture()};function Y(J){for(let ot=0;ot<J.removed.length;ot++){const nt=J.removed[ot],bt=w.indexOf(nt);bt>=0&&(w[bt]=null,v[bt].disconnect(nt))}for(let ot=0;ot<J.added.length;ot++){const nt=J.added[ot];let bt=w.indexOf(nt);if(bt===-1){for(let Dt=0;Dt<v.length;Dt++)if(Dt>=w.length){w.push(nt),bt=Dt;break}else if(w[Dt]===null){w[Dt]=nt,bt=Dt;break}if(bt===-1)break}const Tt=v[bt];Tt&&Tt.connect(nt)}}const $=new F,H=new F;function rt(J,ot,nt){$.setFromMatrixPosition(ot.matrixWorld),H.setFromMatrixPosition(nt.matrixWorld);const bt=$.distanceTo(H),Tt=ot.projectionMatrix.elements,Dt=nt.projectionMatrix.elements,de=Tt[14]/(Tt[10]-1),Wt=Tt[14]/(Tt[10]+1),_=(Tt[9]+1)/Tt[5],ee=(Tt[9]-1)/Tt[5],Mt=(Tt[8]-1)/Tt[0],Jt=(Dt[8]+1)/Dt[0],Et=de*Mt,re=de*Jt,ft=bt/(-Mt+Jt),Ut=ft*-Mt;if(ot.matrixWorld.decompose(J.position,J.quaternion,J.scale),J.translateX(Ut),J.translateZ(ft),J.matrixWorld.compose(J.position,J.quaternion,J.scale),J.matrixWorldInverse.copy(J.matrixWorld).invert(),Tt[10]===-1)J.projectionMatrix.copy(ot.projectionMatrix),J.projectionMatrixInverse.copy(ot.projectionMatrixInverse);else{const Se=de+ft,fe=Wt+ft,M=Et-Ut,I=re+(bt-Ut),O=_*Wt/fe*Se,Z=ee*Wt/fe*Se;J.projectionMatrix.makePerspective(M,I,O,Z,Se,fe),J.projectionMatrixInverse.copy(J.projectionMatrix).invert()}}function lt(J,ot){ot===null?J.matrixWorld.copy(J.matrix):J.matrixWorld.multiplyMatrices(ot.matrixWorld,J.matrix),J.matrixWorldInverse.copy(J.matrixWorld).invert()}this.updateCamera=function(J){if(n===null)return;let ot=J.near,nt=J.far;m.texture!==null&&(m.depthNear>0&&(ot=m.depthNear),m.depthFar>0&&(nt=m.depthFar)),b.near=E.near=P.near=ot,b.far=E.far=P.far=nt,(z!==b.near||B!==b.far)&&(n.updateRenderState({depthNear:b.near,depthFar:b.far}),z=b.near,B=b.far),b.layers.mask=J.layers.mask|6,P.layers.mask=b.layers.mask&3,E.layers.mask=b.layers.mask&5;const bt=J.parent,Tt=b.cameras;lt(b,bt);for(let Dt=0;Dt<Tt.length;Dt++)lt(Tt[Dt],bt);Tt.length===2?rt(b,P,E):b.projectionMatrix.copy(P.projectionMatrix),mt(J,b,bt)};function mt(J,ot,nt){nt===null?J.matrix.copy(ot.matrixWorld):(J.matrix.copy(nt.matrixWorld),J.matrix.invert(),J.matrix.multiply(ot.matrixWorld)),J.matrix.decompose(J.position,J.quaternion,J.scale),J.updateMatrixWorld(!0),J.projectionMatrix.copy(ot.projectionMatrix),J.projectionMatrixInverse.copy(ot.projectionMatrixInverse),J.isPerspectiveCamera&&(J.fov=Gr*2*Math.atan(1/J.projectionMatrix.elements[5]),J.zoom=1)}this.getCamera=function(){return b},this.getFoveation=function(){if(!(u===null&&d===null))return l},this.setFoveation=function(J){l=J,u!==null&&(u.fixedFoveation=J),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=J)},this.hasDepthSensing=function(){return m.texture!==null},this.getDepthSensingMesh=function(){return m.getMesh(b)},this.getCameraTexture=function(J){return g[J]};let Ot=null;function se(J,ot){if(h=ot.getViewerPose(A||a),p=ot,h!==null){const nt=h.views;d!==null&&(t.setRenderTargetFramebuffer(S,d.framebuffer),t.setRenderTarget(S));let bt=!1;nt.length!==b.cameras.length&&(b.cameras.length=0,bt=!0);for(let Wt=0;Wt<nt.length;Wt++){const _=nt[Wt];let ee=null;if(d!==null)ee=d.getViewport(_);else{const Jt=c.getViewSubImage(u,_);ee=Jt.viewport,Wt===0&&(t.setRenderTargetTextures(S,Jt.colorTexture,Jt.depthStencilTexture),t.setRenderTarget(S))}let Mt=x[Wt];Mt===void 0&&(Mt=new ze,Mt.layers.enable(Wt),Mt.viewport=new he,x[Wt]=Mt),Mt.matrix.fromArray(_.transform.matrix),Mt.matrix.decompose(Mt.position,Mt.quaternion,Mt.scale),Mt.projectionMatrix.fromArray(_.projectionMatrix),Mt.projectionMatrixInverse.copy(Mt.projectionMatrix).invert(),Mt.viewport.set(ee.x,ee.y,ee.width,ee.height),Wt===0&&(b.matrix.copy(Mt.matrix),b.matrix.decompose(b.position,b.quaternion,b.scale)),bt===!0&&b.cameras.push(Mt)}const Tt=n.enabledFeatures;if(Tt&&Tt.includes("depth-sensing")&&n.depthUsage=="gpu-optimized"&&c){const Wt=c.getDepthInformation(nt[0]);Wt&&Wt.isValid&&Wt.texture&&m.init(Wt,n.renderState)}if(Tt&&Tt.includes("camera-access")&&(t.state.unbindTexture(),c))for(let Wt=0;Wt<nt.length;Wt++){const _=nt[Wt].camera;if(_){let ee=g[_];ee||(ee=new sc,g[_]=ee);const Mt=c.getCameraImage(_);ee.sourceTexture=Mt}}}for(let nt=0;nt<v.length;nt++){const bt=w[nt],Tt=v[nt];bt!==null&&Tt!==void 0&&Tt.update(bt,ot,A||a)}Ot&&Ot(J,ot),ot.detectedPlanes&&i.dispatchEvent({type:"planesdetected",data:ot}),p=null}const $t=new Rh;$t.setAnimationLoop(se),this.setAnimationLoop=function(J){Ot=J},this.dispose=function(){}}}const Fn=new di,FI=new ue;function BI(r,t){function e(g,f){g.matrixAutoUpdate===!0&&g.updateMatrix(),f.value.copy(g.matrix)}function i(g,f){f.color.getRGB(g.fogColor.value,dh(r)),f.isFog?(g.fogNear.value=f.near,g.fogFar.value=f.far):f.isFogExp2&&(g.fogDensity.value=f.density)}function n(g,f,y,S,v){f.isMeshBasicMaterial||f.isMeshLambertMaterial?s(g,f):f.isMeshToonMaterial?(s(g,f),c(g,f)):f.isMeshPhongMaterial?(s(g,f),h(g,f)):f.isMeshStandardMaterial?(s(g,f),u(g,f),f.isMeshPhysicalMaterial&&d(g,f,v)):f.isMeshMatcapMaterial?(s(g,f),p(g,f)):f.isMeshDepthMaterial?s(g,f):f.isMeshDistanceMaterial?(s(g,f),m(g,f)):f.isMeshNormalMaterial?s(g,f):f.isLineBasicMaterial?(a(g,f),f.isLineDashedMaterial&&o(g,f)):f.isPointsMaterial?l(g,f,y,S):f.isSpriteMaterial?A(g,f):f.isShadowMaterial?(g.color.value.copy(f.color),g.opacity.value=f.opacity):f.isShaderMaterial&&(f.uniformsNeedUpdate=!1)}function s(g,f){g.opacity.value=f.opacity,f.color&&g.diffuse.value.copy(f.color),f.emissive&&g.emissive.value.copy(f.emissive).multiplyScalar(f.emissiveIntensity),f.map&&(g.map.value=f.map,e(f.map,g.mapTransform)),f.alphaMap&&(g.alphaMap.value=f.alphaMap,e(f.alphaMap,g.alphaMapTransform)),f.bumpMap&&(g.bumpMap.value=f.bumpMap,e(f.bumpMap,g.bumpMapTransform),g.bumpScale.value=f.bumpScale,f.side===Oe&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,e(f.normalMap,g.normalMapTransform),g.normalScale.value.copy(f.normalScale),f.side===Oe&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,e(f.displacementMap,g.displacementMapTransform),g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap,e(f.emissiveMap,g.emissiveMapTransform)),f.specularMap&&(g.specularMap.value=f.specularMap,e(f.specularMap,g.specularMapTransform)),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);const y=t.get(f),S=y.envMap,v=y.envMapRotation;S&&(g.envMap.value=S,Fn.copy(v),Fn.x*=-1,Fn.y*=-1,Fn.z*=-1,S.isCubeTexture&&S.isRenderTargetTexture===!1&&(Fn.y*=-1,Fn.z*=-1),g.envMapRotation.value.setFromMatrix4(FI.makeRotationFromEuler(Fn)),g.flipEnvMap.value=S.isCubeTexture&&S.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=f.reflectivity,g.ior.value=f.ior,g.refractionRatio.value=f.refractionRatio),f.lightMap&&(g.lightMap.value=f.lightMap,g.lightMapIntensity.value=f.lightMapIntensity,e(f.lightMap,g.lightMapTransform)),f.aoMap&&(g.aoMap.value=f.aoMap,g.aoMapIntensity.value=f.aoMapIntensity,e(f.aoMap,g.aoMapTransform))}function a(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,f.map&&(g.map.value=f.map,e(f.map,g.mapTransform))}function o(g,f){g.dashSize.value=f.dashSize,g.totalSize.value=f.dashSize+f.gapSize,g.scale.value=f.scale}function l(g,f,y,S){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.size.value=f.size*y,g.scale.value=S*.5,f.map&&(g.map.value=f.map,e(f.map,g.uvTransform)),f.alphaMap&&(g.alphaMap.value=f.alphaMap,e(f.alphaMap,g.alphaMapTransform)),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest)}function A(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.rotation.value=f.rotation,f.map&&(g.map.value=f.map,e(f.map,g.mapTransform)),f.alphaMap&&(g.alphaMap.value=f.alphaMap,e(f.alphaMap,g.alphaMapTransform)),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest)}function h(g,f){g.specular.value.copy(f.specular),g.shininess.value=Math.max(f.shininess,1e-4)}function c(g,f){f.gradientMap&&(g.gradientMap.value=f.gradientMap)}function u(g,f){g.metalness.value=f.metalness,f.metalnessMap&&(g.metalnessMap.value=f.metalnessMap,e(f.metalnessMap,g.metalnessMapTransform)),g.roughness.value=f.roughness,f.roughnessMap&&(g.roughnessMap.value=f.roughnessMap,e(f.roughnessMap,g.roughnessMapTransform)),f.envMap&&(g.envMapIntensity.value=f.envMapIntensity)}function d(g,f,y){g.ior.value=f.ior,f.sheen>0&&(g.sheenColor.value.copy(f.sheenColor).multiplyScalar(f.sheen),g.sheenRoughness.value=f.sheenRoughness,f.sheenColorMap&&(g.sheenColorMap.value=f.sheenColorMap,e(f.sheenColorMap,g.sheenColorMapTransform)),f.sheenRoughnessMap&&(g.sheenRoughnessMap.value=f.sheenRoughnessMap,e(f.sheenRoughnessMap,g.sheenRoughnessMapTransform))),f.clearcoat>0&&(g.clearcoat.value=f.clearcoat,g.clearcoatRoughness.value=f.clearcoatRoughness,f.clearcoatMap&&(g.clearcoatMap.value=f.clearcoatMap,e(f.clearcoatMap,g.clearcoatMapTransform)),f.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=f.clearcoatRoughnessMap,e(f.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),f.clearcoatNormalMap&&(g.clearcoatNormalMap.value=f.clearcoatNormalMap,e(f.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(f.clearcoatNormalScale),f.side===Oe&&g.clearcoatNormalScale.value.negate())),f.dispersion>0&&(g.dispersion.value=f.dispersion),f.iridescence>0&&(g.iridescence.value=f.iridescence,g.iridescenceIOR.value=f.iridescenceIOR,g.iridescenceThicknessMinimum.value=f.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=f.iridescenceThicknessRange[1],f.iridescenceMap&&(g.iridescenceMap.value=f.iridescenceMap,e(f.iridescenceMap,g.iridescenceMapTransform)),f.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=f.iridescenceThicknessMap,e(f.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),f.transmission>0&&(g.transmission.value=f.transmission,g.transmissionSamplerMap.value=y.texture,g.transmissionSamplerSize.value.set(y.width,y.height),f.transmissionMap&&(g.transmissionMap.value=f.transmissionMap,e(f.transmissionMap,g.transmissionMapTransform)),g.thickness.value=f.thickness,f.thicknessMap&&(g.thicknessMap.value=f.thicknessMap,e(f.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=f.attenuationDistance,g.attenuationColor.value.copy(f.attenuationColor)),f.anisotropy>0&&(g.anisotropyVector.value.set(f.anisotropy*Math.cos(f.anisotropyRotation),f.anisotropy*Math.sin(f.anisotropyRotation)),f.anisotropyMap&&(g.anisotropyMap.value=f.anisotropyMap,e(f.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=f.specularIntensity,g.specularColor.value.copy(f.specularColor),f.specularColorMap&&(g.specularColorMap.value=f.specularColorMap,e(f.specularColorMap,g.specularColorMapTransform)),f.specularIntensityMap&&(g.specularIntensityMap.value=f.specularIntensityMap,e(f.specularIntensityMap,g.specularIntensityMapTransform))}function p(g,f){f.matcap&&(g.matcap.value=f.matcap)}function m(g,f){const y=t.get(f).light;g.referencePosition.value.setFromMatrixPosition(y.matrixWorld),g.nearDistance.value=y.shadow.camera.near,g.farDistance.value=y.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:n}}function OI(r,t,e,i){let n={},s={},a=[];const o=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function l(y,S){const v=S.program;i.uniformBlockBinding(y,v)}function A(y,S){let v=n[y.id];v===void 0&&(p(y),v=h(y),n[y.id]=v,y.addEventListener("dispose",g));const w=S.program;i.updateUBOMapping(y,w);const T=t.render.frame;s[y.id]!==T&&(u(y),s[y.id]=T)}function h(y){const S=c();y.__bindingPointIndex=S;const v=r.createBuffer(),w=y.__size,T=y.usage;return r.bindBuffer(r.UNIFORM_BUFFER,v),r.bufferData(r.UNIFORM_BUFFER,w,T),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,S,v),v}function c(){for(let y=0;y<o;y++)if(a.indexOf(y)===-1)return a.push(y),y;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(y){const S=n[y.id],v=y.uniforms,w=y.__cache;r.bindBuffer(r.UNIFORM_BUFFER,S);for(let T=0,R=v.length;T<R;T++){const P=Array.isArray(v[T])?v[T]:[v[T]];for(let E=0,x=P.length;E<x;E++){const b=P[E];if(d(b,T,E,w)===!0){const z=b.__offset,B=Array.isArray(b.value)?b.value:[b.value];let U=0;for(let W=0;W<B.length;W++){const Y=B[W],$=m(Y);typeof Y=="number"||typeof Y=="boolean"?(b.__data[0]=Y,r.bufferSubData(r.UNIFORM_BUFFER,z+U,b.__data)):Y.isMatrix3?(b.__data[0]=Y.elements[0],b.__data[1]=Y.elements[1],b.__data[2]=Y.elements[2],b.__data[3]=0,b.__data[4]=Y.elements[3],b.__data[5]=Y.elements[4],b.__data[6]=Y.elements[5],b.__data[7]=0,b.__data[8]=Y.elements[6],b.__data[9]=Y.elements[7],b.__data[10]=Y.elements[8],b.__data[11]=0):(Y.toArray(b.__data,U),U+=$.storage/Float32Array.BYTES_PER_ELEMENT)}r.bufferSubData(r.UNIFORM_BUFFER,z,b.__data)}}}r.bindBuffer(r.UNIFORM_BUFFER,null)}function d(y,S,v,w){const T=y.value,R=S+"_"+v;if(w[R]===void 0)return typeof T=="number"||typeof T=="boolean"?w[R]=T:w[R]=T.clone(),!0;{const P=w[R];if(typeof T=="number"||typeof T=="boolean"){if(P!==T)return w[R]=T,!0}else if(P.equals(T)===!1)return P.copy(T),!0}return!1}function p(y){const S=y.uniforms;let v=0;const w=16;for(let R=0,P=S.length;R<P;R++){const E=Array.isArray(S[R])?S[R]:[S[R]];for(let x=0,b=E.length;x<b;x++){const z=E[x],B=Array.isArray(z.value)?z.value:[z.value];for(let U=0,W=B.length;U<W;U++){const Y=B[U],$=m(Y),H=v%w,rt=H%$.boundary,lt=H+rt;v+=rt,lt!==0&&w-lt<$.storage&&(v+=w-lt),z.__data=new Float32Array($.storage/Float32Array.BYTES_PER_ELEMENT),z.__offset=v,v+=$.storage}}}const T=v%w;return T>0&&(v+=w-T),y.__size=v,y.__cache={},this}function m(y){const S={boundary:0,storage:0};return typeof y=="number"||typeof y=="boolean"?(S.boundary=4,S.storage=4):y.isVector2?(S.boundary=8,S.storage=8):y.isVector3||y.isColor?(S.boundary=16,S.storage=12):y.isVector4?(S.boundary=16,S.storage=16):y.isMatrix3?(S.boundary=48,S.storage=48):y.isMatrix4?(S.boundary=64,S.storage=64):y.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",y),S}function g(y){const S=y.target;S.removeEventListener("dispose",g);const v=a.indexOf(S.__bindingPointIndex);a.splice(v,1),r.deleteBuffer(n[S.id]),delete n[S.id],delete s[S.id]}function f(){for(const y in n)r.deleteBuffer(n[y]);a=[],n={},s={}}return{bind:l,update:A,dispose:f}}class rc{constructor(t={}){const{canvas:e=Jd(),context:i=null,depth:n=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:A=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:c=!1,reversedDepthBuffer:u=!1}=t;this.isWebGLRenderer=!0;let d;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");d=i.getContextAttributes().alpha}else d=a;const p=new Uint32Array(4),m=new Int32Array(4);let g=null,f=null;const y=[],S=[];this.domElement=e,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.toneMapping=tn,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const v=this;let w=!1;this._outputColorSpace=_e;let T=0,R=0,P=null,E=-1,x=null;const b=new he,z=new he;let B=null;const U=new Vt(0);let W=0,Y=e.width,$=e.height,H=1,rt=null,lt=null;const mt=new he(0,0,Y,$),Ot=new he(0,0,Y,$);let se=!1;const $t=new cA;let J=!1,ot=!1;const nt=new ue,bt=new F,Tt=new he,Dt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let de=!1;function Wt(){return P===null?H:1}let _=i;function ee(C,L){return e.getContext(C,L)}try{const C={alpha:!0,depth:n,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:A,powerPreference:h,failIfMajorPerformanceCaveat:c};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${Va}`),e.addEventListener("webglcontextlost",st,!1),e.addEventListener("webglcontextrestored",dt,!1),e.addEventListener("webglcontextcreationerror",q,!1),_===null){const L="webgl2";if(_=ee(L,C),_===null)throw ee(L)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(C){throw console.error("THREE.WebGLRenderer: "+C.message),C}let Mt,Jt,Et,re,ft,Ut,Se,fe,M,I,O,Z,Q,X,xt,it,It,Ct,tt,ct,Rt,vt,At,Ft;function D(){Mt=new Jp(_),Mt.init(),vt=new _I(_,Mt),Jt=new kp(_,Mt,t,vt),Et=new wI(_,Mt),Jt.reversedDepthBuffer&&u&&Et.buffers.depth.setReversed(!0),re=new qp(_),ft=new gI,Ut=new RI(_,Mt,Et,ft,Jt,vt,re),Se=new Vp(v),fe=new Zp(v),M=new Of(_),At=new zp(_,M),I=new jp(_,M,re,At),O=new $p(_,I,M,re),tt=new Kp(_,Jt,Ut),it=new Hp(ft),Z=new fI(v,Se,fe,Mt,Jt,At,it),Q=new BI(v,ft),X=new mI,xt=new SI(Mt),Ct=new Up(v,Se,fe,Et,O,d,l),It=new bI(v,O,Jt),Ft=new OI(_,re,Jt,Et),ct=new Gp(_,Mt,re),Rt=new Qp(_,Mt,re),re.programs=Z.programs,v.capabilities=Jt,v.extensions=Mt,v.properties=ft,v.renderLists=X,v.shadowMap=It,v.state=Et,v.info=re}D();const et=new NI(v,_);this.xr=et,this.getContext=function(){return _},this.getContextAttributes=function(){return _.getContextAttributes()},this.forceContextLoss=function(){const C=Mt.get("WEBGL_lose_context");C&&C.loseContext()},this.forceContextRestore=function(){const C=Mt.get("WEBGL_lose_context");C&&C.restoreContext()},this.getPixelRatio=function(){return H},this.setPixelRatio=function(C){C!==void 0&&(H=C,this.setSize(Y,$,!1))},this.getSize=function(C){return C.set(Y,$)},this.setSize=function(C,L,G=!0){if(et.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Y=C,$=L,e.width=Math.floor(C*H),e.height=Math.floor(L*H),G===!0&&(e.style.width=C+"px",e.style.height=L+"px"),this.setViewport(0,0,C,L)},this.getDrawingBufferSize=function(C){return C.set(Y*H,$*H).floor()},this.setDrawingBufferSize=function(C,L,G){Y=C,$=L,H=G,e.width=Math.floor(C*G),e.height=Math.floor(L*G),this.setViewport(0,0,C,L)},this.getCurrentViewport=function(C){return C.copy(b)},this.getViewport=function(C){return C.copy(mt)},this.setViewport=function(C,L,G,k){C.isVector4?mt.set(C.x,C.y,C.z,C.w):mt.set(C,L,G,k),Et.viewport(b.copy(mt).multiplyScalar(H).round())},this.getScissor=function(C){return C.copy(Ot)},this.setScissor=function(C,L,G,k){C.isVector4?Ot.set(C.x,C.y,C.z,C.w):Ot.set(C,L,G,k),Et.scissor(z.copy(Ot).multiplyScalar(H).round())},this.getScissorTest=function(){return se},this.setScissorTest=function(C){Et.setScissorTest(se=C)},this.setOpaqueSort=function(C){rt=C},this.setTransparentSort=function(C){lt=C},this.getClearColor=function(C){return C.copy(Ct.getClearColor())},this.setClearColor=function(){Ct.setClearColor(...arguments)},this.getClearAlpha=function(){return Ct.getClearAlpha()},this.setClearAlpha=function(){Ct.setClearAlpha(...arguments)},this.clear=function(C=!0,L=!0,G=!0){let k=0;if(C){let N=!1;if(P!==null){const K=P.texture.format;N=K===lo||K===Ao||K===oo}if(N){const K=P.texture.type,ht=K===Ci||K===Sn||K===Xs||K===Js||K===ro||K===ao,gt=Ct.getClearColor(),ut=Ct.getClearAlpha(),wt=gt.r,Pt=gt.g,St=gt.b;ht?(p[0]=wt,p[1]=Pt,p[2]=St,p[3]=ut,_.clearBufferuiv(_.COLOR,0,p)):(m[0]=wt,m[1]=Pt,m[2]=St,m[3]=ut,_.clearBufferiv(_.COLOR,0,m))}else k|=_.COLOR_BUFFER_BIT}L&&(k|=_.DEPTH_BUFFER_BIT),G&&(k|=_.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),_.clear(k)},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(){e.removeEventListener("webglcontextlost",st,!1),e.removeEventListener("webglcontextrestored",dt,!1),e.removeEventListener("webglcontextcreationerror",q,!1),Ct.dispose(),X.dispose(),xt.dispose(),ft.dispose(),Se.dispose(),fe.dispose(),O.dispose(),At.dispose(),Ft.dispose(),Z.dispose(),et.dispose(),et.removeEventListener("sessionstart",Si),et.removeEventListener("sessionend",hc),Bn.stop()};function st(C){C.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),w=!0}function dt(){console.log("THREE.WebGLRenderer: Context Restored."),w=!1;const C=re.autoReset,L=It.enabled,G=It.autoUpdate,k=It.needsUpdate,N=It.type;D(),re.autoReset=C,It.enabled=L,It.autoUpdate=G,It.needsUpdate=k,It.type=N}function q(C){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",C.statusMessage)}function j(C){const L=C.target;L.removeEventListener("dispose",j),pt(L)}function pt(C){Lt(C),ft.remove(C)}function Lt(C){const L=ft.get(C).programs;L!==void 0&&(L.forEach(function(G){Z.releaseProgram(G)}),C.isShaderMaterial&&Z.releaseShaderCache(C))}this.renderBufferDirect=function(C,L,G,k,N,K){L===null&&(L=Dt);const ht=N.isMesh&&N.matrixWorld.determinant()<0,gt=ZI(C,L,G,k,N);Et.setMaterial(k,ht);let ut=G.index,wt=1;if(k.wireframe===!0){if(ut=I.getWireframeAttribute(G),ut===void 0)return;wt=2}const Pt=G.drawRange,St=G.attributes.position;let zt=Pt.start*wt,Kt=(Pt.start+Pt.count)*wt;K!==null&&(zt=Math.max(zt,K.start*wt),Kt=Math.min(Kt,(K.start+K.count)*wt)),ut!==null?(zt=Math.max(zt,0),Kt=Math.min(Kt,ut.count)):St!=null&&(zt=Math.max(zt,0),Kt=Math.min(Kt,St.count));const ce=Kt-zt;if(ce<0||ce===1/0)return;At.setup(N,k,gt,G,ut);let ne,te=ct;if(ut!==null&&(ne=M.get(ut),te=Rt,te.setIndex(ne)),N.isMesh)k.wireframe===!0?(Et.setLineWidth(k.wireframeLinewidth*Wt()),te.setMode(_.LINES)):te.setMode(_.TRIANGLES);else if(N.isLine){let yt=k.linewidth;yt===void 0&&(yt=1),Et.setLineWidth(yt*Wt()),N.isLineSegments?te.setMode(_.LINES):N.isLineLoop?te.setMode(_.LINE_LOOP):te.setMode(_.LINE_STRIP)}else N.isPoints?te.setMode(_.POINTS):N.isSprite&&te.setMode(_.TRIANGLES);if(N.isBatchedMesh)if(N._multiDrawInstances!==null)as("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),te.renderMultiDrawInstances(N._multiDrawStarts,N._multiDrawCounts,N._multiDrawCount,N._multiDrawInstances);else if(Mt.get("WEBGL_multi_draw"))te.renderMultiDraw(N._multiDrawStarts,N._multiDrawCounts,N._multiDrawCount);else{const yt=N._multiDrawStarts,ae=N._multiDrawCounts,Xt=N._multiDrawCount,Ze=ut?M.get(ut).bytesPerElement:1,ws=ft.get(k).currentProgram.getUniforms();for(let Je=0;Je<Xt;Je++)ws.setValue(_,"_gl_DrawID",Je),te.render(yt[Je]/Ze,ae[Je])}else if(N.isInstancedMesh)te.renderInstances(zt,ce,N.count);else if(G.isInstancedBufferGeometry){const yt=G._maxInstanceCount!==void 0?G._maxInstanceCount:1/0,ae=Math.min(G.instanceCount,yt);te.renderInstances(zt,ce,ae)}else te.render(zt,ce)};function ie(C,L,G){C.transparent===!0&&C.side===Li&&C.forceSinglePass===!1?(C.side=Oe,C.needsUpdate=!0,da(C,L,G),C.side=Ki,C.needsUpdate=!0,da(C,L,G),C.side=Li):da(C,L,G)}this.compile=function(C,L,G=null){G===null&&(G=C),f=xt.get(G),f.init(L),S.push(f),G.traverseVisible(function(N){N.isLight&&N.layers.test(L.layers)&&(f.pushLight(N),N.castShadow&&f.pushShadow(N))}),C!==G&&C.traverseVisible(function(N){N.isLight&&N.layers.test(L.layers)&&(f.pushLight(N),N.castShadow&&f.pushShadow(N))}),f.setupLights();const k=new Set;return C.traverse(function(N){if(!(N.isMesh||N.isPoints||N.isLine||N.isSprite))return;const K=N.material;if(K)if(Array.isArray(K))for(let ht=0;ht<K.length;ht++){const gt=K[ht];ie(gt,G,N),k.add(gt)}else ie(K,G,N),k.add(K)}),f=S.pop(),k},this.compileAsync=function(C,L,G=null){const k=this.compile(C,L,G);return new Promise(N=>{function K(){if(k.forEach(function(ht){ft.get(ht).currentProgram.isReady()&&k.delete(ht)}),k.size===0){N(C);return}setTimeout(K,10)}Mt.get("KHR_parallel_shader_compile")!==null?K():setTimeout(K,10)})};let Qt=null;function ki(C){Qt&&Qt(C)}function Si(){Bn.stop()}function hc(){Bn.start()}const Bn=new Rh;Bn.setAnimationLoop(ki),typeof self<"u"&&Bn.setContext(self),this.setAnimationLoop=function(C){Qt=C,et.setAnimationLoop(C),C===null?Bn.stop():Bn.start()},et.addEventListener("sessionstart",Si),et.addEventListener("sessionend",hc),this.render=function(C,L){if(L!==void 0&&L.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(w===!0)return;if(C.matrixWorldAutoUpdate===!0&&C.updateMatrixWorld(),L.parent===null&&L.matrixWorldAutoUpdate===!0&&L.updateMatrixWorld(),et.enabled===!0&&et.isPresenting===!0&&(et.cameraAutoUpdate===!0&&et.updateCamera(L),L=et.getCamera()),C.isScene===!0&&C.onBeforeRender(v,C,L,P),f=xt.get(C,S.length),f.init(L),S.push(f),nt.multiplyMatrices(L.projectionMatrix,L.matrixWorldInverse),$t.setFromProjectionMatrix(nt,vi,L.reversedDepth),ot=this.localClippingEnabled,J=it.init(this.clippingPlanes,ot),g=X.get(C,y.length),g.init(),y.push(g),et.enabled===!0&&et.isPresenting===!0){const K=v.xr.getDepthSensingMesh();K!==null&&TA(K,L,-1/0,v.sortObjects)}TA(C,L,0,v.sortObjects),g.finish(),v.sortObjects===!0&&g.sort(rt,lt),de=et.enabled===!1||et.isPresenting===!1||et.hasDepthSensing()===!1,de&&Ct.addToRenderList(g,C),this.info.render.frame++,J===!0&&it.beginShadows();const G=f.state.shadowsArray;It.render(G,C,L),J===!0&&it.endShadows(),this.info.autoReset===!0&&this.info.reset();const k=g.opaque,N=g.transmissive;if(f.setupLights(),L.isArrayCamera){const K=L.cameras;if(N.length>0)for(let ht=0,gt=K.length;ht<gt;ht++){const ut=K[ht];uc(k,N,C,ut)}de&&Ct.render(C);for(let ht=0,gt=K.length;ht<gt;ht++){const ut=K[ht];cc(g,C,ut,ut.viewport)}}else N.length>0&&uc(k,N,C,L),de&&Ct.render(C),cc(g,C,L);P!==null&&R===0&&(Ut.updateMultisampleRenderTarget(P),Ut.updateRenderTargetMipmap(P)),C.isScene===!0&&C.onAfterRender(v,C,L),At.resetDefaultState(),E=-1,x=null,S.pop(),S.length>0?(f=S[S.length-1],J===!0&&it.setGlobalState(v.clippingPlanes,f.state.camera)):f=null,y.pop(),y.length>0?g=y[y.length-1]:g=null};function TA(C,L,G,k){if(C.visible===!1)return;if(C.layers.test(L.layers)){if(C.isGroup)G=C.renderOrder;else if(C.isLOD)C.autoUpdate===!0&&C.update(L);else if(C.isLight)f.pushLight(C),C.castShadow&&f.pushShadow(C);else if(C.isSprite){if(!C.frustumCulled||$t.intersectsSprite(C)){k&&Tt.setFromMatrixPosition(C.matrixWorld).applyMatrix4(nt);const ht=O.update(C),gt=C.material;gt.visible&&g.push(C,ht,gt,G,Tt.z,null)}}else if((C.isMesh||C.isLine||C.isPoints)&&(!C.frustumCulled||$t.intersectsObject(C))){const ht=O.update(C),gt=C.material;if(k&&(C.boundingSphere!==void 0?(C.boundingSphere===null&&C.computeBoundingSphere(),Tt.copy(C.boundingSphere.center)):(ht.boundingSphere===null&&ht.computeBoundingSphere(),Tt.copy(ht.boundingSphere.center)),Tt.applyMatrix4(C.matrixWorld).applyMatrix4(nt)),Array.isArray(gt)){const ut=ht.groups;for(let wt=0,Pt=ut.length;wt<Pt;wt++){const St=ut[wt],zt=gt[St.materialIndex];zt&&zt.visible&&g.push(C,ht,zt,G,Tt.z,St)}}else gt.visible&&g.push(C,ht,gt,G,Tt.z,null)}}const K=C.children;for(let ht=0,gt=K.length;ht<gt;ht++)TA(K[ht],L,G,k)}function cc(C,L,G,k){const N=C.opaque,K=C.transmissive,ht=C.transparent;f.setupLightsView(G),J===!0&&it.setGlobalState(v.clippingPlanes,G),k&&Et.viewport(b.copy(k)),N.length>0&&ua(N,L,G),K.length>0&&ua(K,L,G),ht.length>0&&ua(ht,L,G),Et.buffers.depth.setTest(!0),Et.buffers.depth.setMask(!0),Et.buffers.color.setMask(!0),Et.setPolygonOffset(!1)}function uc(C,L,G,k){if((G.isScene===!0?G.overrideMaterial:null)!==null)return;f.state.transmissionRenderTarget[k.id]===void 0&&(f.state.transmissionRenderTarget[k.id]=new Mn(1,1,{generateMipmaps:!0,type:Mt.has("EXT_color_buffer_half_float")||Mt.has("EXT_color_buffer_float")?Zs:Ci,minFilter:En,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Yt.workingColorSpace}));const K=f.state.transmissionRenderTarget[k.id],ht=k.viewport||b;K.setSize(ht.z*v.transmissionResolutionScale,ht.w*v.transmissionResolutionScale);const gt=v.getRenderTarget(),ut=v.getActiveCubeFace(),wt=v.getActiveMipmapLevel();v.setRenderTarget(K),v.getClearColor(U),W=v.getClearAlpha(),W<1&&v.setClearColor(16777215,.5),v.clear(),de&&Ct.render(G);const Pt=v.toneMapping;v.toneMapping=tn;const St=k.viewport;if(k.viewport!==void 0&&(k.viewport=void 0),f.setupLightsView(k),J===!0&&it.setGlobalState(v.clippingPlanes,k),ua(C,G,k),Ut.updateMultisampleRenderTarget(K),Ut.updateRenderTargetMipmap(K),Mt.has("WEBGL_multisampled_render_to_texture")===!1){let zt=!1;for(let Kt=0,ce=L.length;Kt<ce;Kt++){const ne=L[Kt],te=ne.object,yt=ne.geometry,ae=ne.material,Xt=ne.group;if(ae.side===Li&&te.layers.test(k.layers)){const Ze=ae.side;ae.side=Oe,ae.needsUpdate=!0,dc(te,G,k,yt,ae,Xt),ae.side=Ze,ae.needsUpdate=!0,zt=!0}}zt===!0&&(Ut.updateMultisampleRenderTarget(K),Ut.updateRenderTargetMipmap(K))}v.setRenderTarget(gt,ut,wt),v.setClearColor(U,W),St!==void 0&&(k.viewport=St),v.toneMapping=Pt}function ua(C,L,G){const k=L.isScene===!0?L.overrideMaterial:null;for(let N=0,K=C.length;N<K;N++){const ht=C[N],gt=ht.object,ut=ht.geometry,wt=ht.group;let Pt=ht.material;Pt.allowOverride===!0&&k!==null&&(Pt=k),gt.layers.test(G.layers)&&dc(gt,L,G,ut,Pt,wt)}}function dc(C,L,G,k,N,K){C.onBeforeRender(v,L,G,k,N,K),C.modelViewMatrix.multiplyMatrices(G.matrixWorldInverse,C.matrixWorld),C.normalMatrix.getNormalMatrix(C.modelViewMatrix),N.onBeforeRender(v,L,G,k,C,K),N.transparent===!0&&N.side===Li&&N.forceSinglePass===!1?(N.side=Oe,N.needsUpdate=!0,v.renderBufferDirect(G,L,k,N,C,K),N.side=Ki,N.needsUpdate=!0,v.renderBufferDirect(G,L,k,N,C,K),N.side=Li):v.renderBufferDirect(G,L,k,N,C,K),C.onAfterRender(v,L,G,k,N,K)}function da(C,L,G){L.isScene!==!0&&(L=Dt);const k=ft.get(C),N=f.state.lights,K=f.state.shadowsArray,ht=N.state.version,gt=Z.getParameters(C,N.state,K,L,G),ut=Z.getProgramCacheKey(gt);let wt=k.programs;k.environment=C.isMeshStandardMaterial?L.environment:null,k.fog=L.fog,k.envMap=(C.isMeshStandardMaterial?fe:Se).get(C.envMap||k.environment),k.envMapRotation=k.environment!==null&&C.envMap===null?L.environmentRotation:C.envMapRotation,wt===void 0&&(C.addEventListener("dispose",j),wt=new Map,k.programs=wt);let Pt=wt.get(ut);if(Pt!==void 0){if(k.currentProgram===Pt&&k.lightsStateVersion===ht)return gc(C,gt),Pt}else gt.uniforms=Z.getUniforms(C),C.onBeforeCompile(gt,v),Pt=Z.acquireProgram(gt,ut),wt.set(ut,Pt),k.uniforms=gt.uniforms;const St=k.uniforms;return(!C.isShaderMaterial&&!C.isRawShaderMaterial||C.clipping===!0)&&(St.clippingPlanes=it.uniform),gc(C,gt),k.needsLights=jI(C),k.lightsStateVersion=ht,k.needsLights&&(St.ambientLightColor.value=N.state.ambient,St.lightProbe.value=N.state.probe,St.directionalLights.value=N.state.directional,St.directionalLightShadows.value=N.state.directionalShadow,St.spotLights.value=N.state.spot,St.spotLightShadows.value=N.state.spotShadow,St.rectAreaLights.value=N.state.rectArea,St.ltc_1.value=N.state.rectAreaLTC1,St.ltc_2.value=N.state.rectAreaLTC2,St.pointLights.value=N.state.point,St.pointLightShadows.value=N.state.pointShadow,St.hemisphereLights.value=N.state.hemi,St.directionalShadowMap.value=N.state.directionalShadowMap,St.directionalShadowMatrix.value=N.state.directionalShadowMatrix,St.spotShadowMap.value=N.state.spotShadowMap,St.spotLightMatrix.value=N.state.spotLightMatrix,St.spotLightMap.value=N.state.spotLightMap,St.pointShadowMap.value=N.state.pointShadowMap,St.pointShadowMatrix.value=N.state.pointShadowMatrix),k.currentProgram=Pt,k.uniformsList=null,Pt}function fc(C){if(C.uniformsList===null){const L=C.currentProgram.getUniforms();C.uniformsList=oa.seqWithValue(L.seq,C.uniforms)}return C.uniformsList}function gc(C,L){const G=ft.get(C);G.outputColorSpace=L.outputColorSpace,G.batching=L.batching,G.batchingColor=L.batchingColor,G.instancing=L.instancing,G.instancingColor=L.instancingColor,G.instancingMorph=L.instancingMorph,G.skinning=L.skinning,G.morphTargets=L.morphTargets,G.morphNormals=L.morphNormals,G.morphColors=L.morphColors,G.morphTargetsCount=L.morphTargetsCount,G.numClippingPlanes=L.numClippingPlanes,G.numIntersection=L.numClipIntersection,G.vertexAlphas=L.vertexAlphas,G.vertexTangents=L.vertexTangents,G.toneMapping=L.toneMapping}function ZI(C,L,G,k,N){L.isScene!==!0&&(L=Dt),Ut.resetTextureUnits();const K=L.fog,ht=k.isMeshStandardMaterial?L.environment:null,gt=P===null?v.outputColorSpace:P.isXRRenderTarget===!0?P.texture.colorSpace:is,ut=(k.isMeshStandardMaterial?fe:Se).get(k.envMap||ht),wt=k.vertexColors===!0&&!!G.attributes.color&&G.attributes.color.itemSize===4,Pt=!!G.attributes.tangent&&(!!k.normalMap||k.anisotropy>0),St=!!G.morphAttributes.position,zt=!!G.morphAttributes.normal,Kt=!!G.morphAttributes.color;let ce=tn;k.toneMapped&&(P===null||P.isXRRenderTarget===!0)&&(ce=v.toneMapping);const ne=G.morphAttributes.position||G.morphAttributes.normal||G.morphAttributes.color,te=ne!==void 0?ne.length:0,yt=ft.get(k),ae=f.state.lights;if(J===!0&&(ot===!0||C!==x)){const De=C===x&&k.id===E;it.setState(k,C,De)}let Xt=!1;k.version===yt.__version?(yt.needsLights&&yt.lightsStateVersion!==ae.state.version||yt.outputColorSpace!==gt||N.isBatchedMesh&&yt.batching===!1||!N.isBatchedMesh&&yt.batching===!0||N.isBatchedMesh&&yt.batchingColor===!0&&N.colorTexture===null||N.isBatchedMesh&&yt.batchingColor===!1&&N.colorTexture!==null||N.isInstancedMesh&&yt.instancing===!1||!N.isInstancedMesh&&yt.instancing===!0||N.isSkinnedMesh&&yt.skinning===!1||!N.isSkinnedMesh&&yt.skinning===!0||N.isInstancedMesh&&yt.instancingColor===!0&&N.instanceColor===null||N.isInstancedMesh&&yt.instancingColor===!1&&N.instanceColor!==null||N.isInstancedMesh&&yt.instancingMorph===!0&&N.morphTexture===null||N.isInstancedMesh&&yt.instancingMorph===!1&&N.morphTexture!==null||yt.envMap!==ut||k.fog===!0&&yt.fog!==K||yt.numClippingPlanes!==void 0&&(yt.numClippingPlanes!==it.numPlanes||yt.numIntersection!==it.numIntersection)||yt.vertexAlphas!==wt||yt.vertexTangents!==Pt||yt.morphTargets!==St||yt.morphNormals!==zt||yt.morphColors!==Kt||yt.toneMapping!==ce||yt.morphTargetsCount!==te)&&(Xt=!0):(Xt=!0,yt.__version=k.version);let Ze=yt.currentProgram;Xt===!0&&(Ze=da(k,L,N));let ws=!1,Je=!1,Ar=!1;const oe=Ze.getUniforms(),$e=yt.uniforms;if(Et.useProgram(Ze.program)&&(ws=!0,Je=!0,Ar=!0),k.id!==E&&(E=k.id,Je=!0),ws||x!==C){Et.buffers.depth.getReversed()&&C.reversedDepth!==!0&&(C._reversedDepth=!0,C.updateProjectionMatrix()),oe.setValue(_,"projectionMatrix",C.projectionMatrix),oe.setValue(_,"viewMatrix",C.matrixWorldInverse);const Ge=oe.map.cameraPosition;Ge!==void 0&&Ge.setValue(_,bt.setFromMatrixPosition(C.matrixWorld)),Jt.logarithmicDepthBuffer&&oe.setValue(_,"logDepthBufFC",2/(Math.log(C.far+1)/Math.LN2)),(k.isMeshPhongMaterial||k.isMeshToonMaterial||k.isMeshLambertMaterial||k.isMeshBasicMaterial||k.isMeshStandardMaterial||k.isShaderMaterial)&&oe.setValue(_,"isOrthographic",C.isOrthographicCamera===!0),x!==C&&(x=C,Je=!0,Ar=!0)}if(N.isSkinnedMesh){oe.setOptional(_,N,"bindMatrix"),oe.setOptional(_,N,"bindMatrixInverse");const De=N.skeleton;De&&(De.boneTexture===null&&De.computeBoneTexture(),oe.setValue(_,"boneTexture",De.boneTexture,Ut))}N.isBatchedMesh&&(oe.setOptional(_,N,"batchingTexture"),oe.setValue(_,"batchingTexture",N._matricesTexture,Ut),oe.setOptional(_,N,"batchingIdTexture"),oe.setValue(_,"batchingIdTexture",N._indirectTexture,Ut),oe.setOptional(_,N,"batchingColorTexture"),N._colorsTexture!==null&&oe.setValue(_,"batchingColorTexture",N._colorsTexture,Ut));const ti=G.morphAttributes;if((ti.position!==void 0||ti.normal!==void 0||ti.color!==void 0)&&tt.update(N,G,Ze),(Je||yt.receiveShadow!==N.receiveShadow)&&(yt.receiveShadow=N.receiveShadow,oe.setValue(_,"receiveShadow",N.receiveShadow)),k.isMeshGouraudMaterial&&k.envMap!==null&&($e.envMap.value=ut,$e.flipEnvMap.value=ut.isCubeTexture&&ut.isRenderTargetTexture===!1?-1:1),k.isMeshStandardMaterial&&k.envMap===null&&L.environment!==null&&($e.envMapIntensity.value=L.environmentIntensity),Je&&(oe.setValue(_,"toneMappingExposure",v.toneMappingExposure),yt.needsLights&&JI($e,Ar),K&&k.fog===!0&&Q.refreshFogUniforms($e,K),Q.refreshMaterialUniforms($e,k,H,$,f.state.transmissionRenderTarget[C.id]),oa.upload(_,fc(yt),$e,Ut)),k.isShaderMaterial&&k.uniformsNeedUpdate===!0&&(oa.upload(_,fc(yt),$e,Ut),k.uniformsNeedUpdate=!1),k.isSpriteMaterial&&oe.setValue(_,"center",N.center),oe.setValue(_,"modelViewMatrix",N.modelViewMatrix),oe.setValue(_,"normalMatrix",N.normalMatrix),oe.setValue(_,"modelMatrix",N.matrixWorld),k.isShaderMaterial||k.isRawShaderMaterial){const De=k.uniformsGroups;for(let Ge=0,wA=De.length;Ge<wA;Ge++){const On=De[Ge];Ft.update(On,Ze),Ft.bind(On,Ze)}}return Ze}function JI(C,L){C.ambientLightColor.needsUpdate=L,C.lightProbe.needsUpdate=L,C.directionalLights.needsUpdate=L,C.directionalLightShadows.needsUpdate=L,C.pointLights.needsUpdate=L,C.pointLightShadows.needsUpdate=L,C.spotLights.needsUpdate=L,C.spotLightShadows.needsUpdate=L,C.rectAreaLights.needsUpdate=L,C.hemisphereLights.needsUpdate=L}function jI(C){return C.isMeshLambertMaterial||C.isMeshToonMaterial||C.isMeshPhongMaterial||C.isMeshStandardMaterial||C.isShadowMaterial||C.isShaderMaterial&&C.lights===!0}this.getActiveCubeFace=function(){return T},this.getActiveMipmapLevel=function(){return R},this.getRenderTarget=function(){return P},this.setRenderTargetTextures=function(C,L,G){const k=ft.get(C);k.__autoAllocateDepthBuffer=C.resolveDepthBuffer===!1,k.__autoAllocateDepthBuffer===!1&&(k.__useRenderToTexture=!1),ft.get(C.texture).__webglTexture=L,ft.get(C.depthTexture).__webglTexture=k.__autoAllocateDepthBuffer?void 0:G,k.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(C,L){const G=ft.get(C);G.__webglFramebuffer=L,G.__useDefaultFramebuffer=L===void 0};const QI=_.createFramebuffer();this.setRenderTarget=function(C,L=0,G=0){P=C,T=L,R=G;let k=!0,N=null,K=!1,ht=!1;if(C){const ut=ft.get(C);if(ut.__useDefaultFramebuffer!==void 0)Et.bindFramebuffer(_.FRAMEBUFFER,null),k=!1;else if(ut.__webglFramebuffer===void 0)Ut.setupRenderTarget(C);else if(ut.__hasExternalTextures)Ut.rebindTextures(C,ft.get(C.texture).__webglTexture,ft.get(C.depthTexture).__webglTexture);else if(C.depthBuffer){const St=C.depthTexture;if(ut.__boundDepthTexture!==St){if(St!==null&&ft.has(St)&&(C.width!==St.image.width||C.height!==St.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");Ut.setupDepthRenderbuffer(C)}}const wt=C.texture;(wt.isData3DTexture||wt.isDataArrayTexture||wt.isCompressedArrayTexture)&&(ht=!0);const Pt=ft.get(C).__webglFramebuffer;C.isWebGLCubeRenderTarget?(Array.isArray(Pt[L])?N=Pt[L][G]:N=Pt[L],K=!0):C.samples>0&&Ut.useMultisampledRTT(C)===!1?N=ft.get(C).__webglMultisampledFramebuffer:Array.isArray(Pt)?N=Pt[G]:N=Pt,b.copy(C.viewport),z.copy(C.scissor),B=C.scissorTest}else b.copy(mt).multiplyScalar(H).floor(),z.copy(Ot).multiplyScalar(H).floor(),B=se;if(G!==0&&(N=QI),Et.bindFramebuffer(_.FRAMEBUFFER,N)&&k&&Et.drawBuffers(C,N),Et.viewport(b),Et.scissor(z),Et.setScissorTest(B),K){const ut=ft.get(C.texture);_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_CUBE_MAP_POSITIVE_X+L,ut.__webglTexture,G)}else if(ht){const ut=L;for(let wt=0;wt<C.textures.length;wt++){const Pt=ft.get(C.textures[wt]);_.framebufferTextureLayer(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0+wt,Pt.__webglTexture,G,ut)}}else if(C!==null&&G!==0){const ut=ft.get(C.texture);_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,ut.__webglTexture,G)}E=-1},this.readRenderTargetPixels=function(C,L,G,k,N,K,ht,gt=0){if(!(C&&C.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ut=ft.get(C).__webglFramebuffer;if(C.isWebGLCubeRenderTarget&&ht!==void 0&&(ut=ut[ht]),ut){Et.bindFramebuffer(_.FRAMEBUFFER,ut);try{const wt=C.textures[gt],Pt=wt.format,St=wt.type;if(!Jt.textureFormatReadable(Pt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Jt.textureTypeReadable(St)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}L>=0&&L<=C.width-k&&G>=0&&G<=C.height-N&&(C.textures.length>1&&_.readBuffer(_.COLOR_ATTACHMENT0+gt),_.readPixels(L,G,k,N,vt.convert(Pt),vt.convert(St),K))}finally{const wt=P!==null?ft.get(P).__webglFramebuffer:null;Et.bindFramebuffer(_.FRAMEBUFFER,wt)}}},this.readRenderTargetPixelsAsync=async function(C,L,G,k,N,K,ht,gt=0){if(!(C&&C.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ut=ft.get(C).__webglFramebuffer;if(C.isWebGLCubeRenderTarget&&ht!==void 0&&(ut=ut[ht]),ut)if(L>=0&&L<=C.width-k&&G>=0&&G<=C.height-N){Et.bindFramebuffer(_.FRAMEBUFFER,ut);const wt=C.textures[gt],Pt=wt.format,St=wt.type;if(!Jt.textureFormatReadable(Pt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Jt.textureTypeReadable(St))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const zt=_.createBuffer();_.bindBuffer(_.PIXEL_PACK_BUFFER,zt),_.bufferData(_.PIXEL_PACK_BUFFER,K.byteLength,_.STREAM_READ),C.textures.length>1&&_.readBuffer(_.COLOR_ATTACHMENT0+gt),_.readPixels(L,G,k,N,vt.convert(Pt),vt.convert(St),0);const Kt=P!==null?ft.get(P).__webglFramebuffer:null;Et.bindFramebuffer(_.FRAMEBUFFER,Kt);const ce=_.fenceSync(_.SYNC_GPU_COMMANDS_COMPLETE,0);return _.flush(),await jd(_,ce,4),_.bindBuffer(_.PIXEL_PACK_BUFFER,zt),_.getBufferSubData(_.PIXEL_PACK_BUFFER,0,K),_.deleteBuffer(zt),_.deleteSync(ce),K}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(C,L=null,G=0){const k=Math.pow(2,-G),N=Math.floor(C.image.width*k),K=Math.floor(C.image.height*k),ht=L!==null?L.x:0,gt=L!==null?L.y:0;Ut.setTexture2D(C,0),_.copyTexSubImage2D(_.TEXTURE_2D,G,0,0,ht,gt,N,K),Et.unbindTexture()};const qI=_.createFramebuffer(),KI=_.createFramebuffer();this.copyTextureToTexture=function(C,L,G=null,k=null,N=0,K=null){K===null&&(N!==0?(as("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),K=N,N=0):K=0);let ht,gt,ut,wt,Pt,St,zt,Kt,ce;const ne=C.isCompressedTexture?C.mipmaps[K]:C.image;if(G!==null)ht=G.max.x-G.min.x,gt=G.max.y-G.min.y,ut=G.isBox3?G.max.z-G.min.z:1,wt=G.min.x,Pt=G.min.y,St=G.isBox3?G.min.z:0;else{const ti=Math.pow(2,-N);ht=Math.floor(ne.width*ti),gt=Math.floor(ne.height*ti),C.isDataArrayTexture?ut=ne.depth:C.isData3DTexture?ut=Math.floor(ne.depth*ti):ut=1,wt=0,Pt=0,St=0}k!==null?(zt=k.x,Kt=k.y,ce=k.z):(zt=0,Kt=0,ce=0);const te=vt.convert(L.format),yt=vt.convert(L.type);let ae;L.isData3DTexture?(Ut.setTexture3D(L,0),ae=_.TEXTURE_3D):L.isDataArrayTexture||L.isCompressedArrayTexture?(Ut.setTexture2DArray(L,0),ae=_.TEXTURE_2D_ARRAY):(Ut.setTexture2D(L,0),ae=_.TEXTURE_2D),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,L.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,L.unpackAlignment);const Xt=_.getParameter(_.UNPACK_ROW_LENGTH),Ze=_.getParameter(_.UNPACK_IMAGE_HEIGHT),ws=_.getParameter(_.UNPACK_SKIP_PIXELS),Je=_.getParameter(_.UNPACK_SKIP_ROWS),Ar=_.getParameter(_.UNPACK_SKIP_IMAGES);_.pixelStorei(_.UNPACK_ROW_LENGTH,ne.width),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,ne.height),_.pixelStorei(_.UNPACK_SKIP_PIXELS,wt),_.pixelStorei(_.UNPACK_SKIP_ROWS,Pt),_.pixelStorei(_.UNPACK_SKIP_IMAGES,St);const oe=C.isDataArrayTexture||C.isData3DTexture,$e=L.isDataArrayTexture||L.isData3DTexture;if(C.isDepthTexture){const ti=ft.get(C),De=ft.get(L),Ge=ft.get(ti.__renderTarget),wA=ft.get(De.__renderTarget);Et.bindFramebuffer(_.READ_FRAMEBUFFER,Ge.__webglFramebuffer),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,wA.__webglFramebuffer);for(let On=0;On<ut;On++)oe&&(_.framebufferTextureLayer(_.READ_FRAMEBUFFER,_.COLOR_ATTACHMENT0,ft.get(C).__webglTexture,N,St+On),_.framebufferTextureLayer(_.DRAW_FRAMEBUFFER,_.COLOR_ATTACHMENT0,ft.get(L).__webglTexture,K,ce+On)),_.blitFramebuffer(wt,Pt,ht,gt,zt,Kt,ht,gt,_.DEPTH_BUFFER_BIT,_.NEAREST);Et.bindFramebuffer(_.READ_FRAMEBUFFER,null),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,null)}else if(N!==0||C.isRenderTargetTexture||ft.has(C)){const ti=ft.get(C),De=ft.get(L);Et.bindFramebuffer(_.READ_FRAMEBUFFER,qI),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,KI);for(let Ge=0;Ge<ut;Ge++)oe?_.framebufferTextureLayer(_.READ_FRAMEBUFFER,_.COLOR_ATTACHMENT0,ti.__webglTexture,N,St+Ge):_.framebufferTexture2D(_.READ_FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,ti.__webglTexture,N),$e?_.framebufferTextureLayer(_.DRAW_FRAMEBUFFER,_.COLOR_ATTACHMENT0,De.__webglTexture,K,ce+Ge):_.framebufferTexture2D(_.DRAW_FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,De.__webglTexture,K),N!==0?_.blitFramebuffer(wt,Pt,ht,gt,zt,Kt,ht,gt,_.COLOR_BUFFER_BIT,_.NEAREST):$e?_.copyTexSubImage3D(ae,K,zt,Kt,ce+Ge,wt,Pt,ht,gt):_.copyTexSubImage2D(ae,K,zt,Kt,wt,Pt,ht,gt);Et.bindFramebuffer(_.READ_FRAMEBUFFER,null),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,null)}else $e?C.isDataTexture||C.isData3DTexture?_.texSubImage3D(ae,K,zt,Kt,ce,ht,gt,ut,te,yt,ne.data):L.isCompressedArrayTexture?_.compressedTexSubImage3D(ae,K,zt,Kt,ce,ht,gt,ut,te,ne.data):_.texSubImage3D(ae,K,zt,Kt,ce,ht,gt,ut,te,yt,ne):C.isDataTexture?_.texSubImage2D(_.TEXTURE_2D,K,zt,Kt,ht,gt,te,yt,ne.data):C.isCompressedTexture?_.compressedTexSubImage2D(_.TEXTURE_2D,K,zt,Kt,ne.width,ne.height,te,ne.data):_.texSubImage2D(_.TEXTURE_2D,K,zt,Kt,ht,gt,te,yt,ne);_.pixelStorei(_.UNPACK_ROW_LENGTH,Xt),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,Ze),_.pixelStorei(_.UNPACK_SKIP_PIXELS,ws),_.pixelStorei(_.UNPACK_SKIP_ROWS,Je),_.pixelStorei(_.UNPACK_SKIP_IMAGES,Ar),K===0&&L.generateMipmaps&&_.generateMipmap(ae),Et.unbindTexture()},this.copyTextureToTexture3D=function(C,L,G=null,k=null,N=0){return as('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(C,L,G,k,N)},this.initRenderTarget=function(C){ft.get(C).__webglFramebuffer===void 0&&Ut.setupRenderTarget(C)},this.initTexture=function(C){C.isCubeTexture?Ut.setTextureCube(C,0):C.isData3DTexture?Ut.setTexture3D(C,0):C.isDataArrayTexture||C.isCompressedArrayTexture?Ut.setTexture2DArray(C,0):Ut.setTexture2D(C,0),Et.unbindTexture()},this.resetState=function(){T=0,R=0,P=null,Et.reset(),At.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return vi}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=Yt._getDrawingBufferColorSpace(t),e.unpackColorSpace=Yt._getUnpackColorSpace()}}const ac={LANGUAGE_CHANGE_CONFIRMED:fa.LANGUAGE_CHANGE_CONFIRMED},UI=new Set([jt.ENGLISH_UNITED_KINGDOM]),MA={selected:jt.ENGLISH_UNITED_KINGDOM,options:UI},la={OPTIONS:"languages",SELECTED:"selected"},zI=`<section class="root">
3955
+ }`;class UI{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,e){if(this.texture===null){const i=new lc(t.texture);(t.depthNear!==e.depthNear||t.depthFar!==e.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(t){if(this.texture!==null&&this.mesh===null){const e=t.cameras[0].viewport,i=new ln({vertexShader:BI,fragmentShader:OI,uniforms:{depthColor:{value:this.texture},depthWidth:{value:e.z},depthHeight:{value:e.w}}});this.mesh=new mi(new cr(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class zI extends rs{constructor(t,e){super();const i=this;let n=null,s=1,a=null,o="local-floor",l=1,A=null,h=null,c=null,u=null,d=null,p=null;const m=new UI,g={},f=e.getContextAttributes();let y=null,S=null;const v=[],w=[],T=new Zt;let R=null;const P=new ze;P.viewport=new he;const E=new ze;E.viewport=new he;const x=[P,E],b=new Gf;let z=null,B=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(J){let ot=v[J];return ot===void 0&&(ot=new dA,v[J]=ot),ot.getTargetRaySpace()},this.getControllerGrip=function(J){let ot=v[J];return ot===void 0&&(ot=new dA,v[J]=ot),ot.getGripSpace()},this.getHand=function(J){let ot=v[J];return ot===void 0&&(ot=new dA,v[J]=ot),ot.getHandSpace()};function U(J){const ot=w.indexOf(J.inputSource);if(ot===-1)return;const nt=v[ot];nt!==void 0&&(nt.update(J.inputSource,J.frame,A||a),nt.dispatchEvent({type:J.type,data:J.inputSource}))}function W(){n.removeEventListener("select",U),n.removeEventListener("selectstart",U),n.removeEventListener("selectend",U),n.removeEventListener("squeeze",U),n.removeEventListener("squeezestart",U),n.removeEventListener("squeezeend",U),n.removeEventListener("end",W),n.removeEventListener("inputsourceschange",Y);for(let J=0;J<v.length;J++){const ot=w[J];ot!==null&&(w[J]=null,v[J].disconnect(ot))}z=null,B=null,m.reset();for(const J in g)delete g[J];t.setRenderTarget(y),d=null,u=null,c=null,n=null,S=null,$t.stop(),i.isPresenting=!1,t.setPixelRatio(R),t.setSize(T.width,T.height,!1),i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(J){s=J,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(J){o=J,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return A||a},this.setReferenceSpace=function(J){A=J},this.getBaseLayer=function(){return u!==null?u:d},this.getBinding=function(){return c},this.getFrame=function(){return p},this.getSession=function(){return n},this.setSession=async function(J){if(n=J,n!==null){if(y=t.getRenderTarget(),n.addEventListener("select",U),n.addEventListener("selectstart",U),n.addEventListener("selectend",U),n.addEventListener("squeeze",U),n.addEventListener("squeezestart",U),n.addEventListener("squeezeend",U),n.addEventListener("end",W),n.addEventListener("inputsourceschange",Y),f.xrCompatible!==!0&&await e.makeXRCompatible(),R=t.getPixelRatio(),t.getSize(T),typeof XRWebGLBinding<"u"&&(c=new XRWebGLBinding(n,e)),c!==null&&"createProjectionLayer"in XRWebGLBinding.prototype){let nt=null,bt=null,Tt=null;f.depth&&(Tt=f.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,nt=f.stencil?er:tr,bt=f.stencil?$s:Mn);const Lt={colorFormat:e.RGBA8,depthFormat:Tt,scaleFactor:s};u=c.createProjectionLayer(Lt),n.updateRenderState({layers:[u]}),t.setPixelRatio(1),t.setSize(u.textureWidth,u.textureHeight,!1),S=new yn(u.textureWidth,u.textureHeight,{format:ci,type:vi,depthTexture:new yh(u.textureWidth,u.textureHeight,bt,void 0,void 0,void 0,void 0,void 0,void 0,nt),stencilBuffer:f.stencil,colorSpace:t.outputColorSpace,samples:f.antialias?4:0,resolveDepthBuffer:u.ignoreDepthValues===!1,resolveStencilBuffer:u.ignoreDepthValues===!1})}else{const nt={antialias:f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:s};d=new XRWebGLLayer(n,e,nt),n.updateRenderState({baseLayer:d}),t.setPixelRatio(1),t.setSize(d.framebufferWidth,d.framebufferHeight,!1),S=new yn(d.framebufferWidth,d.framebufferHeight,{format:ci,type:vi,colorSpace:t.outputColorSpace,stencilBuffer:f.stencil,resolveDepthBuffer:d.ignoreDepthValues===!1,resolveStencilBuffer:d.ignoreDepthValues===!1})}S.isXRRenderTarget=!0,this.setFoveation(l),A=null,a=await n.requestReferenceSpace(o),$t.setContext(n),$t.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(n!==null)return n.environmentBlendMode},this.getDepthTexture=function(){return m.getDepthTexture()};function Y(J){for(let ot=0;ot<J.removed.length;ot++){const nt=J.removed[ot],bt=w.indexOf(nt);bt>=0&&(w[bt]=null,v[bt].disconnect(nt))}for(let ot=0;ot<J.added.length;ot++){const nt=J.added[ot];let bt=w.indexOf(nt);if(bt===-1){for(let Lt=0;Lt<v.length;Lt++)if(Lt>=w.length){w.push(nt),bt=Lt;break}else if(w[Lt]===null){w[Lt]=nt,bt=Lt;break}if(bt===-1)break}const Tt=v[bt];Tt&&Tt.connect(nt)}}const $=new F,H=new F;function rt(J,ot,nt){$.setFromMatrixPosition(ot.matrixWorld),H.setFromMatrixPosition(nt.matrixWorld);const bt=$.distanceTo(H),Tt=ot.projectionMatrix.elements,Lt=nt.projectionMatrix.elements,de=Tt[14]/(Tt[10]-1),Wt=Tt[14]/(Tt[10]+1),_=(Tt[9]+1)/Tt[5],ee=(Tt[9]-1)/Tt[5],Mt=(Tt[8]-1)/Tt[0],Jt=(Lt[8]+1)/Lt[0],Et=de*Mt,re=de*Jt,ft=bt/(-Mt+Jt),Ut=ft*-Mt;if(ot.matrixWorld.decompose(J.position,J.quaternion,J.scale),J.translateX(Ut),J.translateZ(ft),J.matrixWorld.compose(J.position,J.quaternion,J.scale),J.matrixWorldInverse.copy(J.matrixWorld).invert(),Tt[10]===-1)J.projectionMatrix.copy(ot.projectionMatrix),J.projectionMatrixInverse.copy(ot.projectionMatrixInverse);else{const Se=de+ft,fe=Wt+ft,M=Et-Ut,I=re+(bt-Ut),O=_*Wt/fe*Se,Z=ee*Wt/fe*Se;J.projectionMatrix.makePerspective(M,I,O,Z,Se,fe),J.projectionMatrixInverse.copy(J.projectionMatrix).invert()}}function lt(J,ot){ot===null?J.matrixWorld.copy(J.matrix):J.matrixWorld.multiplyMatrices(ot.matrixWorld,J.matrix),J.matrixWorldInverse.copy(J.matrixWorld).invert()}this.updateCamera=function(J){if(n===null)return;let ot=J.near,nt=J.far;m.texture!==null&&(m.depthNear>0&&(ot=m.depthNear),m.depthFar>0&&(nt=m.depthFar)),b.near=E.near=P.near=ot,b.far=E.far=P.far=nt,(z!==b.near||B!==b.far)&&(n.updateRenderState({depthNear:b.near,depthFar:b.far}),z=b.near,B=b.far),b.layers.mask=J.layers.mask|6,P.layers.mask=b.layers.mask&3,E.layers.mask=b.layers.mask&5;const bt=J.parent,Tt=b.cameras;lt(b,bt);for(let Lt=0;Lt<Tt.length;Lt++)lt(Tt[Lt],bt);Tt.length===2?rt(b,P,E):b.projectionMatrix.copy(P.projectionMatrix),mt(J,b,bt)};function mt(J,ot,nt){nt===null?J.matrix.copy(ot.matrixWorld):(J.matrix.copy(nt.matrixWorld),J.matrix.invert(),J.matrix.multiply(ot.matrixWorld)),J.matrix.decompose(J.position,J.quaternion,J.scale),J.updateMatrixWorld(!0),J.projectionMatrix.copy(ot.projectionMatrix),J.projectionMatrixInverse.copy(ot.projectionMatrixInverse),J.isPerspectiveCamera&&(J.fov=Yr*2*Math.atan(1/J.projectionMatrix.elements[5]),J.zoom=1)}this.getCamera=function(){return b},this.getFoveation=function(){if(!(u===null&&d===null))return l},this.setFoveation=function(J){l=J,u!==null&&(u.fixedFoveation=J),d!==null&&d.fixedFoveation!==void 0&&(d.fixedFoveation=J)},this.hasDepthSensing=function(){return m.texture!==null},this.getDepthSensingMesh=function(){return m.getMesh(b)},this.getCameraTexture=function(J){return g[J]};let Ot=null;function se(J,ot){if(h=ot.getViewerPose(A||a),p=ot,h!==null){const nt=h.views;d!==null&&(t.setRenderTargetFramebuffer(S,d.framebuffer),t.setRenderTarget(S));let bt=!1;nt.length!==b.cameras.length&&(b.cameras.length=0,bt=!0);for(let Wt=0;Wt<nt.length;Wt++){const _=nt[Wt];let ee=null;if(d!==null)ee=d.getViewport(_);else{const Jt=c.getViewSubImage(u,_);ee=Jt.viewport,Wt===0&&(t.setRenderTargetTextures(S,Jt.colorTexture,Jt.depthStencilTexture),t.setRenderTarget(S))}let Mt=x[Wt];Mt===void 0&&(Mt=new ze,Mt.layers.enable(Wt),Mt.viewport=new he,x[Wt]=Mt),Mt.matrix.fromArray(_.transform.matrix),Mt.matrix.decompose(Mt.position,Mt.quaternion,Mt.scale),Mt.projectionMatrix.fromArray(_.projectionMatrix),Mt.projectionMatrixInverse.copy(Mt.projectionMatrix).invert(),Mt.viewport.set(ee.x,ee.y,ee.width,ee.height),Wt===0&&(b.matrix.copy(Mt.matrix),b.matrix.decompose(b.position,b.quaternion,b.scale)),bt===!0&&b.cameras.push(Mt)}const Tt=n.enabledFeatures;if(Tt&&Tt.includes("depth-sensing")&&n.depthUsage=="gpu-optimized"&&c){const Wt=c.getDepthInformation(nt[0]);Wt&&Wt.isValid&&Wt.texture&&m.init(Wt,n.renderState)}if(Tt&&Tt.includes("camera-access")&&(t.state.unbindTexture(),c))for(let Wt=0;Wt<nt.length;Wt++){const _=nt[Wt].camera;if(_){let ee=g[_];ee||(ee=new lc,g[_]=ee);const Mt=c.getCameraImage(_);ee.sourceTexture=Mt}}}for(let nt=0;nt<v.length;nt++){const bt=w[nt],Tt=v[nt];bt!==null&&Tt!==void 0&&Tt.update(bt,ot,A||a)}Ot&&Ot(J,ot),ot.detectedPlanes&&i.dispatchEvent({type:"planesdetected",data:ot}),p=null}const $t=new Nh;$t.setAnimationLoop(se),this.setAnimationLoop=function(J){Ot=J},this.dispose=function(){}}}const Bn=new fi,GI=new ue;function kI(r,t){function e(g,f){g.matrixAutoUpdate===!0&&g.updateMatrix(),f.value.copy(g.matrix)}function i(g,f){f.color.getRGB(g.fogColor.value,Ih(r)),f.isFog?(g.fogNear.value=f.near,g.fogFar.value=f.far):f.isFogExp2&&(g.fogDensity.value=f.density)}function n(g,f,y,S,v){f.isMeshBasicMaterial||f.isMeshLambertMaterial?s(g,f):f.isMeshToonMaterial?(s(g,f),c(g,f)):f.isMeshPhongMaterial?(s(g,f),h(g,f)):f.isMeshStandardMaterial?(s(g,f),u(g,f),f.isMeshPhysicalMaterial&&d(g,f,v)):f.isMeshMatcapMaterial?(s(g,f),p(g,f)):f.isMeshDepthMaterial?s(g,f):f.isMeshDistanceMaterial?(s(g,f),m(g,f)):f.isMeshNormalMaterial?s(g,f):f.isLineBasicMaterial?(a(g,f),f.isLineDashedMaterial&&o(g,f)):f.isPointsMaterial?l(g,f,y,S):f.isSpriteMaterial?A(g,f):f.isShadowMaterial?(g.color.value.copy(f.color),g.opacity.value=f.opacity):f.isShaderMaterial&&(f.uniformsNeedUpdate=!1)}function s(g,f){g.opacity.value=f.opacity,f.color&&g.diffuse.value.copy(f.color),f.emissive&&g.emissive.value.copy(f.emissive).multiplyScalar(f.emissiveIntensity),f.map&&(g.map.value=f.map,e(f.map,g.mapTransform)),f.alphaMap&&(g.alphaMap.value=f.alphaMap,e(f.alphaMap,g.alphaMapTransform)),f.bumpMap&&(g.bumpMap.value=f.bumpMap,e(f.bumpMap,g.bumpMapTransform),g.bumpScale.value=f.bumpScale,f.side===Oe&&(g.bumpScale.value*=-1)),f.normalMap&&(g.normalMap.value=f.normalMap,e(f.normalMap,g.normalMapTransform),g.normalScale.value.copy(f.normalScale),f.side===Oe&&g.normalScale.value.negate()),f.displacementMap&&(g.displacementMap.value=f.displacementMap,e(f.displacementMap,g.displacementMapTransform),g.displacementScale.value=f.displacementScale,g.displacementBias.value=f.displacementBias),f.emissiveMap&&(g.emissiveMap.value=f.emissiveMap,e(f.emissiveMap,g.emissiveMapTransform)),f.specularMap&&(g.specularMap.value=f.specularMap,e(f.specularMap,g.specularMapTransform)),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest);const y=t.get(f),S=y.envMap,v=y.envMapRotation;S&&(g.envMap.value=S,Bn.copy(v),Bn.x*=-1,Bn.y*=-1,Bn.z*=-1,S.isCubeTexture&&S.isRenderTargetTexture===!1&&(Bn.y*=-1,Bn.z*=-1),g.envMapRotation.value.setFromMatrix4(GI.makeRotationFromEuler(Bn)),g.flipEnvMap.value=S.isCubeTexture&&S.isRenderTargetTexture===!1?-1:1,g.reflectivity.value=f.reflectivity,g.ior.value=f.ior,g.refractionRatio.value=f.refractionRatio),f.lightMap&&(g.lightMap.value=f.lightMap,g.lightMapIntensity.value=f.lightMapIntensity,e(f.lightMap,g.lightMapTransform)),f.aoMap&&(g.aoMap.value=f.aoMap,g.aoMapIntensity.value=f.aoMapIntensity,e(f.aoMap,g.aoMapTransform))}function a(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,f.map&&(g.map.value=f.map,e(f.map,g.mapTransform))}function o(g,f){g.dashSize.value=f.dashSize,g.totalSize.value=f.dashSize+f.gapSize,g.scale.value=f.scale}function l(g,f,y,S){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.size.value=f.size*y,g.scale.value=S*.5,f.map&&(g.map.value=f.map,e(f.map,g.uvTransform)),f.alphaMap&&(g.alphaMap.value=f.alphaMap,e(f.alphaMap,g.alphaMapTransform)),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest)}function A(g,f){g.diffuse.value.copy(f.color),g.opacity.value=f.opacity,g.rotation.value=f.rotation,f.map&&(g.map.value=f.map,e(f.map,g.mapTransform)),f.alphaMap&&(g.alphaMap.value=f.alphaMap,e(f.alphaMap,g.alphaMapTransform)),f.alphaTest>0&&(g.alphaTest.value=f.alphaTest)}function h(g,f){g.specular.value.copy(f.specular),g.shininess.value=Math.max(f.shininess,1e-4)}function c(g,f){f.gradientMap&&(g.gradientMap.value=f.gradientMap)}function u(g,f){g.metalness.value=f.metalness,f.metalnessMap&&(g.metalnessMap.value=f.metalnessMap,e(f.metalnessMap,g.metalnessMapTransform)),g.roughness.value=f.roughness,f.roughnessMap&&(g.roughnessMap.value=f.roughnessMap,e(f.roughnessMap,g.roughnessMapTransform)),f.envMap&&(g.envMapIntensity.value=f.envMapIntensity)}function d(g,f,y){g.ior.value=f.ior,f.sheen>0&&(g.sheenColor.value.copy(f.sheenColor).multiplyScalar(f.sheen),g.sheenRoughness.value=f.sheenRoughness,f.sheenColorMap&&(g.sheenColorMap.value=f.sheenColorMap,e(f.sheenColorMap,g.sheenColorMapTransform)),f.sheenRoughnessMap&&(g.sheenRoughnessMap.value=f.sheenRoughnessMap,e(f.sheenRoughnessMap,g.sheenRoughnessMapTransform))),f.clearcoat>0&&(g.clearcoat.value=f.clearcoat,g.clearcoatRoughness.value=f.clearcoatRoughness,f.clearcoatMap&&(g.clearcoatMap.value=f.clearcoatMap,e(f.clearcoatMap,g.clearcoatMapTransform)),f.clearcoatRoughnessMap&&(g.clearcoatRoughnessMap.value=f.clearcoatRoughnessMap,e(f.clearcoatRoughnessMap,g.clearcoatRoughnessMapTransform)),f.clearcoatNormalMap&&(g.clearcoatNormalMap.value=f.clearcoatNormalMap,e(f.clearcoatNormalMap,g.clearcoatNormalMapTransform),g.clearcoatNormalScale.value.copy(f.clearcoatNormalScale),f.side===Oe&&g.clearcoatNormalScale.value.negate())),f.dispersion>0&&(g.dispersion.value=f.dispersion),f.iridescence>0&&(g.iridescence.value=f.iridescence,g.iridescenceIOR.value=f.iridescenceIOR,g.iridescenceThicknessMinimum.value=f.iridescenceThicknessRange[0],g.iridescenceThicknessMaximum.value=f.iridescenceThicknessRange[1],f.iridescenceMap&&(g.iridescenceMap.value=f.iridescenceMap,e(f.iridescenceMap,g.iridescenceMapTransform)),f.iridescenceThicknessMap&&(g.iridescenceThicknessMap.value=f.iridescenceThicknessMap,e(f.iridescenceThicknessMap,g.iridescenceThicknessMapTransform))),f.transmission>0&&(g.transmission.value=f.transmission,g.transmissionSamplerMap.value=y.texture,g.transmissionSamplerSize.value.set(y.width,y.height),f.transmissionMap&&(g.transmissionMap.value=f.transmissionMap,e(f.transmissionMap,g.transmissionMapTransform)),g.thickness.value=f.thickness,f.thicknessMap&&(g.thicknessMap.value=f.thicknessMap,e(f.thicknessMap,g.thicknessMapTransform)),g.attenuationDistance.value=f.attenuationDistance,g.attenuationColor.value.copy(f.attenuationColor)),f.anisotropy>0&&(g.anisotropyVector.value.set(f.anisotropy*Math.cos(f.anisotropyRotation),f.anisotropy*Math.sin(f.anisotropyRotation)),f.anisotropyMap&&(g.anisotropyMap.value=f.anisotropyMap,e(f.anisotropyMap,g.anisotropyMapTransform))),g.specularIntensity.value=f.specularIntensity,g.specularColor.value.copy(f.specularColor),f.specularColorMap&&(g.specularColorMap.value=f.specularColorMap,e(f.specularColorMap,g.specularColorMapTransform)),f.specularIntensityMap&&(g.specularIntensityMap.value=f.specularIntensityMap,e(f.specularIntensityMap,g.specularIntensityMapTransform))}function p(g,f){f.matcap&&(g.matcap.value=f.matcap)}function m(g,f){const y=t.get(f).light;g.referencePosition.value.setFromMatrixPosition(y.matrixWorld),g.nearDistance.value=y.shadow.camera.near,g.farDistance.value=y.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:n}}function HI(r,t,e,i){let n={},s={},a=[];const o=r.getParameter(r.MAX_UNIFORM_BUFFER_BINDINGS);function l(y,S){const v=S.program;i.uniformBlockBinding(y,v)}function A(y,S){let v=n[y.id];v===void 0&&(p(y),v=h(y),n[y.id]=v,y.addEventListener("dispose",g));const w=S.program;i.updateUBOMapping(y,w);const T=t.render.frame;s[y.id]!==T&&(u(y),s[y.id]=T)}function h(y){const S=c();y.__bindingPointIndex=S;const v=r.createBuffer(),w=y.__size,T=y.usage;return r.bindBuffer(r.UNIFORM_BUFFER,v),r.bufferData(r.UNIFORM_BUFFER,w,T),r.bindBuffer(r.UNIFORM_BUFFER,null),r.bindBufferBase(r.UNIFORM_BUFFER,S,v),v}function c(){for(let y=0;y<o;y++)if(a.indexOf(y)===-1)return a.push(y),y;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function u(y){const S=n[y.id],v=y.uniforms,w=y.__cache;r.bindBuffer(r.UNIFORM_BUFFER,S);for(let T=0,R=v.length;T<R;T++){const P=Array.isArray(v[T])?v[T]:[v[T]];for(let E=0,x=P.length;E<x;E++){const b=P[E];if(d(b,T,E,w)===!0){const z=b.__offset,B=Array.isArray(b.value)?b.value:[b.value];let U=0;for(let W=0;W<B.length;W++){const Y=B[W],$=m(Y);typeof Y=="number"||typeof Y=="boolean"?(b.__data[0]=Y,r.bufferSubData(r.UNIFORM_BUFFER,z+U,b.__data)):Y.isMatrix3?(b.__data[0]=Y.elements[0],b.__data[1]=Y.elements[1],b.__data[2]=Y.elements[2],b.__data[3]=0,b.__data[4]=Y.elements[3],b.__data[5]=Y.elements[4],b.__data[6]=Y.elements[5],b.__data[7]=0,b.__data[8]=Y.elements[6],b.__data[9]=Y.elements[7],b.__data[10]=Y.elements[8],b.__data[11]=0):(Y.toArray(b.__data,U),U+=$.storage/Float32Array.BYTES_PER_ELEMENT)}r.bufferSubData(r.UNIFORM_BUFFER,z,b.__data)}}}r.bindBuffer(r.UNIFORM_BUFFER,null)}function d(y,S,v,w){const T=y.value,R=S+"_"+v;if(w[R]===void 0)return typeof T=="number"||typeof T=="boolean"?w[R]=T:w[R]=T.clone(),!0;{const P=w[R];if(typeof T=="number"||typeof T=="boolean"){if(P!==T)return w[R]=T,!0}else if(P.equals(T)===!1)return P.copy(T),!0}return!1}function p(y){const S=y.uniforms;let v=0;const w=16;for(let R=0,P=S.length;R<P;R++){const E=Array.isArray(S[R])?S[R]:[S[R]];for(let x=0,b=E.length;x<b;x++){const z=E[x],B=Array.isArray(z.value)?z.value:[z.value];for(let U=0,W=B.length;U<W;U++){const Y=B[U],$=m(Y),H=v%w,rt=H%$.boundary,lt=H+rt;v+=rt,lt!==0&&w-lt<$.storage&&(v+=w-lt),z.__data=new Float32Array($.storage/Float32Array.BYTES_PER_ELEMENT),z.__offset=v,v+=$.storage}}}const T=v%w;return T>0&&(v+=w-T),y.__size=v,y.__cache={},this}function m(y){const S={boundary:0,storage:0};return typeof y=="number"||typeof y=="boolean"?(S.boundary=4,S.storage=4):y.isVector2?(S.boundary=8,S.storage=8):y.isVector3||y.isColor?(S.boundary=16,S.storage=12):y.isVector4?(S.boundary=16,S.storage=16):y.isMatrix3?(S.boundary=48,S.storage=48):y.isMatrix4?(S.boundary=64,S.storage=64):y.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",y),S}function g(y){const S=y.target;S.removeEventListener("dispose",g);const v=a.indexOf(S.__bindingPointIndex);a.splice(v,1),r.deleteBuffer(n[S.id]),delete n[S.id],delete s[S.id]}function f(){for(const y in n)r.deleteBuffer(n[y]);a=[],n={},s={}}return{bind:l,update:A,dispose:f}}class hc{constructor(t={}){const{canvas:e=$d(),context:i=null,depth:n=!0,stencil:s=!1,alpha:a=!1,antialias:o=!1,premultipliedAlpha:l=!0,preserveDrawingBuffer:A=!1,powerPreference:h="default",failIfMajorPerformanceCaveat:c=!1,reversedDepthBuffer:u=!1}=t;this.isWebGLRenderer=!0;let d;if(i!==null){if(typeof WebGLRenderingContext<"u"&&i instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");d=i.getContextAttributes().alpha}else d=a;const p=new Uint32Array(4),m=new Int32Array(4);let g=null,f=null;const y=[],S=[];this.domElement=e,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.toneMapping=en,this.toneMappingExposure=1,this.transmissionResolutionScale=1;const v=this;let w=!1;this._outputColorSpace=_e;let T=0,R=0,P=null,E=-1,x=null;const b=new he,z=new he;let B=null;const U=new Vt(0);let W=0,Y=e.width,$=e.height,H=1,rt=null,lt=null;const mt=new he(0,0,Y,$),Ot=new he(0,0,Y,$);let se=!1;const $t=new pA;let J=!1,ot=!1;const nt=new ue,bt=new F,Tt=new he,Lt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let de=!1;function Wt(){return P===null?H:1}let _=i;function ee(C,D){return e.getContext(C,D)}try{const C={alpha:!0,depth:n,stencil:s,antialias:o,premultipliedAlpha:l,preserveDrawingBuffer:A,powerPreference:h,failIfMajorPerformanceCaveat:c};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${Ja}`),e.addEventListener("webglcontextlost",st,!1),e.addEventListener("webglcontextrestored",dt,!1),e.addEventListener("webglcontextcreationerror",q,!1),_===null){const D="webgl2";if(_=ee(D,C),_===null)throw ee(D)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(C){throw console.error("THREE.WebGLRenderer: "+C.message),C}let Mt,Jt,Et,re,ft,Ut,Se,fe,M,I,O,Z,Q,X,xt,it,It,Ct,tt,ct,Rt,vt,At,Ft;function L(){Mt=new $p(_),Mt.init(),vt=new FI(_,Mt),Jt=new Xp(_,Mt,t,vt),Et=new DI(_,Mt),Jt.reversedDepthBuffer&&u&&Et.buffers.depth.setReversed(!0),re=new im(_),ft=new vI,Ut=new NI(_,Mt,Et,ft,Jt,vt,re),Se=new Jp(v),fe=new Kp(v),M=new Hf(_),At=new Wp(_,M),I=new tm(_,M,re,At),O=new sm(_,I,M,re),tt=new nm(_,Jt,Ut),it=new Zp(ft),Z=new CI(v,Se,fe,Mt,Jt,At,it),Q=new kI(v,ft),X=new EI,xt=new wI(Mt),Ct=new Vp(v,Se,fe,Et,O,d,l),It=new PI(v,O,Jt),Ft=new HI(_,re,Jt,Et),ct=new Yp(_,Mt,re),Rt=new em(_,Mt,re),re.programs=Z.programs,v.capabilities=Jt,v.extensions=Mt,v.properties=ft,v.renderLists=X,v.shadowMap=It,v.state=Et,v.info=re}L();const et=new zI(v,_);this.xr=et,this.getContext=function(){return _},this.getContextAttributes=function(){return _.getContextAttributes()},this.forceContextLoss=function(){const C=Mt.get("WEBGL_lose_context");C&&C.loseContext()},this.forceContextRestore=function(){const C=Mt.get("WEBGL_lose_context");C&&C.restoreContext()},this.getPixelRatio=function(){return H},this.setPixelRatio=function(C){C!==void 0&&(H=C,this.setSize(Y,$,!1))},this.getSize=function(C){return C.set(Y,$)},this.setSize=function(C,D,G=!0){if(et.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Y=C,$=D,e.width=Math.floor(C*H),e.height=Math.floor(D*H),G===!0&&(e.style.width=C+"px",e.style.height=D+"px"),this.setViewport(0,0,C,D)},this.getDrawingBufferSize=function(C){return C.set(Y*H,$*H).floor()},this.setDrawingBufferSize=function(C,D,G){Y=C,$=D,H=G,e.width=Math.floor(C*G),e.height=Math.floor(D*G),this.setViewport(0,0,C,D)},this.getCurrentViewport=function(C){return C.copy(b)},this.getViewport=function(C){return C.copy(mt)},this.setViewport=function(C,D,G,k){C.isVector4?mt.set(C.x,C.y,C.z,C.w):mt.set(C,D,G,k),Et.viewport(b.copy(mt).multiplyScalar(H).round())},this.getScissor=function(C){return C.copy(Ot)},this.setScissor=function(C,D,G,k){C.isVector4?Ot.set(C.x,C.y,C.z,C.w):Ot.set(C,D,G,k),Et.scissor(z.copy(Ot).multiplyScalar(H).round())},this.getScissorTest=function(){return se},this.setScissorTest=function(C){Et.setScissorTest(se=C)},this.setOpaqueSort=function(C){rt=C},this.setTransparentSort=function(C){lt=C},this.getClearColor=function(C){return C.copy(Ct.getClearColor())},this.setClearColor=function(){Ct.setClearColor(...arguments)},this.getClearAlpha=function(){return Ct.getClearAlpha()},this.setClearAlpha=function(){Ct.setClearAlpha(...arguments)},this.clear=function(C=!0,D=!0,G=!0){let k=0;if(C){let N=!1;if(P!==null){const K=P.texture.format;N=K===go||K===fo||K===uo}if(N){const K=P.texture.type,ht=K===vi||K===Mn||K===qs||K===$s||K===ho||K===co,gt=Ct.getClearColor(),ut=Ct.getClearAlpha(),wt=gt.r,Pt=gt.g,St=gt.b;ht?(p[0]=wt,p[1]=Pt,p[2]=St,p[3]=ut,_.clearBufferuiv(_.COLOR,0,p)):(m[0]=wt,m[1]=Pt,m[2]=St,m[3]=ut,_.clearBufferiv(_.COLOR,0,m))}else k|=_.COLOR_BUFFER_BIT}D&&(k|=_.DEPTH_BUFFER_BIT),G&&(k|=_.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),_.clear(k)},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(){e.removeEventListener("webglcontextlost",st,!1),e.removeEventListener("webglcontextrestored",dt,!1),e.removeEventListener("webglcontextcreationerror",q,!1),Ct.dispose(),X.dispose(),xt.dispose(),ft.dispose(),Se.dispose(),fe.dispose(),O.dispose(),At.dispose(),Ft.dispose(),Z.dispose(),et.dispose(),et.removeEventListener("sessionstart",Mi),et.removeEventListener("sessionend",gc),On.stop()};function st(C){C.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),w=!0}function dt(){console.log("THREE.WebGLRenderer: Context Restored."),w=!1;const C=re.autoReset,D=It.enabled,G=It.autoUpdate,k=It.needsUpdate,N=It.type;L(),re.autoReset=C,It.enabled=D,It.autoUpdate=G,It.needsUpdate=k,It.type=N}function q(C){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",C.statusMessage)}function j(C){const D=C.target;D.removeEventListener("dispose",j),pt(D)}function pt(C){Dt(C),ft.remove(C)}function Dt(C){const D=ft.get(C).programs;D!==void 0&&(D.forEach(function(G){Z.releaseProgram(G)}),C.isShaderMaterial&&Z.releaseShaderCache(C))}this.renderBufferDirect=function(C,D,G,k,N,K){D===null&&(D=Lt);const ht=N.isMesh&&N.matrixWorld.determinant()<0,gt=KI(C,D,G,k,N);Et.setMaterial(k,ht);let ut=G.index,wt=1;if(k.wireframe===!0){if(ut=I.getWireframeAttribute(G),ut===void 0)return;wt=2}const Pt=G.drawRange,St=G.attributes.position;let zt=Pt.start*wt,Kt=(Pt.start+Pt.count)*wt;K!==null&&(zt=Math.max(zt,K.start*wt),Kt=Math.min(Kt,(K.start+K.count)*wt)),ut!==null?(zt=Math.max(zt,0),Kt=Math.min(Kt,ut.count)):St!=null&&(zt=Math.max(zt,0),Kt=Math.min(Kt,St.count));const ce=Kt-zt;if(ce<0||ce===1/0)return;At.setup(N,k,gt,G,ut);let ne,te=ct;if(ut!==null&&(ne=M.get(ut),te=Rt,te.setIndex(ne)),N.isMesh)k.wireframe===!0?(Et.setLineWidth(k.wireframeLinewidth*Wt()),te.setMode(_.LINES)):te.setMode(_.TRIANGLES);else if(N.isLine){let yt=k.linewidth;yt===void 0&&(yt=1),Et.setLineWidth(yt*Wt()),N.isLineSegments?te.setMode(_.LINES):N.isLineLoop?te.setMode(_.LINE_LOOP):te.setMode(_.LINE_STRIP)}else N.isPoints?te.setMode(_.POINTS):N.isSprite&&te.setMode(_.TRIANGLES);if(N.isBatchedMesh)if(N._multiDrawInstances!==null)os("THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection."),te.renderMultiDrawInstances(N._multiDrawStarts,N._multiDrawCounts,N._multiDrawCount,N._multiDrawInstances);else if(Mt.get("WEBGL_multi_draw"))te.renderMultiDraw(N._multiDrawStarts,N._multiDrawCounts,N._multiDrawCount);else{const yt=N._multiDrawStarts,ae=N._multiDrawCounts,Xt=N._multiDrawCount,Ze=ut?M.get(ut).bytesPerElement:1,Rs=ft.get(k).currentProgram.getUniforms();for(let Je=0;Je<Xt;Je++)Rs.setValue(_,"_gl_DrawID",Je),te.render(yt[Je]/Ze,ae[Je])}else if(N.isInstancedMesh)te.renderInstances(zt,ce,N.count);else if(G.isInstancedBufferGeometry){const yt=G._maxInstanceCount!==void 0?G._maxInstanceCount:1/0,ae=Math.min(G.instanceCount,yt);te.renderInstances(zt,ce,ae)}else te.render(zt,ce)};function ie(C,D,G){C.transparent===!0&&C.side===Ni&&C.forceSinglePass===!1?(C.side=Oe,C.needsUpdate=!0,Ia(C,D,G),C.side=$i,C.needsUpdate=!0,Ia(C,D,G),C.side=Ni):Ia(C,D,G)}this.compile=function(C,D,G=null){G===null&&(G=C),f=xt.get(G),f.init(D),S.push(f),G.traverseVisible(function(N){N.isLight&&N.layers.test(D.layers)&&(f.pushLight(N),N.castShadow&&f.pushShadow(N))}),C!==G&&C.traverseVisible(function(N){N.isLight&&N.layers.test(D.layers)&&(f.pushLight(N),N.castShadow&&f.pushShadow(N))}),f.setupLights();const k=new Set;return C.traverse(function(N){if(!(N.isMesh||N.isPoints||N.isLine||N.isSprite))return;const K=N.material;if(K)if(Array.isArray(K))for(let ht=0;ht<K.length;ht++){const gt=K[ht];ie(gt,G,N),k.add(gt)}else ie(K,G,N),k.add(K)}),f=S.pop(),k},this.compileAsync=function(C,D,G=null){const k=this.compile(C,D,G);return new Promise(N=>{function K(){if(k.forEach(function(ht){ft.get(ht).currentProgram.isReady()&&k.delete(ht)}),k.size===0){N(C);return}setTimeout(K,10)}Mt.get("KHR_parallel_shader_compile")!==null?K():setTimeout(K,10)})};let Qt=null;function Hi(C){Qt&&Qt(C)}function Mi(){On.stop()}function gc(){On.start()}const On=new Nh;On.setAnimationLoop(Hi),typeof self<"u"&&On.setContext(self),this.setAnimationLoop=function(C){Qt=C,et.setAnimationLoop(C),C===null?On.stop():On.start()},et.addEventListener("sessionstart",Mi),et.addEventListener("sessionend",gc),this.render=function(C,D){if(D!==void 0&&D.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(w===!0)return;if(C.matrixWorldAutoUpdate===!0&&C.updateMatrixWorld(),D.parent===null&&D.matrixWorldAutoUpdate===!0&&D.updateMatrixWorld(),et.enabled===!0&&et.isPresenting===!0&&(et.cameraAutoUpdate===!0&&et.updateCamera(D),D=et.getCamera()),C.isScene===!0&&C.onBeforeRender(v,C,D,P),f=xt.get(C,S.length),f.init(D),S.push(f),nt.multiplyMatrices(D.projectionMatrix,D.matrixWorldInverse),$t.setFromProjectionMatrix(nt,xi,D.reversedDepth),ot=this.localClippingEnabled,J=it.init(this.clippingPlanes,ot),g=X.get(C,y.length),g.init(),y.push(g),et.enabled===!0&&et.isPresenting===!0){const K=v.xr.getDepthSensingMesh();K!==null&&LA(K,D,-1/0,v.sortObjects)}LA(C,D,0,v.sortObjects),g.finish(),v.sortObjects===!0&&g.sort(rt,lt),de=et.enabled===!1||et.isPresenting===!1||et.hasDepthSensing()===!1,de&&Ct.addToRenderList(g,C),this.info.render.frame++,J===!0&&it.beginShadows();const G=f.state.shadowsArray;It.render(G,C,D),J===!0&&it.endShadows(),this.info.autoReset===!0&&this.info.reset();const k=g.opaque,N=g.transmissive;if(f.setupLights(),D.isArrayCamera){const K=D.cameras;if(N.length>0)for(let ht=0,gt=K.length;ht<gt;ht++){const ut=K[ht];mc(k,N,C,ut)}de&&Ct.render(C);for(let ht=0,gt=K.length;ht<gt;ht++){const ut=K[ht];pc(g,C,ut,ut.viewport)}}else N.length>0&&mc(k,N,C,D),de&&Ct.render(C),pc(g,C,D);P!==null&&R===0&&(Ut.updateMultisampleRenderTarget(P),Ut.updateRenderTargetMipmap(P)),C.isScene===!0&&C.onAfterRender(v,C,D),At.resetDefaultState(),E=-1,x=null,S.pop(),S.length>0?(f=S[S.length-1],J===!0&&it.setGlobalState(v.clippingPlanes,f.state.camera)):f=null,y.pop(),y.length>0?g=y[y.length-1]:g=null};function LA(C,D,G,k){if(C.visible===!1)return;if(C.layers.test(D.layers)){if(C.isGroup)G=C.renderOrder;else if(C.isLOD)C.autoUpdate===!0&&C.update(D);else if(C.isLight)f.pushLight(C),C.castShadow&&f.pushShadow(C);else if(C.isSprite){if(!C.frustumCulled||$t.intersectsSprite(C)){k&&Tt.setFromMatrixPosition(C.matrixWorld).applyMatrix4(nt);const ht=O.update(C),gt=C.material;gt.visible&&g.push(C,ht,gt,G,Tt.z,null)}}else if((C.isMesh||C.isLine||C.isPoints)&&(!C.frustumCulled||$t.intersectsObject(C))){const ht=O.update(C),gt=C.material;if(k&&(C.boundingSphere!==void 0?(C.boundingSphere===null&&C.computeBoundingSphere(),Tt.copy(C.boundingSphere.center)):(ht.boundingSphere===null&&ht.computeBoundingSphere(),Tt.copy(ht.boundingSphere.center)),Tt.applyMatrix4(C.matrixWorld).applyMatrix4(nt)),Array.isArray(gt)){const ut=ht.groups;for(let wt=0,Pt=ut.length;wt<Pt;wt++){const St=ut[wt],zt=gt[St.materialIndex];zt&&zt.visible&&g.push(C,ht,zt,G,Tt.z,St)}}else gt.visible&&g.push(C,ht,gt,G,Tt.z,null)}}const K=C.children;for(let ht=0,gt=K.length;ht<gt;ht++)LA(K[ht],D,G,k)}function pc(C,D,G,k){const N=C.opaque,K=C.transmissive,ht=C.transparent;f.setupLightsView(G),J===!0&&it.setGlobalState(v.clippingPlanes,G),k&&Et.viewport(b.copy(k)),N.length>0&&ma(N,D,G),K.length>0&&ma(K,D,G),ht.length>0&&ma(ht,D,G),Et.buffers.depth.setTest(!0),Et.buffers.depth.setMask(!0),Et.buffers.color.setMask(!0),Et.setPolygonOffset(!1)}function mc(C,D,G,k){if((G.isScene===!0?G.overrideMaterial:null)!==null)return;f.state.transmissionRenderTarget[k.id]===void 0&&(f.state.transmissionRenderTarget[k.id]=new yn(1,1,{generateMipmaps:!0,type:Mt.has("EXT_color_buffer_half_float")||Mt.has("EXT_color_buffer_float")?Ks:vi,minFilter:Sn,samples:4,stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:Yt.workingColorSpace}));const K=f.state.transmissionRenderTarget[k.id],ht=k.viewport||b;K.setSize(ht.z*v.transmissionResolutionScale,ht.w*v.transmissionResolutionScale);const gt=v.getRenderTarget(),ut=v.getActiveCubeFace(),wt=v.getActiveMipmapLevel();v.setRenderTarget(K),v.getClearColor(U),W=v.getClearAlpha(),W<1&&v.setClearColor(16777215,.5),v.clear(),de&&Ct.render(G);const Pt=v.toneMapping;v.toneMapping=en;const St=k.viewport;if(k.viewport!==void 0&&(k.viewport=void 0),f.setupLightsView(k),J===!0&&it.setGlobalState(v.clippingPlanes,k),ma(C,G,k),Ut.updateMultisampleRenderTarget(K),Ut.updateRenderTargetMipmap(K),Mt.has("WEBGL_multisampled_render_to_texture")===!1){let zt=!1;for(let Kt=0,ce=D.length;Kt<ce;Kt++){const ne=D[Kt],te=ne.object,yt=ne.geometry,ae=ne.material,Xt=ne.group;if(ae.side===Ni&&te.layers.test(k.layers)){const Ze=ae.side;ae.side=Oe,ae.needsUpdate=!0,Ic(te,G,k,yt,ae,Xt),ae.side=Ze,ae.needsUpdate=!0,zt=!0}}zt===!0&&(Ut.updateMultisampleRenderTarget(K),Ut.updateRenderTargetMipmap(K))}v.setRenderTarget(gt,ut,wt),v.setClearColor(U,W),St!==void 0&&(k.viewport=St),v.toneMapping=Pt}function ma(C,D,G){const k=D.isScene===!0?D.overrideMaterial:null;for(let N=0,K=C.length;N<K;N++){const ht=C[N],gt=ht.object,ut=ht.geometry,wt=ht.group;let Pt=ht.material;Pt.allowOverride===!0&&k!==null&&(Pt=k),gt.layers.test(G.layers)&&Ic(gt,D,G,ut,Pt,wt)}}function Ic(C,D,G,k,N,K){C.onBeforeRender(v,D,G,k,N,K),C.modelViewMatrix.multiplyMatrices(G.matrixWorldInverse,C.matrixWorld),C.normalMatrix.getNormalMatrix(C.modelViewMatrix),N.onBeforeRender(v,D,G,k,C,K),N.transparent===!0&&N.side===Ni&&N.forceSinglePass===!1?(N.side=Oe,N.needsUpdate=!0,v.renderBufferDirect(G,D,k,N,C,K),N.side=$i,N.needsUpdate=!0,v.renderBufferDirect(G,D,k,N,C,K),N.side=Ni):v.renderBufferDirect(G,D,k,N,C,K),C.onAfterRender(v,D,G,k,N,K)}function Ia(C,D,G){D.isScene!==!0&&(D=Lt);const k=ft.get(C),N=f.state.lights,K=f.state.shadowsArray,ht=N.state.version,gt=Z.getParameters(C,N.state,K,D,G),ut=Z.getProgramCacheKey(gt);let wt=k.programs;k.environment=C.isMeshStandardMaterial?D.environment:null,k.fog=D.fog,k.envMap=(C.isMeshStandardMaterial?fe:Se).get(C.envMap||k.environment),k.envMapRotation=k.environment!==null&&C.envMap===null?D.environmentRotation:C.envMapRotation,wt===void 0&&(C.addEventListener("dispose",j),wt=new Map,k.programs=wt);let Pt=wt.get(ut);if(Pt!==void 0){if(k.currentProgram===Pt&&k.lightsStateVersion===ht)return vc(C,gt),Pt}else gt.uniforms=Z.getUniforms(C),C.onBeforeCompile(gt,v),Pt=Z.acquireProgram(gt,ut),wt.set(ut,Pt),k.uniforms=gt.uniforms;const St=k.uniforms;return(!C.isShaderMaterial&&!C.isRawShaderMaterial||C.clipping===!0)&&(St.clippingPlanes=it.uniform),vc(C,gt),k.needsLights=tC(C),k.lightsStateVersion=ht,k.needsLights&&(St.ambientLightColor.value=N.state.ambient,St.lightProbe.value=N.state.probe,St.directionalLights.value=N.state.directional,St.directionalLightShadows.value=N.state.directionalShadow,St.spotLights.value=N.state.spot,St.spotLightShadows.value=N.state.spotShadow,St.rectAreaLights.value=N.state.rectArea,St.ltc_1.value=N.state.rectAreaLTC1,St.ltc_2.value=N.state.rectAreaLTC2,St.pointLights.value=N.state.point,St.pointLightShadows.value=N.state.pointShadow,St.hemisphereLights.value=N.state.hemi,St.directionalShadowMap.value=N.state.directionalShadowMap,St.directionalShadowMatrix.value=N.state.directionalShadowMatrix,St.spotShadowMap.value=N.state.spotShadowMap,St.spotLightMatrix.value=N.state.spotLightMatrix,St.spotLightMap.value=N.state.spotLightMap,St.pointShadowMap.value=N.state.pointShadowMap,St.pointShadowMatrix.value=N.state.pointShadowMatrix),k.currentProgram=Pt,k.uniformsList=null,Pt}function Cc(C){if(C.uniformsList===null){const D=C.currentProgram.getUniforms();C.uniformsList=ua.seqWithValue(D.seq,C.uniforms)}return C.uniformsList}function vc(C,D){const G=ft.get(C);G.outputColorSpace=D.outputColorSpace,G.batching=D.batching,G.batchingColor=D.batchingColor,G.instancing=D.instancing,G.instancingColor=D.instancingColor,G.instancingMorph=D.instancingMorph,G.skinning=D.skinning,G.morphTargets=D.morphTargets,G.morphNormals=D.morphNormals,G.morphColors=D.morphColors,G.morphTargetsCount=D.morphTargetsCount,G.numClippingPlanes=D.numClippingPlanes,G.numIntersection=D.numClipIntersection,G.vertexAlphas=D.vertexAlphas,G.vertexTangents=D.vertexTangents,G.toneMapping=D.toneMapping}function KI(C,D,G,k,N){D.isScene!==!0&&(D=Lt),Ut.resetTextureUnits();const K=D.fog,ht=k.isMeshStandardMaterial?D.environment:null,gt=P===null?v.outputColorSpace:P.isXRRenderTarget===!0?P.texture.colorSpace:ns,ut=(k.isMeshStandardMaterial?fe:Se).get(k.envMap||ht),wt=k.vertexColors===!0&&!!G.attributes.color&&G.attributes.color.itemSize===4,Pt=!!G.attributes.tangent&&(!!k.normalMap||k.anisotropy>0),St=!!G.morphAttributes.position,zt=!!G.morphAttributes.normal,Kt=!!G.morphAttributes.color;let ce=en;k.toneMapped&&(P===null||P.isXRRenderTarget===!0)&&(ce=v.toneMapping);const ne=G.morphAttributes.position||G.morphAttributes.normal||G.morphAttributes.color,te=ne!==void 0?ne.length:0,yt=ft.get(k),ae=f.state.lights;if(J===!0&&(ot===!0||C!==x)){const Le=C===x&&k.id===E;it.setState(k,C,Le)}let Xt=!1;k.version===yt.__version?(yt.needsLights&&yt.lightsStateVersion!==ae.state.version||yt.outputColorSpace!==gt||N.isBatchedMesh&&yt.batching===!1||!N.isBatchedMesh&&yt.batching===!0||N.isBatchedMesh&&yt.batchingColor===!0&&N.colorTexture===null||N.isBatchedMesh&&yt.batchingColor===!1&&N.colorTexture!==null||N.isInstancedMesh&&yt.instancing===!1||!N.isInstancedMesh&&yt.instancing===!0||N.isSkinnedMesh&&yt.skinning===!1||!N.isSkinnedMesh&&yt.skinning===!0||N.isInstancedMesh&&yt.instancingColor===!0&&N.instanceColor===null||N.isInstancedMesh&&yt.instancingColor===!1&&N.instanceColor!==null||N.isInstancedMesh&&yt.instancingMorph===!0&&N.morphTexture===null||N.isInstancedMesh&&yt.instancingMorph===!1&&N.morphTexture!==null||yt.envMap!==ut||k.fog===!0&&yt.fog!==K||yt.numClippingPlanes!==void 0&&(yt.numClippingPlanes!==it.numPlanes||yt.numIntersection!==it.numIntersection)||yt.vertexAlphas!==wt||yt.vertexTangents!==Pt||yt.morphTargets!==St||yt.morphNormals!==zt||yt.morphColors!==Kt||yt.toneMapping!==ce||yt.morphTargetsCount!==te)&&(Xt=!0):(Xt=!0,yt.__version=k.version);let Ze=yt.currentProgram;Xt===!0&&(Ze=Ia(k,D,N));let Rs=!1,Je=!1,dr=!1;const oe=Ze.getUniforms(),$e=yt.uniforms;if(Et.useProgram(Ze.program)&&(Rs=!0,Je=!0,dr=!0),k.id!==E&&(E=k.id,Je=!0),Rs||x!==C){Et.buffers.depth.getReversed()&&C.reversedDepth!==!0&&(C._reversedDepth=!0,C.updateProjectionMatrix()),oe.setValue(_,"projectionMatrix",C.projectionMatrix),oe.setValue(_,"viewMatrix",C.matrixWorldInverse);const Ge=oe.map.cameraPosition;Ge!==void 0&&Ge.setValue(_,bt.setFromMatrixPosition(C.matrixWorld)),Jt.logarithmicDepthBuffer&&oe.setValue(_,"logDepthBufFC",2/(Math.log(C.far+1)/Math.LN2)),(k.isMeshPhongMaterial||k.isMeshToonMaterial||k.isMeshLambertMaterial||k.isMeshBasicMaterial||k.isMeshStandardMaterial||k.isShaderMaterial)&&oe.setValue(_,"isOrthographic",C.isOrthographicCamera===!0),x!==C&&(x=C,Je=!0,dr=!0)}if(N.isSkinnedMesh){oe.setOptional(_,N,"bindMatrix"),oe.setOptional(_,N,"bindMatrixInverse");const Le=N.skeleton;Le&&(Le.boneTexture===null&&Le.computeBoneTexture(),oe.setValue(_,"boneTexture",Le.boneTexture,Ut))}N.isBatchedMesh&&(oe.setOptional(_,N,"batchingTexture"),oe.setValue(_,"batchingTexture",N._matricesTexture,Ut),oe.setOptional(_,N,"batchingIdTexture"),oe.setValue(_,"batchingIdTexture",N._indirectTexture,Ut),oe.setOptional(_,N,"batchingColorTexture"),N._colorsTexture!==null&&oe.setValue(_,"batchingColorTexture",N._colorsTexture,Ut));const ti=G.morphAttributes;if((ti.position!==void 0||ti.normal!==void 0||ti.color!==void 0)&&tt.update(N,G,Ze),(Je||yt.receiveShadow!==N.receiveShadow)&&(yt.receiveShadow=N.receiveShadow,oe.setValue(_,"receiveShadow",N.receiveShadow)),k.isMeshGouraudMaterial&&k.envMap!==null&&($e.envMap.value=ut,$e.flipEnvMap.value=ut.isCubeTexture&&ut.isRenderTargetTexture===!1?-1:1),k.isMeshStandardMaterial&&k.envMap===null&&D.environment!==null&&($e.envMapIntensity.value=D.environmentIntensity),Je&&(oe.setValue(_,"toneMappingExposure",v.toneMappingExposure),yt.needsLights&&$I($e,dr),K&&k.fog===!0&&Q.refreshFogUniforms($e,K),Q.refreshMaterialUniforms($e,k,H,$,f.state.transmissionRenderTarget[C.id]),ua.upload(_,Cc(yt),$e,Ut)),k.isShaderMaterial&&k.uniformsNeedUpdate===!0&&(ua.upload(_,Cc(yt),$e,Ut),k.uniformsNeedUpdate=!1),k.isSpriteMaterial&&oe.setValue(_,"center",N.center),oe.setValue(_,"modelViewMatrix",N.modelViewMatrix),oe.setValue(_,"normalMatrix",N.normalMatrix),oe.setValue(_,"modelMatrix",N.matrixWorld),k.isShaderMaterial||k.isRawShaderMaterial){const Le=k.uniformsGroups;for(let Ge=0,DA=Le.length;Ge<DA;Ge++){const Un=Le[Ge];Ft.update(Un,Ze),Ft.bind(Un,Ze)}}return Ze}function $I(C,D){C.ambientLightColor.needsUpdate=D,C.lightProbe.needsUpdate=D,C.directionalLights.needsUpdate=D,C.directionalLightShadows.needsUpdate=D,C.pointLights.needsUpdate=D,C.pointLightShadows.needsUpdate=D,C.spotLights.needsUpdate=D,C.spotLightShadows.needsUpdate=D,C.rectAreaLights.needsUpdate=D,C.hemisphereLights.needsUpdate=D}function tC(C){return C.isMeshLambertMaterial||C.isMeshToonMaterial||C.isMeshPhongMaterial||C.isMeshStandardMaterial||C.isShadowMaterial||C.isShaderMaterial&&C.lights===!0}this.getActiveCubeFace=function(){return T},this.getActiveMipmapLevel=function(){return R},this.getRenderTarget=function(){return P},this.setRenderTargetTextures=function(C,D,G){const k=ft.get(C);k.__autoAllocateDepthBuffer=C.resolveDepthBuffer===!1,k.__autoAllocateDepthBuffer===!1&&(k.__useRenderToTexture=!1),ft.get(C.texture).__webglTexture=D,ft.get(C.depthTexture).__webglTexture=k.__autoAllocateDepthBuffer?void 0:G,k.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(C,D){const G=ft.get(C);G.__webglFramebuffer=D,G.__useDefaultFramebuffer=D===void 0};const eC=_.createFramebuffer();this.setRenderTarget=function(C,D=0,G=0){P=C,T=D,R=G;let k=!0,N=null,K=!1,ht=!1;if(C){const ut=ft.get(C);if(ut.__useDefaultFramebuffer!==void 0)Et.bindFramebuffer(_.FRAMEBUFFER,null),k=!1;else if(ut.__webglFramebuffer===void 0)Ut.setupRenderTarget(C);else if(ut.__hasExternalTextures)Ut.rebindTextures(C,ft.get(C.texture).__webglTexture,ft.get(C.depthTexture).__webglTexture);else if(C.depthBuffer){const St=C.depthTexture;if(ut.__boundDepthTexture!==St){if(St!==null&&ft.has(St)&&(C.width!==St.image.width||C.height!==St.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");Ut.setupDepthRenderbuffer(C)}}const wt=C.texture;(wt.isData3DTexture||wt.isDataArrayTexture||wt.isCompressedArrayTexture)&&(ht=!0);const Pt=ft.get(C).__webglFramebuffer;C.isWebGLCubeRenderTarget?(Array.isArray(Pt[D])?N=Pt[D][G]:N=Pt[D],K=!0):C.samples>0&&Ut.useMultisampledRTT(C)===!1?N=ft.get(C).__webglMultisampledFramebuffer:Array.isArray(Pt)?N=Pt[G]:N=Pt,b.copy(C.viewport),z.copy(C.scissor),B=C.scissorTest}else b.copy(mt).multiplyScalar(H).floor(),z.copy(Ot).multiplyScalar(H).floor(),B=se;if(G!==0&&(N=eC),Et.bindFramebuffer(_.FRAMEBUFFER,N)&&k&&Et.drawBuffers(C,N),Et.viewport(b),Et.scissor(z),Et.setScissorTest(B),K){const ut=ft.get(C.texture);_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_CUBE_MAP_POSITIVE_X+D,ut.__webglTexture,G)}else if(ht){const ut=D;for(let wt=0;wt<C.textures.length;wt++){const Pt=ft.get(C.textures[wt]);_.framebufferTextureLayer(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0+wt,Pt.__webglTexture,G,ut)}}else if(C!==null&&G!==0){const ut=ft.get(C.texture);_.framebufferTexture2D(_.FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,ut.__webglTexture,G)}E=-1},this.readRenderTargetPixels=function(C,D,G,k,N,K,ht,gt=0){if(!(C&&C.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let ut=ft.get(C).__webglFramebuffer;if(C.isWebGLCubeRenderTarget&&ht!==void 0&&(ut=ut[ht]),ut){Et.bindFramebuffer(_.FRAMEBUFFER,ut);try{const wt=C.textures[gt],Pt=wt.format,St=wt.type;if(!Jt.textureFormatReadable(Pt)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!Jt.textureTypeReadable(St)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}D>=0&&D<=C.width-k&&G>=0&&G<=C.height-N&&(C.textures.length>1&&_.readBuffer(_.COLOR_ATTACHMENT0+gt),_.readPixels(D,G,k,N,vt.convert(Pt),vt.convert(St),K))}finally{const wt=P!==null?ft.get(P).__webglFramebuffer:null;Et.bindFramebuffer(_.FRAMEBUFFER,wt)}}},this.readRenderTargetPixelsAsync=async function(C,D,G,k,N,K,ht,gt=0){if(!(C&&C.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let ut=ft.get(C).__webglFramebuffer;if(C.isWebGLCubeRenderTarget&&ht!==void 0&&(ut=ut[ht]),ut)if(D>=0&&D<=C.width-k&&G>=0&&G<=C.height-N){Et.bindFramebuffer(_.FRAMEBUFFER,ut);const wt=C.textures[gt],Pt=wt.format,St=wt.type;if(!Jt.textureFormatReadable(Pt))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!Jt.textureTypeReadable(St))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");const zt=_.createBuffer();_.bindBuffer(_.PIXEL_PACK_BUFFER,zt),_.bufferData(_.PIXEL_PACK_BUFFER,K.byteLength,_.STREAM_READ),C.textures.length>1&&_.readBuffer(_.COLOR_ATTACHMENT0+gt),_.readPixels(D,G,k,N,vt.convert(Pt),vt.convert(St),0);const Kt=P!==null?ft.get(P).__webglFramebuffer:null;Et.bindFramebuffer(_.FRAMEBUFFER,Kt);const ce=_.fenceSync(_.SYNC_GPU_COMMANDS_COMPLETE,0);return _.flush(),await tf(_,ce,4),_.bindBuffer(_.PIXEL_PACK_BUFFER,zt),_.getBufferSubData(_.PIXEL_PACK_BUFFER,0,K),_.deleteBuffer(zt),_.deleteSync(ce),K}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(C,D=null,G=0){const k=Math.pow(2,-G),N=Math.floor(C.image.width*k),K=Math.floor(C.image.height*k),ht=D!==null?D.x:0,gt=D!==null?D.y:0;Ut.setTexture2D(C,0),_.copyTexSubImage2D(_.TEXTURE_2D,G,0,0,ht,gt,N,K),Et.unbindTexture()};const iC=_.createFramebuffer(),nC=_.createFramebuffer();this.copyTextureToTexture=function(C,D,G=null,k=null,N=0,K=null){K===null&&(N!==0?(os("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),K=N,N=0):K=0);let ht,gt,ut,wt,Pt,St,zt,Kt,ce;const ne=C.isCompressedTexture?C.mipmaps[K]:C.image;if(G!==null)ht=G.max.x-G.min.x,gt=G.max.y-G.min.y,ut=G.isBox3?G.max.z-G.min.z:1,wt=G.min.x,Pt=G.min.y,St=G.isBox3?G.min.z:0;else{const ti=Math.pow(2,-N);ht=Math.floor(ne.width*ti),gt=Math.floor(ne.height*ti),C.isDataArrayTexture?ut=ne.depth:C.isData3DTexture?ut=Math.floor(ne.depth*ti):ut=1,wt=0,Pt=0,St=0}k!==null?(zt=k.x,Kt=k.y,ce=k.z):(zt=0,Kt=0,ce=0);const te=vt.convert(D.format),yt=vt.convert(D.type);let ae;D.isData3DTexture?(Ut.setTexture3D(D,0),ae=_.TEXTURE_3D):D.isDataArrayTexture||D.isCompressedArrayTexture?(Ut.setTexture2DArray(D,0),ae=_.TEXTURE_2D_ARRAY):(Ut.setTexture2D(D,0),ae=_.TEXTURE_2D),_.pixelStorei(_.UNPACK_FLIP_Y_WEBGL,D.flipY),_.pixelStorei(_.UNPACK_PREMULTIPLY_ALPHA_WEBGL,D.premultiplyAlpha),_.pixelStorei(_.UNPACK_ALIGNMENT,D.unpackAlignment);const Xt=_.getParameter(_.UNPACK_ROW_LENGTH),Ze=_.getParameter(_.UNPACK_IMAGE_HEIGHT),Rs=_.getParameter(_.UNPACK_SKIP_PIXELS),Je=_.getParameter(_.UNPACK_SKIP_ROWS),dr=_.getParameter(_.UNPACK_SKIP_IMAGES);_.pixelStorei(_.UNPACK_ROW_LENGTH,ne.width),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,ne.height),_.pixelStorei(_.UNPACK_SKIP_PIXELS,wt),_.pixelStorei(_.UNPACK_SKIP_ROWS,Pt),_.pixelStorei(_.UNPACK_SKIP_IMAGES,St);const oe=C.isDataArrayTexture||C.isData3DTexture,$e=D.isDataArrayTexture||D.isData3DTexture;if(C.isDepthTexture){const ti=ft.get(C),Le=ft.get(D),Ge=ft.get(ti.__renderTarget),DA=ft.get(Le.__renderTarget);Et.bindFramebuffer(_.READ_FRAMEBUFFER,Ge.__webglFramebuffer),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,DA.__webglFramebuffer);for(let Un=0;Un<ut;Un++)oe&&(_.framebufferTextureLayer(_.READ_FRAMEBUFFER,_.COLOR_ATTACHMENT0,ft.get(C).__webglTexture,N,St+Un),_.framebufferTextureLayer(_.DRAW_FRAMEBUFFER,_.COLOR_ATTACHMENT0,ft.get(D).__webglTexture,K,ce+Un)),_.blitFramebuffer(wt,Pt,ht,gt,zt,Kt,ht,gt,_.DEPTH_BUFFER_BIT,_.NEAREST);Et.bindFramebuffer(_.READ_FRAMEBUFFER,null),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,null)}else if(N!==0||C.isRenderTargetTexture||ft.has(C)){const ti=ft.get(C),Le=ft.get(D);Et.bindFramebuffer(_.READ_FRAMEBUFFER,iC),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,nC);for(let Ge=0;Ge<ut;Ge++)oe?_.framebufferTextureLayer(_.READ_FRAMEBUFFER,_.COLOR_ATTACHMENT0,ti.__webglTexture,N,St+Ge):_.framebufferTexture2D(_.READ_FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,ti.__webglTexture,N),$e?_.framebufferTextureLayer(_.DRAW_FRAMEBUFFER,_.COLOR_ATTACHMENT0,Le.__webglTexture,K,ce+Ge):_.framebufferTexture2D(_.DRAW_FRAMEBUFFER,_.COLOR_ATTACHMENT0,_.TEXTURE_2D,Le.__webglTexture,K),N!==0?_.blitFramebuffer(wt,Pt,ht,gt,zt,Kt,ht,gt,_.COLOR_BUFFER_BIT,_.NEAREST):$e?_.copyTexSubImage3D(ae,K,zt,Kt,ce+Ge,wt,Pt,ht,gt):_.copyTexSubImage2D(ae,K,zt,Kt,wt,Pt,ht,gt);Et.bindFramebuffer(_.READ_FRAMEBUFFER,null),Et.bindFramebuffer(_.DRAW_FRAMEBUFFER,null)}else $e?C.isDataTexture||C.isData3DTexture?_.texSubImage3D(ae,K,zt,Kt,ce,ht,gt,ut,te,yt,ne.data):D.isCompressedArrayTexture?_.compressedTexSubImage3D(ae,K,zt,Kt,ce,ht,gt,ut,te,ne.data):_.texSubImage3D(ae,K,zt,Kt,ce,ht,gt,ut,te,yt,ne):C.isDataTexture?_.texSubImage2D(_.TEXTURE_2D,K,zt,Kt,ht,gt,te,yt,ne.data):C.isCompressedTexture?_.compressedTexSubImage2D(_.TEXTURE_2D,K,zt,Kt,ne.width,ne.height,te,ne.data):_.texSubImage2D(_.TEXTURE_2D,K,zt,Kt,ht,gt,te,yt,ne);_.pixelStorei(_.UNPACK_ROW_LENGTH,Xt),_.pixelStorei(_.UNPACK_IMAGE_HEIGHT,Ze),_.pixelStorei(_.UNPACK_SKIP_PIXELS,Rs),_.pixelStorei(_.UNPACK_SKIP_ROWS,Je),_.pixelStorei(_.UNPACK_SKIP_IMAGES,dr),K===0&&D.generateMipmaps&&_.generateMipmap(ae),Et.unbindTexture()},this.copyTextureToTexture3D=function(C,D,G=null,k=null,N=0){return os('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(C,D,G,k,N)},this.initRenderTarget=function(C){ft.get(C).__webglFramebuffer===void 0&&Ut.setupRenderTarget(C)},this.initTexture=function(C){C.isCubeTexture?Ut.setTextureCube(C,0):C.isData3DTexture?Ut.setTexture3D(C,0):C.isDataArrayTexture||C.isCompressedArrayTexture?Ut.setTexture2DArray(C,0):Ut.setTexture2D(C,0),Et.unbindTexture()},this.resetState=function(){T=0,R=0,P=null,Et.reset(),At.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return xi}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=Yt._getDrawingBufferColorSpace(t),e.unpackColorSpace=Yt._getUnpackColorSpace()}}const cc={LANGUAGE_CHANGE_CONFIRMED:Ca.LANGUAGE_CHANGE_CONFIRMED},VI=new Set([jt.ENGLISH_UNITED_KINGDOM]),RA={selected:jt.ENGLISH_UNITED_KINGDOM,options:VI},fa={OPTIONS:"languages",SELECTED:"selected"},WI=`<section class="root">
3956
3956
  <canvas></canvas>
3957
3957
  <section class="menu-container">
3958
3958
  <bar-menu visibleButtons="1" cyclicalNavigation="true"></bar-menu>
@@ -3962,7 +3962,7 @@ void main() {
3962
3962
  headline="Switch language?"
3963
3963
  ></confirmation-dialog>
3964
3964
  </section>
3965
- `,GI=":host{display:block;width:100%;height:100%}.root{position:relative;width:100%;height:100%;overflow:hidden}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.menu-container{position:absolute;bottom:clamp(1rem,12vh,25%);left:50%}@media(max-width:768px){.menu-container{bottom:max(1rem,env(safe-area-inset-bottom) + 1rem)}}",oc=new CSSStyleSheet;oc.replaceSync(GI);class yA extends HTMLElement{static textureLoader=new xh;shadowRoot;static get observedAttributes(){return Object.values(la)}options=MA.options;flags=[];selected=MA.selected;selectedTmp=MA.selected;_renderer;_scene;_camera;_root;_canvas;_resizeObserver;_clock=new Th;_lastTime=0;_spotlight;_flagsGroup;_wind=null;_circleRadius=5;_cameraLookAtY=2;_targetGroupRotation=0;_currentGroupRotation=0;_unwrappedGroupRotation=0;_animationFrameId=0;_introCameraStartPosition=new F(0,5,10);_introCameraEndPosition=new F(0,5,10);_introCameraElapsed=0;_introCameraMoveDuration=2.2;_introCameraHoldDuration=.4;_isIntroCameraAnimating=!1;_isIntroCameraHolding=!1;_menuContainer;_menuIntroStartScale=.72;_barMenu;_confirmationDialog;_isInitialized=!1;_isInitializing=!1;_barMenuVisibleIndex=-1;_floorGeometry;_floorMaterial;_programmaticScrollTimer=null;constructor(){super(),this.shadowRoot=this.attachShadow({mode:"open"}),this.shadowRoot.adoptedStyleSheets.push(oc)}attributeChangedCallback(t,e,i){if(!(e===i||i==null))switch(t){case la.OPTIONS:{const n=JSON.parse(i);this.init(new Set(n))}break;case la.SELECTED:{const n=i;this.select(n)}break}}connectedCallback(){this._isInitialized&&this._animationFrameId===0&&(this._animationFrameId=requestAnimationFrame(this._animate))}disconnectedCallback(){cancelAnimationFrame(this._animationFrameId),this._animationFrameId=0,this._programmaticScrollTimer!==null&&(clearTimeout(this._programmaticScrollTimer),this._programmaticScrollTimer=null),this.flags.forEach(t=>{t.flagGroup?.destroy()}),this.flags=[],this._floorGeometry.dispose(),this._floorMaterial.dispose(),this._scene.clear(),this._renderer.dispose(),this._resizeObserver.disconnect(),this._confirmationDialog?.removeEventListener(Wi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation)}init(t){if(!(this._isInitialized||this._isInitializing)){if(this.options=t,this.options.size===0){console.warn(`${this.constructor.name}: No languages provided`);return}this._isInitializing=!0,this.setupHtmlElements(),this.setupScene(),this.setupUI(),this.setupFlags(),this.setupConfirmationDialog(),this._isInitialized=!0,this._isInitializing=!1,this.isConnected&&this._animationFrameId===0&&(this._animationFrameId=requestAnimationFrame(this._animate))}}setupHtmlElements(){this.shadowRoot.innerHTML=zI,this._root=this.shadowRoot.querySelector(".root")??(()=>{throw new Error(`${this.constructor.name}: root element not found`)})(),this._canvas=this.shadowRoot.querySelector(RA.CANVAS)??(()=>{throw new Error(`${this.constructor.name}: canvas element not found`)})(),this._confirmationDialog=this.shadowRoot.querySelector(Wi.selector)??(()=>{throw new Error(`${this.constructor.name}: confirmation-dialog element not found`)})()}setupScene(){this._scene=new Ih,this._scene.background=new Vt(1710618),this._scene.fog=new lA(1710618,8,50),this._camera=new ze(45,1,.1,100),this._camera.position.set(0,5,10),this._camera.lookAt(0,2,0),this._scene.add(this._camera),this._renderer=new rc({antialias:!0,canvas:this._canvas,alpha:!0}),this._renderer.debug.checkShaderErrors=!0,this._renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),this._renderer.shadowMap.enabled=!1;const t=new Nf(16777215,.3);this._scene.add(t);const e=new bh(14674943,3);e.position.set(10,20,10),this._scene.add(e);const i=new bh(11329439,.15);i.position.set(0,-1,0),this._scene.add(i),this._spotlight=new Df(16777215,150),this._spotlight.angle=Math.PI/6,this._spotlight.penumbra=.3,this._spotlight.decay=2,this._spotlight.distance=30,this._scene.add(this._spotlight),this._scene.add(this._spotlight.target);const n=100;this._floorGeometry=new ar(n,n),this._floorMaterial=new yf({color:1710618,roughness:.8,metalness:.2});const s=new pi(this._floorGeometry,this._floorMaterial);s.rotation.x=-Math.PI/2,s.receiveShadow=!0,this._scene.add(s),this.resizeHandler(),this.shadowRoot.appendChild(this._root)}setupUI(){this._menuContainer=this.shadowRoot.querySelector(".menu-container")??(()=>{throw new Error(`${this.constructor.name}: menu-container not found`)})(),this._barMenu=this.shadowRoot.querySelector(jc.selector)??(()=>{throw new Error(`${this.constructor.name}: bar menu element not found`)})()}setupFlags(){this._flagsGroup=new rr,this._scene.add(this._flagsGroup),this._wind=new Pi.Wind({speed:8,direction:new F(1,0,0)});const t=this.options.size;this._circleRadius=Math.max(5,3+t*.5),this._cameraLookAtY=this._circleRadius*.4,[...this.options].forEach((n,s)=>{const a=-(s/t*Math.PI*2),o=-Math.sin(a)*this._circleRadius,l=Math.cos(a)*this._circleRadius,A=Pi.buildFlag(),h=Pi.buildFlagpole({flagpoleType:Pi.FLAG_POLE_TYPE.VERTICAL},A),c=new Pi.FlagGroup({flagpole:h,flag:A});c.object.position.set(o,0,l);const u=ga.get(n)?.isoCode,d=u!=null?Un[u]:void 0;d!=null&&yA.textureLoader.load(d,p=>{c.setTexture(p)},void 0,()=>{console.warn(`LanguagePickerComponent: Failed to load texture for ${n}`)}),this._flagsGroup.add(c.object),this.flags.push({id:n,flagGroup:c,angle:a,windPhase:Math.random()*Math.PI*2,randomSeed:Math.random()})});const e=this.flags.find(n=>n.id===this.selected)??this.flags[0];if(e===void 0)return;this.selected=e.id,this.selectedTmp=this.selected,this._targetGroupRotation=e.angle,this._currentGroupRotation=e.angle,this._unwrappedGroupRotation=e.angle,this._flagsGroup.rotation.y=e.angle;const i=this._computeIntroCameraEndPosition();this._introCameraEndPosition.copy(i),this._introCameraStartPosition.set(0,i.y+this._circleRadius*3.1,i.z+this._circleRadius*4.6),this._camera.position.copy(this._introCameraStartPosition),this._camera.lookAt(0,this._cameraLookAtY,0),this._introCameraElapsed=0,this._isIntroCameraHolding=!0,this._isIntroCameraAnimating=!0,this._setMenuIntroScale(0),this._spotlight.position.set(0,8,this._circleRadius),this._spotlight.target.position.set(0,0,this._circleRadius),this._spotlight.target.updateMatrixWorld()}resizeHandler=()=>{const t=()=>{const e=this._root.clientWidth,i=this._root.clientHeight;e===0||i===0||(this._camera.aspect=e/i,this._camera.updateProjectionMatrix(),this._renderer.setSize(e,i,!1))};this._resizeObserver=new ResizeObserver(t),this._resizeObserver.observe(this._root),t()};listenToBarMenuNavigation(){new MutationObserver(()=>{if(this._programmaticScrollTimer!==null)return;const e=this._barMenu.querySelectorAll(NA.selector);for(let i=0;i<e.length;i++){const n=window.getComputedStyle(e[i]);if(n.display!=="none"&&n.visibility!=="hidden"&&parseFloat(n.opacity)>0){if(i===this._barMenuVisibleIndex)return;this._barMenuVisibleIndex=i;const a=[...this.options][i];if(a==null)return;this.selectedTmp=a,this._rotateToId(a);break}}}).observe(this._barMenu,{attributes:!0,subtree:!0,attributeFilter:["style","class"]})}_computeIntroCameraEndPosition(){const t=new ls().setFromObject(this._flagsGroup),e=new F,i=new F;t.getSize(e),t.getCenter(i);const n=t.min.y,s=Math.max(e.x,e.y,e.z)*.5,a=this._camera.fov*Math.PI/180,o=this._camera.aspect>0?this._camera.aspect:1,l=2*Math.atan(Math.tan(a*.5)*o),A=Math.max(s/Math.tan(a*.5),s/Math.tan(l*.5))*1.05,h=n+e.y*.25;this._cameraLookAtY=h+e.y*.06;const c=h+Math.max(e.y*.8,this._circleRadius*.28),u=i.z+A+this._circleRadius*.01;return new F(0,c,u)}select(t){if(this._isInitialized===!1){this.selected=t,this.selectedTmp=t;return}if(this.options.has(t)===!1){console.warn(`${this.constructor.name}: Language '${t}' not found`);return}t!==this.selected&&(this.selected=t,this.selectedTmp=t,this._rotateToId(this.selected),this._syncBarMenuToId(this.selected))}_rotateToId(t){const e=this.flags.find(s=>s.id===t);if(e===void 0)return;const i=2*Math.PI;let n=e.angle;for(;Math.abs(n-this._unwrappedGroupRotation)>Math.PI;)n+=n<this._unwrappedGroupRotation?i:-i;this._targetGroupRotation=n,this._unwrappedGroupRotation=n}_syncBarMenuToId(t){const e=[...this.options].indexOf(t);e!==-1&&(this._barMenuVisibleIndex=e,this._programmaticScrollTimer!==null&&clearTimeout(this._programmaticScrollTimer),this._programmaticScrollTimer=setTimeout(()=>{this._programmaticScrollTimer=null},500),this._barMenu.scrollToButton(e))}setupConfirmationDialog(){this._confirmationDialog.addEventListener(Wi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation),this.options.forEach(t=>{const e=document.createElement(NA.selector);e.textContent=ga.get(t)?.autonyms??t,e.addEventListener(lr.CLICK,()=>{this.barMenuButtonClickHandler()}),this._barMenu.appendChild(e)}),this._barMenu.visibleButtons=1,this._barMenu.cyclicalNavigation=!0,requestAnimationFrame(()=>{this._syncBarMenuToId(this.selected),this.listenToBarMenuNavigation()})}barMenuButtonClickHandler=()=>{const t=ga.get(this.selectedTmp);t!==void 0&&(this._confirmationDialog.text=`Switch to ${t.language.toLowerCase()}?`,this._confirmationDialog.showModal())};_handleConfirmation=()=>{this.selectedTmp!==this.selected&&this.dispatchEvent(new CustomEvent(ac.LANGUAGE_CHANGE_CONFIRMED,{detail:{value:this.selectedTmp},bubbles:!0,composed:!0}))};_animate=()=>{this._animationFrameId=requestAnimationFrame(this._animate);try{if(!this._isInitialized||this._camera==null||this._renderer==null)return;const t=this._clock.getElapsedTime(),e=t-this._lastTime;this._lastTime=t,this._wind!=null&&this._wind.update(),this.flags.forEach((i,n)=>{if(i.flagGroup==null)return;i.windPhase+=e*(.5+i.randomSeed*1.5),Pi.applyGravityToCloth(i.flagGroup.flag.cloth,i.flagGroup.flag.object),this._wind!=null&&Pi.applyWindForceToCloth(i.flagGroup.flag.cloth,this._wind,i.flagGroup.flag.object,{randomizeAmount:.6,randomSeed:i.randomSeed});const s=new Pi.Wind({speed:.3+Math.sin(i.windPhase)*.2,direction:new F(Math.sin(i.windPhase+n)*.5,Math.cos(i.windPhase*.7),Math.sin(i.windPhase*.5+n)).normalize()});Pi.applyWindForceToCloth(i.flagGroup.flag.cloth,s,i.flagGroup.flag.object,{randomizeAmount:.5,randomSeed:i.randomSeed*2}),i.flagGroup.simulate(e),i.flagGroup.render()}),this._updateGroupRotation(),this._updateIntroCamera(e),this._camera.lookAt(0,this._cameraLookAtY,0),this._renderer.render(this._scene,this._camera)}catch(t){console.error("Animation loop error:",t),cancelAnimationFrame(this._animationFrameId)}};_updateGroupRotation(){if(this._flagsGroup==null)return;const t=this._targetGroupRotation-this._currentGroupRotation;this._currentGroupRotation+=t*.1,this._flagsGroup.rotation.y=this._currentGroupRotation}_updateIntroCamera(t){if(!this._isIntroCameraAnimating)return;if(this._isIntroCameraHolding){this._introCameraElapsed+=t,this._camera.position.copy(this._introCameraStartPosition),this._setMenuIntroScale(0),this._introCameraElapsed>=this._introCameraHoldDuration&&(this._isIntroCameraHolding=!1,this._introCameraElapsed=0);return}this._introCameraElapsed+=t;const e=Math.min(1,this._introCameraElapsed/this._introCameraMoveDuration),i=e*e*(3-2*e),n=1-Math.pow(1-e,4);this._camera.position.set(0,this._introCameraStartPosition.y+(this._introCameraEndPosition.y-this._introCameraStartPosition.y)*n,this._introCameraStartPosition.z+(this._introCameraEndPosition.z-this._introCameraStartPosition.z)*i),this._setMenuIntroScale(i),e>=1&&(this._isIntroCameraAnimating=!1,this._camera.position.copy(this._introCameraEndPosition),this._setMenuIntroScale(1))}_setMenuIntroScale(t){if(this._menuContainer==null)return;const e=Math.min(1,Math.max(0,t)),i=this._menuIntroStartScale+(1-this._menuIntroStartScale)*e;this._menuContainer.style.transform=`translateX(-50%) scale(${i})`}addLanguage(t){}addLocales(t){}removeLanguage(t){}removeLocales(t){}}const kI=Object.freeze(Object.defineProperty({__proto__:null,COMPONENT_CUSTOM_MESSAGES:ac,LanguagePickerComponent:yA,OBSERVED_ATTRIBUTES:la,selector:"as-language-picker"},Symbol.toStringTag,{value:"Module"})),Ac={THEME_CHANGE_CONFIRMED:fa.THEME_CHANGE_CONFIRMED},ha={RIGHT:new F(1,0,0),LEFT:new F(-1,0,0),TOP:new F(0,1,0),BOTTOM:new F(0,-1,0),FRONT:new F(0,0,1),BACK:new F(0,0,-1)},HI=new Set([me.DARK_PURPLE]),bA={selected:me.DARK_PURPLE,options:HI},ca={OPTIONS:"themes",SELECTED:"selected"},VI=`<section class="root">
3965
+ `,YI="*{box-sizing:border-box}:host{display:block;width:100%;height:100%}.root{position:relative;width:100%;height:100%;overflow:hidden}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}.menu-container{position:absolute;bottom:clamp(1rem,12vh,25%);left:50%}@media(max-width:768px){.menu-container{bottom:max(1rem,env(safe-area-inset-bottom) + 1rem)}}",uc=new CSSStyleSheet;uc.replaceSync(YI);class _A extends HTMLElement{static textureLoader=new bh;shadowRoot;static get observedAttributes(){return Object.values(fa)}options=RA.options;flags=[];selected=RA.selected;selectedTmp=RA.selected;_renderer;_scene;_camera;_root;_canvas;_resizeObserver;_clock=new Lh;_lastTime=0;_spotlight;_flagsGroup;_wind=null;_circleRadius=5;_cameraLookAtY=2;_targetGroupRotation=0;_currentGroupRotation=0;_unwrappedGroupRotation=0;_animationFrameId=0;_introCameraStartPosition=new F(0,5,10);_introCameraEndPosition=new F(0,5,10);_introCameraElapsed=0;_introCameraMoveDuration=2.2;_introCameraHoldDuration=.4;_isIntroCameraAnimating=!1;_isIntroCameraHolding=!1;_menuContainer;_menuIntroStartScale=.72;_barMenu;_confirmationDialog;_isInitialized=!1;_isInitializing=!1;_barMenuVisibleIndex=-1;_floorGeometry;_floorMaterial;_programmaticScrollTimer=null;constructor(){super(),this.shadowRoot=this.attachShadow({mode:"open"}),this.shadowRoot.adoptedStyleSheets.push(uc)}attributeChangedCallback(t,e,i){if(!(e===i||i==null))switch(t){case fa.OPTIONS:{const n=JSON.parse(i);this.init(new Set(n))}break;case fa.SELECTED:{const n=i;this.select(n)}break}}connectedCallback(){this._isInitialized&&this._animationFrameId===0&&(this._animationFrameId=requestAnimationFrame(this._animate))}disconnectedCallback(){cancelAnimationFrame(this._animationFrameId),this._animationFrameId=0,this._programmaticScrollTimer!==null&&(clearTimeout(this._programmaticScrollTimer),this._programmaticScrollTimer=null),this.flags.forEach(t=>{t.flagGroup?.destroy()}),this.flags=[],this._floorGeometry.dispose(),this._floorMaterial.dispose(),this._scene.clear(),this._renderer.dispose(),this._resizeObserver.disconnect(),this._confirmationDialog?.removeEventListener(Yi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation)}init(t){if(!(this._isInitialized||this._isInitializing)){if(this.options=t,this.options.size===0){console.warn(`${this.constructor.name}: No languages provided`);return}this._isInitializing=!0,this.setupHtmlElements(),this.setupScene(),this.setupUI(),this.setupFlags(),this.setupConfirmationDialog(),this._isInitialized=!0,this._isInitializing=!1,this.isConnected&&this._animationFrameId===0&&(this._animationFrameId=requestAnimationFrame(this._animate))}}setupHtmlElements(){this.shadowRoot.innerHTML=WI,this._root=this.shadowRoot.querySelector(".root")??(()=>{throw new Error(`${this.constructor.name}: root element not found`)})(),this._canvas=this.shadowRoot.querySelector(NA.CANVAS)??(()=>{throw new Error(`${this.constructor.name}: canvas element not found`)})(),this._confirmationDialog=this.shadowRoot.querySelector(Yi.selector)??(()=>{throw new Error(`${this.constructor.name}: confirmation-dialog element not found`)})()}setupScene(){this._scene=new Sh,this._scene.background=new Vt(1710618),this._scene.fog=new fA(1710618,8,50),this._camera=new ze(45,1,.1,100),this._camera.position.set(0,5,10),this._camera.lookAt(0,2,0),this._scene.add(this._camera),this._renderer=new hc({antialias:!0,canvas:this._canvas,alpha:!0}),this._renderer.debug.checkShaderErrors=!0,this._renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),this._renderer.shadowMap.enabled=!1;const t=new zf(16777215,.3);this._scene.add(t);const e=new Ph(14674943,3);e.position.set(10,20,10),this._scene.add(e);const i=new Ph(11329439,.15);i.position.set(0,-1,0),this._scene.add(i),this._spotlight=new Of(16777215,150),this._spotlight.angle=Math.PI/6,this._spotlight.penumbra=.3,this._spotlight.decay=2,this._spotlight.distance=30,this._scene.add(this._spotlight),this._scene.add(this._spotlight.target);const n=100;this._floorGeometry=new cr(n,n),this._floorMaterial=new _f({color:1710618,roughness:.8,metalness:.2});const s=new mi(this._floorGeometry,this._floorMaterial);s.rotation.x=-Math.PI/2,s.receiveShadow=!0,this._scene.add(s),this.resizeHandler(),this.shadowRoot.appendChild(this._root)}setupUI(){this._menuContainer=this.shadowRoot.querySelector(".menu-container")??(()=>{throw new Error(`${this.constructor.name}: menu-container not found`)})(),this._barMenu=this.shadowRoot.querySelector(tu.selector)??(()=>{throw new Error(`${this.constructor.name}: bar menu element not found`)})()}setupFlags(){this._flagsGroup=new hr,this._scene.add(this._flagsGroup),this._wind=new Li.Wind({speed:8,direction:new F(1,0,0)});const t=this.options.size;this._circleRadius=Math.max(5,3+t*.5),this._cameraLookAtY=this._circleRadius*.4,[...this.options].forEach((n,s)=>{const a=-(s/t*Math.PI*2),o=-Math.sin(a)*this._circleRadius,l=Math.cos(a)*this._circleRadius,A=Li.buildFlag(),h=Li.buildFlagpole({flagpoleType:Li.FLAG_POLE_TYPE.VERTICAL},A),c=new Li.FlagGroup({flagpole:h,flag:A});c.object.position.set(o,0,l);const u=va.get(n)?.isoCode,d=u!=null?zn[u]:void 0;d!=null&&_A.textureLoader.load(d,p=>{c.setTexture(p)},void 0,()=>{console.warn(`LanguagePickerComponent: Failed to load texture for ${n}`)}),this._flagsGroup.add(c.object),this.flags.push({id:n,flagGroup:c,angle:a,windPhase:Math.random()*Math.PI*2,randomSeed:Math.random()})});const e=this.flags.find(n=>n.id===this.selected)??this.flags[0];if(e===void 0)return;this.selected=e.id,this.selectedTmp=this.selected,this._targetGroupRotation=e.angle,this._currentGroupRotation=e.angle,this._unwrappedGroupRotation=e.angle,this._flagsGroup.rotation.y=e.angle;const i=this._computeIntroCameraEndPosition();this._introCameraEndPosition.copy(i),this._introCameraStartPosition.set(0,i.y+this._circleRadius*3.1,i.z+this._circleRadius*4.6),this._camera.position.copy(this._introCameraStartPosition),this._camera.lookAt(0,this._cameraLookAtY,0),this._introCameraElapsed=0,this._isIntroCameraHolding=!0,this._isIntroCameraAnimating=!0,this._setMenuIntroScale(0),this._spotlight.position.set(0,8,this._circleRadius),this._spotlight.target.position.set(0,0,this._circleRadius),this._spotlight.target.updateMatrixWorld()}resizeHandler=()=>{const t=()=>{const e=this._root.clientWidth,i=this._root.clientHeight;e===0||i===0||(this._camera.aspect=e/i,this._camera.updateProjectionMatrix(),this._renderer.setSize(e,i,!1))};this._resizeObserver=new ResizeObserver(t),this._resizeObserver.observe(this._root),t()};listenToBarMenuNavigation(){new MutationObserver(()=>{if(this._programmaticScrollTimer!==null)return;const e=this._barMenu.querySelectorAll(zA.selector);for(let i=0;i<e.length;i++){const n=window.getComputedStyle(e[i]);if(n.display!=="none"&&n.visibility!=="hidden"&&parseFloat(n.opacity)>0){if(i===this._barMenuVisibleIndex)return;this._barMenuVisibleIndex=i;const a=[...this.options][i];if(a==null)return;this.selectedTmp=a,this._rotateToId(a);break}}}).observe(this._barMenu,{attributes:!0,subtree:!0,attributeFilter:["style","class"]})}_computeIntroCameraEndPosition(){const t=new hs().setFromObject(this._flagsGroup),e=new F,i=new F;t.getSize(e),t.getCenter(i);const n=t.min.y,s=Math.max(e.x,e.y,e.z)*.5,a=this._camera.fov*Math.PI/180,o=this._camera.aspect>0?this._camera.aspect:1,l=2*Math.atan(Math.tan(a*.5)*o),A=Math.max(s/Math.tan(a*.5),s/Math.tan(l*.5))*1.05,h=n+e.y*.25;this._cameraLookAtY=h+e.y*.06;const c=h+Math.max(e.y*.8,this._circleRadius*.28),u=i.z+A+this._circleRadius*.01;return new F(0,c,u)}select(t){if(this._isInitialized===!1){this.selected=t,this.selectedTmp=t;return}if(this.options.has(t)===!1){console.warn(`${this.constructor.name}: Language '${t}' not found`);return}t!==this.selected&&(this.selected=t,this.selectedTmp=t,this._rotateToId(this.selected),this._syncBarMenuToId(this.selected))}_rotateToId(t){const e=this.flags.find(s=>s.id===t);if(e===void 0)return;const i=2*Math.PI;let n=e.angle;for(;Math.abs(n-this._unwrappedGroupRotation)>Math.PI;)n+=n<this._unwrappedGroupRotation?i:-i;this._targetGroupRotation=n,this._unwrappedGroupRotation=n}_syncBarMenuToId(t){const e=[...this.options].indexOf(t);e!==-1&&(this._barMenuVisibleIndex=e,this._programmaticScrollTimer!==null&&clearTimeout(this._programmaticScrollTimer),this._programmaticScrollTimer=setTimeout(()=>{this._programmaticScrollTimer=null},500),this._barMenu.scrollToButton(e))}setupConfirmationDialog(){this._confirmationDialog.addEventListener(Yi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation),this.options.forEach(t=>{const e=document.createElement(zA.selector);e.textContent=va.get(t)?.autonyms??t,e.addEventListener(fr.CLICK,()=>{this.barMenuButtonClickHandler()}),this._barMenu.appendChild(e)}),this._barMenu.visibleButtons=1,this._barMenu.cyclicalNavigation=!0,requestAnimationFrame(()=>{this._syncBarMenuToId(this.selected),this.listenToBarMenuNavigation()})}barMenuButtonClickHandler=()=>{const t=va.get(this.selectedTmp);t!==void 0&&(this._confirmationDialog.text=`Switch to ${t.language.toLowerCase()}?`,this._confirmationDialog.showModal())};_handleConfirmation=()=>{this.selectedTmp!==this.selected&&this.dispatchEvent(new CustomEvent(cc.LANGUAGE_CHANGE_CONFIRMED,{detail:{value:this.selectedTmp},bubbles:!0,composed:!0}))};_animate=()=>{this._animationFrameId=requestAnimationFrame(this._animate);try{if(!this._isInitialized||this._camera==null||this._renderer==null)return;const t=this._clock.getElapsedTime(),e=t-this._lastTime;this._lastTime=t,this._wind!=null&&this._wind.update(),this.flags.forEach((i,n)=>{if(i.flagGroup==null)return;i.windPhase+=e*(.5+i.randomSeed*1.5),Li.applyGravityToCloth(i.flagGroup.flag.cloth,i.flagGroup.flag.object),this._wind!=null&&Li.applyWindForceToCloth(i.flagGroup.flag.cloth,this._wind,i.flagGroup.flag.object,{randomizeAmount:.6,randomSeed:i.randomSeed});const s=new Li.Wind({speed:.3+Math.sin(i.windPhase)*.2,direction:new F(Math.sin(i.windPhase+n)*.5,Math.cos(i.windPhase*.7),Math.sin(i.windPhase*.5+n)).normalize()});Li.applyWindForceToCloth(i.flagGroup.flag.cloth,s,i.flagGroup.flag.object,{randomizeAmount:.5,randomSeed:i.randomSeed*2}),i.flagGroup.simulate(e),i.flagGroup.render()}),this._updateGroupRotation(),this._updateIntroCamera(e),this._camera.lookAt(0,this._cameraLookAtY,0),this._renderer.render(this._scene,this._camera)}catch(t){console.error("Animation loop error:",t),cancelAnimationFrame(this._animationFrameId)}};_updateGroupRotation(){if(this._flagsGroup==null)return;const t=this._targetGroupRotation-this._currentGroupRotation;this._currentGroupRotation+=t*.1,this._flagsGroup.rotation.y=this._currentGroupRotation}_updateIntroCamera(t){if(!this._isIntroCameraAnimating)return;if(this._isIntroCameraHolding){this._introCameraElapsed+=t,this._camera.position.copy(this._introCameraStartPosition),this._setMenuIntroScale(0),this._introCameraElapsed>=this._introCameraHoldDuration&&(this._isIntroCameraHolding=!1,this._introCameraElapsed=0);return}this._introCameraElapsed+=t;const e=Math.min(1,this._introCameraElapsed/this._introCameraMoveDuration),i=e*e*(3-2*e),n=1-Math.pow(1-e,4);this._camera.position.set(0,this._introCameraStartPosition.y+(this._introCameraEndPosition.y-this._introCameraStartPosition.y)*n,this._introCameraStartPosition.z+(this._introCameraEndPosition.z-this._introCameraStartPosition.z)*i),this._setMenuIntroScale(i),e>=1&&(this._isIntroCameraAnimating=!1,this._camera.position.copy(this._introCameraEndPosition),this._setMenuIntroScale(1))}_setMenuIntroScale(t){if(this._menuContainer==null)return;const e=Math.min(1,Math.max(0,t)),i=this._menuIntroStartScale+(1-this._menuIntroStartScale)*e;this._menuContainer.style.transform=`translateX(-50%) scale(${i})`}addLanguage(t){}addLocales(t){}removeLanguage(t){}removeLocales(t){}}const XI=Object.freeze(Object.defineProperty({__proto__:null,COMPONENT_CUSTOM_MESSAGES:cc,LanguagePickerComponent:_A,OBSERVED_ATTRIBUTES:fa,selector:"as-language-picker"},Symbol.toStringTag,{value:"Module"})),dc={THEME_CHANGE_CONFIRMED:Ca.THEME_CHANGE_CONFIRMED},ga={RIGHT:new F(1,0,0),LEFT:new F(-1,0,0),TOP:new F(0,1,0),BOTTOM:new F(0,-1,0),FRONT:new F(0,0,1),BACK:new F(0,0,-1)},ZI=new Set([me.DARK_PURPLE]),PA={selected:me.DARK_PURPLE,options:ZI},pa={OPTIONS:"themes",SELECTED:"selected"},JI=`<section class="root">
3966
3966
  <canvas></canvas>
3967
3967
  <section class="preview-dialog-container">
3968
3968
  <header-body-footer-dialog class="preview-dialog">
@@ -3985,4 +3985,4 @@ void main() {
3985
3985
  </section>
3986
3986
  <confirmation-dialog id="confirmation-dialog"></confirmation-dialog>
3987
3987
  </section>
3988
- `,WI=":host{display:block;width:100%;height:100%}.root{position:relative;width:100%;height:100%;overflow:hidden}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}canvas.dragging{cursor:grabbing}.preview-dialog-container{position:absolute;bottom:clamp(0rem,40vh,35%);left:50%;transform:translate(-50%);width:30%}.preview-dialog-container .preview-dialog{display:block;width:100%}.preview-dialog-container .preview-dialog::part(dialog){translate:0 0}.preview-dialog-container .preview-dialog .title{font-size:16px;font-weight:700;letter-spacing:.01em}.preview-dialog-container .preview-dialog .subtitle{font-size:12px;opacity:.75}@media(max-width:768px){.preview-dialog-container{bottom:clamp(0rem,40vh,40%);width:90%}}",lc=new CSSStyleSheet;lc.replaceSync(WI);const YI=3;class Ts extends HTMLElement{static textureLoader=new xh;shadowRoot;static get observedAttributes(){return Object.values(ca)}static CUBE_SIDE_LENGTH=2;options=bA.options;selected=bA.selected;selectedTmp=bA.selected;_renderer;_scene;_camera;_root;_canvas;_resizeObserver;_clock=new Th;_lastTime=0;_cube;_cubeGeometry;_cubeMaterials=[];_animationFrameId=0;previewDialog=null;_previewTitle;_previewSub;_applyBtn;_confirmationDialog;_isConfirmationDialogOpen=!1;_themeTextures={};_currentFaceThemeId;_isDragging=!1;_lastPointerX=0;_lastPointerY=0;_dragPointerId=null;_rotX=.24;_rotY=.45;_rotZ=0;_idleSeconds=0;_autoSpinEnabled=!1;_autoVelX=0;_autoVelY=0;_isInitialized=!1;_isInitializing=!1;_tmpCamDir=new F;_tmpWorldNormal=new F;constructor(){super(),this.shadowRoot=this.attachShadow({mode:"open"}),this.shadowRoot.adoptedStyleSheets.push(lc)}attributeChangedCallback(t,e,i){if(!(e===i||i==null))switch(t){case ca.OPTIONS:{const n=JSON.parse(i);this.init(new Set(n))}break;case ca.SELECTED:{const n=i;this.select(n)}break}}connectedCallback(){this._isInitialized&&this._animationFrameId===0&&(this._clock.start(),this._animationFrameId=requestAnimationFrame(this._animate))}disconnectedCallback(){cancelAnimationFrame(this._animationFrameId),this._animationFrameId=0,this._unbindEvents(),this._cubeMaterials.forEach(t=>{t.map?.dispose(),t.dispose()}),this._cubeMaterials=[],this._cubeGeometry!=null&&this._cubeGeometry.dispose(),this._scene!=null&&this._scene.clear(),this._renderer!=null&&this._renderer.dispose(),this._resizeObserver!=null&&this._resizeObserver.disconnect(),this._confirmationDialog?.removeEventListener(Wi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation),this._confirmationDialog?.removeEventListener(Wi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_UNDO,this._handleConfirmationCancel),this.selected!==this.selectedTmp&&DA(this.selected)}init(t){if(!(this._isInitialized||this._isInitializing)){if(this.options=t,this.options.size===0){console.warn(`${this.constructor.name}: No themes provided`);return}this._isInitializing=!0,this.setupHtmlElements(),this.setupScene(),this.setupUI(),this.setupCube(),this.setupConfirmationDialog(),this.setupApplyButton(),this._bindEvents(),this._isInitialized=!0,this._isInitializing=!1,this._updatePreviewDialog(this.selected),this._syncRotationToSelected(),this._updatePanelPosition(),this.isConnected&&this._animationFrameId===0&&(this._clock.start(),this._animationFrameId=requestAnimationFrame(this._animate))}}setupHtmlElements(){this.shadowRoot.innerHTML=VI,this._root=this.shadowRoot.querySelector(".root")??(()=>{throw new Error(`${this.constructor.name}: root element not found`)})(),this._canvas=this.shadowRoot.querySelector(RA.CANVAS)??(()=>{throw new Error(`${this.constructor.name}: canvas element not found`)})(),this._confirmationDialog=this.shadowRoot.querySelector(Wi.selector)??(()=>{throw new Error(`${this.constructor.name}: confirmation-dialog element not found`)})()}setupScene(){const t=this._root.clientWidth!==0?this._root.clientWidth:800,e=this._root.clientHeight!==0?this._root.clientHeight:600;this._renderer=new rc({canvas:this._canvas,antialias:!0,alpha:!0}),this._renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),this._renderer.setSize(t,e,!1),this._renderer.setClearColor(0,0),this._scene=new Ih,this._scene.background=new Vt(1710618),this._camera=new ze(44,t/e,.1,100),this._updateCameraForLayout(),this._camera.lookAt(0,0,0),this.resizeHandler()}setupUI(){this.previewDialog=this.shadowRoot.querySelector(".preview-dialog"),this.previewDialog!=null&&setTimeout(()=>{this.previewDialog?.show()}),this._previewTitle=this.shadowRoot.querySelector(".preview-title")??(()=>{throw new Error(`${this.constructor.name}: .preview-title not found`)})(),this._previewSub=this.shadowRoot.querySelector(".preview-sub")??(()=>{throw new Error(`${this.constructor.name}: .preview-sub not found`)})(),this._applyBtn=this.shadowRoot.querySelector(".apply-btn")??(()=>{throw new Error(`${this.constructor.name}: .apply-btn not found`)})()}setupCube(){const t=Object.keys(ha).length;this._cubeMaterials=Array.from({length:t},(e,i)=>{const n=this._getThemeIdForFace(i),s=this._resolveThemeFaceVisual(n),a=new rA({color:"#ece9e4"});return this._setMaterialTexture(a,n,s),a}),this._cubeGeometry=new Cs(Ts.CUBE_SIDE_LENGTH,Ts.CUBE_SIDE_LENGTH,Ts.CUBE_SIDE_LENGTH),this._cube=new pi(this._cubeGeometry,this._cubeMaterials),this._cube.rotation.x=this._rotX,this._cube.rotation.y=this._rotY,this._cube.translateY(1.25),this._scene.add(this._cube)}resizeHandler=()=>{const t=()=>{const e=this._root.clientWidth,i=this._root.clientHeight;e===0||i===0||(this._renderer.setSize(e,i,!1),this._camera.aspect=e/i,this._camera.updateProjectionMatrix(),this._updateCameraForLayout(),this._updatePanelPosition())};this._resizeObserver=new ResizeObserver(t),this._resizeObserver.observe(this._root),t()};setupApplyButton(){this._applyBtn.addEventListener(lr.CLICK,this._handleApplyClick)}setupConfirmationDialog(){this._confirmationDialog.addEventListener(Wi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation),this._confirmationDialog.addEventListener(Wi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_UNDO,this._handleConfirmationCancel)}select(t){if(this._isInitialized===!1){this.selected=t,this.selectedTmp=t;return}if(this.options.has(t)===!1){console.warn(`${this.constructor.name}: Theme '${t}' not found`);return}t!==this.selected&&(this.selected=t,this.selectedTmp=t,this._syncRotationToSelected(),this._updatePreviewDialog(t),this._stopAutoSpinFromInteraction())}_syncRotationToSelected(){const e=[...this.options].indexOf(this.selected);if(e<0)return;const i=Object.values(ha)[e%Object.keys(ha).length],n=new F(0,0,1),s=new rs;s.setFromUnitVectors(i,n);const a=new di;a.setFromQuaternion(s),this._rotX=a.x,this._rotY=a.y,this._rotZ=a.z,this._currentFaceThemeId=this.selected}_handleApplyClick=()=>{this._applyTheme()};_applyTheme(){if(this._currentFaceThemeId==null)return;const t=this._resolveThemeFaceVisual(this._currentFaceThemeId);this._confirmationDialog.value=this._currentFaceThemeId,this._confirmationDialog.headline="Apply theme?",this._confirmationDialog.text=`Are you sure you want to apply the theme ${t.name}?`,this._confirmationDialog.showModal(),this._isConfirmationDialogOpen=!0,this._stopAutoSpinFromInteraction()}_updatePreviewDialog(t){const e=this._resolveThemeFaceVisual(t),i=t===this.selected;this._previewTitle.textContent=`${e.icon} ${e.name}`,this._previewSub.textContent=e.description,this._applyBtn.disabled=i,this._applyBtn.textContent=i?"Already active":"Apply",this._applyBtn.title=i?"Already the active theme":"Apply this theme"}_animate=()=>{this._animationFrameId=requestAnimationFrame(this._animate);try{if(!this._isInitialized)return;const t=this._clock.getElapsedTime(),e=t-this._lastTime;this._lastTime=t;const i=Math.min(Math.max(e,0),1/24);!this._isDragging&&!this._isConfirmationDialogOpen&&this._updateIdleAutoSpin(i),this._cube.rotation.x=this._rotX,this._cube.rotation.y=this._rotY,this._cube.rotation.z=this._rotZ;const n=this._getFrontFaceIndex(),s=this._getThemeIdForFace(n);s!==this._currentFaceThemeId&&(this._currentFaceThemeId=s,this._updatePreviewDialog(s),this.selectedTmp=s,DA(s)),this._renderer.render(this._scene,this._camera)}catch(t){console.error("Animation loop error:",t),cancelAnimationFrame(this._animationFrameId),this._animationFrameId=0}};_updateIdleAutoSpin(t){this._idleSeconds+=t,!this._autoSpinEnabled&&this._idleSeconds>=YI&&(this._autoSpinEnabled=!0,this._autoVelX=.0015,this._autoVelY=.0015*(1+Math.sqrt(5))/2),this._autoSpinEnabled&&(this._rotX+=this._autoVelX,this._rotY+=this._autoVelY,this._rotX>Math.PI/2.2&&(this._autoVelX=-Math.abs(this._autoVelX)),this._rotX<-Math.PI/2.2&&(this._autoVelX=Math.abs(this._autoVelX)))}_getFrontFaceIndex(){this._camera.getWorldDirection(this._tmpCamDir),this._tmpCamDir.negate();const t=Object.values(ha);let e=-1,i=-1/0;for(let n=0;n<t.length;n+=1){this._tmpWorldNormal.copy(t[n]).applyQuaternion(this._cube.quaternion);const s=this._tmpWorldNormal.dot(this._tmpCamDir);s>i&&(i=s,e=n)}return e}_updateCameraForLayout(){this._camera.position.set(0,.9,8),this._camera.lookAt(0,0,0)}_updatePanelPosition(){}_setMaterialTexture(t,e,i){const n=this._themeTextures[e];if(n==null||n.length===0){t.map?.dispose(),t.map=this._createFallbackFaceTexture(i),t.needsUpdate=!0;return}Ts.textureLoader.load(n,s=>{s.colorSpace=_e,s.needsUpdate=!0,t.map?.dispose(),t.map=s,t.needsUpdate=!0},void 0,()=>{t.map?.dispose(),t.map=this._createFallbackFaceTexture(i),t.needsUpdate=!0})}_createFallbackFaceTexture(t){const i=document.createElement("canvas");i.width=768,i.height=768;const n=i.getContext("2d");if(n==null){const o=new Ch(i);return o.colorSpace=_e,o}const s=n.createLinearGradient(0,0,768,768);s.addColorStop(0,"#ece9e4"),s.addColorStop(1,"#ddd9d2"),n.fillStyle=s,n.fillRect(0,0,768,768),n.fillStyle="rgba(0, 0, 0, 0.04)",n.beginPath(),n.roundRect(48,48,672,672,28),n.fill(),n.strokeStyle="#f3f3f3",n.lineWidth=6,n.beginPath(),n.roundRect(48,48,672,672,28),n.stroke(),n.fillStyle="#6366f1",n.fillRect(48,48,672,6),n.fillStyle="#141414",n.font="140px serif",n.textAlign="center",n.textBaseline="middle",n.fillText(t.icon,768/2,768/2-70),n.font="bold 72px sans-serif",n.fillText(t.name,768/2,768/2+80,648);const a=new Ch(i);return a.colorSpace=_e,a.needsUpdate=!0,a}_getThemeIdForFace(t){const e=[...this.options];return e.length===0?me.DARK:e[t%e.length]??me.DARK}_stopAutoSpinFromInteraction(){this._idleSeconds=0,this._autoSpinEnabled=!1,this._autoVelX=0,this._autoVelY=0}_onPointerDown=t=>{this._isDragging=!0,this._dragPointerId=t.pointerId,this._lastPointerX=t.clientX,this._lastPointerY=t.clientY,this._canvas.classList.add("dragging"),this._stopAutoSpinFromInteraction(),this._canvas.setPointerCapture(t.pointerId)};_onPointerMove=t=>{if(!this._isDragging||this._dragPointerId!==t.pointerId)return;const e=t.clientX-this._lastPointerX,i=t.clientY-this._lastPointerY;this._rotY+=e*.008,this._rotX+=i*.008,this._lastPointerX=t.clientX,this._lastPointerY=t.clientY,this._stopAutoSpinFromInteraction()};_onPointerUp=t=>{this._dragPointerId===t.pointerId&&(this._isDragging=!1,this._dragPointerId=null,this._canvas.classList.remove("dragging"),this._idleSeconds=0)};_bindEvents(){this._canvas.addEventListener(Hi.POINTER_DOWN,this._onPointerDown),this._canvas.addEventListener(Hi.POINTER_MOVE,this._onPointerMove),this._applyBtn.addEventListener(lr.CLICK,this._handleApplyClick),window.addEventListener(Hi.POINTER_UP,this._onPointerUp),window.addEventListener(Hi.POINTER_CANCEL,this._onPointerUp)}_unbindEvents(){this._canvas?.removeEventListener(Hi.POINTER_DOWN,this._onPointerDown),this._canvas?.removeEventListener(Hi.POINTER_MOVE,this._onPointerMove),this._applyBtn?.removeEventListener(lr.CLICK,this._handleApplyClick),window.removeEventListener(Hi.POINTER_UP,this._onPointerUp),window.removeEventListener(Hi.POINTER_CANCEL,this._onPointerUp)}_handleConfirmation=()=>{this.selectedTmp!==this.selected&&(this.dispatchEvent(new CustomEvent(Ac.THEME_CHANGE_CONFIRMED,{detail:{value:this.selectedTmp},bubbles:!0,composed:!0})),this._isConfirmationDialogOpen=!1,this._idleSeconds=0)};_handleConfirmationCancel=()=>{this._isConfirmationDialogOpen=!1};_resolveThemeFaceVisual(t){return mc.get(t)}}const XI=Object.freeze(Object.defineProperty({__proto__:null,COMPONENT_CUSTOM_MESSAGES:Ac,OBSERVED_ATTRIBUTES:ca,ThemePickerComponent:Ts,selector:"theme-picker"},Symbol.toStringTag,{value:"Module"}));ei.APPLICATION_NAME=Rs,ei.CUSTOM_MESSAGES=fa,ei.LanguagePicker=kI,ei.THEME_TEXTURES_MAPPER=Dc,ei.ThemePicker=XI,ei.WebComponentsRegistry=pc,Object.defineProperty(ei,Symbol.toStringTag,{value:"Module"})}));
3988
+ `,jI="*{box-sizing:border-box}:host{display:block;width:100%;height:100%}.root{position:relative;width:100%;height:100%;overflow:hidden}canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}canvas.dragging{cursor:grabbing}.preview-dialog-container{position:absolute;bottom:clamp(0rem,40vh,35%);left:50%;transform:translate(-50%);width:30%}.preview-dialog-container .preview-dialog{display:block;width:100%}.preview-dialog-container .preview-dialog::part(dialog){translate:0 0}.preview-dialog-container .preview-dialog .title{font-size:16px;font-weight:700;letter-spacing:.01em}.preview-dialog-container .preview-dialog .subtitle{font-size:12px;opacity:.75}@media(max-width:768px){.preview-dialog-container{bottom:clamp(0rem,40vh,40%);width:90%}}",fc=new CSSStyleSheet;fc.replaceSync(jI);const QI=3;class ws extends HTMLElement{static textureLoader=new bh;shadowRoot;static get observedAttributes(){return Object.values(pa)}static CUBE_SIDE_LENGTH=2;options=PA.options;selected=PA.selected;selectedTmp=PA.selected;_renderer;_scene;_camera;_root;_canvas;_resizeObserver;_clock=new Lh;_lastTime=0;_cube;_cubeGeometry;_cubeMaterials=[];_animationFrameId=0;previewDialog=null;_previewTitle;_previewSub;_applyBtn;_confirmationDialog;_isConfirmationDialogOpen=!1;_themeTextures={};_currentFaceThemeId;_isDragging=!1;_lastPointerX=0;_lastPointerY=0;_dragPointerId=null;_rotX=.24;_rotY=.45;_rotZ=0;_idleSeconds=0;_autoSpinEnabled=!1;_autoVelX=0;_autoVelY=0;_isInitialized=!1;_isInitializing=!1;_tmpCamDir=new F;_tmpWorldNormal=new F;constructor(){super(),this.shadowRoot=this.attachShadow({mode:"open"}),this.shadowRoot.adoptedStyleSheets.push(fc)}attributeChangedCallback(t,e,i){if(!(e===i||i==null))switch(t){case pa.OPTIONS:{const n=JSON.parse(i);this.init(new Set(n))}break;case pa.SELECTED:{const n=i;this.select(n)}break}}connectedCallback(){this._isInitialized&&this._animationFrameId===0&&(this._clock.start(),this._animationFrameId=requestAnimationFrame(this._animate))}disconnectedCallback(){cancelAnimationFrame(this._animationFrameId),this._animationFrameId=0,this._unbindEvents(),this._cubeMaterials.forEach(t=>{t.map?.dispose(),t.dispose()}),this._cubeMaterials=[],this._cubeGeometry!=null&&this._cubeGeometry.dispose(),this._scene!=null&&this._scene.clear(),this._renderer!=null&&this._renderer.dispose(),this._resizeObserver!=null&&this._resizeObserver.disconnect(),this._confirmationDialog?.removeEventListener(Yi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation),this._confirmationDialog?.removeEventListener(Yi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_UNDO,this._handleConfirmationCancel),this.selected!==this.selectedTmp&&FA(this.selected)}init(t){if(!(this._isInitialized||this._isInitializing)){if(this.options=t,this.options.size===0){console.warn(`${this.constructor.name}: No themes provided`);return}this._isInitializing=!0,this.setupHtmlElements(),this.setupScene(),this.setupUI(),this.setupCube(),this.setupConfirmationDialog(),this.setupApplyButton(),this._bindEvents(),this._isInitialized=!0,this._isInitializing=!1,this._updatePreviewDialog(this.selected),this._syncRotationToSelected(),this._updatePanelPosition(),this.isConnected&&this._animationFrameId===0&&(this._clock.start(),this._animationFrameId=requestAnimationFrame(this._animate))}}setupHtmlElements(){this.shadowRoot.innerHTML=JI,this._root=this.shadowRoot.querySelector(".root")??(()=>{throw new Error(`${this.constructor.name}: root element not found`)})(),this._canvas=this.shadowRoot.querySelector(NA.CANVAS)??(()=>{throw new Error(`${this.constructor.name}: canvas element not found`)})(),this._confirmationDialog=this.shadowRoot.querySelector(Yi.selector)??(()=>{throw new Error(`${this.constructor.name}: confirmation-dialog element not found`)})()}setupScene(){const t=this._root.clientWidth!==0?this._root.clientWidth:800,e=this._root.clientHeight!==0?this._root.clientHeight:600;this._renderer=new hc({canvas:this._canvas,antialias:!0,alpha:!0}),this._renderer.setPixelRatio(Math.min(window.devicePixelRatio,2)),this._renderer.setSize(t,e,!1),this._renderer.setClearColor(0,0),this._scene=new Sh,this._scene.background=new Vt(1710618),this._camera=new ze(44,t/e,.1,100),this._updateCameraForLayout(),this._camera.lookAt(0,0,0),this.resizeHandler()}setupUI(){this.previewDialog=this.shadowRoot.querySelector(".preview-dialog"),this.previewDialog!=null&&setTimeout(()=>{this.previewDialog?.show()}),this._previewTitle=this.shadowRoot.querySelector(".preview-title")??(()=>{throw new Error(`${this.constructor.name}: .preview-title not found`)})(),this._previewSub=this.shadowRoot.querySelector(".preview-sub")??(()=>{throw new Error(`${this.constructor.name}: .preview-sub not found`)})(),this._applyBtn=this.shadowRoot.querySelector(".apply-btn")??(()=>{throw new Error(`${this.constructor.name}: .apply-btn not found`)})()}setupCube(){const t=Object.keys(ga).length;this._cubeMaterials=Array.from({length:t},(e,i)=>{const n=this._getThemeIdForFace(i),s=this._resolveThemeFaceVisual(n),a=new hA({color:"#ece9e4"});return this._setMaterialTexture(a,n,s),a}),this._cubeGeometry=new vs(ws.CUBE_SIDE_LENGTH,ws.CUBE_SIDE_LENGTH,ws.CUBE_SIDE_LENGTH),this._cube=new mi(this._cubeGeometry,this._cubeMaterials),this._cube.rotation.x=this._rotX,this._cube.rotation.y=this._rotY,this._cube.translateY(1.25),this._scene.add(this._cube)}resizeHandler=()=>{const t=()=>{const e=this._root.clientWidth,i=this._root.clientHeight;e===0||i===0||(this._renderer.setSize(e,i,!1),this._camera.aspect=e/i,this._camera.updateProjectionMatrix(),this._updateCameraForLayout(),this._updatePanelPosition())};this._resizeObserver=new ResizeObserver(t),this._resizeObserver.observe(this._root),t()};setupApplyButton(){this._applyBtn.addEventListener(fr.CLICK,this._handleApplyClick)}setupConfirmationDialog(){this._confirmationDialog.addEventListener(Yi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_CONFIRM,this._handleConfirmation),this._confirmationDialog.addEventListener(Yi.COMPONENT_CUSTOM_MESSAGES.CONFIRMATION_DIALOG_UNDO,this._handleConfirmationCancel)}select(t){if(this._isInitialized===!1){this.selected=t,this.selectedTmp=t;return}if(this.options.has(t)===!1){console.warn(`${this.constructor.name}: Theme '${t}' not found`);return}t!==this.selected&&(this.selected=t,this.selectedTmp=t,this._syncRotationToSelected(),this._updatePreviewDialog(t),this._stopAutoSpinFromInteraction())}_syncRotationToSelected(){const e=[...this.options].indexOf(this.selected);if(e<0)return;const i=Object.values(ga)[e%Object.keys(ga).length],n=new F(0,0,1),s=new as;s.setFromUnitVectors(i,n);const a=new fi;a.setFromQuaternion(s),this._rotX=a.x,this._rotY=a.y,this._rotZ=a.z,this._currentFaceThemeId=this.selected}_handleApplyClick=()=>{this._applyTheme()};_applyTheme(){if(this._currentFaceThemeId==null)return;const t=this._resolveThemeFaceVisual(this._currentFaceThemeId);this._confirmationDialog.value=this._currentFaceThemeId,this._confirmationDialog.headline="Apply theme?",this._confirmationDialog.text=`Are you sure you want to apply the theme ${t.name}?`,this._confirmationDialog.showModal(),this._isConfirmationDialogOpen=!0,this._stopAutoSpinFromInteraction()}_updatePreviewDialog(t){const e=this._resolveThemeFaceVisual(t),i=t===this.selected;this._previewTitle.textContent=`${e.icon} ${e.name}`,this._previewSub.textContent=e.description,this._applyBtn.disabled=i,this._applyBtn.textContent=i?"Already active":"Apply",this._applyBtn.title=i?"Already the active theme":"Apply this theme"}_animate=()=>{this._animationFrameId=requestAnimationFrame(this._animate);try{if(!this._isInitialized)return;const t=this._clock.getElapsedTime(),e=t-this._lastTime;this._lastTime=t;const i=Math.min(Math.max(e,0),1/24);!this._isDragging&&!this._isConfirmationDialogOpen&&this._updateIdleAutoSpin(i),this._cube.rotation.x=this._rotX,this._cube.rotation.y=this._rotY,this._cube.rotation.z=this._rotZ;const n=this._getFrontFaceIndex(),s=this._getThemeIdForFace(n);s!==this._currentFaceThemeId&&(this._currentFaceThemeId=s,this._updatePreviewDialog(s),this.selectedTmp=s,FA(s)),this._renderer.render(this._scene,this._camera)}catch(t){console.error("Animation loop error:",t),cancelAnimationFrame(this._animationFrameId),this._animationFrameId=0}};_updateIdleAutoSpin(t){this._idleSeconds+=t,!this._autoSpinEnabled&&this._idleSeconds>=QI&&(this._autoSpinEnabled=!0,this._autoVelX=.0015,this._autoVelY=.0015*(1+Math.sqrt(5))/2),this._autoSpinEnabled&&(this._rotX+=this._autoVelX,this._rotY+=this._autoVelY,this._rotX>Math.PI/2.2&&(this._autoVelX=-Math.abs(this._autoVelX)),this._rotX<-Math.PI/2.2&&(this._autoVelX=Math.abs(this._autoVelX)))}_getFrontFaceIndex(){this._camera.getWorldDirection(this._tmpCamDir),this._tmpCamDir.negate();const t=Object.values(ga);let e=-1,i=-1/0;for(let n=0;n<t.length;n+=1){this._tmpWorldNormal.copy(t[n]).applyQuaternion(this._cube.quaternion);const s=this._tmpWorldNormal.dot(this._tmpCamDir);s>i&&(i=s,e=n)}return e}_updateCameraForLayout(){this._camera.position.set(0,.9,8),this._camera.lookAt(0,0,0)}_updatePanelPosition(){}_setMaterialTexture(t,e,i){const n=this._themeTextures[e];if(n==null||n.length===0){t.map?.dispose(),t.map=this._createFallbackFaceTexture(i),t.needsUpdate=!0;return}ws.textureLoader.load(n,s=>{s.colorSpace=_e,s.needsUpdate=!0,t.map?.dispose(),t.map=s,t.needsUpdate=!0},void 0,()=>{t.map?.dispose(),t.map=this._createFallbackFaceTexture(i),t.needsUpdate=!0})}_createFallbackFaceTexture(t){const i=document.createElement("canvas");i.width=768,i.height=768;const n=i.getContext("2d");if(n==null){const o=new Mh(i);return o.colorSpace=_e,o}const s=n.createLinearGradient(0,0,768,768);s.addColorStop(0,"#ece9e4"),s.addColorStop(1,"#ddd9d2"),n.fillStyle=s,n.fillRect(0,0,768,768),n.fillStyle="rgba(0, 0, 0, 0.04)",n.beginPath(),n.roundRect(48,48,672,672,28),n.fill(),n.strokeStyle="#f3f3f3",n.lineWidth=6,n.beginPath(),n.roundRect(48,48,672,672,28),n.stroke(),n.fillStyle="#6366f1",n.fillRect(48,48,672,6),n.fillStyle="#141414",n.font="140px serif",n.textAlign="center",n.textBaseline="middle",n.fillText(t.icon,768/2,768/2-70),n.font="bold 72px sans-serif",n.fillText(t.name,768/2,768/2+80,648);const a=new Mh(i);return a.colorSpace=_e,a.needsUpdate=!0,a}_getThemeIdForFace(t){const e=[...this.options];return e.length===0?me.DARK:e[t%e.length]??me.DARK}_stopAutoSpinFromInteraction(){this._idleSeconds=0,this._autoSpinEnabled=!1,this._autoVelX=0,this._autoVelY=0}_onPointerDown=t=>{this._isDragging=!0,this._dragPointerId=t.pointerId,this._lastPointerX=t.clientX,this._lastPointerY=t.clientY,this._canvas.classList.add("dragging"),this._stopAutoSpinFromInteraction(),this._canvas.setPointerCapture(t.pointerId)};_onPointerMove=t=>{if(!this._isDragging||this._dragPointerId!==t.pointerId)return;const e=t.clientX-this._lastPointerX,i=t.clientY-this._lastPointerY;this._rotY+=e*.008,this._rotX+=i*.008,this._lastPointerX=t.clientX,this._lastPointerY=t.clientY,this._stopAutoSpinFromInteraction()};_onPointerUp=t=>{this._dragPointerId===t.pointerId&&(this._isDragging=!1,this._dragPointerId=null,this._canvas.classList.remove("dragging"),this._idleSeconds=0)};_bindEvents(){this._canvas.addEventListener(Vi.POINTER_DOWN,this._onPointerDown),this._canvas.addEventListener(Vi.POINTER_MOVE,this._onPointerMove),this._applyBtn.addEventListener(fr.CLICK,this._handleApplyClick),window.addEventListener(Vi.POINTER_UP,this._onPointerUp),window.addEventListener(Vi.POINTER_CANCEL,this._onPointerUp)}_unbindEvents(){this._canvas?.removeEventListener(Vi.POINTER_DOWN,this._onPointerDown),this._canvas?.removeEventListener(Vi.POINTER_MOVE,this._onPointerMove),this._applyBtn?.removeEventListener(fr.CLICK,this._handleApplyClick),window.removeEventListener(Vi.POINTER_UP,this._onPointerUp),window.removeEventListener(Vi.POINTER_CANCEL,this._onPointerUp)}_handleConfirmation=()=>{this.selectedTmp!==this.selected&&(this.dispatchEvent(new CustomEvent(dc.THEME_CHANGE_CONFIRMED,{detail:{value:this.selectedTmp},bubbles:!0,composed:!0})),this._isConfirmationDialogOpen=!1,this._idleSeconds=0)};_handleConfirmationCancel=()=>{this._isConfirmationDialogOpen=!1};_resolveThemeFaceVisual(t){return Ec.get(t)}}const qI=Object.freeze(Object.defineProperty({__proto__:null,COMPONENT_CUSTOM_MESSAGES:dc,OBSERVED_ATTRIBUTES:pa,ThemePickerComponent:ws,selector:"theme-picker"},Symbol.toStringTag,{value:"Module"}));ei.APPLICATION_NAME=_s,ei.CUSTOM_MESSAGES=Ca,ei.LanguagePicker=XI,ei.THEME_TEXTURES_MAPPER=Oc,ei.ThemePicker=qI,ei.WebComponentsRegistry=xc,Object.defineProperty(ei,Symbol.toStringTag,{value:"Module"})}));